Vous n'êtes pas identifié(e).
Décidément, nos collègues DBA ont pris le goût des séries.
Celle-ci vient d'être lancée par Damien Clochard, qui a conçu les articles comme des mini-ateliers.
Voici le 1er, Créer une extension Postgres en Rust #1 - Un nouveau monde, dont les objectifs sont les suivants :
- Initialiser un environnement de développement PGRX
- Créer une extension minimaliste
- Lancer l’extension dans une instance Postgres
Hors ligne
Mes commentaires:
Dans l'exemple cité, la manipulation de chaînes de caractères est effectivement bien plus facile qu'en C. Mais il faut savoir qu'une chaîne en Rust est un vrai type de données qui utilise Unicode et peut se révéler plus difficile à manipuler que l'équivalent en C qui est seulement en ASCII par défaut. Par exemple, essayez de mettre en majuscule le premier caractère d'une chaîne String.
Comme pour l'exécutable "Hello World", l'extension "Hello World" en mode debug est particulièrement volumineuse:
$ ll target/debug
total 86224
drwxrwxr-x. 32 pierre pierre 4096 Sep 28 15:31 build
drwxrwxr-x. 2 pierre pierre 20480 Sep 28 15:36 deps
drwxrwxr-x. 2 pierre pierre 6 Sep 28 15:31 examples
drwxrwxr-x. 4 pierre pierre 71 Sep 28 15:31 incremental
-rw-rw-r--. 1 pierre pierre 75 Sep 28 15:31 libworld.d
-rw-rw-r--. 2 pierre pierre 995514 Sep 28 15:33 libworld.rlib
-rwxrwxr-x. 2 pierre pierre 42444168 Sep 28 15:33 libworld.so
-rwxrwxr-x. 2 pierre pierre 44807552 Sep 28 15:36 pgrx_embed_world
-rw-rw-r--. 1 pierre pierre 137 Sep 28 15:36 pgrx_embed_world.d
$ ll target/release
total 628
drwxrwxr-x. 38 pierre pierre 4096 Sep 28 15:35 build
drwxrwxr-x. 2 pierre pierre 20480 Sep 28 15:36 deps
drwxrwxr-x. 2 pierre pierre 6 Sep 28 15:35 examples
drwxrwxr-x. 2 pierre pierre 6 Sep 28 15:35 incremental
-rw-rw-r--. 1 pierre pierre 77 Sep 28 15:36 libworld.d
-rw-rw-r--. 2 pierre pierre 113690 Sep 28 15:36 libworld.rlib
-rwxrwxr-x. 2 pierre pierre 493264 Sep 28 15:36 libworld.so
$
Dernière modification par pifor (01/10/2024 18:27:42)
Pierre
Hors ligne
Bonjour,
Merci pour ce retour !
Cet article est le premier d'une série et la manipulation de chaines de caractère est un exemple initial assez simple. Les épisodes suivants devraient montrer d'autres usages où l'on profite de la richesse de l'écosystème Rust
Concernant les temps de compilation et la taille des binaires, effectiviement c'est l'explosion !
Pour comparaison, pour la version 2.0 de PostgreSQL Anonymizer écrite en Rust le binaire du module fait 5Mo alors que le module version 1 en C pesait quelques centaines de ko.
Je dis souvent que c'est le « prix de la sécurité » :-)
damien clochard
http://dalibo.org | http://dalibo.com
Hors ligne