It's not exactly a secret that I don't like our deprecation policy.
Recently I think we've come to a point where it is far more
detrimental to our status and progress than it is a benefit.

For the entire time that I've been a Parrot developer, GC has been
flagged as one of the primary causes of criticism of Parrot. This is
precisely how I got involved in the project in the first place: Taking
on the GC as a GSoC project. That project failed in that it didn't
produce a working replacement GC at the time. However, it did help set
in motion several waves of fixes, changes, tunings, and optimizations
that have brought us to where we are now. As bacek mentioned in
another email, current GC is about 30% faster than it was when I first
started in Parrot.

Even with that improvement, the GC is *still* regularly identified as
a major performance problem in Parrot. 30% later and it's still one of
our biggest problems. Every time we open a forum for users to talk
about problems Parrot has and make suggestions for improvements, the
GC is listed at the top of the list. Now, we have a tool to finally
start changing that. bacek has put together a fantastic new GC
following a far superior algorithm. It's not perfect yet, it's not
tuned and optimized, but algorithmically it's superior and there is
room for improvement. Already, we're seeing numbers that our biggest
user is seeing an average of 25% performance improvement over the
current GC. Everybody knows that this is necessary, and the faster we
get it in place, the better.

So this brings us to the topic of the deprecation policy. The new GC
creates an interface change by requiring the use of new write barriers
on certain operations. According to the deprecation policy we would
need to put in a notice now and wait 2 months until after the 3.3
release before we could merge it. Then, since our users are supposed
to be targetting our supported releases only, they wouldn't have a
"supported" release with this new system in place until 3.6, 5 months
from now.

I find this unacceptable. Considering how important GC is, and how big
a problem it is for us, I think it's unacceptable to simultaneously
tell our users that we have a solution ready but they can't have it
for almost half a year. And in that time we won't be getting valuable
usage information, benchmarks, or feedback. We wont be able to
effectively tune or optimize the system if people aren't regularly
using it. If we don't have this in place by the 3.3 release at the
latest, I think we are making a huge mistake.

I find this situation to be extremely frustrating. I sincerely hope we
can start a concerted discussion about this topic and find a
resolution that is going to be acceptable to our developers and our
users.

--Andrew Whitworth
_______________________________________________
http://lists.parrot.org/mailman/listinfo/parrot-dev

Reply via email to