Commit Graph

43174 Commits

Author SHA1 Message Date
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
Jarhmander
da2a9969ef Mention an up-to-date crt.dll for Windows (#564) 2021-05-04 15:01:50 -06:00
Jack Firth
59100868e0 Improve documentation for hash update functions
Changes the prose explanations of `hash-update` and `hash-update!` to more explicitly describe how the hash table is updated, instead of just deferring to the explanations in `hash-ref` and `hash-set` / `hash-set!`. Additionally, adds example code.
2021-05-04 09:32:32 -04:00
Matthew Flatt
d777cd28d7 fix contract checks for number <-> representation bytes
... especially for CS, but there's also one BC correction.

Reported in tweet by KenHatesSoftwar.
2021-05-03 20:08:15 -06:00
Matthew Flatt
9a65aaf444 makefile: fix pb-fetch after starting with --single-branch mode 2021-05-03 16:42:01 -06:00
Matthew Flatt
9c60382461 info.rkt: allow regexps in compile-omit-paths
Closes #1400
2021-05-03 16:38:37 -06:00
Matthew Flatt
c663d13fab cs: sync schemified
Rebuild schemified files to take advantage of correction for unsafe
`fxlshift` and `fxrshift`.
2021-05-03 10:18:21 -06:00
Matthew Flatt
ef43f26f62 net/base64: speed up encoding and decoding, especially on byte strings
Base64 encoding and decoding are common and simple enough to
specialize for byte strings, where they can be much faster.
2021-05-03 07:47:50 -06:00
Matthew Flatt
d20292b80c cs: fix fx{lr}shift conversion for (#%declare #:unsafe) 2021-05-03 07:33:05 -06:00
Matthew Flatt
9d53990e18 net/base64: faster encode
Make encoding almost twice as fast by treating input chunks of 3 that
turn into output chunks of 4.
2021-05-03 07:33:05 -06:00
Matthew Flatt
7179df6009 configure: improve platform detection and reporting 2021-05-03 07:33:05 -06:00
Bogdan Popa
0c8e3765f2 cs,thread: fix thread-receive-evt retry proc
Fixes #3813
2021-05-03 07:32:53 -06:00
Matthew Flatt
d9c128fe65 add namespace-call-with-registry-lock
Lazy require benefits from using a lock on a namespace registry for
much the same reason as on-demand instantiation of ready modules. Make
lazy require use the lock that's alerady in place for on-demand
instantiation, and expose `namespace-call-with-registry-lock` for
other potential uses.

Thanks to @m4burns for tracking down the problem and its solution.

Related to #3805
2021-05-02 12:10:30 -06:00
Matthew Flatt
406dcc9ff3 Chez Scheme: make pb build accomocate WRITE_XOR_EXECUTE_CODE
Although W^X is useless to pb, allowing it to build with
`-DWRITE_XOR_EXECUTE_CODE` can be helpful.
2021-05-01 09:26:59 -06:00
Matthew Flatt
1f0223fef1 Chez Scheme: repair to W^X mode
Fix single-segment flipping to accomodate write regions that span
segments.
2021-05-01 08:58:47 -06:00