Skip to main content
Some keywords listed here are part of the language design but are not yet implemented in the current compiler — notably auto, tuple, lamb, and autoremove. See Compiler Status for the full list.
C△ inherits all standard C11 keywords and adds new ones for its type system, memory management, module system, and assembly integration. Keywords marked as deprecated will raise a SyntaxError at compile time — remove or replace them before your program will compile.

Type Keywords

Use these keywords to declare the type of a variable, parameter, or return value. C△ extends the standard C11 numeric types with first-class string, dynamic-type auto, and two collection types.
KeywordDescription
intSigned integer
charSingle character / byte
floatSingle-precision float
doubleDouble-precision float
voidNo type / no return
shortShort integer
longLong integer
signedExplicitly signed integer
unsignedUnsigned integer
stringFirst-class string type
autoDynamic / inferred type
dynamDynamic array
tupleDynamic heterogeneous list

Structure Keywords

Use these keywords to define named types, namespaces, and type aliases.
KeywordDescription
structPlain struct (no inheritance)
spaceLibrary namespace declaration
typedTyped struct (with inheritance)
typedefC11 type alias
unionC11 union
enumC11 enumeration
typed structs support inheritance, while plain struct does not. Use typed when you need a struct to extend another struct’s fields.

Control Flow

These keywords control the execution path through your program. They behave identically to their C11 counterparts.
KeywordDescription
if / elseConditional branching
whileWhile loop
forFor loop
doDo-while loop
switch / case / defaultSwitch statement
breakBreak out of loop/switch
continueSkip to next iteration
returnReturn from function
gotoC11 goto
Variables declared in the init clause of a for loop are scoped to that loop body — they are not visible in the enclosing function scope.

Memory Keywords

C△ gives you fine-grained control over heap memory. You can manage memory manually with allocate and free, or opt into automatic last-use deallocation with autoremove.
KeywordDescription
allocateHeap allocation (allocate type name [size])
freeManual heap deallocation
autoremoveHeap alloc freed at last use (simulation pass)
Use autoremove to let the compiler’s simulation pass insert free calls automatically at the last point each pointer is used. This eliminates a whole class of memory leaks without requiring a garbage collector.

Module / Import Keywords

These keywords let you bring external library symbols into scope, expose namespaces globally, and even replace built-in syntax with library-provided alternatives.
KeywordDescription
usingImport a symbol from a library
exposeGlobalize a library or namespace
@Explicit namespace access operator
overwriteOverwrite base syntax with library syntax
// Import the 'println' symbol from the 'io' library
using io.println;

// Access a symbol explicitly with the @ operator
io@println("hello");

// Expose an entire namespace into the current scope
expose io;

Other Keywords

These keywords cover inline assembly, lambdas, struct lifecycle functions, and standard C11 qualifiers.
KeywordDescription
asmInline assembly block
lambNamed lambda
selfOptional struct self-reference
initStruct constructor lifecycle function
endStruct destructor lifecycle function
sizeofC11 size operator
constConstant qualifier
volatileVolatile qualifier
staticStatic storage
externExternal linkage
inlineInline hint
registerRegister hint
Use init and end to define constructor and destructor lifecycle functions on your structs. The compiler calls init when the struct is created and end when it goes out of scope or is freed.

Deprecated Keywords

The following C11 keywords are not supported in C△ and will immediately raise a SyntaxError when the compiler encounters them. Remove or replace any of these keywords before compiling.
KeywordReason
auto(C11 meaning)Repurposed as dynamic type inference in C△
restrictRemoved
_BoolRemoved
_ComplexRemoved
_ImaginaryRemoved