npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@calcit/procs

v0.22.1

Published

> A typed functional language for interactive and real-time applications. Built with Rust and compiling to JavaScript ES Modules.

Readme

Calcit Programming Language

A typed functional language for interactive and real-time applications. Built with Rust and compiling to JavaScript ES Modules.

  • Home https://calcit-lang.org/
  • API Doc https://apis.calcit-lang.org/
  • Guidebook https://guide.calcit-lang.org/

Browse examples or also try WASM version online.

Core design:

  • Interpreter runs on Rust, extensible with Rust FFI
  • Persistent Data Structure
  • Indentation-based Cirru syntax, friendly to plain text editing
  • Code-as-data macros and functional style
  • Nominal structs/enums, traits, methods, Option/Result, and static analysis
  • Compiles to JavaScript in ES Modules, JavaScript Interop
  • Hot code swapping friendly

Current direction:

  • 编译后端的新增投入集中在 WebAssembly,并以共享 Calcit 语义用例逐步扩大可编译范围
  • calcit.cirru is the canonical source snapshot; retired compact.cirru inputs receive migration guidance
  • CLI-first development with the calcit runtime and the independently released caps package manager, designed to work well with AI agents in terminal workflows
  • Better CLI editing and validation for CI, docs lookup, module management, and incremental updates
  • Consistent support for real-time web applications: typed WebSocket messages, deterministic state updates, diff/patch synchronization, acknowledgement, and resynchronization

Repository Boundaries

Calcit keeps language semantics, runtime behavior, backend lowering, the calcit CLI/Agent interface, and versioned language documentation in this repository. Products with independent dependencies and release cadence are maintained separately or tracked for extraction:

| Module | Status and ownership | | --- | --- | | calcit-bindgen | 独立的实验性生成器;负责确定性的 Rust/Calcit/TypeScript/WIT generation、manifest、compatibility diff 与 stale check。已覆盖 Struct record、闭合单态 Enum 与明确宽度数值;0.1.7 把 Component Interface IR v4、async export/import、作用域化有界字节流与有界 WASI HTTP client 打包为可运行 Component,并生成读取严格 Cirru EDN 参数/结果的默认拒绝 Wasmtime host;支持经 preopen 授权的文件参数/结果与稳定业务退出码,真实 Cargo 运行后仍可 check 与安全再生成。resource、HTTP service 等后续能力继续按独立 milestone 推进。core 只保留 Interface IR export/schema/conformance;已完成的 generator 拆分由 #544 追踪。 | | calcit-native-ffi | Independent production shared ABI/helper crate for native modules; canonical ABI ownership is tracked in calcit-native-ffi#7. | | caps | Independent production package manager released as the calcit-caps crate; the completed core cutover is tracked in #555. |

See #549 for the bilingual repository-boundary roadmap. Calcit has no near-term LSP plan, so analysis and Agent CLI capabilities remain in this repository and release unit rather than being split for a hypothetical consumer.

Install GitHub Release

Build and install with Rust:

# get Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# install the independently versioned user-facing tools
cargo install calcit --bin calcit
cargo install calcit-caps

Installed binaries:

  • calcit, the runtime and JS compiler
  • caps, for downloading dependencies declared in deps.cirru

When developing Calcit core from source, install its runtime locally and install caps from its own release:

cargo install --path . --bin calcit
cargo install calcit-caps

For new GitHub Actions workflows, use setup-calcit@v1. It installs the Calcit version declared in deps.cirru, installs a separately versioned stable caps release, and creates a lightweight cr -> calcit compatibility link for existing workflow commands. For pre-rename Calcit releases it falls back to cr and exposes the equivalent calcit command. Local Calcit releases no longer include caps; migrate local scripts directly instead of relying on a wrapper. Existing setup-cr workflow tags remain supported.

Quick Start

Evaluate snippets:

calcit eval 'range 100'

calcit eval -- '-> 100 range (map $ \ * % %)'

Run with the canonical runtime snapshot calcit.cirru:

calcit calcit.cirru # run once (default)
calcit # reads calcit.cirru from the current directory

calcit -w # watch mode (explicit flag required)

By default Calcit reads :init-fn and :reload-fn from calcit.cirru :entries.default. You may also specify functions:

calcit --init-fn='app.main/main!' --reload-fn='app.main/reload!'

You may also configure :entries in calcit.cirru:

calcit --entry server

JavaScript codegen

Calcit compiles to JavaScript with consistent semantics. In browser or Node projects, JavaScript interop is still expected.

calcit js # compile to js, also picks `calcit.cirru` by default
calcit js --emit-path=out/ # compile to js and save in `out/`

By default, js code is generated to js-out/. You will need Vite or Node to run it, from an entry file:

import { main_$x_, reload_$x_ } from "./js-out/app.main.mjs";
main_$x_(); // which corresponds to `main!` function in calcit

CLI and Agent Workflow

常规修改先读取紧凑 Agent 契约,再查询、结构化编辑并验证;复杂操作按需读取完整指南。不要把 calcit.cirru Snapshot 当作普通文本直接改写。

Common commands:

calcit docs agents --contract # read the compact mutation contract first
calcit query search 'foo'   # locate code by symbol or string
calcit edit ...             # structured edits for defs, imports, config, modules
calcit js                   # compile once
calcit js -w                # watch mode
caps                         # install/update dependencies from deps.cirru

Calcit Editor is no longer the recommended path for everyday development. If you still need the older editor workflow, see Calcit Editor.

Related examples and workflows:

Modules

deps.cirru declares dependencies that need to download, which correspond to repositories on GitHub. Specify a branch or a tag:

{} (:calcit-version |0.9.11)
  :dependencies $ {} (|calcit-lang/memof |0.0.11) (|calcit-lang/lilac |main)
  :dev-dependencies $ {} (|calcit-lang/calcit-test |0.1.0)

Run caps to resolve the recursive dependency graph and install it. Immutable revisions are stored under ~/.config/calcit/module-caches/, while the current project receives links under .calcit/modules/. Different projects can therefore use different revisions without switching a shared checkout. Existing project module links are the only runtime source for package-style module paths; explicit relative and absolute paths retain their normal direct resolution.

Published SemVer tags are preferred. Branch refs remain supported for development, but caps warns with the resolved commit. When a graph requests several SemVer tags for one repository, the highest requested version is selected and reported.

Root projects install both :dependencies and :dev-dependencies. Recursive resolution only follows :dependencies, so test and maintenance modules declared by a dependency do not leak into consumers. Use caps add --dev <org/repo>@<ref> and caps remove --dev <org/repo> to manage the development group.

:calcit-version helps with version checks and provides hints in CI.

To load modules, use :modules configuration and the runtime snapshot file calcit.cirru:

:entries $ {}
  :default $ {}
    :modules $ [] |memof/calcit.cirru |lilac/

Paths defined in :modules load from the snapshot directory's .calcit/modules/, e.g. .calcit/modules/memof/calcit.cirru. Run caps to materialize or refresh that project-local view.

Modules ending with / are automatically suffixed with calcit.cirru. A module containing only retired compact.cirru is rejected with migration guidance.

Inspect and verify the resolved graph with:

caps tree
caps why calcit-lang/memof
caps status
caps verify
caps verify --toolchain # after yarn install, for JS projects

Development

Local validation commands:

# run tests in Rust
cargo run --bin calcit -- calcit/test.cirru

# run tests in Node.js
cargo run --bin calcit -- calcit/test.cirru js && yarn try-js

# run snippet
cargo run --bin calcit -- eval 'range 100'

# internal compiler/WASM validation when working on this repository
cargo run --bin calcit -- calcit/test.cirru ir
yarn try-wasm

For repository development, the usual validation flow is:

cargo fmt
cargo clippy -- -D warnings
yarn compile
cargo test
yarn check-all

Other tools:

Some resources:

  • Dev Logs https://github.com/calcit-lang/calcit/discussions
  • 视频记录 https://space.bilibili.com/14227306/channel/seriesdetail?sid=281171

License

MIT