Selon les auteurs de Luna, qui qualifient leur solution de « tableau blanc boosté aux stéroïdes », leur langage de programmation fonctionnel permettra d'assembler une l'application par cliquer-glisser des éléments visuels. Le langage, qui devrait être livré en open source dès que la version bêta sera prête, est doté d’un compilateur capable de produire un code natif Linux, MacOS, Windows ou JavaScript à la demande du développeur. L'équipe de Luna recherche des candidats pour tester la version alpha privée.

Les créateurs de Luna font valoir que, parce que les développeurs commencent presque toujours par esquisser les composants et les dépendances sur un tableau blanc avant codage, il n’est pas logique de réserver exclusivement ce mode d’implémentation au code texte. Un logiciel est composé de milliers de lignes de code réparties dans des centaines de fichiers, et l’implémentation de ces lignes de code dans un flux de données visuelles et dans l'architecture de l'application est une source possible d’erreur.

Le profilage visuel pour identifier les goulets d'étranglement

« Des outils comme les diagrammes d'architecture UML ne peuvent traiter que les symptômes et non la source du problème », expliquent encore les créateurs de Luna. Or le langage Luna permet d’obtenir à la fois des représentations visuelles et textuelles. Les développeurs peuvent continuer à coder sans changer leur méthode de travail sauf qu’ils disposent en plus d'une interface graphique sous forme de tableau blanc.

Les représentations visuelles de Luna permettent aux développeurs de voir la structure, le comportement et le flux de données. Ils peuvent également réaliser un prototypage et un profilage visuel pour comprendre où se trouvent les goulets d'étranglement et optimiser la performance. Luna collecte des données statistiques sur le temps de calcul, l'allocation de mémoire CPU/GPU, le transfert réseau et sur le traitement des threads.

Un langage interopérable avec Python ou Haskell

Le langage offre également un certain nombre de fonctionnalités comme le parallélisme, des fonctions exécutives d'ordre supérieur, une sémantique non stricte, des types de données algébriques définissables par l'utilisateur, un système I/O monadique avec un vérificateur de type et un influenceur capable de savoir quelles fonctions relèvent d’actions d'I/O et lesquelles sont pures, une gestion des erreurs de flux de données, un système de type à forte dépendance.

Luna prend également en charge l'interopérabilité des langages, c’est-à-dire que les développeurs peuvent créer un nœud « extérieur » et le coller dans du code Python ou Haskell. L'interopérabilité avec JavaScript et C++ est également prévue. Mais les créateurs de Luna préviennent que les autres langages n’ont pas été conçus pour la représentation visuelle et que leur code source ne peut pas être représenté graphiquement à l’image de ce que peut faire le code de Luna.