![]() A change in keyword-argument expansion was intended to avoid copy-propagation wrok in later passes. That saving does not appear to be worthwhile, so revert it. Reverting the change exposed weakness in the expander flattener and an unsoundness in its simplification pass. That unsoundness has to do with the assumption that variables are defined before use. The unsound assumption is likely to be fine for code that is flattened --- all the more considering that flattened code is routinely run in unsafe mode --- but it's a departure from the intended safety of the simplifier. Improving the analysis to so that it's sound and good enough will require sometimes inferring when a structure-type property guard (for `prop:evt`, at least) will succeed. |
||
---|---|---|
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.