Commit Graph

86 Commits

Author SHA1 Message Date
Matthew Flatt
779b419c03 first cut at cross-module function inlining
Inline only trivial functions, such as `(empty? x)' -> `(null? x)',
to avoid generating too much code.

Bytecode includes a new `inline-variant' form, which records a
version of a function that is suitable for cross-module inlining.
Mostly, the variant let the run-time system to retain a copy
of the bytecode while JITting (and dropping the bytecode of)
the main variant, but it may be different from the main variant
in other ways that make it better for inlining (such a less loop
unrolling).
2011-11-30 07:39:36 -07:00
Vincent St-Amour
597f310e89 Fix typoes in the raco docs. 2011-11-22 17:52:49 -05:00
Matthew Flatt
c34dff1247 add 'wmclass/".wmclass" aux executable/launcher configuration 2011-09-26 18:07:18 -06:00
Matthew Flatt
0ab6637539 remove obsolete and unused Racket-to-C compiler
Removes `raco ctool -e/-c', `mzc -e/-c', `compile-extensions',
`compile-extensions-to-c', `compile-c-extensions', `compiler/cffi',
`compiler/comp-unit', `compiler:inner^', and most options in
`compiler/option'.
2011-09-20 15:26:39 -06:00
Eli Barzilay
16cd1ad78d Make `defproc' throw an error if two arguments have the same name.
Related to the already fixed PR 12114 and PR 12133, which motivated the
error, and a few additional typos of the same kind.

(Note that it uses the symbols, but that's how they'll render anyway.)
2011-09-16 11:14:18 -04:00
Matthew Flatt
ca0d7b5ef4 add ++aux' flag to raco exe' 2011-09-09 17:03:18 -06:00
Matthew Flatt
d3c56c9f13 generalized `begin-for-syntax' 2011-09-08 14:06:00 -06:00
Vincent St-Amour
168291c89d Use the right Scribble form for flags. 2011-08-31 16:53:29 -04:00
Vincent St-Amour
d028b63a08 Fix flag name in raco exe docs. 2011-08-31 15:53:10 -04:00
Robby Findler
61aaf584c5 adjust the threading protocol for compilings files to be kill safe 2011-08-30 07:59:33 -05:00
Matthew Flatt
ecc058de4a change `raco exe' to disable collection lookup by default 2011-08-25 09:15:30 -06:00
Matthew Flatt
84e3ab2a20 add support for collection roots to the collection links file 2011-08-24 20:08:19 -06:00
Matthew Flatt
71e92bcecf more `raco link' command-line changes: add -u, adjust -rn 2011-08-24 20:08:19 -06:00
Matthew Flatt
96098e678c change -s `raco link' flag to -l 2011-08-24 20:08:19 -06:00
Matthew Flatt
2dbaa45e1b add `raco unpack'
Although the ".plt" format is going to be replaced, the format is
currently viable for distributing collections, and I have wanted
a raw `unpack' command for a while. It was useful today to fix
problems with `raco pack' and collection links.
2011-08-24 20:08:18 -06:00
Matthew Flatt
a7855e20a8 add `raco link'
includes a rewrite the "Module Basics" section of the Guide
2011-08-24 09:07:14 -06:00
Matthew Flatt
7eb2042bd9 fix compiler handling of top-/module-level constants
The JIT and bytecode compiler disagreed on the definition of
"constant". Now there are two levels: "constant" means constant across
all instantiations, and "fixed" means constant for a given instantation.
The JIT uses this distinction to generate direct-primitive calls
or not. (Without the distinction, a direct jump to `reverse' could
be wrong, because `racket/base' might get instantiated with the
JIT disabled or not.)

Also, fixed a bug in the JIT's `vector-set!' code in the case that
the target vector is a top-/module-level reference that is ready,
fixed, or constant.
2011-08-19 06:32:44 -06:00
Eli Barzilay
d61eb53686 Lots of documentation formatting.
Started as fixing misindented definitions, then more indentations, then
a bunch of similar things (square brackets, huge spaces at end-of-lines,
etc).
2011-08-15 07:50:04 -04:00
Robby Findler
e043297ef8 use the supplied security guard in one more place where compiler/cm needs write permission 2011-08-10 07:45:14 -05:00
Matthew Flatt
5352d670c4 generalize #%variable-reference' and add variable-reference-constant?'
Use the new functions to make the expansion of keyword applications
to known procedure work  with mutation.
2011-08-09 16:33:17 -06:00
Robby Findler
32becaf860 added a #:security-guard argument to:
managed-compile-zo
  make-caching-managed-compile-zo
  make-compilation-manager-load/use-compiled-handler
that gets used when compiled files, dep files, and compiled/ directories are created.
2011-08-02 16:28:10 -05:00
Matthew Flatt
8a00308ad5 add lib' to setup/infotab' exports
and fix up documentation, which didn't mentioned the allowed
`require' form
2011-07-31 04:43:24 -06:00
Robby Findler
a672704e5e add support for thread-safe compilation to compiler/cm (and use it in drracket) 2011-07-30 09:01:46 -04:00
Robby Findler
085b497b1c tidy up parallel build api docs 2011-07-30 09:01:44 -04:00
Robby Findler
9e0a866969 typo 2011-07-15 21:25:14 -05:00
Eli Barzilay
ebe9453e73 Fix the path relative functions to return a string for a path input,
clarify the documentation, add a few tests.

Fixes pr 12032
Fixes pr 12034
2011-07-10 06:53:44 -04:00
Eli Barzilay
4da4a2759b New setup/path-to-relative' that supersedes unstable/dirs' and most of
`setup/private/path-utils'.

The API is a little different: instead of getting the alist and the
path, there's a curried function that gets the alist and produces a
function to do the substitutions.
2011-07-02 01:10:38 -04:00
Eli Barzilay
6b44974b42 Improvements around uses of the current `unstable/dirs', and
`setup/path-relativize'.

`setup/path-relativize' is freed from a bunch of things that were due to
historical baggage, but some remain.  (Also, update its docs.)
2011-07-02 01:10:38 -04:00
Ryan Culpepper
1b702a2ae3 docs reorganization
added tutorial, racket categories
  relabeled some other categories
  normalized manual names: de-bolded, changed some names
2011-07-01 17:16:53 -06:00
Matthew Flatt
69ad39d45c fix `compiler/zo-parse' & co. 2011-06-30 08:24:41 -06:00
Eli Barzilay
ac26fe7554 A ton of @scheme*' -> @racket*' and related updates.
Also, updates some of the mzlib files to point at `racket/*' libraries
rather than to `scheme/*' ones.
2011-06-25 04:08:47 -04:00
Eli Barzilay
debd1f9f1e Recketizing much in `net/*', mass ".ss" -> ".rkt" conversion in .scrbl files.
(Some other minor things here and there.)
2011-06-20 04:27:14 -04:00
Matthew Flatt
f34a31cac9 "under <platform>" -> "on <platform>"; "X" -> "Unix"
I originally picked "under" as the preposition to go before
 a platform name, but obviously you should build "on" a
 platform, and "under" suddenly annoys me. The choice of "on"
 is now codified in the documentation style guide. Meanwhile,
 "Unix" insted of "X" seems more clear and consistent in the
 `racket/gui' docs.

 More usefully, this patch also fixes a few out-of-date
 platform-specific claims.
2011-06-17 18:54:43 -06:00
Jon Rafkind
3b73fa1462 lower -> faster 2011-05-10 21:56:13 -06:00
Jon Rafkind
c11a177009 add notes about using racket/base instead of racket. closes pr 10992 2011-05-10 18:18:00 -06:00
Matthew Flatt
a4da2a3f4c fix varref' in compiler/zo-structs', etc.
and sync docs better with implementation
2011-05-09 09:43:32 -06:00
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
Matthew Flatt
982503b083 share a timestamp cache across all collections during `raco setup' 2011-04-27 19:02:08 -06:00
Matthew Flatt
0754ad0114 safe-for-space repairs for functions with rest args 2011-04-22 15:59:33 -06:00
Eli Barzilay
1be26400cb Some random tidyings. 2011-02-16 15:26:15 -05:00
Matthew Flatt
9070a4c961 fix doc typos 2011-02-11 06:07:10 -07:00
Robby Findler
e096e4d5a4 moved find-exe to its own top-level file 2011-02-08 15:38:11 -06:00
Robby Findler
6a220d7d69 docs fixes for parallel-compile-files
also, (lambda args (void)) is the same as just void, so changed that.
2011-02-08 10:02:43 -06:00
David Van Horn
760a58b65d Fixes more spelling errors. 2011-02-04 19:44:13 -07:00
David Van Horn
c9519fd113 Fixed various spelling errors. 2011-02-03 17:42:33 -05:00
Kevin Tew
2e1dffbfcc raco make -j 2011-02-01 08:27:56 -07:00
Kevin Tew
a42ea71113 Scribble with-compile-output fix 2011-01-20 15:57:39 -07:00
Robby Findler
422bf5eae7 docs fixes 2011-01-13 20:11:53 -06:00
Kevin Tew
324d1aa440 parallel-lock-client doc fix 2011-01-12 10:36:29 -07:00
Kevin Tew
65460f5739 parallel-lock-client docs 2011-01-12 10:22:52 -07:00