racket/collects/scribblings
Matthew Flatt 2ada6d0e89 break link to namespaces from from closures over top-/module-level vars
- the `lam' structure from `compiler/zo-struct' changed to include a
   `toplevel-map' field

 This change helps solve a finalization problem in `racket/draw',
 which in turn sigificantly reduces the peak memory use of `raco setup'
 during the doc-building phase (because some documents load `racket/draw'
 to render images, and multiple copies of `racket/draw' were retained
 before finalization was fixed).

 The change is an extreme way to solve a specific finalization
 problem, but it's a kind of space-safety improvement; space safety
 almost never matters, but when it does, then working around a lack of
 space safety is practically impossible. In this case, it's not clear
 how to otherwise solve the `racket/draw' finalization problem.

 The improvement doesn't change the representation of closures, but it
 requires special cooperation with the GC. All closures in a module
 continue to share the same array of globals (plus syntax objects);
 that is, instead of completely flat closures, Racket uses a two-level
 environment where top-/module-level variables are grouped
 together. The code half of a closure now records which
 top-/module-level variables the body code actually uses, and the mark
 phase of GC consults this information to retain only parts of the
 top-/module-level environment frame that are actually used by some
 closure (or all of the frame if it is accessible through some other
 route).  In other words, the GC supports a kind of "dependent
 reference" to an array that is indexed by positions into the array
 --- except that the code is more in the "Racket" directory instead of
 the "GC" directory, since it's so specific to the closure
 representation.
2011-05-03 06:57:49 -06:00
..
draw Fix documentation for gui, draw, and framework. 2011-04-22 11:27:08 -04:00
drracket Two improvements to the mrlib/graph library and the module browser: 2011-04-06 11:35:31 -05:00
foreign show an example of define-fun-syntax and using the keywords 2011-04-18 17:27:21 -06:00
framework cleaned up framework docs 2011-05-01 14:16:04 -05:00
gui fix cross-reference 2011-04-24 07:55:32 -06:00
guide fix typo in guide sec 17.3.3 2011-04-19 14:32:17 -04:00
honu misc racket renamings 2010-05-07 11:03:02 -06:00
htdp-langs add a #:use-sources keyword to deinprogramm docs to get scribble to know about more of the docs 2011-05-02 05:52:59 -05:00
inside document scheme_malloc_stubborn 2011-04-10 19:26:15 -06:00
main remove compat bins: DrScheme, MrEd.exe, MrEd.app 2011-04-15 07:49:45 -06:00
more tweaks to More related to text editors and readline 2010-06-27 10:11:22 -06:00
quick fix scriblib/gui-eval and pre-build pictures for Quick 2011-04-14 12:20:16 -06:00
raco break link to namespaces from from closures over top-/module-level vars 2011-05-03 06:57:49 -06:00
reference Add more examples for remove', remq', `remv'. 2011-04-29 13:27:38 -04:00
scheme document some modules that are referenced in other documentation 2010-12-15 13:41:59 -07:00
scribble add in the supported ->i forms 2011-05-01 14:15:57 -05:00
slideshow slideshow/pict: adjust `linewidth' to allow #f => transparent 2011-03-08 07:55:52 -06:00
tools Some random tidyings. 2011-02-16 15:26:15 -05:00
finger.png
icons.rkt
info.rkt move purpose statements to the info files 2010-08-23 15:13:00 -06:00
magnify.png