Commit Graph

43088 Commits

Author SHA1 Message Date
Matthew Flatt
13ee90da4d cs & io: fix comparison of paths with different conventions 2021-05-12 18:05:10 -06:00
Matthew Flatt
4e5254dd77 repair a serializable-cstruct test 2021-05-12 17:01:12 -06:00
Matthew Flatt
dd71fbad5a repair path test for Windows 2021-05-12 17:01:12 -06:00
Sam Tobin-Hochstadt
520a8e0ac6 Adjust naming to match the main download page. 2021-05-12 17:55:50 -04:00
Matthew Flatt
2ac7e21ad4 change collection-links format to avoid paths as strings
Converting between strings and paths interferes with cross
compilation. This hasn't caused more problems only because cross
compilation has tended to run on Unix platforms, where the generated
paths are acceptable to Windows. But using strings goes wrong when
manipulating a Windows-based build for further cross-build actions on
Unix, and it can go wrong if paths contain bytes that cannot be
encoded in strings.
2021-05-12 15:24:04 -06:00
Cameron Moy
a7ddec9573 Support pattern matching of stream and stream* 2021-05-12 16:47:05 -04:00
Sam Tobin-Hochstadt
5985d5559d
Update further permissions. 2021-05-12 15:30:33 -04:00
Sam Tobin-Hochstadt
223b96404e
Fix permissions.
See https://github.com/github/codeql-action/issues/464
2021-05-12 14:10:26 -04:00
Sam Tobin-Hochstadt
4814d36639 Omit date from build stamp. 2021-05-12 13:57:24 -04:00
Matthew Flatt
8b4b6cfaec fix some -1 exit codes
On Windows, exit(-1) counts as success instead of failure.
2021-05-11 16:51:04 -06:00
Matthew Flatt
391b5579f4 raco exe: fix default compiler for cross mode
The compiler for an embedding executable, as opposed to a separate
bundle file, didn't adapt to cross-multi mode.
2021-05-11 16:20:22 -06:00
Matthew Flatt
6e50aa088b expander: fix eval of machine-independent top-level begin 2021-05-11 16:20:22 -06:00
Paulo Matos
f462ac6a31
Fix warning about git checkout HEAD^2 (#3829)
Currently CI is warning that this step is no longer needed, so remove
it.
2021-05-11 22:26:47 +02:00
Matthew Flatt
274eb82deb Chez Scheme: sync test expected errors 2021-05-11 04:19:59 -06:00
Matthew Flatt
7c27ef2ab0 Chez Scheme: fix check on reference displacement
There is no danger of a displcement going off the end of an allocaiton
page, but the reason is a little more subtle for a 32-bit platform.
2021-05-10 18:08:55 -06:00
Matthew Flatt
7a81ff13c2 remove tests for ffi/unsafe/string-list
Should have been part of 73a61e4d37.
2021-05-10 12:54:49 -06:00
Matthew Flatt
73a61e4d37 rescind ffi/unsafe/string-list
The `ffi/unsafe/string-list` library is not needed now that `(_list i
_string)` and similar work. This way, existing code that uses `(_list
i _string)`, `(_vector i _string)`, etc., does not needed to be
modified to work with CS.

We don't usually remove libraries, of course, but this one has only
existed for a few days, and it was made to work around a problem that
has been solved in a better way.

Related to #3825
2021-05-10 11:54:21 -06:00
Matthew Flatt
87196e0144 Chez Scheme: add support for nonatomic foreign arrays
A reference bytevector holds a mixture of addresses within GCable
objects and foreign addresses, where "address" corresponds to the
payload of a bytevector or flvector object. The GC knows to apply a
suitable offset to the reference, so that object counts as reachable
from a reference bytevector, and the reference bytevector is updated
if the object is relocated during a collection.

With this change, the restriction in Racket CS against passing
non-atomic memory to a foreign function can be lifted. For example,
`(_list i _string)` can be useful as the type of a foreign-call
argument.

Making reference bytevectors a subtype of bytevectors is not an
obvious choice, given that writing to a reference bytevector with
byte-level operations can easily corrupt it. But this choice makes
various things simpler and easier.
2021-05-10 11:16:03 -06:00
Matthew Flatt
e0063a9495 adjust string-conversion test for constrained locales 2021-05-08 10:22:12 -06:00
Matthew Flatt
d14c454096 fix printing of prefabs with print-unreadable is #f
Closes #3827
2021-05-08 09:57:14 -06:00
Matthew Flatt
bb462baf30 cs: link Unix variants of racket with exported symbols
I'm not sure this is a good idea, but it doesn't apear to be a
particularly bad idea. Exporting symbols just makes the executable
size slightly larger.

Closes #3617
2021-05-08 09:32:37 -06:00
Matthew Flatt
98cf4151a9 adjust ffi/unsafe/com to use ffi/unsafe/string-list
The one-off `_ptr-to-string/utf-16` can be `_string-list/utf-16`.
2021-05-08 09:20:30 -06:00
Matthew Flatt
36195c71f6 add ffi/unsafe/string-list
Passing an array of strings or byte strings to a foreign function can
be especially tedious on Racket CS, due to the prohibition against
passing an array of GCable pointers to a foreign function.

Closes #3825
2021-05-08 09:20:30 -06:00
Matthew Flatt
c42d64cdbc cs: fix some UTF-16 and UCS-4 conversions 2021-05-08 09:20:30 -06:00
Matthew Flatt
f35a92744d cs: fix checking for a non-atomic argument to a foreign call
In CS, a pointer to non-atomic memory cannot usefully be passed to a
foreign function. The general foreign-call path checked for that kind
of argument and raised an exception, but the check was missing from
the common-case fast path, so a meaningless argument would be quietly
passed to the foreign function.

Related to #3825
2021-05-08 09:20:30 -06:00
Dale Vaillancourt
c35a843e71 use unaccented e in eof/length 2021-05-07 17:03:13 -06:00
Matthew Flatt
7aa1bacd74 remove stray logging in chaperones test 2021-05-07 10:04:08 -06:00
Sam Tobin-Hochstadt
50a2cb32cb Initial implementation of 3x3 and 4x4 Toom-Cook multiplication.
This speeds up `(factorial 1000000)` (using factorial from math/number-theory)
by about 3x, and the conversion of the result to a string by about 2x.

Benchmark:

    #lang racket
    (require math/number-theory)
    (define n (time (factorial 1000000)))
    (define s (time (number->string n)))
    (string-length s)

Current Racket CS:
cpu time: 19135 real time: 19137 gc time: 372
cpu time: 33416 real time: 33418 gc time: 463

Current Racket BC (GMP is really fast):
cpu time: 1465 real time: 1465 gc time: 51
cpu time: 3661 real time: 3659 gc time: 3

This PR:
cpu time: 6173 real time: 6172 gc time: 168
cpu time: 17846 real time: 17847 gc time: 377

Cutoff between Karatsuba and Toom3 estimated by mflatt.
Cutoff between Toom3 & Toom4 guessed.
2021-05-07 10:27:09 -04:00
Gustavo Massaccesi
cf8570f59d fix typo in base64.scrbl 2021-05-07 11:24:56 -03:00
Matthew Flatt
b126dc3893 cs and ffi/unsafe/com: repair com-invoke for method without type
The argument type `(_ptr i _string/utf-16)` is not used on CS, because
a pointer to non-atomic memory cannot usefully be passed to a foreign
function from Racket CS.

Closes #3820
2021-05-06 20:20:46 -06:00
Matthew Flatt
b04b0fe3e1 file/[un]tar: add support for [un]packing without using the filesystem
Closes #2549
2021-05-06 18:56:58 -06:00
Matthew Flatt
486ab09587 struct-impersonator: make method-style prop:procedure receive impersonated
When a struct is called as a procedure and the struct is
impersonators, make a method-style `prop:procedure` receive the
impersonated structure as its argument. This change makes a
method-style `prop:procedure` more consistent with a field-index
`prop:procedure. The old behavior, meanwhile, seems to create an
unsoundness in Typed Racket.

Closes #2574
2021-05-06 16:27:35 -06:00
Matthew Flatt
30426fff9d Chec Scheme: better error when W+X page allocation fails
Closes #3819
2021-05-06 10:59:55 -06:00
Matthew Flatt
e368f9e22b Chez Scheme: special case for / on 1 or -1 and an exact rational
Related to #3816, but Sam already has better changes on the way.
2021-05-06 09:29:10 -06:00
Matthew Flatt
1ad3b05213 cs: fix ->fl and fl->exact-integer to match intended constraints
Fix `->fl` to work only on exact integers, and fix `fl->exact-integer`
to work only on integer flonums.
2021-05-06 07:26:48 -06:00
Matthew Flatt
180983fb4b cs: fix encuoraged and cross-module inlining of set!
When an inlined `set!` mutates a variable that's bound in the inlined
function, the `set!` target was not updated to refer to the inlined
binding.

Closes #3817
2021-05-06 07:02:22 -06:00
Bogdan Popa
849d66adaa compiler/embed: strip submod from d-r-p paths
Closes #2536
2021-05-06 06:17:13 -06:00
Fred Fu
60067d52ad fix the documentation for make-input-port 2021-05-05 20:35:46 -06:00
Matthew Flatt
eea781ce75 update a test for "<line>.<col>" -> "<line>:<col>" 2021-05-05 20:20:04 -06:00
Matthew Flatt
9410a90a8b define-inline: better handling of misapplication
When a function from `define-inline` is applied to the wrong number of
arguments or the wrong keyword arguments, then leave it as a runtime
error (with a compile-time warning) instead of a badly reported
compile-time error.

Closes #3402
2021-05-05 20:20:04 -06:00
Matthew Flatt
808ea5f303 syntax-location->string: "<line>:<col>" instead of "<line>.<col>"
related to #3492
2021-05-05 17:41:28 -06:00
Matthew Flatt
1558e0bde4 pretty-print: fix 'unquote in mpair and vectors
Fix misinterpretation of `'unquote` within an `mcons` or `vector`
construction in expression-printing mode.

Closes #3652
2021-05-05 17:10:35 -06:00
Matthew Flatt
fc955b99f3 quasisyntax: recognize unsyntax in a box
This is a backward-incompatible change, but I think it's unlikely that
any code intentionally uses `unsyntax` or `unsyntax-splicing` within a
syntax-quoted box and expects it to stay literal.

Meanwhile, as @rocketnia noted, the documentation for `quasiquote` was
unclear about the espacing positions for `unquote` and
`unquote-splicing`, so this commit impoves that documentation. It
adjusts the documentation for `quasisyntax` to note that a hash table
value position is not an escape position, unlike for `quasiquote`.
(The lack of an escape position within hash tables is consistent with
`syntax`. That's arguably inconsistent with `quasiquote`, but it seems
simpler to leave that alone, and changing `syntax` just might matter
for existing code.)

Closes #3656
2021-05-05 16:46:37 -06:00
Matthew Flatt
c8d605a8cc doc: clarification on place example
Closes #3784
2021-05-05 12:59:37 -06:00
Matthew Flatt
f5306039cb repair a test 2021-05-05 07:18:16 -06:00
Matthew Flatt
d12f1f55ad x86_64: sign-extend signed integers pass as foreign call arguments
I can't see where the ABI pins this down for x86_64, but the default
compiler on Mac OS seems to have started caring that 1-byte and 2-byte
integer arguments are sign-extended in registers. The previous lack of
sign extension would affect only small-structure arguments.
2021-05-04 19:45:29 -06:00
Matthew Flatt
bee9c46e0d Chez Scheme: repair and update bullyx tests 2021-05-04 17:16:42 -06:00
Matthew Flatt
e899b519e3 Chez Scheme: more documentation how tests work
Also, make some adjustments to "Mf-base" so that plain `make`
generates a summary file as before and so that output files are linked
in a way that lets `make root-experr` and `make patches` find them.
2021-05-04 15:01:50 -06:00
Jamie Taylor
88cb6aae10 run mats configurations in parallel
* refactor mats to allow different configurations to run in parallel.

The {partial,all,bully}x targets now support being run in parallel should
make decide to do so (e.g., via the -j flag)

* fix mats ignoring "rmg" parameter

* Update travis-ci build scripts to use new partialx target and run multiple
jobs in parallel, based on the number of processors available.

* Add a way to only run particular machines in travis-ci by including
a line that starts with "travis:only:" and lists the machine types in the
commit message.
2021-05-04 15:01:50 -06:00
Jarhmander
68d8c8acc2 add alternative (R7RS) spelling of booleans (#563) 2021-05-04 15:01:50 -06:00