You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
│││││││││││││ no matching method found for signature:+(::Symbol, ::Int64)
95
+
││││││││││││└
96
+
││││││││││││┌ @ reduce.jl:24add_sum(x, y) = x + y
97
+
│││││││││││││ no matching method found for signature:+(::Int64, ::Symbol)
98
+
││││││││││││└
99
+
││││││││││││┌ @ reduce.jl:24add_sum(x, y) = x + y
100
+
│││││││││││││ no matching method found for signature:+(::Symbol, ::Symbol)
101
+
││││││││││││└
102
+
││││││││││││┌ @ reduce.jl:24add_sum(x, y) = x + y
103
+
│││││││││││││ no matching method found for signature:+(::Int64, ::Symbol)
104
+
││││││││││││└
105
+
││││││││││││┌ @ reduce.jl:24add_sum(x, y) = x + y
106
+
│││││││││││││ no matching method found for signature:+(::Int64, ::Symbol)
107
+
││││││││││││└
108
+
││││││││││││┌ @ reduce.jl:24add_sum(x, y) = x + y
109
+
│││││││││││││ no matching method found for signature:+(::Symbol, ::Int64)
110
+
││││││││││││└
111
+
││││││││││││┌ @ reduce.jl:24add_sum(x, y) = x + y
112
+
│││││││││││││ no matching method found for signature:+(::Int64, ::Symbol)
113
+
││││││││││││└
114
+
││││││││││││┌ @ reduce.jl:24add_sum(x, y) = x + y
115
+
│││││││││││││ no matching method found for signature:+(::Symbol, ::Symbol)
116
+
││││││││││││└
117
+
Union{Int64, Symbol}
53
118
```
54
119
55
120
### TODOs
56
121
57
122
in order of priority:
58
-
59
-
-[x] show profiled results
60
-
-[x] escape recursive calls
61
-
-[ ] bug fixes: `TypeVar` etc. can serious errors within the current implementation
62
-
-[ ] toplevel executions
63
-
- handle untyped IRs while splitting expressions as JuliaIntepreter.jl does
64
-
- then, TP will be able to profile a file directly like an usual static linter
65
-
-[ ] more reports
66
-
-[ ]`UndefVarError`
67
-
-[x] report `GlobalRef` for really undefined variable
68
-
- report `:throw_undef_if_not` ? (includes lots of false positives as is)
69
-
-[ ] method ambiguity error
70
-
- more and more ...
71
-
-[ ] don't trace into "primitive" functions in `Core` and `Base`: with the similar approach to https://github.com/FluxML/Mjolnir.jl/tree/9435d98673752cec4e222e31a6b9f38edcd7d5e0/src/lib
72
-
-[ ] balance between Julia's inference approach and error profiling
123
+
- setup a type-level virtual machine and enable profiling on toplevel code
124
+
- more reports
125
+
* invalid built-in function calls
126
+
* report some cases of `throw`, e.g. `rand('1')::ArgumentError("Sampler for this object is not defined")`
127
+
- balance between Julia's inference approach and error profiling ?
73
128
- Julia's type inference allows abstract type (like `Any`) to slip into the inference process by various heuristics, in order to ensure its termination and obtain the performance
74
-
- but this is obviously unideal for TP, since our basic stance is _"better safe than sorry"_, meaning ideally we want to find all the possible errors while revealing some uncertainty Julia's inference accepts
75
-
- nevertheless, as far as TP relies on the Julia's inference, we need to achieve the conservative error profiling in the existence of abstract types, _somehow_
76
-
- as a consequence, TP will be able to profile, e.g.:
77
-
-[ ]`print`
78
-
-[ ]`sort`
79
-
-[ ] support generated functions
80
-
-[ ] replace `Core` types: enables profiling things in `Core.Compiler` module
81
-
82
-
### Ideas
83
-
84
-
- report performance pitfalls
85
-
- somehow profiles possible exceptions ?
129
+
- but this is somewhat unideal in the context of bug reports, since the stance would be _"better safe than sorry"_, meaning we ideally want to find all the possible errors while revealing some uncertainty Julia's inference accepts
130
+
- maybe we need some additional setup for supporting generated functions
0 commit comments