# langkit
Langkit is a Rust builder library for creating programming languages with a simple, high-level API.
## Status
This crate is in beta and evolving toward 1.0.0. The public API is intended to be stable, but minor
changes may still happen before the final release.
## Highlights
- Built-in module packs via `lang.lib("base")` (math/io/fs/net/time/http).
- File imports with module namespacing (`import "utils.arc"` → `utils.*`).
- Bytecode cache support and fast rebuilds.
- Simple LSP diagnostics and minimal LSP server.
- Tiny macro helpers: `@include("file")`, `@repeat(n){...}`.
- REPL with history.
## Goals
- Minimal boilerplate for language definition.
- Simple syntax rules with sensible defaults.
- Optional static or dynamic typing.
- Easy integration with Rust crates and FFI.
## Quick Start
```rust
use langkit::{Lang, Typing, Value};
fn main() {
let mut lang = Lang::new();
lang.name("arc");
lang.extension(".arc");
lang.var("let");
lang.mut_kw("var");
lang.assign("=");
lang.typing(Typing::Dynamic);
lang.lib("base");
lang.token("print");
lang.action("print", Box::new(|args| {
let s: Vec<String> = args.iter().map(|a| a.to_string()).collect();
println!("{}", s.join(" "));
Value::Null
}));
lang.run("let x = 5\nprint x").unwrap();
}
```
## Documentation
Run:
```bash
cargo doc --open
```