The Racket repository
![]() Although a future thread used an atomic compare-and-swap to set "is a list" or "not a list" flag on pairs via the JIT-implemented `list?', the hashing function in the runtime thread did not; as a result, it might be possible to lose a hash code due to cache inconsistency (although I'm not sure it's actually possible, and I couldn't trigger a problem with a test). Most of the changes are related to using an atomic compare-and-swap when setting a hash code, as well as clean-ups to related code. Processor-count tests avoid using atomic compare-and-swap on uniprocessors, which might not support the relevant machine instructions. As significantly, the compare-and-swap operation for the JIT-implemented `list?' did not actually set flags on a pair that has a hash code. This could lead to `list?' tests that were not constant time (but only if the relevant pair's `eq?' hash code had been used previously). |
||
---|---|---|
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-2011 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.