Rilis basa pemrograman Lua 5.4

Sawise limang taun pembangunan kasedhiya ngeculake Lua 5.4, basa pamrograman skrip sing cepet lan kompak sing akeh digunakake minangka basa sing dipasang (contone, kanggo nemtokake konfigurasi utawa ekstensi nulis). Kode interpreter Lua ditulis ing C lan disebarake dening miturut lisensi MIT.

Lua nggabungake sintaks prosedural sing prasaja kanthi kapabilitas deskripsi data sing kuat liwat panggunaan array asosiatif lan semantik basa sing bisa diperluas. Lua nggunakake pengetikan dinamis, ngowahi konstruksi basa dadi bytecode sing mlaku ing ndhuwur mesin virtual basis register kanthi koleksi sampah otomatis. Juru basa dhewe dirancang minangka perpustakaan sing bisa gampang digabungake menyang proyek ing basa C lan C ++.

Utama inovasi:

  • Mode operasi anyar saka tukang sampah wis dileksanakake - "generasional", sing nglengkapi mode pengumpulan sampah tambahan sing kasedhiya sadurunge. Mode anyar kalebu nyusup sing luwih kerep, mung nutupi obyek sing bubar digawe. A traversal lengkap kabeh obyek dileksanakake mung yen, sawise traversal cendhak, iku ora bisa kanggo entuk konsumsi memori sing dikarepake. Pendekatan iki ngidini sampeyan entuk kinerja sing luwih dhuwur lan nyuda konsumsi memori nalika nyimpen akeh obyek sing urip ing wektu sing cendhak.
  • Nambahake kemampuan kanggo nemtokake variabel konstan sing ditetepake kanthi atribut "const". Variabel kasebut mung bisa ditugasake sapisan lan, yen diwiwiti, ora bisa diganti.
  • Dhukungan tambahan kanggo variabel "arep-ditutup", sing ditugasake nggunakake atribut "cedhak" lan meh padha karo variabel lokal sing tetep (kanthi atribut const), beda karo nilai kasebut ditutup (cara "__close" diarani) nalika ninggalake ruang lingkup, contone, sawise completion normal pemblokiran, transisi nggunakake break / goto / bali utawa metu nalika ana kesalahan.
  • Ketik"panggunadata", sing nyedhiyakake kemampuan kanggo nyimpen data C ing variabel Lua (nggambarake blok data ing memori utawa ngemot pointer C), saiki bisa ngemot sawetara nilai (duwe sawetara metatable).
  • A implementasine anyar saka fungsi kanggo ngasilaken nomer pseudorandom presented - math.random.
  • Nambahake sistem bebaya sing ditemtokake nggunakake ekspresi kasebut ngelingi lan, Boten kados kasalahan, ora mengaruhi execution luwih saka program.
  • Nambahake informasi debugging babagan argumen fungsi lan nilai bali.
  • Semantik anyar wis diusulake kanggo enumerasi integer ing puteran "kanggo". Jumlah iterasi diwilang sadurunge loop diwiwiti, sing ngindhari overflow lan looping variabel. Yen nilai awal luwih gedhe tinimbang nilai watesan, kesalahan ditampilake.
  • Ing fungsi'string.gmatch' nambahake argumen opsional anyar 'init', sing nemtokake posisi apa kanggo miwiti panelusuran (kanthi standar, saka 1 karakter).
  • Fitur anyar ditambahake 'lua_resetthread' (ngreset thread, mbusak kabeh tumpukan telpon lan nutup kabeh variabel "kanggo-ditutup") lan 'coroutine.nutup' (nutup coroutine lan kabeh variabel "kanggo-ditutup" sing gegandhengan).
  • Fungsi kanggo ngowahi strings kanggo nomer wis dipindhah menyang perpustakaan "string".
  • Telpon menyang fungsi alokasi memori saiki bisa gagal yen ukuran blok memori dikurangi.
  • Ing fungsi'string.format' nambahake dhukungan kanggo specifier format anyar '%p' (pointer bali dening lua_topointer).
  • Pustaka utf8 nyedhiyakake dhukungan kode karakter kanthi angka nganti 2^31.

Source: opennet.ru

Add a comment