-- Leo's gemini proxy

-- Connecting to thasmanie.fr:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini;lang=fr

Diminuer la taille d'un binaire rust

publié le 2022/08/26

retour


Intro


Je me suis mis à un peu coder en Rust cette année, et je vais partager quelques astuces que je trouve sympa.


En compilant un petit projet personnel, j'arrive à un binaire d'environ 10 Mo, je me dis que ça fait beaucoup. Je n'ai pas beaucoup de dépendances : reqwest et warp pour la partie client/serveur http, et des libs courantes pour les arguments, un fichier de conf, et les logs.


min-sized-rust


Je tombe donc sur le projet min-sized-rust qui donne des astuces et tous le détails pour réduire la taille. Je vais donc ajouter les lignes suivantes dans mon Cargo.toml :


[profile.release]
panic = 'abort' # No unwinding on panic
strip = true  # Automatically strip symbols from the binary.
opt-level = "s"  # Optimize for size.
lto = true
codegen-units = 1

Avec ces premières optimisations, je tombe à un binaire de 3,5 Mo, c'est pas mal :)


UPX


Et pour finir, upx réduit le binaire à 1,1 Mo, joli !

Mais attention, ce dernier réduit juste la taille sur le disque et pour les transferts réseau. En effet, il transforme le binaire pour lui ajouter une étape de décompression avant de l'exécuter.

Donc en mémoire, le binaire reviendra à 3,5 Mo (sans compter l'exécution qui s'en suit).


Attention aussi car sur certains OS (Windows ?) il décompresse le binaire sur disque, il lui faudra donc les permissions pour le faire.


Ça m'a permis aussi de découvrir le "Rust Performance Book"


Liens


Projet gitlab min-sized-rust

UPX pour compresser les binaires

The Rust Performance Book

-- Response ended

-- Page fetched on Sun May 5 09:49:32 2024