Project status

CX Is an Experiment

CX can compile and run real examples, but it is not a production-ready language. The syntax, compiler internals, standard library, and tooling are all expected to change as the experiment gets sharper.

Today

Good for exploring ideas, not for betting production on it

The compiler parses CX source, performs semantic checks, lowers the program to C, compiles through a local C compiler, and runs tests. Today, CX is best used for learning, experiments, small demos, native-code prototypes, and exploring how a better C-facing language could feel.

Working

  • Functions, structs, extensions, methods, and static methods
  • Generics, type wrappers, and constrained extensions
  • Tagged unions with match
  • Interfaces lowered to C-friendly vtables
  • Structural requirements and generic where clauses
  • Core containers: Vec, Stack, Queue, HashMap, HashSet
  • StringView, StringBuilder, Option, Result, File, Path, JSON writer
  • C declaration wrappers for common headers
  • CLI commands: init, run, build, check, test
  • Embedded std.core tests and project test discovery

Experimental

  • Language syntax may still change
  • Standard library APIs are not stable
  • Router is experimental and intentionally small
  • Error messages are useful but not yet polished like a mature compiler
  • Some C interop still relies on declaration wrappers or direct C-like expressions
  • Generated C is readable, but the backend model is still evolving

Not Yet

  • Full type inference across the whole language
  • Formatter
  • Language server and editor tooling
  • Package manager or dependency story
  • Full C header parser
  • Stable stdlib versioning policy
  • Cross-platform release/install flow beyond the current script
  • Production-grade web/router framework

Roadmap

  • Tighten semantic diagnostics and source spans
  • Continue moving lowering toward a complete C AST backend
  • Polish allocator patterns across std containers
  • Grow std.core tests and .NET compiler tests together
  • Add formatter and LSP foundation
  • Document C interop declarations and wrapper patterns
  • Prepare small downloadable CLI releases