Lua 5.4

Setelah dua tahun pengembangan, pada tanggal 29 Juni, versi baru bahasa pemrograman Lua, 5.4, dirilis secara diam-diam dan tanpa terasa.

Lua adalah bahasa pemrograman sederhana yang ditafsirkan yang dapat dengan mudah disematkan ke dalam aplikasi. Karena kualitas ini, Lua banyak digunakan sebagai bahasa untuk memperluas atau menjelaskan konfigurasi program (khususnya, permainan komputer). Lua akan didistribusikan di bawah lisensi MIT.

Versi sebelumnya (5.3.5) dirilis pada 10 Juli 2018.

Perubahan utama dalam versi baru

  • pemulung baru berdasarkan generasi (generasi). Dalam fungsi collectgarbage, parameter setpause dan setstepmul telah ditinggalkan dan parameter inkremental direkomendasikan sebagai gantinya;

  • fungsi baru untuk mengeluarkan peringatan peringatan dengan kemampuan untuk menonaktifkan tampilannya;

  • implementasi baru dari math.random menggunakan algoritme xoshiro256** alih-alih yang disediakan oleh libc dan menginisialisasi generator dengan nomor acak;

  • variabel konstan;

  • Variabel β€œto-be-closed” adalah konstanta lokal tempat metode __close dijalankan saat ruang lingkup keluar;

  • fungsi baru lua_resetthread - membersihkan tumpukan dan menutup semua variabel "tertutup";

  • fungsi baru coroutine.close - menutup coroutine yang ditentukan dan semua variabel "yang dapat ditutup";

  • data pengguna (userdata) dapat berisi kumpulan nilai yang diakses oleh indeks. Fungsi baru telah diperkenalkan untuk bekerja dengan mereka: lua_newuserdatauv, lua_setiuservalue dan lua_getiuservalue;

  • informasi debug tentang parameter dan mengembalikan nilai fungsi tersedia;

  • jika indeks bilangan bulat digunakan dalam perulangan for dan terjadi luapan, perulangan berakhir;

  • menambahkan argumen opsional ke fungsi string.gmatch yang menentukan offset dari awal string untuk mencari kecocokan;

  • fungsi konversi implisit string ke angka telah dipindahkan ke perpustakaan string, perilakunya telah berubah. Misalnya, hasil dari operasi "1" + "2" sekarang menjadi bilangan bulat, bukan angka floating point;

  • dalam fungsi alokasi memori, kesalahan dapat terjadi saat blok memori berkurang;

  • karakter format baru dalam fungsi string.format - %p (untuk penunjuk);

  • perpustakaan utf8 menerima kode karakter hingga 2Β³ΒΉ (ketika bendera khusus ditentukan, tanpanya hanya kode hingga 0x10FFFF yang diperbolehkan dan pengganti tidak diperbolehkan);

  • konstanta bilangan bulat yang berada di luar rentang nilai diubah menjadi angka mengambang (sebelumnya terjadi pemotongan bit);

  • metamethod __lt tidak lagi digunakan untuk meniru metamethod __le, jika perlu, metamethod __le harus ditetapkan secara eksplisit;

  • label untuk pernyataan goto tidak dapat dibuat jika label dengan nama yang sama sudah ada di lingkup saat ini (bahkan jika sudah ditentukan di lingkup luar);

  • metamethod __gc bisa lebih dari sekedar fungsi. Jika upaya memanggil metode gagal, peringatan akan ditampilkan;

  • fungsi cetak tidak memanggil tostring untuk setiap argumen, tetapi menggunakan transformasi internalnya sendiri;

  • fungsi io.lines mengembalikan satu set empat nilai alih-alih satu, untuk meniru perilaku lama, sertakan panggilan dalam tanda kurung jika Anda menggantinya sebagai parameter saat memanggil fungsi lain.

Sumber: linux.org.ru

Tambah komentar