Due to recent requests, I changed the compiler's symbol writer to write the debugging information into a separate symbol file. These files are called Foo.exe.mdb and Foo.dll.mdb and are installed in the same directory than the assembly. This step will allow us to package the symbol files in a separate debugging package and thus make the size of Mono's main packages smaller.
I did not have much time to look at the whole build stuff, so things may be a bit messed up at the moment. If you discover any problems, please let me know.
Jackson asked me whether it's possible to add debugging information to ilasm a couple of hours ago. Well, I wasn't totally sure without looking at the code, so I sat down and gave it a try. It turned out to be really straightforward and I finished it a lot quicker that I expected :-)
Now, you do not only get source lines in backtraces of assemblies compiled with ilasm, this also works in the debugger - and the debugger will "feel" like if you're just debugging managed code - it'll have all the information about the source code, methods and types. The only thing which is left to do is adding support for local variables, but this isn't really hard.
There's also request from some people to move the debugging information into a separate file rather than having it included in the assembly as a resource since this'll obviously make the assemblies smaller. At the moment, I'm doing this in ilasm since it was a lot easier to implement, but not yet in mcs, so there's still room for discussion. When this issue was brought up initially, I was a bit concerned about versioning issues, especially that people might have a symbol file which does not match the assembly (for instance because someone installs a new version of an assembly and forgets to remove the old debugging information). However, Ben pointed out that it's really easy to add some "magic" number to the symbol file (which could be the assembly's GUID) to make sure it matches the correct assembly.
Since the current situation is a bit broken and out-of-sync (ilasm uses an external file, mcs doesn't), I'd like to resolve this issue quickly, but there's still some room for discussions - so if you have any comments, just lemme know.
In the meantime, partial classes also hit gmcs, so they're now actually everywhere. I already got a minor bug report, but I already know what it is and it's easy to fix ...
The rest of the week is dedicated to both mcs and gmcs bug fixing. While I was busy hacking on gmcs over the last couple of weeks, we got quite a few pending bugs open in bugzilla, so I'll try to find some time to fix them. gmcs is also a priority and there's also this symbol file thing mentioned above, so we'll have to see.
I really hope that we're getting good weather tomorrow, since I'm going to an open air concert in the evening :-)
Sometimes, a total network outage also has its positive sides ...
Yesterday was such a day. It was the only day where we had beautiful weather, it was sunny and no clowd at the sky - but I was unable to leave the apartment since I needed to wait for some mechanic to fix my shower. The sad thing about mechanics is that they tell you they're coming "early in the morning" - just to make you get up at 7am - and then you're still sitting there and waiting for them at 3pm. Well, normally - 'cause he finally showed up at 1pm.
But just in case - I woke up at 7am, went to IRC while the coffee machine was brewing fresh coffee - and then the big shock: nothing worked, no email, no CVS, no bugzilla ! This was really bad since my 2.0 setup was a bit screwed, so I really needed to use CVS, and I also wanted to merge my latest changes. Normally, that's no big deal, you just wait until the network is back up and do something else, like watching TV or walking around in the city, and then hack on the weekend. But as I already said, I couldn't leave the apartment.
However, I still had a fresh mcs checkout, so I just sat down and started hacking on partial classes ....
At first sight, it didn't look that much complicated and I quickly had something working. The problems came when I had a look at error checking and was thinking about all the possible error scenarios. So it took me another full day to finally finish it - but now, partial classes are finally in CVS :-)
It's really cool since you can do things like
Note that both parts of Test are using different using clauses, so Hello.World means something else in each of them.
Oh, btw. partial classes will hit gmcs on Sunday - I hacked the whole night on them and really need to get some sleep.
Spend some more time of iterators. We're now following the spec much more closely and a lot of open issues have been fixed. This applies especially to exception handling and disposing of the iterator object.
If you find any problems or you're just feeling boring, bug reports and test cases would be apreciated a lot ... :-)
Haven't blogged for a while, but that was mostly because I was too busy to do anything else. Mono 1.0 is done which means for most people that they can relax a little bit. However, for me the real life is just starting.
A lot of exciting new things are going on in compiler land and I'm really excited about all of this. Since about a week, I'm now hacking full time on GMCS, left the debugger and bug-fixing behind and concentrate fully on getting the cool new C# features in.
GMCS is slowly getting into a really good shape. There are currently 63 tests in CVS and Ben Maurer did a fantastic job implementing the new generic bits in the class library. For instance, a lot of the old non-generic methods in System.Array now have generic counterparts. I'm also starting to get all the outstanding issues in bugzilla fixed, so we're soon getting ready for prime-time :-)
At this point, I'd apreciate it a lot if people could send me more test cases and bug reports. I think at some point, we also need to add new unit test for the new bits in the class libraries.
We're still far from being done and there are also other cool things like anonymous methods and partial classes waiting to be finished, so for those of you who're waiting to get a working debugger, please be more patient for a few more weeks .....
Btw. I have been asked about my Pivot templates: here is a patch against Pivot 1.10.