makepad/libs/diskmap
Admin c408dab471 widgets, platform, script, draw: clean builds 7-9 s faster -- rare widgets leave widgets-core, the tweaker leaves the front crate, network and math_aot leave the build chain, and less generated code
Clean release builds on the Mac mini (M4, empty target dirs, nothing else building), before -> after on the same tree: Scope 73 -> 64 s, the shared stack (makepad-widgets, no default features) 32 -> 25 s, calculator 42 -> 35 s, storybook 45 -> 38 s. The base crates' frontends are on the critical path and the machine is CPU-saturated during a build, so both a shorter chain and less generated code count.

- widgets-core keeps the base widgets. About 58k compiled lines move into seven feature-free families behind the front crate's features: fab (fab_controls, property_inspector, menu_bar, tween_inspector), editors (ease_editor, sequencer, gizmo), hotkeys, media (video, playback_bar, level_meter, media, placeholder, marquee), collections, pickers and catalog. DSL names don't change. Each app turns on the families it uses, and all of them stay in the front crate's defaults. The dead command_text_input is gone. core is 85.5k lines instead of 143.5k.
- The tweaker is linked by the app: makepad-widgets no longer depends on makepad-widgets-tweaker. An app's `tweaker` feature (on by default, off in Builder releases) is now `dep:makepad-widgets-tweaker` plus `makepad-widgets/fab`, and the app calls `makepad_widgets_tweaker::link(vm)`. Library crates (code_editor, workspace, wm_theme, wm_api, terminal, aichat, diskmap, ...) depend on makepad-widgets-core plus their families, so they start as soon as core's metadata is ready. task and mixer drop families they never use.
- makepad-network no longer depends on makepad-script: the script-facing network types live in script-std. math_aot is its own crate (makepad-script-math-aot), so script no longer pulls in stitch. The Cx-free half of the remote bridge (HTTP, routing, parsing, encoders) is makepad-remote-core. Dead code removed: the old apple/windows video_file encoders and decoders (superseded by makepad-platform-video), pty_spawn (moved to tools/agents, its only user), and unreferenced pub items.
- Less generated code: #[derive(Widget)] generates the XxxSet wrapper only through #[derive(WidgetSet)]; hot generics in widgets-core and the event hit test are outlined into non-generic cores; CxOsOp's Debug and script's Opcode Display use name tables. A slim makepad_network::mpsc channel replaces std::sync::mpsc in platform, draw and widgets-core, except the log sink, whose producers must never wait. LLVM lines drop about 10% in platform, 12% in draw and 7.5% in widgets-core.

Checked on the mini: cargo check --release --workspace with and without the private apps; --no-default-features for calculator, storybook and Scope; cross-target checks for makepad-widgets, -core, platform and draw on x86_64-pc-windows-msvc, x86_64-unknown-linux-gnu, aarch64-linux-android, wasm32-unknown-unknown and aarch64-apple-ios; lib tests for widgets-core (656), platform (312), script (58), draw (140), network (32) and remote-core (6). The tweaker's 5 theme_builder test failures predate this change. Shift+F10 was not tried by hand. apps/sandbox (its own workspace) still needs the tweaker link to keep its overlay.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 01:55:14 +02:00
..
src widgets, platform, script, draw: clean builds 7-9 s faster -- rare widgets leave widgets-core, the tweaker leaves the front crate, network and math_aot leave the build chain, and less generated code 2026-09-29 01:55:14 +02:00
Cargo.toml widgets, platform, script, draw: clean builds 7-9 s faster -- rare widgets leave widgets-core, the tweaker leaves the front crate, network and math_aot leave the build chain, and less generated code 2026-09-29 01:55:14 +02:00