A simple, human-friendly scripting language, developed one feature at a time.
You can try out the REPL with cargo run -p mica-cli --release
.
A language reference is available here.
``` func factorial(n) i = 1 x = 1 while i <= n do x = x * i i = i + 1 end x end
iteration = 1 result = 0 while iteration <= 100000 do result = factorial(15) iteration = iteration + 1 end
print(result) ```
Factorial benchmark
```
hyperfine --warmup 5 './target/release/mica code/functions.mi' 'lua5.1 code/functions.lua' Benchmark 1: ./target/release/mica code/functions.mi Time (mean ± σ): 291.8 ms ± 5.9 ms [User: 288.5 ms, System: 3.1 ms] Range (min … max): 287.2 ms … 307.3 ms 10 runs
Benchmark 2: lua5.1 code/functions.lua Time (mean ± σ): 28.0 ms ± 0.5 ms [User: 27.3 ms, System: 1.1 ms] Range (min … max): 27.2 ms … 31.1 ms 99 runs
Summary 'lua5.1 code/functions.lua' ran 10.41 ± 0.29 times faster than './target/release/mica code/functions.mi' ``` It's not ideal yet but hopefully it'll get better with time. Current bottlenecks include: - A really stupid compiler that does zero optimizations - Stack-based rather than register-based virtual machine - Rust's safety features working against my goal of being faster than Lua