Commit Graph

42879 Commits

Author SHA1 Message Date
Matthew Flatt
fd2ffe3170 reference: cite Concurrent ML 2020-10-27 16:50:26 -06:00
Paulo Matos
45b0aa21d1 Add correct variables to ARM64 workflow and clean .racket 2020-10-27 16:56:08 +01:00
Paulo Matos
11be8813a2
Fix CFLAGS ordering to ensure users CFLAGS take precedence (#3466) 2020-10-27 13:34:10 +01:00
Walter H. Yang
62f444d4e1
raco: test: Add support to output to file (#3451)
Example:
 raco test --output output.txt utils.rkt

Fixes #3161
Signed-off-by: Hong Yang <yangh.cn@gmail.com>
2020-10-27 06:09:22 +01:00
Paulo Matos
1fd6844bc0 Remove debug find from CI ARM workflow 2020-10-26 06:25:49 +01:00
Matthew Flatt
0b42a143af cs: fix shell-execute error reporting
Closes #3465
2020-10-25 20:06:03 -06:00
Paulo Matos
7bec281f98 Clean ARM build directory before each build 2020-10-25 15:24:15 +01:00
Matthew Flatt
9e678b32ea docs repair on package names as Git vs. GitHub 2020-10-24 16:56:09 -06:00
Paulo Matos
5a31f8b833
Do not run ARM tests on PR (#3463)
Due to the speed and volume of available ARM HW reduce tests on
ARM during PRs and leave them for push-only. Run ubsan only on a
daily basis.
2020-10-24 21:49:49 +02:00
Matthew Flatt
c2797c0e9d bc: fix rationals as place messages
When an exact (non-integer) rational is reconstructed from a place
message, normalization could involve bignum operations --- and those
operations might use a cache, but the cache should not refer to the
pages that are specific to a place message being constructed.
Normalization isn't necessary, since the parts were already in a
rational, so the repair is just it skip it.

Relevant to #3456
2020-10-23 15:42:26 -06:00
Paulo Matos
3dc37ee035
Use locale.h if not xlocale.h header (#3461)
Otherwise we have a missing definition for locale_t when
RKTIO_USE_XLOCALE but !RKTIO_USE_XLOCALE_HEADER.
2020-10-23 23:41:41 +02:00
Paulo Matos
5f74c59ef5
CI support on self-hosted arm64 runners (#3294)
For the moment, due to a bug in moby, it's not possible to run these
on arm32 (https://github.com/moby/moby/issues/41217)
2020-10-23 20:32:27 +02:00
Matthew Flatt
5f8ad6039d cs & io: fix subprocess handling with places
A table of subprocess handles to finalize was not place-local as it
should have been. The same was true of a table of resolved IP
addresses to finalize.

Related to  #3456
2020-10-23 11:22:46 -06:00
Matthew Flatt
fb87a5032c cs: fix exit on catastrophic failure
Actuall exit, instead of calling `exit` with the wrong number of
arguments and generating an endless stream of errors.
2020-10-23 09:10:05 -06:00
Matthew Flatt
9caa0554bc Chez Scheme: fix race in a test 2020-10-23 08:28:55 -06:00
Matthew Flatt
614992a65c Chez Scheme: more repairs to avoid xlocale and an old-compiler warning 2020-10-22 16:57:47 -06:00
Matthew Flatt
0a6b8356c1 Chez Scheme: unbreak parallel GC on Arm
Thanks to @Bogdanp for the report and correct repair idea.

Closes #3455
2020-10-22 22:56:05 +00:00
Matthew Flatt
8734215827 racket/HISTORY.txt for v7.9 2020-10-22 08:38:28 -06:00
Matthew Flatt
d3ef0a0a35 cs & io: fix ~s formatting of keywords 2020-10-21 17:24:03 -06:00
Matthew Flatt
3ce134866b Chez Scheme: repair fasl of deeply nested values
The Racket variant of Chez Scheme includes special treatment of deeply
nested structures to avoid a C-stack overflow on unfasl, but the
relevant callbacks had gotten mangled.

Closes #3454
2020-10-21 13:14:54 -06:00
Matthew Flatt
c3dbc3dd2a Chez Scheme: avoid uselocale on more Solaris
A refinment to a86cf525ef, which moves the no-`uselocale`
declaration to a more reliable place.
2020-10-21 12:11:17 -06:00
Matthew Flatt
279412d316 cs & schemify: fix [non-]loop detection in lifting pass
When a would-be loop is called in a would-be loop that turns out not
to be a loop due to an intervening non-loop layer, the outer would-be
loop was not detected as a non-loop.
2020-10-21 11:42:56 -06:00
Matthew Flatt
5304ff5327 expander: fix malformed linklet
A linklet generated for deserializing syntax objects shadowed a local
variable, which is not allowed.
2020-10-21 11:02:03 -06:00
Matthew Flatt
efbb431a69 cs & schemify: another set! repair
When the mutability decision on a variable is delayed, but then the
variable is discovered to be mutable before the delay is triggered,
then mutability information could get lost.
2020-10-21 09:37:40 -06:00
Matthew Flatt
42a9e26ee9 schemify: fix handling of set! in dead code
Mutability analysis may determine that a `set!` is dead code, and then
the mutated variable might be optimized away, so don't leave the dead
`set!` behind.
2020-10-21 08:45:00 -06:00
Matthew Flatt
1dcabfada7 cs: fix handling of cross-module inline with strange srcloc
When the srcloc-enriched S-expression representation a function that
is available for cross-module inlining has a source that is not a
path, string, or symbol, then the source has to be dropped in the
module's serialized form.
2020-10-21 07:29:40 -06:00
Matthew Flatt
0ed1fc3850 cs & thread: fix atomic mode in callbacks within replace-evt
A nested evt poll did not move back to non-atomic mode when calling
event generators in the first argument of `replace-evt`.
2020-10-21 05:49:53 -06:00
xxyzz
3be1d49652
replace add-path with GITHUB_ENV (#3447) 2020-10-20 08:02:56 +02:00
Matthew Flatt
3b34b0ce02 cs: fix printer for symbols containing ; or `
Closes #3448

Thanks again, Xsmith!
2020-10-19 15:26:31 -06:00
Matthew Flatt
6c6cfd39b2 rktio: avoid nl_langinfo_l
Using `nl_langinfo_l` crashes the "unicode.rktl" test on Linux. I
don't know how `nl_langinfo_l` was being misused, but it's easy to
just avoid it.
2020-10-19 09:50:16 -06:00
Matthew Flatt
a86cf525ef Chez Scheme: avoid uselocale on Solaris
Although Solaris 11 and up probably have `uselocale`, just disable its
use in the expeditor on Solaris for simplicity.
2020-10-19 07:43:14 -06:00
Matthew Flatt
7411b7ffa7 rktio: detect and use xlocale 2020-10-19 07:26:40 -06:00
Matthew Flatt
1091536361 remove unneeded mutex acquire 2020-10-19 06:38:35 -06:00
Matthew Flatt
8baf16c093 cs: fix random on 4294967087
On a 64-bit machine, the problem was a `<` versus `<=`.
On a 32-bit machine where 4294967087 is not a fixnum, the
problem was in how bignums are handled.
2020-10-17 17:38:03 -06:00
Matthew Flatt
9f5c0cbb07 cs: fix names of some byte-string primitives
Closes #3441
2020-10-15 18:19:45 -06:00
Robby Findler
1aac750373 add missing paren 2020-10-15 17:12:02 -05:00
Philip McGrath
79fceea024 flat-contract-with-explanation: fix internal error
Previously, `error` would raise an `exn:fail` with the following message,
because it treated the first of the three strings as a format string
and the other two as its arguments:

> error: format string requires 0 arguments, given 2;
> arguments were:
> " is a procedure, to always escape when called"
> " (by calling raise-blame-error with the arguments it was given"`
2020-10-15 17:10:24 -05:00
Matthew Flatt
a471692ce8 raco setup: remove forced GCs and add output timestamps
The main change is to disable forced GCs during the documentation
phase in a parallel `raco setup`. Since each GC is global (instead of
place local) in Racket CS, these forced GCs created a scaling problem.
Furthermore, they're not really necessary; peak memory use tends to
remain the same without them in a parallel build, since the
".zo"-building phase doens't have extra collections and tends to
establish peak memory use.

A non-parallel build still includes explicitly forced GCs. In that
mode, the cost is modest while reducing peak use by 30%.

A new environment variable appends timestamps (in process time since
startup) for each status line, which is useful for generating more
detailed build plots.
2020-10-14 19:25:13 -06:00
Matthew Flatt
927ab67f27 Chez Scheme GC: potentially keep allocation ownership in accounting mode
Since a GC with accounting doesn't run in parallel, it discards
owner-thread information (ironically) that is used for parallel
collection. Losing ownership information could reduce parallelism in
later collections --- but only if they run without accounting.

This commit does not turn on ownership tracking, however, because
experiments suggest that it isn't worthwhile for Racket:

 * Preserving ownership information slows down a major collection in
   accounting mode by 5-10%.

 * Racket uses accounting mode only for full collections, and the loss
   of ownership information would mostly affect only later full
   collections. Since accounting momde tends to stick around, very
   little parallelism is actually lost.

 * Without further work, accounting mode cannot benefit from
   parallelization, because it works by stepping sequentially through
   accounting domains, and that aligns with thread ownership. A
   possible improvement is to look ahead in the accounting-domain
   object sequence to find one that starts in another ownership
   domain, and then constrain concurrent tracing from that object to
   keep the count private and not leave the ownership domain until the
   accounting sequence has caught up.

Besides making it easier to turn on "parallel" collection for
accounting mode, the small refactorings here make it easier to bring
more things, like guardian and weak-pair handling, into the parallel
part of a collection. So, the changes are probably worth keeping for
that purpose.
2020-10-14 11:24:52 -06:00
Sam Tobin-Hochstadt
abec838b51 Disable test that no longer works.
At some point in September 2020, q.com:9887 stopped working for
this test. It's disabled until we can find a replacement.

As far as I can tell, there aren't any sites that behave the way
q.com did prior to September 2020.
2020-10-14 10:57:49 -04:00
Matthew Flatt
331a710e22 pretty-print: fix spacing when a symbol includes a newline
Closes #3439
2020-10-13 16:04:18 -06:00
Matthew Flatt
366bdcb9e7 avoid compiler warning 2020-10-12 19:39:32 -06:00
Matthew Flatt
5c45588573 cs: provide hint to GC about places
The collector tries to use roughly the same amount of parallelism as
the number of active threads, but make sure that it doesn't fall back
to an ownership-mangling non-parallel collection if all but one place
happens to be stalled.
2020-10-12 19:24:24 -06:00
Matthew Flatt
449f01b55d Chez Scheme GC: simplify make parallel sweeper object exchange
Make the exchange of objects by parallel sweepers --- which is needed
when an object being swept by one thread refers to an object owner by
another thread --- much simpler and slightly faster.

The original design of exchanging memory regions didn't really work
out, and it had degrenerated to essentially exchanging objects.
Explicitly exchanging objects instead of regions makes the GC simpler,
because received objects can be just added to the regular sweep stack,
and less additional space<->type correspondence is needed.
2020-10-12 18:00:27 -06:00
Matthew Flatt
1a1bad4e90 expander: repair literal syntax in test position of if
Fix mishandling of an expanded `if` where the test position is a
syntax object. The expander's compiler pass from expanded objects to
linkets knows that the syntax object isn't useful, but it tried to be
helpful by preserving the syntax object's content as quoted --- and
that content turns out not to be available, so the syntax object was
replaced by #f, instead.

Closes #3436
2020-10-12 17:58:37 -06:00
Matthew Flatt
82744013d5 cs: unbreak build 2020-10-12 09:35:20 -06:00
Matthew Flatt
3566536cfe cs: more OpenIndiana repairs 2020-10-12 09:17:47 -06:00
Matthew Flatt
171608a1a2 docs: fix typo 2020-10-11 13:37:53 -06:00
Sergiu Ivanov
5cbff3403a
hash.rkt: Add hash-intersect 2020-10-11 13:37:02 -06:00
Matthew Flatt
9905c1c89a cs: fix srcloc->string as relative to current-directory-for-user 2020-10-11 11:40:25 -06:00