Generalized-Arrays egg v1.0.1

Jeremy Steward <[email protected]>
Newsgroups gmane.lisp.scheme.chicken
Organization ThatGeoGuy
Message-ID <[email protected]>
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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.