Menü
Developer

Webframework: Cutelyst 2.0 hat HTTP/2 an Bord

Die zweite Hauptversion des auf Qt aufsetzenden Webframeworks kann zwar mit HTTP/2 umgehen, bietet aber noch keinen Server Push. Große Änderungen an der API gibt es nicht.

Von
vorlesen Drucken Kommentare lesen
Webframework: Cutelyst 2.0 hat HTTP/2 an Bord

Die Macher von Cutelyst haben Version 2.0 des Open-Source-Webframeworks veröffentlicht. Die wesentliche Neuerung ist, dass das Framework nun HTTP/2 nativ unterstützt. Außerdem haben die Entwickler das zentrale Modul Cutelyst Core aufgeräumt, das dadurch schlanker geworden ist. Das WSGI-Modul (Web Server Gateway Interface) ist dagegen aufgrund des HTTP/2-Supports etwas gewachsen.

Nach Angaben der Entwickler soll das Portieren von Anwendungen von Version 1.x auf Cutelyst 2 nur wenige Anpassungen erfordern, da die meisten API-Änderungen sich auf die Engine-Klasse beziehen. Ein einfaches Rekompilieren reicht wohl in den meisten Fällen. HTTP/2 bringt eine neue Abhängigkeit zu HPACK zum Komprimieren der Header-Daten mit sich. Dessen Implementierung war laut dem Blogbeitrag eine recht schwierige Aufgabe.

Vorhandene und fehlende Features

Laut den Entwicklern schließt der HTTP/2-Parser von Cutelyst 2 alle Tests des quelloffenen Testwerkzeugs h2spec erfolgreich ab. Es bietet die TLS-Erweiterung ALPN (Application-Layer Protocol Negotiation). HTTP/2 über TCP im Klartext ohne TLS (h2c) ist ebenfalls möglich.

Derzeit bietet Cutelyst 2 jedoch noch keinen Server Push, also das vorauseilende Übermitteln von CSS oder JavaScript, ohne dass beziehungsweise bevor der Client die Dateien anfordert. Grund dafür ist laut dem Blog, dass die Umsetzung recht schwierig ist und jeder Browser eigene Probleme mit SERVER_PUSH habe. Allerdings arbeitet Daniel Nicoletti, der Cutelyst maßgeblich entwickelt, an einer Umsetzung.

Weitere Details lassen sich dem Blogbeitrag entnehmen. Cutelyst ist ein Webframework, das auf Qt aufsetzt und sich, wie das Wortspiel im Namen erkennen lässt, am Perl-Webframework Catalyst orientiert, das wiederum seine Anregungen aus Ruby on Rails hat. Die Bibliothek steht unter der LGPLv2+-Lizenz und ist auf GitHub verfügbar. Außerdem gibt es ein Archiv zum direkten Download. (rme)