From 80529ef3588a0e7cf32e9783d5cd671118627ec7 Mon Sep 17 00:00:00 2001 From: Jonathan Schwender <55576758+jschwe@users.noreply.github.com> Date: Thu, 21 Nov 2024 12:28:15 +0100 Subject: [PATCH] Add `medium` profile for daily work scenario (#34035) - The standard `dev` mode is often too slow for daily work on servo - Increasing the optimization level to 2 improves the performance noticably. - Build time for opt-level = 1 is slightly higher than 2 on my machine - Reducing debug info to `line-tables-only` improves link and build times, while still keeping relevant info for backtraces. Also extend .servobuild to allow setting custom cargo profiles instead of just release and dev. Signed-off-by: Jonathan Schwender --- Cargo.toml | 8 ++++++++ python/servo/command_base.py | 4 ++++ servobuild.example | 2 ++ 3 files changed, 14 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index 1ebcc8c9906..80f2d0d203d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -162,6 +162,14 @@ xml5ever = "0.20" opt-level = 3 debug-assertions = true +# A profile between `dev` and `release` which aims to offer a compromise between +# fast incremental rebuilds and runtime speed. +[profile.medium] +inherits = "release" +opt-level = 2 +incremental = true +debug = "line-tables-only" + [profile.production] inherits = "release" debug-assertions = false diff --git a/python/servo/command_base.py b/python/servo/command_base.py index 1dcfe1e8408..1f8b6818c22 100644 --- a/python/servo/command_base.py +++ b/python/servo/command_base.py @@ -678,6 +678,10 @@ class CommandBase(object): elif self.config["build"]["mode"] == "release": print("No build type specified, but .servobuild specified `--release`.") return BuildType.release() + elif self.config["build"]["mode"] != "": + profile = self.config["build"]["mode"] + print(f"No build type specified, but .servobuild specified custom profile `{profile}`.") + return BuildType.custom(profile) else: print("No build type specified so assuming `--dev`.") return BuildType.dev() diff --git a/servobuild.example b/servobuild.example index bc8219b6673..40dd62e2421 100644 --- a/servobuild.example +++ b/servobuild.example @@ -14,6 +14,8 @@ [build] # Set "mode = dev" or use `mach build --dev` to build the project with warning. # or Set "mode = release" or use `mach build --release` for optimized build. +# Use `mode = ` or `mach build --profile=` to build the given +# profile. Check the `Cargo.toml` manifest for a complete list of custom profiles. # Defaults to prompting before building #mode = "dev"