Keluaran bahasa pengaturcaraan Lua 5.4

Selepas lima tahun pembangunan ada melepaskan Lua 5.4, bahasa pengaturcaraan skrip yang pantas dan padat yang digunakan secara meluas sebagai bahasa terbenam (contohnya, untuk menentukan konfigurasi atau menulis sambungan). Kod jurubahasa Lua ditulis dalam C dan diedarkan oleh di bawah lesen MIT.

Lua menggabungkan sintaks prosedur mudah dengan keupayaan perihalan data yang berkuasa melalui penggunaan tatasusunan bersekutu dan semantik bahasa yang boleh dikembangkan. Lua menggunakan penaipan dinamik, menukar binaan bahasa kepada kod bait yang berjalan di atas mesin maya berasaskan daftar dengan pengumpulan sampah automatik. Jurubahasa itu sendiri direka sebagai perpustakaan yang boleh disepadukan dengan mudah ke dalam projek dalam bahasa C dan C++.

Utama inovasi:

  • Mod operasi baharu pemungut sampah telah dilaksanakan - β€œgenerasiβ€œ, yang melengkapkan mod pengumpulan sampah tambahan yang tersedia sebelum ini. Mod baharu melibatkan menjalankan rangkak yang dipendekkan dengan lebih kerap, meliputi hanya objek yang dibuat baru-baru ini. Traversal penuh semua objek dilakukan hanya jika, selepas traversal yang singkat, tidak mungkin untuk mencapai penggunaan memori yang diingini. Pendekatan ini membolehkan anda mencapai prestasi yang lebih tinggi dan mengurangkan penggunaan memori apabila menyimpan sejumlah besar objek yang hidup untuk masa yang singkat.
  • Menambah keupayaan untuk menentukan pembolehubah malar yang ditakrifkan dengan atribut "const". Pembolehubah sedemikian hanya boleh ditetapkan sekali dan, setelah dimulakan, tidak boleh diubah.
  • Menambah sokongan untuk pembolehubah "akan ditutup", yang ditugaskan menggunakan atribut "close" dan menyerupai pembolehubah tempatan malar (dengan atribut const), berbeza daripadanya kerana nilainya ditutup (kaedah "__close" dipanggil) apabila ia meninggalkan skop, contohnya, selepas penyiapan biasa blok, peralihan menggunakan break/goto/return atau keluar apabila ralat berlaku.
  • taip "data penggunaβ€œ, yang menyediakan keupayaan untuk menyimpan sebarang data C dalam pembolehubah Lua (mewakili blok data dalam ingatan atau mengandungi penuding C), kini boleh mengandungi beberapa nilai (mempunyai beberapa metatable).
  • Pelaksanaan baharu fungsi untuk menjana nombor pseudorandom dibentangkan - math.random.
  • Menambah sistem amaran yang ditentukan menggunakan ungkapan memberi amaran kepada dan, tidak seperti ralat, tidak menjejaskan pelaksanaan program selanjutnya.
  • Menambahkan maklumat penyahpepijatan tentang argumen fungsi dan nilai pulangan.
  • Semantik baharu telah dicadangkan untuk menghitung integer dalam gelung "Untuk". Bilangan lelaran dikira sebelum gelung bermula, yang mengelakkan limpahan berubah dan gelung. Jika nilai awal lebih besar daripada nilai had, ralat dipaparkan.
  • dalam fungsi 'string.gmatch' menambah hujah pilihan baharu 'init', yang menentukan pada kedudukan mana untuk memulakan carian (secara lalai, daripada 1 aksara).
  • Ciri baharu ditambah β€˜lua_resetthread' (menetapkan semula benang, mengosongkan keseluruhan timbunan panggilan dan menutup semua pembolehubah "akan-ditutup") dan 'coroutine.tutup' (menutup coroutine dan semua pembolehubah "akan-ditutup" yang berkaitan).
  • Fungsi untuk menukar rentetan kepada nombor telah dialihkan ke pustaka "rentetan".
  • Panggilan ke fungsi peruntukan memori kini mungkin gagal jika saiz blok memori dikurangkan.
  • dalam fungsi 'rentetan.format' menambah sokongan untuk penentu format baharu '%p' (penunjuk dikembalikan oleh lua_topointer).
  • Pustaka utf8 menyediakan sokongan kod aksara dengan nombor hingga 2^31.

Sumber: opennet.ru

Tambah komen