Don't run cptypes, when cp0 is disabled, for example with
(run-cp0 (lamba (cp0 x) x)
This is easier to understand because run-cp0 is a single point to control
all the cp reductions. The reductions in cptypes can be independently disable
using enable-type-recovery.
original commit: b23645e669fbf02806a261a2d87160fdbe06db93
Use “cmd.exe” on Windows. This enables us to have a list (of length one on
macOS and Windows) of launcher executables on all platforms, and use
send-url/unix, now renamed to send-url/simple, to launch all URLs without a
query or fragment.
Since we need send-url/trampoline for URLs containing a query or fragment in
the default case on all OSes, simplify the code and always use it for such
URLs.
Unix: Cut down all-unix-browsers: add xdg-open, which is standard and can
launch applications for files instead of a browser, like the macOS and
Windows equivalents; remove defunct browsers galeon, camino, skipstone,
htmlview, and the rare dillo. Make opera use try-remote, which is identical
to the code it was using. xdg-open cannot handle queries or fragments in
URLs, so for this case factor out send-url/trampoline from send-url/win and
use it.
macOS: Remove try-to-find-macosx-users-browsers, and use “open” instead of
“osascript”; “open” uses the user’s configured browser. As before, it is
still possible to specify a particular browser.
Windows: Shorten and simplify the justification of the trampoline, which is
mostly out of date, though the trick is still needed.
Use the high bit of a byte to continue instead of the low bit.
That way, ASCII strings look like themselves in uncompressed fasl
form.
original commit: 89a8d24cc051123a7b2b6818c5c4aef144d48797
Source locations are attached to functions for backtraces. With
traditional Racket, those source locations are connected to the
machinery of `current-write-relative-directory` and
`current-load-relative-directory` to avoid absolute paths, but that
machinery is difficult to integrate into the Racket CS compilation
model. So, since they're "just" for stack traces, save only a couple
of elements of the path.
Although some of them probbably do not matter (while some certainly
do), avoid various possible problems by always using a locally
determinsitic replacement for `gensym`.
Use newly added support for uninterned symbols (as opposed to gensyms)
in the Chez Scheme layer. Using uninterned symbols reduces
non-determinsitsm in the build.
The change to use Chez Scheme uninterned symbols exposed problems with
the way that Racket-level uninterned symbols (formerly implemented
with gensym) are handled in ".zo" files. The problem is that some
uninterned symbols are marshaled with `racket/fasl`, which is not
consostent with those that are marshaled by Chez Scheme's `fasl`. This
patch fixes those problems by ensuring that uninterned symbols are
always lifted to the level of a Chez Scheme `fasl` for a complete
linklet bundle.
Uninterned symbols are slightly more expensive to allocate than 0- or
1-argument calls to `gensym`, but they're much cheaper to hash (and
print). They're also more consistently distinct when unfasled, and the
fasled form is determinsitic.
original commit: 3167083008031b1f880e76a6f573563c7d9c888c
Change the way names are generated for pieces of the implementation of
a keyword-argument function. These functions are not accessible as
values, so the names don't matter for printing a function, but the
names can show up in stack traces.
The attempt in 7a12d55e7d to handle some flaky tests didn't work.
This attempt effectively removes the tests, although they can
be enabled by setting `PLT_RUN_UNRELIABLE_TESTS` to "timing".
Also, replace the old hack of enabling some locale-specific tests
to also use `PLT_RUN_UNRELIABLE_TESTS`.