The Racket repository
Go to file
Matthew Flatt 5a8a0aff02 db: fix finalization problems
A `this%` expression used in a finalization callback implicitly
referred to `this`, since it's a dynamic reference to the object's
class. As a result, the finalizer for `this` refers to `this`, so
`this` never becomes collectable. The problem is fixed by
lifting the `this%` out of the `lambda`.

Less significantly, the finalizer thread in "prepared.rkt" captured
various parameters on creation, including the current namespace. If a
prepared statement is bound to a module-level variable, then the
finalizer thread refers through the namespace to the prepared
statement, so the prepared statement can never be finalized. Setting
the current namespace to a fresh empty one while creating the thread
avoids that specific problem. (Other parameters could cause similar
problems, but solving the namespace one works well enough for now.)
2015-01-20 13:04:23 -07:00
pkgs track whether a closure uses syntax objects 2015-01-19 21:29:55 -07:00
racket db: fix finalization problems 2015-01-20 13:04:23 -07:00
.gitattributes Don't include git files in archives. 2010-05-12 01:46:05 -04:00
.gitignore Ignore extra-pkgs/ 2014-12-04 10:44:14 -05:00
.mailmap mailmap updates & fixes. 2013-04-03 18:10:22 -04:00
.travis.yml Run the non-default configs tests only with gcc. 2014-12-11 19:43:34 -05:00
appveyor.yml Improve AppVeyor configuration. 2014-12-15 19:56:50 -05:00
INSTALL.txt make: DESTDIR must be an absolute path 2015-01-15 06:09:21 -07:00
Makefile makefile: add an as-is target 2015-01-03 07:11:08 -07:00
README.txt Professionalism 2014-11-03 06:06:04 -07:00

This is the source code for the main Racket distribution.  See
"INSTALL.txt" for information on building Racket.

License
-------

Racket
Copyright (c) 2010-2014 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.