Vrystelling van die Lua 5.4-programmeertaal

Na vyf jaar van ontwikkeling beskikbaar vrylating Lua 5.4, 'n vinnige en kompakte skrifprogrammeertaal wat wyd gebruik word as 'n ingebedde taal (byvoorbeeld vir die definisie van konfigurasie of skryfuitbreidings). Die Lua-tolkkode is in C en geskryf versprei deur onder die MIT-lisensie.

Lua kombineer 'n eenvoudige prosedurele sintaksis met kragtige databeskrywingsvermoëns deur die gebruik van assosiatiewe skikkings en uitbreidbare semantiek van die taal. Lua gebruik dinamiese tik, omskakeling van taalkonstrukte in greepkode wat bo-op 'n register-gebaseerde virtuele masjien loop met outomatiese vullisversameling. Die tolk self is ontwerp as 'n biblioteek wat maklik in projekte in die C- en C++-tale geïntegreer kan word.

Die belangrikste innovasies:

  • 'n Nuwe werkswyse van die vullisverwyderaar is geïmplementeer - "generasie“, wat die voorheen beskikbare inkrementele vullisverwyderingsmodus aangevul het. Die nuwe modus behels dat 'n verkorte kruip meer gereeld uitgevoer word, wat slegs onlangs geskepte voorwerpe dek. 'n Volle deurkruising van alle voorwerpe word slegs uitgevoer indien dit na 'n kort deurkruising nie moontlik was om die verlangde geheueverbruik te bereik nie. Hierdie benadering stel jou in staat om hoër werkverrigting te bereik en geheueverbruik te verminder wanneer 'n groot aantal voorwerpe wat vir 'n kort tyd lewe, gestoor word.
  • Bygevoeg die vermoë om konstante veranderlikes gedefinieer met die "const" kenmerk te definieer. Sulke veranderlikes kan slegs een keer toegeken word en, sodra dit geïnisieer is, kan dit nie verander word nie.
  • Bygevoeg ondersteuning vir veranderlikes "gesluit te word", wat met die "close"-kenmerk toegeken word en soos konstante plaaslike veranderlikes lyk (met die const-kenmerk), wat van hulle verskil deurdat die waarde gesluit word (die "__close"-metode word genoem) wanneer dit die omvang verlaat, byvoorbeeld, na die normale voltooiing van die blok, oorgang met breek/goto/return of uitgang wanneer 'n fout voorkom.
  • Tik "user data", wat die vermoë bied om enige C-data in Lua-veranderlikes te stoor (verteenwoordig 'n blok data in die geheue of bevat 'n C-wyser), kan nou verskeie waardes bevat (het verskeie metatables).
  • 'n Nuwe implementering van die funksie vir die generering van pseudorandom getalle word aangebied - math.random.
  • Het 'n stelsel van waarskuwings bygevoeg wat met behulp van die uitdrukking bepaal word waarsku en, anders as foute, beïnvloed dit nie die verdere uitvoering van die program nie.
  • Bygevoeg ontfouting inligting oor funksie argumente en terugkeer waardes.
  • 'n Nuwe semantiek is voorgestel vir die opsomming van heelgetalle in lusse "vir". Die aantal iterasies word bereken voordat die lus begin, wat veranderlike oorloop en lus vermy. As die aanvanklike waarde groter is as die beperkende waarde, word 'n fout vertoon.
  • In funksie'string.gmatch' het 'n nuwe opsionele argument 'init' bygevoeg, wat bepaal by watter posisie om die soektog te begin (by verstek, vanaf 1 karakter).
  • Nuwe kenmerke bygevoeg 'lua_resetthread' (stel die draad terug, maak die hele oproepstapel skoon en maak alle "toe-gesluit" veranderlikes toe) en 'coroutine.close' (sluit die koroutine en alle geassosieerde "toe-gesluit" veranderlikes toe).
  • Funksies vir die omskakeling van stringe na getalle is na die "string"-biblioteek geskuif.
  • Oproepe na die geheuetoewysingsfunksie kan nou misluk as die geheueblokgrootte verminder word.
  • In funksie'string.format' het ondersteuning bygevoeg vir die nuwe formaatspesifiseerder '%p' (wyser teruggestuur deur lua_topointer).
  • Die utf8-biblioteek bied ondersteuning karakter kodes met getalle tot 2^31.

Bron: opennet.ru

Voeg 'n opmerking