资源Vyper 中文文档
发布记录
查看 Vyper 0.4.x 系列的版本更新、破坏性变更和安全修复。
本页汇总 Vyper 0.4.x 系列的发布记录。每个版本都包括破坏性变更、新功能、安全修复和工具链改进。 完整的安全审计报告可在 vyperlang/audits 仓库查看。
v0.4.3 — "Buttermilk Racer"
发布日期: 2025-06-19
破坏性变更
- 默认 EVM 版本改为
prague
新功能
- 新增
@raw_return装饰器:允许合约直接返回原始字节而无需 ABI 编码,适用于代理合约场景 - 接口中禁止使用
@raw_return
Venom 改进
多项 Venom 优化器管线改进,包括 DFTPass 修复、reduce single-use expansion、函数内联修复、LALR(1) 语法重写等。
v0.4.2 — "Lernaean Hydra"
发布日期: 2025-05-31
破坏性变更
sqrt移至新的 stdlibmath模块(from vyper.builtins import math)- 禁止从
@nonreentrant函数调用其他@nonreentrant函数 - 禁止调用
__default__函数 - 移除弃用的位运算内建函数(
bitwise_and等) --venom重命名为--venom-experimental- 更新存储布局格式
新功能
- 默认重入保护:
@nonreentrant现在可通过#pragma nonreentrancy on全局启用 - 新增
raw_create()内建函数 - 为
bytesM类型启用位运算操作 as_wei_value扩展至所有数值类型
安全修复
concat()零长度参数可能跳过副作用 (GHSA-vgf2-gvx8-xwc3)slice()输出长度为 0 时可能跳过副作用 (GHSA-4w26-8p97-f4jp)
Venom 改进
新增死存储消除、CSE 消除优化、调用约定改进。基准合约通常减小 5% 体积。
v0.4.1 — "Tokara Habu"
发布日期: 2025-03-01
主要是打磨版本,聚焦于 bug 修复、UX 改进和安全修复(4 个低中等级 GHSA 通告)。Venom 管线取得了显著进步。
破坏性变更
.vyi文件中@external修饰符变为可选- 即使设置了
skip_contract_check也检查returndatasize - 修复
IERC4626签名 - 禁止绝对相对导入
新功能
module.__at__()用于转换为接口- 事件实例化支持关键字参数
- 原生十六进制字符串字面量
- 引入
mana作为gas的别名 - 支持从导入接口中使用 flag 类型
安全修复
- 某些预编译合约的成功状态未检查
- AugAssign 求值顺序导致对象内 OOB 写入
sqrt未定义舍入行为for列表迭代器的多次求值问题
工具改进
- 新增
-Werror和-Wnone选项 - 支持通过
json和.vyz输入的存储布局 - initcode 中添加完整性哈希
v0.4.0 — "Nagini"
发布日期: 2024-06-20
v0.4.0 是 Vyper 的重大版本升级。核心改动包括全新的导入/模块系统和实验性 Venom 后端。
审计:ChainSecurity(3 轮)、Statemind、OtterSec(2 轮)
破坏性变更
- 默认 EVM 版本改为
cancun - 移除命名重入锁(改为全局锁)
block.prevrandao签名变更decimal的 ABI 类型改为int168_abi_encode/_abi_decode重命名(移除前缀下划线)decimal需要显式 feature flag 启用@internal装饰器变为可选- 外部调用需要
extcall/staticcall关键字 - 引入
//(整数除法),禁止对整数使用/ - 结构体实例化使用关键字参数
- 循环变量需要类型标注
enum关键字替换为flag- 移除内建常量
- 移除 Istanbul 和 Berlin 支持
range支持双参数加boundvyper.interfaces重命名为ethereum.ercs
模块系统
这是 v0.4.0 最核心的新功能:
- 实现"无状态"模块
- 单例模块与所有权层级
- 函数导出(
exports) - ABI 中自动导出事件
- 支持导入模块中的常量和接口定义
Venom IR
全新的中间表示,受 LLVM IR 启发:
- SSA(静态单赋值)
- mem2var 和 SCCP 优化
- 存储消除和字面量提取
- 代数优化和分支优化
其他新功能
blobhash()内建函数- 支持
block.blobbasefee create内建函数支持revert_on_failure参数- 允许字节串的向下转型
本页目录