• How to use ArgumentParser with async/await in Swift

    If you’ve adopted structured concurrency in your applications since it landed in Swift 5.5, you may have found that the ArgumentParser module does not yet work with an async main function out-of-the-box.

    Read more
  • Why does async let turn rethrows into throws in Swift?

    If you’ve used structured concurrency in Swift enough, you may have noticed that the rethrows keyword doesn’t always “work” with async/await, at least according to our intuitions about when try should and shouldn’t be required.

    Read more
  • Low-level Swift optimization tips

    This article documents several techniques I have found effective at improving the run time performance of Swift applications without resorting to “writing C in .swift files”. (That is, without resorting to C-like idioms and design patterns.) It also highlights a few pitfalls that often afflict Swift programmers trying to optimize Swift code.

    Read more