Releases: vyperlang/vyper
v0.4.0b4
What's Changed
- docs: update logo in readme, remove competition reference by @charles-cooper in #3837
- docs: add rationale for floordiv rounding behavior by @charles-cooper in #3845
- fix[ci]: release artifacts by @charles-cooper in #3839
Full Changelog: v0.4.0b3...v0.4.0b4
v0.4.0b3
What's Changed
- feat[lang]: protect external calls with keyword by @charles-cooper in #2938
- chore[ci]: roll back GH actions/*artifacts version by @charles-cooper in #3838
Full Changelog: v0.4.0b2...v0.4.0b3
v0.4.0b2
What's Changed
- docs: fixup release date by @charles-cooper in #3819
- fix[codegen]: bounds check for signed index accesses by @charles-cooper in #3817
- feat[tool]: validate AST nodes early in the pipeline by @charles-cooper in #3809
- feat[tool]: delay global constraint check by @charles-cooper in #3810
- chore[ci]: fix apt-get failure in era pipeline by @charles-cooper in #3821
- chore[ux]: improve an exports error message by @charles-cooper in #3822
- chore: Upgrade GitHub action dependencies by @DanielSchiavini in #3807
- fix[codegen]: range bound check for signed integers by @DanielSchiavini in #3814
- chore: remove tox rules for lint commands by @charles-cooper in #3826
- feat[tool]: export variable read/write access by @charles-cooper in #3790
- chore: improve codegen test coverage report by @charles-cooper in #3824
- chore[ci]: pin eth-abi for decode regression by @charles-cooper in #3834
- feat: add utility functions to
OrderedSet
by @harkal in #3833
Full Changelog: v0.4.0b1...v0.4.0b2
v0.4.0b1 (“Nagini”)
v0.4.0 represents a major overhaul to the Vyper language. Notably, it overhauls the import system and adds support for code reuse. It also adds a new, experimental backend to Vyper which lays the foundation for improved analysis, optimization and integration with third party tools.
What's Changed
- Update
FUNDING.yml
by @pcaversaccio in #3636 - docs: fix nit in v0.3.10 release notes by @charles-cooper in #3638
- docs: add note on
pragma
parsing by @pcaversaccio in #3640 - fix: block memory allocation overflow by @charles-cooper in #3639
- fix: reorder compilation of branches in stmt.py by @charles-cooper in #3603
- feat: remove builtin constants by @tserg in #3350
- refactor: merge
annotation.py
andlocal.py
by @tserg in #3456 - fix: add missing test for memory allocation overflow by @charles-cooper in #3650
- fix: edit link to style guide by @engn33r in #3658
- docs: retire security@vyperlang.org by @charles-cooper in #3660
- chore: fix test for
slice
by @tserg in #3633 - refactor: internal handling of imports by @charles-cooper in #3655
- docs: update resources section by @pcaversaccio in #3656
- improvement: assert descriptions in Crowdfund finalize() and participate() by @nfwsncked in #3064
- add abi_types unit tests by @iFrostizz in #3662
- fix: remove hex-ir from format cli options list by @engn33r in #3657
- refactor: test directory structure by @charles-cooper in #3664
- feat: deprecate
vyper-serve
by @tserg in #3666 - perf: lazy eval of f-strings in IRnode ctor by @charles-cooper in #3602
- docs: add script to help working on the compiler by @charles-cooper in #3674
- refactor: builtin functions inherit from
VyperType
by @tserg in #3559 - docs: add warnings at the top of all example token contracts by @charles-cooper in #3676
- docs: typo in
on_chain_market_maker.vy
by @eltociear in #3677 - feat: implement new IR for vyper (venom IR) by @harkal in #3659
- chore: move venom tests to
tests/unit/compiler
by @charles-cooper in #3684 - add comptime check for uint2str input by @iFrostizz in #3671
- Refactor ctx.add_instruction() and friends by @harkal in #3685
- fix: remove .keyword from Call AST node by @charles-cooper in #3689
- chore: test all output formats by @charles-cooper in #3683
- feat: implement "stateless" modules by @charles-cooper in #3663
- feat: add short options
-v
and-O
to the CLI by @charles-cooper in #3695 - feat: search path resolution for cli by @charles-cooper in #3694
- fix: type annotation of helper function by @harkal in #3702
- chore: improve exception handling in IR generation by @charles-cooper in #3705
- feat: Implement target constrained venom jump instruction by @harkal in #3687
- chore: update lint dependencies by @DanielSchiavini in #3704
- feat: replace
enum
withflag
keyword by @AlbertoCentonze in #3697 - feat: Refactor assert_tx_failed into a context by @DanielSchiavini in #3706
- feat: allow range with two arguments and bound by @DanielSchiavini in #3679
- feat: improve panics in IR generation by @charles-cooper in #3708
- docs: clarify
address.codehash
for empty account by @pcaversaccio in #3711 - docs: indexed arguments for events are limited by @f3rmion in #3715
- refactor: reimplement AST folding by @tserg in #3669
- feat: remove
deploy
instruction from venom by @harkal in #3703 - feat: require type annotations for loop variables by @tserg in #3596
- feat: Add
bb
andbb_runtime
output options by @harkal in #3700 - refactor: constant folding by @charles-cooper in #3719
- chore: improve diagnostics for invalid for loop annotation by @tserg in #3721
- refactor: for loop target parsing by @charles-cooper in #3724
- fix: allow using interface defs from imported modules by @charles-cooper in #3725
- Add Vyper online compiler tooling by @0x0077 in #3680
- feat: add support for constants in imported modules by @charles-cooper in #3726
- chore: bump sphinx version by @charles-cooper in #3728
- refactor: remove duplicate terminus checking code by @tserg in #3541
- feat: allow constant interfaces by @tserg in #3718
- fix: dead code analysis inside for loops by @charles-cooper in #3731
- fix[venom]: liveness analysis in some loops by @harkal in #3732
- feat: add more venom instructions by @charles-cooper in #3733
- fix:
opcodes
andopcodes_runtime
outputs by @trocher in #3735 - fix: concat buffer bug by @charles-cooper in #3738
- chore: fix typos by @Thabokani in #3749
- docs: Fix typos by @BoboTiG in #3747
- docs: Upgrade dependencies and fixes by @BoboTiG in #3745
- fix: disallow
value=
passing for delegate and static raw_calls by @charles-cooper in #3755 - feat: rename
vyper.interfaces
toethereum.ercs
by @ControlCplusControlV in #3741 - fix: bad assertion in expr.py by @charles-cooper in #3758
- feat: remove Index AST node by @tserg in #3757
- refactor:
ExprVisitor
type validation by @tserg in #3739 - perf: reimplement
IRnode.__deepcopy__
by @charles-cooper in #3761 - chore: improve exception for type validation by @tserg in #3759
- feat[lang]: singleton modules with ownership hierarchy by @charles-cooper in #3729
- fix: fuzz test not updated to use TypeMismatch by @charles-cooper in #3768
- chore: run mypy as part of lint rule in Makefile by @charles-cooper in #3771
- chore: fix StringEnum.generate_next_value signature by @charles-cooper in #3770
- docs: adopt a new theme:
shibuya
by @BoboTiG in #3754 - chore: improve some error messages by @charles-cooper in #3775
- feat: add python
sys.path
to vyper path by @charles-cooper in #3763 - fix: iterator modification analysis by @charles-cooper in #3764
- feat[lang]: remove named reentrancy locks by @charles-cooper in #3769
- refactor:
get_search_paths()
for vyper cli by @charles-cooper in #3778 - docs: add missing cli flags by @pcaversaccio in #3736
- perf: levenshtein optimization by @charles-cooper in #3780
- feat: frontend optimizations by @charles-cooper in #3781
- feat: optimize
VyperNode.deepcopy
by @charles-cooper in #3784 - chore: deduplicate test files by @tserg in #3773
- feat: more frontend optimizations by @charles-cooper in #3785
- feat[lang]: use keyword arguments for struct instantiation by @tserg in #3777
- chore: fix formatting and docs for new struct instantiation syntax by @tserg in #3792
- fix: assembly dead code eliminator by @charles-cooper in #3791
- chore: add color to mypy output by @charles-cooper in #3...
v0.3.10 ("Black Adder")
v0.3.10 is a performance focused release that additionally ships numerous bugfixes. It adds a codesize
optimization mode (#3493), adds new vyper-specific #pragma
directives (#3493), uses Cancun’s MCOPY
opcode for some compiler generated code (#3483), and generates selector tables which now feature O(1) performance (#3496).
Breaking changes
- add runtime code layout to initcode (#3584)
- drop evm versions through istanbul (#3470)
- remove vyper signature from runtime (#3471)
- only allow valid identifiers to be nonreentrant keys (#3605)
Non-breaking changes and improvements
- O(1) selector tables (#3496)
- implement bound= in ranges (#3537, #3551)
- add optimization mode to vyper compiler (#3493)
- improve batch copy performance (#3483, #3499, #3525)
Notable fixes
- fix ecrecover() behavior when signature is invalid (GHSA-f5x6-7qgp-jhf3, #3586)
- fix: order of evaluation for some builtins (#3583, #3587)
- fix: memory allocation in certain builtins using msize (#3610)
- fix: _abi_decode() input validation in certain complex expressions (#3626)
- fix: pycryptodome for arm builds (#3485)
- let params of internal functions be mutable (#3473)
- typechecking of folded builtins in (#3490)
- update tload/tstore opcodes per latest 1153 EIP spec (#3484)
- fix: raw_call type when max_outsize=0 is set (#3572)
- fix: implements check for indexed event arguments (#3570)
- fix: type-checking for _abi_decode() arguments (#3626)
Other docs updates, chores and fixes
- relax restrictions on internal function signatures (#3573)
- note on security advisory in release notes for versions 0.2.15, 0.2.16, and 0.3.0 (#3553)
- fix: yanked version in release notes (#3545)
- update release notes on yanked versions (#3547)
- improve error message for conflicting methods IDs (#3491)
- document epsilon builtin (#3552)
- relax version pragma parsing (#3511)
- fix: issue with finding installed packages in editable mode (#3510)
- add note on security advisory for ecrecover in docs (#3539)
- add asm option to cli help (#3585)
- add message to error map for repeat range check (#3542)
- fix: public constant arrays (#3536)
New Contributors
- @0xmahdirostami made their first contribution in #3558
- @shmuel44 made their first contribution in #3566
Full Changelog: v0.3.9...v0.3.10
v0.3.10rc5
What's Changed
- fix: metadata output interaction with natspec by @charles-cooper in #3627
- fix: improve test case inputs in selector table fuzz by @charles-cooper in #3625
Full Changelog: v0.3.10rc4...v0.3.10rc5
v0.3.10rc4
What's Changed
- docs: add README banner about Vyper audit competition by @miohtama in #3599
- fix: only allow valid identifiers to be nonreentrant keys by @charles-cooper in #3605
- fix: dense selector table when there are empty buckets by @charles-cooper in #3606
- chore: add tests for selector table stability by @charles-cooper in #3608
- chore: always pass era-tester CI by @tserg in #3415
- chore: tighten bounds for setuptools_scm by @charles-cooper in #3613
- fix: memory allocation in certain builtins using
msize
by @charles-cooper in #3610 - chore: add notes to selector table implementation by @charles-cooper in #3618
- docs: mcopy is enabled with cancun target by @charles-cooper in #3620
- chore: fix some documentation inconsistencies by @charles-cooper in #3624
- fix:
_abi_decode()
validation by @charles-cooper in #3626 - fix: type check abi_decode arguments by @charles-cooper in #3623
- chore: add metadata to vyper-json by @tserg in #3622
Full Changelog: v0.3.10rc3...v0.3.10rc4
v0.3.10rc3
chore(ci): fix binary names in release asset upload (#3597) rename binary during asset upload to properly escape the filename for the github API call. (Github API states: > GitHub renames asset filenames that have special characters, non-alphanumeric characters, and leading or trailing periods. The "List release assets" endpoint lists the renamed filenames. For more information and help, contact GitHub Support. )
v0.3.10rc2
This release candidate fixes a binary packaging issue from https://github.com/vyperlang/vyper/releases/tag/v0.3.10rc1.
The fix was applied in #3594.
What's Changed
- fix: dependency specification for
packaging
by @charles-cooper in #3594
Full Changelog: v0.3.10rc1...v0.3.10rc2
v0.3.10rc1
Release candidate for https://github.com/vyperlang/vyper/releases/tag/v0.3.10, the below changes are a subset of those documented in the v0.3.10 release notes.
v0.3.10 is a performance focused release. It adds a codesize optimization mode (#3493), adds new vyper-specific #pragma directives (#3493), uses Cancun’s MCOPY opcode for some compiler generated code (#3483), and generates selector tables which now feature O(1) performance (#3496).
Breaking changes
- add runtime code layout to initcode (#3584)
- drop evm versions through istanbul (#3470)
- remove vyper signature from runtime (#3471)
Non-breaking changes and improvements
- O(1) selector tables (#3496)
- implement bound= in ranges (#3537, #3551)
add optimization mode to vyper compiler (#3493) - improve batch copy performance (#3483, #3499, #3525)
Notable fixes:
- fix ecrecover() behavior when signature is invalid (GHSA-f5x6-7qgp-jhf3, #3586)
- fix: order of evaluation for some builtins (#3583, #3587)
- fix: pycryptodome for arm builds (#3485)
- let params of internal functions be mutable (#3473)
- typechecking of folded builtins in (#3490)
- update tload/tstore opcodes per latest 1153 EIP spec (#3484)
- fix:
raw_call
type whenmax_outsize=0
is set (#3572) - fix: implements check for indexed event arguments (#3570)
Other docs updates, chores and fixes:
- relax restrictions on internal function signatures (#3573)
- note on security advisory in release notes for versions 0.2.15, 0.2.16, and 0.3.0 (#3553)
- fix: yanked version in release notes (#3545)
- update release notes on yanked versions (#3547)
- improve error message for conflicting methods IDs (#3491)
- document epsilon builtin (#3552)
- relax version pragma parsing (#3511)
- fix: issue with finding installed packages in editable mode (#3510)
- add note on security advisory for ecrecover in docs (#3539)
- add asm option to cli help (#3585)
- add message to error map for repeat range check (#3542)
- fix: public constant arrays (#3536)
New Contributors
- @0xmahdirostami made their first contribution in #3558
- @shmuel44 made their first contribution in #3566
Full Changelog: v0.3.9...v0.3.10rc1