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.