openscad-cpp-evaluator 0.44.0__tar.gz → 0.45.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.
Files changed (208) hide show
  1. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/PKG-INFO +1 -1
  2. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/pyproject.toml +1 -1
  3. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/function_builtins.cpp +2 -0
  4. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/bytecode_compiler.cpp +4 -1
  5. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/bytecode_vm.cpp +2 -0
  6. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/expr_eval.cpp +13 -1
  7. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_expr_eval.cpp +24 -11
  8. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_feature_detection.cpp +3 -2
  9. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/.github/workflows/ci.yml +0 -0
  10. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/.github/workflows/wheels.yml +0 -0
  11. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/.gitignore +0 -0
  12. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/.gitmodules +0 -0
  13. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/CLAUDE.md +0 -0
  14. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/CMakeLists.txt +0 -0
  15. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/LICENSE +0 -0
  16. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/README.md +0 -0
  17. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/bindings/CMakeLists.txt +0 -0
  18. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/bindings/ast_to_py.cpp +0 -0
  19. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/bindings/module.cpp +0 -0
  20. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/cmake/embed_font.cmake +0 -0
  21. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/examples/CMakeLists.txt +0 -0
  22. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/examples/eval_perf_benchmark.cpp +0 -0
  23. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/examples/manifold_cache_reuse.cpp +0 -0
  24. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/examples/minimal_debugger.cpp +0 -0
  25. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/.github/workflows/ci.yml +0 -0
  26. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/.gitignore +0 -0
  27. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/CLAUDE.md +0 -0
  28. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/CMakeLists.txt +0 -0
  29. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/README.md +0 -0
  30. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/api.hpp +0 -0
  31. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/ast_node.hpp +0 -0
  32. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/comments.hpp +0 -0
  33. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/declarations.hpp +0 -0
  34. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/expression.hpp +0 -0
  35. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/module_instantiation.hpp +0 -0
  36. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/scope_builder.hpp +0 -0
  37. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast/vector_element.hpp +0 -0
  38. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/ast.hpp +0 -0
  39. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/comments.hpp +0 -0
  40. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/position.hpp +0 -0
  41. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/pretty_print.hpp +0 -0
  42. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/scope.hpp +0 -0
  43. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/serialization.hpp +0 -0
  44. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/include/openscad_cpp_parser/source_map.hpp +0 -0
  45. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/CMakeLists.txt +0 -0
  46. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/api.cpp +0 -0
  47. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/ast/ast_node.cpp +0 -0
  48. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/ast/declarations.cpp +0 -0
  49. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/ast/expression.cpp +0 -0
  50. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/ast/format_utils.hpp +0 -0
  51. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/ast/module_instantiation.cpp +0 -0
  52. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/ast/scope_builder.cpp +0 -0
  53. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/ast/vector_element.cpp +0 -0
  54. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/comment_attach_internal.hpp +0 -0
  55. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/comments.cpp +0 -0
  56. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/grammar/driver.cpp +0 -0
  57. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/grammar/driver.hpp +0 -0
  58. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/grammar/lexer.l +0 -0
  59. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/grammar/lexer_api.hpp +0 -0
  60. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/grammar/oscad_location.hpp +0 -0
  61. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/grammar/parser.y +0 -0
  62. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/inline_comment_attach.cpp +0 -0
  63. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/position.cpp +0 -0
  64. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/pretty_print.cpp +0 -0
  65. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/scope.cpp +0 -0
  66. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/serialization/json_io.cpp +0 -0
  67. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/serialization/yaml_io.cpp +0 -0
  68. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/src/source_map.cpp +0 -0
  69. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/CMakeLists.txt +0 -0
  70. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_assignments.cpp +0 -0
  71. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_ast_generation.cpp +0 -0
  72. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_comments_and_files.cpp +0 -0
  73. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_const_borrow.cpp +0 -0
  74. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_control.cpp +0 -0
  75. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_expressions.cpp +0 -0
  76. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_functions.cpp +0 -0
  77. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_helpers.hpp +0 -0
  78. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_inline_comments.cpp +0 -0
  79. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_lexical.cpp +0 -0
  80. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_modules.cpp +0 -0
  81. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_node_str.cpp +0 -0
  82. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_pretty_print.cpp +0 -0
  83. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_render_expression.cpp +0 -0
  84. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_scope.cpp +0 -0
  85. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_serialization.cpp +0 -0
  86. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_smoke.cpp +0 -0
  87. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_source_map.cpp +0 -0
  88. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_use_include.cpp +0 -0
  89. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tests/test_vectors.cpp +0 -0
  90. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tools/cli/CMakeLists.txt +0 -0
  91. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/external/openscad_cpp_parser/tools/cli/main.cpp +0 -0
  92. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/bound_args.hpp +0 -0
  93. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/bytecode.hpp +0 -0
  94. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/bytecode_compiler.hpp +0 -0
  95. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/bytecode_vm.hpp +0 -0
  96. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/call_args.hpp +0 -0
  97. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/colored_body.hpp +0 -0
  98. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/csg_node.hpp +0 -0
  99. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/css_colors.hpp +0 -0
  100. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/debug_hooks.hpp +0 -0
  101. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/debug_repl.hpp +0 -0
  102. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/dispatch.hpp +0 -0
  103. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/dxf_svg_import.hpp +0 -0
  104. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/eval_context.hpp +0 -0
  105. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/eval_error.hpp +0 -0
  106. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/eval_use.hpp +0 -0
  107. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/evaluator.hpp +0 -0
  108. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/export.hpp +0 -0
  109. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/font_match.hpp +0 -0
  110. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/font_provider.hpp +0 -0
  111. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/freetype_font_provider.hpp +0 -0
  112. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/function_builtins.hpp +0 -0
  113. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/import_builtin.hpp +0 -0
  114. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/manifold_cache.hpp +0 -0
  115. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/mesh_check.hpp +0 -0
  116. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/mesh_import.hpp +0 -0
  117. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/osc_range.hpp +0 -0
  118. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/profile.hpp +0 -0
  119. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/scope_trail.hpp +0 -0
  120. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/segments.hpp +0 -0
  121. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/surface_load.hpp +0 -0
  122. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/text_metrics.hpp +0 -0
  123. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/value.hpp +0 -0
  124. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/include/openscad_cpp_evaluator/zip_stored.hpp +0 -0
  125. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/python/openscad_cpp_evaluator/__init__.py +0 -0
  126. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/resources/fonts/LICENSE +0 -0
  127. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/resources/fonts/LiberationSans-Regular.ttf +0 -0
  128. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/CMakeLists.txt +0 -0
  129. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/booleans.cpp +0 -0
  130. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/builtins.hpp +0 -0
  131. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/call_args.cpp +0 -0
  132. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/color.cpp +0 -0
  133. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/control.cpp +0 -0
  134. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/dxf_dim.cpp +0 -0
  135. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/extrude.cpp +0 -0
  136. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/import.cpp +0 -0
  137. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/modifiers.cpp +0 -0
  138. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/primitives_2d.cpp +0 -0
  139. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/primitives_3d.cpp +0 -0
  140. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/registry.cpp +0 -0
  141. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/roof.cpp +0 -0
  142. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/segments.cpp +0 -0
  143. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/surface.cpp +0 -0
  144. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/text.cpp +0 -0
  145. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/topology.cpp +0 -0
  146. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/builtins/transforms.cpp +0 -0
  147. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/colored_body.cpp +0 -0
  148. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/csg_generate.cpp +0 -0
  149. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/csg_resolve.cpp +0 -0
  150. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/css_colors.cpp +0 -0
  151. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/debug/debug_repl.cpp +0 -0
  152. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/debug_profile.cpp +0 -0
  153. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/eval_context.cpp +0 -0
  154. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/eval_error.cpp +0 -0
  155. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/eval_use.cpp +0 -0
  156. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/export.cpp +0 -0
  157. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/import/dxf_import.cpp +0 -0
  158. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/import/mesh_import.cpp +0 -0
  159. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/import/surface_load.cpp +0 -0
  160. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/import/svg_import.cpp +0 -0
  161. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/manifold_cache.cpp +0 -0
  162. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/measure_geometry.cpp +0 -0
  163. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/mesh_check.cpp +0 -0
  164. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/stmt_eval.cpp +0 -0
  165. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/text/font_match.cpp +0 -0
  166. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/text/freetype_font_provider.cpp +0 -0
  167. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/text/text_metrics.cpp +0 -0
  168. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/user_calls.cpp +0 -0
  169. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/value.cpp +0 -0
  170. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/src/zip_stored.cpp +0 -0
  171. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/CMakeLists.txt +0 -0
  172. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_booleans.cpp +0 -0
  173. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_bytecode_compiler.cpp +0 -0
  174. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_children_separate.cpp +0 -0
  175. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_cli.cpp +0 -0
  176. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_control_flow.cpp +0 -0
  177. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_csg_tree.cpp +0 -0
  178. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_debug_hooks.cpp +0 -0
  179. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_dxf_svg_import.cpp +0 -0
  180. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_eval_context.cpp +0 -0
  181. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_export.cpp +0 -0
  182. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_extrude_roof.cpp +0 -0
  183. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_function_builtins.cpp +0 -0
  184. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_helpers.hpp +0 -0
  185. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_import_export.cpp +0 -0
  186. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_manifold_cache.cpp +0 -0
  187. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_mesh_check.cpp +0 -0
  188. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_multi_color_merge.cpp +0 -0
  189. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_primitives.cpp +0 -0
  190. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_profiling.cpp +0 -0
  191. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_python_bindings.py +0 -0
  192. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_render_expr.cpp +0 -0
  193. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_scope_trail.cpp +0 -0
  194. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_scoping.cpp +0 -0
  195. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_surface.cpp +0 -0
  196. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_tail_calls.cpp +0 -0
  197. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_text.cpp +0 -0
  198. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_transforms.cpp +0 -0
  199. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_unexpected_args.cpp +0 -0
  200. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_use.cpp +0 -0
  201. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_value.cpp +0 -0
  202. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_viewport_params.cpp +0 -0
  203. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tests/test_zip_stored.cpp +0 -0
  204. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tools/cli/CMakeLists.txt +0 -0
  205. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tools/cli/cli_lib.cpp +0 -0
  206. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tools/cli/cli_lib.hpp +0 -0
  207. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/tools/cli/main.cpp +0 -0
  208. {openscad_cpp_evaluator-0.44.0 → openscad_cpp_evaluator-0.45.0}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openscad_cpp_evaluator
3
- Version: 0.44.0
3
+ Version: 0.45.0
4
4
  Summary: C++ OpenSCAD evaluator with Python bindings
5
5
  Author: NeuSCAD Contributors
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "scikit_build_core.build"
4
4
 
5
5
  [project]
6
6
  name = "openscad_cpp_evaluator"
7
- version = "0.44.0"
7
+ version = "0.45.0"
8
8
  description = "C++ OpenSCAD evaluator with Python bindings"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -610,6 +610,8 @@ enum class BuiltinFnId {
610
610
  // Guarding on supported_feature() is how a script says so out loud.
611
611
  const std::unordered_map<std::string, double>& featureLevels() {
612
612
  static const std::unordered_map<std::string, double> levels = {
613
+ {"render-expr", 1.0}, // render() in expression position
614
+ {"polyhedron-vnf", 1.0}, // polyhedron(vnf) / polyhedron(object)
613
615
  {"separate-children", 1.0}, // children(..., separate=true)
614
616
  {"minkowski-diff", 1.0}, // minkowski_difference()
615
617
  {"sphere-styles", 1.0}, // sphere(style=)
@@ -262,7 +262,10 @@ public:
262
262
  void compileIdentifierLoad(const std::string& name, const oscad::Position& pos, std::vector<Instruction>& out,
263
263
  CompileScope& scope, bool warnIfUndef) {
264
264
  if (!name.empty() && name[0] == '$') {
265
- out.push_back({Op::LoadDyn, internName(name), 0, &pos});
265
+ // `b` is the warn flag -- a $-name reached through the
266
+ // is_undef() probe must stay quiet, same as LoadFreeNoWarn does
267
+ // for a plain one.
268
+ out.push_back({Op::LoadDyn, internName(name), warnIfUndef ? 1 : 0, &pos});
266
269
  } else if (auto slot = scope.resolve(name)) {
267
270
  out.push_back({Op::LoadLocal, *slot, 0, &pos});
268
271
  } else if (auto upvalSlot = resolveEnclosing(name)) {
@@ -562,6 +562,8 @@ Value driveVm(Evaluator& ev, size_t floor) {
562
562
  } else if (const Value* v = ctx.dyn->find(name)) {
563
563
  f.stack.push_back(*v);
564
564
  } else {
565
+ // ins.b = warn flag; see compileIdentifierLoad.
566
+ if (ins.b) ev.warn("Ignoring unknown variable '" + name + "'", ins.pos);
565
567
  f.stack.push_back(Value{});
566
568
  }
567
569
  ++f.pc;
@@ -138,7 +138,19 @@ Value Evaluator::evalIdentifier(const std::string& name, const oscad::Position*
138
138
  // $-name anyway (dynamic variables aren't scope-declarable) and
139
139
  // exists only for plain identifiers.
140
140
  const Value* v = ctx.dyn->find(name);
141
- return v ? *v : Value{};
141
+ if (v) return *v;
142
+ // Warns like any other unknown name. This used to return silently
143
+ // for EVERY $-read, on the strength of BOSL2's get_slop() --
144
+ // `is_undef($slop) ? 0 : $slop` with $slop never assigned -- being
145
+ // silent in the reference. It is, but for two narrower reasons: the
146
+ // probe does not warn about its own argument (undefProbeTarget), and
147
+ // the else branch never runs when is_undef() is true. A plain
148
+ // `echo($nope)` DOES warn there, in every context checked --
149
+ // assignment, function body, module body, comparison. Real BOSL2
150
+ // (gears, threading, rounded_prism, diff/attach, path_sweep) emits
151
+ // none of these, because it guards its own $-reads.
152
+ if (warnIfUndef) warn("Ignoring unknown variable '" + name + "'", position);
153
+ return Value{};
142
154
  }
143
155
 
144
156
  if (name == "PI") return Value{std::numbers::pi};
@@ -52,21 +52,34 @@ TEST(ExprEvalIdentifiers, UnknownVariableWarnsAndIsUndef) {
52
52
  EXPECT_NE(lastWarning.find("Ignoring unknown variable 'nope'"), std::string::npos);
53
53
  }
54
54
 
55
- TEST(ExprEvalIdentifiers, UndefinedDollarVariableIsUndefWithNoWarning) {
56
- // Found via BOSL2's constants.scad: `function get_slop() = is_undef($slop)
57
- // ? 0 : $slop;` with $slop never assigned anywhere in the script. Real
58
- // OpenSCAD.app produces no warning at all -- $-prefixed names are a
59
- // separate, always-implicitly-available namespace, never requiring a
60
- // scope declaration the way a bare identifier does. This port's
61
- // bytecode VM (Op::LoadDyn, bytecode_vm.cpp) already got this right by
62
- // construction; the plain interpreter incorrectly fell through to the
63
- // same "Ignoring unknown variable" path a genuinely undeclared bare
64
- // identifier hits.
55
+ TEST(ExprEvalIdentifiers, UndefinedDollarVariableIsUndefAndWarns) {
56
+ // A never-assigned $-name reads as undef and warns, exactly like a
57
+ // never-declared bare identifier.
58
+ //
59
+ // This test used to assert the opposite, on the strength of BOSL2's
60
+ // constants.scad -- `function get_slop() = is_undef($slop) ? 0 : $slop;`
61
+ // with $slop never assigned -- being silent in real OpenSCAD. It is,
62
+ // but not because $-reads are exempt: is_undef() does not warn about the
63
+ // name it probes, and the else branch never runs while is_undef() is
64
+ // true. Measured against the reference, a PLAIN read warns in every
65
+ // context tried -- echo, assignment, function body, module body,
66
+ // comparison -- so the old blanket exemption was over-generalised from
67
+ // one guarded expression.
65
68
  std::string lastWarning;
66
69
  Evaluator ev([&](const std::string& msg) { lastWarning = msg; });
67
70
  Value v = evalSrc("$slop", ev);
68
71
  EXPECT_TRUE(std::holds_alternative<std::monostate>(v));
69
- EXPECT_TRUE(lastWarning.empty());
72
+ EXPECT_NE(lastWarning.find("Ignoring unknown variable '$slop'"), std::string::npos) << lastWarning;
73
+ }
74
+
75
+ TEST(ExprEvalIdentifiers, TheBoslGetSlopIdiomStaysSilent) {
76
+ // The case the old exemption existed for, kept as a test in its own
77
+ // right: it must remain silent through the is_undef() probe alone.
78
+ std::string lastWarning;
79
+ Evaluator ev([&](const std::string& msg) { lastWarning = msg; });
80
+ Value v = evalSrc("is_undef($slop) ? 0 : $slop", ev);
81
+ EXPECT_TRUE(lastWarning.empty()) << lastWarning;
82
+ EXPECT_EQ(std::get<double>(v), 0.0);
70
83
  }
71
84
 
72
85
  TEST(ExprEvalIdentifiers, ResolvesViaScopeFallbackWhenNotEagerlyBound) {
@@ -33,8 +33,9 @@ std::vector<std::string> echoesFrom(const std::string& src) {
33
33
 
34
34
  // Every feature name the docs promise. A typo in either direction -- here or
35
35
  // in featureLevels() -- shows up as a 0.
36
- const char* kFeatures[] = {"separate-children", "minkowski-diff", "sphere-styles", "export-name",
37
- "simplify-op", "expr-import", "object-function", "roof-op"};
36
+ const char* kFeatures[] = {"separate-children", "minkowski-diff", "sphere-styles", "export-name",
37
+ "simplify-op", "expr-import", "object-function", "roof-op",
38
+ "render-expr", "polyhedron-vnf"};
38
39
 
39
40
  } // namespace
40
41