diff options
Diffstat (limited to 'linux/300.txt')
-rw-r--r-- | linux/300.txt | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/linux/300.txt b/linux/300.txt new file mode 100644 index 00000000..62413330 --- /dev/null +++ b/linux/300.txt @@ -0,0 +1,16 @@ +Layers in the 3xx series use all the available syntax sugar for SubX programs. +Functions here can be called from Mu programs if they meet certain criteria: + + - There's a signature for them in 400.mu + - Inouts on the stack, outputs in registers + - Valid Mu types everywhere (Mu's type system isn't expressive enough for + everything SubX does in rare situations.) + - No way to for an `addr` to escape a function. No `(... addr ... addr ...)` + inouts, and no `(... addr ...)` outputs. + +While functions _can_ be called, not all SubX functions meeting these criteria +_should_ be called. In particular, avoid exporting functions that could be +misused. A classic example is trying to add a `size-of` operator. If you're +doing that you're likely going to rely on programmers to use it correctly. Mu +tries to be idiot-proof. Even if SubX requires greater care, using SubX +primitives from Mu should not. |