• 1.0.0-beta.2 a60d35c0b0

    1.0.0 Beta 2 Pre-Release

    teascade released this 2025-07-28 13:39:39 +02:00 | 39 commits to main since this release

    New 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) Calling a.func() when a 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
  • 1.0.0-beta.1 4844cebd56

    1.0.0 Beta 1 Pre-Release

    teascade 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)
    • Associated functions have a new dot-notation
      • E.g. otus.function(param1, param2)
    • 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
  • 1.0.0-alpha 185bd36cd9

    1.0.0 Alpha Pre-Release

    teascade released this 2025-07-27 00:32:16 +02:00 | 88 commits to main since this release

    Changelog

    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 as u16 + 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