Rilis bahasa pemrograman Lua 5.4

Setelah lima tahun pembangunan tersedia melepaskan Lua 5.4, bahasa pemrograman skrip yang cepat dan ringkas yang banyak digunakan sebagai bahasa tertanam (misalnya, untuk menentukan konfigurasi atau menulis ekstensi). Kode juru bahasa Lua ditulis dalam C dan didistribusikan oleh di bawah lisensi MIT.

Lua menggabungkan sintaksis prosedural sederhana dengan kemampuan deskripsi data yang kuat melalui penggunaan array asosiatif dan semantik bahasa yang dapat diperluas. Lua menggunakan pengetikan dinamis, mengubah konstruksi bahasa menjadi bytecode yang berjalan di atas mesin virtual berbasis register dengan pengumpulan sampah otomatis. Interpreter itu sendiri dirancang sebagai perpustakaan yang dapat dengan mudah diintegrasikan ke dalam proyek dalam bahasa C dan C++.

Utama inovasi:

  • Mode pengoperasian pengumpul sampah baru telah diterapkan - β€œgenerasiβ€œ, yang melengkapi mode pengumpulan sampah tambahan yang tersedia sebelumnya. Mode baru ini melibatkan menjalankan perayapan yang dipersingkat lebih sering, hanya mencakup objek yang baru dibuat. Traversal penuh semua objek dilakukan hanya jika, setelah traversal singkat, konsumsi memori yang diinginkan tidak dapat dicapai. Pendekatan ini memungkinkan Anda mencapai kinerja yang lebih tinggi dan mengurangi konsumsi memori saat menyimpan sejumlah besar objek yang hidup dalam waktu singkat.
  • Menambahkan kemampuan untuk mendefinisikan variabel konstan yang ditentukan dengan atribut β€œconst”. Variabel tersebut hanya dapat ditetapkan satu kali dan, setelah diinisialisasi, tidak dapat diubah.
  • Menambahkan dukungan untuk variabel "akan ditutup", yang ditetapkan menggunakan atribut "close" dan menyerupai variabel lokal konstan (dengan atribut const), berbeda dari variabel tersebut karena nilainya ditutup (metode "__close" dipanggil) setiap kali meninggalkan cakupan, misalnya, setelah blok selesai secara normal, transisi menggunakan break/goto/return atau keluar ketika terjadi kesalahan.
  • Jenis "data penggunaβ€œ, yang menyediakan kemampuan untuk menyimpan data C apa pun dalam variabel Lua (mewakili blok data dalam memori atau berisi pointer C), sekarang dapat berisi beberapa nilai (memiliki beberapa metatabel).
  • Implementasi baru dari fungsi untuk menghasilkan bilangan pseudorandom disajikan - math.random.
  • Menambahkan sistem peringatan yang ditentukan menggunakan ekspresi memperingatkan dan, tidak seperti kesalahan, tidak mempengaruhi pelaksanaan program selanjutnya.
  • Menambahkan informasi debug tentang argumen fungsi dan nilai kembalian.
  • Semantik baru telah diusulkan untuk menghitung bilangan bulat dalam loop "untuk". Jumlah iterasi dihitung sebelum loop dimulai, yang menghindari variabel overflow dan looping. Jika nilai awal lebih besar dari nilai batas, kesalahan akan ditampilkan.
  • Dalam fungsi 'string.gmatch' menambahkan argumen opsional baru 'init', yang menentukan posisi mana untuk memulai pencarian (secara default, dari 1 karakter).
  • Fitur baru ditambahkan 'lua_resetthread' (mereset thread, menghapus seluruh tumpukan panggilan dan menutup semua variabel "yang akan ditutup") dan 'coroutine.close' (menutup coroutine dan semua variabel β€œyang akan ditutup” terkait).
  • Fungsi untuk mengonversi string menjadi angka telah dipindahkan ke perpustakaan "string".
  • Panggilan ke fungsi alokasi memori sekarang mungkin gagal jika ukuran blok memori dikurangi.
  • Dalam fungsi 'string.format' menambahkan dukungan untuk penentu format baru '%p' (pointer dikembalikan oleh lua_topointer).
  • Pustaka utf8 menyediakan dukungan kode karakter dengan angka hingga 2^31.

Sumber: opennet.ru

Tambah komentar