Releases: vyperlang/vyper
v0.5.0a3
What's Changed
- fix[parser]: reject non-name for-loop targets early by @banteg in #5022
- chore[docs]: improve interfaces wildcard note by @pcaversaccio in #5034
- chore[docs]: add warning for
send(to,0)by @trocher in #5030 - feat[docs]: update logo display logic by @hwhsu1231 in #5033
- fix[docs]: fix JSON field annotations in
compiling-a-contractby @kuzdogan in #5038 - fix[venom]: phi single use fix by @HodanPlodky in #5009
- fix[venom]: release nonreentrant lock on internal function return by @banteg in #5065
- fix[tool]: include transitive interface imports in integrity sum by @banteg in #5077
- feat[venom]: add dynamic allocation lowering by @harkal in #4922
- feat[lang]: add custom errors by @AlbertoCentonze in #4791
New Contributors
- @hwhsu1231 made their first contribution in #5033
Full Changelog: v0.5.0a2...v0.5.0a3
v0.5.0a2
What's Changed
- chore[ci]: update
actions/checkoutandactions/setup-pythonby @pcaversaccio in #4954 - feat[venom]: gas bench by @harkal in #4945
- chore[tool]: remove redundant logic from makefile by @Sporarum in #4962
- fix[codegen]: catch state modifying functions in loop setup by @tserg in #3884
- chore[tool]: update black to v0.26 by @Sporarum in #4953
- chore[ux]: ignore format commit by @Sporarum in #4964
- fix[build]!: remove dev dependencies from published package by @Sporarum in #4932
- fix[docs]: document
layoutin JSON compiler interface by @manuelwedler in #4913 - fix[lang]: forbid docstring-only function body by @Sporarum in #4972
- fix[venom]: fix venom invoke copy-forwarding gas regressions by @harkal in #4944
- feat[tool]: add
--disable-static-exceptionsflag by @cyberthirst in #4862 - chore[docs]: document abstract methods by @Sporarum in #4946
- refactor[test]: demote
StaticAssertionExceptionin oob tests by @HodanPlodky in #4973 - fix[ci]: fix docker build by @Sporarum in #4977
- fix[venom]: avoid address attr lowering for struct fields by @banteg in #4983
- refactor[test]: move some arithmetic examples out of -m fuzzing by @Sporarum in #4995
- fix[lang]: allow decimals in built-ins unconditionally by @Sporarum in #4978
- fix[codegen]: remove silent fallback for bool kwargs in venom pipeline by @banteg in #4984
- fix[lang]: fix overly conservative state access simulation for
__at__()by @Sporarum in #4970 - chore[docs]: improve details in skills by @Sporarum in #5004
- fix[venom]: align print selector storage by @banteg in #4994
- fix[venom]: fix
raw_callkwarg evaluation order by @banteg in #4985 - fix[venom]: fix
extract32overflow andbytesNclamping by @banteg in #4986 - feat[lang]!: add unbounded types by @Sporarum in #4967
- fix[venom]: fix
raw_callkwarg evaluation order by @banteg in #4988 - fix[ux]: fix panic in pow folding by @SAY-5 in #4996
- fix[ux]: dedup default-argument expanded ABI entries in
from_json_abiby @yasumorishima in #4908 - fix[tool]: serialize symbolic lengths in metadata by @xrchz in #5010
- fix[venom]: invalidate returndata copy facts by @banteg in #4992
- fix[venom]: add missing scalar conversion validation by @banteg in #4987
- feat[docs]: add deep verification section by @lufa23 in #5011
- refactor[venom]: simplify bytestring ABI encoder zero-padding by @charles-cooper in #4918
- fix[venom]: skip absent vars in stack cleanup by @lawrence3699 in #4941
- fix[venom]: keep storage writes before selfdestruct by @banteg in #4991
- perf[venom]: mem passes by @HodanPlodky in #4968
- fix[docs]: update interface return-bound note by @lufa23 in #5016
New Contributors
- @manuelwedler made their first contribution in #4913
- @banteg made their first contribution in #4983
- @SAY-5 made their first contribution in #4996
- @yasumorishima made their first contribution in #4908
- @xrchz made their first contribution in #5010
- @lawrence3699 made their first contribution in #4941
Full Changelog: v0.5.0a1...v0.5.0a2
v0.5.0a1
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 ...
v0.4.3 ("Buttermilk Racer")
What's Changed
v0.4.3 introduces the @raw_return decorator which allows contracts to return bytes directly without ABI-encoding, which enables new proxy contract use cases. The default EVM version has been updated to prague, and several improvements have been made to the Venom optimizer pipeline.
Full release notes hosted at https://docs.vyperlang.org/en/latest/release-notes.html#v0-4-3-buttermilk-racer (source on github).
New Contributors
- @gap-editor made their first contribution in #4680
- @crypdoughdoteth made their first contribution in #4641
Full Changelog: v0.4.2...v0.4.3
v0.4.3rc1
What's Changed
- fix[venom]: reduce single-use expansion by @HodanPlodky in #4667
- chore[ci]: update gitignore by @charles-cooper in #4690
- feat[lang]:
@raw_returndecorator by @charles-cooper in #4568 - fix[docs]: fix build status in README.md by @gap-editor in #4680
- refactor[test]: rename venom
paraminstruction in tests by @charles-cooper in #4689 - fix[lang]: disallow
@raw_returnin interfaces by @charles-cooper in #4700 - fix[tool]: add metadata for ctor functions by @charles-cooper in #4668
- feat[venom]: rewrite grammar to LALR(1) by @charles-cooper in #4687
- fix[venom]: fix function inliner
clonefunction by @charles-cooper in #4696 - fix[venom]: fix incorrect write reordering in
DFTPassby @charles-cooper in #4695 - feat[docs]: add docs for
@raw_returndecorator by @charles-cooper in #4699 - fix[tool]: fix invalid quotes in
-f cfgoutput by @crebsy in #4672 - fix[docs]: clarify
n_slotsrequirement in custom layout file by @crypdoughdoteth in #4641 - feat[tool]!: make
praguethe default evm version by @pcaversaccio in #4633
New Contributors
- @gap-editor made their first contribution in #4680
- @crypdoughdoteth made their first contribution in #4641
Full Changelog: v0.4.2...v0.4.3rc1
v0.4.2 ("Lernaean Hydra")
What's Changed
v0.4.2 includes a new raw_create() builtin which allows users to build more generic factories in Vyper. It also moves the sqrt() builtin to a pure Vyper module, involving a refactor which will allow more stdlib functionality to be written in Vyper in the future.
Additionally, Venom has undergone more improvements, including a CSE elimination pass, dead-store elimination pass, as well as moving more items in the calling convention to the stack in the venom pipeline. Benchmark contracts are now typically 5% smaller.
Two low severity GHSAs have been patched in this release.
Full release notes hosted at https://docs.vyperlang.org/en/latest/release-notes.html#v0-4-2-lernaean-hydra (source on github).
New Contributors
- @2xic made their first contribution in #4475
- @iamslown made their first contribution in #4543
- @Romain-Geissler-1A made their first contribution in #4592
- @crebsy made their first contribution in #4637
Full Changelog: v0.4.1...v0.4.2
v0.4.2rc1
What's Changed
- fix[codegen]: relax the filter for augassign oob check by @charles-cooper in #4497
- release[docs]: add release notes for v0.4.1 ("Tokara Habu") by @charles-cooper in #4310
- fix[docs]: update v0.4.1 release date by @charles-cooper in #4502
- perf[venom]: improve performance of
MakeSSAby @charles-cooper in #4491 - feat[test]: add tests for venom dload lowering pass by @HodanPlodky in #4471
- feat[venom]: add varname freshener by @charles-cooper in #4484
- refactor[test]: add more tests with hevm venom harness by @HodanPlodky in #4493
- fix[ux]: don't warn for logs with 0 positional args by @charles-cooper in #4501
- fix[docs]: update
skip_contract_checkdocs by @trocher in #4511 - fix[parser]: block value assignment in for targets by @charles-cooper in #4492
- feat[test]: add negative hevm tests by @charles-cooper in #4504
- feat[venom]: add basic semantic check machinery to venom by @HodanPlodky in #4483
- feat[test]: add more example contracts by @charles-cooper in #4500
- refactor[lang]: refactor decorator parsing by @charles-cooper in #4490
- fix[venom]: fix sccp resolution of truthy
jnzby @charles-cooper in #4505 - feat[test]: add hevm to
get_contractharness by @charles-cooper in #4499 - refactor[venom]: use
InstUpdaterin more passes by @charles-cooper in #4508 - fix[docs]: fix venom examples by @2xic in #4475
- feat[venom]: allow labels to be assigned to variables by @harkal in #4514
- feat[venom]: add
callocainstruction by @charles-cooper in #4376 - chore[test]: add test for struct member names by @tserg in #3527
- fix[codegen]: interleaved effects eval for some builtins by @charles-cooper in #4156
- fix[venom]: fix var defined check for unreachable blocks by @HodanPlodky in #4518
- fix[lang]: extend
as_wei_valueto all numeric types by @trocher in #3498 - feat[venom]: make
reverta bb terminator by @charles-cooper in #4529 - fix[ci]: suppress hypothesis health check by @charles-cooper in #4533
- feat[venom]: parse hex literals in text format by @harkal in #4532
- refactor[venom]: simplify
SimplifyCFGpass by @charles-cooper in #4528 - feat[lang]: add
raw_create()builtin by @charles-cooper in #4204 - fix[ux]: fold
keccakandsha256of constant hexbytes by @tserg in #4536 - feat[venom]: improve memmerge pass by @HodanPlodky in #4422
- fix[lang]!: forbid calling
__default__by @sandbubbles in #4371 - fix[test]: fix warnings in thirdparty tests by @charles-cooper in #4547
- refactor[venom]: add dom walk property by @harkal in #4546
- feat[lang]: bubble up create revertdata by @charles-cooper in #4540
- feat[lang]!: remove deprecated bitwise builtins by @cyberthirst in #4552
- refactor[parser]: refactor pragma parsing by @charles-cooper in #4530
- fix[ux]: typechecking for loop annotation of list variable by @tserg in #4550
- feat[lang]: remove
@externaldecorator from builtin interfaces by @charles-cooper in #4562 - feat[lang]: remove one-warning limit from builtins by @charles-cooper in #4542
- feat[venom]: improvements for iszero handling and memmerge by @HodanPlodky in #4469
- feat[lang]: enable bitwise ops for
bytesMtypes by @charles-cooper in #4538 - chore[docs]: remove dead link from internal documentation by @iamslown in #4543
- refactor[venom]: update more passes to use
InstUpdaterby @charles-cooper in #4516 - refactor[parser]: put settings on Module AST node by @charles-cooper in #4569
- fix[lang]: block modules in structs by @cyberthirst in #4566
- fix[lang]: filter oob array access during folding by @charles-cooper in #4571
- fix[codegen]: fix overcopying of bytes in
make_setterby @charles-cooper in #4419 - feat[lang]!: move sqrt to new stdlib
mathmodule by @cyberthirst in #4520 - fix[lang]!: ban calling nonreentrant functions from nonreentrant functions by @charles-cooper in #4574
- fix[lang]: disallow some builtins in
purefunctions by @tserg in #3157 - fix[lang]: only reserve builtins at the top level by @charles-cooper in #4578
- feat[venom]: tune function inliner by @charles-cooper in #4584
- feat[venom]: add assert optimizer by @charles-cooper in #4585
- fix[venom]: revert-to-assert should invalidate dfg by @charles-cooper in #4586
- chore[lang]: remove
sha3andimportlib_metadataimports by @charles-cooper in #4588 - chore[tool]: widen version bounds for
packagingby @charles-cooper in #4590 - feat[venom]: add memory SSA analysis by @harkal in #4555
- chore[tool]: widen version bounds for
asttokensby @Romain-Geissler-1A in #4592 - feat[venom]: add common subexpression elimination by @HodanPlodky in #4241
- fix[venom]: fix
.nameinvalidation inMakeSSAby @charles-cooper in #4545 - refactor[venom]: add annotation to append_instruction by @charles-cooper in #4583
- fix[venom]: fix handling of params in
venom_to_assemblyby @charles-cooper in #4587 - refactor[test]: remove
selfdestructfrom example contracts by @cyberthirst in #4537 - refactor[venom]: extract liveness and cfg data structures by @charles-cooper in #4595
- feat[venom]: improve
dload/mstoremerging by @HodanPlodky in #4570 - feat[venom]: mark loads as non-volatile by @charles-cooper in #4388
- feat[docs]: document order of evalution of arguments of
logby @cyberthirst in #4617 - feat[lang]: nonreentrancy by default by @charles-cooper in #4563
- fix[venom]: fix
DominatorTreeAnalysis.dominates()by @charles-cooper in #4615 - fix[docs]: fix code block rst formatting by @charles-cooper in #4618
- refactor[stdlib]: refactor
math.sqrtimplementation by @charles-cooper in #4575 - fix[tool]: fix layout export with nonreentrancy pragma on by @cyberthirst in #4621
- fix[lang]: disallow staticcall in pure context by @cyberthirst in #4619
- fix[lang]: disallow duplicate getter annotations by @cyberthirst in #4623
- fix[lang]: disable nonreentrant behavior of immutable and constant getters by @cyberthirst in #4622
New Contributors
- @2xic made their first contribution in #4475
- @iamslown made their first contribution in #4543
- @Romain-Geissler-1A made their first contribution in #4592
Full Changelog: v0.4.1rc3...v0.4.2rc1
v0.4.1 ("Tokara Habu")
What's Changed
v0.4.1 is primarily a polishing release, focusing on bug fixes, UX
improvements, and security-related fixes (with four low-to-moderate
severity GHSA reports published). However, a substantial amount of
effort has also been invested in improving the Venom pipeline, resulting
in better performance and code generation from the Venom pipeline. Venom
can be enabled by passing the --venom or --experimental-codegen flag
to the Vyper compiler (they are aliases of each other). Venom code can
now also be compiled directly, using the venom binary (included in
this release).
Breaking changes
- feat[lang]!: make
@externalmodifier optional in.vyifiles (#4178) - feat[codegen]!: check
returndatasizeeven whenskip_contract_checkis set (#4148) - fix[stdlib]!: fix
IERC4626signatures (#4425) - fix[lang]!: disallow absolute relative imports (#4268)
Other new features and improvements
- feat[lang]: add
module.__at__()to cast to interface (#4090) - feat[lang]: use keyword arguments for event instantiation (#4257)
- feat[lang]: add native hex string literals (#4271)
- feat[lang]: introduce
manaas an alias forgas(#3713) - feat[lang]: support top level
"abi"key in json interfaces (#4279) - feat[lang]: support flags from imported interfaces (#4253)
- feat[ux]: allow "compiling"
.vyifiles (#4290) - feat[ux]: improve hint for events kwarg upgrade (#4275)
Tooling / CLI
- feat[tool]: add
-Werrorand-Wnoneoptions (#4447) - feat[tool]: support storage layouts via
jsonand.vyzinputs (#4370) - feat[tool]: add integrity hash to initcode (#4234)
- fix[ci]: fix commithash calculation for pypi release (#4309)
- fix[tool]: include structs in
-f interfaceoutput (#4294) - feat[tool]: separate import resolution pass (#4229)
- feat[tool]: add all imported modules to
-f annotated_astoutput (#4209) - fix[tool]: add missing internal functions to metadata (#4328)
- fix[tool]: update VarAccess pickle implementation (#4270)
- fix[tool]: fix output formats for .vyz files (#4338)
- fix[tool]: add missing user errors to error map (#4286)
- fix[ci]: fix README encoding in
setup.py(#4348) - refactor[tool]: refactor
compile_from_zip()(#4366)
Bugfixes
- fix[lang]: add
raw_log()constancy check (#4201) - fix[lang]: use folded node for typechecking (#4365)
- fix[ux]: fix error message for "staticall" typo (#4438)
- fix[lang]: fix certain varinfo comparisons (#4164)
- fix[codegen]: fix
abi_encodebuffer size in external calls (#4202) - fix[lang]: fix
==and!=bytesM folding (#4254) - fix[lang]: fix
.vyifunction body check (#4177) - fix[venom]: invalid jump error (#4214)
- fix[lang]: fix precedence in floordiv hint (#4203)
- fix[lang]: define rounding mode for sqrt (#4486)
- fix[codegen]: disable augassign with overlap (#4487)
- fix[codegen]: relax the filter for augassign oob check (#4497)
- fix[lang]: fix panic in call cycle detection (#4200)
- fix[tool]: update
InterfaceT.__str__implementation (#4205) - fix[tool]: fix classification of AST nodes (#4210)
- fix[tool]: keep
experimentalCodegenblank in standard json input (#4216) - fix[ux]: fix relpath compiler panic on windows (#4228)
- fix[ux]: fix empty hints in error messages (#4351)
- fix[ux]: fix validation for
abi_encode()method_idkwarg (#4369) - fix[ux]: fix false positive for overflow in type checker (#4385)
- fix[ux]: add missing filename to syntax exceptions (#4343)
- fix[ux]: improve error message on failed imports (#4409)
- fix[parser]: fix bad tokenization of hex strings (#4406)
- fix[lang]: fix encoding of string literals (#3091)
- fix[codegen]: fix assertions for certain precompiles (#4451)
- fix[lang]: allow
print()schema larger than 32 bytes (#4456) - fix[codegen]: fix iteration over constant literals (#4462)
- fix[codegen]: fix gas usage of iterators (#4485)
- fix[codegen]: cache result of iter eval (#4488)
- fix[lang]: fix recursive interface imports (#4303)
- fix[tool]: roll back OS used to build binaries (#4494)
Patched security advisories (GHSAs)
- success of certain precompiles not checked (GHSA-vgf2-gvx8-xwc3
- AugAssign evaluation order causing OOB write within object (GHSA-4w26-8p97-f4jp
sqrtdoesn't define rounding behavior (GHSA-2p94-8669-xg86- multiple eval in
forlist iterator (GHSA-h33q-mhmp-8p67
Venom improvements
- feat[venom]: add venom parser (#4381)
- feat[venom]: new
DFTPassalgorithm (#4255) - feat[venom]: only
stack_reorderbefore join points (#4247) - feat[venom]: add function inliner (#4478)
- feat[venom]: add binop optimizations (#4281)
- feat[venom]: offset instruction (#4180)
- feat[venom]: make dft-pass commutative aware (#4358)
- perf[venom]: add
OrderedSet.last()(#4236) - feat[venom]: improve liveness computation time (#4086)
- fix[venom]: fix invalid
phis after SCCP (#4181) - fix[venom]: clean up sccp pass (#4261)
- refactor[venom]: remove
dup_requirementsanalysis (#4262) - fix[venom]: remove duplicate volatile instructions (#4263)
- fix[venom]: fix
_stack_reorder()routine (#4220) - feat[venom]: store expansion pass (#4068)
- feat[venom]: add effects to instructions (#4264)
- feat[venom]: add small heuristic for cleaning input stack (#4251)
- refactor[venom]: refactor module structure (#4295)
- refactor[venom]: refactor sccp pass to use dfg (#4329)
- refactor[venom]: update translator for
deployinstruction (#4318) - feat[venom]: make cfg scheduler "stack aware" (#4356)
- feat[venom]: improve liveness computation (#4330)
- refactor[venom]: optimize lattice evaluation (#4368)
- perf[venom]: improve OrderedSet operations (#4246)
- fix[venom]: promote additional memory locations to variables (#4039)
- feat[venom]: add codesize optimization pass (#4333)
- fix[venom]: fix unused variables pass (#4259)
- refactor[venom]: move commutative instruction set (#4307)
- fix[venom]: add
make_ssapass after algebraic optimizations (#4292) - feat[venom]: reduce legacy opts when venom is enabled (#4336)
- fix[venom]: fix duplicate allocas (#4321)
- fix[venom]: add missing extcodesize+hash effects (#4373)
- refactor[ux]: add
venoma...
v0.4.1rc3
What's Changed
- fix[codegen]: fix gas usage of iterators by @charles-cooper in #4485
- fix[codegen]: cache result of iter eval by @charles-cooper in #4488
- fix[lang]: define rounding mode for sqrt by @charles-cooper in #4486
- fix[codegen]: disable augassign with overlap by @charles-cooper in #4487
- fix[tool]: roll back OS used to build binaries by @charles-cooper in #4494
Full Changelog: v0.4.1rc2...v0.4.1rc3
v0.4.1rc2
What's Changed
- chore[ci]: improve coverage jobs by @tserg in #4457
- chore[tool]: mention that output format is comma separated by @antazoey in #4467
- chore[docs]: add giveth to
FUNDING.ymlby @benber86 in #4466 - refactor[venom]: add
make_nop()helper function by @harkal in #4470 - feat[test]: add hevm harness for venom passes by @charles-cooper in #4460
- chore[ci]: update ubuntu image for
buildjob by @charles-cooper in #4473 - feat[venom]: improve load elimination by @charles-cooper in #4407
- feat[ux]: improve hint for events kwarg upgrade by @charles-cooper in #4275
- refactor[venom]: replace
bb.mark_for_removalwithmake_nopby @charles-cooper in #4474 - fix[lang]: allow
print()schema larger than 32 bytes by @charles-cooper in #4456 - fix[codegen]: fix iteration over constant literals by @charles-cooper in #4462
- feat[venom]: add function inliner by @harkal in #4478
- feat[tool]: add
-Werrorand-Wnoneoptions by @charles-cooper in #4447
Full Changelog: v0.4.1rc1...v0.4.1rc2