Open ReillyBrogan opened 4 months ago
I'd whole heartedly understand why this is desirable. However...
I'd sooner not rely on openssl at all, and even our curl package in serpent uses it. The other dependencies would introduce issues in volatile whereby we could dep-break the repo or images, rather than controlled isolated binaries.
Yes, it's an annoying approach but having an almost entirely static build eliminates a plethora of LD issues and makes iteration less problematic (consider the solbuild + libgit2 issues we've known to love and cherish)
Ideally we should trim fat where feasible and nuke lardy deps like petgraph and Co, and use the "packaging" moss target which already yields a similar binary size to the one you've provided.
@ReillyBrogan can we remove the rustls
change so we can get the regex
change in? It's still very material on it's own.
I used cargo-bloat to find out what some of the biggest offenders with regards to binary size were and found that reqwest and regex could both be trimmed a bit by disabling some features that we don't need.
For regex I switched it to only have the
std
feature enabled. This disables some of the performance features and unicode support but as far as I can tell we don't use the unicode support and the existing regexes are in non-performance-critical sections. This reduces boulder binary size with therelease
profile from16.9MiB
->15.2MiB
.For reqwest I switched to using
native-tls
overrustls
. Since this links against the system openssl the binary size is further reduced from15.2MiB
->13.1MiB
.Final binary sizes when this patch is applied to the experimental Solus package (which already links against system libzstd and sqlite3) are: