Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 30 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -284,17 +284,28 @@ getrandom = { version = "0.4" }
# >>> FerroUI profiles (written by FerroUI/scripts/apps/sync-workspace.py from FerroUI/Cargo.toml; do not edit)
# The default release build is the one that is built most often, so it is set up for build time:
# thin LTO over the default sixteen code generation units, which generates code on all cores.
# It aborts on panic, as `dist` does (#567, docs/binary-size.md, section 4.7): no framework path
# relies on catching a panic, and unwinding tables and landing pads are a fifth of an executable.
[profile.release]
lto = "thin"
panic = "abort"

# `release` with unwinding, for a program that catches panics to carry on (a plug-in host, a tool
# that isolates the code it runs). Tests and benchmarks unwind in every profile.
[profile.release-unwind]
inherits = "release"
panic = "unwind"

# Optimised code for running an application locally (`cargo run --profile fast-release -p <app>`):
# the optimisation level of release, without link-time optimisation across crates. The last step
# of an executable then links the optimised crates instead of optimising the whole program again,
# which took most of a release build of a large application. Not for measurements or shipping:
# the benchmarks are measured with release, and what is shipped is built with dist.
# the benchmarks are measured with release, and what is shipped is built with dist. It unwinds:
# the Designer and the previewer, run this way, isolate the code of the previewed application.
[profile.fast-release]
inherits = "release"
lto = false
panic = "unwind"

# The build that is shipped and measured (`cargo build --profile dist`, `scripts/perf-report.py
# --profile dist`): whole-program optimisation in one code generation unit. The executables are
Expand Down Expand Up @@ -330,6 +341,24 @@ panic = "abort"
inherits = "dist"
panic = "unwind"

# Compiled theme markup runs once, when a theme is constructed, and is a large share of an
# executable: the theme crates are optimised for size in the shipped build (#581). Their start-up
# cost is within noise (docs/binary-size.md, section 4.14).
[profile.dist.package.ferroui-themes-winui]
opt-level = "z"

[profile.dist.package.ferroui-themes-fluent]
opt-level = "z"

[profile.dist.package.ferroui-themes-simple]
opt-level = "z"

[profile.dist.package.ferroui-themes-macos]
opt-level = "z"

[profile.dist.package.ferroui-themes-material]
opt-level = "z"

# The WebAssembly module of the browser (scripts/build-browser.sh): optimised for size, because the
# module is downloaded and compiled by every visitor (docs/porting/browser-platform.md, section 18).
# The crates of the run-time XAML loader stay optimised for speed: at "z" the start-up of a themed
Expand Down
2 changes: 1 addition & 1 deletion FerroUI
Submodule FerroUI updated 50 files
+6 −0 CHANGELOG.md
+30 −1 Cargo.toml
+1 −1 docs/apps.md
+78 −5 docs/binary-size.md
+8 −1 docs/porting/DEVIATIONS.md
+1 −1 docs/porting/browser-platform.md
+20 −16 docs/porting/panics-as-exceptions.md
+1 −0 docs/porting/winui-controls.md
+14 −2 docs/xaml-themes.md
+7 −0 samples/ControlCatalog.Browser/program.rs
+3 −3 samples/ControlCatalog/Pages/navigation_view_page.rs
+2 −2 samples/ControlCatalog/main_view.rs
+16 −13 samples/WinUIGallery/connected_animation_samples.rs
+9 −9 samples/WinUIGallery/connected_animation_samples_tests.rs
+9 −6 samples/WinUIGallery/frame_sample.rs
+20 −17 samples/WinUIGallery/navigation_view_samples.rs
+18 −18 samples/WinUIGallery/navigation_view_samples_tests.rs
+7 −4 samples/WinUIGallery/sizing_sample.rs
+4 −4 samples/WinUIGallery/tests.rs
+13 −3 scripts/browser/tests/control_catalog.test.mjs
+16 −3 scripts/browser/tests/themed_view.test.mjs
+4 −1 scripts/build-browser.sh
+113 −0 scripts/irpaths.py
+7 −0 src/Browser/FerroUI.Browser/examples/themed_view/main.rs
+1 −1 src/FerroUI.Base/lib.rs
+20 −0 src/FerroUI.Base/type_system.rs
+41 −43 src/FerroUI.Controls/frame.rs
+3 −3 src/FerroUI.Controls/frame_page.rs
+179 −71 src/FerroUI.Controls/frame_tests.rs
+2 −0 src/FerroUI.Controls/lib.rs
+6 −0 src/FerroUI.Controls/markup_types/mod.rs
+27 −13 src/FerroUI.Controls/navigation.rs
+7 −7 src/FerroUI.Controls/navigation/page_stack_entry.rs
+202 −0 src/FerroUI.Controls/page_type.rs
+10 −10 src/FerroUI.Designer.Language/schema.json
+20 −10 src/FerroUI.ReactiveUI/binding/bindings/binding_errors.rs
+43 −0 src/FerroUI.ReactiveUI/reactive_object/extension_state.rs
+1 −0 src/FerroUI.ReactiveUI/reactive_object/mod.rs
+639 −329 src/FerroUI.Themes.Fluent/compiled_xaml.rs
+637 −303 src/FerroUI.Themes.MacOS/compiled_xaml.rs
+595 −287 src/FerroUI.Themes.Simple/compiled_xaml.rs
+628 −293 src/FerroUI.Themes.WinUI/compiled_xaml.rs
+74 −0 src/FerroUI.Themes.WinUI/tests/compiled_xaml_tests.rs
+7 −3 src/Markup/FerroUI.Markup.Xaml.Loader/runtime/type_system/values.rs
+5 −2 src/Markup/FerroUI.Markup.Xaml.Loader/rust_emitter/compiled.rs
+113 −17 src/Markup/FerroUI.Markup.Xaml.Loader/rust_emitter/emitter.rs
+3 −3 src/Markup/FerroUI.Markup.Xaml.WinUI/compiled_tests.rs
+1 −1 src/Markup/FerroUI.Markup.Xaml.WinUI/fixtures/winui_bindings.generated.rs
+8 −3 src/Markup/FerroUI.Markup.Xaml/markup_extensions/x_bind/binding.rs
+23 −6 tests/FerroUI.ReactiveUI.Tests/tests/binding/bindings/binding_errors_tests.rs
Loading