Aggiornamento del compilatore del linguaggio di programmazione Vala 0.50.4

È stata rilasciata una nuova versione del compilatore per il linguaggio di programmazione Vala 0.50.4. Sono stati aggiornati anche il ramo di supporto a lungo termine (LTS) Vala 0.48.14 (confezionato per Ubuntu 18.04) e il ramo sperimentale Vala 0.51.3.

Il linguaggio Vala è un linguaggio di programmazione orientato agli oggetti che fornisce una sintassi simile a C# o Java. Gobject (Glib Object System) viene utilizzato come modello a oggetti. La gestione della memoria viene effettuata per proprietà (collegamenti posseduti/non posseduti) o utilizzando ARC (sostituzione dei distruttori e decrementi dei contatori di riferimento agli oggetti in fase di compilazione).

Il linguaggio supporta l'introspezione, funzioni lambda, interfacce, delegati e chiusure, segnali e slot, eccezioni, proprietà, tipi non nulli, inferenza di tipo per variabili locali. Il kit viene fornito con un gran numero di collegamenti alle librerie in C (vala-girs, vala-extra-vapis). I programmi Vala vengono tradotti in rappresentazione C e quindi compilati da un compilatore C standard. È possibile eseguire programmi in modalità script.

Elenco delle modifiche:

  • Aggiunto supporto aggiuntivo per la parola chiave params per i costruttori class Foo{ public Foo(params string[] args){ foreach (var arg in args) print(arg); } }
  • codegeno:
    • Supporto migliorato per i costruttori di strutture SimpleType (ad esempio utilizzati per associare typedef uint32_t people_inside; da C) [SimpleType] [CCode (cname = "people_inside")] public struct PeopleInside : uint32 {}
    • Gestione migliorata dell'attributo "NoWrapper".
    • CCode.type_cname e get_ccode_type_name() sono consentiti per le classi.
    • G_TYPE_INSTANCE_GET_CLASS/INTERFACE viene sempre utilizzato per i simboli esterni.
    • Utilizzato g_boxed_free nel free-wrapper per allocare GLib.Value nell'heap.
    • Risolta una perdita di memoria durante l'unboxing implicito di GLib.Value (un contenitore universale di qualsiasi tipo di valore).
    • Risolta una perdita di memoria durante lo spostamento di una struttura allocata nell'heap in uno stack.
    • L'ereditarietà del distruttore della struttura madre è assicurata
    • È stato migliorato il recupero corretto di symbol_reference delle espressioni cast nidificate.
    • Rimosse tutte le occorrenze nidificate di CCodeCastExpression.
    • Arrestata la chiamata errata al gestore del segnale predefinito.
    • Connesso "string.h" per strcmp() (profilo POSIX, modalità in cui Vala genera codice utilizzando solo la libreria C standard).
  • Vale:
    • Rilevamento migliorato dei file di origine del pacchetto duplicati.
    • I campi/proprietà GtkChild devono essere dichiarati senza proprietario.
    • La riassegnazione del campo/proprietà GtkChild è vietata.
    • Una condizione più rigorosa è stata applicata al lambda durante la delega di un incarico.
    • È vietato utilizzare strutture SimpleType monouso.
    • L'unboxing di GLib.Value garantisce che venga restituito il valore senza proprietario.
    • È vietato eseguire il cast di GLib.Value su un tipo struct/simple nullable.
    • Aggiunto il controllo dell'argomento tipo nelle precondizioni di tipi base/classe/interfaccia.
    • L'acquisizione di parametri/variabili va_list è vietata.
    • I generici contenenti un puntatore a una struttura devono essere convertiti nel tipo corretto quando si accede per evitare C UB.
    • Inferenza del tipo implementata per "in" all'interno dell'enumerazione.
    • Controllo del contesto migliorato per le assegnazioni al campo scrivibile.
    • Incluso "stdlib.h" per Enum.to_string() (POSIX).
    • È impostato il source_reference corretto per le variabili implicite "this" e "result"
    • Fornito un messaggio di errore per un operando interno non valido di espressioni unarie.
  • Сodewriter: interrotta l'aggiunta del ";" finale dopo il corpo WithStatement.
  • Girparser:
    • Viene fornita l'elaborazione di un delegato anonimo non supportato da un metodo o segnale virtuale.
    • Metadati "delegate_target" applicati per metodi e parametri
    • Applica i metadati "destroy_notify_cname" ai campi
    • Applicare i metadati "type_get_function" per classi e interfacce
    • Imposta CCode.type_cname per le classi se non è il valore predefinito.
  • girwriter: garantisce che gli elementi dei parametri dell'istanza siano scritti.
  • girwriter: implementato l'output predefinito del gestore del segnale.
  • libvaladoc/html: Rimosso l'ordinamento dei campi della struttura per lasciare il loro ordine originale durante la generazione della documentazione html valadoc.org
  • libvaladoc: assicurati che i valori per Api.Class.is_compact vengano recuperati correttamente
  • libvaladoc: aggiunto wrapper per la libreria graphviz "agedge".
  • Legami:
    • Correzioni minori durante la generazione di collegamenti: 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, fusibile, libxml-2.0
    • gdk-pixbuf-2.0: corretto Pixbuf.save_to_streamv_async()
    • gio-2.0: correzione del collegamento PollableOutputStream.write*_nonblocking()
    • gio-2.0,gtk+-3.0,gtk4: gli attributi espliciti di tipo c dei parametri va_list vengono scartati
    • gio-2.0: selezionato invocatore mancante per alcuni metodi AppInfo/File.*()
    • glib-2.0: Aggiunti metodi pratici GLib.[S]List.is_empty() per non null
    • glib-2.0: Associazione della funzione assert_cmp* [#395]
    • glib-2.0: tipo di campo OptionEntry.flags migliorato
    • glib-2.0: PtrArray è ora una sottoclasse di GenericArray
    • gstreamer-1.0: CCode.type_id del MiniObject è impostato su G_TYPE_BOXED [#1133]
    • gtk+-2.0,javascriptcoregtk-4.0: corretto uso dell'attributo CCode.type_cname
    • gtk+-3.0,gtk4: risolti alcuni valori e parametri restituiti dai delegati
    • gtk4: aggiornato alla versione 4.0.2.

Fonte: opennet.ru

Aggiungi un commento