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编程语言

Download history 2/week @ 2024-05-01 830/week @ 2024-05-15 423/week @ 2024-05-22 166/week @ 2024-05-29 51/week @ 2024-06-05 84/week @ 2024-06-12 208/week @ 2024-06-19 145/week @ 2024-06-26 87/week @ 2024-07-03 10/week @ 2024-07-10 83/week @ 2024-07-17 36/week @ 2024-07-24 128/week @ 2024-07-31 103/week @ 2024-08-07 280/week @ 2024-08-14

576 每月下载量

MIT 许可证

435KB
12K SLoC

Calcit 脚本语言

语义上是 ClojureScript 的方言。使用 Rust 构建。编译为 JavaScript ES 模块。

浏览示例 或尝试在线 WASM 版本

核心设计

  • 解释器在 Rust 上运行,可使用 Rust FFI 扩展
  • 持久化数据结构
  • 结构化编辑器(使用基于缩进的语法作为后备)
  • Lisp 宏,函数式风格
  • 编译为 JavaScript ES 模块,JavaScript 互操作
  • 热代码交换友好

安装 GitHub 发布

使用 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-fncompact.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.cirrucompact.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

其他工具

一些资源

许可证

MIT

依赖项

~4–15MB
~124K SLoC