Κυκλοφόρησε μια νέα έκδοση του μεταφραστή γλώσσας προγραμματισμού Vala 0.54.0. Η γλώσσα Vala είναι μια αντικειμενοστραφής γλώσσα προγραμματισμού που παρέχει μια σύνταξη παρόμοια με την C# ή την Java. Ο κώδικας Vala μεταφράζεται σε ένα πρόγραμμα C, το οποίο, με τη σειρά του, μεταγλωττίζεται από έναν τυπικό μεταγλωττιστή C σε ένα δυαδικό αρχείο και εκτελείται με την ταχύτητα μιας εφαρμογής που μεταγλωττίζεται σε κώδικα αντικειμένου της πλατφόρμας προορισμού. Είναι δυνατή η εκτέλεση προγραμμάτων σε λειτουργία σεναρίου. Η γλώσσα αναπτύσσεται υπό την αιγίδα του έργου GNOME. Το Gobject (Glib Object System) χρησιμοποιείται ως μοντέλο αντικειμένου. Ο κώδικας μεταγλωττιστή διανέμεται με την άδεια LGPLv2.1.
Η γλώσσα έχει υποστήριξη για ενδοσκόπηση, συναρτήσεις λάμδα, διεπαφές, πληρεξούσιους και κλεισίματα, σήματα και υποδοχές, εξαιρέσεις, ιδιότητες, μη μηδενικούς τύπους, συμπέρασμα τύπου για τοπικές μεταβλητές (var). Η διαχείριση της μνήμης πραγματοποιείται με βάση την καταμέτρηση αναφοράς. Μια γενικευμένη βιβλιοθήκη προγραμματισμού libgee έχει αναπτυχθεί για τη γλώσσα, η οποία παρέχει τη δυνατότητα δημιουργίας συλλογών για προσαρμοσμένους τύπους δεδομένων. Υποστηρίζεται η απαρίθμηση στοιχείων συλλογής με χρήση της δήλωσης foreach. Ο προγραμματισμός των προγραμμάτων γραφικών πραγματοποιείται χρησιμοποιώντας τη βιβλιοθήκη γραφικών GTK.
Το κιτ συνοδεύεται από μεγάλο αριθμό συνδέσεων σε βιβλιοθήκες στη γλώσσα C. Ο μεταφραστής Vala παρέχει υποστήριξη για τη γλώσσα Genie, η οποία παρέχει παρόμοιες δυνατότητες, αλλά με μια σύνταξη εμπνευσμένη από τη γλώσσα προγραμματισμού Python. Προγράμματα όπως το πρόγραμμα-πελάτη ηλεκτρονικού ταχυδρομείου Geary, το γραφικό κέλυφος Budgie, το πρόγραμμα οργάνωσης αρχείων φωτογραφιών και βίντεο Shotwell και άλλα είναι γραμμένα στη γλώσσα Vala. Η γλώσσα χρησιμοποιείται ενεργά στην ανάπτυξη της διανομής Elementary OS.
Βασικές καινοτομίες:
- Προστέθηκε υποστήριξη για εκπροσώπους με μεταβλητό αριθμό παραμέτρων.
- Προστέθηκε προφίλ LIBC, το οποίο είναι συνώνυμο με το προφίλ POSIX.
- Βελτιωμένη παραγωγή σε λειτουργία προφίλ POSIX.
- Προστέθηκε η δυνατότητα δήλωσης μεταβλητών που μπορούν να έχουν μηδενική τιμή με συμπέρασμα τύπου (var?).
- Προστέθηκε η δυνατότητα κήρυξης κλάσεων ως απαγορευμένων για κληρονομικότητα (σφραγισμένες).
- Προστέθηκε τελεστής ασφαλούς πρόσβασης σε πεδία κλάσης που μπορεί να είναι μηδενικά (a.?b.?c).
- Επιτρέπεται η προετοιμασία των περιεχομένων της δομής σε null (const Foo[] BARS = { { "bar", 42 }, null };);
- Η λειτουργία resize() απαγορεύεται για σταθερούς πίνακες.
- Προστέθηκε έξοδος προειδοποίησης όταν προσπαθείτε να μεταδώσετε μια κλήση συνάρτησης στο void ((void)not_void_func();
- Καταργήθηκε ο περιορισμός στους τύπους στοιχείων GLib.Array.
- Διορθώθηκε η κληρονομιά ιδιοκτησίας "unowned var" στη δήλωση foreach().
- Η σύνδεση στο webkit2gtk-4.0 έχει ενημερωθεί στην έκδοση 2.33.3.
- Η σύνδεση στο gstreamer έχει ενημερωθεί στην έκδοση 1.19.0+ git master.
- Η σύνδεση στο gtk4 έχει ενημερωθεί στην έκδοση 4.5.0~e681fdd9.
- Το Binding για gtk+-3.0 έχει ενημερωθεί στην έκδοση 3.24.29+f9fe28ce
- Η σύνδεση στο gio-2.0,glib-2.0 έχει ενημερωθεί στην έκδοση 2.69.0.
- Για το linux, έχουν προστεθεί συνδέσεις στο SocketCAN.
- Διορθώσεις συνδέσεων για glib-2.0, gio-2.0, gstreamer-rtp-1.0, javascriptcoregtk-4.0, gobject-2.0, pango, linux, gsl, rest-0.7, libusb, libusb-1.0, pixman-1, webkit2gt-we επέκταση-4.0, x11, zlib, gnutls;
- Καταργήθηκαν οι δεσμεύσεις gedit-2.20 και webkit-1.0.
- Ενημερωμένες δεσμεύσεις με βάση το GIR.
- Η δυνατότητα ελέγχου του παραγόμενου κώδικα C έχει προστεθεί στο σύστημα δοκιμών.
- Βελτιωμένος girparser, girwriter, valadoc, libvaladoc/girimporter;
- Τα συσσωρευμένα σφάλματα και οι ελλείψεις των διαφόρων στοιχείων μεταγλωττιστή έχουν διορθωθεί.
Πηγή: opennet.ru