当前位置: 首页 > news >正文

MoonBit 本周新增类型标注语法、继续进行核心库 API 整理工作

MoonBit更新

  • 类型标注增加了新的语法T? 来表示Option[T]
struct Cell[T] {val: Tnext: Cell[T]?
}fn f(x : Cell[T]?) -> Unit { ... }

相当于

struct Cell[T] {val: Tnext: Option[Cell[T]]
}fn f(x : Option[Cell[T]]) -> Unit { ... }

旧的Option[T]仍然兼容,但是推荐使用更简短的新语法。moonfmt也会将Option[T]格式化为T?

  • 核心库 API 整理工作继续进行
    • Iter包被合入了builtin包。现在使用Iter[T]不需要@iter.前缀
pub fn any[T](xs : Iter[T], predicate : (T) -> Bool) -> Bool {// ^不需要@iter.match xs.find_first(predicate) {None => falseSome(_) => true}
}
  • Stack包被移入moonbitlang/x
  • 移除了List包,以及各类数据结构的to_listfrom_list函数。对于数据结构间转换和中间的表示结构,推荐使用Iter[T]Array[T]
  • 性能提升
    • 编译器现在会在分离编译的阶段进行一部分的闭包转化,从而改进了编译性能,并且对 JavaScript 后端生成的代码在特定情况下也进行了闭包转化
    • Option[Bool], Option[Char], Option[Byte], Option[Unit] 这些类型使用32位整数表示,其中 None 对应的值为 -1, Some(x) 对应的值为 x; Option[Int] 类型在 wasm 后端使用 64 位整数表示,其中 None 对应的值为 0x1_0000_0000, Some(x) 对应的值为 x, Option[Int]在 JavaScript 后端使用 int | undefined 表示,其中 undefined 表示 None
  • abort行为变更
    • 为了解除Wasm程序对于非标准的spectest.print_char的依赖,正在重构错误输出功能。
    • abort将不会利用spectest.print_char打印错误信息,行为与panic相同,等待功能进一步完善。

插件更新

  • 【语言服务器】修复了内存泄露的问题
http://www.lryc.cn/news/362388.html

相关文章:

  • YOLOv10训练自己的数据集
  • 探索Web前端三大主流框架:Angular、React和Vue.js
  • 《HelloGitHub》第 98 期
  • Xtransfer面试内容
  • 论文笔记:Image Anaimation经典论文-运动关键点模型(Monkey-Net)
  • Kibana创建ElasticSearch 用户角色
  • Vue基础(2)响应式基础
  • Mysql基础教程(15):别名
  • SpringCloud 微服务中网关如何记录请求响应日志?
  • 【运维项目经历|028】Cobbler自动化部署平台构建项目
  • “物联网安全:万物互联背景下的隐私保护与数据安全策略“
  • LeetCode216组合总和3
  • 微软找腾讯接盘,Windows直接安装手机APP体验起飞了
  • 【Springcloud微服务】MybatisPlus下篇
  • i18n-demo
  • [Leetcode] 0-1背包和完全背包
  • 自定义类型:联合体和枚举
  • 【Cityengine】Cityengine生产带纹理的建筑模型导入UE4/UE5(下)
  • 详解51种企业应用架构模式
  • 【十年java搬砖路】Jumpserver docker版安装及配置Ldap登陆认证
  • C\C++内存管理(未完结)
  • 一个小时搞定JAVA面向对象(5)——抽象与接口
  • 图像关键特征描述方法-小目标
  • 【qt15】windeployqt 安装依赖
  • DETR论文重点
  • slf4j等多个jar包冲突绑定的排查方法使用IDEA的maven help解决
  • MySQL主从的延迟怎么解决呢?
  • 【一百】【算法分析与设计】N皇后问题常规解法+位运算解法
  • GPT-4:人工智能领域的新里程碑
  • mysql inset bug