Today is the last and final day of QCon London, and the day in which I am hosting the modern native langauges track. As a result, this post will be necessariliy biased :)
We kicked off the day with Sylvan Clebsch talking about Using Pony for FinTech. Pony is a fascinating language that builds upon LLVM and uses a sound type system to achieve millions of messages and actors in a single process. Each actor has its own queue of messages but also its own heap; so when garbage collection runs, it only works with an individual actor’s heap, allowing the remainder of the actors to keep processing. As a result, there’s no stop-the-world garbage collection pauses that are seen in other garbage collected runtimes (like Go and Java). In addition, the code is written with no blocking; everything is asynchronous. This means there’s no delay when work is required and that the entire system is event driven. (In fact, when there are no more messages, there are no more work, and the system shuts down.) The message queues are unbounded (to avoid blocking) but of course the system may run out of resources if that happens; there is a form of backpressure that’s applied to throttle the rate of the sending actors if that happens. Pony looks like a great language and is relatively unknown, so I’m really pleased this was the first talk of the day. I see great things for Pony in the future. The main language site is http://ponylang.org if you want to find out more.
The second talk was talking about Rust, Systems Programming for Everyone. Given that Rust uses extensively checked static compilation to verify that objects are not shared or mutated other than expected, and that the lifetimes of objects are tied to lifetimes in the code, this was a great overview (for me) to the subtelties in the way that the Rust applications work. I should really look into Rust more. The main language site is https://www.rust-lang.org if you want to know more.
The third talk was Peter Bourgon talking about Go programming, six years on. This was a really useful overview of the kind of design patterns and top tips that are listed in his presentation, which should be available shortly.
The fourth talk was mine, on Open Source Swift under the hood. I’ll make the presentation available in the near future on SpeakerDeck, but my talk looked at how Swift compiles down through SIL into assembly, and what that means for performance - such as the signature changing when moving from a throws to a non-throws method (or vice versa) and the fact that default arguments are their own function calls.
The fifth and final talk was from two IBMers, Patrick Bohrer and the case for bringing Swift to the server. IBM have invested a lot into Swift, on the mobile side for the applications in which they are partnering with Apple, but also on the server side on Linux. Chris does a lot of work with open-source projects, such as Node.JS and Java already, and he and the team are working on porting
libdispatch (also known as Grand Central Dispatch) to Linux, so that there can be portable multithreaded code running on OSX, iOS and Linux platforms. Patrick introduced IBM’s Swift language sandbox on Linux, where each time an application is run the code is packaged up and deployed as a docker container before compiling, running, and showing the results. He also quickly demonstrated Open Whisk which allows Lambda-style computation (writtin in languages including Swift) to quickly deploy and upload snippets to the cloud. There’s a lot more information about IBM’s involvement with Swift at their Swift site.
That wraps it up for another QCon London – if you have access to the videos and slides, they will be available from the schedule page; otherwise, they’ll turn up over the coming months at the QCon London 2016 page on InfoQ.