R we type yet?

Type-checking results for 7 CRAN packages — generated 2026-09-24 16:54 · checker unknown

7
Packages analysed
223
Entrypoints found
.Call 212 · .C 10 · .Fortran 0 · .External 1
1691
C functions analysed
69.4%
Analysed functions typed
64.6%
Entrypoints typed
144 / 223
30
Functions timed out
7 / 7
Packages without crash

Per-package results

PackageEntrypoints.Call.C.Fortran.ExternalEP typing progressFunctions analysedTimed outTyping progressTyping timeStatus
askpass00000no functions analysed00no functions analysed0 sOK
clue1001000
10 / 10 (100.0%)
223
19 / 22 (86.4%)
78 sOK
curl4141000
35 / 41 (85.4%)
1260
101 / 126 (80.2%)
7 sOK
jsonlite2121000
12 / 21 (57.1%)
1095
77 / 109 (70.6%)
158 sOK
sys22000
1 / 2 (50.0%)
350
25 / 35 (71.4%)
1 sOK
utf844000
4 / 4 (100.0%)
874
73 / 87 (83.9%)
103 sOK
vctrs145144001
82 / 145 (56.6%)
131218
879 / 1312 (67.0%)
573 sOK

Per-function inference timing sum of --log-times per function

PackageFunctions timedTimed outTotalAvgMedianSDMinMax
vctrs1294 / 131218554.47 s0.428 s0.017 s2.52 s0.000 s28.38 s
jsonlite109 / 1095157.64 s1.45 s0.072 s4.64 s0.003 s20.00 s
utf885 / 87499.98 s1.18 s0.053 s4.26 s0.000 s20.00 s
clue12 / 22377.52 s6.46 s1.39 s8.65 s0.004 s20.00 s
curl121 / 12606.24 s0.052 s0.013 s0.142 s0.001 s1.47 s
sys35 / 3500.687 s0.020 s0.010 s0.024 s0.001 s0.100 s

Pipeline phase breakdown from Phase: lines under --log-times

Σ infer_ast is the sum of every function's infer_ast body-inference timing (the same total as in the table above). overhead = fundef_pass − Σ infer_ast: time spent inside the Fundef loop that isn't attributed to any function body — PAst.transform per function, dispatch (StrMap lookups, idenv union), and GC between calls.

PackageWallload_typarsingcall_graphnon_fundeffundef_passΣ infer_astoverhead
fundef_pass − Σ infer_ast
vctrs573.03 s0.027 s1.53 s0.127 s0.113 s570.50 s554.47 s16.03 s
jsonlite158.31 s0.025 s0.347 s0.003 s0.009 s157.89 s157.64 s0.244 s
utf8102.58 s0.027 s2.46 s0.007 s0.011 s100.01 s99.98 s0.029 s
clue77.91 s0.025 s0.218 s0.001 s0.005 s77.62 s77.52 s0.100 s
curl6.73 s0.026 s0.339 s0.005 s0.019 s6.29 s6.24 s0.044 s
sys1.01 s0.029 s0.227 s0.001 s0.009 s0.702 s0.687 s0.015 s
askpass0.238 s0.026 s0.154 s0.001 s0.009 s0.000 s——

Error and timeout categories

ErrorCount
untypeable application292
unbound variable179
timeout30
untypeable projection13
invalid mlsem AST: Upper bound must be larger than lower bound2
untypeable coercion1

Functions typed as empty typed, but the inferred result is empty (bottom)

An empty return means inference found no usable value — usually a red flag, though it can be legitimate for bail-out helpers (e.g. bail_if-style functions that never return). Drill into a package and use the empty return only filter to see which functions.

PackageEmpty returns% of pkg typed
All packages14412.3%
vctrs637.2%
curl3938.6%
utf81926.0%
jsonlite1722.1%
sys520.0%
clue15.3%