WWDC 2017 and What It Means for Developers
blog.clubhouse.io
blog.clubhouse.io
That's an existential crisis for 3rd party firewalls.
The IPC performance is still abysmal (noticeable latency in several applications) after 16 years of kernel development. The scheduler is meh, the features offered by the kernel are generally meh. The UI and multimedia libraries were quite good, but they neutered them by incrementally removing customization opportunities, and now there's little left. No way to install a codec or container in Core Audio or Core Video, so you can't play or Quick Look Opus or VP9 or a Matroška file in standard applications. Their OpenGL drivers are garbage, absolute putrid garbage, especially on the integrated graphics; they still only support OpenGL 4.2 (read: the year 2011) on any GPU, and on Intel's GPUs performance is often 60% worse than performance on Linux and Windows (which are generally on par). If their Metal implementation shares its shader compiler with their Intel OpenGL implementation, then it's likely that you will never see any performance benefit from Metal on Intel graphics because your application is probably shader bound due to their drivers. And if we're being fully honest, if they were trying to make developer lives easier, they would add Vulkan support, but they refuse.
I expect many users will feel the same, so developers will keep making apps for them.
Besides the LLVM related talks, Metal shaders and real time audio callbacks, there is hardly any C like code to be seen across all sessions.
[1] On Android, NDK is seen as only to bring in code or implement native methods.
I think the way it's set up right now with interoperability works pretty well, and using it for new apps is a great idea, but forcing people to throw away existing apps that have been around for years.
They might introduce modules that are incompatible or awkward to use with Objective-C in the future though.
Microsoft already did it multiple times when VS team had to adopt WPF, the new APIs that are COM only or latest example having the Office team adopt the desktop bridge and make it a UWP only application on Windows 10.
If anything, to give the message to the world that the internal teams also use the technology they are trying to sell.
And they are slowly doing it, given that launchd and the Dock were rewriten in Swift for Sierra and the new XCode 9 build system is now in Swift, as well as some parts of the Store app.
You have to silence those critics.
The Swift 2->3 migration was a huge time sink and is still on people's minds. Xcode 9 is also still slow and crashy when working with Swift. For small apps with a tiny maintenance budget, ObjC makes a lot of sense even now. I expect it'll die even more slowly than Carbon did.
Apple have so much objective-c code in production, probably more than other firm. Their engineers are still going to need IDE and tooling support for their giant objective-c code bases for many years to come.
As with previous transitions in Apple's software ecosystem, it will also probably depend on what the big bears in the third party software market tell Apple they need - as big as Apple now are, third party applications like photoshop, office etc are still arguably hugely important to the overall health of MacOS especially as a platform.
Apparently, macOS 10.13 will also be the last macOS to run 32bit x86 mac apps "without compromise". While unfortunate, that's not too bad since you can always run a VM with an older version of macOS for those kinds of apps, something that is impossible on iOS.
func BNNSFilterCreateConvolutionLayer(UnsafePointer<BNNSImageStackDescriptor>, UnsafePointer<BNNSImageStackDescriptor>, UnsafePointer<BNNSConvolutionLayerParameters>, UnsafePointer<BNNSFilterParameters>?) Returns a convolution filter, initialized with input, output, layer, and filter parameters.
And even that monstrosity doesn't look that bad in actual use:
let filter = BNNSFilterCreateConvolutionLayer(&inDesc, &outDesc, &layerParams, &filterParams)
The worst offenders for readability are these C-ish functions that deal with unsafe pointers. But at least in Swift, I appreciate the safety brought by the type checking. It's quite nice that unsafe code is clearly marked.That is exactly the point, to make it pretty clear that the code needs to be scrutinized very carefully for its safety.