Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/typedpython.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ jobs:
run: |
env $(.venv/bin/python tools/sanitizers.py env) \
.venv/bin/python -m pytest -q -m "not measurement and not race_mutant" \
src/test/python/test_cgen.py src/test/python/test_runtime.py src/test/python/test_pipeline.py
src/test/python/test_cgen.py src/test/python/test_runtime.py src/test/python/test_pipeline.py src/test/python/test_interval_proofs.py

app-fixture:
# #45: a TypedPython-compiled module calling Kotlin through the upcall table, in the app
Expand Down
308 changes: 308 additions & 0 deletions benchmarks/typedpython/results/2026-10-17-interval-proofs-ab.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,308 @@
{
"fannkuch-redux": {
"size": "10",
"pairs": [
{
"before_s": 1.0887560830451548,
"after_s": 0.6829974167048931,
"cpython_s": 5.911647166591138,
"after_over_before": 0.627319036229501,
"speedup_before": 5.429725958505584,
"speedup_after": 8.655445865537468,
"load": [
2.66748046875,
2.986328125,
3.36767578125
]
},
{
"after_s": 0.27054166700690985,
"before_s": 0.2709987089037895,
"cpython_s": 5.913880208041519,
"after_over_before": 0.9983134905006432,
"speedup_before": 21.822540158820743,
"speedup_after": 21.8594062551203,
"load": [
2.49072265625,
2.93701171875,
3.34521484375
]
},
{
"before_s": 0.2726931250654161,
"after_s": 0.27129745902493596,
"cpython_s": 5.907416833098978,
"after_over_before": 0.9948819170261615,
"speedup_before": 21.663240801108767,
"speedup_after": 21.774685447960664,
"load": [
2.37109375,
2.90478515625,
3.3310546875
]
},
{
"after_s": 0.270517417229712,
"before_s": 0.2704989998601377,
"cpython_s": 5.924571041949093,
"after_over_before": 1.0000680866457319,
"speedup_before": 21.90237688498815,
"speedup_after": 21.900885727140434,
"load": [
2.16015625,
2.841796875,
3.3037109375
]
},
{
"before_s": 0.27097137505188584,
"after_s": 0.27024612482637167,
"cpython_s": 5.908709957730025,
"after_over_before": 0.9973235171966954,
"speedup_before": 21.805661046664504,
"speedup_after": 21.864180148841232,
"load": [
2.14697265625,
2.82763671875,
3.2958984375
]
},
{
"after_s": 0.27170295920223,
"before_s": 0.2769245416857302,
"cpython_s": 6.009743249975145,
"after_over_before": 0.9811443852115281,
"speedup_before": 21.701735835299655,
"speedup_after": 22.118799396299767,
"load": [
2.0546875,
2.796875,
3.2822265625
]
},
{
"before_s": 0.2953220000490546,
"after_s": 0.2890004999935627,
"cpython_s": 6.02235220791772,
"after_over_before": 0.9785945508480849,
"speedup_before": 20.3924943177866,
"speedup_after": 20.83855290233707,
"load": [
2.21044921875,
2.81640625,
3.2861328125
]
},
{
"after_s": 0.27058391692116857,
"before_s": 0.2701001246459782,
"cpython_s": 6.634010416921228,
"after_over_before": 1.0017911590223236,
"speedup_before": 24.561300834705143,
"speedup_after": 24.51738629703542,
"load": [
2.3251953125,
2.82177734375,
3.2822265625
]
},
{
"before_s": 0.3240792923606932,
"after_s": 0.3907488747499883,
"cpython_s": 6.6358414171263576,
"after_over_before": 1.205719970269169,
"speedup_before": 20.475980951417316,
"speedup_after": 16.982368589985445,
"load": [
2.69921875,
2.89111328125,
3.3037109375
]
},
{
"after_s": 0.2735611251555383,
"before_s": 0.2766624162904918,
"cpython_s": 6.041726541239768,
"after_over_before": 0.9887903417582489,
"speedup_before": 21.83790130313919,
"speedup_after": 22.085471895192093,
"load": [
2.95947265625,
2.94287109375,
3.3173828125
]
},
{
"before_s": 0.2883912082761526,
"after_s": 0.28800000017508864,
"cpython_s": 7.008296665735543,
"after_over_before": 0.9986434811816823,
"speedup_before": 24.301353386004266,
"speedup_after": 24.334363407898863,
"load": [
2.88232421875,
2.9267578125,
3.3095703125
]
}
],
"median_after_over_before": 0.9973235171966954,
"min_after_over_before": 0.627319036229501,
"max_after_over_before": 1.205719970269169,
"median_speedup_before": 21.805661046664504,
"median_speedup_after": 21.864180148841232
},
"binary-trees": {
"size": "16",
"pairs": [
{
"before_s": 3.155360875185579,
"after_s": 3.0856687501072884,
"cpython_s": 3.590506291948259,
"after_over_before": 0.9779131047651747,
"speedup_before": 1.1379067035358,
"speedup_after": 1.1636071732662223,
"load": [
2.7314453125,
2.89453125,
3.2958984375
]
},
{
"after_s": 2.393941333051771,
"before_s": 2.388220750261098,
"cpython_s": 3.54007404204458,
"after_over_before": 1.0023953325043538,
"speedup_before": 1.4823060396144505,
"speedup_after": 1.478763908358494,
"load": [
2.8525390625,
2.9140625,
3.2978515625
]
},
{
"before_s": 2.403391916770488,
"after_s": 2.392654124647379,
"cpython_s": 3.593896792270243,
"after_over_before": 0.9955322342360468,
"speedup_before": 1.4953436296396774,
"speedup_after": 1.5020544571187862,
"load": [
2.88134765625,
2.91650390625,
3.2939453125
]
},
{
"after_s": 2.379018457606435,
"before_s": 2.754461499862373,
"cpython_s": 3.6588334999978542,
"after_over_before": 0.8636963913727975,
"speedup_before": 1.3283298750701973,
"speedup_after": 1.5379592740440777,
"load": [
3.04638671875,
2.951171875,
3.3017578125
]
},
{
"before_s": 2.3003429169766605,
"after_s": 2.309331167023629,
"cpython_s": 3.513636375311762,
"after_over_before": 1.0039073522389357,
"speedup_before": 1.5274402565725864,
"speedup_after": 1.5214952387449465,
"load": [
3.580078125,
3.0673828125,
3.3388671875
]
},
{
"after_s": 2.2887648749165237,
"before_s": 2.2567570419050753,
"cpython_s": 3.2699287086725235,
"after_over_before": 1.0141831098417349,
"speedup_before": 1.4489502626796564,
"speedup_after": 1.4286870374973686,
"load": [
3.693359375,
3.09912109375,
3.34814453125
]
},
{
"before_s": 2.160762708168477,
"after_s": 2.1336489161476493,
"cpython_s": 3.3091259165666997,
"after_over_before": 0.987451749366866,
"speedup_before": 1.5314619713016095,
"speedup_after": 1.5509233461620295,
"load": [
3.740234375,
3.12841796875,
3.35498046875
]
},
{
"after_s": 2.1829029163345695,
"before_s": 2.155100916977972,
"cpython_s": 3.1836033752188087,
"after_over_before": 1.012900555671232,
"speedup_before": 1.4772409728650073,
"speedup_after": 1.4584264611110465,
"load": [
3.5205078125,
3.0927734375,
3.3408203125
]
},
{
"before_s": 2.9248738340102136,
"after_s": 2.181852374691516,
"cpython_s": 3.206505249720067,
"after_over_before": 0.7459646119846608,
"speedup_before": 1.0962883979592775,
"speedup_after": 1.4696252078802639,
"load": [
3.2060546875,
3.03955078125,
3.31884765625
]
},
{
"after_s": 2.146172667387873,
"before_s": 2.1432514172047377,
"cpython_s": 3.184945832937956,
"after_over_before": 1.0013629993008217,
"speedup_before": 1.4860346328812009,
"speedup_after": 1.4840119256641096,
"load": [
3.669921875,
3.13818359375,
3.35205078125
]
},
{
"before_s": 2.1659594592638314,
"after_s": 2.5923933750018477,
"cpython_s": 3.8596382504329085,
"after_over_before": 1.196879915694707,
"speedup_before": 1.7819531357917135,
"speedup_after": 1.4888320143273617,
"load": [
3.56640625,
3.13330078125,
3.34716796875
]
}
],
"median_after_over_before": 1.0013629993008217,
"min_after_over_before": 0.7459646119846608,
"max_after_over_before": 1.196879915694707,
"median_speedup_before": 1.4823060396144505,
"median_speedup_after": 1.4840119256641096
}
}
1 change: 1 addition & 0 deletions docs/SPEC.md
Original file line number Diff line number Diff line change
Expand Up @@ -577,6 +577,7 @@ All in `PM/commonTest`, so they run wherever the interpreter loads.
| No deopting node in an impure function | not compiled; diagnostic |
| Array access in bounds, or a runtime bounds check kept | the check stays (never an unchecked access) |
| Array parameters only indexed, stored, `len`-ed; no aliasing (entry guard) | not compiled; diagnostic |
| Integer ops proven safe by the verifier's intervals (constants, `len`, `range` variables, guards such as `if x < e` / `while lo < hi`, joined local assignments, `//` and `%` by constants) | emitted unchecked (a shift/mask for `//`/`%` by a power of two of a non-negative value); the sanitizer CI run builds with `TP_CHECK_PROVEN` and turns a wrong proof into a SystemError (#148) |
| A function holding an array parameter runs no user code: closed, and no slot read or `C(args)` whose slow path runs user code, in its whole call tree (#203) | not compiled; diagnostic |
| OBJ references follow one ownership rule; no IR form for free, borrowed alias or NULL read | not compiled; diagnostic |
| Integer overflow checked and promoted (deopt); an op marked `proven` must re-prove its interval fits i64 | not compiled; diagnostic `verify/proven-overflow` |
Expand Down
Loading