Release Notes for 436

Notes for Release 436


Client Difference Log

API Changes

Added Property bool MeshPart.HasSkinnedMesh {✏️NotAccessibleSecurity} [Hidden]

Added Function bool PermissionsService:GetIsThirdPartyAssetAllowed() {RobloxScriptSecurity}
Added Function bool PermissionsService:GetIsThirdPartyPurchaseAllowed() {RobloxScriptSecurity}
Added Function bool PermissionsService:GetIsThirdPartyTeleportAllowed() {RobloxScriptSecurity}
Added Function void StudioService:SetDocumentDisplayName(string newName) {RobloxScriptSecurity}

(Click here for a syntax highlighted version!)


Oops, I mean to reply to the actual topic not you, CloneTrooper1019! Any way I can change it?

Oh Roblox getting all hip, eh? “Perf”

What type of statement is this? Seem likes you’re getting too swift.

Anyways, apart from all the Lua Dragger improvements, this is definitely what I’m waiting for:

I think the get size function rounds everything up, to be honest.

Also, looking forward to having them Lua Draggers out of beta! A Roblox staff member told me it’d be this week or the next. Super pumped for that!

OML LOL, I literally just realized that the Release Notes release every weak or so. I must say, I have week observation skills. Oh weight…


Yes, just yes.

Can you do this with the UI handles?


Now, this is something that I need, especially seeing all the complaints in the original announcement of Lua Draggers. The improvement on this will help out most builders in the community without having to anchor each part of what was being dragged. :+1:

This update is actually good for once, seeing that they round up to a Whole number instead of decimals, hope it comes live anytime now. :eyes:

My favorite part of the Release Note so far! :slight_smile:


This is a nice feature, even though I don’t understand half of it!

I honestly love the suggested edits feature.


When end is missing in Lua code, the parser error message now highlights the likely location of mismatch using indentation as a guide.

Uhh, this almost worked well but not quite :smiley: There’s going to be a fix to make this better next week, so that you get this:


(yes, yes, it would be great to highlight the problematic line but hey, one step at a time)


Does this also mean that developers can completely disable VR support for their games or is this just a user convenience thing? I have games where I don’t want users using VR, period, be it through normal means or through exploits.


I really hope! I also have games where I don’t want VR because I think they might not work. (Like a tycoon? Idk I don’t know much about Roblox VR.)

Do these QoL error message features apply to the second return of loadstring? Meaning that this:

local success, errMsg = loadstring(source)

Assuming the source variable is the code in your screenshot, would it return the same error message (including the helpful “did you forget” message? Lua Learning uses that as a way to easily highlight syntax errors, so having a nicer message is awesome.

Edit: It does, so that means my Lua Learning IDE gets these updates without me even doing anything. Nice!


Yes - we use the exact same parser in Studio, on RCC and in loadstring so in all contexts you’re going to get the same output.


That’s great to know! Do all Luau optimizations and quirks apply the same too, or just the parser?

99% is exactly the same. The only difference is that loadstring() has the same effect as getfenv()/setfenv() in that it disables a class of optimizations that require ability to reason about the globals table, since loadstring() runs in the global environment of the caller. But the behavior should be the same, it just affects performance.

1 Like

Ah, that makes sense. If the source variable in my example happens to use a setfenv in it, are there any additional performance hits, or is it exempt from more since it already took that hit?

You could be ahead of us and do smth like

for line in string.gmatch(errorMessage, "at line (%d+)") do

and highlight all lines in question :slight_smile:

There’s no additional hits, effectively code in Luau can run in “pure” environment (default) or “impure” (setfenv/getfenv/loadstring).


That’s a great idea, I’ll probably add that over the weekend! Thanks.

This is very helpful information, thank you! The user-input code in the Lua Learning interactive lessons are impure, but it’s not like it needs to be fast anyway. It’s bound to be impure anyway because of all my careful sandboxing.

This makes me a little curious. If I use loadstring to build functions or tables with functions, and then export those functions (e.g. via a module) since those functions came from an “impure” environment will they “impurify” any caller environment or will the specific function being called be the only thing taking performance hits? Additionally, if this is the case, is there any chance an “impurified” environment can become pure again?

(P.s. will there be any detailed documentation on specific luau optimizations on the devhub/devforum? I can’t help but feel that it’s probably at least mildly annoying to get repeatedly asked the same 100 essay-length questions by epic devforum members, Hexcede, and those people who probably secretly, but confidently think that luau optimizations were strenuously forged through black magic and witchery every day)


Since each function comes with its own environment that by default is inherited from the script that the function was created in, exporting impure functions into pure environment doesn’t contaminate that environment.

No - it’s a one-way road.

Yes, at some point.

They might be right.


When end is missing in Lua code, the parser error message now highlights the likely location of mismatch using indentation as a guide.

Wow! I am so excited for this! Coding is really getting more easier!

Any idea when this’ll be functional? Will it ever be reduced from RobloxScriptSecurity?

everyones hyped about luau and VR and here i am asking about permissions