Rust est un langage de programmation système conçu pour offrir sécurité mémoire, performance et concurrence. Il le fait grâce à des fonctionnalités telles que l’ownership, le borrowing et les lifetimes, permettant d’assurer la sécurité mémoire dès la compilation sans nécessiter de ramasse-miettes. Cela rend Rust particulièrement adapté aux applications critiques en performance et à la programmation système, où la gestion manuelle de la mémoire est généralement nécessaire. Ses abstractions “à coût nul” garantissent que les fonctionnalités de haut niveau n’impliquent pas de surcharge à l’exécution, renforçant ainsi sa performance. Son modèle de concurrence est conçu pour être sûr et efficace, facilitant l’écriture de code concurrent sans les pièges habituels des race conditions.
SWIG est un générateur de code de glue (wrapper) capable de connecter des bibliothèques compilées à un tas de langages de script. Le processus est principalement automatique, mais pour gérer certains cas particuliers, il faut aider le générateur à faire les choses correctement. Dans ma bibliothèque, toutes les fonctions renvoient un entier, qui est un code d’erreur. Une fonction spéciale, suivant le même comportement que strerror_r, peut être utilisée pour récupérer la signification d’un code d’erreur particulier. C’est un mécanisme assez courant pour le code C. Mais ce n’est pas ainsi que fonctionnent les langages de script. Dans leur monde, les fonctions sont plutôt censées lever des exceptions.
La semaine dernière, je préparais un rapport d’analyse de données avec Jupyter, Pandas et Matplotlib (pour ne citer que quelques briques de ce fabuleux framework). Une des figures contenait deux sous-graphiques : le second étant un agrandissement d’une région du premier. Pour bien illustrer cela et, au passage, montrer au fanclub MATLAB à quel point ils sont restés “so 90s”, j’ai décidé de tracer une flèche entre les deux sous-graphiques.