Umthombo ovulekile we-Luau, okuhlukile kokuhlola uhlobo lolimi lwesi-Lua

Umemezele umthombo ovulekile nokushicilelwa kokukhishwa okuzimele kokuqala kolimi lohlelo lwesi-Luau, kuqhutshekwa nokuthuthukiswa kolimi lwesiLua nokubuyela emuva kuhambisana ne-Lua 5.1. I-Luau yakhelwe ngokuyinhloko ukushumeka izinjini zokubhala ezinhlelweni zokusebenza futhi ihlose ukuzuza ukusebenza okuphezulu nokusetshenziswa okuphansi kwezinsiza. Ikhodi yephrojekthi ibhalwe ku-C++ futhi ivuliwe ngaphansi kwelayisensi ye-MIT.

I-Luau inweba i-Lua ngamakhono okuhlola uhlobo kanye nokwakhiwa okuthile okusha okufana neyunithi yezinhlamvu. Ulimi lubuyela emuva luhambisana ne-Lua 5.1 futhi ngokwengxenye nezinguqulo ezintsha. I-Lua Runtime API iyasekelwa, ikuvumela ukuthi usebenzise i-Luau ngekhodi ekhona kanye nezibopho. Isikhathi sokusebenza solimi sisekelwe kukhodi ye-Lua yesikhathi sokusebenza esenziwe kabusha kakhulu engu-5.1, kodwa umhumushi ubhalwe kabusha ngokuphelele. Ngesikhathi sokuthuthukiswa, amanye amasu amasha okuthuthukisa asetshenziswa ukuze kuzuzwe ukusebenza okuphezulu uma kuqhathaniswa ne-Lua.

Le phrojekthi yasungulwa nguRoblox futhi isetshenziswa kukhodi yesikhulumi semidlalo, imidlalo, kanye nezicelo zabasebenzisi bale nkampani, okuhlanganisa nomhleli weRoblox Studio. Ekuqaleni, i-Luau yathuthukiswa ngemuva kweminyango evaliwe, kodwa ekugcineni kwanqunywa ukuyidlulisela esigabeni samaphrojekthi avulekile ukuze kuthuthukiswe ngokuhlanganyela ngokubambisana nomphakathi.

Izici eziyinhloko:

  • Ukuthayipha kancane kancane, ukuthatha indawo emaphakathi phakathi kokuthayipha okuguquguqukayo nokumile. I-Luau ikuvumela ukuthi usebenzise ukuthayipha okumile njengoba kudingeka ngokucacisa ulwazi lohlobo ngezichasiselo ezikhethekile. Izinhlobo ezakhelwe ngaphakathi "noma yikuphi", "nil", "boolean", "inombolo", "string" kanye "nochungechunge" zinikeziwe. Ngesikhathi esifanayo, kungenzeka ukusebenzisa ukuthayipha okuguquguqukayo ngaphandle kokuchaza ngokucacile uhlobo lweziguquko nemisebenzi kugcinwa. function foo(x: inombolo, y: string): boolean local k: string = y:rep(x) return k == “a” end
  • Ukusekelwa kwama-string literals (njengaku-Lua 5.3) njengokuthi "\0x**" (inombolo ye-hexadecimal), "\u{**}" (uhlamvu lwe-Unicode) kanye "\z" (ekugcineni komugqa), kanye ikhono lokubona ngeso lengqondo ukufometha kwenombolo (ungabhala 1_000_000 esikhundleni sika-1000000), amalitha e-hexadecimal (0x...) nezinombolo kanambambili (0b......).
  • Usekelo lwenkulumo ethi "qhubeka", ehambisana negama elingukhiye elithi "break" elikhona kakade, ukuze weqe ku-loop iteration entsha.
  • Ukusekelwa kwabaqhubi bezabelo ezihlanganisiwe (+=, -=, *=, /=, %=, ^=, ..=).
  • Ukusekela ukusetshenziswa kwamabhulokhi anemibandela okuthi "uma-ke-ke" ngendlela yezinkulumo ezibuyisela inani elibalwe ngesikhathi kusetshenziswa ibhulokhi. Ungacacisa inombolo engafanele yezinye izisho kubhulokhi. local maxValue = uma a > b bese kuba olunye uphawu b lwendawo = uma x < 0 bese -1 elseif x > 0 bese 1 omunye 0
  • Ukuba khona kwemodi yokuhlukanisa (i-sandbox), ekuvumela ukuthi usebenzise ikhodi engathembekile. Lesi sici singasetshenziswa ukuhlela ukwethulwa eceleni kwekhodi yakho kanye nekhodi ebhalwe omunye unjiniyela, isibonelo, imitapo yolwazi yezinkampani zangaphandle ngokuphepha okungenakuqinisekiswa.
  • Umkhawulo welabhulali evamile lapho imisebenzi engase idale izinkinga zokuphepha isusiwe. Isibonelo, imitapo yolwazi ethi “io” (ukufinyelela amafayela nezinqubo zokuqalisa), “iphakheji” (ukufinyelela amafayela namamojula okulayisha), “os” (imisebenzi yokufinyelela amafayela nokushintsha okuguquguqukayo kwendawo), “susa iphutha” (ukusebenza okungaphephile ngenkumbulo) , “dofile” kanye “loadfile” (ukufinyelela kweFS).
  • Ukuhlinzeka ngamathuluzi okuhlaziya ikhodi emile, ukuhlonza amaphutha (i-linter) kanye nokuhlola ukusetshenziswa okufanele kwezinhlobo.
  • Ungumnikazi womhlaziyi osebenza kahle kakhulu, umhumushi we-bytecode kanye nomhlanganisi. U-Luau akakakusekeli ukuhlanganiswa kwe-JIT, kodwa kuthiwa umhumushi wesi-Luau uqhathaniswa nokusebenza kwe-LuaJIT kwezinye izimo.

Source: opennet.ru

Engeza amazwana