Commit Graph

621 Commits

Author SHA1 Message Date
Matthew Flatt
780d6ae566 x86_64: minor bignum performance boost
Incorporate a few x86_64 assembly routines from the latest GMP,
which provides a small speed boost for operations such as bignum
multiplication and division.
2014-01-15 10:31:11 -07:00
Eric Dobson
f0ebfee9ac Make parallel compile not call exit.
Closes PR 13373.
2014-01-13 09:34:40 -08:00
Robby Findler
4d123bb26d fall back to the slow path when application expression looks wrong
closes PR 14279
2014-01-12 23:37:09 -06:00
Robby Findler
04628e3516 remove accidentally left behind logger 2014-01-12 23:37:08 -06:00
Matthew Flatt
dc8d2fb7fc fix memory problem with places & built-in structure types
Thanks to Asumu for tracking down the problem.
2014-01-10 06:54:37 -06:00
Matthew Flatt
33b7f6f92f package binary strip: work on "info.rkt" files that use `(module ....) 2014-01-09 14:07:26 -06:00
Matthew Flatt
ba99bba668 net/http-client: restore use of abandon
The difference between `abandon` and `close-output-port` seems to
matter for downloading PLaneT packages on some networks. Using
`abandon` does not seem to create any problems now that an extra
"\r\n" is not incorrecty included in PUT/POST requests.
2014-01-08 23:08:14 -06:00
Robby Findler
a7304d18eb add some missing custom printers (to recursive-contract) 2014-01-08 13:42:53 -06:00
Matthew Flatt
409c8ef512 racket/enter: add dynamic-enter! 2014-01-07 15:07:39 -07:00
Matthew Flatt
a7bc240b3c setup/[main-]collects: doc and error-message repairs
Closes PR 14222
2014-01-07 14:09:10 -07:00
Matthew Flatt
4fe1673475 fix (more) closure type tracking for a procedure with only an unused rest arg
Fixs the repair in fe12a32dc3

Relevant to PR 14259
2014-01-07 10:22:58 -07:00
Matthew Flatt
331825700b fix bad interaction among JIT, 3-D macro, and bytecode reader
Closes PR 14186
2014-01-07 10:22:58 -07:00
Eric Dobson
54c50dd8d2 Add caching for collects-relative->path. 2014-01-06 21:16:26 -08:00
Eric Dobson
10fa612681 Minor cleanups to compiler. 2014-01-06 21:16:26 -08:00
Scott Moore
26cb1f7ce6 path-element? should disallow '.' and '..'
Fix `path-element?` to check whether the name returned by split-path
is a path or a special entry. This behavior matches both the documentation
of `path-element?` and the implementation of `string->path-element`.
2014-01-06 19:33:44 -07:00
Matthew Flatt
ff478f3173 allow optimizer to move mcons and box-immutable
Suggested by Gustavo Massaccesi.
2014-01-05 08:54:52 -07:00
Sam Tobin-Hochstadt
aeaf018d01 Provide and document match-expander? and legacy-match-expander?. 2014-01-04 17:56:38 -05:00
Matthew Flatt
b7f4e10fe1 MzCom: fix command-line parsing
I couldn't get MzCOM to work in a release build, because my
installations always had a "-" in the path.

Merge bug fix to v6.0 (pending review)
2013-12-31 10:55:04 -07:00
Matthew Flatt
93b38e25a6 fix CPP guard on clang pragmas 2013-12-31 06:49:49 -07:00
Matthew Flatt
bce8fc84f8 fix ordering bug in place termination
This bug was introduced in 94771f16ed, moving a local-variable
initialization to after its use.
2013-12-30 16:23:44 -07:00
Matthew Flatt
56483c8809 suppress clang warnings
The warnings need to be suppressed only when compiling preprocessed
code during 3m compilation (because clang doesn't complain about
the relevant patterns when it knows that macros produced them).
2013-12-30 16:22:43 -07:00
Matthew Flatt
33f2c23c05 workaround clang problem
Using MZ_INLINE on scheme_get_realint_val() and
scheme_get_unsigned_realint_val() leads to a link
error when using the current clang on Mac OS X 10.9.
Remove the MZ_INLINE declaration, since a modern C
compiler will inline, anyway.
2013-12-30 15:20:30 -07:00
Matthew Flatt
b3ab82c5f9 fix problem with path->collects-relative
An internal error could be triggered by a path immediately
inside the "pkgs" directory.
2013-12-30 12:15:18 -07:00
Matthew Flatt
e226ad66c5 move "props" test configs to test submodules or "info.rkt" files
The "props" file still has

 * ".rkt" `drdr:timeout` entries, needed until DrDr uses submodules and
   "info.rkt" files; although timeout information has been put in
   submodules for `raco test`, DrDr uses `raco test` in a way that does not
   enable timeouts, so that DrDr can implement timeouts itself (and record
   when a test times out)

 * ".rkt" `drdr:random #t` entries; not sure what to do with these, yet

 * ".rkt" `responsible` entries; not sure what to do with these, yet

 * ".rktl" `drdr:command-line #f` entries, needed until all ".rktl" files
   are disabled in DrDr

The following files were previously disabled for DrDr testing, but were
intentionally left as enabled with these changes:

pkgs/racket-pkgs/racket-test/tests/pkg/shelly.rkt
pkgs/racket-pkgs/racket-test/tests/pkg/util.rkt
pkgs/racket-pkgs/racket-test/tests/pkg/info.rkt
pkgs/racket-pkgs/racket-test/tests/pkg/basic-index.rkt
pkgs/racket-pkgs/racket-test/tests/racket/link.rkt
pkgs/racket-pkgs/racket-test/tests/racket/embed-in-c.rkt
pkgs/racket-pkgs/racket-doc/ffi/examples/use-c-printf.rkt
pkgs/racket-pkgs/racket-doc/ffi/examples/c-printf.rkt
pkgs/parser-tools-pkgs/parser-tools-lib/parser-tools/private-lex/error-tests.rkt
pkgs/mysterx/mysterx.rkt
pkgs/mysterx/main.rkt
pkgs/games/gobblet/test-model.rkt
pkgs/games/gobblet/test-explore.rkt
pkgs/games/gobblet/robot.rkt
pkgs/games/gobblet/check.rkt
pkgs/db-pkgs/db-lib/db/private/odbc/main.rkt
pkgs/db-pkgs/db-lib/db/private/odbc/ffi.rkt
pkgs/db-pkgs/db-lib/db/private/odbc/dbsystem.rkt
pkgs/db-pkgs/db-lib/db/private/odbc/connection.rkt
pkgs/distributed-places-pkgs/distributed-places-lib/racket/place/distributed/examples/hello-world.rkt
pkgs/redex-pkgs/redex-lib/redex/private/compiler/match.rkt
pkgs/redex-pkgs/redex-lib/redex/private/compiler/match.rkt
pkgs/htdp-pkgs/htdp-test/2htdp/utest/balls.rkt
pkgs/gui-pkgs/gui-test/framework/tests/test-suite-utils.rkt
pkgs/games/paint-by-numbers/raw-problems/size-calculation.rkt
pkgs/db-pkgs/db-lib/db/odbc.rkt
pkgs/compatibility-pkgs/compatibility-lib/mzlib/traceld.rkt
pkgs/cext-lib/dynext/private/stdio.rkt
pkgs/db-pkgs/db-lib/db/odbc.rkt
racket/collects/ffi/unsafe/objc.rkt
racket/collects/ffi/objc.rkt
pkgs/racket-pkgs/racket-test/tests/pkg/tests-db.rkt
pkgs/racket-pkgs/racket-test/tests/pkg/test-docs.rkt
pkgs/racket-pkgs/racket-test/tests/pkg/test-catalogs-api.rkt
pkgs/gui-pkg-manager-pkgs/gui-pkg-manager-lib/pkg/gui/main.rkt
pkgs/redex-pkgs/redex-lib/redex/private/compiler/redextomatrix.rkt
pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/base-env/base-special-env.rkt
pkgs/planet-pkgs/planet-test/tests/planet/version.rkt
pkgs/planet-pkgs/planet-test/tests/planet/test-docs-complete.rkt
pkgs/planet-pkgs/planet-test/tests/planet/lang.rkt
pkgs/planet-pkgs/planet-test/tests/planet/docs-build.rkt
pkgs/drracket-pkgs/drracket-test/tests/drracket/follow-log.rkt
pkgs/drracket-pkgs/drracket/drracket/private/dock-icon.rkt
pkgs/drracket-pkgs/drracket-test/tests/drracket/tool-lib-and-sig.rkt
2013-12-30 12:15:18 -07:00
Matthew Flatt
5ea4c2ab68 fix sync on place with no writers
A `sync` on a place whose initial channel is known to have no writers
could trigger a place result instead of blocking on the place.
2013-12-28 19:55:31 -06:00
Matthew Flatt
94771f16ed fix race in place termination
A place claimed to be done according to `place-wait` before its
clean-up actions ran, including flushing output ports. Fix the
order.
2013-12-28 19:55:31 -06:00
Robby Findler
0edcbf3f82 fix bug in ->* contract combinator
that would cause the optional and mandatory keyword arguments
to get mixed up in certain situations
2013-12-28 16:15:25 -06:00
Matthew Flatt
22513439ff raco setup: fix dependency checking for "racket" package
Possibly, only "base" should depend on "racket", while the version
number of "base" should track the version number of "racket".
2013-12-24 18:00:38 -06:00
Matthew Flatt
99daa9b34d in-directory: add optional argument to filter directories 2013-12-24 18:00:38 -06:00
Matthew Flatt
f5cfcfecfe setup/command-name: drop ".exe" in short form 2013-12-24 15:38:29 -06:00
Matthew Flatt
1f2012a106 Windows: fix reported exe name in "independent" launchers
For example, make `raco exe --wrong` show "raco" instead of "racket"
as the error-reporting program. Normally, only `raco` and `setup-plt`
are implemented as "independent" launchers, because it's needed for
bootstrapping.
2013-12-24 15:38:28 -06:00
Robby Findler
06598dd5c7 forgot to add a file to the last commit 2013-12-24 15:34:51 -06:00
Robby Findler
e28b63e056 improve the speed of "second order" -> contacts
to bring them back in line with how they were before the
first order special-casing happened
2013-12-24 15:02:38 -06:00
Matthew Flatt
85c85b02b9 mzcom: fix rebuild when version changes 2013-12-24 06:56:03 -06:00
Matthew Flatt
6858b8df90 fix problem with doc database in read-only mode
Now that the documentation-build phase of `raco setup` uses read-only
mode, contention between writing and reading sometimes (though
infrequently) triggers an SQLITE_IOERR_LOCK error. Change the SQLite
binding to expose that specific error, as well as SQLITE_IOERR_BLOCKED,
because a retry of the affected operation is appropriate.
2013-12-21 14:37:17 -07:00
Ryan Culpepper
06aa4770f1 fix sqlite rollback-transaction in case of auto-rollback error
Merge to release branch.

An invalid (needs-rollback?) transaction may correspond to a closed
underlying transaction. In that case, don't issue ROLLBACK command.
2013-12-21 10:24:39 -05:00
Jay McCarthy
7faab4d617 Fix PR14216 2013-12-20 16:31:27 -07:00
Jay McCarthy
6c4650ebbd Remove secret information from pkg error messages 2013-12-20 16:31:27 -07:00
Robby Findler
438942c059 update HISTORY based on some of Jay's changes
please include in 6.0
2013-12-20 15:44:37 -06:00
Asumu Takikawa
8c6cf7395d Update HISTORY
Please merge to v6.0
2013-12-20 14:55:20 -05:00
Matthew Flatt
dc526f95f3 fill in some missing history notes
Merge to v6.0
2013-12-20 06:23:13 -07:00
Robby Findler
4408cdcfe4 add missing HISTORY entries based on my changes leading up to 6.0
Please merge to 6.0 (some of the history files already have
post-6.0 notes in them, but hopefully this patch still applies
cleanly)
2013-12-19 22:35:57 -06:00
Matthew Flatt
bfb4af3e84 raco: use executable yield handler before existing
Makes `raco` wait as it should for a GUI tool.

Closes PR 14261
2013-12-19 14:34:59 -07:00
Matthew Flatt
fe12a32dc3 fix closure type tracking for a procedure with only an unused rest arg
Closes PR 14259
2013-12-19 14:19:01 -07:00
Matthew Flatt
01eece18a7 dynamic-require: fast path for re-exported variables
When `dynamic-require` is used to access an export that isn't a
variable defined in the same module, `dynamic-require` falls
back to `eval` in a fresh namespace, which can be expensive.
The new fast path handles the case that a variable is re-exported.

The new fast path is relevant to deserialization, which now
uses a submodule that re-exports from an enclosing module.
2013-12-19 12:35:29 -07:00
Ryan Culpepper
d0e8e715b4 remove extraneous CRLF after message-body
RFC2616 section 4.1 (http://www.ietf.org/rfc/rfc2616.txt):
"... an HTTP/1.1 client MUST NOT preface or follow a request
with an extra CRLF."
2013-12-19 01:34:04 -05:00
Matthew Flatt
a8f2405b4b fix rendering of column by srcloc->string 2013-12-18 18:49:38 -07:00
Matthew Flatt
c8085a2988 fix chaperone-procedure wth extra properies
Continues the saga of 5bae9773a, this time fixing chaperone
properties.
2013-12-18 15:19:19 -07:00
Matthew Flatt
4070bcd461 fix chaperones and prop:procedure functions with keyword arguments
Commit 5bae9773aa broke `chaperone-procedure` and `impersonate-procedure`
so that it didn't always produce a chaperone or impersonator. Also,
the arity-error changeds intended for that commit were not complete,
because tests were accidentally commented out.

The main repair involves a new internal property that keeps track of an
accessor that is used to extract a procedure from a field in a structure
type that has `prop:procedure`.
2013-12-18 05:42:42 -07:00
Matthew Flatt
a9f64f4615 MzCOM: fix versioning and collection path
Merge bug fix to v6.0 (pending review)
2013-12-16 21:08:35 -07:00
Matthew Flatt
0f80c71fab setup/doc-db: propagate read-only flag for database connection
Fixes a problem installation Planet packages under Windows,
for example, where attempting to open a read-only file in
write mode triggers an extremely slow result.

Merge bug fix to v6.0 (pending review)
2013-12-16 14:38:26 -07:00
Matthew Flatt
ec5157d78f setup/setup: fix #:make-doc-index? default
Making the default match the docs fixes Planet package installation,
which otherwise tries to rebuild the index too frequently.

Merge bug fix to v6.0 (pending review)
2013-12-16 14:38:26 -07:00
Matthew Flatt
1ceca069c8 more repairs to function-name inference
The main change is to add an option to `syntax-local-infer-name` to
select whether `syntax-local-name` is used, and to use the new option
to disable `syntax-local-name` for the function expression in a
keyword `#%app`.

Improvements in the expander/compiler generalize a previous repair.

Merge to v6.0
2013-12-16 09:07:36 -07:00
Matthew Flatt
4abe7d2657 fix incorrect propagation of name via syntax-local-name
Merge to v6.0
2013-12-14 21:11:08 -07:00
Matthew Flatt
80d0b2fcc3 fix for-label import of a submodule
Closes PR 14155

Merge to v6.0
2013-12-14 20:27:55 -07:00
Robby Findler
2199d96100 implement a little bit of the random generation for the new ->
(just enough to pass the test suite)
2013-12-14 15:47:31 -06:00
Jay McCarthy
87135b110b Fix PR14247
Add "Connection: close" to requests that we know will end after one
request.

Read upto 1K bytes at a time on requests rather than just 1 at a time.

Change closing semantics to be "close" and not "abandon"
2013-12-14 08:00:41 -07:00
Robby Findler
074f21203a another fix to the first-order check I added earlier today
(discovered by the test suites run by drdr)
2013-12-13 19:19:25 -06:00
Robby Findler
14645b8cc5 fix class/c first-order check for interface contracts 2013-12-13 16:20:59 -06:00
Robby Findler
52c74701ec improve the first-order checking for the current class/c implementation
(not strictly necessary, but the new, still pending class/c first-order
checking checks the arities of the methods and those additional
tests got put into the test suite, so the easiest thing for now
is just to make the current class/c implementation do that check too)
2013-12-13 12:02:53 -06:00
Robby Findler
ecc1facdaa improve source locations for uses of contracted variables 2013-12-12 22:48:57 -06:00
Matthew Flatt
0b48e883da fix reducing arity or chaperoning keyword-valued prop:procedure
Fix various problems, including a bad result from `procedure-arity`
and problems with chaperones and arity error messages when a
structure's `prop:procedure` value is a keyword-accepting procedure.

Merge to v6.0
2013-12-12 12:15:10 -07:00
Matthew Flatt
861384d36d Mac OS X: fix executable creation for LC_DYLIB_CODE_SIGN_DRS
The LC_DYLIB_CODE_SIGN_DRS load command is relatively new, and
it needs to be updated when we shift __LINKEDIT to add
__PLTSCHEME.

Merge to v6.0
2013-12-11 19:54:58 -07:00
Robby Findler
c321f6dd0c Change contract system so that projections are more first-order friendly
The main changes are the addition of a new way to specify projections,
using the #:val-first-projection keyword argument; the main goal of the
new API is that more information can be supplied to the projection on
the server side of the contract boundary. In addition, the arrow contracts
will now, internally and in some cases (see define-module-boundary-contract)
return functions that accept one additional argument than the original
function did and then insert the name of the negative party into call sites.

The rough idea is that if you have a program like this one:

  #lang racket/base
  (define (f x) (+ x 1))
  (provide (contract-out [f (-> integer? integer?)]))

then the contract system produces something much closer to this:

  #lang racket/base
  (define (f x) (+ x 1))

  (provide (rename-out [external-f f]))
  (define (external-f neg-party x)
    (check-integer neg-party x)
    (define ans (f x))
    (check-integer neg-party ans)
    ans)

  (define local-blame-information ...)
  (define (check-integer neg-party v)
    (unless (integer? v)
      (raise-blame-error local-blame-information
                         #:missing-party neg-party
                         ...)))

where 'raise-blame-error' can now cope with blame objects that don't
have negative part information in them (when the #:missing-party
argument is supplied, essentially just reassembling the original blame
record at that point)

Then, on the client side, if we had

   (f x)

it gets transformed into

   (f '<<my-modules-name>> x)

and if we had

   (let ([g f])
     ...)

you get a slow path:

    (let ([g (lambda (x) (f '<<my-modules-name>> x))])
      ...)

(where we don't create a wrapper lambda, of course, we actually create
a procedure chaperone)

The performance improvements seem pretty good (see below for the
precise programs that I ran and the numbers I got):

  first order contract microbenchmark: 6x speedup
  higher-order contract microbenchmark: 1.5x speedup
  first-order TR contract interop micro benchmark: 6x speedup

This also improves the memory use for DrRacket by about 3% (from about
236.8 mb to 231.3 mb), presumably because more of the data structures
created by the contract system can be created only once, on the server
side.

Be aware, however, that not all combinators are using the new
projections and the code that translates between the two APIs
is slow.

Also there are a bunch of other changes that got made while I was
doing this. Most notably, the change above were not designed for the
performance improvements to arrow contracts, but to make it possible
to implement class/c contracts with a (hopefully) negligible space
overhead. That work is not yet finished, but this commit includes some
changes to the class system to prepare the way for those changes.

Unfortuantely, these changes slow down 'send' on microbenchmarks by
about 24%. The change comes from the addition of an extra 'if' (and
predicate test and possibly the extra let expresison) that's inserted
into the expansion. I'm not happy about that (I was shooting for 10%)
but I'm not sure that we can do much about it (except perhaps double
check my measurements, see below).

Other misc changes:

- improve arity mismatch error messages by including the arity of the
  given procedure (closes PR 14220)

- Adjust case-> so it generates less code. This seems to reduce the
  size of the math library .zo files by about 3% (from 10440k to
  10156k for me)

- speeds up the contract tests a bit

- move recontract out into racket/contract (also, document it)

- added define-module-boundary-contract

- streamline TR's any-wrap/c and adjust it to use
  #:val-first-projection instead of #:projection

- adjust a bunch of contracts to print more nicely

- and, of course, Rackety

--------------------------------

The precise programs that I tried and their timings (the raw data
for the performance claims above):

 #lang racket/base
(module m racket/base
  (require racket/contract/base)
  (define (f x) x)
  (provide (contract-out [f (-> any/c any/c)])))

(require 'm)
(time
 (for ([x (in-range 100000)])
   (f 1) (f 2) (f 3) (f 4) (f 5) (f 6) (f 7) (f 8)
   (f 1) (f 2) (f 3) (f 4) (f 5) (f 6) (f 7) (f 8)
   (f 1) (f 2) (f 3) (f 4) (f 5) (f 6) (f 7) (f 8)
   (f 1) (f 2) (f 3) (f 4) (f 5) (f 6) (f 7) (f 8)
   (f 1) (f 2) (f 3) (f 4) (f 5) (f 6) (f 7) (f 8)
   (f 1) (f 2) (f 3) (f 4) (f 5) (f 6) (f 7) (f 8)
   (f 1) (f 2) (f 3) (f 4) (f 5) (f 6) (f 7) (f 8)))

pre-push timings:

cpu time: 3553 real time: 3552 gc time: 52
cpu time: 3548 real time: 3552 gc time: 52
cpu time: 3525 real time: 3525 gc time: 54
cpu time: 3547 real time: 3547 gc time: 47

post-push timings:

cpu time: 515 real time: 515 gc time: 15
cpu time: 522 real time: 522 gc time: 17
cpu time: 560 real time: 560 gc time: 19
cpu time: 514 real time: 515 gc time: 19
cpu time: 507 real time: 507 gc time: 17

A second order example using vectors (note that vector/c isn't yet
updated to the #:val-first-projection, so it will be way slower)

 #lang racket/base
(module m racket/base
  (require racket/contract/base)
  (define (f x) (vector-ref x 0))
  (provide (contract-out [f (-> (vectorof any/c) any/c)])))

(require 'm)
(define v (vector void))
(time
 (for ([x (in-range 10000)])
   (f v) (f v) (f v) (f v) (f v) (f v) (f v) (f v)
   (f v) (f v) (f v) (f v) (f v) (f v) (f v) (f v)
   (f v) (f v) (f v) (f v) (f v) (f v) (f v) (f v)
   (f v) (f v) (f v) (f v) (f v) (f v) (f v) (f v)
   (f v) (f v) (f v) (f v) (f v) (f v) (f v) (f v)
   (f v) (f v) (f v) (f v) (f v) (f v) (f v) (f v)
   (f v) (f v) (f v) (f v) (f v) (f v) (f v) (f v)))

pre-push timings:

cpu time: 744 real time: 745 gc time: 20
cpu time: 679 real time: 679 gc time: 18
cpu time: 695 real time: 695 gc time: 23
cpu time: 743 real time: 742 gc time: 21
cpu time: 780 real time: 786 gc time: 21
cpu time: 723 real time: 726 gc time: 25

post-push timings:

cpu time: 448 real time: 448 gc time: 18
cpu time: 470 real time: 469 gc time: 19
cpu time: 466 real time: 465 gc time: 16
cpu time: 457 real time: 456 gc time: 15
cpu time: 465 real time: 466 gc time: 24

Using contracts in TR

 #lang racket/base
(module m typed/racket/base
  (: f (Any -> Any))
  (define (f x) x)
  (provide f))

(require 'm)
(time
 (for ([x (in-range 10000)])
   (f 1) (f 2) (f 3) (f 4) (f 5) (f 6) (f 7) (f 8)
   (f 1) (f 2) (f 3) (f 4) (f 5) (f 6) (f 7) (f 8)
   (f 1) (f 2) (f 3) (f 4) (f 5) (f 6) (f 7) (f 8)
   (f 1) (f 2) (f 3) (f 4) (f 5) (f 6) (f 7) (f 8)
   (f 1) (f 2) (f 3) (f 4) (f 5) (f 6) (f 7) (f 8)
   (f 1) (f 2) (f 3) (f 4) (f 5) (f 6) (f 7) (f 8)
   (f 1) (f 2) (f 3) (f 4) (f 5) (f 6) (f 7) (f 8)))

pre-push timings:

cpu time: 357 real time: 357 gc time: 6
cpu time: 446 real time: 447 gc time: 4
cpu time: 361 real time: 359 gc time: 4
cpu time: 366 real time: 366 gc time: 5
cpu time: 368 real time: 367 gc time: 6

post-push timings

cpu time: 63 real time: 63 gc time: 7
cpu time: 64 real time: 63 gc time: 8
cpu time: 63 real time: 64 gc time: 8
cpu time: 58 real time: 58 gc time: 8
cpu time: 59 real time: 59 gc time: 7

Slowdown for 'send':

 #lang racket/base
(require racket/class)
(define c% (class object% (define/public (m x) x) (super-new)))
(define o (new c%))
(time
 (for ([x (in-range 100000)])
   (send o m 1) (send o m 2) (send o m 3) (send o m 4)
   (send o m 5) (send o m 6) (send o m 7) (send o m 8)
   (send o m 1) (send o m 2) (send o m 3) (send o m 4)
   (send o m 5) (send o m 6) (send o m 7) (send o m 8)
   (send o m 1) (send o m 2) (send o m 3) (send o m 4)
   (send o m 5) (send o m 6) (send o m 7) (send o m 8)
   (send o m 1) (send o m 2) (send o m 3) (send o m 4)
   (send o m 5) (send o m 6) (send o m 7) (send o m 8)
   (send o m 1) (send o m 2) (send o m 3) (send o m 4)
   (send o m 5) (send o m 6) (send o m 7) (send o m 8)))

timings pre-push:

cpu time: 251 real time: 251 gc time: 0
cpu time: 275 real time: 275 gc time: 0
cpu time: 250 real time: 250 gc time: 0
cpu time: 246 real time: 246 gc time: 0
cpu time: 247 real time: 246 gc time: 0

timings post-push:

cpu time: 303 real time: 302 gc time: 0
cpu time: 333 real time: 333 gc time: 0
cpu time: 315 real time: 315 gc time: 0
cpu time: 317 real time: 317 gc time: 0
cpu time: 311 real time: 310 gc time: 0
2013-12-11 12:05:30 -06:00
Eric Dobson
83ce25294c Remove extraneous compile of non existent file.
Merge to v6.0
2013-12-08 07:28:32 -07:00
Matthew Flatt
280bb31d70 fix a synchronization problem in the GC for places
When a GC is needed for the shared space, a GC is triggered
in all places, and the places wait until each other place
has completed. However, the places also need to wait until
all other places are ready to *start* a GC; otherwise, a
place may be modifying a shared record while some other place
traverses it for a GC.

Closes PR 14229

Merge to v6.0
2013-12-07 09:32:51 -07:00
Matthew Flatt
1f6453de89 net/http-client: fix http-conn-live? result
Merge to v6.0
2013-12-06 21:19:38 -07:00
James McCoy
bdec6c33ff Fix typoed character ranges (A-z => A-Z)
Signed-off-by: James McCoy <vega.james@gmail.com>

Merge to v6.0
2013-12-06 12:09:11 -07:00
Ryan Culpepper
5593febba5 fix nested ?? in template form
closes PR 14170

Instead of checking free pvars of first template and using that to choose
which template to use, just try first and on failure try second.

Note: ?? still only covers absent pvars; non-#f non-stx value still
causes error; ellipsis rep mismatch still causes error; etc.
2013-12-05 14:01:26 -05:00
Matthew Flatt
b625e62ca8 raco: skip problem "info.rkt" files
Allows some `raco` tools to work (such as `raco pkg`) when loading
information about other installed tools fails, so that problems can
be more easily corrected using working tools (other than `raco setup`,
which is a special case, anyway, for bootstrapping).

Closes PR 14221

Merge to v6.0
2013-12-04 10:23:41 -07:00
Robby Findler
85bd081907 fix cons/c use in contract
related to PR 14222

This doesn't completely fix that PR because the
implementation says that bytes are allowed and
the docs don't allow that. My guess is that the
implementation is wrong, not the docs, btu I'm not
sure and this may be a backwards compatibility
kind of thing, too. Also, path->collects-relative
should probably be considered (it doesn't allow
bytes? as an argument).
2013-12-04 09:51:24 -06:00
Jay McCarthy
01b197d3eb Fix PR14207, thanks ryanc 2013-12-02 13:16:18 -07:00
Robby Findler
15e6f4d38d fix a #f/no-contract conflation in the init arg processing for class/c
related to PR 14215
2013-12-01 18:40:03 -06:00
Matthew Flatt
d37e910169 move setup/xref from "scribble-lib" to "racket-index"
The `setup/xref` library conceptually belongs in "racket-index",
and moving the library avoids a cross-package use of a private
module.

Merge to v6.0
2013-12-01 08:38:31 -07:00
Matthew Flatt
d48a75eddf make pkg-links: fix to allo "racket" as a dependency
Probably only the "base" package should rely on a "racket" version,
while other packages should rely on a "base" version.
2013-11-30 21:01:21 -07:00
Matthew Flatt
33b7d49b2e raco exe: add --config-path option, default to "etc"
Make executables created by `raco exe` not refer to the original
configuration directory by default, but add an option for setting
the directory.

For Unix ELF executables, fix `raco exe` to set/preserve the
configuration directory.

Merge to v6.0
2013-11-29 13:13:25 -07:00
Matthew Flatt
790ae0705c raco dist: fix for Unix GUI executables
Merge to v6.0
2013-11-28 18:12:59 -07:00
Matthew Flatt
7bba67d107 doc search & redirect: user as an extension of main
When rendering the user documentation-search page or
local-redirect page, only user-specific documentation is
included, which makes rendering faster and automatically
picks up any installation-scope additions.

The documentation start page is still static, so the
user version doesn't pick up installation-scope
additions in the same way.

Related to PR 14180
2013-11-28 16:53:12 -07:00
Matthew Flatt
20af636cfb fix "racket-index" package installed in user scope
When the "racket-index" package is in user scope, then the
the documentation-build process should not try to write to
"doc" in the installation.

Merge to v6.0
2013-11-28 08:47:55 -07:00
Jay McCarthy
680b6f4928 Revert "Remove arbitrary code execution exploit from Racket and DrRacket"
This reverts commit cf1755fc17.
2013-11-27 19:23:04 -07:00
Jay McCarthy
cf1755fc17 Remove arbitrary code execution exploit from Racket and DrRacket
This is particularly bad with DrRacket's online syntax checking, which
causes opening a file to download and executed aribtrary code.
2013-11-27 15:39:57 -07:00
Matthew Flatt
d007ec3e56 fix an error message
Merge to v6.0
2013-11-26 18:19:54 -07:00
Jay McCarthy
8ca8764bb3 Adding user-agent as some services require 2013-11-26 08:57:56 -07:00
Matthew Flatt
335177f1bc fix problems with text-mode ports on Windows
Closes PR 14198

Merge to v6.0
2013-11-25 10:00:23 -07:00
Asumu Takikawa
289a19e237 Fix format string for GC debug log message
Closes PR 13998

Please merge to v6.0
2013-11-25 11:55:00 -05:00
Matthew Flatt
90388d1549 fix handling of choice evt returned by a guard evt
Closes PR 14195

Merge to v6.0
2013-11-24 08:20:44 -07:00
Matthew Flatt
f4ed053620 fix #:make-docs? argument of setup
Closes PR 14193

Merge to v6.0
2013-11-23 20:10:26 -07:00
Matthew Flatt
f1d561ac46 reflow release notes for v6.0
Merge to v6.0
2013-11-22 14:59:35 -07:00
Matthew Flatt
75263e6664 fix raco config --set
Merge to v6.0
2013-11-22 14:59:35 -07:00
Matthew Flatt
c7d4b7d388 define-runtime-path: add support for version search to 'so form
Merge to v6.0
2013-11-22 07:26:43 -07:00
Matthew Flatt
9213d1aa79 configure: add fallback when checking for ar 2013-11-21 20:24:32 -07:00
Matthew Flatt
79f3fd5e64 raco setup: fix a read-only use on the docindex database
Merge to v6.0
2013-11-21 06:59:48 -07:00
Matthew Flatt
9bb5dda4f5 raco setup: fix exit code on doc error 2013-11-21 06:44:38 -07:00
Matthew Flatt
53ce3b7b96 raco pkg config: show all by default
Also, better help, checking, and error reporting on arguments.

Related to PR 14180

Merge to v6.0
2013-11-20 17:52:41 -07:00
Matthew Flatt
ecaa6576a3 raco pkg {install,update,...}: propagate setup exit code
Also, when `raco setup` reports an error, print a message to
say that the package install/update/... completed anyway.

Merge to v6.0
2013-11-20 17:52:40 -07:00
Ryan Culpepper
f12cfe185b Post-release version for the v6.0 release 2013-11-20 14:10:06 -05:00
Matthew Flatt
1d8a2516b2 fix problem resizing mutable hash tables
A hash-table size grew based on the number of key slots occupied,
instead of the number of value slots, where the two differ when
keys are added and removed in the table.

Thanks to Ryan for the example.
2013-11-20 07:28:34 -07:00
Ryan Culpepper
975762c25a work around lack of sqlite3_next_stmt on Mac OS X 10.5.* 2013-11-19 22:52:26 -05:00
Matthew Flatt
30af4dfb33 raco pkg remove: fix dependency check in --auto mode 2013-11-19 18:07:07 -07:00
Matthew Flatt
17275e3f37 unix installer: repair .desktop exec path conversion 2013-11-19 18:07:07 -07:00