Skip to main content
The C△ language specification describes the full design of the language. The Hypotenuse Compiler is still under active development, so not every documented feature is wired up yet. This page is the authoritative list of what the current compiler does and does not implement.
Documentation pages describe the language as designed. Where a feature is not yet implemented, you will find an inline notice on the relevant page linking back here.

Implemented Features

The features below are wired up and working in the current compiler. Everything else documented elsewhere in this site describes the language design and is not yet supported — see Unimplemented Features below.

Inline assembly

  • asm functions and anonymous asm {} blocks
  • syntax and section directives
  • The NASM + GCC link pipeline
Assembly is supported on Linux (x86_64) and macOS (ARM64) only. Windows is not supported for asm — the MSVC build path does not invoke NASM, so any source containing asm will fail to produce a working binary on Windows.

Module system and libraries

  • using <lib> and using symbol from <lib> — including the library-name rewrite when importing a single symbol.
  • using symbol as alias from <lib> — aliasing on import.
  • expose — globalize a library’s symbols into the current scope.
  • space { ... } — declare a named namespace.
  • function@namespace(...) — explicit namespace access without exposing.
  • .plib library importing and resolution from the standard PLIBS/ search paths.

Types and collections

  • The first-class string type
  • dynam arrays, including list-literal initializers and runtime growth
  • The len() built-in for string and dynam

Memory

  • allocate — manual heap allocation, including the custom-size syntax (e.g. allocate int buf[N]).
  • free — manual deallocation.

Standard library (plstd)

  • printd.plib — type-aware single-value printing (printd).
  • string.plib — the plstd string library (strcmp, strcpy, strcat, strlen, strdup, strchr, strstr, strncpy, strncat, strncmp).
  • streamer.plib — file I/O.

C11 baseline

All C11 language features inherited by C△ work as documented — primitives, pointers, structs (fields only), unions, enums, typedef, control flow, and functions.

Platform Support

PlatformStatusNotes
Linux (x86_64)Fully supportedhypotenuse -c produces a linked native binary end-to-end.
macOS (ARM64)Fully supportedhypotenuse -c produces a linked native binary end-to-end.
Windows (x86_64)Technically supported, manual buildThe compiler emits portable C (.c) output, but cannot invoke MSVC for you. You must run cl.exe (or equivalent) yourself on the generated C. asm blocks and asm functions do not work on Windows.

Unimplemented Features

Everything documented across the site that is not listed in the Implemented Features section above is not yet supported. The list below calls out the most prominent gaps so you don’t reach for them by accident.
FeatureStatusNotes
auto (inferred / dynamic type)Not implementedType inference and multi-variable packing with auto are part of the language design but not yet wired up.
tupleNot implementedHeterogeneous dynamic lists, .push(), and len() on tuples are not yet supported.
struct extensions (init/end, member functions, plain struct constructors, typed struct inheritance)Not implementedOnly standard C11 struct declarations (fields only) work. Constructors, destructors, member functions, and inheritance are not yet supported.
lamb (named lambdas)Not implementedInline lambda declarations are not yet supported.
autoremoveNot implementedThe simulation pass does not yet perform last-use analysis or insert automatic free calls.
RobberyNot implementedOwnership transfer between autoremove bindings depends on autoremove and is not yet supported.
printfs (formatted / f-string print)Not implementedprintd ships in printd.plib, but printfs and its {expr} / %-style formatting are not yet available.
Documentation pages describe the language as designed. Where a feature is not yet implemented, you will find an inline notice on the relevant page linking back here.

Reporting Gaps

If you hit a feature that is documented but does not behave as described — and is not listed in the Unimplemented Features table above — please file an issue against the compiler repository so we can either fix the compiler or update this page.