2.5 KiB
2.5 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,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 literals and constant folding of addition and negation trees
- strict numeric conversions, checked integer addition, and unary negation
- arrays
[N]T, sentinel arrays[N;S]T, indexing, pointers, pointer offsets, slices, and explicit slicing - immutable UTF-8 sentinel-slice strings and Unicode code-point character literals
- optionals with trapping postfix
?,orelse, and nullable pointer representation - source-order native structs, keyed literals, and defined or opaque pointer-only
c_struct - postfix pointer dereference, explicit
.ptr/.len, general writable locations, function calls, assignments, and returns
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 and pointer lowering, including narrow integer extension attributes
- directory packages with merged declarations
- file-local relative imports, aliases, and qualified member access
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
- static, eager runtime, and deferred problematic globals
PLANNED
foreign functions and linking
- c variadic calls with default argument promotions
- exporting brolang functions to c
scalar and compound types
- tuples and native variadic functions
- C unions, C enums, and by-value C record ABI lowering
c imports
- c headers imported as synthetic package namespaces
- typedefs, enums, opaque records, and external variables
- function pointers, callbacks, macros, and static inline functions
- target-specific by-value C record and union ABI lowering