[swift-server-dev] HTTP Parser

Helge Heß me at helgehess.eu
Sun Nov 20 12:08:08 CST 2016

Hi Dave,

thanks for your post, this detail is indeed quite helpful.

I don’t think anyone seriously suggested using a Swift port of the http_parser but instead just the upstream C one. But it sounds like MIT licensed code can’t be used as part of the effort, maybe that should be added the the front-page of the effort.

I assume it is not a huge issue though as a libhttp_parser can be shipped separately from Swift itself, similar to what you would do for OpenSSL etc (and what is already being done with libcurl on Linux).

In any case: Whatever is decided, it at least establishes a performance characteristic, I think any replacement should accomplish a comparable one - preferably faster of course :-)


> On 20 Nov 2016, at 16:58, David Sperling via swift-server-dev <swift-server-dev at swift.org> wrote:
> I would like to provide some additional detail to the discussion on November 4 (which I missed since I joined recently).
> The team pointed out this thread in Kitura which I initially opened:
> https://github.com/IBM-Swift/Kitura-net/issues/52
> Here is the referenced Swift http_parser project which I initially ported as a thought experiment.  The goals, API and performance are described in the readme.
> https://github.com/smithmicro/HTTPParser
> Michael Gottesman from Apple (@gottesmm) contacted me 2 weeks ago to see if we could add the project into the Swift Benchmark Suite.  See the bottom of this PR for the request:
> https://github.com/IBM-Swift/Kitura-net/pull/55
> Michael and I approached the Node.js Foundation to see if they were willing to dual license http_parser under Apache 2 so it would be compatible with the Swift license.  Here is that discussion, but in summary, a dual license is not realistic.
> https://github.com/nodejs/http-parser/issues/344
> So, a http_parser Swift port:
> - Would not have the proper license to be included in Swift
> - Does not take full advantage of Swift
> - Has the issues previously pointed out (UnsafePointers, asserts, throws simulating gotos)
> - Does, however, demonstrate a Swift HTTP parser performance of 500K requests per second
> Looking forward to meeting everyone on our call tomorrow.  Hopefully this detail was helpful.
> Dave Sperling
> Smith Micro

More information about the swift-server-dev mailing list