openscad_cpp_evaluator
A C++20 port of openscad_evaluator (Python): an AST-walking
geometry engine that takes a parsed OpenSCAD AST and produces Manifold
CSG geometry, ready to export to STL/OBJ/OFF/3MF or hand off to a renderer.
Built on:
openscad_cpp_parser(git submodule) for lexing/parsing/AST/scope resolution.- Manifold v3.5.2 for the actual CSG boolean/mesh engine.
- Boost.Polygon for
roof()'s Voronoi-diagram construction. nothings/stb(header-only) forsurface()'s image loader and the built-in font provider's TrueType parsing/rasterization.
All fetched automatically via CMake FetchContent — no manual dependency installation beyond the
toolchain below.
Status
All planned phases (0–9) are complete: the full primitive/transform/boolean/modifier/control-flow
language surface, every builtin function, STL/OBJ/OFF/3MF import and export, hull()/minkowski()/
linear_extrude()/rotate_extrude()/roof()/offset()/surface()/DXF & SVG import/text(), an
opt-in content-hash geometry cache, per-call-site profiling, and a gdb-style --debug REPL. See
CLAUDE.md for the full phase-by-phase history and architecture notes.
Build
Requires:
- CMake ≥ 3.24
- A C++20 compiler (Clang, GCC, or MSVC — all three are covered by CI)
- Bison ≥ 3.8 and Flex
- macOS:
brew install bison flex(the system bison is too old; CMake auto-detects Homebrew's) - Linux:
sudo apt-get install bison flex - Windows: MSYS2's
bison/flex(pacman -S bison flex) — GitHub'swindows-latestrunner ships MSYS2 pre-installed atC:\msys64; CMake auto-detects it there too
- macOS:
GoogleTest and every other C++ dependency are fetched automatically.
git clone --recurse-submodules <this-repo>
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j
(Omitting -DCMAKE_BUILD_TYPE=Release builds unoptimized — pass it explicitly for anything
performance-sensitive.)
On Windows, CMake defaults to the multi-config Visual Studio generator, which ignores
CMAKE_BUILD_TYPE; pass --config Release to cmake --build (and -C Release to ctest)
instead.
Test
ctest --test-dir build --output-on-failure
Run a single binary or filter:
build/tests/oscad_eval_tests
build/tests/oscad_eval_tests --gtest_filter='FormatNumber.*'
The suite runs twice in CI — once with the bytecode VM on (the default) and once with it off
(OSCAD_BYTECODE_VM=0) — so a regression in either the compiled or interpreted expression-eval
path is caught.
CLI
build/tools/cli/openscad-cpp-evaluator <input.scad> -o <output.{stl,obj,off,3mf}> [--format stl|obj|off|3mf] [--debug]
The output format is inferred from -o's extension, or set explicitly with --format.
--debug drops into a gdb-style REPL (break/run/continue/step/next/finish/print/
backtrace/set/list/quit/help) before and during evaluation.
build/tools/cli/openscad-cpp-evaluator model.scad -o model.stl
Architecture
See CLAUDE.md for the full per-file architecture map, the Python-reference cross-check history,
and the rationale behind every non-obvious design choice (the two-pass resolve/generate CSG
pipeline, the FontProvider injection seam, the closure-detection rule, etc.).
CI
GitHub Actions builds and tests on Linux, macOS, and Windows on every push/PR (.github/workflows/ci.yml).
Metadata
Release files for openscad-cpp-evaluator 1.49.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| openscad_cpp_evaluator-1.49.5.tar.gz | 1.8 MB | Without provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| openscad_cpp_evaluator-1.49.5-cp312-abi3-win_arm64.whl | CPython 3.12 | abi3 | Windows ARM64 | Details |
| openscad_cpp_evaluator-1.49.5-cp312-abi3-win_amd64.whl | CPython 3.12 | abi3 | Windows x86-64 | Details |
| openscad_cpp_evaluator-1.49.5-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | abi3 | Linux glibc 2.28+ x86-64, Linux glibc 2.27+ x86-64 | Details |
| openscad_cpp_evaluator-1.49.5-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl | CPython 3.12 | abi3 | Linux glibc 2.28+ ARM64, Linux glibc 2.27+ ARM64 | Details |
| openscad_cpp_evaluator-1.49.5-cp312-abi3-macosx_13_0_x86_64.whl | CPython 3.12 | abi3 | macOS 13.0+ x86-64 | Details |
| openscad_cpp_evaluator-1.49.5-cp312-abi3-macosx_13_0_arm64.whl | CPython 3.12 | abi3 | macOS 13.0+ ARM64 | Details |
Total release size: 49.8 MB
Release files / openscad_cpp_evaluator-1.49.5.tar.gz
| Download URL | openscad_cpp_evaluator-1.49.5.tar.gz |
|---|---|
| Size | 1.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dcd65c3132cf33e11d8e909dc7cf1639165a4917624d19d19583a10b0c27e720
|
|
BLAKE2b-256 checksum How to use checksums |
e0bb097d5cdd3f9c7902b22f491dc694dcdfe4986c1ea70cccdcc8535159ee43
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / openscad_cpp_evaluator-1.49.5-cp312-abi3-win_arm64.whl
| Download URL | openscad_cpp_evaluator-1.49.5-cp312-abi3-win_arm64.whl |
|---|---|
| Size | 10.5 MB |
| Tags | CPython 3.12 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
1b93382fd1e3ca4982c9cebdd93c63e31f27d806df39024ac8e7c46233b9ac2e
|
|
BLAKE2b-256 checksum How to use checksums |
1f24f61732ca39d1c65fbeafe575ae1ec374f08f80719a9d6516a4032f1c3f4e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / openscad_cpp_evaluator-1.49.5-cp312-abi3-win_amd64.whl
| Download URL | openscad_cpp_evaluator-1.49.5-cp312-abi3-win_amd64.whl |
|---|---|
| Size | 11.0 MB |
| Tags | CPython 3.12 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
9efaf5ce008d552884e5b03be547ebc3010f41ec556d79c0bbd1d54a942ef561
|
|
BLAKE2b-256 checksum How to use checksums |
7616cba0ab25551fd8c3673f4584da473e5fb8971b577027a68cdb17f7b90f73
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / openscad_cpp_evaluator-1.49.5-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | openscad_cpp_evaluator-1.49.5-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 7.6 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ x86-64 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
0755a8420b17c356f004cd33ad3f5d41c6cce90a7d5d4c477081b063ca6a63db
|
|
BLAKE2b-256 checksum How to use checksums |
44e817d5711f5480f8bbac94319c3478aaf8e439f180ae3df7226c47d4fa1add
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / openscad_cpp_evaluator-1.49.5-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | openscad_cpp_evaluator-1.49.5-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 7.2 MB |
| Tags | CPython 3.12 Linux glibc 2.27+ ARM64 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
84e3da9d40944bb31796ea502cb2a6b198676ba1f7bceedae836cac8def60485
|
|
BLAKE2b-256 checksum How to use checksums |
57c652e5c2d1c72a1440e3a38656b25fbd1065f8f1c343d7e3f01b4796beebc6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / openscad_cpp_evaluator-1.49.5-cp312-abi3-macosx_13_0_x86_64.whl
| Download URL | openscad_cpp_evaluator-1.49.5-cp312-abi3-macosx_13_0_x86_64.whl |
|---|---|
| Size | 6.1 MB |
| Tags | CPython 3.12 abi3 macOS 13.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
3396493f1bfe501a1e5e727a747e2ce0cf6b22bb436a9b433629dc1dbc8405d9
|
|
BLAKE2b-256 checksum How to use checksums |
81b48575b860bfea088c12c28f443d61b8c81ed1e715187468ec879b3fb67234
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / openscad_cpp_evaluator-1.49.5-cp312-abi3-macosx_13_0_arm64.whl
| Download URL | openscad_cpp_evaluator-1.49.5-cp312-abi3-macosx_13_0_arm64.whl |
|---|---|
| Size | 5.8 MB |
| Tags | CPython 3.12 abi3 macOS 13.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
f69afd7f07044e6b1add5017406559d942138f70481644512bd5325eedad94b8
|
|
BLAKE2b-256 checksum How to use checksums |
c03a7c7d553e6a194a0bfe11297662abac49b4983591fdf45d133e164aac440d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Security for openscad-cpp-evaluator 1.49.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.