-
-
Notifications
You must be signed in to change notification settings - Fork 2.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
replace dependencies with long build times when used together (closes #3571) #3773
Conversation
That |
I ran a simple comparison using the API Example, without any changes. This was performed on a T410 (2 core 4 thread) w/ 8GiB RAM & an SSD.
This is a decent gain for a clean build without any real downsides IMO. I think it might have even greater effect for when stuff like LTO is disabled and possibly using the LLD linker due to it taking more of the CPU time. I don't really have the time to test all the configuration of that stuff right now however. @JamesYeoman maybe you would like to compare this branch on your project you opened the issue with. |
Documentation for all three targets is still working, nice! |
Ooh, nice improvement in performance! How do I use this branch instead of the release tauri crate? |
@JamesYeoman in your Cargo.toml: [build-dependencies]
tauri-build = { git = "https://github.com/tauri-apps/tauri", branch = "feat/no-dep-c-build-script" }
[dependencies]
tauri= { git = "https://github.com/tauri-apps/tauri", branch = "feat/no-dep-c-build-script", features = ["leave this unchanged"] } Make sure to run |
I don't have any insight about the |
We should look into using @wravery can |
I guess it could be IO cache tbh. I've just changed my release profile to remove the [profile.release]
panic = "abort" # Strip expensive panic clean-up logic
lto = "thin" # Enables link time optimizations
opt-level = 2 # Optimize for binary size
strip = "debuginfo"
incremental = true # Ensure incremental building in enabled for the release profile (this was the original release config) [profile.release]
panic = "abort" # Strip expensive panic clean-up logic
lto = "thin" # Enables link time optimizations
opt-level = "s" # Optimize for binary size
strip = true # Strips symbol information from the executable
incremental = true # Ensure incremental building in enabled for the release profile and then ran 2 builds. An 8 minute build followed by a 4 minute build, despite doing |
I'll merge this one, we're making a new release tomorrow if tao+wry can be updated too. We can make further improvements on another PR. |
Doing so would make a lot of callers uglier because the parameter conversions wouldn't be implemented for us. For instance, anytime we pass a The bigger problem would be anything that uses the |
Is it worth opening an issue in windows-rs to request A number of crates, has already moved to |
There are some COM interfaces implemented in tao and wry as well, particularly around drag-drop support. IIRC, the only interface in However, post 0.30.0, the It doesn't hurt to ask, the |
Correct.
Alright. Thanks anyway. We appreciate your help as always. |
What kind of change does this PR introduce?
Does this PR introduce a breaking change?
Checklist
fix: remove a typo, closes #___, #___
)Other information
When
ring
,zstd
, andblake3
where built at the same time, their build scripts that spancc
will run concurrently (even if limited by--jobs=1
). This would cause massively inflated build times for dependencies that otherwise aren't too bad to build.The following dependency changes were made after looking into it in #3571
zstd
brotli
blake3
tauri-codegen
ring
getrandom
getrandom
is also a CSPRNG that utilizes the OS's calls for secure random numbers. It is much more focused and smaller for our requirements.