Rilis bahasa pemrograman Nim 1.4.0

Versi baru dari bahasa pemrograman sistem Nim telah dirilis, yang pada bulan September ini merayakan hari jadinya yang satu tahun. versi stabil pertama. Bahasanya mirip dalam sintaksis dengan Python, dan hampir mirip dengan C++ dalam performanya. Berdasarkan FAQ Bahasa ini banyak meminjam dari (dalam urutan kontribusi): Modula 3, Delphi, Ada, C++, Python, Lisp, Oberon.


Bekerja di mana saja berkat kemampuan kompilasi dalam C/C++/Objective-C/JS. Ini mendukung makro, OOP, obat generik, pengecualian, pertukaran kode panas dan banyak lagi. Lisensi: MIT.

Perubahan paling signifikan:

  • Ada pengumpul sampah ORC baru yang menggunakan algoritma dari ARC, tetapi pada saat yang sama menangani referensi melingkar dengan cara yang khusus. Diaktifkan oleh opsi -gc:orc. Tentang perbedaan ARC/ORC ada artikel bagus.

  • Mode untuk definisi fungsi yang ketat telah ditambahkan, yang memungkinkan pemeriksaan tambahan untuk mutabilitas objek. Diaktifkan melalui pragma {.experimental: "strictFuncs".} atau melalui kunci --experimental:strictFuncs.

  • Kata kunci from sekarang dapat digunakan sebagai operator.

  • Menambahkan .noalias pragma. Ini dipetakan ke kata kunci pembatasan C untuk meningkatkan efisiensi yang dapat diberikan oleh kata kunci tersebut.

  • Peringatan khusus kini dapat diubah menjadi kesalahan melalui --warningAsError[X]:on|off.

  • Perintah baru: nim r main.nim [args...], yang mengkompilasi dan menjalankan main.nim, dan menyertakan --usenimcache sehingga hasilnya disimpan di $nimcache/main$exeExt, menggunakan logika yang sama seperti nim c - r untuk menghilangkan kompilasi ulang ketika sumbernya tidak berubah. Contoh:

nim r compiler/nim.nim --help # dikompilasi untuk pertama kalinya
gema 'impor os; gema getCurrentCompilerExe()' | nim r - # ini juga berfungsi
nim r compiler/nim.nim --fullhelp # tanpa kompilasi ulang
nim r β€”nimcache:/tmp main # biner disimpan di /tmp/main

  • Menambahkan petunjuk baru -hint:msgOrigin, yang akan menunjukkan di mana kompiler menghasilkan pesan kesalahan/peringatan. Ini membantu ketika tidak jelas dari mana pesan itu berasal.

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

  • Menambahkan tanda --usenimcache ke binari keluaran ke nimcache.

  • Kunci dihapus: --oldNewlines, --laxStrings, --oldast, --oldgensym

  • Utilitas nimsuggest sekarang tidak hanya menampilkan pra-deklarasi, tetapi juga lokasi implementasi untuk permintaan def.

Selain itu, banyak perubahan telah ditambahkan ke perpustakaan standar dan banyak perbaikan bug.

Sumber: linux.org.ru