mirror of
https://github.com/luau-lang/luau.git
synced 2025-04-18 10:53:45 +01:00
63 lines
2.1 KiB
Markdown
63 lines
2.1 KiB
Markdown
---
|
|
layout: single
|
|
title: "Luau Recap: March 2021"
|
|
---
|
|
|
|
Luau is our new language that you can read more about at [https://roblox.github.io/luau](https://roblox.github.io/luau). It's been a busy month in Luau!
|
|
|
|
[Cross-posted to the [Roblox Developer Forum](https://devforum.roblox.com/t/luau-recap-march-2021/).]
|
|
|
|
## Typed variadics
|
|
|
|
Luau supports *variadic* functions, meaning ones which can take a variable number of arguments (varargs!) but previously there was no way to specify their type. Now you can!
|
|
```
|
|
function f(x: string, ...: number)
|
|
print(x)
|
|
print(...)
|
|
end
|
|
f("hi")
|
|
f("lo", 5, 27)
|
|
```
|
|
This function takes a string, plus as many numbers as you like, but if you try calling it with anything else, you'll get a type error, for example `f("oh", true)` gives an error " Type `boolean` could not be converted into `number`"
|
|
|
|
Variadics can be used in function declarations, and function types, for example
|
|
```
|
|
type T = {
|
|
sum: (...number) -> number
|
|
}
|
|
function f(x: T)
|
|
print(x.sum(1, 2, 3))
|
|
end
|
|
```
|
|
|
|
## Generic functions
|
|
|
|
[TODO]
|
|
|
|
## Typechecking improvements
|
|
|
|
* Check bodies of methods whose `self` has type `any`
|
|
* More precise types for `debug.*` methods
|
|
* Better typechecking for `Instance:IsA`.
|
|
|
|
## Performance improvements
|
|
|
|
* Significantly optimized non-variadic function calls, improving performance by up to 10% on call-heavy benchmarks
|
|
* Improve performance of `math.clamp`, `math.sign` and `math.round` by 2.3x, 2x and 1.6x respectively
|
|
* Optimized `coroutine.resume` with ~10% gains on coroutine-heavy benchmarks
|
|
|
|
## Library changes
|
|
|
|
* Added the `debug.info` function which allows retrieving information about stack frames or functions; similarly to `debug.getinfo` from Lua, this accepts an options string that must consist of characters `slnfa`; unlike Lua that returns a table, the function returns all requested values one after another to improve performance.
|
|
|
|
## New logo
|
|
|
|
Luau now has a shiny new logo!
|
|
|
|

|
|
|
|
## Coming soon...
|
|
|
|
* Generic variadics!
|
|
* Better treatment of cyclic requires!
|
|
* [Anything else?]
|