Commit Graph

40920 Commits

Author SHA1 Message Date
Matthew Flatt
ea2d1571a8 Adjust README.md to point to {download,docs}.racket-lang.org
As suggested by Sam.
2019-10-16 05:34:09 -06:00
Matthew Flatt
ecf905469a normalize license file names can centralize as much as possible 2019-10-16 05:34:09 -06:00
Matthew Flatt
972788c137 replace "INSTALL.txt" with rendered Build Guide 2019-10-15 19:05:36 -06:00
Sam Tobin-Hochstadt
df5b2a1cd5 Small typos 2019-10-15 14:21:45 -04:00
Matthew Flatt
32b7b6d697 initial version of build and contributing guide
This guide is meant to replace "INSTALL.txt" and create
a long-term home for advice on contributing.
2019-10-15 10:28:50 -06:00
Sam Tobin-Hochstadt
9f87cf46b5 Make this a dot file. 2019-10-15 08:15:25 -04:00
Sam Tobin-Hochstadt
a647cea35d Minor metadata changes. 2019-10-15 08:09:32 -04:00
Matthew Flatt
6aa96ad3f7 csm thread, io: avoid termination problem
Especially avoid problems with `custodian-shutdown-all` on the main
custodian in the main thread.
2019-10-14 18:38:19 -06:00
Matthew Flatt
6e0c5e60f3 expander: fix extract dependency checking
Don't convert the recorded version number to a path.
2019-10-14 16:43:04 -06:00
Matthew Flatt
978d60e4a7 windows: adjust flush handling of file-stream output ports
Some synchronization built into `close-output-port` seems unnecessary
on modern Windows (NT and up). An extra manager thread is needed for a
anonymous pipe for "write ready?" purposes, but not to buffer output.
The Windows documentation is not entirely clear on this point, but
experiments suggest that modern anonymous pipes behave in the obvious
way.

Meanwhile, adjust the io layer used by Racket CS with the
synchronization that would be needed for Windows 95. This adjustment
is questionable, because it doesn't seem likely that we'll ever go
back that far with Racket CS. But the rktio interface to support
flushing synchronization might somehow be needed in a future setting,
or mabe it will turn out that I'm wrong about pipe buffers.
2019-10-14 16:12:06 -06:00
Matthew Flatt
81815980d7 adjust test for Windows
Adjusts a test added in 89403dc8cd.
2019-10-14 13:32:01 -06:00
Matthew Flatt
c19b944110 racket/port: fix evt constructors to work right with read errors
Propoagate read errors to the `sync` that is applied to an event,
instead of writing the events to stdout.

Related to racket/web-server#76
2019-10-14 11:52:50 -06:00
Matthew Flatt
89403dc8cd fix file-stream read/write on concurrent close
Includes repairs for both Racket CS and traditional Racket.
2019-10-14 10:53:33 -06:00
Matthew Flatt
2799713ea5 cs & io: fix pipe read/write on concurrent close 2019-10-14 10:53:33 -06:00
Ryan Culpepper
ca2eafbfc4 syntax/parse: fix ~between; closes #2856
Please merge to release branch.
2019-10-14 04:09:22 +02:00
Matthew Flatt
edfcec8211 cs: repair call-with-immediate-continuation-mark
The default-value expression could get lost, replaced with just #f.
2019-10-13 09:38:02 -06:00
Matthew Flatt
edefea7b61 skip some benchmarks as tests
These benchmarks are not interesting as tests, and some don't complete
within the default timeout. Don't bother running them.
2019-10-12 16:28:55 -06:00
Matthew Flatt
cd596e5277 cs: fix error reporting for apply on a non-list 2019-10-12 16:20:16 -06:00
Matthew Flatt
2d3b426d05 cs: rewrite more error messages
Closes #2801
2019-10-12 16:10:42 -06:00
Matthew Flatt
a85a915f88 cs: fix value formatting in car, etc., exceptions 2019-10-12 15:33:55 -06:00
Matthew Flatt
77cdfde679 cs: fix inlining of unsafe vector and box operations
Before this repair, `unsafe-vector-ref` was slower than `vector-ref`.
2019-10-12 13:39:36 -06:00
Matthew Flatt
61e39657fa cs & io: fix caching of locale converters
Fix an interaction with custodians and byte converters that are
used by `string-locale<?`, `string->bytes/locale`, etc.
2019-10-10 17:01:52 -06:00
Matthew Flatt
2338d98761 cs: fix some io demos 2019-10-10 17:01:52 -06:00
Matthew Flatt
9ce8713cdc cs: significantly improve continuation capture and application
Avoid a continuation frame and layer of thunks that was in place for
checking for breaks just after applying a continuation. Instead, we
install just the continuation marks and check for breaks before
actually jumping; the break checker can't tell the difference, since
marks are the only way for it to check the continuation. This
improvement cust about 40% of the time for simple continuation capture
and application.
2019-10-10 17:01:52 -06:00
Matthew Flatt
7f04322531 adjust ctak benchmark
The ctak benchmark had lost a `(lambda (k) ...)`, which made it a
slightly different benchamrk than it was supposed to be. There's not a
good option here; changing it is a break with past Racket
benchmarking, but leaving it broken is misleading. Since the repaired
benchmark runs about the same in traditional Racket, it seems the
lesser evil to repair the benchmark. But also increase the number of
iterations, which makes the benchmark better for Racket CS (which runs
10 titmes as fast) and will help highlight the adjustment if someone
is trying to compare.
2019-10-10 17:01:52 -06:00
Matthew Flatt
67a7a5c869 cs: streamline continuation application slightly
Avoid some allocation and indirect calls, and add a shortcut for the
case where there are no winder changes, no mark changes, etc.
2019-10-10 17:01:52 -06:00
Paulo Matos
d49b182cf4 CI Build RacketCGC and Racket3m with -Werror 2019-10-10 13:18:34 +02:00
Matthew Flatt
067dda578b cs & io: fix log receiver synchronization
A misplaced `wrap-evt` could allow the result from `sync` on
a log receiver to be an opaque event, instead of a vector.

In other cases, a differently misplaced `wrap-evt` could also cause an
internal instance of `control-state-evt` to not be unregistered
correctly.

The solution to both problems is to add a wrapper procedure to
`control-state-evt`.

Closes #2664
2019-10-09 19:46:12 -06:00
Matthew Flatt
2ad4c6f508 cs: unbreak #:in-original-place? for foreign procedures 2019-10-09 19:43:42 -06:00
Matthew Flatt
f3aae7f4fb cs & thread: simplificaton for future "sync" action 2019-10-09 15:52:34 -06:00
Matthew Flatt
7cc3345761 cs & thread: fix place + futures termination
Repair problems with asynchronous callbacks for futures and for
foreign callbacks. Asynchronous callbacks are used for future "sync"
operations, like `hash-set!`, that run must in a place's main thread
(as of commit f574583907).

Separately, synchronization to clean up future threads used a `ping?`
flag in a backwards sense, and it also treated a record as a box.
These problems could cause place termination to hang.

Related to #2725
2019-10-09 13:54:50 -06:00
Matthew Flatt
8ad13a472f cs: implement #:in-original-place? #t for foreign calls
The `math` library relies on this working right, since MPFR is
normally not compiled as thread-safe.

Also, fix some locking/interrupt/atomicity problems with async
callbacks generally.
2019-10-09 13:54:02 -06:00
Matthew Flatt
f812fd9e67 cs: fix misuse of fx>= for _int64, etc. 2019-10-09 13:54:02 -06:00
Matthew Flatt
58e8421618 cs & thread: fix sync on place channel with no writer
When `sync` or `place-channel-get` is used on a place channel whose
other end has been GCed, then the blocking thread should also be
GCable. The `sync` case didn't work because the implementation uses
`replace-evt`. Change `sync` so that it can recognize asynchronous
`replace-evt`s in the same way as semaphores and channels (which is
more than traditional Racket offers).
2019-10-09 13:54:02 -06:00
Paulo Matos
8e6087878d Build racketcs from racketcgc
Like this racketcs pipeline can start sooner since it does not
have to wait for building racket3m
2019-10-09 20:57:34 +02:00
Sam Tobin-Hochstadt
c5affe1e96
Try to fix Slack notifications. 2019-10-09 10:24:20 -04:00
Paulo Matos
b81724c38d Fix use of markdown on Gitlab CI README 2019-10-09 14:52:35 +02:00
Paulo Matos
f6d7e6fa65 Docker image files with pre-installed Racket dependencies
This should speed up building and testing jobs in Gitlab CI for Linux.
2019-10-09 14:49:07 +02:00
Paulo Matos
f160661d45
Enable MZ_ASSERT on Linux (#2852)
Related to #2851
2019-10-09 08:06:48 +02:00
John Clements
877ed67b93 Post-release version for the v7.5 release 2019-10-08 21:16:33 -07:00
Matthew Flatt
1a2c48cbd6 cs & thread: fix place custodian unregister
When a place terminates, it was directly accessing its parent's
custodian. Prior support for cross-place uses of a hash table
probably helped hide this problem previously.
2019-10-08 21:59:15 -06:00
Matthew Flatt
aa4d65f3f2 cs: suppress a "too much serialization" test
At least for now. Chez Scheme can fasl some things that traditional
Racket would refuse. This seems like a problem, but it's not a new
one, and it's not immediately obvious how to fix it. One test started
failing because the representation of scopes changed just enough to
become faslable.
2019-10-08 08:52:27 -06:00
Matthew Flatt
dce39cf24b add note to a broken test
The test doesn't go wrong so often that its crucial to fix now,
but it should be fixd in the near future.
2019-10-08 08:52:26 -06:00
Matthew Flatt
84827d04aa expander: avoid race on multi-scope -> scope table
Although extremely unlikely, it was possible for multiple Racket
threads operating on the same scopes to race on a multi-scope's table
mapping phase levels to scopes.

Also, for some some mutable hash tables that will be shared across
places as read-only in Racket CS, make sure they are definitely set up
for iteration.
2019-10-08 08:52:26 -06:00
Paulo Matos
c996e09e06
Ensure errkind_str is not used uninitialized (#2851)
This removes a compiler warning about `errkind_str` being possibly uninitialized.
2019-10-08 14:11:43 +02:00
Paulo Matos
91e6ab238f Use pmatos/racket-ci:testdeps image for CI
This avoids the download and installation of all the test
dependencies per job, therefore accelerating all test runs.
2019-10-08 13:46:16 +02:00
Matthew Flatt
4ea09bf731 cs & thread: fix shared hash table
An `eq?`-based hash table in the implementation of custodians was
still shared across threads.

Also, taking the global lock at the Rumble level did not disable
interrupts. Since sometimes the lock is taken with interrupts
disabled, threads could potentially deadlock by not having an order.
Fix the problem by disabling interrupts before taking the lock.
2019-10-07 19:05:45 -06:00
Matthew Flatt
5f3ab00351 cify: fix procedure names
Extend the repair in e72f954e85 for cify.
2019-10-07 17:06:30 -06:00
Matthew Flatt
e72f954e85 cs: fix procedure names in startup code
Commit 7d725ab48b interferred with the way that procedure names are
recorded for the code that is built into the Racket executable.
2019-10-07 15:21:14 -06:00
Matthew Flatt
0c4fbda8ba cs: add evt-polling shortcut
For simple cases, avoid `dynamic-wind` and related work when polling
events.
2019-10-07 15:21:14 -06:00