Faster Lua VM: Production test run, take 2

Excellent work on the Lua VM so far. I look forward to the optimizations we’ll see coming out of this new system. The name “Luau” fits quite nicely, I think. I’ll easily stick with it.

This alongside with the bit32 library is a dream come true. Thank you for this.

Will there be a catalog hat for Luau too? :stuck_out_tongue:

2 Likes

I have a question about this. Will it improve Performance for all PC’s and Mobile ?

This new VM is improving, among other things, the overall script execution time which should have an impact on performance. Of course this still depends on the device specs.

1 Like

Script Rate (/s) is not measured properly. The rate is not being reset before it’s measured again; instead, it is added to the previously measured rate.

The measured rate can go up to millions on scripts that have been running for a very long time, making it look as if there’s a memory leak when nothing is actually wrong.

image

3 Likes

I think they’re working to fix this bug outlined here as well:

People are now rebranding the old Lua to LuaC to create the distinction between the VMs

I suggest to please not follow on this. It’s even more confusing considering Lua C is a Lua API, and I’m sure the name spawned out of a misconception with it too. It’s preferable to address it as “vanilla Lua” or “Lua 5.1”.

7 Likes

Roblox-flavored Lua was usually called “RBX.Lua” whenever the distinction was needed.

4 Likes

This game is now broken. Could the new Lua VM be temporarily disabled here for now?

(Worth noting that this is a universe & I don’t know if disabling it would apply to all the games. If not, could you disable this one too?)

This is one of the lines of code that now breaks the game:

image

Error says “Cannot convert mixed or non-array tables: keys must be strings” so there may be something that’s preventing it from being sent and causing it to error.

Maybe this isn’t good practice in the first place, but I would assume this isn’t intended behavior given it did not have any issues before.

2 Likes

Was that aray you typoing or was that the actual error message that had a typo?

1 Like

A quick test shows that the location of some of the errors might not be the actual locations:

Screenshot from Roblox Studio

5 Likes

@zeuxcg

I’m having an issue with what seems like the code referencing incorrect variables or garbage collecting variables too quickly, I have no idea. The code was written months ago and has never errored until the start of the test.

It only errors in game, not in studio. I do not have luau enabled in studio but a friend that did was able to replicate the error on studio. There are a few other errors with the same issue in a different form.

Go into the game and click the text button to trigger the error, I also have it unlocked for you to take a copy if needed.

local i = 0 
repeat 
		
	local part = Instance.new("Part")
	part.Parent = workspace
	part.CanCollide = true
	delay(3, function()
		part.Transparency = 1 --line that errors
	end)
		
	i = i + 10
		
	game:GetService("Debris"):AddItem(part, 6)
		
	wait()
	
until i > 100

Can you confirm the thread scheduler isn’t delaying execution of the delay statement? Is there something else running that might be taking up too much cpu time?

The place is open go take a look but the place is empty and only has that script in it so I have to say no.

Yeah, I just reproduced in an empty place. Was replying to what you had before the edit.

Yea I assumed that post was too confusing so I simplified it.

1 Like

From what I’m seeing here, can game be classified as a string? IIRC it would be considered a class and wouldn’t be converted to a string under a table. Not sure about that though.

Uh oh; yeah this seems to be a problem with closing variables in some cases in repeat…until loops specifically. I think you can use an extra do...end scope to work around this, or change this to a while loop.

We have disabled the VM and will fix this and re-enable the VM in a week or two. Thanks for providing a simple repro, it helped a lot!

4 Likes

I know, the point was to trigger the error. The issue I was showing isn’t JSONEncode erroring, but that the error gets printed twice with one being in the “wrong” place. Not really wrong, but makes it easy to confuse, which I think happened to Repotted

3 Likes