mirror of
https://github.com/luau-lang/luau.git
synced 2025-05-04 10:33:46 +01:00
# What's Changed? Hi there, folks! It's been another busy week in the type mines, trying to bring you all the very best type inference system we can. We've got a bunch of updates to large pain points across the new type solver, and our next big update (currently under a debug flag) improving type generalization is finally nearing completion (and should hopefully eliminate quite a lot of "type solver failed to complete" errors). We've also continued polishing both the CST Parser and the `Luau.Require` library we introduced a few releases ago based on user feedback and bug reports, and we're really happy with how they're turning out. # Parser - Fixes a bug in the CST tooling where the spacing on return type annotations for functions was not being printed correctly. - Resolves some issues with the JSON encoding of `AstGenericType` and `AstGenericTypePack` # Runtime - Implements support for yielding requires in `Luau.Require` library. - Improves the error messages for require-by-string to include the chunk name that was problematic where possible and the overall require path that failed to be required. - Fixes a bug that prevented the use of `require` within C functions and `pcall`. - Adds an API to support selectively removing chunks from the require cache in `Luau.Require` - Adds an API to support clearing the entire require cache in `Luau.Require` # New Type Solver - Fixes a crash in the new non-strict mode when visiting function return types in incomplete ASTs (e.g. during editing). - Improves type simplification to support intersections of tables with extern types, resolving _one_ of the causes of frequent refinements unexpectedly leading to `never`. - Improves type inference to better understand diverging branches in functions, reducing false negatives where the type system fails to learn that a binding must now always be initialized. - Fixes a typo in the type definitions for user-defined function types where the `intersection` tag was misspelled. - Improves the overall accuracy of free type tracking during constraint solving, leading to better inference results overall. - Implements `types.optional` as a new library function for user-defined type functions to make it easier to union a type with `nil`. - Resolves a number of bugs caused by local type inference expanding the domain of upvalues # Internal Contributors Co-authored-by: Andy Friesen <afriesen@roblox.com> Co-authored-by: Ariel Weiss <aaronweiss@roblox.com> Co-authored-by: Hunter Goldstein <hgoldstein@roblox.com> Co-authored-by: Talha Pathan <tpathan@roblox.com> Co-authored-by: Varun Saini <vsaini@roblox.com> Co-authored-by: Vighnesh Vijay <vvijay@roblox.com> --------- Co-authored-by: Hunter Goldstein <hgoldstein@roblox.com> Co-authored-by: Varun Saini <61795485+vrn-sn@users.noreply.github.com> Co-authored-by: Alexander Youngblood <ayoungblood@roblox.com> Co-authored-by: Menarul Alam <malam@roblox.com> Co-authored-by: Aviral Goel <agoel@roblox.com> Co-authored-by: Vighnesh <vvijay@roblox.com> Co-authored-by: Vyacheslav Egorov <vegorov@roblox.com> Co-authored-by: Andy Friesen <afriesen@roblox.com> |
||
---|---|---|
.. | ||
PathUtilities.h | ||
RequireNavigator.h |