-
1.0.0 Beta 4 Pre-Release
released this
2025-08-03 23:50:13 +02:00 | 65 commits to main since this releaseFeatures
- Significantly improved Language Server
- Autocomplete for functions, imports and struct-fields
- Syntax Highlighting
- Semantic Highlighting
- Go-To-Definition
- Find-All-References
- Refactoring
- All work now in multi-file environments
Fixes
- Fixed some token-range-mappings that were previously broken
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.2 MiB
-
reid-language-server
5.6 MiB
-
reid-language-server-1.0.0-beta.1.vsix
117 KiB
- Significantly improved Language Server
-
1.0.0 Beta 3 Pre-Release
released this
2025-08-02 13:42:17 +02:00 | 111 commits to main since this releaseFeatures:
- (
1b1a5934f5
) Lexical Scopes for Debug Info - (
beaba4e7de
) Mangled function names for intrinsics, linking against libc without affecting function names - (
13be3e9c02
) Namespaced functions in LLVM IR - (
89850d7b4f
) Intrinsicmalloc
instead of the previousalloca
- Intrinsic macro
- (
2303bf757a
)include_bytes!
macro
- (
- (
7234cad5f0
) Allow casting&[ty,_ ]
into*ty
- (
2dd3a5904b
) Account for whitespace correctly in lexer and parser - Language Server
- Syntax Highlighting
- Inline error reporting
Bugfixes:
- (
e412a2e1d7
) Allocator fix - (
bd8994bb37
) Linking associated functions fixed - (
deed96bbfd
) Fix bitshift operations not using symmetrical types
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.2 MiB
-
reid-language-server-0.1.0.vsix
116 KiB
-
reid-lsp
5.5 MiB
- (
-
1.0.0 Beta 2 Pre-Release
released this
2025-07-28 13:39:39 +02:00 | 171 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 | 190 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 | 220 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