I'll stick with "long".
> Could you please expand what sort of patches cannot be easily upstreamed
> to Chez?
Some open pull requests at https://github.com/cisco/ChezScheme/pull/
#190 - ordered guardians 7/2017
#192 - cptypes 7/2017 - 7/2018
#237 - procedure wrappers 12/2017
#254 - avoid some recompiles 1/2018
#296 & #377 - values enforced 5/2018 - 12/2018
#335 - memory debugging 7/2018
#336 - continuation marks 7/2018
#375 - fasl read repair 12/2018
#376 - vfasl 12/2018
#378 - memory accounting 1/2019
The oldest one, #190, hasn't been merged because it's a significant
change to the GC, and it requires some duplication of information
within the implementation: an extra dispatch on various shapes of data.
This sort of problem might be resolved (in a way that appeals to the
Chez Scheme maintainers) by generating the GC's code from a centralized
description of object shapes/traversals, and that would also help with
#335 and #376.
More generally, #190, #237, #376, and #378 solve problems that are
important to Racket, but not to Chez Scheme users generally, and so the
code--benefit tradeoff is not motivating to the Chez Scheme
#192 (Gustavo's work) is similar, but on its own scale. It's much more
code, but the potential benefit to Chez Scheme users is also much
greater. My guess is that this one gets merged before any of the
#266, #377, and #336 are about continuation marks and related semantic
choices. The Chez Scheme maintainers are unconvinced of the value of
continuation marks and constraining the compiler to sometimes preserve
#375 seems like a straightforward improvement to me, so ¯\_(ツ)_/¯.
#254 and #335 not exactly Racket-specific, but maybe others would
approach the motivating problems differently than I have.
There are another dozen or so small patches that I haven't turned into
PRs because they tend to be even more Racket-specific. It doesn't make
sense to pile those on.
To be clear, the Chez Scheme maintainers have been quick to merge
changes that more obviously benefit all Chez Scheme users. A recent
example is the addition of LZ4 compression as an alternative to zlib;
that was a relatively invasive change to the build and a pile of new
glue code, but it was refined and merged quickly and has since been