20. Exclusions
Absent from Base, each with the reason it is not a loss:
- The preprocessor, conditional compilation, macros. Generics, constants, per-target modules,
asm ARCH,fmtparameters,luce.location, andluce bindcover every use. - Implicit narrowing, signedness change, and integer-float conversion. These change values; the one implicit conversion, same-signedness widening, cannot.
NULLand nullable-by-default pointers.T*?.->. Auto-dereference on..- Braces, semicolons,
&&,||,!,++,--, the comma operator, statement expressions,do while,switchfallthrough. One parser, one formatter, one spelling per idea. goto. Not in the language, and an ordinary name (§8.6).setjmp/longjmp. ISO C, but incompatible withdefer,errdefer, and initialisation analysis. Alongjmpthrough a Base frame is undefined. A library that reports errors through it (libpng, libjpeg, the Lua C API) is bound through ashims.cfunction that contains thesetjmpand returns a status.- Computed goto, VLAs, unbounded
alloca,register,long double,_Complex. GNU extensions, not representable by the backends, or not portable. Frame storage of a size the program bounds ismemory.frame(§12.7). - Variadic function definitions, bit-field widths in Base structs, designated array initialisers, a storable result type. Deferred until enough exported and C-layout code exists to test the rules against; a storable result is an enum with two cases today.
- Classes, reference counting, closures, built-in collections, owned strings, workers. The runtime. Use full Luce.