5 points par GN⁺ 2024-04-09 | 1 commentaires | Partager sur WhatsApp
  • Vala est un langage de programmation qui vise à offrir aux développeurs GNOME des fonctionnalités de langage modernes
  • Il n’impose pas d’exigences d’exécution supplémentaires et n’utilise pas d’ABI différent par rapport aux applications et bibliothèques écrites en C
  • Fonctionnalités de langage modernes prises en charge : interfaces, propriétés, signaux, foreach, expressions lambda, inférence de type pour les variables locales, génériques, types non nuls, gestion de la mémoire, gestion des exceptions
  • Il permet d’écrire du code confortablement avec des abstractions de haut niveau dans une approche orientée objet, et s’intègre profondément aux technologies GNOME comme GObject et GTK
  • Il compile le code en binaires natifs très rapides. Il est possible de réutiliser du code C existant dans un programme Vala ou de générer du code C depuis Vala

Compatibilité avec les bibliothèques C existantes

  • Vala a été conçu pour permettre l’accès aux bibliothèques C existantes, en particulier celles basées sur GObject, sans liaisons à l’exécution
  • Il suffit d’avoir des fichiers API contenant les déclarations de classes et de méthodes en syntaxe Vala pour utiliser une bibliothèque avec Vala
  • Vala est actuellement fourni avec des bindings pour GLib et GTK+

Le compilateur Vala valac

  • valac est un compilateur auto-hébergé qui convertit le code source Vala en code source C et en fichiers d’en-tête
  • Il utilise le système de types GObject pour générer les classes et interfaces déclarées dans le code source Vala
  • La syntaxe de Vala est similaire à celle de C#, tout en ayant été adaptée pour mieux correspondre au système de types GObject

Utiliser en C des classes et méthodes écrites en Vala

  • Il suffit d’installer les fichiers d’en-tête générés à partir d’une bibliothèque Vala pour qu’une application C puisse accéder de manière classique à l’API basée sur GObject de cette bibliothèque Vala
  • Le parseur Vala étant conçu comme une bibliothèque et toutes les informations de compilation pouvant être utilisées lors de la génération de bindings, il devrait aussi être facile d’écrire un générateur de bindings permettant à des applications écrites en C#, par exemple, d’accéder à des bibliothèques Vala

L’avis de GN⁺

  • Vala présente l’avantage d’être un langage orienté objet à la syntaxe proche du C et bien intégré aux technologies GNOME. Il est particulièrement adapté au développement d’applications GUI et peut facilement s’interfacer avec GTK, Granite, etc.
  • Vala est un langage spécialisé pour le développement de l’environnement de bureau GNOME, et son utilité dans d’autres domaines semble limitée
  • Avec une syntaxe proche de C#, Vala aidera les développeurs familiers de C# à participer au développement GNOME
  • L’objectif de Vala, qui consiste à préserver la compatibilité avec les bibliothèques C existantes tout en prenant en charge des fonctionnalités de langage modernes, est rafraîchissant, mais cela risque de limiter l’originalité propre du langage
  • Quand on regarde les projets Vala, on voit surtout beaucoup d’applications de bureau pour GNOME ou elementary OS, mais c’est aussi un langage utilisable pour la programmation serveur. Cela dit, l’écosystème y reste encore assez limité
  • Il est difficile de savoir à quel point Vala sera largement adopté, mais dans l’écosystème GNOME, remplacer C par Vala pourrait apporter un gain de productivité appréciable
  • Il existe aussi un langage nommé Genie, dont la syntaxe est proche de Vala et qui peut utiliser les technologies GNOME. Il se distingue par une délimitation des blocs de code par indentation, comme en Python. Cela peut constituer une alternative à Vala

1 commentaires

 
GN⁺ 2024-04-09
Avis Hacker News
  • Des doutes sont exprimés quant à l’existence d’une activité de développement soutenue autour de Vala ces derniers temps. Selon un billet de blog d’un développeur GNOME, Vala est maintenu par une seule personne et n’est pas recommandé pour de nouveaux développements.
  • Un commentateur dit avoir récemment écrit une application en Vala et que l’expérience a été agréable. Comme il voulait une application fonctionnant bien sur Linux desktop et sur le PinePhone, Vala convenait bien, et c’était bien plus plaisant que Python avec de meilleures performances.
  • Vala a un langage frère appelé Genie. Les deux langages sont fondamentalement identiques, mais Vala utilise une syntaxe proche de C# tandis que Genie repose sur une indentation significative à la manière de Python. Les deux sont compilés par le même compilateur (valac).
  • Sur le plan syntaxique, Vala semble très proche de Swift. Au-delà de la syntaxe, Vala ressemble aussi à Swift par son comptage de références de première classe, ses bindings C et sa compilation directe en binaire sans runtime externe.
  • Une question est posée sur le fait de savoir si Vala dispose d’une ABI stable ou d’une compatibilité avec d’autres langages de haut niveau comme C++ ou ObjC. C’est un problème difficile que Swift essaie justement de résoudre.
  • Il est difficile de voir en quoi Vala serait un langage (nettement) plus productif ou plus puissant que Java ou C#. Ses avantages ou le problème qu’il cherche à résoudre ne sont pas clairement établis.
  • Selon un avis, l’un des atouts de Vala est le vaste ensemble de bibliothèques natives accessibles grâce à sa compatibilité avec GObject. Un excellent site de documentation centralisé (valadoc.org) facilite aussi le développement.
  • La plupart des applications « natives » d’elementary OS auraient été écrites en Vala.
  • Un commentateur qui appréciait Geary dit s’être intéressé à Vala pour cette raison, et avoir constaté que c’est un langage élégant, bien adapté à la création de programmes pratiques pour GNOME. Il ajoute toutefois ne pas avoir regardé Vala depuis sept ans.
  • L’usage de Rust pour le développement GNOME devient de plus en plus populaire (gtk-rs.org).