Eldono de la programlingvo Lua 5.4

Post kvin jaroj da evoluo disponebla liberigi Lua 5.4, rapida kaj kompakta skriba programlingvo kiu estas vaste uzata kiel enigita lingvo (ekzemple, por difini agordon aŭ skribi etendaĵojn). La Lua-interpretkodo estas skribita en C kaj distribuita de sub la MIT-licenco.

Lua kombinas simplan proceduran sintakson kun potencaj datumoj priskribaj kapabloj per la uzo de asociaj tabeloj kaj etendebla semantiko de la lingvo. Lua uzas dinamikan tajpadon, konvertante lingvokonstruojn en bajtokodon, kiu funkcias sur registro-bazita virtuala maŝino kun aŭtomata rubkolekto. La interpretisto mem estas desegnita kiel biblioteko kiu povas esti facile integrita en projektojn en la C kaj C++ lingvoj.

Ĉefa novigoj:

  • Nova funkciado de la rubkolektilo estis efektivigita - "generacia", kiu kompletigis la antaŭe haveblan pliigan rubkolektan reĝimon. La nova reĝimo implikas kuri mallongigitan rampadon pli ofte, kovrante nur ĵus kreitajn objektojn. Plena traveturado de ĉiuj objektoj estas farata nur se, post mallonga trairo, ne eblis atingi la deziratan memorkonsumon. Ĉi tiu aliro ebligas al vi atingi pli altan rendimenton kaj redukti memorkonsumon dum stokado de granda nombro da objektoj, kiuj vivas dum mallonga tempo.
  • Aldonis la kapablon difini konstantajn variablojn difinitajn per la atributo "const". Tiaj variabloj povas esti asignitaj nur unufoje kaj, unufoje pravigitaj, ne povas esti ŝanĝitaj.
  • Aldonita subteno por variabloj "fermota", kiuj estas asignitaj uzante la "close" atributon kaj similas konstantajn lokajn variablojn (kun la const atributo), diferencante de ili en tio ke la valoro estas fermita (la "__close" metodo estas nomita) kiam ajn ĝi forlasas la amplekson, ekzemple, post la normala kompletigo de la bloko, transiro uzante break/goto/return aŭ eliro kiam eraro okazas.
  • Tajpu "uzantodato", kiu provizas la kapablon stoki ajnajn C-datumojn en Lua-variabloj (reprezentas blokon da datumoj en memoro aŭ enhavas C-montrilon), nun povas enhavi plurajn valorojn (havas plurajn metatabelojn).
  • Nova efektivigo de la funkcio por generi pseŭdohazarajn nombrojn estas prezentita - math.random.
  • Aldonita sistemo de avertoj kiuj estas determinitaj per la esprimo avertu kaj, male al eraroj, ne influas la pluan ekzekuton de la programo.
  • Aldonitaj sencimigaj informoj pri funkcio-argumentoj kaj revenaj valoroj.
  • Nova semantiko estis proponita por listigi entjerojn en bukloj "por". La nombro da ripetoj estas kalkulita antaŭ ol la buklo komenciĝas, kio evitas varian superfluon kaj loopadon. Se la komenca valoro estas pli granda ol la limvaloro, eraro montriĝas.
  • En funkcio 'ĉeno.gmatch' aldonis novan laŭvolan argumenton 'init', kiu determinas je kia pozicio komenci la serĉon (defaŭlte, de 1 signo).
  • Novaj funkcioj aldonitaj 'lua_resetthread' (restarigas la fadenon, purigas la tutan vokon kaj fermas ĉiujn "fermotajn" variablojn) kaj 'korutino.fermi' (fermas la korutinon kaj ĉiujn rilatajn "fermotajn" variablojn).
  • Funkcioj por konverti ŝnurojn al nombroj estis movitaj al la "ŝnuro-" biblioteko.
  • Vokoj al la memorasigna funkcio nun povas malsukcesi se la memorblokgrandeco estas reduktita.
  • En funkcio 'ĉeno.formato' aldonis subtenon por la nova formatspecifilo '%p' (montrilo resendita de lua_topointer).
  • La utf8 biblioteko provizas subtenon signokodoj kun nombroj ĝis 2^31.

fonto: opennet.ru

Aldoni komenton