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.
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.
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`.
Building with `--enable-embedfw` creates executables that link
statically to the Racket runtime system, instead of linking to a
Racket framework, and that embed boot files in the case of Racket CS.
Executables built this way are meant to cooperate better with code
signing.
Related to #2910
Allow 0 as the port number in `ssl-listen`, and fix
`ssl-addresses` to work on a listener. Update a test
to use these features so that it won't conflict with
other tests that listen on TCP addresses.
Where true places are not supported, `place` is simulated
using Racket threads, and `place-kill` did not kill off the
simulated place well enough.
Relevant to #2930