Liberasyon langaj pwogram Lua 5.4

Apre senk ane nan devlopman disponib lage Lua 5.4, yon langaj pwogramasyon rapid ak kontra enfòmèl ant ki lajman itilize kòm yon langaj entegre (pa egzanp, pou defini konfigirasyon oswa ekri ekstansyon). Kòd entèprèt Lua ekri an C ak distribiye pa anba lisans MIT.

Lua konbine yon senp sentaks pwosedi ak kapasite pwisan deskripsyon done atravè itilizasyon etalaj asosyasyon ak semantik ekstansib lang nan. Lua sèvi ak sezisman dinamik, konvèti langaj konstwi an bytecode ki kouri sou tèt yon machin vityèl ki baze sou anrejistreman ak koleksyon fatra otomatik. Entèprèt la li menm fèt kòm yon bibliyotèk ki ka fasilman entegre nan pwojè nan lang C ak C++.

Prensipal la inovasyon:

  • Yon nouvo mòd operasyon nan pèseptè fatra a te aplike - "jenerasyon", ki te konplete mòd koleksyon fatra ki te disponib deja. Nouvo mòd la enplike nan kouri yon rale pi kout pi souvan, ki kouvri sèlman objè ki fèk kreye yo. Yon travèse konplè nan tout objè fèt sèlman si, apre yon travèse kout, li pa t 'posib reyalize konsomasyon nan memwa vle. Apwòch sa a pèmèt ou reyalize pi wo pèfòmans ak diminye konsomasyon memwa lè w estoke yon gwo kantite objè ki ap viv pou yon ti tan.
  • Te ajoute kapasite pou defini varyab konstan defini ak atribi "const". Varyab sa yo ka sèlman plase yon fwa epi, yon fwa inisyalize, yo pa ka chanje.
  • Te ajoute sipò pou varyab "pou-fèmen", ki yo asiyen lè l sèvi avèk atribi "fèmen" la epi ki sanble ak varyab lokal konstan (ak atribi konst la), diferan de yo nan ke valè a fèmen (yo rele metòd "__close" la) chak fwa yo soti nan sijè ki abòde lan, pou egzanp, apre fini nòmal nan blòk la, tranzisyon lè l sèvi avèk break / goto / retounen oswa sòti lè yon erè rive.
  • Tape "itilizatè done", ki bay kapasite pou estoke nenpòt done C nan varyab Lua (reprezante yon blòk done nan memwa oswa ki gen yon konsèy C), kounye a kapab genyen plizyè valè (gen plizyè metatab).
  • Yon nouvo aplikasyon fonksyon pou jenere nimewo pseudorandom prezante - math.random.
  • Te ajoute yon sistèm avètisman ke yo detèmine lè l sèvi avèk ekspresyon an avèti epi, kontrèman ak erè, pa afekte plis ekzekisyon pwogram nan.
  • Te ajoute enfòmasyon debogaj sou agiman fonksyon ak valè retounen.
  • Yon nouvo semantik te pwopoze pou enimere nonm antye yo nan bouk "pou". Kantite iterasyon yo kalkile anvan bouk la kòmanse, sa ki evite debòde varyab ak bouk. Si valè inisyal la pi gran pase valè limit la, yon erè parèt.
  • Nan fonksyon 'string.gmatch' te ajoute yon nouvo agiman opsyonèl 'init', ki detèmine nan ki pozisyon yo kòmanse rechèch la (pa default, soti nan 1 karaktè).
  • Nouvo karakteristik te ajoute 'lua_resetthread' (Reset fil la, efase tout pil apèl la epi fèmen tout varyab "pou-fèmen") ak 'koroutine.fèmen' (fèmen koroutin la ak tout varyab "pou-fèmen" ki asosye).
  • Fonksyon pou konvèti fisèl nan nimewo yo te deplase nan bibliyotèk la "string".
  • Apèl nan fonksyon alokasyon memwa ka echwe kounye a si gwosè blòk memwa a redwi.
  • Nan fonksyon 'string.format' ajoute sipò pou nouvo fòma spécificateur '%p' (pointeur retounen pa lua_topointer).
  • Bibliyotèk utf8 bay sipò kòd karaktè ak nimewo jiska 2^31.

Sous: opennet.ru

Add nouvo kòmantè