Skip to content
This repository was archived by the owner on Dec 27, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
282 commits
Select commit Hold shift + click to select a range
6301927
Fix release workflow by stripping away extraneous information from `g…
vrn-sn Oct 11, 2025
92e85d4
stdlib: Make the json library part of the lute std library (#418)
Vighnesh-V Oct 11, 2025
385e190
Use system CA store on net.request (#422)
checkraisefold Oct 12, 2025
9dfa221
Fix use-after-free bug in `process.cpp` (#421)
vrn-sn Oct 12, 2025
4eca5c7
Add draft release step to release workflow for uploading artifacts (#…
vrn-sn Oct 13, 2025
491e05d
stdlib: add `system` and boolean environment checks (#416)
annieetang Oct 14, 2025
551c4e8
refactor: split `cliruntimefixture` into .h and .cpp (#426)
annieetang Oct 14, 2025
7b4e269
fix: cleanup/free filesystem requests and data (#425)
Nerixyz Oct 15, 2025
b299d8b
Add a typedef for process.exit() (#428)
Vighnesh-V Oct 15, 2025
3d84ba5
Replace unnecessary `reinterpret_cast`s with `static_cast`s (#429)
vrn-sn Oct 15, 2025
a70354d
luacase field names in lute's APIs (#430)
skberkeley Oct 15, 2025
2cabbe6
fix: reserve stack slot for thread (#432)
Nerixyz Oct 16, 2025
b564ea0
Reserve stack space for creating thread refs in `getRefForThread` its…
vrn-sn Oct 17, 2025
8079e83
std: adopt underscore prefixes for internal data in std/time (#435)
aatxe Oct 17, 2025
3d063d5
stdlib: Update the testing api with some more test lifecycle methods …
Vighnesh-V Oct 17, 2025
56ae06a
[Infra] Enable AddressSanitizer in CI builds (#438)
vrn-sn Oct 18, 2025
8ca3963
stdlib: filepath library (#427)
skberkeley Oct 18, 2025
cb0af29
Fix new path lib incorrectly checking OS (#445)
checkraisefold Oct 19, 2025
49f4be5
Fix 4 extra spaces on first level on json pretty serialize (#446)
checkraisefold Oct 19, 2025
5d95623
Break bidirectional dependencies between Lute.Runtime and every runti…
vrn-sn Oct 19, 2025
eeaa35a
Fix AstStatForIn type definition (#448)
checkraisefold Oct 19, 2025
29d7001
refactor: Modulepath takes std::function instead of a function pointe…
Vighnesh-V Oct 20, 2025
59b1beb
feat: add `process.execpath` to get the current lute executable (#431)
Nerixyz Oct 20, 2025
93c35ac
Rename "Gated Commits" to "CI" (#453)
vrn-sn Oct 20, 2025
1934ced
Add ``errors`` assertion (#444)
wmccrthy Oct 20, 2025
5e7322b
Add a simple CONTRIBUTING.md file (#443)
vrn-sn Oct 20, 2025
bf5d1d4
Feature: add support for user input in `@std/io` (#437)
annieetang Oct 20, 2025
ce1c5f0
Update license year to include 2025 (#456)
vrn-sn Oct 20, 2025
b60c005
Call `uv_setup_args` at `lute` and `lute-tests` entry points (#455)
vrn-sn Oct 21, 2025
5341132
fix: Fix typecheck errors in std library (#457)
Vighnesh-V Oct 21, 2025
e1520fc
Move `getExecPath` logic to Lute.Process and clean up all uses of `ar…
vrn-sn Oct 21, 2025
1f0aa30
Refactor `lute setup` to write to luaurc, add std type defs (#447)
checkraisefold Oct 21, 2025
bbae2db
fix: rename `io.read()` in definitions (#459)
annieetang Oct 21, 2025
97f7598
docs: update docs site config to have latest definitions (#460)
annieetang Oct 21, 2025
2128b80
Fix race condition in release workflow (#464)
vrn-sn Oct 22, 2025
68e696f
runtime: implement `system.tmpdir` to provide access to the temporary…
aatxe Oct 22, 2025
e17579f
Improve luau API usage by using `pushlstring` where size is known. (#…
aatxe Oct 23, 2025
6b32999
Port AST serializer tests to new runner (#469)
skberkeley Oct 23, 2025
d9b47a8
Change base URL in VitePress config (#470)
aatxe Oct 23, 2025
2457656
feature: Create a Virtual File System implementation that can restore…
Vighnesh-V Oct 23, 2025
abe1a07
std/json: distinguish more explicitly between array and object (#468)
aatxe Oct 23, 2025
6ce00f1
stdlib: add `std/fs` and `std/process` to handle file paths as luau `…
annieetang Oct 23, 2025
717977c
docs fix: use lute lib instead of std for `reference.luau` (#471)
annieetang Oct 23, 2025
6cd4c99
infra: set LUTE_ROOT_DIR in CI to the checkout (#476)
aatxe Oct 24, 2025
225d10a
fix: clang-cl build (#474)
Nerixyz Oct 24, 2025
b6c90ba
feature: Implement a Static Require Tracer in order to bundle files c…
Vighnesh-V Oct 24, 2025
b11dfdd
stdlib: path join shouldn't mutate argument objects (#475)
skberkeley Oct 24, 2025
727f04c
infra: specify that tune files are TOML (#477)
aatxe Oct 24, 2025
fbbebdc
stdlib: wrap tmpdir result in path (#473)
skberkeley Oct 24, 2025
232f989
Fix CI and pin foreman lute version (#480)
Nicell Oct 24, 2025
177e6bc
Create workflow to update Luau and Lute weekly (#481)
Nicell Oct 24, 2025
f27ec6f
Fix multiple runtime APIs that were incorrectly using `std::string::r…
vrn-sn Oct 27, 2025
153d5f2
stdlib: fix memory leak in luau.compile (#485)
skberkeley Oct 27, 2025
e66c4c5
Change create-pull-request action to use luau-lang version (#486)
aatxe Oct 28, 2025
e83a026
Port codemod into lute (#454)
skanosue Oct 28, 2025
0ccff12
stdlib: loadbypath (#461)
skanosue Oct 28, 2025
49707fe
Lute transform can use stdlib loadbypath (#488)
skberkeley Oct 28, 2025
ae9b5d8
Use `std::destroy_at` instead of manually invoking destructors (#489)
vrn-sn Oct 28, 2025
4a781d8
Use visitor pattern for exhaustivity in IO stream handling (#487)
vrn-sn Oct 28, 2025
311cd7e
feature: Introduce a multifile payload format for embedding into the …
Vighnesh-V Oct 28, 2025
a22651e
refactor: add std tests folder and rename astSerializer to parser (#492)
annieetang Oct 29, 2025
f708ab3
lute transform: add exhaustive match back (#494)
skberkeley Oct 29, 2025
061c1a8
restructure std tests (#495)
skberkeley Oct 29, 2025
70e4df9
refactor: stdlib/path/init.luau file to follow style of `definitions/…
annieetang Oct 30, 2025
f42c262
refactor: rename exprifelse field names (#493)
skberkeley Oct 30, 2025
760ea45
Feature: lute test subcommand (#498)
Vighnesh-V Oct 30, 2025
0d96184
stdlib: add table.extend to the lute standard library (#501)
Vighnesh-V Oct 30, 2025
b8e3352
Feature: Fetch all .spec.luau files / .test.luau files (#499)
Vighnesh-V Oct 30, 2025
0bc7f7c
Run clang-format on all .cpp/h files in `lute` directory (#502)
vrn-sn Oct 30, 2025
1e67500
stdlib: expose test environment from test library (#503)
Vighnesh-V Oct 30, 2025
83e1807
refactor: update test files to use `system.tmpdir` (#504)
annieetang Oct 30, 2025
7a6d5f7
stdlib: add `__tostring` to paths (#500)
annieetang Oct 30, 2025
293f25d
@std/fs: replace mkdir with createdirectory to handle pathlike object…
annieetang Oct 30, 2025
ba91023
Update Luau to 0.698 (#507)
github-actions[bot] Oct 31, 2025
c863204
Update Lute to 0.1.0-nightly.20251031 (#508)
github-actions[bot] Oct 31, 2025
e11f8b0
Support `.config.luau` files in Lute (#512)
vrn-sn Nov 1, 2025
ad7a861
bugfix: UAF in fs callbacks (#514)
Vighnesh-V Nov 3, 2025
f80716f
Add `luau.resolverequire` API (#496)
vrn-sn Nov 3, 2025
f5be7a6
refactor: Add some utilities for reading and writing Lute Executables…
Vighnesh-V Nov 3, 2025
5cedca0
stdlib: add kinds to ast types (#510)
skberkeley Nov 3, 2025
d258dc9
stdlib: lute test shouldn't point to xpcall for error msg (#518)
skberkeley Nov 4, 2025
8d504a0
refactor: stdlib/syntax file formats (#520)
annieetang Nov 4, 2025
b736b05
refactor: stdlib fs, io, process, and system file formats (#521)
annieetang Nov 4, 2025
5dd84e4
refactor: misc. stdlib restyling for time, header comments for assert…
annieetang Nov 4, 2025
9e301f6
stdlib: tweak error msg in tests with runtime errors (#525)
skberkeley Nov 5, 2025
f4a1ad2
feature: lute compile supports multiple files and static require trac…
Vighnesh-V Nov 5, 2025
25c1022
cli: fix the paths used in lute setup to correctly install definition…
aatxe Nov 5, 2025
5b5d0b6
refactor: stdlib string, table, task, vector file formats (#523)
annieetang Nov 5, 2025
f710123
Refactor: move std/time.duration into proper submodule (#532)
annieetang Nov 6, 2025
10feb1b
docs: Add basic standard library docs to lute.luau.org (#534)
annieetang Nov 6, 2025
3b2f252
feature: list all discovered tests (#505)
Vighnesh-V Nov 6, 2025
6bb7ea3
fix: update paths in lute site doc gen (#537)
annieetang Nov 6, 2025
576d564
docs: add build-docs-site to CI and fix (#538)
annieetang Nov 6, 2025
fa61b06
cmake: Fix error when depending on lute due to module path misconfigu…
Gargafield Nov 7, 2025
41da777
refactor: Split up std test (#528)
Vighnesh-V Nov 7, 2025
bc466b0
refactor: luacase std test (#529)
Vighnesh-V Nov 7, 2025
4f98891
Fix infinite recursion in ignore (#540)
wmccrthy Nov 7, 2025
8f67b04
Feature: Lute Config and Module Resolvers (#535)
annieetang Nov 7, 2025
60db869
Add clang-format rules to enforce include order rules (#544)
vrn-sn Nov 8, 2025
0f7e8a4
Update Lute to 0.1.0-nightly.20251107 (#543)
github-actions[bot] Nov 8, 2025
e2992c1
Update Luau to 0.699 (#542)
github-actions[bot] Nov 8, 2025
f4cc6a2
Fetch out-of-date dependencies and force configure in Luthier for `bu…
vrn-sn Nov 8, 2025
699b909
refactor: Suppress printing to stdout in test cases by logging to a r…
Vighnesh-V Nov 10, 2025
96461b7
Remove infinite loop test for .config.luau (#548)
vrn-sn Nov 10, 2025
8412e5c
site: use vitepress-sidebar to generate sidebar (#549)
annieetang Nov 10, 2025
3bb5806
site: fix path in sidebar generation (#550)
annieetang Nov 10, 2025
c0c8874
refactor: StaticRequireTracer should be reworked to use the resolveRe…
Vighnesh-V Nov 10, 2025
0ed842e
cli: update tc.cpp to use Luau resolvers (#553)
annieetang Nov 10, 2025
00db049
bugfix: windows path api needs to be able to get the drive letter for…
Vighnesh-V Nov 11, 2025
be99217
bugfix: createdirectory creates the wrong path on windows machines (#…
Vighnesh-V Nov 11, 2025
0e0ccbf
lute transform: pass parsed ASTs to codemods (#556)
skberkeley Nov 11, 2025
7264d35
API: luau.typeofmodule v1 (#531)
annieetang Nov 11, 2025
a8485be
stdlib tests: add tests to stringext, tableext, vectorext (#562)
annieetang Nov 11, 2025
ba9338d
lute parse: fix serialization of union type separators (#563)
skberkeley Nov 11, 2025
7f5ccf7
infra: install a batteries-only version of the .luaurc file for CI. (…
aatxe Nov 12, 2025
67acd8c
fix: fs.open mode should handle optional mode (#566)
annieetang Nov 12, 2025
372b1da
stdlib: Reworking AST queries (#506)
skberkeley Nov 12, 2025
98807fa
site: link folder and page names together for api docs & fix nav (#567)
annieetang Nov 12, 2025
ee1b796
bugfix: Use after free in fs.cpp's watch method (#568)
Vighnesh-V Nov 12, 2025
0eae84c
perf: base64 decoder with buffer-based LUT and stricter validation (#…
zoon Nov 12, 2025
d2d3ede
lute std: Move AST-related functions and types from @std/luau to @std…
skberkeley Nov 12, 2025
d7ca1cc
bugfix: remaining failing windows tests (#560)
Vighnesh-V Nov 12, 2025
bcb4769
crypto: implement a secretbox interface for authenticated encryption …
aatxe Nov 12, 2025
755d11b
stdlib: Update utils type annotations (#570)
skberkeley Nov 12, 2025
fc347ac
crypto: include the ability to separately generate a key before seali…
aatxe Nov 12, 2025
24491fb
lute stdlib: Update createVisitor to take a default callback (#569)
skberkeley Nov 12, 2025
9cb35ed
Support executing `require` in dynamically generated, library-aware v…
vrn-sn Nov 13, 2025
caf674a
bugfix: lute check supports ~ in luaurc paths (#573)
Vighnesh-V Nov 13, 2025
827638e
bugfix: initialize status variable (#576)
zoon Nov 13, 2025
d81aeba
Fix missed `Package::RequireVfs` renames from #339 (#578)
vrn-sn Nov 13, 2025
22a1628
Support token selection in selectFromRoot (#577)
wmccrthy Nov 13, 2025
9f576a2
bugfix: lute setup should destroy the typedefs folder (#574)
Vighnesh-V Nov 13, 2025
5ff55dc
stdlib: Printing AST replacements preserves trivia (#580)
skberkeley Nov 14, 2025
e6dbdfc
Update Luau to 0.700 (#586)
github-actions[bot] Nov 14, 2025
4d3203d
Update Lute to 0.1.0-nightly.20251114 (#587)
github-actions[bot] Nov 14, 2025
e6148d4
stdlib: luacase some ast node fields (#588)
skberkeley Nov 15, 2025
018efd9
stdlib: fs.walk (#583)
annieetang Nov 15, 2025
31626ba
crypto: add optional key argument for seal in definition files. (#590)
aatxe Nov 17, 2025
fe2f923
stdlib: Fix Lute test assertions (#592)
skberkeley Nov 17, 2025
b217954
stdlib: query:findall and query:flatmap (#591)
skberkeley Nov 18, 2025
946a691
std/tableext: implement `combine`, `foreach`, and `keys` (#584)
wmccrthy Nov 18, 2025
d2179be
docs: support doc comments in lute doc gen (#589)
annieetang Nov 18, 2025
c1b25b4
std/syntax: `visitor.visit` should support table items (`luau.AstExpr…
wmccrthy Nov 19, 2025
ea169e7
fix: exclude `docs/test/` from doc gen and fix file naming (#596)
annieetang Nov 19, 2025
9bec3e9
fix: correctly exclude test folder for docgen + require build-docs-si…
annieetang Nov 19, 2025
0becd27
docs: change sidebar naming from "definitions" to "lute" (#599)
annieetang Nov 19, 2025
eba310d
lute/luau: implement a `span` userdata to replace serializing locatio…
aatxe Nov 19, 2025
0236055
stdlib: remove vectorext (#602)
annieetang Nov 20, 2025
683df4e
stdlib: update tableext by removing unnecessary funcs and types (#603)
annieetang Nov 20, 2025
a849b54
stdlib: update stringext funcs to hasprefix and hassuffix (#604)
annieetang Nov 20, 2025
1f5dd8f
actually report failing windows tests (#601)
skberkeley Nov 20, 2025
3a25262
stdlib: luacase @std/luau (#605)
annieetang Nov 20, 2025
dc6b178
First version of lute lint (#597)
skberkeley Nov 20, 2025
668b6c1
stdlib: cleanup @std/fs (renaming/removing APIs) (#606)
annieetang Nov 20, 2025
26b8e25
feature: add location field to Luau AST types (#608)
annieetang Nov 21, 2025
efd3d98
transform: Add output directory optional argument (#610)
skberkeley Nov 24, 2025
40e09cf
refactor: split process.run and process.shell into separate functions…
annieetang Nov 25, 2025
03b635c
lute lint: support multiple lint rules (#615)
skberkeley Nov 25, 2025
4cca9b8
Add optional `msg` param to asserts (#614)
wmccrthy Nov 25, 2025
010c260
Update Luau to 0.701 (#612)
github-actions[bot] Nov 25, 2025
e97e76f
Update Lute to 0.1.0-nightly.20251121 (#613)
github-actions[bot] Nov 25, 2025
1a77294
lute lint: gracefully handle rules that error (#618)
skberkeley Nov 25, 2025
802532b
lute lint: Support multiple lintee files (#617)
skberkeley Nov 25, 2025
32d689e
add assert.strcontains (#619)
skberkeley Nov 26, 2025
537a042
stdlib: Some fixups to assert functions (#623)
skberkeley Dec 1, 2025
c5cd640
add transform and lint options to lute --help (#625)
skberkeley Dec 1, 2025
637f247
lute lint: default lint rules (#624)
skberkeley Dec 1, 2025
ae14f3f
Update Lute to 0.1.0-nightly.20251127 (#622)
github-actions[bot] Dec 1, 2025
0a85afb
Infra: opt out of concurrency grouping for CI running on the `primary…
vrn-sn Dec 2, 2025
a81d354
Add `resolverequire` API to standard library with filepath semantics …
vrn-sn Dec 2, 2025
9e48899
tidy: Lute shouldn't pull in the filesystem header (#628)
Vighnesh-V Dec 2, 2025
24a30f8
Add a test for `luau.resolverequire` API (#631)
vrn-sn Dec 2, 2025
4c5adb2
stdlib: assert tests + fixes (#632)
skberkeley Dec 2, 2025
2991463
fix: fix heap-use-after-free in `task.wait` (#633)
annieetang Dec 3, 2025
b66569d
stdlib: re-implement `fs.watch` as an iterator (#616)
annieetang Dec 3, 2025
5b0676b
feature: Lute test runs all the tests (#557)
Vighnesh-V Dec 3, 2025
89c09d3
lute lint: warning suppression comments (#627)
skberkeley Dec 3, 2025
2c84896
lute lint: fix tab pretty printing (#638)
skberkeley Dec 3, 2025
b684372
lute lint: add verbosity option (#641)
skberkeley Dec 4, 2025
b4e9208
Deque Battery (#636)
wmccrthy Dec 4, 2025
0a2fa0f
lute lint: json output (#635)
skberkeley Dec 4, 2025
a56da82
lute lint: respect gitignores (#644)
skberkeley Dec 4, 2025
13522a6
fix: fs.watch test (#640)
annieetang Dec 4, 2025
bf1faee
lute lint: add report directive (#637)
skberkeley Dec 4, 2025
c76f1af
Support negative numbers in the json std lib (#649)
othomson-roblox Dec 5, 2025
e14bfb8
Update Lute to 0.1.0-nightly.20251204 (#646)
github-actions[bot] Dec 5, 2025
32045b7
Lute.Require: delete all "fake root" logic and replace with new `to_a…
vrn-sn Dec 5, 2025
ccf62ed
tidy: Split the tests in `test.test.luau` into two different test sui…
Vighnesh-V Dec 6, 2025
365a86d
Update Luau to 0.702 (#645)
github-actions[bot] Dec 6, 2025
081f421
Battery for Text Diffing (#620)
wmccrthy Dec 8, 2025
8fa3cc2
Update Lute to 0.1.0-nightly.20251205 (#655)
github-actions[bot] Dec 8, 2025
e4df9d8
Updates CI to automatically generate release notes (#663)
Vighnesh-V Dec 9, 2025
a65a478
Adds support for luaurc files in executables from `lute compile` (#626)
Vighnesh-V Dec 9, 2025
2e2a281
Adds a global ignore directive to `lute lint` (#664)
skberkeley Dec 9, 2025
6730315
Ensures that do blocks are seralized (#662)
skberkeley Dec 9, 2025
0c0d643
adds timeout for `run-lutecli-luau-tests` workflow in CI (#665)
annieetang Dec 9, 2025
3589bf4
Implements flag arguments to specify test case and test suite to run …
Vighnesh-V Dec 9, 2025
eef10e9
Surfaces some require errors in `lute run` (#660)
skberkeley Dec 9, 2025
4defe3c
Cleans up the std path library and adds `path.relative` (#658)
skberkeley Dec 9, 2025
2b711dd
Comment out print statements in `compile_command_e2e` unit test (#667)
vrn-sn Dec 9, 2025
47e16e6
Cleans up method names in the syntax visitor library (#666)
skberkeley Dec 9, 2025
c9b6601
CLI refactor: move out require setup code into separate source files …
vrn-sn Dec 10, 2025
389c3f4
Sets `lute` to enable all `Luau*` flags by default (#669)
vrn-sn Dec 10, 2025
d019207
Fixes JSON number deserialization and adds a test suite (#670)
annieetang Dec 10, 2025
2787432
Fixes JSON array deserialization and adds tests (#671)
annieetang Dec 10, 2025
8124bed
Add JSON object and structure tests and small fixes (#673)
annieetang Dec 10, 2025
180d2b4
Implements `lute pkgrun <file>`: a subcommand that runs Lute with pac…
vrn-sn Dec 10, 2025
be632d9
Creates a new `@std/net` library with the `request` API exposed (#672)
vrn-sn Dec 10, 2025
5efe827
Fixes issues with gitignore parsing in commands lib (#654)
skberkeley Dec 10, 2025
b8a337b
Fixes JSON string serialization and deserialization and adds tests (#…
annieetang Dec 10, 2025
5e354a4
Ensures that Lute will not block other runtime threads during basic f…
Vighnesh-V Dec 11, 2025
7bb6cdd
@std/test Tech Debt: Refactor how we provide debug information via as…
Vighnesh-V Dec 11, 2025
bdf062d
Adds test for std/json object() and asobject() (#675)
annieetang Dec 11, 2025
f005d88
Exposes `net.serve` through `@std/net` and adds its missing return ty…
vrn-sn Dec 11, 2025
79cd653
Extends `lute setup` to generate `@lint` alias (#679)
skberkeley Dec 11, 2025
3e7b585
Adds CI jobs which call luthier with a bootstrapped lute (#680)
skberkeley Dec 12, 2025
139e483
Supports parsing Luau-syntax lock files in `lute pkgrun <file>` (#678)
vrn-sn Dec 12, 2025
13501bb
Disables bootstrapping in CI on macOS (#683)
skberkeley Dec 12, 2025
3c3a61f
Updates lute lint to return an error code if any lint violations are …
skberkeley Dec 12, 2025
be77b2e
Fixes JSON string deserialization (#686)
annieetang Dec 12, 2025
2955111
Enable UBSan in CI (#441)
vrn-sn Dec 12, 2025
dc79710
Option for print line numbers in prettydiff (#659)
wmccrthy Dec 12, 2025
cde4c7c
Remove `net.serve` API from `@std` (#693)
vrn-sn Dec 15, 2025
68dd5bd
Update Luau to 0.703 (#687)
github-actions[bot] Dec 15, 2025
6a8e5f0
Make `@std` and `@lute` aliases nonoverridable (#694)
vrn-sn Dec 15, 2025
fc19ad0
Enables the `@lute` libraries in spawned VMs by implementing a new `L…
vrn-sn Dec 16, 2025
2326c7f
Hierarchical run command discovery (#695)
jkelaty-rbx Dec 19, 2025
49760c9
Update Lute to 0.1.0-nightly.20251220 (#688)
github-actions[bot] Jan 3, 2026
79e3110
Runs `lute test` as part of CI (#705)
Vighnesh-V Jan 5, 2026
157a116
Add `tableext.toset` (#699)
Alexander-L-Robert Jan 6, 2026
a179487
Improves lute runtime performance when scheduling many threads (#706)
Vighnesh-V Jan 6, 2026
102c388
Lute check uses the new solver by default (#711)
raymondnumbergenerator Jan 9, 2026
a9ed8df
Update Luau to 0.704 (#713)
github-actions[bot] Jan 11, 2026
972b083
Update Lute to 0.1.0-nightly.20260109 (#714)
github-actions[bot] Jan 11, 2026
8bcd1f7
Fix `parseGlob` handling of `.` character (#716)
wmccrthy Jan 12, 2026
abebecc
Ensure `ExprTableItem` nodes are serialized with `location` (#718)
wmccrthy Jan 12, 2026
2736876
Extends `lute lint` to support linting an input string (#719)
skberkeley Jan 12, 2026
f08bc5d
Adds any and all (for array-like tables) to tableext (#720)
skberkeley Jan 13, 2026
a15af34
Adds suggested fix as a lint violation field (#721)
skberkeley Jan 13, 2026
27ddf0a
Adds a default lint rule for parenthesized conditions (#722)
skberkeley Jan 13, 2026
923f0e8
Adds autofix support to `lute lint` (#723)
skberkeley Jan 14, 2026
3ad0e71
Ensures `fs.remove` is asynchronous (#729)
annieetang Jan 15, 2026
0125526
Ensures `fs.mkdir` is asynchronous (#731)
annieetang Jan 15, 2026
77ebef5
Adds a readme to lute lint folder (#733)
skberkeley Jan 16, 2026
43eba87
Adds a lint rule for constant table comparison (#732)
skberkeley Jan 16, 2026
398ef25
Add CLI docs (#725)
Nicell Jan 16, 2026
9c3d25a
Improve reference docs (#726)
Nicell Jan 16, 2026
b525e23
Updates lute documentation for the run, test, and compile cli command…
Vighnesh-V Jan 16, 2026
4050826
Brings in profiler and codecoverage from Luau (#730)
Vighnesh-V Jan 16, 2026
f22a0e8
Edits lint and transform docs (#735)
skberkeley Jan 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
16 changes: 15 additions & 1 deletion .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,21 @@ BreakConstructorInitializers: BeforeComma
BreakInheritanceList: BeforeComma
ColumnLimit: 150
IndentCaseLabels: false
SortIncludes: false
SortIncludes: CaseInsensitive
IncludeBlocks: Regroup
IncludeCategories:
- Regex: '^["](commands|generated/).*'
Priority: 1
- Regex: '^["](lute)/.*'
Priority: 2
- Regex: '^["](Luau)/.*'
Priority: 3
- Regex: '^["](lua).*'
Priority: 4
- Regex: '^["](openssl/|sodium/|uv|curl/|zlib).*'
Priority: 5
- Regex: '^<[^/]*>'
Priority: 6
IndentWidth: 4
TabWidth: 4
ObjCBlockIndentWidth: 4
Expand Down
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.tune linguist-language=TOML
12 changes: 12 additions & 0 deletions .github/actions/setup-and-build/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ inputs:
token:
description: "Token for foreman"
required: true
use-bootstrap:
description: "Whether to use the bootstrap script to build the Lute used to run luthier"
required: false
default: "false"

outputs:
exe_path:
Expand Down Expand Up @@ -60,6 +64,14 @@ runs:
path: extern
key: extern-${{ hashFiles('extern/*.tune') }}

- name: Bootstrap Lute
if: ${{ inputs.use-bootstrap == 'true' }}
shell: bash
run: |
echo "Bootstrapping Lute..."
./tools/bootstrap.sh
alias lute="./build/lute0"

- name: Fetch ${{ inputs.target }}
if: steps.cache-extern.outputs.cache-hit != 'true'
shell: bash
Expand Down
104 changes: 90 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,39 +1,61 @@
name: build
name: CI

on:
push:
branches: ["primary"]
pull_request:
branches: ["primary"]

# CI on the "primary" branch opts out of concurrency grouping by using the run's
# unique run_id.
concurrency:
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/primary' && github.run_id || github.ref }}
cancel-in-progress: true

jobs:
build:
run-lutecli-luau-tests:
runs-on: ${{ matrix.os }}
timeout-minutes: 15

strategy:
matrix:
include:
- os: windows-latest
options: --c-compiler cl.exe --cxx-compiler cl.exe
- os: ubuntu-latest
options: --c-compiler gcc --cxx-compiler g++
options: --c-compiler gcc --cxx-compiler g++ --enable-sanitizers
- os: ubuntu-latest
options: --c-compiler clang --cxx-compiler clang++
options: --c-compiler clang --cxx-compiler clang++ --enable-sanitizers
- os: macos-latest
options: --enable-sanitizers
- os: ubuntu-latest
options: --c-compiler gcc --cxx-compiler g++ --enable-sanitizers
use-bootstrap: true
- os: ubuntu-latest
options: --c-compiler clang --cxx-compiler clang++ --enable-sanitizers
use-bootstrap: true
fail-fast: false

steps:
- uses: actions/checkout@v4

- name: Setup and Build Lute
id: build_lute
uses: ./.github/actions/setup-and-build
with:
target: Lute.CLI
config: debug
options: ${{ matrix.options }}
token: ${{ secrets.GITHUB_TOKEN }}
use-bootstrap: ${{ matrix.use-bootstrap || 'false' }}

- name: Use CI .luaurc file
run: rm .luaurc && mv .luaurc.ci .luaurc

- name: Run Luau Tests (POSIX)
run: ${{ steps.build_lute.outputs.exe_path }} test

test:
run-lute-cxx-unittests:
runs-on: ${{ matrix.os }}

strategy:
Expand All @@ -42,29 +64,29 @@ jobs:
- os: windows-latest
options: --c-compiler cl.exe --cxx-compiler cl.exe
- os: ubuntu-latest
options: --c-compiler gcc --cxx-compiler g++
options: --c-compiler gcc --cxx-compiler g++ --enable-sanitizers
- os: ubuntu-latest
options: --c-compiler clang --cxx-compiler clang++
options: --c-compiler clang --cxx-compiler clang++ --enable-sanitizers
- os: macos-latest
options: --enable-sanitizers
fail-fast: false

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup and Build Tests
- name: Setup and Build C++ Unit Tests
id: build_tests
uses: ./.github/actions/setup-and-build
with:
target: Lute.Test
config: debug
options: ${{ matrix.options }}
token: ${{ secrets.GITHUB_TOKEN }}

- name: Remove .luaurc file
run: rm .luaurc

- name: Run Tests
- name: Run C++ Tests
run: ${{ steps.build_tests.outputs.exe_path }}

check-format:
Expand All @@ -82,13 +104,67 @@ jobs:
- name: Run StyLua
run: stylua --check .

build-docs-site:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4

- name: Install tools
uses: Roblox/setup-foreman@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
allow-external-github-orgs: true

- name: Install dependencies
run: npm install
working-directory: docs

- name: Build docs site
run: npm run build
working-directory: docs

- name: Upload docs artifact
id: deployment
uses: actions/upload-pages-artifact@v3
with:
path: docs/.vitepress/dist/

lute-lint:
runs-on: ubuntu-latest

steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup and Build Lute
id: build_lute
uses: ./.github/actions/setup-and-build
with:
target: Lute.CLI
config: debug
options: ${{ matrix.options }}
token: ${{ secrets.GITHUB_TOKEN }}
use-bootstrap: true

- name: Run Lute Lint
run: ${{ steps.build_lute.outputs.exe_path }} lint -v .

aggregator:
name: Gated Commits
runs-on: ubuntu-latest
needs:
- build
needs: [run-lutecli-luau-tests, run-lute-cxx-unittests, check-format, build-docs-site, lute-lint]
if: ${{ always() }}
steps:
- name: Aggregate
- name: Aggregator
run: |
echo "All required jobs completed"
if [ "${{ needs.run-lutecli-luau-tests.result }}" == "success" ] && [ "${{ needs.run-lute-cxx-unittests.result }}" == "success" ] && [ "${{ needs.check-format.result }}" == "success" ] && [ "${{ needs.build-docs-site.result }}" == "success" ] && [ "${{ needs.lute-lint.result }}" == "success" ]; then
echo "All jobs succeeded"
else
echo "One or more jobs failed"
exit 1
fi
33 changes: 26 additions & 7 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ jobs:
runs-on: ubuntu-latest
outputs:
proceed: ${{ steps.check.outputs.proceed }}
nightly_tag: ${{ steps.set_nightly.outputs.nightly_tag }}
permissions:
contents: read

Expand Down Expand Up @@ -58,6 +59,13 @@ jobs:

echo "proceed=$PROCEED" >> $GITHUB_OUTPUT

- name: Set nightly version suffix
id: set_nightly
if: github.event_name == 'schedule' || github.event.inputs.nightly
run: |
DATE=$(date +%Y%m%d)
echo "nightly_tag=nightly.$DATE" >> "$GITHUB_OUTPUT"

build:
strategy:
matrix:
Expand All @@ -82,6 +90,10 @@ jobs:
- name: Checkout code
uses: actions/checkout@v4

- name: Set nightly version suffix
if: needs.check.outputs.nightly_tag
run: echo "LUTE_VERSION_SUFFIX=${{ needs.check.outputs.nightly_tag }}" >> "$GITHUB_ENV"

- name: Setup and Build Lute
id: build_lute
uses: ./.github/actions/setup-and-build
Expand All @@ -98,7 +110,7 @@ jobs:
name: ${{ matrix.artifact_name }}

release:
needs: build
needs: [check, build]
runs-on: ubuntu-latest

permissions:
Expand Down Expand Up @@ -130,11 +142,9 @@ jobs:

- name: Create Nightly Tag
id: tag_step
if: github.event_name == 'schedule' || github.event.inputs.nightly
if: needs.check.outputs.nightly_tag
run: |
DATE=$(date +%Y%m%d)
TAG="-nightly.$DATE"
echo "tag=$TAG" >> $GITHUB_OUTPUT
echo "tag=-${{ needs.check.outputs.nightly_tag }}" >> $GITHUB_OUTPUT

- name: Create Release Tag
id: tag_release
Expand All @@ -144,11 +154,20 @@ jobs:
RELEASE_TAG="$VERSION$NIGHTLY_TAG"
echo "tag=$RELEASE_TAG" >> $GITHUB_OUTPUT

- name: Create Release
- name: Create Draft Release
uses: luau-lang/action-gh-release@v2
with:
tag_name: ${{ steps.tag_release.outputs.tag }}
name: ${{ steps.tag_release.outputs.tag }}
draft: false
draft: true
prerelease: ${{ github.event.inputs.nightly || github.event_name == 'schedule' }}
generate_release_notes: true
files: release/*.zip

- name: Wait for Tag Creation in GitHub
run: sleep 5

- name: Publish Release
run: gh release edit "${{ steps.tag_release.outputs.tag }}" --draft=false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Loading