Présenté par ses développeurs comme « un langage de programmation convivial du futur », le langage open source Unison repose sur la notion fondamentale que le code est immuable et identifié par son contenu. Désormais en version alpha publique, Unison sera suivi par plusieurs versions alpha importantes, avec une release de production prévue cette année. Le langage est spécialement destiné à la construction de systèmes distribués. Pour les créateurs de Unison, une technologie de développement logiciel doit être conçue de manière réfléchie dans tous ses aspects. Les complexités doivent être éliminées. « Unison a démarré comme un projet de recherche dont le but était de repenser la manière dont fonctionnait la programmation », a déclaré Paul Chiusano, l’un des principaux développeurs du langage.

Encore au stade expérimental, Unison est un langage de programmation fonctionnel typé statiquement, semblable à Haskell. Unison permet notamment de décrire des systèmes distribués, une gestion simplifiée de la base de code et le renommage simple. Dans Unison, les définitions sont identifiées par leur contenu, chaque définition constituant un arbre syntaxique. En hachant l'arbre d'une manière qui incorpore les hachages des dépendances de la définition, le hachage Unison identifie de façon unique cette définition. L’ambition de cette fonctionnalité est d’améliorer sérieusement l'expérience de programmation, en éliminant les builds et la plupart des conflits de dépendances, en permettant un déploiement facile du code et un stockage durable des types.

Pour la modification du code, Unison propose un processus structuré où la nouvelle version compilée du code est construite de façon incrémentale. La méthode présente des avantages. En particulier, la base de code est toujours exécutable et jamais cassée, ce qui évite d’avoir à mettre à jour la base de code dans sa totalité. Une fonction Remote.Transfer dans le langage fournit un « effet à distance » qui facilite le calcul sur plusieurs nœuds Unison. Le transfert dynamique de calculs arbitraires est possible, parce que les définitions dans Unison sont identifiées par un hachage cryptographique de leur contenu. Quand les calculs sont transférés, le nœud destinataire vérifie si le contenu fait référence à des hachages inconnus. Les hachages inconnus sont synchronisés avec le destinataire avant la fin du transfert et le début du calcul.

Unisson est téléchargeable sur le site du projet (https://www.unisonweb.org/docs) et sur GitHub