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

Δημοσιεύτηκε η κυκλοφορία της γλώσσας προγραμματισμού Crystal 1.2, οι προγραμματιστές της οποίας προσπαθούν να συνδυάσουν την ευκολία ανάπτυξης στη γλώσσα Ruby με την υψηλή απόδοση εφαρμογής που χαρακτηρίζει τη γλώσσα C. Η σύνταξη του Crystal είναι κοντά, αλλά όχι πλήρως συμβατή με τη Ruby, αν και ορισμένα προγράμματα Ruby εκτελούνται χωρίς τροποποίηση. Ο κώδικας μεταγλωττιστή είναι γραμμένος σε Crystal και διανέμεται με την άδεια Apache 2.0.

Η γλώσσα χρησιμοποιεί έλεγχο στατικού τύπου, που υλοποιείται χωρίς να χρειάζεται να προσδιορίζονται ρητά οι τύποι μεταβλητών και τα ορίσματα μεθόδου στον κώδικα. Τα Crystal προγράμματα μεταγλωττίζονται σε εκτελέσιμα αρχεία, με τις μακροεντολές να αξιολογούνται και να δημιουργείται κώδικας κατά το χρόνο μεταγλώττισης. Στα προγράμματα Crystal, είναι δυνατή η σύνδεση συνδέσμων γραμμένων σε C. Ο παραλληλισμός της εκτέλεσης κώδικα πραγματοποιείται χρησιμοποιώντας τη λέξη-κλειδί "spawn", η οποία σας επιτρέπει να εκτελέσετε μια εργασία παρασκηνίου ασύγχρονα, χωρίς να μπλοκάρετε το κύριο νήμα, με τη μορφή ελαφρών νημάτων που ονομάζονται fibers.

Η τυπική βιβλιοθήκη παρέχει ένα μεγάλο σύνολο κοινών λειτουργιών, συμπεριλαμβανομένων εργαλείων για την επεξεργασία CSV, YAML και JSON, στοιχεία για τη δημιουργία διακομιστών HTTP και υποστήριξη WebSocket. Κατά τη διαδικασία ανάπτυξης, είναι βολικό να χρησιμοποιήσετε την εντολή "crystal play", η οποία δημιουργεί μια διεπαφή ιστού (localhost:8080 από προεπιλογή) για διαδραστική εκτέλεση κώδικα στη γλώσσα Crystal.

Βασικές αλλαγές:

  • Προστέθηκε η δυνατότητα εκχώρησης μιας υποκλάσης μιας γενικής κλάσης σε ένα στοιχείο μιας γονικής κλάσης. κλάση Foo(T); end class Bar(T) < Foo(T); τέλος x = Foo x = Bar
  • Οι μακροεντολές μπορούν τώρα να χρησιμοποιούν μια υπογράμμιση για να αγνοήσουν μια τιμή σε έναν βρόχο for. {% για _, v, i σε {1 => 2, 3 => 4, 5 => 6} %} p {{v + i}} {% τέλος %}
  • Προστέθηκε η μέθοδος "file_exists?" στις μακροεντολές. για να ελέγξετε την ύπαρξη αρχείου.
  • Η τυπική βιβλιοθήκη τώρα υποστηρίζει ακέραιους αριθμούς 128 bit.
  • Προστέθηκε μονάδα Indexable::Mutable(T) με υλοποίηση προηγμένων λειτουργιών για συλλογές όπως BitArray και Deque. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • Προστέθηκε μέθοδος XML::Node#namespace_definition για εξαγωγή ενός συγκεκριμένου χώρου ονομάτων από το XML.
  • Οι μέθοδοι IO#write_utf8 και URI.encode έχουν καταργηθεί και θα πρέπει να αντικατασταθούν από τα IO#write_string και URI.encode_path.
  • Η υποστήριξη για αρχιτεκτονική x32 86 bit έχει μετακινηθεί στο δεύτερο επίπεδο (τα έτοιμα πακέτα δεν δημιουργούνται πλέον). Ετοιμάζεται μεταφορά στο πρώτο επίπεδο υποστήριξης για την αρχιτεκτονική ARM64.
  • Συνεχίζονται οι εργασίες για τη διασφάλιση της πλήρους υποστήριξης για την πλατφόρμα των Windows. Προστέθηκε υποστήριξη για υποδοχές Windows.
  • Προστέθηκε ένα καθολικό πακέτο για macOS, το οποίο λειτουργεί τόσο σε συσκευές με επεξεργαστές x86 όσο και σε εξοπλισμό με το τσιπ Apple M1.

Πηγή: opennet.ru

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