Hi all. This is my final report on my project aiming to improve Services Kit,
the networking backend behind most native Haiku application, most notably
WebPositive.
Here’s the summary of some of the outstanding changes:
BMemoryRingIO is introduced for high-speed cross-thread communication. This
is an implemenation of a circular buffer with BDataIO interface. The
intended use case for this is for a HTTP/2 implementation, where one thread
will be the multiplexer and request threads will make use of this to retrieve
from the multiplexer.
BUrlRequest will now output directly into a BDataIO. This simplifies the
API for users as they can now reuse BDataIO implementations within Haiku
like BFile, BMallocIO, etc. without having to implement a
BUrlProtocolListener.
Introducing BUrlSession as a context manager allowing request handlers to
access and store session data. What this will enable is the ability to
reuse previously opened connections, which should reduce latency when
requests are opened against previously connected hosts. This portion is still
a WIP.
A clean up and rearchitecture of HaikuWebKit (WebPositive’s engine) networking
was done which should improve reliablity. The rearchitecture also come with
fixes for HTTP authentication and redirection, which should now function
as well as other browsers.
I’ll be honest, I’m not happy with (relatively) small the amount of work that I
have done during this GSoC, and I’m sorry for have not followed up with my set
goals.
It’s pretty long overdue for the post, but here I am.
Introduction:
I’m Leorize, a past GCI participant and a former active member of HaikuPorts.
If you hang around the #haiku IRC channel, chances are that you might know me
:)
I started contributing to Haiku around 2017, when I joined GCI. Since then,
I’ve authored many bug fixes and ports, including some notable ports like
libuv, mandoc, pkgconf, and pyqt.