CL++ support for Cluaupp
CL++ support for Cluaupp
Section titled “CL++ support for Cluaupp”Cluaupp connects the language to Roblox (Rojo, engine API, project init). CL++ is language-only. This contract lets Cluaupp swap the compile backend without rewriting the transpiler.
Current compiler: 0.7.0. Full CLI upgrade guide: Cluaupp 0.7.0 and Update Cluaupp (pin 0.7.0).
clpp api compile --file src/server/Leaderstats.server.clppecho '{"source":"void init() { post(\"ok\"); }","fileName":"init.server.clpp"}' | clpp api compileclpp api manifestclpp compile file.clpp --jsonclpp build src -o out --jsonCompile output (JSON):
{ "ok": true, "luau": "-- Compiled by CL++ …", "fileName": "init.server.clpp", "outputHint": "init.server.luau", "scriptKind": "server", "isScript": true, "isHeader": false, "rojoClass": "Script", "libraries": []}TypeScript types live in the repository at support/cluaupp.d.ts (GitHub).
Node (Cluaupp)
Section titled “Node (Cluaupp)”const { spawnSync } = require("child_process");
function compileSource(source, fileName, options = {}) { const r = spawnSync("clpp", ["api", "compile"], { input: JSON.stringify({ source, fileName, strict: options.strict ?? null }), encoding: "utf8", }); const artifact = JSON.parse(r.stdout); if (!artifact.ok) { throw new Error(artifact.error || "clpp compile failed"); } return artifact; // { luau, rojoClass, scriptKind, … }}use clpp::{compile_request, CompileRequest};
let art = compile_request(&CompileRequest { source: src.into(), file_name: "boot.server.clpp".into(), strict: Some(true),})?;let luau = art.luau;rojoClass is ready for Rojo (Script / LocalScript / ModuleScript).
Source Cluaupp generates
Section titled “Source Cluaupp generates”Anonymous callbacks in .clpp / .clp must be func (params) { }. func [](…) and []() { } are a compile error. Full handoff: Cluaupp — anonymous callbacks.