| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| luau-windows.zip | 2026-03-06 | 2.7 MB | |
| Luau.Web.js | 2026-03-06 | 3.7 MB | |
| luau-ubuntu.zip | 2026-03-06 | 6.6 MB | |
| luau-macos.zip | 2026-03-06 | 4.9 MB | |
| 0.711 source code.tar.gz | 2026-03-06 | 2.2 MB | |
| 0.711 source code.zip | 2026-03-06 | 2.6 MB | |
| README.md | 2026-03-06 | 2.9 kB | |
| Totals: 7 Items | 22.6 MB | 0 | |
Hi there, folks! We're back with another weekly Luau release!
Language
- Adds the
constkeyword for defining constant bindings that are statically forbidden to be reassigned to. This implements [luau-lang/rfcs#166](https://github.com/luau-lang/rfcs/issues/166). - Adds a collection of new math constants to Luau's
mathlibrary per [luau-lang/rfcs#169](https://github.com/luau-lang/rfcs/issues/169).
Analysis
-
Fixes a class of bugs where Luau would not retain reasonable upper or lower bounds on free types, resulting in types snapping to
neverorunknowndespite having bounds.:::luau --!strict --
lineswill be inferred to be of{ string }now, and prior -- was local lines = {} table.insert(lines, table.concat({}, "")) print(table.concat(lines, "\n")):::luau --!strict --
buttonswill be inferred to be of type{ { a: number } }local buttons = {} table.insert(buttons, { a = 1 }) table.insert(buttons, { a = 2, b = true }) table.insert(buttons, { a = 3 }) -
Disables the type error from
string.formatwhen called with a dynamically-determined format string (i.e. a non-literal string argument with the typestring) in response to user feedback about it being too noisy. - Resolves an ICE that could occur when type checking curried generic functions. Fixes [#2061]!
- Fixes false positive type errors from doing equality or inequality against
nilwhen indexing from a table - In [#2256], adds a state parameter to the
useratomcallback for consistency with other callbacks.
Compiler
- Improves the compiler's type inference for vector component access, numerical for loops, function return types and singleton type annotations, fixing [#2244] [#2235] and [#2255].
Native Code Generation
- Fixes a bug where some operations on x86_64 would produce integers that would take up more than 32-bits when a 32-bit integer is expected. We resolve these issues by properly truncating to 32-bits in these situations.
- Improves dead store elimination for conditional jumps and fastcalls arguments, improving overall native codegen performance by about 2% on average in benchmarks, with some benchmarks as high as 25%.
Contributors
Co-authored-by: Andy Friesen afriesen@roblox.com Co-authored-by: Ariel Weiss arielweiss@roblox.com Co-authored-by: David Cope dcope@roblox.com Co-authored-by: Hunter Goldstein hgoldstein@roblox.com Co-authored-by: Ilya Rezvov irezvov@roblox.com Co-authored-by: Thomas Schollenberger tschollenberger@roblox.com Co-authored-by: Varun Saini vsaini@roblox.com Co-authored-by: Vighnesh Vijay vvijay@roblox.com Co-authored-by: Vyacheslav Egorov vegorov@roblox.com
Full Changelog: https://github.com/luau-lang/luau/compare/0.710...0.711