With some luck we’ll see the Scripting Maintenance Project roll to the main grid this week. Since last Wednesday Blue Steel has been running the project’s code. Kelly Linden says it is looking good and will probably be a candidate for roll to the main grid this week.
Along with new scripting functions come simulator performance improvements. The graph shows some of the improvements. If I understand correctly we should be able see a noticeable improvement.
New Scripting Features in LSL
- llSetMemoryLimit() – This sets the maximum amount of memory the script can use. With this function the sizing and color scripts for hair and shoes can be set to use less memory. Because there are so many copies of the scripts in hair this should have a large impact.
- llGetMemoryLimit() – This reports what the memory limit is.
- llGetObjectDetails() – A new item has been added to the flags: OBJECT_SCRIPT_TIME. This item returns the average script time an object or avatar is using. The value is in seconds and is the same number as one sees in Top Scripts in the Estate Manager’s Tools.
- llSetLinkMedia() – This is sort of the same as llSetPrimMediaParams(). There is some problem with having to sleep objects to make a change. The new llSetLinkMedia() avoids that restraint.
- llGetLinkMedia() – This is like llGetPrimMediaParams () but without the sleep requirement.
- llClearLinkMedia() – This is like llClearPrimMedia()but without the sleep restraint.
- llSetLinkCamera() – A new function combines llSetCameraEyeOffset() and llSetCameraAtOffset() into one call.
- llSetContentType() – This function allows one to embed HTML in the viewer’s browser.
- PRIM_POS_LOCAL – This constant/flag allows one to have llGetLocalPos() and llSetLinkPrimitiveParamsFast() return local position values.
- llLinkSitTarget() – Is like llSitTarget() but for link sets. If you have built things that allow multiple avatars to sit on them, you should find this helpful.
- llAvatarOnLinkSitTarget() – This is like calling llAvatarOnSitTarget() but for link sets.
- llSetVelocity() – Update: Support added. The support page for this function has not yet been added to the LSL wiki. I think this is the change to make the velocity an attribute of the prim. This means one can remove the script and the motion will continue.
- llSetRotationalVelocity() – The support page for this function has not yet been added to the LSL wiki. I think this is the change to make the velocity an attribute of the prim. This means one can remove the script and the rotation will continue.
- PRIM_LINK_TARGET – This adds the feature to llSetLinkPrimitiveParams() and llGetLinkPrimitiveParams() to change the link target. This feature is compatible with all Prim Parameter functions. — Update: See JIRA SCR-162. Andrew Linden thinks this will be an easy fix (8/16).
- llResetOtherScript() – Has had an issue described in JIRA SVC-7175 that has been fixed.
- llTargetOmega() – Got a new bug in a release channel’s recent update and began failing. JIRA SVC-7174 has been fixed.
- The Build Tool’s shift-copy ability will now copy all prim parameters. Many of us build a prim with all the parameters we want and then shift-drag the prim to copy it and move it to a new position. Some parameters previously did not copy and had to be set after copy, which can be tedious when a large number of items are copied.
- A fix for llDialog spamming has been added… ummm… I suppose to stop such spamming. In some cases the spam could crash the viewer.
- A scripting permissions issue where permissions granted by an avatar were not revoked has been added. See JIRA SVC-7060. This blocks a griefing exploit.
Every other week is a triage week at the Kelly’s Content Creation Scripting Group. JIRA items in the script related category are evaluated and prioritized. Kelly takes feedback and recommendations from those in attendance. So, if you have a problem you want fixed this meeting offers a place for input.
While I write scripts for SL and OpenSim, I haven’t run into most of the problems being discussed. I also often do not understand the problem because I haven’t tried to script a process related to the JIRA. SO… my paraphrasing of some if the issues may be inaccurate. But, I think you’ll get a reasonable idea of the subject.
The items looked at this week:
- SCR-21 – llResetOtherScript() will not reset other scripts that have stack-heaped – I’m not sure if Kelly took any action on the item. Because of the new features to help people understand and work with script memory limits there should be fewer stack-heap crashes. Plus some think that allowing one to recover from a heap crash via script reset would promote sloppy programming.
- SCR-26 – llGetAnimation() constant transparency – This is about getting the documentation for this function correct. The function is returning values not documented. This ‘bug’ is more of a documentation request. Kelly is going to update the wiki. He added a list of return values to the JIRA item today (15/Aug/11 10:36 AM).
- SCR-64 – llKey2Name returns avatar names with double space between first and last (sometimes) – The opinion is this has been fixed. Kelly is asking for more information to see if anyone is running into the problem. If you are WATCHING the item, you’ll get an email asking for more information, which is why if you have the problem you want to WATCH the item.
- SCR-93 – llDetectedType() does not return AGENT for avatars sitting on objects – There was lots of discussion on this item. Kelly says, “Actually I believe the behavior currently is as designed. Collisions always detect the root prim, which for sitting avatars is the object they are on. I think you can still find sitting agents with llSensor.” Kelly added a comment that the perceived problem is an expected behavior.
- SCR-94 – llVolumeDetect collision_start/collision_end undependable – Kelly said, “I can import this as it seems legitimate, however it is unlikely to get much attention.” The problem is in how the physics engine works with this function. It is a complex fix and there is only 1 watcher. So, it will be a low priority.
- SCR-98 – Scripts not loaded create script errors when interacted with – This is a rarely seen problem. Apparently occurring at region start up or object rez. The problem has been back logged. If one seeing the problem get your information into the JIRA item.
- SCR-108 – llRezObject() fails when owner not present – A trivial script that rezzes an object on touch silently fails to rez the object when the owner is not nearby. Keely added a comment; “This is expected behavior. Group Roles and Powers only have an effect for the objects you own if you are nearby. The object does not cache or lookup these powers if you are not nearby. I will check and update the wiki for llRezObject if needed.” So, this is documentation confusion and not a bug.
The Lindens continue to wade through the bug reports and make repairs. Time and resource constraints limit what gets fixed, but they are moving forward. If the Script Maintenance Project makes it to the main grid we should see noticeable improvements in Second Life performance. We’ll also start to see better scripts that use less memory.
Update: There is a new, or at least updated, page in the SL Wiki on Script Memory.