Hacker News 中文摘要

RSS订阅

Gleam v1.12 -- Gleam v1.12

文章摘要

Gleam语言v1.12.0版本于2025年8月5日发布,修复了错误消息中的术语问题。此前发布的v1.12.0-rc3版本修复了在JavaScript中使用echo时与process函数冲突导致的运行时错误,而v1.12.0-rc2版本改进了格式化工具,允许更好地控制位数组的分行显示。

文章总结

Gleam 编程语言 v1.12 版本更新日志

主要更新内容:

  1. 编译器改进:

    • 新增了为 echo 添加自定义消息的功能,便于在运行时输出更多上下文信息。
    • 生成的 JavaScript 代码现在包含文档注释作为 JSDoc 注释,方便查阅。
    • 优化了 JavaScript 目标平台上的 case 表达式代码生成,减少了代码体积。
    • 实现了基于使用情况的死代码消除,未使用的定义不再生成。
    • 改进了 echo 对字符列表、JavaScript 错误和循环引用的支持。
    • 优化了错误和警告的显示效果,提供更清晰的上下文信息。
    • 新增了模块导入时使用 . 而不是 / 的错误提示。
    • 新增了当顶层常量或函数声明遮蔽导入名称时的警告提示。
    • 新增了当未知变量可能指向被忽略变量时的错误提示。
    • 优化了 JavaScript 目标平台上的模式匹配代码生成,重用匹配变量。
    • 新增了冗余比较的警告提示。
    • 新增了使用两个列表时的错误提示。
    • 改进了函数调用参数数量错误的提示信息。
    • 优化了记录更新语法的代码生成,重用现有变量。
    • 新增了在构造或模式匹配 UTF 码点时指定字节序的功能。
    • 允许在 bit array 模式的大小选项中进行计算。
    • 在 Erlang 目标平台上启用了内联优化。
    • 优化了 JavaScript 目标平台上的除法和取模操作代码生成。
  2. 构建工具改进:

    • gleam update 等命令现在会提示有新的大版本包可用。
    • 文档生成器优化了 Gitea/Forgejo 主机的链接处理。
    • 构建工具现在可以编译已经启动 Erlang 编译器的包。
    • gleam deps list 现在使用制表符作为分隔符。
    • 支持在 srcdevtest 目录中使用 .cjs 文件。
    • 改进了版本解析失败时的错误信息。
    • 新增了 gleam.tomlrepository 部分的 tag-prefix 属性支持。
  3. 语言服务器改进:

    • 新增了在 use 表达式左侧变量上进行模式匹配的代码操作。
    • "生成函数"和"生成变体"代码操作现在作为快速修复提供。
    • 新增了移除不必要代码块的代码操作。
    • 扩展了"添加类型注释"代码操作的触发范围。
  4. 格式化器改进:

    • 新增了对 bit array 和列表分割的更多控制选项。
    • 优化了列表格式化,允许保留元素间的空行。
  5. Bug 修复:

    • 修复了多个与语言服务器、编译器、格式化器相关的 bug,包括代码操作、类型推断、代码生成等方面的问题。
  6. 其他改进:

    • 改进了 HTML 文档中内部类型的显示。
    • 新增了当同一模块被多次导入并使用不同别名时的警告提示。
    • 修复了 JavaScript 目标平台上 bit array 段匹配浮点数时的异常行为。

这些更新提升了 Gleam 语言的稳定性、性能和开发体验,为开发者提供了更多便利功能和更友好的错误提示。

评论总结

  1. 对Gleam语言设计的赞赏

    • 评论1认为Gleam的语言设计优雅,特别是模式匹配和管道操作符的使用,使得代码可读性高且简洁。
    • 引用1:"The best part of Gleam in my opinion is the language's design. It's just so elegant to read and write."
    • 引用2:"The pipe skips so much boilerplate and clearly communicates intent. Absolutely love it."
  2. 对社区包容性声明的争议

    • 评论2对Gleam官方网站的包容性声明表示赞赏,但也认为这种政治化的表达可能过于直接,不应成为编程语言的核心关注点。
    • 引用1:"On one hand I applaud that their community standards are inclusive, but on the other hand, it shouldn't be that blatantly ideological from the get go."
    • 引用2:"It's just another programming language, not a political platform."
  3. 对Gleam的积极评价与社区氛围

    • 评论5表达了对Gleam的喜爱,认为其潜力巨大,并且社区氛围友好且充满智慧。
    • 引用1:"I really like gleam. I have a few unfinished side projects in gleam with about 10k lines of code, so I've had enough of a taste to know I like it."
    • 引用2:"They're a bunch of very friendly, and smart people working on a wide variety of interesting projects."
  4. 对Gleam功能缺失的批评

    • 评论6指出Gleam缺乏接口/类型类和组合操作符,这在一定程度上限制了其使用。
    • 引用1:"One thing I really didn't like is the lack of interfaces/type-classes and lack of composition operator."

总结:Gleam因其优雅的语言设计和高效的代码编写方式受到好评,特别是模式匹配和管道操作符的使用。然而,其官方网站的包容性声明引发了关于编程语言是否应涉及政治议题的争议。此外,尽管社区氛围友好且充满潜力,但Gleam在功能上仍存在一些不足,如缺乏接口和组合操作符。