caleb wrote on 9/21/19 11:27 AM
> I'm a bit of a Racket noob--how extensive of a project is it to get Racket running on x R6RS scheme?
I think there's a number of ways to do that, and to scope it, and I want
to just put some initial thoughts out there, rather than propose
requirements and particular approach...
I mentioned the Schism thing as proof-of-concept, and to point people at
Wasm standards questions they might want to get involved in.
If you're asking out of the idea of using a Racket layer/transplant over
Scism specifically, I'd guess that's a ton of work. I think it would be
a ton of work even atop an R6RS, and Schism is still missing a lot of
work to get to R6RS.
More generally, there are a variety of ways that one could plausibly
bring Racket and other Schemes back together. The
technically-attractive approaches that come to mind would probably need
funding, or someone who could afford to volunteer a programmer-year or
more. (If you instead wanted to distribute the work among multiple
volunteers, you might need a very lucky matching of volunteers, or a
manager-year just to try to coordinate that.)
(Software/Internet open standards development seems to tend to be hugely
difficult. In Schemes, there's very little money complicating things,
and there's a nice historical willingness by most Scheme implementations
to conform to the eventual standard. But going through all the
interaction, especially broad academic and hobbyist community input, and
very little production input, to get to the standard, and have it be a
great standard wrt some goals of the standard and/or of yourself, seems
likely to be a ton of work.)
(In some standards and open source projects (e.g., Web, Linux, other),
those with the most funding tend to have more influence than others,
because they can invest the most work in standards questions, and/or
they do the most open source development that becomes de facto
standards. That dynamic can be better than some alternatives, such as
things people need never getting done, because people are deadlocked in
debate or don't have the funding, though of course it has risks or
downsides, too. Usually, the best-funded party is moderated by a desire
for buy-in from other participants, who have other options.)
I'm not discouraging work like the above -- and I would like to see
Racket and other Scheme implementations/descendants reunited in a good
way -- only saying I think it's probably a ton of work, so don't assume
it's something you can do in a month of evenings and weekends. Unless
you find a way to scope it to a smaller problem that still satisfies
your particular hard requirements.
For people preferring to write in Racket, but who have a hard
requirement to target Wasm, adding a Wasm backend to Racket might be the
quickest viable way. Or give up on the Racket requirement, see which
Scheme implementations come out with Racket backends (or make your own),
and start porting/adapting Racket features you need/want atop those
implementations (and/or atop RnRS, but RnRS alone might not be
sufficient primitives for what you need, to do it well).