Skip to content

Announcements

Jamie Taylor edited this page Oct 17, 2023 · 3 revisions

Announcements

This page contains announcements from the Chez Scheme maintainers. These announcements may be of interest to end users of Chez Scheme, developers of Chez Scheme, or both. Announcements are in reverse chronological order.

2023-10-17: Racket fork now merged

The Racket fork is now merged into the main branch! Rather than rewriting history as was planned at the time of the previous announcement, we have elected to keep a full version history (including boot files) and instead recommend cloning with the --filter=blob:none option. These changes are summarized nicely in the email that Matthew Flat sent to the chez-scheme mailer at googlegroups.com.

I have been working with long-term Chez Scheme maintainers to bring the https://github.com/cisco/ChezScheme and https://github.com/racket/ChezScheme branches together. We are just about ready to merge! Merging will change the code in cisco/ChezScheme to v9.9.9-pre-release.20, which is a step toward a v10.0 release.

After the merge, the content of the main branch at cisco/ChezScheme will be almost the same as the current content of the racket/ChezScheme branch. In other words, we're merging all of the racket/ChezScheme functionality to cisco/ChezScheme. We've worked to ensure that the changes in racket/ChezScheme are not Racket-specific and that the changes preserve Chez Scheme's coherence, character, and quality.

By "content" of the branch being the same as racket/ChezScheme, I mean the content of a checkout using the most recent commit of cisco/ChezScheme after the merge, but the history from both branches will be preserved. Tip: Clone the cisco/ChezScheme repo with git clone --filter=blob:none to avoid eagerly downloading large boot files for older versions. (That's a useful approach already, even before the merge, and this tip will appear at the top of the new "README".)

The only substantial difference from the current racket/ChezScheme content is that the merged cisco/ChezScheme will not refer to a Git submodule for pb (portable bytecode) boot files. Instead, pb boot files will be part of the cisco/ChezScheme repo, continuing the way some platform-specific boot files have historically been checked into the cisco/ChezScheme.

2022-10-08: Intent to merge the Racket fork and rewrite git history

The maintainers have agreed in principle (but with no promises as to timeline) to the following inter-related major changes:

  • Increment the major version number to version 10
  • Incorporate the changes currently in the Racket fork of Chez Scheme
  • Remove the boot files from the repository (rewriting history)

Each of these changes is described in (slightly) more detail below.

Version 10

Since these changes include not only major new functionality, but also some backwards-incompatible changes, it seems appropriate to increment the major version number and make the next release Chez Scheme 10.0. We will have one more release on the 9.x series with any accumulated changes since the last release.

Merge with the Racket fork

The Racket fork of Chez Scheme has several highly desirable new features. Of particular general interest are the native Apple Silicon support and the "portable bytecode" back-end. The version 10 release notes will, of course, have a full accounting of the new features. Now that it has worked through the "growing pains" of getting Racket-on-chez up and running, it's time to accept those changes upstream.

This is complicated by the fact that the repo for Racket for does not include the boot files (to keep the repository size down), and has rewritten its history to remove boot files that were committed. That means that, as far as git is concerned, the repositories do not share any commits with the Chez Scheme repository except for the initial commit. This leads to the next major change...

Rewriting history to remove boot files

The current practice in the Chez Scheme repository is to commit boot files when they change, so that a checkout at any point in history can be built. While this is convenient should one need to build something other than the latest version, it makes for a very large repository. The inclusion of the portable bytecode machine type from the Racket fork means that in the future we will need only one boot file (the pb boot file) rather than one for each machine type, but that does not solve the problem of the existing repository already being a significant fraction of a gigabyte. There are only two ways to solve that: either abandon the repository and start a new one, or rewrite the repository history to remove the boot files. Each of these has its own drawbacks, but the current plan (still subject to change) is to rewrite the history of the Chez Scheme repository.

The Racket fork has moved the boot files into a subrepository. It remains to be seen whether the Chez Scheme repository will follow suit (for non-technical reasons).