Releases: vyperlang/vyper
Releases · vyperlang/vyper
v0.4.1.b2
What's Changed
- fix[venom]: add
make_ssa
pass after algebraic optimizations by @harkal in #4292 - refactor[venom]: refactor sccp pass to use dfg by @HodanPlodky in #4329
- chore[venom]: expand venom docs by @sandbubbles in #4314
- refactor[venom]: update translator for
deploy
instruction by @charles-cooper in #4318 - feat[venom]: reduce legacy opts when venom is enabled by @charles-cooper in #4336
- refactor[ux]: add
venom
asexperimental-codegen
alias by @sandbubbles in #4337 - fix[ci]: fix README encoding in
setup.py
by @charles-cooper in #4348 - feat[docs]: add Telegram badge to README.md by @rafael-abuawad in #4342
- feat[venom]: make cfg scheduler "stack aware" by @charles-cooper in #4356
- feat[venom]: improve liveness computation by @charles-cooper in #4330
- feat[venom]: new
DFTPass
algorithm by @harkal in #4255 - chore[docs]: add
method_id
toabi_encode
signature by @pcaversaccio in #4355 - fix[ux]: fix empty hints in error messages by @sandbubbles in #4351
- refactor[ux]: refactor preparser by @tserg in #4293
- refactor[venom]: optimize lattice evaluation by @harkal in #4368
- feat[venom]: make dft-pass commutative aware by @charles-cooper in #4358
- chore[docs]: mention the
--venom
flag in venom docs by @sandbubbles in #4353 - refactor[test]: add some sanity checks to
abi_decode
tests by @cyberthirst in #4096 - fix[lang]: use folded node for typechecking by @tserg in #4365
- refactor[tool]: refactor
compile_from_zip()
by @charles-cooper in #4366 - feat[lang]: add
module.__at__()
to cast to interface by @charles-cooper in #4090
New Contributors
- @rafael-abuawad made their first contribution in #4342
Full Changelog: v0.4.1b1...v0.4.1.b2
v0.4.1b1
What's Changed
- chore[docs]: add
FUNDING.json
for drips funding by @benber86 in #4167 - chore[docs]: update
sourceMap
field descriptions by @rimrakhimov in #4170 - chore[test]: fix a type hint by @ZhipengXue97 in #4173
- feat[venom]: offset instruction by @HodanPlodky in #4180
- fix[test]: fix test in grammar fuzzer by @charles-cooper in #4150
- chore[docs]: remove experimental note for cancun by @cyberthirst in #4183
- refactor[codegen]: remove redundant
IRnode.from_list
by @trocher in #4151 - feat[lang]: introduce
mana
as an alias forgas
by @pcaversaccio in #3713 - fix[lang]: fix
.vyi
function body check by @cyberthirst in #4177 - fix[lang]: add
raw_log()
constancy check by @cyberthirst in #4201 - feat[lang]!: make
@external
modifier optional in.vyi
files by @cyberthirst in #4178 - fix[codegen]: fix
abi_encode
buffer size in external calls by @cyberthirst in #4202 - fix[lang]: fix precedence in floordiv hint by @cyberthirst in #4203
- fix[lang]: fix panic in call cycle detection by @cyberthirst in #4200
- fix[lang]: fix certain varinfo comparisons by @charles-cooper in #4164
- feat[codegen]!: check
returndatasize
even whenskip_contract_check
is set by @charles-cooper in #4148 - fix[tool]: update
InterfaceT.__str__
implementation by @charles-cooper in #4205 - fix[tool]: fix classification of AST nodes by @charles-cooper in #4210
- chore[tool]: update
FUNDING.json
for optimism RPGF by @benber86 in #4218 - fix[tool]: keep
experimentalCodegen
blank in standard json input by @charles-cooper in #4216 - feat[docs]: add bug bounty program to security policy by @cyberthirst in #4230
- feat[ux]: move exception hint to the end of the message by @cyberthirst in #4154
- fix[venom]: invalid jump error by @HodanPlodky in #4214
- perf[venom]: add
OrderedSet.last()
by @charles-cooper in #4236 - feat[venom]: improve liveness computation time by @charles-cooper in #4086
- fix[ux]: improve error message for bad hex literals by @charles-cooper in #4244
- feat[venom]: only stack_reorder before join points by @charles-cooper in #4247
- perf[venom]: improve OrderedSet operations by @charles-cooper in #4246
- fix[lang]: fix
==
and!=
bytesM folding by @trocher in #4254 - fix[venom]: fix invalid
phi
s after SCCP by @HodanPlodky in #4181 - fix[venom]: clean up sccp pass by @charles-cooper in #4261
- refactor[venom]: remove
dup_requirements
analysis by @charles-cooper in #4262 - fix[venom]: remove duplicate volatile instructions by @harkal in #4263
- feat[tool]: add integrity hash to initcode by @charles-cooper in #4234
- fix[venom]: fix
_stack_reorder()
routine by @HodanPlodky in #4220 - chore[docs]: add binary installation methods by @DanielSchiavini in #4258
- fix[ux]: fix relpath compiler panic on windows by @charles-cooper in #4228
- feat[venom]: store expansion pass by @charles-cooper in #4068
- feat[lang]: use keyword arguments for event instantiation by @z80dev in #4257
- feat[venom]: add effects to instructions by @charles-cooper in #4264
- feat[docs]: add installation via pipx and uv by @charles-cooper in #4274
- fix[tool]: update VarAccess pickle implementation by @charles-cooper in #4270
- feat[venom]: add small heuristic for cleaning input stack by @charles-cooper in #4251
- fix[venom]: promote additional memory locations to variables by @harkal in #4039
- feat[tool]: add all imported modules to
-f annotated_ast
output by @charles-cooper in #4209 - feat[lang]: add native hex string literals by @tserg in #4271
- refactor[venom]: refactor module structure by @charles-cooper in #4295
- refactor[lang]: remove translated fields for constant nodes by @tserg in #4287
- fix[tool]: include structs in
-f interface
output by @sandbubbles in #4294 - fix[venom]: fix unused variables pass by @charles-cooper in #4259
- feat[tool]: separate import resolution pass by @charles-cooper in #4229
- fix[lang]: fix recursive interface imports by @charles-cooper in #4303
- chore[ci]: add auto-labeling workflow by @cyberthirst in #4276
- fix[test]: fix some clamper tests by @cyberthirst in #4300
- feat[lang]: support top level
"abi"
key in json interfaces by @sandbubbles in #4279 - feat[lang]: support flags from imported interfaces by @tserg in #4253
- refactor[venom]: move commutative instruction set by @HodanPlodky in #4307
- fix[ci]: fix commithash calculation for pypi release by @charles-cooper in #4309
New Contributors
- @rimrakhimov made their first contribution in #4170
- @ZhipengXue97 made their first contribution in #4173
- @HodanPlodky made their first contribution in #4180
- @sandbubbles made their first contribution in #4294
Full Changelog: v0.4.0...v0.4.1b1
v0.4.0 ("Nagini")
v0.4.0 represents a major overhaul to the Vyper language. Notably, it overhauls the import system and adds support for code reuse. It also adds a new, experimental backend to Vyper which lays the foundation for improved analysis, optimization and integration with third party tools.
Breaking Changes
- 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
toint168
(#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
withflag
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
toethereum.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 (#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) (#3659)
- feat[ir]: add
make_ssa
pass to venom pipeline (#3825) - feat[venom]: implement
mem2var
andsccp
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
andIRAnalysisCache
(#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) - 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
v0.4.0rc6
What's Changed
- fix[codegen]: fix double evals in sqrt, slice, blueprint by @cyberthirst in #3976
- fix[codegen]: fix double eval in dynarray append/pop by @charles-cooper in #4030
- feat[venom]: optimize mem2var and store/variable elimination pass sequences by @harkal in #4032
- fix[venom]: fix some sccp evaluations by @charles-cooper in #4028
- feat[venom]: "pickaxe" stack scheduler optimization by @charles-cooper in #3951
- fix[codegen]: fix some hardcoded references to
STORAGE
location by @cyberthirst in #4015 - feat[venom]: remove redundant store elimination pass by @charles-cooper in #4036
- fix[venom]: remove some dead code in
venom_to_assembly
by @charles-cooper in #4042 - fix[codegen]: fix double eval of start in range expr by @cyberthirst in #4033
- chore[docs]:
implements
does not check event declarations by @pcaversaccio in #4052 - feat[lang]!: make internal decorator optional by @charles-cooper in #4040
- fix[codegen]: fix
make_setter
overlap with internal calls by @charles-cooper in #4037 - feat[venom]: improve unused variable removal pass by @harkal in #4055
- refactor[tool]: refactor storage layout export by @charles-cooper in #3789
- feat[venom]: optimize branching by @harkal in #4049
- feat[ci]: add codecov configuration by @charles-cooper in #4057
- feat[venom]: avoid last
swap
for commutative ops by @harkal in #4048 - fix[tool]: compile multiple files by @charles-cooper in #4053
- chore[docs]: add docs for v0.4.0 features by @charles-cooper in #3947
- fix[codegen]: fix
_abi_decode
buffer overflow by @cyberthirst in #3925 - fix[test]: fix call graph stability fuzzer by @charles-cooper in #4064
- fix[venom]: remove liveness requests by @harkal in #4058
- feat[venom]: add algebraic optimization pass by @harkal in #4054
- fix[ir]: fix a latent bug in
sha3_64
codegen by @charles-cooper in #4063 - fix[codegen]: fix
make_setter
overlap indynarray_append
by @charles-cooper in #4059 - fix[venom]: fix list of volatile instructions by @charles-cooper in #4065
Full Changelog: v0.4.0rc5...v0.4.0rc6
v0.4.0rc5
What's Changed
- chore[ir]: sanity check types in for range codegen by @charles-cooper in #3968
- feat[tool]!: make cancun the default evm version by @charles-cooper in #4029
Full Changelog: v0.4.0rc4...v0.4.0rc5
v0.4.0rc4
What's Changed
- refactor[venom]: remove unused method in
make_ssa.py
by @harkal in #4012 - fix[venom]: fix return opcode handling in mem2var by @harkal in #4011
- feat[tool]: add source map for constructors by @tserg in #4008
- fix[lang]: recursion in
uses
analysis for nonreentrant functions by @charles-cooper in #3971 - fix[lang]: typecheck hashmap indexes with folding by @DanielSchiavini in #4007
- fix[venom]: fix
cfg
output format by @harkal in #4010 - fix[codegen]: fix
raw_log()
when topics are non-literals by @cyberthirst in #3977 - chore[venom]: fix output formatting of data segment in
IRContext
by @harkal in #4016 - feat[venom]: add store elimination pass by @harkal in #4021
- fix[tool]: fix cross-compilation issues, add windows CI by @charles-cooper in #4014
- chore[test]: add macos to test matrix by @DanielSchiavini in #4025
Full Changelog: v0.4.0rc3...v0.4.0rc4
v0.4.0rc3
What's Changed
- chore[ux]: compute natspec as part of standard pipeline by @charles-cooper in #3946
- chore[tool]: add help text for
hex-ir
CLI flag by @antazoey in #3942 - fix[ux]: replace standard strings with f-strings by @trocher in #3953
- fix[lang]: builtin type comparisons by @charles-cooper in #3956
- fix[lang]: fix
pow
folding when args are not literals by @charles-cooper in #3949 - chore[docs]: fix some typos by @wellweek in #3855
- feat[lang]: support
block.blobbasefee
by @tserg in #3945 - fix[docs]: fix clipped
endAuction
method in example section by @electriclilies in #3969 - feat[venom]: implement
mem2var
andsccp
passes by @harkal in #3941 - chore[ci]: downgrade codecov action to v3 by @charles-cooper in #3940
- refactor[docs]: refactor security policy by @cyberthirst in #3981
- fix[codegen]: same symbol jumpdest merge by @harkal in #3982
- refactor[test]: bypass
eth-tester
and interface with evm backend directly by @DanielSchiavini in #3846 - feat[lang]: add
blobhash()
builtin by @pcaversaccio in #3962 - refactor[venom]: introduce
IRContext
andIRAnalysisCache
by @harkal in #3983 - feat[test]: remove memory mocker by @charles-cooper in #4005
- chore[test]: always specify the evm backend by @DanielSchiavini in #4006
- refactor[test]: change default expected exception type by @DanielSchiavini in #4004
- chore[ux]: remove deprecated python AST classes by @tserg in #3998
- refactor[ux]: remove deprecated
VyperNode
properties by @tserg in #3999 - refactor[test]: change fixture scope in examples by @charles-cooper in #3995
- feat[tool]: archive format by @charles-cooper in #3891
- feat[venom]: optimize
get_basic_block()
by @charles-cooper in #4002 - fix[venom]: fix branch eliminator cases in sccp by @charles-cooper in #4003
- fix[venom]: fix eval of
exp
in sccp by @charles-cooper in #4009
New Contributors
- @wellweek made their first contribution in #3855
- @electriclilies made their first contribution in #3969
Full Changelog: v0.4.0rc2...v0.4.0rc3
v0.4.0rc2
What's Changed
- chore[ci]: reconfigure single commit validation by @charles-cooper in #3937
- fix[ux]: fix
uses
error message by @charles-cooper in #3926 - chore[tool]: remove
vyper-serve
fromsetup.py
by @MoigeMatino in #3936 - chore[docs]: amend
revert_on_failure
kwarg docs for create builtins by @pcaversaccio in #3921 - fix[lang]: fix array index checks when the subscript is folded by @charles-cooper in #3924
- fix[lang]: fix
uses
analysis for nonreentrant functions by @charles-cooper in #3927 - feat[lang]: export interfaces by @charles-cooper in #3919
New Contributors
- @MoigeMatino made their first contribution in #3936
Full Changelog: v0.4.0rc1...v0.4.0rc2
v0.4.0rc1
What's Changed
- refactor[venom]: refactor venom operand classes by @harkal in #3915
- fix[ux]: error messages relating to initializer issues by @charles-cooper in #3831
- feat[lang]: add
revert_on_failure
kwarg for create builtins by @DanielSchiavini in #3844 - fix[ux]: raise
VersionException
with source info by @tserg in #3920 - fix[test]: fix a boundary case in decimal fuzzing by @charles-cooper in #3918
- feat[lang]!: change ABI type of
decimal
toint168
by @charles-cooper in #3696 - refactor[codegen]: make settings into a global object by @charles-cooper in #3929
- feat[lang]!: add feature flag for decimals by @charles-cooper in #3930
Full Changelog: v0.4.0b6...v0.4.0rc1
v0.4.0b6
What's Changed
- test: parametrize CI over EVM versions by @charles-cooper in #3842
- chore[ci]: enable python3.12 tests by @charles-cooper in #3860
- chore[ci]: refactor jobs to use gh actions by @charles-cooper in #3863
- chore[ci]: use
--dist worksteal
from latestxdist
by @charles-cooper in #3869 - feat[ci]: enable cancun testing by @charles-cooper in #3861
- fix[lang]: fix importing of flag types by @cyberthirst in #3871
- fix[codegen]: overflow check in
slice()
by @charles-cooper in #3818 - chore: improve syntax error messages by @tserg in #3885
- chore[build]: remove docs rule in
setup.py
by @charles-cooper in #3882 - feat[ci]: add PR title validation by @charles-cooper in #3887
- feat[lang]!: change the signature of
block.prevrandao
by @charles-cooper in #3879 - fix[codegen]: fix non-memory reason strings by @tserg in #3877
- fix[lang]: transitive exports by @charles-cooper in #3888
- fix[test]: fix failure in grammar fuzzing by @charles-cooper in #3892
- feat[test]: add
xfail_strict
, clean upsetup.cfg
by @charles-cooper in #3889 - fix[ux]: fix compiler hang for large exponentiations by @charles-cooper in #3893
- fix[lang]: pure access analysis by @charles-cooper in #3895
- fix[ci]: pin hexbytes to pre-1.0.0 by @charles-cooper in #3903
- feat[ir]: add
make_ssa
pass to venom pipeline by @harkal in #3825 - fix[tool]: fix
combined_json
output for CLI by @charles-cooper in #3901 - refactor[venom]: use venom pass instances by @harkal in #3908
- fix[lang]: allow type expressions inside pure functions by @charles-cooper in #3906
- feat[test]: add more transient storage tests by @tserg in #3883
- chore[test]: update hexbytes version and tests by @DanielSchiavini in #3904
- fix[test]: fix a bad bound in decimal fuzzing by @charles-cooper in #3909
- fix[codegen]: fix transient codegen for
slice
andextract32
by @cyberthirst in #3874 - feat[ci]: update pypi release pipeline to use OIDC by @charles-cooper in #3912
New Contributors
- @cyberthirst made their first contribution in #3871
Full Changelog: v0.4.0b5...v0.4.0b6