![]() To avoid recording absolute paths from a build environment in bytecode files, the bytecode writer converts paths to relative form based on `current-write-relative-directory`. For paths that cannot be made relative in that way and that are in source locations in syntax objects, the printer in v6.x converted those paths to strings that drop most of the path. The v7 expander serializes syntax objects as part of `compile` instead of `write`, so it can't truncate paths in the traditional way. To help out the expander, the core `write` function for compiled code now allows `srcloc` values --- as long as the source field is a path, string, byte string, symbol, or #f. (Constraining the source field avoids various problems, including problems that could be created by cyclic values.) As the core `write` for compiled code prints a path, it truncates a source path in the traditional way. The expander doesn't constrain source locations in syntax objects to have path, string, etc., source values. It can serialize syntax objects with non-path source values at `compile` time, so there's no loss of functionality. The end result is to fix abolute paths that were getting stored in the bytecode for compiled packages, since that's no good for installing packages in built form (which happens, for example, during a distribution build). |
||
---|---|---|
pkgs | ||
racket | ||
.gitattributes | ||
.gitignore | ||
.mailmap | ||
.travis.yml | ||
appveyor.yml | ||
INSTALL.txt | ||
Makefile | ||
README.md |
This is the source code for the core of Racket. See "INSTALL.txt" for full information on building Racket.
To build the full Racket distribution from this repository, run make
in the top-level directory. To build minimal Racket, run make base
.
The rest of the Racket distribution source code is in other repositories, mostly under the Racket GitHub organization.
Contribute to Racket by submitting a pull request, joining the development mailing list, or visiting the IRC channel.
License
Racket Copyright (c) 2010-2018 PLT Design Inc.
Racket is distributed under the GNU Lesser General Public License (LGPL). This implies that you may link Racket into proprietary applications, provided you follow the rules stated in the LGPL. You can also modify Racket; if you distribute a modified version, you must distribute it under the terms of the LGPL, which in particular states that you must release the source code for the modified software.
See racket/src/COPYING_LESSER.txt for more information.