Hi,

It's not that easy to contribute to parrot development.
I got into that by picking a TODO task about *BooleanArrays, that seemed
appropriate for a Parrot newbie that
knows a bit about algorithmics and Data structures.

Answering one of my mail, Bernhard raised the question of using a common
implementation for strings, boolean arrays.
And that maybe this implementation could be borrowed from the Perl5
Bit::Vector library.

It reminded me of something I read on this list, about the GMP library.
So I checked the GMP website, ok looks great.
I've also noted that there are some GMP-based implementations and GMP stuff
in Parrot, and a GMP test.

But a priori not a word in the specifications and the design documents.
So I tried to track all the GMP related threads, and that's not that easy,
for instance there does not seem to be a "search" feature on the nntp
archive. I tried using some news readers then found my happiness with Google
Groups (always Google). But there's also some materials in the blogs for
example.

So what did I found, among other stuff ?

in Joshua Gatcomb mail, 2004-07-31
The "make ICU optional"
 was supposed to read "make ICU like GMP" - autodetect
 it if present, but do not force it upon the user.

in the Perl 6 Summary for the week ending 2004-07-18:
  GMP Licensing
     Armin Obersteiner reported his investigations into the licensing
     requirements of the GMP maths library. It appears that the FSF's 'GPL

     Compliance Engineer' reckons we won't need to include the GMP's
source
     code with binary distributions. We just have to make it available
from
     the same source as the distribution. Which is handy.

A thread "GMP's license looks Parrot-compatible" starting on 2004-06-30

SO MY POINT IS:

1) it seems that a decision has been made, but that it not written anywhere,
and at least not on the parrot site.
This decision is,  in my understanding,  to use an internal fall-back poor
man's implementation.

2) Nor could I find the rationale for that decision. I've read some IMHO
good arguments for including or for linking, but not a definitive summary,
because from the last stuff I read, it seems that the Licensing issues are
not blocking

3) I spent more time trying to figure out the right thing to do than in my
opinion coding something useful.

WHAT I'D LIKE:

* Some place, in the docs/ part of the parrot website, where that kind of
decision is recorded, along with pointers to relevant information.
A kind of proceedings, or critical review, I'm not sure about the word in
English.

* The particular details for the GMP decision.

AND YET OTHER QUESTIONS

* What is the intended usage, or in other words, the usefulness of the
*BooleanArrays ?

I'm somewhat puzzled, because there is no API for using these boolean arrays
(a la Bit::Vector for example)

* If it's just a kind of storage, I can go on and implement it with a
custom, simple and small implementation, but I've still 2 solutions for
Resizables  :
 - either grow smartly only on the right (push, pop), an alloc/copy when
changes are needed on the left (that saves on INTVAL attribute)
 - allocate a third INTVAL attribute on the heap, and grows smartly in both
directions

Thank you very much for your attention

Karl Forner

Reply via email to