The Racket repository
Go to file
Matthew Flatt b7c0130a75 cs: new vfasl writer to support cross compilation
Replace the vfasl writer (which was in C) with a new implementation
(in Scheme). The main result is that the vfasl writer can be used in
cross-build mode.

Racket uses the vfasl format for its boot images, because they can
load faster --- cutting the Chez Scheme plus boot files startup time
in half, which saves about 40msec on a typical machine. That's not
enough to matter for something like DrRacket, but it can matter for
small Racket scripts. Formerly, cross builds disabled vfasl
generation.

A vfasl file is roughly an image of code and data as it will appear in
memory, and a relatively fast linking step makes the image work in a
running process. The old implementation was in C because it reused GC
structures and code, treating fasl creation as copying objects into a
vfasl image instead of a new generation. The new implementation is
more like a fasl reader, loading objects into a vfasl image instead of
the live heap. The two implementations are about the same amount of
code and both involve a certain amount of repeated implementation
(i.e., imitating a collection or fasl load), but the Scheme
implementation is more flexible and works for cross compilation.
2020-12-18 07:36:25 -07:00
.github CI: prevent forks from running jobs for self-hosted 2020-12-16 19:23:53 -06:00
pkgs cs: new vfasl writer to support cross compilation 2020-12-18 07:36:25 -07:00
racket cs: new vfasl writer to support cross compilation 2020-12-18 07:36:25 -07:00
.gitattributes Don't include git files in archives. 2010-05-12 01:46:05 -04:00
.gitignore Fix typo. 2019-06-21 12:32:37 -05:00
.lgtm.yml Fetch PB to start LGTM build 2020-08-07 12:17:17 +02:00
.mailmap Minor metadata changes. 2019-10-15 08:09:32 -04:00
.makefile cs: new vfasl writer to support cross compilation 2020-12-18 07:36:25 -07:00
build.md docs: build guide correction on PLT_SETUP_OPTIONS 2020-12-03 06:42:31 -07:00
LICENSE Recent GMP is under LGPL v3. 2020-05-01 22:26:25 -04:00
Makefile cs: new vfasl writer to support cross compilation 2020-12-18 07:36:25 -07:00
README.md Fix README 2020-09-06 09:03:42 -04:00

Racket is a general-purpose programming language and an ecosystem for language-oriented programming.

This repository holds the source code for the core of Racket plus some related packages. The rest of the Racket distribution source code is in other repositories, mostly under the Racket GitHub organization.

Quick Start

Pre-built versions of Racket for a variety of operating systems and architectures, as well as convenient source distributions are available at

https://download.racket-lang.org

Racket comes with extensive documentation, including several tutorials. You can read all of this documentation, as well as documentation for third-party packages at

https://docs.racket-lang.org

Building from Source

For information on building Racket from this repository, see the Build Guide.

Contributing

Contribute to Racket by submitting a pull request, joining the development mailing list, or visiting the IRC or Slack channels.

By making a contribution, you are agreeing that your contribution is licensed under the LGPLv3, Apache 2.0, and MIT licenses. Those licenses are available in this repository in the files racket/src/LICENSE-LGPL.txt, racket/src/LICENSE-APACHE.txt, and racket/src/LICENSE-MIT.txt.

See the Racket Build Guide for more guidance on contributing.

The Friendly Environment Policy contains guidelines on expected behavior within the Racket community.

License

Racket is free software; see LICENSE for more details.