1"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[226],{60269:(s,i,e)=>{e.r(i),e.d(i,{assets:()=>o,contentTitle:()=>c,default:()=>h,frontMatter:()=>a,metadata:()=>l,toc:()=>t});var l=e(52562),n=e(13274),r=e(98703);const a={},c="weekly 2024-05-27",o={authorsImageUrls:[]},t=[{value:"Language Update",id:"language-update",level:2},{value:"IDE Update",id:"ide-update",level:2},{value:"Build System Update",id:"build-system-update",level:2},{value:"Toolchain Update",id:"toolchain-update",level:2}];function d(s){const i={a:"a",code:"code",h2:"h2",img:"img",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...(0,r.R)(),...s.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.p,{children:"MoonBit is a Rust-like programming language (with GC support) and toolchain optimized for WebAssembly."}),"\n",(0,n.jsx)(i.h2,{id:"language-update",children:"Language Update"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["Breaking Change: Restructure APIs of MoonBit Core library.","\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["Placing all immutable data structures under the ",(0,n.jsx)(i.code,{children:"immut"})," path, for example, from ",(0,n.jsx)(i.code,{children:"@immutable_hashmap.Map"})," to ",(0,n.jsx)(i.code,{children:"@immut/hashmap.Map"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(i.pre,{className:"shiki shiki-themes one-light one-dark-pro",style:{backgroundColor:"#FAFAFA","--shiki-dark-bg":"#282c34",color:"#383A42","--shiki-dark":"#abb2bf"},tabIndex:"0",children:(0,n.jsxs)(i.code,{children:[(0,n.jsx)(i.span,{className:"line",children:(0,n.jsx)(i.span,{style:{color:"#A0A1A7",fontStyle:"italic","--shiki-dark":"#7F848E","--shiki-dark-font-style":"italic"},children:"// Before"})}),"\n",(0,n.jsxs)(i.span,{className:"line",children:[(0,n.jsx)(i.span,{style:{color:"#A626A4","--shiki-dark":"#C678DD"},children:"let"}),(0,n.jsx)(i.span,{style:{color:"#E45649","--shiki-dark":"#E06C75"},children:" a"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:" : "}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#E5C07B"},children:"@immutable_hashmap"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"."}),(0,n.jsx)(i.span,{style:{color:"#C18401","--shiki-dark":"#E5C07B"},children:"Map"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"["}),(0,n.jsx)(i.span,{style:{color:"#C18401","--shiki-dark":"#E5C07B"},children:"Int"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:", "}),(0,n.jsx)(i.span,{style:{color:"#C18401","--shiki-dark":"#E5C07B"},children:"Int"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"] "}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#56B6C2"},children:"="}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#E5C07B"},children:" @immutable_hashmap"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"."}),(0,n.jsx)(i.span,{style:{color:"#4078F2","--shiki-dark":"#61AFEF"},children:"make"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"()"})]}),"\n",(0,n.jsx)(i.span,{className:"line",children:(0,n.jsx)(i.span,{style:{color:"#A0A1A7",fontStyle:"italic","--shiki-dark":"#7F848E","--shiki-dark-font-style":"italic"},children:"// After"})}),"\n",(0,n.jsxs)(i.span,{className:"line",children:[(0,n.jsx)(i.span,{style:{color:"#A626A4","--shiki-dark":"#C678DD"},children:"let"}),(0,n.jsx)(i.span,{style:{color:"#E45649","--shiki-dark":"#E06C75"},children:" a"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:" : "}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#E5C07B"},children:"@immut/hashmap"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"."}),(0,n.jsx)(i.span,{style:{color:"#C18401","--shiki-dark":"#E5C07B"},children:"Map"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"["}),(0,n.jsx)(i.span,{style:{color:"#C18401","--shiki-dark":"#E5C07B"},children:"Int"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:", "}),(0,n.jsx)(i.span,{style:{color:"#C18401","--shiki-dark":"#E5C07B"},children:"Int"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"] "}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#56B6C2"},children:"="}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#E5C07B"},children:" @immut/hashmap"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"."}),(0,n.jsx)(i.span,{style:{color:"#4078F2","--shiki-dark":"#61AFEF"},children:"make"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"}
1,children:"()"})]})]})})}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["Performance optimization for the Option[T] type in the core library:","\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["When the type T is a reference type, for values of type Option[T], ",(0,n.jsx)(i.code,{children:"Some(v)"})," will be directly compiled into ",(0,n.jsx)(i.code,{children:"v"}),", and None will be compiled into ref.null in the wasm-gc backend, or ",(0,n.jsx)(i.code,{children:"undefined"})," in the JavaScript backend, thus avoiding memory allocation."]}),"\n"]}),"\n"]}),"\n",(0,n.jsxs)(i.li,{children:["Introduced ",(0,n.jsx)(i.code,{children:"fn panicT -> T"})," function in the core library, which can be used within test blocks where the test name must start with ",(0,n.jsx)(i.code,{children:'"panic"'}),":"]}),"\n"]}),"\n",(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(i.pre,{className:"shiki shiki-themes one-light one-dark-pro",style:{backgroundColor:"#FAFAFA","--shiki-dark-bg":"#282c34",color:"#383A42","--shiki-dark":"#abb2bf"},tabIndex:"0",children:(0,n.jsxs)(i.code,{children:[(0,n.jsxs)(i.span,{className:"line",children:[(0,n.jsx)(i.span,{style:{color:"#0184BC","--shiki-dark":"#56B6C2"},children:"test"}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:' "panic test ok"'}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:" {"})]}),"\n",(0,n.jsxs)(i.span,{className:"line",children:[(0,n.jsx)(i.span,{style:{color:"#4078F2","--shiki-dark":"#61AFEF"},children:" panic"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"() // Test passes"})]}),"\n",(0,n.jsx)(i.span,{className:"line",children:(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"}"})}),"\n",(0,n.jsx)(i.span,{className:"line"}),"\n",(0,n.jsxs)(i.span,{className:"line",children:[(0,n.jsx)(i.span,{style:{color:"#0184BC","--shiki-dark":"#56B6C2"},children:"test"}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:' "panic test failed"'}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:" {"})]}),"\n",(0,n.jsxs)(i.span,{className:"line",children:[(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:" () "}),(0,n.jsx)(i.span,{style:{color:"#4078F2","--shiki-dark":"#61AFEF"},children:"//"}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:" Test"}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:" fails"})]}),"\n",(0,n.jsx)(i.span,{className:"line",children:(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"}"})})]})})}),"\n",(0,n.jsx)(i.h2,{id:"ide-update",children:"IDE Update"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["VS Code extension: Added ",(0,n.jsx)(i.code,{children:"test"})," and ",(0,n.jsx)(i.code,{children:"for"})," code snippets.\r\n",(0,n.jsx)(i.code,{children:"test"})," snippet:\r\n",(0,n.jsx)(i.img,{alt:"test.gif",src:e(79152).A+"",width:"2900",height:"1710"}),"\r\n",(0,n.jsx)(i.code,{children:"for"})," snippet:\r\n",(0,n.jsx)(i.img,{alt:"for.gif",src:e(13937).A+"",width:"2900",height:"1710"})]}),"\n"]}),"\n",(0,n.jsx)(i.h2,{id:"build-system-update",children:"Build System Update"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["Initialization: ",(0,n.jsx)(i.code,{children:"moon new"})," now automatically initializes version control for new projects, currently supporting git"]}),"\n",(0,n.jsx)(i.li,{children:"Testing: You can now specify multiple packages to test"}),"\n"]}),"\n",(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(i.pre,{className:"shiki shiki-themes one-light one-dark-pro",style:{backgroundColor:"#FAFAFA","--shiki-dark-bg":"#282c34",color:"#383A42","--shiki-dark":"#abb2bf"},tabIndex:"0",children:(0,n.jsxs)(i.code,{children:[(0,n.jsxs)(i.span,{className:"line",children:[(0,n.jsx)(i.span,{style:{color:"#4078F2","--shiki-dark":"#61AFEF"},children:"moon"}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:" test"}),(0,n.jsx)(i.span,{style:{color:"#986801","--shiki-dark":"#D19A66"},children:" -p"}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:" a"}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:" b"}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:" c"})]}),"\n",(0,n.jsxs)(i.span,{className:"line",children:[(0,n.jsx)(i.span,{style:{color:"#4078F2","--shiki-dark":"#61AFEF"},children:"moon"}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:" test"}),(0,n.jsx)(i.span,{style:{color:"#986801","--shiki-dark":"#D19A66"},children:" -p"}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:" a"}),(0,n.jsx)(i.span,{style:{color:"#986801","--shiki-dark":"#D19A66"},children:" -p"}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:" b"}),(0,n.jsx)(i.span,{style:{color:"#986801","--shiki-dark":"#D19A66"},children:" -p"}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:" c"})]})]})})}),"\n",(0,n.jsx)(i.h2,{id:"toolchain-update",children:"Toolchain Update"}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsx)(i.li,{children:"Installation: You can now specify a version number for installation"}),"\n"]}),"\n",(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(i.pre,{className:"shiki shiki-themes one-light one-dark-pro",style:{backgroundColor:"#FAFAFA","--shiki-dark-bg":"#282c34",color:"#383A42","--shiki-dark":"#abb2bf"},tabIndex:"0",children:(0,n.jsxs)(i.code,{children:[(0,n.jsx)(i.span,{className:"line",children:(0,n.jsx)(i.span,{style:{color:"#A0A1A7",fontStyle:"italic","--shiki-dark":"#7F848E","--shiki-dark-font-style":"italic"},children:"# Mac and Linux Users"})}),"\n",(0,n.jsx)(i.span,{className:"line",children:(0,n.jsx)(i.span,{style:{color:"#A0A1A7",fontStyle:"italic","--shiki-dark":"#7F848E","--shiki-dark-font-style":"italic"},children:"# Download the latest version"})}),"\n",(0,n.jsxs)(i.span,{className:"line",children:[(0,n.jsx)(i.span,{style:{color:"#4078F2","--shiki-dark":"#61AFEF"},children:"curl"}),(0,n.jsx)(i.span,{style:{color:"#986801","--shiki-dark":"#D19A66"},children:" -fsSL"}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:" https://cli.moonbitlang.com/install/unix.sh"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:" | "}),(0,n.jsx)(i.span,{style:{color:"#4078F2","--shiki-dark":"#61AFEF"},children:"bash"})]}),"\n",(0,n.jsx)(i.span,{className:"line",children:(0,n.jsx)(i.span,{style:{color:"#A0A1A7",fontStyle:"italic","--shiki-dark":"#7F848E","--shiki-dark-font-style":"italic"},children:"# Download the bleeding edge version"})}),"\n",(0,n.jsxs)(i.span,{className:"line",children:[(0,n.jsx)(i.span,{style:{color:"#4078F2","--shiki-dark":"#61AFEF"},children:"curl"}),(0,n.jsx)(i.span,{style:{color:"#986801","--shiki-dark":"#D19A66"},children:" -fsSL"}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:" https://cli.moonbitlang.com/install/unix.sh"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:" | "}),(0,n.jsx)(i.span,{style:{color:"#4078F2","--shiki-dark":"#61AFEF"},children:"bash"}),(0,n.jsx)(i.span,{style:{color:"#986801","--shiki-dark":"#D19A66"},children:" -s"}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:" bleeding"})]}),"\n",(0,n.jsx)(i.span,{className:"line",children:(0,n.jsx)(i.span,{style:{color:"#A0A1A7",fontStyle:"italic","--shiki-dark":"#7F848E","--shiki-dark-font-style":"italic"},children:"# Download a specific version"})}),"\n",(0,n.jsxs)(i.span,{className:"line",children:[(0,n.jsx)(i.span,{style:{color:"#4078F2","--shiki-dark":"#61AFEF"},children:"curl"}),(0,n.jsx)(i.span,{style:{color:"#986801","--shiki-dark":"#D19A66"},children:" -fsSL"}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:" https://cli.moonbitlang.com/install/unix.sh"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:" | "}),(0,n.jsx)(i.span,{style:{color:"#4078F2","--shiki-dark":"#61AFEF"},children:"bash"}),(0,n.jsx)(i.span,{style:{color:"#986801","--shiki-dark":"#D19A66"},children:" -s"}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:" 0.1.20240520+b1f30d5e1"})]})]})})}),"\n",(0,n.jsx)(n.Fragment,{children:(0,n.jsx)(i.pre,{className:"shiki shiki-themes one-light one-dark-pro",style:{backgroundColor:"#FAFAFA","--shiki-dark-bg":"#282c34",color:"#383A42","--shiki-dark":"#abb2bf"},tabIndex:"0",children:(0,n.jsxs)(i.code,{children:[(0,n.jsx)(i.span,{className:"line",children:(0,n.jsx)(i.span,{style:{color:"#A0A1A7",fontStyle:"italic","--shiki-dark":"#7F848E","--shiki-dark-font-style":"italic"},children:"# Windows Users"})}),"\n",(0,n.jsx)(i.span,{className:"line",children:(0,n.jsx)(i.span,{style:{color:"#A0A1A7",fontStyle:"italic","--shiki-dark":"#7F848E","--shiki-dark-font-style":"italic"},children:"# Download the latest version"})}),"\n",(0,n.jsxs)(i.span,{className:"line",children:[(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"irm cli.moonbitlang.cn"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#56B6C2"},children:"/"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"install"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#56B6C2"},children:"/"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"powershell.ps1 | iex"})]}),"\n",(0,n.jsx)(i.span,{className:"line",children:(0,n.jsx)(i.span,{style:{color:"#A0A1A7",fontStyle:"italic","--shiki-dark":"#7F848E","--shiki-dark-font-style":"italic"},children:"# Download a specific version"})}),"\n",(0,n.jsxs)(i.span,{className:"line",children:[(0,n.jsx)(i.span,{style:{color:"#E45649","--shiki-dark":"#E06C75"},children:"$env:MOONBIT_INSTALL_VERSION"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#56B6C2"},children:" ="}),(0,n.jsx)(i.span,{style:{color:"#50A14F","--shiki-dark":"#98C379"},children:' "0.1.20240520+b1f30d5e1"'}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"; irm cli.moonbitlang.cn"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#56B6C2"},children:"/"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"install"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#56B6C2"},children:"/"}),(0,n.jsx)(i.span,{style:{color:"#383A42","--shiki-dark":"#ABB2BF"},children:"powershell.ps1 | iex"})]})]})})}),"\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["Installation: You can now look up the SHA256 checksum for a specific version to verify downloads.","\n",(0,n.jsxs)(i.ul,{children:["\n",(0,n.jsxs)(i.li,{children:["Visit: ",(0,n.jsx)(i.a,{href:"https://www.moonbitlang.com/download/#verifying-binaries",children:"https://www.moonbitlang.com/download/#verifying-binaries"})]}),"\n"]}),"\n"]}),"\n"]})]})}function h(s={}){const{wrapper:i}={...(0,r.R)(),...s.components};return i?(0,n.jsx)(i,{...s,children:(0,n.jsx)(d,{...s})}):d(s)}},13937:(s,i,e)=>{e.d(i,{A:()=>l});const l=e.p+"assets/images/for-81ca18f489e068c47c6ff1d9c25a3779.gif"},79152:(s,i,e)=>{e.d(i,{A:()=>l});const l=e.p+"assets/images/test-22e909a6eabba2289e6725619eb7b79a.gif"},98703:(s,i,e)=>{e.d(i,{R:()=>a,x:()=>c});var l=e(79474);const n={},r=l.createContext(n);function a(s){const i=l.useContext(r);return l.useMemo((function(){return"function"==typeof s?s(i):{...i,...s}}),[i,s])}function c(s){let i;return i=s.disableParentContext?"function"==typeof s.components?s.components(n):s.components||n:a(s.components),l.createElement(r.Provider,{value:i},s.children)}},52562:s=>{s.exports=JSON.parse('{"permalink":"/updates/2024/05/27/weekly-05-27","source":"@site/updates/2024-05-27-weekly-05-27/index.md","title":"weekly 2024-05-27","description":"MoonBit is a Rust-like programming language (with GC support) and toolchain optimized for WebAssembly.","date":"2024-05-27T00:00:00.000Z","tags":[],"readingTime":1.59,"hasTruncateMarker":false,"authors":[],"frontMatter":{},"unlisted":false,"prevItem":{"title":"weekly 2024-06-03","permalink":"/updates/2024/06/03/weekly-06-03"},"nextItem":{"title":"weekly 2024-05-20","permalink":"/updates/2024/05/20/weekly-05-20"}}')}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.