Status: early kernel. Axiolid has real, tested building blocks and strict architecture gates, but it is not yet a drop-in replacement for an established CAD kernel. The capability page separates implemented behavior from contracts and planned work.
Why Axiolid?
Geometry infrastructure should not force an application into a source format, a native toolchain, one hardware API, or a monolithic dependency graph. Axiolid is a small, composable Rust workspace for applications that need a neutral geometry layer between imported data and execution.
- Format-neutral: no IFC, STEP, CAD, renderer, or GPU API vocabulary in the kernel model.
- Pure Rust: no C++ or OpenCascade dependency graph.
- Pay for capability: use a leaf crate, the small
axiolidfacade, or opt into algorithms and execution contexts deliberately. - Honest seams: stable data and operation contracts are separate from providers; a provider advertises only what it implements.
- Portable correctness first: the reference package is the scalar oracle for optimized paths; CPU dispatch is runtime-selected, never
target-cpu=native.
Read the documentation site for architecture, capability status, decisions, and contributor guidance.
Quick start
Add the facade for core values, meshes, and the portable CPU shell:
[]
= { = "https://github.com/axiolid/kernel.git" }
The always-available core vocabulary is deliberately small:
use ;
let origin = new;
let tolerance = METRE;
assert!;
assert!;
For narrow dependency graphs, depend directly on leaf crates such as axiolid-core, axiolid-mesh, or axiolid-reference. Feature bundles are named for capability—not an input format:
= { = "https://github.com/axiolid/kernel.git", = ["discrete"] }
General NURBS algorithms are independently opt-in and also included in the
broader parametric bundle:
= { = "https://github.com/axiolid/kernel.git", = false, = ["nurbs"] }
See Getting started before selecting a bundle.
Architecture at a glance
format adapters / applications
│ neutral values and operation requests
▼
axiolid facade ─────────────── leaf representation crates
│
portable operation contracts
│
algorithms / providers
│
▼
dispatch and execution contexts
The central invariant is a downward-only dependency graph: representation does not know source formats or execution APIs; adapters do not depend on concrete backends. See Architecture.
What exists today
| Area | Current state |
|---|---|
| Core values, transforms, bounds, tolerance | Implemented |
| Mesh values, triangulation, and spatial primitives | Implemented in focused crates |
| Exact curve/surface/topology vocabulary | Represented behind opt-in features |
| General NURBS analysis and exact transformations | Implemented scalar reference algorithms behind nurbs; bounded projection is not a global-optimum certificate |
| Immutable geometry DAG | Implemented structural model |
| Scalar predicates and compilation reference paths | Implemented reference/oracle work |
| Mesh Boolean provider | Optional provider; bounded to its declared mesh contract |
| CPU execution | Portable execution shell; SIMD/parallel capabilities are opt-in |
| GPU execution | Contract and adapter seam, not a bundled production GPU algorithm suite |
For precise limits and evidence, use the capabilities page, not this summary.
Development
The workspace also carries feature-isolation and mutation probes. See Contributing and HERMES.md for project-specific checks.
Project links
- Documentation
- Architecture decisions
- Capability status
- Roadmap
- Changelog
- Sponsor Axiolid
- Issue tracker
License
Axiolid is licensed under Mozilla Public License 2.0. Separate application files may remain proprietary; see the licensing guide.