Blaise v0.10.0 (alpha) – Incremental compile, Native Back end and more

mariuz1 pts0 comments

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

&middot;

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...

release class interface incremental blaise unit

Related Articles