Έκδοση Nim 1.2.0

Κυκλοφόρησε μια νέα έκδοση της γλώσσας προγραμματισμού συστήματος Nim. Έχει μερική ασυμβατότητα με την έκδοση 1.0, για παράδειγμα λόγω αυστηρότερης μετατροπής τύπου. Αλλά σε αυτήν την περίπτωση υπάρχει μια σημαία -useVersion:1.0.

Η κύρια καινοτομία είναι ένας νέος συλλέκτης σκουπιδιών, που ενεργοποιείται από την επιλογή -gc:arc. Ο συγγραφέας της γλώσσας, Andreas Rumpf, πρόκειται να γράψει ένα λεπτομερές άρθρο για τα πλεονεκτήματα του ARC, αλλά προς το παρόν σας προσκαλεί να διαβάσετε με την παράστασή του στο FOSDEM, το οποίο δείχνει τα αποτελέσματα αναφοράς.

  • Ο μεταγλωττιστής υποστηρίζει τώρα την επιλογή --asm για πιο βολική εξέταση του παραγόμενου κώδικα συγκροτήματος.
  • Το align pragma μπορεί να χρησιμοποιηθεί σε μεταβλητές και πεδία αντικειμένων, κάτι παρόμοιο με το alignas στο C/C++.
  • Ο χειριστής =sink είναι πλέον προαιρετικός. Ο μεταγλωττιστής μπορεί τώρα να χρησιμοποιήσει έναν συνδυασμό =destroy και copyMem για να μετακινήσει αντικείμενα αποτελεσματικά.
  • Οι μετατροπές σε ανυπόγραφους ακέραιους αριθμούς δεν ελέγχονται κατά το χρόνο εκτέλεσης. Λεπτομέρειες στο https://github.com/nim-lang/RFCs/issues/175
  • Νέα σύνταξη για lvalue: var b {.byaddr.} = expr, συνδεδεμένη μέσω εισαγωγής std/decls
  • Ο μεταγλωττιστής υποστηρίζει έναν νέο διακόπτη -panics:on, ο οποίος μετατρέπει τα σφάλματα χρόνου εκτέλεσης όπως το IndexError ή το OverflowError σε ανεπανόρθωτα σφάλματα που δεν μπορούν να εντοπιστούν μέσω δοκιμής. Αυτό μπορεί να βελτιώσει την αποτελεσματικότητα του χρόνου εκτέλεσης και το μέγεθος του προγράμματος.
  • Ο παραγόμενος κώδικας JS χρησιμοποιεί μόνο κενά αντί για ένα συνονθύλευμα διαστημάτων και καρτελών.
  • Ο μεταγλωττιστής έχει προσθέσει υποστήριξη για το .localPassc pragma, το οποίο μπορεί να χρησιμοποιηθεί για τον χειρισμό ειδικών επιλογών υποστήριξης C(++) για ένα αρχείο C(++) που δημιουργείται από την τρέχουσα λειτουργική μονάδα Nim.
  • Το Nimpretty δεν δέχεται πλέον ένα αρνητικό επιχείρημα για τη ρύθμιση της εσοχής, καθώς αυτό ήταν το σπάσιμο αρχείων.
  • Έχουν προστεθεί νέες μακροεντολές (συλλογή, αντιγραφή, λήψη), συνδεδεμένες μέσω ζάχαρης εισαγωγής.

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

Πηγή: linux.org.ru

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