Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sync to upstream/release/596 #1050

Merged
merged 177 commits into from
Sep 22, 2023
Merged

Sync to upstream/release/596 #1050

merged 177 commits into from
Sep 22, 2023

Conversation

aatxe
Copy link
Collaborator

@aatxe aatxe commented Sep 22, 2023

  • Cleaned up FFlag::FixFindBindingAtFunctionName, FFlag::LuauNormalizeBlockedTypes, FFlag::LuauPCallDebuggerFix
  • Added support for break and continue into control flow analysis
  • The old type unification engine will now report a more fine-grained error at times, indicating that type normalization in particular failed

New Type Solver

  • Refactor of Unifier2, the new unification implementation for Luau
  • Completed MVP of new unification implementation
  • Dramatically simplified overload selection logic
  • Type family reduction can now apply sooner to free types that have been solved
  • Subtyping now supports table indexers
  • Generalization now replaces bad generics with unknown

Native Code Generation

  • Reduce stack spills caused by FINDUPVAL and STORE_TAG
  • Improve Generate SHL/SHR/SAR/rotates with immediate operands in X64
  • Removed redundant case re-check in table lookup fallback

vegorov-rbx and others added 27 commits July 28, 2023 15:05
…ll be useful for writing clearer error messages.

* Add a missing recursion limiter in `Unifier::tryUnifyTables`.  This was causing a crash in certain situations.
* Luau heap graph enumeration improvements:
    * Weak references are not reported
    * Added tag as a fallback name of non-string table links
    * Included top Luau function information in thread name to understand where thread might be suspended
* Constant folding for `math.pi` and `math.huge` at -O2
* Optimize `string.format` and `%*`
    * This change makes string interpolation 1.5x-2x faster depending on the number and type of formatted components, assuming a few are using primitive types, and reduces associated GC pressure.

New solver

* Initial work toward tracking the upper and lower bounds of types more accurately.

JIT

* Add IrCmd::CHECK_TRUTHY for improved assert fast-calls
* Do not compute type map for modules without types
* Capture metatable+readonly state for NEW_TABLE IR instructions
* Replace JUMP_CMP_ANY with CMP_ANY and existing JUMP_EQ_INT
* Add support for exits to VM with reentry lock in VmExit
@aatxe aatxe requested a review from vegorov-rbx September 22, 2023 18:56
@aatxe aatxe merged commit 16fbfe9 into master Sep 22, 2023
4 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

5 participants