Open source kanggo Luau, varian mriksa jinis saka basa Lua

Ngumumake sumber terbuka lan publikasi saka release mandiri pisanan saka basa program Luau, nerusake pangembangan basa Lua lan kompatibel karo Lua 5.1. Luau dirancang utamane kanggo nanem mesin skrip menyang aplikasi lan tujuane kanggo entuk kinerja dhuwur lan konsumsi sumber daya sing sithik. Kode proyek ditulis ing C ++ lan mbukak ing lisensi MIT.

Luau ngluwihi Lua kanthi kapabilitas mriksa jinis lan sawetara konstruksi sintaksis anyar kayata literal string. Basa kasebut kompatibel karo Lua 5.1 lan sebagian karo versi sing luwih anyar. API Lua Runtime didhukung, ngidini sampeyan nggunakake Luau karo kode lan binding sing wis ana. Runtime basa adhedhasar kode Lua runtime 5.1 sing akeh digarap maneh, nanging interpreter wis ditulis maneh. Sajrone pangembangan, sawetara teknik optimasi anyar digunakake kanggo entuk kinerja sing luwih dhuwur tinimbang Lua.

Proyek iki dikembangake dening Roblox lan digunakake ing kode platform game, game, lan aplikasi pangguna perusahaan iki, kalebu editor Roblox Studio. Kaping pisanan, Luau dikembangake ing mburi lawang sing ditutup, nanging pungkasane diputusake kanggo nransfer menyang kategori proyek mbukak kanggo pembangunan bebarengan luwih karo partisipasi masyarakat.

Fitur utama:

  • Ngetik bertahap, manggoni posisi penengah antarane ngetik dinamis lan statis. Luau ngidini sampeyan nggunakake ngetik statis kaya sing dibutuhake kanthi nemtokake informasi jinis liwat anotasi khusus. Jinis sing dibangun "apa wae", "nil", "boolean", "nomer", "string" lan "thread" kasedhiya. Ing wektu sing padha, kemungkinan nggunakake ngetik dinamis tanpa nemtokake jinis variabel lan fungsi kanthi jelas. fungsi foo(x: angka, y: string): boolean lokal k: string = y: rep(x) return k == β€œa” end
  • Dhukungan kanggo literal string (kaya ing Lua 5.3) kayata "\0x**" (nomer heksadesimal), "\u{**}" (karakter Unicode) lan "\z" (pungkasan baris), uga kemampuan kanggo nggambarake format nomer (sampeyan bisa nulis 1_000_000 tinimbang 1000000), literal kanggo heksadesimal (0x...) lan nomer binar (0b......).
  • Dhukungan kanggo ekspresi "terus", nglengkapi tembung kunci "break" sing ana, kanggo mlumpat menyang pengulangan loop anyar.
  • Dhukungan kanggo operator penugasan senyawa (+=, -=, *=, /=, %=, ^=, ..=).
  • Dhukungan kanggo nggunakake pamblokiran "yen-banjur-liyane" kondisional ing wangun ekspresi sing ngasilake nilai sing diwilang sajrone eksekusi blok kasebut. Sampeyan bisa nemtokake nomer sembarang ekspresi elseif ing blok. maxValue lokal = yen a > b banjur a liya b tandha lokal = yen x 0 banjur 1 liyane 0
  • Anane mode isolasi (kotak pasir), sing ngidini sampeyan mbukak kode sing ora bisa dipercaya. Fitur iki bisa digunakake kanggo ngatur peluncuran ing sisih kode dhewe lan kode sing ditulis dening pangembang liyane, contone, perpustakaan pihak katelu kanggo safety sing ora bisa dijamin.
  • Watesan perpustakaan standar saka ngendi fungsi sing bisa nggawe masalah keamanan wis dibusak. Contone, perpustakaan "io" (ngakses file lan proses peluncuran), "paket" (ngakses file lan mbukak modul), "os" (fungsi kanggo ngakses file lan ngganti variabel lingkungan), "debug" (operasi ora aman karo memori) , "dofile" lan "loadfile" (akses FS).
  • Nyedhiyakake alat kanggo analisis kode statis, ngenali kesalahan (linter) lan mriksa panggunaan jinis sing bener.
  • Parser kinerja dhuwur dhewe, interpreter bytecode lan compiler. Luau durung ndhukung kompilasi JIT, nanging diklaim yen interpreter Luau cukup sebanding karo kinerja LuaJIT ing sawetara kahanan.

Source: opennet.ru

Add a comment