openscad-cpp-evaluator 0.13.0__tar.gz → 0.13.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.13.0 → openscad_cpp_evaluator-0.13.1}/PKG-INFO +1 -1
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/pyproject.toml +1 -1
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/bytecode_vm.cpp +26 -5
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_debug_hooks.cpp +47 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/.github/workflows/wheels.yml +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/.gitignore +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/.gitmodules +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/LICENSE +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/README.md +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/bindings/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/bindings/module.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/cmake/embed_font.cmake +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/examples/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/examples/eval_perf_benchmark.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/examples/manifold_cache_reuse.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/examples/minimal_debugger.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/.gitignore +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/README.md +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/api.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/comments.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/position.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/scope.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/bytecode.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/colored_body.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/evaluator.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/export.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/profile.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/segments.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/stb_font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/value.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/python/openscad_cpp_evaluator/__init__.py +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/resources/fonts/LICENSE +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/resources/fonts/LiberationSans-Regular.ttf +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/call_args.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/color.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/control.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/extrude.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/import.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/modifiers.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/primitives_2d.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/primitives_3d.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/registry.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/roof.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/segments.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/surface.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/text.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/topology.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/colored_body.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/csg_generate.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/csg_resolve.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/css_colors.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/debug/debug_repl.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/debug_profile.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/eval_error.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/eval_use.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/export.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/import/dxf_import.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/import/mesh_import.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/import/surface_load.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/import/svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/stmt_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/text/stb_font_provider.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/text/text_metrics.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/user_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/value.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_cli.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_control_flow.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_csg_tree.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_dxf_svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_export.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_extrude_roof.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_import_export.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_multi_color_merge.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_primitives.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_profiling.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_python_bindings.py +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_scope_trail.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_scoping.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_surface.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_tail_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_text.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_use.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_value.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_viewport_params.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tools/cli/cli_lib.cpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tools/cli/cli_lib.hpp +0 -0
- {openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tools/cli/main.cpp +0 -0
|
@@ -234,8 +234,6 @@ void pushBracketedCallFrame(Evaluator& ev, const CompiledChunk& chunk, const osc
|
|
|
234
234
|
bool usedChildCtx = false;
|
|
235
235
|
EvalContext childCtx = ev.callCtxFor(declNode, callerCtx, fnScope, nullptr, nullptr, &usedChildCtx, capturedLet);
|
|
236
236
|
const int upvalueParent = usedChildCtx ? callerFrameIdx : -1;
|
|
237
|
-
Evaluator::UserCallHandle handle =
|
|
238
|
-
ev.enterUserCall(name, declNode, &bodyExpr, childCtx, callPos, upvalueParent, /*skipDepthGuard=*/true);
|
|
239
237
|
|
|
240
238
|
auto frame = ev.acquireVmFrame();
|
|
241
239
|
frame->chunk = &chunk;
|
|
@@ -253,6 +251,23 @@ void pushBracketedCallFrame(Evaluator& ev, const CompiledChunk& chunk, const osc
|
|
|
253
251
|
frame->hopEligible = true; // just pushed a fresh, correctly-named callStack_ entry
|
|
254
252
|
bindBoundArgsIntoFrame(chunk, bound, *frame);
|
|
255
253
|
applyCompiledDefaultsToFrame(ev, chunk, *frame);
|
|
254
|
+
|
|
255
|
+
// enterUserCall's own bodyCtx must point at frame->ctxChain's OWN
|
|
256
|
+
// storage (stable: this VmFrame lives behind a unique_ptr, so its
|
|
257
|
+
// address never moves even if vmCallStack_ itself reallocates), not
|
|
258
|
+
// a plain local -- a local `childCtx` here would be destroyed the
|
|
259
|
+
// instant this function returns, but CallStackFrame::bodyCtx is read
|
|
260
|
+
// LATER, by ANY subsequent checkDebug() call (this call's own nested
|
|
261
|
+
// calls, or an unrelated sibling's) that walks the WHOLE call stack
|
|
262
|
+
// to build per-frame debugger locals (Evaluator::buildDebugFrames) --
|
|
263
|
+
// reading a dangling pointer there segfaults. Real bug, caught via a
|
|
264
|
+
// targeted ASan build reproducing BelfrySCAD's own "step over a call,
|
|
265
|
+
// but honor a breakpoint set inside it" debug scenario: pausing deep
|
|
266
|
+
// inside a native (interpreter-forced, due to the breakpoint) callee
|
|
267
|
+
// walks the WHOLE call stack, including this compiled caller's own
|
|
268
|
+
// now-stale frame.
|
|
269
|
+
Evaluator::UserCallHandle handle = ev.enterUserCall(name, declNode, &bodyExpr, frame->ctxChain.back(), callPos,
|
|
270
|
+
upvalueParent, /*skipDepthGuard=*/true);
|
|
256
271
|
ev.vmCallStack_.push_back(std::move(frame));
|
|
257
272
|
ev.vmCallBrackets_.push_back(std::move(handle));
|
|
258
273
|
}
|
|
@@ -277,9 +292,6 @@ void pushBracketedModuleFrame(Evaluator& ev, const CompiledChunk& chunk, const o
|
|
|
277
292
|
if (ev.vmCallStack_.size() >= Evaluator::kMaxVmCallStackDepth) {
|
|
278
293
|
ev.error("Recursion too deep while calling module '" + decl.name->name + "'", decl);
|
|
279
294
|
}
|
|
280
|
-
Evaluator::UserCallHandle handle = ev.enterUserCall(decl.name->name, decl, /*bodyExpr=*/nullptr, childCtx, callPos,
|
|
281
|
-
/*upvalueParent=*/-1, /*skipDepthGuard=*/true,
|
|
282
|
-
CallStackFrame::Kind::Module);
|
|
283
295
|
auto frame = ev.acquireVmFrame();
|
|
284
296
|
frame->chunk = &chunk;
|
|
285
297
|
frame->code = &chunk.bodyCode;
|
|
@@ -298,6 +310,15 @@ void pushBracketedModuleFrame(Evaluator& ev, const CompiledChunk& chunk, const o
|
|
|
298
310
|
frame->tailHopGuard = 0;
|
|
299
311
|
frame->logicalName = decl.name->name;
|
|
300
312
|
frame->ownsModuleSplice = true;
|
|
313
|
+
// enterUserCall's own bodyCtx must point at frame->ctxChain's OWN
|
|
314
|
+
// storage, not the caller's own (about-to-be-destroyed) local
|
|
315
|
+
// `childCtx` -- see pushBracketedCallFrame's own doc comment, above,
|
|
316
|
+
// for the full dangling-pointer hazard this avoids (same fix, same
|
|
317
|
+
// root cause, module side).
|
|
318
|
+
Evaluator::UserCallHandle handle = ev.enterUserCall(decl.name->name, decl, /*bodyExpr=*/nullptr,
|
|
319
|
+
frame->ctxChain.back(), callPos,
|
|
320
|
+
/*upvalueParent=*/-1, /*skipDepthGuard=*/true,
|
|
321
|
+
CallStackFrame::Kind::Module);
|
|
301
322
|
frame->moduleRandsBefore = randsBefore;
|
|
302
323
|
frame->moduleSpliceCallNode = &callNode;
|
|
303
324
|
ev.vmCallStack_.push_back(std::move(frame));
|
|
@@ -384,6 +384,53 @@ TEST(DebugHooks, ForcedBreakpointBuiltinAlwaysFiresEvenInHookSkippableMode) {
|
|
|
384
384
|
EXPECT_EQ(normalCalls, 0); // cube/breakpoint()-as-statement/sphere: no breakpoint line matches, all skipped
|
|
385
385
|
}
|
|
386
386
|
|
|
387
|
+
// Regression test for a real dangling-pointer bug (found via a targeted
|
|
388
|
+
// ASan build reproducing BelfrySCAD's own "step over a call, but honor a
|
|
389
|
+
// breakpoint set inside it" debug scenario): pushBracketedCallFrame/
|
|
390
|
+
// pushBracketedModuleFrame (bytecode_vm.cpp) used to point
|
|
391
|
+
// CallStackFrame::bodyCtx at their own LOCAL `childCtx` variable, which is
|
|
392
|
+
// destroyed the instant they return -- but bodyCtx is read LATER, by any
|
|
393
|
+
// subsequent checkDebug() call that walks the WHOLE call stack to build
|
|
394
|
+
// per-frame debugger locals (getFrame(), below). A compiled caller
|
|
395
|
+
// (`stepped_over`, no breakpoint of its own, so it runs compiled) calling
|
|
396
|
+
// a callee forced into the interpreter by an active breakpoint on ITS OWN
|
|
397
|
+
// line (`heavy`) reproduces this exactly: pausing deep inside `heavy` and
|
|
398
|
+
// calling getFrame() used to segfault reading the compiled caller's own
|
|
399
|
+
// already-dangling frame.
|
|
400
|
+
TEST(DebugHooks, GetFrameDoesNotCrashWalkingACompiledCallerAboveAForcedInterpretedCallee) {
|
|
401
|
+
ScopedVm vm(true);
|
|
402
|
+
std::vector<size_t> frameCountsAtLine1;
|
|
403
|
+
DebugHooks hooks;
|
|
404
|
+
hooks.debugHook = [&](int line, int depth, bool, bool exprLevel, const std::string&,
|
|
405
|
+
const std::vector<CallStackFrame>& callStack, const DebugFramesFn& getFrame) {
|
|
406
|
+
if (line == 1 && depth == 2 && !exprLevel) {
|
|
407
|
+
std::vector<DebugFrame> frames = getFrame();
|
|
408
|
+
frameCountsAtLine1.push_back(frames.size());
|
|
409
|
+
EXPECT_EQ(callStack.size(), 2u);
|
|
410
|
+
}
|
|
411
|
+
return DebugAction{};
|
|
412
|
+
};
|
|
413
|
+
Evaluator ev(EchoFn{}, nullptr, nullptr, hooks);
|
|
414
|
+
// Mirrors BelfrySCAD's own _apply_fast_continue for an active step:
|
|
415
|
+
// a real breakpoint set (on heavy's own line 1, forcing IT specifically
|
|
416
|
+
// to stay interpreted via chunkEligibleNow) with hookSkippable=false.
|
|
417
|
+
ev.setFastContinueBreakpoints(std::unordered_map<std::string, std::set<int>>{{"<string>", {1}}},
|
|
418
|
+
/*hookSkippable=*/false);
|
|
419
|
+
auto ast = parseSrc("function heavy(n) = [for (i=[0:1:n-1]) i*i];\n"
|
|
420
|
+
"function stepped_over() = let(r = heavy(3)) len(r);\n"
|
|
421
|
+
"b = stepped_over();\n");
|
|
422
|
+
auto scope = oscad::buildScopes(ast);
|
|
423
|
+
EvalContext ctx = EvalContext::makeRoot(scope.get());
|
|
424
|
+
ev.evaluate(ast, ctx);
|
|
425
|
+
// The actual point of this test is that getFrame() doesn't crash
|
|
426
|
+
// reading the compiled `stepped_over` frame's own (previously
|
|
427
|
+
// dangling) bodyCtx -- a consistent, non-empty frame list is enough
|
|
428
|
+
// evidence it read something real rather than garbage each time.
|
|
429
|
+
ASSERT_FALSE(frameCountsAtLine1.empty());
|
|
430
|
+
for (size_t count : frameCountsAtLine1) EXPECT_EQ(count, frameCountsAtLine1.front());
|
|
431
|
+
EXPECT_GT(frameCountsAtLine1.front(), 0u);
|
|
432
|
+
}
|
|
433
|
+
|
|
387
434
|
// ---------------------------------------------------------------------------
|
|
388
435
|
// Full parity with the Python reference's _check_debug call sites.
|
|
389
436
|
//
|
|
File without changes
|
{openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.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.13.0 → openscad_cpp_evaluator-0.13.1}/examples/eval_perf_benchmark.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/examples/manifold_cache_reuse.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.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
|
{openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/builtins/primitives_2d.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.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
|
{openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/src/text/stb_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.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_bytecode_compiler.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.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.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_import_export.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_manifold_cache.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.1}/tests/test_multi_color_merge.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.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
|
|
File without changes
|
{openscad_cpp_evaluator-0.13.0 → openscad_cpp_evaluator-0.13.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
|