The safe-for-space pass could add clearing operations on "typed"
stack positions, which are known to contain a fixnum, flonum, or
extflonum. Non-clearing references, however, were not annotated to
indicate that clearing references were present, since clearing is
not expected on typed positions.
Along the lines of not expecting clearing, the bytecode validator's
encoding of the stack doesn't accomodate both "has a type" and "claims
never to be cleared", so it couldn't detect the bytecode compiler
bug. (Also, this problem didn't show up in the HOSC paper's model of
the validator, because the model pre-dates type tracking.)
Fix the bytecode compiler's space-safety pass so that it never inserts
clearing operations for typed stack positions. Then, the validator can
simply reject any attempt to clear a typed position.
Also, annotate applications generated by lifting as safe-for-space
tail calls.
Merge to v5.3.4
(cherry picked from commit 7ad1ddab64)
Conflicts:
src/racket/src/cstartup.inc
src/racket/src/schvers.h
Bug introduced by 7a8c2ff063: a tree can be deep enough that the
representation of the path to the current item can be too big to
fit into 32 bits. It will always fit in 64 bits, though.
Merge to 5.3.4
(cherry picked from commit f09d1d1ae8)
Conflicts:
src/racket/src/string.c
With this patch racket will never grow beyond of the defaults limits of
the OS and also it doesn't limit the stack size to a fixed value.
Merge to v5.3.4
(cherry picked from commit 5a566771e0)
Specifically the one from ,rr. Also make ,switch syntax error more
friendly. Also, test for the recent xrepl fix, including its printout.
(cherry picked from commit e311de0522)
There were especially problems with header columns, but
also intercell spacing was not taken into account.
Merge to v5.3.4
(cherry picked from commit 44d59702c0)
from when the file doesn't have an error
More precisely, keep two sets of depndencies for a given
open tab. If the file expanded without error then we consider
that authoratative and keep that set of dependencies around
even if a later expansion fails. So there are two sets of
dependencies for each tab. When expansion succeeds, we reset
both of them, but if expansion fails then we reset only one,
preserving the set we got from the last successful expansion
please include in the release
(cherry picked from commit 11f74fc571)
After uninstalling a package in installation scope, its documentation
should be removed. A new `raco setup' step takes care of that.
Merge to v5.3.4
(cherry picked from commit ff324f9270)