[racket] Racket v5.1.2

From: Eli Barzilay (eli at barzilay.org)
Date: Wed Aug 3 22:45:59 EDT 2011

15 minutes ago, Neil Van Dyke wrote:
> I'm kinda curious why this was 5.1.2 rather than 5.2.  Perhaps someone 
> could explain the version number conventions when they get a chance?

These are the guidelines we're using:

  The set of features in a release as compared to the previous normal
  release determines the version number: if a release has only bug
  fixes and minor feature changes from the previous release, then only
  the third number in the version changes.  Significant
  incompatibilities change the second number of the version.  The
  first version number changes only with major architectural changes
  that affect the whole system.

The judgment is usually very easy.

A slight exception was the 5.0 version, were there was an issue of the
new name requiring a new major version number.  (Both 1.0 and 5.0 were

Seems to me like going with two parts would make things more
difficult, since you get to choose only from either "really big" or
"not really big".  It's probably good to inspect the changes that lead
to the second number increments and see that they'd be problematic:

* 5.1: gui completely reimplemented in racket
* 4.2: large part of the gui moved to racket (completed by the above)
* 4.1: most of the `#lang' functionality working (really means that
  the 4.0 stuff was finally stable), redex
* 370: switched to using 3m as the default gc
* 360: composable continuations, lazy scheme, macro stepper
* 350: jit (= huge change in the low-level parts)

> Making each periodic release a two-part version number would save
> the third part of the version number for urgent bugfix releases that
> cannot wait for a periodic release.

There's usually no need for these, but if there is, then it'll be
another third-level increment.

> (e.g., to reflect huge changes, or for marketing).

(There was never an instance of the latter, AFAIR.)

> when, say, I have a dependency on "racket/places", and want to
> specify the minimum Racket version I require (i.e., "5.2" rather
> than "5.1.2").

The best way to deal with these is to use a precise version number
(even if it's an unreleased four-part version) with the result of
`version->integer' from `version/utils'.

          ((lambda (x) (x x)) (lambda (x) (x x)))          Eli Barzilay:
                    http://barzilay.org/                   Maze is Life!

Posted on the users mailing list.