MoonBit最新工作动态——0115

MoonBit更新

1. 放宽了match的右手侧的语法,允许单个语句的出现。现在允许下面的写法:

```rust
match x {
  A => return
  B => return 1
  C => i = i + 1
  D => break
  E => continue
  F => while true {}
}

```

2. 修复formatter的各种bug,例如:

源代码 修复前 修复后
fn init {
  let mut a = 1
  {
    {
      let a = 2
      f(a)
    }
    let a = 3
    f(a)
    {
      let a = 4
      f(a)
    }
  }
  f(a)
}
fn init {
  let mut a = 1
  let a = 2
  f(a)
  let a = 3
  f(a)
  let a = 4
  f(a)
  f(a)
}
fn init {
  let mut a = 1
  {
    {
      let a = 2
      f(a)
    }
    let a = 3
    f(a)
    let a = 4
    f(a)
  }
  f(a)
}

3. 新增实验性inline测试机制

声明格式为fn test_*,inline测试需要在普通的 *.mbt 文件中(而不是 *_test.mbt)声明,它既不能有参数也不能有返回类型,例如以下写法会报错:

现在 moon test 除了会执行每个包中以 _test.mbt 结尾的测试文件,还会执行每个包中的 inline 测试。

构建系统更新

1. moon new给各个选项增加了默认值,用户可以使用回车选择默认值

```
$ moon new
Enter the path to create the project (. for current directory) [default: myproject] >
Enter the create mode (exec or lib) [default: exec] >
Enter your username [default: username] >
Enter the package name [default: hello] >
Enter your license [default: Apache-2.0] >
Created my-project
```

2. moon.mod.json增加license和repository字段。

license表示这个mooncakes.io所使用的licencse,必须符合spdx标准。

3. 正式移除moon check --daemon

4. moon publish新增上传大小限制,上传大小必须小于16Mib

其他更新

1. windows平台的安装路径从~/.moon改为~/.moon/bin,与其他平台保持一致。

2. 修复关于newtype goto definition 和 rename 的 bug

1 个赞