Dug, we got a problem with "out." From the Boo perspective, "out" is useless.
an out parameter of a type must be assigned before it is used; that is, it must be assigned by the callee
a ref parameter of an array type must be definitely assigned by the caller.
What does this mean?
Method A declares a variable FOO.
If method B takes FOO with OUT, method A does not have to initialize FOO before it passes it to B.
FOO gets initialized in B. The C# compiler checks that it is initialized in B before any operations occur. It also checks that it gets initialized before B returns.
If method B takes FOO by REF, method A must initialize FOO before it passes it to B, otherwise an error occurs.
How is this a problem?
Boo automatically initializes variables. That is why you don't get "unassigned variable errors like you do in C#."
foo as int
print foo #<-- no error; prints ZERO
So, either we make Boo force you to initialize variables, which helps by killing a few bugs, but most of the times it sucks, or we remove "out" support, and let those who want to support C# use the [Out] attribute like VB does. To tell you the truth, I don't even remember seeing an OUT parameter in .NET. I did see it in p/invoke code, however, since Boo does initialize the variable, it's not required in Boo.