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

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.6
File Size Uploaded Provenance
openscad_cpp_evaluator-1.49.6.tar.gz 1.8 MB Without provenance Details

Built distributions (wheels)

Table of built distributions (wheels) for openscad-cpp-evaluator 1.49.6
File
openscad_cpp_evaluator-1.49.6-cp312-abi3-win_arm64.whl CPython 3.12 abi3 Windows ARM64 Details
openscad_cpp_evaluator-1.49.6-cp312-abi3-win_amd64.whl CPython 3.12 abi3 Windows x86-64 Details
openscad_cpp_evaluator-1.49.6-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.6-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.6-cp312-abi3-macosx_13_0_x86_64.whl CPython 3.12 abi3 macOS 13.0+ x86-64 Details
openscad_cpp_evaluator-1.49.6-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.6.tar.gz

Download URL openscad_cpp_evaluator-1.49.6.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
447ca3358ab9b0027da37bac4c138aedc00143a77ed70b1ef6bb716151bddbad
BLAKE2b-256 checksum
How to use checksums
1e92f61b5966495b389a1967242b97bca676bf7030d0c990ff973f8305701ae0
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.6-cp312-abi3-win_arm64.whl

Download URL openscad_cpp_evaluator-1.49.6-cp312-abi3-win_arm64.whl
Size 10.5 MB
Tags CPython 3.12 Windows ARM64 abi3
SHA-256 checksum
How to use checksums
fcc6b2dc48c6ef01bea82a26dede7b14d34cf32a4123e4bfc73ef5915e72d4b9
BLAKE2b-256 checksum
How to use checksums
a8034e03b91049a8b20f38e152f85d3d3aa9ace33d6093e0cfaeb74783432e91
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.6-cp312-abi3-win_amd64.whl

Download URL openscad_cpp_evaluator-1.49.6-cp312-abi3-win_amd64.whl
Size 11.0 MB
Tags CPython 3.12 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
bbdb5eb9629e5bd678abc5367f9d1a79c2601a7ff5de0a574d3d65ec54755f1f
BLAKE2b-256 checksum
How to use checksums
6df1d09322b847513aaaa9327772e61175db95c5659892a02297f4b7f4c56f09
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.6-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl

Download URL openscad_cpp_evaluator-1.49.6-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
79afba99d72fa10417659193e938c1b0c4f979282be5ad55cdcd1852b3718fc3
BLAKE2b-256 checksum
How to use checksums
9584c2f7f39bb948774594a1426ae624000fdcfeb3fa9a9e1fa872e782629431
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.6-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl

Download URL openscad_cpp_evaluator-1.49.6-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
5d1cc36f0200767863fe0e7434e2aa3efa374b9769c9d3f4ca3ee09ed0cd87e6
BLAKE2b-256 checksum
How to use checksums
950c281c4044988b4b90414f824b77a8671daac363998266933bb7c12b8db11e
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.6-cp312-abi3-macosx_13_0_x86_64.whl

Download URL openscad_cpp_evaluator-1.49.6-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
47b2c726573d3f6f178f636d4d5fa3eaeaa9a2a85872c7aeebbdc4bb76bea316
BLAKE2b-256 checksum
How to use checksums
e2527e084ed99d6c9ec736ead6a76f52c88fe0037dc6225868b99f5e42bcfbec
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.6-cp312-abi3-macosx_13_0_arm64.whl

Download URL openscad_cpp_evaluator-1.49.6-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
0acf8cc911d75c106155e217503554ce38d3b79c3a5afb4065f93a21c1be7f80
BLAKE2b-256 checksum
How to use checksums
1d090e5e7fbd648a6702315d4ca8f83c74138726c9720aa2c5373530a63ca335
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.6

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