Older blog entries for harinath (starting at number 3)

More thoughts about MCS and GMCS

Martin got GMCS to work on Windows, with a small caveat — there’s no API to change the MethodAttributes of a MethodBuilder. I have a couple of observations:

  • the caveat isn’t really a big deal. You only need to set NewSlot when there is a new keyword used in the declaration. Otherwise, it’s useful but not necessary (See bug 74852 for the gory details)
  • these changes, coupled with my older changes should allow us to have more code similarity between MCS and GMCS. Specifically, I think we can put in a couple of stubs: DropGenericTypeArguments and DropGenericMethodArguments into MCS and eliminate a big part of the textual differences between MCS and GMCS in non-generics related code. We already started on this in doc.cs

Syndicated 2006-02-16 03:53:00 from Slow and Steady

automake, make dist and long filenames

Harish noticed some strange behaviour with ‘make dist’. He later found out that it had to do with a file with an overly long pathname. Automake 1.9 by default forces ‘tar’ to work in the “most compatible” mode, and that mode supports pathnames only upto 99 characters long.

The solution is to ask automake to request tar to use the POSIX standard ‘pax’ format. Add a line like the following in the top-level Makefile.am.

AUTOMAKE_OPTIONS = tar-pax

However, life wouldn’t be interesting if it was so simple.

  • This option is not backwards compatible: older versions of automake don’t know about it, and they barf on unknown options
  • The tar that comes with SuSE 9.2 (IIRC) doesn’t support ‘pax’, but does support the ‘ustar’ format, an older POSIX standard. Luckily automake has an option to request ‘ustar’ format: tar-ustar

That gets us to mono’s solution. Here’s the configure.in tidbit that does the trick:

# Gross hack to enable 'make dist' on automake 1.9+tar 1.14.
# The extra brackets are to foil regex-based scans.
m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])])

Now, please forget this trick, it’s gross. Just use automake 1.9.

PS: There’s an even simpler trick: start distributing ZIP files (make dist-zip) instead :-)

Syndicated 2006-01-18 14:22:00 from Slow and Steady

MCS: Implemented ::-lookup (qualified alias member) feature

Today, I added my first “tick-mark” feature to Mono’s C# compiler: qualified-alias-member or ‘::’ lookup. It’s a relatively small feature, and doesn’t impact much, code-wise.

In all, it took about a day’s worth of effort from start to check-in. But, that one-day effort needed quite some preparatory work. I’d pretty much decided on the approach a couple of months ago, and had a reasonable plan-of-attack, and was looking for an opportune time to work on it. More importantly, the past few months I spent incessantly refactoring the name- and type-lookup facilities in the compiler has paid off, making the task of implementing ‘::’ trivial.

Syndicated 2005-08-02 20:26:00 from Slow and Steady

Thread-safety and me

I’m thinking of working on fixing Mono’s Dictionary to be thread-safe.

It seems ironic: I wrote a large part of that Wiki page, and I’m in large part responsible for the dictionary code not being thread-safe. “Blame” me for the use of the move-to-front heurstic in the dictionary code, and I must say, it was a beautiful piece of code: see how simple it made the ‘Remove()’ code.

Of course I’ve disliked threads all along, and this gives me more reasons to blame threads for the ugliness they bring into the world.

Syndicated 2005-06-24 14:14:00 from Slow and Steady

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!