Release Blaise v0.10.0 (alpha) — Incremental compile, Native Backend and more · graemeg/blaise · GitHub
//releases/show" data-turbo-transient="true" />
Skip to content
Search or jump to...
Search code, repositories, users, issues, pull requests...
-->
Search
Clear
Search syntax tips
Provide feedback
--><br>We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
Saved searches
Use saved searches to filter your results more quickly
-->
Name
Query
To see all available qualifiers, see our documentation.
Cancel
Create saved search
Sign in
//releases/show;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
graemeg
blaise
Public
Uh oh!
There was an error while loading. Please reload this page.
Notifications<br>You must be signed in to change notification settings
Fork
Star<br>201
Blaise v0.10.0 (alpha) — Incremental compile, Native Backend and more
Latest
Latest
Compare
Choose a tag to compare
Sorry, something went wrong.
Filter
Loading
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
No results found
View all tags
graemeg
released this
07 Jun 01:20
·
20 commits
to master<br>since this release
v0.10.0
b7cdcd2
Released: 2026-06-07
Language
Mandatory () on all zero-argument function/procedure/method/constructor calls
Procedure-field invocation: Obj.ProcField() dispatches through stored code pointer
Removed IsNoArgFuncCall / NoArgFuncDecl dead code from AST and codegen
Diamond operator: infer generic type args from LHS in assignments (TList<>.Create())
Exit(Value) shorthand for function-result early returns
not operator extended to integer types (bitwise complement)
Set-valued constants (const X = [a, b]) and set literals as set of arguments
threadvar support for thread-local storage
out parameter mode tracked distinctly from var
Calling convention directives (cdecl, stdcall) preserved on routine declarations
Native x86-64 Backend
M1: empty program compiles and runs
M2: integer arithmetic, Write/WriteLn
M3: if/while/repeat control flow
M4: records, static arrays, integer variables, for loops
M5: user functions, parameters, recursion, break/continue/exit, var/out params, indirect calls, >6 args via stack, wider integer family
M6: float (Double/Single) parity
M7a: record-returning functions (sret)
M7b: class system — method dispatch, vtables, constructors, destructors, method pointers
M7c: string operations parity
M7d: exception handling (try/except/finally)
M7e: open arrays and dynamic arrays
M7f: interface dispatch through itab
M8: var/out arguments to method calls, inherited calls
Full generics support (monomorphised classes, records, interfaces, free routines)
For-in and case statements
Inc/Dec built-ins and class-local ARC
.Free intrinsic
TAddrOfExpr, TDerefExpr, TPointerWriteStmt
ARC retain/release for string/class/interface value params and field assignments
Array field subscript read and var-param validation
Interface parameters in method/constructor/inherited calls
ICodeGen interface for backend dispatch
Incremental Separate Compilation
.bif (Blaise Interface File) format — compact unit-interface serialisation
.bif embedded inside .o files for zero-extra-file discovery
--incremental flag: skip unchanged units, reuse cached .o + .bif
Parallel incremental compilation via worker threads
Resolved all EImportError crashes in warm incremental compile
.bif covers: constants, types (simple, record, class, interface, generic templates), routines, globals, inline bodies, calling conventions
.bif validation header with compiler ID and source hash
TUnitInterface export/import for classes, interfaces, records, generics, virtual methods, override vtable slots, implements lists, attributes
Per-unit symbol cache for uses-chain retrieval
Layered symbol lookup — current-unit before uses-chain
Unit-prefix symbol mangling for free routines, classes, and address-of
ARC & Memory
Atomic ARC refcount operations for thread safety
Mutex-protected weak reference table for thread safety
Per-thread memory allocator via threadvar
Thread-local exception globals
TThread.Create(False) joins on Free() via ARC
Release old value when assigning nil to a class variable
Emit _ClassAddRef when assigning Pointer to class-typed variable
Release owned RHS when storing to [Unretained] class field
Retain/release by-value interface params in callee
Elide retain/release for const string and class params (perf)
Elide const-param retain/release, retain transient args (perf)
Codegen (QBE)
Unit-prefix mangling for multi-unit...