Hi all!

After about ~6 months of work, I've finally rewritten the generalized-arrays egg and am today releasing v1.0.1. You can find the repo at:

<https://gitlab.com/ThatGeoGuy/chicken-generalized-arrays>

I learned a lot from this rewrite, but here's a few highlights:

1. The egg is MUCH faster now, thanks to generous use of chicken-profile and the statistical profiler. I've left -d2 on the egg so that others can profile as well.

2. The egg now heavily relies on my transducers egg. This is intentional, and is part of why the egg was able to be made so much faster than it previously was. While one could use generalized-arrays without transducers, it is certainly easier to leverage transducers as much as possible.

3. The egg now has tests and even runs these tests in GitLab CI. Previously, this was not true, and many APIs were just broken or incoherent in ways.

4. Every API is documented and has examples to demonstrate how to use it.

5. The library is now an R7RS library. The main dependencies that aren't R7RS (that are used) are read-syntax extensions, as well as the check-errors egg. Likewise, I opt to use (chicken fixnum) but this is because I discovered that SRFI-143 is so egregiously slower than (chicken fixnum) that it was causing serious performance regressions in many of the array APIs.

There were a ton of smaller lessons about CHICKEN, profiling, and thinking about array APIs in general in there as well; however, I might save those for a future blog post.

In any case, if you've used this egg at any point in the past and been disappointed, I hope you'll give it a second chance. I've even added some cool examples of how to use this with BLAS in the docs.

~~~

A note to Mario: since this was a rewrite, I reran test-new-egg and noticed that my URI in the release-info file was wrong. This was probably some artefact of GitLab changing their URI scheme, but it should be working now (I have run this with test-new-egg).

Beyond that, the egg is now CHICKEN-5 only. If it's possible, can we cut CHICKEN-4 support from 1.0.0 onwards? If not, let's cut out CHICKEN-4 support entirely, since pre-1.0 versions of this egg should probably not be used, ever.

~~~

Thanks, and happy hacking! I hope this provides a better arrays API than I had previously shipped. I am definitely more proud of my egg now.
--
Jeremy Steward

Reply via email to