What's Changed
- feat[docs]: add Cyfrin Updraft and Moccasin to docs by @PatrickAlphaC in #4704
- refactor[parser]: remove
asttokensdependency by @charles-cooper in #4702 - chore[docs]: add Twitter badge to README by @Olexandr88 in #4708
- fix[lang]: allow flag member access in pure functions by @z80dev in #4693
- refactor[parser]: remove
add_fn_nodemachinery by @charles-cooper in #4679 - feat[test]: add
raw_returnproxy test by @cyberthirst in #4707 - fix[parser]: generate unique nodes from python AST singletons by @tserg in #4677
- feat[venom]: move cfg normalization into
run_passes()by @charles-cooper in #4660 - feat[tool]: export folded value in annotated AST by @charles-cooper in #4709
- feat[test]: add more ctor abi decoder tests by @cyberthirst in #4648
- refactor[venom]: rename
storeinstruction toassignby @charles-cooper in #4710 - fix[lang]: add missing
HexBytescode paths by @cyberthirst in #4630 - chore[ci]: add commit message formatter by @charles-cooper in #4711
- feat[docs]: add audit links to docs by @cyberthirst in #4705
- refactor[codegen]: refactor assembly labels by @charles-cooper in #4629
- fix[docs]: change
"settings"field to required by @kuzdogan in #4737 - refactor[codegen]: refactor assembly by @charles-cooper in #4663
- chore[docs]: add github sponsorship to FUNDING.yml by @benber86 in #4740
- feat[test]: add more curvefi example contracts by @AlbertoCentonze in #4714
- refactor[codegen]: refactor assembler file layout by @harkal in #4744
- fix[venom]: handle empty liveness case by @harkal in #4746
- feat[build]: drop python3.10 support by @charles-cooper in #4751
- fix[venom]: fix sccp
TOPevaluation order by @harkal in #4748 - feat[tool]: add extra debugging output by @jtoman in #4718
- feat[venom]: inter-basic block load elimination by @charles-cooper in #4512
- feat[venom]: improve inter-basic block stack ordering by @HodanPlodky in #4646
- chore[docs]: update drips funding profile by @benber86 in #4758
- fix[test]: add missing keywords to reserved list by @Sporarum in #4763
- feat[lang]: add support for single line multi-imports by @Sporarum in #4762
- feat[docs]: update verbiage around reference types by @Sporarum in #4766
- fix[lang]: disallow events from having modules as members by @Sporarum in #4768
- fix[codegen]: fix panic for type checking iterator types by @Sporarum in #4767
- feat[lang]: allow multi-interface implements by @Sporarum in #4772
- fix[lang]!: forbid duplicate implements by @Sporarum in #4775
- feat[venom]: optimize
popmany()for contiguous suffix removal by @harkal in #4777 - feat[venom]: add multi-output instruction support for stack-based calling convention by @harkal in #4747
- refactor[venom]: change
has_outputsto property by @harkal in #4782 - fix[venom]: fix phis after jump merging in cfg simplification by @HodanPlodky in #4780
- feat[venom]: memory allocation by @HodanPlodky in #4756
- feat[venom]: skip pops in halting blocks by @harkal in #4781
- fix[lang]: fix incorrect handling of tuples in nested subscripts by @Sporarum in #4776
- fix[venom]: fix
fix_mem_locby @charles-cooper in #4789 - fix[venom]: fix clobber logic in dse by @charles-cooper in #4785
- feat[venom]: simplify ctor memory computation in venom by @charles-cooper in #4788
- feat[tool]: support fine-grained optimization flags by @harkal in #4757
- feat[venom]: stack spilling to memory for deep stacks by @harkal in #4765
- fix[venom]: remove unreachable functions by @harkal in #4798
- feat[venom]: remove
IRAbstractMemLoc, improve memory allocation by @HodanPlodky in #4795 - fix[venom]: iszero chain optimization for
assert_unreachableby @harkal in #4806 - fix[venom]: fix
make_ssaself-loops and liveness analysis by @harkal in #4803 - fix[venom]: minor cleanup in
PhiEliminationPassby @harkal in #4804 - fix[venom]: improve sccp
sar,addmodandmulmodby @harkal in #4805 - fix[venom]: handle overlapping reserved memory intervals in allocator by @charles-cooper in #4801
- feat[tool]: add test export infrastructure by @cyberthirst in #4638
- fix[venom]: fix phi update in
simplify_cfgby @harkal in #4808 - feat[venom]: load elimination improvements by @harkal in #4807
- feat[ci]: enable new venom opt levels by @HodanPlodky in #4817
- feat[tool]: add storage layout to test exports by @cyberthirst in #4816
- feat[venom]: add assert combiner optimization pass by @harkal in #4818
- chore[build]: update mypy version by @Sporarum in #4814
- feat[venom]: add assert elimination pass by @harkal in #4790
- feat[venom]: add memory copy elision pass by @HodanPlodky in #4821
- feat[ci]: add bytecode size comparison workflow for PRs by @charles-cooper in #4828
- fix[test]: fix deprecation warnings in thirdparty examples by @charles-cooper in #4829
- feat[docs]: add Moccasin to testing frameworks by @lh1404 in #4833
- feat[ci]: add PR commenting to bytecode-size workflow by @charles-cooper in #4831
- fix[ux]: handle function parameters in loop variable error message by @frederikgramkortegaard in #4837
- feat[venom]: add tail-merge pass for equivalent terminal blocks by @harkal in #4842
- fix[lang]: detect duplicate imports via different relative paths by @frederikgramkortegaard in #4838
- fix[venom]: fix palloca memory initialization in the presence of loops by @harkal in #4840
- feat[lang]: deprecate values as default parameters for interfaces by @Sporarum in #4813
- feat[venom]: enforce pass ordering contracts in optimizer pipeline by @harkal in #4843
- fix[venom]: fix alloca overlap in
ConcretizeMemLocby @harkal in #4844 - feat[test]: add test cases for duplicate built-in imports by @Sporarum in #4845
- fix[venom]: treat immutables as global allocations by @HodanPlodky in #4839
- fix[venom]: fix allocation in ternary fall through by @HodanPlodky in #4846
- feat[parser]: support underscores in numeric literals by @z80dev in #3665
- feat[venom]: add direct-to-venom pipeline by @charles-cooper in #4811
- chore[docs]: add CLAUDE.md and skills/ for agents by @charles-cooper in #4861
- refactor[venom]: normalize bytestring memory handling and dedupe hash/slice paths by @harkal in #4860
- refactor[venom]: deduplicate word-copy loops and binop dispatch by @charles-cooper in #4858
- feat[docs]: revamp vyper docs by @lufa23 in #4830
- fix[venom]: model
retas memory escape inBasePtrAnalysisby @harkal in #4864 - fix[venom]: fix
is_word_typefor single-element arrays by @HodanPlodky in #4863 - fix[venom]: fix divisor check for signed div/mod by @HodanPlodky in #4870
- fix[venom]: proper array subscript lowering by @harkal in #4866
- fix[venom]: layout-aware memory copy for type-compatible assignments by @harkal in #4868
- refactor[venom]: sunset no longer required
callocaandpallocaby @harkal in #4879 - refactor[venom]: move more opt to venom by @harkal in #4869
- refactor[venom]: extract analyses from passes and add global analysis caching by @harkal in #4880
- refactor[venom]: algebraic representation for range analysis by @harkal in #4882
- fix[venom]: baseptr add/sub liveness by @harkal in #4853
- feat[venom]: algebraic optimizations by @harkal in #4778
- chore[venom]: remove references to
sha3_64by @HodanPlodky in #4885 - refactor[venom]: unify algebraic pass into forward-only lattice architecture by @harkal in #4884
- fix[venom]: don't fold affine chains through multi-use intermediates by @harkal in #4887
- feat[venom]: eliminate provably-safe overflow checks by @harkal in #4826
- fix[venom]: venom to asm stack order target by @HodanPlodky in #4859
- fix[venom]: remove
FloatAllocaspass by @harkal in #4888 - refactor[venom]: split algebraic pass into affine folding and peephole passes by @harkal in #4889
- refactor[venom]: remove alloca id from venom pipeline by @HodanPlodky in #4891
- refactor[venom]: remove alloca_id and dead code in mem2var by @harkal in #4892
- chore[venom]: remove
IRParameterby @harkal in #4894 - refactor[venom]: sunset
gepby @harkal in #4895 - chore[ci]: enable merge groups by @charles-cooper in #3931
- fix[docs]: fix docs CI build by @charles-cooper in #4910
- refactor[venom]: sunset msize instruction by @harkal in #4909
- refactor[venom]: remove
fix_memlocspass by @HodanPlodky in #4896 - fix[venom]: proper handling of effects in the memory copy elision by @HodanPlodky in #4914
- fix[codegen]: fix zero pad implementation in venom abi encoder by @HodanPlodky in #4916
- refactor[venom]: faster load analysis and memalias by @HodanPlodky in #4900
- feat[lang]: add abstract methods by @Sporarum in #4875
- fix[venom]: snapshot liveness in
BranchOptimizationPassby @HodanPlodky in #4921 - feat[test]: add diamond initialization tests by @Sporarum in #4915
- fix[venom]: spiller stack invalidation by @HodanPlodky in #4936
- feat[stdlib]!: move
isqrtfrom builtin to stdlib math module by @charles-cooper in #4923 - refactor[codegen]: clean up venom lowering pipeline by @HodanPlodky in #4905
- feat[venom]: memmerge abstract by @HodanPlodky in #4942
- chore[build]: migrate mostly to
pyproject.tomlby @Sporarum in #4886
New Contributors
- @PatrickAlphaC made their first contribution in #4704
- @Olexandr88 made their first contribution in #4708
- @kuzdogan made their first contribution in #4737
- @jtoman made their first contribution in #4718
- @Sporarum made their first contribution in #4763
- @lh1404 made their first contribution in #4833
- @frederikgramkortegaard made their first contribution in #4837
- @lufa23 made their first contribution in #4830
Full Changelog: v0.4.3...v0.5.0a1