Issue #110 31 May 2018
Written by: Bas Broek
With WWDC around the corner (it starts in four days!), it is not that big of a surprise that these last two weeks have been pretty quiet when it comes to Swift.
Also, come and say hi at WWDC!
Swift Unwrapped
In episode 59, Jesse and JP discuss implicit escaping of closures, explaining in how they (should) work.
In episode 60, Jesse and JP discuss Character Properties, a proposal pitch that aims to increase the usefulness of Character
and approachability of programming in Swift.
News and community
Michael Ilseman has improved string interpolation in Swift 4.2 to be at least twice as fast! ππ¨
Commits and pull requests
Alex Hoppen merged a pull request that adds incremental syntax parsing to the Swift compiler. Cool!
Lily Vulcano merged a pull request to bridge as
, as?
, and as!
to Linux. π
Michael Gottesman opened a pull request to allow for benchmark testing on Linux.
Proposals in review
SE-0214: Renaming the DictionaryLiteral
type to KeyValueList
is under review.
This proposal renames the confusing and misnamed
DictionaryLiteral
type toKeyValueList
. This type is neither a dictionary nor a literal. It is a list of key-value pairs.There is no strong motivation to deprecate. The type does not produce active harm. Instead, it adds measurable (if small) utility and will be part of the ABI. A sensible renaming mitigates the most problematic issue with the type.
Swift Forums
Ben Cohen started a discussion to change part of SE-0202, renaming Random
to DefaultRandomNumberGenerator
.
SE-0202, as accepted, introduces a type,
Random
, as the default source of random numbers on each platform.[..] the name
Random
for this default source is misleading, and would probably be better namedDefaultRandomNumberGenerator
.One open question is the naming of the getter for an instance of the type. Currently it is
Random.default
. However, renamingRandom
leads to the rather clunkyDefaultRandomNumberGenerator.default
. Benjamin suggests.shared
. However, in all current implementations, this is not strictly speaking a shared instance β it is instead a getter/setter for a fresh instance each time. This doesnβt actually have a cost, since the type has no actual size (the type is just a vehicle for calling an OS function), but needs to be done this way becauseusing:
is takeninout
.Any suggestions for better naming gratefully received.