Skip to content

v0.2.10

Choose a tag to compare

@github-actions github-actions released this 06 Jun 14:27
· 35 commits to stage0 since this release

Full Changelog: v0.2.9...v0.2.10

Vix Language v0.2.10 Release Notes

Release Date: 2026-06-06

New Features

Multi-object file linking support

  • The compiler now supports linking multiple object files directly without recompilation.
  • Usage: vixc file1.o file2.o file3.o -o output
  • This enables separate compilation workflows where individual modules are compiled to .o files first, then linked together.
  • Added new vix_link_multi() API in the linker module to handle multiple input files.
  • Files: src/main.c, src/compiler/Linker/Linker.h, src/compiler/Linker/Linker.cpp

Bug Fixes

Enum type definition now accepts leading |

  • The parser now accepts an optional leading | before the first variant in type alias enum definitions.
  • This allows writing enums in a more consistent style:
    type T =
        | Int
        | Float
        | String
        | Bool
        | Unit
    
  • Previously, the first variant had to omit the |, which was inconsistent with subsequent variants.
  • File: src/parser/parser.y

Linker: removed hardcoded CRT object paths

  • Fixed the ELF linker path discovery to check file existence before adding CRT objects (crt1.o, crti.o, crtbegin.o, crtend.o, crtn.o) to the linker arguments.
  • Eliminated a redundant second call to probeSysPaths during ELF linking; the sysroot is now probed once and reused.
  • This fixes link failures on systems where the CRT objects are located in non-standard directories or where some objects are absent.
  • File: src/compiler/Linker/Linker.cpp

Validation

  • Rebuilt vixc successfully.
  • Verified enum definitions with leading | on the first variant now parse correctly.
  • Tested multi-object linking with vixc a.o b.o -o prog.