that is, instead of (class/c [m (->m integer? integer?)] n) turning
into a call to a constructor that has calls to coerce-contract for
the 'm' method, it instead expands the 'n' method contract into an
identifier reference (that isnt' bound to #f, since #f is coercable to
a contract) and the 'm' contract argument just sits there in the expansion
The main change in this commit is to refactor the class/c projection
such that it actually build two classes internally when only a single
class/c is applied to a single class. The goal is to further adjust
class/c so that the projection corresponding to the external method
contracts goes away (to be replaced by a new strategy) and the
projection corresponding to the internal method contracts gets delayed
using some as-yet-underminded strategy that avoids creating the new
class until someone actually creates a subclass.
This commit, but itself, however is a performance lose to the tune of
about 2 megabytes in DrRacket's startup footprint. Hopefully this
doesn't last too long.
For example, if a package is installed in user scope where no
user-scope documentation is already built, CSS files need to be
in place for the main page of user-specific documentation.
Instead of trying to check the expansion as-is (which
always fails), check the core function and reconstruct the
keyword function type.
Closes PR 11253
Instead of preserving specific configuration entries, it's probably
better to preserve all of them that are not specifically replaced.
I'm going with the simpler change for now, though.
This commit is a follow-up to e96d592735. The bug fixed this time is
more subtle, because the overflowing computation is never used, but
that doesn't matter in terms of avoiding undefined behavior.
Thanks for Pascal Cuoq and John Regehr.
This change allows undo configuration of individuals editors to
Emacs-style undo (in addition to the 'GRacket:emacs-undo global
preference that is read on startup).
Also, fix a bug in Emacs-style undo that dates from the port of
the editor into Racket.
Move new initialization arguments to the end to avoid backward
incompatibility, add fields to `module-event%`, and include history
notes in the documentation.
The launcher was always create assuming a specific relative path
from the "bin" drectory to the "lib" directory, but that relative
path changes in a Unix-style install.
Also, extend fixnum fast path to work more often in 64-bit mode.
More review would be appreciated to help ensure that the revised
implementation avoids undefined behavior in C.
Atomicity was accidentally turned off in ca0418d47d.
For whatever reason, this bug seems to cause lots of trouble with
32-bit Mac OS X and not as much for 64-bit Mac OS X.
Judging from how the length of the transcript before the timeout kicks in,
the timeout is happening around 75% of the way down. So give it a bit more
time than that.