<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Something to keep in mind… once&nbsp;<a href="https://bugs.swift.org/browse/SR-2905" class="">SR-2905</a>&nbsp;is resolved, it will be feasible to write Linux server applications in a synchronous manner.<div class=""><br class=""></div><div class="">How does this work? Dispatch work items are scheduled onto a pool of kernel threads. If a work item makes a blocking system call, the kernel thread will be blocked. Ideally, the work item scheduler will start a new kernel thread to take the place of the blocked thread. This is only possible if the scheduler can be triggered at the moment the blocking system call is made. A Linux kernel module is required for this to work in Swift.</div><div class=""><br class=""></div><div class="">This ideal threading model is the main selling point of Go. Go developers can write their code in a synchronous manner without any performance tradeoff. (You might be wondering why Go does not need a kernel module. The reason is all the system calls go through the Go runtime before reaching the kernel.)</div><div class=""><br class=""></div><div class="">Personally, I am very excited for the day that this kernel module is released. Swift will truly be the best programming language in nearly every regard.</div><div class=""><br class=""></div><div class="">Darren</div></body></html>