openscad-cpp-evaluator 0.55.0__tar.gz → 0.55.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/CLAUDE.md +11 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/PKG-INFO +1 -1
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/csg_node.hpp +15 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/pyproject.toml +1 -1
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/csg_generate.cpp +9 -1
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/manifold_cache.cpp +38 -1
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_manifold_cache.cpp +59 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/.github/workflows/wheels.yml +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/.gitignore +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/.gitmodules +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/LICENSE +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/README.md +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/bindings/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/bindings/ast_to_py.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/bindings/module.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/cmake/embed_font.cmake +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/examples/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/examples/eval_perf_benchmark.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/examples/manifold_cache_reuse.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/examples/minimal_debugger.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/.gitignore +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/README.md +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/api.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/comments.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/position.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/scope.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_render_expression.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/bytecode.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/colored_body.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/evaluator.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/export.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/font_match.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/freetype_font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/mesh_check.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/profile.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/segments.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/value.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/python/openscad_cpp_evaluator/__init__.py +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/resources/fonts/LICENSE +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/resources/fonts/LiberationSans-Regular.ttf +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/call_args.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/color.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/control.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/dxf_dim.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/extrude.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/import.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/modifiers.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/primitives_2d.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/primitives_3d.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/registry.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/roof.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/segments.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/surface.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/text.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/topology.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/bytecode_vm.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/colored_body.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/csg_resolve.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/css_colors.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/debug/debug_repl.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/debug_profile.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/eval_error.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/eval_use.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/export.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/import/dxf_import.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/import/mesh_import.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/import/surface_load.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/import/svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/measure_geometry.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/stmt_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/text/font_match.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/text/freetype_font_provider.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/text/text_metrics.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/user_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/value.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_children_separate.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_cli.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_control_flow.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_csg_tree.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_debug_hooks.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_dxf_svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_export.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_extrude_roof.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_feature_detection.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_import_export.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_mesh_check.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_multi_color_merge.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_primitives.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_profiling.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_python_bindings.py +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_render_expr.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_scope_trail.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_scoping.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_surface.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_tail_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_text.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_unexpected_args.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_use.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_value.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_viewport_params.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tools/cli/cli_lib.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tools/cli/cli_lib.hpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/uv.lock +0 -0
|
@@ -699,6 +699,17 @@ grep for `ponytail:`.
|
|
|
699
699
|
permanent cache miss for any subtree that called `rands()` while resolving, since such a
|
|
700
700
|
subtree's resolved params aren't a pure function of its own content anymore (the actual `rands()`
|
|
701
701
|
output also depends on every earlier `rands()` call's position in the whole evaluation's order).
|
|
702
|
+
A second, separate taint — `CSGNode::keyHasClosure`, set by `cacheKey()` itself rather than at
|
|
703
|
+
resolve time — does the same for any subtree holding a **function literal** in its params (the
|
|
704
|
+
`levelset(function (x,y,z) ..., ...)` shape). `canonValue()` can only key a closure by its AST
|
|
705
|
+
node's raw address, which is meaningful for exactly one parse: the next render frees that AST and
|
|
706
|
+
a fresh closure over *different* captured values can be allocated at the very same address, so
|
|
707
|
+
the key silently hits the previous render's geometry — the GUI symptom was an edited script
|
|
708
|
+
rendering its **old** shape until saved a second time. (The address also ignores the captured
|
|
709
|
+
values themselves, so two closures over one literal collide within a single render, which is what
|
|
710
|
+
`tests/test_manifold_cache.cpp` pins down deterministically.) Keying a closure honestly means
|
|
711
|
+
canonicalizing its captured `let_` trail, which is type-erased (`Closure::capturedLet` is a
|
|
712
|
+
`shared_ptr<void>`); until that exists such a subtree simply does not participate in the cache.
|
|
702
713
|
Builtins are registered in `src/builtins/registry.cpp` as `(name string) -> (ResolveFn,
|
|
703
714
|
GenerateFn)` pairs — `dispatch.hpp` has the exact reasoning for `GenerateFn`'s `Evaluator&`
|
|
704
715
|
parameter (provenance-table writes only, no `EvalContext`/dynamic-scope access, so the
|
|
@@ -72,6 +72,21 @@ struct CSGNode {
|
|
|
72
72
|
// on first cacheKey() call; every node here is always reached through a
|
|
73
73
|
// non-const CSGNode&, so no `mutable` is needed to write it.
|
|
74
74
|
std::optional<std::string> cachedKey;
|
|
75
|
+
|
|
76
|
+
// Set by the same cacheKey() pass that fills cachedKey: true if this
|
|
77
|
+
// node's own params, or any descendant's, hold a function literal.
|
|
78
|
+
//
|
|
79
|
+
// canonValue() can only key a closure by its AST node's raw address,
|
|
80
|
+
// and that address is meaningful for exactly one parse: the next
|
|
81
|
+
// render frees that AST, and a fresh closure over different captured
|
|
82
|
+
// values can be allocated at the very same address -- so the key
|
|
83
|
+
// silently hits the PREVIOUS render's geometry. (It also ignores the
|
|
84
|
+
// captured values themselves, so two closures over one literal share a
|
|
85
|
+
// key within a single render.) Keying a closure honestly would mean
|
|
86
|
+
// canonicalising its captured `let_` trail, which is type-erased; until
|
|
87
|
+
// that exists, such a subtree just does not participate in the cache.
|
|
88
|
+
// See csg_generate.cpp's lookup.
|
|
89
|
+
bool keyHasClosure = false;
|
|
75
90
|
};
|
|
76
91
|
|
|
77
92
|
|
|
@@ -44,7 +44,15 @@ std::vector<ColoredBody> Evaluator::generateTreeImpl(const std::vector<CSGNode*>
|
|
|
44
44
|
// re-deriving results that would just be discarded. Mirrors
|
|
45
45
|
// generate_tree()'s own cache check exactly.
|
|
46
46
|
std::optional<std::string> key;
|
|
47
|
-
if (manifoldCache_ && !node.uncacheable)
|
|
47
|
+
if (manifoldCache_ && !node.uncacheable) {
|
|
48
|
+
key = cacheKey(node);
|
|
49
|
+
// A key that serialized a function literal is not a pure
|
|
50
|
+
// function of content -- it embeds a raw AST address that the
|
|
51
|
+
// next parse can hand out again. Dropping the key here forces
|
|
52
|
+
// both the get() below and the put() further down to be
|
|
53
|
+
// skipped. See CSGNode::keyHasClosure.
|
|
54
|
+
if (node.keyHasClosure) key.reset();
|
|
55
|
+
}
|
|
48
56
|
std::optional<std::vector<ColoredBody>> cached = key ? manifoldCache_->get(*key) : std::nullopt;
|
|
49
57
|
if (cached) {
|
|
50
58
|
node.bodies = std::move(*cached);
|
|
@@ -93,6 +93,32 @@ std::string canonValue(const Value& v) {
|
|
|
93
93
|
v);
|
|
94
94
|
}
|
|
95
95
|
|
|
96
|
+
// True if `v` is a function literal, or a list/object holding one at any
|
|
97
|
+
// depth. Drives CSGNode::keyHasClosure -- see its doc comment for why a
|
|
98
|
+
// closure cannot be keyed.
|
|
99
|
+
bool valueHasClosure(const Value& v) {
|
|
100
|
+
return std::visit(
|
|
101
|
+
[](const auto& val) -> bool {
|
|
102
|
+
using T = std::decay_t<decltype(val)>;
|
|
103
|
+
if constexpr (std::is_same_v<T, ClosurePtr>) {
|
|
104
|
+
return true;
|
|
105
|
+
} else if constexpr (std::is_same_v<T, ListPtr>) {
|
|
106
|
+
if (!val) return false;
|
|
107
|
+
for (const Value& item : val->items)
|
|
108
|
+
if (valueHasClosure(item)) return true;
|
|
109
|
+
return false;
|
|
110
|
+
} else if constexpr (std::is_same_v<T, ObjectPtr>) {
|
|
111
|
+
if (!val) return false;
|
|
112
|
+
for (const auto& [k, vv] : val->items)
|
|
113
|
+
if (valueHasClosure(vv)) return true;
|
|
114
|
+
return false;
|
|
115
|
+
} else {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
v);
|
|
120
|
+
}
|
|
121
|
+
|
|
96
122
|
std::string canonParams(const CSGParams& params) {
|
|
97
123
|
std::vector<std::pair<std::string, std::string>> entries;
|
|
98
124
|
entries.reserve(params.size());
|
|
@@ -120,13 +146,24 @@ std::string canonParams(const CSGParams& params) {
|
|
|
120
146
|
std::string cacheKey(CSGNode& node) {
|
|
121
147
|
if (node.cachedKey) return *node.cachedKey;
|
|
122
148
|
|
|
149
|
+
bool hasClosure = false;
|
|
150
|
+
for (const auto& [k, v] : node.params) {
|
|
151
|
+
if (valueHasClosure(v)) { hasClosure = true; break; }
|
|
152
|
+
}
|
|
153
|
+
|
|
123
154
|
std::string out = "N(";
|
|
124
155
|
appendLenPrefixed(out, node.kind);
|
|
125
156
|
out += node.isBuiltin ? "1" : "0";
|
|
126
157
|
appendLenPrefixed(out, canonParams(node.params));
|
|
127
158
|
out += std::to_string(node.children.size()) + "[";
|
|
128
|
-
for (const auto& c : node.children)
|
|
159
|
+
for (const auto& c : node.children) {
|
|
160
|
+
appendLenPrefixed(out, cacheKey(*c));
|
|
161
|
+
// A closure anywhere below poisons this key too: it is built from
|
|
162
|
+
// the children's keys.
|
|
163
|
+
hasClosure = hasClosure || c->keyHasClosure;
|
|
164
|
+
}
|
|
129
165
|
out += "])";
|
|
166
|
+
node.keyHasClosure = hasClosure;
|
|
130
167
|
node.cachedKey = out;
|
|
131
168
|
return *node.cachedKey;
|
|
132
169
|
}
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_manifold_cache.cpp
RENAMED
|
@@ -121,6 +121,65 @@ TEST(ManifoldCacheUncacheable, RandsBeforeGeometryInModuleBodyTaintsSplicedSibli
|
|
|
121
121
|
EXPECT_TRUE(e.tree[0]->uncacheable);
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
+
// -- closure taint ---------------------------------------------------------
|
|
125
|
+
|
|
126
|
+
TEST(ManifoldCacheClosure, PlainNodeHasNoClosureTaint) {
|
|
127
|
+
Evaluated e = evalSrc("cube(5);");
|
|
128
|
+
ASSERT_EQ(e.tree.size(), 1u);
|
|
129
|
+
cacheKey(*e.tree[0]);
|
|
130
|
+
EXPECT_FALSE(e.tree[0]->keyHasClosure);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
TEST(ManifoldCacheClosure, FunctionLiteralParamTaintsTheNode) {
|
|
134
|
+
Evaluated e = evalSrc(
|
|
135
|
+
"levelset(function (x,y,z) x*x+y*y+z*z-100,"
|
|
136
|
+
" bounds=[[-15,-15,-15],[15,15,15]], edge=5);");
|
|
137
|
+
ASSERT_EQ(e.tree.size(), 1u);
|
|
138
|
+
cacheKey(*e.tree[0]);
|
|
139
|
+
EXPECT_TRUE(e.tree[0]->keyHasClosure);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
TEST(ManifoldCacheClosure, TaintPropagatesUpThroughATransform) {
|
|
143
|
+
// The parent's key is built from the child's, so a closure below is
|
|
144
|
+
// just as unusable there.
|
|
145
|
+
Evaluated e = evalSrc(
|
|
146
|
+
"translate([1,0,0]) levelset(function (x,y,z) x*x+y*y+z*z-100,"
|
|
147
|
+
" bounds=[[-15,-15,-15],[15,15,15]], edge=5);");
|
|
148
|
+
ASSERT_EQ(e.tree.size(), 1u);
|
|
149
|
+
EXPECT_EQ(e.tree[0]->kind, "translate");
|
|
150
|
+
cacheKey(*e.tree[0]);
|
|
151
|
+
EXPECT_TRUE(e.tree[0]->keyHasClosure);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// The bug this taint exists for, at full size: both closures come from the
|
|
155
|
+
// SAME function literal (so canonValue's "F<pointer>" is byte-identical)
|
|
156
|
+
// but capture different `r`. Every other cache-key input matches too, so
|
|
157
|
+
// before the taint the second levelset() was served the first one's
|
|
158
|
+
// geometry and both spheres came out radius 10.
|
|
159
|
+
//
|
|
160
|
+
// Deterministic on purpose: one evaluation, one AST, so the two closures
|
|
161
|
+
// genuinely share a node address rather than relying on the allocator
|
|
162
|
+
// handing back a freed one.
|
|
163
|
+
TEST(ManifoldCacheClosure, TwoClosuresOverOneLiteralAreNotServedEachOthersGeometry) {
|
|
164
|
+
auto cache = std::make_shared<ManifoldCache>();
|
|
165
|
+
Evaluated e = evalSrcWithCache(
|
|
166
|
+
"function mk(r) = function (x,y,z) x*x+y*y+z*z-r*r;\n"
|
|
167
|
+
"levelset(mk(10), bounds=[[-15,-15,-15],[15,15,15]], edge=2);\n"
|
|
168
|
+
"translate([40,0,0])\n"
|
|
169
|
+
" levelset(mk(5), bounds=[[-15,-15,-15],[15,15,15]], edge=2);\n",
|
|
170
|
+
cache);
|
|
171
|
+
|
|
172
|
+
ASSERT_EQ(e.bodies.size(), 2u);
|
|
173
|
+
ASSERT_TRUE(e.bodies[0].body.has_value());
|
|
174
|
+
ASSERT_TRUE(e.bodies[1].body.has_value());
|
|
175
|
+
const double volBig = e.bodies[0].body->Volume();
|
|
176
|
+
const double volSmall = e.bodies[1].body->Volume();
|
|
177
|
+
// Coarse sampling, so compare the two against each other rather than
|
|
178
|
+
// against 4/3*pi*r^3: r=10 vs r=5 is an 8x volume ratio.
|
|
179
|
+
EXPECT_GT(volBig, 2.0 * volSmall)
|
|
180
|
+
<< "the second closure was served the first one's cached geometry";
|
|
181
|
+
}
|
|
182
|
+
|
|
124
183
|
// -- cache reuse -----------------------------------------------------------
|
|
125
184
|
|
|
126
185
|
TEST(ManifoldCache, CacheHitSkipsRegeneratingTheSubtree) {
|
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/.github/workflows/wheels.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/examples/eval_perf_benchmark.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/examples/manifold_cache_reuse.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/examples/minimal_debugger.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/primitives_2d.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/builtins/primitives_3d.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/src/text/freetype_font_provider.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_bytecode_compiler.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_children_separate.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_dxf_svg_import.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_feature_detection.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_import_export.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_multi_color_merge.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_python_bindings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_unexpected_args.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.55.0 → openscad_cpp_evaluator-0.55.1}/tests/test_viewport_params.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|