Repository navigation
CarbonLuau v0.5.0 — Experimental
Pre-releaseCarbonLuau v0.5.0 — Experimental
This prerelease adds local durable persistence and bounded structured Query to
CarbonLuau's server-side Luau API. It is an experimental release, not a stable
production-support promise. Install the Windows x64 or glibc Linux x64 archive
matching your Rust/Carbon server; do not mix versions of the plugin, native
runtime, compiler worker, or private storage worker.
Persistence
local DataStoreService = game:GetService("DataStoreService")
local Store = DataStoreService:GetDataStore("Players", {
Indexes = {"Coins", "Level"}, -- optional preparation hints
})
task.defer(function()
local Ok, SubmissionError = pcall(function()
Store:SetAsync("123", {Coins = 10, Level = 2}, function(Saved, ErrorCode)
if ErrorCode then
print(`[CarbonLuau:PersistenceExample] Save outcome: {ErrorCode}`)
return
end
print(`[CarbonLuau:PersistenceExample] Saved: {Saved}`)
end)
end)
if not Ok then
print(`[CarbonLuau:PersistenceExample] Submission rejected: {SubmissionError}`)
end
end)GetAsync, SetAsync, and RemoveAsync submit non-yielding bounded requests.
Submission is not durable success: handle the later callback. Values are copied
at submission; returned tables are fresh snapshots. Stores are private to the
operator root or owning addon. The same store/key text in two namespaces does
not share data. Durable namespaces survive replacement and restart; old facade
and callback authority does not.
DataStore:Query accepts one exact top-level field and either Equals or an
inclusive Min/Max range, with bounded ordering and result limits. CarbonLuau
prepares indexes automatically; Indexes = {"Coins", "Level"} only asks for
earlier preparation. A first-use Query may return IndexPreparing or
QueryUnavailable under the documented bounds. Query never falls back to an
unbounded primary-store scan. Results are current per page, not one frozen
multi-page snapshot. Opaque keyset cursors can become invalid after generation,
session, worker, or domain changes; reacquire rather than assuming they retarget.
The backend is one local SQLite database using the qualified PERSIST + EXTRA
durability profile. Successful writes follow that profile; an acknowledgement
lost around COMMIT can be indeterminate. CarbonLuau does not automatically
replay uncertain mutations or callbacks. Corruption/unavailable storage fails
controlledly rather than pretending a key is missing. The 16-MiB-per-namespace
and 256-MiB-global logical quotas are hard admission ceilings, but unused
logical quota does not guarantee physical admission. Database and journal file
extents have separate hard ceilings; the 2,560-MiB filesystem-allocation figure
is a qualified operational budget, not a never-exceeded allocated-block
guarantee. Files are not preallocated to those ceilings.
See the author guide,
DataStore reference,
Query request,
Query result,
and installation/storage guidance.
Foundation 1's combined qualification
and Foundation 2's combined qualification record the platform,
crash, lifecycle and live Carbon evidence.
Other API continuity
The v0.4.0 gameplay, provider-owned addons, and retained GUI APIs remain in
this package with their historical introduction identities. Player mutations
still use the published committed-only and exact-identity rules. The official
v0.4.0 VS Code extension is pinned to the older runtime/API and is not a
qualified matching v0.5.0 artifact; no VSIX or editor-store simulation is
included with this release.
Identities
| Identity | Value |
|---|---|
| Package / tag | 0.5.0 / v0.5.0 |
| Scripting API | CarbonLuau 0.5.0-experimental |
| Native ABI | 1.5 |
| Provider protocol | CarbonLuau.Addons / 1.2 |
| Addon package schema | 1 |
| Pinned Luau | c6b830185af962c82003f86784e2fe036357c830 |
| Private SQLite | 3.53.4 |
Qualification and limits
Foundation 2D passed exact-source hosted Windows, Linux, ASan/UBSan/leak,
tooling/API, package and clean-install checks. Controlled live Carbon/Rust
server tests exercised persistence and Query on Windows and Linux, including
plugin reload/unload; Linux additionally demonstrated a fresh Rust process
restart and durable readback. The unchanged Foundation 1C Windows restart
qualification remains separate historical evidence. These are server-side
tests; no authenticated Rust client/UI receipt is claimed. Shockbyte
full-runtime, macOS server/runtime and every future Rust/Carbon build remain
unqualified. Sudden-power-loss behavior outside the recorded durability
envelope is not claimed. Consult Compatibility before
deployment.
There is no Roblox cloud DataStore compatibility, cross-server replication,
arbitrary SQL, key enumeration, UpdateAsync, multikey transactions, author
schema/migration/index lifecycle, automatic mutation replay, or primary-scan
Query. Entity APIs remain host-primitive-gated. GUI TextBox is not implemented;
authenticated-client visual and click behavior remains unqualified.