Paglabas ng Lua 5.4 programming language

Pagkatapos ng limang taon ng pag-unlad magagamit pakawalan Lua 5.4, isang mabilis at compact na scripting programming language na malawakang ginagamit bilang isang naka-embed na wika (halimbawa, para sa pagtukoy ng configuration o pagsusulat ng mga extension). Ang Lua interpreter code ay nakasulat sa C at ipinamahagi ni sa ilalim ng lisensya ng MIT.

Pinagsasama ng Lua ang isang simpleng procedural syntax na may makapangyarihang mga kakayahan sa paglalarawan ng data sa pamamagitan ng paggamit ng mga associative array at extensible semantics ng wika. Gumagamit si Lua ng dynamic na pag-type, na nagko-convert ng mga construct ng wika sa bytecode na tumatakbo sa ibabaw ng isang register-based na virtual machine na may awtomatikong pangongolekta ng basura. Ang interpreter mismo ay idinisenyo bilang isang library na madaling maisama sa mga proyekto sa mga wikang C at C++.

Ang pangunahing mga inobasyon:

  • Ang isang bagong mode ng operasyon ng kolektor ng basura ay ipinatupad - "henerasyonalβ€œ, na umakma sa dating available na incremental garbage collection mode. Ang bagong mode ay nagsasangkot ng pagpapatakbo ng isang pinaikling pag-crawl nang mas madalas, na sumasaklaw lamang sa mga kamakailang nilikhang bagay. Ang isang buong traversal ng lahat ng mga bagay ay isinasagawa lamang kung, pagkatapos ng isang maikling traversal, hindi posible na makamit ang nais na pagkonsumo ng memorya. Ang diskarte na ito ay nagbibigay-daan sa iyo upang makamit ang mas mataas na pagganap at bawasan ang pagkonsumo ng memorya kapag nag-iimbak ng isang malaking bilang ng mga bagay na nabubuhay sa maikling panahon.
  • Idinagdag ang kakayahang tumukoy ng mga pare-parehong variable na tinukoy gamit ang katangiang "const". Ang mga naturang variable ay maaari lamang italaga nang isang beses at, kapag nasimulan, ay hindi na mababago.
  • Nagdagdag ng suporta para sa mga variable "sa-sarado", na itinalaga gamit ang attribute na "close" at kahawig ng mga pare-parehong lokal na variable (na may const attribute), na naiiba sa kanila dahil sarado ang value (tinatawag ang "__close" na paraan) sa tuwing aalis ito sa saklaw, halimbawa, pagkatapos ng normal na pagkumpleto ng block, lumipat gamit ang break/goto/return o exit kapag may naganap na error.
  • I-type ang "data ng gumagamit", na nagbibigay ng kakayahang mag-imbak ng anumang data ng C sa mga variable ng Lua (kumakatawan sa isang bloke ng data sa memorya o naglalaman ng isang C pointer), maaari na ngayong maglaman ng ilang mga halaga (may ilang mga metatable).
  • Isang bagong pagpapatupad ng function para sa pagbuo ng mga pseudorandom na numero ay ipinakita - math.random.
  • Nagdagdag ng sistema ng mga babala na tinutukoy gamit ang expression balaan at, hindi katulad ng mga error, hindi makakaapekto sa karagdagang pagpapatupad ng programa.
  • Nagdagdag ng impormasyon sa pag-debug tungkol sa mga argumento ng function at mga halaga ng pagbabalik.
  • Ang isang bagong semantika ay iminungkahi para sa pag-enumerate ng mga integer sa mga loop "para". Ang bilang ng mga pag-ulit ay kinakalkula bago magsimula ang loop, na nag-iwas sa variable na overflow at looping. Kung ang paunang halaga ay mas malaki kaysa sa naglilimitang halaga, isang error ang ipapakita.
  • Sa function 'string.gmatch' nagdagdag ng bagong opsyonal na argumento na 'init', na tumutukoy kung anong posisyon ang sisimulan ang paghahanap (bilang default, mula sa 1 character).
  • Idinagdag ang mga bagong feature 'lua_resetthread' (ni-reset ang thread, iki-clear ang buong stack ng tawag at isinasara ang lahat ng "to-be-closed" variable) at 'coroutine.malapit' (sinasara ang coroutine at lahat ng nauugnay na "to-be-closed" na mga variable).
  • Ang mga function para sa pag-convert ng mga string sa mga numero ay inilipat sa "string" library.
  • Ang mga tawag sa function ng memory allocation ay maaari na ngayong mabigo kung ang laki ng block ng memorya ay nabawasan.
  • Sa function 'string.format' nagdagdag ng suporta para sa bagong format specifier na '%p' (pointer na ibinalik ni lua_topointer).
  • Ang utf8 library ay nagbibigay ng suporta mga code ng character na may mga numero hanggang 2^31.

Pinagmulan: opennet.ru

Magdagdag ng komento