On Sat, 19 Dec 2015 07:37:30 -0600,
Matthew Flatt wrote:
> 
> At Fri, 18 Dec 2015 17:27:21 -0800, Alexis King wrote:
> > >   A related issue is that examples in the documentation sometimes
> > >   fail in a way that indicates a bug. By having that failure be a
> > >   documentation-build failure, instead of rendered as an error
> > >   message in the documentation, we can avoid some errors in a
> > >   release. Matthew will add a replacement for `examples` where forms
> > >   that are intended to be rendered as errors must be explicitly
> > >   marked as such, while other errors trigger a document failure.
> > 
> > This, along with a fixed eval:check, is a wonderful change. Documentation 
> > examples that also serve as an ad-hoc test suite is a pretty cool idea. I’m 
> > very excited to be able to use these.
> > 
> > There is a problem, though: I can’t use them without dropping support
> > for older Racket versions because these are entirely new forms. This
> > was something I was thinking about lately: having monolithic
> > “releases” makes it impossible to backport changes to older Racket
> > versions. For example, the new scribble/example(s) module seems like
> > something that would work with lots of Racket versions were it a
> > package, but since it’s part of the core, scribble-lib will be locked
> > to older versions on old releases.
> > 
> > Am I wrong about this? Maybe it would work if I explicitly depend on a 
> > newer 
> > scribble-lib version? I think I’m a little unclear about that.
> 
> Although the current "scribble-lib" does install in v6.3 (using `raco
> pkg update --catalog http://pkgs.racket-lang.org scribble-lib`), you
> probably don't want to create a package that can only be used in older
> versions by first upgrading a main-distribution package.
> 
> One alternative is to create a "scribble-example-lib" package and
> register it at pkgs.racket-lang.org with different implementations for
> different Racket versions: as a copy of `scribble/example` for version
> 6.3 and earlier, and as a package that just implies "scribble-lib" for
> post-6.3 versions.
> 
> As another alternative, we could move `scribble/example` out of
> "scribble-lib" and into a "scribble-example-lib" package (and either
> make "scribble-lib" imply the new package or adjust our handful of uses
> to depend on "scribble-example-lib"). Then, your package could require
> "scribble-example-lib", and we could make sure that
> "scribble-example-lib" works in older versions of Racket.
> 
> 
> The second alternative requires a little extra work. The
> `scribble/example` library is currently implemented in terms of an
> improved `scribble/eval`. So, the implementation has to be shuffled a
> little to put the new `scribble/eval` as some private library in
> "scribble-example-lib", and then `scribble/eval` in the new
> "scribble-lib" can re-export that other library (while `scribble/eval`
> for previous releases remains unimproved).
> 
> Of course, "scribble-example-lib" would become a part of the main
> distribution in the next release, the same as "scribble-lib", since
> main-distribution documentation will rely on it. If `scribble/example`
> needs to be improved later, then we run into all the same problems
> again. Also, we'll have to deal with the extra "scribble-example-lib"
> layer forever.
> 
> 
> I lean toward the first alternative, since it means
> "scribble-example-lib" will mostly move out of the way after the next
> release. I don't have a strong objection to the second alternative,
> though.

FWIW, the first option also sounds better to me.

Vincent

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-dev/m2y4cqnhc0.wl-stamourv%40eecs.northwestern.edu.
For more options, visit https://groups.google.com/d/optout.

Reply via email to