Commit Graph

798 Commits

Author SHA1 Message Date
Alexis King
62170e6218 Add index(es)-of and index(es)-where to racket/list 2016-12-10 13:01:12 -08:00
Robby Findler
31ca626910 document a default 2016-11-25 09:17:28 -06:00
Sam Tobin-Hochstadt
34fdd2863a Avoid traversing immutable vectors when specified.
This adds #:eager as an option for controlling this behavior.

Using `#:eager 10` is a 2x improvement in performance for configuration 010001
of the suffixtree benchmark from Takikawa et al, POPL 2016.

The default behavior is unchanged. This is configurable because some
programs are much faster when eager checking is performed. For example:

(require racket/contract)
(collect-garbage)
(time (for/sum ([_ 100000])
        (vector-ref (contract (vectorof integer? #:eager #t) #(1) 'pos 'neg)
                    0)))
(collect-garbage)

(time (for/sum ([_ 100000])
        (vector-ref (contract (vectorof integer? #:eager #f) #(1) 'pos 'neg)
                    0)))

The second loop is 3-4 times slower than the first. However, making
the vector much larger will make the difference go the other way.
2016-11-22 11:28:30 -05:00
Robby Findler
09c1174f7e add the #:extra-delay argument to recursive-contract 2016-11-19 15:56:18 -06:00
Leif Andersen
1582178982 Add example for dict-implements/c 2016-11-15 08:29:51 -05:00
Vincent St-Amour
81cd3622d3 Update docs to reflect xrepl being enable by default. 2016-11-08 08:58:21 -06:00
Robby Findler
1b834d010a fix wrong name in docs 2016-10-23 22:54:46 -05:00
Georges Dupéron
153dc01ccd Some small fixes to the documentation
* Wrong contract for syntax-local-value in the documentation.
* Clarified signature in documentation for expand-import, expand-export and pre-expand-export
* Corrected typo in documentation for "for".
* Fixed error message for function which seems to have been renamed in the docs
* Fixed typo in a comment in the tests
* Fixed a typo in the documentation for set-subtract.
* Use double ellipses for the free-id-table-set*, free-id-table-set*!, bound-id-table-set* and bound-id-table-set*! operations
2016-10-19 20:52:45 -05:00
Matthew Flatt
ddf6985020 fix docs on PLT_COMPILED_FILE_CHECK
Merge to v6.7
2016-10-15 07:28:52 -06:00
Matthew Flatt
ff7f1ce9ff update "More" now that xrepl is on by default
Merge to v6.7
2016-10-15 07:28:43 -06:00
Vincent St-Amour
ecadde3a65 Add #:logger keyword argument to with-intercepted-logging.
Closes #1486.
2016-10-11 11:50:33 -05:00
Stephen Chang
58d9b3eb19 add doc example for make-provide-pre-transformer 2016-10-11 11:40:13 -04:00
Vincent St-Amour
241d87c011 Avoid tech collision.
Closes #1484.
2016-10-09 10:54:53 -05:00
Ben Greenman
65a69417cc doc: clarify elements vs values in sequence/c 2016-10-06 18:46:46 -04:00
Ben Greenman
684dd2d1cb typo: redeclaration 2016-10-06 08:57:05 -04:00
Matthew Flatt
cfb2a7aa32 in-directory: sort entries
Make `in-directory` more like `directory-list` by sorting
directory content.
2016-09-15 06:11:30 -06:00
Ryan Culpepper
fd4ce5afe4 add more codes to lookup-errno, relax contract (#1433)
lookup-errno now returns #f when given an unknown symbol instead
of raising a contract error. It should not return #f for any
symbol that it previously accepted.
2016-09-12 18:07:44 -04:00
Alex Knauth
1952bc4ede fix typo in the syntax-arm docs (#1447) 2016-09-07 14:27:35 -04:00
Andrew Kent
42f4784735 add vector-sort to racket/vector (#1398)
* add vector interface to private/sort.rkt
2016-09-06 17:07:20 -04:00
AlexKnauth
17db8e57f0 update read-cdot documentation 2016-09-01 16:28:06 -04:00
Ben Greenman
5708526055 add index for 'chmod' 2016-08-30 17:55:38 -04:00
Stephen Chang
1ddb4d025c doc typo: nonnegative-exact -> exact-nonnegative 2016-08-30 13:34:22 -04:00
Stephen De Gabrielle
5ef5a4f3cf struct is preferred
changed 'make-struct' to struct
2016-08-25 10:37:06 -05:00
Vincent St-Amour
00f0311473 setup-plt -> raco setup
Survived unnoticed for 6+ years.
2016-08-24 15:33:07 -05:00
Matthew Flatt
a5f0e6dcfc identifier-binding: add mode to report top-level binding info 2016-08-22 08:54:34 -06:00
Matthew Flatt
c3355f6df2 remove spaces around em dashes 2016-08-19 07:05:47 -06:00
Matthew Butterick
aef8f3e7bd clarify role of empty stop-ids list in local-expand (#1335) 2016-08-19 07:03:54 -06:00
Matthew Butterick
88292a6e13 add a more concise example of patching a phase mismatch (#1331)
* add a more concise example of patching a phase mismatch

* Update phases.scrbl

Clarifications
2016-08-19 07:03:43 -06:00
Matthew Butterick
787915155f add example of negative phase level (#1330)
* add example of negative phase level

* Update proc-macros.scrbl

Remove `eval:error`

* correct dashes
2016-08-19 07:03:19 -06:00
gus-massa
70adb6a502 Fix typo in string-ci=? docs (#1424)
After case-folding the strings, they are compared with equal? instead of eqv?
2016-08-19 06:33:45 -06:00
Matthew Butterick
9f7a0af3e5 update #lang tutorial to use reader submodule (#1409) 2016-08-19 06:33:36 -06:00
Robby Findler
2c7db537cc add indexing for contract syntax properties 2016-08-18 13:16:14 -05:00
Robby Findler
30f946fc4b add history, typos 2016-08-17 15:48:22 -05:00
AlexKnauth
1b1b400f91 add #:newline? argument to pretty-printing functions 2016-08-17 15:44:39 -05:00
Benjamin Greenman
1478f64c14 doc: fix broken link to contract-generate
Replaced with `contract-random-generate`
2016-08-15 20:43:47 -04:00
Matthew Flatt
84793e80ff doc corrections
Fix inacurracies noticed while reimplementing the module and macro system.
2016-08-13 14:15:54 -06:00
Matthew Flatt
71b4f5f6c0 doc corrections for syntax-make-delta-introducer 2016-08-13 14:15:54 -06:00
Matthew Flatt
c9da43378f restore SCHEME_INPORT_VAL and SCHEME_OUTPORT_VAL 2016-08-13 14:15:54 -06:00
Matthew Flatt
21d5d909a6 doc correction for ffi/unsafe/alloc 2016-08-13 14:15:54 -06:00
Matthew Flatt
0034c31820 track cumulative allocation
Extend `current-memory-use` to accept a 'cumulative flag.
2016-08-13 14:15:54 -06:00
Matthew Flatt
ad230d2ca0 improve structure-type property handling
Make the optimizer recognize and track `make-struct-property-type`
values, and use that information to recognize `make-struct-type`
calls that will defnitely succeed because a property that hs no
guard is given a value in the list of properties.

Combined with the change to require-keyword expansion, this
change allows the optimizer to inline `f` in

 (define (g y)
   (f #:x y))

 (define (f #:x x)
   (list x))

because the `make-struct-type` that appears between `g` and `f`
is determined to have no side-effect that would prevent `f` from
having its expected value.
2016-08-07 15:59:02 -06:00
Leif Andersen
dc13793c24 sandwitch -> sandwich
(Apparently the other way was incorrectly in my dictionary.)
2016-08-01 12:41:56 -04:00
Leif Andersen
cb1a1e233e Cannot show system build paths in docs 2016-08-01 09:34:12 -04:00
Leif Andersen
1b050905e9 Add example for collection-file-path 2016-07-31 23:19:49 -04:00
Ben Greenman
22546a3f22 typo: description of module-compiled-name argument 2016-07-30 02:14:01 -04:00
Stephen Chang
c56efb22a6 remove mention of syntax-id-rules in Macros section of Guide 2016-07-29 16:19:43 -04:00
Marc Burns
ef41bf21cb fix wrong pluralization 2016-07-28 15:33:13 -05:00
Marc Burns
cdf9da7da4 an string -> an immutable string 2016-07-28 15:33:13 -05:00
Alexis King
1b63703ac0 Fix for-label requires for some struct documentation 2016-07-28 15:33:13 -05:00
Matthew Flatt
fc345ed249 add use-compiled-file-check
Along with the `PLT_COMPILED_FILE_CHECK` environment variable, allows
the timestamp check to be disabled when deciding whether to use a
compiled bytecode file.

In accomodating this change, `raco make` and `raco setup` in all modes
check whether the SHA1 hash of a module source matches the one
recorded in its ".dep" file, even if the timestamp on the bytecode
file is newer. (If the compile-file check mode is 'exists, the
timestamp is completely ignored.)
2016-07-26 10:27:08 -06:00
Leif Andersen
c65ad1efad Moved racket/gui/init and racket/gui/interactive to the gui-lib 2016-07-26 10:14:38 -04:00
Leif Andersen
28f693a976 A few more changes based on Matthew's feedback.
Updated docs
2016-07-26 10:14:38 -04:00
Leif Andersen
a6b7af9733 Made changes based on Matthew's comments.
1. Changed the API documentation for scheme_make_hash_tree, adding primitives for:

* SCHEME_hashtr_eq
* SCHEME_hashtr_equal
* SCHEME_hashtr_eqv

2. Changed direct uses of scheme_make_hash_tree to use these enumed values.

3. Fixed bugs in documentation

4. Defaults to racket/interactive (and racket/gui/interactive) if there is nothing in the config file
2016-07-26 10:14:38 -04:00
Leif Andersen
237418ba0c Added documentation for the racket/interactive module 2016-07-26 10:14:38 -04:00
Leif Andersen
933a494fe0 Fix a few typos in the existing docs. 2016-07-26 10:14:38 -04:00
Leif Andersen
e5ff658875 Add docs for hash trees. 2016-07-26 10:14:38 -04:00
Matthew Butterick
b62d0c80e4 Update examples for equal? eqv? eq? (#1391)
Use the same examples for each so it's easier to compare how the behavior differs.
2016-07-26 01:21:45 -05:00
Tony Garnock-Jones
1ba42bb70d Skip whitespace more liberally when parsing PLTSTDERR and friends.
Now accepts any whitespace, not just spaces, ignores both leading and
trailing whitespace, and accepts multiple whitespace characters
separating subterms.
2016-07-25 19:17:35 -04:00
Leif Andersen
02fa5e06b2 Update docs for racket/init 2016-07-19 17:52:43 -04:00
Asumu Takikawa
ad2c229af1 Add doc examples for FFI union types 2016-07-14 17:30:58 -04:00
Benjamin Greenman
956d10432b typo: argument to 'module-compiled-submodules' (#1370)
Changed from `pre-module?` to `non-star?`
2016-07-10 18:46:24 -04:00
Robby Findler
fdc3b4a685 improve docs for and/c
please merge to the release branch
2016-07-08 15:35:58 -05:00
Sam Tobin-Hochstadt
8d698389e7 Add a way to recognize cpointer predicates. (#1368)
Similar to `struct-predicate-procedure?`. Allows Typed Racket
(and the contract system generally) to avoid chaperone wrapping
for cpointer predicates.
2016-07-08 12:40:03 -04:00
Robby Findler
bdd11100bb add explanation for and/c 2016-07-04 08:08:51 -05:00
Matthew Flatt
8dec2485d6 adjust docs for read-language 2016-07-01 13:30:50 -06:00
Leif Andersen
ebe3a77c2b Update namespace-attach-module docs 2016-06-30 14:20:27 -04:00
Matthew Flatt
3fbb384604 add hash-keys-subset?
This function exposes the fast subset operation that is built in for
immutable hash tables (and used by the set-of-scopes implementation).

Also, make the space optimization implicit for `eq?`-based hash tables
that contain only #t values (instead of explicit and only available
internally). It turns out to be easy and efficient to make the
representation automatic, because the HAMT implementation can support
a mixture of nodes with some containing explicit values and some
containing implicit #t values.
2016-06-30 08:22:18 -06:00
Alexis King
e86fa9f055 Improve with-disappeared-uses and add record-disappeared-use
Now with-disappeared-uses surrounds its body with let, so it can contain
multiple body expressions. The record-disappeared-use function is like
record-disappeared-uses but for a single identifier.
2016-06-29 12:50:14 -05:00
Matthew Flatt
871392f09a add inspector-superior? 2016-06-17 10:23:47 -06:00
Bernardo Sulzbach
b0978652b3 Should call vector vec, not lst 2016-06-15 21:21:14 -05:00
Asumu Takikawa
51bd8f3de5 Fix typo for in-combinations contract 2016-06-15 15:08:48 -04:00
Sam Tobin-Hochstadt
547ddaa6f5 Clarify contract comparison for characters. 2016-06-13 10:27:45 -04:00
Matthew Flatt
8d5f196f96 clairfy 'add default of make-syntax-delta-introducer result 2016-06-10 04:34:52 -06:00
Matthew Flatt
9ca0513875 examples and docs for new define-serializable-cstruct version 2016-06-10 04:34:52 -06:00
Ben Greenman
c21d5e780b typo: with-immed-mark-val -> with-immed-mark-def-val 2016-06-08 18:34:36 -04:00
Asumu Takikawa
5e2caa169e Fix Guide link to scmindent 2016-06-08 17:11:15 -04:00
Asumu Takikawa
2a222a8f15 Add examples for _? C type 2016-06-07 15:19:59 -04:00
Asumu Takikawa
f0003da766 Improve docs for _box C type 2016-06-07 14:37:12 -04:00
Asumu Takikawa
d9cf3c0805 Add examples for _list and _vector in the FFI docs 2016-06-03 17:01:48 -04:00
Leif Andersen
81eb6bf4c0 The 'dummy' field in 'mod' really should be in its own paragraph. 2016-06-01 15:22:04 -04:00
Matthew Flatt
9b60f6b767 fix typo 2016-05-27 07:27:04 -06:00
Leif Andersen
fe03198211 Updated docs to add examples for module->* functions. 2016-05-19 19:01:04 -04:00
Ben Greenman
afec68f639 typo: can #f -> can be #f 2016-05-19 17:43:48 -04:00
Leif Andersen
8111e4ec99 Updated docs to cause resolve-module-path-index and module-path-index-resolve to link to each other. 2016-05-19 12:23:50 -04:00
Leif Andersen
eb17a041ab Updated ZO documentation for global-bucket. 2016-05-18 16:32:38 -04:00
Matthew Flatt
c0fa2eecd5 add module-compiled-indirect-exports and co.
That information is needed sometimes to compile expanded syntax to
bytecode form.
2016-05-18 13:13:15 -06:00
Matthew Flatt
a134d0c0a3 racket/serialize: support keywords and regexp values 2016-05-15 20:03:15 -06:00
Matthew Flatt
b09b5c6184 fix doc link 2016-05-13 11:56:48 -06:00
Matthew Flatt
1149d6cdcd ffi/unsafe: add checking of _array values
When an array value is provided, make sure that it's an array
with at least the expected length (or longer) and same element
layout. That's weaker than checking that the array elements have
the right type, because an `eq?` check at the ctype layer seems
too strong, and the ctype API doesn't provide enough information
for a more flexible equality.
2016-05-10 10:56:32 -06:00
Matthew Flatt
9046d30bcf fix grammar in docs for #%provide 2016-05-05 15:19:47 -06:00
Pedro Caldeira
551ef55535 Add examples for _enum and _bitmask usage. (Close #1317) 2016-05-02 11:21:22 -05:00
Robby Findler
244d9957f1 fix syntax error in flat-contract-with-reason docs 2016-05-01 06:27:44 -05:00
Robby Findler
999f026f55 add docs for flat-contract-with-explanation, clarify make-flat-contract docs
closes #1313, related to #1314
2016-04-30 21:06:41 -05:00
Robby Findler
9acd36724d clarify test argument to make-contract, make-chaperone-contract, and make-flat-contract
closes #1313
2016-04-30 21:06:41 -05:00
Matthew Flatt
99b3ed55be make syntax objects work as preserved syntax properties
Syntax objects generally make sense as properties in other syntax
objects, but they require special care when marshaling to bytecode
(as syntax objects do in general). To make that special handling
possible and reliable, constrain the shape of allowed values.
2016-04-26 10:18:46 -06:00
Leif Andersen
f549724e36 Updated scribble docs for make-constructor-style-printer
It should be using gen:custom-write rather than prop:custom-write.
2016-04-25 19:18:11 -04:00
Vincent St-Amour
264a11f899 Add procedure-impersonator*?.
Mostly useful to determine whether using `unsafe-chaperone-procedure` is ok.
2016-04-25 15:41:19 -05:00
Matthew Flatt
1381b3ca36 correct and improve docs on number printing 2016-04-25 10:07:32 -06:00
Matthew Flatt
35ab9ffdb8 rename relectly added path-extension to path-get-extension
The name `path-extension` created a conflict for an existing
registered package, so it should not have been added to
`racket/path`.

Also, `path-get-extension` was intended to work on a path
that is syntactically a directory, so fix and test that.
2016-04-24 20:30:51 -06:00
Matthew Flatt
b523c9c13f local-transformer-expand: catch lifts in 'top-level mode
Change the one expansion mode as far as I can tell) that disables
lifts so that lifts are now allowed, which means that
`(syntax-transforming?)` implies `(syntax-transforming--with-lifts?)`.

The old documentation incorrectly characterized when lifts
were allowed. Ryan noticed the documentation problem, and that
observation led to this simplication.
2016-04-21 13:58:05 -06:00
Matthew Flatt
734d81fed1 clarification on PLT_VALIDATE_COMPILE
Closes #1181
2016-04-18 08:25:41 -06:00
Matthew Flatt
1fb0f4d143 improve docs for path-only
Closes #1289
2016-04-17 08:36:43 -06:00
Matthew Flatt
8993398033 Add #:name and #:extra-name to struct
A `#:name` identifier picks the name that is bound to static
information about a structure type. An `#:extra-name` identifier
specifies an additional name to be bound to the information.
This pair of options is analogous to `#:constructor-name`
and `#:extra-constructor-name`.

Based on Jen Axel's suggestion and implementation.

Closes #1309
2016-04-16 18:39:48 -06:00
Matthew Flatt
4d9427af44 add path-extension, path-has-extension? and path-{add,replace}-extension
Provide a cleaned-up set up path-extension functions. In contrast
to `path-{add,replace}-suffix` and `filename-extension`, a dot
at the beginning of a path element is not treated as an extension
separator. Also, `path-extension` returns an extension including
its separator, which is more consistent with other extension
functions.

The new `path-has-extension?` function replaces many uses of
regexp matching in the base collections.

Closes #1307
2016-04-16 17:56:34 -06:00
Matthew Flatt
1e597a885c reorganize docs for raco make-related APIs
Closes #1293
2016-04-16 11:06:20 -06:00
Matthew Flatt
467979cd8b improve docs for compile-file
Clarify that it expects to be called via
`with-module-reading-parameterization`.

Closes #1291
2016-04-16 10:56:50 -06:00
Matthew Flatt
446b93882c fix docs for path-add-suffix
Adjusts the docs, but a future replacement (possibly with a new name
to avoid compatibility issues) should behave like the old docs,
instead.

Closes #1292
2016-04-16 10:47:49 -06:00
Matthew Flatt
4cc3aad30b fix problem with (open-input-file #:for-module? #f ...)
Also, clarify failure handling in the docs.

Closes #1298
2016-04-16 10:34:18 -06:00
Eric Dobson
8fccc07259 Fix docs for call-with-atomic-output-file (#1192) 2016-04-16 09:40:36 -06:00
Matthew Flatt
e1a5e41ddc The set of environment variables accessible via getenv is
restricted through `get-info`, which prunes the environment
variable set before it loads the "info.rkt" file. All
environment variables are pruned except those listed in
`PLT_INFO_ALLOW_VARS` (separated by semicolons).

Related to emina/rosette#17.
2016-04-15 09:56:59 -06:00
Matthew Flatt
6369e56709 add support for tethering to a config or addon dir
Add a hook to `raco setup` to make copies of installed executables,
where the copies start with the configuration or addon directory
of creation time, instead of the default installation or user-specific
path.

Although the same effect can be achived by setting environment
variables such as PLTADDONDIR, tethered executables can be easier
to work with and compose better with other programs.

See also #1206 for some discussion, although this change does
not exactly address the original idea there.
2016-04-15 06:42:15 -06:00
Vincent St-Amour
ee43151154 Fix doc typoes.
Found by Josep Portella Florit.
2016-04-11 14:14:36 -05:00
Matthew Flatt
13ebd0e1c8 adjustments for regexp failure handler
Pass a string to the handler to describe the problem.
Also, fix minor issues (GC registration, contracts and `history`
in docs) and make `pregexp`, etc., report compilation errors as
`pregexp`, etc.
2016-04-08 18:34:51 -06:00
Asumu Takikawa
436fca7134 Add optional failure thunk for regexp and friends 2016-04-08 17:15:39 -06:00
Georges Dupéron
8db8e643bb Fixed typo in documentation. 2016-04-07 15:01:01 +02:00
ben
ee623160a4 add @tech links in input-port? and output-port? 2016-04-04 19:03:16 -04:00
Matthew Flatt
ce15a558c7 Improve docs for raco ctool --c-mods 2016-03-30 21:02:30 -06:00
Matthew Flatt
4e57e160fb Inside: fix embedding example to use functions
In some embedding contexts, functions must be used instead of globals
for things like `scheme_current_thread` and `scheme_false`.
2016-03-30 21:02:30 -06:00
Vincent St-Amour
5c10eb13eb Revert "Attempt at adding ->im; will be reverted."
This reverts commit 3d987bf1fda9039fee9efafe21f9f78a0ef4feca.
2016-03-30 19:31:24 -05:00
Vincent St-Amour
7c458d10d7 Attempt at adding ->im; will be reverted.
`->i` already supports method contracts (for use wihin `object-contract`,
whose `->i` support is tested, but undocumented), which would make `->im`
possible.

Unfortunately, that support is very incomplete, missing support for using
`this` in contracts, making this `->im` (or the undocumented `->i` +
`object-contract` combo) basically useless.

Once/if that is added, then this commit would enable `->im`. Until then,
it's mostly useful for future reference (hence will be reverted).

In the meantime, it's possible to use `->i` within class/object contracts
with an explicit `this` argument, so nothing critical is lost, just a tiny
shortcut.
2016-03-30 19:31:23 -05:00
Leandro Facchinetti
05292b7e69 Improve Guide example on `flat-named-contract'
Previously, on the example, the function was not anonymous, so no
`tempN' would appear on the error message.

The fixed example makes use of `flat-named-contract' on an anonymous
function, which resembles the snippet above it and demonstrates the
purpose of `flat-named-contract' better.
2016-03-30 19:31:23 -05:00
Robby Findler
20e2e839cb add current-path->mode 2016-03-26 18:39:17 -05:00
Robby Findler
040078ab01 fix some @racket[] references 2016-03-16 16:53:31 -05:00
Robby Findler
8bcb035693 add suggest/c 2016-03-11 11:42:14 -06:00
Ian Harris
de0fbf2648 scalinger -> scaliger
This fixes racket/racket#757. Tests are included for both versions,
and documentation now only references the new, correctly named,
procedures.
2016-03-10 15:08:48 -06:00
Matthew Flatt
d22df41001 add support for preserved syntax properties
A syntax property is added as preserved or not. For backward
compatibility, the default for a 'paren-shape key is preserved, and
any other key's default is non-preserved.
2016-03-09 20:19:55 -07:00
Robby Findler
11927aea37 respond to Matthias's comments 2016-03-09 14:36:25 -06:00
Robby Findler
6a250fb089 remove obsolete git commands 2016-03-09 14:36:25 -06:00
Robby Findler
1e72b96f9a added a section on unsafe operations 2016-03-09 12:22:48 -06:00
Matthew Flatt
89f30c3c0d Guide: remove a broken example
Using `syntax` to capture local binding information in the current
phase doesn't work with the set-of-scopes expander. Although the
example could be adjust to use `(quote-syntax car #:local)`, it
seems like too much detail at that point in the explanation.
2016-03-07 16:23:25 -07:00
Matthew Flatt
7e4d7dfdee repairs and clarification for raco exe docs 2016-03-05 05:17:37 -07:00
Matthew Flatt
97d951af54 improve equal-hash-code on interned symbols
Compute an `equal?` hash code for `read`able values that
is a constant, at least for a given version of Racket. Only
(interned) symbols failed to have that property before.
2016-03-02 10:31:34 -07:00
Matthew Flatt
7d90b27524 add support for defining GC traversals through ffi/unsafe
Expose tagged allocation and a function that interprets a description
of tagged shapes. As a furst cut, the description can only specify
constant offsets for pointers within the object, but future extensions
are possible.
2016-02-27 20:33:50 -07:00
Lehi Toskin
bc99eb0eef Fix grammar mistake 2016-02-26 23:54:15 -05:00
Ryan Culpepper
2cc4b66184 add saved-errno setter variant
This makes it easier to create mock foreign functions
(or wrap existing ones) for testing.
2016-02-26 17:57:56 -05:00
ben
f2bef56a2e margin-note to say #:auto-value is evaluated once 2016-02-26 17:47:54 -05:00
Robby Findler
7151d6d034 add missing history annotation 2016-02-26 08:10:42 -06:00
Vincent St-Amour
f71474baca Add missing "not".
Found by Greg Hendershott back in September.
2016-02-25 16:09:53 -06:00
John Clements
a45330815d add note about sorting with NaN 2016-02-25 15:51:04 -06:00
Robby Findler
be628e21a6 noticed some @tech{} cleanup opportunities and added some examples
for the random generation functionality
2016-02-21 08:27:21 -06:00
Robby Findler
c4ebd771bb add some @tech{}s 2016-02-20 19:23:18 -06:00
Sam Tobin-Hochstadt
f7c55a8bc6 Make explicit that this simplifies using the FS. 2016-02-18 18:07:18 -05:00
Matthew Flatt
0133954c84 avoid a made-up OS error in rename-file-or-directory
On Unix and OS X, the check to avoid replacing an existing
file or directory is made by Racket, rather than the OS,
so don't claim a system error if the operation fails for
that reason.

Also, update the docs to clarify that the check is not
atomic with the move.

Closes issue #1158
2016-02-18 13:12:55 -07:00
Robby Findler
f93e0df781 explain shortcoming in define-opt/c
related to #1238
2016-02-15 14:28:16 -06:00
ben
0e1f17b520 option to limit prefix in ~a,~s,~v,~e,~.a,~.s,~.v 2016-02-11 19:51:47 -05:00
Stephen Chang
5ffe007f5c Add faster non-generic in-*-set sequences
closes #1217
2016-02-10 11:24:38 -05:00
Stephen Chang
048c4b4a73 add unsafe-hash-iterate ops; add specific hash table sequences
- refactor for.rkt: abstract in-hash- definitions
- refactor hash_table_next in hash.c
- move hash fn headers to schpriv.h

closes #1229
2016-02-05 14:30:34 -05:00
Matthew Flatt
5031897c51 try again to clarify atomic mode's unsafety
Closes issue #1228
2016-02-03 10:51:17 -07:00
Leif Andersen
4c4874c26d Documentation for scheme_register_process_global is fixed.
It was previously both incomplete, and incorrect.
2016-02-02 17:55:06 -07:00
Gustavo Massaccesi
2fb1d4f45d Fix typo 2016-02-02 19:06:23 -03:00
ben
7ea277e420 typo: numerator -> denominator 2016-01-30 20:40:55 -05:00
Robby Findler
ec4bd288bf add support for ... to -> contracts to indicate repeated arguments
also fix order of evaluation for ->
2016-01-28 15:34:57 -06:00
Robby Findler
856e60fe51 add *list/c 2016-01-28 10:12:24 -06:00
Benjamin Greenman
70cefc60bc Merge pull request #1214 from bennn/date-docs
margin-note for gregor & srfi-19
2016-01-28 01:09:40 -05:00
ben
30f045c677 margin-note for gregor & srfi-19 2016-01-27 23:02:35 -05:00
Stephen Chang
e8d34dd156 add hash-iterate-pair and hash-iterate-key+value
- cuts in-hash and in-hash-pairs iteration time in half
- refactor hash_table_index
- add tests
- bump version

closes #1224
2016-01-26 10:14:40 -05:00
Robby Findler
f669eb4af5 add a second argument to list*of
to control what the last piece of the list is more explicitly
2016-01-25 07:58:49 -06:00
Matthew Flatt
9e69f341b3 fix unsafe-chaperone-procedure and ...-procedure* side channel
Also, clarify in docs that `unsafe-chaperone-procedure` cannot
really work with an argument created via `chaperone-procedure*`.
2016-01-24 21:45:21 -08:00
Alexis King
95c0dfce38 Include racket/base for-label for the contracts intro in the guide 2016-01-21 20:18:54 -06:00
Alexis King
f52d43e600 Add for/stream and for*/stream comprehensions to racket/stream
Closes #664
2016-01-21 20:18:39 -06:00
Leif Andersen
34cfe48355 Add examples to make-require-transformer 2016-01-21 17:53:37 -05:00
Leif Andersen
f7298cdb29 scheme_rename -> scheme_reload 2016-01-20 23:03:16 -05:00
Alex Knauth
f130a5ea48 Link to reference from reader extensions guide 2016-01-20 20:36:52 -06:00
Vincent St-Amour
7c4aaa20a8 Document with-contract-continuation-mark. 2016-01-20 16:51:28 -06:00
Stephen Chang
fa96375742 fix in-vector segfault; document corner cases
closes #15227
2016-01-19 16:37:07 -05:00
Stephen Chang
0f39ee9b72 fix ni-range docs; add for tests 2016-01-19 14:22:02 -05:00
Matthew Flatt
f317f906d8 small repairs to docs on 'scribblings in "info.rkt"
Merge to v6.4
2016-01-16 08:20:36 -07:00
Matthew Flatt
0a266780fe unsafe-{impersonate,chaperone}-procedure: to racket/unsafe/ops
Move from racket/base, since the functions are unsafe.
2016-01-16 08:20:36 -07:00
Robby Findler
579d50b2d8 add procedure-result-arity 2016-01-16 00:02:20 -06:00
Robby Findler
41c8d5bc27 add unsafe-{chaperone,impersonate}-procedure 2016-01-16 00:02:19 -06:00
Matthew Flatt
052c7e4c06 pick better names for new module-expansion properties
In retrospect, 'module-body-outside-context wasn't a good
name for a property that turned out to hold only an
inside-edge scope.
2016-01-13 07:53:50 -07:00
Matthew Flatt
6ea9e963c4 add context properties to a module expansion
Add 'module-body-inside-context, 'module-body-outside-context, and
'module-body-context-simple? properties to the expansion of a
`module` form. These properties expose scopes that are used by
`module->namespace` and taht appear in marshaled bytecode.
2016-01-13 07:44:31 -07:00
Matthew Flatt
417d9b0e73 define-runtime-path: add a #:runtime?-id option
The expression in a `define-runtime-path` form is used in
both a run-time context and a compile-time context. The
latter is used for `raco exe`. In a cross-build context,
you might need to load OpenSSL support for Linux (say)
at build time while generating executables that refer to
Windows (say) OpenSSL support. In that case, `#:runtime?-id`
lets you choose between `(cross-system-type)` and
`(system-type)`.

Merge to v6.4
2016-01-09 09:44:47 -07:00
Matthew Flatt
0d3066d8db adjust doc example to avoid a dependence on "algol60"
Merge to v6.4
2016-01-09 09:44:37 -07:00
Jay McCarthy
b078cbc0ef Add define-rename-transformer-parameter and friends 2016-01-08 11:03:33 -05:00
Ben Greenman
3c496777ef add 'combinations' and 'in-combinations' 2016-01-07 23:44:53 -05:00
Robby Findler
32a79a22ec Revert "improve the way plus-one arity functions fall back when they can't see the application site"
This reverts commit c24ddb4a7c.

This optimization was bogus, as shown by the test case in 393d72f153

(Thanks to Sam again for the test case.)
2016-01-07 22:14:15 -06:00
Robby Findler
c24ddb4a7c improve the way plus-one arity functions fall back when they can't see the application site
In particular, instead of going directly back to the chaperone, handle
the case where the function doesn't accept keyword arguments with a
less expensive fallback.

The less expensive fallback uses a case-lambda wrapper (wrapped inside
a make-keyword-procedure) to close over the neg-party and avoid the
chaperone creation. With this commit, the program below gets about 3x
faster, and is only about 20% slower than the version that replaces
the "(let ([f f]) ...)" with its body

  #lang racket/base
  (module m racket/base
    (require racket/contract/base)
    (provide (contract-out [f (-> integer? integer?)]))
    (define (f x) x))
  (require 'm)
  (collect-garbage)
  (time (for ([x (in-range 5000000)]) (let ([f f]) (f 1))))

  Thanks, @samth!
2016-01-07 12:59:21 -06:00
Robby Findler
578b42fc2b add docs for contract-late-neg-projection and contract-val-first-projection 2016-01-07 12:59:20 -06:00
Robby Findler
8b4f8541c3 remove extraneous ? 2016-01-07 12:59:20 -06:00
Leif Andersen
7eee46c4d3 => should not be hyperlinked to cond arrow. 2016-01-06 21:27:56 -05:00
Jay McCarthy
18208f76f5 Improve define-cstruct inline-ability and add #:define-unsafe 2016-01-06 16:53:36 -05:00
Matthew Flatt
c706ee2c05 switch default catalogs to HTTPS 2016-01-06 11:55:43 -07:00
Vincent St-Amour
4b266f1ff2 sequence-sample: various comments from Eli. 2016-01-05 20:33:57 -06:00
Leif Andersen
533c0d16ec Fix typo in raco documentation for scribblings. 2016-01-05 15:47:00 -05:00
Matthew Flatt
d37ee8c5b1 fix place and raco exe
The repair involves making `raco exe` detect a sub-submodule
whose name is `declare-preserve-for-embedding` as an indication
that a submodule should be carried along with its enclosing module.

Normally, `define-runtime-module-path-index` would do that, but
the submodule for `place` is created with `syntax-local-lift-module`,
and the point of `syntax-local-lift-module` is to work in a
nested experssion context where definitions cannot be lifted
to the enclosing module.
2016-01-04 11:01:48 -07:00
Robby Findler
1c431e6f4d Clean up chaperone-hash-set and impersonate-hash-set and adjust set/c to match
Made the hash-set chaperones essentially forward the hash chaperone
operations, but now explain them all in terms of set-based operations
in the docs.

Also adjusted value-blame and has-blame? to support late-neg projections
2016-01-03 20:43:24 -06:00
Matthew Flatt
a2c9b47552 Merge pull request #1189 from LeifAndersen/fix-zo-docs
Fixed typo in zo docs.
2016-01-03 06:47:48 -07:00
Leif Andersen
2aa9d8cca3 Fixed typo in zo docs. 2016-01-02 23:07:31 -07:00
Vincent St-Amour
707f9bffa6 random: move sequence support to random-ref, in racket/random.
And add `random-sample`.
2016-01-02 20:02:30 -06:00
Vincent St-Amour
0796350a88 Extend random to work with ranges and sequences.
Requested by Matthias.
2016-01-02 20:02:30 -06:00
Matthew Flatt
c0915b02b0 pathlist-closure, tar, and tar-gzip: add #:path-filter
Also, add `#:skip-filtered-directory?` to `find-files`.

Less significantly, adjust `pathlist-closure` to be consistent in the
way that it includes a separator at the end of a directory path.
2016-01-01 13:52:37 -07:00
Vincent St-Amour
923b5864a5 Small guide fixes.
Closes PR 15109.
2016-01-01 12:52:14 -06:00
Vincent St-Amour
8c8a76979b Fix keyword argument name.
Closes PR 15089.
2016-01-01 12:52:14 -06:00
Vincent St-Amour
4c04d4afce Fix discussion of filter.
Closes PR 15083.
2016-01-01 12:52:14 -06:00
Robby Findler
110f1bd9b0 different, more likely fix 2015-12-31 15:36:33 -06:00
Robby Findler
357b692d33 fix typo 2015-12-31 15:33:59 -06:00
Matthew Flatt
567679bf0a {impersonate,chaperone}-hash: add equal-key-proc wrapper
The optional `equal-key-proc` wrapper effectively interposes on calls
to `equal?` and `equal-hash-code` for hash-table keys.
2015-12-31 09:22:57 -07:00
Robby Findler
85c781452d wording tweaks 2015-12-30 17:57:36 -06:00
Benjamin Greenman
0f7a946dba put contract-property accessors in an itemlist 2015-12-30 17:52:33 -06:00
Benjamin Greenman
61e21dba22 typo: is-flat-contract? -> is-list-contract? 2015-12-30 17:52:26 -06:00
Robby Findler
b3d05de304 improvements to set/c
- use chaperone-hash-set for set/c when the contract allows only hash-sets

- add a #:lazy flag to allow explicit choice of when to use laziness
  (but have a backwards-compatible default that, roughly, eschews laziness
   only when the resulting contract would be flat)
2015-12-27 22:56:04 -06:00
Robby Findler
bc12019af4 allow the interposition procedures to all be #f in chaperone-hash-set and impersonate-hash-set 2015-12-27 21:02:20 -06:00
Robby Findler
daf19869de chaperone-hash-set fixes 2015-12-26 22:09:14 -06:00
Robby Findler
1b6705f3d9 typo 2015-12-26 17:01:22 -06:00
Robby Findler
d927d04efd generalize tail contract checking for function contracts
Specifically, remove reliance on procedure-closure-contents-eq? to
tell when a pending check is stronger in favor of usint
contract-stronger?

Also, tighten up the specification of contract-stronger? to require
that any contract is stronger than itself

With this commit, this program gets about 10% slower:

  #lang racket/base
  (require racket/contract/base)
  (define f
    (contract
     (-> any/c integer?)
     (λ (x) (if (zero? x)
                0
                (f (- x 1))))
     'pos 'neg))
  (time (f 2000000))

becuase the checking is doing work more explicitly now but because the
checking in more general, it identifies the redundant checking in this
program

  #lang racket/base
  (require racket/contract/base)
  (define f
    (contract
     (-> any/c integer?)
     (contract
      (-> any/c integer?)
      (λ (x) (if (zero? x)
                 0
                 (f (- x 1))))
      'pos 'neg)
     'pos 'neg))
  (time (f 200000))

which makes it run about 13x faster than it did before

I'm not sure if this is a win overall, since the checking can be more
significant in the case of "near misses". For example, with this
program, where neither the new nor the old checking detects the
redundancy is about 40% slower after this commit than it was before:

  #lang racket/base
  (require racket/contract/base)
  (define f
    (contract
     (-> any/c (<=/c 0))
     (contract
      (-> any/c (>=/c 0))
      (λ (x) (if (zero? x)
                 0
                 (f (- x 1))))
      'pos 'neg)
     'pos 'neg))

  (time (f 50000))

(The redundancy isn't detected here because the contract system only
looks at the first pending contract check.)

Overall, despite the fact that it slows down some programs and speeds
up others, my main thought is that it is worth doing because it
eliminates a (painful) reliance on procedure-closure-contents-eq? that
inhibits other approaches to optimizing these contracts we might try.
2015-12-25 22:58:56 -06:00
Robby Findler
f0f85549ce add impersonate-hash-set and chaperone-hash-set 2015-12-25 22:58:55 -06:00
Robby Findler
c9d192f09b make more explicit that define-custom-set-types produces hash sets. 2015-12-25 22:58:55 -06:00
Matthew Flatt
db0a6de1d2 add procedure-specialize
The `procedure-specialize` function is the identity function, but it
provides a hint to the JIT to compile the body of a closure
specifically for the values in the closure (as opposed to compiling
the body generically for all closure instances).

This hint is useful to the contract system, where a predicate
is coerced to a projection with

 (lambda (p?)
   (procedure-specialize
    (lambda (v)
      (if (p? v)
          v
          ....))))

Specializing the projection to a given `p?` allows primitive
predicates to be JIT-inlined in the projection's body.
2015-12-23 17:46:56 -07:00
Robby Findler
8a9408306b have a better strategy for or/c to determine which clause to commit to
in particular, when there is a recursive contract, then we check only
some part of the first-order checks and see if that was enough to
distinguish the branches. if it was, we don't continue and otherwise we do
2015-12-22 16:02:44 -06:00
Matthew Flatt
c01ced6e1d add syntax-transforming-with-lifts? 2015-12-22 08:02:44 -07:00
Matthew Flatt
0553f191d7 adjust PLT_INCREMENTAL_GC so it can disable generational GC
A value that starts "1", "y", or "Y" enabled incremental mode
permanently (any value was allowed formerly), while a value that
starts "0", "n", or "N" causes incremental-mode requests to be
ignored.
2015-12-20 08:58:21 -07:00
Matthew Flatt
513849c1e3 incremental GC: make accounting incremental for the root custodian 2015-12-20 08:58:21 -07:00
Robby Findler
783443f9d7 update the docs for ->i
(should have been in commit 506c9be0cd)
2015-12-19 22:17:59 -06:00
Jay McCarthy
2e34599ce3 Support custom categories on root documentation page
When custom categories are used in older versions, raco setup will
report a warning, but the documentation will still appear under the
Miscellaneous section. Thus, this is a backwards compatible
implementation of the idea.
2015-12-19 16:56:48 -05:00
Robby Findler
33ba7683b2 specify default for stronger 2015-12-15 21:54:36 -06:00
Matthew Flatt
ca237910b3 fix make-syntax-delta-introducer with a #f argument
Closes PR 15202
2015-12-15 17:11:45 -07:00
Matthew Flatt
11f76cbebf fix Burroughs's name 2015-12-15 17:11:45 -07:00
Robby Findler
bd77a0102c add blame-missing-party? and document it and blame-add-missing-party 2015-12-14 12:53:35 -06:00
Matthew Flatt
4354ce45d8 use `scribble/examples' for the Reference
Port `examples`, `interactions`, etc., to use the new `examples`
form of `scribble/examples`. The main intended effect is to ensure
that errors are produced by examples only as specifically
indicated.
2015-12-11 12:29:41 -07:00
Robby Findler
3d7d906cc1 tweak and clean up the contract combinators api
- uniformly remove the extra layers of calls to unknown functions for
  chapereone-of?  checks that make sure that chaperone contracts are
  well-behaved (put those checks only in contracts that are created
  outside racket/contract)

- clean up and simplify how missing projection functions are created
  (val-first vs late-neg vs the regular ones)

- add some logging to more accurately tell when late-neg projections
  aren't being used

- port the contract combinator that ->m uses to use late-neg

- port the </c combinator to use late-neg
2015-12-09 21:55:58 -06:00
Michael Campagnaro
4d7e90286e Fix typo in 'more: systems' doc 2015-12-07 10:42:13 -06:00
Sam Tobin-Hochstadt
21316e3ebf Don't copy immutable vectors in vectorof if not needed.
This happens only if the element contract is a flat contract.
2015-12-06 10:45:13 -05:00
Matthew Flatt
fef695f066 fix call-with-atomic-output-file for pathless filename
Closes #1156
2015-12-03 08:05:17 -07:00
Matthew Flatt
345b1a8187 refine the Guide section in incremental GC 2015-12-01 17:47:29 -07:00
Phil Nguyen
734563a7f4 remove duplicate examples in doc for arity=? and arity-includes? 2015-11-30 10:40:06 -06:00
Matthew Flatt
a389678556 improve interaction of incremental mode and finalization
Really, just improve when majors GCs are forced to trigger
further finalizations. This improvement makes `(collect-garbage)`
followed by `(collect-garbage 'incremental)` move more
reliably into incremental mode.
2015-11-28 15:54:45 -07:00
Matthew Flatt
c9e9b4e400 add info on incremental GC mode to the Guide 2015-11-28 11:55:43 -07:00
Matthew Flatt
ba8103bbde add PLT_INCREMENTAL_GC
Although calling `(collect-garbage 'incremental)` in a program with
a periodic task is the best way to request incremental collection, it's
handy for some experiments to have an environment variable that turns
it on permanently.

This change also makes incremental-mode minor collections log as "mIn"
instead of "min", and it changes the first field of the logged
`gc-info` structure to be a mode symbol instead of a boolean.
2015-11-27 08:02:18 -07:00
Ambrose Bonnaire-Sergeant
37c2558475 Fix documentation typo 2015-11-26 08:26:33 -06:00
Robby Findler
fcfa969b4a add some examples to impersonate-procedure 2015-11-23 09:02:41 -06:00
Jay McCarthy
ad53983276 fix history annotations 2015-11-23 08:41:13 -05:00
zsh_89
5691b5a344 Add a link to a Macro tutorial written by Greg Hendershott which helps new learners understand Racket macro better. 2015-11-22 06:51:14 -07:00
Matthew Flatt
8e46e46d40 add more support for continuation marks in procedure impersonators
Allow a more dynamic (than `impersonator-prop:application-mark`)
determination of continuation marks and associated values to wrap the
call of an impersonated procedure.
2015-11-20 10:20:02 -07:00
Jay McCarthy
551e4d5a0d Adding documentation for new parameters and updating inside/params with other defs near my changes 2015-11-20 10:17:36 -05:00
Matthew Flatt
0e16ce4bea add internal-definition-context-{binding-identifier,track}
When an internal-definition context is used with `local-expand`, the
any binding added to the context affect expansion, but the binding do
not appear in the expansion. As a result, Check Syntax was unable to
draw an arrow from the `s` use to its binding in

 (class object%
   (define-struct s ())
   s)

The general solution is to add the internal-definition context's
bindings to the expansion as a 'disappeared-bindings property. The new
`internal-definitionc-context-track` function does that using a new
`internal-definition-context-binding-identifier` primitive.
2015-11-15 06:17:22 -07:00
Matthew Flatt
fb1432e70e declare and document scheme_set_dll_path() for Windows embedding 2015-11-13 06:49:07 -07:00
Robby Findler
023e2de5be Go back to using the nicer unicode picture of the directory
now that Matthew added support for those characters to Scribble

This reverts commit db464d5ed2.
This reverts commit dd5029947c.
2015-11-08 19:43:02 -06:00
Robby Findler
a8f748abeb clarify some invariants of make-contract and friends 2015-11-08 15:41:03 -06:00
Robby Findler
db464d5ed2 make a little more space and stop decoding
(improvements to dd50299)
2015-11-08 07:57:04 -06:00
Robby Findler
dd5029947c use latex-friendly characters 2015-11-08 06:42:01 -06:00
Robby Findler
71690384a4 add first-or/c 2015-11-07 19:55:20 -06:00
Stephen Chang
83c4a2a19c typo in doc for make-syntax-delta-introducer
I'm not sure about the _m-id_ part but I think this is what the docs are trying to say.
2015-11-07 08:57:32 -07:00
Matthew Flatt
b5224743b8 refine in-directory example
Extend Juan's nice example to show simpler modes, too.
2015-11-07 08:56:05 -07:00
Juan M Uys
348cd7976f provide example for in-directory 2015-11-07 08:40:45 -07:00
Phil Nguyen
66f89cb6f6 fix documented contract ranges of set-subtract! and set-symmetric-difference! 2015-11-07 08:39:48 -07:00
Sam Tobin-Hochstadt
f126fd2356 Revert "change or/c so that it takes the first ho projection"
This reverts commit 5a33856802.

Merge to 6.3.
2015-11-06 14:25:41 -05:00
Juan Francisco Cantero Hurtado
5e2421b1a0 Doc: github.com/plt -> github.com/racket 2015-11-06 10:26:07 -06:00
Matthew Flatt
585f14744e ffi/unsafe/com: repair for safe arrays, and add com-omit?
Repair provided by Antonio Menezes Leitao.
2015-11-04 16:51:09 -07:00
Phil Nguyen
42e5d9f5cf fix typo in documented contracts for extfl->exact and extfl->inexact 2015-11-04 13:30:56 -06:00
Matthew Flatt
5a8d2e4204 fix bugs in the reader, especially related to readtables
Closes #1118, but improved testing exposed many other bugs.
2015-11-04 08:51:03 -07:00
Matthew Flatt
0edd781928 use "_LOCK" prefix for Windows cross-build
Use "_LOCK" instead of ".LOCK" when the cross
platform is Windows, not just when the current
platform is Windows.

Merge to v6.3
2015-10-28 17:44:26 -04:00
Spencer Florence
8f681cec7a fixed minor docs typo 2015-10-28 09:18:05 -04:00
Stephen Chang
c868c7b68d doc typos 2015-10-27 16:11:15 -04:00
Alex Knauth
67e3899272 Allow separate read and write contracts for box/c 2015-10-24 14:16:49 -05:00
Matthew Flatt
2e3ff0332d improve docs on make-weak-hash
Note that values are held normally and ephemerons can help.
2015-10-22 09:40:37 -06:00
Matthew Flatt
62f089756c fix doc typo 2015-10-21 15:16:56 -06:00
Matthew Flatt
ea6cef5246 Windows: make scheme_register_tls_space() always available
To make the API consistent for MSVC versus MinGW builds, make
a functional formerly required for embedding on 32-bit Windows
always available and required for all Windows variants.
2015-10-20 20:22:22 -06:00
Phil Nguyen
056ec806d5 fix ranges of set-union!, set-intersect!, dict-clear! to be void? in doc 2015-10-19 08:08:22 -06:00
Matthew Flatt
c50c23c134 GC: toward incremental collection
Make the old-generation marking process incremental
on request, where `(collect-garbage 'incremental)`
makes a request.

Only the marking phase of an old-generation collection
is incremental, so far. In exchange for slower
minor collections and a larger heap, you get a major
collection pause time that is roughly halved. So, this
is a step forward, but not good enough for most purposes
that need incremental collection.

An incremental-mode request sticks until the next
major GC. The idea is that any program that could
benefit from incremental collection will have
some sort of periodic task where it can naturally
request incremental mode. (In particular, that
request belongs in the program, not in some external
flag to the runtime system.) Otherwise, the
system should revert to non-incremental mode, given
that incremental mode is slower overall and can
use much more memory --- usually within a factor of
two, but the factor can be much worse due to
fragmentation.
2015-10-16 21:08:23 -06:00
Vincent St-Amour
9fe486b9e0 Add missing history annotations.
Please merge to 6.3.
2015-10-12 14:43:19 -05:00
Vincent St-Amour
270bbccf6b Fix history annotations to refer to 6.3.
Please merge to 6.3.
2015-10-12 13:49:55 -05:00
Matthew Flatt
6c0ffe1ba2 add missing history
Merge to v6.3
2015-10-11 07:44:55 -06:00
Paolo G. Giarrusso
a2b213ad1b Fix typos 2015-10-08 19:03:36 -06:00
Stefan
d988055a49 added crypto-random-bytes 2015-10-05 12:00:01 -06:00
Asumu Takikawa
a729c028a6 Add racket/os library.
For now this just contains two functions from mzlib/os.
2015-10-05 11:59:38 -06:00
Gustavo Massaccesi
09a2b630bc Generalize inferred names
After some expansions, a expression with the syntax property 'inferred-name of
'x is converted to one with ('x . 'x), so it's not useful to get the name of a
procedure. So we simplify the syntax property 'inferred-name to handle
these cases.
2015-10-05 10:25:57 -06:00
Robby Findler
2516374744 account for the added caveat line in the example error message dissection
Thanks to Paolo G. Giarrusso for spotting this and proposing a fix
2015-10-03 09:43:51 -05:00
Matthew Flatt
acac7092c5 doc tweak 2015-10-01 21:30:46 -06:00
Robby Findler
5a33856802 change or/c so that it takes the first ho projection
whose first-order predicate accepts a value, instead
of requiring that there be exactly one
2015-09-22 09:05:34 -05:00
Matthew Flatt
1a48418844 infrastructure for raco ctool --c-mods <dest> --runtime <dir>
Make the runtime-file gatherer, which is normally used by `raco exec`,
work also for modules prepared for an executable that embeds Racket.
2015-09-18 18:55:22 -06:00
Vincent St-Amour
4522d2167a Merge docs for new string functions. 2015-09-16 13:05:42 -05:00
ben
85e5db38fb renamed string-startswith/endswith to string-prefix/suffix 2015-09-16 13:05:40 -05:00
ben
22cda63200 add string-startswith? and string-endswith? 2015-09-16 10:33:53 -05:00
Matthew Flatt
3d69846046 GC: fuse mark and fixup passes, usually
In the common case of a minor GC without a generation 1/2
or a major GC without compaction, a single pass suffices
to both mark and update references.

This change reduces overall GC time by 10%-25% on typical
programs.
2015-09-15 15:16:11 -06:00
Vincent St-Amour
d1ad70b7a0 Remove mention of unstable. 2015-09-14 16:23:57 -05:00
Benjamin Greenman
dedde2cd60 typo: construct -> contract 2015-09-13 15:36:19 -05:00
Matthew Flatt
5401c5d179 racket/sandbox docs: clarify that collection modules are accessible 2015-09-12 13:21:04 -06:00
Matthew Flatt
81ee1b39c7 change the (relatively new) argument to collect-garbage
Make the argument a symbol, 'major or 'minor, instead
of a boolean, because that allows further extension.
2015-09-11 12:07:35 -06:00
Asumu Takikawa
4c2a32d293 Document inspector of #f for make-struct-type 2015-09-10 15:36:22 -04:00
Vincent St-Amour
965fa8e34c Start using failure-result/c in docs.
Not exhaustive, just what I could think of.
2015-09-08 17:11:26 -05:00
Vincent St-Amour
e358c49573 Add rename-contract, if/c and failure-result/c from unstable/contract. 2015-09-08 17:11:26 -05:00
Vincent St-Amour
147baa63f7 Add port-number? and listen-port-number? to racket/tcp.
From `unstable/contract`.
2015-09-08 17:11:26 -05:00
Vincent St-Amour
dc11eede98 Add links to docs. 2015-09-08 17:11:26 -05:00
Vincent St-Amour
5f43b3a913 Move non-empty-string? to racket/string.
From `unstable/contract`.
2015-09-08 17:11:26 -05:00
Asumu Takikawa
33bb5e9060 Make prop:rename-transformer accept a procedure
Allows the choice of target identifier to be delayed
until expansion time, rather than fixed at the point of
the transformer definition.
2015-09-08 13:29:13 -04:00
Vincent St-Amour
d705e928ac Add a mode argument to pretty-format.
... which controls whether it uses `print`, `write` or `display`.

Obsoletes most of `unstable/pretty`.
2015-09-07 15:46:58 -05:00
Matthew Flatt
3963f30070 document new configure-runtime behavior of raco test 2015-09-07 11:58:41 -06:00
Brian Lachance
e0f2d9c0d6 Fix make-contract example to show the correct contract violation
There was a duplicate quote around `given:' which caused a violation in
make-contract's internals.
2015-09-07 11:58:13 -05:00
Matthew Flatt
e1333d0616 fix compilation-top contract in docs
The associated change in the "zo-lib" package fixes #1038.
2015-09-07 08:28:52 -06:00
Matthew Flatt
c1ef6b999d fix documentation's contract for syntax-track-origin 2015-09-07 07:48:43 -06:00
Matthew Flatt
06841bbaff doc typo and clarification 2015-09-05 17:59:19 -06:00
Matthew Flatt
16c198805b prevent compile from binding in the current namespace
When `compile` is used on a top-level definition, do not
create a binding in the current namespace, but arrange for
a suitable binding to be in place for the target namespace.

Closes #1036
2015-09-05 10:58:44 -06:00
Matthew Flatt
24592f78fc ffi/unsafe/objc: add support for blocks
Also add some functions for manipualting classes and objects.
2015-09-04 08:31:52 -06:00
Matthew Flatt
efe056f18d update documentation for preserved syntax-object source locations 2015-09-02 18:21:38 -06:00
Matthew Flatt
929db29b67 add prop:expansion-contexts
The `prop:expansion-contexts` property can control the expansion
of a rename transformer in much the same that conditionals on
`(syntax-local-context)` can control the expansion of other
transformers.
2015-09-01 13:55:35 -06:00
Robby Findler
13964c4141 add and use late-neg projections to the contract system
These avoid one layer of currying and are more efficient, getting
about a 1.3x speed up on this program:

 #lang racket/base
(module server racket/base
  (require racket/contract/base)
  (provide
   (contract-out
    [f (-> integer? boolean? char? void?)]))
  (define (f i b c) (void)))

(require (submod "." server))

(time
  (for ([x (in-range 10000000)])
    (f 1 #t #\x)))
2015-08-31 20:48:03 -05:00
Matthew Flatt
0e4d9a68af fix executable creation for cross-installation 2015-08-29 20:54:27 -06:00
Matthew Flatt
29784bda8e add cross-system-type and cross-system-library-subpath
Adjust installation tools to support cross-installation (i.e.,
installation for a platform other than the current one) as triggered
by "system.rktd" in "lib" having different information than the
running Racket executable.
2015-08-27 12:01:31 -06:00
Matthew Flatt
3d452fdba6 raco exe: make Windows exes as proper PE32 images
Instead of simply tacking bytecode onto the end of an executable,
generate a proper PE32 image.
2015-08-24 17:12:11 -06:00
Matthew Flatt
96292cdf27 raco exe --ico: replace icon set wholesale
Use exactly the icons in the given icon file for the executable,
instead of coercing to the sizes and depths already in the executable.
2015-08-24 15:08:21 -06:00
Leif Andersen
c0dac75b7d Fix typo in zo structs documentation:
Which -> When
2015-08-24 12:19:57 -04:00
Matthew Flatt
66df8a2b9f document raco test conversion to get-module-suffixes 2015-08-22 09:48:46 -06:00
Matthew Flatt
a135c78baf add module-suffixes and doc-module-suffixes to "info.rkt"
A `module-suffixes` entry in a collection's "info.rkt" adds a
file suffix that is meant to be recognized globally (i.e., in
all collections) by all Racket tools.

The new fields are reported by `compiler/module-suffix` library, which
is (so far) used by `raco setup`.

Note that if package A includes files with a suffix that is registered
by package B, then A should have a dependency on B, but `raco setup`
cannot currently detect that such a dependency is needed. That
dependency is likely to happen, anyway, since package A is likely
using libraries form package B.
2015-08-22 09:36:19 -06:00
Matthew Flatt
f63220682b add support for compile-include-files as an "info.rkt" field
The `compile-include-files` entry lists additional files to be
compiled (when their extensions do not trigger compilation).
2015-08-22 07:41:49 -06:00
Vincent St-Amour
e5a024b02e Move struct->list docs from unstable docs. 2015-08-19 15:07:25 -05:00
Vincent St-Amour
13b6a98de6 Move docs for make-constructor-style-printer from unstable docs. 2015-08-19 15:07:25 -05:00
Matthew Flatt
80aac79507 change place to create a submodule
When `place` expands, the body of the `place` form is placed into a
`(module* place-body-<n> #f ....)` submodule.

The `place` form previously placed its body in a lifted function,
where the function's exported name was based on
`(current-inexact-milliseconds)`. The generated submodules have
deterministic names, so that compilation is deterministic, and
submodule names don't collide (unlike exported function names) when
multiple `place`-using module are imported into some other module.
Also, using a submodule avoids the problem that the clock doesn't
change fast enough on Windows.
2015-08-14 17:55:47 -06:00
Matthew Flatt
0caf079637 add syntax-local-lift-module 2015-08-14 16:52:56 -06:00
Matthew Flatt
cfa1d39166 add compiler/exe-dylib-path
Provide a clean interface to a private library for updating
dynamic-library paths in Mac executables.
2015-08-13 17:06:55 -06:00
Matthew Flatt
15eadbb868 copy-directory/files: add #:preserve-links? argument 2015-08-13 15:13:46 -06:00
Matthew Flatt
33cf716835 include phantom bytes consistently in memory-use reports 2015-08-13 15:13:46 -06:00
Vincent St-Amour
c50eeeecc9 Fix history annotations.
Version changed while the PR was up.
2015-08-13 14:43:57 -05:00
Vincent St-Amour
033d5afb19 Revert adding in-pairs to racket/sequence.
`in-dict` is more general, and `for` loops optimize it already.
2015-08-13 14:43:57 -05:00
Vincent St-Amour
52425fbb27 Add history notes. 2015-08-13 14:43:57 -05:00
Vincent St-Amour
63b1f0f4aa Improve docs for the new bits of racket/sequence. 2015-08-13 14:43:56 -05:00
Vincent St-Amour
f4f75f2740 Move docs for part of unstable/sequence to the racket/sequence docs. 2015-08-13 14:43:56 -05:00
Vincent St-Amour
2d23ca1414 Make doc section title more accurate. 2015-08-13 14:43:56 -05:00
Matthew Flatt
7741b4b361 local-expand: fix argument checking
Also, fix contract in the docs, since the first argument is allowed to
be an S-expression.
2015-08-13 11:48:20 -06:00
Matthew Flatt
86ee9c5071 signature-members: adjust element ids based on reference
Make the resulting content ids compatible with binding and reference
at a use site, as needed for the new macro expander.
2015-08-13 10:44:26 -06:00
Asumu Takikawa
a970f9bf6e Fix a few cases of "it's" instead of "its" in docs 2015-08-11 21:29:22 -04:00
Daniel Feltey
b16f0b24b7 Improvements to unit/c contracts in preparation for unit support in typed/racket
Changes:

 - Allow unit contracts to import and export the same signature.
 - Add "invoke" contracts that will wrap the result of invoking a unit contract,
   no wrapping occurs when a body contract is not specified
 - Improve error messages
 - Support for init-depend clauses in unit contracts.
 - Fix documentation to refelct the above
 - Overhaul of unit related tests

Handling init-depend clauses in unit contracts is a rather large and somewhat
non-backwards-compatible change to unit contracts. Unit contracts must now
specify at least as many initialization dependencies as the unit value being
contracted, but may include more. These new dependencies are now actually
specified in the unit wrapper so that they will be checked by compound-unit
expressions.

This commit also adds more information to the first-order-check
error messages. If a unit imports tagged signatures, previously the errror
message did not specify which tag was missing from the unit contract. Now
the tag is printed along with the signature name.

Documentation has been edited to reflect the changes to unit/c contracts
made by this commit.

Additionally this commit overhauls all tests for units and unit contracts.
Test cases now actually check that expected error messages are triggered when
checking contract, syntax, and runtime errors. Test forms now expand into uses
of rackunit's check-exn form so only test failures are reported and all tests in
a file are run on every run of the test file.
2015-08-11 16:30:39 -05:00
边城
6fe8f635e4 update packges sources
Add Racket package manager to package sources
2015-08-11 08:06:34 -06:00
Georges Dupéron
666da0b215 In the docs for normal-case-path, replaced “letter” with “character”, to avoid possible confusion with drive letters. 2015-08-11 07:59:23 -06:00
Georges Dupéron
22bf10e564 Fixed typo in the docs for normal-case-path. 2015-08-11 07:59:23 -06:00
Blake Johnson
fbe8537f18 add compiled-expression-recompile
Uses an unresolver pass, which is expanded to work on more programs.
2015-08-10 16:39:43 -06:00
Vincent St-Amour
d66da8ff3b Fix argument order in guide.
Closes PR15131.
2015-08-10 11:56:33 -05:00
Asumu Takikawa
9f682a3f11 Add prefab structs to match grammar 2015-08-07 20:11:52 -04:00
Matthew Flatt
2661d46929 toward deterministic bytecode generation
Progress toward making the bytecode compiler deterministic, so that a
fresh `make base` always produces exactly the same bytecode from the
same sources. Most changes involve avoiding hash-table order
dependencies and adjusting scope identity. The namespace used to load
a reader extension is also better defined. Plus many other little
changes.

The identity of a scope that is unmarshaled from a bytecode file now
incorporates the hash of the file, and the relative order of scopes is
preserved in a bytecode file. This combination allows compilation to
start with modules that loaded and compiled in different orders
(including delayed loading of bytecode fragments within one file).

Formerly, a reader extension triggered by `#lang` or `#reader` was
loaded in whatever namespace happens to be current. That's
unpredictable and can pollute a module build at the level of bytecode.
To help make builds deterministic, reader extensions are now loaded in
a root namespace of the current namespace.

Deterministic compilation in general relies on deterministic macros.
The two most common ways for a macro to be non-deterministic are by
using `gensym` (use `generate-temporaries`, instead) and by using an
unsorted hash-table traversal (don't do that).

At this point, bytecode generation is unlikely to be completely
deterministic, since I uncovered non-determinism mostly by iterating
attempts over the base collections. For now, the intent is not to
provide guarantees outside of the compilation of the base collections
--- but "more deterministic" is likely to be useful in the short run,
and we can improve further in the long run.
2015-08-07 15:48:39 -06:00
Matthew Flatt
6bcb449b55 fix impersonator-property:application-mark propagation
Propagate the mark value only if it's on the current continuation
frame, as originally intended. Adjust the docs to clarify.
2015-08-07 05:30:25 -06:00
Matthew Flatt
27fed2b1ed document compiler/zo-struct changes for new bytecode form 2015-08-07 05:30:25 -06:00
Vincent St-Amour
cdea0da566 Fix package name. 2015-07-30 16:26:56 -05:00
Benjamin Greenman
7259a2c76c typo: add supertype to provided zo struct
Changed doc to match `zo-structs.rkt`
2015-07-30 14:58:57 -06:00
Matthew Flatt
545c14a9cf adjust some versions in history notes
Promote v6.2.0.x changes to v6.3, since they will not be in v6.2.1.
2015-07-30 14:49:31 -06:00
Matthew Flatt
7b4d25c657 add missing history note on stream* 2015-07-30 14:45:29 -06:00
Matthew Flatt
3dc1dc80e3 add setup/collection-search 2015-07-30 14:12:04 -06:00
Jay McCarthy
2602ff530d Adding no major collection guarantee to collect-garbage minor collections 2015-07-30 11:42:13 -06:00
Jay McCarthy
2f22f86c0a Adding minor collections to collect-garbage 2015-07-30 11:42:13 -06:00
Matthew Flatt
99f29ce8ee repair for nexted splicing forms that define the same name
Nested splicing forms would lead to an "ambigious binding" error
when the nested forms bind the same name, such as in

 (splicing-let ([a 1])
   (splicing-let ([a 2])
     (define x a)))

The problem is that splicing is implemented by adding a scope to
everything in the form's body, but removing it back off the
identifiers of a definition (so the `x` above ends up with no new
scopes). Meanwhile, a splicing form expands to a set of definitions,
where the locally bound identifier keeps the extra scope (unlike
definitions from the body). A local identifier for a nested splicing
form would then keep the inner scope but lose the outer scope, while
a local identifier from the outer splicing form would keep the outer
scope but no have the inner one --- leading to ambiguity.

The solution in this commit is to annotate a local identifier for a
splicing form with a property that says "intended to be local", so the
nested definition will keep the scope for the outer splicing form as
well as the inner one. It's not clear that this is the right approach,
but it's the best idea I have for now.
2015-07-29 06:11:13 -06:00
Benjamin Greenman
0c3b524de8 typo: prefix struct field name
Change `inspector-desc` to `src-inspector-desc`
2015-07-28 15:45:01 -06:00
Vincent St-Amour
496cd97351 Rename open-place to place/context. 2015-07-28 16:14:29 -05:00
Jay McCarthy
cc1c989942 clarify text 2015-07-28 14:26:36 -06:00
Jay McCarthy
840f11d884 Add test-include-paths and allow test-omit-paths to use regexps 2015-07-28 14:19:49 -06:00
Benjamin Greenman
11ccb7c530 typo: ARepresents -> Represents
In description for `decoded-module-binding`
2015-07-28 11:42:33 -05:00
Vincent St-Amour
a75b2292af Fix docs for racket/logging to be consistent with make-log-receiver's. 2015-07-28 11:26:09 -05:00
Asumu Takikawa
75e19c9435 Fix docs for syntax-debug-info 2015-07-27 17:16:57 -04:00
Alex Knauth
595925e436 fix doc typos 2015-07-27 10:47:53 -06:00
Brian Lachance
3c98fc54aa Fix bugs/typos in docs for contracts and quote-syntax
1st is a small grammatical mistake
2nd is in a section about ->* yet mistakenly -> is referred to
3rd is about recontract-out yet contract-out is mentioned instead
4th clarifies return value for value-contract
5th replaces free-identifier? with free-identifier=?
2015-07-27 10:47:06 -06:00
Matthew Flatt
9593b4c806 make-syntax-introducer: add optional argument to change kind of scope
Genereating a use-site scope, instead of a macro-introduction scope,
prevents the scope's presense from triggering a #f result from
`syntax-original?`.
2015-07-25 14:37:54 -06:00
Vincent St-Amour
0f2d02cdd2 Move part of unstable/logging to racket/logging.
... and improve and extend its interface at the same time.
2015-07-23 12:22:51 -05:00