10902 commits in all time Jan 24, 2026 04:08 – Apr 24, 2026 04:08 UTC
boblat puya
Merge 4ffa677556b455a65902c9e2df2051f7bd10637e into 10cc4cb7647c963dae96062ff1d597f4b55382df
Git Commit 95a47144 Branch pull/695/merge Document 3/127 ++ 15 --
Merge 4d0211eabd6e1d337e3bec95b9b0a320de5101e0 into af05a35d89d8ced9f1a6fff15e3c90e504042830
Git Commit 77b18d4c Branch pull/69/merge Document 1/24 ++ 0 --
refactor: check algorand-python dependency as well
Git Commit 4d0211ea Branch check-prod-puya Document 1/6 ++ 6 --
achidlow puya
method rename
Git Commit d91abd92 Branch feat/statically-failing-op-validator Document 1/12 ++ 12 --
achidlow puya
chore: compile all
Git Commit 8af0406e Branch feat/statically-failing-op-validator Document 53/1,664 ++ 762 --
achidlow puya
add concat buffer overflow detection
Git Commit 238c9ea2 Branch feat/statically-failing-op-validator Document 2/12 ++ 0 --
achidlow puya
chore: compile all (after rebase)
Git Commit d6f272a5 Branch feat/statically-failing-op-validator Document 3/39 ++ 0 --
achidlow puya
test: cover substring3 runtime-bytes fallback
The fallback arm (runtime first arg, constant `end` > MAX_BYTES_LENGTH) needs its own test since neither of the constant-bytes substring3 cases in the existing test exceeds 4096.
Git Commit fd49e9fa Branch feat/statically-failing-op-validator Document 1/2 ++ 0 --
achidlow puya
make getbit error handling cover all constant indexes
Git Commit 2fc6d0bb Branch feat/statically-failing-op-validator Document 1/12 ++ 6 --
achidlow puya
refactor (WIP)
Git Commit bd5d58ef Branch feat/statically-failing-op-validator Document 1/157 ++ 71 --
achidlow puya
chore: compile all
Git Commit 41022b7a Branch feat/statically-failing-op-validator Document 50/2,955 ++ 2,777 --
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 ccea5673 Branch feat/statically-failing-op-validator Document 1/8 ++ 3 --
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 8ef21e2e Branch feat/statically-failing-op-validator Document 55/7,680 ++ 0 --
achidlow puya
message tweaks
Git Commit 1a5112bd Branch feat/statically-failing-op-validator Document 1/15 ++ 15 --
achidlow puya
consistent formatting
Git Commit e44f433e Branch feat/statically-failing-op-validator Document 1/72 ++ 58 --
achidlow puya
chore: compile all (after rebase)
Git Commit 65c3e1ea Branch feat/statically-failing-op-validator Document 2/0 ++ 32 --
achidlow puya
chore: compile all
Git Commit bdfe2ac9 Branch feat/statically-failing-op-validator Document 3/3 ++ 3 --
achidlow puya
remove test case that will now fail compilation at TEAL layer
Git Commit 75b54714 Branch feat/statically-failing-op-validator Document 1/2 ++ 2 --
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 5c6c21ce Branch feat/statically-failing-op-validator Document 52/1,518 ++ 1,323 --
achidlow puya
improving static failing op detection (WIP)
Git Commit 7096d0a9 Branch feat/statically-failing-op-validator Document 1/37 ++ 49 --
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 4822c739 Branch feat/statically-failing-op-validator Document 1/29 ++ 45 --
achidlow puya
chore: compile all
Git Commit 24df8d19 Branch feat/statically-failing-op-validator Document 50/3,131 ++ 2,310 --
achidlow puya
minor refactor
Git Commit 0e1c3aac Branch feat/statically-failing-op-validator Document 1/57 ++ 34 --
achidlow puya
chore: compile all
Git Commit b2cfeff7 Branch feat/statically-failing-op-validator Document 51/3,339 ++ 3,126 --
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 d52e1c73 Branch feat/statically-failing-op-validator Document 1/24 ++ 7 --