![]() Fix problem with once-use tracking and delayed variable-use marking that is performed for local function bodies. A delayed variable-use registration might happen after a once-used variable is replaced by its use. This scenario is difficult to provoke, because the optimizer has to first decide not to move a once-use function, and in a latter pass decide to move it after all. There's not enough information to retract the tentative use plus its transitive implications. The solution is to avoid the generic once-use layer for `lambda` forms whose uses are delayed (and that likely has a good effect on inlining anyway). The other half of the solution is to avoid transitive use marking on a once-used variable whose expression has been moved (and there are no transitive things to skip, because that expression isn't a `lambda` form). |
||
---|---|---|
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 the Minimal Racket, run make base
.
The rest of the Racket distribution source code is in other repositories 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-2017 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.