Κυκλοφόρησε μια νέα έκδοση της γλώσσας προγραμματισμού συστήματος Nim, η οποία φέτος τον Σεπτέμβριο γιόρτασε την επέτειο ενός έτους. πρώτη σταθερή έκδοση. Η γλώσσα είναι παρόμοια στη σύνταξη με την Python και σχεδόν όπως η C++ στην απόδοση. Σύμφωνα με FAQ Η γλώσσα δανείζεται σε μεγάλο βαθμό από (κατά σειρά συνεισφοράς): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.
Λειτουργεί παντού χάρη στη δυνατότητα μεταγλώττισης σε C/C++/Objective-C/JS. Υποστηρίζει μακροεντολές, OOP, γενικά, εξαιρέσεις, hot code swap και πολλα ΑΚΟΜΑ. Άδεια: MIT.
Οι πιο σημαντικές αλλαγές:
-
Υπάρχει ένας νέος συλλέκτης σκουπιδιών ORC που χρησιμοποιεί τον αλγόριθμο από το ARC, αλλά ταυτόχρονα χειρίζεται τις κυκλικές αναφορές με ειδικό τρόπο. Ενεργοποιήθηκε από την επιλογή -gc:orc. Σχετικά με τις διαφορές ARC/ORC υπάρχει ένα υπέροχο άρθρο.
-
Προστέθηκε μια λειτουργία για αυστηρούς ορισμούς συναρτήσεων, η οποία επιτρέπει έναν πρόσθετο έλεγχο για τη μεταβλητότητα του αντικειμένου. Ενεργοποιείται μέσω του pragma {.experimental: "strictFuncs".} ή μέσω του κλειδιού --experimental:strictFuncs.
-
Η λέξη-κλειδί από μπορεί τώρα να χρησιμοποιηθεί ως τελεστής.
-
Προστέθηκε .noalias pragma. Αντιστοιχίζεται στη λέξη-κλειδί περιορισμού C για να αυξήσει την αποτελεσματικότητα που μπορεί να προσφέρει η λέξη-κλειδί.
-
Οι συγκεκριμένες προειδοποιήσεις μπορούν πλέον να μετατραπούν σε σφάλματα μέσω του --warningAsError[X]:on|off.
-
Νέα εντολή: nim r main.nim [args...], η οποία μεταγλωττίζει και εκτελεί το main.nim και περιλαμβάνει --usenimcache έτσι ώστε το αποτέλεσμα να αποθηκεύεται στο $nimcache/main$exeExt, χρησιμοποιώντας την ίδια λογική με το nim c - r για να απαλλαγείτε από την εκ νέου μεταγλώττιση όταν οι πηγές δεν έχουν αλλάξει. Παράδειγμα:
nim r compiler/nim.nim --help # μεταγλωττίστηκε για πρώτη φορά
echo 'import os; echo getCurrentCompilerExe()' | nim r - # λειτουργεί επίσης
nim r compiler/nim.nim --fullhelp # χωρίς εκ νέου μεταγλώττιση
nim r —nimcache:/tmp main # δυαδικό αποθηκευμένο στο /tmp/main
-
Προστέθηκε μια νέα υπόδειξη -hint:msgOrigin, η οποία θα δείχνει πού ο μεταγλωττιστής δημιούργησε μηνύματα σφάλματος/προειδοποίησης. Αυτό βοηθάει όταν δεν είναι προφανές από πού προήλθε το μήνυμα.
-
Προστέθηκε η σημαία —backend:js|c|cpp|objc (ή -b:js, κ.λπ.) για αλλαγή του backend.
-
Προστέθηκε η σημαία --usenimcache για την έξοδο δυαδικών αρχείων στη nimcache.
-
Κλειδιά καταργήθηκαν: --oldNewlines, --laxStrings, --oldast, --oldgensym
-
Το βοηθητικό πρόγραμμα nimsuggest εμφανίζει τώρα όχι μόνο την προ-δήλωση, αλλά και τη θέση υλοποίησης για ένα αίτημα def.
Επιπλέον, πολλές αλλαγές έχουν προστεθεί στην τυπική βιβλιοθήκη και πολλές διορθώσεις σφαλμάτων.
Πηγή: linux.org.ru