News

Announcements, design posts, and updates from the Bear project.

bear-asm-format

Bear 0.0.1-in3: The Bear Assembly

The second big milestone in Bear's codebase. This announcement details the new assembler.

Now we're announceing a Bear 0.0.1-in3, change.

This milestone announces the introduction of the new Bear Assembly assembler, which assembles Bear Assembly (.bearasm) into the new OBJ format (BROBJ).

The assembler aims to be simple yet effective at it's tasks. It has a very simple syntax currently.

The ASM format is not close to completion, and will require a lot more work. Contributing is possible: https://github.com/bearlanguageorg/bear/tree/main/assembler.

obj-format

Bear 0.0.1-in2: The Custom OBJ Format

The second big milestone in Bear's codebase. This announcement details the new OBJ format.

Today we're announceing a Bear 0.0.1-in2, change.

This milestone announces the introduction of the new OBJ format (BROBJ). BROBJ is the linker-input: code, exported symbols, string constants, and relocations for call sites that the linker must resolve.

The BRBIN is the final executable that is consumed by the runtime VM.

Both of the formats are little-endian, and self describing.

  • BROBJ is the Bear Object file format, which is the output of the assembler and input to the linker.
  • BRBIN is the Bear Binary file format, which is the output of the linker and input to the runtime VM.
Bear 0.0.1-in2 is a milestone in the ongoing rewrite of Bear's codebase, and it introduces the new OBJ format as a key part of the toolchain. The OBJ format is designed to be simple, efficient, and easy to work with, while also providing the necessary information for the linker to produce a final executable.

The OBJ format is not close to completion, and will require a lot more work. Contributing is possible: https://github.com/bearlanguageorg/bear/tree/main/obj.

The OBJ format is a key milestone in Bear's development, as it establishes a clear separation between the compiler, assembler, linker, and runtime. This separation allows for more modular development and easier maintenance of the toolchain.

Rewrite

Bear 0.0.1-in1: The Beginning

The first milestone of Bear's full codebase. This release marks the beginning of a series of rewrites publications while maintaining full compatibility with the current language.

Today we're publishing Bear 0.0.1-in1, the first milestone in Bear's ongoing full rewrite.

This release does not introduce new language features. Instead, it establishes the foundation for future development while keeping Bear compatible with the current language and toolchain.

The -in suffix identifies independent rewrite milestones. We plan to publish -in1 through -in20, with each milestone representing substantial refactoring, architectural improvements, or other major implementation work. After completing this rewrite cycle, development will continue with 0.0.2-alpha1.

Current status:

  • Language syntax remains unchanged.
  • Full compatibility with existing .bear source files is maintained.
  • The rewrite is focused on improving the compiler's architecture and maintainability.
  • New language features will be introduced in future releases, not during the initial rewrite milestones.

Bear's initial compiler was written in V, and this rewrite is creating a fully independent compiler and toolchain built specifically for Bear.