State machines are a powerful tool for representing components in event driven systems, such as GUI applications and high-performance network servers. However, most programmers don't reach for explicit state machine code directly, instead evolving implicit state machines using large combinations of flags and optionals.
As a modern language with a powerful type system, Swift has a number of tools for making it easy to write explicit state machines that perform well. More importantly, it makes it possible to avoid wide ranging classes of bugs by simply making illegal operations impossible to express in your program.
This session will quickly reintroduce what a state machine is, and then give a guided walk through the best practices of building state machine implementations in Swift, with experience drawn from building finite state machines for network protocol implementations in SwiftNIO.
Have you ever wanted to contribute to SwiftNIO, SwiftPM or one of the other foundational libraries that power server-side Swift? Or do you want to create your own library built on top of SwiftNIO? In this workshop you’ll have experts and SwiftNIO team members on hand to help guide you. Whether it’s just getting set up to start contributing, opening your first PR or fixing bugs, help will be available to you! You can even be guided through creating a library for the SSWG incubation process.
Cory is a serial open source contributor and maintainer with almost a decade of experience building, maintaining, and innovating open source networking frameworks and protocol libraries. He's spent time as a core contributor or lead maintainer on a number of Python HTTP libraries and networking frameworks, including Requests, Hyper, and Twisted. Currently Cory is a Senior Software Engineer at Apple, putting his skills to use on high-performance networking frameworks such as SwiftNIO, Netty, and more.