本周 MoonBit 核心库进行 API 整理工作、工具链持续完善

embedded/2024/10/18 2:35:56/

MoonBit_0">MoonBit更新

  • 【核心库 Breaking】核心库进行API整理工作
    • 所有immutable数据结构被放在immut路径下,如@immutable_hashmap.Map变为@immut/hashmap.Map
// Before
let a : @immutable_hashmap.Map[Int, Int] = @immutable_hashmap.make()
// After
let a : @immut/hashmap.Map[Int, Int] = @immut/hashmap.make()
  • 核心库中 Option[T] 类型性能优化
    • 在类型 T 是一个引用类型情况下,对于 Option[T] 类型的值,Some(v) 会被直接编译成 vNone 会在 wasm-gc 后端被编译成 ref.null ,在 JavaScript 后端被编译成 undefined,从而避免内存分配
  • 核心库中引入了 fn panic[T]() -> T 函数,这个函数可以用于在测试块中,其中测试的名字需要以 "panic" 开头:
test "panic test ok" {panic() // 测试通过
}test "panic test failed" {() // 测试失败
}

IDE更新

  • 【VS Code插件】增加了testfor的代码片段
    test片段
    在这里插入图片描述

    for片段
    在这里插入图片描述

构建系统更新

  • 【初始化】moon new 会自动对创建的项目进行版本控制初始化,目前支持 git
  • 测试】现在可以指定对多个包进行测试
moon test -p a b c
moon test -p a -p b -p c

工具链更新

  • 【安装】现在可以指定版本号进行安装
# Mac与Linux用户
# 下载最新版
curl -fsSL https://cli.moonbitlang.com/install/unix.sh | bash
# 下载 bleeding 版本
curl -fsSL https://cli.moonbitlang.com/install/unix.sh | bash -s bleeding
# 下载特定版本
curl -fsSL https://cli.moonbitlang.com/install/unix.sh | bash -s 0.1.20240520+b1f30d5e1
# Windows用户
# 下载最新版
irm cli.moonbitlang.cn/install/powershell.ps1 | iex
# 下载特定版本
$env:MOONBIT_INSTALL_VERSION = "0.1.20240520+b1f30d5e1"; irm cli.moonbitlang.cn/install/powershell.ps1 | iex
  • 【安装】现在可以查找对应版本的SHA256,对下载进行校验
    • 详情见:https://www.moonbitlang.cn/download/#verifying-binaries

http://www.ppmy.cn/embedded/44636.html

相关文章

音频pop音的数学与物理解释

音频数据跳变太大的时候通常会有pop音,此时频谱上看pop音位置能量较高 音频中的“pop”音通常是由于信号的不连续性或瞬态变化造成的。这种不连续性的数学和物理原因可以从以下几个方面解释: 数学解释 信号不连续性 当音频信号发生突变时,…

Toxel 与 PCPC II

题目 Problem L. Toxel 与 PCPC II Toxel 正在参加 PCPC(Pokmon Center Programming Contest)比赛。它写的一段代码中有不少 bug,正在调试。这份代码总共有 n 行,而且经验丰富的 Toxel 已经知道了其中 m 行代码有 bug&#xff0c…

创新入门 | 精益创业:创新企业成功的关键策略

探索精益创业方法如何帮助初创企业在不确定的市场环境中快速成长。了解Steve Blank与Eric Ries如何通过客户验证、快速失败和最小可行产品(MVP)等原则,引导企业实现持续创新和有效资源利用。本文深入分析精益创业的实践案例,揭示其…

react跨组件通信Context

案例&#xff1a;现在有个父-子-孙组件 需要进行组件通信 import { useState } from "react"; // 创建上下文 const CountContext React.createContext();//子组件 const SonComponent (props) > {return (<div><h2>子组件</h2><Grandson…

HarmonyOS 鸿蒙DevEco:导入无法运行提示Sync failed

场景&#xff1a;导入官网下载的案例后导入发现无法运行模拟机&#xff0c;Notifications提示Sync failed... 解决&#xff1a;查看Cause发现是版本问题&#xff0c;通过修改相关内容来解决该问题 1、打开案例地址找到hvigor文件夹 2、打开hvigor-config.json5&#xff0c;将&…

webpack如何实现懒加载

Webpack实现懒加载主要通过代码分割&#xff08;Code Splitting&#xff09;技术&#xff0c;它允许将代码拆分成多个bundle&#xff0c;然后根据需要动态加载这些bundle。以下是Webpack实现懒加载的主要步骤和要点&#xff1a; 理解懒加载原理&#xff1a; 懒加载&#xff0…

mysql 函数实现删除字符串中重复的字符

以下是一個使用 MySQL REPLACE 函數去除字符串中重複字符的函數&#xff1a; CREATE FUNCTION remove_duplicate_chars(input_string VARCHAR(255)) RETURNS VARCHAR(255) BEGINDECLARE result VARCHAR(255) DEFAULT ;DECLARE i INT DEFAULT 1;DECLARE j INT DEFAULT 1;DECLARE…

m1系列芯片aarch64架构使用docker-compose安装seata

之前看到 DockerHub 上发布了 m1 芯片 aarch64 架构的 seata 镜像, 所以就尝试的安装了下, 亲测可用: 使用该命令查看正在运行的 seata 容器 docker ps | grep seata 一. docker-compose.yml 命令编写 volumes 命令所指定的宿主机映射地址, 需要根据自己的电脑环境更换 环…