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.
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.
Platform
- appkit — typed Cocoa / AppKit bindings for native macOS apps.
- jni — minimal Java Native Interface bindings.
Utilities
- clap — command-line argument parsing with a fluent builder.
- json — a typed-enum JSON parser and serializer.
- log — a leveled, zero-allocation structured logger.
- uuid — RFC 4122 v4 UUIDs.
- 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).