deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (hnrss.org)

Zebkit, Chromium'un motorunu yerli uygulamalar için bağlanabilir bir kütüphane olarak paketliyor

Zebkit, Chromium'un Blink, V8, PDFium ve medya yığınını Rust, Python ve JavaScript bağlayıcılarıyla birlikte tek bir C kütüphanesi olarak uygulamalara bağlıyor; Node olmadan Electron'dan daha hızlı başlangıç ve daha düşük bellek kullanımı iddiasında bulunuyor.

Zebkit, Chromium'un motorunu yerli uygulamalar için bağlanabilir bir kütüphane olarak paketliyor

Bağladığınız bir bileşen olarak Chromium

Hacker News'te dikkat çeken açık kaynak bir proje olan Zebkit, Chromium'un çekirdeğini, uygulamaların içinde barındırdığı değil, bağlandığı tek bir kütüphane olarak paketliyor. Projenin README'sine göre kütüphane Blink'i, JIT katmanları dahil tam V8 JavaScript motorunu, PDFium'u, FFmpeg'i ve tarayıcı motorunun geri kalan parçalarını içeriyor; Chrome'un tarayıcı kabuğu ile Electron'un Node tabanlı runtime katmanı ise dışarıda bırakılıyor.

Bu tasarım Electron'un düzenini tersine çeviriyor. Bir Electron uygulaması Electron'un içinde, onun runtime'ı, pencereleri ve paketleme sistemi üzerinde inşa edilir. Zebkit ise SQLite gibi davranır: ev sahibi program kendi sürecini, main() fonksiyonunu ve araç takımını korur ve web'e ihtiyaç duyduğu yerde kütüphaneyi çağırır. Kütüphane, uygulamanın event loop'u üzerindeki iki C çağrısıyla — zebkit_init() ve zebkit_pump() — yönetilir ve uygulamanın sağladığı pencerelere çizim yapar: Linux, macOS ve Windows'da sırasıyla bir X11 penceresi, bir NSView veya bir HWND. API C'dir; Rust, Python ve JavaScript için bağlayıcılar mevcuttur.

Electron ile karşılaştırma

README, Electron 45.2.1 ile karşılaştırmalar yayımlıyor; hepsi proje tarafından bildirilen rakamlar: yüzde 34 daha küçük, 6,6 saniyeye karşı 2,3 saniyede soğuk başlangıç ve yüzde 29 daha az bellekle yüklenen bir sayfa. Node.js tamamen yok — ikinci bir JavaScript runtime'ı da yok, onun üzerinden yönlendirilen bir IPC de. Uygulama kodu ya yerlidir ya da zebkit-js tarafından motorun kendi V8'i üzerinde yürütülen JavaScript'tir.

Chromium'un iç bileşenleri, dışa aktarılmış

Proje ayrıca motorun kendi yardımcı program katmanını açığa çıkarıyor: platform başına kabaca 7.490 fonksiyon içeren, üçünde de 7.487'si birebir aynı olan 17 C kütüphanesi, zebkit_vendor_ önekiyle yayımlanıyor. Liste; SQLite, LevelDB, BoringSSL, zlib, Zstandard, Brotli, ICU, HarfBuzz, libxml2, libwebp, libjpeg-turbo, FFmpeg, dav1d, Opus, libvpx, FreeType ve PDFium'u kapsıyor — böylece bir uygulama bu bağımlılıkları iki kez paketlemiyor.

Renderer'ın çevresinde birkaç üst düzey hizmet bulunuyor. PDFium üzerine kurulu tam bir PDF araç takımı; render etme, arama, ek açıklamalar, formlar, karartma, sayfa düzenleme ve imza doğrulamayı kapsıyor. Bir 2D çizim başlığı motorun Skia'sını, bir metin başlığı ise HarfBuzz'ını hedefliyor. Bir medya API'si, bir sayfanın oynattığı her şeyi — bir dosya, MSE/DASH veya HLS — MP4 veya WebM olarak, tamamen alındığı gibi, yeniden kodlama ve ikinci indirme olmadan yazıyor. Sayfadan uygulamaya gelen çağrılar, frame'in kendi Mojo kanalı üzerinden ilerliyor; büyük yükler base64 metni yerine paylaşımlı bellekle aktarılıyor.

Otomasyon ve agent desteği

Playwright'ın API'sinin tamamı — locator'lar, otomatik beklemeli eylemler, route'lar, context'ler, trace'ler, HAR ve video — motorun kendi içinde, CDP veya bir Node.js sürücüsü olmadan çalışıyor. Proje bunun CDP üzerinden Playwright'tan üç ila on kat daha hızlı olduğunu, bir tıklamanın 33 milisaniye yerine 3 ila 5 milisaniyede tamamlandığını iddia ediyor. Standart Playwright istemcileri chromium.connect() üzerinden değiştirilmeden bağlanabiliyor. Yanında gelen zebkit-mcp aracı ayrıca sayfaları, PDF'leri, dosyaları, medyayı ve yerel pencereleri, bir operatörün belirlediği sınırlar dahilinde, AI agent'ları için MCP araçları olarak sunuyor.

Arayüz çalışmaları için zebkit.ui, JavaScript'in pencereler, prompt ve dialog'lar çizmesini Chromium'un views araç takımını kullanarak sağlıyor; sayfa içeriğinin yerine geçen değil, onun çevresindeki çerçeve olarak konumlanıyor.

Güvenlik varsayılanları

README'ye göre bir sayfa, uygulama izin vermedikçe zebkit nesnesi almıyor; izinler view, origin ve yetki başına veriliyor ve origin'i sayfanın değil tarayıcının kendisi belirliyor. Renderer sandbox'lu kalıyor ve bir tarayıcının normalde izin isteyeceği yetkiler otomatik olarak tanınmıyor. C, Rust, Python ve JavaScript'teki yerel hook'lar, uygulamaların izinleri, gezinmeyi, popup'ları, indirmeleri, sertifikaları, ağ isteklerini ve yanıtları her aşamada, ayrıca özel URL şemalarını yakalamasına izin veriyor.

Platformlar ve olgunluk

Zebkit, Chromium 157.0.8103.38'i takip ediyor ve sürümü 0.4.0. Linux build'leri glibc 2.17 veya daha yenisiyle x86-64'ü hedefliyor ve hem X11 hem Wayland'ı destekliyor; macOS build'leri Apple silicon'u kapsıyor; Windows build'leri x64 üzerinde Windows 10 veya daha yenisini gerektiriyor. Kaynaktan derlemek Chromium ağacı için yaklaşık 30 GB yer istiyor ve ilk çalıştırmada saatler sürüyor; yine de önceden derlenmiş sürüm arşivleri mevcut. Proje kalan eksikleri belgeliyor; arasında Google sign-in çevresindeki farklılıklar da var.

Neden önemli

Masaüstü yazılımına web içeriği gömmek, büyük ölçüde Electron'un takasını kabul etmek anlamına geliyordu: kodunuzun çevresine sarılmış tam bir tarayıcı artı Node. Zebkit ters düzeni öneriyor — yerli uygulamayı koruyun ve web'i bağlanmış bir bileşen olarak ekleyin; gerçek Chrome render'ı, motorun yardımcı program kütüphaneleri dahil ve test ile AI agent'larına uygun otomasyon API'leriyle birlikte. Bir motor build'ini upstream Chromium'a karşı ayakta tutmak ağır ve sürekli bir yük, performans rakamları da bağımsız olarak doğrulanmış değil, projenin kendisinin bildirdiği değerler. Yine de runtime olmadan Chromium isteyen geliştiriciler için mimari bir seçenek olarak kayda değer bir giriş.

  • #chromium
  • #open-source
  • #browser-engine
  • #desktop-apps
  • #webview

İlgili yazılar