As a follower and contributor to the Swift language every once and awhile I like to take stock of the latest proposals on Swift Evolution and see what has been accepted, what is in-review, or what has been rejected for the current release of the language. This allows me to gauge the direction of the language and to also see what Apple's reaction is to different proposal's in case I ever wanted to write my own proposal for Swift.
This year Apple's World Wide Developer Conference was held in San Francisco from June 13th to the June 17th and there was no shortage of big announcements. These announcements were mixed with platform changes, to new developer API's, to complete updates with Swift in Swift 3.0. However, in an technical blog such as this, it would be hard to cover all of the big announcements and every new API so I thought I would at least cover what I consider 5 interesting points that I took away from the announcements and videos this year at WWDC.
At the time of writing this Swift is the number one language project on Github. Apple is very proud that Swift is open source and I would have to agree that this is an excellent step forward for the language and for Apple. Another great step forward from a language and platform perspective is the ability to run Swift on macOS, iOS, watchOS, tvOS, and Ubuntu Linux. This is very interesting because it displays the the commitment on Apple's part to drive the language forward and gain support from the C community on Linux as well.
Profiling memory allocations in a iOS project is probably one of my favorite things to do when building a project besides coding. Profiling gives you a sense of validation about how you have technically designed certain aspects of a project and it also gives you a sense of where you may have gone wrong and inadvertently created retain cycles, memory leaks, or zombies.
In my most recent adventures in iOS I had a string hashing problem that led me down the road of creating a machine learning algorithm in order to find the correct random hash string I was looking for. Looking back at the solution now, I was able to solve my problem successfully, but the solution I came up with to solve this problem is quite unsettling due to the variable results in time complexity derived from my solution.