Mono/2008-01-30

[8:08] Babbage Linden shouts: turning off scripts in this region while we talk
 [8:08] Ryu Darragh: So we don;t get interrupted by region crashy stuff
 [8:08] Safer Allen: and by the way nice arm
 [8:09] Ryu Darragh: I'll wait until later to test my crashers to see if mono makes them worse.
 [8:09] Babbage Linden: thanks for coming everyone
 [8:09] Babbage Linden: done
 [8:09] Babbage Linden: and thanks for testing mono
 [8:09] Safer Allen: Hey!
 [8:09] You: Good Moorning (or afternoon) all
 [8:09] Ruud Lathrop: PS Nice new viewer. with new layout
 [8:09] Day Oh: Good morning or afternoon Babbage (:
 [8:09] Babbage Linden: heh, that was just pulled in from the release branch
 [8:09] Safer Allen: its 16:09
 [8:09] You: Some bugs with this new viewer ...
 [8:09] Safer Allen: no I mean its 17:09
 [8:09] Babbage Linden: hi peri, thanks for coming
 [8:10] Safer Allen: whats changed Babbage?
 [8:10] Babbage Linden: i know it's early for you
 [8:10] You: Scouse is trying to make it in, relogging
 [8:10] Ryu Darragh: It's really 16:10
 [8:10] Ryu Darragh: GMT
 [8:10] Safer Allen: no
 [8:10] Babbage Linden: so, thanks for all the bug reports in JIRA
 [8:10] Safer Allen: its 17:09XD
 [8:10] Babbage Linden: scouse and I have triaged them today
 [8:10] You: I'm usually in before 8am, only tuesdays' and thursdays am I later
 [8:10] Safer Allen: I didn't found bugs
 [8:10] Ryu Darragh: Where I am it's 11:10
 [8:10] Safer Allen: im just a bugXD
 [8:10] Babbage Linden: we have a fix for the sim crashing bug already
 [8:11] Scouse Linden is Online
 [8:11] Safer Allen: ok
 [8:11] Safer Allen: thanks
 [8:11] Babbage Linden: and hopefully we'll be able to roll that out today
 [8:11] Babbage Linden: we've also added unit tests for a lot of the new bugs to the LSL library test on the public wiki
 [8:11] Ruud Lathrop: Cant you better pull that lsl code from jira?
 [8:11] Ruud Lathrop: So nobosdy crashes the sim for fun
 [8:11] Babbage Linden: and we'll be working on the bugs over the next couple of days
 [8:12] Safer Allen: ok
 [8:12] Safer Allen: lol
 [8:12] Ryu Darragh: I have it.. all self made.
 [8:12] Day Oh: Will we still be able to get stack traces after all the bug fixing? :D
 [8:12] Babbage Linden: hi scouse
 [8:12] Ryu Darragh: And it can crash Havoc4 about 24% of the time
 [8:12] Safer Allen: wow much lindens here
 [8:12] Safer Allen: me too
 [8:12] Safer Allen: easy to crash sims
 [8:12] Ryu Darragh: Yes
 [8:12] Safer Allen: very easy
 [8:12] Babbage Linden: yes, the stack traces will stay
 [8:12] Day Oh: I rike
 [8:13] Babbage Linden: they make it much easier for us to fix things
 [8:13] Safer Allen: ok
 [8:13] Ryu Darragh: Barn door and horses and all that
 [8:13] Babbage Linden: if you get stack traces, please post them with the bug reports
 [8:13] Babbage Linden: and if you can, add a minimal repro for bugs to the library test if you can
 [8:13] Safer Allen: k
 [8:13] Babbage Linden: we're going to make sure they keep passing on mono and LSL2 as we bug fix
 [8:13] Ryu Darragh: Looks like the llPlaySound error is a null character in the variable names
 [8:13] Safer Allen: yes
 [8:14] Babbage Linden: those tests will hopefully become a specification for LSL2
 [8:14] Twisted Laws: where do you turn on stack traces?
 [8:14] Babbage Linden: which we haven't really had up to now
 [8:14] Babbage Linden: the language test is here http://wiki.secondlife.com/wiki/LSL_Language_Test
 [8:14] Siann Beck: I believe they're just on, Twisted. That's the dump you were getting with your permissions bug.
 [8:14] Twisted Laws: oh, ok
 [8:15] Ryu Darragh: Enable your client/server debug menus
 [8:15] Babbage Linden: these are the tests we've added today http://wiki.secondlife.com/w/index.php?title=LSL_Language_Test&diff=52029&oldid=51309
 [8:15] Ryu Darragh: ctrl-ald-D
 [8:15] Babbage Linden: which we will be working to make pass on Mono over the next couple of days
 [8:15] Safer Allen: lo
 [8:15] Babbage Linden: most of them are fairly trivial fixes
 [8:15] Babbage Linden: and the repros that have been posted have been very good, so thank you again
 [8:16] Day Oh: The language test needs to test *everything* ?
 [8:16] Babbage Linden: we're going to prioritise crash bugs, then compile/injection bugs, then runtime bugs
 [8:16] Babbage Linden: the language test needs to test everything that has differed between LSL2 and Mono at any point
 [8:16] Babbage Linden: then we can keep testing it for regression
 [8:17] Babbage Linden: so, don't add tests just to make the tests complete
 [8:17] Babbage Linden: but do add tests for any case where LSL2 and Mono differe
 [8:17] Babbage Linden: and any corner cases that we haven't covered
 [8:17] Babbage Linden: for example, 0 * 0 and 1 * 2 would be good tests
 [8:17] Babbage Linden: but then you don't need 1 * 3 as well
 [8:18] Ryu Darragh: We put Havoc4 on a copy of Hedgetopia where we have vendors from the Isle of Wyrms situated. Can we get Mono there at any point to see how the vendors work ? Oh, nm. I can run them, but Daryth would need to recompile them.
 [8:18] Babbage Linden: diagonalizing the test inputs is what you want to do
 [8:18] Babbage Linden: exploring the corner cases
 [8:18] Babbage Linden: we've got most of the arithmetic and language features covered
 [8:18] Babbage Linden: but some of the bugs posted revealed gaps
 [8:18] Safer Allen: why are here so much people
 [8:18] Safer Allen: XD
 [8:19] Babbage Linden: for example, the crash bug was caused by a failure to cast return values properly
 [8:19] Babbage Linden: so, we've now added tests that return every type
 [8:19] Babbage Linden: to check those casts
 [8:19] Ryu Darragh: Stack size inconsistancy on return values ?
 [8:19] Scouse Linden: yes
 [8:20] Babbage Linden: well, it's more than that
 [8:20] Safer Allen: wow
 [8:20] Babbage Linden: mono is a strongly typed vm
 [8:20] Babbage Linden: so, it complains if types differ on the stack even if they are the same size
 [8:20] Scouse Linden: We've disabled scripts here
 [8:20] Ryu Darragh: That could also explain some variable failures in things like llPlaySound
 [8:20] Babbage Linden: we'll look in to the llPlaySound bug
 [8:20] Scouse Linden: Please dont rez stuff while we're meeting
 [8:20] Safer Allen: sure
 [8:21] Babbage Linden: but it's a lower priority as it's pretty clear what's going on
 [8:21] Babbage Linden: you get a runtime error that explains the bug
 [8:21] Safer Allen: but I'll go
 [8:21] Ryu Darragh: Yeah.. tedious bug stuff
 [8:21] Safer Allen: see ya guys
 [8:21] Babbage Linden: we'd like to fix issue like the boolean operator problems first
 [8:21] Day Oh: <3
 [8:21] Babbage Linden: as they are more serious issues
 [8:21] Babbage Linden: so, that's where we are at the moment
 [8:22] Scouse Linden: We're also going to report the real memory usage
 [8:22] Babbage Linden: we've got great bug reports, a fix for the crash bug and tests to expose most of the others which we'll fix this week
 [8:22] Ryu Darragh: The free memory function will finally be accurate :P
 [8:22] Babbage Linden: any questions?
 [8:22] Babbage Linden: yes, that's what i wanted to ask actually
 [8:22] Ryu Darragh: I have a few scripts depend on it. I'll test them out
 [8:22] Babbage Linden: is everyone happier with llGetFreeMemory() returning betwen 0 and 64K for Mono scripts?
 [8:23] Twisted Laws: yep
 [8:23] Babbage Linden: rather than a scaled value between 0 and 16K
 [8:23] Babbage Linden: ok, great, that's what we thought
 [8:23] Davie Zinner: yes
 [8:23] Day Oh: We'll see? :D
 [8:23] Ryu Darragh: 64K will be better as the program and variable spaces are shared, yes ?
 [8:23] Babbage Linden: yes, as with LSL2, the memory limit is shared between text (bytecode), heap and stack
 [8:24] Babbage Linden: so, if your script is large, you get less memory for recursion or list and string variables
 [8:24] Twisted Laws: will llGetFreeMemory ever return an increasing value as you delete lists or whatever in the script?
 [8:24] Babbage Linden: we upped the limit to 64K so that all existing LSL scripts should run without running out of memory
 [8:24] Ryu Darragh: So the alloc functions still assign a storage space even if the variable is never used.
 [8:25] Babbage Linden: as in the worst case, Mono can use 3.25 times more memory than LSL2
 [8:25] Siann Beck: So, is the 64k going to remain once it goes to production?
 [8:25] Babbage Linden: llGetFreeMemory works as before, returning the minimum free memory available to the script since the last reset
 [8:25] Ryu Darragh: It has to, if the VMs are going to be compatible.
 [8:25] Babbage Linden: the fix we have in the works will reset the minimum when you reset the script
 [8:25] Babbage Linden: which isn't happening at the moment
 [8:26] Ryu Darragh: I'll try my DataPad later and see what happens.
 [8:27] Babbage Linden: i imagine the bugs we have at the moment will break a large percentage of scripts
 [8:27] Ryu Darragh: It was always hit or miss if I'd get a stack fail or a message about low memory.
 [8:27] Leffard Lassard: In what category of bugs fall script run-time errors?
 [8:27] Babbage Linden: but, hopefully we'll get that percentage up in the next few days
 [8:27] You: Use SVC project
 [8:27] Babbage Linden: if mono is generating run time errors where LSL2 doesn't, then we'd like to know about it
 [8:27] Scouse Linden: https://jira.secondlife.com/browse/SVC-1276
 [8:28] Babbage Linden: all of the stack trace runtime errors shouldn't exist
 [8:28] Babbage Linden: so, if you get a stack trace runtime error, please let us know
 [8:28] Leffard Lassard: What I mean is the priority of a bug as Babbage mentioned before.
 [8:28] Babbage Linden: and post a repro
 [8:28] Babbage Linden: once we've got the crash bugs fixed
 [8:28] Ryu Darragh: Sure will.
 [8:28] Twisted Laws: i got one that i can make stop but can make happen in a minimal script with same changes
 [8:29] Babbage Linden: we'll try to fix bugs based on the number of scripts they are likely to affect
 [8:29] Babbage Linden: so, boolean logic operators are likely to be used more often than sound library calls
 [8:29] Ruud Lathrop: What about bug https://jira.secondlife.com/browse/SVC-1330. Are you gonna fix that or is that just bad programming. :)
 [8:29] Babbage Linden: but, let us know which scripts are your priorities too
 [8:29] Babbage Linden: and we'll use that as input in to our prioritisation
 [8:29] Ryu Darragh: "Does not exist". Ruud
 [8:30] Scouse Linden: Ruud: We have added tests for it
 [8:30] Ruud Lathrop: Ok so fix :)
 [8:30] Scouse Linden: We will be fixing soon
 [8:30] Babbage Linden: so, yes, that will be fixed in the next batch of fixes
 [8:30] Scouse Linden: Hopefully :)
 [8:30] Babbage Linden: we write the tests, see them fail, write the fix, see them pass
 [8:30] Babbage Linden: then the tests get run whenever we change anything to make sure the bug doesn't creep back in
 [8:31] Nock Forager: Hi there beta geeks!
 [8:31] Babbage Linden: hi nick
 [8:31] Babbage Linden: nock, even
 [8:31] Babbage Linden feels weird sitting when everyone else is standing
 [8:32] Day Oh: Sounds great... so, if we report a bug, someone else will add it to the test? I don't wanna fill the test with so many things that it fails while you try to work on each thing
 [8:32] Ryu Darragh: Heh.. yer seats all face south
 [8:32] Babbage Linden: feels more like an xp meeting now anyway
 [8:32] Ryu Darragh: Notice the instinctive "gathering circle" ?
 [8:32] Babbage Linden: well, we can pick different versions out of the wiki using the history
 [8:33] Babbage Linden: so, we're going to work on making the current set of tests pass
 [8:33] Scouse Linden: I'd say if you can write a test that belongs in our Language test, the fix will come quite quickly
 [8:33] Babbage Linden: if you add new ones on the meantime, we'll make those pass in a future iteration
 [8:33] Babbage Linden: yes
 [8:33] Day Oh: I understand
 [8:33] Babbage Linden: the language test should always pass on LSL2
 [8:33] Babbage Linden: and then we'll work on making it pass on Mono
 [8:34] Babbage Linden: any more questions?
 [8:34] Babbage Linden: first impressions?
 [8:34] Ryu Darragh: This reminds me of the days when Ritchie challenged me to port C onto a Z80
 [8:34] Babbage Linden: are we heading in the right direction?
 [8:34] Twisted Laws: yes
 [8:34] Siann Beck: First impression: Yeeeeeeeeeeeha!!!!!
 [8:34] Davie Zinner: absolutely yes
 [8:34] Ruud Lathrop: Well when can we see it on the main grid :D
 [8:34] Nock Forager: yeah
 [8:35] Day Oh: It seems that way to me... I'm curious what you'll do about taking mono scripts to regions that aren't running mono
 [8:35] Ryu Darragh: I'd guess by end of march
 [8:35] Robins Hermano: I'm sorry to ask this quiestion as it's unrelated to Mono specifically
 [8:35] Robins Hermano: So I'd be happy to wait unitl all the Mono questions have been asked
 [8:35] Babbage Linden: day oh, mono scripts won't run on regions that aren't embedding mono
 [8:35] Babbage Linden: you'll get runtime errors
 [8:35] Babbage Linden: (or should, there seems to be a race that stops that working sometimes)
 [8:36] Siann Beck: I'm guessing things are going to be a little chaotic for a while as it goes into prouction.
 [8:36] Babbage Linden: i don't think we want mono on the main grid until it's completely compatible with LSL2
 [8:36] Babbage Linden: i'd hate to see different versions of LSL emerge
 [8:36] Qie Niangao: oh, what happens when an old script that's working but missing from database is on a Mono region?
 [8:36] Babbage Linden: dialects for Mono and LSL2
 [8:37] Ruud Lathrop: Any change you are going to fase out the LSL2 Compiler? (or not run the byte code anymore on the servers)
 [8:37] Babbage Linden: qie, it will still run on LSL2
 [8:37] Day Oh: So like, if you have both a mono and lsl2 implementation in an object, then you could have a way for the lsl2 script to know that the mono one will run, so it can turn off?
 [8:37] Qie Niangao: thanks, Babbage
 [8:37] Babbage Linden: we don't plan to remove the LSL2 virtual machine
 [8:37] Babbage Linden: so, if you can't get the source code for a script, you can't recompile it to mono
 [8:37] Babbage Linden: but you can keep running it
 [8:38] Babbage Linden: day oh, interesting suggestion
 [8:38] Babbage Linden: universal binaries for LSL
 [8:38] Babbage Linden: i'd prefer not to
 [8:38] Babbage Linden: once we've finish testing all sims will end up with LSL2 and Mono embedded
 [8:38] Babbage Linden: so any script should work anywhere
 [8:38] Babbage Linden: it's only while we test and roll out that we have to deal with some sims not understanding mono
 [8:39] Ryu Darragh: Smart scripters and those who can, will send updates to customers
 [8:39] Ruud Lathrop: Will there also be a water sim, with mono?
 [8:39] Babbage Linden: yes, we should sort that out the next time we deploy sims
 [8:40] Babbage Linden: so people can test floating scripted objects
 [8:40] Twisted Laws: as you update mono, do we need to go back and recompile scripts that run ok now in mono?
 [8:40] Scouse Linden: Ruud asked abut phase out of LSL2
 [8:41] Babbage Linden: we'll have to see
 [8:41] Twisted Laws: already run ok in mono....
 [8:41] Babbage Linden: once we're happy that all scripts can compile and run correctly on mono we'd like to
 [8:41] Babbage Linden: we can see what the take up of mono is
 [8:41] Babbage Linden: and use that to determine a good time to start thinking about phasing out LSL2
 [8:41] Scouse Linden: LSL2 the VM will probably never be phased out
 [8:42] Babbage Linden: we'd like to phase out client side compilation first
 [8:42] Babbage Linden: as that will make SL significantly more secure
 [8:42] Babbage Linden: as people will no longer be able to upload corrupt bytecode
 [8:42] Babbage Linden: (although it may still be possible to exploit the compiler to generate corrupt LSL2 bytecode)
 [8:42] Siann Beck: So, even after Mono is rolled out to the main grid, there will still be an option to compile to LSL?
 [8:43] Babbage Linden: probably, we'll see
 [8:43] Ruud Lathrop: Why?
 [8:43] Babbage Linden: if there is a big demand for Mono on the main grid
 [8:43] Babbage Linden: but some corner cases that don't work with Mono
 [8:43] Squirrel Wood: Ta!
 [8:43] Ryu Darragh: I plan to update all of mine and send updates to all my customers that want them.
 [8:43] Babbage Linden: then allowing both targets makes sense
 [8:43] Babbage Linden: if we can get to 100% compatibility quickly, then it makes sense to only allow Mono as the target
 [8:44] Siann Beck: I see.
 [8:44] Babbage Linden: as it's more efficient and more secure
 [8:45] Scouse Linden: To answer twisted 's question about backwards compatiblity
 [8:45] Babbage Linden: hopefully once a script is compiled to mono it will continue to run, we may need to change the interface to Mono scripts, but even then we can still support old Mono scripts with some work
 [8:45] Ryu Darragh: So, with the LSL2 VM still running, older scripts with only the bytecode will run (no mod versions) and all new scripts after that will end up in MONO
 [8:45] Babbage Linden: Mono makes it much easier to support multiple versions of scripts
 [8:45] Twisted Laws: ty
 [8:45] Babbage Linden: using the GAC to have multiple versions of libraries
 [8:46] Babbage Linden: at the moment if we get a library call wrong
 [8:46] Babbage Linden: we have to keep supporting its broken behaviour
 [8:46] Babbage Linden: see llXor...Correct
 [8:46] Theria Ingrassia: So do you create one assembly per script?
 [8:46] Babbage Linden: in the future, we can version the library, so existing scripts use the old implementation and new scripts use the fixed version
 [8:46] Squirrel Wood: I got a nice error today when trying to compile a script of mine to mono
 [8:47] Babbage Linden: yes, we create one assembly per script
 [8:47] Theria Ingrassia: That WILL stesstest the mono gac ;)
 [8:47] Ruud Lathrop: lol
 [8:47] Babbage Linden: only libraries get installed in the gac
 [8:47] Babbage Linden: user scripts get saved in the asset server
 [8:48] Babbage Linden: like current script bytecode assets
 [8:48] Robins Hermano: Quick question about the asset server
 [8:48] Robins Hermano: If I have a script that works one day, then it doesn't the next day
 [8:48] Ruud Lathrop: Are you also looking in implementing different languages, instead of LSL2?
 [8:49] Robins Hermano: Re-rezzing an object and re-inserting the script makes it work again
 [8:49] Robins Hermano: Is that an asset server issue?
 [8:49] Babbage Linden: not sure, thats an interesting bug robins, i haven't seen it
 [8:49] Robins Hermano: Sorry, again I know that's not a Mono question
 [8:49] Ryu Darragh: I have
 [8:49] Siann Beck: I think that's a TBD, Ruud.
 [8:49] Babbage Linden: please file it in JIRA
 [8:49] Robins Hermano: I'd love to talk to you another time Babbage so as not to interrupt this meeting
 [8:49] Babbage Linden: (although not under Mono)
 [8:50] Ryu Darragh: The bytecode and the script text ae seperate items and sometimes the bytecode gets seperated and never gets loaded
 [8:50] Babbage Linden: ruud, yes, i'd like to see other languages running on Mono
 [8:50] Babbage Linden: but, we want to get LSL compatible and deployed to the main grid first
 [8:50] Babbage Linden: and we need to see whether the work needed to support C# is worthwhile
 [8:51] Babbage Linden: compared to other improvements we could make
 [8:51] Ruud Lathrop: No changes in LSL2 till Mono is up and running?
 [8:51] Babbage Linden: i'd like to leave LSL as is
 [8:51] Babbage Linden: and plan to support other languages instead of improving LSL
 [8:51] Ruud Lathrop: Ok
 [8:52] Day Oh: So now to support other languages, it has to be added server-side?
 [8:52] Babbage Linden: at the moment yes
 [8:52] Babbage Linden: there may be a point when we can support arbitrary uploaded assets
 [8:53] Babbage Linden: but in the medium term, we'll add support for other languages in the asset upload framework
 [8:53] Babbage Linden: so, the viewer will be sending source that we compile, rather than CLI assemblies
 [8:54] Day Oh: I do like the server-side compile idea
 [8:54] Ruud Lathrop: Will that not be a load on the server/sim
 [8:54] Ruud Lathrop: Dropping performance?
 [8:55] Babbage Linden: yes, it will, but it buys us security
 [8:55] Babbage Linden: as we know that we're generating the bytecode using a compiler that we trust
 [8:55] Babbage Linden: rather than accepting binary data that may or may not be bytecode
 [8:55] Siann Beck: During the time that both LSL and Mono compilation are supported, will LSL compilation remain client-side?
 [8:55] Fumon Kubo: At the moment, even syntax errors are being left for the server compile. Shouldn't something like that be in the client at the very least?
 [8:56] Babbage Linden: at the moment compilation to LSL bytecode is done server side on sims that are running the mono branch and can do server side compilation
 [8:56] Babbage Linden: but, we still support client side compilation for when you're on a non mono sim with a mono viewer
 [8:56] Babbage Linden: if the mono viewer has an asset upload capability it uses it
 [8:56] Babbage Linden: but falls back to legacy client side compilation if needs be
 [8:57] Babbage Linden: ok, we need to wrap up and get back to work fixing these bugs
 [8:57] Siann Beck: Fumon had a good point -- couldn't some stuff still be done client-side to reduce sim load?
 [8:57] Babbage Linden: i'll turn scripts back on in this region so you can continue testing
 [8:58] Ryu Darragh: You have offline LSL compile testers and editors.. same can be made for mono.
 [8:58] You: Siann - it's not clear that server side compilation load will be any problem
 [8:58] Nock Forager: Thank you for dropping by :)
 [8:58] Babbage Linden: we'll keep an eye on that siann
 [8:58] Siann Beck: OK
 [8:58] Fumon Kubo: Simply the time lag for syntax errors to appear is annoying.
 [8:58] Squirrel Wood: Keep up the good work .)
 [8:58] Babbage Linden: but, given that it's unlikely that we will ever be able to 100% verify LSL bytecode
 [8:59] You: Thx for coming everyone.
 [8:59] Babbage Linden: the security of server side compilation is worth the server side load
 [8:59] You: There will be another session on Friday at 3pm PST
 [8:59] Nock Forager: Is there any plan for official Office hour for Mono beta?
 [8:59] Babbage Linden: peri will be running that session
 [8:59] Day Oh: Thanks guys <3
 [8:59] You: Vektor and I will run it. Mostly a chance to help repro any new issues
 [8:59] Babbage Linden: scouse and i will probably down the pub
 [9:00] Nock Forager: ops. Friday 3pm OK :)
 [9:00] Siann Beck: lol
 [9:00] Babbage Linden: nock, this session and friday at 3 are the official office hours
 [9:00] Scouse Linden: after a long week!!
 [9:00] Babbage Linden: i'll probably be popping in to the grid every now and then in the meantime
 [9:01] Babbage Linden: so i'm sure i'll see you all around
 [9:01] Babbage Linden: peri, can you post the chat from this session on the public wiki?
 [9:01] Fumon Kubo: You better, don't be a stranger Babbage... or we'll just ridicule you.
 [9:01] Siann Beck: Well, this is very exciting. Thanks for your work on it!
 [9:01] Scouse Linden ridicules babbage
 [9:01] You: Will do, Babbage
 [9:01] Fumon Kubo: :P
 [9:02] Babbage Linden feels ridiculous
 [9:02] Fumon Kubo: You ought to!
 [9:02] Babbage Linden: great, see you all round
 [9:02] Babbage Linden: bye!
 [9:02] Ruud Lathrop: bye