Commit Graph

746 Commits

Author SHA1 Message Date
Stevie Strickland
01396784c9 Fix set/c to conform to hash/c-like restrictions.
Since sets are implemented using the elements as the domain of a hash table,
the following must be true:
 * element contracts for (seteq ...) must be flat
 * element contracts for (seteqv ...) must be flat
 * element contracts for (set ...) must be chaperones, and the resulting
   contract is a chaperone contract

Also, change higher-order set/c contracts to be chaperone contracts
due to the new restrictions.
2011-07-21 18:49:06 -04:00
Robby Findler
c06db14bfd improved opt/c so that it knows about chaperones 2011-07-18 07:55:55 -05:00
Robby Findler
2b99c86321 fix missing argument to format
please merge to release branch
2011-07-18 07:55:54 -05:00
Matthew Flatt
67936b7a66 fix `enter!' to set module source name
Merge to 5.1.2
2011-07-17 08:14:33 -06:00
Robby Findler
2308701476 add a test case for the contract system error (and adjust the fix a little bit) 2011-07-16 22:52:32 -05:00
Casey Klein
a2bc43eabd Fixes error for functions that return wrong number of values 2011-07-16 18:19:22 -05:00
Robby Findler
7993d38e35 fix a bug in the arity checking for contracts 2011-07-15 21:25:10 -05:00
Matthew Flatt
bed64be873 allow larger font sizes --- up to 1024
It's not clear that any limit is still needed, and probably
 font sizes should be liberalized to reals instead of
 integers (but I don't want to spend that kind of time
 right now).
2011-07-15 19:43:47 -06:00
Robby Findler
9190fbade2 fix bug introduced in recent refactor 2011-07-15 07:10:10 -06:00
Robby Findler
00bb92816c cleaned up the generated code for -> and friends 2011-07-14 22:58:12 -06:00
Matthew Flatt
7be0c8236f fix `procedure-reduce-keyword-arity' checking
and clarify need for distinct keywords in parts of the
 documentation
2011-07-14 17:07:18 -06:00
Eli Barzilay
db7f2b4542 Add a new #:dont-re-require-enter' flag for enter!', to avoid
requiring itself into the entered namespace.

This makes it useful in some cases where this require leads to a
dependency cycle, eg (enter! racket/list).  It's obviously not useful
for use as-is, since you will not have a bound `enter!' to get out of
the namespace (and possibly no `require' to get it) -- but it is useful
for meta-tools like xrepl.  This is why the flag is verbose.  `xrepl'
now uses this flag.

Also, the check for valid keywords for the form is now done at runtime
rather than in the macro.  This doesn't matter in this case, since the
form is intended for interactive use anyway.

Also, separate the two parts of `enter-load/use-compiled' (it was
defined curried, but didn't use it).
2011-07-14 17:21:46 -04:00
Matthew Flatt
007614fc9f add gradient transformation to `brush%' 2011-07-13 10:45:19 -06:00
Robby Findler
7b9b3c371b adjusted the wording of the contract error messages to move away from <>'s and added more colons 2011-07-12 22:03:07 -06:00
Sam Tobin-Hochstadt
79ed93a925 Add `racket/kernel' as language with very low startup time. 2011-07-09 22:49:50 -04:00
Carl Eastlund
b3136095ea Changed default blame formatter to report blame parties relative to collection
and planet directories where appropriate.  Added a test for this behavior.
2011-07-09 14:48:14 -04:00
Carl Eastlund
2e6a608539 Corrected documentation of quote-module-name to indicate that it does not
produce collection and planet-relative paths on its own.  Deprecated
quote-module-path, and replaced existing uses of it with quote-module-name.
2011-07-09 14:46:58 -04:00
Matthew Flatt
efd1fa51bd change `find-method/send' back to one result
The 2-result implementation is not needed now that contracts
 are implemented via impersonators
2011-07-09 07:08:32 -06:00
Matthew Flatt
8decf99f34 move error reporting out of `define-syntax-rule' expansion 2011-07-09 06:32:41 -06:00
Matthew Flatt
121145be73 prune unused imports 2011-07-09 06:16:11 -06:00
Matthew Flatt
65b1a569a0 add `unsafe-list-{ref,set}'
Use the new functions in `syntax-case'; the benefit is small, and
 it's mostly useful as hint to the optimizer that the operation
 can be dropped if the result isn't used
2011-07-08 06:23:29 -06:00
Kevin Tew
5d66e52fcc Add identifier? check to place macro 2011-07-07 16:56:23 -06:00
Matthew Flatt
1dd7aa5889 avoid unnecessary syntax object 2011-07-07 07:25:48 -06:00
Matthew Flatt
e783d84268 move checking code out of macro expansion 2011-07-07 07:25:48 -06:00
Matthew Flatt
edb02aec97 slightly faster method sends
by using just `object-ref' instead of `object?' plus `object-ref'
2011-07-06 14:00:51 -06:00
Eric Dobson
805e1fb309 Correctly require/typed structs with parents. Closes PR11509. 2011-07-05 11:25:10 -04:00
Eric Dobson
07910253b4 Fixes build-struct-expand-info to create correct struct info.
Adds a check to struct-info? to make sure selectors
and mutators are the same length. Closes PR12017.
2011-07-05 11:25:10 -04:00
Eric Dobson
5493e17538 Fix match to not use apply and work with TR. 2011-07-05 11:25:10 -04:00
Eric Dobson
fc8ed9772a Added srclocs to errors raised by match. 2011-07-05 11:25:10 -04:00
Matthew Flatt
3dcb19007d protect the expansion of `enter!' 2011-07-02 19:41:27 -06:00
Robby Findler
df6590b80f adjust contract violation message by putting the name at the start of the message. For example, this:
contract violation, expected <(or/c (quote clean) (quote armed) (quote tained))>, given: #f
  contract on wrapped from 'zo-structs, blaming 'no-dep
  contract:
     (->
        any/c
	(listof wrap?)
	(or/c 'clean 'armed 'tained)
	wrapped?)
  at: C:\tmp3.rkt:6.21

becomes this:

wrapped: contract violation, expected <(or/c (quote clean) (quote armed) (quote tained))>, given: #f
  contract from 'zo-structs, blaming 'no-dep
  contract:
     (->
        any/c
        (listof wrap?)
        (or/c 'clean 'armed 'tained)
        wrapped?)
  at: C:\tmp3.rkt:6.21

(apologies if the indenting isn't quite right above; vi messed with it when I tried to paste it in ...)
2011-07-03 00:04:12 +08:00
Eli Barzilay
3157955d40 ".ss" -> ".rkt" scan done. 2011-07-02 10:37:53 -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
1276568558 Combine two let's into a let*', use some #'s. 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
Matthew Flatt
59731368fc add ffi/winapi; use it in mzlib/os
Closes PR 12007
2011-07-01 10:42:17 -06:00
Matthew Flatt
e921f20b6a disable (minimize?) smoothing for `draw-bitmap' in 'unsmoothed mode 2011-06-30 12:25:56 -06:00
Kevin Tew
c3059f7e82 place-dead-evt 2011-06-30 10:02:21 -06:00
Matthew Flatt
1160d3df62 remove syntax certificates; add syntax taints 2011-06-29 19:15:48 -06:00
Eli Barzilay
40124a0619 A long overdue scan to eliminate files without terminating newlines.
(DrRacket should really do that.)
2011-06-28 02:01:41 -04: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
Kevin Tew
508388ed61 Remove define-place from racket/place 2011-06-24 11:12:37 -06:00
Matthew Flatt
b1e47eba45 add `place-message-allowed?' and fix related problems
Closes PR 11983
2011-06-17 10:33:27 -06:00
Matthew Flatt
56423f330e `procedure-arity-includes?' reports #f for keyword-requiring procs
by default; a new optional argument restores the old behavior
  (but the default behavior is consistent with the old docs and with
  the vast majority of existing uses)

 The implementation is ugly for performance reasons. A new primitive
  `prop:arity-incomplete' property determines when to return #f for
  `procedure-arity-includes?' in default mode. A nicer implementation
  would be to redefine `procedure-arity-includes?' at the kw-proc level,
  but the bytecode optimizer's and JIT's treatment of the built-in
  `procedure-arity-includes?' is important. The implementation choice
  could be revisited after cross-module inlining is implemented.

 Closes PR 11978
2011-06-16 12:36:16 -06:00
Stevie Strickland
649fe2f276 Fix #%app bindings for `with-contract'-based contract forms.
Closes PR11975.
2011-06-16 14:25:01 -04:00
Matthew Flatt
80bd949531 add mode to arc' in dc-path%' to support right/bottom alignment 2011-06-16 08:17:14 -06:00
Eli Barzilay
c0051518be Fix `{user,group,other}-{read,execute}-bit' (in the docs too).
Make the launcher template copying code try to ensure that all user
access bits are on.
2011-06-14 21:27:36 -04:00
Eli Barzilay
71b8440adb Tweak things a little: make simple-compose*' use simple-compose' when
the first function's arity is 1, avoiding another `call-with-values'.

The difference in timing is in the noise (looks like `call-with-values'
is optimized for an arity-1 receiver), but it seems more in line with
the rest...  Incidentally, it steps around the problem in PR11981.
2011-06-14 19:02:30 -04:00
Eli Barzilay
da1c334f70 Use `apply apply' which is slightly faster for most inputs than using
`list*'.  (And add specialized cases for small inputs.)
2011-06-14 19:02:30 -04:00
Eli Barzilay
be84425bd0 Rewrite compose' and add compose1'.
The new version fixes some problems with the previous one, most notably
it can create a keyworded function when the last input is is keyworded.
`compose1' is a restricted variant that requires single values in the
composed pipeline -- besides being potentially faster (probably more
if/when there is cross module inlining), it has a semantical
justification, similar to the restricting function call arguments to
return single values, with similar robustness benefits.  The
implementation of both is done in a generalized way, and the results can
be faster for both `compose' and `compose1'.  (Not by much -- 20% and
30% resp.)

One thing that it could do is to reduce the resulting arity to match the
last given function.  I didn't do this since it adds a significant
overhead to the result.  (No strong opinion on doing that...)
2011-06-14 19:02:30 -04:00
Eli Barzilay
45e3c4f4af Fix catching of initial exceptions to happen outside of the sandbox context,
so the error is actually printed instead of swallowed silently.

Also, fix some copy/paste uses of 'make-evaluator instead of
'make-module-evaluator in error messages, and two more in
`make-evaluator*' that lacked a "who" input.
2011-06-14 19:02:30 -04:00
Kevin Tew
939f0b1c0b rename place-dynamic to dynamic-place 2011-06-11 15:36:16 -06:00
Kevin Tew
1473b7775f Places: rename place and place/anon 2011-06-10 11:07:01 -06:00
Matthew Flatt
460504c852 add #:unless' to for' 2011-06-10 06:21:35 -07:00
Kevin Tew
21f7109204 Places: rename send receive to put get 2011-06-09 23:48:55 -06:00
Eli Barzilay
17b6ffa731 Move thunk' from unstable/function' into `racket/function'.
Actually, the new `thunk' is a nullary function, which I think is very
popular expectation for the name.  Since there are possible uses for the
any-arity version, it's added too, as `thunk*'.
2011-06-07 03:38:06 -04:00
Eli Barzilay
a70ef57f02 Move identity' from unstable/function' into `racket/function'. 2011-06-07 03:38:06 -04:00
Eli Barzilay
768a5fd61d Drop mstart' and mend' arguments to `success-choose' -- it's getting
the complete list of submatches anyway, so it can just `caar' and `cdar'
it.
2011-06-06 02:01:27 -04:00
Eli Barzilay
5754312120 Some reformating. The only real change is using `write-bytes' instead
of a `display' in one place.
2011-06-06 02:01:26 -04:00
Matthew Flatt
defae9be11 adjust `struct' expansion for the top level
to allow an expression (such as a property) to refer to bindings
 introduced by the `define-syntaxes' half of the expansion
2011-06-02 16:20:20 -07:00
Matthew Flatt
a7ae3b807e fix docs for `multi-in'
because the previous documentation didn't actually define the form;
 the examples were good, but epecting a reader to infer meaning
 from examples wasn't good enough. The use of a `module-path?' contract
 in the old docs wasn't appropriate; contracts apply to values, while
 grammar productions should be used to document syntax constraints.
 Also, `module-path?' was too permissive (only literal strings and
 identifiers are actually allowed), while the actual syntax allows
 either a single path or a sequence.
2011-05-30 08:49:46 -06:00
Vincent St-Amour
2c470ee82a Tests for multi-in. 2011-05-26 13:53:31 -04:00
Vincent St-Amour
3210aa6014 Extend multi-in to deal with more general trees. 2011-05-26 11:56:31 -04:00
Vincent St-Amour
c3da0babb7 sub-in -> multi-in 2011-05-26 11:56:31 -04:00
Asumu Takikawa
7f143f03ed Add impersonator-contract? along with docs/tests.
The impersonator-contract? function checks if its argument is
a contract that is neither flat nor a chaperone contract.
2011-05-26 00:37:05 -04:00
Vincent St-Amour
011d43b688 Add require syntax for multiple files in the same directory/collect. 2011-05-24 12:40:09 -04:00
Matthew Flatt
4b9d88cc1d fix `sequence->stream'
Closes PR 11932
2011-05-19 15:59:08 -07:00
Robby Findler
6bc43306ca fix two format string mixup bugs (one in planet and one in the racket/cmdline library) 2011-05-19 17:52:09 -05:00
Matthew Flatt
b6445880e2 add pre-multiplied mode for `{get,set}-argb-pixels' 2011-05-18 16:01:33 -07:00
Vincent St-Amour
006d5ef45a Typo. 2011-05-18 17:09:45 -04:00
Matthew Flatt
905eb11651 fix alpha-only mode of `get-argb-pixels'
Closes PR 11927
2011-05-17 16:00:36 -07:00
Matthew Flatt
2e367626b5 win32: fix pango font-map finalization 2011-05-13 14:06:54 -06:00
Matthew Flatt
49aadc599a ffi: add `#:in-original-place?' to deal with thread-unsafe libs
and use it for Pango, which is not thread-safe at the C level
2011-05-13 08:55:04 -06:00
Robby Findler
1db3ae3476 fixed up printing ~s vs ~a in contract system and made the contract tests run in drdr 2011-05-11 21:20:04 -05:00
Matthew Flatt
0011f5957d fix rotation problems and sense of `transform'-like operations
so that they conceptually apply after the current
 transformation, instead of before the current transformation;
 more general rotation problems were related to aligned drawing
 and the calculation of the effective scale for alignment
2011-05-10 09:53:49 -06:00
Matthew Flatt
ca16f25cf1 fix in-list' to check argument with list?'
--- originally left out on purpose for performance reasons,
     but it was not documented as missing a test, it's obviously
     better to check for a list, and JIT changes have made
     the `list?' test inexpensive
2011-05-09 14:27:45 -06:00
Robby Findler
553d9ff4c6 made set/c preserve flat-contract'ness of its argument 2011-05-09 08:49:12 -05:00
Matthew Flatt
02c2c173f2 Prevent #\uFFFF and #\uFFFE from being passed through to Pango
Closes PR 11904
2011-05-08 17:01:23 -06:00
Matthew Flatt
5e7d1f2d9c fix get-char-width' and get-char-height' in case font match fails 2011-05-04 11:09:12 -06:00
Matthew Flatt
87a4132b40 fix zo-marshal' for #f toplevel-map in lam' 2011-05-03 14:43:27 -06:00
Kevin Tew
46dc051931 Turn places build back on, provide place-break. 2011-05-03 14:01:30 -06:00
Matthew Flatt
4a41196dc2 win32: work around Pango(?) bug in freeing font maps 2011-05-03 10:23:35 -06:00
Kevin Tew
7134b95ff1 [Places] place/anon place/thunk 2011-04-27 11:50:44 -06:00
Kevin Tew
a589ea42b6 [Places] added place-break primitive 2011-04-26 18:41:19 -06:00
Robby Findler
21cbd9ad81 added the racket/contract/combinator library,
and documented and adjusted these libraries:
     racket/contract/base
     racket/contract/exists
     racket/contract/parametric (renamed from exists)
     racket/contract/region
2011-04-25 11:51:44 -05:00
Ryan Culpepper
fab332a409 let-bind assq, etc for correct object-name 2011-04-24 20:05:11 -06:00
Matthew Flatt
50878614e0 remove an unnecessary turtle check in `assoc' variants 2011-04-24 14:45:57 -06:00
Vincent St-Amour
41075df8d7 Typo. 2011-04-24 11:09:25 -04:00
Matthew Flatt
2f8006aa6b add an optional argument to `assoc'
and implement `assoc', `assq', and `assv' in Racket
2011-04-24 07:55:33 -06:00
Kevin Tew
6bfef986d1 Match error messasge in places.c 2011-04-21 06:24:09 -06:00
Matthew Flatt
7a47974a69 adjust `in-vector' with ranges to cooperate with futures 2011-04-20 17:52:06 -06:00
Matthew Flatt
aed7bdf0c9 fix gc of ps/pdf/svg cairo-surface stream 2011-04-20 14:25:58 -06:00
Kevin Tew
3358ec8d10 Place-channel path test cases 2011-04-20 00:01:28 -06:00
Matthew Flatt
25017ef3c1 streamline expanded code for procs with optional and no keyword args 2011-04-19 21:28:14 -06:00
Matthew Flatt
e0d26d88b6 support exact nonnegative integers as sequences 2011-04-18 14:55:02 -06:00
Matthew Flatt
2fa35a2a5c fix bug in thread'-based implementation of place'
which is used when parallel places are unavailable
2011-04-18 13:06:03 -06:00
Robby Findler
8afeed8c66 fix up contract test suites 2011-04-16 07:55:49 -05:00
Robby Findler
ec50a8c5a2 additional fixes to the docs and racket/contract's exports to make them match up 2011-04-15 12:44:44 -05:00
Matthew Flatt
5386206667 fix 'solid vs. 'opaque for mono on mono Closes PR 11839 2011-04-14 15:38:38 -06:00
Robby Findler
2bceaec03a start fixing up the exports to match the docs for racket/contract 2011-04-14 15:27:27 -05:00