[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Generalized-Arrays egg v1.0.1
From: |
Jeremy Steward |
Subject: |
Generalized-Arrays egg v1.0.1 |
Date: |
Sat, 3 Feb 2024 15:38:59 -0700 |
User-agent: |
Mozilla Thunderbird |
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
- Generalized-Arrays egg v1.0.1,
Jeremy Steward <=