Commit Graph

42958 Commits

Author SHA1 Message Date
Matthew Flatt
5fe6de4ea9 repair to unix-signal test 2021-02-11 17:32:09 -07:00
Matthew Flatt
eba9be1b39 cooperate with nohup
If SIGHUP is initially ignored, don't set a SIGHUP handler.
2021-02-11 15:27:29 -07:00
Matthew Flatt
27c7f45937 guide: fix broken sentence
Closes #3673
2021-02-11 15:27:29 -07:00
Matthew Flatt
350264571d reference: better info on random-number generator state space 2021-02-11 15:27:29 -07:00
Matthew Flatt
2cbaeb7865 Unix: restore all signal handlers after creating a subprocess fork
For each signal handler that is changed, save its state, and restore
the state in a child process after a `fork` and before an `execve`.
Also save and restore the signal mask.

This change requires cooperation from various subsystems, which often
takes the form of a callback registered with the subsystem to be
called before adjusts a signal handler.

Closes #3609
2021-02-11 15:27:29 -07:00
Matthias Felleisen
2ca6f7a5d6 fixes docs, closes #3682 2021-02-11 16:31:48 -05:00
Anish Athalye
c07e9cde09 Improve errors for forbidden ops on weak sets
Forbidden set operations on weak sets produced slightly confusing error
messages:

    > (define s (weak-set))
    > (set-add s 42)
    ; set-add:
    ; expected: (not/c set-mutable?)
    ; given mutable set: (weak-set)
    ; argument position: 1st
    > (set-mutable? s)
    #f

Invoking an operation that required an immutable set gave a message
saying that a `(not/c set-mutable?)` was expected, but a `weak-set` is
not recognized by `set-mutable?`, which only recognizes mutable sets
with strongly-held keys. Changing `set-mutable?` to recognize weak sets
seems undesirable.

This patch changes the error message so that the above example produces
the following error:

    > (define s (weak-set))
    > (set-add s 42)
    ; set-add:
    ; expected: (not/c (or/c set-mutable? set-weak?))
    ; given mutable set: (weak-set)
    ; argument position: 1st
2021-02-11 12:41:46 -05:00
Matthew Flatt
0137c1c545 Chez Scheme: repair expected-error log 2021-02-10 07:55:23 -07:00
Bogdan Popa
f3793bb4d7 xexpr: micro-optimize xexpr-write
This improves write performance by between 15% and 40% on large xexprs.
2021-02-10 09:09:39 -05:00
Matthew Flatt
9f6f988150 Chez Schme: change struct predicate implementation
Instead of keeping a rectord type's ancestry in a vector ordered from
subtype to supertype, keep the vector the other way around, and
include a record type at the end of its own vector. This order makes a
more direct test possible when checking for a known record type,
especially one without a supertype, and it's generally easier to
reason about.

The revised compilation of record predicates trades some speed in one
case for smaller generated code and speed in other cases. The case
that becomes slower is when a predicate succeeds because the record is
an immediate instance of the record type. The cases that go faster are
when a predicate fails for a non-instance record or when a predicate
succeeds for a non-immediate instance. It's possible that an
immediate-instance shortcut is worthwhile on the grounds that it's a
common case for a predicate used as contract, but we opt for simpler
and less code for now, because the difference is small.

Also, add `record-instance?`, which in unsafe mode can skip the check
that its first argument is a record, and cptypes can substitute
`record-instance?` for `record?` in some cases. This change was worked
out independently and earlier by @yjqww6, especially the cptypes part.

Related to #3679
2021-02-10 06:53:53 -07:00
Matthew Flatt
3a49533ff5 fix accidental change 2021-02-07 13:45:54 -07:00
Matthew Flatt
8a08704012 cs: support Android on 32-bit and 64-bit ARM
Various configure and makefile improvements apply more broadly to
environments that, say, lack iconv or target 32-bit ARM without Thumb.
2021-02-07 10:49:25 -07:00
Matthew Flatt
342bd6645c update cross-build info for Racket CS 2021-02-07 07:09:08 -07:00
Matthew Flatt
d07d256f18 racket/src/configure: correct default when CS and BC are both enabled 2021-02-06 10:51:24 -07:00
Sorawee Porncharoenwase
965c941caa doc: change define-struct to struct whenever possible
As documented, `define-struct` "is provided for backwards compatibility;
struct is preferred". This PR changes uses of `define-struct` to
`struct` whenever possible in the docs.
2021-02-05 15:22:51 -07:00
Ben Greenman
5948655911
typo: "its" -> "it" 2021-02-05 11:15:49 -05:00
Matthew Flatt
41623f3027 Chez Scheme: move write-barrier fixnum guard outside write fence
On an Apple M1, an example like

      (let ([v (make-vector 1000000)])
        (for* ([_ (in-range 100)]
               [i (in-range 1000000)])
          (vector-set! v i (+ 1 i))))

would generate tightly interleaved fence and store operations, which
seems to make the processor unhappy so that the code run 40x slower
than it should.

A key part of the example is that `(+ 1 i)` defeats cp0-level
inference that the result will be a fixnum. A dynamic fixnum test
avoids adding the update to a remembered set as part of the write
barrier, but the memory fence needed for ARM must be before the store,
while the fixnum test was after the store. This change bundles the
write fence and remember-set update under a `fixnum?` guard, so they
happen to gether or not at all --- at the small cost of generating the
store instruction(s) in two branches. In the example above, neither
the fence nor remember-set update happen, but changing `(+ 1 i)` to
`(quote x)` triggers both, and performance is still ok.
2021-02-03 10:30:24 -07:00
Matthew Flatt
0a945cd5f7 fix continuation-marks on thread without prompt
Closes #3675
2021-02-03 07:14:07 -07:00
yjqww6
5c6d7a3934
ChezScheme: use types to eliminate some dirty stores 2021-02-03 06:16:16 -07:00
Matthew Flatt
f968945e26 cs & schemify: with-continuation-mark optimization
Remove a `with-continuation-mark` that is redundant because its both
is another `with-continuation-mark` with the same key. That's useful
for reducing a pattern that appears after some `if`-removing
optimizations on code with errortrace-generated annotations.
2021-02-01 09:05:56 -07:00
Matthew Flatt
fd642d2715 test to check that callbacks are in atomic mode 2021-02-01 09:05:56 -07:00
Matthew Flatt
53b3cc5eb4 makefile: make just nmake make
Use a comment trick to make `nmake` see a different default target
than `make`, which will save a small amount of hassle from forgetting
to type `nmake win`.
2021-02-01 09:05:56 -07:00
Ryan Culpepper
ee43d982e4 db: fix for disconnect during query in OS thread
This change allows a query that is run in an OS thread to succeed even
when the connection is custodian-disconnected. Previously, the part in
the OS thread would complete, and then the operations needed to
package the result would fail. This fix moves some of those operations
to the OS thread and makes read-tx-status work when disconnected.
2021-01-31 07:13:03 +01:00
John Clements
a5b14d74b7
typos (#3668)
* typos

* reorder and reword raco exe flags for CS/BC

Suggestsions from @sorawee, thanks!

* make two suggested edits, retract one
2021-01-30 13:27:27 -08:00
Matthew Flatt
936ac2bf75 docs: update BC and CS references
Replace "3m and/or CGC" with "BC", use "implementation" instead of
"variant", add a section on implementations to the reference,
update corners where the documentation suggests that BC/3m is the
default, and generally order CS first.
2021-01-30 10:53:07 -07:00
Sam Tobin-Hochstadt
32d3c8b607 Describe Racket CS as the default.
Relevant to #3663.
2021-01-30 08:16:49 -07:00
Sorawee Porncharoenwase
0101f584fb struct*: fix incorrect struct-info extraction
Also add tests for `struct-copy` and `struct*` for cases
where struct-field-info is not available

Fixes #3662
2021-01-30 08:16:11 -07:00
Ryan Culpepper
c9861931ad db: use ffi/unsafe/os-async-channel
Also:
- use one OS thread per connection instead of one per query
- when using OS thread, finish disconnect in OS thread
2021-01-30 08:54:40 +01:00
Matthew Flatt
4e76091c64 add ffi/unsafe/os-async-channel 2021-01-29 12:54:23 -07:00
Matthew Flatt
24f539087f ffi/unsafe/schedler: add unsafe-make-signal-received 2021-01-29 11:09:22 -07:00
Matthew Flatt
f685a27b41 cs & thread: add missing check on thread-suspend
Also, fix non-atomic check for shut-down custodian in `thread-resume`.

Closes #3660
2021-01-29 07:05:58 -07:00
Matthew Flatt
b55f268510 cs: fix list-{ref,tail} error messages
Closes #3661
2021-01-29 07:05:47 -07:00
shuhung
a7fef69f33
cs: print extra ellipses if the context is truncated 2021-01-29 05:36:43 -07:00
Matthew Flatt
1fea5f8e3f cs: don't display via prop:exn:srclocs when context length is 0
It's not clear that supressing source locations with the context
length is set to 0 is the right choie, but it's consistent with BC.
2021-01-27 14:47:58 -07:00
Gustavo Massaccesi
0ff8d18be5 cs: reimplement the predicate lattice in cptypes
Clean up the implementation. For example predicate-union was
calling predicate-implies? like 20 times. With the new
implementation this can be done in a single pass.

Also, this changes the results of the functions for 'bottom and
#f so they behave like sets. So this removes some special cases
and makes the functions more consistent.
2021-01-27 15:47:35 -03:00
Ryan Culpepper
ad6bbe9809 db: add option to run query in separate OS thread 2021-01-27 14:58:18 +01:00
Matthew Flatt
e110b07cc8 racket/fasl: use current-directory for relative-path unmarshaling
Relative-path handling for `fasl->s-exp` was meant to be like code
unmarshaling, but it did not fall back to `(current-directory)` when
`(current-load-relative-directory)` is #f. There's some risk to
changing the behavior of `fasl->s-exp`, but better matching the intent
seems at least as likely to fix problems as create them. One problem
it fixes is in CS code marshaling.

Closes racket/drracket#421 (again)
2021-01-26 11:29:43 -07:00
Matthew Flatt
91060487ca sync pre-built files
Needed a rebuild after changes to avoid naming via keyword arguments.
2021-01-26 11:29:43 -07:00
Matthew Flatt
18954fdc70 Chez Scheme: fix compilation problems for MinGW 2021-01-26 05:59:03 -07:00
Alexis King
c54ab626f7 Ensure block does not evaluate define-syntaxes RHSs multiple times
As described in #3635, there isn’t currently any good way to use
first-class definition contexts without evaluating define-syntaxes RHSs
multiple times. For macros like `class` and `unit`, it’s unclear if that
can be avoided, but for `block`, the first-class definition context
turns out to not be necessary.

This commit changes the implementation strategy used by `block` to a
trampolining macro rather than a first-class definition context. This
has the nice side-effect of avoiding the issue described in #3198, too.
2021-01-25 15:51:53 -06:00
ymdarake
e4a4bdf52a [doc]Fix typo, removing trailing whitespaces 2021-01-25 15:30:16 -05:00
shhyou
7894e97fd2 Stop keyworded functions from changing args' name 2021-01-25 06:55:31 -07:00
Sergiu Ivanov
225aa54453 hashes.scrbl, hash-intersect: Fix the contract on h0. 2021-01-25 06:52:51 -07:00
yjqww6
ef165fedda cs: add pariah for slow path of define-inline 2021-01-25 06:52:10 -07:00
Bogdan Popa
dcb7257d3f cs,alloc: close off sweep_next chain along with thread local segment 2021-01-25 06:51:18 -07:00
Matthew Flatt
87bf20c581 Windows: turn on string pooling for CS executables
Visual Studio 2015 duplicates the "Replace me for EXE hack" string in
the GRacket executable, which breaks the hack. Adding the /GF compiler
flag counteracts that duplication, and it's consistent with
`<StringPooling>true</StringPooling>` in the BC projects.
2021-01-23 16:04:40 -07:00
Matthew Flatt
442d7d2d00 Chez Scheme: repair for reify-cc register saving on arm32
This repair is simpler approach than the original, and it makes the
manual register allocation a little less fragile.
2021-01-23 10:46:01 -07:00
Matthew Flatt
00ce8904c7 repair prop:exn:srcloc handling
For CS, the default error display handler was not using `prop:exn:srcloc`.

For BC, a bad `prop:exn:srcloc` that returned a value other than a
list of srclocs coudl cause a crash.

Related to #3645
2021-01-23 09:33:48 -07:00
Matthew Flatt
984d2947a4 doc: fix contract for read-string! and related
Closes #3641
2021-01-23 08:04:28 -07:00
Bogdan Popa
3baed0966d build: fix make install for cross builds
W/o this change, some targets (like `copytree-run`) fail because they
try to run the target Racket executable instead of the host.
2021-01-23 06:42:00 -07:00