Skip to main content

weekly 2023-09-18

· 2 min read

Moonbit was introduced to the public last month, and we received a lot of positive feedback. This post is intended to provide updates on the changes to Moonbit's language and build system over the past week.

Changes in Moonbit Language

1. Int64 built-in type support

Moonbit has added the Int64 built-in type. Integers of the Int64 type must have an 'L' as a suffix, for example:

func init {
let a = 9_223_372_036_854_775_807L
print(a)
}

The above program outputs:

9223372036854775807

2. Built-in method print[T : Show](t : T) change

Removal of the Built-in Method t.print(), Replaced with Function print[T : Show](t : T), and any type that has implemented the to_string method can be printed out, for example:

enum Tree[T]{
Node(Tree[T],Tree[T])
Leaf(T)
}

func to_string[T : Show](self : Tree[T]) -> String {
match self {
Node(l,r) => "Tree(\(l), \(r))"
Leaf(v) => "Leaf(\(v))"
}
}

func init {
let tree = Tree::Node(Leaf(1),Node(Leaf(2),Leaf(3)))
// tree.print() // old method
print(tree) // new method
}

The above program outputs:

Tree(Leaf(1), Tree(Leaf(2), Leaf(3)))

3. Built-in to_string method for bool type

Now bool type data can be directly printed via print and println, for example:

func init {
println(false)
print(true)
}

Output:

false
true

Changes in MoonBit's IDE

1. Quick Fix Support for Unused Mutable Variables

If a var variable is defined and its content is not modified in the subsequent code, the IDE can provide a Quick Fix function.

For instance, with the following code:

func init {
var a = 1
print(a)
}

自动修复|690x236

When we click Quick Fix, the code can be automatically fixed to:

func init {
let a = 1
print(a)
}

2. Auto-completion adds support for enum constructors

For instance, with an enum-defined type like this:q

enum Dir {
Left
Right
}

When we type L in the init function, the custom-defined Left will appear in auto-completion.

改字母|690x272