Mono/2008-02-20

[8:09] Feynt Mistral: Morning Babbage.
[8:10] Siann Beck: Hey, there he is!
[8:10] Siann Beck: and there he goes.
[8:10] You: hi all
[8:10] Becky Pippen: hi!
[8:10] Siann Beck: Aloha!
[8:10] You: but it won't restart for a few minutes
[8:10] You: so, lets talk here for now
[8:11] You: i'll try pinging the Mono Beta group now
[8:11] Feynt Mistral: Busy brewing more coffee to deal with talking to us? >D
[8:11] You: i'm trying to restart Sandbox Goguen MONO now
[8:11] Feynt Mistral nods
[8:11] Second Life: You have left the group 'Thinkers'.
[8:12] Becky Pippen: Thanks Feynt :-)
[8:12] Feynt Mistral nods
[8:12] Feynt Mistral: My fabulous 11 torus couch. >D
[8:12] Siann Beck: Heh
[8:12] Feynt Mistral built it in less than a minute while talking to a friend.
[8:13] Feynt Mistral: It's not all that stylish, but at least it's functional.
[8:13] Feynt Mistral: Except for poor Photon who's got her legs in the cushion.
[8:13] You: well this is cosier than normal
[8:13] Becky Pippen: and prettier
[8:13] Feynt Mistral: Heh
[8:14] Feynt Mistral: So I missed my chance to go to the last two Wednesday Mono meetings.
[8:14] Feynt Mistral: But a few weeks ago I asked Periapse to pass along a notecard with some questions to you.
[8:15] Photon Pink: the static from Babbages arm is makign my hair stand up
[8:15] You: that's possible
[8:15] You: but i can't remember them
[8:15] You: could you recap?
[8:15] Feynt Mistral: I can just pass along the notecard.
[8:15] You: great
[8:15] Feynt Mistral gave you Feynt's Mono Questions.
[8:16] You: ok, yes, i remember now
[8:16] Feynt Mistral: >)
[8:16] You: let me go through them
[8:16] You: i'll copy them to chat so people know what i'm talking about
[8:17] Feynt Mistral: I've recently been working on a teleporter on the main grid, and using lists is very painful.
[8:17] You: 1. I've read that other languages won't be released with the Mono engine right away. I attribute this to there not being any hooks for SL's scripting in other languages (like llGetPos() or llGetOwner()), as well as uncertainty towards Mono's ability to play nice in a sandbox with other languages that potentially have write access to the servers. Is there any general time frame where new languages (specifically Python and Java) might be added for use by the general population?
[8:17] You: There are hooks for other languages
[8:17] You: LSL on Mono calls standard .NET methods for the llFoo() calls
[8:18] Feynt Mistral: Ah, so technically all the languages are ready to go in that department.
[8:18] You: The biggest work would be to get the UThreadInjector to fully support all CLI assemblies
[8:18] You: at the moment it only supports a subset of opcodes generated by the LSL to CIL compiler
[8:18] Feynt Mistral nods
[8:18] You: the biggest hurdle was getting it to support opcodes that generate managed pointers
[8:19] You: which cannot be saved on the heap
[8:19] You: and so need to be resynthesized when a script is restored
[8:20] You: but, as part of the work to support value semantics for vectors and quaternions
[8:20] You: i changed them to use valuetypes
[8:20] You: and so added limited support for managed pointers
[8:20] You: so, that's less of an issue now
[8:20] Feynt Mistral nods
[8:20] You: but, still it needs to be extended to fully support the gamut of assemblies that would be generated by other compilers
[8:21] Feynt Mistral: So that's the biggest hurdle at the moment.
[8:21] You: we'd also like to have more mature bytecode verification in Mono
[8:21] You: at the moment the UThreadInjector whitelists opcodes
[8:21] You: and method calls
[8:21] You: but it isn't feasilble to extend that to all CLI assemblies
[8:22] You: without effectively writing an assembly verifier
[8:22] You: which the Mono team are doing right now for their work on Moonlight
[8:22] You: so, we're also waiting on that
[8:22] Feynt Mistral: Moonlight?
[8:22] Siann Beck: Moonlight?
[8:22] You: the verifier is problably the biggest job
[8:22] You: Moonlight is the Mono implementation of Silverlight
[8:22] You: Silverlight 1.1 allows CLI assemblies to run inside browsers
[8:23] Becky Pippen: cool!
[8:23] Feynt Mistral: Ah, looking at it online right now. Interesting.
[8:23] You: so in order to implement Moonlight, the Mono team need to implement much of the sandboxing and security stuff that we need to run arbitrary assemblies inside the simulator
[8:23] Feynt Mistral: So they're trying to step further into Java's territory. >)
[8:23] Siann Beck: Interesting indeed.
[8:23] You: so, it's great that Moonlight is happening
[8:23] You: it puts Mono's goals directly inline with ours
[8:24] Feynt Mistral nods
[8:24] You: whereas before, they were building a desktop platform
[8:24] You: and we were building a server sandbox
[8:24] You: so, verifier needed, UThreadInjector extensions needed
[8:24] You: but other than that, we're nearly there
[8:24] Feynt Mistral: Yay.
[8:24] Feynt Mistral: But that's still a lot.
[8:24] You: and have prototyped other languages in SL already
[8:24] Feynt Mistral: Woot. >D
[8:24] You: however, don't hold your breath
[8:25] You: we haven't committed to it internally
[8:25] You: but we are looking in to how much work it would be
[8:25] You: and how valuable it would be
[8:25] Feynt Mistral isn't totally impressed with Mono until he can use something that isn't LSL. >)
[8:25] Siann Beck: Heh
[8:25] Feynt Mistral is also a tough customer. ^.^;
[8:25] You: which is why I'd like your thoughts on how valuable other languages would be compared to other features we could be working on
[8:26] Becky Pippen: can't we have it all?
[8:26] Becky Pippen: :-)
[8:26] You: Becky, yes, but not all at once
[8:26] Feynt Mistral: Personally I would love Python. Typeless variables, actual arrays, regular expressions... All useful stuff that I miss.
[8:26] You: Python is more complicated than C# as it uses the DLR
[8:27] Feynt Mistral: It's an easier language that most real languages for people to pick up, I feel.
[8:27] Feynt Mistral: Err, than most.
[8:27] You: C# would be the easiest to support as it's strongly typed and closer to LSL
[8:27] Leffard Lassard: It all depends what a basic library can offer.
[8:27] You: 2. Will the languages maintain their ability to open sockets to other programs across the network? This could allow direct script to script communication between objects if so, something that has been coveted by many scripters for a while.
[8:27] You: No.
[8:27] Feynt Mistral: Awww
[8:27] Becky Pippen: I'd prefer seeing effort put into C# and leave LSL just as it is. Python is good too, but so many people are asking when we can do C# with Mono.
[8:27] Feynt Mistral: But... but...
[8:27] You: _If_ we allow other languages, they will initially just have access to llFoo() methods
[8:28] You: but, there is the potential to open up other APIs
[8:28] You: we'll see
[8:28] You: 3. What kind of overhead can be expected for class usage? Will creating four or five largish classes to use as objects together (like a "statistics" class in an "avatar" class in a "sim" class, each with a dozen variables and functions) fill up the 64kb limit too fast? If so, is it possible that the script size could be expanded to 128kb or 256kb to allow for complex programs in single script files (as opposed to the current method of running multiple threads across several scripts to bypass the memory constraints).
[8:28] Leffard Lassard: Hmm... depends. I more meant more container libs and such that makes coding more convenient.
[8:29] You: it would be possible to be more efficient with classes in some cases
[8:29] You: for example, an object with 5 integer methods would be smaller than a list with 5 boxed integers inside
[8:29] You: and also more convinient to use
[8:29] Feynt Mistral realizes efficient class design is king, but not everyone can restrain themselves when presented with user definable types.
[8:30] You: i agree that mainstream languages would be more useful alongside more memory
[8:30] You: but changing the way memory is allocated is a lot of work
[8:31] Feynt Mistral nods
[8:31] You: and better languages would still be an advantage in an environment with the 64K limit
[8:31] You: 4. Would it be at all possible for a sim owner and estate managers to be assigned a "scratch space" for scripts from sim memory? A generalized memory space for that user's scripts such that variables stored there can be accessed by all scripts (global variables, static variables, and a stack for instance).
[8:31] You: see above
[8:31] You: i'd like to see a better way to dole out sim scripting resources
[8:31] Feynt Mistral: So I guess that's a "we'll do it if there's a desire for it, later."
[8:31] You: but it's an orthogonal issue
[8:32] You: 5. Although it's doubtful, will we be able to import/include arbitrary libraries that make up the basis of the various languages (like, for instance, import java.awt.Point)?
[8:32] You: no
[8:32] You: there will be a subset of the .NET APIs available
[8:32] You: similar to the way in which Silverlight exposes a subset
[8:32] You: intially that subset will be the empty set
[8:32] You: but, we'll see what happens
[8:32] You: 6. As a sort of corollary to the last question, will including windowing libraries be possible, and will we be able to use those libraries to design functional interfaces?
[8:33] You: doubtful
[8:33] Feynt Mistral: Nuts.
[8:33] You: viewer side scripting is a whole other can of worms
[8:33] You: and i wouldn't want to do lots of complex GUI development without having viewer side scripting
[8:33] You: 7. And on a tangent from importing/including stuff, will we be able to import/include other script files (within the same prim/object) without using up our 64kb script space to make coherent programs?
[8:33] Becky Pippen: is that even a possibiity?
[8:34] You: this is a big win
[8:34] You: and something i'd like to see, but again, something we haven't committed to
[8:34] You: i think if we can enable import/referencing of libraries
[8:34] You: and a mainstream language
[8:34] You: we can mostly get out of the way
[8:34] You: and the best libraries can be developed/implemented/added
[8:34] You: by residents
[8:35] You: i think enabling libraries
[8:35] You: is more valuable than giving access to any particular library
[8:35] You: so, this is all super hypothetical
[8:35] You: we haven't committed to anything beyond LSL on Mono
[8:35] You: but, we have thought about these things
[8:36] You: and as much as possible engineered LSL on Mono to leave the door open to them
[8:36] Leffard Lassard: I think thats already a big step forward. My scripts behave much more speedy.
[8:36] Feynt Mistral would like to thank Babbage for answering his questions, and everyone else for havign the patience to sit through them. >)
[8:36] Siann Beck: Indeed.
[8:36] You: so, that's 30 minutes on Feynt's questions
[8:36] Feynt Mistral: >D
[8:36] Siann Beck: NP, Feynt, they were good questions.
[8:36] You: anyone else have any questions? ;-)
[8:36] Feynt Mistral: Well you started late, I think it was 25. ^.^;
[8:36] You: heh
[8:37] Feynt Mistral: Symantics aside, sorry for monopolizing all that time.
[8:37] You: btw, Space is looking in to the Sandbox Goguen MONO problem
[8:37] Leffard Lassard: Hmm. Someone has a good idea how to track down single problems in larger scripts?
[8:37] You: no problem Feynt, i was joshing
[8:37] You: reduce
[8:37] You: divide and conquer!
[8:38] Feynt Mistral: Functions in functions in functions.
[8:38] Siann Beck: I can give you a hand if you have something particular you're trying to pinpoint.
[8:38] Leffard Lassard: Allright. But the work on it doesnt get less ;-(.
[8:38] Siann Beck: It's kind of a specialty of mine.
[8:38] You: also, logging to work out where the problem occurs
[8:38] Feynt Mistral: The more work you can export to functions, the easier it is to pin point a particular segment of code that's fsck'ed
[8:38] You: which, even in the absence of functions can work
[8:38] Leffard Lassard: It already got better with the last update...
[8:39] Siann Beck: Speaking of which, when will the next one be?
[8:39] You: you can almost binary search to pinpoint the error location
[8:39] You: hopefully we'll do another refresh this week
[8:39] You: I'd like to get it in to QA tomorrow
[8:39] Feynt Mistral: Ooo, speaking of pinpointing errors...
[8:39] You: and then release on friday
[8:39] Feynt Mistral: Though doubtful, will there be an option to trace through programs? >)
[8:40] You: no
[8:40] You: i have talked to the Mono team about embedding their debugger
[8:40] Feynt Mistral didn't think so.
[8:40] You: but, the debugger is really fragile as it is
[8:40] Leffard Lassard: Too much communication back and forth perhaps....
[8:40] Feynt Mistral: >D
[8:41] You: and I'm not sure if it would be possible to combine a secure sandbox with debugging
[8:41] Feynt Mistral: brb, letting puppy out.
[8:41] You: however, it will be easier to debug scripts with offline tools
[8:41] Feynt Mistral nods
[8:41] You: as scripts are just CIL assemblies
[8:42] Feynt Mistral: So what works offline should work online?
[8:42] You: you can debug them offline with VS.NET or mdb
[8:42] Feynt Mistral: Any chance for an SDK for offline development then?
[8:42] Becky Pippen: but since the compiler is only server side, how would we have access to the assembly?
[8:42] You: I'd really like to see an offline test harness
[8:42] You: that allows you to inject events
[8:42] You: and then step through the code
[8:42] You: so, you end up with a command line process
[8:43] You: that gives a script a say event
[8:43] You: then a timer event
[8:43] You: then a touch event
[8:43] You: and allows you to check the output
[8:43] You: and step through it
[8:43] You: i'm working on a patch for the mono viewer that can be applied to the open source code
[8:44] You: i'd like that to include the LSL to CIL compiler
[8:44] Becky Pippen: cool!
[8:44] You: as strife contributed a patch
[8:44] You: once that is available, it would be possible to generate CLI assemblies from LSL scripts
[8:44] You: and test them offline
[8:44] Becky Pippen: yay!
[8:44] Siann Beck: Cool.
[8:45] You: (there is a really early version of the LSL to CIL compiler in the open source code already, but it's horribly old)
[8:45] You: so, the next release should include some major fixes
[8:46] You: value semantics for vector, quaternion and lists should be implemented
[8:46] You: scripts should no longer stop running on rez or region cross or simstate load
[8:46] You: and keys should work properly in lists
[8:46] You: i'm still working on that fix
[8:46] Becky Pippen: yay!
[8:46] You: but it should be done in time for a release this week
[8:47] You: any other questions or thoughts?
[8:47] Leffard Lassard: Mine have been answered...
[8:48] Siann Beck: Have you been able to take a look at SVC-1365?
[8:48] You: not yet
[8:49] You: that issue could do with some more investigation by the looks of it
[8:49] You: doesn't seem to be a simple repro yet
[8:49] Siann Beck: Well, it's pretty slippery.
[8:50] You: yes
[8:50] Siann Beck: I've spent a good bit of time on it, and it's difficult to pin down exactly what's happening.
[8:50] You: so, maybe we just need to let it simmer for a while
[8:50] Becky Pippen: oooo the "event handlers get misalgined" sounds like several other problems that are as slippery
[8:50] You: someone else may stumble across it once we deploy other fixes
[8:50] You: once more of LSL works properly on Mono
[8:50] You: it will become easier to pin down the bits that don't work
[8:51] You: hopefully
[8:51] Siann Beck: That does seem to be the essence of it, Becky, because of the intercepts I found.
[8:51] Becky Pippen: one of my scripts had a timer function that fired by itself -- no timer was set.
[8:51] Becky Pippen: similar
[8:51] Feynt Mistral: lawl?
[8:51] You: so, it looks like Space has found a bug that's stopping the region next door coming up
[8:51] You: i'll probably look at that next ;-)
[8:52] Feynt Mistral: "There's an on_rez calling 'llShutdownRegion()' again."
[8:52] You: any other priority bugs that should be looked at?
[8:52] You: do the priorities in the JIRA look right to everyone?
[8:52] You: https://jira.secondlife.com/browse/SVC-1276
[8:52] Feynt Mistral: I admit to not being as active in the mono testing as I probably should.
[8:53] Feynt Mistral: I'm just sick of LSL is all.
[8:53] Siann Beck: Got it bookmarked :)
[8:53] You: well, thanks again to everyone for putting so much effort in to helping with the beta
[8:53] Feynt Mistral: Yay, a bad language goe sfaster. >D
[8:53] You: and working together to narrow down bugs
[8:53] Siann Beck: lol Feynt
[8:53] You: it's been a great response
[8:53] You: and i think we're making great progress together
[8:54] Feynt Mistral nods
[8:54] Siann Beck: Oh, I had a question unrelated to Mono, if you have a moment.
[8:54] You: if no one else has mono questions, sure
[8:54] You: (although i may have no idea)
[8:54] Feynt Mistral: Not a question per se, just a request that you keep the scratch space idea in mind for later.
[8:55] You: there are lots of similar ideas floating around
[8:55] You: but we haven't pinned down anything yet
[8:55] Feynt Mistral: It's popular amongst the sim owners I hang out with because they'd rather have one script with a lot of memory for recording rental data, rather than 5 or more.
[8:55] You: yes
[8:55] You: agreed
[8:55] Siann Beck: Is anyone working on puppeteering atm, and any idea when we might start seeing fruits of that?
[8:55] You: siann, i'm not ure
[8:56] Siann Beck: OK
[8:56] You: i haven't heard any mention of it for a while
[8:56] You: but linden lab is a big place these days
[8:56] Siann Beck: Yeah :)
[8:56] Feynt Mistral: Perhaps we can ask Periapse.
[8:56] You: and i'm quite a distance from most people
[8:56] You: good idea
[8:56] Siann Beck: That's something I'd love to see.
[8:56] Feynt Mistral: I'd like to be able to animate my fingers.
[8:57] Feynt Mistral: I also wouldn't mind a rig in 3ds max to animate. ^.^
[8:57] Feynt Mistral stabs the bad BVH, "You're mocap info!"
[8:57] Siann Beck: lol
[8:57] Babbage Linden wonders what feynt's letters to santa look like
[8:57] Siann Beck: Heh!
[8:58] Feynt Mistral: Trust me Babbage, if I had all of Linden Labs to talk to for the day, there'd be a lot of brain fried people. >D
[8:58] You: ok, my brain is mostly fried now
[8:58] Feynt Mistral: LL would be calling in Friday on a Tuesday. >D
[8:58] You: shall we call it a day?
[8:59] Becky Pippen: Thanks Babbage!
[8:59] Feynt Mistral: Sounds good.
[8:59] You: thank you all for coming
[8:59] Siann Beck: Sounds good. Go have a cold one, Babbage.
[8:59] You: and please keep hunting those bugs
[8:59] You: i'll keep squashing the ones you find as fast as i can
[8:59] You: see you all later
[8:59] Feynt Mistral: Night.