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/591 #1012

Merged
merged 161 commits into from
Aug 18, 2023
Merged

Sync to upstream/release/591 #1012

merged 161 commits into from
Aug 18, 2023

Conversation

andyfriesen
Copy link
Collaborator

@andyfriesen andyfriesen commented Aug 18, 2023

  • Fix a use-after-free bug in the new type cloning algorithm
  • Tighten up the type of coroutine.wrap. It is now <A..., R...>(f: (A...) -> R...) -> ((A...) -> R...)
  • Break .luaurc out into a separate library target Luau.Config. This makes it easier for applications to reason about config files without also depending on the type inference engine.
  • Move typechecking limits into FrontendOptions. This allows embedders more finely-grained control over autocomplete's internal time limits.
  • Fix stability issue with debugger debugprotectederror callback allowing break in non-yieldable contexts

New solver:

  • Initial work toward Local Type Inference
  • Introduce a new subtyping test. This will be much nicer than the old test because it is completely separate both from actual type inference and from error reporting.

Native code generation:

  • Added function to compute iterated dominance frontier
  • Optimize barriers in SET_UPVALUE when tag is known
  • Cache lua_State::global in a register on A64
  • Optimize constant stores in A64 lowering
  • Track table array size state to optimize array size checks
  • Add split tag/value store into a VM register
  • Check that spills can outlive the block only in specific conditions

vegorov-rbx and others added 28 commits June 9, 2023 15:46
…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
Copy link
Collaborator

@vegorov-rbx vegorov-rbx left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a note about debugger fix to the description

@andyfriesen andyfriesen merged commit e25b0a6 into master Aug 18, 2023
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.

3 participants