Νέα έκδοση της γλώσσας προγραμματισμού Nim 0.20

πήρε θέση έκδοση γλώσσας προγραμματισμού συστήματος Nim 0.20.0. Η γλώσσα χρησιμοποιεί στατική πληκτρολόγηση και δημιουργήθηκε με γνώμονα τα Pascal, C++, Python και Lisp. Ο πηγαίος κώδικας Nim μεταγλωττίζεται σε αναπαράσταση C, C++ ή JavaScript. Στη συνέχεια, ο κώδικας C/C++ που προκύπτει μεταγλωττίζεται σε ένα εκτελέσιμο αρχείο χρησιμοποιώντας οποιονδήποτε διαθέσιμο μεταγλωττιστή (clang, gcc, icc, Visual C++), ο οποίος σας επιτρέπει να επιτύχετε απόδοση κοντά στο C, εάν δεν λάβετε υπόψη το κόστος εκτέλεσης ο συλλέκτης σκουπιδιών. Παρόμοια με την Python, το Nim χρησιμοποιεί εσοχή ως οριοθέτες μπλοκ. Υποστηρίζονται εργαλεία και δυνατότητες μεταπρογραμματισμού για τη δημιουργία γλωσσών για συγκεκριμένο τομέα (DSL). Κωδικός έργου παρέχονται υπό την άδεια του MIT.

Η έκδοση Nim 0.20 μπορεί να θεωρηθεί υποψήφια για την πρώτη σταθερή έκδοση 1.0, ενσωματώνοντας αρκετές αλλαγές διαλειτουργικότητας που απαιτούνται για να σχηματιστεί ο πρώτος σταθερός κλάδος που θα δεσμεύσει την κατάσταση της γλώσσας. Η έκδοση 1.0 διαφημίζεται ως μια σταθερή, μακροπρόθεσμη έκδοση υποστήριξης που θα είναι εγγυημένη ότι θα διατηρήσει τη συμβατότητα προς τα πίσω στο σταθεροποιημένο τμήμα της γλώσσας. Ξεχωριστά, ο μεταγλωττιστής θα έχει επίσης διαθέσιμη μια πειραματική λειτουργία, στην οποία θα αναπτυχθούν νέες δυνατότητες που ενδέχεται να παραβιάζουν τη συμβατότητα προς τα πίσω.

Μεταξύ των αλλαγών που προτείνονται στο Nim 0.20 είναι:

  • Το "όχι" είναι τώρα πάντα ένας μοναδικός τελεστής, δηλ. εκφράσεις όπως "δηλώνω (όχι α)" δεν επιτρέπονται πλέον και επιτρέπεται μόνο "υποστηρίζω όχι α".
  • Ενεργοποίησε αυστηρούς ελέγχους για τη μετατροπή ακεραίων και πραγματικών αριθμών στο στάδιο της μεταγλώττισης, π.χ. η έκφραση "const b = uint16(-1)" θα οδηγήσει τώρα σε σφάλμα, αφού το -1 δεν μπορεί να μετατραπεί σε ανυπόγραφο ακέραιο τύπο.
  • Παρέχεται αποσυσκευασία των πλειάδων για σταθερές και μεταβλητές βρόχου.
    Για παράδειγμα, τώρα μπορείτε να χρησιμοποιήσετε αναθέσεις όπως 'const (d, e) = (7, "eight")" και "for (x, y) in f";

  • Παρέχεται προεπιλεγμένη προετοιμασία των κατακερματισμών και των πινάκων. Για παράδειγμα, αφού δηλώσετε "var s: HashSet[int]", μπορείτε να εκτελέσετε αμέσως το "s.incl(5)", το οποίο προηγουμένως οδήγησε σε σφάλμα.
  • Βελτιωμένες πληροφορίες σφάλματος για προβλήματα που σχετίζονται με τον τελεστή "περίπτωση" και το ευρετήριο πίνακα εκτός ορίων.
  • Απαγορεύεται η αλλαγή του μήκους του πίνακα κατά την επανάληψη.

Πηγή: opennet.ru

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