Keluaran bahasa pengaturcaraan Nim 1.4.0

Versi baharu bahasa pengaturcaraan sistem Nim telah dikeluarkan, yang pada bulan September ini meraikan ulang tahun satu tahunnya. versi stabil pertama. Bahasa ini serupa dalam sintaks kepada Python, dan hampir seperti C++ dalam prestasi. mengikut Soalan Lazim Bahasa ini banyak meminjam daripada (mengikut urutan sumbangan): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Berfungsi di mana-mana berkat keupayaan untuk menyusun dalam C/C++/Objective-C/JS. Ia menyokong makro, OOP, generik, pengecualian, pertukaran kod panas dan banyak lagi. Lesen: MIT.

Perubahan yang paling ketara:

  • Terdapat pengumpul sampah ORC baharu yang menggunakan algoritma daripada ARC, tetapi pada masa yang sama mengendalikan rujukan pekeliling dengan cara yang istimewa. Didayakan oleh pilihan -gc:orc. Mengenai perbezaan ARC/ORC ada artikel yang bagus.

  • Mod untuk definisi fungsi yang ketat telah ditambahkan, yang membolehkan pemeriksaan tambahan untuk kebolehubah objek. Diaktifkan melalui pragma {.experimental: "strictFuncs".} atau melalui kekunci --experimental:strictFuncs.

  • Kata kunci daripada kini boleh digunakan sebagai pengendali.

  • Menambahkan .noalias pragma. Ia memetakan kepada kata kunci sekatan C untuk meningkatkan kecekapan yang boleh diberikan oleh kata kunci itu.

  • Amaran khusus kini boleh ditukar menjadi ralat melalui --warningAsError[X]:on|off.

  • Perintah baharu: nim r main.nim [args...], yang menyusun dan menjalankan main.nim, dan termasuk --usenimcache supaya hasilnya disimpan dalam $nimcache/main$exeExt, menggunakan logik yang sama seperti nim c - r untuk menyingkirkan daripada penyusunan semula apabila sumber tidak berubah. Contoh:

nim r compiler/nim.nim --help # compiler buat kali pertama
echo 'import os; echo getCurrentCompilerExe()' | nim r - # ini juga berfungsi
nim r compiler/nim.nim --fullhelp # tanpa penyusunan semula
nim r β€”nimcache:/tmp main # binari disimpan dalam /tmp/main

  • Menambahkan pembayang baharu -hint:msgOrigin, yang akan menunjukkan tempat pengkompil menjana mesej ralat/amaran. Ini membantu apabila tidak jelas dari mana mesej itu datang.

  • Menambahkan bendera β€”backend:js|c|cpp|objc (atau -b:js, dll.) untuk menukar backend.

  • Menambahkan bendera --usenimcache pada binari output ke nimcache.

  • Kekunci dialih keluar: --oldNewlines, --laxStrings, --oldast, --oldgensym

  • Utiliti nimsuggest kini menunjukkan bukan sahaja pra-pengisytiharan, tetapi juga lokasi pelaksanaan untuk permintaan def.

Selain itu, banyak perubahan telah ditambahkan pada perpustakaan standard dan banyak pembetulan pepijat.

Sumber: linux.org.ru