A broad PCL and Open3D replacement in Rust — spatial search, filters, features, keypoints, registration, segmentation, surface reconstruction, GPU, WebAssembly, Python. Apache-2.0. Version 0.1.0 is not published yet, and the status section below says exactly why.
PCL and Open3D are the reason this field exists, and between them they define what a point cloud API looks like. They also define what it costs: a CMake build, a Boost dependency, a CUDA-only GPU path, and Python bindings that are either unmaintained or the whole reason the library exists.
| Library | Language | GPU backend | WebAssembly | Python |
|---|---|---|---|---|
| PCL | C++14 / 17 | CUDA only | Not supported | python-pcl, unmaintained |
| Open3D | C++14 + Python | CUDA only | Experimental | First-class |
| Oxi3D | Rust | wgpu + CubeCL — CUDA, Metal, Vulkan, WebGPU | Native target | PyO3 with .pyi stubs |
The GPU row is the one that changes what you can build. A CUDA-only backend decides your hardware vendor for you and rules out the browser entirely. The same Oxi3D kernels dispatch through wgpu and CubeCL, which is why there is a WebGPU path at all — see the status section for which of those backends has actually been run on metal.
Modular, not monolithic. Take the search layer alone, or the whole pipeline.
This is a 0.1.0 that has not shipped. Everything below is a self-audit, which is worth exactly as much as self-audits usually are — which is why the audit itself is in the repository, per crate, rather than summarised here.
The repository README currently states the release shipped, carries a crates.io badge, links docs.rs and gives a cargo-add line. All of that is being corrected — 0.1.0 is not out. The same README quotes 2.5x, 5x and 3x ratios against PCL: those are target values written at the top of the benchmark file, not measured results, and where we have measured, the results are mixed. There is no speed claim anywhere on this page for that reason.
Nine years removing C. The point cloud engine is what got built on top.
Registration is optimisation. Feature descriptors are linear algebra. Surface reconstruction is a sparse solve. Every point cloud library in existence sits on Eigen, on FLANN, on BLAS — and all of it is C or C++, which is why installing PCL is a project in itself and why the GPU path has one vendor's name on it.
So the engine could not be written until the numerics were. We started at the bottom in 2017 and worked up: BLAS and LAPACK, then FFT, then the scientific core, then this. Oxi3D is not a port of PCL. It is the first thing that became possible once the floor underneath it was Rust.
That order is the whole reason this repository is Apache-2.0 and the commercial products are not. Oxi3D is a floor, not a product. OxiCAD's B-Rep kernel sits on it; so does the medical imaging work. Giving away the floor and licensing what stands on it is the entire business model, stated plainly.
The stack is public on GitHub — 60+ projects, most of it Apache-2.0. Oxi3D is the part we give away.
The source will be published under Apache-2.0 at github.com/cool-japan/oxi3d. Until 0.1.0 is tagged, the useful thing you can send is the PCL or Open3D call you depend on that is not in the parity audit — those are what decide the release order. One line is enough.