The Racket repository
![]() The JIT wants to detect calls to functions bound to module-level variables that are always instantiated to a procedure of a particular arity, in which case it can avoid some checks. The problem is that bytecode and JITted code can be shared via the module cache across namespaces that use different modules to implement a particular module path or that enable the JIT differently. In particular, starting with one that has a procedure binding and then using one (in a different namespace) that has a non-procedure binding could lead to a crash. Defend against this possibility by never treating imported variables as constant in that sense. The JIT detects imported variables through a new import map in the prefix. This change may slow code. My guess is that it will have no performance impact in practice, due to cross-module inlining, although I can construct a microbenchmark that slows by 20%. |
||
---|---|---|
collects | ||
doc | ||
man/man1 | ||
src | ||
.gitattributes | ||
.gitignore | ||
.mailmap | ||
README |
The Racket programming language =============================== Important executables: * DrRacket: Racket's integrated development environment (start here!). * Racket: the main command-line entry point for running racket programs and scripts. * GRacket: the GUI-mode Racket executable. * raco: Racket's command-line toolset. More Information ---------------- Racket comes with extensive documentation: use DrRacket's `Help' menu, or run `raco docs'. Also, visit us at http://racket-lang.org/ for more Racket resources. Instructions for building Racket from source are in src/README. License ------- Racket Copyright (c) 2010-2012 PLT Scheme Inc. Racket is distributed under the GNU Lesser General Public License (LGPL). This means that you can 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 means that you must release the source code for the modified software. See doc/release-notes/COPYING.txt for more information.