Mono Beta Refresh 11

The Mono regions on the preview grid were updated with new software yesterday that resolves the following issues:

* Restored memory limiting for Mono scripts
* SVC-2439 key to string conversion causes script to fail silently
* SVC-2366 Recompiling objects with 50+ scripts will fail to set the Mono and Run status on the script.
* SVC-2254 Script error when crossing region boundaries with scripts that are ‘missing from database’
* SVC-1447 llGetFreeMemory() can return negative result
* SVC-2447 at_target and at_rot_target falsely report already defined in scope and fail to compile in MONO or LSL VM on MONO sim
* SVC-2403 Full recompile of an object (Mass Recompile) does not report compile errors to the user
* VWR-6643 Recompile Scripts in Selection -> Mono does not work for group owned (deeded) objects

Please test your new scripts on the preview grid and if you have any problems file a JIRA report here or tell us at the Mono office hours held in Sandbox Goguen MONO on the preview grid on Wednesdays at 8AM and Fridays at 3PM. Please also let us know about your Mono successes – hereโ€™s a video of an interactive Mandelbrot set explorer script running on LSL and Mono. The Mono version allows the fractal to be interactively explored while the LSL version takes 50 times longer to generate each image. The music is “Mandelbrot Set” by Jonathan Coulton which is available under the Creative Commons by-nc license.

Thanks again for your continued support throughout the Mono beta process.

UPDATE: The Mono branch picked up a problem during the merge before this refresh which caused simulators to fail to save simstates and then crash on startup. The problem has been fixed, so we’ve remerged and redeployed to the preview grid. No new Mono bugs have been fixed, but this redeploy should greatly increase the stability and availability of the Mono regions on the preview grid.

About babbagelinden

Software Engineer at Linden Lab
This entry was posted in Bugs & Fixes, New Releases and tagged . Bookmark the permalink.

67 Responses to Mono Beta Refresh 11

  1. Devo Pedro says:

    Dude I just filled the cup.

  2. Daten Thielt says:

    Briliant more mono bugs squished, is there any ETA on mono and the main grid, there was talk of it being within the first weeks of june/ or was that jully? ๐Ÿ˜€ great work mono team

  3. Darien Caldwell says:

    Nice work, Thanks for the update. ๐Ÿ™‚

  4. Ron Crimson says:

    DROOOOOOOOOL. This gets better and better (read: faster and faster) ๐Ÿ˜€ ๐Ÿ˜€ ๐Ÿ˜€

    Man, and I thought Havok4 was a breakthrough ๐Ÿ˜€

    (Well, it still was, but… y’know.) ๐Ÿ™‚

  5. Very cool video. How did your script set the color of individual pixels in the texture? Can you share the code and/or techniques with us?

  6. Dilbert Dilweg says:

    Why am i being prompted to enter my user name and password for the JIRA when i access the blog? I know this is off topic but something is wrong .. I get a pop up asking for my username and password

  7. Slartibartfast Magicthise says:

    Wow! Great presentation!

  8. Twisted Laws says:

    Hmmm… When I try and go to a mono sandbox (goguen) it tells me [18:08] Failed to grant capabilities

  9. Ener Hax says:

    hey great work to the Mono team (and all of Linden). this is some amazing stuff and incredibly complicated! sheesh, you guys are super talented (and passionate) braniacs! lol, and I find it challenging to put my hair on! =D

  10. Somatika says:

    re-listen to the song!

    You might have a minor or major PR issue with those lyrics!

    This is my second comment, the first one I suspect was filtered because I typed the exact lyrics and they where foul.

  11. Jaxx Tardis says:

    ARF! Love that song, it is a bit “blue” as the brits would say but I love it and JC. I really am curious, is each screen a pile of prims like I assume? Would love to see this in the linden library to play with regardless

  12. Seth Mandelbrot says:

    I do like exploring, but I categorically deny being 50 times faster in Mono than LSL.

    Long time resident,
    Seth Mandelbrot

  13. DISGUSTED IN LINDEN LABSโ„ขยฎ *!@$!! says:

    @6 because whoever does the web coding screws up the linking i guess i get the same thing i click events and i get SL status page i have for months poor web coding i guess
    cant wait to see mono
    hope it actually works lol (not holding my breath)

  14. Nulflux Negulesco says:

    Well that fixed most of the problems I saw when I tested things on the beta grid. Trying to recompile my 255 prim 300+ script hud was rather unnerving. Maybe I’ll go try it again when I have a spare 8 hours to play with it. I would also like to know when we will have this on the main grid. I think you could get away with actually doing the server update but leaving the Compile as Mono function in the advanced menu (you know a checkbox to hide or show the options on the script editor screen). Then all of us curious people could test recompile our scripts in real world scenarios. I for one would test it extensively and report bugs if it were available as a hidden advanced option. The performance difference between my scripts on the current server and the Mono server is like going from a Pentium 133Mhz based PC to a tweaked out dual core SLI gaming rig. A lot of us are ready, stop teasing us and let us play : )

  15. Foxxe Wilder says:

    I was just wondering if this mono thingy is the reason for the sudden BLANKING of my traffic reports. By the Gods, can you LL people not do ANY right at ALL??? In the year and a half I’ve been in SL there has been MORE BONEHEADED BLUNDERS than even the american president made!!

    If you are having an incompetence contest against him, well congrats. the LL morons WIN hands down. Now… TRY to fix SOMETHING (anything) WITHOUT SCREWING SOMETHING ELSE UP!!

  16. S J says:

    @15 you have absolutely no idea do you? At least work out what it is before blaming something on it. It’s on a totally different grid and it’s not even in the same sphere of relevance to traffic.

    “That dog next door, I’m wondering whether it’s the reason my flight was delayed due to bad weather”

    When in doubt check the wiki instead of making yourself look like a fool.

  17. Feynt Mistral says:

    Foxxe, seriously, get bent. Or I suppose unbent, since you already seem to be bent out of shape. Babbage is doing work totally unrelated to traffic tallies. I’m not even sure he’s working on production software at all. He’s part of one team (out of a dozen or so) which is focused solely on Mono. If you people can’t stop complaining about things unrelated to the topic at hand, perhaps the Lindens should trim back unrelated posts.

    This is a seriously cool example of Mono’s speed with computing, Babbage. And props to Jonathan again for another humorous and catchy tune. We’d all appreciate a list of what’s left to do and even an unofficial estimate (an optimistic one one might say) as to when this might be done and ready for the main grid. I personally would love an ETA on Python or some other language so I don’t have to use LSL anymore. >D

  18. Vincent Nacon says:

    Great…. but can we have it now?

  19. mcp Moriarty says:


    You can’t set pixels in a texture, it’s a bunch of boxes. Also you can’t click a texture to move around like that. But you can click a prim. ๐Ÿ˜‰

  20. Zi Ree says:

    Oh, this looks so promising! Thank you for this sneak peek, Babbage! I will have a look on the Preview Grid as soon as I can ๐Ÿ˜€

  21. Olaf Bosch says:

    hi, maybe a dumb question, but is the beta grid the same as the preview grid? I remember some posting were the name was changed but not sure if it was for mono too – would like to get to play with mono too ๐Ÿ˜€

    Keep up the enduring work on making sl more better – much appreciated –

  22. Lily Cicerone says:

    As usual, the preview I am impressed by the preview. I can’t wait to see this appear on the main grid. As asked before, any estimate on when we might see this? I have a few scripts waiting in the wings for the extra memory allotted to Mono scripts. Also, could someone confirm or deny rumors about a function for dialog menus with text fields? That would be pretty amazing.

    By the way, love the song. Sounds like a geeky cross between Elvis Costello and Barenaked Ladies. Then again, Elvis Costella and Barenaked Ladies are both a little geeky anyway. So I guess it sounds like a cross between Elvis Costello and Barenaked Ladies. Anyway, nice choice.

  23. Silk Aeon says:

    The Second Life Grid and the Second Life web site are open.??? Realy? then why cant login?

  24. Cold Spitteler says:

    * Restored memory limiting for Mono scripts

    what is the memory limit for mono?

  25. Cold Spitteler says:

    Could not teleport: failed to grant capabilities

    for any of the MONO regions

  26. Be Ewing says:

    Absolutely beautiful!!!! ๐Ÿ™‚

  27. Zi Ree says:

    @25 Cold Spitteler: I got that, too, but I just tried another one and it worked then.

  28. Be Ewing says:

    Will someone please type these series of equations? … Thank you

    my audio quality is not perfect … series of what???

  29. Be Ewing says:

    Take a series of Z’s and stay close to what???

  30. Be Ewing says:

    gives you full lyrics and equations ๐Ÿ™‚

  31. Ree Indigo says:

    *slaps her fellow residents around a bit*

    If you’re going to give the Lindens crap, don’t do so over their choice of extremely limited creative commons songs or the content in said songs. Do it over things like #6’s post, who showcases the Lindens’ coding prowess, and over #15, who showcases the Lindens’ ability to cover up the real issues with fluff, thereby giving people seeking answers a sea of garbage to filter out before getting to the answers. Don’t nitpick over details that make no difference.

  32. Dark Otsuzum says:

    Great demo, pity about the cheesy song.

    The odd thing about the song, no matter how closely you look at the words, is that they get cheesier and cheesier ad infinitum.

  33. salahzar says:

    While I’m looking forward to having mono on main grid, I’m a bit concerned on latest tests I’ve been doing in latest 3 weeks:
    reading a notecard with 34 lines with mono took around 25 seconds, while the same used to take 3-4 seconds in lsl (and with previous mono versions).
    I opened JIRA for this being answered that physics engine was taking a lot of resources and that was fixed. I will try again soon with this new version the same very easy notecard reading, but if this is going to happen on normal grid we are going to see all the inworld people really be furious ๐Ÿ˜ฆ

  34. Be Ewing says:

    “Cheesy song” is great ๐Ÿ™‚

  35. Be Ewing says:

    Okay … so how do I do this “Mono” thing? … currently have something called 1.19.1 (4)

  36. Be Ewing says:

    This really does make a lot of mathematical sense among all the dimensions … how to do 5th and above … to unite all dimensions … excuse me … left off with advanced math many, may years ago … but this makes a whole lot of sense ๐Ÿ™‚

  37. Fulano De Tal says:

    Notice how comments are always open when LL expects praise, and always closed when theyโ€™ve screwed up. HAHAHAHAHAHA

  38. Periapse Linden says:

    Those who want to try the Mono Beta had better hurry! The Mono UI is awaiting a merge for the 1.21 viewer, which will go into release candidate soon after 1.20 ships (likely a week or two). The Mono simulator is approaching readiness as well. This refresh is likely the penultimate version before we merge into release. I expect the simulator will go live mid July.

    Mono is currently deployed to the preview grid (formerly known as the beta grid). For info about where to go and what viewer to use check out:

  39. Lars Donardson says:

    All resolved…we keep an eye on things… THEN BETTER OPEN THEM because LOGIN FAILS !!! Good morning!!!!

  40. Argent Stonecutter says:

    Cold@24: the mono memory limit is 64k, because it’s less memory-efficient than LSL2: CIL code can be three times as large as the equivalent LSL2 bytecode. Increasing the memory limit by a factor of four is intended to cover the worst case and still leave some headroom.

  41. sloopy cooder says:

    @42: So reading the wiki and your comment, on one side scripts are less efficient and use more memory (wonder how this will impact sims with huge numbers of scripts running). On the other side, the wiki says:
    “We hope that the change will promote more efficient scripting. Currently programmers have to get around the 16K limit by using multiple scripts, and a lot of cycles get spent on passing data between those scripts. With a single script that would not be necessary.”

    OK, but if Mono is so much less memory efficient, then we will still need a bazillion scripts because of the memory limit is hardly larger at all due to byte code size!

    Testing mono is much more than “my script runs.” How do 14000 scripts run in the same sim? That number is not out of line with what I see in the production grid.

    Much code / resources are spent dealing with limits of LSL. Pass by value instead of reference being a biggie, along with a lack of array data types. That and only a single timer (why can’t we pass an event identifier) lack of a Case language structure, etc. We also still don’t have non-volatile storage. We could get a little with the ability to do a llGetText as well as an llSetText without changing anything else (using fully transparent text.)

    Some simple changes could be made to the language that would not break any existing code but allow for MUCH more efficient coding and scripts in general. How about it LL? Can we bring LSL out of the dark ages and improve it please?

  42. Leonro Sands says:

    “OK, but if Mono is so much less memory efficient, then we will still need a bazillion scripts because of the memory limit is hardly larger at all due to byte code size!”

    I tested my multiple script product with mono. Even the largest script has much more free memory than before. For the simulater the balance will also be positive: The strongest effect will come from the many small scripts. Now they all occupy 16k each, and under mono they use much less.

    From The mono FAQ:
    “[…] unlike LSL2, Mono allocates memory dynamically, whereas all LSL2 scripts occupy 16K. Mono scripts only allocate the memory that they need.”

    Think about all the 16k memory pieces currently occupied by poseballs, rotating signs and so on.

  43. JeffB says:

    Thanks to the SL community to all of their in depth testing, and the SL developers for keeping up with things. I’m really looking forward to the main grid release of MONO, but I understand you want to make sure it’s been heavily debugged. I’m very impatient, but good luck with everything, it looks great so far!

    I’m sure there’s people complaining about non-mono related stuff in this thread, I didn’t bother reading it though, it’s a shame they don’t understand different coding groups are responsible for different projects and ‘my ugly shoes don’t render right’ doesn’t fit into mono beta development. But I hope that the ugly shoes department is paying attention ๐Ÿ˜€

  44. Ree Indigo says:

    @40: OH NO YOU DO NOT!

    Babbage, mark my words. If you rush this, if you continue with the schedule, if you put this out in the real grid one second before it’s 100% ready … you WILL regret it.

    I refuse to sit by with another MONTH of failed logins and rolling restarts because a new fangly shiny piece of CRAP got shoved onto the grid before its time.

    Being a scripter myself, I get weak with anticipation over the promises of what Mono can do. Being a resident who sat through Havok 4 implementation, Windlight implementation, and other backhanded “upgrades” that destroyed the grid wholesale … all I have to say is:


  45. Ree Indigo says:

    And since the Lindens only seem to respond to “happy” posts, let me put it to you another way:


  46. Zi Ree says:

    I tested a number of my products and fun scripts on the preview grid, and it was working quite well. I see the occasional problem with scripts set to “not running” after converting from LSL to Mono, but I haven’t gotten around to properly troubleshoot and reproduce this. Also, trying to “Recompile Scripts in Selection” fails if the root prim doesn’t include any script, even though the childs do.

    I’ll do some more testing later and see if there’s something on the Jira abouot this already..

    All in all, great job! I’m impatiently waiting for Mono to hit release ๐Ÿ˜€ I’d love to see an “early adopter” program just like you did with Havok4. If this is an option, I’d like to take part ๐Ÿ™‚

  47. Argent Stonecutter says:

    Zi@48: “Also, trying to โ€œRecompile Scripts in Selectionโ€ fails if the root prim doesnโ€™t include any script, even though the childs do.”

    That was already broken.

  48. Ron Crimson says:

    @ Ree Indigo: Puh-leeze. There were no major issues with WL or Havok4 whatsoever once they went mainstream. (Keyword “major.”)
    So by all means, don’t bother logging in during August, everyone else will be the happier for it. ๐Ÿ˜›

  49. Chrysala Desideri says:

    I didn’t find the lyrics foul at all.

  50. Zi Ree says:

    @49 Argent Stonecutter: Thanks, Argent. Never saw that before.

  51. Argent Stonecutter says:

    For the folks worried about Mono, the Lindens have said that they have no plans to eliminate the existing LSL2 VM, both will be available, and you will be able to compile scripts either way. They just plan on making Mono so compelling that you won’t be able to resist.

  52. sloopy cooder says:

    @53: that is good to know. Thanks! If they REALLY want to make it compelling, address some of the serious language deficiencies listed in 43. I’d stay up solid for 2 days doing a re-write of my older code. Slightly enhanced language features / functions would go a LONG LONG way towards reducing memory footprint and greatly increasing speed.

    Passing lists by reference instead of by value would be a HUGE win alone. The amount of internal copying of data with the old LSL2 VM due to pass / modify by value is just insane.


    Specifically this gem: LSL makes a temporary copy of all variables in an expression before it evaluates it. Say you’re concatenating two 2kb lists: You originally use a total of 4kb of memory. The normal method of concatenation would copy them (then requiring a total of 8kb), then concatenate them (total of 12kb), then copy them into the original variable (14kb), then destroy all the temporary copies.

    Now I hope that one of the things mono does better is simple operations like this, but there is still the “pass by value” problem that is a language issue.

  53. @38: IMHO this mathematical object lives most naturally in 4 dimensions; one for each of the real and imaginary components of the Z’s and C’s. See for more information.

  54. Periapse Linden says:

    Since this update the Mono beta regions on the preview grid have been crazily unstable. It turns out that when we cut the new branch and merged in Mono, we picked up a nasty bug that was lurking in the main branch. The bug affected the ability of simulators to save their state, so they could not ever recover. That bug has since been fixed in the main branch (fortunately before it was ever deployed to the live Grid). So we cut a new branch and remerged Mono. That new branch was just deployed. So far the regions are looking good, but only the weekend will tell.

  55. Argent Stonecutter says:

    The pass-by-value isn’t really a limitation of the LSL2 bytecode, it’s a deliberate design decision to make the language easier for novices. I don’t know that I agree that it actually does that, but it’s really a separate issue from LSL2 vs CIL.

    Also, most of the changes that have shown up in LSL in the past few years, except for things like my patch for negative numbers, have been new functions in the runtime libraries. They’re really independent of whether the compiler is compiling to LSL2 or Mono, and in fact the *same* compiler compiles both LSL2 and Mono code… the only difference is in the code generator that walks the tree, and fixes are in the code generator not the parser… so LSL2 and CIL code should remain in sync unless LL deliberately breaks that for strategic reasons.

  56. Ree Indigo says:

    @50. As you said, Keyword โ€œmajor.โ€ Also, keyword “CONSTANT”.

    @56. Didn’t you just get done saying this was the last update to the code until it goes live? OOPS.

    Slow down, take your time … or we’ll have a deployment schedule like Windlight. Two months of hype followed by a month of abject screaming hate. PLEASE take your time with this.

  57. Ron Crimson says:

    Ree @ 59, they ARE taking their time. They did with Windlight and they did with Havok 4… remember, everyone started believing Havok 4 would never ever happen ^_^ And besides…there’s LL and then there’s the residents. No matter how much time and care LL takes, we’ll have a month of abject screaming hate anyway. There’s just no way around it, sadly. ๐Ÿ™‚

  58. Be Ewing says:

    Okay … so how are things coming along?

    I’m going to be gone for weekend …

    Mono team … progress? …

    Ugly shoes team? …

    Other ten teams or so? …

    Butterfly will flap its wings from a million miles away …

    Okay … we can do this … important … just in time to save the day … will dramatically increase communications capacity in the world without needing to increase the physical capacity …

    Take care, smiles and love to all! ๐Ÿ™‚

  59. chalky white says:


    Great to see these fixes, but I have a suggestion for future posts of this nature.
    Each time you update mono, server or client, I have a vital question in my mind. It is this:

    Do I need to recompile scripts ?

    Unless your blog post tells me, my only resort is to test for myself whether the bugs are gone.

    You may say – just recompile anyway. But each of the objects I am testing has 32 scripts in it, and it is a time comsuming job.

    So can you tell us – for this server upgrade, will we need to recompile earlier scripts? how far back?

    In the past I have found out by suck-it-and-see, but it really shouldn’t be necessary.

    My guess is that all recent stuff is compatible, but I could be wrong ?

  60. Zi Ree says:

    Just select all of your objects at the same time ad do “Recompile scripts in Selection”. There is a bug, however, that prevents a recompile if the root prim doesn’t contain a script. I resorted to putting an empty dummy script into each object for the time being to overcome the problem.

  61. Ryu Darragh says:

    Can’t imagine why they would, Argent. In fact, some of the old limitations can be phased out without affecting script operation.

    @43, mono is more, not less, code efficient. I have measured the actual code size of a major string handling DB script in LSL2 and mono and the LSL script was 2-3 times larger than the mono version. QED, mono saves script size. The other factor is that LSL2 scripts are not allocated dynamically. I get maybe 5K storage for LSL2 vs. 31K for mono (works out to 10KB memory, 6KB code for LSL2 vs. 62KB memory and 3K code for mono using the same script).

  62. DhouZhang Fhong says:

    This may be all well and good for beta, but what does this mean for the main grid? I’ve been to the beta grid and nothing much happens there. What i’d like to know is why the Linden Lab Teams are completely ignoring the main grid unstability? What is the Lab’s excuse for this? Are they going to do a microsoft and blame the user for stability problems? I have my SL graphics settings at absolute minimum and I am still crashing on a regular basis. I’m lucky to get one log-in on every ten that last longer than half an hour. Fixing the Beta grid is all well and good, but not if means the main grid gets left behind and the everyday users get screwed over. Pull your heads out, Linden Labs, and fix the problems.

  63. Zi Ree says:

    @64 DhouZhang Fhong: All fixes on the beta grid are going to be transfered to the main grid, so I don’t understand what you are complaining about. The Lindens are not ignoring the main grid, Just a few months ago they replaced the old physics engine with a newer version, and this alone increased the stability of the main grid massively.

    What you probably are talking about are viewer crashes, not grid (simulator) crashes. This has nothing to do with each other, abd the Mono/Beta-Team is the wrong address to complain about this.

  64. Jahar Aabye says:

    I’ve been too busy finishing scripting projects on the main grid to check out the mono beta yet, will probably do so later today, but I do have one concern to toss out there:

    Already, with LSL2, it is quite common to see a lot of shoddy, inefficient scripting out there. Not just the kind of stuff that generates script errors or stack/heap collisions, but the subtler stuff like objects that pull 50k IPS because linked messages aren’t parsed correctly. Some of these scripters have an attitude of “it’s not my fault, LSL is an inefficient language” as an excuse for not taking the time and effort to trim down their scripts.

    Now, you would think, given that I’m a bit of a stickler for script efficiency, that I’d be thrilled about mono. However, I worry that the real-world (errr, virtual-world) result of this implementation may be that it winds up giving some scripters more of an excuse towards inefficiency. After all, now that there’s more runtime memory allocated, some people will think “why not use it all?” And now that shoddy coding which previously would have run very slowly will now run faster, there is less emphasis on making code efficient, so some will think “why bother?”

    Like I said, I haven’t had a chance to check out the mono beta, so I don’t know the extent to which inefficient mono scripts will affect sim performance, or will affect the performance of LSL-compiled scripts on the same sim.

    I do know, however, that a scripting language will only be as good or as bad as those using it.

  65. Jen Shikami says:

    So, Periapse, any new predictions on when Mono might go into release? Still slated for 1.21 viewer and simulator will go live mid July?

  66. richard says:

    i got mono from my girlfriend

Comments are closed.