Bukas nga tinubdan alang sa Luau, usa ka variant sa pagsusi sa tipo sa pinulongang Lua

Gipahibalo ang open source ug publikasyon sa unang standalone nga pagpagawas sa Luau programming language, nga nagpadayon sa pagpalambo sa Lua nga pinulongan ug pabalik nga compatible sa Lua 5.1. Ang pinulongang Luau kay gituyo para sa pag-embed sa mga scripting engine ngadto sa mga aplikasyon ug tumong nga makab-ot ang taas nga performance ug ubos nga konsumo sa kapanguhaan. Ang code sa proyekto gisulat sa C++ ug bukas ubos sa lisensya sa MIT.

Gipalugway ni Luau si Lua nga adunay mga kapabilidad sa pagsusi sa tipo ug pipila ka mga bag-ong konstruksyon sa syntactic sama sa mga literal nga string. Ang lengguwahe kay backward compatible sa Lua 5.1 ug partially sa mas bag-ong mga bersyon. Ang Lua Runtime API gisuportahan, nga nagtugot kanimo sa paggamit sa Luau uban sa kasamtangan nga code ug mga binding. Ang runtime sa lengguwahe gibase sa usa ka kodigo sa Lua runtime 5.1 nga giayo pag-ayo, apan ang tighubad hingpit nga gisulat pag-usab. Atol sa pag-uswag, pipila ka bag-ong mga pamaagi sa pag-optimize ang gigamit aron makab-ot ang mas taas nga performance kumpara sa Lua.

Ang proyekto gimugna ni Roblox ug gigamit sa code sa gaming platform, mga dula, ug mga aplikasyon sa tiggamit niini nga kompanya, lakip ang editor sa Roblox Studio. Sa sinugdan, ang Luau naugmad sa luyo sa sirado nga mga pultahan, apan sa katapusan nakahukom nga ibalhin kini sa kategorya nga bukas nga mga proyekto alang sa dugang nga hiniusang kalamboan uban ang partisipasyon sa komunidad.

ОООО о: о о о:

  • Hinay-hinay nga pag-type, nga nag-okupar sa usa ka intermediate nga posisyon tali sa dinamiko ug static nga pag-type. Gitugotan ka sa Luau sa paggamit sa static nga pag-type kung gikinahanglan pinaagi sa pagtino sa impormasyon sa tipo pinaagi sa espesyal nga mga anotasyon. Gihatag ang mga built-in nga tipo nga "bisan unsa", "nil", "boolean", "numero", "string" ug "thread". Sa samang higayon, ang posibilidad sa paggamit sa dinamikong pag-type nga walay tin-aw nga pagtino sa matang sa mga baryable ug mga gimbuhaton gipreserbar. function foo(x: numero, y: string): boolean local k: string = y:rep(x) balik k == “usa” katapusan
  • Suporta alang sa string literals (sama sa Lua 5.3) sama sa "\0x**" (hexadecimal number), "\u{**}" (Unicode character) ug "\z" (katapusan sa linya), ingon man ang abilidad sa paghanduraw sa pag-format sa numero (mahimo nimong isulat ang 1_000_000 imbes nga 1000000), mga literal para sa hexadecimal (0x...) ug binary nga mga numero (0b......).
  • Suporta alang sa "pagpadayon" nga ekspresyon, nga nagsuporta sa kasamtangan nga "break" nga keyword, aron makalukso sa usa ka bag-ong loop nga pag-uli.
  • Suporta alang sa compound assignment operators (+=, -=, *=, /=, %=, ^=, ..=).
  • Suporta alang sa paggamit sa conditional "kon-then-else" nga mga bloke sa porma sa mga ekspresyon nga nagbalik sa bili nga gikalkula sa panahon sa pagpatuman sa block. Mahimo nimong itakda ang usa ka arbitraryong gidaghanon sa mga lain nga ekspresyon sa usa ka bloke. local maxValue = kung a > b unya a lain b lokal nga timaan = kung x < 0 unya -1 elseif x > 0 unya 1 pa 0
  • Ang presensya sa usa ka isolation mode (sandbox), nga nagtugot kanimo sa pagpadagan sa dili kasaligan nga code. Kini nga bahin mahimong magamit sa pag-organisar sa paglansad sa kilid sa imong kaugalingon nga code ug code nga gisulat sa laing developer, pananglitan, mga librarya sa ikatulo nga partido alang sa kaluwasan nga dili magarantiya.
  • Usa ka limitasyon sa standard nga librarya diin ang mga gimbuhaton nga posibleng makamugna og mga problema sa seguridad gikuha na. Pananglitan, ang mga librarya nga "io" (pag-access sa mga file ug mga proseso sa paglansad), "package" (pag-access sa mga file ug pagkarga sa mga module), "os" (mga gimbuhaton alang sa pag-access sa mga file ug pagbag-o sa mga variable sa palibot), "debug" (dili luwas nga operasyon nga adunay memorya) , “dofile” ug “loadfile” (FS access).
  • Paghatag mga himan alang sa static code analysis, pag-ila sa mga sayup (linter) ug pagsusi sa husto nga paggamit sa mga tipo.
  • Kaugalingong high-performance parser, bytecode interpreter ug compiler. Wala pa gisuportahan sa Luau ang JIT compilation, apan giangkon nga ang Luau interpreter medyo ikatandi sa performance sa LuaJIT sa pipila ka mga sitwasyon.

Source: opennet.ru

Idugang sa usa ka comment