while loops

This commit is contained in:
2026-06-21 23:26:11 +02:00
parent f4194492cc
commit 380b5943b3
12 changed files with 548 additions and 16 deletions
+9 -7
View File
@@ -12,11 +12,12 @@
### types and expressions
- exact-width `i8` through `i64`, `u8` through `u64`, `f32`, `f64`, `isize`, `usize`, `void`, and inferred integer-constrained `int`
- exact-width `i8` through `i64`, `u8` through `u64`, `f32`, `f64`, `isize`, `usize`, `bool`, `void`, and inferred integer-constrained `int`
- target-dependent atomic C primitives from `c_char` through `c_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
- 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-circuiting `and` / `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
@@ -24,10 +25,12 @@
- 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_char` and `[*;0]c_char`, without general `u8`/`c_char` interchange
- 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(...) T` spelling and nullable imported callback typedefs
- postfix pointer dereference, general writable locations, function calls, assignments, and returns
- boolean `if` statements and `while` loops with optional post-iteration assignment/expression clauses
### functions and packages
@@ -40,6 +43,9 @@
- file-local relative imports, aliases, and qualified member access
- relative `.h` imports 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_func` declarations/definitions as C callback values and calling non-null C function pointers with postfix call syntax
- reference-time diagnostics for unsupported imported C declarations
@@ -59,13 +65,9 @@
### 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
### advanced c imports
- C enums, external variables, macros, and static inline functions
- additional target-specific C ABI lowering