Open source pikeun Luau, varian mariksa tipe tina basa Lua

Ngumumkeun open source sareng publikasi pelepasan mandiri munggaran tina basa program Luau, neraskeun pamekaran basa Lua sareng mundur cocog sareng Lua 5.1. Luau dirarancang khususna pikeun nyelapkeun mesin skrip kana aplikasi sareng tujuanana pikeun ngahontal kinerja anu luhur sareng konsumsi sumberdaya anu rendah. Kodeu proyék ditulis dina C ++ tur dibuka dina lisénsi MIT.

Luau ngalegaan Lua kalawan kamampuhan mariksa tipe sarta sababaraha constructs sintaksis anyar kayaning string literals. Basana cocog mundur sareng Lua 5.1 sareng sawaréh sareng versi anu langkung énggal. API Lua Runtime dirojong, ngamungkinkeun anjeun ngagunakeun Luau sareng kode sareng beungkeutan anu tos aya. Runtime basa dumasar kana kode Lua runtime 5.1 anu loba dikerjakeun deui, tapi juru basana ditulis deui. Salila pamekaran, sababaraha téknik optimasi énggal dianggo pikeun ngahontal prestasi anu langkung luhur dibandingkeun sareng Lua.

Proyék ieu dikembangkeun ku Roblox sareng dianggo dina kode platform kaulinan, kaulinan, sareng aplikasi pangguna perusahaan ieu, kalebet redaktur Roblox Studio. Mimitina, Luau dikembangkeun di tukangeun panto katutup, tapi tungtungna diputuskeun pikeun mindahkeun kana kategori proyék kabuka pikeun pangwangunan babarengan salajengna sareng partisipasi masarakat.

Fitur konci:

  • Ngetik bertahap, nempatan posisi panengah antara ngetik dinamis sareng statik. Luau ngidinan Anjeun pikeun make ketikan statik sakumaha diperlukeun ku nangtukeun jenis informasi ngaliwatan annotations husus. Diwangun-di jenis "naon", "nil", "boolean", "nomer", "string" jeung "thread" disadiakeun. Dina waktos anu sami, kamungkinan ngagunakeun ngetik dinamis tanpa netepkeun sacara eksplisit jinis variabel sareng fungsi dilestarikan. fungsi foo (x: angka, y: string): boolean lokal k: string = y: rep (x) balik k == "a" tungtung
  • Rojongan pikeun string literal (sapertos dina Lua 5.3) sapertos "\0x**" (nomer héksadesimal), "\u{**}" (karakter Unicode) sareng "\z" (tungtung garis), ogé kamampuhan pikeun visualize angka pormat (anjeun bisa nulis 1_000_000 tinimbang 1000000), literals pikeun hexadecimal (0x...) jeung angka binér (0b......).
  • Rojongan pikeun "neraskeun" éksprési, complementing nu aya "break" keyword, pikeun luncat ka iteration loop anyar.
  • Rojongan pikeun operator ngerjakeun sanyawa (+=, -=, *=, /=, %=, ^=, ..=).
  • Rojongan pikeun pamakéan blok kondisional "lamun-lajeng-sejenna" dina bentuk ungkapan nu balik nilai diitung salila palaksanaan blok. Anjeun tiasa nangtukeun sajumlah wenang ekspresi elseif dina blok. maxValue lokal = lamun a > b lajeng a sejenna b tanda lokal = lamun x <0 lajeng -1 elseif x > 0 lajeng 1 sejenna 0
  • Ayana mode isolasi (sandbox), anu ngamungkinkeun anjeun ngajalankeun kode anu teu dipercaya. Fitur ieu tiasa dianggo pikeun ngatur peluncuran sisi ku kode sorangan sareng kode anu ditulis ku pamekar anu sanés, contona, perpustakaan pihak katilu pikeun kaamanan anu teu tiasa dijamin.
  • Watesan perpustakaan standar dimana fungsi anu berpotensi nyiptakeun masalah kaamanan parantos dihapus. Salaku conto, perpustakaan "io" (ngaksés file sareng prosés peluncuran), "pakét" (ngaksés file sareng ngamuat modul), "os" (fungsi pikeun ngakses file sareng ngarobih variabel lingkungan), "debug" (operasi anu teu aman sareng mémori). , "dofile" jeung "loadfile" (aksés FS).
  • Nyadiakeun parabot pikeun analisis kode statik, identifying kasalahan (linter) jeung mariksa pamakéan bener tina jenis.
  • Parser-kinerja tinggi sorangan, juru bytecode sareng kompiler. Luau henteu acan ngadukung kompilasi JIT, tapi diklaim yén juru basa Luau tiasa dibandingkeun sareng kinerja LuaJIT dina sababaraha kaayaan.

sumber: opennet.ru

Tambahkeun komentar