kumi 0.0.37 → 0.1.0
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +39 -58
- data/.rubocop_todo.yml +931 -0
- data/CHANGELOG.md +37 -0
- data/README.md +3 -0
- data/data/functions/core/arithmetic.yaml +48 -0
- data/data/functions/core/conversion.yaml +13 -0
- data/data/functions/core/select.yaml +1 -1
- data/data/functions/core/stencil.yaml +32 -0
- data/data/kernels/javascript/agg/numeric.yaml +1 -0
- data/data/kernels/javascript/core/arithmetic.yaml +24 -0
- data/data/kernels/javascript/core/coercion.yaml +18 -4
- data/data/kernels/ruby/agg/numeric.yaml +2 -1
- data/data/kernels/ruby/core/arithmetic.yaml +31 -3
- data/data/kernels/ruby/core/coercion.yaml +8 -0
- data/docs/CROSS_TARGET_SEMANTICS.md +99 -0
- data/docs/FORM_SCHEMA.md +13 -8
- data/docs/FUNCTIONS.md +120 -13
- data/docs/INPUTS.md +164 -0
- data/docs/OUTPUT_SCHEMA.md +12 -8
- data/docs/PASSES.md +76 -0
- data/docs/PASS_AUDIT.md +179 -0
- data/docs/PORTAL.md +39 -0
- data/docs/SYNTAX.md +84 -121
- data/docs/SYNTAX_NOTES.md +612 -0
- data/docs/UNSAT_DETECTION.md +2 -2
- data/docs/functions-reference.json +276 -84
- data/docs/pairwise-design.md +125 -0
- data/docs/superpowers/plans/2026-06-12-pass-conventions-and-dedup.md +1559 -0
- data/docs/superpowers/specs/2026-06-12-pass-conventions-and-dedup-design.md +136 -0
- data/golden/algebraic_identities/expected/ast.txt +66 -0
- data/golden/algebraic_identities/expected/dfir.txt +47 -0
- data/golden/algebraic_identities/expected/dfir_optimized.txt +59 -0
- data/golden/algebraic_identities/expected/input_plan.txt +7 -0
- data/golden/algebraic_identities/expected/loopir.txt +61 -0
- data/golden/algebraic_identities/expected/nast.txt +51 -0
- data/golden/algebraic_identities/expected/runtime.json +24 -0
- data/golden/algebraic_identities/expected/schema_javascript.mjs +89 -0
- data/golden/algebraic_identities/expected/schema_ruby.rb +84 -0
- data/golden/algebraic_identities/expected/snast.txt +51 -0
- data/golden/algebraic_identities/expected/vecir.txt +47 -0
- data/golden/algebraic_identities/input.json +6 -0
- data/golden/algebraic_identities/schema.kumi +25 -0
- data/golden/array_element/expected/loopir.txt +1 -2
- data/golden/array_element/expected/runtime.json +5 -0
- data/golden/array_element/expected/schema_javascript.mjs +1 -2
- data/golden/array_element/expected/schema_ruby.rb +2 -3
- data/golden/array_index/expected/runtime.json +54 -0
- data/golden/array_index/expected/schema_ruby.rb +1 -1
- data/golden/array_operations/{expected.json → expected/runtime.json} +5 -15
- data/golden/array_operations/expected/schema_ruby.rb +1 -1
- data/golden/cascade_logic/expected/runtime.json +3 -0
- data/golden/cascade_logic/expected/schema_ruby.rb +1 -1
- data/golden/cascade_reuse_peephole/expected/ast.txt +193 -0
- data/golden/cascade_reuse_peephole/expected/dfir.txt +124 -0
- data/golden/cascade_reuse_peephole/expected/dfir_optimized.txt +320 -0
- data/golden/cascade_reuse_peephole/expected/input_plan.txt +2 -0
- data/golden/cascade_reuse_peephole/expected/loopir.txt +302 -0
- data/golden/cascade_reuse_peephole/expected/nast.txt +188 -0
- data/golden/cascade_reuse_peephole/expected/runtime.json +8 -0
- data/golden/cascade_reuse_peephole/expected/schema_javascript.mjs +335 -0
- data/golden/cascade_reuse_peephole/expected/schema_ruby.rb +337 -0
- data/golden/cascade_reuse_peephole/expected/snast.txt +188 -0
- data/golden/cascade_reuse_peephole/expected/vecir.txt +302 -0
- data/golden/cascade_reuse_peephole/input.json +4 -0
- data/golden/cascade_reuse_peephole/schema.kumi +31 -0
- data/golden/chained_fusion/expected/loopir.txt +5 -13
- data/golden/chained_fusion/expected/runtime.json +45 -0
- data/golden/chained_fusion/expected/schema_javascript.mjs +5 -13
- data/golden/chained_fusion/expected/schema_ruby.rb +6 -14
- data/golden/cross_import/expected/ast.txt +21 -0
- data/golden/cross_import/expected/dfir.txt +3 -0
- data/golden/cross_import/expected/dfir_optimized.txt +8 -0
- data/golden/cross_import/expected/input_plan.txt +5 -0
- data/golden/cross_import/expected/loopir.txt +14 -0
- data/golden/cross_import/expected/nast.txt +7 -0
- data/golden/cross_import/expected/runtime.json +10 -0
- data/golden/cross_import/expected/schema_javascript.mjs +19 -0
- data/golden/cross_import/expected/schema_ruby.rb +19 -0
- data/golden/cross_import/expected/snast.txt +7 -0
- data/golden/cross_import/expected/vecir.txt +8 -0
- data/golden/cross_import/input.json +1 -0
- data/golden/cross_import/schema.kumi +15 -0
- data/golden/cross_let/expected/ast.txt +62 -0
- data/golden/cross_let/expected/dfir.txt +35 -0
- data/golden/cross_let/expected/dfir_optimized.txt +51 -0
- data/golden/cross_let/expected/input_plan.txt +5 -0
- data/golden/cross_let/expected/loopir.txt +100 -0
- data/golden/cross_let/expected/nast.txt +46 -0
- data/golden/cross_let/expected/runtime.json +61 -0
- data/golden/cross_let/expected/schema_javascript.mjs +136 -0
- data/golden/cross_let/expected/schema_ruby.rb +123 -0
- data/golden/cross_let/expected/snast.txt +46 -0
- data/golden/cross_let/expected/vecir.txt +51 -0
- data/golden/cross_let/input.json +7 -0
- data/golden/cross_let/schema.kumi +25 -0
- data/golden/decimal_explicit/expected/dfir.txt +6 -6
- data/golden/decimal_explicit/expected/dfir_optimized.txt +6 -6
- data/golden/decimal_explicit/expected/loopir.txt +6 -6
- data/golden/decimal_explicit/expected/runtime.json +10 -0
- data/golden/decimal_explicit/expected/schema_ruby.rb +1 -1
- data/golden/decimal_explicit/expected/snast.txt +9 -9
- data/golden/decimal_explicit/expected/vecir.txt +6 -6
- data/golden/element_arrays/expected/loopir.txt +6 -13
- data/golden/element_arrays/expected/runtime.json +117 -0
- data/golden/element_arrays/expected/schema_javascript.mjs +7 -14
- data/golden/element_arrays/expected/schema_ruby.rb +8 -15
- data/golden/empty_and_null_inputs/expected/loopir.txt +4 -9
- data/golden/empty_and_null_inputs/expected/runtime.json +8 -0
- data/golden/empty_and_null_inputs/expected/schema_javascript.mjs +5 -10
- data/golden/empty_and_null_inputs/expected/schema_ruby.rb +6 -11
- data/golden/example_xpto/expected/runtime.json +4 -0
- data/golden/example_xpto/expected/schema_ruby.rb +1 -1
- data/golden/function_overload/expected/runtime.json +8 -0
- data/golden/function_overload/expected/schema_ruby.rb +1 -1
- data/golden/game_of_life/expected/loopir.txt +1 -58
- data/golden/game_of_life/expected/runtime.json +418 -0
- data/golden/game_of_life/expected/schema_javascript.mjs +1 -58
- data/golden/game_of_life/expected/schema_ruby.rb +2 -59
- data/golden/hash_keys/expected/runtime.json +20 -0
- data/golden/hash_keys/expected/schema_ruby.rb +1 -1
- data/golden/hash_value/expected/runtime.json +19 -0
- data/golden/hash_value/expected/schema_ruby.rb +1 -1
- data/golden/hierarchical_complex/expected/loopir.txt +0 -4
- data/golden/hierarchical_complex/expected/runtime.json +16 -0
- data/golden/hierarchical_complex/expected/schema_javascript.mjs +0 -4
- data/golden/hierarchical_complex/expected/schema_ruby.rb +1 -5
- data/golden/inline_rename_scope_leak/expected/loopir.txt +1 -5
- data/golden/inline_rename_scope_leak/expected/runtime.json +10 -0
- data/golden/inline_rename_scope_leak/expected/schema_javascript.mjs +3 -7
- data/golden/inline_rename_scope_leak/expected/schema_ruby.rb +4 -8
- data/golden/input_reference/expected/dfir.txt +2 -2
- data/golden/input_reference/expected/dfir_optimized.txt +2 -2
- data/golden/input_reference/expected/loopir.txt +2 -5
- data/golden/input_reference/expected/runtime.json +15 -0
- data/golden/input_reference/expected/schema_javascript.mjs +3 -6
- data/golden/input_reference/expected/schema_ruby.rb +4 -7
- data/golden/input_reference/expected/snast.txt +1 -1
- data/golden/input_reference/expected/vecir.txt +2 -2
- data/golden/interleaved_fusion/expected/loopir.txt +5 -10
- data/golden/interleaved_fusion/expected/runtime.json +37 -0
- data/golden/interleaved_fusion/expected/schema_javascript.mjs +5 -10
- data/golden/interleaved_fusion/expected/schema_ruby.rb +6 -11
- data/golden/let_inline/expected/runtime.json +6 -0
- data/golden/let_inline/expected/schema_ruby.rb +2 -2
- data/golden/loop_fusion/expected/loopir.txt +3 -7
- data/golden/loop_fusion/expected/runtime.json +29 -0
- data/golden/loop_fusion/expected/schema_javascript.mjs +3 -7
- data/golden/loop_fusion/expected/schema_ruby.rb +4 -8
- data/golden/min_max_empty_arrays/expected/loopir.txt +5 -12
- data/golden/min_max_empty_arrays/expected/runtime.json +16 -0
- data/golden/min_max_empty_arrays/expected/schema_javascript.mjs +7 -14
- data/golden/min_max_empty_arrays/expected/schema_ruby.rb +10 -17
- data/golden/min_reduce_scope/expected/loopir.txt +3 -7
- data/golden/min_reduce_scope/expected/runtime.json +11 -0
- data/golden/min_reduce_scope/expected/schema_javascript.mjs +4 -8
- data/golden/min_reduce_scope/expected/schema_ruby.rb +5 -9
- data/golden/mixed_dimensions/expected/loopir.txt +2 -5
- data/golden/mixed_dimensions/expected/runtime.json +34 -0
- data/golden/mixed_dimensions/expected/schema_javascript.mjs +3 -6
- data/golden/mixed_dimensions/expected/schema_ruby.rb +4 -7
- data/golden/mlp_backprop/expected/ast.txt +147 -0
- data/golden/mlp_backprop/expected/dfir.txt +99 -0
- data/golden/mlp_backprop/expected/dfir_optimized.txt +374 -0
- data/golden/mlp_backprop/expected/input_plan.txt +17 -0
- data/golden/mlp_backprop/expected/loopir.txt +440 -0
- data/golden/mlp_backprop/expected/nast.txt +120 -0
- data/golden/mlp_backprop/expected/runtime.json +43 -0
- data/golden/mlp_backprop/expected/schema_javascript.mjs +516 -0
- data/golden/mlp_backprop/expected/schema_ruby.rb +484 -0
- data/golden/mlp_backprop/expected/snast.txt +120 -0
- data/golden/mlp_backprop/expected/vecir.txt +374 -0
- data/golden/mlp_backprop/input.json +8 -0
- data/golden/mlp_backprop/schema.kumi +43 -0
- data/golden/multi_loop_reduction/expected/loopir.txt +2 -6
- data/golden/multi_loop_reduction/expected/runtime.json +5 -0
- data/golden/multi_loop_reduction/expected/schema_javascript.mjs +4 -8
- data/golden/multi_loop_reduction/expected/schema_ruby.rb +5 -9
- data/golden/multirank_hoisting/expected/loopir.txt +24 -42
- data/golden/multirank_hoisting/expected/runtime.json +47 -0
- data/golden/multirank_hoisting/expected/schema_javascript.mjs +24 -45
- data/golden/multirank_hoisting/expected/schema_ruby.rb +25 -43
- data/golden/nested_hash/expected/runtime.json +3 -0
- data/golden/nested_hash/expected/schema_ruby.rb +1 -1
- data/golden/outer_let/expected/ast.txt +106 -0
- data/golden/outer_let/expected/dfir.txt +66 -0
- data/golden/outer_let/expected/dfir_optimized.txt +145 -0
- data/golden/outer_let/expected/input_plan.txt +19 -0
- data/golden/outer_let/expected/loopir.txt +166 -0
- data/golden/outer_let/expected/nast.txt +78 -0
- data/golden/outer_let/expected/runtime.json +89 -0
- data/golden/outer_let/expected/schema_javascript.mjs +220 -0
- data/golden/outer_let/expected/schema_ruby.rb +201 -0
- data/golden/outer_let/expected/snast.txt +78 -0
- data/golden/outer_let/expected/vecir.txt +145 -0
- data/golden/outer_let/input.json +9 -0
- data/golden/outer_let/schema.kumi +32 -0
- data/golden/pairwise_cross/expected/ast.txt +62 -0
- data/golden/pairwise_cross/expected/dfir.txt +36 -0
- data/golden/pairwise_cross/expected/dfir_optimized.txt +50 -0
- data/golden/pairwise_cross/expected/input_plan.txt +8 -0
- data/golden/pairwise_cross/expected/loopir.txt +84 -0
- data/golden/pairwise_cross/expected/nast.txt +46 -0
- data/golden/pairwise_cross/expected/runtime.json +80 -0
- data/golden/pairwise_cross/expected/schema_javascript.mjs +113 -0
- data/golden/pairwise_cross/expected/schema_ruby.rb +104 -0
- data/golden/pairwise_cross/expected/snast.txt +46 -0
- data/golden/pairwise_cross/expected/vecir.txt +50 -0
- data/golden/pairwise_cross/input.json +8 -0
- data/golden/pairwise_cross/schema.kumi +18 -0
- data/golden/reduction_broadcast/expected/loopir.txt +4 -10
- data/golden/reduction_broadcast/expected/runtime.json +14 -0
- data/golden/reduction_broadcast/expected/schema_javascript.mjs +4 -10
- data/golden/reduction_broadcast/expected/schema_ruby.rb +5 -11
- data/golden/roll/expected/loopir.txt +4 -8
- data/golden/roll/expected/runtime.json +26 -0
- data/golden/roll/expected/schema_javascript.mjs +4 -8
- data/golden/roll/expected/schema_ruby.rb +5 -9
- data/golden/schema_imports_broadcasting_with_imports/expected/dfir.txt +3 -3
- data/golden/schema_imports_broadcasting_with_imports/expected/dfir_optimized.txt +3 -3
- data/golden/schema_imports_broadcasting_with_imports/expected/loopir.txt +3 -4
- data/golden/schema_imports_broadcasting_with_imports/expected/runtime.json +11 -0
- data/golden/schema_imports_broadcasting_with_imports/expected/schema_javascript.mjs +2 -3
- data/golden/schema_imports_broadcasting_with_imports/expected/schema_ruby.rb +3 -4
- data/golden/schema_imports_broadcasting_with_imports/expected/snast.txt +5 -5
- data/golden/schema_imports_broadcasting_with_imports/expected/vecir.txt +3 -3
- data/golden/schema_imports_complex_order_calc/expected/dfir.txt +20 -20
- data/golden/schema_imports_complex_order_calc/expected/dfir_optimized.txt +60 -60
- data/golden/schema_imports_complex_order_calc/expected/loopir.txt +34 -47
- data/golden/schema_imports_complex_order_calc/expected/runtime.json +33 -0
- data/golden/schema_imports_complex_order_calc/expected/schema_javascript.mjs +16 -29
- data/golden/schema_imports_complex_order_calc/expected/schema_ruby.rb +17 -30
- data/golden/schema_imports_complex_order_calc/expected/snast.txt +26 -26
- data/golden/schema_imports_complex_order_calc/expected/vecir.txt +60 -60
- data/golden/schema_imports_composed_order/expected/dfir.txt +3 -3
- data/golden/schema_imports_composed_order/expected/dfir_optimized.txt +6 -6
- data/golden/schema_imports_composed_order/expected/loopir.txt +6 -6
- data/golden/schema_imports_composed_order/expected/runtime.json +9 -0
- data/golden/schema_imports_composed_order/expected/schema_ruby.rb +1 -1
- data/golden/schema_imports_composed_order/expected/snast.txt +5 -5
- data/golden/schema_imports_composed_order/expected/vecir.txt +6 -6
- data/golden/schema_imports_discount_with_tax/expected/dfir.txt +7 -7
- data/golden/schema_imports_discount_with_tax/expected/dfir_optimized.txt +10 -10
- data/golden/schema_imports_discount_with_tax/expected/loopir.txt +10 -10
- data/golden/schema_imports_discount_with_tax/expected/runtime.json +10 -0
- data/golden/schema_imports_discount_with_tax/expected/schema_ruby.rb +1 -1
- data/golden/schema_imports_discount_with_tax/expected/snast.txt +11 -11
- data/golden/schema_imports_discount_with_tax/expected/vecir.txt +10 -10
- data/golden/schema_imports_line_items/expected/dfir.txt +1 -1
- data/golden/schema_imports_line_items/expected/dfir_optimized.txt +3 -3
- data/golden/schema_imports_line_items/expected/loopir.txt +3 -6
- data/golden/schema_imports_line_items/expected/runtime.json +8 -0
- data/golden/schema_imports_line_items/expected/schema_javascript.mjs +4 -7
- data/golden/schema_imports_line_items/expected/schema_ruby.rb +5 -8
- data/golden/schema_imports_line_items/expected/snast.txt +1 -1
- data/golden/schema_imports_line_items/expected/vecir.txt +3 -3
- data/golden/schema_imports_multiple/expected/dfir.txt +7 -7
- data/golden/schema_imports_multiple/expected/dfir_optimized.txt +13 -13
- data/golden/schema_imports_multiple/expected/loopir.txt +13 -13
- data/golden/schema_imports_multiple/expected/runtime.json +10 -0
- data/golden/schema_imports_multiple/expected/schema_ruby.rb +1 -1
- data/golden/schema_imports_multiple/expected/snast.txt +11 -11
- data/golden/schema_imports_multiple/expected/vecir.txt +13 -13
- data/golden/schema_imports_nested_expressions/expected/dfir.txt +4 -4
- data/golden/schema_imports_nested_expressions/expected/dfir_optimized.txt +6 -6
- data/golden/schema_imports_nested_expressions/expected/loopir.txt +6 -6
- data/golden/schema_imports_nested_expressions/expected/runtime.json +8 -0
- data/golden/schema_imports_nested_expressions/expected/schema_ruby.rb +1 -1
- data/golden/schema_imports_nested_expressions/expected/snast.txt +6 -6
- data/golden/schema_imports_nested_expressions/expected/vecir.txt +6 -6
- data/golden/schema_imports_nested_with_reductions/expected/dfir.txt +6 -6
- data/golden/schema_imports_nested_with_reductions/expected/dfir_optimized.txt +15 -15
- data/golden/schema_imports_nested_with_reductions/expected/loopir.txt +7 -14
- data/golden/schema_imports_nested_with_reductions/expected/runtime.json +12 -0
- data/golden/schema_imports_nested_with_reductions/expected/schema_javascript.mjs +8 -15
- data/golden/schema_imports_nested_with_reductions/expected/schema_ruby.rb +9 -16
- data/golden/schema_imports_nested_with_reductions/expected/snast.txt +6 -6
- data/golden/schema_imports_nested_with_reductions/expected/vecir.txt +15 -15
- data/golden/schema_imports_with_imports/expected/dfir.txt +3 -3
- data/golden/schema_imports_with_imports/expected/dfir_optimized.txt +3 -3
- data/golden/schema_imports_with_imports/expected/loopir.txt +3 -3
- data/golden/schema_imports_with_imports/expected/runtime.json +7 -0
- data/golden/schema_imports_with_imports/expected/schema_ruby.rb +1 -1
- data/golden/schema_imports_with_imports/expected/snast.txt +5 -5
- data/golden/schema_imports_with_imports/expected/vecir.txt +3 -3
- data/golden/shift/expected/loopir.txt +4 -8
- data/golden/shift/expected/runtime.json +38 -0
- data/golden/shift/expected/schema_javascript.mjs +4 -8
- data/golden/shift/expected/schema_ruby.rb +5 -9
- data/golden/shift_2d/expected/loopir.txt +8 -16
- data/golden/shift_2d/expected/runtime.json +146 -0
- data/golden/shift_2d/expected/schema_javascript.mjs +8 -16
- data/golden/shift_2d/expected/schema_ruby.rb +9 -17
- data/golden/simple_math/expected/runtime.json +10 -0
- data/golden/simple_math/expected/schema_ruby.rb +1 -1
- data/golden/streaming_basics/expected/loopir.txt +0 -3
- data/golden/streaming_basics/expected/runtime.json +25 -0
- data/golden/streaming_basics/expected/schema_javascript.mjs +3 -6
- data/golden/streaming_basics/expected/schema_ruby.rb +4 -7
- data/golden/transcendentals/expected/ast.txt +48 -0
- data/golden/transcendentals/expected/dfir.txt +31 -0
- data/golden/transcendentals/expected/dfir_optimized.txt +34 -0
- data/golden/transcendentals/expected/input_plan.txt +5 -0
- data/golden/transcendentals/expected/loopir.txt +46 -0
- data/golden/transcendentals/expected/nast.txt +34 -0
- data/golden/transcendentals/expected/runtime.json +27 -0
- data/golden/transcendentals/expected/schema_javascript.mjs +66 -0
- data/golden/transcendentals/expected/schema_ruby.rb +63 -0
- data/golden/transcendentals/expected/snast.txt +34 -0
- data/golden/transcendentals/expected/vecir.txt +34 -0
- data/golden/transcendentals/input.json +1 -0
- data/golden/transcendentals/schema.kumi +16 -0
- data/golden/tuples/expected/dfir.txt +4 -4
- data/golden/tuples/expected/runtime.json +12 -0
- data/golden/tuples/expected/schema_ruby.rb +1 -1
- data/golden/tuples_and_arrays/expected/dfir.txt +1 -1
- data/golden/tuples_and_arrays/expected/loopir.txt +0 -1
- data/golden/tuples_and_arrays/expected/runtime.json +13 -0
- data/golden/tuples_and_arrays/expected/schema_javascript.mjs +1 -2
- data/golden/tuples_and_arrays/expected/schema_ruby.rb +2 -3
- data/golden/type_promotion/expected/ast.txt +75 -0
- data/golden/type_promotion/expected/dfir.txt +38 -0
- data/golden/type_promotion/expected/dfir_optimized.txt +51 -0
- data/golden/type_promotion/expected/input_plan.txt +9 -0
- data/golden/type_promotion/expected/loopir.txt +57 -0
- data/golden/type_promotion/expected/nast.txt +57 -0
- data/golden/type_promotion/expected/runtime.json +23 -0
- data/golden/type_promotion/expected/schema_javascript.mjs +90 -0
- data/golden/type_promotion/expected/schema_ruby.rb +89 -0
- data/golden/type_promotion/expected/snast.txt +57 -0
- data/golden/type_promotion/expected/vecir.txt +51 -0
- data/golden/type_promotion/input.json +11 -0
- data/golden/type_promotion/schema.kumi +30 -0
- data/golden/us_tax_2024/expected/dfir.txt +6 -6
- data/golden/us_tax_2024/expected/loopir.txt +108 -217
- data/golden/us_tax_2024/expected/runtime.json +423 -0
- data/golden/us_tax_2024/expected/schema_javascript.mjs +108 -235
- data/golden/us_tax_2024/expected/schema_ruby.rb +109 -218
- data/golden/vector_make_object/expected/schema_ruby.rb +1 -1
- data/golden/with_constants/expected/schema_ruby.rb +1 -1
- data/lib/kumi/analyzer.rb +29 -34
- data/lib/kumi/configuration.rb +31 -0
- data/lib/kumi/core/analyzer/binder.rb +2 -2
- data/lib/kumi/core/analyzer/macro_expander.rb +3 -3
- data/lib/kumi/core/analyzer/pass_failure.rb +1 -1
- data/lib/kumi/core/analyzer/pass_manager.rb +211 -100
- data/lib/kumi/core/analyzer/passes/attach_anchors_pass.rb +44 -15
- data/lib/kumi/core/analyzer/passes/attach_terminal_info_pass.rb +6 -20
- data/lib/kumi/core/analyzer/passes/codegen/loop/js/emitter.rb +235 -35
- data/lib/kumi/core/analyzer/passes/codegen/loop/ruby/emitter.rb +6 -3
- data/lib/kumi/core/analyzer/passes/codegen/loop_js_pass.rb +3 -0
- data/lib/kumi/core/analyzer/passes/codegen/loop_ruby_pass.rb +3 -0
- data/lib/kumi/core/analyzer/passes/constant_folding_pass.rb +3 -0
- data/lib/kumi/core/analyzer/passes/contract_checker_pass.rb +1 -1
- data/lib/kumi/core/analyzer/passes/declaration_validator_pass.rb +83 -0
- data/lib/kumi/core/analyzer/passes/{dependency_resolver.rb → dependency_resolver_pass.rb} +8 -6
- data/lib/kumi/core/analyzer/passes/df_validate_pass.rb +3 -13
- data/lib/kumi/core/analyzer/passes/import_analysis_pass.rb +7 -2
- data/lib/kumi/core/analyzer/passes/input_access_planner_pass.rb +4 -28
- data/lib/kumi/core/analyzer/passes/{input_collector.rb → input_collector_pass.rb} +30 -3
- data/lib/kumi/core/analyzer/passes/input_form_schema_pass.rb +4 -1
- data/lib/kumi/core/analyzer/passes/ir_execution_schedule_pass.rb +4 -2
- data/lib/kumi/core/analyzer/passes/ir_lower_pass.rb +35 -0
- data/lib/kumi/core/analyzer/passes/ir_validate_pass.rb +43 -0
- data/lib/kumi/core/analyzer/passes/{load_input_cse.rb → load_input_cse_pass.rb} +1 -1
- data/lib/kumi/core/analyzer/passes/loop/lower_pass.rb +23 -10
- data/lib/kumi/core/analyzer/passes/loop_validate_pass.rb +2 -10
- data/lib/kumi/core/analyzer/passes/lower_to_dfir_pass.rb +4 -2
- data/lib/kumi/core/analyzer/passes/{name_indexer.rb → name_indexer_pass.rb} +3 -7
- data/lib/kumi/core/analyzer/passes/nast_dimensional_analyzer_pass.rb +174 -23
- data/lib/kumi/core/analyzer/passes/normalize_to_nast_pass.rb +19 -3
- data/lib/kumi/core/analyzer/passes/output_schema_pass.rb +3 -0
- data/lib/kumi/core/analyzer/passes/pass_base.rb +78 -5
- data/lib/kumi/core/analyzer/passes/precompute_access_paths_pass.rb +7 -1
- data/lib/kumi/core/analyzer/passes/{semantic_constraint_validator.rb → semantic_constraint_validator_pass.rb} +7 -14
- data/lib/kumi/core/analyzer/passes/snast_pass.rb +22 -48
- data/lib/kumi/core/analyzer/passes/{toposorter.rb → toposorter_pass.rb} +4 -5
- data/lib/kumi/core/analyzer/passes/{unsat_detector.rb → unsat_detector_pass.rb} +4 -15
- data/lib/kumi/core/analyzer/passes/vec/lower_pass.rb +6 -8
- data/lib/kumi/core/analyzer/passes/vec_validate_pass.rb +2 -10
- data/lib/kumi/core/analyzer/structs/input_meta.rb +1 -1
- data/lib/kumi/core/compiler/access_builder.rb +1 -1
- data/lib/kumi/core/compiler/access_codegen.rb +1 -1
- data/lib/kumi/core/compiler/access_emit/base.rb +1 -1
- data/lib/kumi/core/compiler/access_planner_v2.rb +2 -2
- data/lib/kumi/core/compiler/accessors/each_indexed_accessor.rb +1 -1
- data/lib/kumi/core/compiler/accessors/materialize_accessor.rb +1 -1
- data/lib/kumi/core/compiler/accessors/ravel_accessor.rb +1 -1
- data/lib/kumi/core/compiler/accessors/read_accessor.rb +1 -1
- data/lib/kumi/core/error_reporter.rb +6 -11
- data/lib/kumi/core/errors.rb +37 -11
- data/lib/kumi/core/expression_renderer.rb +97 -0
- data/lib/kumi/core/functions/overload_resolver.rb +79 -149
- data/lib/kumi/core/ir/execution_engine/combinators.rb +16 -10
- data/lib/kumi/core/nast.rb +24 -0
- data/lib/kumi/core/ruby_parser/dsl.rb +12 -2
- data/lib/kumi/core/ruby_parser/dsl_cascade_builder.rb +14 -12
- data/lib/kumi/core/ruby_parser/guard_rails.rb +15 -1
- data/lib/kumi/core/ruby_parser/input_builder.rb +55 -48
- data/lib/kumi/core/ruby_parser/parser.rb +25 -17
- data/lib/kumi/core/ruby_parser/schema_builder.rb +43 -15
- data/lib/kumi/core/ruby_parser/sugar.rb +0 -86
- data/lib/kumi/core/types/dtype_rule.rb +76 -0
- data/lib/kumi/core/types/normalizer.rb +2 -2
- data/lib/kumi/core/types/profile.rb +82 -0
- data/lib/kumi/core/types/registry.rb +87 -0
- data/lib/kumi/core/types/system.rb +96 -0
- data/lib/kumi/core/types/value_objects.rb +14 -13
- data/lib/kumi/core/types.rb +41 -34
- data/lib/kumi/dev/golden_runtime.rb +163 -0
- data/lib/kumi/dev/golden_v2.rb +30 -5
- data/lib/kumi/dev/pretty_printer.rb +40 -73
- data/lib/kumi/frontends/ruby.rb +52 -12
- data/lib/kumi/frontends/source_frame.rb +71 -0
- data/lib/kumi/frontends/text.rb +4 -48
- data/lib/kumi/function_registry/loader.rb +101 -0
- data/lib/kumi/function_registry.rb +150 -0
- data/lib/kumi/ir/base/block.rb +11 -2
- data/lib/kumi/ir/base/builder.rb +1 -1
- data/lib/kumi/ir/base/function.rb +2 -4
- data/lib/kumi/ir/base/instruction.rb +10 -23
- data/lib/kumi/ir/base/module.rb +5 -4
- data/lib/kumi/ir/buf/lower.rb +1 -2
- data/lib/kumi/ir/df/access_contract.rb +3 -5
- data/lib/kumi/ir/df/import_inliner.rb +2 -5
- data/lib/kumi/ir/df/lower.rb +72 -51
- data/lib/kumi/ir/df/ops/axis_cross.rb +34 -0
- data/lib/kumi/ir/df/ops/axis_outer.rb +35 -0
- data/lib/kumi/ir/df/passes/broadcast_simplify.rb +1 -2
- data/lib/kumi/ir/df/passes/cse.rb +8 -3
- data/lib/kumi/ir/df/passes/decl_inlining.rb +5 -26
- data/lib/kumi/ir/df/passes/import_inlining.rb +42 -36
- data/lib/kumi/ir/df/passes/load_dedup.rb +9 -4
- data/lib/kumi/ir/df/passes/stencil_cse.rb +2 -5
- data/lib/kumi/ir/df/passes/support/instruction_cloner.rb +41 -14
- data/lib/kumi/ir/df/passes/tuple_fold_canonicalization.rb +8 -3
- data/lib/kumi/ir/df/passes/tuple_to_object.rb +1 -2
- data/lib/kumi/ir/df/validator.rb +3 -3
- data/lib/kumi/ir/df.rb +8 -0
- data/lib/kumi/ir/loop/lower.rb +231 -37
- data/lib/kumi/ir/loop/passes/array_contraction.rb +124 -0
- data/lib/kumi/ir/loop/passes/copy_cleanup.rb +112 -0
- data/lib/kumi/ir/loop/passes/loop_fusion.rb +125 -0
- data/lib/kumi/ir/loop/passes/support/structure.rb +100 -0
- data/lib/kumi/ir/loop/passes.rb +14 -0
- data/lib/kumi/ir/loop/pipeline.rb +9 -1
- data/lib/kumi/ir/loop/validator.rb +29 -4
- data/lib/kumi/ir/loop.rb +1 -0
- data/lib/kumi/ir/passes/register_generator.rb +32 -0
- data/lib/kumi/ir/testing/snast_factory.rb +2 -4
- data/lib/kumi/ir/vec/lower.rb +17 -7
- data/lib/kumi/ir/vec/ops/core_ops.rb +41 -0
- data/lib/kumi/ir/vec/passes/axis_canonicalization.rb +1 -2
- data/lib/kumi/ir/vec/passes/constant_propagation.rb +75 -47
- data/lib/kumi/ir/vec/passes/dce.rb +2 -5
- data/lib/kumi/ir/vec/passes/gvn.rb +8 -3
- data/lib/kumi/ir/vec/passes/peephole_simplify.rb +30 -13
- data/lib/kumi/ir/vec/passes/stencil_detection.rb +1 -2
- data/lib/kumi/ir/vec/passes/support/algebraic_identities.rb +70 -0
- data/lib/kumi/ir/vec/passes/support/instruction_cloner.rb +17 -3
- data/lib/kumi/ir/vec/validator.rb +26 -6
- data/lib/kumi/schema.rb +14 -10
- data/lib/kumi/schema_metadata/printer.rb +111 -0
- data/lib/kumi/schema_metadata.rb +289 -0
- data/lib/kumi/syntax/location.rb +14 -1
- data/lib/kumi/syntax/root.rb +35 -3
- data/lib/kumi/test_shared_schemas/pairwise.rb +27 -0
- data/lib/kumi/version.rb +1 -1
- data/lib/kumi.rb +3 -5
- data/tasks/docs_portal.rake +135 -0
- metadata +203 -81
- data/golden/array_element/expected.json +0 -5
- data/golden/array_index/expected.json +0 -5
- data/golden/cascade_logic/expected.json +0 -5
- data/golden/chained_fusion/expected.json +0 -45
- data/golden/decimal_explicit/expected.json +0 -1
- data/golden/element_arrays/expected.json +0 -55
- data/golden/empty_and_null_inputs/expected.json +0 -8
- data/golden/example_xpto/expected.json +0 -4
- data/golden/game_of_life/expected.json +0 -3
- data/golden/hash_keys/expected.json +0 -20
- data/golden/hash_value/expected.json +0 -19
- data/golden/hierarchical_complex/expected.json +0 -34
- data/golden/inline_rename_scope_leak/expected.json +0 -7
- data/golden/input_reference/expected.json +0 -7
- data/golden/interleaved_fusion/expected.json +0 -37
- data/golden/let_inline/expected.json +0 -1
- data/golden/loop_fusion/expected.json +0 -30
- data/golden/min_max_empty_arrays/expected.json +0 -7
- data/golden/min_reduce_scope/expected.json +0 -9
- data/golden/mixed_dimensions/expected.json +0 -6
- data/golden/multi_loop_reduction/expected.json +0 -5
- data/golden/multirank_hoisting/expected.json +0 -15
- data/golden/nested_hash/expected.json +0 -3
- data/golden/reduction_broadcast/expected.json +0 -25
- data/golden/roll/expected.json +0 -6
- data/golden/schema_imports_broadcasting_with_imports/expected.json +0 -4
- data/golden/schema_imports_complex_order_calc/expected.json +0 -12
- data/golden/schema_imports_composed_order/expected.json +0 -6
- data/golden/schema_imports_discount_with_tax/expected.json +0 -7
- data/golden/schema_imports_line_items/expected.json +0 -5
- data/golden/schema_imports_multiple/expected.json +0 -7
- data/golden/schema_imports_nested_expressions/expected.json +0 -5
- data/golden/schema_imports_nested_with_reductions/expected.json +0 -6
- data/golden/schema_imports_with_imports/expected.json +0 -4
- data/golden/shift/expected.json +0 -8
- data/golden/shift_2d/expected.json +0 -15
- data/golden/simple_math/expected.json +0 -1
- data/golden/streaming_basics/expected.json +0 -10
- data/golden/tuples/expected.json +0 -7
- data/golden/tuples_and_arrays/expected.json +0 -18
- data/golden/us_tax_2024/expected.json +0 -120
- data/lib/kumi/core/analyzer/passes/assemble_irv2_pass.rb +0 -130
- data/lib/kumi/core/analyzer/passes/declaration_validator.rb +0 -45
- data/lib/kumi/core/analyzer/passes/lower_to_irv2_pass.rb +0 -197
- data/lib/kumi/core/compiler/access_planner.rb +0 -258
- data/lib/kumi/core/functions/function_spec.rb +0 -17
- data/lib/kumi/core/functions/loader.rb +0 -63
- data/lib/kumi/core/functions/type_categories.rb +0 -44
- data/lib/kumi/core/functions/type_error_reporter.rb +0 -116
- data/lib/kumi/core/functions/type_rules.rb +0 -228
- data/lib/kumi/core/irv2/builder.rb +0 -48
- data/lib/kumi/core/irv2/declaration.rb +0 -28
- data/lib/kumi/core/irv2/module.rb +0 -108
- data/lib/kumi/core/irv2/value.rb +0 -28
- data/lib/kumi/core/types/validator.rb +0 -33
- data/lib/kumi/dev/codegen.rb +0 -194
- data/lib/kumi/dev/golden/generator.rb +0 -109
- data/lib/kumi/dev/golden/reporter.rb +0 -169
- data/lib/kumi/dev/golden/representation.rb +0 -40
- data/lib/kumi/dev/golden/result.rb +0 -106
- data/lib/kumi/dev/golden/runtime_test.rb +0 -131
- data/lib/kumi/dev/golden/suite.rb +0 -147
- data/lib/kumi/dev/golden/value_normalizer.rb +0 -78
- data/lib/kumi/dev/golden/verifier.rb +0 -76
- data/lib/kumi/dev/golden.rb +0 -82
- data/lib/kumi/dev/golden_schema_wrapper.rb +0 -116
- data/lib/kumi/dev/printer/irv2_formatter.rb +0 -163
- data/lib/kumi/kernel_registry.rb +0 -59
- data/lib/kumi/pack/builder.rb +0 -229
- data/lib/kumi/pack.rb +0 -15
- data/lib/kumi/registry_v2/loader.rb +0 -170
- data/lib/kumi/registry_v2.rb +0 -135
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 286dd56c2f026f542f8516df94ee8800c00a30c2578e3686614b317f7fa81aa8
|
|
4
|
+
data.tar.gz: 5932fc0089e91bd52696ec675af5bd73a54e4c9a5fe8bcbc59e1b15dbaa10ac9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 902ebf71c0e2715644993815af6e8a8df89588e1f7b70fdf7b698d509603face1f039700c0d07ab7308367eb1907d5d3240f412ed14c53fc43c9413b1e9c05a4
|
|
7
|
+
data.tar.gz: 5259700defd693865c0467cc93183a39587c77f2d0846536ebebee4d47bacf7ff7f812ca0321e36f8db2fa84dd7e9bf3502a6ad4f4ce4dc34c44fc4aa9bbedd3
|
data/.rubocop.yml
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
inherit_from: .rubocop_todo.yml
|
|
2
|
+
|
|
3
|
+
inherit_mode:
|
|
4
|
+
merge:
|
|
5
|
+
- Exclude
|
|
6
|
+
|
|
1
7
|
plugins:
|
|
2
8
|
- rubocop-performance
|
|
3
9
|
- rubocop-rspec
|
|
@@ -8,14 +14,16 @@ AllCops:
|
|
|
8
14
|
SuggestExtensions: false
|
|
9
15
|
Exclude:
|
|
10
16
|
- 'bin/*'
|
|
17
|
+
- 'cmd/**/*'
|
|
18
|
+
- 'coverage/**/*'
|
|
19
|
+
- 'examples/**/*'
|
|
20
|
+
- 'golden/**/*'
|
|
21
|
+
- 'pkg/**/*'
|
|
11
22
|
- 'spec/fixtures/**/*'
|
|
12
|
-
- '
|
|
13
|
-
- '
|
|
14
|
-
- '
|
|
15
|
-
- 'spec/integration/performance_spec.rb'
|
|
16
|
-
- 'golden/**/*' # Golden test files are generated/expected outputs
|
|
23
|
+
- 'tmp/**/*'
|
|
24
|
+
- 'vendor/**/*'
|
|
25
|
+
- 'vscode-extension/**/*'
|
|
17
26
|
|
|
18
|
-
# Common stylistic choices
|
|
19
27
|
Style/StringLiterals:
|
|
20
28
|
EnforcedStyle: double_quotes
|
|
21
29
|
|
|
@@ -23,100 +31,73 @@ Style/Documentation:
|
|
|
23
31
|
Enabled: false
|
|
24
32
|
|
|
25
33
|
Style/OpenStructUse:
|
|
26
|
-
Enabled: false
|
|
34
|
+
Enabled: false
|
|
27
35
|
|
|
28
|
-
# Naming conventions - allow underscores in symbols for tax codes, etc.
|
|
29
36
|
Naming/VariableNumber:
|
|
30
37
|
Enabled: false
|
|
31
38
|
|
|
32
|
-
# Layout
|
|
33
39
|
Layout/LineLength:
|
|
34
|
-
Max:
|
|
40
|
+
Max: 150
|
|
35
41
|
|
|
36
|
-
#
|
|
42
|
+
# Pass bodies legitimately carry long dispatch methods; relaxed only there.
|
|
37
43
|
Metrics/MethodLength:
|
|
38
|
-
Max:
|
|
44
|
+
Max: 25
|
|
39
45
|
Exclude:
|
|
40
|
-
- 'lib/kumi/
|
|
41
|
-
- 'lib/kumi/
|
|
42
|
-
- '
|
|
43
|
-
- 'lib/kumi/types.rb' # Type system operations
|
|
44
|
-
- 'lib/kumi/types/**/*' # Type system modules
|
|
45
|
-
- 'lib/kumi/runner.rb' # Complex runner methods
|
|
46
|
-
- 'spec/**/*' # Test files often need longer methods
|
|
46
|
+
- 'lib/kumi/core/analyzer/passes/**/*'
|
|
47
|
+
- 'lib/kumi/ir/**/*'
|
|
48
|
+
- 'spec/**/*'
|
|
47
49
|
|
|
48
50
|
Metrics/AbcSize:
|
|
49
51
|
Max: 20
|
|
50
52
|
Exclude:
|
|
51
|
-
- 'lib/kumi/
|
|
52
|
-
- 'lib/kumi/
|
|
53
|
-
- '
|
|
54
|
-
- 'lib/kumi/types.rb' # Type system operations
|
|
55
|
-
- 'lib/kumi/types/**/*' # Type system modules
|
|
56
|
-
- 'lib/kumi/runner.rb' # Complex runner methods
|
|
57
|
-
- 'spec/**/*' # Test files often have higher ABC
|
|
53
|
+
- 'lib/kumi/core/analyzer/passes/**/*'
|
|
54
|
+
- 'lib/kumi/ir/**/*'
|
|
55
|
+
- 'spec/**/*'
|
|
58
56
|
|
|
59
57
|
Metrics/CyclomaticComplexity:
|
|
60
58
|
Max: 10
|
|
61
59
|
Exclude:
|
|
62
|
-
- 'lib/kumi/analyzer/passes/**/*'
|
|
63
|
-
- 'lib/kumi/
|
|
64
|
-
- 'lib/kumi/types/**/*' # Type system modules
|
|
65
|
-
- 'lib/kumi/runner.rb' # Complex runner methods
|
|
60
|
+
- 'lib/kumi/core/analyzer/passes/**/*'
|
|
61
|
+
- 'lib/kumi/ir/**/*'
|
|
66
62
|
|
|
67
63
|
Metrics/PerceivedComplexity:
|
|
68
64
|
Max: 10
|
|
69
65
|
Exclude:
|
|
70
|
-
- 'lib/kumi/analyzer/passes/**/*'
|
|
71
|
-
- 'lib/kumi/
|
|
72
|
-
- 'lib/kumi/types/**/*' # Type system modules
|
|
66
|
+
- 'lib/kumi/core/analyzer/passes/**/*'
|
|
67
|
+
- 'lib/kumi/ir/**/*'
|
|
73
68
|
|
|
74
|
-
Metrics/
|
|
75
|
-
Max: 6
|
|
69
|
+
Metrics/BlockLength:
|
|
76
70
|
Exclude:
|
|
77
|
-
- '
|
|
78
|
-
- '
|
|
71
|
+
- 'spec/**/*'
|
|
72
|
+
- '*.gemspec'
|
|
79
73
|
|
|
80
|
-
Metrics/
|
|
81
|
-
Max:
|
|
82
|
-
Exclude:
|
|
83
|
-
- 'lib/kumi/function_registry.rb' # Large function registry
|
|
74
|
+
Metrics/ParameterLists:
|
|
75
|
+
Max: 6
|
|
84
76
|
|
|
85
|
-
# Allow missing super in base classes that are designed for inheritance
|
|
86
77
|
Lint/MissingSuper:
|
|
87
78
|
Exclude:
|
|
88
|
-
- 'lib/kumi/analyzer/passes/pass_base.rb'
|
|
89
|
-
- 'lib/kumi/types.rb' # Type system value objects
|
|
90
|
-
|
|
91
|
-
# RSpec-specific configuration
|
|
92
|
-
RSpec:
|
|
93
|
-
Enabled: true
|
|
79
|
+
- 'lib/kumi/core/analyzer/passes/pass_base.rb'
|
|
94
80
|
|
|
95
81
|
RSpec/MultipleExpectations:
|
|
96
82
|
Enabled: false
|
|
97
83
|
|
|
98
84
|
RSpec/ExampleLength:
|
|
99
85
|
Max: 30
|
|
100
|
-
Exclude:
|
|
101
|
-
- 'spec/kumi/export/comprehensive_integration_spec.rb' # Comprehensive integration tests need longer examples
|
|
102
86
|
|
|
103
87
|
RSpec/MultipleMemoizedHelpers:
|
|
104
88
|
Max: 10
|
|
105
89
|
|
|
106
90
|
RSpec/VerifiedDoubleReference:
|
|
107
|
-
Enabled: false
|
|
91
|
+
Enabled: false
|
|
108
92
|
|
|
109
93
|
RSpec/DescribeClass:
|
|
110
|
-
Enabled: false
|
|
94
|
+
Enabled: false
|
|
111
95
|
|
|
112
96
|
RSpec/ContextWording:
|
|
113
|
-
Enabled: false
|
|
114
|
-
|
|
115
|
-
RSpec/ExpectActual:
|
|
116
|
-
Enabled: true # Keep this - it's a good practice
|
|
97
|
+
Enabled: false
|
|
117
98
|
|
|
118
99
|
RSpec/IdenticalEqualityAssertion:
|
|
119
|
-
Enabled: false
|
|
100
|
+
Enabled: false
|
|
120
101
|
|
|
121
102
|
RSpec/PendingWithoutReason:
|
|
122
|
-
Enabled: false
|
|
103
|
+
Enabled: false
|