I would really like to assess FasterSets for Pharo1.1 Begin forwarded message:
From: Ralph Boland <rpboland@gmail.com> Date: June 25, 2009 8:30:13 PM CEDT To: Stéphane Ducasse <stephane.ducasse@inria.fr> Subject: Re: about fasterTests
2009/6/25 Stéphane Ducasse <stephane.ducasse@inria.fr>:
we are interest to get better libraries in pharo. If you want to join and help making sure that your code in integrated in pharo1.1 please say it and may be join the pharo mailing-list.
Stef
Yes, I would like my code 'FasterSets' added to Pharo. I joined the pharo mailing list. Today I will mail you my MIT license release. Probably will take a couple of weeks (From Calgary, Canada) to get there. Once I am added as a contributer I will release my code to Pharo for verification. In the meantime if any Squeakers try out my code and report bugs I will fix them before releasing to Pharo.
Some comments:
1) Since FasterSets modifies low level methods in class Set and its subclasses it may be incompatible with packages that create subclasses of Set and then override low level methods. If someone could send me a list of package add-ons to Pharo that do this then I can download them and make any modifications necessary for them to run with FasterSets and make these changes part of my release. Note that it is no more difficult to subclass from Set with FasterSets than without; it is just different and only different if you do low level things.
2) FasterSets uses a method 'noCompareOrGrowAdd:' which adds an element to a set without doing compares or growing the set. Needless to say it is a private method. I also have a public method 'nastyAddNew:' which, like 'noCompareOrGrowAdd:' adds an element to a set without checking if the element is already there but does do a grow if needed. This is useful (i.e. faster) in situations where you KNOW the object you are adding to a set is not there already. However if the object IS already there then you now have two of them in your set; i.e. you now have a subtle bug. I use 'nastyAddNew:' in my code but never made it a part of FasterSets because it is questionable whether or not such a method should be available generally. However, if I can decide I like the 'nastyAddNew:' method and am willing to use it despite its risks so can others so there is an argument for it being added. While my expectation is that you don't want 'nastyAddNew:' in Pharo I thought you should at least be aware of it.
Regards,
Ralph Boland