174 个版本
0.9.4 | 2024 年 8 月 16 日 |
---|---|
0.9.0 | 2024 年 7 月 22 日 |
0.8.45 | 2024 年 3 月 25 日 |
0.8.14 | 2023 年 12 月 2 日 |
0.5.28 | 2022 年 3 月 24 日 |
76 在 编程语言 中
576 每月下载量
435KB
12K SLoC
Calcit 脚本语言
语义上是 ClojureScript 的方言。使用 Rust 构建。编译为 JavaScript ES 模块。
核心设计
- 解释器在 Rust 上运行,可使用 Rust FFI 扩展
- 持久化数据结构
- 结构化编辑器(使用基于缩进的语法作为后备)
- Lisp 宏,函数式风格
- 编译为 JavaScript ES 模块,JavaScript 互操作
- 热代码交换友好
安装
使用 Rust 构建 和 安装
# get Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# get Calcit
cargo install calcit
安装了 3 个二进制文件
calcit
,运行时和 JavaScript 编译器caps
,用于下载deps.cirru
中声明的依赖项bundle_calcit
,如果您不想使用 Calcit 编辑器,则捆绑代码
要在 GitHub Actions 中使用 Calcit,请尝试 setup-cr。
用法
可评估的代码片段
cr eval 'range 100'
多行代码片段
cr eval '
println "|a demo"
->
range 100
map $ fn (x)
* x x
'
使用 compact.cirru 运行
cr compact.cirru -1 # run only once
cr compact.cirru # watch mode enabled by default
默认情况下,Calcit 读取 :init-fn
和 :reload-fn
在 compact.cirru
配置中。您还可以指定函数,
cr compact.cirru --init-fn='app.main/main!' --reload-fn='app.main/reload!'
并在 compact.cirru
中配置 :entries
cr compact.cirru --entry server
JavaScript 代码生成
它编译为 JavaScript 并以一致的语义运行。但是可能需要大量的 JavaScript 互操作。
cr compact.cirru js # compile to js
cr compact.cirru js --emit-path=out/ # compile to js and save in `out/`
默认情况下,会生成 js 代码到 js-out/
。您需要使用 Vite 或 Node 从入口文件运行它。
import { main_$x_, reload_$x_ } from "./js-out/app.main.mjs";
main_$x_();
Calcit 编辑器 & 打包器
安装 Calcit 编辑器 并运行 ct
来启动编辑器服务器,保存时将写入 compact.cirru
和 .compact-inc.cirru
。尝试通过克隆 Calcit Workflow 来启动示例。
在 Minimal Calcit 中阅读更多,了解如何使用纯文本编辑器编写 Calcit 代码。
在 Respo Calcit Workflow 中阅读更多,了解如何使用 Respo 创建 MVC 网页。
模块
deps.cirru
声明需要下载的依赖项,这些依赖项对应于 GitHub 上的存储库。指定分支或标签
{}
:dependencies $ {}
|calcit-lang/memof |0.0.11
|calcit-lang/lilac |main
运行 caps
来下载。源代码下载到 ~/.config/calcit/modules/
。如果模块包含 build.sh
,则通常用于编译 Rust dylibs。
要加载模块,请在 calcit.cirru
和 compact.cirru
中的 :modules
配置中指定路径。
:configs $ {}
:modules $ [] |memof/compact.cirru |lilac/
:modules
字段中定义的路径仅从 ~/.config/calcit/modules/
作为文件加载,即 ~/.config/calcit/modules/memof/compact.cirru
。
以 /
结尾的模块会自动追加 compact.cirru
后缀,因为它默认的文件名。
开发
我使用以下命令运行本地示例
# run tests in Rust
cargo run --bin cr -- calcit/test.cirru -1
# run tests in Node.js
cargo run --bin cr -- calcit/test.cirru -1 js && yarn try-js
# run snippet
cargo run --bin cr -- eval 'range 100'
cr compact.cirru -1 ir # compiles intermediate representation into program-ir.cirru
其他工具
一些资源
- 开发日志 https://github.com/calcit-lang/calcit/discussions
- 视频记录 https://space.bilibili.com/14227306/channel/seriesdetail?sid=281171
许可证
MIT
依赖项
~4–15MB
~124K SLoC