Versi baru dari bahasa pemrograman Nim 0.20

ambil tempat rilis bahasa pemrograman sistem Nim 0.20.0. Bahasa ini menggunakan pengetikan statis dan dibuat dengan mempertimbangkan Pascal, C++, Python, dan Lisp. Kode sumber Nim dikompilasi menjadi representasi C, C++, atau JavaScript. Selanjutnya, kode C/C++ yang dihasilkan dikompilasi menjadi file yang dapat dieksekusi menggunakan kompiler apa pun yang tersedia (clang, gcc, icc, Visual C++), yang memungkinkan Anda mencapai kinerja yang mendekati C, jika Anda tidak memperhitungkan biaya pengoperasiannya. pemulung. Mirip dengan Python, Nim menggunakan lekukan sebagai pembatas blok. Alat dan kemampuan metaprogramming untuk membuat bahasa khusus domain (DSL) didukung. Kode proyek disediakan di bawah lisensi MIT.

Rilis Nim 0.20 dapat dianggap sebagai kandidat untuk rilis stabil 1.0 pertama, menggabungkan beberapa perubahan interoperabilitas yang diperlukan untuk membentuk cabang stabil pertama yang akan menerapkan keadaan bahasa tersebut. Versi 1.0 disebut-sebut sebagai rilis dukungan jangka panjang yang stabil yang dijamin akan mempertahankan kompatibilitas ke belakang di bagian bahasa yang distabilkan. Secara terpisah, kompiler juga akan memiliki mode eksperimental yang tersedia di mana fitur-fitur baru yang dapat merusak kompatibilitas akan dikembangkan.

Di antara perubahan yang diusulkan di Nim 0.20 adalah:

  • "Tidak" sekarang selalu merupakan operator unary, mis. ekspresi seperti “assert(not a)” sekarang tidak diperbolehkan dan hanya “assert not a” yang diperbolehkan;
  • Mengaktifkan pemeriksaan ketat untuk konversi bilangan bulat dan bilangan real pada tahap kompilasi, mis. ekspresi "const b = uint16(-1)" sekarang akan menghasilkan kesalahan, karena -1 tidak dapat dikonversi ke tipe integer unsigned;
  • Pembongkaran tupel untuk konstanta dan variabel loop disediakan.
    Misalnya, sekarang Anda dapat menggunakan tugas seperti 'const (d, e) = (7, "delapan")" dan "untuk (x, y) di f";

  • Menyediakan inisialisasi default hash dan tabel. Misalnya, setelah mendeklarasikan “var s: HashSet[int]” Anda dapat langsung mengeksekusi “s.incl(5)”, yang sebelumnya menyebabkan kesalahan;
  • Peningkatan informasi kesalahan untuk masalah yang terkait dengan operator “kasus” dan indeks array di luar batas;
  • Dilarang mengubah panjang tabel selama iterasi.

Sumber: opennet.ru

Tambah komentar