Today one of the long pending updates has finally rolled out to the main grid. With any luck, it will work fine and a roll back can be avoided. So, what is in this new roll out?
The big gun in this roll out is Mono2. Kelly Linden is generally blamed for the Mono2 Update… well… attributed is probably a better word. But, since no good deed goes unpunished… we can thank him while gathering tar and features. Whatever your feelings on Mono2, it has been a long time coming. Today it was rolled out to the main grid.
The changes to LSL are not in the syntax of the language. A function in LSL like llSetLinkPrimitiveParamsFast() is the same whether you are planning to use the original LSL or Mono2. The change is in how the Second Life systems handle what a human writes. Scripts and programs are compiled, translated, from human readable to machine usable. The translator is the part that changes with Mono2. So, one does not see a change in the writing. The change is in performance.
Beyond performance is the concept of allowing the translator to handle multiple languages. The original LSL was written to deal with the problem at hand. It was made narrow and specific to solve the problem at hand with the minimum effort and cost. It made no real provision for easy future updates or other languages. In the last eight years programming has advanced and new open source options are available. Mono-translator/engine’s structure is different. Updates and the addition of other languages are easier to implement. So, some of the unspoken changes coming to SL may be new scripting languages like C, C#, and C++.
Also, efficiency is now a larger concern, as is memory consumption. Today’s avatars may wear 100 or more scripts. Try and put 1,000 avatars in a region and 100,000 scripts have to be handled. Efficiency becomes a serious bottleneck.
These are all factors that Mono2 addresses.
When Mono was first released in SL there was a big problem. When a Mono script first rezzed in a region it caused the region to freeze for several seconds. The lag induced was horrible. Soon new guns with Mono scripted bullets were banned in combat regions. People that compiled their AO’s as Mono hoping for better performance were changing back. The hoped for improvement was somewhat a failure.
It has taken considerable time for the Lindens to find the problems in SL’s complex system and interactions with the Mono engine. For years they have been revising and changing the SL system to allow implementation of Mono and months to get Mono2 performing as intended. This roll out is the result of lots of research and changes. We should see the region freeze and lag from Mono scripts minimized. If Mono2 bullets work, we’ll know we are there.
Recently there has been a problem with scripts in a region stalling for several seconds, 5 to 90 or more seconds. The problem was caused by an avatar with lots of scripts leaving a region. This recent roll out fixes that problem too.
To aide in tracking down the problems between Mono2 and SL, tools were added to the Lab’s implementation of Mono. Some of the tools are now available as script commands to allow residents to learn more about their scripts; llScriptProfiler, llGetSPMaxMemory, and llGetUsedMemory.
A number of bugs have been fixed, most scripting related.
SCR-55 – Fix “script reset”
SCR-61 – Fix “llOwnersay Truncates multi-byte characters at the end of its range”
SCR-66 – Fix “llRegionSayTo() Fails to send messages to attachments on sitting avatars”
SCR-76 – Fix “llRegionSayTo() silently fails in LSL2 scripts”
SCR-88 – Fix for “Periods of very low (or nonexistent) script performance”
SVC-6926 – Fixed a bug that could cause scripts to crash with NullReferenceException errors.
SVC-6573 – “Execution of script is not blocked on parcel for single user if scripts are not blocked for groups on parcel”
In the Release Channels we have the following updates in testing.
This channel is continuing to run a server-maintenance pack update. Again it has not passed the QA standards. More bug fixes are added and it will run for another week.
Fixes deal with teleport problems, buy/no-mod settings (VWR-9796), login language problems (STORM-1261), immortal objects (SVC-6905), email unsubscribe fail (WEB-3096), region restart notices (SVC-6953), and land group error messages (SVC-5780).
This channel continues to run the Mesh Prep updates. The mesh features and llCastRay() function are in the update but disabled in the Release Cannel regions. If that seems odd, consider it legacy testing. They are checking to make sure the new changes are compatible with the existing SL and do not break existing content or degrade performance.
For now this channel is running the main grid release. It is supposed to get a new project later in the week.
As we near the end of June the release of Mesh is drawing closer. The Mesh Prep Project has at times upset the prim counts and available prims counts. This hints that some part of the Mesh Prep work is getting stable prim counts for existing builds and handling the new mesh equivalency factors.
We are seeing more done to improve performance. Last week the simulator servers update for chat rolled out. There are some changes needed in viewers. I haven’t heard any news on those changes.
We are hearing there are new and wonderful things coming but no one is saying what those may be. But, news of current projects is becoming scarce. I suppose as work on known projects complete more of the Lab’s staff is moving over to the hidden projects. My hope is we learn about the projects at SLCC.
Some users are seeing significant performance degradation. Scripts are running slower and using up more resources. We haven’t heard back from Oskar Linden. Whether we see another roll back is a toss up.