news-2023-07-28-luau-recap-july-2023.md
July 28, 2023
Our team is still spending a lot of time working on upcoming replacement for our type inference engine as well as working on native code generation to improve runtime performance.
However, we also worked on unrelated improvements during this time that are summarized here.
Indexing table intersections using x["prop"] syntax has been fixed and no longer reports a false positive error:
Generic T... type is now convertible to ...any variadic parameter.
This solves issues people had with variadic functions and variadic argument:
We have also improved our general typechecking performance by ~17% and by additional ~30% in modules with complex types.
Other fixes include:
T? not being convertible to T | T or T? which could’ve generated confusing errorsos.date is now inferred as DateTypeResult when argument is “*t” or ”!*t”Out-of-memory exception handling has been improved. xpcall handlers will now actually be called with a “not enough memory” string and whatever string/object they return will be correctly propagated.
Other runtime improvements we’ve made:
table.sort was improved further. It now guarantees N*log(N) time complexity in the worst casetable.concat was improved by ~5-7%math.noise was improved by ~30%An issue with exported types not being suggested is now fixed.
We have fixed the search for the closest executable breakpoint line.
Previously, breakpoints might have been skipped in else blocks at the end of a function. This simplified example shows the issue:
A very special thanks to all of our open source contributors: