Refactor the code to move inside 'let' or 'begin'.
Also, in the test position of a 'if', recognize the 'not' inside a 'let' or 'begin'.
For example, transform (if (begin ... (not p)) x y) => (if (begin ... p) y x)
Previously, this conversion was made only when
the 'not' was the outermost expression.
And use the refactored code to move application inside 'let' or 'begin' in a single step
For example, transform ((let (...) ... (let (...) ... f) x) => (let (...) ... (let (...) ... (f x))
In the conversion, it's necessary to shift x to the new coordinates inside the 'let's.
In the new version x is shifted only once.
Before this commit:
- unzip would attempt to seek the input port via file-position in some cases
After this commit:
- unzip reads and discards bytes as needed to skip forward
With `replace-evt` the time that the system needs to wake up
to check the event can drift later, but scheduling state was
carried in a way that works only if the wake-up time drifts
earlier.
Unfortunately, I don't know how to write a test for this bug.
The usual stategy of using `system-idle-evt` to detect busy
waiting doesn't work here, because the business happens despite
the scheduler's conclusion that the system is idle.
As reported by Jan Dvořák on the mailing list.
When an evaluation result from a sandboxed computation is convertible
(so that it should be preserved for rendering) and serializable, then
serialize the value from transfer from the sandboxed environment to
the rendering environment.
This change complements the one that makes `pict`s serializable.
Serializing a pict result avoids retaining the sandboxed environment,
including its instance of the `pict` and `racket/draw` modules,
when a sandbox-created pict is part of the generated document.
For example, the memory use of the result of "math.scrbl" is about
20% smaller with this change.
The "texpict" interface as based by LaTeX is ancient, undocumented,
and unlikely to have been used since the previous millennium. Throw it
out and simplify the implementation (by discarding signatures and
units).
Fixes a problem with c4508ad0d9, which disabled module-code
caching too often. A symptom of the disabled cache was that
running "math/scribblings/math.scrbl" would use twice
as much memory.
Closes PR 14715, where Eli describes the repair
(Probably, the "collects" directory was missing from the uninstaller
list because "collects" moved under "lib" in an intermediate variant
of the directory organization.)