4.6 KiB
4.6 KiB
language features
IMPLEMENTED
source and declarations
- newline-terminated statements and
#comments - immutable
::bindings, mutable function-local=bindings, and_sinks - immutable and mutable locals
- package-level globals and functions
- interned identifiers
types and expressions
- exact-width
i8throughi64,u8throughu64,f32,f64,isize,usize,bool,void, and inferred integer-constrainedint - target-dependent atomic C primitives from
c_charthroughc_longdouble - C primitives remain semantically distinct from exact-width Brolang primitives until target lowering
- contextual integer and character literals and constant folding of addition and negation trees
- strict numeric conversions, checked integer addition, and unary negation
- boolean literals, comparisons, unary
!, and short-circuitingand/or - arrays
[N]T, sentinel arrays[N;S]T, single-item pointers@T, many-item pointers*T, sentinel many-item pointers[*;S]T, pointer offsets, slices, and explicit slicing - immutable UTF-8 string literals typed as pointers to static sentinel arrays:
@[N;0]u8 - pointer-to-array
.len, indexing, and slicing without explicit dereference - arrays expose
.lenbut not.ptr; slices and pointers-to-arrays expose.ptrand preserve sentinel information when available - information-preserving and information-forgetting pointer-to-array decay and sentinel slice/pointer weakening; array values never implicitly decay
- narrow immutable zero-terminated byte pointer conversion to
*c_charand[*;0]c_char, without generalu8/c_charinterchange - optionals with trapping postfix
?,orelse, and nullable pointer representation - conditional optional unwrapping with immutable then-block bindings:
if value |binding| { ... } - source-order native structs, defined or opaque
c_struct, and keyed record literals - complete plain imported C structs and unions as runtime values; incomplete or unsupported-layout records remain pointer-only
- C function pointer types as pointer-sized runtime values, including manual
*c_func(...) Tspelling and nullable imported callback typedefs - postfix pointer dereference, general writable locations, function calls, assignments, and returns
- first-class exclusive and inclusive integer ranges:
start..endandstart..=end - boolean
ifstatements andwhileloops with optional post-iteration assignment/expression clauses forloops over ranges, arrays, slices, and pointers-to-arrays, with copy, pointer, and optionalusizeindex captures|@item|pointer captures inherit pointee mutability from the iterable; arrays require an explicit pointer such as&items
functions and packages
- demand-monomorphized functions
- bodyful
c_funcdefinitions using the c calling convention - bodyless
c_funcdeclarations with exact, globally unique external symbol names - concrete-only foreign signatures
- Apple Silicon C ABI scalar, pointer, and fixed-signature plain record/union lowering, including narrow integer extension attributes
- directory packages with merged declarations
- file-local relative imports, aliases, and qualified member access
- relative
.himports as synthetic package namespaces - transitive external C function prototypes, typedef chains, C scalars, fixed arrays, complete plain records/unions, and pointers to opaque C records
- imported external C object variables, including writable globals and immutable arrays
- object-like scalar and plain record/union C macro constants
- supported static inline C functions through generated external wrappers
- bodyless manual and imported C variadic declarations with target-aware default argument promotions
- passing concrete
c_funcdeclarations/definitions as C callback values and calling non-null C function pointers with postfix call syntax - reference-time diagnostics for unsupported imported C declarations
compiler behavior
- error-tolerant compilation with runtime diagnostic traps
- lazy semantic checking of demanded function specializations
- demand-driven LLVM declarations for referenced foreign functions
- ordered linking of additional c sources, objects, and libraries
- replaceable dynamically loaded libclang C-import backend
- per-compilation C-header import caching by canonical path, target, ordered include paths, and ordered defines
- static, eager runtime, and deferred problematic globals
PLANNED
foreign functions and linking
- exporting brolang functions to c
- additional target-specific C ABI lowering
scalar and compound types
- tuples and native variadic functions
- C enums and non-plain C record layouts