Programmēšanas valodas Lua 5.4 izlaišana

Pēc piecu gadu attīstības pieejams atbrīvot Lua 5.4, ātra un kompakta skriptu programmēšanas valoda, ko plaši izmanto kā iegulto valodu (piemēram, konfigurācijas definēšanai vai paplašinājumu rakstīšanai). Lua tulka kods ir rakstīts C un izplata saskaņā ar MIT licenci.

Lua apvieno vienkāršu procesuālo sintaksi ar jaudīgām datu aprakstīšanas iespējām, izmantojot asociatīvos masīvus un paplašināmu valodas semantiku. Lua izmanto dinamisko rakstīšanu, pārvēršot valodas konstrukcijas baitkodā, kas darbojas virs reģistra balstītas virtuālās mašīnas ar automātisku atkritumu savākšanu. Pats tulks ir veidots kā bibliotēka, ko var viegli integrēt projektos C un C++ valodās.

Galvenais jauninājumiem:

  • Ir ieviests jauns atkritumu savācēja darbības režīms - “paaudzes“, kas papildināja iepriekš pieejamo atkritumu pakāpeniskās savākšanas režīmu. Jaunais režīms ietver biežāku saīsinātu pārmeklēšanu, kas aptver tikai nesen izveidotos objektus. Pilna visu objektu caurbraukšana tiek veikta tikai tad, ja pēc īsas apbraukšanas nav bijis iespējams sasniegt vēlamo atmiņas patēriņu. Šī pieeja ļauj sasniegt lielāku veiktspēju un samazināt atmiņas patēriņu, glabājot lielu skaitu objektu, kas dzīvo īsu laiku.
  • Pievienota iespēja definēt nemainīgus mainīgos, kas definēti ar atribūtu “const”. Šādus mainīgos var piešķirt tikai vienreiz, un pēc inicializācijas tos nevar mainīt.
  • Pievienots atbalsts mainīgajiem "jāslēdz", kas tiek piešķirti, izmantojot atribūtu "close" un atgādina nemainīgus lokālos mainīgos (ar atribūtu const), kas atšķiras no tiem ar to, ka vērtība tiek aizvērta (tiek izsaukta metode "__close") ikreiz, kad tā atstāj tvērumu, piemēram, pēc normālas bloka pabeigšanas pāreja, izmantojot break/goto/return vai iziet, ja rodas kļūda.
  • Ierakstiet "lietotāja dati“, kas nodrošina iespēju saglabāt jebkurus C datus Lua mainīgajos (attēlo datu bloku atmiņā vai satur C rādītāju), tagad var saturēt vairākas vērtības (ir vairākas metatabulas).
  • Tiek prezentēta jauna pseidogadījuma skaitļu ģenerēšanas funkcijas realizācija - math.random.
  • Pievienota brīdinājumu sistēma, kas tiek noteikta, izmantojot izteiksmi brīdināt un atšķirībā no kļūdām neietekmē turpmāko programmas izpildi.
  • Pievienota atkļūdošanas informācija par funkciju argumentiem un atgriešanas vērtībām.
  • Ir ierosināta jauna semantika veselu skaitļu uzskaitīšanai cilpās "forums". Iterāciju skaits tiek aprēķināts pirms cilpas sākuma, kas ļauj izvairīties no mainīgas pārplūdes un cilpas. Ja sākotnējā vērtība ir lielāka par ierobežojošo vērtību, tiek parādīta kļūda.
  • funkcijā 'string.gmatch' pievienoja jaunu izvēles argumentu 'init', kas nosaka, kurā pozīcijā sākt meklēšanu (pēc noklusējuma, no 1 rakstzīmes).
  • Pievienotas jaunas funkcijaslua_resetthread' (atiestata pavedienu, notīra visu zvanu steku un aizver visus "aizveramos" mainīgos) un 'korutīna.aizvērt(aizver korutīnu un visus saistītos "jāaizver" mainīgos).
  • Funkcijas virkņu pārvēršanai skaitļos ir pārvietotas uz "string" bibliotēku.
  • Atmiņas piešķiršanas funkcijas izsaukumi tagad var neizdoties, ja tiek samazināts atmiņas bloka lielums.
  • funkcijā 'string.formāts' pievienoja atbalstu jaunajam formāta norādītājam '%p' (rādītāju atgriež lua_topointer).
  • Utf8 bibliotēka nodrošina atbalstu rakstzīmju kodi ar cipariem līdz 2^31.

Avots: opennet.ru

Pievieno komentāru