Έκδοση της γλώσσας προγραμματισμού Haxe 4.2

Διατίθεται μια έκδοση της εργαλειοθήκης Haxe 4.2, η οποία περιλαμβάνει την ομώνυμη γλώσσα προγραμματισμού υψηλού επιπέδου πολλαπλών παραδειγμάτων με ισχυρή πληκτρολόγηση, ένα cross-compiler και μια τυπική βιβλιοθήκη συναρτήσεων. Το έργο υποστηρίζει μετάφραση σε C++, HashLink/C, JavaScript, C#, Java, PHP, Python και Lua, καθώς και μεταγλώττιση σε JVM, HashLink/JIT, Flash και Neko bytecode, με πρόσβαση στις εγγενείς δυνατότητες κάθε πλατφόρμας στόχου. Ο κώδικας μεταγλωττιστή διανέμεται με την άδεια GPLv2 και η τυπική βιβλιοθήκη και οι εικονικές μηχανές HashLink και Neko που αναπτύχθηκαν για το Haxe έχουν άδεια χρήσης με την άδεια MIT.

Η γλώσσα είναι προσανατολισμένη στην έκφραση με έντονη πληκτρολόγηση. Υποστηρίζονται αντικειμενοστρεφείς, γενικές και λειτουργικές τεχνικές προγραμματισμού. Η σύνταξη του Haxe πλησιάζει το ECMAScript και το επεκτείνει με χαρακτηριστικά όπως στατική πληκτρολόγηση, αυτόματη συμπερασματολογία, αντιστοίχιση μοτίβων, γενικά, επαναλήπτες για βρόχους, μακροεντολές AST, GADT (γενικοποιημένοι αλγεβρικοί τύποι δεδομένων), αφηρημένοι τύποι, ανώνυμες δομές, απλοποιημένες πίνακες ορισμών, εκφράσεις για μεταγλώττιση υπό όρους, επισύναψη μεταδεδομένων σε πεδία, κλάσεις και εκφράσεις, παρεμβολή συμβολοσειρών ('My name is $name'), παράμετροι τύπου ('new Main (“foo”)') και πολλά άλλα. class Test { static function main() { final people = [ "Elizabeth" => "Programming", "Joel" => "Design" ]; for (όνομα => δουλειά σε άτομα) { trace('$name κάνει $job για τα προς το ζην!'); } }

Νέες δυνατότητες στην έκδοση 4.2:

  • Δήλωση στατικών μεταβλητών και συναρτήσεων σε επίπεδο λειτουργικής μονάδας, χωρίς να χρειάζεται να αναδιπλωθούν σε μια κλάση.
  • Υποστήριξη για «κλασικές» αφηρημένες τάξεις και συναρτήσεις.
  • Εγγενής υλοποίηση μεταβλητών συναρτήσεων για όλες τις πλατφόρμες προορισμού (haxe.Rest) και προσθήκη του τελεστή επέκτασης ορίσματος "f(...array)".
  • Υλοποίηση βρόχου συμβάντων για μεμονωμένα νήματα (“sys.thread.Thread.events”).
  • Μεταδεδομένα "@:inheritDoc" για κληρονομική τεκμηρίωση τύπου/πεδίου.
  • Υποστήριξη υπερφόρτωσης μεθόδων για εξωτερικές μεθόδους σε όλες τις πλατφόρμες-στόχους.
  • Προώθηση του κατασκευαστή που βρίσκεται κάτω από τον τύπο του στην περίληψη χρησιμοποιώντας τα μεταδεδομένα "@:forward.new".
  • Προστέθηκε ο κατασκευαστής "EIs" στο "haxe.macro.Expr".
  • Δυνατότητα δημιουργίας παραλλαγής αφηρημένου τύπου με "@:forward.variance".
  • Αναπαράσταση του τύπου "Οποιοδήποτε" ως "Δυναμικό" κατά την ενοποίηση παραλλαγής.
  • Προστέθηκαν ορισμένοι βασικοί τύποι εξαιρέσεων στο πακέτο "haxe.exceptions".
  • Υποστήριξη για την επισύναψη μεταδεδομένων κατά τη δήλωση μεταβλητών.
  • Η συνάρτηση "StringTools.unsafeCharAt" χρησιμοποιείται για την επανάληψη συμβολοσειρών.
  • eval (διερμηνέας): Προστέθηκαν δεσίματα στο "libuv" στο πακέτο "eval.luv".
  • eval: δεσμεύσεις σε εγγενείς υλοποιήσεις των "Int64" και "UInt64" μέσω του πακέτου "eval.integers".
  • cs: Υλοποίηση υποδοχής UDP.
  • cs: ενότητα "cs.Syntax" για ενσωματωμένες εισαγωγές κώδικα C#.
  • jvm: Προστέθηκε η σημαία "-D jvm.dynamic-level=x" για τον έλεγχο του αριθμού των βελτιστοποιήσεων που δημιουργούνται για δυναμικό κώδικα. 0 = κανένα, 1 = βελτιστοποίηση ανάγνωσης/εγγραφής πεδίου, 2 = κλείσιμο μεθόδων κατά το χρόνο μεταγλώττισης.
  • java, jvm: Υποστήριξη για τη σημαία "--java-lib <κατάλογος>".
  • python: threading υλοποίηση API.

Γενικές βελτιώσεις:

  • Το "expr is SomeType" δεν απαιτεί αναδίπλωση σε παρένθεση.
  • Αυξημένη προτεραιότητα για επεκτάσεις τύπου "@:using".
  • Επιτρέπει τη χρήση επεκτάσεων στατικού τύπου μέσω "super".
  • Δυνατότητα ορισμού μεταδεδομένων σε πεδία «@:noDoc».
  • Ο αφηρημένος τύπος "Χάρτης" γίνεται μεταβατικός.
  • Υποστήριξη για "@:native" σε enum constructors.
  • Υποστήριξη για "@:using" σε δηλώσεις τύπου ("typedefs").
  • Τα σφάλματα πολλαπλών γραμμών χρησιμοποιούν το "..." ως πρόθεμα για τις επόμενες γραμμές.
  • Το συμπέρασμα τύπου έχει επεξεργαστεί εκ νέου, οι ανώνυμες δομές μετατρέπονται καλύτερα σε ρητούς τύπους και "κλείνουν" όταν ολοκληρωθεί η συνάρτηση.
  • Συναγωγή του τύπου των συναρτήσεων χωρίς ορίσματα ως "()->..." αντί για "Κενό->...".
  • Η λέξη-κλειδί "συνάρτηση" επιτρέπεται ως όνομα πακέτου.
  • Βελτιωμένη επένδυση αντικειμένων.
  • cs: Προστέθηκε υποστήριξη για .NET 5.0.
  • cpp: Υποστήριξη για εγγενείς κατασκευαστές για εξωτερικές κλάσεις.
  • php: Προστέθηκε το "php.Syntax.customArrayDecl" για να δηλώσει έναν εγγενή πίνακα.
  • php: Ενημερωμένες εξωτερικές μεθόδους για διάφορες συναρτήσεις και κλάσεις.
  • php: Βελτιστοποιημένη υλοποίηση ανώνυμων δομών.
  • hl: Παράλειψη μεταγλώττισης εάν δεν υπάρχουν αλλαγές σε λειτουργικές μονάδες.
  • lua: Χρησιμοποιώντας το "hx-lua-simdjson" για την ανάλυση του json.
  • jvm: Μειωμένος φόρτος CPU στην υλοποίηση "sys.thread.Lock".
  • js: Βελτιωμένη συμβατότητα με το Google Closure Compiler.
  • Null Safety: Σκεφτείτε το "@:nullSafety(Off)" όταν δηλώνετε μεταβλητές: "var @:nullSafety(Off) v".

Επίσης, η προσθήκη στον επεξεργαστή VSCode ενημερώθηκε στη νέα έκδοση του μεταγλωττιστή, στην οποία εμφανίστηκαν υποδείξεις με τη δημιουργία πεδίων διεπαφών που λείπουν, απλές και αφηρημένες κλάσεις, καθώς και μεθόδους ιδιοτήτων.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο