The Racket repository
Go to file
Matthew Flatt ec27cbfd90 fix problems related to futures and is-list flags on pairs
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).
2011-07-31 04:43:24 -06:00
collects fix problems related to futures and is-list flags on pairs 2011-07-31 04:43:24 -06:00
doc updated history. 2011-07-28 22:51:00 -04:00
man/man1 removed drscheme man page 2011-04-21 19:38:30 -05:00
src fix problems related to futures and is-list flags on pairs 2011-07-31 04:43:24 -06:00
.gitattributes Don't include git files in archives. 2010-05-12 01:46:05 -04:00
.gitignore Add TAGS files to .gitignore. 2011-01-24 17:00:56 -05:00
.mailmap Added Guillaume's gmail address to mailmap 2011-07-14 12:06:01 -04:00
README Switch the license text from LGPLv2 to LGPLv2.1. 2011-05-27 18:09:55 -04:00

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.