R we type yet?

Type-checking results for 7 CRAN packages — generated 2026-09-14 15:14 · checker unknown

7
Packages analysed
223
Entrypoints found
.Call 212 · .C 10 · .Fortran 0 · .External 1
1691
C functions analysed
69.3%
Analysed functions typed
65.0%
Entrypoints typed
145 / 223
33
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%)
86 sOK
curl4141000
35 / 41 (85.4%)
1260
101 / 126 (80.2%)
10 sOK
jsonlite2121000
12 / 21 (57.1%)
1097
76 / 109 (69.7%)
184 sOK
sys22000
2 / 2 (100.0%)
350
28 / 35 (80.0%)
1 sOK
utf844000
4 / 4 (100.0%)
874
73 / 87 (83.9%)
105 sOK
vctrs145144001
82 / 145 (56.6%)
131219
875 / 1312 (66.7%)
632 sOK

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

PackageFunctions timedTimed outTotalAvgMedianSDMinMax
vctrs1294 / 131219610.06 s0.471 s0.024 s2.56 s0.000 s25.70 s
jsonlite109 / 1097183.24 s1.68 s0.087 s5.18 s0.005 s20.02 s
utf885 / 874101.37 s1.19 s0.069 s4.25 s0.000 s20.01 s
clue12 / 22385.60 s7.13 s2.08 s8.84 s0.006 s20.01 s
curl121 / 12609.49 s0.078 s0.019 s0.214 s0.001 s2.18 s
sys35 / 3500.938 s0.027 s0.015 s0.030 s0.001 s0.103 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
vctrs631.67 s0.035 s1.95 s0.144 s0.170 s628.95 s610.06 s18.89 s
jsonlite184.16 s0.034 s0.450 s0.006 s0.011 s183.60 s183.24 s0.366 s
utf8104.71 s0.042 s3.18 s0.010 s0.017 s101.41 s101.37 s0.033 s
clue86.17 s0.049 s0.332 s0.001 s0.007 s85.74 s85.60 s0.144 s
curl10.19 s0.040 s0.534 s0.004 s0.029 s9.55 s9.49 s0.059 s
sys1.32 s0.050 s0.284 s0.002 s0.012 s0.949 s0.938 s0.011 s
askpass0.256 s0.035 s0.188 s0.001 s0.010 s0.000 s

Error and timeout categories

ErrorCount
untypeable application293
unbound variable177
timeout33
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 packages14212.1%
vctrs627.1%
curl3938.6%
utf81926.0%
jsonlite1722.4%
sys414.3%
clue15.3%