Title: Lettre n°15 — 16 mars 2026
Date: 2026-03-16 09:00
Category: Newsletter
JsonLD:  <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "BlogPosting", "name": "Lettre n°15", "description": "Lettre de veille technologique en développement logiciel", "image": [ "https://www.craftletter.fr/images/craftletter.svg" ], "datePublished": "Mon Mar 16 2026 09:00:00 GMT+0200 (Coordinated Universal Time)", "author": { "@type": "Person", "name": "Pascal Le Merrer", "url": "https://www.linkedin.com/in/pascal-le-merrer/" } } </script>
<img class="logo" alt="Logo Craft Letter" src="{static}/images/craftletter.svg">

## Pourquoi Web Assembly est-il un langage de seconde zone&nbsp;?

D’après Ryan Hunt, [Web Assembly n’est pas un langage de premier plan](https://hacks.mozilla.org/2026/02/making-webassembly-a-first-class-language-on-the-web/)🇬🇧, pour deux raisons&nbsp;:

* d’abord, le chargement du code Web Assembly dans une page web n’est pas aussi simple que celui du JavaScript&nbsp;; il existe plusieurs méthodes pour le faire, chacune avec des limitations&nbsp;;
* ensuite, Web Assembly ne peut accéder aux APIs Web qu’à travers JavaScript, et cela requiert un code assez compliqué.

Il explique comment les Web Assembly Components pourraient résoudre ces problèmes et procurer une meilleur expérience de développement.

## Unison

Beaucoup de nouveaux langages de programmation ne proposent que des évolutions incrémentales par rapport à l’existant. Ça ne veut pas dire qu’ils soient dénués d’intérêt, loin de là. J’apprécie beaucoup Gleam, comme vous le savez si vous lisez régulièrement cette newsletter, mais il n’est pas révolutionnaire&nbsp;: Louis Pilfold s’est inspiré de ce qu’il appréciait dans Go, JavaScript, Ocaml, Rust, Erlang, Elixir, Elm et Alpaca, puis en a fait une synthèse, particulièrement réussie. Le seul concept un peu nouveau, il me semble, c’est [le mot-clé `use`](https://gleam.run/news/v0.25-introducing-use-expressions/)🇬🇧, mais ce n’est que du sucre syntaxique, qui évite le "callback hell".

[Unison](https://www.unison-lang.org/)🇬🇧 ne rentre pas dans cette catégorie&nbsp;: il propose une vraie innovation. Chaque fonction est référencée non pas par son nom, mais par le hash de son AST (Arbre Syntaxique Abstrait). Le nom n’est qu’une métadonnée de la fonction. Ainsi, vous pouvez renommer une fonction sans que cela impacte le code qui l’appelle. C’est utile quand vous le ne maîtrisez pas, par exemple si vous êtes l’auteur d’une librairie utilisée par des tiers.

Chaque fonction est compilée séparément, puis stockée dans une base de données spécialisée appelée Unison Code Manager —au lieu d’en stocker le code source dans Git ou un équivalent. De ce fait, les temps de compilation sont proches de 0. Cela permet également de faire cohabiter différentes versions d’une fonction, pas seulement la dernière. UCM peut aussi détecter que l’implémentation d’une fonction que votre code utilise a changé, et vous en avertir.

[La présentation de Dejan Miličić](https://www.youtube.com/watch?v=mQHo2Csqs5w)🇬🇧 détaille les nombreuses conséquences de ces choix inhabituels et les possibilités qu’elles offrent.

Le revers de la médaille, c’est que l’usage à des fins commerciales de Unison est payant.

## Réduire la taille des binaires Go

Le compilateur du langage Go élimine le code mort… En général&nbsp;! Mais dans certaines conditions, il ne va pas le faire. Cela peut faire croître la taille d’une application de façon injustifiée.

Sergio de Simone raconte comment des ingénieurs de chez Datadog ont réussi à [réduire la taille des binaires d’une de leurs applications de 77%](https://www.infoq.com/news/2026/03/datadog-go-binary-optimization/)🇬🇧.

## State of Rust

Les résultats du sondage [State Of Rust 2025](https://blog.rust-lang.org/2026/03/02/2025-State-Of-Rust-Survey-results/)🇬🇧 sont disponibles. Je vous laisse les découvrir, je me contenterais de mettre l’accent sur ce qui m’a interpelé.

Le premier point concerne la complexité du langage. Sans surprise, elle est mentionnée comme un obstacle  par un quart des 417 développeurs qui ont répondu au sondage, mais n’utilisent pas Rust. Or les répondants au sondage ne sont pas représentatifs de la population des développeurs en général. Si l’on faisait un sondage auprès d’un public plus large, je soupçonne que ce pourcentage serait encore plus élevé —mais c’est peut-être un biais de confirmation de ma part.

Le second point, m’a plus surpris&nbsp;: la croissance de la complexité du langage dans les années à venir est l’une des plus grandes craintes de 40% des répondants.  

Cela me rappelle un article que j’ai cité dans [la lettre n°2](https://www.craftletter.fr/lettre-ndeg2-15-decembre-2025.html)🇫🇷, dans lequel Sinclair Target explique que ce qui rend Rust si difficile à apprendre, ce ne serait pas la gestion de la mémoire, mais la multiplicité des concepts du langage. 

## State of Haskell

Hasard du calendrier, la Fondation Haskell vient de publier les résultats du sondage [State Of Haskell 2025](https://discourse.haskell.org/t/state-of-haskell-2025-results/13755)🇬🇧.

## Refonte de Curling IO

Dave Rapin détaille, dans une série de billets de blog, les choix techniques pour la [refonte du site Curling IO](https://curling.io/blog/the-next-version-of-curling-io)🇬🇧, principalement dédié à la gestion de clubs de curling (on ne rigole pas, c’est un sport infiniment plus populaire au Canada qu’en France). 

Il explique pourquoi ils abandonnent Rails, Elm et Postgresql au profit de Gleam et Sqlite&nbsp;; mais aussi les autres solutions considérées, et les gains attendus. Il mentionne également pourquoi ils passent d’AWS à OVH pour l’hébergement.

Dans les articles suivants, il détaille les choix d’architecture, les compromis et les limitations pour la localisation, l’authentification, la gestion des tâches asynchrones, la base de données, les tests… Il montre également comment le trio Beam (la machine virtuelle d’Erlang), Gleam, et Sqlite simplifie l’architecture, ce qui réduit significativement les coûts d’hébergement et d’exploitation. 

## Software Delivery Stories

Le [podcast Software Delivery Stories](https://castbox.fm/channel/Software-Delivery-Stories-id5728025?country=fr)🇫🇷 propose à chaque épisode une interview d’un expert qui parle de son expérience en déploiement de logiciels. Le fil conducteur de ce podcast, c’est Accelerate. L’épisode 0 rappelle ce qu’est Accelerate.

Les épisodes durent entre une heure et une heure trente. Après un rythme mensuel au début, les épisodes se sont espacés.

## Générer automatiquement un changelog

[Git Cliff](https://github.com/orhun/git-cliff)🇬🇧 est un outil capable de générer automatiquement le changelog d’un logiciel, à partir du moment où vous utilisez des messages de commits qui respectent le principe des [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/)🇬🇧. 

## Diff avec coloration syntaxique
[Deff](https://github.com/flamestro/deff)🇬🇧 est un outil de diff pour Git, qui fonctionne dans le terminal. Il supporte la coloration syntaxique, en se basant sur les fichiers de configuration de Sublime Text, qu’il faut copier dans un sous-répertoire du projet. Il affiche les fichiers modifiés dans leur intégralité, au sein d’une interface qui utilise la totalité de la fenêtre, et dans laquelle on navigue avec des commandes similaires à celles de VI. 

[Difftastic](https://difftastic.wilfred.me.uk/)🇬🇧 est aussi un outil de diff, qui utilise des LSP installés localement pour identifier et mettre en évidence les différences. Contrairement à Deff, il n’affiche que les modifications et quelques lignes de contexte, comme Git diff, mais sur deux colonnes (par défaut). Il est compatible avec Jujutsu, Mercurial et Fossil. 

## Créer des slides dans le terminal

[Ratride](https://amagi.dev/ratride/)🇬🇧 est un outil pour créer et afficher des slides à partir du terminal. Les slides sont décrits dans un fichier markdown.

[Presenterm](https://mfontanini.github.io/presenterm/introduction.html)🇬🇧 est un équivalent. Par rapport à Ratride, il propose des fonctionnalités comme l’exécution d’extraits de code, l’affichage de diagrammes Mermaid, de diagrammes D2, et de formules Latex ou Typst. Il supporte également les notes du présentateur/de la présentatrice, qu’il affiche dans une seconde fenêtre. 

Ratride se distingue de Presenterm par son support des animations et des transitions entre les slides, ainsi que sa capacité à  afficher des titres en ASCII art dans diverses polices et couleurs.

