Κυκλοφορία της γλώσσας προγραμματισμού Nim 1.4.0

Κυκλοφόρησε μια νέα έκδοση της γλώσσας προγραμματισμού συστήματος 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