MoonBit 更新——1014

2024-10-08

IDE更新

  • AI Codelens支持 /generate/fix 命令

/generate 命令能够提供一个通用的用以生成代码的聊天界面。

/fix 命令能够读取当前函数的错误信息给出修复建议。

MoonBit更新

  • 调整中缀表达式和ifmatchloopwhilefortry表达式的优先级, 后者这些控制流表达式不再能够直接出现在要求是中缀表达式的位置,嵌套使用时需要增加一层括号。

例如ifmatch的语法是:

if <infix-expr> { <expression> } [else { <expression> }]
match <infix-expr> { <match-cases> }

因为ifmatchloopwhilefortry 都不再属于infix-expr, 因此if if expr {} {}这种代码不是合法的:

//invalid
if if cond {a} else {b} {v} else {d}
match match expr { ... } { ... }
let a = expr1 + expr2 + if a {b} else {c} + expr3
//valid
if (if cond {a} else {b}) {v} else {d}
match (match expr { ... }) { ... }
let a = expr1 + expr2 + (if a {b} else {c}) + expr3
  • js后端

    • 现在Array会编译到 js 的原生数组,和 js 交互更加方便
  • 标准库API

    • String包增加concat, from_array函数,弃用Array::join
    • immut/list包增加rev_concat()
    • Buffer类型增加lengthis_empty 函数
    • 改进了Option类型的to_json函数
  • 实验库API

    • x/fs 包支持 wasm, wasm-gc, js 后端,包含以下 api
      • write_string_to_file, write_bytes_to_file
      • read_file_to_string, read_file_to_bytes
      • path_exists
      • read_dir
      • create_dir
      • is_dir, is_file
      • remove_dir, remove_file

构建系统更新

  • moon test -p 支持模糊匹配功能,例如 moon test -p moonbitlang/core/builtin 可简写为 moon test -p mcb | moon test -p builtin 等。

  • moon.pkg.json 中的 source 字段为空字符串""时,等价于 ".",表示当前目录。

moondoc更新

文档生成器支持package层级的README文件,所有moon.pkg.json 同级的README.md会被一同显示在这个包的文档页面中。