This is a meta-task to cover discussion of various build options and decisions. Boulder is built to be extremely powerful and flexible so creates an enormous number of combinations to build packages with. Therefore, having a sane process will increase the speed at which these optimizations can land broadly among all packages.
With all decisions there is a trade-off between:
- File Size
- Likelihood of breaking packages
Important things to consider for packages:
- Uses dlopen (which can break with things like lto, and GC)
- No ABI changes in the package from the optimizations
Note: These can be easily validated in the build to provide developers the best information for making decisions