kumi 0.0.15 → 0.0.17
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/CHANGELOG.md +13 -0
- data/golden/cascade_logic/schema.kumi +3 -1
- data/lib/kumi/analyzer.rb +11 -9
- data/lib/kumi/core/analyzer/passes/broadcast_detector.rb +0 -81
- data/lib/kumi/core/analyzer/passes/ir_dependency_pass.rb +18 -20
- data/lib/kumi/core/analyzer/passes/ir_execution_schedule_pass.rb +67 -0
- data/lib/kumi/core/analyzer/passes/lower_to_ir_pass.rb +0 -36
- data/lib/kumi/core/analyzer/passes/toposorter.rb +1 -39
- data/lib/kumi/core/analyzer/passes/unsat_detector.rb +8 -191
- data/lib/kumi/core/compiler/access_builder.rb +20 -10
- data/lib/kumi/core/compiler/access_codegen.rb +61 -0
- data/lib/kumi/core/compiler/access_emit/base.rb +173 -0
- data/lib/kumi/core/compiler/access_emit/each_indexed.rb +56 -0
- data/lib/kumi/core/compiler/access_emit/materialize.rb +45 -0
- data/lib/kumi/core/compiler/access_emit/ravel.rb +50 -0
- data/lib/kumi/core/compiler/access_emit/read.rb +32 -0
- data/lib/kumi/core/ir/execution_engine/interpreter.rb +36 -181
- data/lib/kumi/core/ir/execution_engine/values.rb +8 -8
- data/lib/kumi/core/ir/execution_engine.rb +3 -19
- data/lib/kumi/dev/parse.rb +12 -12
- data/lib/kumi/runtime/executable.rb +22 -175
- data/lib/kumi/runtime/run.rb +105 -0
- data/lib/kumi/schema.rb +8 -13
- data/lib/kumi/version.rb +1 -1
- data/lib/kumi.rb +3 -2
- metadata +10 -25
- data/BACKLOG.md +0 -34
- data/config/functions.yaml +0 -352
- data/docs/functions/analyzer_integration.md +0 -199
- data/docs/functions/signatures.md +0 -171
- data/examples/hash_objects_demo.rb +0 -138
- data/lib/kumi/core/analyzer/passes/function_signature_pass.rb +0 -199
- data/lib/kumi/core/analyzer/passes/type_consistency_checker.rb +0 -48
- data/lib/kumi/core/functions/dimension.rb +0 -98
- data/lib/kumi/core/functions/dtypes.rb +0 -20
- data/lib/kumi/core/functions/errors.rb +0 -11
- data/lib/kumi/core/functions/kernel_adapter.rb +0 -45
- data/lib/kumi/core/functions/loader.rb +0 -119
- data/lib/kumi/core/functions/registry_v2.rb +0 -68
- data/lib/kumi/core/functions/shape.rb +0 -70
- data/lib/kumi/core/functions/signature.rb +0 -122
- data/lib/kumi/core/functions/signature_parser.rb +0 -86
- data/lib/kumi/core/functions/signature_resolver.rb +0 -272
- data/lib/kumi/kernels/ruby/aggregate_core.rb +0 -105
- data/lib/kumi/kernels/ruby/datetime_scalar.rb +0 -21
- data/lib/kumi/kernels/ruby/mask_scalar.rb +0 -15
- data/lib/kumi/kernels/ruby/scalar_core.rb +0 -63
- data/lib/kumi/kernels/ruby/string_scalar.rb +0 -19
- data/lib/kumi/kernels/ruby/vector_struct.rb +0 -39
@@ -1,105 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Kumi
|
4
|
-
module Kernels
|
5
|
-
module Ruby
|
6
|
-
module AggregateCore
|
7
|
-
module_function
|
8
|
-
|
9
|
-
def kumi_sum(enum, skip_nulls: true, min_count: 0)
|
10
|
-
total = 0
|
11
|
-
count = 0
|
12
|
-
enum.each do |x|
|
13
|
-
next if skip_nulls && x.nil?
|
14
|
-
|
15
|
-
total += x
|
16
|
-
count += 1
|
17
|
-
end
|
18
|
-
return nil if count < min_count
|
19
|
-
|
20
|
-
total
|
21
|
-
end
|
22
|
-
|
23
|
-
def kumi_min(enum, skip_nulls: true, min_count: 0)
|
24
|
-
best = nil
|
25
|
-
count = 0
|
26
|
-
enum.each do |x|
|
27
|
-
next if skip_nulls && x.nil?
|
28
|
-
|
29
|
-
best = x if best.nil? || x < best
|
30
|
-
count += 1
|
31
|
-
end
|
32
|
-
return nil if count < min_count
|
33
|
-
|
34
|
-
best
|
35
|
-
end
|
36
|
-
|
37
|
-
def kumi_max(enum, skip_nulls: true, min_count: 0)
|
38
|
-
best = nil
|
39
|
-
count = 0
|
40
|
-
enum.each do |x|
|
41
|
-
next if skip_nulls && x.nil?
|
42
|
-
|
43
|
-
best = x if best.nil? || x > best
|
44
|
-
count += 1
|
45
|
-
end
|
46
|
-
return nil if count < min_count
|
47
|
-
|
48
|
-
best
|
49
|
-
end
|
50
|
-
|
51
|
-
def kumi_mean(enum, skip_nulls: true, min_count: 0)
|
52
|
-
total = 0.0
|
53
|
-
count = 0
|
54
|
-
enum.each do |x|
|
55
|
-
next if skip_nulls && x.nil?
|
56
|
-
|
57
|
-
total += x
|
58
|
-
count += 1
|
59
|
-
end
|
60
|
-
return nil if count < [min_count, 1].max
|
61
|
-
|
62
|
-
total / count
|
63
|
-
end
|
64
|
-
|
65
|
-
def kumi_any(enum, skip_nulls: true, min_count: 0)
|
66
|
-
count = 0
|
67
|
-
enum.each do |x|
|
68
|
-
next if skip_nulls && x.nil?
|
69
|
-
|
70
|
-
return true if x
|
71
|
-
count += 1
|
72
|
-
end
|
73
|
-
return nil if count < min_count
|
74
|
-
|
75
|
-
false
|
76
|
-
end
|
77
|
-
|
78
|
-
def kumi_all(enum, skip_nulls: true, min_count: 0)
|
79
|
-
count = 0
|
80
|
-
enum.each do |x|
|
81
|
-
next if skip_nulls && x.nil?
|
82
|
-
|
83
|
-
return false unless x
|
84
|
-
count += 1
|
85
|
-
end
|
86
|
-
return nil if count < min_count
|
87
|
-
|
88
|
-
true
|
89
|
-
end
|
90
|
-
|
91
|
-
def kumi_count(enum, skip_nulls: true, min_count: 0)
|
92
|
-
count = 0
|
93
|
-
enum.each do |x|
|
94
|
-
next if skip_nulls && x.nil?
|
95
|
-
|
96
|
-
count += 1
|
97
|
-
end
|
98
|
-
return nil if count < min_count
|
99
|
-
|
100
|
-
count
|
101
|
-
end
|
102
|
-
end
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "date"
|
4
|
-
|
5
|
-
module Kumi
|
6
|
-
module Kernels
|
7
|
-
module Ruby
|
8
|
-
module DatetimeScalar
|
9
|
-
module_function
|
10
|
-
|
11
|
-
def dt_add_days(d, n)
|
12
|
-
d + n
|
13
|
-
end
|
14
|
-
|
15
|
-
def dt_diff_days(d1, d2)
|
16
|
-
(d1 - d2).to_i
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Kumi
|
4
|
-
module Kernels
|
5
|
-
module Ruby
|
6
|
-
module ScalarCore
|
7
|
-
module_function
|
8
|
-
|
9
|
-
def kumi_add(a, b)
|
10
|
-
a + b
|
11
|
-
end
|
12
|
-
|
13
|
-
def kumi_sub(a, b)
|
14
|
-
a - b
|
15
|
-
end
|
16
|
-
|
17
|
-
def kumi_mul(a, b)
|
18
|
-
a * b
|
19
|
-
end
|
20
|
-
|
21
|
-
def kumi_div(a, b)
|
22
|
-
a / b.to_f
|
23
|
-
end
|
24
|
-
|
25
|
-
def kumi_eq(a, b)
|
26
|
-
a == b
|
27
|
-
end
|
28
|
-
|
29
|
-
def kumi_gt(a, b)
|
30
|
-
a > b
|
31
|
-
end
|
32
|
-
|
33
|
-
def kumi_gte(a, b)
|
34
|
-
a >= b
|
35
|
-
end
|
36
|
-
|
37
|
-
def kumi_lt(a, b)
|
38
|
-
a < b
|
39
|
-
end
|
40
|
-
|
41
|
-
def kumi_lte(a, b)
|
42
|
-
a <= b
|
43
|
-
end
|
44
|
-
|
45
|
-
def kumi_ne(a, b)
|
46
|
-
a != b
|
47
|
-
end
|
48
|
-
|
49
|
-
def kumi_and(a, b)
|
50
|
-
a && b
|
51
|
-
end
|
52
|
-
|
53
|
-
def kumi_or(a, b)
|
54
|
-
a || b
|
55
|
-
end
|
56
|
-
|
57
|
-
def kumi_not(a)
|
58
|
-
!a
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Kumi
|
4
|
-
module Kernels
|
5
|
-
module Ruby
|
6
|
-
module VectorStruct
|
7
|
-
module_function
|
8
|
-
|
9
|
-
def size(vec)
|
10
|
-
vec&.size
|
11
|
-
end
|
12
|
-
|
13
|
-
def join_zip(left, right)
|
14
|
-
raise NotImplementedError, "join operations should be implemented in IR/VM"
|
15
|
-
end
|
16
|
-
|
17
|
-
def join_product(left, right)
|
18
|
-
raise NotImplementedError, "join operations should be implemented in IR/VM"
|
19
|
-
end
|
20
|
-
|
21
|
-
def align_to(vec, target_axes)
|
22
|
-
raise NotImplementedError, "align_to should be implemented in IR/VM"
|
23
|
-
end
|
24
|
-
|
25
|
-
def lift(vec, indices)
|
26
|
-
raise NotImplementedError, "lift should be implemented in IR/VM"
|
27
|
-
end
|
28
|
-
|
29
|
-
def flatten(*args)
|
30
|
-
raise NotImplementedError, "flatten should be implemented in IR/VM"
|
31
|
-
end
|
32
|
-
|
33
|
-
def take(values, indices)
|
34
|
-
raise NotImplementedError, "take should be implemented in IR/VM"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|