...and that do not describe or even actively contradict the way things are
today.
A few of these aren't quite so problematic, but simply have no owner or no
significant content. I'm happy to resurrect any that may still be useful.
This document describes the current git workflow that is meant to be used when
developing for the swift project.
At some point in the future, we may discuss changing from this rebase based
workflow to a merge based workflow.
We're leaning away from using the current serialization scheme as the
format for persistent interfaces, so just make this a reference for the
Serialization library.
And include some supplementary mangling changes:
- Give the first generic param (depth=0, index=0) a single character mangling. Even after removing the self type from method declaration types, 'Self' still shows up very frequently in protocol requirement signatures.
- Fix the mangling of generic parameter counts to elide the count when there's only one parameter at the starting depth of the mangling.
Together these carve another 154KB out of a debug standard library. There's some awkwardness in demangled strings that I'll clean up in subsequent commits; since decl types now only mangle the number of generic params at their own depth, it's context-dependent what depths those represent, which we get wrong now. Currying markers are also wrong, but since free function currying is going away, we can mangle the partial application thunks in different ways.
Swift SVN r32896
Canonical dependent member types are always based from a generic parameter, so we can use a more optimal mangling that assumes this. We can also introduce substitutions for AssociatedTypeDecls, and when a generic parameter in a signature is constrained by a single protocol, we can leave that protocol qualification out of the unsubstituted associated type mangling. These optimizations together shrink the standard library by 117KB, and bring the length of the longest Swift symbol in the stdlib down from 578 to 334 characters, shorter than the longest C++ symbol in the stdlib.
Swift SVN r32786
A microoptimization; since the module is likely to come up often in the subsequent mangling, we want to make it more likely to get the coveted S_ substitution.
Swift SVN r32784
'Ss' appears in manglings tens of thousands of times in the standard library and is also incredibly frequent in other modules. This alone is enough to shrink the standard library by 59KB.
Swift SVN r32409
Basically, the Objective-C side of the equation was too simplistic
and had to be re-thought. We need to handle -release being sent to
a partially-initialized instance, so unfortunately in the general
case we have to add some state to the instance itself.
Swift SVN r32170