Mise à jour du compilateur du langage de programmation Vala 0.50.4

Une nouvelle version du compilateur pour le langage de programmation Vala 0.50.4 a été publiée. La branche de support à long terme (LTS) Vala 0.48.14 (packagée pour Ubuntu 18.04) et la branche expérimentale Vala 0.51.3 ont également été mises à jour.

Le langage Vala est un langage de programmation orienté objet qui fournit une syntaxe similaire à C# ou Java. Gobject (Glib Object System) est utilisé comme modèle objet. La gestion de la mémoire s'effectue par propriété (liens possédés/non possédés) ou par ARC (substitution de destructeurs et décrémentations de compteurs de références d'objets au stade de la compilation).

Le langage prend en charge l'introspection, les fonctions lambda, les interfaces, les délégués et les fermetures, les signaux et les emplacements, les exceptions, les propriétés, les types non nuls, l'inférence de type pour les variables locales. Le kit est livré avec un grand nombre de liaisons vers des bibliothèques en C (vala-girs, vala-extra-vapis). Les programmes Vala sont traduits en représentation C puis compilés par un compilateur standard C. Il est possible d'exécuter des programmes en mode script.

Liste des modifications:

  • Ajout d'un support supplémentaire pour le mot-clé params pour les constructeurs class Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
  • codegène :
    • Prise en charge améliorée des constructeurs de structures SimpleType (par exemple utilisés pour lier typedef uint32_t people_inside ; à partir de C) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside : uint32 {}
    • Gestion améliorée de l'attribut « NoWrapper ».
    • CCode.type_cname et get_ccode_type_name() sont autorisés pour les classes.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE est toujours utilisé pour les symboles externes.
    • Utilisé g_boxed_free dans free-wrapper pour allouer GLib.Value sur le tas.
    • Correction d'une fuite de mémoire lors du déballage implicite de GLib.Value (un conteneur universel de tout type de valeur).
    • Correction d'une fuite de mémoire lors du déplacement d'une structure allouée au tas vers une pile.
    • L'héritage du destructeur de la structure parent est assuré
    • La récupération correcte de symbol_reference des expressions de conversion imbriquées a été améliorée.
    • Suppression de toutes les occurrences imbriquées de CCodeCastExpression.
    • Arrêt de l'appel incorrect du gestionnaire de signal par défaut.
    • "string.h" connecté pour strcmp() (profil POSIX, mode dans lequel Vala génère du code en utilisant uniquement la bibliothèque C standard).
  • Vala :
    • Détection améliorée des fichiers sources de packages en double.
    • Les champs/propriétés GtkChild doivent être déclarés sans propriétaire.
    • La réaffectation du champ/propriété GtkChild est interdite.
    • Une condition plus stricte a été appliquée au lambda lors de la délégation d'une mission.
    • Il est interdit d’utiliser des structures SimpleType à usage unique.
    • Le déballage de GLib.Value garantit que la valeur sans propriétaire est renvoyée.
    • La conversion de GLib.Value en un type struct/simple nullable est interdite.
    • Ajout de la vérification des arguments de type dans les conditions préalables des types de base/classe/interface.
    • La capture des paramètres/variables va_list est interdite.
    • Les génériques contenant un pointeur vers une structure doivent être convertis dans le type correct lors de l'accès pour éviter C UB.
    • Implémentation de l'inférence de type pour "in" à l'intérieur de l'énumération.
    • Vérification contextuelle améliorée pour les affectations au champ accessible en écriture.
    • Inclus "stdlib.h" pour Enum.to_string() (POSIX).
    • La source_reference correcte est définie pour les variables implicites "this" et "result"
    • Fourni un message d'erreur pour un opérande interne non valide d'expressions unaires.
  • Сodewriter : Arrêt de l'ajout du ";" final après le corps WithStatement.
  • Girparseur :
    • Le traitement d'un délégué anonyme non soutenu par une méthode ou un signal virtuel est fourni.
    • Métadonnées "delegate_target" appliquées pour les méthodes et les paramètres
    • Appliquer les métadonnées "destroy_notify_cname" aux champs
    • Appliquer les métadonnées "type_get_function" pour les classes et les interfaces
    • Définissez CCode.type_cname pour les classes si ce n'est pas la valeur par défaut.
  • girwriter : garantit que les éléments des paramètres d'instance sont écrits.
  • girwriter : implémentation de la sortie du gestionnaire de signal par défaut.
  • libvaladoc/html : Suppression du tri des champs de structure pour conserver leur ordre d'origine lors de la génération de la documentation HTML valadoc.org
  • libvaladoc : Assurez-vous que les valeurs d'Api.Class.is_compact sont correctement récupérées
  • libvaladoc : ajout d'un wrapper pour la bibliothèque graphviz "agedge"
  • Reliures :
    • Corrections mineures lors de la génération de liaisons : cairo, gobject-2.0, pango, goocanvas-2.0, Curses, alsa, bzlib, sqlite3, libgvc, posix, gstreamer-1.0, gdk-3.0, gdk-x11-3.0, gtk+-3.0, gtk4, fusible, libxml-2.0
    • gdk-pixbuf-2.0 : Correction de Pixbuf.save_to_streamv_async()
    • gio-2.0 : correctif de liaison PollableOutputStream.write*_nonblocking()
    • gio-2.0,gtk+-3.0,gtk4 : les attributs explicites de type C des paramètres va_list sont ignorés
    • gio-2.0 : invocateur manquant sélectionné pour certaines méthodes AppInfo/File.*()
    • glib-2.0 : Ajout des méthodes pratiques GLib.[S]List.is_empty() pour les valeurs non nulles
    • glib-2.0 : Liaison de la fonction assert_cmp* [#395]
    • glib-2.0 : type de champ OptionEntry.flags amélioré
    • glib-2.0 : PtrArray est désormais une sous-classe de GenericArray
    • gstreamer-1.0 : CCode.type_id du MiniObject est défini sur G_TYPE_BOXED [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0 : Utilisation corrigée de l'attribut CCode.type_cname
    • gtk+-3.0,gtk4 : correction de certaines valeurs et paramètres de retour des délégués
    • gtk4 : mis à jour vers la version 4.0.2.

Source: opennet.ru

Ajouter un commentaire