发行说明¶
v0.3.10 (“Black Adder”)¶
发布日期:2023-10-04¶
v0.3.10 是一个以性能为中心的版本。它添加了一个 codesize
优化模式 (#3493),添加了新的 Vyper 特定 #pragma
指令 (#3493),使用 Cancun 的 MCOPY
操作码进行一些编译器生成的代码 (#3483),并且生成了现在具有 O(1) 性能的选择器表 (#3496)。
重大变更:¶
非重大变更和改进:¶
重要修复:¶
修复
ecrecover()
在签名无效时的行为 (GHSA-f5x6-7qgp-jhf3, #3586)修复:某些使用
msize
的内置函数的内存分配 (#3610)修复:在某些复杂表达式中
_abi_decode()
输入验证 (#3626)修复:arm 构建的 pycryptodome (#3485)
使内部函数的参数可变 (#3473)
对内部折叠的内置函数进行类型检查 (#3490)
根据最新的 1153 EIP 规范更新 tload/tstore 操作码 (#3484)
修复:当设置 max_outsize=0 时 raw_call 类型 (#3572)
修复:实现对索引事件参数的检查 (#3570)
修复:
_abi_decode()
参数的类型检查 (#3626)
其他文档更新、任务和修复:¶
放宽对内部函数签名的限制 (#3573)
在版本
0.2.15
、0.2.16
和0.3.0
的发行说明中添加有关安全公告的说明 (#3553)修复:发行说明中的已删除版本 (#3545)
更新已删除版本的发行说明 (#3547)
改进冲突方法 ID 的错误消息 (#3491)
记录 epsilon 内置函数 (#3552)
放宽版本 pragma 解析 (#3511)
修复:在可编辑模式下查找已安装包的问题 (#3510)
在文档中添加有关
ecrecover
的安全公告的说明 (#3539)将
asm
选项添加到 cli 帮助 (#3585)为重复范围检查将消息添加到错误映射 (#3542)
修复:公共常量数组 (#3536)
v0.3.9 (“Common Adder”)¶
发布日期:2023-05-29
这是一个针对 v0.3.8 的补丁版本修复。@bout3fiddy 发现了 v0.3.8 中蓝图合约的代码大小回归,该回归已在本版本中修复。@bout3fiddy 还发现了 v0.3.8 中默认函数的运行时性能(gas)回归,该回归已在本版本中修复。
修复
v0.3.8¶
发布日期:2023-05-23
非重大变更和改进
transient
存储关键字 (#3373)三元运算符 (#3398)
raw_revert()
内置函数 (#3136)移位运算符 (#3019)
使
send()
的 gas 津贴可配置 (#3158)使用新的
push0
操作码 (#3361)Python 3.11 支持 (#3129)
放弃对 Python 3.8 和 3.9 的支持 (#3325)
针对
aarch64
构建 (#2687)
请注意,随着 push0
操作码的添加,shanghai
现在是 Vyper 的默认编译目标。当部署到不支持 shanghai
的链时,建议将 --evm-version
设置为 paris
,否则可能会导致难以调试的错误。
主要的重构 PR
重要修复
当右值是复杂类型并且引用左值时进行赋值 (#3410)
未初始化的不可变值 (#3409)
混合使用
max_outsize=0
和revert_on_failure=False
时的成功值 (GHSA-w9g2-3w7p-72g9)阻止某些类型的存储分配器溢出 (GHSA-mgv8-gggw-mrg6)
在 dynarray 出现在赋值的两侧时进行加载前存储 (GHSA-3p37-3636-q8wv)
对形式为
for i in range(x, x+N)
的循环进行边界检查 (GHSA-6r8q-pfpv-7cgj)内部函数的调用位置 posargs 和 kwargs 的对齐 (GHSA-ph9x-4vc9-m39g)
针对默认函数 calldatasize < 4 的批次不可支付检查 (#3104, #3408, cf. GHSA-vxmm-cwh2-q762)
其他文档更新、任务和修复
调用图稳定性 (#3370)
修复
vyper-serve
输出 (#3338)添加
custom:
natspec 标签 (#3403)将缺少的 PC 映射添加到
vyper_json
输出 (#3333)修复内部函数的构造函数上下文 (#3388)
添加
selfdestruct
使用的弃用警告 (#3372)将字节码元数据选项添加到 vyper-json (#3117)
修复当
break
位于循环之外时的编译器恐慌 (#3177)修复内置函数的复杂参数 (#3167)
添加对 ABI 导入中所有类型的支持 (#3154)
禁用 uadd 运算符 (#3174)
阻止十进制数上的按位运算 (#3219)
引发
UNREACHABLE
(#3194)允许枚举作为映射键 (#3256)
阻止布尔型
not
运算符在数字类型上使用 (#3231)强制循环的迭代器为有效名称 (#3242)
修复类型检查器热点 (#3318)
重写类型检查器日志以处理嵌套提交 (#3375)
修复空函数的缺少的 PC 映射 (#3202)
防止在 for 循环中迭代空列表 (#3197)
在常量折叠期间跳过枚举成员 (#3235)
按位
not
常量折叠 (#3222)允许访问常量地址的成员 (#3261)
防止接口中的装饰器 (#3266)
修复某些内置函数中十进制数的边界 (#3283)
文字空字节串的长度 (#3276)
阻止 HashMap 的
empty()
(#3303)修复空列表的类型推断 (#3377)
禁止从
pure
、view
函数中进行日志记录 (#3424)改进比较运算符的优化器规则 (#3412)
在推送时部署到 ghcr (#3435)
添加关于接口中返回值边界的说明 (#3205)
在
ERC1155ownable
的URI
事件中索引id
参数 (#3203)将缺少的
asset
函数添加到ERC4626
内置接口 (#3295)澄清
skip_contract_check=True
可能导致未定义的行为 (#3386)添加
custom
NatSpec 标签到文档 (#3404)修复
uint256_addmod
文档 (#3300)记录外部调用的可选关键字参数 (#3122)
删除
slice()
长度文档注意事项 (#3152)修复
blockhash
的文档以反映回滚行为 (#3168)编译器错误消息的改进 (#3121, #3134, #3312, #3304, #3240, #3264, #3343, #3307, #3313 和 #3215)
这些只是亮点,因为许多其他错误修复、文档更新和重构(超过 150 个 pull 请求!)都包含在这个版本中!有关完整列表,请参阅 变更日志。特别感谢 @tserg、@trocher、@z80dev、@emc415 和 @benber86 在本版本中的贡献!
新贡献者
@omahs 在 (#3128) 中做出了他们的第一次贡献
@ObiajuluM 在 (#3124) 中做出了他们的第一次贡献
@trocher 在 (#3134) 中做出了他们的第一次贡献
@ozmium22 在 (#3149) 中做出了他们的第一次贡献
@ToonVanHove 在 (#3168) 中做出了他们的第一次贡献
@emc415 在 (#3158) 中做出了他们的第一次贡献
@lgtm-com 在 (#3147) 中做出了他们的第一次贡献
@tdurieux 在 (#3224) 中做出了他们的第一次贡献
@victor-ego 在 (#3263) 中做出了他们的第一次贡献
@miohtama 在 (#3257) 中做出了他们的第一次贡献
@kelvinfan001 在 (#2687) 中做出了他们的第一次贡献
v0.3.7¶
发布日期:2022-09-26
重大变更
非重大变更和改进
fix:
Crowdfund.finalize()
中的断言描述 (#3058)fix: 更改示例 ERC721 接口的可变性 (#3076)
chore: 改善针对非校验和地址文字的错误消息 (#3065)
feat: 添加
block.prevrandao
作为block.difficulty
的别名 (#3085)feat:
epsilon()
内置函数 (#3057)feat: 将 ecrecover 签名扩展为接受其他参数类型 (#3084)
feat: 允许将常量和不可变变量声明为 public (#3024)
feat: 允许在字节码中可选地禁用元数据 (#3107)
错误修复
其他更改和改进
doc: 更新 SECURITY.md 中的损坏链接 (#3095)
chore: 更新文档中的 Discord 链接 (#3031)
fix: 修复各种 README 中的损坏链接 (#3072)
chore: 修复示例中的编译警告 (#3033)
feat: 将行号附加到错误消息中的文件名 (#3092)
chore: 迁移 lark 语法 (#3082)
chore: 放宽并升级语义版本 (#3106)
新贡献者
@emilianobonassi 在 #3107 中做出了他们的第一次贡献
@unparalleled-js 在 #3106 中做出了他们的第一次贡献
@pcaversaccio 在 #3085 中做出了他们的第一次贡献
@nfwsncked 在 #3058 中做出了他们的第一次贡献
@z80 在 #3057 中做出了他们的第一次贡献
@Benny 在 #3024 中做出了他们的第一次贡献
@cairo 在 #3072 中做出了他们的第一次贡献
@fiddy 在 #3069 中做出了他们的第一次贡献
特别感谢 @tserg、@pandadefi 和 @delaaxe 的回归贡献者。
v0.3.4¶
发布日期:2022-07-27
非重大变更和改进
添加
_abi_decode
内置函数(#2882)添加
create_from_blueprint
和create_copy_of
内置函数(#2895)添加
default_return_value
关键字参数用于调用(#2839)添加
min_value
和max_value
内置函数用于数字类型(#2935)添加
uint2str
内置函数(#2879)添加 vyper 签名到字节码(#2860)
其他修复和改进
从构造函数中调用内部函数(#2496)
新的整数类型算术运算(#2843)
允许
msg.data
在raw_call
中不使用slice
(#2902)每个方法的 calldatasize 检查(#2911)
内置函数参数的类型推断和标注(#2817)
允许
print
的可变参数(#2833)添加
error_map
输出格式以供工具使用(#2939)在调用中多次评估合约地址(GHSA-4v9q-cgpw-cf38)
改进 ast 输出(#2824)
允许视图函数使用
@nonreentrant
(#2921)添加对有符号整数的支持
shift()
(#2964)启用字符串的动态数组(#2922)
修复某些 safepow 情况下出现的越界检查问题(#2983)
反转报告异常的顺序(#2838)
修复大型合约的编译时膨胀问题(#2981)
将
vyper-ir
二进制文件重命名为fang
(#2936)
许多其他小的错误修复、优化和重构也包含在这个版本中!特别感谢 @tserg 和 @pandadefi 为本版本贡献了几个重要的错误修复、重构和功能!
v0.3.2¶
发布日期:2022-04-17
重大变更
非重大变更和改进
支持所有 ABIv2 整数和字节类型(#2705)
添加存储布局覆盖机制(#2593)
支持
<address>.code
属性(#2583)添加
tx.gasprice
内置函数(#2624)允许结构体作为常量变量(#2617)
实现
skip_contract_check
关键字参数(#2551)支持 EIP-2678 ethPM 清单文件(#2628)
添加
metadata
输出格式(#2597)允许内部函数使用
msg.*
变量(#2632)添加
unsafe_
算术运算内置函数(#2629)添加子例程到 Vyper IR(#2598)
添加
select
操作码到 Vyper IR(#2690)允许将任何类型的列表作为循环变量(#2616)
改进错误消息中的建议(#2806)
值得注意的修复
复杂表达式中外部调用返回数据的截断(GHSA-4mrx-6fxm-8jpg,GHSA-j2x6-9323-fp7h)
字节串的相等性比较(N<=32)(GHSA-7vrm-3jc8-5wwm)
在构造函数中引用不可变变量(#2627)
接口数组在 for 循环中的使用(#2699)
许多优化、重构和其他修复包含在这个版本中!有关完整的列表,请参阅 更改日志。
特别感谢 @tserg 为类型检查器修复和新功能的大量测试!本版本的其他贡献者包括 @abdullathedruid、@hi-ogawa、@skellet0r、@fubuloubu、@onlymaresia、@SwapOperator、@hitsuzen-eth、@Sud0u53r、@davidhq。
v0.3.1¶
发布日期:2021-12-01
重大变更
禁止在使用 decimal 作为库时更改精度(#2479)
非重大变更和改进
添加不可变变量(#2466)
添加 uint8 类型(#2477)
添加 gaslimit 和 basefee 环境变量(#2495)
启用可检查的 raw_call(#2482)
当外部调用失败时传播回滚数据(#2531)
改进 LLL 注释(#2486)
优化身份预编译的使用(#2488)
删除 int128 和 address 的加载限制(#2506)
添加机器可读的 ir_json 格式(#2510)
优化 raw_call,使其在输入位于内存中的常见情况下更加高效(#2481)
删除实验性的 OVM 翻译器(#2532)
添加 CLI 标志以禁用优化器(#2522)
添加 LLL 语法和语义的文档(#2494)
修复
允许使用非常量回滚原因字符串(#2509)
允许对复杂表达式进行切片操作(#2500)
从 LLL 代码生成中删除 seq_unchecked(#2485)
修复具有默认参数的外部调用(#2526)
启用结构体列表作为函数参数(#2515)
修复常量地址的 .balance(#2533)
允许使用变量对常量/字面量数组进行索引(#2534)
特别感谢 @skellet0r 为本版本贡献了一些重大功能!
v0.3.0¶
⚠️ 此版本中发现了一个严重的安全漏洞,我们强烈建议使用版本 0.3.1 或更高版本。有关更多信息,请参见安全公告 GHSA-5824-cm3x-3c38。
发布日期:2021-10-04
重大变更
非重大变更和改进
重写内部调用约定(#2447)
添加对使用 CREATE2 确定性部署最小代理的支持(#2460)
优化特定副本的代码 (#2468)
添加 -o CLI 标志以将输出重定向到文件 (#2452)
其他文档更新 (#2450)
修复
_abi_encode 内置函数多次评估参数 (#2459)
嵌套元组的 ABI 长度太短 (#2458)
对于某些数值类型,返回值数据未被钳制 (#2454)
__default__ 函数不尊重非重入键 (#2455)
initcode 中字节串的钳制已损坏 (#2456)
外部函数中缺少小数参数的钳制 (GHSA-c7pr-343r-5c46)
当在结构体中返回包含私有函数调用的字面量结构体时,内存损坏 (GHSA-xv8x-pr4h-73jv)
特别感谢 @skellet0r 和 @benjyz 对此版本的贡献!
v0.2.16¶
⚠️ 此版本中发现了一个严重的安全漏洞,我们强烈建议使用版本 0.3.1 或更高版本。有关更多信息,请参见安全公告 GHSA-5824-cm3x-3c38。
发布日期:2021-08-27
非重大变更和改进
将 _abi_encode 作为面向用户的内置函数公开 (#2401)
将存储布局导出为编译器输出选项 (#2433)
添加实验性的 OVM 后端 (#2416)
允许任何可 ABI 编码的类型作为事件参数 (#2403)
优化 int128 钳制 (#2411)
修复
特别感谢 @skellet0r、@sambacha 和 @milancermak 对此版本的贡献!
v0.2.15¶
⚠️ 此版本中发现了一个严重的安全漏洞,我们强烈建议使用版本 0.3.1 或更高版本。有关更多信息,请参见安全公告 GHSA-5824-cm3x-3c38。
发布日期:2021-07-23
非破坏性更改和改进 - 返回嵌套元组时的优化 (#2392)
v0.2.12¶
发布日期:2021-04-16
此版本修复了在 v0.2.x 系列中引入的内存损坏错误 (#2345),该错误未在 VVE-2020-0004 中修复。在 VVE-2021-0001 中进一步了解它。
非重大变更和改进
v0.2.10¶
此版本已被撤回
发布日期:2021-02-17
这是一个快速补丁版本,用于修复 v0.2.9 (#2311) 中引入的错误的生成的 ABI,其中存储变量获取器被错误地标记为 nonpayable
而不是 view
。
v0.2.9¶
此版本已被撤回
发布日期:2021-02-16
非破坏性更改和改进: - 向 wheel 添加许可证,Anaconda 支持 (#2265) - 在使用 implements: 时考虑类型检查期间的事件 (#2283) - 重构 ABI 生成 (#2284) - 从解析器/签名中删除冗余检查 (#2288) - 简化元组返回类型的 ABI 编码逻辑 (#2302) - 优化字节码中的函数排序 (#2303) - 汇编级优化 (#2304) - 优化非支付断言 (#2307) - 优化非重入锁 (#2308)
修复: - 将转发器代理字节码更改为 ERC-1167 (#2281) - 保留关键字检查更新 (#2286) - 字面量列表中的不正确类型检查错误 (#2309)
感谢 (@iamdefinitelyahuman) 的大量重构工作!
v0.2.8¶
发布日期:2020-12-04
非重大变更和改进
AST 更新以提供对 Python 3.9 的初步支持 (#2225)
支持
not in
比较器 (#2232)取消对 calldata 变量遮蔽存储变量的限制 (#2226)
当第二个参数是字面量时,优化
shift
字节码 (#2201)当超过 EIP-170 大小限制时发出警告 (#2208)
修复
v0.2.6¶
此版本已被撤回
发布日期:2020-10-10
非重大变更和改进
在同一个函数内释放和重用内存槽 (#2188)
允许在基于范围的 for 循环中隐式使用
uint256
作为迭代器类型 (#2180)优化
int128
的钳制逻辑 (#2179)在可能的情况下在编译时计算数组索引偏移量 (#2187)
改进对动态大小结构体的无效使用的异常 (#2189)
改进对函数调用中参数数量错误的异常 (#2178)
改进对无效下标的异常 (#2177)
修复
v0.2.5¶
发布日期:2020-09-30
非重大变更和改进
改进对不正确接口的异常 (#2131)
独立二进制准备 (#2134)
改进 make freeze (#2135)
删除局部变量的过度作用域规则 (#2166)
针对不接受 ETH 的合约优化非 payable 检查 (#2172)
针对除数为字面量的除零操作优化 safemath (#2173)
优化多个连续的内存清零操作 (#2174)
优化地址和布尔类型的大小限制检查 (#2175)
修复
v0.2.1¶
发布日期: 2020-07-03
这是 Vyper 编译器和语言的重大版本更新。它也是我们版本控制方案后的第一个版本 (#1887).
重大变更
@public
和@private
函数装饰器已重命名为@external
和@internal
(VIP #2065)@constant
装饰器已重命名为@view
(VIP #2040)类型单位已被移除 (VIP #1881)
事件声明语法现在类似于结构体声明 (VIP #1864)
log
现在是一个语句 (VIP #1864)映射声明语法已更改为
HashMap[key_type, value_type]
(VIP #1969)接口现在通过
interface
关键字声明,而不是contract
(VIP #1825)bytes
和string
类型现在写为Bytes
和String
(#2080)bytes
和string
字面量现在必须分别为字节或普通字符串。它们不再是可互换的。(VIP #1876)assert_modifiable
已被移除,您现在可以直接对调用执行断言 (#2050)value
在函数输入中不再是允许的变量名 (VIP #1877)内置函数
slice
期待uint256
作为start
和length
参数 (VIP #1986)len
的返回类型现在是uint256
(VIP #1979)外部函数调用的
value
和gas
关键字参数必须以uint256
格式提供 (VIP #1878)raw_call
中的outsize
关键字参数已重命名为max_outsize
(#1977)extract32
中的type
关键字参数已重命名为output_type
(#2036)公用数组 getter 现在使用
uint256
作为其输入参数(VIP #1983)公用结构体 getter 现在返回结构体的所有值 (#2064)
RLPList
已被移除 (VIP #1866)
以下非破坏性 VIP 和功能已实现
实现布尔条件短路 (VIP #1817)
添加
empty
内置函数用于将值清零 (#1676)编译器流程的重构,导致性能提升近 5 倍!(#1962)
支持接口定义中的 ABI 状态可变性字段 (VIP #2042)
支持
@pure
装饰器 (VIP #2041)指数运算的溢出检查 (#2072)
通过
RETURNDATASIZE
验证返回数据长度 (#2076)改进的常量折叠 (#1949)
允许在没有原因字符串的情况下引发异常 (VIP #1902)
使
method_id
中的类型参数可选 (VIP #1980)在事件中将复杂类型用作索引值时哈希它们 (#2060)
放宽对自调用限制 (#2059)
移除合约模块范围内的排序限制 (#2057)
raw_call
现在可用于执行STATICCALL
(#1973)优化预编译以使用
STATICCALL
(#1930)
一些错误和稳定性修复
使用多维数组时的参数钳位问题 (#2071)
支持
in
比较器中的 calldata 数组 (#2070)防止通过
for
循环在迭代期间修改存储数组 (#2028)修复回退字符串的内存长度问题 (#1982)
从私有函数返回元组时的内存偏移问题 (#1968)
数组作为默认函数参数的问题 (#2077)
私有函数调用不再生成调用签名 (#2058)
重要的代码库重构,感谢 (@iamdefinitelyahuman)!
注意: v0.2.0
未被使用,因为与之前的版本在 PyPI 中存在冲突。标签 v0.2.0
和 v0.2.1
是相同的。
v0.1.0-beta.17¶
发布日期: 2020-03-24
以下 VIP 和功能已在 Beta 17 中实现
一些错误和稳定性修复
ABI 接口修复 (#1842)
对 ABI 数据类型表示方式的修改 (#1846)
为结构体返回类型生成方法标识符 (#1843)
使用固定数组返回元组无法编译 (#1838)
还进行了大量的重构和文档更新!
此版本将是最后一个遵循我们当前发布流程的版本。所有未来的版本将由版本控制方案(#1887)管理。下一个版本将是 v0.2.0,并将包含许多重大更改。
v0.1.0-beta.15¶
发布日期:2020-01-06
注意:我们已将许可证更改为 Apache 2.0 (#1772)
以下 VIP 已在 Beta 15 中实现
一些错误和稳定性修复
删除代码库中所有 Javascript 痕迹 (#1770)
确保预编译调用有足够的 gas 补贴 (#1771)
允许导入包含
implements
语句的接口 (#1774)修复了使用
min
和max
时某些值的比较方式 (#1790)删除了
addmod
和mulmod
上不必要的溢出检查 (#1786)检查使用元组时是否修改了状态 (#1785)
修复了导入接口时 Windows 路径问题 (#1781)
添加 Vyper 语法,目前用于模糊测试 (#1768)
修改文字的模数计算,使其与 EVM 保持一致 (#1792)
明确禁止对小数使用求幂运算 (#1792)
添加对除零和模零的编译时检查 (#1792)
修复了关于取反常数的一些问题 (#1791)
允许超出父级一层级别的相对导入 (#1784)
使用君士坦丁堡规则实现 SHL/SHR 用于位移操作 (#1796)
vyper-json
与solc
设置的兼容性 (#1795)简化返回列表时的类型检查 (#1797)
添加分支覆盖率报告 (#1743)
修复结构赋值顺序 (#1728)
将更多单词添加到保留关键字列表 (#1741)
允许文字使用科学计数法 (#1721)
避免对小数上限进行平方根运算时发生溢出 (#1679)
重构 ABI 编码器 (#1723)
特别感谢 (@iamdefinitelyahuman) 对此版本的大量更新!
v0.1.0-beta.14¶
发布日期:2019-11-13
一些错误和稳定性修复
大量文档和示例清理!
Python 3.8 支持 (#1678)
禁止文字使用科学计数法,因为以前解析不正确 (#1681)
添加
bytes[32]
->bytes32
的隐式重写规则 (#1718)在
raw_log
中支持bytes32
(#1719)修复了 EOF 解析错误 (#1720)
清理了算术表达式 (#1661)
修复了检查同构列表元素类型时出现的越界问题 (#1673)
修复了 if 和 for 语句中的堆栈价位问题 (#1665)
在对某些数据类型使用
sqrt
时,防止发生溢出 (#1679)防止内部变量被遮蔽 (#1601)
拒绝对无符号类型进行一元减法运算 (#1638)
在
for
循环中禁止使用orelse
语法 (#1633)提高了零填充的清晰度和效率 (#1605)
v0.1.0-beta.12¶
发布日期:2019-08-27
以下 VIP 已在 Beta 12 中实现
一些错误和稳定性修复
@nonreentrant
/@constant
逻辑不一致 (#1544)结构体直通问题 (#1551)
私有下溢问题 (#1470)
常量检查问题 (#1480)
防止使用冲突的方法 ID (#1530)
私有函数缺少参数检查 (#1579)
零填充问题 (#1563)
vyper.cli
脚本的重新架构 (#1574)AST 结束偏移量和与 Solidity 兼容的压缩源映射 (#1580)
特别感谢 (@iamdefinitelyahuman) 对此版本的大量更新!
v0.1.0-beta.11¶
发布日期:2019-07-23
Beta 11 带来了性能和稳定性修复。
使用 calldata 代替内存参数。 (#1499)
减少了大型参数函数的合约大小。 (#1486)
数组复制优化 (#1487)
修复了
@nonreentrant
装饰器对 return 语句的修复 (#1532)sha3
内置函数已删除 (#1328)禁止使用冲突的方法 ID (#1530)
字符串和字节的相等运算符 (#1507)
compile_codes
接口函数的更改 (#1504)
感谢所有贡献者!
v0.1.0-beta.10¶
发布日期:2019-05-24
大量代码整理和重构!
关于将数组作为参数传递给私有函数的错误修复 (#1418)。请检查您的合约,如果您使用此功能,请升级到最新版本。
init 生成的字节码略有缩减。 (#1399)
在
for .. range
表达式中增加了常量保护。 (#1397)改进的错误报告 (#1394)
修复了从函数返回外部合约的问题 (#1376)
接口单元修复 (#1303)
不等于 (!=) 优化 (#1303) 1386
新的
assert <condition>, UNREACHABLE
语句。 (#711)
特别感谢 (Charles Cooper) 为本次版本贡献了出色的代码。
v0.1.0-beta.9¶
发布日期:2019-03-12
v0.1.0-beta.9 之前¶
在此版本之前,我们以不同的方式管理变更日志。以下为旧版变更日志
**2019.04.05**: 添加对不平衡返回语句的更严格检查。(#590)
**2019.03.04**:
create_with_code_of
已重命名为create_forwarder_to
。(#1177)**2019.02.14**: 只能使用
bar_contact = ERC20(<address>)
语法为持久性合约地址赋值。**2019.02.12**: 必须使用
from vyper.interfaces import ERC20
导入 ERC20 接口才能使用。**2019.01.30**: 字节数组字面量需要使用
b""
进行注释,字符串表示为 “”。**2018.12.12**: 禁止使用
None
,禁止使用del
,实现了clear()
内置函数。**2018.11.19**: 将映射语法更改为使用
map()
。(VIP564)**2018.10.02**: 将转换风格更改为使用类型而不是字符串。(VIP1026)
**2018.09.24**: 添加对自定义常量的支持。
**2018.08.09**: 添加对默认参数的支持。
**2018.06.08**: 首个 Beta 版本发布。
**2018.05.23**: 将
wei_value
更改为uint256
。**2018.04.03**: 将字节声明从
bytes <= n
更改为bytes[n]
。**2018.03.27**: 将
signed256
重命名为int256
。**2018.03.22**: 为外部合约调用添加可修改和静态关键字。
**2018.03.20**: 将
__log__
重命名为event
。**2018.02.22**: 将 num 重命名为 int128,将 num256 重命名为 uint256。
**2018.02.13**: 禁止使用带有 payable 和 constant 装饰器的函数。
**2018.02.12**: 除以 num 返回十进制类型。
**2018.02.09**: 标准化类型转换。
**2018.02.01**: 函数不能与全局变量同名。
**2018.01.27**: 将 getter 从 get_var 更改为 var。
**2018.01.11**: 将版本从 0.0.2 更改为 0.0.3
**2018.01.04**: 赋值时需要指定类型 (VIP545).
**2017.01.02**: 将
as_wei_value
更改为使用引号表示单位。**2017.12.25**: 将名称从 Viper 更改为 Vyper。
**2017.12.22**: 为循环添加
continue
**2017.11.29**:
@internal
重命名为@private
。**2017.11.15**: 函数需要
@internal
或@public
装饰器。**2017.07.25**:
def foo() -> num(const): ...
语法不再有效;现在需要使用def foo() -> num: ...
,并在前一行添加@constant
装饰器。**2017.07.25**: 没有
@payable
装饰器的函数在使用非零 wei 调用时将失败。**2017.07.25**: 函数只能调用在其上方声明的函数(也就是说,A 只能调用 B,前提是 B 在代码中比 A 出现得更早)。这是为了