337p人体粉嫩胞高清图片,97人妻精品一区二区三区在线 ,日本少妇自慰免费完整版,99精品国产福久久久久久,久久精品国产亚洲av热一区,国产aaaaaa一级毛片,国产99久久九九精品无码,久久精品国产亚洲AV成人公司
網易首頁 > 網易號 > 正文 申請入駐

MoonBit 0.8 版本正式發布

0
分享至


對應moonc版本:v0.8.0

一、MoonBit 0.8.0發布

我們很高興正式發布MoonBit 0.8.0。MoonBit是一門AI原生的編程語言,它的主要特點是高可靠,易讀和高性能。這是 MoonBit 邁向穩定、可用于生產環境的重要里程碑版本。

這次發布并非一系列零散改動的簡單集合。MoonBit 0.8 標志著項目從實驗性語言,明確邁入工程級語言與工具鏈階段:在調試能力、錯誤處理、包管理以及開發者工具等方面都有了顯著提升,尤其更適合支撐大規模代碼庫和以 Agent 為核心的開發工作流。

為什么 MoonBit 0.8 很重要?

正如許多開發者所觀察到的,Rust 通過其嚴格的語義和可驗證性,為 AI 輔助開發提供了堅實的基礎。MoonBit 在繼承類似可靠性目標的同時,更加注重顯著更快的編譯速度(在實際使用中通常比rust快一個到兩個數量級),以及面向 Agent工作流深度集成的開發工具體系

隨著 0.8 版本的發布,這些設計目標已不再停留在抽象理念層面,而是在語言、編譯器、運行時以及IDE等各個層面得到一致體現

重點更新:

WasmGC/LLVM/Native后端Backtrace 支持

MoonBit 的 WasmGC/native/LLVM 后端現支持在程序崩潰時,自動打印崩潰處的調用棧。并且能直接輸出對應的 MoonBit 源碼的位置,極大改善了調試體驗(以下是Native后端的調用棧示例):

RUNTIME ERROR: abort() called
/path/to/moonbitlang/core/array/array.mbt:187 at @moonbitlang/core/array.Array::at[Int]
/path/to/pkg/main/main.mbt:3 by @username/hello/out_of_idx.demo
/path/to/pkg/main/main.mbt:9 by main

AI 原生的面向 specification 支持

MoonBit 新增了declare關鍵字,可以用于聲明需要實現的類型、函數、方法等。如果declare的聲明沒有對應的實現,MoonBit 編譯器會報一個警告。declare關鍵字提供了面向 AI 的原生 specification 支持:可以用declare的形式指定需要 AI 實現的接口,并根據接口提前編寫測試。只需要把declare和測試所在的文件標記為只讀,就能防止 AI “作弊”。隨后,MoonBit 編譯器的警告信息能輔助 AI 正確地實現所有必要的接口。由于沒有實現declare只是一個警告,AI 可以漸進式地編寫、測試代碼。


社區動向:

? MoonBit 社區正在在快速增長,目前核心用戶數接近20萬(以插件下載為統計指標),生態包的數量達到4295 個,并且最近幾周增速都超過 10%。

? MoonBit 軟件工廠受到關注:,我們正在發起 「,期待社區用戶可以做出優質的大型軟件。

? 我們持續,特別期待擁有多語言背景的國際地區大使。

二、0.8更新正式內容

語言更新

1.suberror Err PayloadType語法被廢棄

用戶需要將這種定義修改成類似enum的形式:

suberror Err {
Err(PayloadType)
}

這一改動的動機是suberror Err PayloadType語法容易產生ErrPayloadType有相同 ABI 的誤解,但實際上 error type 都有自己特殊的 ABI。這一改動可以通過moon fmt自動完成遷移

2. 廢棄了推導內建 error 構造器(目前主要是Failure的行為。

類型未知時,需要將raise Failure(..)替換成raise Failure::Failure(..)catch時同理

3. 支持了在 MoonBit 中直接調用FuncRef[_]類型的值。

這一功能可以用于在 native 后端實現動態加載函數或 JIT

4. WasmGC/LLVM/Native 后端Backtrace 支持

現在,使用wasm-gc, native后端或者llvm后端時,如果觸發panic,例如數組下標越界,對為NoneOption[T]進行unwraptry!一個會拋出錯誤的函數,或者手動調用panic函數時,在debug模式下會打印出調用棧,例如下方的函數:

fn demo(a: Array[Int], b: Array[Int]) -> Unit {
let _ = a[1]
let _ = b[2]
}


fn main {
let a = [1, 2]
let b = [3]
demo(a, b)
}

以native后端為例,使用moon run main --target native,將會看到下面的調用棧:

RUNTIME ERROR: abort() called
/path/to/moonbitlang/core/array/array.mbt:187 at @moonbitlang/core/array.Array::at[Int]
/path/to/pkg/main/main.mbt:3 by @username/hello/out_of_idx.demo
/path/to/pkg/main/main.mbt:9 by main

注:目前Windows系統上native和LLVM后端暫不支持此項功能。

5.新增了declare關鍵字,用于替代原本的#declaration_only屬性。declare新增了 trait 實現的支持。比如:

declare type T // declare a type to be implemented
declare fn T::f(x : T) -> Int // declare a method to be implemented


struct S(Int)
declare impl Show for S // declare an impl relation

declare impl和直接寫impl的主要區別在于declare impl在缺少 implementation 的情況下只會報警告,不影響代碼執行,所以可以跑其他功能的測試。

6. 新增了反向的 range 表達式x>..yx>=..y

用于在for .. in循環中進行反向的迭代:

///|
test "reversed range, exclusive" {
let result = []
for x in 4>..0 {
result.push(x)
}
debug_inspect(result, content="[3, 2, 1, 0]")
}


///|
test "reversed range, inclusive" {
let result = []
for x in 4>=..0 {
result.push(x)
}
debug_inspect(result, content="[4, 3, 2, 1, 0]")
}

為了讓語法更一致,正向的兩側閉合的 range 表達式的語法從x..=y遷移至x..<=y。這一改動可以通過moon fmt自動遷移

7. 禁用了在外部使用{ ..old_struct, field: .. }語法更新一個帶有priv字段的結構體的行為

8.lexmatch表達式 first match 下新增 guard 支持。

包含 guard 的 lexmatch 性能會有損失,因此推薦在快速開發過程中使用,之后再考慮是否改寫。其語法和 match 表達式中的 guard 一致

查看 https://github.com/moonbitlang/lexmatch_spec 了解更多:

lexmatch input {
("#!" "[^\n]+") if allow_shebang => ...
...
}

9.struct新增了自定義構造器的支持,語法如下:

struct S {
x : Int
y : Int

// 為 `struct` 聲明一個構造器
fn new(x~ : Int, y? : Int) -> S
}

// 實現 `struct` 的構造器
fn S::new(x~ : Int, y? : Int = x) -> S {
{ x, y }
}

// 使用 `struct` 的構造器
test {
let s = S(x=1)
}

語義上:

?struct中聲明fn new即可給這個struct定義自動構造器。除了必須返回struct自身之外,自定義構造器的簽名沒有其他限制。可以使用 optional argument、拋出錯誤等。struct中的fn new(..)的參數不能寫默認值,但可以省略參數名字

? 對于有類型參數的structfn new可以特化類型參數,也可以給類型參數 添加trait約束。語法和普通的頂層函數聲明一樣

? 如果在struct中聲明了fn new, 則必須定義一個方法fn S::new來實現這個構造器。S::new的簽名必須和struct中的fn new完全相同

? 使用struct構造器的方式和使用一個enum構造器完全一樣。比如,在類型已知的時候,可以直接寫S(..),無需寫成@pkg.S(..)或 者@pkg.S::S(..)。不過,struct的構造器不能用于模式匹配

?struct構造器的可見性和struct字段相同。也就是說,pub structpub(all) struct的構造器可以在當前包外調用 ,structpriv struct的構造器則是私有的

10.using聲明上現在可以添加標注來廢棄using創建的別名。

11. 增加了Debug特征和自動 derive 相關支持。

///|
struct Data {
pos : Array[(Int, Int)]
map : Map[String, Int]
} derive(Debug)


///|
test "pos" {
debug_inspect(
{
pos: [(1, 2), (3, 4), (5, 6)],
map: { "key1": 100, "key2": 200, "key3": 300 },
},
content=(
#|{
#| pos: [(1, 2), (3, 4), (5, 6)],
#| map: {
#| "key1": 100,
#| "key2": 200,
#| "key3": 300,
#| },
#|}
),
)
}

Debug 特征是Show 特征的改進版本,用于提供更結構化和可讀的打印信息。

derive(Debug) 支持額外的 ignore 參數,它接受一個或者多個類型構造器名。在實現類型本身的打印邏輯時,它會過濾語法上相同的類型構造器,相關部分將會打印成...。 這在內部類型來自第三方包,并且沒有提供 Debug 特征的實現時非常有用。

///|
struct Data1 {
field1 : Data2
field2 : Double
field3 : Array[Int]
} derive(Debug(ignore=[Data2, Array]))

///|
struct Data2 {
content : String
}

///|
test "pos" {
debug_inspect(
{ field1: { content: "data string" }, field2: 10, field3: [1, 2, 3] },
content=(
#|{
#| field1: ...,
#| field2: 10,
#| field3: ...,
#|}
),
)
}

@moonbitlang/core/debug包還提供了專門的assert_eq(a,b),在斷言失敗時,找出 a 和 b 的差異并打印在命令行中。

在未來我們將逐步遷移到Debug并棄用derive(Show),Show 特征則專注于手動實現特殊的打印邏輯,如Json::stringify

12. 移除了將帶參數的構造器直接當作高階函數使用的行為,如果需要把構造器用作高階函數,需要寫一個匿名函數:

test {
let _ : (Int) -> Int? = Some // 已被移除
let _ : (Int) -> Int? = x => Some(x) // 正確的寫法
let _ : Int? = 42 |> Some // 管道不受影響
}

這一行為之前已通過警告的形式廢棄。注意管道運算符右側依然可以直接寫構造器,不受影響

13. 廢棄fn上的副作用推導。

如果一 個fn實際上可能拋出錯誤或者調用async函數,就必須加上raise/async標記,否則編譯器會報一個警告。箭頭函數語法(..) => ..不受影響。因此,未來對于回調函數類的匿名函數,建議使用箭頭函數而非fnfn可以在需要顯式標注以改善可讀性的時候使用

14. 調整了x..f()的語義,將其調整回最簡單的語義:x..f()等價于{ x.f(); x }

之前,x..f()表達式的結果(x)可以被直接忽略。現在,編譯器會對這種情況報一個警告,需要把最后一個..f()替換成.f()或者顯式忽略結果

15. 循環的else塊關鍵字改為nobreak

for/foreach/while 循環中此前可以用elseblock 來寫明在循環正常退出時的計算結果為了更加直觀,這一關鍵字被改成了nobreak,比如:

fn f() -> Int {
for i = 0; i < 10; i = i + 1 {


} nobreak {
i
}
}

這一改動可以使用moon fmt自動遷移

16. 新增了一個默認關閉的警告unnecessary_annotation

它會標記出代碼中的結構體字面量和構造器上不必要的類型標注,即那些編譯器可以通過上下文推斷出正確的類型、無需顯式指定類型的代碼

工具鏈更新

1. 正式啟用 moon.pkg 。

在對 moon.pkg 進行了一段時間的測試和改進后,我們正式啟用了 moon.pkg。舊的項目在執行 moon fmt 時將會被自動遷移到新的格式。新的項目也會直接使用 moon.pkg 作為包的配置。下面是常用配置的例子:

import {
"path/to/pkg1",
"path/to/pkg2" @alias,
}


warnings = "+deprecated-unused_value"

更多詳細信息請見 moonbit 語言文檔。

2.moon test支持通過-j參數并行地運行測試。

3.moon test支持通過--outline列出所有待運行的測試。

4.moon test --index支持指定特定范圍的測試(左閉右開)

moon test --index 0-2會運行前兩個測試(--index需事先指定測試的文件)。

5.moon install的 支持從 MoonBit 項目全局安裝可執行程序

因為moon checkmoon build都可以自動安裝依賴。

moon install 的新行為類似cargo installgo install,支持用戶從包管理平臺、git 源或者本地安裝一個或多個二進制文件到全局(對應包需要支持 native 后端且 is-main 為 true),如:

   moon install username/package (root 為 package 時)
moon install username/cmd/main (安裝某一個包)
moon install username/... (前綴開始所有的包)
moon install ./cmd/main (local path)
moon install https://github.com/xxx/yyy.git (自動識別 git 鏈接)

更多用法可以使用moon install --help查看。

6. 現在可以在 moon.pkg 中配置

regex_backend選項來指定 lexmatch 表達式的正則使用什么后端:

options(
// 默認為 "auto",其他可選項分別為 "block", "table", "runtime"
// auto 由編譯器自主決定采用哪個后端
// block 后端性能最好,但代碼體積可能產生膨脹
// table 后端生成查表解釋執行的代碼,兼顧代碼體積和性能
// runtime 后端生成依賴標準庫中 regex_engine 的代碼,在大量使用正則的情況下,能大幅減少生成的代碼體積
regex_backend: "runtime",
)

7. moon -C 改為改變工作目錄

moon -C 以前會從對應路徑開始查找 MoonBit 項目,但是不會改變工作目錄;這與一般構建系統傳統不符。現在moon -C 會改為改變工作目錄,并且需要出現在任何子命令或參數前;同時添加了--manifest-path指向moon.mod.json用于運行路徑與源代碼路徑不同的情況

8.moon runmoon build默認使用--debug

9. 更新了.mbt.md文件在 front matter 聲明依賴的形式。

之前在 front matter 中只能聲明 module dependency,并且會將被依賴的 module 中的 package 全部導入,這會導致無法更細粒度地寫明 import 以及 package alias 會沖突的問題。在新版本中,front matter 聲明依賴的形式改成了直接寫明具體依賴的包,并且可以聲明 alias,并且需要在 module 后面寫明版本號,多次出現的 module 只需寫一次版本號即可,對標準庫的依賴不需要寫版本號。


---

moonbit:

import:

- path: moonbitlang/async@0.16.5/aqueue

alias: aaqueue

backend:

native

---

10.moon new簡化了模板,更新了關于 skills 的簡單介紹。

11.moon fetch提供了一個簡單的獲取已發布包源代碼的方式

默認會保存至項目根目錄或當前路徑下的.repos,方便 Agent 閱讀源代碼學習使用方式。

12.moon fmt支持保留和折疊{ statement1; statement2 }語句之間的空行。

例如:

// 格式化前
fn main {
e()

// comment
f()

g()
h()
}

// 格式化后
fn main {
e()

// comment
f()

g()
h()
}

13.```moonbit現在會被自動格式化成```moonbit nocheck

*.mbt.md文件或者文檔注釋中,對于被設置為跳過檢查的```moonbit代碼塊,格式化器會自動加上更顯式的 nocheck 標記 。

標準庫&實驗庫 更新

1.moonbitlang/async改動:

? 新增了@process.spawn,可以直接在一個TaskGroup中創建一個外部進程,并獲取該進程的 PID。TaskGroup在默認狀態下會等待該外部進程結束,在需要提前退出時會自動中止這個外部進程

? 新增了@fs.File::{lock, try_lock, unlock}方法,提供文件鎖的支持。普通的文件 IO 不受文件鎖的影響

? 新增了@fs.tmpdir(prefix~),提供創建臨時文件夾的支持

? 新增了@async.all@async.any,語義類似Promise.allPromise.any

? 在examples文件夾下新增了更多簡單示例和對每個示例的介紹

2.@json.inspect遷移至json_inspect

IDE 更新

1. 優化alias定義跳轉

查找alias定義時,現在除了會顯示alias定義的位置外,還會一并顯示 alias target 定義的位置:


2.moon ide hover


moon ide新增hover子命令,用于顯示源代碼中某個符號的類型和文檔:

$ moonide hover -no-check filter -loc hover.mbt:14
test {
let a: Array[Int] = [1]
inspect(a.filter((x) => {x > 1}))
^^^^^^
```moonbit
fn[T] Array::filter(self : Array[T], f : (T) -> Bool raise?) -> Array[T] raise?
```
---
Creates a new array containing all elements from the input array that satisfy
the given predicate function.
Parameters:
* `array` : The array to filter.
* `predicate` : A function that takes an element and returns a boolean
indicating whether the element should be included in the result.
Returns a new array containing only the elements for which the predicate
function returns `true`. The relative order of the elements is preserved.
Example:
```mbt check
test {
let arr = [1, 2, 3, 4, 5]
let evens = arr.filter(x => x % 2 == 0)
inspect(evens, content="[2, 4]")
}
```
}

3.moon ide rename:

moon ide新增rename子命令,用于生成符合codex apply_patch 工具格式的重命名patch,方便agent更準確快速地重構代碼。例如:

$ moon ide rename TaskGroup TG
*** Begin Patch
*** Update File: /Users/baozhiyuan/Workspace/async/src/async.mbt
@@
/// and will result in immediate failure.
("use `async fn main` or `async test` instead")
(target="native")
-pub fn with_event_loop(f : async (TaskGroup[Unit]) -> Unit) -> Unit raise {
+pub fn with_event_loop(f : async (TG[Unit]) -> Unit) -> Unit raise {
@event_loop.with_event_loop(() => with_task_group(f))
}

*** Update File: /Users/baozhiyuan/Workspace/async/src/task_group.mbt
@@
///
/// The type parameter `X` in `TaskGroup[X]` is the result type of the group,
/// see `with_task_group` for more detail.
-struct TaskGroup[X] {
+struct TG[X] {
children : Set[@coroutine.Coroutine]
parent : @coroutine.Coroutine
mut waiting : Int
@@
pub suberror AlreadyTerminated derive(Show)

///|
-fn[X] TaskGroup::spawn_coroutine(
+fn[X] TG::spawn_coroutine(
- self : TaskGroup[X],
+ self : TG[X],
f : async () -> Unit,
...

關于 MoonBit :

MoonBit (https://www.moonbitlang.cn/)國內首個工業級編程語言及其配套工具鏈, 由粵港澳大灣區數字經濟研究院(簡稱“IDEA 研究院”)基礎軟件中心打造的AI原生的編程語言以及開發者平臺。通過創新框架在程序語言界形成后發優勢,在編譯速度、運行速度、體積大小上已成功領先傳統語言。

官方平臺賬號,歡迎掃碼關注

有任何事宜添加小助手微信

官網moonbitlang.cn

知乎|@張宏波 / @MoonBit

小紅書|MoonBit月兔

Twitter|@Moonbitlang

Bilibili|MoonBit月兔

抖音|MoonBit月兔

MoonBit用戶交流群|添加小助手moonbit_helper

?關注分享在看一鍵三連 ~

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
姚來英任國家煙草專賣局局長(附簡歷)

姚來英任國家煙草專賣局局長(附簡歷)

中國城市報
2026-04-03 23:27:43
輕松打爆快船的防線!馬刺榜眼郎已經是一名相當可靠的第六人了?

輕松打爆快船的防線!馬刺榜眼郎已經是一名相當可靠的第六人了?

稻谷與小麥
2026-04-04 01:44:46
春天,吃它勝過“十只雞”,一補蛋白、二強免疫、三補氣血,好吃

春天,吃它勝過“十只雞”,一補蛋白、二強免疫、三補氣血,好吃

阿龍美食記
2026-04-03 11:53:16
真的要變天了…

真的要變天了…

子說一點
2026-04-03 18:15:23
伊朗宣布再次擊落F-35戰斗機,并公布戰機碎片照片!“這是我們對美國總統特朗普胡言亂語的首次回應”,美軍又一部“薩德”被擊中

伊朗宣布再次擊落F-35戰斗機,并公布戰機碎片照片!“這是我們對美國總統特朗普胡言亂語的首次回應”,美軍又一部“薩德”被擊中

每日經濟新聞
2026-04-03 17:22:33
現役第一!哈登生涯17季全部晉級季后賽 僅輸鄧肯猶他二老

現役第一!哈登生涯17季全部晉級季后賽 僅輸鄧肯猶他二老

醉臥浮生
2026-04-03 12:31:24
天文學家拍到了時空彎曲,距離地球120億光年,愛因斯坦又對了!

天文學家拍到了時空彎曲,距離地球120億光年,愛因斯坦又對了!

觀察宇宙
2026-04-03 17:38:27
閃充還沒“滿月”,比亞迪又整了個大活!冷門車,這下要爛大街了

閃充還沒“滿月”,比亞迪又整了個大活!冷門車,這下要爛大街了

小李車評李建紅
2026-04-03 07:56:18
獨家評論:直接點名硬剛賴清德,鄭麗文四句話拆穿“臺獨”話術

獨家評論:直接點名硬剛賴清德,鄭麗文四句話拆穿“臺獨”話術

海峽導報社
2026-04-02 23:17:16
NBA MVP榜:文班亞馬仍居首,亞歷山大第二,前五名無變化

NBA MVP榜:文班亞馬仍居首,亞歷山大第二,前五名無變化

懂球帝
2026-04-04 01:28:14
央視直播4月4日澳門單打世界杯, 孫穎莎對高達,王楚欽戰達科

央視直播4月4日澳門單打世界杯, 孫穎莎對高達,王楚欽戰達科

乒乓球球
2026-04-03 23:46:35
乘聯會:3月全國乘用車新能源市場零售78.4萬輛,同比去年3月下降21%,較上月增長69%

乘聯會:3月全國乘用車新能源市場零售78.4萬輛,同比去年3月下降21%,較上月增長69%

每日經濟新聞
2026-04-03 16:34:37
亞歷山大28+7+7無緣今日最佳球員!因為哈登19+2+5殺死比賽創紀錄

亞歷山大28+7+7無緣今日最佳球員!因為哈登19+2+5殺死比賽創紀錄

Tracy的籃球博物館
2026-04-03 13:04:31
自愿?無奈?古力娜扎“空裝”上陣為了啥?

自愿?無奈?古力娜扎“空裝”上陣為了啥?

楓塵余往逝
2026-04-02 15:48:02
中美印全球卷煙銷量差距斷崖:美1780億支,印940億支,中國多少

中美印全球卷煙銷量差距斷崖:美1780億支,印940億支,中國多少

米果說識
2026-04-02 19:51:58
伊朗稱發動“真實承諾-4”第92波打擊

伊朗稱發動“真實承諾-4”第92波打擊

環球網資訊
2026-04-03 19:07:06
醫生直言:體檢報告這5項指標正常,身體基本上無大礙,建議了解

醫生直言:體檢報告這5項指標正常,身體基本上無大礙,建議了解

熊貓醫學社
2026-04-03 11:35:03
皇馬逃過一劫!阿隆索力薦的 7000 萬水貨,在英超徹底現原形

皇馬逃過一劫!阿隆索力薦的 7000 萬水貨,在英超徹底現原形

瀾歸序
2026-04-03 04:06:56
受刺激了,一伙計2天干了430個W。

受刺激了,一伙計2天干了430個W。

觀世不語笑紅塵
2026-03-28 11:18:50
日媒:闖使館事件日本政客狡辯“中方沒要求道歉,所以不用道歉”

日媒:闖使館事件日本政客狡辯“中方沒要求道歉,所以不用道歉”

赫岝鄉村攝影
2026-04-04 00:43:57
2026-04-04 02:11:00
開源中國 incentive-icons
開源中國
每天為開發者推送最新技術資訊
7667文章數 34520關注度
往期回顧 全部

科技要聞

5萬輛庫存車,給了特斯拉一記重拳

頭條要聞

特朗普非常生氣要大清洗 陸軍部長、FBI局長等或被調整

頭條要聞

特朗普非常生氣要大清洗 陸軍部長、FBI局長等或被調整

體育要聞

被NBA選中20年后,他重新回到籃球場

娛樂要聞

夏克立官宣再婚當爸?否認婚內出軌

財經要聞

專家稱長期攝入“飄香劑”存在健康隱患

汽車要聞

你介意和遠房親戚長得很像嗎?

態度原創

旅游
藝術
數碼
教育
親子

旅游要聞

一秒墜入油畫里!小火車、花海、露營……千畝金黃等你來打卡

藝術要聞

她的作品藏著絕世美女,看看你能認出幾個!

數碼要聞

消息稱三星顯示器部門面臨巨大危機,最壞結果將退出中國大陸市場

教育要聞

3000師生徒步108里祭英烈,網友吵翻“沒苦硬吃”?老校長回應

親子要聞

兩個孩子棒 父母也棒

無障礙瀏覽 進入關懷版