
Nim 团队很高兴宣布版本 2.2.8,这是我们稳定版本 Nim 2.2 的第四次补丁发布。
它在 2.2.6 发布四个月后推出,包含 89 个提交,带来了错误修复和改进。
如果你仍然在使用 Nim 1.6,请查看 2.0 版本的发布文章,以了解你错过的所有功能。如果你一直在使用 Nim 2.0,2.2 版本的发布文章展示了 Nim 2.2 中可用的改进。
Nim 2.2.8 的版本更新日志在此处提供。
重点更新
我们认为对于日常用户来说,最具影响力的错误修复是针对高度多线程代码,默认的内存分配器现在更加稳定。可能再也不会需要使用 -d:useMalloc 的解决方案了。请给我们提供反馈!
安装 Nim 2.2.8
检查您的操作系统是否已预装了 2.2.8 版本的包管理器,或者按照此处所述进行安装。
如果您已使用 choosenim 安装了 Nim 的先前版本,获取 Nim 2.2.8 就像这样:
$ choosenim update self
$ choosenim update stable
注意:我们建议您从我们的 choosenim 仓库安装和使用最新版本的 choosenim ,即 v.0.8.16。
或者,您可以从我们的 nightlies builds 下载 Nim 2.2.8。
Bug 修复
- 修复了“在带有默认字段的对象上使用
fields出现意外的歧义调用” (#25252) - 修复了“C++风格的名称修饰必须通过不同的开关而不是–debuginfo 来选择” (#25263)
- 修复了“2.2.6 中的回归问题:在 const Table 查找迭代器时出现 SIGBUS – 过早的临时销毁” (#25251)
- 修复了“无法从源代码构建 Nim 2.2.6 工具”( #25265)
- 修复了“某些字符上的
std/unicode.strip尾随失败”( #19846) - 修复了“回归:方法中的 .global 初始化被提升到 preInitProc 中而没有临时变量声明(无效的 C 代码生成)”( #25284)
- 修复了“将包含
items定义的元组作为概念(UserDefinedClass)传递导致编译器崩溃”( #25227) - 修复了“
setLen在收缩 seq 时因释放区域零填充而变慢” ( #19728) - 修复了“
setLenUninit缺少--mm:refc” ( #25007) - 修复了“Term rewriting 在处理大文件时停止处理” ( #25304)
- 修复了“
SIGSEGV从 Nim v2.2.4 到 v2.2.6/devel 的回归,涉及闭包迭代” ( #25261) - 修复了“通用析构函数和闭包的组合在某些情况下失败” (#22305)
- 修复了“Channel 错误地接受一个 sink 参数,实际上它内部执行深度复制” (#25324)
- 修复了“带有
-d:nimStackTraceOverride的栈跟踪中存在悬空指针” (#25306) - 修复了“闭包迭代器在包含 try..except 时吞噬 finally 体,2.2.6/devel 中的回归问题” (#25330)
- 修复了“在 ARC/ORC/HOOKS/ATOMICARC 下,针对不同泛型类型的 hooks 中的无效
m_type访问” (#25341) - 修复了“procedures “inc”, “dec”, “succ”和“pred”的第二个参数类型错误” (#25329)
- 修复了“从 v2.2.6 回归到
version-2-2/devel,在导入let u {.global.} = default(ref int)时的问题” (#25369) - 修复了“[概念] 在使用
is测试时,递归概念会导致编译器段错误” (#17630) - 修复了“httpclient 通过 HTTP 代理生成无效的 HTTPS 请求” (#25319)
- 修复了“无效的
pred在when中被忽略” (#25254) - 修复了“Nim 注释文本+embedsrc 破坏 C 代码生成” (#25387)
- 修复了“钩子对静态泛型对象的特定实例无效” (#23394)
- 修复了“
shl导致未定义行为” (#19983) - 修复了“
Error: fatal error: invalid kind for lastOrd(tyNone)与type M = set” (#25419) - 修复了“裸露的
raised导致错误的异常效果” (#25400) - 修复了“未处理的异常:字段‘intVal’对于类型‘TNode’在使用‘kind = nkNilLit’时不可访问 [FieldDefect] static: discard castpointer” (#25446)
- 修复了“长整数字面量未警告截断” (#25074)
- 修复了“add
--styleCheck:warn” (#19831) - 修复了“尝试编译通用 + void 类型 + 类型类组合时发生 SIGSEGV” (#25441)
- 修复了“编译无效通用实例时崩溃” (#25231)
- 修复了“SIGSEGV 在
distinct类型和堆分配对象赋值时” (#25459) - 修复了“隐式范围缩小时警告” (#24706)
- 修复了“ICE 泄漏temporary 3 slotTempInt” (#25482)
- 修复了“计算类型违反 isa 传递性” (#25340)
- 修复了“字符串可以与
nil进行比较”( #25488) - 修复了“泛型过程中默认参数的枚举范围导致崩溃”( #25494)
- 修复了“
align在 refc 中不被尊重,导致 SIGSEGV”( #25457) - 修复了“使用
seq[array[...]]生成无效的 C 代码”( #25475)
Linuxeden开源社区