Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
52add6e
Sync to upstream/release/710
vegorov-rbx Feb 26, 2026
0668a4e
Merge branch 'upstream' into merge
vegorov-rbx Feb 26, 2026
96045ae
Sync to upstream/release/711
aatxe Mar 6, 2026
788ff67
Merge branch 'master' into merge
aatxe Mar 6, 2026
07dbd0a
Merge branch 'upstream' into merge
aatxe Mar 6, 2026
fc1dfcb
Sync to upstream/release/712
andyfriesen Mar 13, 2026
92b33d4
Fix merge conflicts.
andyfriesen Mar 13, 2026
91ba676
Fix compiler warnings.
andyfriesen Mar 13, 2026
06fd817
Fix a minor merge error.
andyfriesen Mar 13, 2026
b76fe8d
Merge branch 'upstream' into merge
andyfriesen Mar 13, 2026
befeee1
Sync to upstream/release/713
hgoldstein Mar 20, 2026
a7a76fb
Merge branch 'master' into merge
hgoldstein Mar 20, 2026
d12a67e
Merge branch 'upstream' into merge
hgoldstein Mar 20, 2026
d94b042
Bump timeout on bail_early_if_unification_is_too_complicated
hgoldstein Mar 20, 2026
2912ade
Sync to upstream/release/714
vrn-sn Mar 27, 2026
6e9a239
Merge branch 'master' into merge
vrn-sn Mar 27, 2026
030cd6a
Merge branch 'upstream' into merge
vrn-sn Mar 27, 2026
c324b79
Sync to upstream/release/715
skberkeley Apr 3, 2026
544ea22
Merge branch 'master' into merge
skberkeley Apr 3, 2026
45b5b31
Merge branch 'upstream' into merge
skberkeley Apr 3, 2026
ecbc90c
Sync to upstream/release/716
annieetang Apr 10, 2026
38a52ea
Merge branch 'master' into merge
annieetang Apr 10, 2026
eb24aa8
Merge branch 'upstream' into merge
annieetang Apr 10, 2026
9f7a556
Sync to upstream/release/717
hgoldstein Apr 17, 2026
d1b9b37
Merge branch 'master' into merge
hgoldstein Apr 17, 2026
fc1879b
Merge branch 'upstream' into merge
hgoldstein Apr 17, 2026
f3ac51d
Shot in the dark: dont try to use Client/* for LUAU_CONFORMANCE_SOURC…
hgoldstein Apr 20, 2026
0f3144f
Shot missed, instead add LUAU_CONFORMANCE_SOURCE_DIR to Makefile
hgoldstein Apr 20, 2026
f3f946b
Sync to upstream/release/718
SPY Apr 24, 2026
4b5f0e0
Merge branch 'master' into merge
SPY Apr 24, 2026
63e75f6
Merge branch 'upstream' into merge
SPY Apr 24, 2026
e9e5ea7
Sync to upstream/release/719
vegorov-rbx May 1, 2026
640b244
Merge branch 'master' into merge
vegorov-rbx May 1, 2026
842ea4d
Merge branch 'upstream' into merge
vegorov-rbx May 1, 2026
f040fa2
Minor sync fix
vegorov-rbx May 1, 2026
03a5879
Sync to upstream/release/720
aatxe May 8, 2026
17e042f
Merge branch 'master' into merge
aatxe May 8, 2026
9c3b02f
Merge branch 'upstream' into merge
aatxe May 8, 2026
429cf05
Sync to upstream/release/721
andyfriesen May 15, 2026
c533e95
Merge branch 'master' into merge
andyfriesen May 15, 2026
308bd1f
Merge branch 'upstream' into merge
andyfriesen May 15, 2026
6627f47
Reorder LBC* and add release notes for new classes bytecode.
hgoldstein May 15, 2026
437f4a3
Enable classes when running code coverage.
andyfriesen May 15, 2026
4791ae5
Sync to upstream/release/722
hgoldstein May 22, 2026
fa2b1b7
Merge branch 'master' into merge
hgoldstein May 22, 2026
8043476
Merge branch 'upstream' into merge
hgoldstein May 22, 2026
2fa3817
Sync to upstream/release/723
vrn-sn May 29, 2026
e60b7e2
Merge branch 'master' into merge
vrn-sn May 29, 2026
8b4b910
Merge branch 'upstream' into merge
vrn-sn May 29, 2026
95204f6
Skip parts of lowered assembly to make comparison more stable
vrn-sn May 29, 2026
1617cee
Sync to upstream/release/724
skberkeley Jun 5, 2026
6ac64ec
Merge branch 'master' into merge
skberkeley Jun 5, 2026
ccd5cbe
Merge branch 'upstream' into merge
skberkeley Jun 6, 2026
2e7f5d7
Sync to upstream/release/725
annieetang Jun 12, 2026
8702d2f
Merge branch 'master' into merge
annieetang Jun 12, 2026
9bc2f01
Merge branch 'upstream' into merge
annieetang Jun 12, 2026
1a29d6f
Fix MSVC warning in doctest.h by defining DOCTEST_CONFIG_USE_STD_HEAD…
annieetang Jun 12, 2026
a376376
Sync to upstream/release/726
Vighnesh-V Jun 18, 2026
accb71e
Merge branch 'master' into merge
Vighnesh-V Jun 18, 2026
775be95
Merge branch 'upstream' into merge
Vighnesh-V Jun 18, 2026
9128214
Sync to upstream/release/727
SPY Jun 26, 2026
061428c
Merge branch 'master' into merge
SPY Jun 26, 2026
936ec47
Merge branch 'upstream' into merge
SPY Jun 26, 2026
db67304
Increase debug limit for Win
SPY Jun 26, 2026
bd3e10e
Sync to upstream/release/728
vegorov-rbx Jul 2, 2026
e26090d
Merge branch 'master' into merge
vegorov-rbx Jul 2, 2026
6f78eea
Merge branch 'upstream' into merge
vegorov-rbx Jul 2, 2026
b38838c
Merge fixes
vegorov-rbx Jul 2, 2026
a2ac090
Fixed sync inconsistencies
vegorov-rbx Jul 2, 2026
9638dba
Missing include
vegorov-rbx Jul 2, 2026
88a1e78
Missing include
vegorov-rbx Jul 2, 2026
62d8329
Sync to upstream/release/729
hgoldstein Jul 10, 2026
3f414b9
Merge branch 'master' into merge
hgoldstein Jul 10, 2026
eeb3ef3
Merge branch 'upstream' into merge
hgoldstein Jul 10, 2026
8228ba0
Add static_cast in DensePointerHash implementation.
hgoldstein Jul 10, 2026
5102b2e
Sync to upstream/release/730
andyfriesen Jul 17, 2026
aa0c98d
Merge branch 'master' into merge
andyfriesen Jul 17, 2026
afd2a63
Merge branch 'upstream' into merge
andyfriesen Jul 17, 2026
c9d9ff8
_BitScanForward64 is only available on amd64.
andyfriesen Jul 17, 2026
a8c42dc
Fix the slow-path code.
andyfriesen Jul 17, 2026
a4e6a0d
Fix a sign mismatch warning on x86.
andyfriesen Jul 17, 2026
049b4ed
Fix another x86 warning.
andyfriesen Jul 17, 2026
f03886d
Sync to upstream/release/731
hgoldstein Jul 24, 2026
87d7508
Merge branch 'master' into merge
hgoldstein Jul 24, 2026
13f062b
Merge branch 'upstream' into merge
hgoldstein Jul 24, 2026
bf1e5e8
Fix merge conflicts with flag positions
hgoldstein Jul 24, 2026
f04bc18
Missing header, I suppose.
hgoldstein Jul 24, 2026
fa2efa7
Sync to upstream/release/732
annieetang Jul 31, 2026
4b1a68a
Merge branch 'master' into merge
annieetang Jul 31, 2026
5345b66
Merge branch 'upstream' into merge
annieetang Jul 31, 2026
0ed1add
Sync to upstream/release/733
skberkeley Aug 6, 2026
1765ed9
Merge branch 'master' into merge
skberkeley Aug 6, 2026
ee979d7
Merge branch 'upstream' into merge
skberkeley Aug 6, 2026
79f493e
Sync to upstream/release/734
annieetang Aug 14, 2026
8896703
Merge branch 'master' into merge
annieetang Aug 14, 2026
9f51dcb
Merge branch 'upstream' into merge
annieetang Aug 14, 2026
9d6f06a
Sync to upstream/release/735
Vighnesh-V Aug 21, 2026
51686f2
Merge branch 'master' into merge
Vighnesh-V Aug 21, 2026
0a8272d
Merge branch 'upstream' into merge
Vighnesh-V Aug 21, 2026
45d18a6
Resolve merge conflicts
Vighnesh-V Aug 21, 2026
868a021
not sure what happened, but I saw a duplication of two test cases ...
Vighnesh-V Aug 21, 2026
94e17fe
Sync to upstream/release/736
SPY Aug 28, 2026
bd72909
Merge branch 'master' into merge
SPY Aug 28, 2026
59a1863
Merge branch 'upstream' into merge
SPY Aug 28, 2026
845e424
Sync to upstream/release/737
vegorov-rbx Sep 4, 2026
4a59cc1
Merge branch 'master' into merge
vegorov-rbx Sep 4, 2026
3e9a9b2
Merge branch 'upstream' into merge
vegorov-rbx Sep 4, 2026
74f9258
Sync fixup
vegorov-rbx Sep 4, 2026
270c8e5
Fix for coverage build
vegorov-rbx Sep 4, 2026
670a68b
Sync to upstream/release/738
andyfriesen Sep 11, 2026
4163619
Merge branch 'master' into merge
andyfriesen Sep 11, 2026
2de71a2
Merge branch 'upstream' into merge
andyfriesen Sep 11, 2026
e7f4eca
Sync to upstream/release/739
andyfriesen Sep 18, 2026
78f3324
Merge branch 'master' into merge
andyfriesen Sep 18, 2026
5a6139e
Merge branch 'upstream' into merge
andyfriesen Sep 18, 2026
9f68255
Fix a merge glitch.
andyfriesen Sep 18, 2026
061ac26
Sync to upstream/release/740
hgoldstein Sep 25, 2026
76bf646
Merge branch 'master' into merge
hgoldstein Sep 25, 2026
de564c2
Merge branch 'upstream' into merge
hgoldstein Sep 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 36 additions & 3 deletions Analysis/include/Luau/Constraint.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

#include "Luau/Ast.h" // Used for some of the enumerations
#include "Luau/DenseHash.h"
#include "Luau/IterativeTypeVisitor.h"
#include "Luau/NotNull.h"
#include "Luau/Variant.h"
#include "Luau/TypeFwd.h"
Expand Down Expand Up @@ -331,8 +332,14 @@ struct Constraint
/**
* Return the types and type packs that may be mutated by this constraint.
* Currently we do not do anything with type packs.
* clip with LuauReferenceCountInitializerIsIterative
*/
std::pair<TypeIds, TypePackIds> getMaybeMutatedTypes() const;
std::pair<TypeIds, TypePackIds> getMaybeMutatedTypes_DEPRECATED() const;

/**
* Return the types and type packs that may be mutated by this constraint.
*/
std::pair<TypeIds, TypePackIds> getMaybeMutatedTypesIn(NotNull<TypeArena> currentArena) const;
};

using ConstraintPtr = std::unique_ptr<Constraint>;
Expand All @@ -357,13 +364,39 @@ const T* get(const Constraint& c)
return getMutable<T>(asMutable(c));
}

struct ReferenceCountInitializer : TypeOnceVisitor
struct ReferenceCountInitializer_DEPRECATED : TypeOnceVisitor
{
NotNull<TypeIds> mutatedTypes;
TypePackIds* mutatedTypePacks;
bool traverseIntoTypeFunctions = true;

explicit ReferenceCountInitializer(NotNull<TypeIds> mutatedTypes, NotNull<TypePackIds> mutatedTypePacks);
explicit ReferenceCountInitializer_DEPRECATED(NotNull<TypeIds> mutatedTypes, NotNull<TypePackIds> mutatedTypePacks);

bool visit(TypeId ty, const FreeType&) override;

bool visit(TypeId ty, const BlockedType&) override;

bool visit(TypeId ty, const PendingExpansionType&) override;

bool visit(TypeId ty, const TableType& tt) override;

bool visit(TypeId ty, const ExternType&) override;

bool visit(TypeId, const TypeFunctionInstanceType& tfit) override;

bool visit(TypePackId tp, const BlockedTypePack&) override;
bool visit(TypePackId tp, const FreeTypePack&) override;
};

struct ReferenceCountInitializer : IterativeTypeVisitor
{
NotNull<TypeArena> currentArena;
NotNull<TypeIds> mutatedTypes;
NotNull<TypePackIds> mutatedTypePacks;

explicit ReferenceCountInitializer(NotNull<TypeArena> currentArena, NotNull<TypeIds> mutatedTypes, NotNull<TypePackIds> mutatedTypePacks);

bool visit(TypeId ty) override;

bool visit(TypeId ty, const FreeType&) override;

Expand Down
4 changes: 2 additions & 2 deletions Analysis/include/Luau/ConstraintGenerator.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
#include "Luau/NotNull.h"
#include "Luau/Polarity.h"
#include "Luau/Refinement.h"
#include "Luau/Set.h"
#include "Luau/DenseHash.h"
#include "Luau/Symbol.h"
#include "Luau/TypeFwd.h"
#include "Luau/TypeIds.h"
Expand Down Expand Up @@ -201,7 +201,7 @@ struct ConstraintGenerator

std::vector<TypeId> unionsToSimplify;

Set<AstName> uninitializedGlobals;
DenseHashSet<AstName> uninitializedGlobals;

Polarity polarity = Polarity::None;

Expand Down
1 change: 0 additions & 1 deletion Analysis/include/Luau/ConstraintGraph.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
#pragma once

#include "Luau/Constraint.h"
#include "Luau/Set.h"
#include "Luau/ToString.h"
#include "Luau/Type.h"

Expand Down
4 changes: 2 additions & 2 deletions Analysis/include/Luau/ConstraintSolver.h
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ struct ConstraintSolver
TypeId subjectType,
TypeId indexType,
TypeId resultType,
Set<TypeId>& seen
DenseHashSet<TypeId>& seen
);
bool tryDispatch(const HasIndexerConstraint& c, NotNull<const Constraint> constraint);

Expand Down Expand Up @@ -272,7 +272,7 @@ struct ConstraintSolver
ValueContext context,
bool inConditional,
bool suppressSimplification,
Set<TypeId>& seen
DenseHashSet<TypeId>& seen
);

/**
Expand Down
3 changes: 1 addition & 2 deletions Analysis/include/Luau/ControlFlowGraph.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
#include "Luau/Symbol.h"
#include "Luau/TypedAllocator.h"
#include "Luau/Variant.h"
#include "Luau/Set.h"

#include <memory>
#include <optional>
Expand Down Expand Up @@ -412,7 +411,7 @@ struct CFGBuilder
DenseHashMap<Symbol, size_t> versionCounter;

// Maps defs to the Instructions that use them
DenseHashMap<Definition*, Set<Instruction*>> usingInstructions;
DenseHashMap<Definition*, DenseHashSet<Instruction*>> usingInstructions;
};

} // namespace Luau::CFG
3 changes: 1 addition & 2 deletions Analysis/include/Luau/Frontend.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
#include "Luau/ModuleResolver.h"
#include "Luau/RequireTracer.h"
#include "Luau/Scope.h"
#include "Luau/Set.h"
#include "Luau/TypeCheckLimits.h"

#include <mutex>
Expand Down Expand Up @@ -83,7 +82,7 @@ struct SourceNode
DenseHashSet<ModuleName> requireSet;

std::vector<std::pair<ModuleName, Location>> requireLocations;
Set<ModuleName> dependents;
DenseHashSet<ModuleName> dependents;

bool dirtySourceModule = true;
bool dirtyModule = true;
Expand Down
2 changes: 1 addition & 1 deletion Analysis/include/Luau/Generalization.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ GeneralizationResult<TypePackId> generalizeTypePack(
const GeneralizationParams<TypePackId>& params
);

void sealTable(NotNull<Scope> scope, TypeId ty);
void sealTable(NotNull<Scope> scope, TypeId ty, TableState targetState);


/** Attempt to generalize a type.
Expand Down
4 changes: 2 additions & 2 deletions Analysis/include/Luau/IterativeTypeFunctionTypeVisitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@

#include "Luau/TypeFunctionRuntime.h"
#include "Luau/TypeFwd.h"
#include "Luau/Set.h"
#include "Luau/DenseHash.h"

namespace Luau
{

struct IterativeTypeFunctionTypeVisitor
{
using SeenSet = Set<const void*>;
using SeenSet = DenseHashSet<const void*>;

// We avoid Luau::Variant here because we can move the tag bit and make this struct 64 bits shorter.
struct WorkItem
Expand Down
4 changes: 2 additions & 2 deletions Analysis/include/Luau/IterativeTypeVisitor.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

#include "Luau/Type.h"
#include "Luau/TypePack.h"
#include "Luau/Set.h"
#include "Luau/DenseHash.h"

#include <string>

Expand All @@ -12,7 +12,7 @@ namespace Luau

struct IterativeTypeVisitor
{
using SeenSet = Set<const void*>;
using SeenSet = DenseHashSet<const void*>;

// We avoid Luau::Variant here because we can move the tag bit and make this struct 64 bits shorter.
struct WorkItem
Expand Down
29 changes: 18 additions & 11 deletions Analysis/include/Luau/Normalize.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
#pragma once

#include "Luau/NotNull.h"
#include "Luau/Set.h"
#include "Luau/DenseHash.h"
#include "Luau/TypeFwd.h"
#include "Luau/TypeIds.h"
#include "Luau/UnifierSharedState.h"
Expand Down Expand Up @@ -297,7 +297,7 @@ struct NormalizedType
};


using SeenTablePropPairs = Set<std::pair<TypeId, TypeId>, TypeIdPairHash>;
using SeenTablePropPairs = DenseHashSet<std::pair<TypeId, TypeId>, TypeIdPairHash>;

class Normalizer
{
Expand Down Expand Up @@ -380,7 +380,7 @@ class Normalizer
NormalizedType& here,
TypeId there,
SeenTablePropPairs& seenTablePropPairs,
Set<TypeId>& seenSetTypes,
DenseHashSet<TypeId>& seenSetTypes,
int ignoreSmallerTyvars = -1
);

Expand All @@ -399,8 +399,10 @@ class Normalizer
void intersectExternTypesWithExternType(NormalizedExternType& heres, TypeId there);
void intersectExternTypesWithShape(NormalizedExternType& heres, TypeId there);
void intersectStrings(NormalizedStringType& here, const NormalizedStringType& there);
std::optional<TypeId> intersectionOfTables(TypeId here, TypeId there, SeenTablePropPairs& seenTablePropPairs, Set<TypeId>& seenSet);
void intersectTablesWithTable(TypeIds& heres, TypeId there, SeenTablePropPairs& seenTablePropPairs, Set<TypeId>& seenSetTypes);
bool hasStringIndexer(const TableType* tt);
std::optional<TypeId> intersectionOfTables(TypeId here, TypeId there, SeenTablePropPairs& seenTablePropPairs, DenseHashSet<TypeId>& seenSet);
std::optional<TypeId> DEPRECATED_intersectionOfTables(TypeId here, TypeId there, SeenTablePropPairs& seenTablePropPairs, DenseHashSet<TypeId>& seenSet);
void intersectTablesWithTable(TypeIds& heres, TypeId there, SeenTablePropPairs& seenTablePropPairs, DenseHashSet<TypeId>& seenSetTypes);
void intersectTables(TypeIds& heres, const TypeIds& theres);
std::optional<TypeId> intersectionOfFunctions(TypeId here, TypeId there);
void intersectFunctionsWithFunction(NormalizedFunctionType& heress, TypeId there);
Expand All @@ -409,22 +411,27 @@ class Normalizer
NormalizedTyvars& here,
TypeId there,
SeenTablePropPairs& seenTablePropPairs,
Set<TypeId>& seenSetTypes
DenseHashSet<TypeId>& seenSetTypes
);
NormalizationResult intersectNormals(NormalizedType& here, const NormalizedType& there, int ignoreSmallerTyvars = -1);
NormalizationResult intersectNormalWithTy(NormalizedType& here, TypeId there, SeenTablePropPairs& seenTablePropPairs, Set<TypeId>& seenSetTypes);
NormalizationResult intersectNormalWithTy(
NormalizedType& here,
TypeId there,
SeenTablePropPairs& seenTablePropPairs,
DenseHashSet<TypeId>& seenSetTypes
);
NormalizationResult normalizeIntersections(
const std::vector<TypeId>& intersections,
NormalizedType& outType,
SeenTablePropPairs& seenTablePropPairs,
Set<TypeId>& seenSet
DenseHashSet<TypeId>& seenSet
);

NormalizationResult isInhabited(TypeId ty, Set<TypeId>& seen);
NormalizationResult isInhabited(const NormalizedType* norm, Set<TypeId>& seen);
NormalizationResult isInhabited(TypeId ty, DenseHashSet<TypeId>& seen);
NormalizationResult isInhabited(const NormalizedType* norm, DenseHashSet<TypeId>& seen);

// Check for intersections being inhabited
NormalizationResult isIntersectionInhabited(TypeId left, TypeId right, SeenTablePropPairs& seenTablePropPairs, Set<TypeId>& seenSet);
NormalizationResult isIntersectionInhabited(TypeId left, TypeId right, SeenTablePropPairs& seenTablePropPairs, DenseHashSet<TypeId>& seenSet);


// Fuel setup
Expand Down
Loading
Loading