-
-
Notifications
You must be signed in to change notification settings - Fork 461
Ideas on how to improve compile-time #987
Copy link
Copy link
Open
Labels
C-tracking-issueAn issue to track to track the progress of multiple PRs or issuesAn issue to track to track the progress of multiple PRs or issuesacknowledgedan issue is accepted as shortcoming to be fixedan issue is accepted as shortcoming to be fixedenhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is needed
Metadata
Metadata
Assignees
Labels
C-tracking-issueAn issue to track to track the progress of multiple PRs or issuesAn issue to track to track the progress of multiple PRs or issuesacknowledgedan issue is accepted as shortcoming to be fixedan issue is accepted as shortcoming to be fixedenhancementNew feature or requestNew feature or requesthelp wantedExtra attention is neededExtra attention is needed
Summary 💡
De-monomorphisation
Function like
gix::clone::PrepareFetch::newcan be trivally de-monomorphised by extracting aninnerfunction.Sebastian Thiel (@Byron) It's possible we can do this without sacrificing code readability by creating our own variant of
momo.For
gix::clone::PrepareFetch::fetch_then_checkoutit would be harder sinceProgressis not andyn-safe trait.I would like to add another provided method to
Progress:Features
For starters, I think we can put
gix_negotiate,gix_ignoreandgix_utilsbehind new feature flags.Then we can put ability to fetch and update new repository into its own features since many crates might just want to discover local repository, e.g.
vergen.Motivation 🔦
As shown in cargo-bins/cargo-binstall#1304 (comment) , compilation of gix (not its dependencies) on GHA MacOS runner took more than 60s, which is a bit too long.
simple-git, which only uses a fewgixinterface, also takes 34s just to compile.I believe this is caused by two factors:
Progress
dynwhere possible, includingdynbased progress traits #1008gixfeature toggles #1010gix-errorcrate as replacement forthiserror