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

[stdlib] Adopt conditional conformance for Indices, Slice, ReversedCollection #12913

Merged

Conversation

airspeedswift
Copy link
Member

@airspeedswift airspeedswift commented Nov 14, 2017

This PR refactors the variations of Slice, DefaultIndices, and ReversedCollection to be conditional conformances on each base type e.g.

ReversedRandomAccessCollection<Base: RandomAccessCollection>: RandomAccessCollection

becomes:

extension ReversedCollection: RandomAccessCollection where Base: RandomAccessCollection { }

@available(*, deprecated, renamed: "ReversedCollection")
public typealias ReversedRandomAccessCollection<T: RandomAccessCollection> = ReversedCollection<T>

@airspeedswift airspeedswift changed the title [WIP thoroughly unmergable] Adopt conditional conformance for Indices, Slice, ReversedCollection [WIP thoroughly unmergeable] Adopt conditional conformance for Indices, Slice, ReversedCollection Nov 14, 2017
@slavapestov
Copy link
Contributor

Wow that's a lot of deleted code.

_elements: self,
startIndex: self.startIndex,
endIndex: self.endIndex)
}
}

% end
public typealias DefaultBidirectionalIndices<T: BidirectionalCollection> = DefaultIndices<T>
Copy link
Contributor

Choose a reason for hiding this comment

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

Deprecated in swift 4.1, perhaps?

@@ -1,4 +1,4 @@
//===--- RangeReplaceableCollection.swift.gyb -----------------*- swift -*-===//
//===--- RangeReplaceableCollection.swift -----------------*- swift -*-===//
Copy link
Contributor

Choose a reason for hiding this comment

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

Notpick: No longer 80 columns.

public let _base: Base
}
@available(*, deprecated, renamed: "ReversedCollection")
typealias ReversedRandomAccessCollection<T> = ReversedCollection<T> where T: RandomAccessCollection
Copy link
Contributor

Choose a reason for hiding this comment

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

public

Copy link
Member

@natecook1000 natecook1000 left a comment

Choose a reason for hiding this comment

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

This is so great! 👏👏👏

}
}

extension DefaultIndices: RandomAccessCollection where Elements: RandomAccessCollection { }
Copy link
Member

Choose a reason for hiding this comment

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

Need to make sure we're forwarding distance(to:) and index(_:offsetBy:) to the underlying collection.

public var endIndex: Index {
return ReversedRandomAccessIndex(_base.startIndex)
}
extension ReversedCollection: RandomAccessCollection where Base: RandomAccessCollection { }
Copy link
Member

Choose a reason for hiding this comment

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

Here too — need the index-moving methods.

@airspeedswift airspeedswift force-pushed the reversed-cond-conformance branch 3 times, most recently from 24b532b to 41af770 Compare November 15, 2017 20:32
@DougGregor
Copy link
Member

The first compiler crash this hits is: https://bugs.swift.org/browse/SR-6466

///
/// - Complexity: O(1)
@_inlineable
public func reversed() -> LazyRandomAccessCollection<
Copy link
Member

Choose a reason for hiding this comment

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

Whoops, we still need this, up until the point where the Lazy collections also use conditional conformances

@DougGregor DougGregor force-pushed the reversed-cond-conformance branch 2 times, most recently from f348ce3 to ce4d924 Compare November 29, 2017 01:06
@moiseev
Copy link
Contributor

moiseev commented Nov 29, 2017

@swift-ci Please smoke test macOS platform

@DougGregor
Copy link
Member

@airspeedswift , that last commit re-breaks the test. The gyb'd conformances are redundant, so we (correctly) "redundant conformance" errors. Why did you revert my change? Because it uncovered a source-compatibility issue?

@DougGregor
Copy link
Member

@swift-ci please test source compatibility

1 similar comment
@DougGregor
Copy link
Member

@swift-ci please test source compatibility

@DougGregor
Copy link
Member

Quite curious how this fares on the compatibility suite in its current state.

@DougGregor
Copy link
Member

Note that all of the test suite failure other that the Prototypes/Algorithms.swift.gyb one mentioned about are in the subscript(_: Range)/Set/semantics test at https://github.com/apple/swift/blob/master/stdlib/private/StdlibCollectionUnittest/CheckMutableCollectionType.swift.gyb#L244-L295.

@DougGregor
Copy link
Member

... and the crash appears to be in the materializeForSet for Slice's range subscript.

_T0s5SliceVss17MutableCollectionRzrlEAByxGs5RangeVy5IndexQzGcimytfU_ ---> closure #1 : () in (extension in Swift):Swift.Slice< where A: Swift.MutableCollection>.subscript.materializeForSet : (Swift.Range<A.Index>) -> Swift.Slice<A>

@DougGregor
Copy link
Member

The Plank and R failures are the SwiftPM failure under discussion in swiftlang/swift-package-manager#1393, so this isn't introducing any source-compatibility regressions.

@DougGregor
Copy link
Member

Turns out that we don't need that big pile of explicit typealiases in the standard library now that I've reinstated the associated type redeclarations in the Collection lattice.

@airspeedswift
Copy link
Member Author

airspeedswift commented Nov 29, 2017

@DougGregor sorry, I thought that was reverting a change I made from before you restricted the feature to only stdlib use (looks like the test was failing due to using the restricted feature). Yeah, if that original code doesn't compile, it does suggest a source compatibility issue we'll need to work around.

@moiseev
Copy link
Contributor

moiseev commented Nov 29, 2017

@swift-ci Please smoke test macOS platform

@DougGregor
Copy link
Member

The source compatibility issue here is that the code in question introduced conformances for each of the Revered*Collection types to a single new protocol, e.g.,

protocol P { }
extension ReversedCollection : P { }
extension ReversedRandomAccessCollection : P { }
extension ReversedRangeReplaceableCollection : P { }

With this PR, those conformances are now redundant, because it's stating ReversedCollection : P three times.

@airspeedswift
Copy link
Member Author

@swift-ci please smoke test compiler performance

@DougGregor DougGregor force-pushed the reversed-cond-conformance branch from 3b9c471 to a608f78 Compare November 29, 2017 21:47
@moiseev
Copy link
Contributor

moiseev commented Nov 29, 2017

@swift-ci Please test macOS platform

@moiseev
Copy link
Contributor

moiseev commented Nov 29, 2017

@swift-ci please smoke test compiler performance

@moiseev
Copy link
Contributor

moiseev commented Nov 29, 2017

@swift-ci Please smoke benchmark

@swift-ci
Copy link
Contributor

Build failed
Swift Test OS X Platform
Git Sha - 35e6e9d864e10573efce0f2add4c8db386050c94

@DougGregor
Copy link
Member

Fixed up the Prototypes/Algorithms.swift.gyb test. The "only" remaining failures are those due to https://github.com/apple/swift/blob/master/stdlib/private/StdlibCollectionUnittest/CheckMutableCollectionType.swift.gyb#L244-L295.

@swift-ci
Copy link
Contributor

Build comment file:

Summary for master smoketest

No regressions above thresholds

Debug

debug brief

Regressed (0)
name old new delta delta_pct
Improved (1)
name old new delta delta_pct
time.swift-driver.wall 31.7s 31.3s -341.6ms -1.08% ✅
Unchanged (delta < 1.0% or delta < 100.0ms) (1)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 23,289,420 23,287,784 -1,636 -0.01%

debug detailed

Regressed (0)
name old new delta delta_pct
Improved (8)
name old new delta delta_pct
Sema.NumConformancesDeserialized 145,073 115,589 -29,484 -20.32% ✅
Sema.NumConstraintScopes 456,701 446,174 -10,527 -2.31% ✅
Sema.NumDeclsDeserialized 932,410 914,094 -18,316 -1.96% ✅
Sema.NumGenericSignatureBuilders 37,139 36,636 -503 -1.35% ✅
Sema.NumLazyGenericEnvironments 197,644 188,642 -9,002 -4.55% ✅
Sema.NumLazyGenericEnvironmentsLoaded 19,488 19,122 -366 -1.88% ✅
Sema.NumLazyIterableDeclContexts 155,795 154,061 -1,734 -1.11% ✅
Sema.NumTypesDeserialized 1,000,774 978,140 -22,634 -2.26% ✅
Unchanged (delta < 1.0% or delta < 100.0ms) (15)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 47,780 47,780 0 0.0%
AST.NumLoadedModules 6,369 6,369 0 0.0%
AST.NumTotalClangImportedEntities 133,186 133,186 0 0.0%
AST.NumUsedConformances 2,715 2,713 -2 -0.07%
IRModule.NumIRBasicBlocks 65,531 65,525 -6 -0.01%
IRModule.NumIRFunctions 32,949 32,945 -4 -0.01%
IRModule.NumIRGlobals 36,444 36,442 -2 -0.01%
IRModule.NumIRInsts 702,313 702,293 -20 -0.0%
IRModule.NumIRValueSymbols 59,741 59,735 -6 -0.01%
LLVM.NumLLVMBytesOutput 23,289,420 23,287,784 -1,636 -0.01%
SILModule.NumSILGenFunctions 14,638 14,638 0 0.0%
SILModule.NumSILOptFunctions 25,780 25,780 0 0.0%
Sema.NumDeclsValidated 28,449 28,449 0 0.0%
Sema.NumFunctionsTypechecked 27,343 27,343 0 0.0%
Sema.NumTypesValidated 97,068 97,068 0 0.0%

Release

release brief

Regressed (0)
name old new delta delta_pct
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (2)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 28,767,912 28,759,808 -8,104 -0.03%
time.swift-driver.wall 68.3s 67.9s -381.1ms -0.56%

release detailed

Regressed (0)
name old new delta delta_pct
Improved (8)
name old new delta delta_pct
Sema.NumConformancesDeserialized 81,269 69,120 -12,149 -14.95% ✅
Sema.NumConstraintScopes 436,447 425,920 -10,527 -2.41% ✅
Sema.NumDeclsDeserialized 140,053 135,290 -4,763 -3.4% ✅
Sema.NumGenericSignatureBuilders 4,654 4,516 -138 -2.97% ✅
Sema.NumLazyGenericEnvironments 26,233 23,820 -2,413 -9.2% ✅
Sema.NumLazyGenericEnvironmentsLoaded 2,799 2,705 -94 -3.36% ✅
Sema.NumLazyIterableDeclContexts 12,810 12,673 -137 -1.07% ✅
Sema.NumTypesDeserialized 164,777 159,044 -5,733 -3.48% ✅
Unchanged (delta < 1.0% or delta < 100.0ms) (15)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 7,421 7,421 0 0.0%
AST.NumLoadedModules 227 227 0 0.0%
AST.NumTotalClangImportedEntities 22,601 22,601 0 0.0%
AST.NumUsedConformances 2,721 2,719 -2 -0.07%
IRModule.NumIRBasicBlocks 61,354 61,354 0 0.0%
IRModule.NumIRFunctions 26,532 26,532 0 0.0%
IRModule.NumIRGlobals 34,101 34,101 0 0.0%
IRModule.NumIRInsts 580,493 580,493 0 0.0%
IRModule.NumIRValueSymbols 54,215 54,215 0 0.0%
LLVM.NumLLVMBytesOutput 28,767,912 28,759,808 -8,104 -0.03%
SILModule.NumSILGenFunctions 10,842 10,842 0 0.0%
SILModule.NumSILOptFunctions 19,782 19,704 -78 -0.39%
Sema.NumDeclsValidated 17,632 17,632 0 0.0%
Sema.NumFunctionsTypechecked 7,471 7,471 0 0.0%
Sema.NumTypesValidated 31,082 31,082 0 0.0%

@swift-ci
Copy link
Contributor

Build comment file:

Optimized (O)

Regression (14)
TEST OLD NEW DELTA SPEEDUP
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 75249 86520 +15.0% 0.87x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 96185 109231 +13.6% 0.88x (?)
ProtocolDispatch2 133 146 +9.8% 0.91x
DictionaryRemove 2897 3162 +9.1% 0.92x
ProtocolDispatch 3150 3437 +9.1% 0.92x
ObjectiveCBridgeStubFromArrayOfNSString 25930 28003 +8.0% 0.93x
ObjectiveCBridgeFromNSArrayAnyObject 20500 22093 +7.8% 0.93x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 32709 35054 +7.2% 0.93x (?)
DropFirstAnyCollectionLazy 67064 71851 +7.1% 0.93x
ObjectiveCBridgeFromNSArrayAnyObjectToString 38238 40553 +6.1% 0.94x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 6654 7051 +6.0% 0.94x (?)
ArraySetElement 516 544 +5.4% 0.95x
ObjectiveCBridgeFromNSSetAnyObjectToString 60634 63903 +5.4% 0.95x (?)
CharIteration_tweet_unicodeScalars_Backwards 41646 43855 +5.3% 0.95x
Improvement (12)
TEST OLD NEW DELTA SPEEDUP
Sim2DArray 642 409 -36.3% 1.57x
CharIndexing_utf16_unicodeScalars_Backwards 78353 66216 -15.5% 1.18x
DeadArray 200 171 -14.5% 1.17x
CharIteration_utf16_unicodeScalars_Backwards 107805 95725 -11.2% 1.13x
PrefixAnySequence 4411 4024 -8.8% 1.10x
PrefixAnySequenceLazy 4405 4024 -8.6% 1.09x
SuffixCountableRangeLazy 12 11 -8.3% 1.09x
SuffixCountableRange 12 11 -8.3% 1.09x
NSError 313 287 -8.3% 1.09x (?)
Chars 1093 1036 -5.2% 1.06x
ObjectiveCBridgeFromNSArrayAnyObjectForced 3970 3767 -5.1% 1.05x (?)
ObjectiveCBridgeStubFromNSString 635 603 -5.0% 1.05x (?)
No Changes (308)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 2883 2900 +0.6% 0.99x
AnyHashableWithAClass 71008 73251 +3.2% 0.97x
Array2D 2523 2520 -0.1% 1.00x (?)
ArrayAppend 979 981 +0.2% 1.00x (?)
ArrayAppendArrayOfInt 745 745 +0.0% 1.00x
ArrayAppendAscii 22440 23342 +4.0% 0.96x
ArrayAppendFromGeneric 745 746 +0.1% 1.00x
ArrayAppendGenericStructs 1362 1359 -0.2% 1.00x
ArrayAppendLatin1 43306 42402 -2.1% 1.02x
ArrayAppendLazyMap 1288 1282 -0.5% 1.00x
ArrayAppendOptionals 1358 1359 +0.1% 1.00x (?)
ArrayAppendRepeatCol 1287 1287 +0.0% 1.00x
ArrayAppendReserved 724 727 +0.4% 1.00x (?)
ArrayAppendSequence 1077 1082 +0.5% 1.00x
ArrayAppendStrings 15052 15067 +0.1% 1.00x (?)
ArrayAppendToFromGeneric 745 745 +0.0% 1.00x
ArrayAppendToGeneric 745 745 +0.0% 1.00x
ArrayAppendUTF16 44313 44709 +0.9% 0.99x
ArrayInClass 85 85 +0.0% 1.00x
ArrayLiteral 0 0 +0.0% 1.00x
ArrayOfGenericPOD 221 221 +0.0% 1.00x
ArrayOfGenericRef 4232 4223 -0.2% 1.00x (?)
ArrayOfPOD 176 178 +1.1% 0.99x
ArrayOfRef 4191 4172 -0.5% 1.00x (?)
ArrayPlusEqualArrayOfInt 744 744 +0.0% 1.00x
ArrayPlusEqualFiveElementCollection 5578 5565 -0.2% 1.00x
ArrayPlusEqualSingleElementCollection 977 980 +0.3% 1.00x (?)
ArrayPlusEqualThreeElements 1570 1592 +1.4% 0.99x (?)
ArraySubscript 1485 1494 +0.6% 0.99x (?)
ArrayValueProp 8 8 +0.0% 1.00x
ArrayValueProp2 8 8 +0.0% 1.00x
ArrayValueProp3 8 8 +0.0% 1.00x
ArrayValueProp4 8 8 +0.0% 1.00x
BitCount 211 202 -4.3% 1.04x
ByteSwap 102 105 +2.9% 0.97x
CStringLongAscii 5879 5903 +0.4% 1.00x (?)
CStringLongNonAscii 2535 2448 -3.4% 1.04x
CStringShortAscii 4802 4793 -0.2% 1.00x (?)
Calculator 41 41 +0.0% 1.00x
CaptureProp 7728 7742 +0.2% 1.00x
CharIndexing_ascii_unicodeScalars 19902 19871 -0.2% 1.00x (?)
CharIndexing_ascii_unicodeScalars_Backwards 18333 19125 +4.3% 0.96x
CharIndexing_chinese_unicodeScalars 15043 15057 +0.1% 1.00x (?)
CharIndexing_chinese_unicodeScalars_Backwards 13869 14468 +4.3% 0.96x
CharIndexing_japanese_unicodeScalars 23818 23803 -0.1% 1.00x (?)
CharIndexing_japanese_unicodeScalars_Backwards 21951 22926 +4.4% 0.96x
CharIndexing_korean_unicodeScalars 19282 19298 +0.1% 1.00x
CharIndexing_korean_unicodeScalars_Backwards 17764 18487 +4.1% 0.96x
CharIndexing_punctuatedJapanese_unicodeScalars 3561 3566 +0.1% 1.00x (?)
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 3285 3419 +4.1% 0.96x
CharIndexing_punctuated_unicodeScalars 4473 4472 -0.0% 1.00x (?)
CharIndexing_punctuated_unicodeScalars_Backwards 4124 4293 +4.1% 0.96x
CharIndexing_russian_unicodeScalars 16576 16565 -0.1% 1.00x (?)
CharIndexing_russian_unicodeScalars_Backwards 15263 15931 +4.4% 0.96x
CharIndexing_tweet_unicodeScalars 39198 39206 +0.0% 1.00x (?)
CharIndexing_tweet_unicodeScalars_Backwards 35905 37752 +5.1% 0.95x
CharIndexing_utf16_unicodeScalars 68858 68887 +0.0% 1.00x
CharIteration_ascii_unicodeScalars 23275 23290 +0.1% 1.00x (?)
CharIteration_ascii_unicodeScalars_Backwards 21283 22192 +4.3% 0.96x
CharIteration_chinese_unicodeScalars 17638 17593 -0.3% 1.00x
CharIteration_chinese_unicodeScalars_Backwards 16092 16784 +4.3% 0.96x
CharIteration_japanese_unicodeScalars 27887 27906 +0.1% 1.00x (?)
CharIteration_japanese_unicodeScalars_Backwards 25476 26608 +4.4% 0.96x
CharIteration_korean_unicodeScalars 22584 22584 +0.0% 1.00x
CharIteration_korean_unicodeScalars_Backwards 20615 21510 +4.3% 0.96x
CharIteration_punctuatedJapanese_unicodeScalars 4118 4118 +0.0% 1.00x
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 3791 3949 +4.2% 0.96x
CharIteration_punctuated_unicodeScalars 5201 5185 -0.3% 1.00x
CharIteration_punctuated_unicodeScalars_Backwards 4761 4965 +4.3% 0.96x
CharIteration_russian_unicodeScalars 19441 19368 -0.4% 1.00x
CharIteration_russian_unicodeScalars_Backwards 17700 18485 +4.4% 0.96x
CharIteration_tweet_unicodeScalars 46167 46004 -0.4% 1.00x
CharIteration_utf16_unicodeScalars 97036 97319 +0.3% 1.00x
CharacterLiteralsLarge 5709 5681 -0.5% 1.00x
CharacterLiteralsSmall 510 511 +0.2% 1.00x (?)
ClassArrayGetter 15 15 +0.0% 1.00x
Dictionary 657 664 +1.1% 0.99x
Dictionary2 1875 1874 -0.1% 1.00x (?)
Dictionary2OfObjects 3238 3240 +0.1% 1.00x (?)
Dictionary3 550 550 +0.0% 1.00x
Dictionary3OfObjects 883 881 -0.2% 1.00x (?)
DictionaryBridge 3834 3657 -4.6% 1.05x
DictionaryGroup 270 270 +0.0% 1.00x
DictionaryGroupOfObjects 1956 1939 -0.9% 1.01x (?)
DictionaryLiteral 1484 1505 +1.4% 0.99x
DictionaryOfObjects 2298 2292 -0.3% 1.00x (?)
DictionaryRemoveOfObjects 22736 23442 +3.1% 0.97x
DictionarySwap 488 489 +0.2% 1.00x
DictionarySwapOfObjects 7065 7155 +1.3% 0.99x (?)
DropFirstAnyCollection 76 76 +0.0% 1.00x
DropFirstAnySeqCRangeIter 20716 20597 -0.6% 1.01x
DropFirstAnySeqCRangeIterLazy 20718 20580 -0.7% 1.01x
DropFirstAnySeqCntRange 71 71 +0.0% 1.00x
DropFirstAnySeqCntRangeLazy 71 71 +0.0% 1.00x
DropFirstAnySequence 4845 4631 -4.4% 1.05x
DropFirstAnySequenceLazy 4845 4636 -4.3% 1.05x
DropFirstArray 35 35 +0.0% 1.00x
DropFirstArrayLazy 35 35 +0.0% 1.00x
DropFirstCountableRange 36 35 -2.8% 1.03x
DropFirstCountableRangeLazy 36 35 -2.8% 1.03x
DropFirstSequence 2622 2621 -0.0% 1.00x (?)
DropFirstSequenceLazy 2715 2716 +0.0% 1.00x (?)
DropLastAnyCollection 27 28 +3.7% 0.96x
DropLastAnyCollectionLazy 22337 22571 +1.0% 0.99x
DropLastAnySeqCRangeIter 4306 4270 -0.8% 1.01x (?)
DropLastAnySeqCRangeIterLazy 4297 4343 +1.1% 0.99x
DropLastAnySeqCntRange 23 23 +0.0% 1.00x
DropLastAnySeqCntRangeLazy 23 23 +0.0% 1.00x
DropLastAnySequence 5899 5865 -0.6% 1.01x (?)
DropLastAnySequenceLazy 5966 5874 -1.5% 1.02x
DropLastArray 17 17 +0.0% 1.00x
DropLastArrayLazy 17 17 +0.0% 1.00x
DropLastCountableRange 11 11 +0.0% 1.00x
DropLastCountableRangeLazy 11 11 +0.0% 1.00x
DropLastSequence 693 695 +0.3% 1.00x
DropLastSequenceLazy 693 694 +0.1% 1.00x
DropWhileAnyCollection 99 99 +0.0% 1.00x
DropWhileAnyCollectionLazy 147 147 +0.0% 1.00x
DropWhileAnySeqCRangeIter 16974 16733 -1.4% 1.01x
DropWhileAnySeqCRangeIterLazy 147 147 +0.0% 1.00x
DropWhileAnySeqCntRange 95 95 +0.0% 1.00x
DropWhileAnySeqCntRangeLazy 147 147 +0.0% 1.00x
DropWhileAnySequence 5326 5219 -2.0% 1.02x
DropWhileAnySequenceLazy 1832 1831 -0.1% 1.00x
DropWhileArray 53 53 +0.0% 1.00x
DropWhileArrayLazy 129 129 +0.0% 1.00x
DropWhileCountableRange 36 36 +0.0% 1.00x
DropWhileCountableRangeLazy 111 111 +0.0% 1.00x
DropWhileSequence 1322 1322 +0.0% 1.00x
DropWhileSequenceLazy 88 88 +0.0% 1.00x
EqualStringSubstring 401 399 -0.5% 1.01x
EqualSubstringString 400 400 +0.0% 1.00x
EqualSubstringSubstring 401 400 -0.2% 1.00x
EqualSubstringSubstringGenericEquatable 401 399 -0.5% 1.01x (?)
ErrorHandling 1987 2066 +4.0% 0.96x
ExclusivityGlobal 5 5 +0.0% 1.00x
ExclusivityInMatSet 20 20 +0.0% 1.00x
ExclusivityIndependent 2 2 +0.0% 1.00x
FilterEvenUsingReduce 1312 1284 -2.1% 1.02x (?)
FilterEvenUsingReduceInto 145 148 +2.1% 0.98x (?)
FrequenciesUsingReduce 7950 7932 -0.2% 1.00x
FrequenciesUsingReduceInto 4329 4345 +0.4% 1.00x (?)
Hanoi 3769 3929 +4.2% 0.96x
HashTest 1695 1703 +0.5% 1.00x (?)
Histogram 333 337 +1.2% 0.99x
Integrate 217 217 +0.0% 1.00x
IterateData 1329 1299 -2.3% 1.02x
Join 384 376 -2.1% 1.02x
LazilyFilteredArrayContains 30695 31891 +3.9% 0.96x
LazilyFilteredArrays 65969 65391 -0.9% 1.01x
LazilyFilteredRange 3810 3816 +0.2% 1.00x
LessSubstringSubstring 401 400 -0.2% 1.00x
LessSubstringSubstringGenericComparable 401 400 -0.2% 1.00x
LinkedList 7184 7182 -0.0% 1.00x (?)
MapReduce 457 456 -0.2% 1.00x
MapReduceAnyCollection 455 455 +0.0% 1.00x
MapReduceAnyCollectionShort 2005 2004 -0.0% 1.00x (?)
MapReduceClass 2991 2994 +0.1% 1.00x
MapReduceClassShort 4510 4458 -1.2% 1.01x
MapReduceLazyCollection 13 13 +0.0% 1.00x
MapReduceLazyCollectionShort 34 34 +0.0% 1.00x
MapReduceLazySequence 86 86 +0.0% 1.00x
MapReduceSequence 448 447 -0.2% 1.00x (?)
MapReduceShort 2000 1981 -0.9% 1.01x (?)
MapReduceShortString 22 22 +0.0% 1.00x
MapReduceString 108 111 +2.8% 0.97x
Memset 214 215 +0.5% 1.00x (?)
MonteCarloE 10379 10417 +0.4% 1.00x
MonteCarloPi 42899 42783 -0.3% 1.00x
NSDictionaryCastToSwift 5562 5525 -0.7% 1.01x (?)
NSStringConversion 406 398 -2.0% 1.02x
NopDeinit 23458 23036 -1.8% 1.02x
ObjectAllocation 173 173 +0.0% 1.00x
ObjectiveCBridgeFromNSDictionaryAnyObject 132018 128908 -2.4% 1.02x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 134786 134235 -0.4% 1.00x (?)
ObjectiveCBridgeFromNSSetAnyObject 62820 64421 +2.5% 0.98x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 4767 4893 +2.6% 0.97x (?)
ObjectiveCBridgeFromNSString 986 967 -1.9% 1.02x (?)
ObjectiveCBridgeFromNSStringForced 2134 2111 -1.1% 1.01x (?)
ObjectiveCBridgeStubDataAppend 3910 3962 +1.3% 0.99x (?)
ObjectiveCBridgeStubDateAccess 229 229 +0.0% 1.00x
ObjectiveCBridgeStubDateMutation 256 256 +0.0% 1.00x
ObjectiveCBridgeStubFromNSDate 4158 4161 +0.1% 1.00x (?)
ObjectiveCBridgeStubFromNSDateRef 4491 4558 +1.5% 0.99x
ObjectiveCBridgeStubFromNSStringRef 172 175 +1.7% 0.98x
ObjectiveCBridgeStubNSDataAppend 2623 2622 -0.0% 1.00x (?)
ObjectiveCBridgeStubNSDateMutationRef 12702 13013 +2.4% 0.98x (?)
ObjectiveCBridgeStubNSDateRefAccess 348 348 +0.0% 1.00x
ObjectiveCBridgeStubToArrayOfNSString 27829 29276 +5.2% 0.95x
ObjectiveCBridgeStubToNSDate 14671 15193 +3.6% 0.97x (?)
ObjectiveCBridgeStubToNSDateRef 3344 3376 +1.0% 0.99x (?)
ObjectiveCBridgeStubToNSString 1419 1418 -0.1% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 126 129 +2.4% 0.98x
ObjectiveCBridgeStubURLAppendPath 328298 330288 +0.6% 0.99x (?)
ObjectiveCBridgeStubURLAppendPathRef 340263 344357 +1.2% 0.99x (?)
ObjectiveCBridgeToNSArray 28895 29211 +1.1% 0.99x (?)
ObjectiveCBridgeToNSDictionary 57904 57287 -1.1% 1.01x (?)
ObjectiveCBridgeToNSSet 46908 46435 -1.0% 1.01x (?)
ObjectiveCBridgeToNSString 1196 1192 -0.3% 1.00x (?)
ObserverClosure 2025 2006 -0.9% 1.01x
ObserverForwarderStruct 1091 1095 +0.4% 1.00x (?)
ObserverPartiallyAppliedMethod 3502 3487 -0.4% 1.00x
ObserverUnappliedMethod 2145 2162 +0.8% 0.99x (?)
OpenClose 5 5 +0.0% 1.00x
Phonebook 6453 6620 +2.6% 0.97x
PolymorphicCalls 25 25 +0.0% 1.00x
PopFrontArray 1979 1980 +0.1% 1.00x (?)
PopFrontArrayGeneric 2000 2021 +1.0% 0.99x (?)
PopFrontUnsafePointer 9682 9760 +0.8% 0.99x (?)
PrefixAnyCollection 76 76 +0.0% 1.00x
PrefixAnyCollectionLazy 66996 67785 +1.2% 0.99x (?)
PrefixAnySeqCRangeIter 16086 16170 +0.5% 0.99x
PrefixAnySeqCRangeIterLazy 16229 16132 -0.6% 1.01x
PrefixAnySeqCntRange 71 71 +0.0% 1.00x
PrefixAnySeqCntRangeLazy 71 71 +0.0% 1.00x
PrefixArray 35 35 +0.0% 1.00x
PrefixArrayLazy 35 35 +0.0% 1.00x
PrefixCountableRange 35 35 +0.0% 1.00x
PrefixCountableRangeLazy 35 35 +0.0% 1.00x
PrefixSequence 1307 1307 +0.0% 1.00x
PrefixSequenceLazy 1378 1378 +0.0% 1.00x
PrefixWhileAnyCollection 146 146 +0.0% 1.00x
PrefixWhileAnyCollectionLazy 106 106 +0.0% 1.00x
PrefixWhileAnySeqCRangeIter 11743 11856 +1.0% 0.99x
PrefixWhileAnySeqCRangeIterLazy 106 106 +0.0% 1.00x
PrefixWhileAnySeqCntRange 141 141 +0.0% 1.00x
PrefixWhileAnySeqCntRangeLazy 106 106 +0.0% 1.00x
PrefixWhileAnySequence 12730 12835 +0.8% 0.99x (?)
PrefixWhileAnySequenceLazy 1374 1373 -0.1% 1.00x (?)
PrefixWhileArray 88 88 +0.0% 1.00x
PrefixWhileArrayLazy 70 70 +0.0% 1.00x
PrefixWhileCountableRange 53 53 +0.0% 1.00x
PrefixWhileCountableRangeLazy 35 35 +0.0% 1.00x
PrefixWhileSequence 389 390 +0.3% 1.00x (?)
PrefixWhileSequenceLazy 52 52 +0.0% 1.00x
Prims 777 776 -0.1% 1.00x (?)
PrimsSplit 767 770 +0.4% 1.00x (?)
RC4 165 164 -0.6% 1.01x
RGBHistogram 2825 2883 +2.1% 0.98x
RGBHistogramOfObjects 22815 22825 +0.0% 1.00x (?)
RangeAssignment 376 378 +0.5% 0.99x
RangeIterationSigned 171 171 +0.0% 1.00x
RangeIterationSigned64 200 200 +0.0% 1.00x
RangeIterationUnsigned 200 200 +0.0% 1.00x
RecursiveOwnedParameter 2295 2293 -0.1% 1.00x
ReversedArray 57 57 +0.0% 1.00x
ReversedBidirectional 28454 27766 -2.4% 1.02x
ReversedDictionary 124 125 +0.8% 0.99x (?)
SetExclusiveOr 3305 3339 +1.0% 0.99x
SetExclusiveOr_OfObjects 8412 8418 +0.1% 1.00x (?)
SetIntersect 321 321 +0.0% 1.00x
SetIntersect_OfObjects 1742 1734 -0.5% 1.00x
SetIsSubsetOf 292 292 +0.0% 1.00x
SetIsSubsetOf_OfObjects 349 349 +0.0% 1.00x
SetUnion 3015 3009 -0.2% 1.00x (?)
SetUnion_OfObjects 7117 7106 -0.2% 1.00x (?)
SevenBoom 1568 1563 -0.3% 1.00x (?)
SortLargeExistentials 7865 7740 -1.6% 1.02x (?)
SortLettersInPlace 1101 1099 -0.2% 1.00x (?)
SortSortedStrings 1068 1108 +3.7% 0.96x
SortStrings 1902 1969 +3.5% 0.97x
SortStringsUnicode 8854 9172 +3.6% 0.97x
StackPromo 21876 21865 -0.1% 1.00x (?)
StaticArray 5 5 +0.0% 1.00x
StrComplexWalk 1988 1987 -0.1% 1.00x (?)
StrToInt 2125 2071 -2.5% 1.03x
StringAdder 3358 3347 -0.3% 1.00x (?)
StringBuilder 993 975 -1.8% 1.02x
StringBuilderLong 953 949 -0.4% 1.00x (?)
StringEdits 170978 169087 -1.1% 1.01x
StringEnumRawValueInitialization 1100 1098 -0.2% 1.00x (?)
StringEqualPointerComparison 457 458 +0.2% 1.00x
StringFromLongWholeSubstring 171 170 -0.6% 1.01x
StringFromLongWholeSubstringGeneric 72 72 +0.0% 1.00x
StringHasPrefix 1288 1288 +0.0% 1.00x
StringHasPrefixUnicode 18143 18393 +1.4% 0.99x
StringHasSuffix 1404 1404 +0.0% 1.00x
StringHasSuffixUnicode 78375 78452 +0.1% 1.00x (?)
StringInterpolation 10929 10826 -0.9% 1.01x (?)
StringMatch 8829 8762 -0.8% 1.01x
StringUTF16Builder 1842 1829 -0.7% 1.01x
StringWalk 1540 1541 +0.1% 1.00x (?)
StringWithCString 75110 74579 -0.7% 1.01x
SubstringComparable 1688 1678 -0.6% 1.01x
SubstringEqualString 1472 1481 +0.6% 0.99x
SubstringEquatable 3607 3600 -0.2% 1.00x (?)
SubstringFromLongString 10 10 +0.0% 1.00x
SubstringFromLongStringGeneric 72 72 +0.0% 1.00x
SuffixAnyCollection 28 28 +0.0% 1.00x
SuffixAnyCollectionLazy 22495 23459 +4.3% 0.96x
SuffixAnySeqCRangeIter 4609 4559 -1.1% 1.01x
SuffixAnySeqCRangeIterLazy 4579 4680 +2.2% 0.98x
SuffixAnySeqCntRange 23 23 +0.0% 1.00x
SuffixAnySeqCntRangeLazy 23 23 +0.0% 1.00x
SuffixAnySequence 5852 5781 -1.2% 1.01x (?)
SuffixAnySequenceLazy 5929 5966 +0.6% 0.99x
SuffixArray 17 17 +0.0% 1.00x
SuffixArrayLazy 11 11 +0.0% 1.00x
SuffixSequence 4629 4639 +0.2% 1.00x
SuffixSequenceLazy 4604 4572 -0.7% 1.01x (?)
SumUsingReduce 102 102 +0.0% 1.00x
SumUsingReduceInto 102 102 +0.0% 1.00x
SuperChars 86667 84718 -2.2% 1.02x (?)
TwoSum 1006 998 -0.8% 1.01x
TypeFlood 0 0 +0.0% 1.00x
UTF8Decode 314 314 +0.0% 1.00x
Walsh 434 448 +3.2% 0.97x
XorLoop 381 384 +0.8% 0.99x (?)

Unoptimized (Onone)

Regression (38)
TEST OLD NEW DELTA SPEEDUP
StringBuilderLong 1099 1455 +32.4% 0.76x (?)
CharIteration_chinese_unicodeScalars 138245 176712 +27.8% 0.78x
CharIteration_japanese_unicodeScalars 217746 266749 +22.5% 0.82x
CharIteration_tweet_unicodeScalars 358662 438586 +22.3% 0.82x
CharIndexing_korean_unicodeScalars_Backwards 440662 533060 +21.0% 0.83x
CharIteration_russian_unicodeScalars 163825 196415 +19.9% 0.83x
CharIteration_punctuatedJapanese_unicodeScalars 33141 39443 +19.0% 0.84x (?)
CharIteration_chinese_unicodeScalars_Backwards 241567 286985 +18.8% 0.84x (?)
CharIteration_korean_unicodeScalars 191754 227535 +18.7% 0.84x
CharIndexing_punctuated_unicodeScalars_Backwards 101885 120601 +18.4% 0.84x
CharIteration_ascii_unicodeScalars 196213 230701 +17.6% 0.85x (?)
CharIteration_tweet_unicodeScalars_Backwards 676172 788357 +16.6% 0.86x (?)
CharIndexing_tweet_unicodeScalars_Backwards 946846 1103836 +16.6% 0.86x (?)
CharIteration_punctuated_unicodeScalars 45053 52312 +16.1% 0.86x
CharIteration_punctuated_unicodeScalars_Backwards 75616 87467 +15.7% 0.86x
CharIndexing_chinese_unicodeScalars_Backwards 350874 405628 +15.6% 0.87x
CharIndexing_russian_unicodeScalars_Backwards 400096 457091 +14.2% 0.88x
SubstringEqualString 6280 7168 +14.1% 0.88x
CharIteration_utf16_unicodeScalars 215207 243871 +13.3% 0.88x
CharIteration_japanese_unicodeScalars_Backwards 379570 429180 +13.1% 0.88x (?)
CharIteration_korean_unicodeScalars_Backwards 364185 411664 +13.0% 0.88x
PopFrontArray 9557 10764 +12.6% 0.89x
CharIteration_ascii_unicodeScalars_Backwards 336979 377419 +12.0% 0.89x (?)
DropFirstAnyCollectionLazy 113343 125250 +10.5% 0.90x
CharIndexing_japanese_unicodeScalars_Backwards 554852 613103 +10.5% 0.90x (?)
CharIteration_punctuatedJapanese_unicodeScalars_Backwards 60161 66228 +10.1% 0.91x
PrefixAnyCollectionLazy 116276 127026 +9.2% 0.92x
CharIndexing_punctuated_unicodeScalars 105859 115638 +9.2% 0.92x
ObjectiveCBridgeStubDataAppend 4429 4798 +8.3% 0.92x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToString 40529 43852 +8.2% 0.92x
EqualSubstringSubstring 767 827 +7.8% 0.93x
ObjectiveCBridgeFromNSArrayAnyObject 22808 24442 +7.2% 0.93x
EqualStringSubstring 660 706 +7.0% 0.93x (?)
EqualSubstringString 665 711 +6.9% 0.94x
CharIndexing_punctuatedJapanese_unicodeScalars_Backwards 85859 91625 +6.7% 0.94x (?)
ObjectiveCBridgeStubFromArrayOfNSString 25157 26771 +6.4% 0.94x (?)
SuffixAnyCollectionLazy 39685 42087 +6.1% 0.94x
ObjectiveCBridgeStubToNSDate 15246 16083 +5.5% 0.95x
Improvement (12)
TEST OLD NEW DELTA SPEEDUP
ReversedArray 33802 17457 -48.4% 1.94x
RangeIterationUnsigned 46230 38435 -16.9% 1.20x
RangeIterationSigned64 49085 43067 -12.3% 1.14x
CharIndexing_russian_unicodeScalars 441495 392875 -11.0% 1.12x (?)
StringMatch 40157 35786 -10.9% 1.12x
CharIndexing_tweet_unicodeScalars 1030969 944281 -8.4% 1.09x (?)
CStringShortAscii 9127 8376 -8.2% 1.09x
ObjectiveCBridgeStubDateMutation 649 601 -7.4% 1.08x
CharIndexing_japanese_unicodeScalars 599486 555510 -7.3% 1.08x (?)
CStringLongAscii 6116 5668 -7.3% 1.08x
CharIndexing_punctuatedJapanese_unicodeScalars 87294 81408 -6.7% 1.07x (?)
ExclusivityIndependent 75 70 -6.7% 1.07x
No Changes (284)
TEST OLD NEW DELTA SPEEDUP
AngryPhonebook 4727 4727 +0.0% 1.00x
AnyHashableWithAClass 88955 87671 -1.4% 1.01x
Array2D 633252 631522 -0.3% 1.00x
ArrayAppend 4860 4873 +0.3% 1.00x
ArrayAppendArrayOfInt 799 802 +0.4% 1.00x
ArrayAppendAscii 44203 44138 -0.1% 1.00x (?)
ArrayAppendFromGeneric 797 816 +2.4% 0.98x
ArrayAppendGenericStructs 1415 1415 +0.0% 1.00x
ArrayAppendLatin1 66372 66126 -0.4% 1.00x
ArrayAppendLazyMap 208634 209206 +0.3% 1.00x (?)
ArrayAppendOptionals 1417 1419 +0.1% 1.00x (?)
ArrayAppendRepeatCol 201683 204211 +1.3% 0.99x
ArrayAppendReserved 4484 4496 +0.3% 1.00x
ArrayAppendSequence 141370 141632 +0.2% 1.00x
ArrayAppendStrings 15201 15202 +0.0% 1.00x (?)
ArrayAppendToFromGeneric 802 805 +0.4% 1.00x (?)
ArrayAppendToGeneric 801 803 +0.2% 1.00x (?)
ArrayAppendUTF16 67924 67121 -1.2% 1.01x
ArrayInClass 6222 6219 -0.0% 1.00x (?)
ArrayLiteral 1684 1678 -0.4% 1.00x (?)
ArrayOfGenericPOD 1670 1733 +3.8% 0.96x
ArrayOfGenericRef 9977 9975 -0.0% 1.00x (?)
ArrayOfPOD 859 853 -0.7% 1.01x
ArrayOfRef 9193 9257 +0.7% 0.99x (?)
ArrayPlusEqualArrayOfInt 799 800 +0.1% 1.00x (?)
ArrayPlusEqualFiveElementCollection 253706 255063 +0.5% 0.99x (?)
ArrayPlusEqualSingleElementCollection 246719 250715 +1.6% 0.98x
ArrayPlusEqualThreeElements 9878 9870 -0.1% 1.00x (?)
ArraySetElement 4613 4617 +0.1% 1.00x
ArraySubscript 83041 83980 +1.1% 0.99x
ArrayValueProp 3457 3434 -0.7% 1.01x (?)
ArrayValueProp2 18147 18063 -0.5% 1.00x
ArrayValueProp3 3888 3900 +0.3% 1.00x (?)
ArrayValueProp4 3844 3834 -0.3% 1.00x (?)
BitCount 2099 2100 +0.0% 1.00x (?)
ByteSwap 3936 3949 +0.3% 1.00x
CStringLongNonAscii 2562 2449 -4.4% 1.05x
Calculator 1235 1222 -1.1% 1.01x
CaptureProp 388228 394958 +1.7% 0.98x
CharIndexing_ascii_unicodeScalars 495618 488552 -1.4% 1.01x (?)
CharIndexing_ascii_unicodeScalars_Backwards 486489 507490 +4.3% 0.96x (?)
CharIndexing_chinese_unicodeScalars 360823 352541 -2.3% 1.02x (?)
CharIndexing_korean_unicodeScalars 463447 452583 -2.3% 1.02x (?)
CharIndexing_utf16_unicodeScalars 484494 476541 -1.6% 1.02x (?)
CharIndexing_utf16_unicodeScalars_Backwards 487251 493016 +1.2% 0.99x (?)
CharIteration_russian_unicodeScalars_Backwards 324934 340114 +4.7% 0.96x (?)
CharIteration_utf16_unicodeScalars_Backwards 382030 378606 -0.9% 1.01x (?)
CharacterLiteralsLarge 5924 5910 -0.2% 1.00x (?)
CharacterLiteralsSmall 836 831 -0.6% 1.01x
Chars 53192 53195 +0.0% 1.00x (?)
ClassArrayGetter 981 982 +0.1% 1.00x (?)
DeadArray 115520 115424 -0.1% 1.00x (?)
Dictionary 2767 2718 -1.8% 1.02x (?)
Dictionary2 2882 2865 -0.6% 1.01x (?)
Dictionary2OfObjects 5541 5575 +0.6% 0.99x (?)
Dictionary3 1334 1343 +0.7% 0.99x
Dictionary3OfObjects 2262 2229 -1.5% 1.01x (?)
DictionaryBridge 3840 3879 +1.0% 0.99x (?)
DictionaryGroup 4741 4671 -1.5% 1.01x
DictionaryGroupOfObjects 8135 7996 -1.7% 1.02x (?)
DictionaryLiteral 8023 8058 +0.4% 1.00x
DictionaryOfObjects 6133 6255 +2.0% 0.98x
DictionaryRemove 18173 18156 -0.1% 1.00x (?)
DictionaryRemoveOfObjects 48416 48355 -0.1% 1.00x (?)
DictionarySwap 5274 5327 +1.0% 0.99x
DictionarySwapOfObjects 22487 22025 -2.1% 1.02x
DropFirstAnyCollection 15430 15475 +0.3% 1.00x
DropFirstAnySeqCRangeIter 22453 22348 -0.5% 1.00x (?)
DropFirstAnySeqCRangeIterLazy 22482 22574 +0.4% 1.00x
DropFirstAnySeqCntRange 15429 15433 +0.0% 1.00x (?)
DropFirstAnySeqCntRangeLazy 15458 15406 -0.3% 1.00x
DropFirstAnySequence 12227 12025 -1.7% 1.02x
DropFirstAnySequenceLazy 12794 12362 -3.4% 1.03x
DropFirstArray 5904 5702 -3.4% 1.04x
DropFirstArrayLazy 32978 33050 +0.2% 1.00x
DropFirstCountableRange 329 329 +0.0% 1.00x
DropFirstCountableRangeLazy 29991 29802 -0.6% 1.01x
DropFirstSequence 11744 11628 -1.0% 1.01x
DropFirstSequenceLazy 12340 11947 -3.2% 1.03x
DropLastAnyCollection 5169 5202 +0.6% 0.99x (?)
DropLastAnyCollectionLazy 39628 41349 +4.3% 0.96x (?)
DropLastAnySeqCRangeIter 41407 41294 -0.3% 1.00x (?)
DropLastAnySeqCRangeIterLazy 41385 41311 -0.2% 1.00x
DropLastAnySeqCntRange 5159 5157 -0.0% 1.00x (?)
DropLastAnySeqCntRangeLazy 5175 5151 -0.5% 1.00x
DropLastAnySequence 31113 31188 +0.2% 1.00x (?)
DropLastAnySequenceLazy 31262 31237 -0.1% 1.00x (?)
DropLastArray 1971 1907 -3.2% 1.03x
DropLastArrayLazy 10973 11033 +0.5% 0.99x
DropLastCountableRange 114 114 +0.0% 1.00x
DropLastCountableRangeLazy 9994 9942 -0.5% 1.01x
DropLastSequence 31628 31493 -0.4% 1.00x (?)
DropLastSequenceLazy 31295 31227 -0.2% 1.00x (?)
DropWhileAnyCollection 19897 19890 -0.0% 1.00x (?)
DropWhileAnyCollectionLazy 21634 21504 -0.6% 1.01x
DropWhileAnySeqCRangeIter 24277 24310 +0.1% 1.00x (?)
DropWhileAnySeqCRangeIterLazy 21420 21494 +0.3% 1.00x
DropWhileAnySeqCntRange 19958 20017 +0.3% 1.00x
DropWhileAnySeqCntRangeLazy 21466 21492 +0.1% 1.00x (?)
DropWhileAnySequence 14527 14200 -2.3% 1.02x
DropWhileAnySequenceLazy 11326 10924 -3.5% 1.04x
DropWhileArray 9058 9229 +1.9% 0.98x
DropWhileArrayLazy 16781 16913 +0.8% 0.99x
DropWhileCountableRange 4791 4798 +0.1% 1.00x
DropWhileCountableRangeLazy 20997 20940 -0.3% 1.00x
DropWhileSequence 14418 14058 -2.5% 1.03x
DropWhileSequenceLazy 10923 10722 -1.8% 1.02x
EqualSubstringSubstringGenericEquatable 461 461 +0.0% 1.00x
ErrorHandling 6782 6808 +0.4% 1.00x (?)
ExclusivityGlobal 194 194 +0.0% 1.00x
ExclusivityInMatSet 321 312 -2.8% 1.03x
FilterEvenUsingReduce 4154 4146 -0.2% 1.00x (?)
FilterEvenUsingReduceInto 2384 2383 -0.0% 1.00x (?)
FrequenciesUsingReduce 14357 14129 -1.6% 1.02x (?)
FrequenciesUsingReduceInto 8968 8960 -0.1% 1.00x (?)
Hanoi 21114 21423 +1.5% 0.99x
HashTest 17683 17992 +1.7% 0.98x (?)
Histogram 7139 7165 +0.4% 1.00x (?)
Integrate 818 812 -0.7% 1.01x
IterateData 7656 7572 -1.1% 1.01x
Join 1477 1478 +0.1% 1.00x (?)
LazilyFilteredArrayContains 929415 933809 +0.5% 1.00x
LazilyFilteredArrays 1586907 1593177 +0.4% 1.00x (?)
LazilyFilteredRange 538811 529604 -1.7% 1.02x
LessSubstringSubstring 763 774 +1.4% 0.99x (?)
LessSubstringSubstringGenericComparable 461 461 +0.0% 1.00x
LinkedList 39694 39607 -0.2% 1.00x
MapReduce 33666 33736 +0.2% 1.00x (?)
MapReduceAnyCollection 33366 33261 -0.3% 1.00x (?)
MapReduceAnyCollectionShort 46244 45937 -0.7% 1.01x (?)
MapReduceClass 38214 38301 +0.2% 1.00x (?)
MapReduceClassShort 50833 50817 -0.0% 1.00x (?)
MapReduceLazyCollection 28464 28294 -0.6% 1.01x
MapReduceLazyCollectionShort 39557 39041 -1.3% 1.01x (?)
MapReduceLazySequence 21272 20564 -3.3% 1.03x
MapReduceSequence 36827 36753 -0.2% 1.00x (?)
MapReduceShort 45695 45592 -0.2% 1.00x (?)
MapReduceShortString 273 282 +3.3% 0.97x (?)
MapReduceString 2346 2362 +0.7% 0.99x (?)
Memset 44982 45004 +0.0% 1.00x (?)
MonteCarloE 931746 931538 -0.0% 1.00x (?)
MonteCarloPi 4068767 3990510 -1.9% 1.02x
NSDictionaryCastToSwift 6881 7033 +2.2% 0.98x (?)
NSError 711 704 -1.0% 1.01x (?)
NSStringConversion 452 441 -2.4% 1.02x
NopDeinit 179188 175045 -2.3% 1.02x
ObjectAllocation 1419 1433 +1.0% 0.99x (?)
ObjectiveCBridgeFromNSArrayAnyObjectForced 8437 8638 +2.4% 0.98x (?)
ObjectiveCBridgeFromNSArrayAnyObjectToStringForced 34470 35502 +3.0% 0.97x (?)
ObjectiveCBridgeFromNSDictionaryAnyObject 132628 135609 +2.2% 0.98x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectForced 10600 10778 +1.7% 0.98x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToString 115017 120615 +4.9% 0.95x (?)
ObjectiveCBridgeFromNSDictionaryAnyObjectToStringForced 145550 141388 -2.9% 1.03x (?)
ObjectiveCBridgeFromNSSetAnyObject 68755 68047 -1.0% 1.01x (?)
ObjectiveCBridgeFromNSSetAnyObjectForced 7492 7689 +2.6% 0.97x (?)
ObjectiveCBridgeFromNSSetAnyObjectToString 69754 73267 +5.0% 0.95x (?)
ObjectiveCBridgeFromNSSetAnyObjectToStringForced 81092 78885 -2.7% 1.03x (?)
ObjectiveCBridgeFromNSString 3174 3041 -4.2% 1.04x (?)
ObjectiveCBridgeFromNSStringForced 2474 2479 +0.2% 1.00x (?)
ObjectiveCBridgeStubDateAccess 1062 1061 -0.1% 1.00x (?)
ObjectiveCBridgeStubFromNSDate 4338 4386 +1.1% 0.99x
ObjectiveCBridgeStubFromNSDateRef 4645 4705 +1.3% 0.99x
ObjectiveCBridgeStubFromNSString 674 642 -4.7% 1.05x
ObjectiveCBridgeStubFromNSStringRef 207 204 -1.4% 1.01x (?)
ObjectiveCBridgeStubNSDataAppend 3067 3092 +0.8% 0.99x (?)
ObjectiveCBridgeStubNSDateMutationRef 15276 14700 -3.8% 1.04x (?)
ObjectiveCBridgeStubNSDateRefAccess 1269 1271 +0.2% 1.00x (?)
ObjectiveCBridgeStubToArrayOfNSString 28842 28019 -2.9% 1.03x (?)
ObjectiveCBridgeStubToNSDateRef 3395 3366 -0.9% 1.01x (?)
ObjectiveCBridgeStubToNSString 1487 1488 +0.1% 1.00x (?)
ObjectiveCBridgeStubToNSStringRef 159 161 +1.3% 0.99x
ObjectiveCBridgeStubURLAppendPath 348116 337883 -2.9% 1.03x (?)
ObjectiveCBridgeStubURLAppendPathRef 347699 347501 -0.1% 1.00x (?)
ObjectiveCBridgeToNSArray 29749 30037 +1.0% 0.99x (?)
ObjectiveCBridgeToNSDictionary 56207 59061 +5.1% 0.95x (?)
ObjectiveCBridgeToNSSet 47720 50008 +4.8% 0.95x
ObjectiveCBridgeToNSString 1247 1247 +0.0% 1.00x
ObserverClosure 6384 6450 +1.0% 0.99x (?)
ObserverForwarderStruct 4705 4752 +1.0% 0.99x
ObserverPartiallyAppliedMethod 7803 7856 +0.7% 0.99x (?)
ObserverUnappliedMethod 7937 7900 -0.5% 1.00x (?)
OpenClose 439 427 -2.7% 1.03x
Phonebook 23234 22935 -1.3% 1.01x
PolymorphicCalls 6629 6467 -2.4% 1.03x (?)
PopFrontArrayGeneric 8556 8669 +1.3% 0.99x
PopFrontUnsafePointer 11106 11110 +0.0% 1.00x (?)
PrefixAnyCollection 15464 15491 +0.2% 1.00x
PrefixAnySeqCRangeIter 17813 17740 -0.4% 1.00x (?)
PrefixAnySeqCRangeIterLazy 17802 17852 +0.3% 1.00x (?)
PrefixAnySeqCntRange 15433 15415 -0.1% 1.00x
PrefixAnySeqCntRangeLazy 15457 15437 -0.1% 1.00x (?)
PrefixAnySequence 9888 9914 +0.3% 1.00x (?)
PrefixAnySequenceLazy 10848 10591 -2.4% 1.02x
PrefixArray 5798 5735 -1.1% 1.01x (?)
PrefixArrayLazy 32959 33113 +0.5% 1.00x
PrefixCountableRange 329 329 +0.0% 1.00x
PrefixCountableRangeLazy 30051 29790 -0.9% 1.01x
PrefixSequence 9686 9648 -0.4% 1.00x
PrefixSequenceLazy 10423 10159 -2.5% 1.03x
PrefixWhileAnyCollection 28951 28735 -0.7% 1.01x
PrefixWhileAnyCollectionLazy 17519 17496 -0.1% 1.00x (?)
PrefixWhileAnySeqCRangeIter 37738 38071 +0.9% 0.99x
PrefixWhileAnySeqCRangeIterLazy 17681 17678 -0.0% 1.00x (?)
PrefixWhileAnySeqCntRange 28878 28909 +0.1% 1.00x (?)
PrefixWhileAnySeqCntRangeLazy 17461 17491 +0.2% 1.00x (?)
PrefixWhileAnySequence 30247 30334 +0.3% 1.00x
PrefixWhileAnySequenceLazy 10127 10039 -0.9% 1.01x
PrefixWhileArray 15685 15860 +1.1% 0.99x
PrefixWhileArrayLazy 14390 14648 +1.8% 0.98x
PrefixWhileCountableRange 13646 13681 +0.3% 1.00x
PrefixWhileCountableRangeLazy 17283 17289 +0.0% 1.00x (?)
PrefixWhileSequence 29902 30180 +0.9% 0.99x
PrefixWhileSequenceLazy 9858 9870 +0.1% 1.00x (?)
Prims 10306 10467 +1.6% 0.98x
PrimsSplit 10298 10435 +1.3% 0.99x
ProtocolDispatch 8589 8876 +3.3% 0.97x
ProtocolDispatch2 502 503 +0.2% 1.00x
RC4 18172 18794 +3.4% 0.97x
RGBHistogram 29676 30235 +1.9% 0.98x
RGBHistogramOfObjects 97610 96984 -0.6% 1.01x (?)
RangeAssignment 4493 4468 -0.6% 1.01x (?)
RangeIterationSigned 17295 17198 -0.6% 1.01x (?)
RecursiveOwnedParameter 7751 7713 -0.5% 1.00x (?)
ReversedBidirectional 62068 62377 +0.5% 1.00x (?)
ReversedDictionary 27956 27924 -0.1% 1.00x (?)
SetExclusiveOr 17137 17136 -0.0% 1.00x (?)
SetExclusiveOr_OfObjects 41126 40938 -0.5% 1.00x (?)
SetIntersect 8398 8401 +0.0% 1.00x (?)
SetIntersect_OfObjects 11450 11578 +1.1% 0.99x
SetIsSubsetOf 1381 1389 +0.6% 0.99x
SetIsSubsetOf_OfObjects 1465 1452 -0.9% 1.01x
SetUnion 11839 11951 +0.9% 0.99x
SetUnion_OfObjects 29831 28980 -2.9% 1.03x
SevenBoom 1708 1697 -0.6% 1.01x (?)
Sim2DArray 43780 43788 +0.0% 1.00x (?)
SortLargeExistentials 16585 16670 +0.5% 0.99x
SortLettersInPlace 3170 3031 -4.4% 1.05x (?)
SortSortedStrings 1407 1370 -2.6% 1.03x
SortStrings 2650 2567 -3.1% 1.03x (?)
SortStringsUnicode 9348 9522 +1.9% 0.98x
StackPromo 85497 85568 +0.1% 1.00x (?)
StaticArray 2632 2679 +1.8% 0.98x (?)
StrComplexWalk 7112 7113 +0.0% 1.00x (?)
StrToInt 70069 69765 -0.4% 1.00x (?)
StringAdder 3645 3640 -0.1% 1.00x (?)
StringBuilder 7104 6893 -3.0% 1.03x (?)
StringEdits 417972 418665 +0.2% 1.00x (?)
StringEnumRawValueInitialization 14106 13844 -1.9% 1.02x
StringEqualPointerComparison 3428 3427 -0.0% 1.00x (?)
StringFromLongWholeSubstring 208 206 -1.0% 1.01x (?)
StringFromLongWholeSubstringGeneric 198 199 +0.5% 0.99x (?)
StringHasPrefix 2905 2876 -1.0% 1.01x
StringHasPrefixUnicode 20042 20089 +0.2% 1.00x (?)
StringHasSuffix 3060 2981 -2.6% 1.03x
StringHasSuffixUnicode 79936 79259 -0.8% 1.01x
StringInterpolation 13748 14001 +1.8% 0.98x (?)
StringUTF16Builder 7829 7902 +0.9% 0.99x (?)
StringWalk 13653 13095 -4.1% 1.04x
StringWithCString 70565 69554 -1.4% 1.01x
SubstringComparable 4316 4313 -0.1% 1.00x (?)
SubstringEquatable 9293 8983 -3.3% 1.03x (?)
SubstringFromLongString 15 15 +0.0% 1.00x
SubstringFromLongStringGeneric 101 101 +0.0% 1.00x
SuffixAnyCollection 5163 5157 -0.1% 1.00x (?)
SuffixAnySeqCRangeIter 37637 37430 -0.5% 1.01x (?)
SuffixAnySeqCRangeIterLazy 37994 37497 -1.3% 1.01x
SuffixAnySeqCntRange 5161 5164 +0.1% 1.00x (?)
SuffixAnySeqCntRangeLazy 5176 5144 -0.6% 1.01x
SuffixAnySequence 27713 27582 -0.5% 1.00x
SuffixAnySequenceLazy 27811 27584 -0.8% 1.01x
SuffixArray 1938 1920 -0.9% 1.01x (?)
SuffixArrayLazy 10985 11072 +0.8% 0.99x
SuffixCountableRange 114 114 +0.0% 1.00x
SuffixCountableRangeLazy 10029 9942 -0.9% 1.01x
SuffixSequence 27613 27806 +0.7% 0.99x
SuffixSequenceLazy 27671 27525 -0.5% 1.01x
SumUsingReduce 212517 212219 -0.1% 1.00x
SumUsingReduceInto 209434 205978 -1.7% 1.02x
SuperChars 199089 198564 -0.3% 1.00x
TwoSum 3696 3788 +2.5% 0.98x
TypeFlood 163 157 -3.7% 1.04x (?)
UTF8Decode 36644 37019 +1.0% 0.99x
Walsh 12196 12126 -0.6% 1.01x
XorLoop 23653 23658 +0.0% 1.00x (?)
Hardware Overview
  Model Name: Mac Pro
  Model Identifier: MacPro6,1
  Processor Name: 12-Core Intel Xeon E5
  Processor Speed: 2.7 GHz
  Number of Processors: 1
  Total Number of Cores: 12
  L2 Cache (per Core): 256 KB
  L3 Cache: 30 MB
  Memory: 64 GB

@airspeedswift
Copy link
Member Author

@swift-ci please test

@swift-ci
Copy link
Contributor

Build failed
Swift Test Linux Platform
Git Sha - 35e6e9d864e10573efce0f2add4c8db386050c94

@swift-ci
Copy link
Contributor

Build failed
Swift Test OS X Platform
Git Sha - a608f78da0cbeb91c3b4bea4ce32a00f4fe388cc

@airspeedswift airspeedswift changed the title [WIP not quite so thoroughly unmergeable] Adopt conditional conformance for Indices, Slice, ReversedCollection [stdlib] Adopt conditional conformance for Indices, Slice, ReversedCollection Nov 30, 2017
airspeedswift and others added 6 commits November 29, 2017 17:07
Refactor into base definitions + extensions.

Redundant associated types are still required to word around bugs in associated type inference.
These fixes are for diagnostics that changed in benign ways or for
places in the testsuite that were taking advantage of standard library
internals.
@airspeedswift
Copy link
Member Author

The only significant casualty on the benchmarks seems to be CharIteration in Debug. @milseman possibly something to be aware of...

@airspeedswift airspeedswift force-pushed the reversed-cond-conformance branch from 9ea472e to 887fece Compare November 30, 2017 02:15
@airspeedswift
Copy link
Member Author

@swift-ci please test source compatibility

@airspeedswift
Copy link
Member Author

@swift-ci please test compiler performance

@airspeedswift
Copy link
Member Author

@swift-ci please test

@swift-ci
Copy link
Contributor

Build failed
Swift Test OS X Platform
Git Sha - 9ea472ec3f09730ad345d52bf43e0cd6563c16cd

@swift-ci
Copy link
Contributor

Build failed
Swift Test Linux Platform
Git Sha - 9ea472ec3f09730ad345d52bf43e0cd6563c16cd

@DougGregor
Copy link
Member

@airspeedswift merge it! merge it! :)

@swift-ci
Copy link
Contributor

Build comment file:

Summary for master full

Unexpected test results, stats may be off for Kronos, vapor, Dollar, Plank, RxDataSources

Regressions found (see below)

Debug

debug brief

Regressed (1)
name old new delta delta_pct
time.swift-driver.wall 1189.9s 1211.7s 21.8s 1.83% ⛔
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (1)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 716,795,918 716,211,441 -584,477 -0.08%

debug detailed

Regressed (1)
name old new delta delta_pct
Sema.NumConstraintScopes 9,063,509 10,362,010 1,298,501 14.33% ⛔
Improved (7)
name old new delta delta_pct
Sema.NumConformancesDeserialized 5,366,105 4,185,307 -1,180,798 -22.0% ✅
Sema.NumDeclsDeserialized 37,071,700 36,164,132 -907,568 -2.45% ✅
Sema.NumGenericSignatureBuilders 1,108,134 1,085,144 -22,990 -2.07% ✅
Sema.NumLazyGenericEnvironments 8,124,550 7,708,876 -415,674 -5.12% ✅
Sema.NumLazyGenericEnvironmentsLoaded 663,015 646,224 -16,791 -2.53% ✅
Sema.NumLazyIterableDeclContexts 5,487,775 5,385,119 -102,656 -1.87% ✅
Sema.NumTypesDeserialized 38,902,119 37,767,185 -1,134,934 -2.92% ✅
Unchanged (delta < 1.0% or delta < 100.0ms) (15)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 1,200,454 1,198,784 -1,670 -0.14%
AST.NumLoadedModules 247,510 247,141 -369 -0.15%
AST.NumTotalClangImportedEntities 3,692,079 3,686,224 -5,855 -0.16%
AST.NumUsedConformances 106,462 106,247 -215 -0.2%
IRModule.NumIRBasicBlocks 2,166,590 2,165,128 -1,462 -0.07%
IRModule.NumIRFunctions 1,028,215 1,027,005 -1,210 -0.12%
IRModule.NumIRGlobals 998,732 997,879 -853 -0.09%
IRModule.NumIRInsts 22,609,483 22,580,877 -28,606 -0.13%
IRModule.NumIRValueSymbols 1,714,135 1,712,306 -1,829 -0.11%
LLVM.NumLLVMBytesOutput 716,795,918 716,211,441 -584,477 -0.08%
SILModule.NumSILGenFunctions 487,845 487,411 -434 -0.09%
SILModule.NumSILOptFunctions 917,156 915,671 -1,485 -0.16%
Sema.NumDeclsValidated 1,335,117 1,334,259 -858 -0.06%
Sema.NumFunctionsTypechecked 726,654 725,823 -831 -0.11%
Sema.NumTypesValidated 3,048,846 3,063,770 14,924 0.49%

Debug-opt

debug-opt brief

Regressed (0)
name old new delta delta_pct
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (2)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 659,476,242 659,553,352 77,110 0.01%
time.swift-driver.wall 1990.2s 2005.1s 14.9s 0.75%

debug-opt detailed

Regressed (1)
name old new delta delta_pct
Sema.NumConstraintScopes 9,029,739 10,344,443 1,314,704 14.56% ⛔
Improved (7)
name old new delta delta_pct
Sema.NumConformancesDeserialized 10,049,003 8,820,080 -1,228,923 -12.23% ✅
Sema.NumDeclsDeserialized 41,216,573 40,342,175 -874,398 -2.12% ✅
Sema.NumGenericSignatureBuilders 1,134,035 1,112,578 -21,457 -1.89% ✅
Sema.NumLazyGenericEnvironments 8,987,492 8,568,586 -418,906 -4.66% ✅
Sema.NumLazyGenericEnvironmentsLoaded 668,309 652,664 -15,645 -2.34% ✅
Sema.NumLazyIterableDeclContexts 5,650,785 5,556,118 -94,667 -1.68% ✅
Sema.NumTypesDeserialized 44,410,606 43,317,334 -1,093,272 -2.46% ✅
Unchanged (delta < 1.0% or delta < 100.0ms) (15)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 1,193,688 1,193,129 -559 -0.05%
AST.NumLoadedModules 237,165 237,152 -13 -0.01%
AST.NumTotalClangImportedEntities 3,869,314 3,869,349 35 0.0%
AST.NumUsedConformances 105,876 105,825 -51 -0.05%
IRModule.NumIRBasicBlocks 1,835,325 1,836,904 1,579 0.09%
IRModule.NumIRFunctions 788,435 788,689 254 0.03%
IRModule.NumIRGlobals 874,887 874,996 109 0.01%
IRModule.NumIRInsts 15,968,084 15,978,816 10,732 0.07%
IRModule.NumIRValueSymbols 1,426,996 1,427,323 327 0.02%
LLVM.NumLLVMBytesOutput 659,476,242 659,553,352 77,110 0.01%
SILModule.NumSILGenFunctions 486,636 486,708 72 0.01%
SILModule.NumSILOptFunctions 1,316,193 1,315,599 -594 -0.05%
Sema.NumDeclsValidated 1,325,007 1,323,980 -1,027 -0.08%
Sema.NumFunctionsTypechecked 722,389 721,960 -429 -0.06%
Sema.NumTypesValidated 3,029,728 3,046,526 16,798 0.55%

Wmo-onone

wmo-onone brief

None

wmo-onone detailed

None

Release

release brief

Regressed (0)
name old new delta delta_pct
Improved (0)
name old new delta delta_pct
Unchanged (delta < 1.0% or delta < 100.0ms) (2)
name old new delta delta_pct
LLVM.NumLLVMBytesOutput 699,543,684 698,362,441 -1,181,243 -0.17%
time.swift-driver.wall 2261.1s 2272.7s 11.6s 0.51%

release detailed

Regressed (2)
name old new delta delta_pct
Sema.NumConstraintScopes 8,816,572 10,183,290 1,366,718 15.5% ⛔
Sema.NumTypesValidated 1,112,041 1,131,728 19,687 1.77% ⛔
Improved (7)
name old new delta delta_pct
Sema.NumConformancesDeserialized 3,122,887 2,630,620 -492,267 -15.76% ✅
Sema.NumDeclsDeserialized 8,128,187 7,900,164 -228,023 -2.81% ✅
Sema.NumGenericSignatureBuilders 265,847 258,862 -6,985 -2.63% ✅
Sema.NumLazyGenericEnvironments 1,704,126 1,594,645 -109,481 -6.42% ✅
Sema.NumLazyGenericEnvironmentsLoaded 151,092 146,406 -4,686 -3.1% ✅
Sema.NumLazyIterableDeclContexts 1,028,365 1,014,869 -13,496 -1.31% ✅
Sema.NumTypesDeserialized 9,045,819 8,763,323 -282,496 -3.12% ✅
Unchanged (delta < 1.0% or delta < 100.0ms) (14)
name old new delta delta_pct
AST.NumImportedExternalDefinitions 297,792 297,729 -63 -0.02%
AST.NumLoadedModules 38,667 38,661 -6 -0.02%
AST.NumTotalClangImportedEntities 954,315 953,706 -609 -0.06%
AST.NumUsedConformances 111,896 111,833 -63 -0.06%
IRModule.NumIRBasicBlocks 1,832,265 1,820,476 -11,789 -0.64%
IRModule.NumIRFunctions 805,064 802,966 -2,098 -0.26%
IRModule.NumIRGlobals 944,839 942,695 -2,144 -0.23%
IRModule.NumIRInsts 16,627,754 16,513,021 -114,733 -0.69%
IRModule.NumIRValueSymbols 1,502,196 1,498,844 -3,352 -0.22%
LLVM.NumLLVMBytesOutput 699,543,684 698,362,441 -1,181,243 -0.17%
SILModule.NumSILGenFunctions 361,964 361,166 -798 -0.22%
SILModule.NumSILOptFunctions 633,084 629,426 -3,658 -0.58%
Sema.NumDeclsValidated 754,120 754,101 -19 -0.0%
Sema.NumFunctionsTypechecked 294,183 294,141 -42 -0.01%

@natecook1000
Copy link
Member

Did we figure out a plan for #12913 (comment) ? If that's part of our compatibility suite it'll surely be elsewhere in the wild—I could definitely see people giving conformance to a new protocol to multiple Slice types, for instance. Do we need to keep these types around in deprecated form to have compatibility with Swift 4.0?

@airspeedswift airspeedswift merged commit c4f0b5f into swiftlang:master Nov 30, 2017
@DougGregor
Copy link
Member

@natecook1000, that source-compatibility issue was in our own standard library test suite. We haven't seen any such code in the wild yet. The core team discussed that specific source compatibility concern and decided that the benefits of this change vastly outweigh the cost of such breakage; if we see more widespread breakage, we'll consider additional mitigations in the compiler (e.g, ignoring redundant conformances in such cases)

@natecook1000
Copy link
Member

Thanks @DougGregor, glad to know it's been discussed!

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.

6 participants