38 个版本 (9 个破坏性更新)
0.29.5 | 2019年6月13日 |
---|---|
0.28.0 | 2019年6月8日 |
#7 in #hana
每月下载量 99
270KB
7K SLoC
🌸 hana
hana 是一个由 Rust/C 编写的小型动态类型脚本语言,受 Pascal、Ruby 和 Javascript 启发。它主要支持基于原型的面向对象、动态数组、一等函数(带有闭包支持)。解释器具有一些有用的功能,如简单的标记-清除垃圾收集器、异常处理和导入系统。
haru,Rust 解析/运行时生成在用 C 编写的优化虚拟机上运行的字节码(与 Python 和 Ruby 一样快!)
安装
您需要安装 cargo 软件包管理器和 rust。然后您可以这样做
cargo install haru
名为 haru
的解释器将被安装到您的 PATH 中。
附加功能
可以通过将它们的名称传递给 cargo 的 --features
标志来启用附加功能
jemalloc
:使用 jemalloc 内存分配器cffi
:启用 stdlib 的 C 外部接口 (wip)
运行
一旦构建或安装,您可以将 hana 代码写入源文件,然后像这样调用解释器
haru program.hana
或者您也可以调用 REPL 以便于原型设计
haru
有关用法,请传递 -h
命令
usage: haru [options] [-c cmd | file | -]
options:
-c cmd : execute program passed in as string
-d/--dump-vmcode: dumps vm bytecode to stdout
(only works in interpreter mode)
-b/--bytecode: runs file as bytecode
-a/--print-ast: prints ast and without run
-v/--version: version
示例
请参阅 /examples 了解更多
Hello World
print("Hello World\n")
变量
name = "Alice"
age = 20
print(name, " is ", age, " years old.\n")
斐波那契数列
// Regular recursive
fib(n) = n <= 1 ? 1 : fib(n-1) + fib(n-2)
print(fib(30), "\n")
// Faster recursive (with tail-call optimization!)
fibrec(n, prev, curr) = n <= 0 ? curr : fibrec(n-1, prev+curr, prev)
fib(n) = fibrec(n+1, 1, 0)
print(fib(50), "\n")
文档
请参阅 DOCUMENTATION.md
构建
(在 x64 Linux 上使用 rust-nightly 和 gcc-4.8 进行了测试,在其他架构上的效果可能会有所不同)
只需这样做
cargo build --release
许可协议
GPLv3 许可协议
依赖项
约 6-8MB
约 155K SLoC