From f571cfed954709e0235fc19c3d76129b968bed3f Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Fri, 14 Jun 2024 12:49:24 -0400 Subject: [PATCH 01/18] prep v0.4.0 release --- docs/release-notes.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/release-notes.rst b/docs/release-notes.rst index c107ee5554..529932a1f1 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -14,10 +14,10 @@ Release Notes for advisory links: :'<,'>s/\v(https:\/\/github.com\/vyperlang\/vyper\/security\/advisories\/)([-A-Za-z0-9]+)/(`\2 <\1\2>`_)/g -v0.4.0b1 ("Nagini") +v0.4.0 ("Nagini") ******************* -Date released: TBD +Date released: 2024-06-17 ================== 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. From f26e219052722587d62b5ebe7120ff410e5c6950 Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Fri, 14 Jun 2024 17:27:43 -0400 Subject: [PATCH 02/18] add another line to landing docs --- docs/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.rst b/docs/index.rst index 5baaebb339..3073076a19 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -6,7 +6,7 @@ Vyper ##### -Vyper is a contract-oriented, pythonic programming language that targets the `Ethereum Virtual Machine (EVM) `_. +Vyper is a contract-oriented, Pythonic programming language that targets the `Ethereum Virtual Machine (EVM) `_. As design goals, it prioritizes user safety, encourages clear coding practices via language design and efficient execution. Vyper code is safe, clear and efficient! Principles and Goals ==================== From f53ad03adae3869ee41a02ffc234de316875e2e2 Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Fri, 14 Jun 2024 18:31:29 -0400 Subject: [PATCH 03/18] remove unnecessary words --- docs/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.rst b/docs/index.rst index 3073076a19..9ac59cb63a 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -6,7 +6,7 @@ Vyper ##### -Vyper is a contract-oriented, Pythonic programming language that targets the `Ethereum Virtual Machine (EVM) `_. As design goals, it prioritizes user safety, encourages clear coding practices via language design and efficient execution. Vyper code is safe, clear and efficient! +Vyper is a contract-oriented, Pythonic programming language that targets the `Ethereum Virtual Machine (EVM) `_. It prioritizes user safety, encourages clear coding practices via language design and efficient execution. Vyper code is safe, clear and efficient! Principles and Goals ==================== From 586d7ce21f3cd82acf9b1b7ea4420339095a7771 Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Mon, 17 Jun 2024 12:36:23 -0400 Subject: [PATCH 04/18] add PR entries --- docs/release-notes.rst | 290 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 290 insertions(+) diff --git a/docs/release-notes.rst b/docs/release-notes.rst index 529932a1f1..37a37bf226 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -11,6 +11,8 @@ Release Notes :'<,'>s/\v(https:\/\/github.com\/vyperlang\/vyper\/pull\/)(\d+)/(`#\2 <\1\2>`_)/g ex. in: https://github.com/vyperlang/vyper/pull/3373 ex. out: (`#3373 `_) + remove authorship slugs (leave them on github release page; they have no meaning outside of github though) + :'<,'>s/by @\S\+ //c for advisory links: :'<,'>s/\v(https:\/\/github.com\/vyperlang\/vyper\/security\/advisories\/)([-A-Za-z0-9]+)/(`\2 <\1\2>`_)/g @@ -22,6 +24,294 @@ Date released: 2024-06-17 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. +Breaking Changes +---------------- +* feat[tool]!: make cancun the default evm version in (`#4029 `_) +* feat[lang]!: change the signature of ``block.prevrandao`` in (`#3879 `_) +* feat[lang]!: change ABI type of ``decimal`` to ``int168`` in (`#3696 `_) +* feat[lang]: rename ``_abi_encode`` and ``_abi_decode`` in (`#4097 `_) +* feat[lang]!: add feature flag for decimals in (`#3930 `_) +* feat: default code offset = 3 in (`#3454 `_) +* feat[lang]!: make internal decorator optional in (`#4040 `_) +* feat[lang]: remove named reentrancy locks in (`#3769 `_) +* feat: remove builtin constants in (`#3350 `_) +* feat: deprecate ``vyper-serve`` in (`#3666 `_) +* feat[lang]: use keyword arguments for struct instantiation in (`#3777 `_) +* feat: require type annotations for loop variables in (`#3596 `_) +* feat: replace ``enum`` with ``flag`` keyword in (`#3697 `_) +* feat[lang]: protect external calls with keyword in (`#2938 `_) +* chore[ux]: compute natspec as part of standard pipeline in (`#3946 `_) + +* feat: allow range with two arguments and bound in (`#3679 `_) +* fix[codegen]: range bound check for signed integers in (`#3814 `_) + +* feat: drop istanbul and berlin support in (`#3843 `_) + +* feat: rename ``vyper.interfaces`` to ``ethereum.ercs`` in (`#3741 `_) +* chore: add prefix to ERC interfaces in (`#3804 `_) + +* introduce floordiv, ban regular div for integers in (`#2937 `_) + +Module system +------------- +* refactor: internal handling of imports in (`#3655 `_) +* feat: implement "stateless" modules in (`#3663 `_) +* feat[lang]: export interfaces in (`#3919 `_) +* feat[lang]: singleton modules with ownership hierarchy in (`#3729 `_) +* fix: allow using interface defs from imported modules in (`#3725 `_) +* feat: add support for constants in imported modules in (`#3726 `_) +* fix[lang]: prevent modules as storage variables in (`#4088 `_) +* fix[ux]: improve initializer hint for unimported modules in (`#4145 `_) +* feat: add python ``sys.path`` to vyper path in (`#3763 `_) +* feat[ux]: improve error message for importing ERC20 in (`#3816 `_) +* fix[lang]: fix importing of flag types in (`#3871 `_) +* feat: search path resolution for cli in (`#3694 `_) +* feat[lang]: implement function exports in (`#3786 `_) +* feat[lang]: auto-export events in ABI in (`#3808 `_) +* fix[lang]: transitive exports in (`#3888 `_) +* fix[ux]: error messages relating to initializer issues in (`#3831 `_) +* fix[lang]: recursion in ``uses`` analysis for nonreentrant functions in (`#3971 `_) +* fix[ux]: fix ``uses`` error message in (`#3926 `_) +* fix[lang]: fix ``uses`` analysis for nonreentrant functions in (`#3927 `_) +* fix[lang]: fix a hint in global initializer check in (`#4089 `_) +* fix[lang]: builtin type comparisons in (`#3956 `_) +* fix[tool]: fix ``combined_json`` output for CLI in (`#3901 `_) +* fix[tool]: compile multiple files in (`#4053 `_) + + +Venom +----- +* feat: implement new IR for vyper (venom IR) in (`#3659 `_) +* chore: move venom tests to ``tests/unit/compiler`` in (`#3684 `_) +* feat: Implement target constrained venom jump instruction in (`#3687 `_) +* feat: remove ``deploy`` instruction from venom in (`#3703 `_) +* fix[venom]: liveness analysis in some loops in (`#3732 `_) +* feat: add more venom instructions in (`#3733 `_) +* feat[ir]: add ``make_ssa`` pass to venom pipeline in (`#3825 `_) +* refactor[venom]: use venom pass instances in (`#3908 `_) +* refactor[venom]: refactor venom operand classes in (`#3915 `_) +* feat[venom]: implement ``mem2var`` and ``sccp`` passes in (`#3941 `_) +* refactor[venom]: introduce ``IRContext`` and ``IRAnalysisCache`` in (`#3983 `_) +* feat: add utility functions to ``OrderedSet`` in (`#3833 `_) +* feat[venom]: optimize ``get_basic_block()`` in (`#4002 `_) +* fix[venom]: fix branch eliminator cases in sccp in (`#4003 `_) +* fix[codegen]: same symbol jumpdest merge in (`#3982 `_) +* fix[venom]: fix eval of ``exp`` in sccp in (`#4009 `_) +* refactor[venom]: remove unused method in ``make_ssa.py`` in (`#4012 `_) +* fix[venom]: fix return opcode handling in mem2var in (`#4011 `_) +* fix[venom]: fix ``cfg`` output format in (`#4010 `_) +* chore[venom]: fix output formatting of data segment in ``IRContext`` in (`#4016 `_) +* feat[venom]: add store elimination pass in (`#4021 `_) +* feat[venom]: optimize mem2var and store/variable elimination pass sequences in (`#4032 `_) +* fix[venom]: fix some sccp evaluations in (`#4028 `_) +* feat[venom]: "pickaxe" stack scheduler optimization in (`#3951 `_) +* feat[venom]: remove redundant store elimination pass in (`#4036 `_) +* fix[venom]: remove some dead code in ``venom_to_assembly`` in (`#4042 `_) +* feat[venom]: improve unused variable removal pass in (`#4055 `_) +* feat[venom]: optimize branching in (`#4049 `_) +* feat[venom]: avoid last ``swap`` for commutative ops in (`#4048 `_) +* fix[venom]: remove liveness requests in (`#4058 `_) +* feat[venom]: add algebraic optimization pass in (`#4054 `_) +* fix[venom]: fix list of volatile instructions in (`#4065 `_) +* fix[venom]: remove dominator tree invalidation for store elimination pass in (`#4069 `_) +* feat[venom]: add ``extract_literals`` pass in (`#4067 `_) +* fix[venom]: move loop invariant assertion to entry block in (`#4098 `_) +* fix[venom]: clear ``out_vars`` during calculation in (`#4129 `_) +* fix[venom]: alloca for default arguments in (`#4155 `_) +* Refactor ctx.add_instruction() and friends in (`#3685 `_) +* fix: type annotation of helper function in (`#3702 `_) +* feat[ir]: emit ``djump`` in dense selector table in (`#3849 `_) + +Other new features +------------ +* feat[lang]: add ``revert_on_failure`` kwarg for create builtins in (`#3844 `_) +* feat[lang]: allow downcasting of bytestrings in (`#3832 `_) +* feat[lang]: add ``blobhash()`` builtin in (`#3962 `_) +* feat[lang]: support ``block.blobbasefee`` in (`#3945 `_) + + +Docs +---- +* Update ``FUNDING.yml`` in (`#3636 `_) +* docs: fix nit in v0.3.10 release notes in (`#3638 `_) +* docs: add note on ``pragma`` parsing in (`#3640 `_) +* docs: retire security@vyperlang.org in (`#3660 `_) +* feat[docs]: add more detail to modules docs in (`#4087 `_) +* docs: update resources section in (`#3656 `_) +* docs: add script to help working on the compiler in (`#3674 `_) +* docs: add warnings at the top of all example token contracts in (`#3676 `_) +* docs: typo in ``on_chain_market_maker.vy`` in (`#3677 `_) +* docs: clarify ``address.codehash`` for empty account in (`#3711 `_) +* docs: indexed arguments for events are limited in (`#3715 `_) +* docs: Fix typos in (`#3747 `_) +* docs: Upgrade dependencies and fixes in (`#3745 `_) +* docs: adopt a new theme: ``shibuya`` in (`#3754 `_) +* docs: add missing cli flags in (`#3736 `_) +* chore: fix formatting and docs for new struct instantiation syntax in (`#3792 `_) +* docs: floordiv in (`#3797 `_) +* docs: add missing ``annotated_ast`` flag in (`#3813 `_) +* docs: update logo in readme, remove competition reference in (`#3837 `_) +* docs: add rationale for floordiv rounding behavior in (`#3845 `_) +* chore[docs]: amend ``revert_on_failure`` kwarg docs for create builtins in (`#3921 `_) +* fix[docs]: fix clipped ``endAuction`` method in example section in (`#3969 `_) +* refactor[docs]: refactor security policy in (`#3981 `_) +* chore[docs]: ``implements`` does not check event declarations in (`#4052 `_) +* chore[docs]: add docs for v0.4.0 features in (`#3947 `_) +* fix: edit link to style guide in (`#3658 `_) +* Add Vyper online compiler tooling in (`#3680 `_) +* chore: fix typos in (`#3749 `_) + +Bugfixes +----- +* fix: block memory allocation overflow in (`#3639 `_) +* add comptime check for uint2str input in (`#3671 `_) +* fix[ir]: fix a latent bug in ``sha3_64`` codegen in (`#4063 `_) +* fix[codegen]: bounds check for signed index accesses in (`#3817 `_) +* fix: disallow ``value=`` passing for delegate and static raw_calls in (`#3755 `_) +* fix: dead code analysis inside for loops in (`#3731 `_) +* fix: ``opcodes`` and ``opcodes_runtime`` outputs in (`#3735 `_) +* fix: concat buffer bug in (`#3738 `_) +* fix: bad assertion in expr.py in (`#3758 `_) +* fix: iterator modification analysis in (`#3764 `_) +* refactor: reimplement AST folding in (`#3669 `_) +* fix[lang]: typecheck hashmap indexes with folding in (`#4007 `_) +* fix[lang]: fix array index checks when the subscript is folded in (`#3924 `_) +* feat: allow constant interfaces in (`#3718 `_) +* fix: assembly dead code eliminator in (`#3791 `_) +* fix: prevent range over decimal in (`#3798 `_) +* fix: mutability check for interface implements in (`#3805 `_) +* fix[codegen]: overflow check in ``slice()`` in (`#3818 `_) +* fix[codegen]: fix non-memory reason strings in (`#3877 `_) +* fix[ux]: fix compiler hang for large exponentiations in (`#3893 `_) +* fix[lang]: pure access analysis in (`#3895 `_) +* fix[lang]: allow type expressions inside pure functions in (`#3906 `_) +* fix[codegen]: fix transient codegen for ``slice`` and ``extract32`` in (`#3874 `_) +* fix[codegen]: fix ``raw_log()`` when topics are non-literals in (`#3977 `_) +* fix[codegen]: fix double evals in sqrt, slice, blueprint in (`#3976 `_) +* fix[codegen]: fix double eval in dynarray append/pop in (`#4030 `_) +* fix[codegen]: fix some hardcoded references to ``STORAGE`` location in (`#4015 `_) +* fix[codegen]: fix double eval of start in range expr in (`#4033 `_) +* fix[codegen]: fix ``make_setter`` overlap with internal calls in (`#4037 `_) +* fix[codegen]: fix ``_abi_decode`` buffer overflow in (`#3925 `_) +* fix[ux]: raise ``VersionException`` with source info in (`#3920 `_) +* fix[codegen]: fix ``make_setter`` overlap in ``dynarray_append`` in (`#4059 `_) +* fix[codegen]: zero-length dynarray ``abi_decode`` validation in (`#4060 `_) +* fix[codegen]: recursive dynarray oob check in (`#4091 `_) +* fix[codegen]: ``make_setter`` overlap in the presence of ``staticcall`` in (`#4128 `_) +* fix[codegen]: add back in ``returndatasize`` check in (`#4144 `_) +* fix[lang]: fix ``pow`` folding when args are not literals in (`#3949 `_) + + +Tooling +---- +* feat: Add ``bb`` and ``bb_runtime`` output options in (`#3700 `_) +* fix: remove hex-ir from format cli options list in (`#3657 `_) +* feat: add short options ``-v`` and ``-O`` to the CLI in (`#3695 `_) +* fix: pickleability of ``CompilerData`` in (`#3803 `_) +* feat[tool]: validate AST nodes early in the pipeline in (`#3809 `_) +* feat[tool]: delay global constraint check in (`#3810 `_) +* feat[tool]: export variable read/write access in (`#3790 `_) +* feat[tool]: improvements to AST annotation in (`#3829 `_) +* feat[tool]: add ``node_id`` map to source map in (`#3811 `_) +* chore[tool]: add help text for ``hex-ir`` CLI flag in (`#3942 `_) +* feat[tool]: archive format in (`#3891 `_) +* feat[tool]: add source map for constructors in (`#4008 `_) +* refactor[tool]: refactor storage layout export in (`#3789 `_) +* fix[tool]: fix cross-compilation issues, add windows CI in (`#4014 `_) +* fix[tool]: star option in ``outputSelection`` in (`#4094 `_) + +Performance +----------- +* perf: lazy eval of f-strings in IRnode ctor in (`#3602 `_) +* perf: levenshtein optimization in (`#3780 `_) +* feat: frontend optimizations in (`#3781 `_) +* feat: optimize ``VyperNode.deepcopy`` in (`#3784 `_) +* feat: more frontend optimizations in (`#3785 `_) +* perf: reimplement ``IRnode.__deepcopy__`` in (`#3761 `_) + + + +Misc / refactor +---- +* feat[ir]: add ``eval_once`` sanity fences to more builtins in (`#3835 `_) +* refactor: constant folding in (`#3719 `_) +* fix: reorder compilation of branches in stmt.py in (`#3603 `_) +* refactor[codegen]: make settings into a global object in (`#3929 `_) +* refactor: merge ``annotation.py`` and ``local.py`` in (`#3456 `_) +* refactor: builtin functions inherit from ``VyperType`` in (`#3559 `_) +* fix: remove .keyword from Call AST node in (`#3689 `_) +* refactor: for loop target parsing in (`#3724 `_) +* improvement: assert descriptions in Crowdfund finalize() and participate() in (`#3064 `_) +* chore: improve exception handling in IR generation in (`#3705 `_) +* feat: improve panics in IR generation in (`#3708 `_) +* chore: improve diagnostics for invalid for loop annotation in (`#3721 `_) +* feat: improve warnings, refactor ``vyper_warn()`` in (`#3800 `_) +* fix[ir]: unique symbol name in (`#3848 `_) +* refactor: remove duplicate terminus checking code in (`#3541 `_) +* feat: remove Index AST node in (`#3757 `_) +* refactor: ``ExprVisitor`` type validation in (`#3739 `_) +* chore: improve exception for type validation in (`#3759 `_) +* fix: fuzz test not updated to use TypeMismatch in (`#3768 `_) +* chore: fix StringEnum._generate_next_value_ signature in (`#3770 `_) +* chore: improve some error messages in (`#3775 `_) +* refactor: ``get_search_paths()`` for vyper cli in (`#3778 `_) +* chore: replace occurrences of 'enum' by 'flag' in (`#3794 `_) +* chore: add another borrowship test in (`#3802 `_) +* chore[ux]: improve an exports error message in (`#3822 `_) +* chore: improve codegen test coverage report in (`#3824 `_) +* chore: improve syntax error messages in (`#3885 `_) +* chore[tool]: remove ``vyper-serve`` from ``setup.py`` in (`#3936 `_) +* fix[ux]: replace standard strings with f-strings in (`#3953 `_) +* chore[ux]: remove deprecated python AST classes in (`#3998 `_) +* refactor[ux]: remove deprecated ``VyperNode`` properties in (`#3999 `_) +* chore[ir]: sanity check types in for range codegen in (`#3968 `_) + +Testing suite improvements +-------------------------- +* feat: Refactor assert_tx_failed into a context in (`#3706 `_) +* refactor[test]: bypass ``eth-tester`` and interface with evm backend directly in (`#3846 `_) +* fix: add missing test for memory allocation overflow in (`#3650 `_) +* chore: fix test for ``slice`` in (`#3633 `_) +* add abi_types unit tests in (`#3662 `_) +* refactor: test directory structure in (`#3664 `_) +* chore: test all output formats in (`#3683 `_) +* chore: deduplicate test files in (`#3773 `_) +* chore[ci]: fix apt-get failure in era pipeline in (`#3821 `_) +* chore[ci]: enable python3.12 tests in (`#3860 `_) +* chore[ci]: refactor jobs to use gh actions in (`#3863 `_) +* chore[ci]: use ``--dist worksteal`` from latest ``xdist`` in (`#3869 `_) +* feat[ci]: enable cancun testing in (`#3861 `_) +* chore: run mypy as part of lint rule in Makefile in (`#3771 `_) +* chore: update lint dependencies in (`#3704 `_) +* chore: add color to mypy output in (`#3793 `_) +* chore: remove tox rules for lint commands in (`#3826 `_) +* chore[ci]: roll back GH actions/artifacts version in (`#3838 `_) +* chore: Upgrade GitHub action dependencies in (`#3807 `_) +* chore[ci]: pin eth-abi for decode regression in (`#3834 `_) +* fix[ci]: release artifacts in (`#3839 `_) +* chore[ci]: merge mypy job into lint in (`#3840 `_) +* test: parametrize CI over EVM versions in (`#3842 `_) +* feat[ci]: add PR title validation in (`#3887 `_) +* fix[test]: fix failure in grammar fuzzing in (`#3892 `_) +* feat[test]: add ``xfail_strict``, clean up ``setup.cfg`` in (`#3889 `_) +* fix[ci]: pin hexbytes to pre-1.0.0 in (`#3903 `_) +* feat[test]: add more transient storage tests in (`#3883 `_) +* chore[test]: update hexbytes version and tests in (`#3904 `_) +* fix[test]: fix a bad bound in decimal fuzzing in (`#3909 `_) +* fix[test]: fix a boundary case in decimal fuzzing in (`#3918 `_) +* feat[ci]: update pypi release pipeline to use OIDC in (`#3912 `_) +* chore[ci]: reconfigure single commit validation in (`#3937 `_) +* chore[ci]: downgrade codecov action to v3 in (`#3940 `_) +* feat[ci]: add codecov configuration in (`#4057 `_) +* feat[test]: remove memory mocker in (`#4005 `_) +* chore[test]: always specify the evm backend in (`#4006 `_) +* refactor[test]: change fixture scope in examples in (`#3995 `_) +* fix[test]: fix call graph stability fuzzer in (`#4064 `_) +* feat[test]: implement ``abi_decode`` spec test in (`#4095 `_) +* feat[test]: add more coverage to ``abi_decode`` fuzzer tests in (`#4153 `_) +* chore[test]: add macos to test matrix in (`#4025 `_) +* refactor[test]: change default expected exception type in (`#4004 `_) + v0.3.10 ("Black Adder") *********************** From 1c0a127266c8d38ade0f88e003cc807f3bd01190 Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Mon, 17 Jun 2024 15:15:56 -0400 Subject: [PATCH 05/18] some reordering --- docs/release-notes.rst | 195 ++++++++++++++++++++--------------------- 1 file changed, 93 insertions(+), 102 deletions(-) diff --git a/docs/release-notes.rst b/docs/release-notes.rst index 37a37bf226..7c041aca98 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -27,30 +27,26 @@ v0.4.0 represents a major overhaul to the Vyper language. Notably, it overhauls Breaking Changes ---------------- * feat[tool]!: make cancun the default evm version in (`#4029 `_) +* feat[lang]: remove named reentrancy locks in (`#3769 `_) * feat[lang]!: change the signature of ``block.prevrandao`` in (`#3879 `_) * feat[lang]!: change ABI type of ``decimal`` to ``int168`` in (`#3696 `_) * feat[lang]: rename ``_abi_encode`` and ``_abi_decode`` in (`#4097 `_) * feat[lang]!: add feature flag for decimals in (`#3930 `_) -* feat: default code offset = 3 in (`#3454 `_) * feat[lang]!: make internal decorator optional in (`#4040 `_) -* feat[lang]: remove named reentrancy locks in (`#3769 `_) -* feat: remove builtin constants in (`#3350 `_) -* feat: deprecate ``vyper-serve`` in (`#3666 `_) +* feat[lang]: protect external calls with keyword in (`#2938 `_) +* introduce floordiv, ban regular div for integers in (`#2937 `_) * feat[lang]: use keyword arguments for struct instantiation in (`#3777 `_) * feat: require type annotations for loop variables in (`#3596 `_) * feat: replace ``enum`` with ``flag`` keyword in (`#3697 `_) -* feat[lang]: protect external calls with keyword in (`#2938 `_) -* chore[ux]: compute natspec as part of standard pipeline in (`#3946 `_) - +* feat: remove builtin constants in (`#3350 `_) +* feat: drop istanbul and berlin support in (`#3843 `_) * feat: allow range with two arguments and bound in (`#3679 `_) * fix[codegen]: range bound check for signed integers in (`#3814 `_) - -* feat: drop istanbul and berlin support in (`#3843 `_) - +* feat: default code offset = 3 in (`#3454 `_) * feat: rename ``vyper.interfaces`` to ``ethereum.ercs`` in (`#3741 `_) * chore: add prefix to ERC interfaces in (`#3804 `_) - -* introduce floordiv, ban regular div for integers in (`#2937 `_) +* chore[ux]: compute natspec as part of standard pipeline in (`#3946 `_) +* feat: deprecate ``vyper-serve`` in (`#3666 `_) Module system ------------- @@ -58,6 +54,8 @@ Module system * feat: implement "stateless" modules in (`#3663 `_) * feat[lang]: export interfaces in (`#3919 `_) * feat[lang]: singleton modules with ownership hierarchy in (`#3729 `_) +* feat[lang]: implement function exports in (`#3786 `_) +* feat[lang]: auto-export events in ABI in (`#3808 `_) * fix: allow using interface defs from imported modules in (`#3725 `_) * feat: add support for constants in imported modules in (`#3726 `_) * fix[lang]: prevent modules as storage variables in (`#4088 `_) @@ -66,8 +64,6 @@ Module system * feat[ux]: improve error message for importing ERC20 in (`#3816 `_) * fix[lang]: fix importing of flag types in (`#3871 `_) * feat: search path resolution for cli in (`#3694 `_) -* feat[lang]: implement function exports in (`#3786 `_) -* feat[lang]: auto-export events in ABI in (`#3808 `_) * fix[lang]: transitive exports in (`#3888 `_) * fix[ux]: error messages relating to initializer issues in (`#3831 `_) * fix[lang]: recursion in ``uses`` analysis for nonreentrant functions in (`#3971 `_) @@ -77,20 +73,29 @@ Module system * fix[lang]: builtin type comparisons in (`#3956 `_) * fix[tool]: fix ``combined_json`` output for CLI in (`#3901 `_) * fix[tool]: compile multiple files in (`#4053 `_) - +* refactor: reimplement AST folding in (`#3669 `_) +* refactor: constant folding in (`#3719 `_) +* fix[lang]: typecheck hashmap indexes with folding in (`#4007 `_) +* fix[lang]: fix array index checks when the subscript is folded in (`#3924 `_) +* fix[lang]: pure access analysis in (`#3895 `_) Venom ----- * feat: implement new IR for vyper (venom IR) in (`#3659 `_) -* chore: move venom tests to ``tests/unit/compiler`` in (`#3684 `_) +* feat[ir]: add ``make_ssa`` pass to venom pipeline in (`#3825 `_) +* feat[venom]: implement ``mem2var`` and ``sccp`` passes in (`#3941 `_) +* feat[venom]: add store elimination pass in (`#4021 `_) +* feat[venom]: add ``extract_literals`` pass in (`#4067 `_) +* feat[venom]: optimize branching in (`#4049 `_) +* feat[venom]: avoid last ``swap`` for commutative ops in (`#4048 `_) +* feat[venom]: "pickaxe" stack scheduler optimization in (`#3951 `_) +* feat[venom]: add algebraic optimization pass in (`#4054 `_) * feat: Implement target constrained venom jump instruction in (`#3687 `_) * feat: remove ``deploy`` instruction from venom in (`#3703 `_) * fix[venom]: liveness analysis in some loops in (`#3732 `_) * feat: add more venom instructions in (`#3733 `_) -* feat[ir]: add ``make_ssa`` pass to venom pipeline in (`#3825 `_) * refactor[venom]: use venom pass instances in (`#3908 `_) * refactor[venom]: refactor venom operand classes in (`#3915 `_) -* feat[venom]: implement ``mem2var`` and ``sccp`` passes in (`#3941 `_) * refactor[venom]: introduce ``IRContext`` and ``IRAnalysisCache`` in (`#3983 `_) * feat: add utility functions to ``OrderedSet`` in (`#3833 `_) * feat[venom]: optimize ``get_basic_block()`` in (`#4002 `_) @@ -101,37 +106,34 @@ Venom * fix[venom]: fix return opcode handling in mem2var in (`#4011 `_) * fix[venom]: fix ``cfg`` output format in (`#4010 `_) * chore[venom]: fix output formatting of data segment in ``IRContext`` in (`#4016 `_) -* feat[venom]: add store elimination pass in (`#4021 `_) * feat[venom]: optimize mem2var and store/variable elimination pass sequences in (`#4032 `_) * fix[venom]: fix some sccp evaluations in (`#4028 `_) -* feat[venom]: "pickaxe" stack scheduler optimization in (`#3951 `_) * feat[venom]: remove redundant store elimination pass in (`#4036 `_) * fix[venom]: remove some dead code in ``venom_to_assembly`` in (`#4042 `_) * feat[venom]: improve unused variable removal pass in (`#4055 `_) -* feat[venom]: optimize branching in (`#4049 `_) -* feat[venom]: avoid last ``swap`` for commutative ops in (`#4048 `_) * fix[venom]: remove liveness requests in (`#4058 `_) -* feat[venom]: add algebraic optimization pass in (`#4054 `_) * fix[venom]: fix list of volatile instructions in (`#4065 `_) * fix[venom]: remove dominator tree invalidation for store elimination pass in (`#4069 `_) -* feat[venom]: add ``extract_literals`` pass in (`#4067 `_) * fix[venom]: move loop invariant assertion to entry block in (`#4098 `_) * fix[venom]: clear ``out_vars`` during calculation in (`#4129 `_) * fix[venom]: alloca for default arguments in (`#4155 `_) * Refactor ctx.add_instruction() and friends in (`#3685 `_) * fix: type annotation of helper function in (`#3702 `_) * feat[ir]: emit ``djump`` in dense selector table in (`#3849 `_) +* chore: move venom tests to ``tests/unit/compiler`` in (`#3684 `_) Other new features ------------- -* feat[lang]: add ``revert_on_failure`` kwarg for create builtins in (`#3844 `_) -* feat[lang]: allow downcasting of bytestrings in (`#3832 `_) +------------------ * feat[lang]: add ``blobhash()`` builtin in (`#3962 `_) * feat[lang]: support ``block.blobbasefee`` in (`#3945 `_) - +* feat[lang]: add ``revert_on_failure`` kwarg for create builtins in (`#3844 `_) +* feat[lang]: allow downcasting of bytestrings in (`#3832 `_) Docs ---- +* chore[docs]: add docs for v0.4.0 features in (`#3947 `_) +* chore[docs]: ``implements`` does not check event declarations in (`#4052 `_) +* docs: adopt a new theme: ``shibuya`` in (`#3754 `_) * Update ``FUNDING.yml`` in (`#3636 `_) * docs: fix nit in v0.3.10 release notes in (`#3638 `_) * docs: add note on ``pragma`` parsing in (`#3640 `_) @@ -145,7 +147,6 @@ Docs * docs: indexed arguments for events are limited in (`#3715 `_) * docs: Fix typos in (`#3747 `_) * docs: Upgrade dependencies and fixes in (`#3745 `_) -* docs: adopt a new theme: ``shibuya`` in (`#3754 `_) * docs: add missing cli flags in (`#3736 `_) * chore: fix formatting and docs for new struct instantiation syntax in (`#3792 `_) * docs: floordiv in (`#3797 `_) @@ -155,58 +156,53 @@ Docs * chore[docs]: amend ``revert_on_failure`` kwarg docs for create builtins in (`#3921 `_) * fix[docs]: fix clipped ``endAuction`` method in example section in (`#3969 `_) * refactor[docs]: refactor security policy in (`#3981 `_) -* chore[docs]: ``implements`` does not check event declarations in (`#4052 `_) -* chore[docs]: add docs for v0.4.0 features in (`#3947 `_) * fix: edit link to style guide in (`#3658 `_) * Add Vyper online compiler tooling in (`#3680 `_) * chore: fix typos in (`#3749 `_) Bugfixes ------ -* fix: block memory allocation overflow in (`#3639 `_) -* add comptime check for uint2str input in (`#3671 `_) -* fix[ir]: fix a latent bug in ``sha3_64`` codegen in (`#4063 `_) +-------- +* fix[codegen]: fix ``raw_log()`` when topics are non-literals in (`#3977 `_) +* fix[codegen]: fix transient codegen for ``slice`` and ``extract32`` in (`#3874 `_) * fix[codegen]: bounds check for signed index accesses in (`#3817 `_) * fix: disallow ``value=`` passing for delegate and static raw_calls in (`#3755 `_) +* fix[codegen]: fix double evals in sqrt, slice, blueprint in (`#3976 `_) +* fix[codegen]: fix double eval in dynarray append/pop in (`#4030 `_) +* fix[codegen]: fix double eval of start in range expr in (`#4033 `_) +* fix[codegen]: overflow check in ``slice()`` in (`#3818 `_) +* fix: concat buffer bug in (`#3738 `_) +* fix[codegen]: fix ``make_setter`` overlap with internal calls in (`#4037 `_) +* fix[codegen]: fix ``make_setter`` overlap in ``dynarray_append`` in (`#4059 `_) +* fix[codegen]: ``make_setter`` overlap in the presence of ``staticcall`` in (`#4128 `_) +* fix[codegen]: fix ``_abi_decode`` buffer overflow in (`#3925 `_) +* fix[codegen]: zero-length dynarray ``abi_decode`` validation in (`#4060 `_) +* fix[codegen]: recursive dynarray oob check in (`#4091 `_) +* fix[codegen]: add back in ``returndatasize`` check in (`#4144 `_) +* fix: block memory allocation overflow in (`#3639 `_) +* add comptime check for uint2str input in (`#3671 `_) * fix: dead code analysis inside for loops in (`#3731 `_) +* fix[ir]: fix a latent bug in ``sha3_64`` codegen in (`#4063 `_) * fix: ``opcodes`` and ``opcodes_runtime`` outputs in (`#3735 `_) -* fix: concat buffer bug in (`#3738 `_) * fix: bad assertion in expr.py in (`#3758 `_) * fix: iterator modification analysis in (`#3764 `_) -* refactor: reimplement AST folding in (`#3669 `_) -* fix[lang]: typecheck hashmap indexes with folding in (`#4007 `_) -* fix[lang]: fix array index checks when the subscript is folded in (`#3924 `_) * feat: allow constant interfaces in (`#3718 `_) * fix: assembly dead code eliminator in (`#3791 `_) * fix: prevent range over decimal in (`#3798 `_) * fix: mutability check for interface implements in (`#3805 `_) -* fix[codegen]: overflow check in ``slice()`` in (`#3818 `_) * fix[codegen]: fix non-memory reason strings in (`#3877 `_) * fix[ux]: fix compiler hang for large exponentiations in (`#3893 `_) -* fix[lang]: pure access analysis in (`#3895 `_) * fix[lang]: allow type expressions inside pure functions in (`#3906 `_) -* fix[codegen]: fix transient codegen for ``slice`` and ``extract32`` in (`#3874 `_) -* fix[codegen]: fix ``raw_log()`` when topics are non-literals in (`#3977 `_) -* fix[codegen]: fix double evals in sqrt, slice, blueprint in (`#3976 `_) -* fix[codegen]: fix double eval in dynarray append/pop in (`#4030 `_) -* fix[codegen]: fix some hardcoded references to ``STORAGE`` location in (`#4015 `_) -* fix[codegen]: fix double eval of start in range expr in (`#4033 `_) -* fix[codegen]: fix ``make_setter`` overlap with internal calls in (`#4037 `_) -* fix[codegen]: fix ``_abi_decode`` buffer overflow in (`#3925 `_) * fix[ux]: raise ``VersionException`` with source info in (`#3920 `_) -* fix[codegen]: fix ``make_setter`` overlap in ``dynarray_append`` in (`#4059 `_) -* fix[codegen]: zero-length dynarray ``abi_decode`` validation in (`#4060 `_) -* fix[codegen]: recursive dynarray oob check in (`#4091 `_) -* fix[codegen]: ``make_setter`` overlap in the presence of ``staticcall`` in (`#4128 `_) -* fix[codegen]: add back in ``returndatasize`` check in (`#4144 `_) * fix[lang]: fix ``pow`` folding when args are not literals in (`#3949 `_) - +* fix[codegen]: fix some hardcoded references to ``STORAGE`` location in (`#4015 `_) Tooling ----- +------- +* feat[tool]: archive format in (`#3891 `_) +* feat[tool]: add source map for constructors in (`#4008 `_) +* feat: add short options ``-v`` and ``-O`` to the CLI in (`#3695 `_) * feat: Add ``bb`` and ``bb_runtime`` output options in (`#3700 `_) * fix: remove hex-ir from format cli options list in (`#3657 `_) -* feat: add short options ``-v`` and ``-O`` to the CLI in (`#3695 `_) * fix: pickleability of ``CompilerData`` in (`#3803 `_) * feat[tool]: validate AST nodes early in the pipeline in (`#3809 `_) * feat[tool]: delay global constraint check in (`#3810 `_) @@ -214,8 +210,6 @@ Tooling * feat[tool]: improvements to AST annotation in (`#3829 `_) * feat[tool]: add ``node_id`` map to source map in (`#3811 `_) * chore[tool]: add help text for ``hex-ir`` CLI flag in (`#3942 `_) -* feat[tool]: archive format in (`#3891 `_) -* feat[tool]: add source map for constructors in (`#4008 `_) * refactor[tool]: refactor storage layout export in (`#3789 `_) * fix[tool]: fix cross-compilation issues, add windows CI in (`#4014 `_) * fix[tool]: star option in ``outputSelection`` in (`#4094 `_) @@ -229,59 +223,26 @@ Performance * feat: more frontend optimizations in (`#3785 `_) * perf: reimplement ``IRnode.__deepcopy__`` in (`#3761 `_) - - -Misc / refactor ----- -* feat[ir]: add ``eval_once`` sanity fences to more builtins in (`#3835 `_) -* refactor: constant folding in (`#3719 `_) -* fix: reorder compilation of branches in stmt.py in (`#3603 `_) -* refactor[codegen]: make settings into a global object in (`#3929 `_) -* refactor: merge ``annotation.py`` and ``local.py`` in (`#3456 `_) -* refactor: builtin functions inherit from ``VyperType`` in (`#3559 `_) -* fix: remove .keyword from Call AST node in (`#3689 `_) -* refactor: for loop target parsing in (`#3724 `_) -* improvement: assert descriptions in Crowdfund finalize() and participate() in (`#3064 `_) -* chore: improve exception handling in IR generation in (`#3705 `_) -* feat: improve panics in IR generation in (`#3708 `_) -* chore: improve diagnostics for invalid for loop annotation in (`#3721 `_) -* feat: improve warnings, refactor ``vyper_warn()`` in (`#3800 `_) -* fix[ir]: unique symbol name in (`#3848 `_) -* refactor: remove duplicate terminus checking code in (`#3541 `_) -* feat: remove Index AST node in (`#3757 `_) -* refactor: ``ExprVisitor`` type validation in (`#3739 `_) -* chore: improve exception for type validation in (`#3759 `_) -* fix: fuzz test not updated to use TypeMismatch in (`#3768 `_) -* chore: fix StringEnum._generate_next_value_ signature in (`#3770 `_) -* chore: improve some error messages in (`#3775 `_) -* refactor: ``get_search_paths()`` for vyper cli in (`#3778 `_) -* chore: replace occurrences of 'enum' by 'flag' in (`#3794 `_) -* chore: add another borrowship test in (`#3802 `_) -* chore[ux]: improve an exports error message in (`#3822 `_) -* chore: improve codegen test coverage report in (`#3824 `_) -* chore: improve syntax error messages in (`#3885 `_) -* chore[tool]: remove ``vyper-serve`` from ``setup.py`` in (`#3936 `_) -* fix[ux]: replace standard strings with f-strings in (`#3953 `_) -* chore[ux]: remove deprecated python AST classes in (`#3998 `_) -* refactor[ux]: remove deprecated ``VyperNode`` properties in (`#3999 `_) -* chore[ir]: sanity check types in for range codegen in (`#3968 `_) - Testing suite improvements -------------------------- -* feat: Refactor assert_tx_failed into a context in (`#3706 `_) * refactor[test]: bypass ``eth-tester`` and interface with evm backend directly in (`#3846 `_) +* feat: Refactor assert_tx_failed into a context in (`#3706 `_) +* feat[test]: implement ``abi_decode`` spec test in (`#4095 `_) +* feat[test]: add more coverage to ``abi_decode`` fuzzer tests in (`#4153 `_) +* feat[ci]: enable cancun testing in (`#3861 `_) * fix: add missing test for memory allocation overflow in (`#3650 `_) * chore: fix test for ``slice`` in (`#3633 `_) * add abi_types unit tests in (`#3662 `_) * refactor: test directory structure in (`#3664 `_) * chore: test all output formats in (`#3683 `_) * chore: deduplicate test files in (`#3773 `_) +* feat[test]: add more transient storage tests in (`#3883 `_) * chore[ci]: fix apt-get failure in era pipeline in (`#3821 `_) * chore[ci]: enable python3.12 tests in (`#3860 `_) * chore[ci]: refactor jobs to use gh actions in (`#3863 `_) * chore[ci]: use ``--dist worksteal`` from latest ``xdist`` in (`#3869 `_) -* feat[ci]: enable cancun testing in (`#3861 `_) * chore: run mypy as part of lint rule in Makefile in (`#3771 `_) +* chore[test]: always specify the evm backend in (`#4006 `_) * chore: update lint dependencies in (`#3704 `_) * chore: add color to mypy output in (`#3793 `_) * chore: remove tox rules for lint commands in (`#3826 `_) @@ -295,7 +256,6 @@ Testing suite improvements * fix[test]: fix failure in grammar fuzzing in (`#3892 `_) * feat[test]: add ``xfail_strict``, clean up ``setup.cfg`` in (`#3889 `_) * fix[ci]: pin hexbytes to pre-1.0.0 in (`#3903 `_) -* feat[test]: add more transient storage tests in (`#3883 `_) * chore[test]: update hexbytes version and tests in (`#3904 `_) * fix[test]: fix a bad bound in decimal fuzzing in (`#3909 `_) * fix[test]: fix a boundary case in decimal fuzzing in (`#3918 `_) @@ -304,14 +264,45 @@ Testing suite improvements * chore[ci]: downgrade codecov action to v3 in (`#3940 `_) * feat[ci]: add codecov configuration in (`#4057 `_) * feat[test]: remove memory mocker in (`#4005 `_) -* chore[test]: always specify the evm backend in (`#4006 `_) * refactor[test]: change fixture scope in examples in (`#3995 `_) * fix[test]: fix call graph stability fuzzer in (`#4064 `_) -* feat[test]: implement ``abi_decode`` spec test in (`#4095 `_) -* feat[test]: add more coverage to ``abi_decode`` fuzzer tests in (`#4153 `_) * chore[test]: add macos to test matrix in (`#4025 `_) * refactor[test]: change default expected exception type in (`#4004 `_) +Misc / refactor +--------------- +* feat[ir]: add ``eval_once`` sanity fences to more builtins in (`#3835 `_) +* fix: reorder compilation of branches in stmt.py in (`#3603 `_) +* refactor[codegen]: make settings into a global object in (`#3929 `_) +* chore: improve exception handling in IR generation in (`#3705 `_) +* refactor: merge ``annotation.py`` and ``local.py`` in (`#3456 `_) +* chore[ux]: remove deprecated python AST classes in (`#3998 `_) +* refactor[ux]: remove deprecated ``VyperNode`` properties in (`#3999 `_) +* feat: remove Index AST node in (`#3757 `_) +* refactor: for loop target parsing in (`#3724 `_) +* chore: improve diagnostics for invalid for loop annotation in (`#3721 `_) +* refactor: builtin functions inherit from ``VyperType`` in (`#3559 `_) +* fix: remove .keyword from Call AST node in (`#3689 `_) +* improvement: assert descriptions in Crowdfund finalize() and participate() in (`#3064 `_) +* feat: improve panics in IR generation in (`#3708 `_) +* feat: improve warnings, refactor ``vyper_warn()`` in (`#3800 `_) +* fix[ir]: unique symbol name in (`#3848 `_) +* refactor: remove duplicate terminus checking code in (`#3541 `_) +* refactor: ``ExprVisitor`` type validation in (`#3739 `_) +* chore: improve exception for type validation in (`#3759 `_) +* fix: fuzz test not updated to use TypeMismatch in (`#3768 `_) +* chore: fix StringEnum._generate_next_value_ signature in (`#3770 `_) +* chore: improve some error messages in (`#3775 `_) +* refactor: ``get_search_paths()`` for vyper cli in (`#3778 `_) +* chore: replace occurrences of 'enum' by 'flag' in (`#3794 `_) +* chore: add another borrowship test in (`#3802 `_) +* chore[ux]: improve an exports error message in (`#3822 `_) +* chore: improve codegen test coverage report in (`#3824 `_) +* chore: improve syntax error messages in (`#3885 `_) +* chore[tool]: remove ``vyper-serve`` from ``setup.py`` in (`#3936 `_) +* fix[ux]: replace standard strings with f-strings in (`#3953 `_) +* chore[ir]: sanity check types in for range codegen in (`#3968 `_) + v0.3.10 ("Black Adder") *********************** From d1cad543ce47bc3bdf396819bbcf5edfc1afa0b6 Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Mon, 17 Jun 2024 17:14:34 -0400 Subject: [PATCH 06/18] add fresh PR to release notes --- docs/release-notes.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release-notes.rst b/docs/release-notes.rst index 7c041aca98..79f244c3ac 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -108,6 +108,7 @@ Venom * chore[venom]: fix output formatting of data segment in ``IRContext`` in (`#4016 `_) * feat[venom]: optimize mem2var and store/variable elimination pass sequences in (`#4032 `_) * fix[venom]: fix some sccp evaluations in (`#4028 `_) +* fix[venom]: add ``unique_symbols`` check to venom pipeline in (`#4149 https://github.com/vyperlang/vyper/pull/4149`_) * feat[venom]: remove redundant store elimination pass in (`#4036 `_) * fix[venom]: remove some dead code in ``venom_to_assembly`` in (`#4042 `_) * feat[venom]: improve unused variable removal pass in (`#4055 `_) From d5a83dad49d127ceb43b9e8d00bfa89e98f22255 Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Mon, 17 Jun 2024 17:19:55 -0400 Subject: [PATCH 07/18] format - remove "in" --- docs/release-notes.rst | 500 ++++++++++++++++++++--------------------- 1 file changed, 250 insertions(+), 250 deletions(-) diff --git a/docs/release-notes.rst b/docs/release-notes.rst index 79f244c3ac..c43aed112a 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -26,283 +26,283 @@ v0.4.0 represents a major overhaul to the Vyper language. Notably, it overhauls Breaking Changes ---------------- -* feat[tool]!: make cancun the default evm version in (`#4029 `_) -* feat[lang]: remove named reentrancy locks in (`#3769 `_) -* feat[lang]!: change the signature of ``block.prevrandao`` in (`#3879 `_) -* feat[lang]!: change ABI type of ``decimal`` to ``int168`` in (`#3696 `_) -* feat[lang]: rename ``_abi_encode`` and ``_abi_decode`` in (`#4097 `_) -* feat[lang]!: add feature flag for decimals in (`#3930 `_) -* feat[lang]!: make internal decorator optional in (`#4040 `_) -* feat[lang]: protect external calls with keyword in (`#2938 `_) -* introduce floordiv, ban regular div for integers in (`#2937 `_) -* feat[lang]: use keyword arguments for struct instantiation in (`#3777 `_) -* feat: require type annotations for loop variables in (`#3596 `_) -* feat: replace ``enum`` with ``flag`` keyword in (`#3697 `_) -* feat: remove builtin constants in (`#3350 `_) -* feat: drop istanbul and berlin support in (`#3843 `_) -* feat: allow range with two arguments and bound in (`#3679 `_) -* fix[codegen]: range bound check for signed integers in (`#3814 `_) -* feat: default code offset = 3 in (`#3454 `_) -* feat: rename ``vyper.interfaces`` to ``ethereum.ercs`` in (`#3741 `_) -* chore: add prefix to ERC interfaces in (`#3804 `_) -* chore[ux]: compute natspec as part of standard pipeline in (`#3946 `_) -* feat: deprecate ``vyper-serve`` in (`#3666 `_) +* feat[tool]!: make cancun the default evm version (`#4029 `_) +* feat[lang]: remove named reentrancy locks (`#3769 `_) +* feat[lang]!: change the signature of ``block.prevrandao`` (`#3879 `_) +* feat[lang]!: change ABI type of ``decimal`` to ``int168`` (`#3696 `_) +* feat[lang]: rename ``_abi_encode`` and ``_abi_decode`` (`#4097 `_) +* feat[lang]!: add feature flag for decimals (`#3930 `_) +* feat[lang]!: make internal decorator optional (`#4040 `_) +* feat[lang]: protect external calls with keyword (`#2938 `_) +* introduce floordiv, ban regular div for integers (`#2937 `_) +* feat[lang]: use keyword arguments for struct instantiation (`#3777 `_) +* feat: require type annotations for loop variables (`#3596 `_) +* feat: replace ``enum`` with ``flag`` keyword (`#3697 `_) +* feat: remove builtin constants (`#3350 `_) +* feat: drop istanbul and berlin support (`#3843 `_) +* feat: allow range with two arguments and bound (`#3679 `_) +* fix[codegen]: range bound check for signed integers (`#3814 `_) +* feat: default code offset = 3 (`#3454 `_) +* feat: rename ``vyper.interfaces`` to ``ethereum.ercs`` (`#3741 `_) +* chore: add prefix to ERC interfaces (`#3804 `_) +* chore[ux]: compute natspec as part of standard pipeline (`#3946 `_) +* feat: deprecate ``vyper-serve`` (`#3666 `_) Module system ------------- -* refactor: internal handling of imports in (`#3655 `_) -* feat: implement "stateless" modules in (`#3663 `_) -* feat[lang]: export interfaces in (`#3919 `_) -* feat[lang]: singleton modules with ownership hierarchy in (`#3729 `_) -* feat[lang]: implement function exports in (`#3786 `_) -* feat[lang]: auto-export events in ABI in (`#3808 `_) -* fix: allow using interface defs from imported modules in (`#3725 `_) -* feat: add support for constants in imported modules in (`#3726 `_) -* fix[lang]: prevent modules as storage variables in (`#4088 `_) -* fix[ux]: improve initializer hint for unimported modules in (`#4145 `_) -* feat: add python ``sys.path`` to vyper path in (`#3763 `_) -* feat[ux]: improve error message for importing ERC20 in (`#3816 `_) -* fix[lang]: fix importing of flag types in (`#3871 `_) -* feat: search path resolution for cli in (`#3694 `_) -* fix[lang]: transitive exports in (`#3888 `_) -* fix[ux]: error messages relating to initializer issues in (`#3831 `_) -* fix[lang]: recursion in ``uses`` analysis for nonreentrant functions in (`#3971 `_) -* fix[ux]: fix ``uses`` error message in (`#3926 `_) -* fix[lang]: fix ``uses`` analysis for nonreentrant functions in (`#3927 `_) -* fix[lang]: fix a hint in global initializer check in (`#4089 `_) -* fix[lang]: builtin type comparisons in (`#3956 `_) -* fix[tool]: fix ``combined_json`` output for CLI in (`#3901 `_) -* fix[tool]: compile multiple files in (`#4053 `_) -* refactor: reimplement AST folding in (`#3669 `_) -* refactor: constant folding in (`#3719 `_) -* fix[lang]: typecheck hashmap indexes with folding in (`#4007 `_) -* fix[lang]: fix array index checks when the subscript is folded in (`#3924 `_) -* fix[lang]: pure access analysis in (`#3895 `_) +* refactor: internal handling of imports (`#3655 `_) +* feat: implement "stateless" modules (`#3663 `_) +* feat[lang]: export interfaces (`#3919 `_) +* feat[lang]: singleton modules with ownership hierarchy (`#3729 `_) +* feat[lang]: implement function exports (`#3786 `_) +* feat[lang]: auto-export events in ABI (`#3808 `_) +* fix: allow using interface defs from imported modules (`#3725 `_) +* feat: add support for constants in imported modules (`#3726 `_) +* fix[lang]: prevent modules as storage variables (`#4088 `_) +* fix[ux]: improve initializer hint for unimported modules (`#4145 `_) +* feat: add python ``sys.path`` to vyper path (`#3763 `_) +* feat[ux]: improve error message for importing ERC20 (`#3816 `_) +* fix[lang]: fix importing of flag types (`#3871 `_) +* feat: search path resolution for cli (`#3694 `_) +* fix[lang]: transitive exports (`#3888 `_) +* fix[ux]: error messages relating to initializer issues (`#3831 `_) +* fix[lang]: recursion in ``uses`` analysis for nonreentrant functions (`#3971 `_) +* fix[ux]: fix ``uses`` error message (`#3926 `_) +* fix[lang]: fix ``uses`` analysis for nonreentrant functions (`#3927 `_) +* fix[lang]: fix a hint in global initializer check (`#4089 `_) +* fix[lang]: builtin type comparisons (`#3956 `_) +* fix[tool]: fix ``combined_json`` output for CLI (`#3901 `_) +* fix[tool]: compile multiple files (`#4053 `_) +* refactor: reimplement AST folding (`#3669 `_) +* refactor: constant folding (`#3719 `_) +* fix[lang]: typecheck hashmap indexes with folding (`#4007 `_) +* fix[lang]: fix array index checks when the subscript is folded (`#3924 `_) +* fix[lang]: pure access analysis (`#3895 `_) Venom ----- -* feat: implement new IR for vyper (venom IR) in (`#3659 `_) -* feat[ir]: add ``make_ssa`` pass to venom pipeline in (`#3825 `_) -* feat[venom]: implement ``mem2var`` and ``sccp`` passes in (`#3941 `_) -* feat[venom]: add store elimination pass in (`#4021 `_) -* feat[venom]: add ``extract_literals`` pass in (`#4067 `_) -* feat[venom]: optimize branching in (`#4049 `_) -* feat[venom]: avoid last ``swap`` for commutative ops in (`#4048 `_) -* feat[venom]: "pickaxe" stack scheduler optimization in (`#3951 `_) -* feat[venom]: add algebraic optimization pass in (`#4054 `_) -* feat: Implement target constrained venom jump instruction in (`#3687 `_) -* feat: remove ``deploy`` instruction from venom in (`#3703 `_) -* fix[venom]: liveness analysis in some loops in (`#3732 `_) -* feat: add more venom instructions in (`#3733 `_) -* refactor[venom]: use venom pass instances in (`#3908 `_) -* refactor[venom]: refactor venom operand classes in (`#3915 `_) -* refactor[venom]: introduce ``IRContext`` and ``IRAnalysisCache`` in (`#3983 `_) -* feat: add utility functions to ``OrderedSet`` in (`#3833 `_) -* feat[venom]: optimize ``get_basic_block()`` in (`#4002 `_) -* fix[venom]: fix branch eliminator cases in sccp in (`#4003 `_) -* fix[codegen]: same symbol jumpdest merge in (`#3982 `_) -* fix[venom]: fix eval of ``exp`` in sccp in (`#4009 `_) -* refactor[venom]: remove unused method in ``make_ssa.py`` in (`#4012 `_) -* fix[venom]: fix return opcode handling in mem2var in (`#4011 `_) -* fix[venom]: fix ``cfg`` output format in (`#4010 `_) -* chore[venom]: fix output formatting of data segment in ``IRContext`` in (`#4016 `_) -* feat[venom]: optimize mem2var and store/variable elimination pass sequences in (`#4032 `_) -* fix[venom]: fix some sccp evaluations in (`#4028 `_) -* fix[venom]: add ``unique_symbols`` check to venom pipeline in (`#4149 https://github.com/vyperlang/vyper/pull/4149`_) -* feat[venom]: remove redundant store elimination pass in (`#4036 `_) -* fix[venom]: remove some dead code in ``venom_to_assembly`` in (`#4042 `_) -* feat[venom]: improve unused variable removal pass in (`#4055 `_) -* fix[venom]: remove liveness requests in (`#4058 `_) -* fix[venom]: fix list of volatile instructions in (`#4065 `_) -* fix[venom]: remove dominator tree invalidation for store elimination pass in (`#4069 `_) -* fix[venom]: move loop invariant assertion to entry block in (`#4098 `_) -* fix[venom]: clear ``out_vars`` during calculation in (`#4129 `_) -* fix[venom]: alloca for default arguments in (`#4155 `_) -* Refactor ctx.add_instruction() and friends in (`#3685 `_) -* fix: type annotation of helper function in (`#3702 `_) -* feat[ir]: emit ``djump`` in dense selector table in (`#3849 `_) -* chore: move venom tests to ``tests/unit/compiler`` in (`#3684 `_) +* feat: implement new IR for vyper (venom IR) (`#3659 `_) +* feat[ir]: add ``make_ssa`` pass to venom pipeline (`#3825 `_) +* feat[venom]: implement ``mem2var`` and ``sccp`` passes (`#3941 `_) +* feat[venom]: add store elimination pass (`#4021 `_) +* feat[venom]: add ``extract_literals`` pass (`#4067 `_) +* feat[venom]: optimize branching (`#4049 `_) +* feat[venom]: avoid last ``swap`` for commutative ops (`#4048 `_) +* feat[venom]: "pickaxe" stack scheduler optimization (`#3951 `_) +* feat[venom]: add algebraic optimization pass (`#4054 `_) +* feat: Implement target constrained venom jump instruction (`#3687 `_) +* feat: remove ``deploy`` instruction from venom (`#3703 `_) +* fix[venom]: liveness analysis in some loops (`#3732 `_) +* feat: add more venom instructions (`#3733 `_) +* refactor[venom]: use venom pass instances (`#3908 `_) +* refactor[venom]: refactor venom operand classes (`#3915 `_) +* refactor[venom]: introduce ``IRContext`` and ``IRAnalysisCache`` (`#3983 `_) +* feat: add utility functions to ``OrderedSet`` (`#3833 `_) +* feat[venom]: optimize ``get_basic_block()`` (`#4002 `_) +* fix[venom]: fix branch eliminator cases in sccp (`#4003 `_) +* fix[codegen]: same symbol jumpdest merge (`#3982 `_) +* fix[venom]: fix eval of ``exp`` in sccp (`#4009 `_) +* refactor[venom]: remove unused method in ``make_ssa.py`` (`#4012 `_) +* fix[venom]: fix return opcode handling in mem2var (`#4011 `_) +* fix[venom]: fix ``cfg`` output format (`#4010 `_) +* chore[venom]: fix output formatting of data segment in ``IRContext`` (`#4016 `_) +* feat[venom]: optimize mem2var and store/variable elimination pass sequences (`#4032 `_) +* fix[venom]: fix some sccp evaluations (`#4028 `_) +* fix[venom]: add ``unique_symbols`` check to venom pipeline (`#4149 https://github.com/vyperlang/vyper/pull/4149`_) +* feat[venom]: remove redundant store elimination pass (`#4036 `_) +* fix[venom]: remove some dead code in ``venom_to_assembly`` (`#4042 `_) +* feat[venom]: improve unused variable removal pass (`#4055 `_) +* fix[venom]: remove liveness requests (`#4058 `_) +* fix[venom]: fix list of volatile instructions (`#4065 `_) +* fix[venom]: remove dominator tree invalidation for store elimination pass (`#4069 `_) +* fix[venom]: move loop invariant assertion to entry block (`#4098 `_) +* fix[venom]: clear ``out_vars`` during calculation (`#4129 `_) +* fix[venom]: alloca for default arguments (`#4155 `_) +* Refactor ctx.add_instruction() and friends (`#3685 `_) +* fix: type annotation of helper function (`#3702 `_) +* feat[ir]: emit ``djump`` in dense selector table (`#3849 `_) +* chore: move venom tests to ``tests/unit/compiler`` (`#3684 `_) Other new features ------------------ -* feat[lang]: add ``blobhash()`` builtin in (`#3962 `_) -* feat[lang]: support ``block.blobbasefee`` in (`#3945 `_) -* feat[lang]: add ``revert_on_failure`` kwarg for create builtins in (`#3844 `_) -* feat[lang]: allow downcasting of bytestrings in (`#3832 `_) +* feat[lang]: add ``blobhash()`` builtin (`#3962 `_) +* feat[lang]: support ``block.blobbasefee`` (`#3945 `_) +* feat[lang]: add ``revert_on_failure`` kwarg for create builtins (`#3844 `_) +* feat[lang]: allow downcasting of bytestrings (`#3832 `_) Docs ---- -* chore[docs]: add docs for v0.4.0 features in (`#3947 `_) -* chore[docs]: ``implements`` does not check event declarations in (`#4052 `_) -* docs: adopt a new theme: ``shibuya`` in (`#3754 `_) -* Update ``FUNDING.yml`` in (`#3636 `_) -* docs: fix nit in v0.3.10 release notes in (`#3638 `_) -* docs: add note on ``pragma`` parsing in (`#3640 `_) -* docs: retire security@vyperlang.org in (`#3660 `_) -* feat[docs]: add more detail to modules docs in (`#4087 `_) -* docs: update resources section in (`#3656 `_) -* docs: add script to help working on the compiler in (`#3674 `_) -* docs: add warnings at the top of all example token contracts in (`#3676 `_) -* docs: typo in ``on_chain_market_maker.vy`` in (`#3677 `_) -* docs: clarify ``address.codehash`` for empty account in (`#3711 `_) -* docs: indexed arguments for events are limited in (`#3715 `_) -* docs: Fix typos in (`#3747 `_) -* docs: Upgrade dependencies and fixes in (`#3745 `_) -* docs: add missing cli flags in (`#3736 `_) -* chore: fix formatting and docs for new struct instantiation syntax in (`#3792 `_) -* docs: floordiv in (`#3797 `_) -* docs: add missing ``annotated_ast`` flag in (`#3813 `_) -* docs: update logo in readme, remove competition reference in (`#3837 `_) -* docs: add rationale for floordiv rounding behavior in (`#3845 `_) -* chore[docs]: amend ``revert_on_failure`` kwarg docs for create builtins in (`#3921 `_) -* fix[docs]: fix clipped ``endAuction`` method in example section in (`#3969 `_) -* refactor[docs]: refactor security policy in (`#3981 `_) -* fix: edit link to style guide in (`#3658 `_) -* Add Vyper online compiler tooling in (`#3680 `_) -* chore: fix typos in (`#3749 `_) +* chore[docs]: add docs for v0.4.0 features (`#3947 `_) +* chore[docs]: ``implements`` does not check event declarations (`#4052 `_) +* docs: adopt a new theme: ``shibuya`` (`#3754 `_) +* Update ``FUNDING.yml`` (`#3636 `_) +* docs: fix nit in v0.3.10 release notes (`#3638 `_) +* docs: add note on ``pragma`` parsing (`#3640 `_) +* docs: retire security@vyperlang.org (`#3660 `_) +* feat[docs]: add more detail to modules docs (`#4087 `_) +* docs: update resources section (`#3656 `_) +* docs: add script to help working on the compiler (`#3674 `_) +* docs: add warnings at the top of all example token contracts (`#3676 `_) +* docs: typo in ``on_chain_market_maker.vy`` (`#3677 `_) +* docs: clarify ``address.codehash`` for empty account (`#3711 `_) +* docs: indexed arguments for events are limited (`#3715 `_) +* docs: Fix typos (`#3747 `_) +* docs: Upgrade dependencies and fixes (`#3745 `_) +* docs: add missing cli flags (`#3736 `_) +* chore: fix formatting and docs for new struct instantiation syntax (`#3792 `_) +* docs: floordiv (`#3797 `_) +* docs: add missing ``annotated_ast`` flag (`#3813 `_) +* docs: update logo in readme, remove competition reference (`#3837 `_) +* docs: add rationale for floordiv rounding behavior (`#3845 `_) +* chore[docs]: amend ``revert_on_failure`` kwarg docs for create builtins (`#3921 `_) +* fix[docs]: fix clipped ``endAuction`` method in example section (`#3969 `_) +* refactor[docs]: refactor security policy (`#3981 `_) +* fix: edit link to style guide (`#3658 `_) +* Add Vyper online compiler tooling (`#3680 `_) +* chore: fix typos (`#3749 `_) Bugfixes -------- -* fix[codegen]: fix ``raw_log()`` when topics are non-literals in (`#3977 `_) -* fix[codegen]: fix transient codegen for ``slice`` and ``extract32`` in (`#3874 `_) -* fix[codegen]: bounds check for signed index accesses in (`#3817 `_) -* fix: disallow ``value=`` passing for delegate and static raw_calls in (`#3755 `_) -* fix[codegen]: fix double evals in sqrt, slice, blueprint in (`#3976 `_) -* fix[codegen]: fix double eval in dynarray append/pop in (`#4030 `_) -* fix[codegen]: fix double eval of start in range expr in (`#4033 `_) -* fix[codegen]: overflow check in ``slice()`` in (`#3818 `_) -* fix: concat buffer bug in (`#3738 `_) -* fix[codegen]: fix ``make_setter`` overlap with internal calls in (`#4037 `_) -* fix[codegen]: fix ``make_setter`` overlap in ``dynarray_append`` in (`#4059 `_) -* fix[codegen]: ``make_setter`` overlap in the presence of ``staticcall`` in (`#4128 `_) -* fix[codegen]: fix ``_abi_decode`` buffer overflow in (`#3925 `_) -* fix[codegen]: zero-length dynarray ``abi_decode`` validation in (`#4060 `_) -* fix[codegen]: recursive dynarray oob check in (`#4091 `_) -* fix[codegen]: add back in ``returndatasize`` check in (`#4144 `_) -* fix: block memory allocation overflow in (`#3639 `_) -* add comptime check for uint2str input in (`#3671 `_) -* fix: dead code analysis inside for loops in (`#3731 `_) -* fix[ir]: fix a latent bug in ``sha3_64`` codegen in (`#4063 `_) -* fix: ``opcodes`` and ``opcodes_runtime`` outputs in (`#3735 `_) -* fix: bad assertion in expr.py in (`#3758 `_) -* fix: iterator modification analysis in (`#3764 `_) -* feat: allow constant interfaces in (`#3718 `_) -* fix: assembly dead code eliminator in (`#3791 `_) -* fix: prevent range over decimal in (`#3798 `_) -* fix: mutability check for interface implements in (`#3805 `_) -* fix[codegen]: fix non-memory reason strings in (`#3877 `_) -* fix[ux]: fix compiler hang for large exponentiations in (`#3893 `_) -* fix[lang]: allow type expressions inside pure functions in (`#3906 `_) -* fix[ux]: raise ``VersionException`` with source info in (`#3920 `_) -* fix[lang]: fix ``pow`` folding when args are not literals in (`#3949 `_) -* fix[codegen]: fix some hardcoded references to ``STORAGE`` location in (`#4015 `_) +* fix[codegen]: fix ``raw_log()`` when topics are non-literals (`#3977 `_) +* fix[codegen]: fix transient codegen for ``slice`` and ``extract32`` (`#3874 `_) +* fix[codegen]: bounds check for signed index accesses (`#3817 `_) +* fix: disallow ``value=`` passing for delegate and static raw_calls (`#3755 `_) +* fix[codegen]: fix double evals in sqrt, slice, blueprint (`#3976 `_) +* fix[codegen]: fix double eval in dynarray append/pop (`#4030 `_) +* fix[codegen]: fix double eval of start in range expr (`#4033 `_) +* fix[codegen]: overflow check in ``slice()`` (`#3818 `_) +* fix: concat buffer bug (`#3738 `_) +* fix[codegen]: fix ``make_setter`` overlap with internal calls (`#4037 `_) +* fix[codegen]: fix ``make_setter`` overlap in ``dynarray_append`` (`#4059 `_) +* fix[codegen]: ``make_setter`` overlap in the presence of ``staticcall`` (`#4128 `_) +* fix[codegen]: fix ``_abi_decode`` buffer overflow (`#3925 `_) +* fix[codegen]: zero-length dynarray ``abi_decode`` validation (`#4060 `_) +* fix[codegen]: recursive dynarray oob check (`#4091 `_) +* fix[codegen]: add back in ``returndatasize`` check (`#4144 `_) +* fix: block memory allocation overflow (`#3639 `_) +* add comptime check for uint2str input (`#3671 `_) +* fix: dead code analysis inside for loops (`#3731 `_) +* fix[ir]: fix a latent bug in ``sha3_64`` codegen (`#4063 `_) +* fix: ``opcodes`` and ``opcodes_runtime`` outputs (`#3735 `_) +* fix: bad assertion in expr.py (`#3758 `_) +* fix: iterator modification analysis (`#3764 `_) +* feat: allow constant interfaces (`#3718 `_) +* fix: assembly dead code eliminator (`#3791 `_) +* fix: prevent range over decimal (`#3798 `_) +* fix: mutability check for interface implements (`#3805 `_) +* fix[codegen]: fix non-memory reason strings (`#3877 `_) +* fix[ux]: fix compiler hang for large exponentiations (`#3893 `_) +* fix[lang]: allow type expressions inside pure functions (`#3906 `_) +* fix[ux]: raise ``VersionException`` with source info (`#3920 `_) +* fix[lang]: fix ``pow`` folding when args are not literals (`#3949 `_) +* fix[codegen]: fix some hardcoded references to ``STORAGE`` location (`#4015 `_) Tooling ------- -* feat[tool]: archive format in (`#3891 `_) -* feat[tool]: add source map for constructors in (`#4008 `_) -* feat: add short options ``-v`` and ``-O`` to the CLI in (`#3695 `_) -* feat: Add ``bb`` and ``bb_runtime`` output options in (`#3700 `_) -* fix: remove hex-ir from format cli options list in (`#3657 `_) -* fix: pickleability of ``CompilerData`` in (`#3803 `_) -* feat[tool]: validate AST nodes early in the pipeline in (`#3809 `_) -* feat[tool]: delay global constraint check in (`#3810 `_) -* feat[tool]: export variable read/write access in (`#3790 `_) -* feat[tool]: improvements to AST annotation in (`#3829 `_) -* feat[tool]: add ``node_id`` map to source map in (`#3811 `_) -* chore[tool]: add help text for ``hex-ir`` CLI flag in (`#3942 `_) -* refactor[tool]: refactor storage layout export in (`#3789 `_) -* fix[tool]: fix cross-compilation issues, add windows CI in (`#4014 `_) -* fix[tool]: star option in ``outputSelection`` in (`#4094 `_) +* feat[tool]: archive format (`#3891 `_) +* feat[tool]: add source map for constructors (`#4008 `_) +* feat: add short options ``-v`` and ``-O`` to the CLI (`#3695 `_) +* feat: Add ``bb`` and ``bb_runtime`` output options (`#3700 `_) +* fix: remove hex-ir from format cli options list (`#3657 `_) +* fix: pickleability of ``CompilerData`` (`#3803 `_) +* feat[tool]: validate AST nodes early in the pipeline (`#3809 `_) +* feat[tool]: delay global constraint check (`#3810 `_) +* feat[tool]: export variable read/write access (`#3790 `_) +* feat[tool]: improvements to AST annotation (`#3829 `_) +* feat[tool]: add ``node_id`` map to source map (`#3811 `_) +* chore[tool]: add help text for ``hex-ir`` CLI flag (`#3942 `_) +* refactor[tool]: refactor storage layout export (`#3789 `_) +* fix[tool]: fix cross-compilation issues, add windows CI (`#4014 `_) +* fix[tool]: star option in ``outputSelection`` (`#4094 `_) Performance ----------- -* perf: lazy eval of f-strings in IRnode ctor in (`#3602 `_) -* perf: levenshtein optimization in (`#3780 `_) -* feat: frontend optimizations in (`#3781 `_) -* feat: optimize ``VyperNode.deepcopy`` in (`#3784 `_) -* feat: more frontend optimizations in (`#3785 `_) -* perf: reimplement ``IRnode.__deepcopy__`` in (`#3761 `_) +* perf: lazy eval of f-strings in IRnode ctor (`#3602 `_) +* perf: levenshtein optimization (`#3780 `_) +* feat: frontend optimizations (`#3781 `_) +* feat: optimize ``VyperNode.deepcopy`` (`#3784 `_) +* feat: more frontend optimizations (`#3785 `_) +* perf: reimplement ``IRnode.__deepcopy__`` (`#3761 `_) Testing suite improvements -------------------------- -* refactor[test]: bypass ``eth-tester`` and interface with evm backend directly in (`#3846 `_) -* feat: Refactor assert_tx_failed into a context in (`#3706 `_) -* feat[test]: implement ``abi_decode`` spec test in (`#4095 `_) -* feat[test]: add more coverage to ``abi_decode`` fuzzer tests in (`#4153 `_) -* feat[ci]: enable cancun testing in (`#3861 `_) -* fix: add missing test for memory allocation overflow in (`#3650 `_) -* chore: fix test for ``slice`` in (`#3633 `_) -* add abi_types unit tests in (`#3662 `_) -* refactor: test directory structure in (`#3664 `_) -* chore: test all output formats in (`#3683 `_) -* chore: deduplicate test files in (`#3773 `_) -* feat[test]: add more transient storage tests in (`#3883 `_) -* chore[ci]: fix apt-get failure in era pipeline in (`#3821 `_) -* chore[ci]: enable python3.12 tests in (`#3860 `_) -* chore[ci]: refactor jobs to use gh actions in (`#3863 `_) -* chore[ci]: use ``--dist worksteal`` from latest ``xdist`` in (`#3869 `_) -* chore: run mypy as part of lint rule in Makefile in (`#3771 `_) -* chore[test]: always specify the evm backend in (`#4006 `_) -* chore: update lint dependencies in (`#3704 `_) -* chore: add color to mypy output in (`#3793 `_) -* chore: remove tox rules for lint commands in (`#3826 `_) -* chore[ci]: roll back GH actions/artifacts version in (`#3838 `_) -* chore: Upgrade GitHub action dependencies in (`#3807 `_) -* chore[ci]: pin eth-abi for decode regression in (`#3834 `_) -* fix[ci]: release artifacts in (`#3839 `_) -* chore[ci]: merge mypy job into lint in (`#3840 `_) -* test: parametrize CI over EVM versions in (`#3842 `_) -* feat[ci]: add PR title validation in (`#3887 `_) -* fix[test]: fix failure in grammar fuzzing in (`#3892 `_) -* feat[test]: add ``xfail_strict``, clean up ``setup.cfg`` in (`#3889 `_) -* fix[ci]: pin hexbytes to pre-1.0.0 in (`#3903 `_) -* chore[test]: update hexbytes version and tests in (`#3904 `_) -* fix[test]: fix a bad bound in decimal fuzzing in (`#3909 `_) -* fix[test]: fix a boundary case in decimal fuzzing in (`#3918 `_) -* feat[ci]: update pypi release pipeline to use OIDC in (`#3912 `_) -* chore[ci]: reconfigure single commit validation in (`#3937 `_) -* chore[ci]: downgrade codecov action to v3 in (`#3940 `_) -* feat[ci]: add codecov configuration in (`#4057 `_) -* feat[test]: remove memory mocker in (`#4005 `_) -* refactor[test]: change fixture scope in examples in (`#3995 `_) -* fix[test]: fix call graph stability fuzzer in (`#4064 `_) -* chore[test]: add macos to test matrix in (`#4025 `_) -* refactor[test]: change default expected exception type in (`#4004 `_) +* refactor[test]: bypass ``eth-tester`` and interface with evm backend directly (`#3846 `_) +* feat: Refactor assert_tx_failed into a context (`#3706 `_) +* feat[test]: implement ``abi_decode`` spec test (`#4095 `_) +* feat[test]: add more coverage to ``abi_decode`` fuzzer tests (`#4153 `_) +* feat[ci]: enable cancun testing (`#3861 `_) +* fix: add missing test for memory allocation overflow (`#3650 `_) +* chore: fix test for ``slice`` (`#3633 `_) +* add abi_types unit tests (`#3662 `_) +* refactor: test directory structure (`#3664 `_) +* chore: test all output formats (`#3683 `_) +* chore: deduplicate test files (`#3773 `_) +* feat[test]: add more transient storage tests (`#3883 `_) +* chore[ci]: fix apt-get failure in era pipeline (`#3821 `_) +* chore[ci]: enable python3.12 tests (`#3860 `_) +* chore[ci]: refactor jobs to use gh actions (`#3863 `_) +* chore[ci]: use ``--dist worksteal`` from latest ``xdist`` (`#3869 `_) +* chore: run mypy as part of lint rule in Makefile (`#3771 `_) +* chore[test]: always specify the evm backend (`#4006 `_) +* chore: update lint dependencies (`#3704 `_) +* chore: add color to mypy output (`#3793 `_) +* chore: remove tox rules for lint commands (`#3826 `_) +* chore[ci]: roll back GH actions/artifacts version (`#3838 `_) +* chore: Upgrade GitHub action dependencies (`#3807 `_) +* chore[ci]: pin eth-abi for decode regression (`#3834 `_) +* fix[ci]: release artifacts (`#3839 `_) +* chore[ci]: merge mypy job into lint (`#3840 `_) +* test: parametrize CI over EVM versions (`#3842 `_) +* feat[ci]: add PR title validation (`#3887 `_) +* fix[test]: fix failure in grammar fuzzing (`#3892 `_) +* feat[test]: add ``xfail_strict``, clean up ``setup.cfg`` (`#3889 `_) +* fix[ci]: pin hexbytes to pre-1.0.0 (`#3903 `_) +* chore[test]: update hexbytes version and tests (`#3904 `_) +* fix[test]: fix a bad bound in decimal fuzzing (`#3909 `_) +* fix[test]: fix a boundary case in decimal fuzzing (`#3918 `_) +* feat[ci]: update pypi release pipeline to use OIDC (`#3912 `_) +* chore[ci]: reconfigure single commit validation (`#3937 `_) +* chore[ci]: downgrade codecov action to v3 (`#3940 `_) +* feat[ci]: add codecov configuration (`#4057 `_) +* feat[test]: remove memory mocker (`#4005 `_) +* refactor[test]: change fixture scope in examples (`#3995 `_) +* fix[test]: fix call graph stability fuzzer (`#4064 `_) +* chore[test]: add macos to test matrix (`#4025 `_) +* refactor[test]: change default expected exception type (`#4004 `_) Misc / refactor --------------- -* feat[ir]: add ``eval_once`` sanity fences to more builtins in (`#3835 `_) -* fix: reorder compilation of branches in stmt.py in (`#3603 `_) -* refactor[codegen]: make settings into a global object in (`#3929 `_) -* chore: improve exception handling in IR generation in (`#3705 `_) -* refactor: merge ``annotation.py`` and ``local.py`` in (`#3456 `_) -* chore[ux]: remove deprecated python AST classes in (`#3998 `_) -* refactor[ux]: remove deprecated ``VyperNode`` properties in (`#3999 `_) -* feat: remove Index AST node in (`#3757 `_) -* refactor: for loop target parsing in (`#3724 `_) -* chore: improve diagnostics for invalid for loop annotation in (`#3721 `_) -* refactor: builtin functions inherit from ``VyperType`` in (`#3559 `_) -* fix: remove .keyword from Call AST node in (`#3689 `_) -* improvement: assert descriptions in Crowdfund finalize() and participate() in (`#3064 `_) -* feat: improve panics in IR generation in (`#3708 `_) -* feat: improve warnings, refactor ``vyper_warn()`` in (`#3800 `_) -* fix[ir]: unique symbol name in (`#3848 `_) -* refactor: remove duplicate terminus checking code in (`#3541 `_) -* refactor: ``ExprVisitor`` type validation in (`#3739 `_) -* chore: improve exception for type validation in (`#3759 `_) -* fix: fuzz test not updated to use TypeMismatch in (`#3768 `_) -* chore: fix StringEnum._generate_next_value_ signature in (`#3770 `_) -* chore: improve some error messages in (`#3775 `_) -* refactor: ``get_search_paths()`` for vyper cli in (`#3778 `_) -* chore: replace occurrences of 'enum' by 'flag' in (`#3794 `_) -* chore: add another borrowship test in (`#3802 `_) -* chore[ux]: improve an exports error message in (`#3822 `_) -* chore: improve codegen test coverage report in (`#3824 `_) -* chore: improve syntax error messages in (`#3885 `_) -* chore[tool]: remove ``vyper-serve`` from ``setup.py`` in (`#3936 `_) -* fix[ux]: replace standard strings with f-strings in (`#3953 `_) -* chore[ir]: sanity check types in for range codegen in (`#3968 `_) +* feat[ir]: add ``eval_once`` sanity fences to more builtins (`#3835 `_) +* fix: reorder compilation of branches in stmt.py (`#3603 `_) +* refactor[codegen]: make settings into a global object (`#3929 `_) +* chore: improve exception handling in IR generation (`#3705 `_) +* refactor: merge ``annotation.py`` and ``local.py`` (`#3456 `_) +* chore[ux]: remove deprecated python AST classes (`#3998 `_) +* refactor[ux]: remove deprecated ``VyperNode`` properties (`#3999 `_) +* feat: remove Index AST node (`#3757 `_) +* refactor: for loop target parsing (`#3724 `_) +* chore: improve diagnostics for invalid for loop annotation (`#3721 `_) +* refactor: builtin functions inherit from ``VyperType`` (`#3559 `_) +* fix: remove .keyword from Call AST node (`#3689 `_) +* improvement: assert descriptions in Crowdfund finalize() and participate() (`#3064 `_) +* feat: improve panics in IR generation (`#3708 `_) +* feat: improve warnings, refactor ``vyper_warn()`` (`#3800 `_) +* fix[ir]: unique symbol name (`#3848 `_) +* refactor: remove duplicate terminus checking code (`#3541 `_) +* refactor: ``ExprVisitor`` type validation (`#3739 `_) +* chore: improve exception for type validation (`#3759 `_) +* fix: fuzz test not updated to use TypeMismatch (`#3768 `_) +* chore: fix StringEnum._generate_next_value_ signature (`#3770 `_) +* chore: improve some error messages (`#3775 `_) +* refactor: ``get_search_paths()`` for vyper cli (`#3778 `_) +* chore: replace occurrences of 'enum' by 'flag' (`#3794 `_) +* chore: add another borrowship test (`#3802 `_) +* chore[ux]: improve an exports error message (`#3822 `_) +* chore: improve codegen test coverage report (`#3824 `_) +* chore: improve syntax error messages (`#3885 `_) +* chore[tool]: remove ``vyper-serve`` from ``setup.py`` (`#3936 `_) +* fix[ux]: replace standard strings with f-strings (`#3953 `_) +* chore[ir]: sanity check types in for range codegen (`#3968 `_) v0.3.10 ("Black Adder") *********************** From f263b2d0afd86ece1a3d67f06e745a369fc93432 Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Mon, 17 Jun 2024 17:21:31 -0400 Subject: [PATCH 08/18] fix url formatting --- docs/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes.rst b/docs/release-notes.rst index c43aed112a..672f35af56 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -108,7 +108,7 @@ Venom * chore[venom]: fix output formatting of data segment in ``IRContext`` (`#4016 `_) * feat[venom]: optimize mem2var and store/variable elimination pass sequences (`#4032 `_) * fix[venom]: fix some sccp evaluations (`#4028 `_) -* fix[venom]: add ``unique_symbols`` check to venom pipeline (`#4149 https://github.com/vyperlang/vyper/pull/4149`_) +* fix[venom]: add ``unique_symbols`` check to venom pipeline (`#4149 `_) * feat[venom]: remove redundant store elimination pass (`#4036 `_) * fix[venom]: remove some dead code in ``venom_to_assembly`` (`#4042 `_) * feat[venom]: improve unused variable removal pass (`#4055 `_) From 93dd115b66dde4d31b187bcf6e8f6b24b6d75514 Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Mon, 17 Jun 2024 18:37:03 -0400 Subject: [PATCH 09/18] formatting - one line per sentence --- docs/index.rst | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/index.rst b/docs/index.rst index 9ac59cb63a..a3e83c6a17 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -6,14 +6,17 @@ Vyper ##### -Vyper is a contract-oriented, Pythonic programming language that targets the `Ethereum Virtual Machine (EVM) `_. It prioritizes user safety, encourages clear coding practices via language design and efficient execution. Vyper code is safe, clear and efficient! +Vyper is a contract-oriented, Pythonic programming language that targets the `Ethereum Virtual Machine (EVM) `_. +It prioritizes user safety, encourages clear coding practices via language design and efficient execution. Vyper code is safe, clear and efficient! Principles and Goals ==================== * **Security**: It should be possible and natural to build secure smart-contracts in Vyper. * **Language and compiler simplicity**: The language and the compiler implementation should strive to be simple. -* **Auditability**: Vyper code should be maximally human-readable. Furthermore, it should be maximally difficult to write misleading code. Simplicity for the reader is more important than simplicity for the writer, and simplicity for readers with low prior experience with Vyper (and low prior experience with programming in general) is particularly important. +* **Auditability**: Vyper code should be maximally human-readable. + Furthermore, it should be maximally difficult to write misleading code. + Simplicity for the reader is more important than simplicity for the writer, and simplicity for readers with low prior experience with Vyper (and low prior experience with programming in general) is particularly important. Because of this Vyper provides the following features: From d727a6a895b2477b1a174d93aa28836ed8937e6b Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Mon, 17 Jun 2024 18:38:16 -0400 Subject: [PATCH 10/18] format some text --- docs/release-notes.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/release-notes.rst b/docs/release-notes.rst index 672f35af56..cb7e833d9b 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -17,10 +17,10 @@ Release Notes :'<,'>s/\v(https:\/\/github.com\/vyperlang\/vyper\/security\/advisories\/)([-A-Za-z0-9]+)/(`\2 <\1\2>`_)/g v0.4.0 ("Nagini") -******************* +***************** Date released: 2024-06-17 -================== +========================= 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. From 2b33d2cc6586db8e6eeb2a21e6aef7cd2084e028 Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Mon, 17 Jun 2024 23:04:03 -0400 Subject: [PATCH 11/18] bump date --- docs/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes.rst b/docs/release-notes.rst index cb7e833d9b..eba292d54b 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -19,7 +19,7 @@ Release Notes v0.4.0 ("Nagini") ***************** -Date released: 2024-06-17 +Date released: 2024-06-18 ========================= 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. From 427d90442fed0ead07217a508cf927ab244dfa1b Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Tue, 18 Jun 2024 15:58:19 -0400 Subject: [PATCH 12/18] bump date --- docs/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes.rst b/docs/release-notes.rst index eba292d54b..129b4e9e30 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -19,7 +19,7 @@ Release Notes v0.4.0 ("Nagini") ***************** -Date released: 2024-06-18 +Date released: 2024-06-19 ========================= 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. From 07028e5c9143d826eba6187ecb59692a3faf642d Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Tue, 18 Jun 2024 16:01:44 -0400 Subject: [PATCH 13/18] add more PRs to the list --- docs/release-notes.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/release-notes.rst b/docs/release-notes.rst index 129b4e9e30..e68675b561 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -135,6 +135,7 @@ Docs * chore[docs]: add docs for v0.4.0 features (`#3947 `_) * chore[docs]: ``implements`` does not check event declarations (`#4052 `_) * docs: adopt a new theme: ``shibuya`` (`#3754 `_) +* chore[docs]: add evaluation order warning for builtins (`#4158 `_) * Update ``FUNDING.yml`` (`#3636 `_) * docs: fix nit in v0.3.10 release notes (`#3638 `_) * docs: add note on ``pragma`` parsing (`#3640 `_) @@ -180,6 +181,8 @@ Bugfixes * fix[codegen]: recursive dynarray oob check (`#4091 `_) * fix[codegen]: add back in ``returndatasize`` check (`#4144 `_) * fix: block memory allocation overflow (`#3639 `_) +* fix[codegen]: panic on potential eval order issue for some builtins (`#4157 `_) +* fix[codegen]: panic on potential subscript eval order issue (`#4159 `_) * add comptime check for uint2str input (`#3671 `_) * fix: dead code analysis inside for loops (`#3731 `_) * fix[ir]: fix a latent bug in ``sha3_64`` codegen (`#4063 `_) From dc3addd3acb17301b251acb07bcc857049e7339d Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Wed, 19 Jun 2024 15:27:31 -0400 Subject: [PATCH 14/18] bump date --- docs/release-notes.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/release-notes.rst b/docs/release-notes.rst index e68675b561..cf47d89509 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -19,7 +19,7 @@ Release Notes v0.4.0 ("Nagini") ***************** -Date released: 2024-06-19 +Date released: 2024-06-20 ========================= 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. From b80fa9ddd4ccc640a5d534767f22708ad4cd352a Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Thu, 20 Jun 2024 06:52:42 -0400 Subject: [PATCH 15/18] update PR list --- docs/release-notes.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/release-notes.rst b/docs/release-notes.rst index cf47d89509..88d6c65012 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -197,6 +197,7 @@ Bugfixes * fix[ux]: fix compiler hang for large exponentiations (`#3893 `_) * fix[lang]: allow type expressions inside pure functions (`#3906 `_) * fix[ux]: raise ``VersionException`` with source info (`#3920 `_) +* fix[codegen]: fix false positive in risky call detection (`#4160 `_) * fix[lang]: fix ``pow`` folding when args are not literals (`#3949 `_) * fix[codegen]: fix some hardcoded references to ``STORAGE`` location (`#4015 `_) From 282a26e146d9419673195afd2983cc572333e81c Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Thu, 20 Jun 2024 10:55:48 -0400 Subject: [PATCH 16/18] Revert "update PR list" This reverts commit b80fa9ddd4ccc640a5d534767f22708ad4cd352a. --- docs/release-notes.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/release-notes.rst b/docs/release-notes.rst index 88d6c65012..cf47d89509 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -197,7 +197,6 @@ Bugfixes * fix[ux]: fix compiler hang for large exponentiations (`#3893 `_) * fix[lang]: allow type expressions inside pure functions (`#3906 `_) * fix[ux]: raise ``VersionException`` with source info (`#3920 `_) -* fix[codegen]: fix false positive in risky call detection (`#4160 `_) * fix[lang]: fix ``pow`` folding when args are not literals (`#3949 `_) * fix[codegen]: fix some hardcoded references to ``STORAGE`` location (`#4015 `_) From 6b3236abd42cd87cd3bd041b1f9016b89a7f0725 Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Thu, 20 Jun 2024 11:09:12 -0400 Subject: [PATCH 17/18] minor wording update --- docs/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.rst b/docs/index.rst index a3e83c6a17..6c36b5fd7c 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -7,7 +7,7 @@ Vyper ##### Vyper is a contract-oriented, Pythonic programming language that targets the `Ethereum Virtual Machine (EVM) `_. -It prioritizes user safety, encourages clear coding practices via language design and efficient execution. Vyper code is safe, clear and efficient! +It prioritizes user safety, encourages clear coding practices via language design and efficient execution. In other words, Vyper code is safe, clear and efficient! Principles and Goals ==================== From e966bf2a880df1bf9f5a4616ab0b4272089d7a0d Mon Sep 17 00:00:00 2001 From: Charles Cooper Date: Thu, 20 Jun 2024 11:35:35 -0400 Subject: [PATCH 18/18] add patched GHSAs to release notes --- docs/release-notes.rst | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/release-notes.rst b/docs/release-notes.rst index cf47d89509..fa17ef4f7b 100644 --- a/docs/release-notes.rst +++ b/docs/release-notes.rst @@ -200,6 +200,23 @@ Bugfixes * fix[lang]: fix ``pow`` folding when args are not literals (`#3949 `_) * fix[codegen]: fix some hardcoded references to ``STORAGE`` location (`#4015 `_) +Patched security advisories (GHSAs) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +* Bounds check on built-in ``slice()`` function can be overflowed (`GHSA-9x7f-gwxq-6f2c `_) +* ``concat`` built-in can corrupt memory (`GHSA-2q8v-3gqq-4f8p `_) +* ``raw_call`` ``value=`` kwargs not disabled for static and delegate calls (`GHSA-x2c2-q32w-4w6m `_) +* negative array index bounds checks (`GHSA-52xq-j7v9-v4v2 `_) +* ``range(start, start + N)`` reverts for negative numbers (`GHSA-ppx5-q359-pvwj `_) +* incorrect topic logging in ``raw_log`` (`GHSA-xchq-w5r3-4wg3 `_) +* double eval of the ``slice`` start/length args in certain cases (`GHSA-r56x-j438-vw5m `_) +* multiple eval of ``sqrt()`` built in argument (`GHSA-5jrj-52x8-m64h `_) +* double eval of raw_args in ``create_from_blueprint`` (`GHSA-3whq-64q2-qfj6 `_) +* ``sha3`` codegen bug (`GHSA-6845-xw22-ffxv `_) +* ``extract32`` can read dirty memory (`GHSA-4hwq-4cpm-8vmx `_) +* ``_abi_decode`` Memory Overflow (`GHSA-9p8r-4xp4-gw5w `_) +* External calls can overflow return data to return input buffer (`GHSA-gp3w-2v2m-p686 `_) + Tooling ------- * feat[tool]: archive format (`#3891 `_)