Skip to content

Commit eded1a9

Browse files
authored
Merge pull request #348 from charliek/feature/plan-029-latency-cursor-kitty
Post-026 fix slice: typing-latency regression + cursor/kitty parity (plan 029)
2 parents fae4776 + 54a205b commit eded1a9

20 files changed

Lines changed: 1327 additions & 51 deletions

File tree

.github/workflows/ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -622,6 +622,7 @@ jobs:
622622
tools/roosttest/test_dock_badge.py
623623
tools/roosttest/test_menu_bar.py
624624
tools/roosttest/test_sparkle.py
625+
tools/roosttest/test_view_perf.py
625626
tools/roosttest/test_osc52.py
626627
--roost-target iced --roost-fresh -v
627628
@@ -717,6 +718,7 @@ jobs:
717718
tools/roosttest/test_dock_badge.py
718719
tools/roosttest/test_menu_bar.py
719720
tools/roosttest/test_sparkle.py
721+
tools/roosttest/test_view_perf.py
720722
--roost-target iced --roost-fresh -v
721723
722724
- name: Run Iced exit-on-empty E2E (Linux Wayland)
@@ -781,6 +783,7 @@ jobs:
781783
tools/roosttest/test_dock_badge.py
782784
tools/roosttest/test_menu_bar.py
783785
tools/roosttest/test_sparkle.py
786+
tools/roosttest/test_view_perf.py
784787
tools/roosttest/test_osc52.py
785788
--roost-target iced --roost-fresh -v
786789

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ strip = "debuginfo"
9797
[profile.dev]
9898
debug = "limited"
9999

100+
[profile.dev.package."*"]
101+
opt-level = 2
102+
100103
[patch.crates-io]
101104
# Vendored swash 0.2.10 carrying the #292 zero-long-metrics guard.
102105
# See third_party/swash/README.roost.md and CLAUDE.md § Library preferences.

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ run-mac: bundle ## Launch the bundled Mac app
7373

7474
.PHONY: test test-rust test-iced test-mac test-harness e2e e2e-gtk e2e-iced e2e-iced-exit e2e-iced-menu-quit e2e-iced-clipboard e2e-mac e2e-gtk-ci e2e-iced-ci e2e-iced-release-ci e2e-mac-ci e2e-iced-bundle e2e-iced-sparkle smoke-gtk smoke-iced smoke-mac visual-parity smoke-mac-launch test-real-input test-iced-real-input test-iced-wayland-input check-iced perf-refresh perf-render-stats
7575

76-
ICED_E2E_TESTS := tools/roosttest/test_smoke.py tools/roosttest/test_iced_walking_skeleton.py tools/roosttest/test_notifications.py tools/roosttest/test_provider.py tools/roosttest/test_sidebar_pixels.py tools/roosttest/test_tab_strip_pixels.py tools/roosttest/test_focus.py tools/roosttest/test_palette.py tools/roosttest/test_z_typography.py tools/roosttest/test_project_lifecycle.py tools/roosttest/test_sidebar_resize.py tools/roosttest/test_osc_pipeline.py tools/roosttest/test_sprite_pixels.py tools/roosttest/test_ime.py tools/roosttest/test_selection.py tools/roosttest/test_mouse_tracking.py tools/roosttest/test_dock_badge.py tools/roosttest/test_menu_bar.py tools/roosttest/test_sparkle.py
76+
ICED_E2E_TESTS := tools/roosttest/test_smoke.py tools/roosttest/test_iced_walking_skeleton.py tools/roosttest/test_notifications.py tools/roosttest/test_provider.py tools/roosttest/test_sidebar_pixels.py tools/roosttest/test_tab_strip_pixels.py tools/roosttest/test_focus.py tools/roosttest/test_palette.py tools/roosttest/test_z_typography.py tools/roosttest/test_project_lifecycle.py tools/roosttest/test_sidebar_resize.py tools/roosttest/test_osc_pipeline.py tools/roosttest/test_sprite_pixels.py tools/roosttest/test_ime.py tools/roosttest/test_selection.py tools/roosttest/test_mouse_tracking.py tools/roosttest/test_dock_badge.py tools/roosttest/test_menu_bar.py tools/roosttest/test_sparkle.py tools/roosttest/test_view_perf.py
7777
# `test_sparkle.py`'s two classes split by lane: the bare-binary class
7878
# runs here (no framework beside a cargo binary ⇒ updater unavailable)
7979
# and its bundle class self-skips — `make e2e-iced-sparkle` is where the
@@ -104,7 +104,7 @@ ICED_MENU_QUIT_E2E_TESTS := tools/roosttest/test_menu_quit.py
104104
# list: startup, the core op set, the VT pipeline, and font shaping/glyph
105105
# rasterization — the last two because the one release-only bug this stack
106106
# has produced was issue #299's swash shaping hang.
107-
ICED_RELEASE_E2E_TESTS := tools/roosttest/test_smoke.py tools/roosttest/test_iced_walking_skeleton.py tools/roosttest/test_osc_pipeline.py tools/roosttest/test_z_typography.py tools/roosttest/test_sprite_pixels.py
107+
ICED_RELEASE_E2E_TESTS := tools/roosttest/test_smoke.py tools/roosttest/test_iced_walking_skeleton.py tools/roosttest/test_osc_pipeline.py tools/roosttest/test_z_typography.py tools/roosttest/test_sprite_pixels.py tools/roosttest/test_view_perf.py
108108
# The Sparkle lane's bundle inputs. The feed URL is a deliberate dead
109109
# placeholder: the seam's test-mode delegate override replaces it with
110110
# the live loopback port at check time, and a plist URL that could never

crates/roost-cli/src/main.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -912,6 +912,10 @@ async fn main() -> Result<()> {
912912
println!("draw_calls {}", stats.draw_calls);
913913
println!("draw_nanos {}", stats.draw_nanos);
914914
println!("fill_text_calls {}", stats.fill_text_calls);
915+
println!("view_calls {}", stats.view_calls);
916+
println!("view_nanos {}", stats.view_nanos);
917+
println!("elide_calls {}", stats.elide_calls);
918+
println!("elide_nanos {}", stats.elide_nanos);
915919
println!(
916920
"ns_per_refresh {}",
917921
per(stats.refresh_nanos, stats.refresh_calls)
@@ -920,6 +924,14 @@ async fn main() -> Result<()> {
920924
"ns_per_draw {}",
921925
per(stats.draw_nanos, stats.draw_calls)
922926
);
927+
println!(
928+
"us_per_view {}",
929+
per(stats.view_nanos / 1_000, stats.view_calls)
930+
);
931+
println!(
932+
"ns_per_elide {}",
933+
per(stats.elide_nanos, stats.elide_calls)
934+
);
923935
}
924936
Cmd::Palette(PaletteCmd::Open { kind, json }) => {
925937
let state: PaletteStateResult = client

0 commit comments

Comments
 (0)