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

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

Built distributions (wheels)

Table of built distributions (wheels) for openscad-cpp-evaluator 1.49.7
File
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.

Release history Release notifications | RSS feed

This release

1.49.7 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