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

GSB: New algorithm for computing redundant requirements #37154

Merged

Conversation

slavapestov
Copy link
Member

@slavapestov slavapestov commented Apr 30, 2021

This PR now contains changes from two PRs.

First PR

This rewrites the existing redundant requirements algorithm to be simpler, and fix an incorrect behavior in the case where
we're building a protocol requirement signature.

Consider the following example:

protocol P {
  associatedtype A : P
  associatedtype B : P where A.B == B
}

The requirement B : P has two conformance paths here:

(B : P)
(A : P)(B : P)

The naive redundancy algorithm would conclude that (B : P) is redundant because it can be derived as (A : P)(B : P). However, if we drop (B : P), we lose the derived conformance path as well, since it involves the same requirement (B : P).

The above example actually worked before this change, because we handled this case in getMinimalConformanceSource() by dropping any derived conformance paths that involve the requirement itself appearing in the "middle" of the path.

However, this is insufficient because you can have a "cycle" here with length more than 1. For example,

protocol P {
  associatedtype A : P where A == B.C
  associatedtype B : P where B == A.C
  associatedtype C : P where C == A.B
}

The requirement A : P has two conformance paths here:

(A : P)
(B : P)(C : P)

Similarly, B : P has these two paths:

(B : P)
(A : P)(C : P)

And C : P has these two paths:

(C : P)
(A : P)(B : P)

Since each one of A : P, B : P and C : P has a derived conformance path that does not involve itself, we would conclude that all three were redundant. But this was wrong; while (B : P)(C : P) is a valid derived path for A : P that allows us to drop A : P, once we commit to dropping A : P, we can no longer use the other derived paths (A : P)(C : P) for B : P, and (A : P)(B : P) for C : P, respectively, because they involve A : P, which we dropped.

The problem is that we were losing information here. The explicit requirement A : P can be derived as (B : P)(C : P), but we would just say that it was implied by B : P alone.

For non-protocol generic signatures, just looking at the root is still sufficient.

However, when building a requirement signature of a self-recursive protocol, instead of looking at the root explicit requirement only, we need to look at all intermediate steps in the path that involve the same protocol.

This is implemented in a new getBaseRequirements() method, which generalizes the operation of getting the explicit requirement at the root of a derived conformance path by returning a vector of one or more explicit requirements that appear in the path.

Also the new algorithm computes redundancy online instead of building a directed graph and then computing SCCs. This is possible by recording newly-discovered redundant requirements immediately, and then using the set of so-far-redundant requirements when evaluating a path.

Fixes https://bugs.swift.org/browse/SR-14510 / rdar://problem/76883924.

Second PR

Consider this example:

protocol P1 {
  associatedtype A : P2
}

protocol P2 {
  associatedtype A
}

func foo<T : P2>(_: T) where T.A : P1, T.A.A == T {}

We cannot drop 'T : P2', even though it can be derived from T.A.A == T and Self.A : P2 in protocol P1, because we actually
need the conformance T : P2 in order to recover the concrete type for T.A.

This was handled via a hack which would ensure that the conformance path (T.A : P1)(Self.A : P2) was not a candidate
derivation for T : P2, because T : P2 is one of the conformances used to construct the subject type T.A in the conformance path.

This hack did not generalize to "cycles" of length greater than 1 however:

func foo<T : P2, U : P2>(_: T, _: U)
  where T.A : P1, T.A.A == U, U.A : P1, U.A.A == T {}

We used to drop both T : P2 and U : P2, because each one had a conformance path (U.A : P1)(Self.A : P2) and (T.A : P1)(Self.A : P2), respectively; however, once we drop T : P2 and U : P2, these two paths become invalid for the same reason that the concrete type for T.A and U.A can no longer be recovered.

The correct fix is to recursively visit the subject type of each base requirement when evaluating a conformance path, and not consider any requirement whose subject type's parent type cannot be recovered.

In the worst case, this algorithm is exponential in the number of conformance requirements, but it is not always exponential, and a generic signature is not going to have a large number of conformance requirements anyway (hopefully). Also, the old logic in getMinimalConformanceSource() wasn't cheap either.

Perhaps some clever memoization can speed this up too, but I'm going to focus on correctness first, before looking at performance here.

Fixes rdar://problem/74890907.

@slavapestov
Copy link
Member Author

@swift-ci Please test source compatibility

@slavapestov
Copy link
Member Author

@swift-ci Please smoke test

@slavapestov
Copy link
Member Author

@swift-ci Please test macOS

@slavapestov slavapestov force-pushed the new-redundant-requirements-algorithm-part-2 branch from bb85c00 to df0a43d Compare May 1, 2021 02:53
@slavapestov slavapestov changed the title GSB: Replace 'self derived' check with a more sound notion of well-foundedness GSB: New algorithm for computing redundant requirements May 1, 2021
@slavapestov slavapestov force-pushed the new-redundant-requirements-algorithm-part-2 branch 2 times, most recently from 40c6cfb to 434600b Compare May 3, 2021 19:27
@slavapestov
Copy link
Member Author

@swift-ci Please test

@slavapestov
Copy link
Member Author

@swift-ci Please test source compatibility

@slavapestov
Copy link
Member Author

@swift-ci Please test compiler performance

@slavapestov
Copy link
Member Author

@swift-ci Please test source compatibility debug

@slavapestov
Copy link
Member Author

@swift-ci Please test Windows

@swift-ci
Copy link
Collaborator

swift-ci commented May 4, 2021

Summary for main full

Regressions found (see below)

Debug-batch

debug-batch brief

Regressed (2)
name old new delta delta_pct
Frontend.NumInstructionsExecuted 19,656,623,810,457 92,154,372,578,897 72,497,748,768,440 368.82% ⛔
LLVM.NumLLVMBytesOutput 820,767,508 1,641,567,140 820,799,632 100.0% ⛔
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (0)
name old new delta delta_pct

debug-batch detailed

Regressed (215)
name old new delta delta_pct
AST.ImportSetCacheHit 1,014,673 1,943,539 928,866 91.54% ⛔
AST.ImportSetCacheMiss 195,796 423,560 227,764 116.33% ⛔
AST.ImportSetFoldHit 73,834 137,071 63,237 85.65% ⛔
AST.ImportSetFoldMiss 121,961 286,488 164,527 134.9% ⛔
AST.ModuleShadowCacheHit 1,509 3,698 2,189 145.06% ⛔
AST.ModuleShadowCacheMiss 603 1,668 1,065 176.62% ⛔
AST.ModuleVisibilityCacheHit 22,976 52,690 29,714 129.33% ⛔
AST.ModuleVisibilityCacheMiss 3,505 7,724 4,219 120.37% ⛔
AST.NumASTBytesAllocated 19,460,093,704 46,358,356,359 26,898,262,655 138.22% ⛔
AST.NumASTScopeExpansions 2,814,694 5,545,167 2,730,473 97.01% ⛔
AST.NumASTScopeLookups 2,770,820 5,534,812 2,763,992 99.75% ⛔
AST.NumDecls 62,233 131,483 69,250 111.28% ⛔
AST.NumDependencies 182,137 358,107 175,970 96.61% ⛔
AST.NumIncrementalDependencies 6,150 14,054 7,904 128.52% ⛔
AST.NumLoadedModules 115,768 272,491 156,723 135.38% ⛔
AST.NumLocalTypeDecls 173 248 75 43.35% ⛔
AST.NumModuleLookupClassMember 3,437 6,793 3,356 97.64% ⛔
AST.NumModuleLookupValue 32,294,217 55,984,515 23,690,298 73.36% ⛔
AST.NumObjCMethods 23,444 26,928 3,484 14.86% ⛔
AST.NumOperators 353 581 228 64.59% ⛔
AST.NumPrecedenceGroups 57 93 36 63.16% ⛔
AST.NumReferencedDynamicNames 75 155 80 106.67% ⛔
AST.NumReferencedMemberNames 5,673,080 10,133,084 4,460,004 78.62% ⛔
AST.NumReferencedTopLevelNames 535,076 1,019,711 484,635 90.57% ⛔
AST.NumSourceBuffers 184,085 367,303 183,218 99.53% ⛔
AST.NumSourceLines 2,252,828 4,438,068 2,185,240 97.0% ⛔
AST.NumSourceLinesPerSecond 1,361,409 3,163,800 1,802,391 132.39% ⛔
AST.NumTotalClangImportedEntities 1,934,379 3,705,135 1,770,756 91.54% ⛔
Frontend.MaxMallocUsage 331,060,829,416 797,833,794,344 466,772,964,928 140.99% ⛔
Frontend.NumInstructionsExecuted 19,656,623,810,457 92,154,372,578,897 72,497,748,768,440 368.82% ⛔
Frontend.NumProcessFailures 26 29 3 11.54% ⛔
IRGen.IRGenRequest 11,895 23,649 11,754 98.81% ⛔
IRModule.NumGOTEntries 96,180 216,285 120,105 124.88% ⛔
IRModule.NumIRAliases 102,590 184,848 82,258 80.18% ⛔
IRModule.NumIRBasicBlocks 3,112,888 6,922,663 3,809,775 122.39% ⛔
IRModule.NumIRFunctions 1,580,275 3,232,717 1,652,442 104.57% ⛔
IRModule.NumIRGlobals 1,695,058 3,258,584 1,563,526 92.24% ⛔
IRModule.NumIRInsts 35,287,806 72,700,430 37,412,624 106.02% ⛔
IRModule.NumIRNamedMetaData 61,620 120,430 58,810 95.44% ⛔
IRModule.NumIRValueSymbols 3,050,410 6,043,276 2,992,866 98.11% ⛔
LLVM.NumLLVMBytesOutput 820,767,508 1,641,567,140 820,799,632 100.0% ⛔
Parse.NumFunctionsParsed 124,822 259,361 134,539 107.78% ⛔
Parse.NumIterableDeclContextParsed 281,331 599,997 318,666 113.27% ⛔
Parse.ParseAbstractFunctionBodyRequest 112,119 239,125 127,006 113.28% ⛔
Parse.ParseMembersRequest 412,681 859,134 446,453 108.18% ⛔
Parse.ParseSourceFileRequest 178,617 353,137 174,520 97.71% ⛔
SILGen.ASTLoweringRequest 12,467 24,792 12,325 98.86% ⛔
SILModule.NumSILGenFunctions 983,764 2,054,952 1,071,188 108.89% ⛔
SILModule.NumSILGenGlobalVariables 21,261 54,943 33,682 158.42% ⛔
SILModule.NumSILGenVtables 12,010 25,531 13,521 112.58% ⛔
SILModule.NumSILGenWitnessTables 64,869 127,845 62,976 97.08% ⛔
SILModule.NumSILOptFunctions 1,182,040 2,522,672 1,340,632 113.42% ⛔
SILModule.NumSILOptGlobalVariables 22,102 56,566 34,464 155.93% ⛔
SILModule.NumSILOptVtables 12,038 25,626 13,588 112.88% ⛔
SILModule.NumSILOptWitnessTables 82,122 169,759 87,637 106.72% ⛔
SILOptimizer.ExecuteSILPipelineRequest 48,173 95,784 47,611 98.83% ⛔
Sema.ABIMembersRequest 43,108 92,065 48,957 113.57% ⛔
Sema.AbstractGenericSignatureRequest 15,148 33,806 18,658 123.17% ⛔
Sema.AccessLevelRequest 4,764,197 14,270,794 9,506,597 199.54% ⛔
Sema.ActorIsolationRequest 1,324,927 2,732,130 1,407,203 106.21% ⛔
Sema.AllMembersRequest 76,017 165,652 89,635 117.91% ⛔
Sema.AnyObjectLookupRequest 107 224 117 109.35% ⛔
Sema.ApplyAccessNoteRequest 950,867 1,970,980 1,020,113 107.28% ⛔
Sema.AreAllStoredPropertiesDefaultInitableRequest 9,136 19,839 10,703 117.15% ⛔
Sema.AttachedPropertyWrapperTypeRequest 4,006 10,622 6,616 165.15% ⛔
Sema.AttachedPropertyWrappersRequest 58,988,811 123,042,845 64,054,034 108.59% ⛔
Sema.AttachedResultBuilderRequest 318,020 658,656 340,636 107.11% ⛔
Sema.BodyInitKindRequest 21,800 44,828 23,028 105.63% ⛔
Sema.CallerSideDefaultArgExprRequest 45,536 102,947 57,411 126.08% ⛔
Sema.CheckInconsistentImplementationOnlyImportsRequest 3,699 8,775 5,076 137.23% ⛔
Sema.CheckRedeclarationRequest 433,520 903,371 469,851 108.38% ⛔
Sema.ClassAncestryFlagsRequest 54,863 99,009 44,146 80.47% ⛔
Sema.ClosureHasExplicitResultRequest 36,913 84,630 47,717 129.27% ⛔
Sema.CollectOverriddenDeclsRequest 2,575,023 8,652,188 6,077,165 236.0% ⛔
Sema.CompareDeclSpecializationRequest 226,742 473,314 246,572 108.75% ⛔
Sema.ConditionalRequirementsRequest 209,076 476,683 267,607 128.0% ⛔
Sema.CustomAttrNominalRequest 1,382 2,058 676 48.91% ⛔
Sema.CustomAttrTypeRequest 490 866 376 76.73% ⛔
Sema.DefaultAndMaxAccessLevelRequest 26,169 55,881 29,712 113.54% ⛔
Sema.DefaultArgumentExprRequest 19,570 36,482 16,912 86.42% ⛔
Sema.DefaultArgumentInitContextRequest 153 276 123 80.39% ⛔
Sema.DefaultDefinitionTypeRequest 2,801 6,250 3,449 123.13% ⛔
Sema.DefaultTypeRequest 113,687 247,696 134,009 117.88% ⛔
Sema.DerivativeAttrOriginalDeclRequest 0 8 8 100.0% ⛔
Sema.DirectLookupRequest 20,291,730 36,669,700 16,377,970 80.71% ⛔
Sema.DirectOperatorLookupRequest 662,918 1,285,495 622,577 93.91% ⛔
Sema.DirectPrecedenceGroupLookupRequest 356,502 611,660 255,158 71.57% ⛔
Sema.DynamicallyReplacedDeclRequest 480,000 1,036,751 556,751 115.99% ⛔
Sema.EnumRawTypeRequest 12,084 25,275 13,191 109.16% ⛔
Sema.EnumRawValuesRequest 5,504 10,712 5,208 94.62% ⛔
Sema.ExistentialConformsToSelfRequest 8,502 17,954 9,452 111.17% ⛔
Sema.ExistentialTypeSupportedRequest 8,281 15,438 7,157 86.43% ⛔
Sema.ExtendedNominalRequest 295,797 611,084 315,287 106.59% ⛔
Sema.ExtendedTypeRequest 34,856 74,011 39,155 112.33% ⛔
Sema.FragileFunctionKindRequest 683,742 1,449,612 765,870 112.01% ⛔
Sema.FunctionOperatorRequest 5,558 9,583 4,025 72.42% ⛔
Sema.GenericParamListRequest 2,171,407 4,691,228 2,519,821 116.05% ⛔
Sema.GenericSignatureRequest 1,304,523 2,638,735 1,334,212 102.28% ⛔
Sema.GetDestructorRequest 12,126 23,301 11,175 92.16% ⛔
Sema.GetImplicitSendableRequest 75,210 209,066 133,856 177.98% ⛔
Sema.GlobalActorAttributeRequest 1,575,253 3,287,750 1,712,497 108.71% ⛔
Sema.GlobalActorInstanceRequest 110 200 90 81.82% ⛔
Sema.HasCircularInheritedProtocolsRequest 5,140 9,632 4,492 87.39% ⛔
Sema.HasCircularRawValueRequest 3,767 8,809 5,042 133.85% ⛔
Sema.HasDefaultInitRequest 22,762 49,805 27,043 118.81% ⛔
Sema.HasDynamicMemberLookupAttributeRequest 257,464 546,190 288,726 112.14% ⛔
Sema.HasImplementationOnlyImportsRequest 177,921 350,100 172,179 96.77% ⛔
Sema.HasMemberwiseInitRequest 8,712 21,027 12,315 141.36% ⛔
Sema.HasMissingDesignatedInitializersRequest 10,058 21,356 11,298 112.33% ⛔
Sema.HasUserDefinedDesignatedInitRequest 22,774 49,817 27,043 118.75% ⛔
Sema.InferredGenericSignatureRequest 91,990 157,672 65,682 71.4% ⛔
Sema.InheritedDeclsReferencedRequest 2,838,067 6,141,815 3,303,748 116.41% ⛔
Sema.InheritedProtocolsRequest 259,821 559,578 299,757 115.37% ⛔
Sema.InheritedTypeRequest 143,753 258,523 114,770 79.84% ⛔
Sema.InheritsSuperclassInitializersRequest 14,301 25,328 11,027 77.11% ⛔
Sema.InitKindRequest 44,139 88,290 44,151 100.03% ⛔
Sema.InterfaceTypeRequest 5,718,046 14,592,403 8,874,357 155.2% ⛔
Sema.IsABICompatibleOverrideRequest 61,328 125,523 64,195 104.67% ⛔
Sema.IsAccessorTransparentRequest 155,287 308,943 153,656 98.95% ⛔
Sema.IsActorRequest 450,711 917,372 466,661 103.54% ⛔
Sema.IsAsyncHandlerRequest 690,514 1,436,443 745,929 108.03% ⛔
Sema.IsCallableNominalTypeRequest 960 2,259 1,299 135.31% ⛔
Sema.IsDeclRefinementOfRequest 16,332 34,130 17,798 108.98% ⛔
Sema.IsDefaultActorRequest 18,723 38,764 20,041 107.04% ⛔
Sema.IsDynamicRequest 793,598 1,655,681 862,083 108.63% ⛔
Sema.IsFinalRequest 1,183,334 2,641,634 1,458,300 123.24% ⛔
Sema.IsGetterMutatingRequest 213,265 411,547 198,282 92.97% ⛔
Sema.IsImplicitlyUnwrappedOptionalRequest 1,171,129 2,360,584 1,189,455 101.56% ⛔
Sema.IsObjCRequest 725,527 1,486,811 761,284 104.93% ⛔
Sema.IsSetterMutatingRequest 159,859 327,994 168,135 105.18% ⛔
Sema.IsStaticRequest 1,158,493 2,076,920 918,427 79.28% ⛔
Sema.LazyStoragePropertyRequest 3,005 3,129 124 4.13% ⛔
Sema.LookupAllConformancesInContextRequest 595,008 1,799,855 1,204,847 202.49% ⛔
Sema.LookupConformanceInModuleRequest 16,181,650 37,288,182 21,106,532 130.43% ⛔
Sema.LookupInModuleRequest 3,189,817 6,619,897 3,430,080 107.53% ⛔
Sema.LookupInfixOperatorRequest 22,724 50,017 27,293 120.11% ⛔
Sema.LookupPostfixOperatorRequest 29 38 9 31.03% ⛔
Sema.LookupPrecedenceGroupRequest 12,474 24,259 11,785 94.48% ⛔
Sema.LookupPrefixOperatorRequest 53 131 78 147.17% ⛔
Sema.MangleLocalTypeDeclRequest 346 496 150 43.35% ⛔
Sema.ModuleImplicitImportsRequest 4,264 9,903 5,639 132.25% ⛔
Sema.ModuleQualifiedLookupRequest 1,373,384 3,098,611 1,725,227 125.62% ⛔
Sema.NamedLazyMemberLoadSuccessCount 11,496,112 20,753,742 9,257,630 80.53% ⛔
Sema.NamingPatternRequest 110,423 223,935 113,512 102.8% ⛔
Sema.NeedsNewVTableEntryRequest 355,025 673,580 318,555 89.73% ⛔
Sema.NumAccessorBodiesSynthesized 88,749 185,122 96,373 108.59% ⛔
Sema.NumAccessorsSynthesized 159,631 295,060 135,429 84.84% ⛔
Sema.NumConformancesDeserialized 3,441,692 9,484,176 6,042,484 175.57% ⛔
Sema.NumConstraintScopes 7,882,518 15,980,454 8,097,936 102.73% ⛔
Sema.NumConstraintsConsideredForEdgeContraction 166,346 944,016 777,670 467.5% ⛔
Sema.NumCyclicOneWayComponentsCollapsed 174 260 86 49.43% ⛔
Sema.NumDeclsDeserialized 28,914,782 75,665,624 46,750,842 161.68% ⛔
Sema.NumDeclsTypechecked 622,682 1,297,464 674,782 108.37% ⛔
Sema.NumGenericSignatureBuilders 517,021 1,175,202 658,181 127.3% ⛔
Sema.NumLazyIterableDeclContexts 3,734,051 8,839,598 5,105,547 136.73% ⛔
Sema.NumLazyRequirementSignatures 348,262 821,414 473,152 135.86% ⛔
Sema.NumLazyRequirementSignaturesLoaded 249,377 580,489 331,112 132.78% ⛔
Sema.NumLeafScopes 5,679,503 11,249,484 5,569,981 98.07% ⛔
Sema.NumTypesDeserialized 9,166,969 22,783,502 13,616,533 148.54% ⛔
Sema.NumUnloadedLazyIterableDeclContexts 2,411,015 5,327,512 2,916,497 120.97% ⛔
Sema.OpaqueReadOwnershipRequest 146,585 271,912 125,327 85.5% ⛔
Sema.OpaqueResultTypeRequest 235 337 102 43.4% ⛔
Sema.OperatorPrecedenceGroupRequest 420 683 263 62.62% ⛔
Sema.OverriddenDeclsRequest 1,442,379 3,241,888 1,799,509 124.76% ⛔
Sema.ParamSpecifierRequest 620,787 1,203,057 582,270 93.8% ⛔
Sema.PatternBindingEntryRequest 214,961 449,574 234,613 109.14% ⛔
Sema.PatternTypeRequest 256,917 526,671 269,754 105.0% ⛔
Sema.PolymorphicEffectKindRequest 50,662 106,614 55,952 110.44% ⛔
Sema.PreCheckResultBuilderRequest 536 761 225 41.98% ⛔
Sema.PrimarySourceFilesRequest 4,264 9,903 5,639 132.25% ⛔
Sema.PropertyWrapperAuxiliaryVariablesRequest 234,023 496,930 262,907 112.34% ⛔
Sema.PropertyWrapperBackingPropertyTypeRequest 4,006 10,622 6,616 165.15% ⛔
Sema.PropertyWrapperInitializerInfoRequest 154,059 322,041 167,982 109.04% ⛔
Sema.PropertyWrapperLValuenessRequest 389 631 242 62.21% ⛔
Sema.PropertyWrapperMutabilityRequest 291,167 576,192 285,025 97.89% ⛔
Sema.PropertyWrapperTypeInfoRequest 108 220 112 103.7% ⛔
Sema.ProtocolRequiresClassRequest 21,658 37,581 15,923 73.52% ⛔
Sema.ProvideDefaultImplForRequest 2,575,023 8,652,188 6,077,165 236.0% ⛔
Sema.QualifiedLookupRequest 3,045,395 6,084,376 3,038,981 99.79% ⛔
Sema.RequirementRequest 34,711 88,908 54,197 156.14% ⛔
Sema.RequirementSignatureRequest 285,737 642,784 357,047 124.96% ⛔
Sema.RequiresOpaqueAccessorsRequest 615,743 1,229,364 613,621 99.66% ⛔
Sema.RequiresOpaqueModifyCoroutineRequest 131,918 256,374 124,456 94.34% ⛔
Sema.ResolveImplicitMemberRequest 209,640 451,988 242,348 115.6% ⛔
Sema.ResolveTypeRequest 1,697,277 3,175,950 1,478,673 87.12% ⛔
Sema.ResultBuilderTypeRequest 162,421 337,713 175,292 107.92% ⛔
Sema.ResultTypeRequest 322,457 639,136 316,679 98.21% ⛔
Sema.SPIGroupsRequest 2,627,083 5,898,844 3,271,761 124.54% ⛔
Sema.ScopedImportLookupRequest 42 746 704 1676.19% ⛔
Sema.SelfAccessKindRequest 408,221 740,881 332,660 81.49% ⛔
Sema.SelfBoundsFromWhereClauseRequest 939,109 1,684,416 745,307 79.36% ⛔
Sema.SetterAccessLevelRequest 79,135 151,743 72,608 91.75% ⛔
Sema.SimpleDidSetRequest 826,855 2,321,287 1,494,432 180.74% ⛔
Sema.SpecializeAttrTargetDeclRequest 863 3,142 2,279 264.08% ⛔
Sema.StorageImplInfoRequest 685,373 1,404,515 719,142 104.93% ⛔
Sema.StoredPropertiesAndMissingMembersRequest 25,695 56,085 30,390 118.27% ⛔
Sema.StoredPropertiesRequest 143,649 324,231 180,582 125.71% ⛔
Sema.StructuralTypeRequest 502 1,497 995 198.21% ⛔
Sema.SuperclassDeclRequest 190,500 420,982 230,482 120.99% ⛔
Sema.SuperclassTypeRequest 23,509 47,607 24,098 102.51% ⛔
Sema.SynthesizeAccessorRequest 159,631 295,060 135,429 84.84% ⛔
Sema.SynthesizeDefaultInitRequest 2,742 5,148 2,406 87.75% ⛔
Sema.SynthesizeMainFunctionRequest 42,199 90,389 48,190 114.2% ⛔
Sema.SynthesizeMemberwiseInitRequest 1,297 3,565 2,268 174.87% ⛔
Sema.TypeCheckFunctionBodyRequest 234,339 490,526 256,187 109.32% ⛔
Sema.TypeCheckSourceFileRequest 12,356 24,126 11,770 95.26% ⛔
Sema.TypeDeclsFromWhereClauseRequest 12,960 26,365 13,405 103.43% ⛔
Sema.TypeWitnessRequest 3,674 7,820 4,146 112.85% ⛔
Sema.USRGenerationRequest 3,152,745 10,019,120 6,866,375 217.79% ⛔
Sema.UnderlyingTypeDeclsReferencedRequest 193,544 335,208 141,664 73.19% ⛔
Sema.UnderlyingTypeRequest 13,715 32,978 19,263 140.45% ⛔
Sema.UnqualifiedLookupRequest 2,167,868 4,213,995 2,046,127 94.38% ⛔
Sema.ValidatePrecedenceGroupRequest 90,925 174,256 83,331 91.65% ⛔
Sema.ValueWitnessRequest 42,713 68,158 25,445 59.57% ⛔
TBDGen.PublicSymbolsRequest 11,902 23,664 11,762 98.82% ⛔
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (35)
name old new delta delta_pct
AST.NumLinkLibraries 0 0 0 0.0%
IRGen.OptimizedIRRequest 0 0 0 0.0%
IRGen.SymbolObjectCodeRequest 0 0 0 0.0%
IRModule.NumIRComdatSymbols 0 0 0 0.0%
IRModule.NumIRIFuncs 0 0 0 0.0%
Parse.CodeCompletionSecondPassRequest 0 0 0 0.0%
SILGen.ParseSILModuleRequest 0 0 0 0.0%
SILModule.NumSILGenDefaultWitnessTables 0 0 0 0.0%
SILModule.NumSILOptDefaultWitnessTables 0 0 0 0.0%
SILOptimizer.LoweredSILRequest 0 0 0 0.0%
Sema.AsyncAlternativeRequest 0 0 0 0.0%
Sema.CanBeAsyncHandlerRequest 0 0 0 0.0%
Sema.CodeCompletionFileRequest 0 0 0 0.0%
Sema.ConformanceHasEffectRequest 0 0 0 0.0%
Sema.CursorInfoRequest 0 0 0 0.0%
Sema.DifferentiableAttributeTypeCheckRequest 0 0 0 0.0%
Sema.HasDynamicCallableAttributeRequest 0 0 0 0.0%
Sema.IsDeclApplicableRequest 0 0 0 0.0%
Sema.ModuleLibraryLevelRequest 0 0 0 0.0%
Sema.NumCrossImportsChecked 0 0 0 0.0%
Sema.NumCrossImportsFound 0 0 0 0.0%
Sema.PolymorphicEffectRequirementsRequest 0 0 0 0.0%
Sema.RangeInfoRequest 0 0 0 0.0%
Sema.ResolveEffectiveMemberwiseInitRequest 0 0 0 0.0%
Sema.ResolveProtocolNameRequest 0 0 0 0.0%
Sema.ResolveTypeEraserTypeRequest 0 0 0 0.0%
Sema.RootAndResultTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.RootTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.TangentStoredPropertyRequest 0 0 0 0.0%
Sema.TypeCheckASTNodeAtLocRequest 0 0 0 0.0%
Sema.TypeEraserHasViableInitRequest 0 0 0 0.0%
Sema.TypeRelationCheckRequest 0 0 0 0.0%
TBDGen.APIGenRequest 0 0 0 0.0%
TBDGen.GenerateTBDRequest 0 0 0 0.0%
TBDGen.SymbolSourceMapRequest 0 0 0 0.0%

Release

release brief

Regressed (2)
name old new delta delta_pct
Frontend.NumInstructionsExecuted 47,075,243,177,141 103,437,035,938,565 56,361,792,761,424 119.73% ⛔
LLVM.NumLLVMBytesOutput 1,663,949,282 2,491,003,120 827,053,838 49.7% ⛔
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (0)
name old new delta delta_pct

release detailed

Regressed (208)
name old new delta delta_pct
AST.ImportSetCacheHit 1,195,135 1,797,533 602,398 50.4% ⛔
AST.ImportSetCacheMiss 55,692 83,702 28,010 50.29% ⛔
AST.ImportSetFoldHit 24,137 35,017 10,880 45.08% ⛔
AST.ImportSetFoldMiss 31,554 48,685 17,131 54.29% ⛔
AST.ModuleShadowCacheHit 2,935 4,762 1,827 62.25% ⛔
AST.ModuleShadowCacheMiss 1,102 1,818 716 64.97% ⛔
AST.ModuleVisibilityCacheHit 34,831 53,775 18,944 54.39% ⛔
AST.ModuleVisibilityCacheMiss 3,491 4,933 1,442 41.31% ⛔
AST.NumASTBytesAllocated 8,945,116,842 13,753,317,838 4,808,200,996 53.75% ⛔
AST.NumASTScopeExpansions 2,694,735 4,108,540 1,413,805 52.47% ⛔
AST.NumASTScopeLookups 3,914,115 5,971,567 2,057,452 52.56% ⛔
AST.NumDecls 133,136 203,507 70,371 52.86% ⛔
AST.NumDependencies 58,466 78,260 19,794 33.86% ⛔
AST.NumLoadedModules 27,141 41,565 14,424 53.14% ⛔
AST.NumLocalTypeDecls 248 323 75 30.24% ⛔
AST.NumModuleLookupClassMember 6,569 9,809 3,240 49.32% ⛔
AST.NumModuleLookupValue 28,127,410 40,320,088 12,192,678 43.35% ⛔
AST.NumObjCMethods 26,795 30,144 3,349 12.5% ⛔
AST.NumOperators 581 810 229 39.41% ⛔
AST.NumPrecedenceGroups 93 130 37 39.78% ⛔
AST.NumSourceBuffers 29,467 44,750 15,283 51.86% ⛔
AST.NumSourceLines 4,492,239 6,712,294 2,220,055 49.42% ⛔
AST.NumSourceLinesPerSecond 329,664 501,312 171,648 52.07% ⛔
AST.NumTotalClangImportedEntities 439,443 645,184 205,741 46.82% ⛔
Frontend.MaxMallocUsage 225,136,005,240 346,516,442,408 121,380,437,168 53.91% ⛔
Frontend.NumInstructionsExecuted 47,075,243,177,141 103,437,035,938,565 56,361,792,761,424 119.73% ⛔
Frontend.NumProcessFailures 2 3 1 50.0% ⛔
IRModule.NumGOTEntries 208,135 325,925 117,790 56.59% ⛔
IRModule.NumIRAliases 151,873 212,587 60,714 39.98% ⛔
IRModule.NumIRBasicBlocks 4,369,416 6,651,500 2,282,084 52.23% ⛔
IRModule.NumIRFunctions 2,605,116 3,899,828 1,294,712 49.7% ⛔
IRModule.NumIRGlobals 2,961,836 4,364,382 1,402,546 47.35% ⛔
IRModule.NumIRInsts 42,575,001 64,296,287 21,721,286 51.02% ⛔
IRModule.NumIRNamedMetaData 121,865 182,095 60,230 49.42% ⛔
IRModule.NumIRValueSymbols 5,329,153 7,902,661 2,573,508 48.29% ⛔
LLVM.NumLLVMBytesOutput 1,663,949,282 2,491,003,120 827,053,838 49.7% ⛔
Parse.NumFunctionsParsed 262,404 399,085 136,681 52.09% ⛔
Parse.NumIterableDeclContextParsed 87,812 136,271 48,459 55.18% ⛔
Parse.ParseAbstractFunctionBodyRequest 239,335 368,160 128,825 53.83% ⛔
Parse.ParseMembersRequest 576 754 178 30.9% ⛔
Parse.ParseSourceFileRequest 24,492 36,591 12,099 49.4% ⛔
SILGen.ASTLoweringRequest 1,166 1,745 579 49.66% ⛔
SILModule.NumSILGenFunctions 1,135,982 1,732,038 596,056 52.47% ⛔
SILModule.NumSILGenGlobalVariables 54,984 88,541 33,557 61.03% ⛔
SILModule.NumSILGenVtables 15,142 23,890 8,748 57.77% ⛔
SILModule.NumSILGenWitnessTables 66,825 101,294 34,469 51.58% ⛔
SILModule.NumSILOptFunctions 953,737 1,443,731 489,994 51.38% ⛔
SILModule.NumSILOptGlobalVariables 41,500 65,151 23,651 56.99% ⛔
SILModule.NumSILOptVtables 18,563 29,229 10,666 57.46% ⛔
SILModule.NumSILOptWitnessTables 68,371 103,687 35,316 51.65% ⛔
SILOptimizer.ExecuteSILPipelineRequest 4,652 6,968 2,316 49.79% ⛔
Sema.ABIMembersRequest 85,683 132,356 46,673 54.47% ⛔
Sema.AbstractGenericSignatureRequest 23,163 37,826 14,663 63.3% ⛔
Sema.AccessLevelRequest 1,471,112 2,241,993 770,881 52.4% ⛔
Sema.ActorIsolationRequest 1,223,559 1,870,347 646,788 52.86% ⛔
Sema.AllMembersRequest 84,708 130,992 46,284 54.64% ⛔
Sema.AnyObjectLookupRequest 224 341 117 52.23% ⛔
Sema.ApplyAccessNoteRequest 1,514,125 2,304,567 790,442 52.2% ⛔
Sema.AreAllStoredPropertiesDefaultInitableRequest 12,395 19,459 7,064 56.99% ⛔
Sema.AttachedPropertyWrapperTypeRequest 6,678 10,483 3,805 56.98% ⛔
Sema.AttachedPropertyWrappersRequest 98,515,557 146,495,771 47,980,214 48.7% ⛔
Sema.AttachedResultBuilderRequest 637,412 967,010 329,598 51.71% ⛔
Sema.BodyInitKindRequest 43,622 66,558 22,936 52.58% ⛔
Sema.CallerSideDefaultArgExprRequest 102,884 160,304 57,420 55.81% ⛔
Sema.CheckInconsistentImplementationOnlyImportsRequest 1,164 1,744 580 49.83% ⛔
Sema.CheckRedeclarationRequest 917,214 1,396,415 479,201 52.25% ⛔
Sema.ClassAncestryFlagsRequest 42,170 64,963 22,793 54.05% ⛔
Sema.ClosureHasExplicitResultRequest 84,228 131,279 47,051 55.86% ⛔
Sema.CompareDeclSpecializationRequest 370,139 549,464 179,325 48.45% ⛔
Sema.ConditionalRequirementsRequest 167,850 258,649 90,799 54.1% ⛔
Sema.CustomAttrNominalRequest 544 781 237 43.57% ⛔
Sema.CustomAttrTypeRequest 405 591 186 45.93% ⛔
Sema.DefaultAndMaxAccessLevelRequest 38,203 58,972 20,769 54.36% ⛔
Sema.DefaultArgumentExprRequest 36,739 53,856 17,117 46.59% ⛔
Sema.DefaultArgumentInitContextRequest 109 142 33 30.28% ⛔
Sema.DefaultDefinitionTypeRequest 2,726 4,212 1,486 54.51% ⛔
Sema.DefaultTypeRequest 237,895 366,914 129,019 54.23% ⛔
Sema.DerivativeAttrOriginalDeclRequest 4 8 4 100.0% ⛔
Sema.DirectLookupRequest 31,020,029 44,844,183 13,824,154 44.57% ⛔
Sema.DirectOperatorLookupRequest 1,144,109 1,691,532 547,423 47.85% ⛔
Sema.DirectPrecedenceGroupLookupRequest 571,883 811,808 239,925 41.95% ⛔
Sema.DynamicallyReplacedDeclRequest 744,018 1,143,902 399,884 53.75% ⛔
Sema.EnumRawTypeRequest 8,871 13,952 5,081 57.28% ⛔
Sema.EnumRawValuesRequest 9,626 14,654 5,028 52.23% ⛔
Sema.ExistentialConformsToSelfRequest 4,456 7,027 2,571 57.7% ⛔
Sema.ExistentialTypeSupportedRequest 7,702 11,319 3,617 46.96% ⛔
Sema.ExtendedNominalRequest 41,925 64,021 22,096 52.7% ⛔
Sema.ExtendedTypeRequest 41,868 63,938 22,070 52.71% ⛔
Sema.FragileFunctionKindRequest 942,563 1,443,417 500,854 53.14% ⛔
Sema.FunctionOperatorRequest 8,958 12,583 3,625 40.47% ⛔
Sema.GenericParamListRequest 1,124,795 1,714,380 589,585 52.42% ⛔
Sema.GenericSignatureRequest 956,880 1,449,757 492,877 51.51% ⛔
Sema.GetDestructorRequest 16,266 24,844 8,578 52.74% ⛔
Sema.GetImplicitSendableRequest 37,226 58,317 21,091 56.66% ⛔
Sema.GlobalActorAttributeRequest 1,462,591 2,241,962 779,371 53.29% ⛔
Sema.GlobalActorInstanceRequest 56 93 37 66.07% ⛔
Sema.HasCircularInheritedProtocolsRequest 7,946 11,718 3,772 47.47% ⛔
Sema.HasCircularRawValueRequest 8,870 13,951 5,081 57.28% ⛔
Sema.HasDefaultInitRequest 27,171 42,903 15,732 57.9% ⛔
Sema.HasDynamicMemberLookupAttributeRequest 230,425 354,680 124,255 53.92% ⛔
Sema.HasImplementationOnlyImportsRequest 24,398 36,416 12,018 49.26% ⛔
Sema.HasMemberwiseInitRequest 11,958 18,936 6,978 58.35% ⛔
Sema.HasMissingDesignatedInitializersRequest 16,539 25,826 9,287 56.15% ⛔
Sema.HasUserDefinedDesignatedInitRequest 27,171 42,903 15,732 57.9% ⛔
Sema.InferredGenericSignatureRequest 62,276 94,196 31,920 51.26% ⛔
Sema.InheritedDeclsReferencedRequest 1,029,719 1,544,998 515,279 50.04% ⛔
Sema.InheritedProtocolsRequest 90,250 137,323 47,073 52.16% ⛔
Sema.InheritedTypeRequest 140,714 217,234 76,520 54.38% ⛔
Sema.InheritsSuperclassInitializersRequest 12,435 18,804 6,369 51.22% ⛔
Sema.InitKindRequest 53,463 82,576 29,113 54.45% ⛔
Sema.InterfaceTypeRequest 3,011,773 4,596,555 1,584,782 52.62% ⛔
Sema.IsABICompatibleOverrideRequest 124,112 188,619 64,507 51.97% ⛔
Sema.IsAccessorTransparentRequest 251,436 378,203 126,767 50.42% ⛔
Sema.IsActorRequest 197,679 304,279 106,600 53.93% ⛔
Sema.IsAsyncHandlerRequest 671,922 1,024,000 352,078 52.4% ⛔
Sema.IsCallableNominalTypeRequest 2,011 3,059 1,048 52.11% ⛔
Sema.IsDeclRefinementOfRequest 20,095 31,736 11,641 57.93% ⛔
Sema.IsDefaultActorRequest 22,236 35,176 12,940 58.19% ⛔
Sema.IsDynamicRequest 1,156,412 1,771,705 615,293 53.21% ⛔
Sema.IsFinalRequest 926,844 1,397,916 471,072 50.83% ⛔
Sema.IsGetterMutatingRequest 304,198 462,844 158,646 52.15% ⛔
Sema.IsImplicitlyUnwrappedOptionalRequest 1,786,212 2,697,770 911,558 51.03% ⛔
Sema.IsObjCRequest 1,021,423 1,547,236 525,813 51.48% ⛔
Sema.IsSetterMutatingRequest 290,730 445,737 155,007 53.32% ⛔
Sema.IsStaticRequest 536,460 800,671 264,211 49.25% ⛔
Sema.LazyStoragePropertyRequest 816 872 56 6.86% ⛔
Sema.LookupAllConformancesInContextRequest 106,721 162,521 55,800 52.29% ⛔
Sema.LookupConformanceInModuleRequest 61,613,014 91,384,217 29,771,203 48.32% ⛔
Sema.LookupInModuleRequest 2,096,516 3,183,353 1,086,837 51.84% ⛔
Sema.LookupInfixOperatorRequest 49,316 76,291 26,975 54.7% ⛔
Sema.LookupPostfixOperatorRequest 38 47 9 23.68% ⛔
Sema.LookupPrecedenceGroupRequest 23,614 35,169 11,555 48.93% ⛔
Sema.LookupPrefixOperatorRequest 116 185 69 59.48% ⛔
Sema.MangleLocalTypeDeclRequest 268 343 75 27.99% ⛔
Sema.ModuleImplicitImportsRequest 1,168 1,748 580 49.66% ⛔
Sema.ModuleQualifiedLookupRequest 402,849 619,531 216,682 53.79% ⛔
Sema.NamedLazyMemberLoadSuccessCount 7,876,300 11,500,151 3,623,851 46.01% ⛔
Sema.NamingPatternRequest 65,930 98,309 32,379 49.11% ⛔
Sema.NeedsNewVTableEntryRequest 514,399 776,203 261,804 50.9% ⛔
Sema.NumAccessorBodiesSynthesized 187,400 285,918 98,518 52.57% ⛔
Sema.NumAccessorsSynthesized 191,049 290,536 99,487 52.07% ⛔
Sema.NumConformancesDeserialized 2,883,264 4,612,047 1,728,783 59.96% ⛔
Sema.NumConstraintScopes 15,342,679 22,914,003 7,571,324 49.35% ⛔
Sema.NumConstraintsConsideredForEdgeContraction 983,021 1,796,307 813,286 82.73% ⛔
Sema.NumCyclicOneWayComponentsCollapsed 260 346 86 33.08% ⛔
Sema.NumDeclsDeserialized 10,562,584 16,368,732 5,806,148 54.97% ⛔
Sema.NumDeclsTypechecked 1,316,431 2,003,222 686,791 52.17% ⛔
Sema.NumGenericSignatureBuilders 211,253 319,788 108,535 51.38% ⛔
Sema.NumLazyIterableDeclContexts 1,347,084 2,060,323 713,239 52.95% ⛔
Sema.NumLazyRequirementSignatures 110,626 167,361 56,735 51.29% ⛔
Sema.NumLazyRequirementSignaturesLoaded 86,498 131,499 45,001 52.03% ⛔
Sema.NumLeafScopes 10,708,247 15,851,319 5,143,072 48.03% ⛔
Sema.NumTypesDeserialized 4,647,881 7,241,936 2,594,055 55.81% ⛔
Sema.NumUnloadedLazyIterableDeclContexts 889,713 1,345,531 455,818 51.23% ⛔
Sema.OpaqueReadOwnershipRequest 171,228 259,589 88,361 51.6% ⛔
Sema.OpaqueResultTypeRequest 295 366 71 24.07% ⛔
Sema.OperatorPrecedenceGroupRequest 532 720 188 35.34% ⛔
Sema.OverriddenDeclsRequest 1,103,116 1,677,516 574,400 52.07% ⛔
Sema.ParamSpecifierRequest 734,766 1,105,807 371,041 50.5% ⛔
Sema.PatternBindingEntryRequest 278,145 426,109 147,964 53.2% ⛔
Sema.PatternTypeRequest 353,852 535,732 181,880 51.4% ⛔
Sema.PolymorphicEffectKindRequest 64,836 99,257 34,421 53.09% ⛔
Sema.PreCheckResultBuilderRequest 717 903 186 25.94% ⛔
Sema.PrimarySourceFilesRequest 1,168 1,748 580 49.66% ⛔
Sema.PropertyWrapperAuxiliaryVariablesRequest 323,919 497,371 173,452 53.55% ⛔
Sema.PropertyWrapperBackingPropertyTypeRequest 6,678 10,483 3,805 56.98% ⛔
Sema.PropertyWrapperInitializerInfoRequest 318,825 487,762 168,937 52.99% ⛔
Sema.PropertyWrapperLValuenessRequest 631 874 243 38.51% ⛔
Sema.PropertyWrapperMutabilityRequest 462,962 707,376 244,414 52.79% ⛔
Sema.PropertyWrapperTypeInfoRequest 52 88 36 69.23% ⛔
Sema.ProtocolRequiresClassRequest 8,517 12,357 3,840 45.09% ⛔
Sema.QualifiedLookupRequest 3,600,122 5,426,548 1,826,426 50.73% ⛔
Sema.RequirementRequest 58,348 96,238 37,890 64.94% ⛔
Sema.RequirementSignatureRequest 96,392 145,906 49,514 51.37% ⛔
Sema.RequiresOpaqueAccessorsRequest 1,078,777 1,634,142 555,365 51.48% ⛔
Sema.RequiresOpaqueModifyCoroutineRequest 167,699 256,789 89,090 53.12% ⛔
Sema.ResolveImplicitMemberRequest 345,685 531,157 185,472 53.65% ⛔
Sema.ResolveTypeRequest 1,730,253 2,619,992 889,739 51.42% ⛔
Sema.ResultBuilderTypeRequest 313,004 474,780 161,776 51.68% ⛔
Sema.ResultTypeRequest 382,272 579,372 197,100 51.56% ⛔
Sema.SPIGroupsRequest 1,705,140 2,612,762 907,622 53.23% ⛔
Sema.ScopedImportLookupRequest 793 1,544 751 94.7% ⛔
Sema.SelfAccessKindRequest 308,651 454,382 145,731 47.22% ⛔
Sema.SelfBoundsFromWhereClauseRequest 423,386 620,830 197,444 46.63% ⛔
Sema.SetterAccessLevelRequest 126,382 187,137 60,755 48.07% ⛔
Sema.SimpleDidSetRequest 314,271 472,423 158,152 50.32% ⛔
Sema.SpecializeAttrTargetDeclRequest 1,685 2,940 1,255 74.48% ⛔
Sema.StorageImplInfoRequest 1,180,512 1,787,644 607,132 51.43% ⛔
Sema.StoredPropertiesAndMissingMembersRequest 36,274 57,881 21,607 59.57% ⛔
Sema.StoredPropertiesRequest 133,846 206,498 72,652 54.28% ⛔
Sema.StructuralTypeRequest 386 674 288 74.61% ⛔
Sema.SuperclassDeclRequest 89,608 137,970 48,362 53.97% ⛔
Sema.SuperclassTypeRequest 21,204 33,105 11,901 56.13% ⛔
Sema.SynthesizeAccessorRequest 191,049 290,536 99,487 52.07% ⛔
Sema.SynthesizeDefaultInitRequest 2,989 4,324 1,335 44.66% ⛔
Sema.SynthesizeMainFunctionRequest 84,766 131,057 46,291 54.61% ⛔
Sema.SynthesizeMemberwiseInitRequest 2,330 3,737 1,407 60.39% ⛔
Sema.TypeCheckFunctionBodyRequest 494,732 754,975 260,243 52.6% ⛔
Sema.TypeCheckSourceFileRequest 24,468 36,567 12,099 49.45% ⛔
Sema.TypeDeclsFromWhereClauseRequest 19,295 30,335 11,040 57.22% ⛔
Sema.TypeWitnessRequest 3,311 5,255 1,944 58.71% ⛔
Sema.USRGenerationRequest 381,777 569,814 188,037 49.25% ⛔
Sema.UnderlyingTypeDeclsReferencedRequest 54,969 78,054 23,085 42.0% ⛔
Sema.UnderlyingTypeRequest 15,826 26,797 10,971 69.32% ⛔
Sema.UnqualifiedLookupRequest 2,034,170 3,098,912 1,064,742 52.34% ⛔
Sema.ValidatePrecedenceGroupRequest 174,250 257,608 83,358 47.84% ⛔
Sema.ValueWitnessRequest 34,148 46,940 12,792 37.46% ⛔
TBDGen.PublicSymbolsRequest 1,162 1,741 579 49.83% ⛔
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (42)
name old new delta delta_pct
AST.NumIncrementalDependencies 0 0 0 0.0%
AST.NumLinkLibraries 0 0 0 0.0%
AST.NumReferencedDynamicNames 0 0 0 0.0%
AST.NumReferencedMemberNames 3,984 3,984 0 0.0%
AST.NumReferencedTopLevelNames 352 352 0 0.0%
IRGen.IRGenRequest 12 12 0 0.0%
IRGen.OptimizedIRRequest 0 0 0 0.0%
IRGen.SymbolObjectCodeRequest 0 0 0 0.0%
IRModule.NumIRComdatSymbols 0 0 0 0.0%
IRModule.NumIRIFuncs 0 0 0 0.0%
Parse.CodeCompletionSecondPassRequest 0 0 0 0.0%
SILGen.ParseSILModuleRequest 0 0 0 0.0%
SILModule.NumSILGenDefaultWitnessTables 0 0 0 0.0%
SILModule.NumSILOptDefaultWitnessTables 0 0 0 0.0%
SILOptimizer.LoweredSILRequest 0 0 0 0.0%
Sema.AsyncAlternativeRequest 0 0 0 0.0%
Sema.CanBeAsyncHandlerRequest 0 0 0 0.0%
Sema.CodeCompletionFileRequest 0 0 0 0.0%
Sema.CollectOverriddenDeclsRequest 0 0 0 0.0%
Sema.ConformanceHasEffectRequest 0 0 0 0.0%
Sema.CursorInfoRequest 0 0 0 0.0%
Sema.DifferentiableAttributeTypeCheckRequest 0 0 0 0.0%
Sema.HasDynamicCallableAttributeRequest 0 0 0 0.0%
Sema.IsDeclApplicableRequest 0 0 0 0.0%
Sema.ModuleLibraryLevelRequest 0 0 0 0.0%
Sema.NumCrossImportsChecked 0 0 0 0.0%
Sema.NumCrossImportsFound 0 0 0 0.0%
Sema.PolymorphicEffectRequirementsRequest 0 0 0 0.0%
Sema.ProvideDefaultImplForRequest 0 0 0 0.0%
Sema.RangeInfoRequest 0 0 0 0.0%
Sema.ResolveEffectiveMemberwiseInitRequest 0 0 0 0.0%
Sema.ResolveProtocolNameRequest 0 0 0 0.0%
Sema.ResolveTypeEraserTypeRequest 0 0 0 0.0%
Sema.RootAndResultTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.RootTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.TangentStoredPropertyRequest 0 0 0 0.0%
Sema.TypeCheckASTNodeAtLocRequest 0 0 0 0.0%
Sema.TypeEraserHasViableInitRequest 0 0 0 0.0%
Sema.TypeRelationCheckRequest 0 0 0 0.0%
TBDGen.APIGenRequest 0 0 0 0.0%
TBDGen.GenerateTBDRequest 0 0 0 0.0%
TBDGen.SymbolSourceMapRequest 0 0 0 0.0%

@slavapestov
Copy link
Member Author

Unfortunately the perf suite results are bogus because the number of source lines doesn't match between the before and after jobs.

@slavapestov slavapestov force-pushed the new-redundant-requirements-algorithm-part-2 branch from 434600b to c302986 Compare May 7, 2021 03:48
@slavapestov
Copy link
Member Author

@swift-ci Please test

@slavapestov
Copy link
Member Author

@swift-ci Please test source compatibility

@slavapestov
Copy link
Member Author

@swift-ci Please smoke test

@slavapestov
Copy link
Member Author

@swift-ci Please test source compatibility debug

This rewrites the existing redundant requirements algorithm
to be simpler, and fix an incorrect behavior in the case where
we're building a protocol requirement signature.

Consider the following example:

    protocol P {
      associatedtype A : P
      associatedtype B : P where A.B == B
    }

The requirement B : P has two conformance paths here:

    (B : P)
    (A : P)(B : P)

The naive redundancy algorithm would conclude that (B : P) is
redundant because it can be derived as (A : P)(B : P). However,
if we drop (B : P), we lose the derived conformance path
as well, since it involves the same requirement (B : P).

The above example actually worked before this change, because we
handled this case in getMinimalConformanceSource() by dropping any
derived conformance paths that involve the requirement itself
appearing in the "middle" of the path.

However, this is insufficient because you can have a "cycle"
here with length more than 1. For example,

    protocol P {
      associatedtype A : P where A == B.C
      associatedtype B : P where B == A.C
      associatedtype C : P where C == A.B
    }

The requirement A : P has two conformance paths here:

   (A : P)
   (B : P)(C : P)

Similarly, B : P has these two paths:

   (B : P)
   (A : P)(C : P)

And C : P has these two paths:

   (C : P)
   (A : P)(B : P)

Since each one of A : P, B : P and C : P has a derived conformance
path that does not involve itself, we would conclude that all three
were redundant. But this was wrong; while (B : P)(C : P) is a valid
derived path for A : P that allows us to drop A : P, once we commit to
dropping A : P, we can no longer use the other derived paths
(A : P)(C : P) for B : P, and (A : P)(B : P) for C : P, respectively,
because they involve A : P, which we dropped.

The problem is that we were losing information here. The explicit
requirement A : P can be derived as (B : P)(C : P), but we would
just say that it was implied by B : P alone.

For non-protocol generic signatures, just looking at the root is
still sufficient.

However, when building a requirement signature of a self-recursive
protocol, instead of looking at the root explicit requirement only,
we need to look at _all_ intermediate steps in the path that involve
the same protocol.

This is implemented in a new getBaseRequirements() method, which
generalizes the operation of getting the explicit requirement at
the root of a derived conformance path by returning a vector of
one or more explicit requirements that appear in the path.

Also the new algorithm computes redundancy online instead of building
a directed graph and then computing SCCs. This is possible by
recording newly-discovered redundant requirements immediately,
and then using the set of so-far-redundant requirements when
evaluating a path.

This commit introduces a small regression in an existing test case
involving a protocol with a 'derived via concrete' requirement.
Subsequent commits in this PR fix the regression and remove the
'derived via concrete' mechanism, since it is no longer necessary.

Fixes https://bugs.swift.org/browse/SR-14510 / rdar://problem/76883924.
…nce requirements

This fixes a regression from the new redundant requirements algorithm
and paves the way for removing the notion of 'derived via concrete'
requirements.
…ivalence classes

Literally an off-by-one error -- we were skipping over the first
requirement and not copying it over. I think this is because the
updateLayout() call used to be addLayoutRequirementDirect(),
which would add the first layout constraint, and I forgot to
remove the '+ 1' when I refactored this.
…undedness

Consider this example:

    protocol P1 {
      associatedtype A : P2
    }

    protocol P2 {
      associatedtype A
    }

    func foo<T : P2>(_: T) where T.A : P1, T.A.A == T {}

We cannot drop 'T : P2', even though it can be derived from
T.A.A == T and Self.A : P2 in protocol P1, because we actually
need the conformance T : P2 in order to recover the concrete
type for T.A.

This was handled via a hack which would ensure that the
conformance path (T.A : P1)(Self.A : P2) was not a candidate
derivation for T : P2, because T : P2 is one of the conformances
used to construct the subject type T.A in the conformance path.

This hack did not generalize to "cycles" of length greater than 1
however:

    func foo<T : P2, U : P2>(_: T, _: U)
      where T.A : P1, T.A.A == U, U.A : P1, U.A.A == T {}

We used to drop both T : P2 and U : P2, because each one had a
conformance path (U.A : P1)(Self.A : P2) and (T.A : P1)(Self.A : P2),
respectively; however, once we drop T : P2 and U : P2, these two
paths become invalid for the same reason that the concrete type
for T.A and U.A can no longer be recovered.

The correct fix is to recursively visit the subject type of each
base requirement when evaluating a conformance path, and not
consider any requirement whose subject type's parent type cannot
be recovered. This proceeds recursively.

In the worst case, this algorithm is exponential in the number of
conformance requirements, but it is not always exponential, and
a generic signature is not going to have a large number of
conformance requirements anyway (hopefully). Also, the old logic
in getMinimalConformanceSource() wasn't cheap either.

Perhaps some clever minimization can speed this up too, but I'm
going to focus on correctness first, before looking at performance
here.

Fixes rdar://problem/74890907.
This used to be necessary to handle this case:

    protocol P1 {
      associatedtype A
    }

    protocol P2 {
      associatedtype A : P1
    }

    func foo<T : P1>(_: T) where T.A : P2,  T.A.A == T {}

We don't want to mark 'T : P1' as redundant, even though it could
be recovered from T.A.A, because it uses the requirement T.A, and
we cannot recover the type metadata for T.A without the witness
table for T : P1.

Now this is handled via a more general mechanism, so we no longer
need this hack.
Consider a signature with a conformance requirement, and two
identical superclass requirements, both of which make the
conformance requirement redundant.

The conformance will have two requirement sources, the explicit
source and a derived source based on one of the two superclass
requirements, whichever one was processed first.

If we end up marking the *other* superclass requirement as
redundant, we would incorrectly conclude that the conformance
was not redundant. Instead, if a derived source is based on a
redundant requirement, we can't just discard it right away;
instead, we have to check if that source could have been
derived some other way.
@slavapestov slavapestov force-pushed the new-redundant-requirements-algorithm-part-2 branch from c302986 to e45b566 Compare May 7, 2021 22:44
@slavapestov
Copy link
Member Author

@swift-ci Please smoke test

@slavapestov
Copy link
Member Author

@swift-ci Please test source compatibility

@slavapestov
Copy link
Member Author

@swift-ci Please test compiler performance

@slavapestov
Copy link
Member Author

@swift-ci Please test Linux

@swift-ci
Copy link
Collaborator

swift-ci commented May 8, 2021

Summary for main full

Regressions found (see below)

Debug-batch

debug-batch brief

Regressed (2)
name old new delta delta_pct
Frontend.NumInstructionsExecuted 18,395,755,375,175 42,773,400,480,920 24,377,645,105,745 132.52% ⛔
LLVM.NumLLVMBytesOutput 820,907,096 1,642,562,940 821,655,844 100.09% ⛔
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (0)
name old new delta delta_pct

debug-batch detailed

Regressed (215)
name old new delta delta_pct
AST.ImportSetCacheHit 956,104 1,843,542 887,438 92.82% ⛔
AST.ImportSetCacheMiss 162,823 356,030 193,207 118.66% ⛔
AST.ImportSetFoldHit 62,168 116,335 54,167 87.13% ⛔
AST.ImportSetFoldMiss 100,655 239,695 139,040 138.14% ⛔
AST.ModuleShadowCacheHit 1,491 3,627 2,136 143.26% ⛔
AST.ModuleShadowCacheMiss 589 1,610 1,021 173.34% ⛔
AST.ModuleVisibilityCacheHit 22,292 51,196 28,904 129.66% ⛔
AST.ModuleVisibilityCacheMiss 3,231 7,028 3,797 117.52% ⛔
AST.NumASTBytesAllocated 16,836,753,435 40,652,619,688 23,815,866,253 141.45% ⛔
AST.NumASTScopeExpansions 2,552,130 5,109,110 2,556,980 100.19% ⛔
AST.NumASTScopeLookups 2,643,273 5,317,593 2,674,320 101.17% ⛔
AST.NumDecls 62,207 131,493 69,286 111.38% ⛔
AST.NumDependencies 155,386 301,550 146,164 94.07% ⛔
AST.NumIncrementalDependencies 5,054 11,658 6,604 130.67% ⛔
AST.NumLoadedModules 96,044 228,870 132,826 138.3% ⛔
AST.NumLocalTypeDecls 173 248 75 43.35% ⛔
AST.NumModuleLookupClassMember 3,437 6,793 3,356 97.64% ⛔
AST.NumModuleLookupValue 29,931,226 52,126,555 22,195,329 74.15% ⛔
AST.NumObjCMethods 23,437 26,927 3,490 14.89% ⛔
AST.NumOperators 352 581 229 65.06% ⛔
AST.NumPrecedenceGroups 56 93 37 66.07% ⛔
AST.NumReferencedDynamicNames 75 155 80 106.67% ⛔
AST.NumReferencedMemberNames 5,644,346 10,095,398 4,451,052 78.86% ⛔
AST.NumReferencedTopLevelNames 531,897 1,014,774 482,877 90.78% ⛔
AST.NumSourceBuffers 140,400 283,925 143,525 102.23% ⛔
AST.NumSourceLines 2,252,755 4,447,232 2,194,477 97.41% ⛔
AST.NumSourceLinesPerSecond 1,639,619 3,953,327 2,313,708 141.11% ⛔
AST.NumTotalClangImportedEntities 1,736,396 3,355,902 1,619,506 93.27% ⛔
Frontend.MaxMallocUsage 277,535,048,264 679,803,546,112 402,268,497,848 144.94% ⛔
Frontend.NumInstructionsExecuted 18,395,755,375,175 42,773,400,480,920 24,377,645,105,745 132.52% ⛔
Frontend.NumProcessFailures 16 19 3 18.75% ⛔
IRGen.IRGenRequest 11,899 23,690 11,791 99.09% ⛔
IRModule.NumGOTEntries 96,180 216,349 120,169 124.94% ⛔
IRModule.NumIRAliases 102,598 184,874 82,276 80.19% ⛔
IRModule.NumIRBasicBlocks 3,113,450 6,925,441 3,811,991 122.44% ⛔
IRModule.NumIRFunctions 1,580,535 3,234,532 1,653,997 104.65% ⛔
IRModule.NumIRGlobals 1,695,274 3,260,175 1,564,901 92.31% ⛔
IRModule.NumIRInsts 35,293,678 72,746,961 37,453,283 106.12% ⛔
IRModule.NumIRNamedMetaData 61,640 120,635 58,995 95.71% ⛔
IRModule.NumIRValueSymbols 3,050,890 6,046,542 2,995,652 98.19% ⛔
LLVM.NumLLVMBytesOutput 820,907,096 1,642,562,940 821,655,844 100.09% ⛔
Parse.NumFunctionsParsed 124,748 259,680 134,932 108.16% ⛔
Parse.NumIterableDeclContextParsed 232,253 498,838 266,585 114.78% ⛔
Parse.ParseAbstractFunctionBodyRequest 111,938 238,914 126,976 113.43% ⛔
Parse.ParseMembersRequest 357,294 752,390 395,096 110.58% ⛔
Parse.ParseSourceFileRequest 135,285 270,375 135,090 99.86% ⛔
SILGen.ASTLoweringRequest 12,471 24,835 12,364 99.14% ⛔
SILModule.NumSILGenFunctions 983,928 2,057,638 1,073,710 109.12% ⛔
SILModule.NumSILGenGlobalVariables 21,253 54,896 33,643 158.3% ⛔
SILModule.NumSILGenVtables 12,010 25,558 13,548 112.81% ⛔
SILModule.NumSILGenWitnessTables 64,893 128,267 63,374 97.66% ⛔
SILModule.NumSILOptFunctions 1,182,120 2,524,953 1,342,833 113.6% ⛔
SILModule.NumSILOptGlobalVariables 22,094 56,520 34,426 155.82% ⛔
SILModule.NumSILOptVtables 12,038 25,654 13,616 113.11% ⛔
SILModule.NumSILOptWitnessTables 82,136 170,128 87,992 107.13% ⛔
SILOptimizer.ExecuteSILPipelineRequest 48,189 95,950 47,761 99.11% ⛔
Sema.ABIMembersRequest 42,675 91,293 48,618 113.93% ⛔
Sema.AbstractGenericSignatureRequest 14,248 31,847 17,599 123.52% ⛔
Sema.AccessLevelRequest 4,153,130 12,664,265 8,511,135 204.93% ⛔
Sema.ActorIsolationRequest 1,220,132 2,553,216 1,333,084 109.26% ⛔
Sema.AllMembersRequest 76,021 166,192 90,171 118.61% ⛔
Sema.AnyObjectLookupRequest 107 224 117 109.35% ⛔
Sema.ApplyAccessNoteRequest 925,985 1,918,501 992,516 107.18% ⛔
Sema.AreAllStoredPropertiesDefaultInitableRequest 8,876 19,083 10,207 115.0% ⛔
Sema.AttachedPropertyWrapperTypeRequest 3,969 10,335 6,366 160.39% ⛔
Sema.AttachedPropertyWrappersRequest 57,939,800 120,082,044 62,142,244 107.25% ⛔
Sema.AttachedResultBuilderRequest 316,911 655,984 339,073 106.99% ⛔
Sema.BodyInitKindRequest 21,723 44,808 23,085 106.27% ⛔
Sema.CallerSideDefaultArgExprRequest 45,548 103,049 57,501 126.24% ⛔
Sema.CheckInconsistentImplementationOnlyImportsRequest 3,047 7,296 4,249 139.45% ⛔
Sema.CheckRedeclarationRequest 433,132 902,844 469,712 108.45% ⛔
Sema.ClassAncestryFlagsRequest 50,839 92,568 41,729 82.08% ⛔
Sema.ClosureHasExplicitResultRequest 36,895 84,341 47,446 128.6% ⛔
Sema.CollectOverriddenDeclsRequest 2,187,422 7,603,045 5,415,623 247.58% ⛔
Sema.CompareDeclSpecializationRequest 222,740 462,991 240,251 107.86% ⛔
Sema.ConditionalRequirementsRequest 192,924 441,956 249,032 129.08% ⛔
Sema.CustomAttrNominalRequest 1,234 1,908 674 54.62% ⛔
Sema.CustomAttrTypeRequest 478 876 398 83.26% ⛔
Sema.DefaultAndMaxAccessLevelRequest 24,946 53,359 28,413 113.9% ⛔
Sema.DefaultArgumentExprRequest 19,543 36,479 16,936 86.66% ⛔
Sema.DefaultArgumentInitContextRequest 153 276 123 80.39% ⛔
Sema.DefaultDefinitionTypeRequest 2,770 6,143 3,373 121.77% ⛔
Sema.DefaultTypeRequest 113,120 246,603 133,483 118.0% ⛔
Sema.DerivativeAttrOriginalDeclRequest 0 8 8 100.0% ⛔
Sema.DirectLookupRequest 19,748,638 35,631,745 15,883,107 80.43% ⛔
Sema.DirectOperatorLookupRequest 657,756 1,275,549 617,793 93.92% ⛔
Sema.DirectPrecedenceGroupLookupRequest 355,155 610,377 255,222 71.86% ⛔
Sema.DynamicallyReplacedDeclRequest 467,165 1,007,962 540,797 115.76% ⛔
Sema.EnumRawTypeRequest 10,704 23,066 12,362 115.49% ⛔
Sema.EnumRawValuesRequest 5,502 10,709 5,207 94.64% ⛔
Sema.ExistentialConformsToSelfRequest 7,495 16,243 8,748 116.72% ⛔
Sema.ExistentialTypeSupportedRequest 8,039 14,810 6,771 84.23% ⛔
Sema.ExtendedNominalRequest 224,509 467,174 242,665 108.09% ⛔
Sema.ExtendedTypeRequest 33,015 70,230 37,215 112.72% ⛔
Sema.FragileFunctionKindRequest 664,876 1,410,849 745,973 112.2% ⛔
Sema.FunctionOperatorRequest 5,559 9,563 4,004 72.03% ⛔
Sema.GenericParamListRequest 1,968,488 4,287,258 2,318,770 117.79% ⛔
Sema.GenericSignatureRequest 1,195,578 2,430,718 1,235,140 103.31% ⛔
Sema.GetDestructorRequest 11,648 22,478 10,830 92.98% ⛔
Sema.GetImplicitSendableRequest 69,253 193,355 124,102 179.2% ⛔
Sema.GlobalActorAttributeRequest 1,450,226 3,070,709 1,620,483 111.74% ⛔
Sema.GlobalActorInstanceRequest 98 182 84 85.71% ⛔
Sema.HasCircularInheritedProtocolsRequest 5,043 9,516 4,473 88.7% ⛔
Sema.HasCircularRawValueRequest 3,762 8,813 5,051 134.26% ⛔
Sema.HasDefaultInitRequest 21,768 47,701 25,933 119.13% ⛔
Sema.HasDynamicMemberLookupAttributeRequest 233,822 501,918 268,096 114.66% ⛔
Sema.HasImplementationOnlyImportsRequest 134,733 267,891 133,158 98.83% ⛔
Sema.HasMemberwiseInitRequest 8,443 20,392 11,949 141.53% ⛔
Sema.HasMissingDesignatedInitializersRequest 9,685 20,702 11,017 113.75% ⛔
Sema.HasUserDefinedDesignatedInitRequest 21,780 47,713 25,933 119.07% ⛔
Sema.InferredGenericSignatureRequest 84,524 146,842 62,318 73.73% ⛔
Sema.InheritedDeclsReferencedRequest 2,502,885 5,503,105 3,000,220 119.87% ⛔
Sema.InheritedProtocolsRequest 222,174 487,723 265,549 119.52% ⛔
Sema.InheritedTypeRequest 132,266 243,695 111,429 84.25% ⛔
Sema.InheritsSuperclassInitializersRequest 13,620 24,200 10,580 77.68% ⛔
Sema.InitKindRequest 42,586 85,350 42,764 100.42% ⛔
Sema.InterfaceTypeRequest 5,140,985 13,217,221 8,076,236 157.1% ⛔
Sema.IsABICompatibleOverrideRequest 61,086 125,023 63,937 104.67% ⛔
Sema.IsAccessorTransparentRequest 151,900 301,900 150,000 98.75% ⛔
Sema.IsActorRequest 392,576 819,580 427,004 108.77% ⛔
Sema.IsAsyncHandlerRequest 639,836 1,349,333 709,497 110.89% ⛔
Sema.IsCallableNominalTypeRequest 958 2,219 1,261 131.63% ⛔
Sema.IsDeclRefinementOfRequest 15,913 33,288 17,375 109.19% ⛔
Sema.IsDefaultActorRequest 17,892 37,005 19,113 106.82% ⛔
Sema.IsDynamicRequest 777,425 1,620,647 843,222 108.46% ⛔
Sema.IsFinalRequest 1,106,267 2,465,862 1,359,595 122.9% ⛔
Sema.IsGetterMutatingRequest 206,171 400,045 193,874 94.04% ⛔
Sema.IsImplicitlyUnwrappedOptionalRequest 1,136,579 2,288,868 1,152,289 101.38% ⛔
Sema.IsObjCRequest 700,975 1,434,862 733,887 104.7% ⛔
Sema.IsSetterMutatingRequest 156,766 323,130 166,364 106.12% ⛔
Sema.IsStaticRequest 1,066,089 1,928,780 862,691 80.92% ⛔
Sema.LazyStoragePropertyRequest 2,681 2,795 114 4.25% ⛔
Sema.LookupAllConformancesInContextRequest 515,450 1,591,940 1,076,490 208.84% ⛔
Sema.LookupConformanceInModuleRequest 15,505,966 35,550,127 20,044,161 129.27% ⛔
Sema.LookupInModuleRequest 2,883,935 6,047,600 3,163,665 109.7% ⛔
Sema.LookupInfixOperatorRequest 22,695 49,951 27,256 120.1% ⛔
Sema.LookupPostfixOperatorRequest 29 38 9 31.03% ⛔
Sema.LookupPrecedenceGroupRequest 12,433 24,190 11,757 94.56% ⛔
Sema.LookupPrefixOperatorRequest 53 130 77 145.28% ⛔
Sema.MangleLocalTypeDeclRequest 346 496 150 43.35% ⛔
Sema.ModuleImplicitImportsRequest 3,612 8,426 4,814 133.28% ⛔
Sema.ModuleQualifiedLookupRequest 1,242,838 2,844,525 1,601,687 128.87% ⛔
Sema.NamedLazyMemberLoadSuccessCount 10,723,277 19,469,241 8,745,964 81.56% ⛔
Sema.NamingPatternRequest 102,583 208,325 105,742 103.08% ⛔
Sema.NeedsNewVTableEntryRequest 344,579 655,596 311,017 90.26% ⛔
Sema.NumAccessorBodiesSynthesized 88,644 185,009 96,365 108.71% ⛔
Sema.NumAccessorsSynthesized 151,047 282,676 131,629 87.14% ⛔
Sema.NumConformancesDeserialized 3,070,521 8,591,314 5,520,793 179.8% ⛔
Sema.NumConstraintScopes 7,863,273 15,883,140 8,019,867 101.99% ⛔
Sema.NumConstraintsConsideredForEdgeContraction 166,715 942,936 776,221 465.6% ⛔
Sema.NumCyclicOneWayComponentsCollapsed 174 260 86 49.43% ⛔
Sema.NumDeclsDeserialized 25,289,293 67,211,304 41,922,011 165.77% ⛔
Sema.NumDeclsTypechecked 622,153 1,296,650 674,497 108.41% ⛔
Sema.NumGenericSignatureBuilders 457,544 1,053,697 596,153 130.29% ⛔
Sema.NumLazyIterableDeclContexts 3,221,028 7,750,247 4,529,219 140.61% ⛔
Sema.NumLazyRequirementSignatures 294,518 705,204 410,686 139.44% ⛔
Sema.NumLazyRequirementSignaturesLoaded 213,889 506,013 292,124 136.58% ⛔
Sema.NumLeafScopes 5,664,984 11,172,083 5,507,099 97.21% ⛔
Sema.NumTypesDeserialized 8,104,161 20,419,593 12,315,432 151.96% ⛔
Sema.NumUnloadedLazyIterableDeclContexts 2,062,590 4,620,859 2,558,269 124.03% ⛔
Sema.OpaqueReadOwnershipRequest 139,679 260,702 121,023 86.64% ⛔
Sema.OpaqueResultTypeRequest 234 336 102 43.59% ⛔
Sema.OperatorPrecedenceGroupRequest 417 680 263 63.07% ⛔
Sema.OverriddenDeclsRequest 1,319,365 2,993,283 1,673,918 126.87% ⛔
Sema.ParamSpecifierRequest 591,083 1,149,346 558,263 94.45% ⛔
Sema.PatternBindingEntryRequest 206,527 432,633 226,106 109.48% ⛔
Sema.PatternTypeRequest 248,407 509,403 260,996 105.07% ⛔
Sema.PolymorphicEffectKindRequest 48,938 103,108 54,170 110.69% ⛔
Sema.PreCheckResultBuilderRequest 536 761 225 41.98% ⛔
Sema.PrimarySourceFilesRequest 3,612 8,426 4,814 133.28% ⛔
Sema.PropertyWrapperAuxiliaryVariablesRequest 232,214 494,085 261,871 112.77% ⛔
Sema.PropertyWrapperBackingPropertyTypeRequest 3,969 10,335 6,366 160.39% ⛔
Sema.PropertyWrapperInitializerInfoRequest 153,668 321,419 167,751 109.16% ⛔
Sema.PropertyWrapperLValuenessRequest 389 631 242 62.21% ⛔
Sema.PropertyWrapperMutabilityRequest 283,416 563,747 280,331 98.91% ⛔
Sema.PropertyWrapperTypeInfoRequest 91 193 102 112.09% ⛔
Sema.ProtocolRequiresClassRequest 19,617 34,265 14,648 74.67% ⛔
Sema.ProvideDefaultImplForRequest 2,187,422 7,603,045 5,415,623 247.58% ⛔
Sema.QualifiedLookupRequest 2,909,798 5,821,522 2,911,724 100.07% ⛔
Sema.RequirementRequest 33,468 85,895 52,427 156.65% ⛔
Sema.RequirementSignatureRequest 245,481 561,240 315,759 128.63% ⛔
Sema.RequiresOpaqueAccessorsRequest 606,511 1,212,376 605,865 99.89% ⛔
Sema.RequiresOpaqueModifyCoroutineRequest 125,683 245,205 119,522 95.1% ⛔
Sema.ResolveImplicitMemberRequest 203,658 439,205 235,547 115.66% ⛔
Sema.ResolveTypeRequest 1,597,574 3,015,850 1,418,276 88.78% ⛔
Sema.ResultBuilderTypeRequest 161,475 335,351 173,876 107.68% ⛔
Sema.ResultTypeRequest 306,864 607,937 301,073 98.11% ⛔
Sema.SPIGroupsRequest 2,408,828 5,434,451 3,025,623 125.61% ⛔
Sema.ScopedImportLookupRequest 42 746 704 1676.19% ⛔
Sema.SelfAccessKindRequest 382,913 695,073 312,160 81.52% ⛔
Sema.SelfBoundsFromWhereClauseRequest 837,749 1,522,738 684,989 81.77% ⛔
Sema.SetterAccessLevelRequest 77,621 148,874 71,253 91.8% ⛔
Sema.SimpleDidSetRequest 745,187 2,100,845 1,355,658 181.92% ⛔
Sema.SpecializeAttrTargetDeclRequest 812 2,964 2,152 265.02% ⛔
Sema.StorageImplInfoRequest 672,663 1,379,582 706,919 105.09% ⛔
Sema.StoredPropertiesAndMissingMembersRequest 24,817 54,196 29,379 118.38% ⛔
Sema.StoredPropertiesRequest 130,260 296,112 165,852 127.32% ⛔
Sema.StructuralTypeRequest 460 1,405 945 205.43% ⛔
Sema.SuperclassDeclRequest 165,351 372,063 206,712 125.01% ⛔
Sema.SuperclassTypeRequest 21,885 44,635 22,750 103.95% ⛔
Sema.SynthesizeAccessorRequest 151,047 282,676 131,629 87.14% ⛔
Sema.SynthesizeDefaultInitRequest 2,659 4,941 2,282 85.82% ⛔
Sema.SynthesizeMainFunctionRequest 41,795 89,725 47,930 114.68% ⛔
Sema.SynthesizeMemberwiseInitRequest 1,287 3,487 2,200 170.94% ⛔
Sema.TypeCheckFunctionBodyRequest 234,050 490,184 256,134 109.44% ⛔
Sema.TypeCheckSourceFileRequest 12,352 24,163 11,811 95.62% ⛔
Sema.TypeDeclsFromWhereClauseRequest 12,329 25,416 13,087 106.15% ⛔
Sema.TypeWitnessRequest 3,400 7,385 3,985 117.21% ⛔
Sema.USRGenerationRequest 2,740,010 8,905,699 6,165,689 225.02% ⛔
Sema.UnderlyingTypeDeclsReferencedRequest 171,381 300,588 129,207 75.39% ⛔
Sema.UnderlyingTypeRequest 12,386 30,741 18,355 148.19% ⛔
Sema.UnqualifiedLookupRequest 1,969,452 3,860,965 1,891,513 96.04% ⛔
Sema.ValidatePrecedenceGroupRequest 90,730 173,949 83,219 91.72% ⛔
Sema.ValueWitnessRequest 41,373 65,553 24,180 58.44% ⛔
TBDGen.PublicSymbolsRequest 11,906 23,705 11,799 99.1% ⛔
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (35)
name old new delta delta_pct
AST.NumLinkLibraries 0 0 0 0.0%
IRGen.OptimizedIRRequest 0 0 0 0.0%
IRGen.SymbolObjectCodeRequest 0 0 0 0.0%
IRModule.NumIRComdatSymbols 0 0 0 0.0%
IRModule.NumIRIFuncs 0 0 0 0.0%
Parse.CodeCompletionSecondPassRequest 0 0 0 0.0%
SILGen.ParseSILModuleRequest 0 0 0 0.0%
SILModule.NumSILGenDefaultWitnessTables 0 0 0 0.0%
SILModule.NumSILOptDefaultWitnessTables 0 0 0 0.0%
SILOptimizer.LoweredSILRequest 0 0 0 0.0%
Sema.AsyncAlternativeRequest 0 0 0 0.0%
Sema.CanBeAsyncHandlerRequest 0 0 0 0.0%
Sema.CodeCompletionFileRequest 0 0 0 0.0%
Sema.ConformanceHasEffectRequest 0 0 0 0.0%
Sema.CursorInfoRequest 0 0 0 0.0%
Sema.DifferentiableAttributeTypeCheckRequest 0 0 0 0.0%
Sema.HasDynamicCallableAttributeRequest 0 0 0 0.0%
Sema.IsDeclApplicableRequest 0 0 0 0.0%
Sema.ModuleLibraryLevelRequest 0 0 0 0.0%
Sema.NumCrossImportsChecked 0 0 0 0.0%
Sema.NumCrossImportsFound 0 0 0 0.0%
Sema.PolymorphicEffectRequirementsRequest 0 0 0 0.0%
Sema.RangeInfoRequest 0 0 0 0.0%
Sema.ResolveEffectiveMemberwiseInitRequest 0 0 0 0.0%
Sema.ResolveProtocolNameRequest 0 0 0 0.0%
Sema.ResolveTypeEraserTypeRequest 0 0 0 0.0%
Sema.RootAndResultTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.RootTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.TangentStoredPropertyRequest 0 0 0 0.0%
Sema.TypeCheckASTNodeAtLocRequest 0 0 0 0.0%
Sema.TypeEraserHasViableInitRequest 0 0 0 0.0%
Sema.TypeRelationCheckRequest 0 0 0 0.0%
TBDGen.APIGenRequest 0 0 0 0.0%
TBDGen.GenerateTBDRequest 0 0 0 0.0%
TBDGen.SymbolSourceMapRequest 0 0 0 0.0%

Release

release brief

Regressed (0)
name old new delta delta_pct
Improved (2)
name old new delta delta_pct
Frontend.NumInstructionsExecuted 71,187,125,789,265 22,333,833,896,571 -48,853,291,892,694 -68.63% ✅
LLVM.NumLLVMBytesOutput 2,490,906,084 837,018,668 -1,653,887,416 -66.4% ✅
Unchanged (delta < 1.0% or delta < 100.0ms) (0)
name old new delta delta_pct

release detailed

Regressed (0)
name old new delta delta_pct
Improved (208)
name old new delta delta_pct
AST.ImportSetCacheHit 1,796,946 592,907 -1,204,039 -67.0% ✅
AST.ImportSetCacheMiss 83,702 27,673 -56,029 -66.94% ✅
AST.ImportSetFoldHit 35,017 13,260 -21,757 -62.13% ✅
AST.ImportSetFoldMiss 48,685 14,413 -34,272 -70.4% ✅
AST.ModuleShadowCacheHit 4,762 1,109 -3,653 -76.71% ✅
AST.ModuleShadowCacheMiss 1,818 387 -1,431 -78.71% ✅
AST.ModuleVisibilityCacheHit 53,853 15,939 -37,914 -70.4% ✅
AST.ModuleVisibilityCacheMiss 4,933 2,049 -2,884 -58.46% ✅
AST.NumASTBytesAllocated 13,820,445,630 4,140,259,754 -9,680,185,876 -70.04% ✅
AST.NumASTScopeExpansions 4,108,066 1,280,863 -2,827,203 -68.82% ✅
AST.NumASTScopeLookups 5,969,808 1,856,528 -4,113,280 -68.9% ✅
AST.NumDecls 203,558 62,772 -140,786 -69.16% ✅
AST.NumDependencies 78,261 38,648 -39,613 -50.62% ✅
AST.NumLoadedModules 41,565 12,712 -28,853 -69.42% ✅
AST.NumLocalTypeDecls 323 173 -150 -46.44% ✅
AST.NumModuleLookupClassMember 9,809 3,330 -6,479 -66.05% ✅
AST.NumModuleLookupValue 40,316,665 15,924,503 -24,392,162 -60.5% ✅
AST.NumObjCMethods 30,144 23,447 -6,697 -22.22% ✅
AST.NumOperators 810 353 -457 -56.42% ✅
AST.NumPrecedenceGroups 130 57 -73 -56.15% ✅
AST.NumSourceBuffers 44,798 14,205 -30,593 -68.29% ✅
AST.NumSourceLines 6,734,539 2,274,135 -4,460,404 -66.23% ✅
AST.NumSourceLinesPerSecond 741,402 202,469 -538,933 -72.69% ✅
AST.NumTotalClangImportedEntities 645,183 233,600 -411,583 -63.79% ✅
Frontend.MaxMallocUsage 341,610,884,640 99,924,427,504 -241,686,457,136 -70.75% ✅
Frontend.NumInstructionsExecuted 71,187,125,789,265 22,333,833,896,571 -48,853,291,892,694 -68.63% ✅
Frontend.NumProcessFailures 3 2 -1 -33.33% ✅
IRModule.NumGOTEntries 325,901 90,344 -235,557 -72.28% ✅
IRModule.NumIRAliases 212,620 91,167 -121,453 -57.12% ✅
IRModule.NumIRBasicBlocks 6,650,925 2,087,802 -4,563,123 -68.61% ✅
IRModule.NumIRFunctions 3,899,854 1,310,515 -2,589,339 -66.4% ✅
IRModule.NumIRGlobals 4,364,451 1,559,344 -2,805,107 -64.27% ✅
IRModule.NumIRInsts 64,299,080 20,856,977 -43,442,103 -67.56% ✅
IRModule.NumIRNamedMetaData 182,335 61,655 -120,680 -66.19% ✅
IRModule.NumIRValueSymbols 7,902,837 2,755,821 -5,147,016 -65.13% ✅
LLVM.NumLLVMBytesOutput 2,490,906,084 837,018,668 -1,653,887,416 -66.4% ✅
Parse.NumFunctionsParsed 400,027 125,805 -274,222 -68.55% ✅
Parse.NumIterableDeclContextParsed 136,562 39,380 -97,182 -71.16% ✅
Parse.ParseAbstractFunctionBodyRequest 368,091 110,521 -257,570 -69.97% ✅
Parse.ParseMembersRequest 754 398 -356 -47.21% ✅
Parse.ParseSourceFileRequest 36,639 12,397 -24,242 -66.16% ✅
SILGen.ASTLoweringRequest 1,745 587 -1,158 -66.36% ✅
SILModule.NumSILGenFunctions 1,732,343 540,031 -1,192,312 -68.83% ✅
SILModule.NumSILGenGlobalVariables 88,445 21,419 -67,026 -75.78% ✅
SILModule.NumSILGenVtables 23,890 6,395 -17,495 -73.23% ✅
SILModule.NumSILGenWitnessTables 101,312 32,369 -68,943 -68.05% ✅
SILModule.NumSILOptFunctions 1,444,042 463,837 -980,205 -67.88% ✅
SILModule.NumSILOptGlobalVariables 65,103 17,846 -47,257 -72.59% ✅
SILModule.NumSILOptVtables 29,229 7,898 -21,331 -72.98% ✅
SILModule.NumSILOptWitnessTables 103,705 33,067 -70,638 -68.11% ✅
SILOptimizer.ExecuteSILPipelineRequest 6,968 2,336 -4,632 -66.48% ✅
Sema.ABIMembersRequest 132,359 39,012 -93,347 -70.53% ✅
Sema.AbstractGenericSignatureRequest 37,826 8,500 -29,326 -77.53% ✅
Sema.AccessLevelRequest 2,241,795 700,230 -1,541,565 -68.76% ✅
Sema.ActorIsolationRequest 1,870,554 576,694 -1,293,860 -69.17% ✅
Sema.AllMembersRequest 130,995 38,426 -92,569 -70.67% ✅
Sema.AnyObjectLookupRequest 341 107 -234 -68.62% ✅
Sema.ApplyAccessNoteRequest 2,304,387 723,688 -1,580,699 -68.6% ✅
Sema.AreAllStoredPropertiesDefaultInitableRequest 19,459 5,332 -14,127 -72.6% ✅
Sema.AttachedPropertyWrapperTypeRequest 10,483 2,873 -7,610 -72.59% ✅
Sema.AttachedPropertyWrappersRequest 146,620,685 50,596,156 -96,024,529 -65.49% ✅
Sema.AttachedResultBuilderRequest 966,902 307,812 -659,090 -68.17% ✅
Sema.BodyInitKindRequest 66,558 20,686 -45,872 -68.92% ✅
Sema.CallerSideDefaultArgExprRequest 160,448 45,477 -114,971 -71.66% ✅
Sema.CheckInconsistentImplementationOnlyImportsRequest 1,744 585 -1,159 -66.46% ✅
Sema.CheckRedeclarationRequest 1,396,136 437,985 -958,151 -68.63% ✅
Sema.ClassAncestryFlagsRequest 64,963 19,377 -45,586 -70.17% ✅
Sema.ClosureHasExplicitResultRequest 131,312 37,184 -94,128 -71.68% ✅
Sema.CompareDeclSpecializationRequest 549,496 190,792 -358,704 -65.28% ✅
Sema.ConditionalRequirementsRequest 258,635 77,035 -181,600 -70.21% ✅
Sema.CustomAttrNominalRequest 781 308 -473 -60.56% ✅
Sema.CustomAttrTypeRequest 591 220 -371 -62.77% ✅
Sema.DefaultAndMaxAccessLevelRequest 58,975 17,435 -41,540 -70.44% ✅
Sema.DefaultArgumentExprRequest 53,856 19,623 -34,233 -63.56% ✅
Sema.DefaultArgumentInitContextRequest 142 77 -65 -45.77% ✅
Sema.DefaultDefinitionTypeRequest 4,212 1,240 -2,972 -70.56% ✅
Sema.DefaultTypeRequest 366,918 108,876 -258,042 -70.33% ✅
Sema.DerivativeAttrOriginalDeclRequest 8 0 -8 -100.0% ✅
Sema.DirectLookupRequest 44,844,187 17,084,512 -27,759,675 -61.9% ✅
Sema.DirectOperatorLookupRequest 1,691,418 596,327 -1,095,091 -64.74% ✅
Sema.DirectPrecedenceGroupLookupRequest 811,976 331,860 -480,116 -59.13% ✅
Sema.DynamicallyReplacedDeclRequest 1,143,853 344,152 -799,701 -69.91% ✅
Sema.EnumRawTypeRequest 13,952 3,791 -10,161 -72.83% ✅
Sema.EnumRawValuesRequest 14,654 4,598 -10,056 -68.62% ✅
Sema.ExistentialConformsToSelfRequest 7,027 1,887 -5,140 -73.15% ✅
Sema.ExistentialTypeSupportedRequest 11,319 4,084 -7,235 -63.92% ✅
Sema.ExtendedNominalRequest 64,024 19,834 -44,190 -69.02% ✅
Sema.ExtendedTypeRequest 63,941 19,800 -44,141 -69.03% ✅
Sema.FragileFunctionKindRequest 1,443,731 441,768 -1,001,963 -69.4% ✅
Sema.FunctionOperatorRequest 12,583 5,332 -7,251 -57.63% ✅
Sema.GenericParamListRequest 1,714,241 535,081 -1,179,160 -68.79% ✅
Sema.GenericSignatureRequest 1,449,649 463,943 -985,706 -68.0% ✅
Sema.GetDestructorRequest 24,844 7,689 -17,155 -69.05% ✅
Sema.GetImplicitSendableRequest 58,317 16,135 -42,182 -72.33% ✅
Sema.GlobalActorAttributeRequest 2,242,208 683,135 -1,559,073 -69.53% ✅
Sema.GlobalActorInstanceRequest 93 20 -73 -78.49% ✅
Sema.HasCircularInheritedProtocolsRequest 11,718 4,174 -7,544 -64.38% ✅
Sema.HasCircularRawValueRequest 13,951 3,790 -10,161 -72.83% ✅
Sema.HasDefaultInitRequest 42,903 11,439 -31,464 -73.34% ✅
Sema.HasDynamicMemberLookupAttributeRequest 354,659 106,120 -248,539 -70.08% ✅
Sema.HasImplementationOnlyImportsRequest 36,464 12,385 -24,079 -66.03% ✅
Sema.HasMemberwiseInitRequest 18,936 4,980 -13,956 -73.7% ✅
Sema.HasMissingDesignatedInitializersRequest 25,826 7,251 -18,575 -71.92% ✅
Sema.HasUserDefinedDesignatedInitRequest 42,903 11,439 -31,464 -73.34% ✅
Sema.InferredGenericSignatureRequest 94,196 30,356 -63,840 -67.77% ✅
Sema.InheritedDeclsReferencedRequest 1,545,121 514,284 -1,030,837 -66.72% ✅
Sema.InheritedProtocolsRequest 137,325 43,156 -94,169 -68.57% ✅
Sema.InheritedTypeRequest 217,243 64,198 -153,045 -70.45% ✅
Sema.InheritsSuperclassInitializersRequest 18,804 6,063 -12,741 -67.76% ✅
Sema.InitKindRequest 82,576 24,351 -58,225 -70.51% ✅
Sema.InterfaceTypeRequest 4,597,322 1,426,845 -3,170,477 -68.96% ✅
Sema.IsABICompatibleOverrideRequest 188,580 59,608 -128,972 -68.39% ✅
Sema.IsAccessorTransparentRequest 378,107 124,662 -253,445 -67.03% ✅
Sema.IsActorRequest 304,286 91,052 -213,234 -70.08% ✅
Sema.IsAsyncHandlerRequest 1,024,334 319,855 -704,479 -68.77% ✅
Sema.IsCallableNominalTypeRequest 3,059 964 -2,095 -68.49% ✅
Sema.IsDeclRefinementOfRequest 31,736 8,436 -23,300 -73.42% ✅
Sema.IsDefaultActorRequest 35,176 9,296 -25,880 -73.57% ✅
Sema.IsDynamicRequest 1,771,513 541,133 -1,230,380 -69.45% ✅
Sema.IsFinalRequest 1,397,874 455,782 -942,092 -67.39% ✅
Sema.IsGetterMutatingRequest 462,665 145,541 -317,124 -68.54% ✅
Sema.IsImplicitlyUnwrappedOptionalRequest 2,697,685 874,627 -1,823,058 -67.58% ✅
Sema.IsObjCRequest 1,547,005 495,613 -1,051,392 -67.96% ✅
Sema.IsSetterMutatingRequest 445,557 135,713 -309,844 -69.54% ✅
Sema.IsStaticRequest 800,609 272,260 -528,349 -65.99% ✅
Sema.LazyStoragePropertyRequest 872 760 -112 -12.84% ✅
Sema.LookupAllConformancesInContextRequest 162,524 50,912 -111,612 -68.67% ✅
Sema.LookupConformanceInModuleRequest 90,703,239 31,727,532 -58,975,707 -65.02% ✅
Sema.LookupInModuleRequest 3,182,729 1,009,709 -2,173,020 -68.28% ✅
Sema.LookupInfixOperatorRequest 76,273 22,343 -53,930 -70.71% ✅
Sema.LookupPostfixOperatorRequest 47 29 -18 -38.3% ✅
Sema.LookupPrecedenceGroupRequest 35,193 12,060 -23,133 -65.73% ✅
Sema.LookupPrefixOperatorRequest 185 46 -139 -75.14% ✅
Sema.MangleLocalTypeDeclRequest 343 193 -150 -43.73% ✅
Sema.ModuleImplicitImportsRequest 1,748 589 -1,159 -66.3% ✅
Sema.ModuleQualifiedLookupRequest 619,707 186,040 -433,667 -69.98% ✅
Sema.NamedLazyMemberLoadSuccessCount 11,501,937 4,252,184 -7,249,753 -63.03% ✅
Sema.NamingPatternRequest 98,309 33,547 -64,762 -65.88% ✅
Sema.NeedsNewVTableEntryRequest 776,142 252,609 -523,533 -67.45% ✅
Sema.NumAccessorBodiesSynthesized 285,822 88,874 -196,948 -68.91% ✅
Sema.NumAccessorsSynthesized 290,440 91,554 -198,886 -68.48% ✅
Sema.NumConformancesDeserialized 4,610,151 1,153,953 -3,456,198 -74.97% ✅
Sema.NumConstraintScopes 22,919,882 7,719,401 -15,200,481 -66.32% ✅
Sema.NumConstraintsConsideredForEdgeContraction 1,796,113 169,724 -1,626,389 -90.55% ✅
Sema.NumCyclicOneWayComponentsCollapsed 346 174 -172 -49.71% ✅
Sema.NumDeclsDeserialized 16,373,733 4,756,164 -11,617,569 -70.95% ✅
Sema.NumDeclsTypechecked 2,002,829 629,603 -1,373,226 -68.56% ✅
Sema.NumGenericSignatureBuilders 319,869 102,698 -217,171 -67.89% ✅
Sema.NumLazyIterableDeclContexts 2,060,255 633,720 -1,426,535 -69.24% ✅
Sema.NumLazyRequirementSignatures 167,360 53,888 -113,472 -67.8% ✅
Sema.NumLazyRequirementSignaturesLoaded 131,501 41,496 -90,005 -68.44% ✅
Sema.NumLeafScopes 15,857,239 5,547,160 -10,310,079 -65.02% ✅
Sema.NumTypesDeserialized 7,243,395 2,053,885 -5,189,510 -71.64% ✅
Sema.NumUnloadedLazyIterableDeclContexts 1,345,534 433,789 -911,745 -67.76% ✅
Sema.OpaqueReadOwnershipRequest 259,504 82,865 -176,639 -68.07% ✅
Sema.OpaqueResultTypeRequest 366 225 -141 -38.52% ✅
Sema.OperatorPrecedenceGroupRequest 720 344 -376 -52.22% ✅
Sema.OverriddenDeclsRequest 1,677,276 528,670 -1,148,606 -68.48% ✅
Sema.ParamSpecifierRequest 1,105,966 363,752 -742,214 -67.11% ✅
Sema.PatternBindingEntryRequest 425,920 130,165 -295,755 -69.44% ✅
Sema.PatternTypeRequest 535,543 171,952 -363,591 -67.89% ✅
Sema.PolymorphicEffectKindRequest 99,263 30,420 -68,843 -69.35% ✅
Sema.PreCheckResultBuilderRequest 903 532 -371 -41.09% ✅
Sema.PrimarySourceFilesRequest 1,748 589 -1,159 -66.3% ✅
Sema.PropertyWrapperAuxiliaryVariablesRequest 497,191 150,457 -346,734 -69.74% ✅
Sema.PropertyWrapperBackingPropertyTypeRequest 10,483 2,873 -7,610 -72.59% ✅
Sema.PropertyWrapperInitializerInfoRequest 487,582 149,878 -337,704 -69.26% ✅
Sema.PropertyWrapperLValuenessRequest 874 389 -485 -55.49% ✅
Sema.PropertyWrapperMutabilityRequest 707,089 218,533 -488,556 -69.09% ✅
Sema.PropertyWrapperTypeInfoRequest 88 16 -72 -81.82% ✅
Sema.ProtocolRequiresClassRequest 12,357 4,677 -7,680 -62.15% ✅
Sema.QualifiedLookupRequest 5,425,785 1,769,126 -3,656,659 -67.39% ✅
Sema.RequirementRequest 96,244 20,452 -75,792 -78.75% ✅
Sema.RequirementSignatureRequest 145,909 46,873 -99,036 -67.88% ✅
Sema.RequiresOpaqueAccessorsRequest 1,634,010 523,353 -1,110,657 -67.97% ✅
Sema.RequiresOpaqueModifyCoroutineRequest 256,702 78,607 -178,095 -69.38% ✅
Sema.ResolveImplicitMemberRequest 531,277 160,208 -371,069 -69.84% ✅
Sema.ResolveTypeRequest 2,619,279 840,407 -1,778,872 -67.91% ✅
Sema.ResultBuilderTypeRequest 474,834 151,241 -323,593 -68.15% ✅
Sema.ResultTypeRequest 579,282 185,167 -394,115 -68.04% ✅
Sema.SPIGroupsRequest 2,612,969 797,319 -1,815,650 -69.49% ✅
Sema.ScopedImportLookupRequest 1,544 42 -1,502 -97.28% ✅
Sema.SelfAccessKindRequest 454,417 162,939 -291,478 -64.14% ✅
Sema.SelfBoundsFromWhereClauseRequest 620,832 225,785 -395,047 -63.63% ✅
Sema.SetterAccessLevelRequest 187,065 65,617 -121,448 -64.92% ✅
Sema.SimpleDidSetRequest 472,339 156,117 -316,222 -66.95% ✅
Sema.SpecializeAttrTargetDeclRequest 2,940 431 -2,509 -85.34% ✅
Sema.StorageImplInfoRequest 1,787,590 573,364 -1,214,226 -67.93% ✅
Sema.StoredPropertiesAndMissingMembersRequest 57,881 14,668 -43,213 -74.66% ✅
Sema.StoredPropertiesRequest 206,498 61,195 -145,303 -70.37% ✅
Sema.StructuralTypeRequest 674 98 -576 -85.46% ✅
Sema.SuperclassDeclRequest 137,972 41,232 -96,740 -70.12% ✅
Sema.SuperclassTypeRequest 33,105 9,304 -23,801 -71.9% ✅
Sema.SynthesizeAccessorRequest 290,440 91,554 -198,886 -68.48% ✅
Sema.SynthesizeDefaultInitRequest 4,324 1,654 -2,670 -61.75% ✅
Sema.SynthesizeMainFunctionRequest 131,060 38,478 -92,582 -70.64% ✅
Sema.SynthesizeMemberwiseInitRequest 3,737 924 -2,813 -75.27% ✅
Sema.TypeCheckFunctionBodyRequest 754,912 234,500 -520,412 -68.94% ✅
Sema.TypeCheckSourceFileRequest 36,615 12,373 -24,242 -66.21% ✅
Sema.TypeDeclsFromWhereClauseRequest 30,335 8,256 -22,079 -72.78% ✅
Sema.TypeWitnessRequest 5,255 1,367 -3,888 -73.99% ✅
Sema.USRGenerationRequest 569,851 193,745 -376,106 -66.0% ✅
Sema.UnderlyingTypeDeclsReferencedRequest 78,054 31,884 -46,170 -59.15% ✅
Sema.UnderlyingTypeRequest 26,797 4,856 -21,941 -81.88% ✅
Sema.UnqualifiedLookupRequest 3,098,136 969,588 -2,128,548 -68.7% ✅
Sema.ValidatePrecedenceGroupRequest 257,536 90,883 -166,653 -64.71% ✅
Sema.ValueWitnessRequest 46,940 21,356 -25,584 -54.5% ✅
TBDGen.PublicSymbolsRequest 1,741 583 -1,158 -66.51% ✅
Unchanged (delta < 1.0% or delta < 100.0ms) (42)
name old new delta delta_pct
AST.NumIncrementalDependencies 0 0 0 0.0%
AST.NumLinkLibraries 0 0 0 0.0%
AST.NumReferencedDynamicNames 0 0 0 0.0%
AST.NumReferencedMemberNames 3,984 3,984 0 0.0%
AST.NumReferencedTopLevelNames 352 352 0 0.0%
IRGen.IRGenRequest 12 12 0 0.0%
IRGen.OptimizedIRRequest 0 0 0 0.0%
IRGen.SymbolObjectCodeRequest 0 0 0 0.0%
IRModule.NumIRComdatSymbols 0 0 0 0.0%
IRModule.NumIRIFuncs 0 0 0 0.0%
Parse.CodeCompletionSecondPassRequest 0 0 0 0.0%
SILGen.ParseSILModuleRequest 0 0 0 0.0%
SILModule.NumSILGenDefaultWitnessTables 0 0 0 0.0%
SILModule.NumSILOptDefaultWitnessTables 0 0 0 0.0%
SILOptimizer.LoweredSILRequest 0 0 0 0.0%
Sema.AsyncAlternativeRequest 0 0 0 0.0%
Sema.CanBeAsyncHandlerRequest 0 0 0 0.0%
Sema.CodeCompletionFileRequest 0 0 0 0.0%
Sema.CollectOverriddenDeclsRequest 0 0 0 0.0%
Sema.ConformanceHasEffectRequest 0 0 0 0.0%
Sema.CursorInfoRequest 0 0 0 0.0%
Sema.DifferentiableAttributeTypeCheckRequest 0 0 0 0.0%
Sema.HasDynamicCallableAttributeRequest 0 0 0 0.0%
Sema.IsDeclApplicableRequest 0 0 0 0.0%
Sema.ModuleLibraryLevelRequest 0 0 0 0.0%
Sema.NumCrossImportsChecked 0 0 0 0.0%
Sema.NumCrossImportsFound 0 0 0 0.0%
Sema.PolymorphicEffectRequirementsRequest 0 0 0 0.0%
Sema.ProvideDefaultImplForRequest 0 0 0 0.0%
Sema.RangeInfoRequest 0 0 0 0.0%
Sema.ResolveEffectiveMemberwiseInitRequest 0 0 0 0.0%
Sema.ResolveProtocolNameRequest 0 0 0 0.0%
Sema.ResolveTypeEraserTypeRequest 0 0 0 0.0%
Sema.RootAndResultTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.RootTypeOfKeypathDynamicMemberRequest 0 0 0 0.0%
Sema.TangentStoredPropertyRequest 0 0 0 0.0%
Sema.TypeCheckASTNodeAtLocRequest 0 0 0 0.0%
Sema.TypeEraserHasViableInitRequest 0 0 0 0.0%
Sema.TypeRelationCheckRequest 0 0 0 0.0%
TBDGen.APIGenRequest 0 0 0 0.0%
TBDGen.GenerateTBDRequest 0 0 0 0.0%
TBDGen.SymbolSourceMapRequest 0 0 0 0.0%

@slavapestov slavapestov merged commit e91b305 into apple:main May 8, 2021
@compnerd
Copy link
Collaborator

@slavapestov seems that this change has an issue on Windows. Could you please look into it or revert it until that can be fixed?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants