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

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

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

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

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

  • Ο μεταγλωττιστής έχει προσθέσει έναν έλεγχο για την αντιστοιχία των ονομάτων ορισμάτων στην υλοποίηση μιας αφηρημένης μεθόδου και στον ορισμό της. Εάν υπάρχει αναντιστοιχία ονόματος, εκδίδεται τώρα μια προειδοποίηση: abstract class FooAbstract abstract def foo(αριθμός : Int32) : Nil end class Foo < FooAbstract def foo(όνομα : Int32) : Μηδενικό p όνομα τέλος τέλος 6 | def foo(name : Int32) : Nil ^— Προειδοποίηση: η παράμετρος θέσης 'name' αντιστοιχεί στην παράμετρο 'number' της παρακαμφθείσας μεθόδου FooAbstract#foo(number : Int32), η οποία έχει διαφορετικό όνομα και μπορεί να επηρεάσει τη μετάδοση ορισμάτων με όνομα
  • Όταν αντιστοιχίζετε ένα όρισμα σε μια μη τυποποιημένη μέθοδο στην τιμή μιας μεταβλητής, το όρισμα περιορίζεται πλέον στον τύπο αυτής της μεταβλητής. κλάση Foo @x : Int64 def initialize(x) @x = x # παράμετρος x θα πληκτρολογηθεί @x τέλος τέλος
  • Σας επιτρέπει να προσθέτετε σχολιασμούς σε παραμέτρους μεθόδων ή μακροεντολών. def foo(@[MaybeUsed] x); τέλος # ΟΚ
  • Προστέθηκε υποστήριξη για τη χρήση σταθερών ως δεικτών και ονομάτων σε πλειάδες. KEY = "s" foo = {s: "String", n: 0} βάζει foo[KEY].size
  • Νέες μέθοδοι File#delete? έχουν προστεθεί στο File API για τη διαγραφή αρχείων και καταλόγων. και Dir#delete?, τα οποία επιστρέφουν false εάν λείπει το αρχείο ή ο κατάλογος.
  • Η προστασία της μεθόδου File.tempfile έχει ενισχυθεί, η οποία πλέον δεν επιτρέπει μηδενικούς χαρακτήρες στις γραμμές που σχηματίζουν το όνομα του αρχείου.
  • Προστέθηκε η μεταβλητή περιβάλλοντος NO_COLOR, η οποία απενεργοποιεί την επισήμανση χρώματος στην έξοδο του μεταγλωττιστή και του διερμηνέα.
  • Η εργασία σε λειτουργία διερμηνέα έχει βελτιωθεί σημαντικά.

Πηγή: opennet.ru

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