{"id":42286740,"url":"https://github.com/waddie/klujur","last_synced_at":"2026-01-27T09:18:11.253Z","repository":{"id":325781533,"uuid":"1101856761","full_name":"waddie/klujur","owner":"waddie","description":"A Clojure-ish interpreted programming language","archived":false,"fork":false,"pushed_at":"2025-11-26T11:21:31.000Z","size":1186,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-01T20:35:10.040Z","etag":null,"topics":["clojure","interpreter","rust","slop","work-in-progress"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/waddie.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-22T11:17:53.000Z","updated_at":"2025-11-26T11:21:34.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/waddie/klujur","commit_stats":null,"previous_names":["waddie/klujur"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/waddie/klujur","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waddie%2Fklujur","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waddie%2Fklujur/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waddie%2Fklujur/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waddie%2Fklujur/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/waddie","download_url":"https://codeload.github.com/waddie/klujur/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/waddie%2Fklujur/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28810475,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-27T07:41:26.337Z","status":"ssl_error","status_checked_at":"2026-01-27T07:41:08.776Z","response_time":168,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["clojure","interpreter","rust","slop","work-in-progress"],"created_at":"2026-01-27T09:18:10.415Z","updated_at":"2026-01-27T09:18:11.231Z","avatar_url":"https://github.com/waddie.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Klujur\n\nThis is an LLM coded experiment. I don’t recommend actually using it. I was curious how far you can get prompting Claude Code (mostly Sonnet 4.5, some Opus 4.5) over a weekend to build something complex.\n\nKlujur is an interpreted programming language modelled on [Clojure](https://github.com/clojure/clojure). Klujur is written in Rust and intended to be useful as an embedded scripting language, but also ships with a standalone CLI REPL.\n\n## Demo\n\n![A terminal recording of a non-trivial .cljc file running in both Clojure and Klujur](./demo/klujur.gif)\n\n## Installation\n\n```sh\ncargo xtask install\n```\n\n`cargo` will build and install the `klujur` executable, defaulting to `~/.cargo/bin`.\n\n## Use\n\n```sh\n# Run with rlwrap wrapper\nklj\n# And with the bytecode VM\nklj -b\n\n# Or the unwrapped executable, if rlwrap is unavailable\nklujur\nklujur -b\n```\n\n## Embedding\n\nAdd `klujur-embed` to your `Cargo.toml`:\n\n```toml\n[dependencies]\nklujur-embed = { git = \"https://github.com/waddie/klujur\" }\n```\n\n```rust\nuse klujur_embed::{Engine, KlujurVal, Result};\n\nfn main() -\u003e Result\u003c()\u003e {\n    let mut engine = Engine::new()?;\n\n    // Evaluate code\n    let result = engine.eval(\"(+ 1 2 3)\")?;\n    println!(\"{}\", result); // 6\n\n    // Register native functions\n    engine.register_native(\"greet\", |args: \u0026[KlujurVal]| {\n        let name = match args.first() {\n            Some(KlujurVal::String(s)) =\u003e s.as_ref(),\n            _ =\u003e \"World\",\n        };\n        Ok(KlujurVal::string(format!(\"hello, {}!\", name)))\n    });\n\n    engine.eval(\"(println (greet \\\"Klujur\\\"))\")?; // hello, Klujur!\n    Ok(())\n}\n```\n\n### Using the Bytecode VM\n\nEnable the bytecode compiler for improved performance:\n\n```rust\nuse klujur_embed::{Engine, Result};\n\nfn main() -\u003e Result\u003c()\u003e {\n    let mut engine = Engine::new()?;\n\n    // Enable bytecode compilation mode\n    engine.enable_bytecode_mode();\n\n    // Functions are now compiled to bytecode and executed by a stack-based VM\n    let result = engine.eval(\"((fn [x] (* x x)) 5)\")?;\n    println!(\"{}\", result); // 25\n\n    // Bytecode mode is particularly beneficial for:\n    // - Recursive functions\n    // - Tight loops\n    // - Numerical computation\n    let sum = engine.eval(\"(reduce + (range 10000))\")?;\n    println!(\"{}\", sum); // 49995000\n\n    Ok(())\n}\n```\n\n## Intended conventions\n\n- `.klj` extension, or `:klj` key in `.cljc` files\n- `klj.edn` project files\n\n## License\n\nCopyright © 2025 Tom Waddington\n\nDistributed under the MIT License. See [LICENSE file](./LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaddie%2Fklujur","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwaddie%2Fklujur","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwaddie%2Fklujur/lists"}