[breaking change] ,默认开启诊断信息渲染、test block 不再返回 Result 类型的结果、构造器跨包使用 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
moonbitlang
V2EX    推广

[breaking change] ,默认开启诊断信息渲染、test block 不再返回 Result 类型的结果、构造器跨包使用

  •  
  •   moonbitlang 2024-07-08 18:37:52 +08:00 585 次点击
    这是一个创建于 460 天前的主题,其中的信息可能已经有所发展或是发生改变。

    语言 更新

    • [重大更新] 修改 array slice 的语法,从 arr[start..end] 修改为类似 Python 的 arr[start:end]。这是为了避免和接下来要支持的 cascade method call x..f() 产生语法冲突。旧的语法会在近期删除。

    • [ Wasm 后端重大更新] 将 fn init 中的代码编译到 start section 。 之前版本中的 fn initfn main 代码块中的代码都会被编译到一个特殊函数中,这个特殊函数会被导出为 "_start" 函数,因此宿主环境需要调用 "_start" 函数来进行初始化和执行 main 函数 新版本中会使用 wasm 标准中的 start section 来存放 fn init 中的代码,从而在加载 wasm 模块的过程中完成初始化,这意味着 fn init 中代码的执行不再需要调用 "_start" 函数,只有需要执行 main 函数的时候才需要调用 "_start".

    • [重大更新] test block 不再返回 Result 类型的结果。 现在的 test block 中使用错误处理机制对测试失败的情况进行处理,鼓励使用标准库中的 inspect 函数,和 @test 包中的 @test.eq 等辅助函数编写测试,比如:

    test "unwrap should return value on Some" { let some : Int? = Some(42) inspect(some, cOntent="Some(42)")! @test.eq(some.unwrap(), 42)! } 
    • 支持使用 @pkg.C 来跨包使用构造器,比如如果在 @pkgA 中包含如下声明:
    // pkgA pub enum E1 { C1 } derive(Debug) enum E1_hidden { C1 } 

    现在可以在另一个包中对 E1 的构造器 C1 直接进行使用,比如:

    // pkgB fn main { debug(@pkgA.C1) } 

    当在同一个包中,如果出现重复的 public constructor ,则会报错,比如:

    pub enum E1 { C1 } pub enum E2 { C1 ^^ ------ There can be at most one public constructor with name C1. } 

    标准库更新

    • 迁移到新的错误处理机制。

    • 迁移到无符号整数,移除了 Int 和 Int64 类型旧的compare_udiv_umod_u函数;调整了下面的 API:

      • Int32.trunc_double_uInt64.trunc_double_u 更改为 UInt.trunc_doubleUInt64.trunc_double

      • Int64::extend_i32_u 更改为 UInt64::extend_uint

      • Double::convert_i32_uDouble::convert_i64_u 更改为Double::convert_uintDouble::convert_uint64

    构建系统更新

    • moon version --all 现在会显示 moonrun 的版本信息。
    $ moon version --all moon 0.1.20240705 (0e8c10e 2024-07-05) ~/.moon/bin/moon moonc v0.1.20240705+7fdd4a042 ~/.moon/bin/moonc moonrun 0.1.20240703 (52ecf2a 2024-07-03) ~/.moon/bin/moonrun 
    • 修改moon new创建项目的license字段默认为空。

    • 默认开启诊断信息渲染 render

    工具链更新

    • VSCode 插件安装 MoonBit 工具链功能调整。工具链安装的默认版本由总是安装最新版本调整为安装对应插件版本的工具链。
    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2182 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 00:42 PVG 08:42 LAX 17:42 JFK 20:42
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86