# Friday Status Update

**URL:** <https://www.ruby-forum.com/t/friday-status-update/136516>\
**Category:** IronRuby\
**Created:** [May 2, 2008, 11:45pm UTC](https://www.ruby-forum.com/t/friday-status-update/136516 "2008-05-02T23:45:21Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [May 2, 2008, 11:45pm UTC](https://www.ruby-forum.com/t/friday-status-update/136516/1 "2008-05-02T23:45:21Z")

</div>

Like we talked about earlier, let’s give an update on what we are  
working on

I’m working on hacking optparse to work so that we can update to the  
newest Rubinius spec’s. Then I’ll be closing out a whole slew of bugs.

Jim D.

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [May 3, 2008, 12:28am UTC](https://www.ruby-forum.com/t/friday-status-update/136516/2 "2008-05-03T00:28:05Z")

</div>

I’m still working on the shelveset that I sent out for code review  
earlier today (bugfixes9). We found a few more issues when we did the  
code review. The most interesting case is this one:

We normally define methods that accept symbol using a signature that  
takes a SymbolId, eg:

[RubyMethod(“attr”, RubyMethodAttributes.PrivateInstance)]  
public static void Attr(CodeContext/_!_/ context, RubyModule/_!_/ self,  
SymbolId name) {  
DefineAccessor(context, self, name, true, false);  
}

Methods like these will blow up if you pass it a ‘string-like’ thing. We  
have a Protocol to convert these things - Protocols.CastToSymbol(),  
which does the right thing, which is call to\_str on the target.

We have an open question right now which is whether we should bake in  
object to SymbolId conversions in the binder or whether we should handle  
them in a case by case basis by defining an overload that accepts an  
Object, and calling Protocols.CastToSymbol() on that object.

Once I get this shelveset past the troll, I’ll work next on getting  
socket.cs and the ironi regex library into the tree.

Thanks,  
-John

From: removed\_email\_address@domain.invalid  
[[mailto:removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)] On Behalf Of Jim D.  
Sent: Friday, May 02, 2008 2:37 PM  
To: removed\_email\_address@domain.invalid  
Subject: [Ironruby-core] Friday Status Update

Like we talked about earlier, let’s give an update on what we are  
working on

I’m working on hacking optparse to work so that we can update to the  
newest Rubinius spec’s. Then I’ll be closing out a whole slew of bugs.

Jim D.

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [May 3, 2008, 6:29am UTC](https://www.ruby-forum.com/t/friday-status-update/136516/3 "2008-05-03T06:29:30Z")

</div>

Michael L.:

> need to block out some time.  
> Tomas has spent quite some time looking at a dual byte-array +  
> char-array MutableString implementation. It was sitting in his work  
> queue to tackle after his current work on eval and blocks. Perhaps you  
> could share some of your findings with him around the zlib integration  
> effort so that we don’t duplicate our efforts?

Thanks!  
-John

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [May 3, 2008, 1:47am UTC](https://www.ruby-forum.com/t/friday-status-update/136516/4 "2008-05-03T01:47:06Z")

</div>

I’ve been looking at what it would take to start using byte arrays  
rather  
then strings for the backing store for MutableString. It’s one heck of  
a  
rabbit hole, I can get it /almost/ working… either I fail one spec, or  
three… and they’re totally different. Anyway, if noone else is  
working on  
it I’ll continue to see what I can do, this is related to the zlib issue  
with binary files (or actually any file that contains bytes over 127  
potentially) as data is passed around as strings and not byte arrays.

Oh and I hope to implement actual compression sometime soon… just need  
to  
block out some time.

On Fri, May 2, 2008 at 6:24 PM, John L. (IRONRUBY)  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [May 3, 2008, 9:46am UTC](https://www.ruby-forum.com/t/friday-status-update/136516/5 "2008-05-03T09:46:06Z")

</div>

I might be right off track here and since I haven’t seen any of the  
detailed  
discussion about the question below I might be being completely naive.

The open question should really be targeting all standard conversion  
protocols in Ruby.

In my mind it seems that the way Ruby works generally is to have a load  
of  
these “protocols” for type conversion, but that it is not enforced by  
the  
language at all and that it is entirely up the library developer to  
follow  
suit. While this allows ultimate freedom for the developer it obviously  
does allow inconsistency to creep in.  
I would feel uncomfortable baking these protocols into the binder,  
unless  
there was some way of overriding them in library code, since this is  
perfectly possible in MRI. For instance, it must be possible in at  
least  
some cases to monkey patch code that by default uses the standard  
conversion  
protocol so that it does something different (e.g. converts strings to  
symbols in some other way???)

Clearly this is not a good thing to do in general but since Ruby allows  
it  
as a language, it seems that it should be supported in IronRuby.

Happy to be completely wrong here.

Pete

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [May 3, 2008, 6:01pm UTC](https://www.ruby-forum.com/t/friday-status-update/136516/6 "2008-05-03T18:01:01Z")

</div>

Yes, we have Protocols class that implements various flavors of  
conversions that are used in libraries.  
The binder idea is that there would be an attribute you can apply on C#  
methods that would disable the default conversions implemented in  
binder. So if 90% of methods do the conversion one way their  
implementation could be simplified. The rest would be marked by the  
attribute.

Tomas

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [May 3, 2008, 7:54pm UTC](https://www.ruby-forum.com/t/friday-status-update/136516/7 "2008-05-03T19:54:58Z")

</div>

Tomas M. wrote:

> Yes, we have Protocols class that implements various flavors of conversions that are used in libraries.  
> The binder idea is that there would be an attribute you can apply on C# methods that would disable the default conversions implemented in binder. So if 90% of methods do the conversion one way their implementation could be simplified. The rest would be marked by the attribute.

Nice, I’ll have to add that. At the moment, everything generifies to a  
common type, and the method itself calls the appropriate coercion  
mechanism. But it would be nice to eliminate that.

- Charlie

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [May 3, 2008, 10:14am UTC](https://www.ruby-forum.com/t/friday-status-update/136516/8 "2008-05-03T10:14:16Z")

</div>

Peter Bacon D. wrote:

> does allow inconsistency to creep in.  
> I would feel uncomfortable baking these protocols into the binder, unless  
> there was some way of overriding them in library code, since this is  
> perfectly possible in MRI. For instance, it must be possible in at least  
> some cases to monkey patch code that by default uses the standard conversion  
> protocol so that it does something different (e.g. converts strings to  
> symbols in some other way???)
> 
> Clearly this is not a good thing to do in general but since Ruby allows it  
> as a language, it seems that it should be supported in IronRuby.

FYI, there are a few cases in the core classes that use e.g to\_s or to\_a  
instead of to\_str or to\_ary to coerce. I don’t remember them off the top  
of my head.

- Charlie

---

<div class="post-metadata">

**Author:** ![raker\_t](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/r/ecae2f/32.png) [@raker\_t](https://www.ruby-forum.com/u/raker_t)\
**Post date:** [May 3, 2008, 8:10pm UTC](https://www.ruby-forum.com/t/friday-status-update/136516/9 "2008-05-03T20:10:49Z")

</div>

Charles Oliver N.:

> > The binder idea is that there would be an attribute you can apply on  
> > C# methods that would disable the default conversions implemented in  
> > binder. So if 90% of methods do the conversion one way their  
> > implementation could be simplified. The rest would be marked by the  
> > attribute.
> 
> Nice, I’ll have to add that. At the moment, everything generifies to a  
> common type, and the method itself calls the appropriate coercion  
> mechanism. But it would be nice to eliminate that.

The other nice thing about this is that it would be trivial to generate  
a report on all of the exceptions. This way we can drive some meaningful  
design discussions about all of the exceptional cases and get them fixed  
in the libs.

-John
