Packages
C+ is C plus packages. The language core is small on purpose; capability comes from packages, including the standard library. stdlib is a vendored package like any other, not a language built-in.
How a package works
Every package is a directory under vendor/ with a Cplus.toml manifest, a <package-name>.cplus library entry, and in-package #[test] functions you can run with cd vendor/<pkg> && cpc test. To use one, add it to your manifest and import it:
[dependencies]
stdlib = "*"
json = "*"
import "stdlib/io" as io;
import "json/json" as json;
The driver walks one directory up from your project to resolve sibling vendor dependencies, so no per-package symlinks are needed beyond the canonical vendor/ checkout.
You can populate vendor/ by hand, or let cplus-pm, the standalone package manager, resolve and fetch dependencies for you (cplus-pm install).
The standard library
- stdlib — I/O, collections, ownership wrappers, concurrency, files, and networking. The package you reach for first.
GPU & numerics
C+ talks to GPUs and BLAS as a consumer of the vendor SDKs, through plain C FFI with Drop-managed handles. See GPU & numerics for the backend matrix and how to pick one.
- metal — typed Metal and MPS bindings for Apple GPU compute.
- cuda — CUDA Runtime + cuBLAS bindings for NVIDIA GPUs.
- accelerate — Apple CPU numerics (BLAS, vDSP).
- cblas — cross-platform CPU BLAS (OpenBLAS / Netlib / MKL).
- simd — portable
f32x4math plus integer lane helpers.
AI
- llama_cpp — bindings for llama.cpp with a safe
Sessionfacade for LLM inference. - coreai — a Swift bridge to Apple's CoreAI (macOS).
macOS path (recommended in v0.0.27)
v0.0.27 is a macOS / AppKit release. Start here:
- appkit — typed Cocoa / AppKit bindings for native macOS apps.
- quartzcore — generated Core Animation (
CALayer). - facet — platform-free UI:
@uitrees, components, screens,App, theme, services. A backend draws. - facet_appkit — macOS AppKit backend (
install(), thenApp::run). - flex_layout — CSS Flexbox + Grid. facet's tree is this tree.
- agent_appkit — live NSView tree → agent surface.
- agent_core — the framework-agnostic authorization brain.
- agent_mcp — the JSON-RPC 2.0 / MCP bridge.
- agent_inapp — the same verbs in-process, no transport.
- inspector — developer-only live inspector of the mounted facet tree. Not the agent surface.
See Agent surface for the full agent story.
In the tree, wait
These packages exist. They are not recommended on v0.0.27. Do not ship on them; wait for a later version.
- uikit — typed UIKit bindings for native iOS apps.
- gtk — generated GTK 4 (
gtk4package). - adwaita — generated libadwaita 1, over gtk4.
- gobject — GObject runtime, signals, and the string bridge.
- facet_gtk — GTK 4 backend (type-checked; not run on a Linux host).
- win32 — native Win32 GUI bindings.
- agent_gtk — the GTK agent backend.
- agent_win32 — the Win32 agent backend.
- android_view — Android View bindings.
- jni — Java Native Interface bindings (the full JNI 1.6 table).
The generated GObject stack also ships glib, gio, cairo, pango, gdk, and related peers. Import them by package name ("glib/glib", "gio/gio", …); they do not each have a site page.
Embedded
C+ cross-compiles to microcontrollers; see Targets and Embedded & ESP32.
- espidf — ESP-IDF bindings (GPIO, timer, task, UART) for the
esp32-xtensatarget.
Utilities
- json — a typed-enum JSON parser and serializer.
- log — a leveled, zero-allocation structured logger.
- uuid — RFC 4122 v4 UUIDs.
- sqlite — idiomatic SQLite (
Connection/Statement). - arena — a growable bump-pointer arena.
- static-arena — a fixed-size, stack-resident arena.
Real-time
- rt — lock-free primitives for the real-time contracts (
rtand the platformrt_darwin).