no description only meoww


I was debugging a problem where someone was turning on a feature that was a bad idea and broke my build. After reading the docs, I found cargo tree can in fact tell you this information.

$ cargo tree -p sdl2 -e features -i
sdl2 v0.35.2
├── sdl2 feature "default"
│   ├── egui_sdl2_platform v0.1.0 (/home/jade/dev/egui_sdl2_platform)
│   │   └── egui_sdl2_platform feature "default"
│   │       └── synthtoy v0.1.0 (/home/jade/dev/synthtoy)
│   │           └── synthtoy feature "default" (command-line)
│   └── synthtoy v0.1.0 (/home/jade/dev/synthtoy) (*)
└── sdl2 feature "raw-window-handle"
    └── egui_sdl2_platform v0.1.0 (/home/jade/dev/egui_sdl2_platform) (*)


fullmoon
@fullmoon

Today at work I merged the pull request to internally enable Nixpkgs support for incremental Haskell builds at work, which led to a significant time savings for our CI builds (~50% reduction in time to merge, most of which is now the time to re-run tests)

The way we have it set up is that it automatically does a full build once a day (the first build after UTC midnight) and then every build after that is an incremental build that only rebuilds the diff since the last full rebuild.

I'm still waiting for upstream to (hopefully) merge and approve the relevant PRs, but in the meantime I'll write up a blog post explaining the motivation, design, and results of this work.



no-change link times of the big shared library at work are down from 8s to ~4s. pretty neat.

the rest of the time is due to ghc and cabal, where cabal contributes a disproportionate amount (imo), since, out of the 25s, only 18s is spent in ghc. this data was acquired by the dirtiest hacks possible so i wouldn't put too much faith in it.

due to cabal containing either bugs or documentation issues, you have to specify the -pgml=clang and -optl-fuse-ld=mold flags in ghc-shared-options since cabal does not pass ghc-options in the link stage for library shared objects (bug?). for some reason, ld-options do not get passed there (???).

really would like cabal to give me timing data. ghc-specter gets data out of ghc, so that side is relatively well covered at least.