v0.1.0-alpha.27
Pre-release
Pre-release
·
2 commits
to main
since this release
Startup performance — picker GUI mais rápido
Release focada em latência percebida do GUI. Três otimizações ortogonais que cortam o cold start, principalmente no macOS.
Mudanças
-
Disk cache
~/Library/Caches/mclovin/browsers.json(TTL 1h)detect_browsers()lê do disco antes de escanear/Applicationsou XDG dirs.- Cada URL click spawnava um processo fresco que reescaneava tudo. Agora o cache cross-invocation mata a hot path. Linux: ganho marginal (CLI já era <30ms). macOS: 80-95ms economizados.
- Force refresh:
rm ~/Library/Caches/mclovin/browsers.json(ou~/.cache/mclovin/browsers.jsonno Linux). 1h TTL pega novos browsers instalados.
-
plistcrate substituiplutilsubprocess (macOS)parse_app_bundlelia Info.plist viaplutil -convert json -o -(fork por bundle). Com 10+ apps em/Applications, somava ~100ms.- Crate
plist(1.7) parsea XML + binary plist puro Rust, zero forks. ~10x mais rápido por bundle.
-
Skip
maybe_spawn_background_checkno picker path- Update check forkava um child em cada
gui::run, incluindo o picker (hot path). - Movido pra
StartScreen::Settingsapenas. Picker invocation: 50-100ms a menos. - Banner de update aparece na próxima abertura de Settings.
- Update check forkava um child em cada
Numbers (mac44)
| alpha.26 | alpha.27 cold | alpha.27 warm cache | |
|---|---|---|---|
mclovin list-browsers |
122ms | 11ms | 4ms |
| Speedup | — | 11x | 30x |
Picker GUI cold (estimado): ~500ms → ~200ms.
Sem mudanças de feature
Mesmas features de alpha.25/26 (file handler, incognito, Safari disable). Pura perf.
Auto-update
Da alpha.25/alpha.26, mclovin update instala alpha.27 + refresh self-heal de .desktop/Info.plist mantém compatibilidade.