Re: Spec vs code, user-driven vs designer-driven Lassi Kortela 03 May 2021 14:33 UTC

> Gerbil hasn't scaled to enough users or contributors to call it a
> success. But at least it's not a failure.

I was referring to the use of a monorepo vs split repos :) Gerbil is
quite complex and the approach hasn't failed you yet. All other Scheme
implementations that I know about are in monorepos as well. That's good
enough precedent for me; not sure others are convinced.

It's important to emphasize that a monorepo leads to a certain design
style that is much more fluid than separate repos. I think this is
actively desirable for any fast-moving library collection; some have
reservations.

> Gerbil would require bootstrapping on top of those various Scheme
> implementations. The current version of Gerbil is quite tied to Gambit
> Scheme for all I/O or lower-level functions.
>
> Gerbil*could*  be ported to other Scheme implementations (and was, in
> the past). But in a way, it would not be a "standard Scheme library
> collection", unless you somehow hacked the library systems to become
> interoperable. I'm not sure if that's possible in a portable way, but
> identifying the gap would be interesting—and could lead to a SRFI for
> extending the library system that way to make that possible.

Indeed, for the purposes of a portable library collection all 15+ major
Scheme implementations adopting Gerbil's library and object systems is
not going to be tractable, and booting all of Gerbil on another
implementation just to use portable libraries is probably not going to
fly either. Modesty in technical matters is a virtue when doing cross
Scheme work. A large Scheme implementation is already a complex piece of
machinery, and adding something like Gerbil on top makes it
significantly more complex.

> cond-expand itself doesn't work very portably, does it?

It is surprisingly portable; in fact, it's hard to think of many
problems with it! The big stumbling block was R6RS, which has neither
(cond-expand ...) nor (include ...) in the standard. IIRC there isn't an
obviously correct way to fit them into the R6RS library expansion
semantics. But chez-srfi comes with implementations of both cond-expand
and include, specialized for the main R6RS implementations, and those
give very good practical results.