Değişiklikler
Bu sayfadaki her sayı projenin kendi makinesinde (Radeon R7 240, Linux, Wayland) ölçüldü; komutu depoda kayıtlı.
0.1.9-beta.3 henüz yayınlanmadı
Bölüm başlığı “0.1.9-beta.3 henüz yayınlanmadı”0.1.9’un son betası: API burada donuyor, sonrasında 0.1.9’un kendisi ve düzeltmeleri geliyor. Bütün paketler birlikte beta.3’e geçiyor. Bir projeyi güncellemek için beta.3 çıkınca npm run lepton update (ya da pnpm lepton update); çekirdeği ve src-lepton/ dosyalarını da getirir.
main.zigve eklentilerde yeni adlar.core.commandsvecore.events,core.webviewRegistryilecore.webviewEvents’in yerini alıyor (eski adlar derlenmeye devam ediyor); olayevents.emit(view.bridge.eventTarget(), …)ile yayılıyor; yenimain.zig’ilepton updateyazıyor. Linux’taki 0.1.9-beta.2 CLI’ıyla oluşturulan projedelepton updateartık sizin yapmadığınız birmain.zigçakışması bildirmiyor.- WebAssembly thread’leri.
"wasm": { "threads": true }sayfayı derlenmiş uygulamada dalepton dev’de de kökenler arası yalıtılmış yapar; sayfadaSharedArrayBufferve WebAssembly thread’leri olur, başka kökenden kaynaklar o zaman CORS ya daCross-Origin-Resource-Policyister. WPE WebKit ve WebView2’de ölçüldü; Servo’da yok. Her şablonun dev ayarı bu ayarı okur; eski bir projeninkinilepton updategetirir. Yapılandırma - Proje başına motor.
"engine": "servo"Linux’ta projenin motorunu Servo yapar;build,run,devvepackage--servoverilmiş gibi davranır. Varsayılan WPE WebKit kalır. Yapılandırma - Servo’da WebGL 2, isteğe bağlı.
"servo": { "webgl2": true }Servo derlemesinde WebGL 2’yi açar; varsayılan kapalı. Deneysel: bir Babylon.js oyunu çimi siyah çizdi, nedeni bilinmiyor. WebGL 2 şartsa WPE WebKit ve WebView2’de hep var. Yapılandırma - Servo uygulamaları paketlenebiliyor.
lepton package --linux --servoServo’nun kitaplığını paketin içine, uygulamanın yanına koyar (lib/<ad>/; Arch ve Debian paketlerinde/usr/lib/<ad>/), böylece uygulamanode_modules’unuz olmayan bir makinede de açılır;.tar.gz’ye yaklaşık 45 MB ekler..tar.gzve Arch paketinde--verifyile ölçüldü. Öncelepton updateçalıştırın. CLI - Varsayılan sağ tık menüsü. Sayfanın
preventDefault()ile almadığı her sağ tıkta Kes, Kopyala, Yapıştır ve Tümünü seç (geliştirici derlemesinde İncele de); iş görmeyecek öğeler pasif. WebView2’de bu, WebView2’nin kendi menüsünün bu öğelere süzülmüş hali. Linux’ta WPE WebKit’te ölçüldü; Servo ve WebView2 henüz ölçülmedi."window": { "contextMenu": false }kapatır. Yapılandırma - Taşınabilir Windows zip’i. Program zip’in en üstünde, yanında
share\ve birREADME.txt; program sayfalarını ve bildirim simgesini hem orada hem MSI’ın kurulumunda bulur. Paketleme - AppImage.
"bundle": { "targets": ["appimage"] }AppDir’i tek çalışır dosya olarak yazar: AppImage’ın resmî runtime’ı@lepton-desk/appimage-runtime-linux-x64’ten (SHA-256’sı denetlenir), dosya sistemi Lepton’ın saf Rust’la yazdığı. Tekrarlanabilir;--verifyile ölçüldü. Paketleme .tar.gzkendini kuran bir AppDir../AppRunuygulamayı açıldığı yerde çalıştırır;./install.shonu~/.local’a (--systemile/usr/local’a) koyar,./uninstall.shtam olarak koyduğunu geri alır. Paketleme- Linux paketlerinde AppStream metainfo. Yapılandırmadan
share/metainfo/<identifier>.metainfo.xml; yazılım merkezleri uygulamayı kurulmadan önce gösterir.bundle.metadataLicensedosyanın lisansını (yoksaCC0-1.0),bundle.contentRatingOARS 1.1 yaş derecelendirmesini,bundle.releaseDateSOURCE_DATE_EPOCHyokken sürümün gününü verir.appstreamcliile doğrulandı. Paketleme - Paketlerin uygulama hakkında söyledikleri.
bundle.description,longDescription,license,homepage,copyrightvecategorymasaüstü girdisine, Arch paketine ve.deb’e gider; Linux paketleri Debian copyright dosyası taşır,.debartık onu şart koşar. Paketleme lepton iconve Linux paketlerinde PNG simgeler. Kare bir SVG ya da 512 px PNG,src-lepton/icons/’ta 16’dan 512 px’e PNG’ler, bir.icove SVG olur; Linux paketleri PNG’lerihicoloraltına kurar, projede yoksa SVG’den çizer;.icoWindows programının ve MSI’ın simgesidir. CLI- Bir uygulamanın bellek maliyeti, Windows’ta ölçüldü. Aynı şablon web görünümü olarak 7 süreçte 69,4 MB; native olarak GPU’da 6,9 MB, CPU’da 5,9 MB, tek süreç (Görev Yöneticisi’nin Bellek sütunu, Lepton’ın CI’ı, orada GPU yok). Paketleme
- Windows’ta
--verifyuygulamanın pencerelerini kendisi kapatıyor.taskkillile istiyordu; o başarılı derken native bir uygulama çalışmaya devam ediyordu. Artık kapat düğmesi gibi uygulamanın görünür pencerelerineWM_CLOSEgönderiyor. Süreçte açılıştan sonra birkaç saniye Windows’un kendiUSER32.dll’inden görünür, başlıksız bir ipucu penceresi de oluyor (ölçüldü: ad yüklü başka hiçbir modülde ve Lepton’ın programında yok). - Sayfanızın içindeki çerçeve ölçüldü ve yazıldı. Aynı kökenli bir çerçeve (
srcdoc,about:blank), çalıştırmanın anahtarınıparent.__lepton’dan okur ve çekirdeği sayfanızın yetkileriyle çağırır: WPE WebKit’teapp.args’ı çalıştırdı,permissions’ta olmayan bir komut içindeniedaldı.allow-same-originolmadan sandbox’lanan çerçeveSecurityErroraldı, anahtarı alamadı. Güvenilmeyen içerik<iframe sandbox="allow-scripts">içine. Çekirdekte bir şey değişmedi. Web özellikleri - Sayfanın çizdiği başlık çubuğunda uygulamanın adı.
@lepton-desk/api/app’teninfo(),productName,versionveidentifier’ı;@lepton-desk/api/window’dantitle()veonTitleChanged()pencerenin adını verir; adı motor ne olursa olsun çekirdek tutar (title()permissions’tawindow.titleister). Linux’ta WPE WebKit ve Servo’da ölçüldü. Komutlar
0.1.9-beta.2 2026-10-25, beta
Bölüm başlığı “0.1.9-beta.2 2026-10-25, beta”beta etiketiyle iki parça hâlinde yayımlandı. 24 Ekim’de Windows’tan: @lepton-desk/cli-win32-x64, api, plugin-clipboard ve plugin-dialog. 25 Ekim’de Linux’tan: @lepton-desk/cli, cli-linux-x64, plugin-fs, plugin-os, create-lepton-app ve Servo’nun kitaplığı @lepton-desk/servo-linux-x64. Bir projeyi güncellemek için npm run lepton update (ya da pnpm lepton update).
-
Tek çalışan kopya ve derin bağlantılar. İkinci başlangıç argümanlarını çalışan kopyaya verir; onun sayfası bunu
app.openedolarak duyar.lepton.config.json’dakideepLinksURL şemalarını kaydeder (Linux’ta masaüstü girdisi, MSI’daHKCU\Software\Classes).@lepton-desk/api/applaunchArgs()veonOpened()verir. Linux’ta ölçüldü:xdg-open myapp://open/43çalışan sayfaya ulaştı, ikinci pencere açılmadı; kapalı bir uygulamayı açan bağlantılaunchArgs()’ta geldi. Yapılandırma -
fs.watch. İzlenen klasörün değişiklikleri sayfaya olduğu anda ulaşır, yoklama yok: sayfanın kendi yazdığı ve başka bir programın yazdığı ikisi de bildirildi (created,modified). Linux’ta ve Windows’ta (aşağıda). Eklentiler -
Panoyu okumak kullanıcıyı gerektiriyor.
readTextyalnızca pencerede bir tuşa ya da düğmeye basıldıktan sonraki beş saniyede cevap verir; kararı çekirdek gerçek girdiden verir. Sayfa yüklenirken okuma reddedilir (NotAllowedError), bir tıklamadan sonraki cevaplanır (ölçüldü). Pano yöneticisi için"plugins": { "clipboard": { "read": "always" } }. -
Windows’ta yerel çizim yolu.
--target nativeweb motoru olmadan Win32 penceresi açan bir uygulama yapıyor: GPU’da Direct3D 11 ile çiziliyor (makine aygıt vermezse ya daLEPTON_GPU=cpuile CPU ve GDI), metni DirectWrite yazıyor (Segoe UI, Consolas ve sistemin yedek yazı tipleri), ekranın tazelemesinde, sayfaya uyan koyu başlık çubuğu. Windows 10’dalepton new --target nativevelepton runile ölçüldü: 565 KB’lık sürüm ikilisi, şablonun ekranı, boyut değişince yeniden çizim, kapatınca çıkış 0. GPU’da saniyede 59,8 kare, 5 sn’de 156 ms CPU; CPU’da 59,8 ve 1594 ms. Sistem gereksinimleri -
İsteyene sınırsız kare.
"window": { "frameRate": "unlimited" }(ya da çalışırkenLEPTON_FRAME_RATE=unlimited) native uygulamanın ekranın tazelemesi yerine makinenin yetebildiği kadar hızlı çizmesini sağlar; varsayılan yine ekrandır ("display"). Windows’ta GPU beklemeden basar, sistem izin veriyorsa yırtılmaya (tearing) izin verir; Linux’ta GLES takas aralığı 0, hiçbir kare bileşiciyi beklemez. Radeon R7 240 ve 60 Hz ekranda ölçüldü: şablonun ekranı GPU’da saniyede 2881, CPU’da 271 kare (ekrana bağlıyken 59,8); 2001 şekillik sahne saniyede 1046–1188 kare, kare başına 0,7 ms GPU. Ekranın gösteremediği kareler atılır ya da yırtılır, CPU veya GPU tam yükte çalışır. Linux’ta (Wayland, aynı kart): GLES’te saniyede 3870, CPU’da 169 kare (ekrana bağlıyken 59,8 ve 58,0). -
macOS desteklenmiyor,
--macosbunu söylüyor.lepton build --macosöncedenaarch64-macosiçin çapraz derleyip kimsenin çalıştırmadığı bir ikili veriyordu; artık hiçbir şey derlenmeden gerekçesiyle reddediliyor: macOS için imzalama ve noter onayı ücretli bir Apple hesabı ve Mac donanımı istiyor, Lepton bunu sürdüremez. Sistem gereksinimleri -
Varsayılan simge Lepton’ın işareti. Yeni projeler
src-lepton/icon.svgalır; Linux paketleri onushare/iconsaltına kurar ve girdiyeIcon=yazar;bundle.iconverilmemişse MSI onun.ico’sunu kullanır. -
Yeni kimlik
com.<sahip>.<uygulama>. Sihirbaz uygulamayı kimin yayımladığını sorar (varsayılan: Git’inuser.name’i),--ownerbunu komut satırında söyler. Önceden çıplak uygulama adıydı. -
lepton dev’de Ctrl+C geride bir şey bırakmıyor. Ctrl+C uygulamaya ve CLI’ye ulaşır, CLI de SIGTERM gönderir; çekirdek bu ikinci sinyali “takıldı” sayıp kanalını silmeden çıkıyordu (/dev/shm’de dört dosya, ölçüldü) ve CLI✖ app failedyazıyordu. Bir saniye içindeki ikinci sinyal artık aynı istek: dosya kalmıyor,✔ app. -
Kanal adları kullanıcıya özel (
.u<uid>); başka bir kullanıcı/dev/shm’de adı alıp uygulamanın açılmasını engelleyemiyor. Hemen cevap veren ertelenmiş özel bir komut da diğerleri gibi maskeli kaydediliyor. -
Lepton’ı Zig 0.16 de 0.17 de derliyor. 0.17
@cImport’u ve**’yı kaldırdı, derleme API’sindefindProgramilegetInstallPath’i değiştirdi ve bir türün alanlarını başka biçimde veriyor. C başlıkları artık derleme tarafından çevriliyor (src/c/; 0.16 da böyle yapıyor), kalan farkların her biri tek bir yerde (compat.zig,build_support.zig’dekizig_017). Her iki sürümle ölçüldü: çekirdeğin testleri ile GPU, sahne, Vulkan ve invoke denetimleri; bütün eklentileriyle bir webview uygulaması (derlendi, çalıştırıldı, Windows için çapraz derlendi); bir yerel uygulama. CLIzig,zig-0.17ya dazig-0.16’dan önce bulduğunu alıyor. -
Lepton bir Zig 0.16’yı kendisi seçiyor. Zig 0.17, Lepton’ın kendi
build.zig’inde duruyor (8 hata, ölçüldü) ve Archzig’ini 0.17’ye taşıdı. CLI artıkLEPTON_ZIGverilmişse onu, yoksaPATH’tekizigvezig-0.16’dan 0.16 diyen ilkini kullanıyor; uygun yoksa bulduğu sürümü söylüyor. Arch paketleri AUR’dakizig0.16-bin’e bağlı ve onu CLI’ye veriyor; sisteminzig’i güncellenebilir. Sistem gereksinimleri -
Güncel Arch’ta hata ayıklama derlemeleri yeniden bağlanıyor. glibc 2.44’ün
crt1.o’su, Zig 0.16’nın hata ayıklama derlemelerinde kullandığı kendi bağlayıcısının okuyamadığı bir.sframebölümü taşıyor; yeni bir webview projesindezig buildkomut tiplerini üreten yardımcıda düştü, çekirdeğin testleri de aynı yerde. Artık her Linux ikilisi bu bölümü okuyabilen LLVM ve LLD ile bağlanıyor (Zig 0.17’nin bağlayıcısı da okuyor). -
beta.1 ile oluşturulan bir proje
lepton update’ten sonra yenidendevçalıştırıyor. beta.1’in CLI’siPATH’tekizigneyse onu çalıştırıyordu; Arch’ın Zig 0.17’siyle yeni bir projebuild.zig’inde duruyordu (no field named 'ReleaseSmall'), Zig 0.16 ile de hata ayıklama derlemesi yukarıdaki bağlayıcı sorununda. Böyle bir projenin kopyasında trunk’ın CLI’siyle ölçüldü:lepton updatemain.zig’i,build.zig’i ve çekirdeğin 27 dosyasını değiştirdi; ardındanlepton buildgeçti,lepton devçekirdeği derleyip pencereyi açtı. beta.2 ile projedenpm run lepton update(ya dapnpm lepton update) yeterli. -
Çekirdek yalnızca uygulamanın kendi sayfasına cevap veriyor. Her çalıştırma rastgele bir anahtar üretiyor; çekirdeğin yolları (
invoke, olaylar, halka,close)/__lepton/<anahtar>/altında. Anahtar yalnızca transport’a yazılıyor; çekirdek transport’u artık yalnızca uygulamanın kendi sayfasına ekliyor. WPE WebKit’te ölçüldü: uygulamanın gittiği başka bir sayfa önceden çekirdeğe ulaşıyordu (5 istek), artık hiç istek yapmıyor; sandbox’lı bir iframe’in anahtarsız isteği reddediliyor. -
Başka siteler pencereye girmiyor. Pencereyi başka bir siteye götüren bağlantı ya da betik, siteyi sistem tarayıcısında açıyor (yalnızca http, https ve mailto;
tel:ve diğer şemalar artık iletilmiyor); bu üç motorda da böyle ve oradaki sayfa transport almıyor. -
Dosya izinleri uygulamanın state klasöründe (
~/.local/state/<identifier>,%LOCALAPPDATA%\<identifier>\State),fseklentisinin kapsamlarının erişemeyeceği yerde. Kaydetme penceresi klasöre değil, kaydettiği dosyaya izin veriyor; hiçbir izin ev klasörünü ya da üstünü kapsamıyor. beta.1’de izin verilen klasörler bir kez daha soruluyor. -
lepton.config.json’daki adlar denetleniyor.productName,window.title,identifierveversionkontrol karakterlerini, ad ve identifier yol ayırıcılarını reddediyor; üretilen Zig’e, masaüstü girdilerine ve.debcontrol dosyalarına yazılan değerler kaçışlanıyor. Şema aynı kuralları taşıyor. -
Küçük düzeltmeler:
plugin-fsdosyanın sonundan öteki bir ofsette çekirdeği durdurmak yerine boş dönüyor, parça parça kaydedilen dosya eskisinin izinlerini koruyor;lepton replaygeçici ev klasörünü yeni ve yalnızca sahibine açık oluşturuyor;lepton updatekayıt defterinden yalnızca semver ön sürümü kabul ediyor; komut tipleri hiçbir zaman bir bağlantının üzerinden yazılmıyor. -
--servo, kitaplığı varsa Servo’yu bağlıyor, yoksa gerekçesiyle reddediliyor. Önceden 0 ile çıkıp WPE WebKit’li bir ikili veriyordu. Servo artık çekirdeğin üçüncü motoru; yalnızca CI’da derlenip ölçülüyor (servo-bridge):--servoile derlenen bir şablon uygulaması 1200×800 açıldı ve sayfası çekirdeğin halkasını anahtarlı yoldan okudu. Kitaplığı@lepton-desk/servo-linux-x64olarak geliyor (Linux x86-64, deneysel; CI derliyor);--servoonu projede bulur;lepton build,runvedev’in üçü de--servoalıyor.dev’de uygulama kapanırken asılı kalıyordu: Servo’nun kapanışı her worker’ı süresiz bekliyor, Vite istemcisininki hiç durmadı. Çekirdek artık Servo’yu sürecin sonuna bırakıp kendi temizliğinden sonra_exitile çıkıyor (ölçüldü: Ctrl+C hemen bitiriyor, dosya kalmıyor, SIGTERM’de çıkış kodu 0). -
Servo: depolama, pencere olayları ve kapat düğmesi. Servo
lepton://sayfalarına opak köken veriyordu,localStorageSecurityErroratıyordu; Lepton artık Servo’yuservo-url’ye küçük bir yamayla derliyor, uygulamanın şeması WPE WebKit’teki gibi (şema, host) kökeni alıyor (ölçüldü:localStorageyeniden açılışlarda kaldı,runs1, 2, 3).window.resizedServo sayfasına hiç ulaşmıyordu ve pencereWM_DELETE_WINDOW’u bildirmediği için pencere yöneticisinin kapatması uygulamaya varmıyordu; ikisi düzeltildi (ölçüldü: büyütme ve geri almada WPE ile aynı boyutlar,WM_DELETE_WINDOW’da temiz çıkış). -
Paketlenmiş sayfada
document.cookie. Linux’taki iki motor HTML standardı gereğilepton://sayfasına çerez vermez; Lepton artık oradadocument.cookie’yi tanımlıyor,localStorage’da tutuyor (WPE WebKit ve Servo’da ölçüldü: bir çalıştırmada yazılan çerez sonrakinde okundu). Gerçek çerezler, dev sunucusunun sayfasında, iki motorda da çalıştırmadan sonra kalmıyordu: WPE onları bir dosya verilene kadar bellekte tutuyordu (artık uygulamanın veri klasöründecookies.sqlite), Servo da kavanozunu yalnız çekirdeğin atladığı kapanışın sonunda yazıyor (servo’ya küçük bir yama onu önceden yazdırıyor). Ölçüldü: iki motorda da sonraki açılışta okundu. Web özellikleri -
lepton run’da Ctrl+C uygulamayı her zaman bildiriyor. Sinyal işleyicisinin çıkışı uygulamanın satırıyla yarışıyordu; dört Ctrl+C’den birilepton run’ı✔ appolmadan bitirdi (ölçüldü). İşleyici artık o satırı bekliyor; altıda altı bildirdi, çıkış kodu 130. -
Kendi başlık çubuğunuz, yerel menüler ve sayfayı izleyen başlık çubuğu.
"window": { "decorations": false },@lepton-desk/api/window’dadragRegionvepopupMenu. Windows 10’da gerçek girdiyle ölçüldü: sayfanın çubuğu pencereyi taşıdı, çift tıklama büyüttü, sol kenar boyutlandırdı; sistem menüsü klavyeyle seçti, ayırıcıyı atladı, Escnullverdi. Windows’ta başlık çubuğu sayfanıncolor-schemevetheme-color’ını alır (koyu ve açık ölçüldü; Windows 10’un hemen yeniden çizmesi içinWM_NCACTIVATEgerekti). Linux’ta Servo altında pencere çerçevesini bırakır (_MOTIF_WM_HINTS), çubuk onu taşır (_NET_WM_MOVERESIZE), menü Lepton’ın kendisidir ve uygulama odağı kaybedince kapanır (COSMIC’te elle ölçüldü); WPE WebKit altında bu üçü Lepton’ın kendi WPE platformunu bekliyor. Komutlar -
Sağ tuş Servo sayfasına ulaşıyor. Çekirdeğin X11 penceresi sağ basışı native yolun çerçeve menüsüne veriyordu, Servo sayfası
mousedown2’yi vecontextmenu’yü hiç görmüyordu; artık görüyor. -
Windows’ta: başlık çubuğunda uygulamanın simgesi, küçük ekrana sığan pencere,
fs.watchve odaksız pano yazma. Çalıştırılabilir dosya simgeyi taşır (bundle.iconya da Lepton’ınki); 1024×768 ekranda 1200×800’lük pencere çalışma alanına sığdırılmış açılır;fs.watchReadDirectoryChangesWkullanır (oluşturma, değişiklik, ad değişikliği, silme, özyinelemeli; ağaçtaki junction reddedilir);writeTextorada artık odak beklemiyor. Hepsi Windows 10’da ölçüldü. -
app.argsyeni projenin izinlerinde, kayıtlar döndürdüğünü maskeler (başlatma argümanı OAuth kodu gibi bir sır taşıyabilir). -
Windows 11’de başlık çubuğu sayfanın rengini alır (ölçüldü). Lepton’ın
windowsiş akışı Windows Server 2025’te (Windows 11’in tabanı, derleme 26100) şablon uygulamayı derleyip açıyor: sayfatheme-color: #ffd700verince çubukrgb(255, 215, 0), yazı siyah;rgb(27 29 28)verince çubuk o renk, yazı beyaz. Aynı iş MSI’yı kuruyor, kurulu uygulamayı aynı denetimlerden geçiriyor ve geride klasör bırakmadan kaldırıyor. -
npm
.cmdolarak kuruluyken Windows’talepton newçalışır. Node’un kurucusu npm’inpm.cmdolarak veriyor (npm ile kurulan pnpm da öyle); CLI yalnız.exearıyordu ve npm kuruluyken “npmis not found on PATH” diyordu (CI’da ölçüldü). Artık ad, kabuğun yaptığı gibiPATHEXTsırasıyla aranıyor.lepton newWindows’ta motoru artık WebView2 diye yazıyor. -
Windows’ta Zig 0.17. Çekirdek testleri, eklentiler, araçlar ve şablon uygulama 0.17 ile de derlenip çalıştı (Windows 10), 0.16 ile aynı sonuçla.
-
Windows’ta yerel yol için üç GPU arka ucu. Vulkan, Direct3D 11 ve OpenGL 3.3 bu sırayla deneniyor; son çare CPU.
LEPTON_GPU=vulkan|d3d11|gl|cpubirini zorluyor. Vulkan yalnız aygıt çizicinin eşiğini karşılarsa seçiliyor (Vulkan 1.3, dynamic rendering, synchronization2). Radeon R7 240’ta 2001 şekilli sahne, sınırsız, ölçüldü:- Direct3D 11: saniyede 1046–1188 kare, kare başına 0,7 ms GPU;
- OpenGL 3.3: 1002–1039, 0,45 ms;
- Vulkan: 689–706, 0,45 ms. Bu sürücüde pencereye sunum kare başına yaklaşık 0,9 ms daha ekliyor.
Kartın Vulkan 1.2’si eşiği karşılamıyor, bu yüzden uygulama Direct3D 11 açıyor. Üçü de 60 Hz ekranda saniyede 59 karede tutuldu. Eski takas zincirleri (Windows 8’in flip-sequential’ı, Windows 7’nin blt modeli) tek tek zorlandı ve doğru çizdi.
-
Sayfanın bildirimleri uygulamanın kendi Windows bildirimleri. “lepton.localhost” yerine uygulamanın adını ve simgesini taşıyorlar.
onshow,onclick,oncloseveclose()çalışıyor (ekrandan ölçüldü).webPermissionssayfaya artık sormadan önce ulaşıyor:notifications: "allow"ileNotification.permissionvepermissions.querygranteddiyor. Öncedendefaultvepromptdiyorlardı;requestPermission’dan önce yapılan bildirim başarısız oluyordu. MSI adı ve simgeyi kaydediyor, kaldırırken siliyor (ICE: 0 hata). -
MSI aynı sürümün başka bir derlemesinin yerine kuruluyor. Windows Installer yalnız
major.minor.build’i karşılaştırıyor; bu yüzden yeniden derlenen paket de1.0.0-beta.1→1.0.0-beta.2geçişi de, eskisi kuruluyken 1638 ile reddediliyordu. Artık her derlemenin kendi ProductCode’u var ve kurulu olanı kendi sürümüne kadar kaldırıyor. Ölçüldü: 0.1.0’ın iki derlemesi sırayla kurulunca tek ürün kaldı ve sayfa ikinci derlemeninkiydi; aynı paket yeniden kurulunca onarım yapıldı (0); 0.2.0 kuruluyken 0.1.0 hâlâ reddediliyor. -
identifier,productName,channel.namevewindow.titleher derlemedelepton.config.json’dan okunuyor.lepton newbunları öncedenmain.zig’e yazıyordu. Sonradan değiştirilen kimlik, örneğin yayından önce değiştirilencom.examplevarsayılanı, kurucuya ulaşıyor ama programa ulaşmıyordu. Ölçüldü: kimliği değiştirilen projenin programı artık yeni kimliği kullanıyor. Bundan önce yapılmış bir projemain.zig’inilepton update’e kadar koruyor. -
Windows’ta küçük düzeltmeler, hepsi Windows 10’da ölçüldü:
- Açılır pencere
webPermissions’a ve indirme kurallarına uyuyor. - Oturum kapanınca uygulama temiz kapanıyor (çıkış 0).
lepton devverundeepLinks’i kaydediyor.- Debug derlemesi sayfanın konsolunu terminale yazıyor.
- CLI çocuk süreçlere önce kapanmalarını söylüyor, sonra sonlandırıyor.
- WebView2 yoksa
wingetile kurulum öneriliyor. - Dev sunucusu sayfasındaki çerezler oturumlar arasında kalıyor.
- Açılır pencere
-
Linux’ta, sonradan orada ölçüldü:
- WPE WebKit ekrandan büyük pencereyi ekrana sığdırıyor (1200×800 → 1200×768). COSMIC her yeni pencereye, bir GTK 4 penceresi de dahil, kendi ilk boyutunu öneriyor (1200×800 için 910×458) ve o geçerli oluyor.
- Servo penceresi uygulamanın kimliğini alıyor (rıhtım simgesini gösteriyor), çerçevesizken kenarlarından boyutlanıyor ve menüsünde
&doğru çiziliyor. bundle.iconLinux paketleri için.svgalıyor,share/iconsaltına bayt bayt kuruluyor;.pnggerekçesiyle reddediliyor.LEPTON_GPU=cpuorada da okunuyor; yalnız Windows’a ait bir değer uyarıyla GLES’e düşüyor.- Native yolun testleri CI’da Mesa ile çalışıyor.
Yalnız Linux paketlerinde
Bölüm başlığı “Yalnız Linux paketlerinde”Bunlar Windows paketleri yayımlandıktan sonra koda girdi, 25 Ekim paketleriyle geldi; Windows’un CLI’ı bunları beta.3 ile alır.
- Rıhtım WPE WebKit uygulamasını tanıyor. Penceresi simgesiz,
org.webkit.app-…adıyla görünüyordu; artık uygulamanın kimliğini taşıyor ve COSMIC’in rıhtımı uygulamanın simgesini ve adını gösteriyor (ölçüldü). - Servo: imleçler ve üst düzey
await. İşaretçi artık bağlantıların, metnin ve çerçevesiz pencerenin kenarlarının üzerinde değişiyor (ekrandan ölçüldü:pointer,text,grab,not-allowed,none,n-resize). Üst düzeyawaitiçeren modül artıkuncaught exception: undefinedbildirmiyor; oradaki gerçek bir ret de artık sayfanınerrorolayına ulaşıyor, önceden hiç ulaşmıyordu. - Paketlerde yalnız güncel ön yüz var. Yeniden derlenen uygulamanın paketinde eski derlemenin betik dosyaları yenilerin yanında kalabiliyordu; artık kalmıyor.
- Native uygulamanın başlık çubuğu CPU yolunda da başlığı gösteriyor. Orada boştu; GPU’da da artık sistemin gibi
window.title’ı gösteriyor. src-lepton/native.zig. Native programmain.zig’den ayrıldı;main.zig’de komutlarınız, durumunuz ve olaylarınız kalıyor.lepton updateyeni dosyayı ekliyor.- Uygulamanın klasörleri yalnız onun. Veri ve önbellek klasörleri, eski bir sürüm ya da motor daha geniş bıraktıysa sahibine (0700) daraltılıyor.
- Linux’ta ve Windows’ta yapılan Windows paketleri bayt bayt aynı. Linux’ta
lepton package --windowsher çalıştırmada aynı dosyaları yapıyor; MSI’ı Windows’ta kuruluyor ve orada yapılanla aynı denetimlerden geçiyor. İki makinenin paketleri yalnız.exe’de farklıydı: Windows’ta Zig o makinenin kendi Windows sürümü için derliyordu ve standart kitaplığın Windows 10 1803’ten itibaren eklediği kod da geliyordu. Windows derlemeleri artık en eski Windows’u açıkça söylüyor (web görünümlü uygulama için Windows 10, native uygulama için Windows 7 SP1) ve iki makineninzip’i ilemsi’si bayt bayt aynı (ölçüldü). Web görünümlü bir uygulama Windows 8.1 ya da öncesinde Windows 10 ya da 11 istediğini bir ileti kutusuyla söyleyip duruyor. - Yayın derlemeleri düz x86-64 için. Bulunulan platform için yapılan derleme o makinenin kendi işlemcisine göre yapılıyordu; paket eski bir işlemcide “illegal instruction” ile durabiliyordu (ölçüldü: burada derlenen native uygulamada önce 2253 AVX komutu vardı, şimdi hiç yok).
0.1.9-beta.1 2026-10-19, beta
Bölüm başlığı “0.1.9-beta.1 2026-10-19, beta”- Windows’ta eklentiler.
os,fsvedialogbir WebView2 uygulamasında uçtan uca ölçüldü;clipboardWindows için yazıldı ama orada henüz ölçülmedi (test için sürülen pencerede odak yok,writeTextde odağı bekliyor).plugin-dialogWindows’un kendi dosya pencerelerini açıyor;plugin-fskapsamını kapsam klasörüne göre tek birNtCreateFileile koruyor ve klasörden dışarı çıkan her bağlantıyı reddediyor; Linux’takinden de katı (klasörün içine konmuş bir junction bayrak olmadan açıldı, bayrakla reddediliyor; ölçüldü).plugin-osWindows sürümünü, makine adını ve yerel ayarı veriyor.$APPDATA,$APPCACHEve diğer klasörler Windows’un Known Folders’ından geliyor. - WebView2’de yeni projede konsol hatası yok. WebView2 her sayfada
/favicon.icoistiyor; 404 artık boş bir 204. - Linux’tan çapraz derlenen
.exeWindows’ta açılıyor. Bir Next.js projesinden derlenen Windows 10’da açıldı: tablosu doldu, kökenihttp://lepton.localhostidi ve kapanınca geride WebView2 süreci kalmadı. - 0.1.9-beta.0’ın Windows ikilisi eklentiler orada çalışmadan önce yayımlanmıştı ve npm bir sürümü bir kez alıyor; bu yüzden bütün paketler birlikte beta.1’e geçti.
0.1.9-beta.0 2026-10-19, beta
Bölüm başlığı “0.1.9-beta.0 2026-10-19, beta”beta etiketiyle yayında: npm create lepton-app@beta, pnpm’de ise tam sürümle pnpm dlx create-lepton-app@0.1.9-beta.1. 0.1.9’un kalanı (başlangıç ekranları, WebAssembly, isteğe bağlı sunucu işleme) 0.1.9’un kendisinden önce geliyor. Her çatının ihtiyacı
Şablonlar
Bölüm başlığı “Şablonlar”- Astro, Next.js ve Angular.
astro-ts,astro-js,next-ts,next-jsveangular-ts; her biri diğerleriyle aynı başlangıç ekranıyla. Next.js statik bir site dışa aktarıyor (out/) ve ekranı yalnızca pencerede yüklüyor; Astro’nun sayfası düz DOM ekranını yüklüyor. Sıfırdan projelerle ölçüldü:biome checkvetscderlemeden önce ve sonra geçiyor,lepton package --verifygeçiyor,runvedevaltında pencerede konsol hatası yok. - Her Vite şablonunun JavaScript sürümü, Preact ve Lit:
vue-js,svelte-js,solid-js,preact-ts/js,lit-ts/js. Toplam 19 şablon. JavaScript projeleri oluşturuldukları hâliylebiome check’ten geçiyor.
Komutlar
Bölüm başlığı “Komutlar”lepton.config.json’dafrontendayarı: derlemenin nereye gittiği (dist) ve dev sunucusunun portu ile adresi nasıl aldığı (devArgs,{port}ve{host}ile). Ayar yoksa proje eskisi gibi bir Vite projesi.lepton devpencereyi dev sunucusu dinleyince açıyor. Çekirdek önbellekten gelince pencere Astro hazır olmadan açılıyordu; sayfanullkökende kalıyor, çekirdeğe her çağrı reddediliyordu. Önce duran bir sunucu (dolu port) çıkış durumuyla bildiriliyor.- Betadaki
lepton updateen yeni betayı da soruyor;latestson sürümde kalıyor. Eski projelerin$schema’sı yeni adrese taşınıyor. - Hata ayıklama derlemeleri sayfanın konsolunu terminale yazıyor. pnpm’in ve npm’in kendi çıktısı
leptonaltında da renkli kalıyor.
Diğerleri
Bölüm başlığı “Diğerleri”lepton.config.jsoniçin bir JSON şeması, bu siteyle yayında: CLI’nin denetlediği her kural ve bilinmeyen alanların işaretlenmesi;devArggibi bir yazım hatası editörde görünüyor. Projeler eskiden hiç çözülmeyen bir adrese gösteriyordu.- Linux’tan Windows derlemesi bağlanıyor.
lepton build --windows, Windows ikilisine pkg-config’in bulduğu Linux kütüphanelerini veriyordu; artık yalnızca Windows DLL’lerini içe aktaran 1,1 MB’lık bir.exe. Bu sürümde henüz Windows’ta açılmamıştı; sonra açıldı (0.1.9-beta.1). create-lepton-app, Windows’ta motor eksikse WPE WebKit’i değil WebView2’yi söylüyor.
0.1.8 2026-10-18
Bölüm başlığı “0.1.8 2026-10-18”lepton updatepaketleri de güncelliyor. Kayıt defterine en yeni sürümü soruyor, projenin@lepton-desk/*bağımlılıklarını ona yükseltiyor, projenin paket yöneticisiyle kuruyor ve işi yeni kurulan CLI’ya devrediyor; çekirdeği ve şablonları o güncelliyor. 0.1.7’nin yayın günü bulundu: 0.1.6 projesinde kilit dosyası CLI’yı 0.1.6’da tutuyordu, onda daupdateyok; yani proje daha yeni bir çekirdeğe kendi başına ulaşamıyordu. 0.1.8’den sonrapnpm lepton updateyetiyor; daha eski bir proje en yeni CLI’yı bir kez çalıştırıyor. CLI- 0.1.7’den önce açılan React projeleri yine tür denetiminden geçiyor:
lepton update,tsconfig.json’larında eksik olan"jsx"ayarını ekliyor (tscher bileşende hata veriyordu). - Gerçek bir 0.1.6 projesinin kopyasında ölçüldü: tek bir
pnpm dlx @lepton-desk/cli@0.1.8 updatealtı paketi 0.1.8’e taşıdı, çekirdeği vetsconfig.json’ı yeniledi, proje derlendi.
0.1.7 2026-10-18
Bölüm başlığı “0.1.7 2026-10-18”Komutlar
Bölüm başlığı “Komutlar”- Renkli çıktı.
lepton build,run,devvepackageher adımı çerçeveliyor (▸ frontend pnpm run build,✔ frontend 0.9 s) ve bilgileri hizalı yazıyor. Çalıştırdıkları araçlar kendi renklerini koruyor: Vite’ın derleme tablosu ve pnpm’in satırları, Lepton onları borudan okuduğu için renksiz çıkıyordu.NO_COLORile ya da boruya yazarken düz metin.lepton devartık Vite’ın terminali temizlemesine izin vermiyor. lepton update. Var olan projenin çekirdeğini vesrc-lepton/dosyalarını kurulu sürüme getiriyor, düzenlemelerinizi üç yollu birleştirmeyle koruyor; çakışan bir düzenlemedemain.zig.mergeyazıyor ve hiçbir şeyi değiştirmiyor. CLIlepton replay --page --close. Kendiliğinden biten sayfa tekrarı; böylece bir kayıt test olabiliyor. CLI
Çekirdek
Bölüm başlığı “Çekirdek”- Uygulamayı durdurmak iz bırakmıyor. SIGTERM, Ctrl+C ya da oturumun kapanması artık çekirdeği öldürmüyor, döngüyü bitiriyor; kanalı
/dev/shm’den silinip gidiyor. Önceden sinyalle durdurulan her uygulama dört dosya bırakıyordu. - Yoklama yok. Sayfa çekirdeğin 532 KB’lık halkasını 250 ms’de bir okuyordu. Artık çekirdek yayınlayana kadar bekliyor ve yalnız değişeni okuyor. Boşta, uygulamanın süreçleri 30 sn’de 0,87 sn yerine 0,07 sn CPU harcıyor; web süreci 175–207 MiB arasındaki testere dişinden sabit 176 MiB’a indi.
lepton.config.json’daki pencere boyutu her derlemede okunuyor. Öncedenlepton newonu bir kezmain.zig’e yazıyordu.- Paylaşımlı bellekte native uygulamalar. GPU’suz bir native pencere 60 Hz ekran için saniyede yaklaşık 300 kare çiziyor ve her seferinde yeni tampon açıyordu. Artık iki tamponu yeniden kullanıyor ve bileşimciyi bekliyor: 10 sn’de 9,06 sn → 1,10 sn CPU.
Projeler
Bölüm başlığı “Projeler”- Yeni projeler
tscvebiome check’ten geçiyor, ilk derlemeden önce de sonra da. Tam bunu denetleyerek üç şablon hatası bulundu: react-ts’tejsxayarı yoktu, üretilen tür dosyasında Biome’un reddettiği boş bir arayüz vardı, eklentilerle açılan projede izinler 140 karakterlik tek satırdı. - Örnek uygulama:
examples/notes, fs, dialog ve clipboard eklentileri üzerine kurulu bir Markdown not uygulaması (CodeMirror, Milkdown, wiki bağlantıları, geri bağlantılar, pano görünümü, komut paleti). Açılışı kaydedilip test olarak yeniden oynatılıyor; eski bir hata geri konunca (klasör ağacını iki kez yürümek) tekrar, olması gerektiği gibi başarısız oldu.
Arch paketleri
Bölüm başlığı “Arch paketleri”lepton-desk(kaynaktan) velepton-desk-bin(npm’deki ikili); AUR’dakileptonile yan yana durabilsin diyelepton-deskadıyla kuruluyor. AUR yeni hesapları şimdilik kapattı; o zamana kadar depodan derleniyor. Sistem gereksinimleri
0.2.0 hazırlanıyor
Bölüm başlığı “0.2.0 hazırlanıyor”0.2.0 önce beta, sonra 0.2.0 olarak yayınlanacak: doğrudan GPU’da çizen bir native çizici, native uygulamalar için bir JavaScript motoru, native arayüz ve WPE WebKit sayfasının kendi başlık çubuğunu çizmesini, pencereyi taşımasını ve native menü göstermesini sağlayacak Lepton’ın kendi WPE platformu. Şimdiye kadarki temel:
- Vulkan tabanı Radeon R7 240’ınki. Dynamic rendering, synchronization2, timeline semaphore, descriptor indexing ve buffer device address ile Vulkan 1.3; bunları olmayan cihaz GLES 3 yolunu alır.
zig build vulkan-checkbir makineyi denetler ve tam bu özelliklerle çizer; Khronos doğrulaması altında hata bildirmiyor. - GPU’nun çizdiği bir komut listesi. Yuvarlak köşeli ve kenarlıklı dikdörtgenler, yumuşak gölgeler ve metin şekil başına 64 bayt ve tek çağrıda çiziliyor. 2001 şekillik 1200×800 bir sahne R7 240’ta 0,65 ms; karede GPU’ya 128 KB gidiyor, bugünkü native yol ise 3,84 MB’lık kareyi yüklüyor. Metni HarfBuzz şekillendiriyor, her glif bir kez yükleniyor.
- Native şablon bunu kullanıyor. Ekranı ve pencerenin başlık çubuğu ile menüsü tek komut listesi; başlık artık çubukta yazıyor. Uygulama 10 sn’de 0,21 sn CPU harcıyor; CPU’da boyayıp kareyi yükleyen yol 0,82 sn. GPU yoksa o yola düşüyor.
- Karar: düzen motoru Lepton’un kendi flexbox’ı, Zig’de yazılacak.
Windows 0.1.9-beta.0’da
Bölüm başlığı “Windows 0.1.9-beta.0’da”Bir uygulama Windows 10’da WebView2 ile derleniyor, çalışıyor ve paketleniyor. Aşağıdaki değişiklikler sonradan Linux’ta yeniden denetlendi: testler, iki çizim yolu, bir web görünümü uygulaması ve onun üç Linux paketi. Aynı makinede Windows 10 22H2 altında ölçüldü:
- Gerçek bir pencerede WebView2.
zig build webview2-checkbir Win32 penceresi açıyor, içine WebView2’yi yerleştiriyor, bir sayfa yüklüyor, sayfada betik çalıştırıyor ve bir kare yakalıyor. Kurulu çalışma zamanı (burada 155) Microsoft’un yükleyicisinin bulduğu yoldan bulunuyor ve kendi DLL’i doğrudan çağrılıyor; yaniWebView2Loader.dlltaşınmıyor, depoda yalnız Microsoft’unWebView2.h’si var, BSD tarzı lisansıyla. Sayfa 704 ms’de yüklendi, betik 719 ms’de yanıt verdi, kare 829 ms’de yakalandı. WebView2 Chromium’dur, Windows’la gelen kopyası: kutuda tarayıcı yok, ama Chromium’suz da değil. - CLI Windows’ta derleniyor ve testleri geçiyor (293).
lepton neworada çalışıyor;build,devverunhenüz çalışmıyor, çünkü çekirdeğin paylaşımlı bellek kanalı ve pencere katmanı Linux’unki. - Alt süreçler Lepton’la birlikte bitiyor. Windows’ta
lepton, bittiğinde başlattığı her şeyi bitiren bir iş nesnesine (job object) giriyor; zorla öldürülse bile. Orada yalnızcmd’yi bitirmek, geliştirme sunucusunun Node sürecini ayakta bırakıyordu. - Her klonda LF. Windows klonundan derlenen CLI şablonları CRLF satır sonlarıyla gömüyordu ve
zig fmtüretilenmain.zig’i reddediyordu. Depo artık her yerde LF tutuyor. - Webview yolu WebView2’de çalışıyor.
lepton new,build,dev,run,recordvereplayçalışıyor. Sayfahttp://lepton.localhostüzerinden sunuluyor ve Linux’takiyle aynı köprü yanıtlıyor:invoke(sayfadan 2 ms), olaylar, paylaşımlı bellek halkası, pencere komutları,webPermissions, indirmeler,window.open, pano. Derlenmiş bir uygulama 7 süreç ve yaklaşık 100 MiB özel çalışma kümesi, bunun 3,3 MiB’ı çekirdek; kapatınca geride WebView2 süreci kalmıyor. - Windows’ta
lepton package. Tekrarlanabilir bir.zipve WiX’siz yazılan bir MSI: WiX 3–5 artık desteklenmiyor, 6 ve sonrası bir bakım ücretine bağlı; bir framework bunu onu kullanan her şirkete yüklememeli. MSI yönetici izni olmadan kullanıcı başına kuruluyor, Başlat menüsüne kısayol ekliyor, eski sürümü yükseltiyor ve düşürmeyi reddediyor, temiz kaldırılıyor ve Windows SDK’nın ICE doğrulamasından 0 hatayla geçiyor.--verifypaketlenmiş uygulamayı başlatıp ölçüyor ve kapatıyor, Linux’taki gibi Windows’ta da. - Henüz yok: Windows’ta native çizim, MSIX (kod imzalama sertifikası gerekiyor). Eklentiler 0.1.9-beta.1’de geldi. İmzasız yükleyiciler, diğer framework’lerdekiler gibi, Windows’un SmartScreen uyarısını alıyor.
npm create lepton-appyeniden çalışıyor: 0.1.5’tekicreate-lepton-appprojeyi oluşturmadan duruyordu (lepton info --json’u eski biçimde okuyordu). O paketin 0.1.5’i npm’de kullanımdan kaldırıldı.
lepton recordvelepton replay: bir oturumun çekirdeğe yaptığı çağrılar dosyaya yazılıp pencereyle ya da penceresiz yeniden oynatılıyor.- Uygulama masaüstüne tek uygulama olarak görünüyor: kendi systemd kapsamı sayesinde görev yöneticileri çekirdeği ve web motorunun süreçlerini onun adıyla gösteriyor; pencere başlığı
document.title’ı izliyor. - Web motoru özellikleri: hata ayıklama derlemelerinde denetçi (F12), bağlantıların masaüstünün tarayıcısında açılması,
window.open, indirmeler, izin istekleri ve bildirimler. Web özellikleri - Yeni projelerde tek
leptonbetiği (pnpm lepton dev), velepton newsorularını renkli soruyor. - Webview derlemeleri artık WPEBackend-fdo istemiyor (Arch artık paketlemiyor); motor eksikse dağıtımınızın kurulum komutu yazılıyor.