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>
12 lines
513 B
TOML
12 lines
513 B
TOML
[package]
|
|
name = "makepad-widgets-fab"
|
|
version = "2.0.0"
|
|
authors = ["Makepad <info@makepad.nl>"]
|
|
edition = "2021"
|
|
description = "Makepad widgets: The fab design-tool controls (sliders, knobs, colour picks, value inputs and their palette), the property inspector, the menu bar and the tween inspector"
|
|
license = "MIT OR Apache-2.0"
|
|
homepage = "https://github.com/makepad/makepad/"
|
|
repository = "https://github.com/makepad/makepad/"
|
|
|
|
[dependencies]
|
|
makepad-widgets-core = { path = "../../core", version = "2.0.0" }
|