Release Notes for 672

Lol Bjarne was ahead of his time
“There are only two kinds of languages: the ones people complain about and the ones nobody uses.”

Rewriting Roblox from the ground up to use a different scripting language will not be possible. If you don’t like using Lua, then don’t use Roblox. It’s not that hard.

Alan Wake 2 and Warframe both use Luau as an internal scripting language.

3 Likes

Luau is an incredibly efficient language when compared to other interpreted languages. Looping through a million indices is done several orders of magnitude faster than python and javascript loops. You can’t do apple to orange comparisons between the luau interpreter and other game engine schemas that use compiled languages.

Looping through a million indices in luau (while indexing into a table) is several hundred microseconds in luau, and several milliseconds in python. Similar performance gains are seen across the board for function calls, table hashing, adding keys, and more when compared to python/js. You’d only ever have overhead exactly when you use those built in classes (Instances), when you incur the penalty of crossing the luau/c++ boundary & creating new threads for event firings.

Unreal and other engines might get around this by having the custom code be directly compiled with unreal’s built in classes, but that’s fundamentally impossible for roblox because of the separation of the sandboxed luau vm from the engine internals. You can’t have the best of all worlds i.e. greater performance without sacrificing the flexibility of an interpreted language like luau. And even when it comes to performance, if you truly have some performance critical code to write, luau is incredibly performant as long as you’re just running pure luau. You can minimize the overhead of crossing the boundary by batching your lua logic on one end, and since interfacing with instances is inevitable, doing as much of the instance related operations in bulk (this cuts down on the number of interpreter interrupts)

And I’d argue strongly against everything being classes just for the sake of forcing oop cough java cough, but that’s a whole nother can of worms. What I’ve found is that across 45 modules, I’ve only ever actually needed inheritance like 3 times. So much can be done with just composition, and its usually a whole lot faster too.

3 Likes

v v good, another cheeky suggestion… Expand the floating point. :wink: tah.

1 Like