With the JIT, the `reverse' function is significantly faster,
while the `member' variants do not really change; the main
benefit is that the operations play well with futures.
The C implementation is still used when the JIT is unavailable,
since the Racket implementations can be much slower in
interpreted mode.
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
and documented and adjusted these libraries:
racket/contract/base
racket/contract/exists
racket/contract/parametric (renamed from exists)
racket/contract/region
Added `update-source-location', which provides keyword-based functional update
for source location representations.
Removed automatic collection-relative printing for source locations.
* unstable/location.ss
Made `quote-srcloc' and its related forms all automatically use source locations
relative to collections and/or planet, where appropriate, and to compute
source locations dynamically if they cannot be made relative.
Removed #:module-source argument from `quote-srcloc'.
Changed `quote-module-path' and `quote-module-name' to use source file name
extensions.
Removed `quote-module-source'. I'm not sure what the use case is for
generating a resolved module path that doesn't correspond to a real module.
* unstable/dirs.ss
Implemented `path->directory-relative-string' for rendering a path to a string
that is relative to one of a list of given directories, with associated
abbreviations for each.
* unstable/scribblings/unstable.scrbl
* unstable/scribblings/srcloc.scrbl
* unstable/scribblings/dirs.scrbl
Documented the above changes.
* scheme/contract/private/provide.ss
* scheme/contract/private/base.ss
Changed contract forms to always blame a module path where appropriate.
Removed use of #:module-source option for `quote-srcloc'.
* setup/private/path-utils.ss
Updated `path->name' to use more general `path->directory-relative-string'.
svn: r18816
place will have initial input names, so having this first will make
existing code break with an easy to fix syntax error, rather than having
confusing failures. (Also made it throw a very clear error message if
there is no () now.)
svn: r18705