v0.4.0b1 (“Nagini”)
Pre-release
Pre-release
charles-cooper
released this
26 Feb 19:45
·
224 commits
to master
since this release
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 #3793
- chore: replace occurrences of 'enum' by 'flag' by @trocher in #3794
- introduce floordiv, ban regular div for integers by @charles-cooper in #2937
- feat: default code offset = 3 by @bout3fiddy in #3454
- docs: floordiv by @tserg in #3797
- feat: improve warnings, refactor
vyper_warn()
by @charles-cooper in #3800 - fix: prevent range over decimal by @trocher in #3798
- chore: add another borrowship test by @charles-cooper in #3802
- fix: pickleability of
CompilerData
by @charles-cooper in #3803 - chore: add prefix to ERC interfaces by @tserg in #3804
- fix: mutability check for interface implements by @tserg in #3805
- feat[lang]: implement function exports by @charles-cooper in #3786
- docs: add missing
annotated_ast
flag by @pcaversaccio in #3813 - feat[lang]: auto-export events in ABI by @charles-cooper in #3808
- docs: prepare v0.4.0 beta by @charles-cooper in #3812
- feat[ux]: improve error message for importing ERC20 by @charles-cooper in #3816
New Contributors
- @engn33r made their first contribution in #3658
- @iFrostizz made their first contribution in #3662
- @AlbertoCentonze made their first contribution in #3697
- @f3rmion made their first contribution in #3715
- @0x0077 made their first contribution in #3680
- @Thabokani made their first contribution in #3749
- @BoboTiG made their first contribution in #3747
Full Changelog: v0.3.10...v0.4.0b1