Skip to main content

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) for surface()'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's windows-latest runner ships MSYS2 pre-installed at C:\msys64; CMake auto-detects it there too

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.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for openscad-cpp-evaluator 1.49.8
File Size Uploaded Provenance
openscad_cpp_evaluator-1.49.8.tar.gz 1.8 MB Without provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for openscad-cpp-evaluator 1.49.8
File
openscad_cpp_evaluator-1.49.8-cp312-abi3-win_arm64.whl CPython 3.12 abi3 Windows ARM64 Details
openscad_cpp_evaluator-1.49.8-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details
openscad_cpp_evaluator-1.49.8-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.8-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl CPython 3.12 abi3 Linux glibc 2.27+ ARM64, Linux glibc 2.28+ ARM64 Details
openscad_cpp_evaluator-1.49.8-cp312-abi3-macosx_13_0_x86_64.whl CPython 3.12 abi3 macOS 13.0+ x86-64 Details
openscad_cpp_evaluator-1.49.8-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.8.tar.gz

Download URL openscad_cpp_evaluator-1.49.8.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
1d29097a5b8c00f88abef3dfb41b86fe768e4f7b0927b549c765dd219fd13507
BLAKE2b-256 checksum
How to use checksums
5dae79db0920d8cd17fcd43abee31c09d6a4eba3d79b29e5cb528509a51604ce
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.8-cp312-abi3-win_arm64.whl

Download URL openscad_cpp_evaluator-1.49.8-cp312-abi3-win_arm64.whl
Size 10.5 MB
Tags CPython 3.12 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
2457614596b4813732909246b27f035aefe1582c589dba4664e87a51f9b00749
BLAKE2b-256 checksum
How to use checksums
51df3f7ae32b63d06e26c4bd843d891f37c3746c3a330f6f94c355402c46e492
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.8-cp312-abi3-win_amd64.whl

Download URL openscad_cpp_evaluator-1.49.8-cp312-abi3-win_amd64.whl
Size 11.0 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
52229ef2bbc28af1e1b3664dc5043382fc607272e6750bd6e56e7cc2d4196403
BLAKE2b-256 checksum
How to use checksums
bc5575f3ce2cc9521bf2f789632bed1d081953dcd2974df6a60aa905f4b0ce65
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.8-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL openscad_cpp_evaluator-1.49.8-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
0f89f8b0e1a1f64e8518e5f7bd8edc0f2ae8b32d521ad7e76a173e2db74abc74
BLAKE2b-256 checksum
How to use checksums
7c88cefcccc1eacf1366bca957f98847f390f965173ab9d9529d5def957fd440
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.8-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL openscad_cpp_evaluator-1.49.8-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
ddea5a99c3762c9691433b7eda5c87f17f5d22352c08bfb1c2c8a253033b556d
BLAKE2b-256 checksum
How to use checksums
ee8b166c3043faac2528098276a9386a939c305763d788886e8b48a20c2ada38
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.8-cp312-abi3-macosx_13_0_x86_64.whl

Download URL openscad_cpp_evaluator-1.49.8-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
43b8860d36351da82113e05a5b0d5fb42e0251ee43b67ee67eae9f66a4d2d8fe
BLAKE2b-256 checksum
How to use checksums
541ec13ca400ce19fb2f0ba8be5023d7c594b1372e7f913ffbc3c749ea41eb53
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.8-cp312-abi3-macosx_13_0_arm64.whl

Download URL openscad_cpp_evaluator-1.49.8-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
e39e6e3a29634ab36c1ddad4e5c165b3e10ea83a0902a89fbf0d5410a6b00bca
BLAKE2b-256 checksum
How to use checksums
133ad66d2e94793617d7099f08c3f93a5a94909df40d519c924957b49eeea27c
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.8

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.

Release history Release notifications | RSS feed

This release

1.49.8 This release

7 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page