10836 commits in all time Jan 20, 2026 07:28 – Apr 20, 2026 07:28 UTC
daniel-makerx puya
fix: emit an error if substring start is greater than end, this aligns with algod assemble behaviour
Git Commit c87e6368 Branch main Document 3/63 ++ 2 --
daniel-makerx puya
fix: emit an error if substring start is greater than end, this aligns with algod assemble behaviour
Git Commit 8512f83f Branch pull/710/head Document 3/63 ++ 2 --
boblat puya
fix: reject intrinsic op variants when literal exceeds immediate range
Git Commit 3aa559d9 Branch fix/op-selection Document 5/339 ++ 203 --
boblat puya
test: add tests for op code selection preferring variant with immediates
Git Commit 6ef0acfb Branch fix/op-selection Document 2/93 ++ 0 --
boblat puya
chore: compile all
Git Commit a926fcce Branch fix/op-selection Document 273/12,599 ++ 5,567 --
Merge f1cdc0ce3d310635945e8723f9c396c647ca7a05 into de2875716c4b0a25ecca03e30d9c8a7baaff790c
Git Commit 2159605d Branch pull/566/merge Document 2/35 ++ 91 --
Merge 1eeb0bfbc437cbadc46f0d38175f96c744e7d85b into 8e6d4058a6721482bde5f837ced5d3aa4d64411d
Git Commit e8c31a46 Branch pull/26/merge Document 3/293 ++ 1 --
Merge de292d3c646151e29eba10b27c53dbcedae761c7 into 12ce2bb3eee8bf19b323666c3747f230798f2d10
Git Commit 90457a79 Branch pull/358/merge Document 4/235 ++ 150 --
ehanoc ARCs
Merge 1fb58d11a7b8815a11a7d6d70f6fae4bcc2bd5ba into ef1862dd6168d68627c2387b2a3be16902cfc9a6
Git Commit adc1c9ce Branch pull/373/merge Document 15/8,375 ++ 0 --
Merge 75c57e2e3d58033e8b2b554d27b3ce766ec3d95c into 8e6d4058a6721482bde5f837ced5d3aa4d64411d
Git Commit a48ad032 Branch pull/30/merge Document 3/418 ++ 1 --
boblat puya
test: add tests for op code selection preferring variant with immediates
Git Commit aa9e4bec Branch fix/op-selection Document 2/93 ++ 0 --
boblat puya
fix: reject intrinsic op variants when literal exceeds immediate range
Git Commit a1dcac96 Branch fix/op-selection Document 5/337 ++ 202 --
boblat puya
chore: compile all
Git Commit d7e3f13a Branch fix/op-selection Document 273/12,599 ++ 5,567 --
achidlow puya
chore: compile all
Git Commit 39d4e67f Branch feat/statically-failing-op-validator Document 50/3,131 ++ 2,310 --
achidlow puya
test: cover runtime-bytes / runtime-uint64 bit and byte op branches
Adds runtime-argument calls for getbit/setbit/getbyte/setbyte with constant indices large enough to be statically impossible, restoring 100% line coverage after the generic-index branches were added.
Git Commit c3c4d817 Branch feat/statically-failing-op-validator Document 1/8 ++ 3 --
achidlow puya
refactor: apply generic constant-index handling to setbit, getbyte, setbyte
Mirrors the recent getbit change: match a constant-bytes shape first (tight bound against the constant length), then fall through to a generic case that catches cases where the index is known constant but the first arg is runtime — index >= 8 * MAX_BYTES_LENGTH (or MAX_BYTES_LENGTH for byte ops) is statically impossible regardless of the runtime value.
Git Commit 70f8ac59 Branch feat/statically-failing-op-validator Document 1/24 ++ 7 --
achidlow puya
chore: compile all
Git Commit 2c511ee6 Branch feat/statically-failing-op-validator Document 6/6 ++ 6 --
achidlow puya
make getbit error handling cover all constant indexes
Git Commit 2b3ba8da Branch feat/statically-failing-op-validator Document 1/12 ++ 6 --
achidlow puya
consistent formatting
Git Commit acc574fb Branch feat/statically-failing-op-validator Document 1/72 ++ 58 --
achidlow puya
chore: compile all
Git Commit dfc14acf Branch feat/statically-failing-op-validator Document 6/126 ++ 126 --
achidlow puya
refactor: make validator warning messages generic
Drop specific constant values from the reason strings so they describe the class of failure rather than the specific bad inputs, e.g.

  +: 18446744073709551615 + 1 overflows uint64; will fail at runtime if reached

becomes

  uint64 addition of constants overflows; will fail at runtime if reached

Specific values were useful while the validator was being bootstrapped but add noise for end users who can see the literal values at the source location anyway. Also drops the leading `{op.code}:` prefix since the op name is now folded into the reason text.
Git Commit 003aebcd Branch feat/statically-failing-op-validator Document 1/29 ++ 45 --
achidlow puya
refactor: split substring/substring3 and replace2/replace3 into separate cases
Same treatment as extract/extract3: each op has a fixed arg shape, so matching them separately lets the pattern encode the shape. Removes `_substring_start_end` and `_replace_start_and_bytes` helpers and their `*rest` unpacking plumbing.

Revealed a missing OP test case, so added coverage.
Git Commit 4e0d82d0 Branch feat/statically-failing-op-validator Document 52/1,518 ++ 1,323 --
achidlow puya
refactor: split extract/extract3 into separate cases
Each op has a fixed arg shape so matching them separately means the pattern itself encodes the shape — no `*rest` unpacking, no post-hoc `is not None` guards, and the `_extract_start_length` helper becomes dead and is removed.
Git Commit 5bd5ee8d Branch feat/statically-failing-op-validator Document 1/23 ++ 29 --
achidlow puya
test: add coverage test case for StaticallyFailingOpValidator
Exercises every warning-emitting branch in statically_failing_op.py (both the top-level `_check` match arms and the three helpers' immediate-form / stack-form / None-fallthrough paths). Hits 100% line coverage of the validator via a single test case:

  coverage run -m pytest tests/test_compile.py -k statically_failing_ops -o addopts=""
  coverage report -m --include="src/puya/ir/validation/statically_failing_op.py"

Overlaps deliberately with a handful of the existing regression_tests cases since this is targeted at coverage completeness rather than regression pinning.
Git Commit e4396587 Branch feat/statically-failing-op-validator Document 55/7,680 ++ 0 --
achidlow puya
minor refactor
Git Commit 42ec51a9 Branch feat/statically-failing-op-validator Document 1/57 ++ 34 --