ASELSANMicrokernel
ASELSANOS · TARAYICI · YAPIM GÜNLÜĞÜ

Tarayıcı: ilk adımdan bugüne

Tarayıcının mimarisi, bağımsız Rust motorunun modül planı, web standartlarına göre ürün eksikleri, güvenlik çalışması ve Raspberry Pi 5 yapım kaydı.

38 aşamaSon güncelleme: 2 Kasım 2026Tarayıcı aracı

PARÇALAR · GÖREVLER · VERİ AKIŞI

Tarayıcı yapısal olarak nelerden oluşuyor?

Raspberry Pi 5'te çalışan tarayıcı; telefon arayüzü, WPE WebKit web motoru, yerel C köprüsü, GPU görüntü yolu, Rust kare aktarımı, KMS ekran sunumu ve Bluetooth ses çıkışından oluşuyor. Aşağıdaki tablo çalışan Linux prototipinin parçalarını ve kaynaklarını gösteriyor.

AselBrowser'ın işletim sistemi için geliştirilen yerel Rust HTML/CSS temeli de bu sayfanın devamında ayrıca açıklanıyor. İki geliştirme hattının mevcut yetenekleri kendi kod ve doğrulama sınırlarıyla izleniyor.

Pi 5 tarayıcısının on bir ana bileşeni, görevleri ve kaynak dosyaları
Parça / teknolojiYaptığı işKod / kitaplık
Telefon arayüzüPython · PillowAdres çubuğunu, Türkçe ekran klavyesini, menüleri, favorileri ve ses panelini çizer. Telefon kabuğu ile tarayıcı arasında ekran ve odak geçişini yönetir.
  • scripts/rpi5-h03-ui-service.py
  • scripts/h03_browser.py
  • scripts/h03_ui_draw.py
Gezinme ve kalıcı kayıtlarPython · SQLiteAdres ve arama metnini çözümler; geçmiş, favori, son arama, arama motoru, ses seviyesi, güçlendirme, profil ve mono tercihlerini saklar.
  • scripts/h03_browser.py · BrowserStore / Browser
  • browser.sqlite3 · browser-profile/
WPE uygulama köprüsüC · libwpe · WPEBackend-FDOWebView yaşam döngüsünü, sayfa boyutunu ve gezinme komutlarını yönetir. Telefon arayüzünden gelen Unix soket mesajlarını WPE giriş olaylarına çevirir; kareleri ve sayfa durumunu dışarı verir.
  • scripts/rpi5-h03-browser-engine.c
Web sayfası motoruWPE WebKit 2.48.3 · C/C++WPEWebProcess HTML, DOM, CSS, yerleşim, boyama ve JavaScriptCore üzerinden JavaScript çalıştırmayı üstlenir. WPENetworkProcess ağ isteklerini ve web oturumunun ağ tarafını yürütür. Pi'deki internet ve YouTube gezintisi bu motorla çalışır.
  • WPEWebProcess · WPENetworkProcess · JavaScriptCore
  • Sistem kitaplığı: wpe-webkit-2.0
GPU üzerinde görüntü oluşturmaMesa V3D · GBM · EGL · OpenGL ESPi 5'in V3D GPU'sunda EGL bağlamını ve dışa aktarılan görüntüyü oluşturur. Çalışan köprü glReadPixels ile BGRA piksellerini CPU'nun eriştiği belleğe okur.
  • scripts/rpi5-h03-browser-engine.c · initialize_egl / exported_egl
Kare aktarım kitaplığıRust · paylaşımlı bellekÜç kare yuvasını atomik yayın sayacı ve okuyucu sayılarıyla yönetir. Boyut, stride ve formatı doğrular; tarayıcı dikdörtgenini dönüştürüp ekran tamponuna kopyalar.
  • scripts/rpi5-h03-framepipe.rs
  • libh03-framepipe.so · page.shared
Ekran ve telefon katmanlarıC · Linux DRM/KMSKMS ekran sahipliğini tutar. Telefon görünümünü ve tarayıcı karesini saat, mouse imleci ve çağrı katmanlarıyla birleştirir; 800×480 fiziksel çıktıyı 480×800 portre kullanımına uyarlar.
  • scripts/rpi5-h03-kms-viewer.c
  • scripts/rpi5-h03-ui-pixels.c
Ses işleme ve Bluetooth çıkışıGStreamer · C · ALSA · BlueALSAMedya sesini çözer. Tarayıcıya özel h03audiosink; EQ, %100–%600 ek kazanç, mono birleştirme ve stereo bağlı tepe sınırlaması uygular. PCM ses ALSA ve BlueALSA üzerinden FreeClip 2'nin A2DP çıkışına gider. A2DP ses sürgüsü artık kulaklığın AVRCP donanım sesini yönetir.
  • scripts/rpi5-h03-browser-audio.c
  • scripts/h03_audio_dsp.h
  • scripts/h03_browser.py · audio_settings / apply_volume
Video çözme ve tanılamaGStreamer · libvpx · C · PythonWPE'nin kullandığı VP9 çözücüsünü ve video iş parçacıklarını ölçer. Deney modunda gerçek video boyutu ve düşen kareleri kaydeder; sıcaklık sınırı altında libvpx/libav kıyası yapar. Varsayılan çözücü değiştirilmedi.
  • scripts/rpi5-h03-browser-engine.c · video_metrics_tick
  • scripts/measure-h03-browser-video.py
  • scripts/benchmark-h03-video-decoders.py
Klavye, mouse ve dokunma girişiLinux evdev · C · PythonKMS görüntüleyicisi mevcut giriş aygıtlarını okur; mouse olaylarını sınırlı gruplarla işler. Koordinatlar ve tuşlar telefon UI soketine, web içeriği üzerindeki olaylar da WPE köprüsüne iletilir.
  • scripts/rpi5-h03-kms-viewer.c
  • scripts/rpi5-h03-ui-service.py · dispatch
  • scripts/h03_browser.py · dispatch
Süreç ve erişim sınırlarıWebKit sandbox · Bubblewrap · D-Bus proxyWeb süreci korumalı ortamda çalışır. Ses için yalnız gerekli dosyalar ve org.bluealsa erişimi olan filtreli bir soket bağlanır. Web sayfalarının kamera/mikrofon izin istekleri mevcut sürümde reddedilir; telefon çağrısı sırasında tarayıcı sesi kapatılır.
  • scripts/rpi5-h03-browser-engine.c · audio_proxy_start / permission / call_priority

Görüntü, ses ve giriş nasıl ilerliyor?

Görüntü yolu

  1. 01Ağ süreci sayfayı getirir; WebProcess içeriği işler ve JavaScript'i çalıştırır.
  2. 02WPE, Mesa V3D/EGL ile GPU görüntüsünü üretir; C köprüsü glReadPixels ile BGRA kareyi okur.
  3. 03Üç yuvalı paylaşımlı bellek ve Rust kitaplığı kareyi doğrular, döndürür ve kopyalar.
  4. 04Mevcut KMS sahibi telefon katmanlarıyla birleştirir ve HDMI ekrana sunar.

Ses yolu

  1. 01WebKit / GStreamer medya sesini PCM örneklerine çözer.
  2. 02h03audiosink EQ, ek kazanç, mono ve tepe sınırlaması uygular.
  3. 03ALSA, filtreli D-Bus bağlantısıyla BlueALSA A2DP çıkışını açar.
  4. 04Bluetooth sesi FreeClip 2'ye taşır; aktif bağlantıda seçilen kodek SBC'dir.

Giriş yolu

  1. 01Linux, bağlı klavye, mouse veya dokunmatik aygıttan evdev olayı üretir.
  2. 02KMS görüntüleyicisi koordinatı ve tuşu çözümler; imleci çizer.
  3. 03Telefon UI soketi olayın menüye, klavyeye veya web sayfasına ait olduğunu belirler.
  4. 04WPE köprüsü web içeriğine pointer ve keyboard olayını teslim eder.

Mevcut görüntü yolunda GPU'dan CPU'ya okuma ve ekran tamponuna kopya var. DMA-BUF ile doğrudan sunum henüz tamamlanmış değil.

Yerel Rust AselBrowser temeli

İşletim sistemi hattındaki userspace/asel_browser; sınırlandırılmış HTML/CSS ayrıştırma, stil hesaplama, blok yerleşim, yazılımsal çizim ve çift tamponlu sunum temelini içerir. el0.rs süreç yetkilerini, present.rs ise kernelin kabul ettiği kare tanımlayıcısını düzenler. Bu temel yerel sayfaları işler; genel web standartları ve JavaScript desteğinin tamamlandığı iddia edilmiyor.

HTML/CSS → stilStil → yerleşimYerleşim → rasterRaster → present / DSI

userspace/asel_browser/src/lib.rs · el0.rs · present.rs

Yeni Rust yolu: adres ve kaynak broker'ı → Rust HTML/CSS yerleşimi → gerçek glif çizimi → ekran sahibinin tamponu. Çekirdek WPE kullanmadan aarch64 bare-metal hedefinde derlendi; Pi 5'te ayrı test çalıştırıcısıyla HTTP, gezinme ve 12 görüntü karesi doğrulandı. Telefon arayüzü ve gerçek ekran sunum bağlantısı sonraki aşamada.

Pi'deki 2.48.3 sürümünün libwpe/FDO modeli için resmî WPE mimari belgesi; projeye özgü görevler için tabloda verilen kaynak dosyaları esas alınır.

31 EKİM 2026 · RASPBERRY PI 5 · YOUTUBE 1080P

Video CPU: ölçüm, kod ve karar

Kullanıcının 1080p seçtiğini bildirdiği açık YouTube oturumu ölçüldü. Bu oturumda tarayıcı dört çekirdeğin toplam kapasitesinin yaklaşık %34'ünü kullandı. Yükün çoğu WPE WebProcess içindeydi; GPU karelerini taşıyan C motorunun payı yaklaşık %2 idi. Bu nedenle yalnız son ekran aktarımı veya yeni bir VP9 çözücüsü için yarı yarıya CPU azalması iddia edilmiyor.

Canlı 30,4 saniye

%33,95

Tarayıcı süreç ailesi · dört çekirdeğe göre. WebProcess %32,16; EGL motoru %1,96.

Bellek ve yüzey

626,3 MB

Tarayıcı ailesi PSS. Web yüzeyi 30,02 FPS; bu değer video kare kaybı ölçümü değildir.

Sürekli yükte sıcaklık

85,1 °C

0xe0008 soft sıcaklık sınırı; ayrı sorguda 0xe0006 güncel frekans kısıtlaması ve throttling.

Aynı VP9 verisiyle çözücü kıyası

Sentetik 1920×1080, 30 FPS, 180 karelik VP9 dosyası I420 çıkışına çözüldü. İki koşuda etkin throttling yoktu. Bu yalnız çözücü karşılaştırmasıdır; YouTube'un gerçek akışı ve toplam tarayıcı CPU'su için kazanım kanıtı değildir.

Aynı VP9 dosyasında çözücü CPU süreleri
ÇözücüCPU süresi · iki koşuSonuç
libvpx · vp9dec2,149 / 2,149 snVarsayılan korundu
libav · avdec_vp92,266 / 2,258 snBu veride yaklaşık %5 daha çok CPU

Sıfırdan VP9 kodeği şu an uygulanmadı: mevcut libvpx deneyde daha hızlı ve canlı VPx işçileri toplam dört çekirdek kapasitesinin kısa örnekte yaklaşık %11,6'sını kullanıyor. Kodeğin tek başına toplam yükü yarıya indirmesi bu verilerle desteklenmiyor. H.264 için tek sentetik koşu yapıldı; farklı kodlanmış dosyalar eşdeğer kalite olarak karşılaştırılmadı.

Uygulanan hamleler

  1. 01Açık 1080p YouTube oturumunda 30,4 saniye CPU, bellek, web yüzeyi karesi ve sıcaklık örneklendi; oynatım kesilmedi.
  2. 02WebProcess iş parçacıkları ayrı ölçüldü. VPx işçileri tek çekirdeğin %46,5'ini kullandı; GL, kuyruk ve kompozisyon işleri ayrıca görüldü.
  3. 0385,1 °C ve 0xe0008 görüldüğünde eşzamanlı çözücü testi başlatılmadı. 0xe0006 ile güncel frekans kısıtlaması ve throttling de kayda geçti.
  4. 04Aynı 1920×1080, 30 FPS, 180 karelik sentetik içerikten VP9 ve H.264 dosyaları üretildi. Sıcaklık düşünce VP9 çözücüleri aynı bitstream ile kıyaslandı.
  5. 05C motoruna isteğe bağlı video kare telemetrisi, Python başlatıcısına deneysel çözücü sıralaması eklendi. Varsayılan çözücü değiştirilmedi.
  6. 06Aday motor ayrı WPE oturumunda V3D/EGL ile açıldı; yerel videoda 1920×1080 boyutu ve kare sayaçları alındı. 30 tarayıcı testi geçti.
  7. 07Kaynak ve ikili yedeklenerek Pi'ye bir sonraki tarayıcı açılışı için kuruldu. O sırada açık kullanıcı oturumu yeniden başlatılmadı.

Kod ve modüller

V01

Canlı süreç ölçümü

Ölçüldü

Tarayıcı süreç ağacının CPU ve PSS belleğini, web yüzeyi FPS değerini, sıcaklığı ve throttling bitlerini aynı aralıkta kaydeder.

scripts/measure-h03-browser-video.py

V02

Video kare telemetrisi

Kuruldu · deneysel

H03_BROWSER_VIDEO_METRICS=1 iken videoWidth, videoHeight, oynatma süresi, toplam ve düşen kareleri iki saniyede bir özel video.json dosyasına yazar. Normal kullanımda yoklama kapalıdır.

scripts/rpi5-h03-browser-engine.c · video_metrics_tick / video_metrics_done

V03

Çözücü seçimi

Kuruldu · varsayılan korunuyor

H03_BROWSER_VP9_DECODER=libav veya libvpx ile yalnız deney oturumunda GStreamer sıralamasını değiştirir. Geçersiz veya boş seçimde sistemin mevcut sıralaması kullanılır.

scripts/h03_browser.py · Engine.audio_environment

V04

Isı korumalı A/B

Sentetik test tamamlandı

Aynı 180 karelik VP9 verisini libvpx ve libav ile I420 çıkışında çözer. Oynatım sürüyorsa, sıcaklık sınırı aşılmışsa veya güncel throttling varsa denemeyi durdurur.

scripts/benchmark-h03-video-decoders.py

V05

Gerçek akış kabulü

Açık

Aynı YouTube videosunun gerçekten seçilmiş 1080p akışında kodeği, düşen kareleri, ses eşzamanını ve uzun süreli sıcaklığı kaydet; karşılaştırmayı ancak aynı kalite ve koşullarda yap.

scripts/measure-h03-browser-video.py · video.json

V06

GPU ve son ekran yolu

Açık

WebProcess GL, kuyruk ve kompozisyon maliyetini ayrı ölç. Gerçek DMA-BUF sunumunu fence, çağrı önceliği ve fiziksel ekran kabulüyle bitir.

scripts/rpi5-h03-browser-engine.c · scripts/rpi5-h03-kms-viewer.c

Gerçek video karesi · C / WebKit

scripts/rpi5-h03-browser-engine.c

const q = typeof v.getVideoPlaybackQuality === 'function'
  ? v.getVideoPlaybackQuality() : null;
return JSON.stringify({
  found: true, width: v.videoWidth, height: v.videoHeight,
  total_frames: q ? q.totalVideoFrames : null,
  dropped_frames: q ? q.droppedVideoFrames : null
});
// H03_BROWSER_VIDEO_METRICS=1: iki saniyede bir, varsayılan kapalı

A/B seçimi · Python / GStreamer

scripts/h03_browser.py

decoder = os.environ.get('H03_BROWSER_VP9_DECODER', '').lower()
if decoder == 'libav':
    ranks += ',avdec_vp9:512,vp9dec:128'
elif decoder == 'libvpx':
    ranks += ',vp9dec:512,avdec_vp9:128'
# Boş seçim: kurulu varsayılan sıralama korunur.

Isı ve canlı oturum kapısı · Python

scripts/benchmark-h03-video-decoders.py

if browser_playing_audio():
    raise SystemExit('live browser audio resumed')
if current_temp > args.max_temp or flags & 0xF:
    raise SystemExit('thermal gate: no benchmark run')
# Aynı VP9 dosyası → vp9dec / avdec_vp9 → I420 → fakesink

Ham kayıtlar: evidence/browser/pi5-youtube-1080p-20261031.json ve evidence/browser/pi5-video-decoder-preflight-20261031.txt. Canlı 1080p kodek, düşen video karesi ve yeni kurulumun gerçek oynatım kabulü açık.

AselBrowser / işletim sistemi

Rust ile yerel HTML/CSS işleme, yetki sınırı, DSI sunumu ve telefon arayüzü. Modern web standartları bu hatta henüz tamamlanmış değil.

WPE / Raspberry Pi 5

İnternet sayfaları açan Linux prototipi: WPE WebKit, V3D/EGL, telefon kabuğu, Rust kare aktarımı ve Bluetooth ses yolu.

BAĞIMSIZ RUST TARAYICI · MODÜL PLANI

Sıradaki geliştirme modülleri

NativeBrowser bugün sınırlı HTML/CSS, adres çözümleme, yerel HTTP test adaptörü, sekme/geçmiş ve RGB565/XRGB8888 çizim temeline sahip. Telefon arayüzüyle canlı bağlantı, sistem ağı, TLS, JavaScript, medya ve genel web uyumluluğu tamamlanmadı. Bu maddeler teslim planıdır.

Sıra A → B → C → D → E; M03 ölçümü her aşamada sürer. Doğrudan XRGB8888 ilk fixture ölçümünde RGB565'ten daha yavaştı; gerçek ekran ölçümü olmadan varsayılan değişmeyecek.

Aşama A · planlandı

Telefon ve ekran bütünleşmesi

Teslim koşulu: Gerçek telefon ekranında tek Rust oturumu gezinir.

  1. M01

    Oturum ve telefon arayüzü

    Açık

    Adres, sekme, geri/ileri, bağlantı, kaydırma ve odak durumunu tek Rust oturumuna bağla; ayrı kernel sayfa durumunu eşleştir.

    Bağımlılık: NativeBrowser · telefon UI

    Kabul: Gerçek ekranda adres girme, bağlantıya dokunma, geri/ileri ve iki sekme arasında geçiş aynı durumu korur.

  2. M02

    Ekran sunumu ve giriş

    Açık

    Tampon sahipliği, stride, renk biçimi, hasar alanı, senkronizasyon ve ekran latch aşamasını ekran sahibine bağla; dokunma/fare koordinatlarını eşleştir.

    Bağımlılık: M01 · present descriptor

    Kabul: Pi 5 ekranında metin ve imleç doğru yerde görünür; kaydırma ve yeniden boyutlandırmada takılı kare kalmaz.

  3. M03

    Ölçüm ve hata görünürlüğü

    AçıkPi 5 host A/B geçti · panel kabulü açık

    Yükleme, ayrıştırma, yerleşim, çizim ve sunumu ayrı zamanla. Süreç CPU/RAM, FPS, kare gecikmesi ve hata nedenlerini kaydet; eşdeğer WPE iş yüküyle karşılaştır.

    Bağımlılık: M01 · M02

    Kabul: Aynı Pi 5 fixture'ında p50/p95 süre, CPU, bellek ve FPS raporu vardır; RGB565 ve XRGB8888 ayrı ölçülür.

Aşama B · planlandı

Güvenli ağ ve HTTPS

Teslim koşulu: Telefon arayüzü kilitlenmeden web kaynakları yüklenir.

  1. M04

    Sistem ağ broker'ı

    AçıkIPC v2 yanıt sınırı doğrulandı

    ResourceBroker'ı yetkili DNS/TCP IPC'ye bağla; güvenilir ağ işçisi, verimli sayfa devri, asenkron bildirim, kuyruk, zaman aşımı ve sekme kapanınca temizlik ekle.

    Bağımlılık: M01 · DNS/TCP hizmetleri

    Kabul: Yavaş/kopan bağlantıda UI yanıt verir, istek iptal edilir ve yetkisiz süreç doğrudan ağa çıkamaz.

  2. M05

    TLS ve güven kökleri

    Açık

    Denetlenmiş TLS uygulamasıyla sertifika zincirini, alan adını ve tarihi doğrula; hatalı sertifikada güvenli biçimde reddet.

    Bağımlılık: M04 · doğru sistem saati

    Kabul: Geçerli HTTPS açılır; yanlış alan adı, süre dolması ve güvensiz sertifika açık hata verir; sessiz HTTP geri dönüşü olmaz.

  3. M06

    URL, Fetch ve kaynak yönetimi

    Açık

    URL, yönlendirme, içerik kodlaması, MIME, karakter kümesi, eşzamanlı yükleme ve sınırlı önbelleği genişlet; köken/CORS/CSP sınırlarını uygula.

    Bağımlılık: M04 · M05

    Kabul: Göreli adres, CSS ve resimler doğru çözülür; bozuk yanıt veya yönlendirme döngüsü oturumu kilitlemez.

Aşama C · planlandı

Okunabilir statik web

Teslim koşulu: Gerçek sayfalar dar HTML/CSS alt kümesinin ötesinde doğru görünür.

  1. M07

    HTML ayrıştırıcı ve DOM

    Açık

    Tokenizer, ağaç kurma, hatalı işaretleme onarımı, belge kodlaması ve değişebilir DOM temelini kaynak sınırlarıyla geliştir.

    Bağımlılık: M06

    Kabul: Seçilmiş HTML web platform testleri ve bozuk sayfa fixture'ları tutarlı DOM üretir; bellek sınırı korunur.

  2. M08

    CSS kaskadı ve yerleşim

    Açık

    Seçiciler, kalıtım, ölçüler, block/inline, flex ve viewport düzenini aşamalı ekle; değişen bölgeyi yeniden yerleştir.

    Bağımlılık: M07

    Kabul: Referans statik sayfalarda metin taşmadan okunur; viewport ve kaydırma görüntü karşılaştırması geçer.

  3. M09

    Yazı, resim ve boyama

    Açık

    Unicode şekillendirme, iki yönlü metin, satır kırma, font yedeği ve yaygın resim biçimlerini ekle; kısmi yeniden boyamayı hasar alanına bağla.

    Bağımlılık: M06 · M08

    Kabul: Türkçe/çok dilli metin ve resimler gerçek ekranda doğru görünür; değişmeyen bölge yeniden boyanmaz.

Aşama D · planlandı

Etkileşim, güvenlik ve kalıcılık

Teslim koşulu: Sayfa kodu ve kullanıcı verisi tanımlı sınırlarla yönetilir.

  1. M10

    İçerik süreci sınırı

    Açık

    Güvenilmeyen sayfa için CPU/bellek kotası, izinler, köken ayrımı ve çökme sonrası kurtarma modeli kur; script'ten önce IPC sınırını tanımla.

    Bağımlılık: M04 · M07

    Kabul: Bozuk veya aşırı kaynak isteyen sayfa kabuğu ve başka sekmeyi düşürmez; yetkisiz cihaz/dosya erişimi reddedilir.

  2. M11

    JavaScript ve olay döngüsü

    Açık

    Rust olay döngüsü, zamanlayıcılar ve DOM bağları kur; ECMAScript çalışma zamanını ayrı bir modül olarak seç, kapsamı testlerle büyüt.

    Bağımlılık: M07 · M10

    Kabul: Seçilmiş JS/DOM testleri geçer; sonsuz döngü UI'yi kalıcı olarak kilitlemez.

  3. M12

    Formlar ve erişilebilir giriş

    Açık

    Form alanları, seçim, odak, Türkçe ekran klavyesi/IME, metin düzenleme ve erişilebilir öğe ağacını ekle.

    Bağımlılık: M01 · M08 · M11

    Kabul: Klavye, fare ve dokunmayla form gönderilir; odak sırası ve erişilebilir adlar doğrulanır.

  4. M13

    Profil ve gizlilik

    Açık

    Geçmiş, yer işaretleri, tercihler, çerezler ve site verisini kota/köken ayrımıyla sakla; özel oturum ve veri silme ekle.

    Bağımlılık: M06 · M10

    Kabul: Normal kayıtlar yeniden başlatmada kalır; özel oturum verisi silinir; kökenler birbirinin verisini okuyamaz.

Aşama E · planlandı

Medya ve ürün kabulü

Teslim koşulu: Sesli içerik ve yaygın web iş yükleri gerçek cihazda ayrıca doğrulanır.

  1. M14

    Medya ve ses yönlendirme

    Açık

    Ses/video çözme, medya denetimleri, çağrı önceliği ve Bluetooth çıkışını Rust oturumuna bağla; WPE ses yolu otomatik devralınmaz.

    Bağımlılık: M05 · M09 · M10

    Kabul: Pi 5'te video ve iki kulakta ses doğrulanır; çağrı önceliği ve ses geri dönüşü çalışır.

  2. M15

    Standart ve performans kapısı

    Açık

    Web platform testlerini modül modül büyüt; CPU, RAM, gecikme, pil ve görsel doğruluğu aynı sayfalarda ölç; geçiş/kırılma sayısını yayınla.

    Bağımlılık: M03 · M07–M14

    Kabul: Hedef sayfalar gerçek Pi 5'te açılır; desteklenen özellikler ve açık testler raporlanır; CPU kazancı eşdeğer iş yükünde ölçülür.

M03 · ölçüm başlangıcı, 2 Kasım 2026

Kilitli Cargo derlemesi onarıldı. Yerel Rust tarayıcısı 12 karelik fixture üzerinde RGB565 ve XRGB8888 için yedi eşlenik koşuda ölçüldü. Güncel ikiliyle çizim p50/p95 sırasıyla 237/508 µs ve 302/819 µs; HTML ayrıştırma p50 20 µs, yerleşim p50 9 µs. İki çıktı arasındaki en büyük renk kanalı farkı 7/255. Kod: scripts/benchmark-native-browser-gates.py ve scripts/build-native-browser-rust.sh.

Bu x86_64 host ölçümüdür. Pi 5 panel sunumu, FPS, giriş gecikmesi ve eşdeğer WPE karşılaştırması tamamlanmadan M03 açık kalır.

Güncel Rust ikilisi Pi 5 Linux üzerinde ayrıca derlendi. Yedi eşlenik host koşusunda RGB565 çizim p50/p95 466,5/609 µs, XRGB8888 713/825 µs; tepe RSS ortancası her iki yolda 4.832 KiB. HTML ayrıştırma p50 32–33 µs, yerleşim p50 12 µs. Bu süreç telefon ekranına bağlanmadığı için panel FPS ve WPE ile eşdeğer sayfa karşılaştırması açık kalır. Ham kayıt: evidence/browser/native-pi5-phase-gates-20261102.json.

Kaynak ve standartlar

Mevcut kod ve sınırlar: userspace/asel_browser/README-NATIVE.md, userspace/asel_browser/src/native/ ve kernel/src/ui/browser.rs. Yapılan işler 16–18 numaralı aşamalarda ayrıca kayıtlıdır.

5 KİTAP · YENİDEN İNCELEME · 18 ADIM

Tarayıcı güvenliği için genişletilmiş plan

Kitapları sertifika yaşam döngüsü, süreç yetkisi, kullanıcı verisi, indirme, teşhis ve sürüm zinciri açısından yeniden eşleştirdik. Önceki 10 adım, önkoşulları ve kabul ölçütleri olan 18 adıma genişledi. S01'in ilk tehdit matrisi yazıldı. S02'de her kaynak için ayrı istek kimliği kullanan Rust IPC istemci sözleşmesi eklendi; eski veya başka sekmeye ait yanıt, yerel adres, kota aşımı ve bozuk başlık reddediliyor. Geliştirme adaptöründe HTTP okuması ile DNS beklemesinin iptali kodlandı; DNS beklemesi süreli ve tek işçiyle sınırlı. Çekirdekte ayrı browser endpoint'i ve canlı CNode grant'iyle kimlik doğrulayan, dört istekle sınırlı URL hazırlama protokolü eklendi. Seçmeli QEMU profilinde iki gerçek EL0 görevinden yalnız birine SEND grant'i verildi; telefon UI'sindeki üretim tarayıcısına yetki verilmedi. COMMIT ağ arka ucu bulunmadığını açıkça bildiriyor. Başlamış libc DNS çağrısı kesilemiyor. Gerçek OS ağ işçisi ve bloklanmış çağrıyı iptal etme hâlâ açık. S03'te HTTP/1 çerçevesi Content-Length veya chunked bitince EOF beklemeden sonuçlanıyor; eksik ve fazla baytlar reddediliyor. S05'te URL/alan adı kanonikleştirme ve geliştirme adaptöründe çözülen IP'yi denetleyerek aynı IP'ye bağlanma eklendi; özel ağlar varsayılan kapalı, loopback yalnız açık fixture kipinde. S03 ve S05 kısmi; S07'de URL/içerik içermeyen son 32 ağ isteğinin DNS, bağlantı, ilk bayt ve toplam süre izi RAM'de tutuluyor. S08'de sentetik sunucu gecikmesi ve süre aşımı testleri, S10'da kilitli paket/kaynak özeti makbuzu eklendi. Bu adımlar da kısmi; diğer maddeler plan aşamasında. Önce S02 ile S04/S05 tamamlanmalı; içerik yalıtımı ve güvenli HTTPS doğrulanmadan JavaScript, kalıcı oturum ve aygıt izinleri genel kullanıma açılmayacak.

Bugünkü kanıt: resource.rs istekleri yetki ve boyutla sınırlar; http.rsbelirsiz çerçeveleri reddeder; geliştirme adaptöründe HTTPS TlsUnavailabledöndürür. docs/ASELBROWSER-NATIVE-THREAT-MODEL.md sınırları kaydeder. DNS bekleme iptal/süre, HTTP çerçeve sonu, özel IP ve DNS yeniden bağlama ret testleri geçti. IPC fixture testleri yanlış istek/sekme yanıtını, iptali ve kota aşımını reddediyor; çekirdek gateway testleri kimlik ayrımı, parça kotası, süre dolumu ve grant iptalinde temizlemeyi doğruluyor. Ayrıca QEMU'daki yetkili EL0 görev URL'yi parça parça iletip BACKEND_UNAVAILABLE aldı; aynı endpoint numarasını bilen yetkisiz görev INVALID_CAPABILITY ile reddedildi. Ham UART ve denetim makbuzu evidence/qemu/browser-ipc-20261030/dizininde. Bu kanıt gerçek ağ, HTTPS veya fiziksel telefon kabulü değildir. HTTP ayrıştırıcısı için dört girdili fuzz hedefi hazırlandı; uzun, kapsama izli fuzz kabulü açık. CLI makbuzunda adres ve sayfa başlığı varsayılan gizli; S10 aracı değişmiş kaynak ağacını yayın için reddediyor. S18'in ilk denemesinde Rust ikilisi Pi 5 Linux üzerinde ayrı dizinde derlenip iki piksel yolunda 12 karelik loopback HTTP gezinme senaryosunu geçti; bu panel sunumu, telefon UI'si veya yayın kabulü değildir. S04 için gerçek telefon ağı, TLS, güven deposu ve saat hizmeti henüz bağlı değildir.

K1

William Stallings · Cryptography and Network Security (8. baskı, 2022)

İncelenen bölümler: Bölüm 8, 11–13, 15, 17 ve 21: rastgelelik, bütünlük, imza, sertifika, TLS ve uç nokta güvenliği.

Tarayıcının TLS güven zinciri, rastgelelik ve HTTPS hata politikasını tasarlamak için temel. Kriptografik ilkelere kendi uygulamamızı yazmak yerine denetlenmiş bir TLS bileşeni seçilecek.

Ek çıkarım: doğru saat, güven deposunun yenilenmesi ve imzalı imaj ayrı güven bağımlılıklarıdır; bu üçü olmadan sertifika veya yayın doğrulaması kabul edilmez.

K2

Chris Sanders · Practical Packet Analysis (3. baskı, 2017)

İncelenen bölümler: Bölüm 5–9: DNS/TCP/uygulama katmanları; Bölüm 11–13: gecikme, güvenlik ve kablosuz analiz.

DNS, TCP ve TLS hata ayıklama için kontrollü paket fixture'ları, yeniden iletim ve gecikme ayrımı. Paket yakalama tarayıcı içinde sürekli çalışan bir özellik olarak tasarlanmayacak.

Ek çıkarım: ağ, sunucu ve istemci gecikmesi ayrı ölçülmeli; başlangıç ve kapanış için baz ölçüm ile sentetik kopma/tekrar iletim izleri tutulmalı.

K3

Richard Bejtlich · The Practice of Network Security Monitoring (2013)

İncelenen bölümler: Bölüm 1–2: veri türleri, mahremiyet ve saklama; Bölüm 9, 11 ve 13: operasyon, istemci olayı ve kanıt.

İstemci tarafındaki şüpheli olayların nedenini anlayacak yerel, sınırlı telemetri; içerik ve kimlik bilgilerini varsayılan günlükten uzak tutan mahremiyet ilkesi.

Ek çıkarım: olay kaydı, saklama kotası, silme ve kullanıcı denetimli dışa aktarma bir bütün olmalı; tam trafik içeriği varsayılan olarak toplanmamalı.

K4

Razi Rais, Christina Morillo, Evan Gilman ve Doug Barth · Zero Trust Networks (2. baskı, 2024)

İncelenen bölümler: Bölüm 2, 4–5, 7–10: en az yetki, politika, cihaz kimliği, uygulama zinciri ve karşıt bakış.

Sayfa, render süreci ve ağ broker'ı arasında her istekte yetki denetimi; bağımlılık, derleme ve dağıtım bütünlüğü. Kamusal web sitesinden istemci sertifikası talep etmek bu tasarımın varsayılanı değil.

Ek çıkarım: politika kararı ile uygulama noktası ayrılmalı; sekme yetkisi iptal edilebilmeli ve kaynak, derleme, imza ile çalışan imaj tek sürüm zincirinde izlenmeli.

K5

Chris McNab · Network Security Assessment (3. baskı, 2016)

İncelenen bölümler: Bölüm 2–3 ve 11–14: değerlendirme, tehdit modeli, TLS, web sunucusu ve uygulama katmanları.

Kendi tarayıcımızın saldırı yüzeyini envanterlemek, TLS ve web sınırlarını negatif testlerle denetlemek. Kitaptaki eski TLS 1.2 ayrıntıları güncel protokol metinleriyle yeniden kontrol edilecek.

Ek çıkarım: ayrıştırıcı, yönlendirme, indirme, profil ve içerik süreci ayrı ret testleri ister; dış sitelere izinsiz tarama planın parçası değildir.

1 · Ağ ve kimlik (S01–S05)

Yetki, adres, protokol ve HTTPS kimliği kurulacak.

2 · İçerik ve veri (S06, S11–S15)

Süreç, köken, oturum, dosya ve aygıt izinleri ayrılacak.

3 · Teşhis ve güvence (S07–S09, S16–S17)

Mahremiyetli ölçüm, kontrollü laboratuvar ve regresyon kurulacak.

4 · Yayın (S10, S18)

İmzalı imaj zinciri ve Pi 5 kabul ölçümleri tamamlanacak.

Uygulama sırası ve kabul koşulları

S adımları mevcut Rust yol haritasındaki M modüllerine bağlanır. Önkoşullar, sıra numarasından daha belirleyicidir.

  1. S01 · İlk sürüm hazır

    Tehdit modeli ve sınır haritası

    M04–M06 · M10 · K4 · K5

    Sayfa içeriği, Rust render süreci, telefon UI, DNS/TCP/TLS broker'ı, profil, indirme ve güncelleme hizmetleri arasındaki veri/izin sınırlarını çıkar. Dış sayfa, bozuk yanıt ve ele geçirilmiş içerik süreci senaryolarını sırala.

    Önkoşul: Başlangıç

    Kabul: Her sınır için giriş, yetki, olası kötüye kullanım, reddetme davranışı ve sahibi kayıtlı bir tehdit matrisi vardır.

  2. S02 · Başlandı

    Yetkili ve iptal edilebilir ağ IPC'si

    M04 · K4 · K5

    Mevcut ResourceBroker sözleşmesini gerçek sistem DNS/TCP hizmetine bağla. Her istek için sekme/oturum kimliği, yetki, boyut, zaman aşımı ve iptal kontrolü uygula; render sürecine ham soket verme.

    Önkoşul: S01

    Kabul: Sahte veya süresi geçmiş IPC isteği reddedilir; sekme kapanınca ağ işi durur; kopan ağda UI yanıt vermeye devam eder.

  3. S03 · Başlandı

    Protokol ayrıştırma ve kaynak kotaları

    M04 · M06 · K2 · K5

    Mevcut sınırlı HTTP/1 ayrıştırıcısını akış, başlık, gövde ve açılmış içerik kotalarıyla genişlet. Çelişkili Content-Length/Transfer-Encoding, eksik chunk ve sıkıştırma bombası girdilerini ayrı test et.

    Önkoşul: S02

    Kabul: Bozuk çerçeve ve kota aşımı açık hata verir; işlem bellek taşması veya belirsiz yanıt kabulü yaşamaz.

  4. S04 · Planlandı

    HTTPS kimliği, rastgelelik ve güven deposu

    M05 · K1 · K4 · K5

    Denetlenmiş TLS bileşeni ve güncellenebilir güven köklerini seç; OS rastgelelik kaynağı, sistem saati, sertifika zinciri, alan adı ve SNI doğrulamasını bağla. Güven deposu geri alımını ve sessiz HTTP düşüşünü engelle.

    Önkoşul: S02 · OS saat/rastgelelik hizmetleri

    Kabul: Geçerli sertifika açılır; yanlış ad, süre dolması, güvensiz kök, eski güven deposu ve yanlış saat ayrı hata üretir; HTTP'ye düşüş olmaz.

  5. S05 · Başlandı

    URL, yönlendirme ve köken politikası

    M06 · M10 · K1 · K4 · K5

    URL kanonikleştirme, DNS sonucu ile hedef bağlama, yönlendirme zinciri, köken, CORS ve CSP kararlarını tek kaynak politikasında topla. Kamusal sayfadan yerel/özel ağ kaynağına geçişi açık politikayla yönet.

    Önkoşul: S02 · S04

    Kabul: Yönlendirme ve ad çözümü değişse de yetki tekrar değerlendirilir; köken dışı okuma ve izinsiz yerel ağ isteği reddedilir.

  6. S06 · Planlandı

    İçerik süreci yalıtımı

    M10 · M11 · K4 · K5

    HTML/JS/resim işleyen süreci telefon UI ve profil hizmetinden ayır; CPU, bellek, süre, dosya ve IPC yetkilerini sınırla. Çöken sekmeyi tek başına yeniden başlat.

    Önkoşul: S01 · S02 · S05

    Kabul: Bozuk sayfa başka sekmeyi veya UI'yi düşürmez; içerik süreci yetkisiz dosya ve ağa erişemez.

  7. S07 · Başlandı

    Mahremiyetli yerel telemetri

    M03 · M04 · M05 · K2 · K3

    DNS, bağlantı, TLS, yanıt ve çizim aşamalarına istek kimliğiyle süre/hata ölçümü ekle. Varsayılan kayıtlarda URL sorgusu, çerez, Authorization başlığı ve sayfa gövdesini tutma; dönen log kotası uygula.

    Önkoşul: S02 · S03 · S04

    Kabul: Tek bir başarısız yükleme aşamalara ayrılabilir; günlük örneğinde kimlik bilgisi veya içerik yoktur; kota aşımı diski doldurmaz.

  8. S08 · Başlandı

    Kontrollü paket ve gecikme laboratuvarı

    M03 · M04 · K2 · K3

    Geliştirme ortamında sentetik DNS, TCP yeniden iletimi, TLS kopması ve HTTP yönlendirme fixture'ları kur. Paket analizi ile tarayıcı zaman çizelgesini aynı istek kimliği üzerinden karşılaştır; gerçek trafik yakalamayı açık onaya bağla.

    Önkoşul: S05 · S07

    Kabul: Yavaş sayfada ağ gecikmesi ile render süresi ayrılır; dört hata senaryosunun yeniden üretilebilir kaydı vardır.

  9. S09 · Planlandı

    Negatif test ve fuzz kapısı

    M05 · M06 · M10 · M15 · K1 · K5

    HTTP/URL/HTML ayrıştırıcılarına fuzz ve regresyon girdileri; TLS sertifika, yönlendirme, köken ve IPC için reddetme testleri ekle. Yalnız projenin kendi fixture ve test hedeflerini kullan.

    Önkoşul: S03–S06

    Kabul: Belirlenmiş bozuk girdiler çökme üretmez; güvenlik testleri her sürümde aynı sonuçla çalışır ve başarısızlık dağıtımı durdurur.

  10. S10 · Başlandı

    Bağımlılık ve sürüm bütünlüğü

    M05 · M10 · M15 · K1 · K4 · K5

    TLS ve diğer bağımlılıkları envanterle; güncelleme/açık takibi, SBOM, tekrarlanabilir derleme, imzalı yayın ve sürüm geri alma koruması kur. Pi 5 imajını kaynak revizyonuna bağla.

    Önkoşul: S01 · S04

    Kabul: Yayın kaydından kaynak, bağımlılık ve imaj izlenir; imzasız, değiştirilmiş veya eski sürüme zorlanan imaj etkinleştirilmez.

  11. S11 · Planlandı

    Çerez, önbellek ve profil ayrımı

    M10 · M13 · K3 · K4

    Çerez ve site verisini köken ve bağlam politikasına göre ayır. Kalıcı/özel profillerin depolama, kota, şifreleme, silme ve çökme sonrası tutarlılık kurallarını belirle.

    Önkoşul: S05 · S06

    Kabul: İki köken birbirinin verisini okuyamaz; özel oturum yeniden açılışta veri bırakmaz; profil silme testle doğrulanır.

  12. S12 · Planlandı

    Güvenli içerik ayrıştırma ve betik kapısı

    M06 · M10 · K5

    HTML, CSS, görüntü ve DOM girdilerine boyut/derinlik sınırı koy. JavaScript eklenmeden önce olay döngüsü, zaman kotası ve API yetkileri için ret testlerini tamamla.

    Önkoşul: S03 · S05 · S06

    Kabul: Bozuk içerik çökme veya sınırsız döngü üretmez; JS kapalıyken betik çalışmaz, açıldığında köken ve izin testleri geçer.

  13. S13 · Planlandı

    Form, parola ve kimlik bilgisi sınırı

    M10 · M13 · K1 · K4 · K5

    Form gönderimi, otomatik doldurma ve yetki başlıklarını köken/HTTPS sınırına bağla; parolayı korumalı hizmette sakla. Şüpheli alan adı ve düz HTTP davranışını belirle.

    Önkoşul: S04 · S05 · S11

    Kabul: Kimlik bilgisi başka kökene veya HTTP'ye sessiz taşınmaz; günlük ve çökme kaydında parola bulunmaz.

  14. S14 · Planlandı

    İndirme ve dosya açma sınırı

    M10 · M13 · K4 · K5

    İndirilen dosyayı yürütme yetkisi olmadan ayrı alana yaz. Ad/yol temizliği, içerik türü kararı, boyut kotası ve açık kullanıcı eylemi uygula.

    Önkoşul: S03 · S06

    Kabul: Yol geçişi, sahte uzantı ve kota aşımı sistem dosyasını değiştiremez; indirme otomatik çalıştırılmaz.

  15. S15 · Planlandı

    Kamera, mikrofon, konum ve medya izinleri

    M10 · M12 · K4 · K5

    Aygıt erişimini görünür, kökene bağlı ve iptal edilebilir izinle aç. Medya çözümleyicilerini yalıt ve kaynak kotası uygula.

    Önkoşul: S05 · S06 · S11

    Kabul: İzin yokken aygıt açılamaz; sekme kapanınca akış kesilir; bozuk medya UI'yi düşürmez.

  16. S16 · Planlandı

    Olay inceleme ve kurtarma

    M03 · M15 · K3 · K4 · K5

    Sertifika hatası, süreç çökmesi ve şüpheli yönlendirme için yerel olay kaydı, sürüm bağı ve kullanıcı denetimli dışa aktarma kur. Etkilenen yetkiyi iptal et.

    Önkoşul: S07 · S08 · S10

    Kabul: Örnek olayın zamanı, karar nedeni ve çalışan sürümü içerik sızdırmadan bulunur; iptal sonrası eski oturum iş yapamaz.

  17. S17 · Planlandı

    Web uyumluluğu ve saldırı regresyonu

    M06 · M10 · M15 · K5

    İlgili web-platform-tests alt kümelerini ve URL/HTTP/HTML/CSS/görüntü fuzz korpusunu sürüm bazında çalıştır. Desteklenen davranış ve bilinen sapmaları kaydet.

    Önkoşul: S03–S06 · S09 · S11–S15

    Kabul: Seçili korpus çökmez; desteklenen web testlerinin sonuçları sürümle kayıtlıdır; güvenlik regresyonu yayını durdurur.

  18. S18 · Başlandı

    Pi 5 yayın ve performans kabulü

    M03 · M15 · K2 · K3 · K4 · K5

    Gerçek cihazda HTTPS, iptal, özel oturum, indirme, medya ve kota senaryolarını çalıştır. CPU/RAM, açılış, sayfa gecikmesi ve çökme oranını önceki sürümle karşılaştır.

    Önkoşul: S04–S17

    Kabul: Güvenlik kapıları, cihaz testleri ve önceden belirlenmiş performans eşikleri geçmeden sürüm etkinleştirilmez.

Sürüm ve kapsam notu

Kitaplar mimari ve değerlendirme yöntemini sağlar; eski protokol örnekleri doğrudan uygulanmaz. Web davranışı güncel TLS 1.3,HTTP,Fetch,HTML,NIST SSDF veweb-platform-tests ile doğrulanacak. Kitaplardaki ağ taraması ve sürekli paket izleme yöntemleri kamusal sitelere otomatik uygulanmayacak.

Kitaplardan uzun metinler veya PDF kopyaları bu sayfaya taşınmadı; bölüm referansları uygulanacak işi izlemek içindir.

6 yerel dosya · 2 yeni Rust modülü

Web uygulaması güvenliği kaynak incelemesi

Dosyaların gerçek kapsamını ayrı ayrı doğruladık. İki erken erişim kitabı eksik, ISACA adlı PDF ise yalnız kitap incelemesi. Kavramları yerel Rust motorunun bugün desteklediği özelliklerle eşleştirdik; sunucu güvenliği bölümleri tarayıcı işlevi olarak sayılmadı. Eski baskılar için güncel web standartları esas alındı.

Grokking Web Application Security · MEAP V02

123 PDF sayfası · 1–4. bölümler

Tarayıcı sandbox'ı, CSP, köken, çerez ve HTTPS temelleri.

Grokking Web Application Security · sonraki MEAP

353 PDF sayfası · 1–13. bölümler

Ağ, oturum, yetki, girdi ve üçüncü taraf kod riskleri.

Web Application Security · 2. baskı erken EPUB

Yalnız 1–2. bölümler

Güvenlik başlıkları, çerez kuralları ve tehdit modeli.

The Tangled Web · EPUB

18 bölüm ve ekler

URL/HTTP/HTML/CSS belirsizlikleri, köken, port ve içerik tanıma.

The Web Application Hacker's Handbook · PDF

722 PDF sayfası · 21 bölüm

İstemci denetimi, oturum ve kontrollü negatif test senaryoları.

ISACA adlı The Web Application Hacker's Handbook PDF

2 sayfa · kitap incelemesi

Kitabın tamamı değil; teknik uygulama dayanağı sayılmadı.

Uygulanan ve planlanan modüller

network_policy.rs

Eklendi

HTTP(S) için Fetch yasak portları her istekte ve yönlendirmede reddedilir; yerel↔ağ sessiz yönlendirmesi engellenir.

content_type.rs

Eklendi

Belgede text/html, CSS'de text/css ve UTF-8 şarttır; başka veya çelişkili charset render edilmez.

URL ve köken modeli

Sırada

WHATWG URL korpusu, opaque/local origin ve DNS sonucu ile hedefin aynı güven kararına bağlanması.

Güvenlik başlığı IPC'si

Sırada

CSP, HSTS, Referrer-Policy, CORP ve Set-Cookie için sınırlı, sürümlü yanıt başlığı sözleşmesi.

Belge ve çerez politikası

Sırada

CSP/mixed content ve RFC 6265bis çerez kuralları; köken ayrımı, özel oturum ve kota testleri.

Yalıtım ve kabul

Sırada

İçerik süreci, aygıt/dosya izinleri, WPT/fuzz ve gerçek Pi 5 kabulü.

Yeniden taramada ayrılan açık modüller

Önceki planda URL, başlık, CSP/CORS, çerez, süreç ayrımı, indirme ve aygıt izni vardı; aşağıdaki altı sorumluluk ayrıca adlandırılmamıştı. CSS için alt kaynak bütünlüğü eklendi; diğerleri ve çapraz kökenli/betik kapsamı açık.

Kodlanmadı

Alt kaynak bütünlüğü · CSS alt kümesi eklendi

subresource_integrity.rs

Aynı kökenli bağlı CSS'nin SHA-256/384/512 özeti yanıt baytlarıyla karşılaştırılıyor; uyuşmazsa uygulanmıyor.

Önkoşul: Çapraz kökenli CSS ve betik için CORS/Fetch henüz açık

Kitap: McDonald B2 · Hoffman B1 · W3C SRI

Kodlanmadı

Çerçeve ve pencere sınırı

frame_policy.rs

iframe sandbox, frame-ancestors, opener ve COOP/COEP/CORP kararları ayrı tutulacak.

Önkoşul: Çoklu belge, köken ve güvenlik başlıkları

Kitap: Zalewski B9–11/B14/B16 · Hoffman B1

Kodlanmadı

Belgeler arası mesaj

message_origin.rs

postMessage gönderici/hedef kökeni ve mesaj kanalı yetkisi doğrulanacak.

Önkoşul: JavaScript ve ayrı pencere/iframe bağlamı

Kitap: Zalewski B9/B11/B17 · Hoffman B1

Kodlanmadı

Önbellek bölümleme

cache_partition.rs

HTTP önbelleği köken ve site bağlamına ayrılacak; özel oturumda temizlenecek.

Önkoşul: Üst düzey site anahtarı ve profil deposu

Kitap: Zalewski B3/B9/B12 · McDonald B2

Kodlanmadı

Güven kimliği arayüzü

security_identity_ui.rs

Adres, HTTPS durumu ve izin istemleri aynı gezinme kimliğine bağlanacak.

Önkoşul: Kanonik URL, TLS kimliği ve telefon UI

Kitap: McDonald B1–2 · Stuttard/Pinto B5/B13

Kodlanmadı

Kodlama ve MIME kararı

encoding_sniffing.rs

UTF-8 alt kümesi genişletilmeden önce BOM/meta/HTTP önceliği ve nosniff test edilecek.

Önkoşul: HTTP başlıkları ve genel web uyumluluk kapısı

Kitap: Zalewski B13 · Stuttard/Pinto B3

Bu modüller tam web güvenliği anlamına gelmez: yerel motorda JavaScript, çerez, CSP başlık aktarımı ve HTTPS TLS hizmeti henüz yok. Dayanaklar: WHATWG Fetch, WHATWG HTML köken modeli, WHATWG MIME Sniffing ve W3C CSP 3. CSS bütünlüğü alt kümesinin dayanağı W3C SRI taslağıdır.

Aşama 31 · 2 Rust modülü · kaynak ve kod

Açık güvenlik kaynaklarından uygulanan sınırlar

Resmî rehberlerin ilgili bölümleri kaynak yükleme hattıyla eşleştirildi. WSTG bir test rehberi, NIST CSF/SSDF yönetim ve geliştirme çerçeveleri, CyBOK bilgi kaynağıdır. Tarayıcı algoritması için W3C ve WHATWG metinleri esas alınıyor. Buradaki kod bağımsız Rust motorundadır; Linux/WPE prototipine aktarılmış değildir.

Türkçe kitaplar ve CISSP Official Study Guide bu çalışma alanında tam metin olarak bulunmadı;Hınçer/Kodlab, Gürel/Yalçınkaya, Altınok ve Wiley kayıtlarından yalnız kimlik ve kapsam bilgisi doğrulandı. Kitap içerikleri okunmuş sayılmıyor.

Alt kaynak bütünlüğü · native/subresource_integrity.rs

Aynı kökenli bağlı CSS, son yanıt baytlarıyla eşleşmeyen en güçlü SHA özetinde uygulanmaz. Yanlış metaveri ayrı hata verir.

let rank = match algorithm {
    "sha256" => 1, "sha384" => 2, "sha512" => 3,
    _ => return Err(FetchError::InvalidIntegrityMetadata),
};
if rank > strongest { strongest = rank; matches = equal; }
else if rank == strongest { matches |= equal; }
if !matches { return Err(FetchError::IntegrityMismatch); }

Gezinme kotası · native/resource_budget.rs

Belge, yönlendirme ve CSS aynı 24 istek / iki metin kotası payını kullanır. Yeni gezinme yeni kota oluşturur.

let mut budget = NavigationBudget::new(limits.max_text_bytes);
// resource::load, her yönlendirme ve CSS için:
budget.charge_request()?;
let response = broker.fetch(request)?;
budget.charge_bytes(response.body.len())?;

Entegrasyon: native/mod.rs ve native/resource.rs. Eşleşen/uyuşmayan hash, bozuk metaveri, yönlendirme baytları ve toplam istek sınırı test edildi. 77 Rust testi ve AArch64 no_std derlemesi geçti. Çapraz kökenli CSS, betik, CORS ve tam SRI/WPT uyumu açık.

Aşama 32'de IPC'nin özel IP, localhost ve belirsiz sayısal adres ön filtresi eklendi; yönlendirme de ikinci ağ çağrısından önce kesiliyor. Güncel toplam 80 Rust testi geçti. Yetkili ağ işçisinin gerçek DNS yanıtını bağlanmadan önce yeniden denetlemesi hâlâ açık.

Sıradaki modüller

  1. Sürümlü güvenlik başlığı IPC'si ve CSP/CORP/Referrer-Policy kararları
  2. WHATWG URL/köken ve DNS sonucu doğrulamasının OS broker'ında birleşmesi
  3. Çerez, önbellek bölümleme ve özel oturum için profil deposu
  4. WSTG fixture'ları, SRI WPT alt kümesi ve gerçek Pi 5 kabulü

Güvenlik kitaplarının ötesinde tarayıcı ürün planı

Ağ güvenliği kitapları güven sınırlarını anlatır; modern sayfa davranışı için HTML, URL, CSS, ECMAScript, erişilebilirlik ve çapraz tarayıcı testleri de gerekir. Yerel Rust motoru şu an sınırlı HTML/CSS işler. Bu tablo tamamlanmış özellikleri değil, sıradaki kabul kapılarını gösterir.

P0

Çalışan WPE prototipi

Pi 5 üzerinde açılış, kapanış, çağrı önceliği, imleç, ses, RAM, FPS ve sıcaklığı aynı 30 dakikalık senaryoda ölç.

P0

Yerel ağ ve yetki

Güvenilir saat ve rastgelelik, DNS/TCP/TLS, sertifika ve köken denetimini yetkili EL0 broker ile doğrula.

P1

HTML, CSS ve metin

URL ve HTML ayrıştırma, flex/grid, duyarlı viewport, Türkçe şekillendirme ve büyütme için seçilmiş WPT ile ekran karşılaştırması çalıştır.

P1

Görsel ve form

Sınırlı resim çözümü, alt metin, form alanları ve klavye/IME davranışını gerçek etkileşim senaryolarıyla doğrula.

P2

JavaScript ve DOM

Test262 alt kümesi, olay döngüsü, DOM olayları ve işlem yalıtımı için ayrı geçiş kapıları kur.

P2

Depolama ve medya

Köken kotası, çerez, özel oturum, codec, A/V eşzamanı ve Bluetooth kanallarını uzun oturumda sınırla.

Dayanaklar: WHATWG HTML, WHATWG URL, CSSWG, ECMAScript, Web Platform Tests ve WCAG 2.2.

15 açık işin uygulama sırası

Gerçek WPE kareleri üç DMA-BUF tamponuyla doğrudan KMS görüntüleyicisine aktarıldı; dört 120 karelik koşulda 480/480 KMS commit doğrulandı. Aynı yerel animasyon sayfasında tam kare CPU okumasını atlamak, tarayıcı işlem ailesinin yükünü iki karşılaştırmada %7,8’den %4,6 ve %4,2’ye indirdi. Ayrı test durumunda sahte çağrı başlayınca KMS üst katmanı temizlendi ve yeni kare reddedildi. Bu geçici tanılama akışıdır. Aşama 12 üretim geçişi, fence, gerçek çağrı ve tüm telefonun performans kabulü bitene kadar açık.

  1. 12 · Kalan görüntü aktarımı

    Üç tampon ve EGL fence ile DMA-BUF üretim adayı Pi 5'te açık. A/B ve beş dakikalık ölçüm geçti; görüntü/imleç için iyi çalışıyor geri bildirimi alındı. Gerçek gelen çağrı sınaması açık.

  2. 14 · Ses güçlendirme ve kanal denetimi

    Pi 5'in A2DP tanı sesini kullanıcı sol-sağ-sol-sağ duydu; fiziksel stereo geçti. HFP görüşme sesi, medya geçişi ve bağlantı kararlılığı açık.

  3. 15 · Mouse gecikmesi ve görünür imleç

    K400 Plus USB kopmasında aynı süreçte otomatik yeniden bağlanma geçti. Kablosuz sessizleşme, sürükleme p50/p95 gecikmesi ve akıcılık kabulü açık.

  4. 17 · Rust oturumunu telefona ve ağ hizmetine bağlama

    Ayrı profil deposu, telefon UI olayları, ağ broker IPC ve ekran sahibinde gerçek sunum.

  5. 18 · Web uyumluluğu ve medya

    HTML/CSS, metin ve resim; ardından JavaScript ve medya için ayrı uyumluluk kapıları.

  6. 19 · Güvenlik sınırları ve iptal sözleşmesinin ilk sürümü

    Özel IP ve belirsiz sayısal adres ön filtresi eklendi. Kernel yetkili ağ işçisi, DNS sonucu denetimi, güvenilir saat/rastgelelik, TLS, köken ve bloklayan iptal hâlâ açık.

  7. 25 · 1080p video CPU, çözücü ve sıcaklık incelemesi

    Gerçek YouTube akışında kesin kodek, video boyutu, düşen kare, ses eşzamanı ve uzun süreli ısı ölçümü; aynı koşullarda CPU/FPS karşılaştırması.

  8. 26 · Durmuş YouTube sayfasında WPE bellek yönetimi ve işlem kapatma

    1 Kasım'da yeniden açılmış durağan sayfa 391,4 MB PSS ve %3,72 CPU; kapanışta WPE kalmadı. Aynı oynatma dizisinde eski/yeni politika A/B ve uzun oturum hâlâ açık.

  9. 27 · FreeClip 2 donanım ses seviyesi ve %100–%600 güçlendirme

    Aynı YouTube parçasında %100–%600 çubuğunu, sol/sağ dengeyi, duyulan yüksekliği ve tepe sınırlayıcı bozulmasını kulakta doğrulama.

  10. 33 · Bing TLS uyarısı için güvenli tanı

    Ayrı oturumlarda Bing araması açıldı, cihaz NTP ile eşzamanlıydı ve curl sertifikayı doğruladı. Canlı oturum başka sayfaya geçtiği için oradaki uyarının kesin nedeni henüz bilinmiyor. Kurulu tanı ikilisi ayrı geçici profilde kendinden imzalı yerel HTTPS sertifikasını reddetti, arayüz uyarısını gösterdi ve 0x1 bilinmeyen otorite bayrağını kaydetti. Sertifika denetimi gevşetilmedi. Uyarı tekrar ederse bayrak, saat ve zincir birlikte değerlendirilecek.

  11. 34 · Kaydırma görüntü akışı ve Mobil/Masaüstü görünümü

    Pi 5'te ayrı yerel sayfa ölçümünde Mobil innerWidth=480, Masaüstü innerWidth=960 ve her ikisinde fiziksel outerWidth=480 çıktı. 33 Python arayüz testi, C derlemeleri ve KMS CLI ön doğrulaması geçti. Yeni sürüm Pi 5'e yedekli kuruldu; canlı sayfada 12 saniyelik açılış izlemesinde akış zaman aşımına uğramadı. Altı kaydırma komutu 87 yeni kare üretti ve KMS web katmanı temizlenmedi. Kullanıcının fiziksel panelde tekrar kaydırıp bozulmanın bittiğini ve iki görünümün beklenen okunabilirliğini onaylaması açık.

  12. 35 · Reklam kapatma X'i için sınırlı web geri dönüşü

    Pi 5'te C derlemesi ve yerel WPE kabulü geçti: üç normal düğme tıklandı, handler'ı bozuk reklam gizlendi, reklam dışındaki hesap paneli açık kaldı. Yeni motor yedekli kuruldu; canlı tarayıcı ve DMA-BUF akışı yeniden açıldı, ilk izlemede KMS zaman aşımı olmadı. Gerçek reklam sağlayıcısı her yüklemede aynı ilanı sunmadığından kullanıcının X'inde fiziksel kabul açık.

  13. 36 · Sağ kenardaki reklam X'i ile kaydırma çubuğu çakışması

    İzole Pi 5 WPE testinde düzeltmeden önce sağ kenar X olayı eksikti; aday motorda sağ kenar X, diğer üç tıklama ve tekerlek kaydırması geçti. İlk canlı kurulum girişimi etkin görüşme nedeniyle korumada durdu. Görüşme bitince motor yedekli kuruldu; kurulu ikilide test tekrar geçti, canlı DMA-BUF akışı başladı ve KMS zaman aşımı görülmedi. Kullanıcının gördüğü reklamda fiziksel kabul açık.

  14. 37 · Klavye gizlenince arama alanının alta yerleşmesi

    Yerel görsel çıktısı incelendi ve 35 arayüz testi geçti. Pi 5'e yedekli kuruldu; kurulu modülde doğrudan yerleşim testi ve gerçek klavye gizleme düğmesinden geçen olay testi geçti. UI/KMS yeniden başladı, 768000 baytlık kare üretildi. Fiziksel panelde kullanıcı kabulü açık.

  15. 38 · Ses ve üç nokta menülerinin tıklama alanlarını koruma

    Hata önce testte yeniden üretildi: arama ekranındaki ses simgesinin hedefi None idi. Düzeltmeden sonra ses paneli, Çalışan Programlar panelinden üç nokta menüsüne ve menüden ses paneline geçişler çalıştı. 36 yerel test ve Pi 5 kurulu modülde üç olay testi geçti; UI/KMS yeniden açıldı ve EGL akışı kare üretti. Fiziksel panelde kullanıcı kabulü açık.

01 · AselBrowser / işletim sistemi

Hedef ve ilk Rust motoru

Tamamlandı

Yapılan işlem

A44 aşamasında bellek güvenli, sınırlandırılmış HTML/CSS ayrıştırma, style cascade, blok yerleşim, yazılımsal raster ve çift tamponlu sunum temeli kuruldu. Ürün hedefi modern mobil tarayıcı olarak tutuldu; mevcut kodun kapsamı açıkça FoundationEngine diye işaretlendi.

Sonuç ve sınır

Yerel sayfa işlenip framebuffer üretilebiliyor. Tam web standartları, JavaScript ve genel internet gezintisi bu temelin mevcut yeteneği olarak sunulmuyor.

Kaynak: userspace/asel_browser/src/lib.rs

Kod / komut kesiti

#![forbid(unsafe_code)]
pub const CURRENT_CLAIM: BrowserClaim = BrowserClaim::FoundationEngine;

pub enum BrowserClaim {
    FoundationEngine,
    StandardsCompletenessCandidate,
    EdgeFirefoxChromeClassTarget,
}

02 · AselBrowser / işletim sistemi

EL0 ve yetki sınırı

Tamamlandı

Yapılan işlem

A45 aşamasında render süreci için display, input, clock ve ağ broker yetkileri tanımlandı. Yerel sayfa yükleme ve present çıktısı süreç sözleşmesine bağlandı; ham MMIO, doğrudan dosya ve soket API'si verilmedi.

Sonuç ve sınır

HTTPS, ağ broker yetkisi olmadan kapalı davranıyor. Bu, gerçek bir ağ broker uygulamasının tamamlandığı anlamına gelmiyor.

Kaynak: userspace/asel_browser/src/el0.rs

Kod / komut kesiti

pub struct RenderProcess {
    engine: BrowserEngine,
    caps: CapabilitySet,
    dma_base: u64,
    panel: PanelTiming,
}

pub fn present(&self, format: PixelFormat) -> Result<PresentFrame, PresentError> {
    plan_present(self.caps, self.engine.front_buffer(), self.dma_base, format)
}

03 · AselBrowser / işletim sistemi

DSI scanout sözleşmesi

Tamamlandı

Yapılan işlem

A46 aşamasında tarayıcının present descriptor'ı kernelin gerçek RPi5 framebuffer doğrulayıcısına uyduruldu. Adres hizası, stride, uzunluk, format ve display yetkisi sınandı.

Sonuç ve sınır

Render süreci ham ekran kayıtlarına yazmadan doğrulanmış bir frame descriptor üretiyor; çapraz crate sözleşme testi mevcut.

Kaynak: userspace/asel_browser/src/present.rs · simulation/tests/asel_browser_scanout_contract.rs

Kod / komut kesiti

let frame = proc.present(PixelFormat::Xrgb8888).expect("present");
let d = frame.descriptor;
let kernel = FramebufferDescriptor::new(
    d.address, d.length, d.width, d.height, d.stride,
    ScanoutFormat::Xrgb8888,
).expect("kernel scanout path accepts the browser descriptor");

04 · AselBrowser / işletim sistemi

Telefon ana ekranına bağlama

Tamamlandı

Yapılan işlem

A47 aşamasında motor no_std telefon imajına ve ana ekrandaki Tarayıcı ikonuna bağlandı. Yerel sayfa ayrıştırma, yerleşim ve DSI yüzeyine çizim her karede çalıştırıldı.

Sonuç ve sınır

Ana ekrandan tarayıcı görünümü açılıyor. Bu işletim sistemi hattında HTTPS, broker yokken reddediliyor.

Kaynak: kernel/src/ui/ios_home.rs · simulation/tests/rpi5_ios_home_browser.rs

Kod / komut kesiti

cargo test -p asel_browser
cargo check -p asel_browser --no-default-features
cargo test -p aselsan_microkernel_simulation --test asel_browser_scanout_contract
make image-rpi5-ios-home

05 · AselBrowser / işletim sistemi

Telefon tarayıcı arayüzü

Tamamlandı

Yapılan işlem

Sekmeler, adres çubuğu, yeni sekme sayfası, geçmiş ve ayar sayfalarının durumu kernel UI modüllerine ayrıldı. Parmağın sürükleme ve bırakma hareketi AselMotor eksenine bağlandı.

Sonuç ve sınır

Arayüzün durumu ve çizimi ayrı modüllerde; bu UI kapsamı, WPE'nin internette sayfa çalıştıran ayrı Linux hattıyla karıştırılmıyor.

Kaynak: kernel/src/ui/browser.rs · kernel/src/ui/browser_ntp.rs · kernel/src/ui/aselmotor.rs

Kod / komut kesiti

HomeView::Browser { .. } => frame.browser != previous.browser,
HomeView::Browser { .. } => !frame.browser.same_chrome(&previous.browser),

06 · WPE / Raspberry Pi 5

Gerçek web sayfası için WPE köprüsü

Tamamlandı

Yapılan işlem

Pi üzerindeki WPE WebKit 2.48.3 ve WPEBackend-fdo 1.16.0 ile C motor kuruldu. Python telefon kabuğu Unix datagram komutlarıyla gezinme, geri/ileri, tıklama, kaydırma, yazma ve yeniden boyutlandırmayı motora taşıdı.

Sonuç ve sınır

HTTPS sayfaları ayrı WPE sürecinde açıldı. WPE, AselBrowser Rust çekirdeğinin yerine geçmiş değil; çalışan Linux prototipi hattıdır.

Kaynak: scripts/rpi5-h03-browser-engine.c · scripts/h03_browser.py

Kod / komut kesiti

if (!wpe_loader_init("libWPEBackend-fdo-1.0.so.1")) return 1;
exportable = use_egl
    ? wpe_view_backend_exportable_fdo_egl_create(&egl_client, NULL, width, height)
    : wpe_view_backend_exportable_fdo_create(&client, NULL, width, height);

07 · WPE / Raspberry Pi 5

Gezinme ve kalıcı kayıtlar

Tamamlandı

Yapılan işlem

Adres ile arama sorgusu ayrıldı; HTTP/HTTPS dışındaki şemalar reddedildi. SQLite'a geçmiş, yer işaretleri, arama sorguları ve tercihler kaydedildi; son adres yeniden açılabilir hale geldi.

Sonuç ve sınır

Tarayıcı yeniden açıldığında kayıtlar aynı kullanıcı profilinde duruyor.

Kaynak: scripts/h03_browser.py

Kod / komut kesiti

CREATE TABLE IF NOT EXISTS visits(url TEXT PRIMARY KEY,title TEXT NOT NULL,visited INTEGER NOT NULL,count INTEGER NOT NULL);
CREATE TABLE IF NOT EXISTS bookmarks(url TEXT PRIMARY KEY,title TEXT NOT NULL,created INTEGER NOT NULL);
CREATE TABLE IF NOT EXISTS searches(query TEXT PRIMARY KEY,used INTEGER NOT NULL);
CREATE TABLE IF NOT EXISTS preferences(key TEXT PRIMARY KEY,value TEXT NOT NULL);

08 · WPE / Raspberry Pi 5

CPU ve RAM görünürlüğü

Tamamlandı

Yapılan işlem

Tarayıcı açıkken sol üstte, saatin sağında WPE süreç ağacının anlık CPU ve PSS belleği gösterildi. Etikete basınca tüm çalışan süreçler CPU veya RAM'e göre sıralanan pencerede listeleniyor.

Sonuç ve sınır

Örnekleme yaklaşık saniyede bir iş parçacığında yapılıyor; metrik toplama ana çizim döngüsünü kilitlemiyor.

Kaynak: scripts/h03_browser.py

Kod / komut kesiti

label(c.d,(104,10),self.usage.label,13,INK,True)
c.hit((101,0,320,38),('browser_usage',))

def sorted_usage(self):
    return sorted(self.system_usage.rows, key=lambda row:(row[self.usage_sort],row['ram']), reverse=True)

09 · WPE / Raspberry Pi 5

SHM ve LLVMpipe sorununu ölçme

Tamamlandı

Yapılan işlem

Eski SHM export yolunda aynı yerel animasyon sayfası iki kez ölçüldü. Web sürecindeki llvmpipe iş parçacıkları, CPU ve kare hızı ayrı kaydedildi; yalnız eglinfo çıktısına dayanılmadı.

Sonuç ve sınır

SHM koşuları %196,4 / %195,1 tek çekirdek eşdeğeri CPU ve 15,6 FPS verdi. Bu değerler yalnız aynı test sayfasının ölçümüdür.

Kaynak: scripts/benchmark_h03_browser_engine.py · docs/PHONE-H03-BROWSER-GPU-PLAN.md

Kod / komut kesiti

python3 scripts/benchmark_h03_browser_engine.py --engine /home/oo/.local/share/aselsanos-h03/h03-browser-engine --seconds 8

10 · WPE / Raspberry Pi 5

V3D üzerinde EGL export

Tamamlandı

Yapılan işlem

Pi 5'in /dev/dri/renderD128 düğümünde GBM ve EGL bağlamı oluşturuldu. WPE FDO EGL export kullanıldı; renderer yazılımsal çıkarsa başlatma reddedildi. Motor SHM geri dönüşünü korudu.

Sonuç ve sınır

Aynı yerel iş yükünde EGL iki koşuda %25,5 / %25,0 CPU ve 30,0 / 30,1 FPS üretti; motor CPU'sunda yaklaşık %87 düşüş. GPU'dan glReadPixels ile okuma hâlâ var.

Kaynak: scripts/rpi5-h03-browser-engine.c · scripts/rpi5-h03-activate-browser-egl.py

Kod / komut kesiti

drm_fd=open(render_node,O_RDWR|O_CLOEXEC);
gbm_device=gbm_create_device(drm_fd);
if (!gl_renderer || strstr(gl_renderer,"llvmpipe") || strstr(gl_renderer,"softpipe")) {
    fprintf(stderr,"H03_EGL_SOFTWARE_RENDERER=%s\n",gl_renderer?gl_renderer:"unknown");
    return 0;
}

11 · WPE / Raspberry Pi 5

Üç yuvalı Rust kare aktarımı

Tamamlandı

Yapılan işlem

EGL karesi dosya ve Python tam ekran çizimi yerine üç yuvalı paylaşımlı belleğe yazıldı. Rust okuyucu atomik sıra ve okuyucu sayacıyla yuvayı koruyup portre KMS tamponuna kopyaladı. Telefon UI'si ve çağrı katmanı tek KMS sahibi üzerinde kaldı.

Sonuç ve sınır

242 karelik, sekiz saniyelik yerel testte eski toplam %44,4 CPU; Rust aktarımı %23,9 ve tekrarda %24,0 CPU. Yaklaşık %46 düşüş; %50 iddiası yok.

Kaynak: scripts/rpi5-h03-framepipe.rs · scripts/rpi5-h03-kms-viewer.c

Kod / komut kesiti

let generation = published.load(Ordering::Acquire);
let index = ((generation - 1) % 3) as usize;
(*readers).fetch_add(1, Ordering::AcqRel);
if published.load(Ordering::Acquire) != generation {
    (*readers).fetch_sub(1, Ordering::Release);
    continue;
}

12 · WPE / Raspberry Pi 5

Kalan görüntü aktarımı

Açık

Yapılan işlem

Gerçek WPE EGL kareleri V3D üzerinde 688×480 AR24 DMA-BUF'a döndürülüyor. Üç tampon, release yanıtı ve EGL native fence fd'si KMS IN_FENCE_FD ile bağlandı. KMS overlay 107 web içeriğini, cursor plane 657 imleci sunuyor. Durağan sayfa yaşam sinyali, tarayıcı çıkışında katman temizliği ve başarısız aktarımda eski tam kare yola dönüş eklendi. Üretim yolu geri alınabilir bayrakla Pi 5'te açıldı.

Sonuç ve sınır

Fence'li 30 kare, iki köşe imleci ve 3 saniye durağan sayfa testleri geçti. Kayıtlı aynı sayfada 20'şer saniyelik A/B ölçümünde tarayıcı CPU ortancası dört çekirdek üzerinden SHM %4,05, DMA-BUF %2,46; motor %1,73→%0,49; yüzey 30,49→29,59 FPS. Beş dakikalık pasif oturumda 300 örnek, 30,51 FPS, %2,46 CPU ortancası ve hız kısıtlaması olmadan en çok 70,5 °C ölçüldü. Kullanıcı görüntü/imleç için iyi çalışıyor geri bildirimi verdi; tarayıcı çıkışında WPE süreçleri durdu ve KMS web katmanı temizlendi. Ekran sahibinden standart yeniden açılışta DMA-BUF akışı tekrar geçti. Gerçek gelen çağrı kabulü açık; aşama açık.

Kaynak: docs/ASELBROWSER-OPEN-WORK-PLAN.md · docs/PHONE-H03-BROWSER-GPU-PLAN.md · scripts/rpi5-h03-kms-stream.c · scripts/rpi5-h03-browser-engine.c · scripts/rpi5-h03-kms-viewer.c · scripts/activate-h03-browser-dmabuf.py · scripts/test-h03-browser-live-dmabuf.py · evidence/browser/pi5-dmabuf-ab-shm-20261101.json · evidence/browser/pi5-dmabuf-ab-dmabuf-20261101.json · evidence/browser/pi5-dmabuf-soak-20261101.json

Kod / komut kesiti

# Pi 5'te geri alınabilir üretim adayı
H03_BROWSER_DMABUF=1
H03_KMS_ATOMIC_STREAM=1
# EGL native fence fd → KMS IN_FENCE_FD; web overlay 107, imleç plane 657.
# Bayrak: ~/.local/share/aselsanos-h03/browser-dmabuf.enabled
# Kabul: aynı sayfada CPU/FPS A/B ve fiziksel görüntü/arama sınaması.

13 · WPE / Raspberry Pi 5

Bluetooth medya sesi ve ses denetimi

Tamamlandı

Yapılan işlem

YouTube sesinin kaybolması incelendi: WebProcess sandbox içinden özel ALSA dosyası ve sistem D-Bus soketi görünmüyordu. ALSA dosyası salt okunur bağlandı; yalnız org.bluealsa erişimi olan xdg-dbus-proxy soketi açıldı. WPE sandbox etkin tutuldu. Tarayıcı ses düğmesi ve kalıcı seviye ayarı eklendi.

Sonuç ve sınır

Sandbox içindeki testte medya sesi ve A2DP veri akışı doğrulandı. Kullanıcı gerçek YouTube videosunun sesini FreeClip 2 üzerinden duyduğunu onayladı. Daha sonra bildirilen sol kanal sorunu ve bağlantı kesilmesi sonraki aşamada açık olarak izleniyor.

Kaynak: scripts/rpi5-h03-browser-engine.c · scripts/h03_browser.py · scripts/rpi5-h03-install-browser.sh

Kod / komut kesiti

// Yalnız gerekli ses erişimleri:
webkit_web_context_add_path_to_sandbox(context,
    g_getenv("ALSA_CONFIG_PATH"), TRUE);
webkit_web_context_add_path_to_sandbox(context, audio_proxy_path, FALSE);
// xdg-dbus-proxy: --filter --talk=org.bluealsa

14 · WPE / Raspberry Pi 5

Ses güçlendirme ve kanal denetimi

Açık

Yapılan işlem

Tarayıcıya özel h03audiosink GStreamer eklentisi F32 stereo, %100–%600 kazanç, Dengeli/Konuşma/Bas EQ, mono birleştirme ve stereo bağlı tepe sınırı sağlıyor. Ayarlar SQLite'da kalıcı. Ayrı sol ve sağ kanal sayısal testi ile düşük seviyeli stereo A2DP tanı sesi eklendi.

Sonuç ve sınır

Pi 5'te DSP kazanç, mono, sınırlayıcı ve sol/sağ kanal izolasyonu sayısal testleri geçti. FreeClip 2 yeniden bağlandığında 48 kHz sol-sağ-sol-sağ tanı dosyası ve tarayıcının h03audiosink düşük seviyeli tonu gerçek A2DP çıkışından hatasız çalındı; DSP seviye dosyası 80 stereo tampon kaydetti. Kullanıcı tanı sesini kulakta sol-sağ-sol-sağ sırasıyla duyduğunu doğruladı. Fiziksel stereo kabulü geçti. Kulaklık sonra uzak uçtan bağlantıyı kapattı; gerçek görüşmede çift yönlü HFP ses ve medya/görüşme geçişi açık. Aşama açık.

Kaynak: scripts/rpi5-h03-browser-audio.c · scripts/h03_audio_dsp.h · scripts/h03_browser.py · scripts/test_h03_audio_dsp.c · scripts/test-h03-freeclip-stereo.py

Kod / komut kesiti

// EQ → ek kazanç → stereo bağlı tepe sınırı → ALSA
self.engine.audio_settings(self.boost, self.audio_preset, self.mono)
// Kazanç geçişi: 20 ms; tepe sınırı: 0,95; bırakış: 80 ms.
// Bu sınır dijital örnek içindir; fiziksel ses basıncı ölçümü değildir.

15 · WPE / Raspberry Pi 5

Mouse gecikmesi ve görünür imleç

Açık

Yapılan işlem

Mouse olayları en çok 256 olaylık sınırlı gruplarla boşaltılıyor. İmleç 24×36 piksele büyütüldü. UI kontrolü tek, bloklamayan datagram soketini kullanıyor; başarısız POINTER_UP yeniden deneniyor. K400 Plus evdev bağlantısı kesilirse görüntüleyici basılı tuşu bırakıp sabit /dev/input/by-id yolunu 500 ms aralıkla yeniden açıyor; açılış betiği alıcı geç görünürse bekliyor.

Sonuç ve sınır

31 Ekim'deki donmada KMS saati ilerlerken 12 saniye sıfır ham giriş olayı ölçüldü. USB alıcı yeniden tanıtılınca olaylar geri geldi. Yeni görüntüleyici Pi 5'e yedekle kuruldu; kontrollü USB kopma/yeniden bağlanma sınamasında aynı PID ile DISCONNECTED ve RECONNECTED kaydetti. Kablosuz bağlantının kesin kök nedeni, girişten ekrana gecikme ve kullanıcı akıcılık kabulü hâlâ açık.

Kaynak: scripts/rpi5-h03-kms-viewer.c · scripts/rpi5-h03-autostart.sh · scripts/h03_browser.py · evidence/browser/pi5-k400-input-recovery-20261031.txt

Kod / komut kesiti

for (int batch = 0; batch < 256; batch++) {
    // Kuyruktaki evdev olaylarını, EAGAIN gelene kadar işle.
}
// UI kontrolüne tek AF_UNIX SOCK_DGRAM fd ile sendto;
// kalıcı hatada fd kapatılıp sonraki gönderimde yeniden açılır.

16 · AselBrowser / işletim sistemi

WPE bağımsız Rust tarayıcı çekirdeği

Tamamlandı

Yapılan işlem

Var olan Rust HTML/CSS temelinin üzerine ayrı adres çözümleme, sınırlı HTTP/1 yanıt işleme, yetkili kaynak broker'ı, aynı kökenli CSS yükleme, bağlantıya tıklama, sekmeler, geçmiş, kaydırma ve Türkçe glif boyama eklendi. Çekirdek core + alloc ile aarch64-unknown-none hedefinde derleniyor. Linux için yazılan std adaptörü Pi 5 üzerinde yerel HTTP test sayfası yükledi; 12 gezinme karesi oluşturdu. XRGB8888 için ekran sahibinin verdiği tampona doğrudan çizim API'si eklendi.

Sonuç ve sınır

Pi 5'te ilk tek koşu değişkendi. Sonraki beş eşlenik 12 kare koşusunda render ortancası RGB565 için 350,5 µs, doğrudan XRGB8888 için 458 µs oldu. RGB565→XRGB8888 genişletmesi ayrıca 430 µs ölçüldü; doğrudan yol bu küçük fixture için uçtan uca CPU adayıdır. Gerçek KMS sunumu, WPE ile genel CPU karşılaştırması ve telefon UI bağlantısı henüz yok.

Kaynak: userspace/asel_browser/src/native/ · userspace/asel_browser/README-NATIVE.md · evidence/browser/pi5-native-paint-ab-20261031.json · evidence/browser/pi5-native-rgb565-expand-20261031.txt

Kod / komut kesiti

cargo test -p asel_browser
cargo check -p asel_browser --no-default-features --lib --target aarch64-unknown-none
python3 scripts/test-native-browser-host.py --direct-xrgb

17 · AselBrowser / işletim sistemi

Rust oturumunu telefona ve ağ hizmetine bağlama

Açık

Yapılan işlem

NativeBrowser sekme/geçmiş durumunu telefon arayüzünde tek kaynak yap; dokunma ve klavye olaylarını bağla. Ağ/DNS/TLS broker'ını yetkili mesajlarla, zaman aşımı ve sınırlandırılmış yanıtlarla uygula. Ödünç alınan görüntü tamponunu ekran sahibinin eşitleme ve sunum akışına bağla.

Sonuç ve sınır

Pi 5 Linux'ta bağımsız Rust derlemesi ve ayrı süreç oturum geri yüklemesi geçti. Beş eşlenik 12 kare denemesinde RGB565 render 350,5 µs, doğrudan XRGB8888 458 µs ortanca; RGB565→32 bit genişletme ayrıca 430 µs ölçüldü. KMS sunumu henüz ölçülmedi. Mevcut telefon kayıt hizmeti 256 bayt/nesne ve toplam 8 KiB; PIM 7,5 KiB ayırıyor. 576 KiB sınırındaki oturum için ayrı yetkili profil deposu gerekiyor. HTTPS, gerçek sistem ağı ve fiziksel ekran kabulü açık.

Kaynak: userspace/asel_browser/src/native/ · kernel/src/ui/browser.rs · userspace/asel_browser/README-NATIVE.md

Kod / komut kesiti

NativeBrowser::render_to(&mut compositor_surface)
// Gerçek ağ/TLS broker'ı ve ekran bağlantısı sonraki kabul kapısı.

18 · AselBrowser / işletim sistemi

Web uyumluluğu ve medya

Açık

Yapılan işlem

Önce gerçek sitelerde HTML/CSS uyumluluğunu, metin şekillendirmeyi, resim yüklemeyi ve sayfa yaşam döngüsünü geliştir. Sonra JavaScript, güvenli site yalıtımı, medya kod çözümü ve ses çıkışını ayrı test ve kabul kapılarıyla ekle.

Sonuç ve sınır

Yerel Rust motoru henüz YouTube veya modern JavaScript sitelerini çalıştıran genel tarayıcı değildir; Edge/Firefox/Chrome düzeyi ürün hedefi olarak kalıyor.

Kaynak: userspace/asel_browser/README-NATIVE.md · userspace/asel_browser/src/lib.rs

Kod / komut kesiti

pub const CURRENT_CLAIM: BrowserClaim = BrowserClaim::FoundationEngine;

19 · AselBrowser / işletim sistemi

Güvenlik sınırları ve iptal sözleşmesinin ilk sürümü

Açık

Yapılan işlem

Beş ağ güvenliği kitabının tarayıcıya uygun bölümleriyle S01 tehdit sınırları belgelendi. Sabit sekme/gezinme kimliği her kaynak isteğine ekleniyor; iptal yönlendirme ve CSS dahil her fetch öncesi/sonrası denetleniyor. HTTP/1, HTML, CSS ve birleşik çizim hedefleri kapsama geri bildirimli fuzz ile çalıştırıldı.

Sonuç ve sınır

Yerel tarayıcı testleri ve no_std AArch64 kontrolü geçti. Kayıtlı HTTP koşuları toplam 2.505.891 girdi işledi; 20.000 baytlık girdilerle 16 KiB başlık sınırı yoklandı. HTML, CSS ve çizim koşuları toplam 1.859.954 girdi işledi. Bu kısa koşularda çökme görülmedi. Kimlikler yetki belgesi değildir; üretim kernel yetkisi, DNS/TCP/TLS, uzun fuzz ve bloklayan fetch içinde iptal açık.

Kaynak: docs/ASELBROWSER-NATIVE-THREAT-MODEL.md · userspace/asel_browser/src/native/resource.rs · userspace/asel_browser/fuzz/fuzz_targets/ · evidence/browser/http-framing-fuzz-large-20261031.txt · evidence/browser/html-subset-fuzz-20261031.txt · evidence/browser/css-subset-fuzz-20261031.txt · evidence/browser/render-inline-fuzz-20261031.txt

Kod / komut kesiti

pub struct RequestScope { pub tab_id: u64, pub navigation_id: u64 }
if broker.is_cancelled(scope) { return Err(FetchError::Cancelled); }
// Broker yetkisi kernel endpoint/capability üzerinden doğrulanmalı.

20 · WPE / Raspberry Pi 5

Tarayıcı çıkışında WPE süreç ağacının temizlenmesi

Tamamlandı

Yapılan işlem

Ana ekrana dönüşün yalnız HIDE göndermesi nedeniyle WPEWebProcess arka planda kalıyordu. Çıkış artık QUIT ile motoru durduruyor; kalan yardımcı süreçleri yalnız tarayıcının ayrı süreç grubunda temizliyor. Yeniden açılış önceki adresi geri yüklüyor; boş başlangıç sayfası motoru gereksiz başlatmıyor. UI hizmeti kapanırken de tarayıcıyı durduruyor.

Sonuç ve sınır

Pi 5'te OPEN ile WPEWebProcess başladı, CLOSE sonrası WebProcess ve motor kalmadı. İkinci OPEN önceki adresi geri yükledi; ikinci CLOSE da temizdi. 26 Python tarayıcı testi geçti. Ayrı yerel Rust hattında yavaş HTTP yanıtının iptal testi eklendi; 24 yerel test ve aarch64-unknown-none kontrolü geçti. Gerçek OS ağ IPC'si ve TLS hâlâ açık.

Kaynak: scripts/h03_browser.py · scripts/rpi5-h03-ui-service.py · scripts/test_h03_browser.py · userspace/asel_browser/src/native/host.rs · userspace/asel_browser/tests/native_browser.rs

Kod / komut kesiti

# Çıkış: HIDE → QUIT → yalnız ayrılmış motor süreç grubunu temizle
# Geliştirme adaptörü: okuma beklerken iptal kontrolü; gerçek OS IPC hâlâ açık.

21 · AselBrowser / işletim sistemi

Gerçek EL0 tarayıcı IPC yetki denemesi

Tamamlandı

Yapılan işlem

Dört kayıtlı, sınırlı browser IPC protokolü için bağımsız EL0 probe yazıldı. QEMU virt çekirdeği iki görev başlattı: yalnız birine canlı CNode ENDPOINT_SEND yetkisi verdi. İstemci tarafındaki ScalarTransport URL parçalama, son tarih ve iptal için eklendi; ağ arka ucu yokken açık hata verir. QEMU ham UART kaydı görev kimliği, sıra ve ret sonuçlarını denetleyen araçla saklandı.

Sonuç ve sınır

Yetkili görev URL'yi 16 baytlık parçalarda iletip BACKEND_UNAVAILABLE aldı. Aynı endpoint numarasını bilen yetkisiz görev INVALID_CAPABILITY aldı. İkisi de çıktı ve toplandı. Bu sonuç yalnız gerçek EL0/CNode hazırlama sınırını doğrular; gerçek DNS/TCP/TLS, HTTP gövdesi, telefon UI ve Pi 5 bare-metal açılışı henüz yok.

Kaynak: abi/src/browser_ipc.rs · kernel/src/phone/browser_gateway.rs · userspace/browser_ipc_probe/src/main.rs · evidence/qemu/browser-ipc-20261030/receipt.json

Kod / komut kesiti

cargo build -p aselsan_kernel --target aarch64-unknown-none --no-default-features --features board-qemu,browser-ipc-smoke
python3 scripts/browser-ipc-qemu-check.py evidence/qemu/browser-ipc-20261030/uart.log --json evidence/qemu/browser-ipc-20261030/receipt.json

22 · AselBrowser / işletim sistemi

EL0 syscall adaptörü ve ortak kernel saati

Tamamlandı

Yapılan işlem

Tarayıcının güvenli Rust çekirdeğini unsafe koddan ayırarak ayrı no_std AArch64 EL0 syscall paketi eklendi. IPC_CALL_TIMEOUT adaptörü canlı endpoint grant'iyle çağrı yapıyor. Yeni CLOCK etiketi çekirdeğin 100 Hz monoton tick sayısını döndürüyor; istemci son tarihleri aynı zaman alanında hesaplıyor ve saat hatasında isteği başlatmıyor. QEMU test görevi saat sorgusunda doğrudan bu yeni paketi kullanıyor.

Sonuç ve sınır

AArch64 derlemeleri, tarayıcı ve gateway testleri geçti. QEMU UART kaydında yetkili EL0 görev yeni adaptörle CLOCK yanıtını aldı; yetkisiz görev INVALID_CAPABILITY aldı. Kanıt yalnız syscall, yetki ve zaman sınırını kapsıyor. HTTP yanıt gövdesi ABI'si, ağ işçisi, DNS/TCP/TLS, telefon UI bağlantısı ve fiziksel Pi 5 kabulü açık.

Kaynak: abi/src/browser_ipc.rs · userspace/asel_browser_el0/src/lib.rs · kernel/src/phone/browser_gateway.rs · evidence/qemu/browser-ipc-clock-20261030/receipt.json

Kod / komut kesiti

cargo check --manifest-path userspace/asel_browser_el0/Cargo.toml --target aarch64-unknown-none
python3 scripts/browser-ipc-qemu-check.py evidence/qemu/browser-ipc-clock-20261030/uart.log --require-clock --json evidence/qemu/browser-ipc-clock-20261030/receipt.json

23 · AselBrowser / işletim sistemi

Sınırlı tarayıcı yanıtı IPC sözleşmesi

Tamamlandı

Yapılan işlem

IPC v2'ye RESPONSE_HEAD, RESPONSE_READ ve RESPONSE_FINISH eklendi. Kernel gateway tamamlanmış URL'yi yalnız güvenilir işçiye kopyalayabiliyor; işçi durum, Content-Type, Location ve istek kotasıyla sınırlı gövdeyi yayımlayabiliyor. EL0 istemci token sahibini, son tarihi ve 16 baytlık tüm parçaları denetleyip sonucu ResourceBroker'a döndürüyor.

Sonuç ve sınır

Gerçek kernel gateway ile Rust istemcinin uçtan uca host testi, kota/sahiplik/süre dolumu testleri ve AArch64 derlemesi geçti. Reddedilen BEGIN/COMMIT sonrası token iptali de test edildi. QEMU'da yeni ABI ile yetkili ve yetkisiz EL0 görev sınırı yeniden doğrulandı. Ağ işçisi kurulmadığından canlı backend kapalıdır; DNS/TCP/TLS ve yüksek verimli sayfa devri tamamlanmadı.

Kaynak: abi/src/browser_ipc.rs · kernel/src/phone/browser_gateway.rs · userspace/asel_browser/src/native/ipc_scalar.rs · simulation/tests/browser_ipc_roundtrip.rs · evidence/qemu/browser-response-20261031/receipt.json

Kod / komut kesiti

cargo test -p aselsan_microkernel_simulation --test browser_ipc_roundtrip
sh scripts/test-browser-gateway-host.sh
python3 scripts/browser-ipc-qemu-check.py evidence/qemu/browser-response-20261031/uart.log --require-clock

24 · AselBrowser / işletim sistemi

Rust tarayıcı oturum kaydı

Tamamlandı

Yapılan işlem

NativeBrowser sekme, geçmiş, kaydırma ve sonraki gezinme kimliğini 576 KiB ile sınırlı, sürümlü kayda aktarıyor. İçeri alma bütün kaydı doğrulamadan oturumu değiştirmiyor; seçili sayfa resume_active ile yeniden yükleniyor. Linux geliştirme adaptörü dosyayı 0600 izinle atomik rename ve fsync ile saklıyor. Yerel CLI --session seçeneğiyle açılışta yükleyip başarılı komutlardan sonra kaydediyor.

Sonuç ve sınır

İki sekmeli geri yükleme, kaydırma, bozuk/kesik kayıt reddi ve atomik dosya değişimi testleri geçti. Pi 5 Linux'ta iki ayrı CLI sürecinde sekmeler, geri geçmişi, boş sekme ve sonradan seçilen sekmenin yeniden yüklenmesi doğrulandı; göreli dosya yolu da çalışıyor. no_std AArch64 derlemesi geçti. Kayıt sayfa içeriği veya kimlik bilgisi taşımaz. Telefon OS güvenilir depo IPC'si ve fiziksel yeniden başlatma kabulü açık.

Kaynak: userspace/asel_browser/src/native/session.rs · userspace/asel_browser/src/native/host_session.rs · userspace/asel_browser/src/bin/asel-browser-native.rs · scripts/test-native-browser-session.py

Kod / komut kesiti

cargo test -p asel_browser
python3 scripts/test-native-browser-session.py
cargo check -p asel_browser --no-default-features --lib --target aarch64-unknown-none

25 · WPE / Raspberry Pi 5

1080p video CPU, çözücü ve sıcaklık incelemesi

Açık

Yapılan işlem

Kullanıcının 1080p olarak bildirdiği açık YouTube videosunda 30,4 saniyelik süreç CPU/PSS, web yüzeyi FPS ve sıcaklık ölçümü alındı. WebProcess VPx işçileri ve GL/kuyruk yükü ayrı örneklendi. Sıcaklık 85,1 °C ve etkin soft sınırdayken A/B durduruldu. Video durup cihaz soğuyunca aynı 180 karelik VP9 test verisi libvpx ve libav ile I420 çıkışında karşılaştırıldı. Motora isteğe bağlı HTMLVideoElement kare telemetrisi, Python başlatıcısına deneysel VP9 çözücü seçimi eklendi; çalışan oturum kesilmeden yeni sürüm sonraki açılışa kuruldu.

Sonuç ve sınır

Canlı oturumda tarayıcı dört çekirdeğin %33,95'ini, WebProcess %32,16'sını, EGL motoru %1,96'sını kullandı; yüzey 30,02 FPS ve PSS 626,3 MB idi. 0xe0006 güncel frekans kısıtlaması ve throttling görüldü. Aynı sentetik VP9 dosyasında libvpx iki kez 2,149 CPU saniyesi, libav 2,266/2,258 saniye kullandı; varsayılan libvpx korundu. Yerel 1920×1080 videoda tanılama çalıştı ve 30 tarayıcı testi geçti. Gerçek YouTube kodeği, düşen kareleri ve yeni sürümün canlı performans kabulü açık; toplam CPU düşüşü iddia edilmiyor.

Kaynak: scripts/measure-h03-browser-video.py · scripts/benchmark-h03-video-decoders.py · scripts/rpi5-h03-browser-engine.c · scripts/h03_browser.py · evidence/browser/pi5-youtube-1080p-20261031.json · evidence/browser/pi5-video-decoder-preflight-20261031.txt

Kod / komut kesiti

python3 scripts/measure-h03-browser-video.py --seconds 30
H03_BROWSER_VIDEO_METRICS=1  # yalnız deneyde video.json üretir
H03_BROWSER_VP9_DECODER=libav  # deneysel A/B; varsayılan libvpx korunur
python3 scripts/benchmark-h03-video-decoders.py --vp9 vp9-1080p30-6s.webm --decoder vp9dec --repeats 1 --max-temp 78

26 · WPE / Raspberry Pi 5

Durmuş YouTube sayfasında WPE bellek yönetimi ve işlem kapatma

Açık

Yapılan işlem

Video dururken WPEWebProcess için RSS, PSS, anonim bellek ve 10 saniyelik CPU ölçüldü. Varsayılan 3 GiB üst sınır yerine WebKit bellek baskısı 1.200 MB, konservatif eşik %50, katı eşik %85 ve öldürme eşiği kapalı olacak biçimde yeni WebContext'e bağlandı. Çalışan programlar listesindeki çarpı yalnız tarayıcının doğrulanmış süreç grubunda etkin; seçildiğinde motor ve tüm WPE yardımcı süreçleri birlikte kapanıyor. Pi 5'e yedekli kurulum ve canlı UI yeniden başlatması yapıldı.

Sonuç ve sınır

Durmuş sayfada WebProcess PSS 819,5 MiB, tarayıcı ailesi PSS 944,3 MiB ve CPU dört çekirdeğin %3,83'üydü. Aynı adres yeni motorla yeniden yüklendiğinde ilk WebProcess PSS 292,9 ve 280,5 MiB, aile PSS 402,3 MiB oldu. Yeniden yükleme ve bellek ayarının etkileri ayrı ölçülmedi; uzun oturum ve video tekrar oynatma kabulü açık. Canlı işlem listesinde tarayıcı süreçlerinde çarpı, sistem servislerinde düğme olmadığı görüntülendi.

Kaynak: scripts/rpi5-h03-browser-engine.c · scripts/h03_browser.py · scripts/test_h03_browser.py · docs/PHONE-H03-BROWSER-GPU-PLAN.md · evidence/browser/pi5-youtube-paused-memory-20261031.json · evidence/browser/pi5-browser-usage-close-20261031.png

Kod / komut kesiti

webkit_memory_pressure_settings_set_memory_limit(pressure,1200);
webkit_memory_pressure_settings_set_strict_threshold(pressure,0.85);
webkit_memory_pressure_settings_set_conservative_threshold(pressure,0.5);
webkit_memory_pressure_settings_set_kill_threshold(pressure,0);
// × yalnız Engine._group_members() ile doğrulanan tarayıcı süreçlerinde.

27 · WPE / Raspberry Pi 5

FreeClip 2 donanım ses seviyesi ve %100–%600 güçlendirme

Açık

Yapılan işlem

Kısık YouTube sesinin zinciri ölçüldü: tarayıcı %100 ve +12 dB iken BlueALSA yazılım ölçeği 127/127, FreeClip 2'nin AVRCP donanım seviyesi 67/127 idi. A2DP için native ses kontrolü açıldı; kulaklık seviyesi arayüzden 127/127'ye ulaştı. Eski 0–12 dB düğmeleri sürüklenebilen %100–%600 kazanç çubuğuna dönüştürüldü. %600 yaklaşık +15,56 dB'dir; GStreamer DSP üst sınırı 16 dB'ye çıkarıldı, stereo tepe sınırlayıcısı korundu.

Sonuç ve sınır

Pi 5'te Bluetooth A2DP bağlı, SoftVolume kapalı, donanım seviyesi 127/127 ve YouTube oynarken PCM Running: true olarak doğrulandı. %600 tercihi dosyaya 15,563 dB yazıldı; 15 saniyelik oynatımda işleme sayacı ilerledi. Kullanıcı daha sonra tercihi %100'e çekti; son tercih korunuyor. Kulakta gerçek yükseklik, iki kanal ve bozulma kabulü açık.

Kaynak: scripts/h03_browser.py · scripts/rpi5-h03-ui-service.py · scripts/rpi5-h03-browser-audio.c · scripts/h03_audio_dsp.h · scripts/test_h03_browser.py · scripts/test_h03_audio_dsp.c · evidence/browser/pi5-freeclip-browser-volume-20261031.json

Kod / komut kesiti

// Tarayıcıya özel A2DP yolu: bluealsa:PROFILE=a2dp,SOFTVOL=no
boost_db = 20 * log10(boost_percent / 100); // %100–%600
// %600 = +15,563 dB; PCM tepe sınırlayıcı 0,95'i korur.
bluealsa-cli volume A2DP_SINK 127

28 · AselBrowser / işletim sistemi

Kitapların ötesinde web uyumluluğu envanteri

Tamamlandı

Yapılan işlem

Güvenlik planının yanına HTML, URL, CSS, ECMAScript, erişilebilirlik, medya ve ürün performansı kabul kapıları eklendi. Yerel Rust motoru artık bir sayfada karşılaşılan ama henüz işlenmeyen betik, görsel, medya, form ve gömülü çerçeve öğelerini sayıyor. Görsel çözücü olmadığı durumda img alt açıklaması görünür metne ekleniyor; src adresi metne dökülmüyor.

Sonuç ve sınır

Uyumluluk sayıları CLI makbuzunda compat_* alanlarına yazılıyor; URL ve başlık varsayılan olarak gizli. Yerel Rust testleri ve aarch64 no_std derlemesi geçti. Bu sayaç standart uyumu değildir; gerçek site korpusu, WPT/Test262 seçimi, JavaScript, resim çözümü ve gerçek Pi 5 entegrasyonu açık.

Kaynak: docs/ASELBROWSER-OPEN-WORK-PLAN.md · userspace/asel_browser/src/native/mod.rs · userspace/asel_browser/src/lib.rs · userspace/asel_browser/tests/native_browser.rs · userspace/asel_browser/README-NATIVE.md

Kod / komut kesiti

pub struct CompatibilityGaps {
    pub scripts: u16, pub images: u16, pub media: u16,
    pub forms_and_controls: u16, pub embedded_frames: u16,
}
// CLI: compat_scripts=1, compat_images=1, compat_media=1
// Görsel yüklenmiyorsa <img alt> metni DOM'da korunur.

29 · AselBrowser / işletim sistemi

Altı web uygulaması güvenliği dosyası ve iki Rust politika modülü

Tamamlandı

Yapılan işlem

Altı yerel dosyanın gerçek kapsamı tek tek incelendi: iki Grokking MEAP taslağı 4 ve 13 bölüm, Hoffman erken EPUB iki bölüm, Tangled Web 18 bölüm, Stuttard/Pinto PDF 21 bölüm, ISACA adlı PDF yalnız iki sayfalık inceleme. Yerel Rust hattına network_policy.rs ve content_type.rs eklendi. HTTP(S) yasak portları ve yerel/ağ yönlendirme sınırı her hopta; belge/CSS MIME ve UTF-8 charset yükleme öncesinde denetleniyor.

Sonuç ve sınır

İlk istek, yönlendirme ve doğrudan IPC çağrısında yasak port ret testleri; yerel→ağ ret testi; UTF-8, yanlış charset, çelişkili charset ve yanlış MIME testleri geçti. Bu dar kapsam tam CSP, çerez, HTTPS veya web standart uyumu değildir. Genişletilmiş kaynak matrisi ve sıradaki modüller docs/ASELBROWSER-WEB-APP-SECURITY-BOOK-AUDIT.md içinde.

Kaynak: docs/ASELBROWSER-WEB-APP-SECURITY-BOOK-AUDIT.md · userspace/asel_browser/src/native/network_policy.rs · userspace/asel_browser/src/native/content_type.rs · userspace/asel_browser/tests/native_browser.rs

Kod / komut kesiti

cargo test -p asel_browser
cargo check -p asel_browser --no-default-features --lib --target aarch64-unknown-none

30 · AselBrowser / işletim sistemi

Web güvenliği kitaplarının yeniden taranması ve eksik modül envanteri

Tamamlandı

Yapılan işlem

Altı dosyanın içerikleri mevcut Rust modülleri ve site planıyla yeniden karşılaştırıldı. Önceki planda URL, başlık, CSP/CORS, çerez, süreç ayrımı, indirme ve aygıt izni vardı; alt kaynak bütünlüğü, çerçeve/pencere sınırı, belgeler arası mesaj kökeni, önbellek bölümleme, güven kimliği arayüzü ve geniş kodlama/MIME kararı ayrı modül olarak eksikti. Altı modül, kitap bölüm dayanakları ve önkoşullarıyla yol haritasına eklendi.

Sonuç ve sınır

Bu aşama envanter ve plan düzeltmesidir; altı yeni modülün kodu yazılmadı. Mevcut uygulama yalnız network_policy.rs ve content_type.rs alt kümesidir. Sunucu tarafı CSRF doğrulaması, SQL enjeksiyonu ve iş mantığı tarayıcı modülü sayılmadı.

Kaynak: docs/ASELBROWSER-WEB-APP-SECURITY-BOOK-AUDIT.md · website/src/components/BrowserWebAppSecurityAudit.tsx

Kod / komut kesiti

# Kodlanan: native/network_policy.rs, native/content_type.rs
# Açık: subresource_integrity.rs, frame_policy.rs, message_origin.rs, cache_partition.rs, security_identity_ui.rs, encoding_sniffing.rs

31 · AselBrowser / işletim sistemi

Açık güvenlik kaynakları, CSS bütünlüğü ve gezinme kotası

Tamamlandı

Yapılan işlem

OWASP WSTG v4.2, Top 10:2025, Proactive Controls C8, NIST CSF 2.0/SP 800-218/SP 800-53, CyBOK Network Security ve W3C SRI kaynak yükleme hattıyla eşleştirildi. Yerel Rust motoruna subresource_integrity.rs ve resource_budget.rs bağlandı. Aynı kökenli bağlı CSS'nin SHA-256/384/512 özeti son yanıt baytlarıyla doğrulanıyor; belge, yönlendirme ve CSS 24 istek ve iki metin boyutu toplam kotasını paylaşıyor.

Sonuç ve sınır

77 Rust testi ve AArch64 no_std derlemesi geçti. Eşleşen/uyuşmayan en güçlü özet, bozuk metaveri, yönlendirme bayt kotası, istek sınırı ve yeni gezinme sıfırlaması denendi. Türkçe kitapların ve CISSP kılavuzunun tam metni mevcut değildi; yalnız katalog/yazar bilgileri doğrulandı. CORS, betik SRI, güvenlik başlığı IPC'si, WPT ve gerçek Pi 5 kabulü açık.

Kaynak: docs/ASELBROWSER-SECURITY-STANDARDS-REVIEW.md · userspace/asel_browser/src/native/subresource_integrity.rs · userspace/asel_browser/src/native/resource_budget.rs · userspace/asel_browser/src/native/mod.rs · userspace/asel_browser/src/native/resource.rs · userspace/asel_browser/tests/native_browser.rs

Kod / komut kesiti

cargo test -p asel_browser -- --test-threads=1
cargo check -p asel_browser --no-default-features --lib --target aarch64-unknown-none
// CSS hash uyuşmazsa kaynak uygulanmaz; BudgetExceeded ayrı hata olarak döner.

32 · AselBrowser / işletim sistemi + WPE / Raspberry Pi 5

Özel ağ hedefi ön filtresi ve Pi 5 çıkış denetimi

Tamamlandı

Yapılan işlem

Yerel Rust IPC istemcisi özel/rezerve IP literalini, localhost adını ve farklı çözümleyicilerin IP sayabileceği hex/sayısal son etiketleri ağ taşımasına göndermeden reddediyor. Ortak hedef politikası Linux geliştirme adaptöründe çözülmüş IP'ye de uygulanıyor. Pi 5'te telefon arayüzünden kayıtlı durmuş YouTube sayfası açılıp kısa süre ölçüldü ve tarayıcı kapatıldı.

Sonuç ve sınır

80 Rust testi ve AArch64 no_std derlemesi geçti; özel IP'ye yönlendirme ikinci IPC çağrısından önce durdu. Pi 5'te 20,4 saniyelik durağan sayfada aile PSS 391,4 MB, dört çekirdek üzerinden CPU ortancası %3,72 ve yüzey 30,26 FPS idi. Kapanışta WPE süreçleri ve motor soketi kalmadı. Bu sonuçlar 9 açık aşamadan hiçbirini kapatmıyor: gerçek OS ağ işçisi/TLS, uzun bellek A/B, video, çağrı, giriş gecikmesi ve fiziksel ses kabulü açık. FreeClip 2 bağlantı denemesi zaman aşımına uğradı.

Kaynak: userspace/asel_browser/src/native/target_policy.rs · userspace/asel_browser/src/native/ipc_contract.rs · userspace/asel_browser/src/native/host.rs · userspace/asel_browser/tests/native_browser.rs · evidence/browser/pi5-open-work-audit-20261101.json

Kod / komut kesiti

// IPC ön filtresi; yetkili OS işçisi her DNS sonucunu ayrıca denetlemeli.
if !public_literal_host(request.url.host()) { return Err(FetchError::Denied); }
// Pi 5: durmuş sayfa 20,4 s, 391,4 MB PSS, %3,72 CPU; CLOSE sonrası WPE yok.

33 · WPE / Raspberry Pi 5

Bing TLS uyarısı için güvenli tanı

Açık

Yapılan işlem

Canlı tarayıcıda Bing araması sırasında sertifika doğrulanamadı uyarısı görüldü. Pi 5 saati, CA deposu ve curl doğrulaması kontrol edildi. Aynı adres ayrı SHM, üretim profili kopyalı SHM ve EGL oturumlarında yeniden denendi. WPE TLS hata bayraklarını günlüğe yazan ikili yedekli ve atomik biçimde sonraki açılışa kuruldu; çalışan oturum kesilmedi.

Sonuç ve sınır

Ayrı oturumlarda Bing araması açıldı, cihaz NTP ile eşzamanlıydı ve curl sertifikayı doğruladı. Canlı oturum başka sayfaya geçtiği için oradaki uyarının kesin nedeni henüz bilinmiyor. Kurulu tanı ikilisi ayrı geçici profilde kendinden imzalı yerel HTTPS sertifikasını reddetti, arayüz uyarısını gösterdi ve 0x1 bilinmeyen otorite bayrağını kaydetti. Sertifika denetimi gevşetilmedi. Uyarı tekrar ederse bayrak, saat ve zincir birlikte değerlendirilecek.

Kaynak: scripts/rpi5-h03-browser-engine.c · scripts/test-h03-browser-tls.py · evidence/browser/pi5-bing-tls-20261101.json · docs/ASELBROWSER-OPEN-WORK-PLAN.md

Kod / komut kesiti

static gboolean tls_failed(..., GTlsCertificateFlags errors, ...) {
    fprintf(stderr, "H03_TLS_FAILURE flags=0x%x\n", (unsigned)errors);
    last_error = g_strdup("Bu sitenin güvenli bağlantısı doğrulanamadı.");
    return TRUE; // sertifika hatası için istisna verme
}
// Pi 5: test-h03-browser-tls.py → H03_TLS_NEGATIVE_OK, flags=0x1

34 · WPE / Raspberry Pi 5

Kaydırma görüntü akışı ve Mobil/Masaüstü görünümü

Açık

Yapılan işlem

Kullanıcının kaydırırken gördüğü geçici yatay dikdörtgen bozulmaları incelendi. KMS günlüğünde 2 saniyelik durağanlık sınırı yüzünden DMA-BUF web katmanının 6–11 kare sonra temizlendiği ve motorun ilk başarısız yaşam sinyalinde readback yoluna geçtiği görüldü. KMS süre sınırı 30 saniyeye çıkarıldı; motor tek geçici sinyal kaybında vazgeçmek yerine beş deneme yapıyor ve kalıcı hatada web katmanını temizliyor. Tarayıcı menüsüne kalıcı Mobil/Masaüstü seçimi kondu; Mobil kullanıcı aracısı ve 480 piksel sayfa alanı, Masaüstü kullanıcı aracısı ve 960 piksel düzeni 0,5 yakınlaştırmayla 480 piksel ekrana sığdırıyor.

Sonuç ve sınır

Pi 5'te ayrı yerel sayfa ölçümünde Mobil innerWidth=480, Masaüstü innerWidth=960 ve her ikisinde fiziksel outerWidth=480 çıktı. 33 Python arayüz testi, C derlemeleri ve KMS CLI ön doğrulaması geçti. Yeni sürüm Pi 5'e yedekli kuruldu; canlı sayfada 12 saniyelik açılış izlemesinde akış zaman aşımına uğramadı. Altı kaydırma komutu 87 yeni kare üretti ve KMS web katmanı temizlenmedi. Kullanıcının fiziksel panelde tekrar kaydırıp bozulmanın bittiğini ve iki görünümün beklenen okunabilirliğini onaylaması açık.

Kaynak: scripts/rpi5-h03-browser-engine.c · scripts/rpi5-h03-kms-viewer.c · scripts/h03_browser.py · scripts/test_h03_browser.py · scripts/test-h03-browser-view-mode.py · scripts/activate-h03-browser-view-mode.py · evidence/browser/pi5-browser-view-mode-and-stream-20261101.json · docs/ASELBROWSER-OPEN-WORK-PLAN.md

Kod / komut kesiti

// Tarayıcı menüsü: Görünüm: Mobil ↔ Masaüstü (SQLite'da kalıcı).
MODE|desktop → desktop UA + webkit_web_view_set_zoom_level(view, 0.5);
MODE|mobile → mobile UA + webkit_web_view_set_zoom_level(view, 1.0);
// Pi 5: 480/960 CSS px; kaydırmada +87 kare, 0 KMS timeout/clear.

35 · WPE / Raspberry Pi 5

Reklam kapatma X'i için sınırlı web geri dönüşü

Açık

Yapılan işlem

Kullanıcının kapanmayan reklam bildirimi üzerine üst, alt ve farklı kökendeki iframe düğmeleri gerçek WPE olaylarıyla denendi; genel tıklama yolu çalışıyor. Örnek haber sayfasında çerez bildirimi alt sağdaki reklam X'ini örtüyor; başka bir durumda 20×24 CSS piksel empowerBannerClose öğesi tıklama hedefi olduğu halde reklam yerinde kaldı. Motora tüm çerçevelerde çalışan bir belge-başı script eklendi: yalnız küçük ve kapatma işaretli öğe reklam/banner/sponsor kapsayıcısındaysa sayfanın kendi işlemini 450 ms bekliyor, öğe ve kapsayıcı hâlâ görünüyorsa kapsayıcıyı gizliyor. Ortam değişkeniyle kapatılabiliyor.

Sonuç ve sınır

Pi 5'te C derlemesi ve yerel WPE kabulü geçti: üç normal düğme tıklandı, handler'ı bozuk reklam gizlendi, reklam dışındaki hesap paneli açık kaldı. Yeni motor yedekli kuruldu; canlı tarayıcı ve DMA-BUF akışı yeniden açıldı, ilk izlemede KMS zaman aşımı olmadı. Gerçek reklam sağlayıcısı her yüklemede aynı ilanı sunmadığından kullanıcının X'inde fiziksel kabul açık.

Kaynak: scripts/rpi5-h03-browser-engine.c · scripts/test-h03-browser-click-targets.py · scripts/activate-h03-browser-adclose.py · evidence/browser/pi5-browser-ad-close-20261101.json · docs/ASELBROWSER-OPEN-WORK-PLAN.md

Kod / komut kesiti

// X tıklandıktan sonra sayfanın kendi handler'ı 450 ms içinde kapatmazsa:
if (smallCloseControl && adAncestor && stillVisible) {
  adAncestor.style.setProperty('display', 'none', 'important');
}
// Geri alma: H03_BROWSER_AD_CLOSE_FALLBACK=0

36 · WPE / Raspberry Pi 5

Sağ kenardaki reklam X'i ile kaydırma çubuğu çakışması

Açık

Yapılan işlem

Kullanıcının X'e basınca sayfanın kaydığı gözlemi 480 piksel WPE görünümünde yeniden üretildi. 2000 piksel yüksekliğinde yerel sayfaya sağ kenara yaslı 20 piksel kapatma düğmesi kondu. x=475 tıklaması düğmeye ulaşmadı; diğer üst, alt ve iframe düğmeleri çalıştı. Kullanıcı düzeyinde, bütün çerçevelere uygulanan WebKit stil sayfası ile kaydırma çubuğunun tıklamayı örten izi gizlendi. Tekerlek, dokunma ve klavye kaydırması korunuyor.

Sonuç ve sınır

İzole Pi 5 WPE testinde düzeltmeden önce sağ kenar X olayı eksikti; aday motorda sağ kenar X, diğer üç tıklama ve tekerlek kaydırması geçti. İlk canlı kurulum girişimi etkin görüşme nedeniyle korumada durdu. Görüşme bitince motor yedekli kuruldu; kurulu ikilide test tekrar geçti, canlı DMA-BUF akışı başladı ve KMS zaman aşımı görülmedi. Kullanıcının gördüğü reklamda fiziksel kabul açık.

Kaynak: scripts/rpi5-h03-browser-engine.c · scripts/test-h03-browser-click-targets.py · scripts/activate-h03-browser-edge-click.py · docs/ASELBROWSER-OPEN-WORK-PLAN.md

Kod / komut kesiti

WebKitUserStyleSheet *edge_style=webkit_user_style_sheet_new(
  "::-webkit-scrollbar { display: none !important; width: 0 !important; height: 0 !important; }",
  WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES, WEBKIT_USER_STYLE_LEVEL_USER, NULL, NULL);
// Geri alma: H03_BROWSER_EDGE_CLICK_FIX=0
// Pi 5: önce [upper, frame, lower], sonra [upper, edge, frame, lower, scroll]

37 · AselBrowser arayüzü / Raspberry Pi 5

Klavye gizlenince arama alanının alta yerleşmesi

Açık

Yapılan işlem

Kullanıcının fotoğrafında klavye gizlenince arama alanı ekran ortasında kalıyor, alt araç çubuğu aşağı iniyor ve arada boşluk oluşuyordu. draw_address() alanının sabit y=461 kullandığı saptandı. Alan klavye açıkken y=461, kapalıyken y=737 konumuna taşındı; öneri listesi yeni yüksekliğe uydu, düzenleme ekranındaki arka araç çubuğu kaldırıldı ve liste kaydırma sınırı güncellendi.

Sonuç ve sınır

Yerel görsel çıktısı incelendi ve 35 arayüz testi geçti. Pi 5'e yedekli kuruldu; kurulu modülde doğrudan yerleşim testi ve gerçek klavye gizleme düğmesinden geçen olay testi geçti. UI/KMS yeniden başladı, 768000 baytlık kare üretildi. Fiziksel panelde kullanıcı kabulü açık.

Kaynak: scripts/h03_browser.py · scripts/test_h03_browser.py · scripts/activate-h03-browser-address-reflow.py · docs/ASELBROWSER-OPEN-WORK-PLAN.md

Kod / komut kesiti

field_y = 461 if self.app.keyboard else 737
list_bottom = 444 if self.app.keyboard else 720
# Tarayıcı araç çubuğu yalnız düzenleme dışındayken çizilir.
# Pi 5: test_keyboard_hide_button_reflows_full_ui geçti.

38 · AselBrowser arayüzü / Raspberry Pi 5

Ses ve üç nokta menülerinin tıklama alanlarını koruma

Açık

Yapılan işlem

Arama düzenleme ekranında draw_address() bütün tıklama alanlarını sıfırladığı için görünen ses simgesi işlevsizdi. Açık bir panelde draw_sheet() üst şeritteki ses ve kullanım alanlarını siliyordu. Görünen üst durum şeridi hedefleri arama ve panel çiziminde korunuyor; panelde alt araç çubuğunun üç nokta hedefi de korunuyor.

Sonuç ve sınır

Hata önce testte yeniden üretildi: arama ekranındaki ses simgesinin hedefi None idi. Düzeltmeden sonra ses paneli, Çalışan Programlar panelinden üç nokta menüsüne ve menüden ses paneline geçişler çalıştı. 36 yerel test ve Pi 5 kurulu modülde üç olay testi geçti; UI/KMS yeniden açıldı ve EGL akışı kare üretti. Fiziksel panelde kullanıcı kabulü açık.

Kaynak: scripts/h03_browser.py · scripts/test_h03_browser.py · scripts/activate-h03-browser-ui-hits.py · evidence/browser/pi5-browser-ui-hits-20261101.json · docs/ASELBROWSER-OPEN-WORK-PLAN.md

Kod / komut kesiti

# Görünür durum şeridi ve alt araç çubuğu panel açıkken tıklanabilir kalır.
c.hits = [hit for hit in c.hits if hit[0][3] <= 38 or hit[0][1] >= 730]
# Pi 5: ses, kullanım paneli ve üç nokta geçişleri için üç olay testi geçti.