comptime storage and function values
This commit is contained in:
@@ -74,6 +74,15 @@ call_mapper func(mapper native.Imported_Mapper) c_int {
|
||||
}
|
||||
```
|
||||
|
||||
Native Brolang function pointer values use `*func(...) R`, with fallible
|
||||
channels written on the result:
|
||||
|
||||
```bro
|
||||
call func(callback *func(value i32) i32, value i32) i32 {
|
||||
return callback(value)
|
||||
}
|
||||
```
|
||||
|
||||
Bodyless manual and imported C functions may be variadic:
|
||||
|
||||
```bro
|
||||
@@ -138,7 +147,8 @@ Current prototype features:
|
||||
- Demand-monomorphized Brolang and C-ABI functions
|
||||
- Integer and type comptime parameters (`func($N usize) [N]u8`, `func($T type, value T) T`) specialized by comptime argument
|
||||
- Forced typed comptime expressions (`$sum(1, 2)`, `$Point { x = 1, y = 2 }`) and comptime value blocks (`${ yield 4 }`)
|
||||
- Comptime execution for bodyful Brolang functions with mutable locals, loops, `defer`, `match`, and `try`/`catch`
|
||||
- Comptime execution for bodyful Brolang functions with mutable locals, loops, `defer`, `match`, `try`/`catch`, pointer/slice storage mutation, pointer captures, and calls through comptime-known function values
|
||||
- Native function pointer values and types (`*func(...) R`, `*func(...) R ! E`, `?*func(...) R`)
|
||||
- Bodyless concrete C function declarations with exact external symbol names
|
||||
- Bodyless manual and imported C variadic declarations with default argument promotions
|
||||
- Ordered linking of additional C sources, objects, archives, and libraries
|
||||
|
||||
Reference in New Issue
Block a user