Cone - Next Steps (as of August-September 2026)

August 21, 2026 · View on GitHub

After four dormant years the project is active again.

Current Capability

The Cone compiler supports an ever-growing set of language features. Enough that it is now possible to write programs that render 3D objects as OpenGL-based native executables or WebGL-based WebAssembly modules.

At this point, Cone's implemented features are largely richer than C's core features (although there are still gaps). There are several ways to find out what it does, and does not, support:

  • The "Feature Status" section below gives a high-level view of which features are working or not.
  • A more detailed understanding can be gleaned from the robust language reference documentation. Each page describes both current and planned features in detail. At the top of each page is a summary of which features have not yet been implemented.
  • The Cone Playground examples demonstrate many of the language's currently supported features.

Current Focus: Modules, Packages and Libraries

Everything the language needs next sits behind one gate. Option and Result live inside the compiler as source compiled into it, and so do the so and rc regions. Nothing about them changes, and nothing joins them, without rebuilding conec. A core library is a package, so packages come first.

What that delivers:

  • Programs that span source files. A program spanning modules cannot be linked today.
  • Libraries built once and linked into many programs, with congo building them, publishing their interface, and consuming them.
  • A core library that grows on its own scheduleOption, Result, error handling, collections — with no compiler release in the way.
  • Memory strategies written in Cone. Arenas, pools and tracing collectors need a package to live in and global state to hold. Single-owner and reference counting are the only regions today because they are the only two the compiler implements itself.
  • Namespaces that hold up in a large program — modules nested inside a package, imports that state what they bring in, names folded or renamed where they collide.

Feature Status

This table illustrates the current status of Cone's key features:

FeatureImplementedPlanned
Control FlowFunctionsclosures
Methods for typesConstructors, finalizers, set methods
Return (+implicit)
do, with blocks. 'this' operatorsbuild blocks
if & block (expressions) matchpartial pattern match
while, break, continueeach
NamesGlobal, local, extern variables
Module & type namespaces
include, import
Operators+, -, *, /, %
== < <= > >=~~
= : <<
++, --, +=, *=, etc.
. () [] * &
& | ^ ~
and, or, not/!
Typesu8, u16, u32, u64, i8, i16, i32, i64
f32, f64
Bool: true, false
struct, traits, and tuplesinheritance
array, array refsslices, collections
union & trait variant types
references (incl. nullable)safety guards
so, rc, borrowedmove/borrow semantics
gc, arena, pool
static permissionsruntime permissions
pointerstrust block
Polymorphism
Generics
MacrosCTE