cluaupp 1.5.2 → 2.0.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +29 -41
  3. package/api/generated/bench-latest.json +43 -21
  4. package/api/generated/lsp-index.json +1 -1
  5. package/api/manifests/roblox-target.manifest.json +5 -5
  6. package/api/normalized/roblox-target.profile.json +8729 -267
  7. package/api/roblox/luau-builtins.d.luau +185 -0
  8. package/api/roblox/surface.json +1 -0
  9. package/api/roblox-api.lock.json +11 -2
  10. package/bin/cluaupp.js +38 -0
  11. package/editors/vscode/README.md +1 -1
  12. package/editors/vscode/package.json +50 -15
  13. package/editors/vscode/snippets/flare.json +1 -1
  14. package/editors/vscode/snippets/hive.json +1 -1
  15. package/editors/vscode/syntaxes/clpp.tmLanguage.json +211 -0
  16. package/examples/README.md +9 -9
  17. package/examples/game/cluaupp.config.json +2 -2
  18. package/examples/game/default.project.json +4 -15
  19. package/examples/game/out/ReplicatedStorage/Shared/GameInfo.luau +8 -0
  20. package/examples/game/out/ReplicatedStorage/Shared/GameInfo.luau.map.json +13 -0
  21. package/examples/game/out/ServerScriptService/Leaderstats.server.luau +26 -0
  22. package/examples/game/out/ServerScriptService/Leaderstats.server.luau.map.json +13 -0
  23. package/examples/game/out/ServerScriptService/Main.server.luau +15 -0
  24. package/examples/game/out/ServerScriptService/Main.server.luau.map.json +13 -0
  25. package/examples/game/out/StarterPlayer/StarterPlayerScripts/Main.client.luau +10 -0
  26. package/examples/game/out/StarterPlayer/StarterPlayerScripts/Main.client.luau.map.json +13 -0
  27. package/examples/game/src/ReplicatedStorage/Shared/GameInfo.clp +1 -0
  28. package/examples/game/src/ServerScriptService/Leaderstats.server.clp +18 -0
  29. package/examples/game/src/ServerScriptService/Main.server.clp +9 -0
  30. package/examples/game/src/StarterPlayer/StarterPlayerScripts/Main.client.clp +4 -0
  31. package/generated/api/build-profile.js +1 -1
  32. package/generated/api/loader.js +2 -2
  33. package/generated/api/surface/build.js +328 -0
  34. package/generated/api/surface/luau-defs.js +595 -0
  35. package/generated/api/surface/model.js +8 -0
  36. package/generated/api-cli.js +2 -2
  37. package/generated/cli.js +18 -17
  38. package/generated/clpp/contract.js +6 -3
  39. package/generated/clpp/handshake.js +36 -0
  40. package/generated/clpp/modules.js +20 -9
  41. package/generated/clpp/runner.js +62 -31
  42. package/generated/compile.js +18 -1
  43. package/generated/compiler/ast.js +3 -0
  44. package/generated/compiler/checker/calls.js +999 -0
  45. package/generated/compiler/checker/checker.js +1215 -0
  46. package/generated/compiler/checker/exprs.js +791 -0
  47. package/generated/compiler/checker/flow.js +168 -0
  48. package/generated/compiler/checker/members.js +763 -0
  49. package/generated/compiler/checker/statements.js +792 -0
  50. package/generated/compiler/checker/symbols.js +90 -0
  51. package/generated/compiler/checker/typeops.js +348 -0
  52. package/generated/compiler/checker/yields.js +115 -0
  53. package/generated/compiler/diagnostics.js +138 -0
  54. package/generated/compiler/emit/emitter.js +2356 -0
  55. package/generated/compiler/emit/luau-types.js +137 -0
  56. package/generated/compiler/emit/names.js +130 -0
  57. package/generated/compiler/emit/runtime.js +432 -0
  58. package/generated/compiler/lexer.js +403 -0
  59. package/generated/compiler/parser.js +1881 -0
  60. package/generated/compiler/project.js +332 -0
  61. package/generated/compiler/roblox/api.js +388 -0
  62. package/generated/compiler/roblox/context.js +100 -0
  63. package/generated/compiler/source.js +59 -0
  64. package/generated/compiler/stdlib.js +232 -0
  65. package/generated/compiler/types.js +250 -0
  66. package/generated/intellisense.js +1 -15
  67. package/generated/lsp.js +1 -1
  68. package/generated/target/build-cache.js +4 -4
  69. package/generated/target/datamodel-generate.js +12 -0
  70. package/generated/target/gen-rojo-tree.js +15 -0
  71. package/generated/target/source-map.js +61 -8
  72. package/generated/target/studio-bridge.js +1 -0
  73. package/generated/utils/project.js +104 -31
  74. package/include/README.md +5 -0
  75. package/native/bin/.gitkeep +1 -0
  76. package/package.json +17 -6
  77. package/plugins/CluauppNav/Plugin.luau +28 -4
  78. package/rust/cluaupp/Cargo.lock +795 -0
  79. package/rust/cluaupp/Cargo.toml +17 -0
  80. package/rust/cluaupp/src/main.rs +717 -0
  81. package/scripts/postinstall-native.js +56 -0
  82. package/skills/README.md +3 -3
  83. package/skills/clpp-hive-flare/SKILL.md +30 -26
  84. package/skills/clpp-language/SKILL.md +67 -74
  85. package/skills/clpp-language/compiler.md +24 -36
  86. package/skills/clpp-style/SKILL.md +31 -44
  87. package/src/api/build-profile.ts +1 -1
  88. package/src/api/loader.ts +2 -2
  89. package/src/api/surface/build.ts +374 -0
  90. package/src/api/surface/luau-defs.ts +635 -0
  91. package/src/api/surface/model.ts +96 -0
  92. package/src/api-cli.ts +2 -2
  93. package/src/cli.ts +19 -18
  94. package/src/clpp/contract.ts +20 -3
  95. package/src/clpp/handshake.ts +25 -0
  96. package/src/clpp/modules.ts +17 -10
  97. package/src/clpp/runner.ts +52 -34
  98. package/src/compile.ts +20 -2
  99. package/src/compiler/ast.ts +336 -0
  100. package/src/compiler/checker/calls.ts +1025 -0
  101. package/src/compiler/checker/checker.ts +1352 -0
  102. package/src/compiler/checker/exprs.ts +805 -0
  103. package/src/compiler/checker/flow.ts +174 -0
  104. package/src/compiler/checker/members.ts +793 -0
  105. package/src/compiler/checker/statements.ts +802 -0
  106. package/src/compiler/checker/symbols.ts +219 -0
  107. package/src/compiler/checker/typeops.ts +355 -0
  108. package/src/compiler/checker/yields.ts +120 -0
  109. package/src/compiler/diagnostics.ts +163 -0
  110. package/src/compiler/emit/emitter.ts +2486 -0
  111. package/src/compiler/emit/luau-types.ts +143 -0
  112. package/src/compiler/emit/names.ts +130 -0
  113. package/src/compiler/emit/runtime.ts +438 -0
  114. package/src/compiler/lexer.ts +444 -0
  115. package/src/compiler/parser.ts +1943 -0
  116. package/src/compiler/project.ts +354 -0
  117. package/src/compiler/roblox/api.ts +408 -0
  118. package/src/compiler/roblox/context.ts +108 -0
  119. package/src/compiler/source.ts +67 -0
  120. package/src/compiler/stdlib.ts +256 -0
  121. package/src/compiler/types.ts +313 -0
  122. package/src/intellisense.ts +1 -13
  123. package/src/lsp.ts +1 -1
  124. package/src/target/build-cache.ts +5 -8
  125. package/src/target/datamodel-generate.ts +12 -1
  126. package/src/target/gen-rojo-tree.ts +15 -0
  127. package/src/target/source-map.ts +65 -27
  128. package/src/target/studio-bridge.ts +3 -0
  129. package/src/types.ts +3 -0
  130. package/src/utils/project.ts +99 -37
  131. package/templates/README.md +7 -0
  132. package/templates/{game → game-modern}/cluaupp.config.json +2 -2
  133. package/templates/{game → game-modern}/package.json +1 -2
  134. package/templates/game-modern/rokit.toml +2 -0
  135. package/templates/game-modern/src/ReplicatedStorage/Shared/GameInfo.clp +1 -0
  136. package/templates/game-modern/src/ServerScriptService/Handlers/Guard.server.clp +4 -0
  137. package/templates/game-modern/src/ServerScriptService/Main.server.clp +8 -0
  138. package/templates/game-modern/src/StarterPlayer/StarterPlayerScripts/Main.client.clp +4 -0
  139. package/examples/game/out/ReplicatedStorage/Shared/Constants/Datas/TemplateData.luau +0 -29
  140. package/examples/game/out/ReplicatedStorage/Shared/Constants/Datas/TemplateData.luau.map.json +0 -13
  141. package/examples/game/out/ReplicatedStorage/Shared/Net/Net.luau +0 -83
  142. package/examples/game/out/ReplicatedStorage/Shared/Net/Net.luau.map.json +0 -13
  143. package/examples/game/out/ServerScriptService/Boot/DataBoot.server.luau +0 -18
  144. package/examples/game/out/ServerScriptService/Boot/DataBoot.server.luau.map.json +0 -13
  145. package/examples/game/out/ServerScriptService/Configuration/ServerConfig.luau +0 -14
  146. package/examples/game/out/ServerScriptService/Configuration/ServerConfig.luau.map.json +0 -13
  147. package/examples/game/out/ServerScriptService/Handlers/Guard.server.luau +0 -15
  148. package/examples/game/out/ServerScriptService/Handlers/Guard.server.luau.map.json +0 -13
  149. package/examples/game/out/ServerScriptService/Handlers/PlayerHandler.server.luau +0 -50
  150. package/examples/game/out/ServerScriptService/Handlers/PlayerHandler.server.luau.map.json +0 -13
  151. package/examples/game/out/StarterPlayer/StarterCharacterScripts/Character/CharacterReady.client.luau +0 -12
  152. package/examples/game/out/StarterPlayer/StarterCharacterScripts/Character/CharacterReady.client.luau.map.json +0 -13
  153. package/examples/game/out/StarterPlayer/StarterPlayerScripts/Controllers/DataController.client.luau +0 -16
  154. package/examples/game/out/StarterPlayer/StarterPlayerScripts/Controllers/DataController.client.luau.map.json +0 -13
  155. package/examples/game/src/Client/Controllers/DataController.client.clpp +0 -7
  156. package/examples/game/src/Client/Main.client.clpp +0 -4
  157. package/examples/game/src/Declarations/Net.flare +0 -5
  158. package/examples/game/src/Include/GameTypes.clh +0 -40
  159. package/examples/game/src/Modules/Core/Guard.server.clpp +0 -7
  160. package/examples/game/src/Modules/Core/PlayerHandler.server.clpp +0 -23
  161. package/examples/game/src/Server/Boot/DataBoot.server.clpp +0 -13
  162. package/examples/game/src/Server/Main.server.clpp +0 -4
  163. package/templates/game/.clangd +0 -25
  164. package/templates/game/.vscode/extensions.json +0 -8
  165. package/templates/game/.vscode/settings.json +0 -17
  166. package/templates/game/Packages/.gitkeep +0 -0
  167. package/templates/game/compile_flags.txt +0 -6
  168. package/templates/game/default.project.json +0 -41
  169. package/templates/game/include/clpp/datatypes.clh +0 -575
  170. package/templates/game/include/clpp/generated/enums.clh +0 -4920
  171. package/templates/game/include/clpp/generated/instances.clh +0 -87182
  172. package/templates/game/include/clpp/libs/arrayindexer.clh +0 -12
  173. package/templates/game/include/clpp/libs/axiom.clh +0 -154
  174. package/templates/game/include/clpp/libs/bloom.clh +0 -58
  175. package/templates/game/include/clpp/libs/coil.clh +0 -37
  176. package/templates/game/include/clpp/libs/crest.clh +0 -22
  177. package/templates/game/include/clpp/libs/echo.clh +0 -52
  178. package/templates/game/include/clpp/libs/ember.clh +0 -17
  179. package/templates/game/include/clpp/libs/flare.clh +0 -65
  180. package/templates/game/include/clpp/libs/gleam.clh +0 -111
  181. package/templates/game/include/clpp/libs/guide.clh +0 -42
  182. package/templates/game/include/clpp/libs/helm.clh +0 -31
  183. package/templates/game/include/clpp/libs/hive.clh +0 -20
  184. package/templates/game/include/clpp/libs/keep.clh +0 -158
  185. package/templates/game/include/clpp/libs/lens.clh +0 -24
  186. package/templates/game/include/clpp/libs/mint.clh +0 -28
  187. package/templates/game/include/clpp/libs/net.clh +0 -31
  188. package/templates/game/include/clpp/libs/occlude.clh +0 -15
  189. package/templates/game/include/clpp/libs/pin.clh +0 -28
  190. package/templates/game/include/clpp/libs/promise.clh +0 -24
  191. package/templates/game/include/clpp/libs/roster.clh +0 -123
  192. package/templates/game/include/clpp/libs/shift.clh +0 -22
  193. package/templates/game/include/clpp/libs/spark.clh +0 -28
  194. package/templates/game/include/clpp/libs/stage.clh +0 -23
  195. package/templates/game/include/clpp/libs/sweep.clh +0 -23
  196. package/templates/game/include/clpp/libs/trace.clh +0 -18
  197. package/templates/game/include/clpp/libs/ward.clh +0 -19
  198. package/templates/game/include/clpp/libs.clh +0 -31
  199. package/templates/game/include/clpp/roblox.clh +0 -41
  200. package/templates/game/rokit.toml +0 -5
  201. package/templates/game/src/Client/Controllers/DataController.client.clpp +0 -7
  202. package/templates/game/src/Client/Main.client.clpp +0 -4
  203. package/templates/game/src/Declarations/Net.flare +0 -5
  204. package/templates/game/src/Include/GameTypes.clh +0 -40
  205. package/templates/game/src/Modules/Core/Guard.server.clpp +0 -7
  206. package/templates/game/src/Modules/Core/PlayerHandler.server.clpp +0 -24
  207. package/templates/game/src/Server/Boot/DataBoot.server.clpp +0 -13
  208. package/templates/game/src/Server/Main.server.clpp +0 -4
  209. package/templates/game/stylua.toml +0 -9
  210. package/templates/game/wally.toml +0 -12
package/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ - Modern init/build and DataModel no longer copy legacy .clh headers; schema headers are emitted only on the legacy path. Existing projects cannot be overwritten by init. Scaffold pins its local CLI version.
6
+ - Schema LSP uses explicit stdio by default and accepts --stdio. Editor installation no longer invokes unsupported clpp install/setup commands.
7
+ - language describes the experimental .clp target; external compiler manifest probing requires --legacy. Modern typed schema projections remain incomplete.
8
+
9
+
10
+ - **Init template only `game-modern`** — removed `templates/game` from the package; legacy `.clpp` scaffold lives under `test/fixtures/legacy-clpp-game` for tests. `game-modern` adds `Handlers/Guard.server.clp` (Ward boot).
11
+ - **Docs site — CL++ 0.10 Roblox target** — Start, Language, Architecture/CLI, Examples, and all CluauppLibs handbook pages rewritten for `.clp`, `link`, top-level scripts, `@server`/`@client`, and `<<` comments. Site grammar aliases `clp` only; migration page documents legacy `.clpp`/`.clh` as deprecated.
12
+ - **CL++ agent skills** — `skills/clpp-language`, `clpp-style`, `clpp-hive-flare` teach link-only modules and no `void init()` on Roblox; `cluaupp init` still copies them to `.cursor/skills/`.
5
13
  - **GetService ownership** — `GetService<T>()` is Cluaupp Roblox Target (registry + `CLUAU_SVC001` + Context Safety + header stubs + postprocess normalize). CL++ only forwards a generic call. New `src/target/get-service.ts`; wired into compile + doctor.
6
14
  - **Named `import` host support** — Parse/resolve `import { } from` alongside `#include`; Rojo mapper strips `.clh`/`.clpp`; authority + project graph; game-rooted require rewrite for all services; incremental cache fingerprints imported deps; CompileArtifact `nativeHints`/`layoutHints`/`requires`/`optimize` wired through `clpp api compile`.
7
15
  - **CL++ 0.8 floor** — `MIN_CLPP_VERSION` raised to **0.8.0** (refuse older `clpp`). Templates/examples use `import { PlayerTemplate } from` for app modules; angle `#include <clpp/…>` stays for prelude. Named `import` host support, `nativeHints`/`layoutHints`/`requires`, docs pages Option/Result + Cluaupp host.
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  <img src="docs/public/assets/logo.png" alt="Cluaupp" width="160">
5
5
  </p>
6
6
 
7
- **CL++ games on Roblox.** You write [CL++](https://kartzrbx.github.io/CLPP/). Cluaupp runs `clpp`, wires Rojo, and copies CluauppLibs.
7
+ **CL++ games on Roblox.** You write [CL++](https://kartzrbx.github.io/CLPP/) in `.clp` files. Cluaupp checks Roblox APIs, emits Luau, wires Rojo, and copies CluauppLibs.
8
8
 
9
9
  [CL++ language](https://kartzrbx.github.io/CLPP/) · [Docs](https://kartzrbx.github.io/Cluaupp/) · [Why Cluaupp](https://kartzrbx.github.io/Cluaupp/why-cluaupp/) · [Benchmarks](https://kartzrbx.github.io/Cluaupp/benchmarks/) · [Roadmap](https://kartzrbx.github.io/Cluaupp/roadmap/)
10
10
 
@@ -12,57 +12,42 @@
12
12
  [![Node.js](https://img.shields.io/node/v/cluaupp.svg)](https://nodejs.org)
13
13
  [![License: MIT](https://img.shields.io/badge/license-MIT-white.svg)](LICENSE)
14
14
 
15
- Cluaupp is the **Roblox project host** for [CL++](https://kartzrbx.github.io/CLPP/) — not the language compiler and not “roblox-ts with different syntax.” It turns **CL++ + project semantics** into a **validated Roblox project**, then emits Luau. [KartzRbx/CLPP](https://github.com/KartzRbx/CLPP) owns language, checker, Language Server (`clpp setup`), and codegen. Cluaupp owns Rojo/DataModel wiring, Context Safety, Flare remotes, API Registry (`cluaupp api generate`), and CluauppLibs. Optional Luau IntelliSense: **luau-lsp** + Rojo. Never `CL++ → roblox-ts → Luau`. Architecture: [`docs/.../product-pillars.md`](docs/src/content/docs/architecture/product-pillars.md).
15
+ CL++ 0.10 is an independent language with a bytecode VM. Its `clpp` executable does not emit Luau or expose the old `clpp api compile` command. The current experimental Roblox compiler in `src/compiler/` parses `.clp`, checks Roblox APIs and project links, and emits Luau. It is a transitional implementation: the shared-frontend design requires CL++ to provide a versioned Roblox Luau backend. See the [specification review](docs/src/content/docs/architecture/clpp-target-contract.md) for verified semantics and migration gates. [KartzRbx/CLPP](https://github.com/KartzRbx/CLPP) remains the language and desktop VM; Cluaupp owns the Roblox target, Rojo/DataModel wiring, Flare remotes, API Registry, and CluauppLibs. The older `.clpp`/`.clh` pipeline remains available only with a compatible legacy Luau compiler.
16
16
 
17
17
  Native PascalCase CluauppLibs: **Flare** net, **Sweep** zelador, **Spark** signal, **Keep** data, **Mint** numbers, **Axiom** math, **Roster** tables, **Gleam** UI, **Bloom** effects, **Lens** debug UI, **Crest** topbar, **Pin** billboard, **Stage** viewport 3D, **Coil** spring, **Helm** commands, **Shift** states, **Hive** ECS, **Ward** anti-cheat, **Ember** VFX, **Echo** replication, **Guide** tutorials, **Trace** pretty-print. Schemas pack u8 ids / ColorSequence / tables — never JSON on the hot path. Name map: [`runtime/SOURCES.md`](runtime/SOURCES.md).
18
18
 
19
- ```clpp
20
- #include <clpp/roblox.clh>
19
+ ```clp
20
+ link @clpp.roblox;
21
21
 
22
- struct HelloServer {
23
- void Greet(Player player);
24
- };
25
-
26
- void HelloServer::Greet(Player player) {
22
+ Players players = GetService<Players>();
23
+ players.PlayerAdded ~> func (Player player) {
27
24
  post("Player name: " .: player.Name);
28
- }
29
-
30
- void init() {
31
- HelloServer hello;
32
- Players players = GetService<Players>();
33
-
34
- for (Player player in players.GetPlayers()) {
35
- hello.Greet(player);
36
- }
37
-
38
- players.PlayerAdded~>Connect(func (Player playerEntered) {
39
- hello.Greet(playerEntered);
40
- });
41
- }
25
+ };
42
26
  ```
43
27
 
44
28
  ## Install
45
29
 
46
- 1. [Node.js](https://nodejs.org/) 18+
47
- 2. [Rojo](https://rojo.space/) **7.7.0**
48
- 3. **`clpp` 0.8.0+** on PATH from [CL++](https://github.com/KartzRbx/CLPP/releases) (`clpp-setup.exe` or `clpp setup`; host **refuses** older compilers). Do not leave a cargo `clpp 0.1.0` first on PATH.
30
+ 1. [Node.js](https://nodejs.org/) 22.12+
31
+ 2. [Rojo](https://rojo.space/) **>=7.7.0 <8.0.0**. Templates pin a reproducible version in rokit.toml.
32
+ 3. CL++ 0.10 and its VS Code extension are optional for standalone CL++ work. Cluaupp compiles Roblox `.clp` projects itself.
49
33
 
50
34
  ```bash
51
- npm install -g cluaupp@latest
52
- clpp setup
53
- npx cluaupp init my-game
35
+ npm install -g cluaupp@next
36
+ cluaupp init my-game
54
37
  cd my-game
55
38
  rokit install
56
- cluaupp build
39
+ npm install
40
+ npm run build
57
41
  rojo serve
58
42
  ```
59
43
 
60
44
  | Source | Output | Rojo |
61
45
  | --- | --- | --- |
62
- | `*.server.clpp` | `*.server.luau` | Script |
63
- | `*.client.clpp` | `*.client.luau` | LocalScript |
64
- | `*.clp` / untagged `.clpp` | `*.luau` | ModuleScript |
65
- | `*.clh` | `*.luau` | ModuleScript |
46
+ | `*.server.clp` | `*.server.luau` | Script |
47
+ | `*.client.clp` | `*.client.luau` | LocalScript |
48
+ | untagged `*.clp` | `*.luau` | ModuleScript |
49
+
50
+ The legacy `.clpp`/`.clh` adapter requires `>=0.8.0 <0.9.0` and `contractVersion: 1` in `api manifest`. A version string alone is insufficient; the installed 0.10 VM is incompatible. This adapter policy requires a matching compiler and does not claim that every 0.8 release implements it.
66
51
 
67
52
  ## CLI
68
53
 
@@ -70,22 +55,25 @@ rojo serve
70
55
  cluaupp init [folder]
71
56
  cluaupp build [folder]
72
57
  cluaupp watch [folder]
73
- cluaupp language # clpp api manifest
74
- cluaupp intellisense # schema highlighting (.flare .hive …) + clpp setup (CL++ LSP)
58
+ cluaupp intellisense # schema highlighting (.flare .hive …)
75
59
  cluaupp api generate # Registry → headers + lsp-index.json + lock
76
60
  cluaupp target info # schemaVersion, class/enum counts
77
61
  cluaupp api aux-diff <p> # optional coverage vs @rbxts/types / LuauTypes
78
62
  ```
79
63
 
80
- **IntelliSense:** CL++ → `clpp` Language Server + Cluaupp `lsp-index.json`. Schemas (`.flare`/…) → Cluaupp editor extension. Emitted Luau → luau-lsp (optional). Cluaupp does not ship a Roblox class IntelliSense engine.
81
-
82
- `clpp` missing? Set `CLPP` / `CLPP_PATH` or install [CL++ 0.8.0+](https://github.com/KartzRbx/CLPP/releases).
64
+ **IntelliSense:** The CL++ 0.10 editor extension covers the independent language. Cluaupp's Roblox checker runs during build; schema files use the Cluaupp editor extension. Emitted Luau can use luau-lsp.
83
65
 
84
66
  ## Language
85
67
 
86
- Course and reference: **[kartzrbx.github.io/CLPP](https://kartzrbx.github.io/CLPP/)**. Write `Player player` (never `Player*`). Default listen is `~>Connect`. Fire with `.Fire`. `@this` only inside `Class::Method`.
68
+ Course and reference: **[kartzrbx.github.io/CLPP](https://kartzrbx.github.io/CLPP/)**. Roblox code adds `link @clpp.roblox;` and service API checks in Cluaupp. Use `.server.clp` and `.client.clp` file tags for script context.
69
+
70
+ The new project scaffold is in [`templates/game-modern`](templates/game-modern). Existing `.clpp` projects can still use the legacy compiler path during migration. Toolchain docs (Starlight): `npm run site:dev`.
71
+
72
+ ## Preparing a beta release
73
+
74
+ The maintainer gate runs `npm run setup:runtime`, regenerates the API projections and verifies their lock before tests. It downloads the official Luau 0.741 interpreter, analyzer and compiler into the ignored `.cluaupp/toolchains` directory and verifies pinned SHA-256 checksums. Rokit installs the interpreter but does not expose the complete analyzer/compiler bundle required by these tests. Runtime test tools are not consumer dependencies.
87
75
 
88
- Exclusive CL++ (`guard`, `match`, `signal`, `observable`, `.:`, `::`, Fusion) is compiled by `clpp`. Samples: [`examples/game`](examples/game). Old C++ games: [migration](docs/src/content/docs/migration.md). Toolchain docs (Starlight): `npm run site:dev`.
76
+ Run `npm run prepublishOnly` to check a release without publishing. Publish an unused prerelease version with `npm publish --tag next`. The experimental compiler and remaining validation limits are described in the specification review above.
89
77
 
90
78
  ## License
91
79
 
@@ -1,5 +1,5 @@
1
1
  {
2
- "measuredAt": "2026-09-22T13:24:47.067Z",
2
+ "measuredAt": "2026-10-02T11:17:54.881Z",
3
3
  "node": "v24.20.0",
4
4
  "platform": "win32",
5
5
  "registry": {
@@ -11,29 +11,51 @@
11
11
  "methods": 3282,
12
12
  "events": 1092,
13
13
  "threadSafety": 8462,
14
- "buildMs": 352,
15
- "regMs": 39,
16
- "lspMs": 306,
17
- "totalMs": 697
14
+ "buildMs": 152,
15
+ "regMs": 19,
16
+ "lspMs": 121,
17
+ "totalMs": 291
18
18
  },
19
19
  "gameBuild": {
20
- "cold": {
21
- "ms": 3719,
20
+ "sources": 3,
21
+ "first": {
22
+ "ms": 816,
22
23
  "status": 0,
23
- "cacheHit": null,
24
- "parallel": "8"
24
+ "generated": 3,
25
+ "error": null
25
26
  },
26
- "fill": {
27
- "ms": 3477,
28
- "status": 0,
29
- "cacheHit": null,
30
- "parallel": "8"
31
- },
32
- "warm": {
33
- "ms": 1506,
34
- "status": 0,
35
- "cacheHit": "7/7",
36
- "parallel": null
37
- }
27
+ "repeats": [
28
+ {
29
+ "ms": 721,
30
+ "status": 0,
31
+ "generated": 0,
32
+ "error": null
33
+ },
34
+ {
35
+ "ms": 683,
36
+ "status": 0,
37
+ "generated": 0,
38
+ "error": null
39
+ },
40
+ {
41
+ "ms": 698,
42
+ "status": 0,
43
+ "generated": 0,
44
+ "error": null
45
+ },
46
+ {
47
+ "ms": 664,
48
+ "status": 0,
49
+ "generated": 0,
50
+ "error": null
51
+ },
52
+ {
53
+ "ms": 733,
54
+ "status": 0,
55
+ "generated": 0,
56
+ "error": null
57
+ }
58
+ ],
59
+ "medianMs": 698
38
60
  }
39
61
  }