Channel stable
-
changed:
stable head
1.2.0→1.3.0
stable: Artifacts
-
changed:
Artifact crate size
1803998 bytes→1867226 bytes
Releases
- added: Release 1.3.0stable, available, dated 2026-10-01 by its publisher
Publisher's notes for 1.3.0 stable
Luau's own parser for scripts with `@dream/luau`: the syntax tree with exact spans, comments, errors and the token stream, built as tables in native code and typed for strict walkers; and named Luau types for extensions whose values are plain tables.
Added
@dream/luau(featuresyntax):luau.parse(source, options?)runsLuau::Parserunder the runtime's fast flags and returns the tree as tables, every node with its kind and a 1-based span, one table per local shared by its declaration and every use, string quote styles, every comment and hot comment, parse errors as data with the recovered tree, and, with{ tokens = true }, Luau's token stream as a buffer of 12-byte records;{ declarations = true }parses definition-file syntax.- The tree costs 17205 instructions per source line built and collected, against 27861 for the parser and Luau's own JSON encoding of it, which a script would still have to decode.
ExtensionDescriptor::type_alias: a named Luau type an extension's signatures refer to, for values that are plain tables, rendered asexport typeahead of every module.@dream/bytes'stoBase64andfromBase64: standard padded base64 of a range of a buffer or string in one call, and back, refusing anything that isn't base64 by naming the byte.@dream/bytes'sframe: one native walk over a run of tag-length-payload chunks (RIFF, IFF, PNG, GLB, Bethesda records), the layout given as data, returning every chunk's start and end asu32pairs and, when it stops early, why and where; aninnerlayout checks that each payload's chunks tile it. A megabyte of records and fields in 0.98 ms against 9.8 ms for the Luau walk.@dream/bytes'sregex(featurebytes-regex): a pattern compiled once over bytes, whosematchSpanstests every(start, end)range of a buffer in one call and answers with a byte per range, so a thousand small fields cost one call and no strings;isMatchandfindover one range.@dream/fs(featurefs): the host filesystem over byte paths, with whole and positional reads, readers over a memory map, writers with positions and truncation,statandlstat, a walk that returns parallel columns, recursive removal, renames, copies, hard and symbolic links, canonical paths and file identity, behind thefilesystem.readandfilesystem.writecapabilities. What the OS refuses returnsnil, the message and the error's kind, the wayio.opendoes.@dream/process(featureprocess):runstarts a program with no shell, waits for it, and returns its exit code with its output passed through, captured or discarded, behindprocess.spawn;envbehindprocess.environment;writeandisTerminalfor the standard streams.@dream/bytes'stranslate(text, from, to, { collapse?, trimStart?, trimEnd? }?): bytes mapped liketr, runs of one byte collapsed, one byte trimmed from each end, and the text itself returned when nothing changes; folding a path's case and separators costs 141 ns a call against 470 ns forstring.lowerplusstring.gsub.@dream/intern's rules policy,intern.new({ nocase?, replace?, collapse?, trimStart?, trimEnd? }): keys normalized inside the hash and the compare, soMeshes\\X//Rock.NIFandmeshes/x/rock.nifare one token with no normalized string made; the byte map lowers to native code eight bytes at a time, 522 instructions for a duplicate 31-byte path against 5008 forstring.lowerplusstring.gsuband a table read, andresolvereturns the normal form.
Written by the publisher and shown verbatim, rendered through a sanitizer.