Luau, varian penyemakan jenis bahasa Lua menjadi sumber terbuka

Baru-baru ini pelepasan versi pertama diumumkan bebas daripada bahasa pengaturcaraan luau, yang diteruskan dengan pembangunan Lua dan juga serasi dengan versi Lua 5.1 sebelumnya.

Bahasa Luau ialah direka terutamanya untuk membenamkan enjin skrip dalam aplikasi dan bertujuan untuk mencapai prestasi tinggi dan penggunaan sumber yang rendah. Kod projek ditulis dalam C ++ dan dibuka di bawah lesen MIT.

Luau mengembangkan Lua dengan keupayaan menyemak jenis dan beberapa binaan sintaksis baharu seperti literal rentetan. Bahasa ini serasi dengan versi sebelumnya Lua 5.1 dan sebahagiannya dengan versi yang lebih baharu. API Lua Runtime disokong, membenarkan Luau digunakan dengan kod dan pautan sedia ada.

Sehingga hari ini, Luau bukan lagi bahagian yang tidak dapat dipisahkan daripada platform Roblox; ialah bahasa sumber terbuka bebas.

Masa jalan bahasa adalah berdasarkan kod masa jalan Lua 5.1 yang telah disemak dengan banyak, tetapi penterjemah telah ditulis semula sepenuhnya. Pembangunan itu melibatkan beberapa teknik pengoptimuman baharu yang memungkinkan untuk mencapai prestasi yang lebih tinggi berbanding dengan Lua.

Apabila Roblox dicipta 15 tahun yang lalu, kami memilih Lua sebagai bahasa pengaturcaraan. Lua adalah kecil, pantas, mudah untuk disepadukan dan dipelajari, dan ia membuka kemungkinan besar untuk pembangun kami.

Kebanyakan Roblox dibina di atas Lua, termasuk ratusan ribu baris kod yang dibangunkan secara dalaman yang memberi kuasa kepada aplikasi Roblox dan Roblox Studio sehingga hari ini, dan berjuta-juta pengalaman yang telah dicipta oleh pembangun. Bagi kebanyakan mereka, ia adalah bahasa pengaturcaraan pertama yang mereka pelajari.

Projek ini dibangunkan oleh Roblox dan digunakan dalam kod platform permainan dan aplikasi tersuai daripada syarikat ini, termasuk penerbit Roblox Studio. Pada mulanya, Luau dibangunkan secara tertutup, tetapi akhirnya diputuskan untuk memindahkannya ke kategori projek terbuka untuk pembangunan bersama dengan penyertaan masyarakat.

Ciri-ciri utama:

  • Sistem jenis berjujukan, yang menduduki kedudukan pertengahan antara tulisan dinamik dan statik. Luau membenarkan penulisan statik seperti yang diperlukan dengan menyatakan maklumat jenis melalui anotasi khas.
  • The jenis terbina dalam "Mana-mana", "nil", "boolean", "nombor", "rentetan" dan "benang". Pada masa yang sama, keupayaan untuk menggunakan penaipan dinamik tanpa mentakrifkan jenis pembolehubah dan fungsi secara eksplisit juga dipelihara.
  • Sokongan untuk rentetan literal (seperti dalam Lua 5.3)
  • Sokongan untuk ungkapan "teruskan", sebagai tambahan kepada kata kunci sedia ada "pecah", untuk melompat ke lelaran baharu gelung.
  • Sokongan untuk pengendali tugasan kompaun
  • Sokongan untuk penggunaan blok bersyarat "If-then-else" dalam bentuk ungkapan yang mengembalikan nilai yang dikira semasa pelaksanaan blok. Anda boleh menentukan bilangan arbitrari pernyataan elseif dalam blok.
  • Kehadiran mod kotak pasir yang membolehkan anda menjalankan kod yang tidak dipercayai. Fungsi ini boleh digunakan untuk mengatur kod dan kod anda sendiri yang ditulis oleh pembangun lain, contohnya perpustakaan pihak ketiga yang tidak boleh dijamin, untuk dijalankan bersebelahan.
  • Had perpustakaan standard yang mana fungsi yang berpotensi menimbulkan masalah keselamatan telah dialih keluar. Sebagai contoh, perpustakaan "io" (akses kepada fail dan proses permulaan), "pakej" (akses kepada fail dan memuatkan modul), "os" (fungsi untuk mengakses fail dan mengubah pembolehubah persekitaran telah dialih keluar), "Nyahpepijat" (tidak selamat pengendalian memori), "dofile" dan "loadfile" (akses sistem fail).
  • Menyediakan alat untuk analisis kod statik, pengesanan ralat (Linter) dan mengesahkan penggunaan jenis.
  • Penganalisis, jurubahasa bytecode dan pengkompil proprietari berprestasi tinggi.
  • Luau tidak menyokong kompilasi JIT lagi, tetapi dikatakan bahawa penterjemah Luau agak setanding dalam prestasi dengan LuaJIT dalam beberapa situasi.

Akhirnya sekiranya anda berminat untuk mengetahui lebih lanjut mengenainya, anda boleh menyemak perinciannya Dalam pautan berikut.