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.7
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.7.tar.gz | 1.8 MB | Without provenance | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| openscad_cpp_evaluator-1.49.7-cp312-abi3-win_arm64.whl | CPython 3.12 | abi3 | Windows ARM64 | Details |
| openscad_cpp_evaluator-1.49.7-cp312-abi3-win_amd64.whl | CPython 3.12 | abi3 | Windows x86-64 | Details |
| openscad_cpp_evaluator-1.49.7-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | abi3 | Linux glibc 2.27+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| openscad_cpp_evaluator-1.49.7-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.7-cp312-abi3-macosx_13_0_x86_64.whl | CPython 3.12 | abi3 | macOS 13.0+ x86-64 | Details |
| openscad_cpp_evaluator-1.49.7-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.7.tar.gz
| Download URL | openscad_cpp_evaluator-1.49.7.tar.gz |
|---|---|
| Size | 1.8 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cd2677b5fde4e7608bf78aaa1bf36b1f3859293449d3b1f081846dc39472dd68
|
|
BLAKE2b-256 checksum How to use checksums |
08e09728ce77c0088bbcb538e73aa0fce5130d8a31ead33ae4af224fba8f74e6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / openscad_cpp_evaluator-1.49.7-cp312-abi3-win_arm64.whl
| Download URL | openscad_cpp_evaluator-1.49.7-cp312-abi3-win_arm64.whl |
|---|---|
| Size | 10.5 MB |
| Tags | CPython 3.12 Windows ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
8ae4f5f6e60819162ff4275b672b9bc539237b8f9b82ff4ec248e6c302a88599
|
|
BLAKE2b-256 checksum How to use checksums |
7bd5e08f569d80524805c54e00526f50679b7a2371a5fa654ba9eb5a9d9bc92c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / openscad_cpp_evaluator-1.49.7-cp312-abi3-win_amd64.whl
| Download URL | openscad_cpp_evaluator-1.49.7-cp312-abi3-win_amd64.whl |
|---|---|
| Size | 11.0 MB |
| Tags | CPython 3.12 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
e61f6c696f80f6c255db4e043677072c0e094b787f33d2e466b165d54a6cd25d
|
|
BLAKE2b-256 checksum How to use checksums |
df1201675ecae038db0c7578c869059c66246f40aac9beb3d3c24c1766976ca2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / openscad_cpp_evaluator-1.49.7-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
| Download URL | openscad_cpp_evaluator-1.49.7-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 |
05aae4c68498ce5c857d98175b4a798acda5560772892389191ac0b116d27b46
|
|
BLAKE2b-256 checksum How to use checksums |
e4b3d2d2b0f8b1644f5c73c8f1f23ff94dd59f28215cf0884ef8bbf1f27f98c6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / openscad_cpp_evaluator-1.49.7-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl
| Download URL | openscad_cpp_evaluator-1.49.7-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 |
59f69e0d5ae141418e8a04ae3fbf9561b21a9a39692ab267f44b8611a1c39043
|
|
BLAKE2b-256 checksum How to use checksums |
2d3096ddb3908ca4b9371a7e571a2b5ace03db4f1841d9510cc0d8825901eea0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / openscad_cpp_evaluator-1.49.7-cp312-abi3-macosx_13_0_x86_64.whl
| Download URL | openscad_cpp_evaluator-1.49.7-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 |
402207f1d4fb245480f27f324bc141835b8c7670bbdc74f5c1f9fd26f0095e3b
|
|
BLAKE2b-256 checksum How to use checksums |
9903f1e49159ab8ba8d9aff0554f0454b0a83af05c6bbf5045309a34b28ad342
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / openscad_cpp_evaluator-1.49.7-cp312-abi3-macosx_13_0_arm64.whl
| Download URL | openscad_cpp_evaluator-1.49.7-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 |
ccdd196995fd7a71f3e53bfde28fa503b4c53e3dcc474bda0653f5cb92a33cf5
|
|
BLAKE2b-256 checksum How to use checksums |
8b9be4d4fb00503840460e1fb3d28e8336a4356e37c45ae62bf8326460b642cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Security for openscad-cpp-evaluator 1.49.7
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.
To learn more about protecting yourself from malicious actors, visit our package security documentation.