openscad-cpp-evaluator 0.21.0__tar.gz → 0.22.0__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.21.0 → openscad_cpp_evaluator-0.22.0}/PKG-INFO +1 -1
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/pyproject.toml +1 -1
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/debug_profile.cpp +19 -6
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_profiling.cpp +65 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/.github/workflows/wheels.yml +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/.gitignore +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/.gitmodules +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/LICENSE +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/README.md +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/bindings/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/bindings/ast_to_py.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/bindings/module.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/cmake/embed_font.cmake +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/examples/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/examples/eval_perf_benchmark.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/examples/manifold_cache_reuse.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/examples/minimal_debugger.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/.gitignore +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/CLAUDE.md +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/README.md +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/api.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/comments.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/position.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/scope.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/bytecode.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/colored_body.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/evaluator.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/export.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/profile.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/segments.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/stb_font_provider.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/value.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/python/openscad_cpp_evaluator/__init__.py +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/resources/fonts/LICENSE +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/resources/fonts/LiberationSans-Regular.ttf +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/builtins.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/call_args.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/color.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/control.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/extrude.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/import.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/modifiers.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/primitives_2d.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/primitives_3d.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/registry.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/roof.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/segments.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/surface.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/text.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/topology.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/bytecode_vm.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/colored_body.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/csg_generate.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/csg_resolve.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/css_colors.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/debug/debug_repl.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/eval_error.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/eval_use.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/export.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/import/dxf_import.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/import/mesh_import.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/import/surface_load.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/import/svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/stmt_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/text/stb_font_provider.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/text/text_metrics.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/user_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/value.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_booleans.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_bytecode_compiler.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_cli.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_control_flow.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_csg_tree.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_debug_hooks.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_dxf_svg_import.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_eval_context.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_export.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_expr_eval.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_extrude_roof.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_function_builtins.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_helpers.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_import_export.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_manifold_cache.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_multi_color_merge.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_primitives.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_python_bindings.py +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_scope_trail.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_scoping.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_surface.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_tail_calls.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_text.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_transforms.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_use.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_value.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_viewport_params.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_zip_stored.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tools/cli/CMakeLists.txt +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tools/cli/cli_lib.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tools/cli/cli_lib.hpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tools/cli/main.cpp +0 -0
- {openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/uv.lock +0 -0
|
@@ -127,14 +127,27 @@ int Evaluator::profilePathEnter(const std::string& kind, const std::string& name
|
|
|
127
127
|
}
|
|
128
128
|
const int parent = profileCurrentPath_ < 0 ? 0 : profileCurrentPath_;
|
|
129
129
|
|
|
130
|
-
//
|
|
131
|
-
// per
|
|
132
|
-
|
|
133
|
-
|
|
130
|
+
// Immediate self-recursion folds onto the parent rather than growing a
|
|
131
|
+
// chain per level (see ProfilePathNode).
|
|
132
|
+
//
|
|
133
|
+
// Only the parent, never a deeper ancestor. Folding across intervening
|
|
134
|
+
// nodes credits the whole re-entered subtree to the ancestor, and every
|
|
135
|
+
// node between it and here loses that time -- cumulative is derived
|
|
136
|
+
// bottom-up, so it can only count what is actually below. A BOSL2
|
|
137
|
+
// attachment chain showed restore() at 226ms in the flat view and 2.5ms
|
|
138
|
+
// in the tree for the same call site, because its callees re-entered a
|
|
139
|
+
// multmatrix already open further up and took 223ms with them.
|
|
140
|
+
//
|
|
141
|
+
// A cycle through other call sites therefore gets a real node. That is
|
|
142
|
+
// what makes the tree's numbers agree with the flat view's; the cost is
|
|
143
|
+
// more nodes on mutually-recursive chains, which kMaxProfilePathNodes
|
|
144
|
+
// still bounds.
|
|
145
|
+
if (parent > 0) {
|
|
146
|
+
const ProfilePathNode& n = profilePaths_[static_cast<size_t>(parent)];
|
|
134
147
|
if (n.name == name && n.callOrigin == callOrigin && n.callLine == callLine &&
|
|
135
148
|
n.callColumn == callColumn && n.kind == kind) {
|
|
136
|
-
folded = true; // recursion: this site
|
|
137
|
-
return
|
|
149
|
+
folded = true; // direct recursion: this site called itself
|
|
150
|
+
return parent;
|
|
138
151
|
}
|
|
139
152
|
}
|
|
140
153
|
for (int childIdx : profilePaths_[static_cast<size_t>(parent)].children) {
|
|
@@ -259,6 +259,71 @@ TEST(ProfilePaths, CumulativeTimeContainsChildrenEvenThroughRecursion) {
|
|
|
259
259
|
EXPECT_GT(multiEntry, 0u) << "fixture never produced a multi-entry node";
|
|
260
260
|
}
|
|
261
261
|
|
|
262
|
+
// A call site reached by exactly one path must show the same total in both
|
|
263
|
+
// views.
|
|
264
|
+
//
|
|
265
|
+
// The two are computed differently -- the flat view measures elapsed time
|
|
266
|
+
// across a site's entries, the tree derives cumulative bottom-up from what
|
|
267
|
+
// is actually beneath each node -- so they agree only if the tree really
|
|
268
|
+
// contains the work. Folding a re-entered site onto a DISTANT ancestor
|
|
269
|
+
// broke that: the subtree's time was credited up there and every node in
|
|
270
|
+
// between lost it. On a BOSL2 attachment chain, restore() read 226ms in the
|
|
271
|
+
// flat view and 2.5ms in the tree for the same call site.
|
|
272
|
+
//
|
|
273
|
+
// Restricted to single-node sites deliberately. A site that nests within
|
|
274
|
+
// itself has a node per level now, and summing those double-counts, while
|
|
275
|
+
// the flat view is recursion-guarded and counts only the outermost -- so
|
|
276
|
+
// the two legitimately differ there and comparing them proves nothing.
|
|
277
|
+
TEST(ProfilePaths, TreeAndFlatAgreeForASiteReachedOneWay) {
|
|
278
|
+
const ProfileResult r = profileSrc(
|
|
279
|
+
// m()'s call site sits inside step(), which inner() re-enters, so
|
|
280
|
+
// the second m() finds an m() already open ABOVE inner() and step().
|
|
281
|
+
// That is the shape that used to fold across, stripping the work
|
|
282
|
+
// below out of both of them. Anything simpler never folds and so
|
|
283
|
+
// passes either way -- the first fixture written here did exactly
|
|
284
|
+
// that and proved nothing.
|
|
285
|
+
"function work(n) = n <= 0 ? 0 : work(n - 1) + len([for (i = [0:400]) i]);\n"
|
|
286
|
+
"module leaf() { x = work(10); cube(1); }\n"
|
|
287
|
+
"module m() { children(); }\n"
|
|
288
|
+
"module step(n) { m() inner(n); }\n"
|
|
289
|
+
"module inner(n) { if (n > 0) step(n - 1); else leaf(); }\n"
|
|
290
|
+
"step(2);\n");
|
|
291
|
+
ASSERT_FALSE(r.paths.empty());
|
|
292
|
+
|
|
293
|
+
size_t checked = 0;
|
|
294
|
+
for (const auto& site : r.callSites) {
|
|
295
|
+
double treeTotal = 0.0;
|
|
296
|
+
size_t nodes = 0;
|
|
297
|
+
for (const auto& n : r.paths) {
|
|
298
|
+
if (n.name == site.name && n.kind == site.kind
|
|
299
|
+
&& n.callOrigin == site.callOrigin && n.callLine == site.callLine
|
|
300
|
+
&& n.callColumn == site.callColumn) {
|
|
301
|
+
treeTotal += n.cumulativeTime;
|
|
302
|
+
++nodes;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
if (nodes != 1) continue;
|
|
306
|
+
++checked;
|
|
307
|
+
EXPECT_NEAR(treeTotal, site.cumulativeTime, 1e-6)
|
|
308
|
+
<< site.kind << " " << site.name << " at line " << site.callLine
|
|
309
|
+
<< ":" << site.callColumn << " -- flat " << site.cumulativeTime
|
|
310
|
+
<< " vs tree " << treeTotal;
|
|
311
|
+
}
|
|
312
|
+
EXPECT_GT(checked, 2u) << "fixture produced too few single-path sites to mean anything";
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// Direct self-recursion still folds: the whole point of folding is that
|
|
316
|
+
// `f` calling `f` 400 deep is not 400 nodes.
|
|
317
|
+
TEST(ProfilePaths, DirectSelfRecursionStillFolds) {
|
|
318
|
+
const ProfileResult r = profileSrc(
|
|
319
|
+
"function down(n) = n <= 0 ? 0 : down(n - 1) + 1;\n"
|
|
320
|
+
"x = down(20);\n"
|
|
321
|
+
"cube(x >= 0 ? 1 : 2);\n");
|
|
322
|
+
size_t downNodes = 0;
|
|
323
|
+
for (const auto& n : r.paths) if (n.name == "down") ++downNodes;
|
|
324
|
+
EXPECT_LE(downNodes, 2u) << downNodes;
|
|
325
|
+
}
|
|
326
|
+
|
|
262
327
|
// The root accounts for essentially the whole resolve pass -- the gap is
|
|
263
328
|
// top-level work outside any user call, which is what unattributedTime is.
|
|
264
329
|
TEST(ProfilePaths, RootCoversTheProfiledWork) {
|
|
File without changes
|
{openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/.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
|
|
File without changes
|
{openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/examples/eval_perf_benchmark.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/examples/manifold_cache_reuse.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/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.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/src/builtins/primitives_2d.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/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.21.0 → openscad_cpp_evaluator-0.22.0}/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.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_bytecode_compiler.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/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.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_function_builtins.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_import_export.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_manifold_cache.cpp
RENAMED
|
File without changes
|
{openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/tests/test_multi_color_merge.cpp
RENAMED
|
File without changes
|
|
File without changes
|
{openscad_cpp_evaluator-0.21.0 → openscad_cpp_evaluator-0.22.0}/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.21.0 → openscad_cpp_evaluator-0.22.0}/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
|