-
1.0.0 Beta 2 Pre-Release
released this
2025-07-28 13:39:39 +02:00 | 39 commits to main since this releaseNew features:
- Or binary operations (e.g.
a || b
) - Xor binary operations (e.g.
a ^ b
) - Bitwise and (e.g.
a & b
) - Bitwise or (e.g.
a | b
) - Bitshifting left and right (e.g.
(a << b) >> c)
Bugfixes:
- (
8e71c6a47d
) Null pointer intrinsic should now work correctly - (
cea756b2ad
) Dereffing with casts is now easier, not necessarily requiring outer parenthesis - (
bb7347c97b
) Nested binary operations may behave better now - (
2a6aceb052
) Callinga.func()
whena
already is a borrow or mutable borrow no longer should cause issues
Usage
./cli hello_world.reid
If you wish to pass feature-flags, the CPU-name or change the underlying linker, or add libraries to be linked, they can be set with environment variables like so:
# Mark CPU as "generic" CPU=generic ./cli hello_world.reid # Mark "f16c"-feature REIDFLAGS="+f16c" /cli hello_world.reid # Set linker to "mold" LD=mold /cli hello_world.reid # Link against libSDL3 /cli hello_world.reid SDL3
Requirements
- Linux
libc
ld
(can be changed)whereis
- LLVM 20.1 or newer (because this executable is dynamically linked)
Downloads
- Or binary operations (e.g.
-
1.0.0 Beta 1 Pre-Release
released this
2025-07-28 00:20:05 +02:00 | 58 commits to main since this release- Associated functions have been added, and they have a new call-convention
- E.g.
impl Otus { }
. Read more here - Called e.g.
Otus::function(param1, param2)
- E.g.
- Associated functions have a new
dot
-notation- E.g.
otus.function(param1, param2)
- E.g.
- Reid is now "feature-complete", meaning no large language-features are planned to be added, simply behind-the-scenes improvements, bug fixes, and such.
Usage
./cli hello_world.reid
If you wish to pass feature-flags, the CPU-name or change the underlying linker, or add libraries to be linked, they can be set with environment variables like so:
# Mark CPU as "generic" CPU=generic ./cli hello_world.reid # Mark "f16c"-feature REIDFLAGS="+f16c" /cli hello_world.reid # Set linker to "mold" LD=mold /cli hello_world.reid # Link against libSDL3 /cli hello_world.reid SDL3
Requirements
- Linux
libc
ld
(can be changed)whereis
- LLVM 20.1 or newer (because this executable is dynamically linked)
Downloads
- Source Code (ZIP)
- Source Code (TAR.GZ)
-
cli
2.0 MiB
- Associated functions have been added, and they have a new call-convention
-
1.0.0 Alpha Pre-Release
released this
2025-07-27 00:32:16 +02:00 | 88 commits to main since this releaseChangelog
Reid 1.0.0 alpha, with many features (too many to list), but e.g.:
- Many types of integers, floats, boolean, and string-literals
- Basic algebra binary and unary-operations (e.g. Add, Sub, Div, Mult, And,
Not) - Borrows/derefs, pointers.
- Declaration and call functions with varying parameters and return types
- Type-checking and type-inference such that return-types and
parameter types must always match. - Simple logic-operations (e.g. If/And/Or)
- Accessing, defining and initializing structs and arrays.
- Defining and executing For/While loops
- Outputting detailed debug information
- Defining extern functions that can be linked to outside modules such as
libc
. - Defining custom binary operations for any two types that hasn't been defined
previously (such asu16 + u32
). - Different ways to represent number-literals (Decimal, Hexadecimal, Octal, Binary)
- Arrays and indexing
- Structs and accessing
- Strings and string manipulation in standard library
- Type casting
- Intrinsic functions (functions built-in to the compiler, not in standard library)
- Ability to specify types in literals and variable definitions
- Debug Information
- Fix struct initialization (wrong order and missing fields allowe
- Importing types from other modules
- User-defined binary operations
still missing e.g.
- Associated Functions
- Bitwise operations
- Lexical Scopes for Debug Information
- Language Server
Usage
./cli hello_world.reid
If you wish to pass feature-flags, the CPU-name or change the underlying linker, or add libraries to be linked, they can be set with environment variables like so:
# Mark CPU as "generic" CPU=generic ./cli hello_world.reid # Mark "f16c"-feature REIDFLAGS="+f16c" /cli hello_world.reid # Set linker to "mold" LD=mold /cli hello_world.reid # Link against libSDL3 /cli hello_world.reid SDL3
Requirements
- Linux
libc
ld
(can be changed)whereis
- LLVM 20.1 or newer (because this executable is dynamically linked)
Downloads
- Source Code (ZIP)
- Source Code (TAR.GZ)
-
cli
1.9 MiB