deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

libuvcpp 1.9.0 HTTP/3 ve WebTransport desteğini tamamlandı, QUIC bağlantı istatistikleri eklendi

libuvcpp v1.9.0, HTTP/3 ve WebTransport desteğini tamamlıyor, HTTP semantiğini sıkılaştırıyor, SNI çoklu sertifikalı TLS ve QUIC bağlantı istatistikleri ekliyor ve HTTP/2 ile HTTP/3'te HttpArena'da birincilik sonuçlarını açıklıyor.

libuvcpp 1.9.0 HTTP/3 ve WebTransport desteğini tamamlandı, QUIC bağlantı istatistikleri eklendi

C++ ağ kütüphanesi libuvcpp, 1.9.0 sürümünü yayımladı; bu ağırlıklı olarak bakım odaklı güncelleme, HTTP/3 ve WebTransport desteğini tamamlıyor, protokol sürümleri genelinde HTTP davranışını sıkılaştırıyor, TLS ve WebSocket sunucu seçeneklerini genişletiyor ve QUIC bağlantı ölçümleri ekliyor. dev.to'daki sürüm duyurusuna göre bu sürüm, 1.8.11'den 1.8.15'e uzanan geliştirme hattını birleştiriyor ve mevcut boşlukları kapatma tercih edilerek bilinçli olarak yeni üst düzey modüller eklenmiyor.

HTTP tutarlılık düzeltmeleri

Protokol çalışması çoğunlukla doğrulukla ilgili. HTTP/2 ve HTTP/3'ün yanıt tarafında stack artık content-length başlığını doğruluyor; böylece gövde uzunluğunu yanlış bildiren yanıtlar tamamlanmış sayılmak yerine reddediliyor. HTTP/1.1 trailer'ları artık yeni send_trailers() ve set_trailers() metotlarıyla düzgün bir chunked stream üzerinden iletiliyor ve 1xx, 204 ya da 304 durum kodlu yanıtlar artık gereksiz bir content-length: 0 başlığı eklemiyor. İstemciler ayrıca yönlendirmeleri takip etmek için isteğe bağlı bir mod kazandı; bu mod aynı origin hargeriyle sınırlı ve atlama limitiyle sınırlandırılmış durumda.

HTTP/3 ve WebTransport tamamlandı

libuvcpp'un üst düzey uygulama çerçevesi olan WebApp katmanı artık HTTP/3 trailer'larını ve begin-chunked, write-chunk, end dizisi üzerinden akan yanıtları işliyor. WebTransport tarafında duyuru; kurulum zamanlaması, on_open callback teslimi, Close ve Drain kapsülleri ile SESSION_GONE olaylarının tetiklediği stream reset'lerini kapsayan uyum çalışmasını sıralıyor.

TLS, WebSocket ve QUIC görünürlüğü

İki sunucu tarafı ekleme pratik boşlukları dolduruyor. SNI tabanlı çoklu sertifika seçimi artık joker karakter önceliğiyle birlikte birebir eşleşmeyi ve geri dönüş (fallback) varsayılan sertifikasını destekliyor; sunucular ayrıca WebSocket alt protokolleri (subprotocol) seçebiliyor: HTTP/1.1'de yapılandırılabilir, HTTP/2 ve HTTP/3'te ise istenen ilk alt protokol döndürülüyor.

Hata ayıklama için uvcpp_quic_connection üzerindeki stats() metodu; gidiş-dönüş süresini, tıkanıklık penceresi boyutunu, paket kaybını ve gönderme/alma sayaçlarını ortaya koyarak operatörlere QUIC bağlantılarını opak bırakmak yerine doğrudan bir görünüm sunuyor.

Yıkıcı değişiklikler

Sürüm doğrudan takma (drop-in) yükseltmesi değil. dev.to yazısına göre HTTP/1.1'de send_trailers() için hata kodu semantiği değişti, C API'nin expected_body() davranışındaki bir düzeltme önceki sonuçları değiştiriyor ve public sınıflar yeni üyeler ile metotlar kazandı; dolayısıyla eski header'lara karşı derlenen kodun yeniden derlenmesi gerekiyor. Proje sürümler arası ikili (binary) düzen uyumluluğunu garanti etmiyor.

Kendi tarafından açıklanan benchmark sonuçları

Sürüme eşlik eden biçimde proje; HTTP/1.1, HTTP/2, HTTP/3, gRPC ve WebSocket senaryolarını kapsayan bir benchmark platformu olan HttpArena'nın sonuçlarını yayımladı. 81 çerçevenin katıldığı bir HTTP/1.1 testinde libuvcpp, 7064 bileşik puanla küresel yedinci ve C++ katılımcıları arasında birinci oldu; dusty (Zig), tako (Rust) ve actix (Rust) gibi çerçevelerin gerisinde kaldı. Duyuru, 4334 bileşik puanla HTTP/2'de aaraara (OCaml, 4188) ve flare (Mojo, 3870) önünde, HTTP/3'te ise 2188 puanla bun (TypeScript, 1775) ve flare (Mojo, 1770) önünde küresel birincilik iddia ediyor.

Bu rakamlar projenin kendi duyurusundan geliyor ve duyurunun kendisi de benchmark sonuçlarının donanım, yapılandırma ve metodolojiye göre değiştiği konusunda uyarıyor. Yazıya eşlik eden bağımsız bir doğrulama yok.

Mimari ve kullanılabilirlik

libuvcpp aşağıdan yukarıya core, handle/request, net, ssl, http2, web ve webapp katmanlarından oluşuyor; QUIC ve HTTP/3 paralel transport katmanları olarak entegre edilmiş durumda. Temel, libuv handle ve request'leri etrafında bir RAII sarmalayıcısı ve zlib/brotli, OpenSSL, nghttp2, QUIC, HTTP/3 ve yyjson gibi isteğe bağlı bağımlılıkların her biri derleme sırasında ayrı ayrı açılıp kapatılabiliyor.

WebApp çerçevesi; yönlendirme, erişim günlüğü (access logging) ve CORS dahil middleware'ler, ETag, Range ve SPA fallback desteğiyle statik dosya sunumu, akan multipart yüklemeleri, istek gövdesi akışı ve otomatik yeniden bağlanmalı WebSocket istemcisi sağlıyor. Bir C ABI (uvcpp_c_* fonksiyonları) v1.5.3 itibarıyla 402 fonksiyon açığa çıkarıyordu ve depo bir C# binding içeriyor. Önceden derlenmiş paketler Windows x64/arm64 (MSVC ve MinGW) ile Linux x64/arm64 (GCC) platformlarını kapsıyor; kütüphane Debian/Ubuntu için libuvcpp-dev, Fedora/RHEL için libuvcpp-devel olarak paketlenmiş durumda. Derlemeler C++11 veya üstünü, CMake 3.20 veya daha yenisini ve MSVC 2019+, GCC 7+ ya da Clang 5+ gerektiriyor; libuv ise sistemde bulunamadığında CMake FetchContent üzerinden otomatik olarak indiriliyor.

Neden önemli

QUIC üzerinden HTTP/3, web trafiği için varsayılan transport olmaya istikrarlı bir şekilde ilerliyor ve WebTransport, gerçek zamanlı tarayıcı uygulamalarında ivme kazanıyor; ancak olgun C++ uygulamaları hâlâ nadir. Her ikisini tamamlayan ve ardından bağlantı başına RTT, tıkanıklık penceresi ve kayıp rakamlarını açığa çıkaran bir kütüphane, HTTP/3'ü üretimde çalıştırmanın iki en zor kısmını ele alıyor: onu doğru biçimde uygulamak ve yük altında ne yaptığını anlamak. Tutarlılık düzeltmeleri manşetlik değil ama stack ile zaten trafik sunan herkes için en az kadar önemli. Boost.Asio ya da ham libuv'a alternatif değerlendiren ekipler için v1.9.0 karşılaştırma listesinde bir yer ediyor; ancak yıkıcı değişiklikler bir yükseltmenin yeniden derleme gerektirdiği, benchmark iddialarının ise gerçek iş yükleriyle test edilmeyi hak ettiği anlamına geliyor.

  • #cpp
  • #http3
  • #quic
  • #webtransport
  • #networking