update mzlib contract test suite to recent changes to racket/contract
fixed more calls to error (that should be raise-argument-error) in the contract library
fix a race-condition
fix a leak in DrRacket

It was leaking threads at about the rate of 2 per online expansion
that had a syntax error (or otherwise aborted without finishing
expansion)
Remove legacy require/typed form.
Check for structure binding and raise good error if it is not there.

Closes PR 13588.
racket/gui: fix auto-scrollbars for editor GUI

It's possible to go from a state where one scroll bar is needed
(vertical or horizontal) to a state where each scrollbar is
needed iff the other scrollbar is needed. In that case, the
auto-scrollbar algorithm couldn't find either fixpoint and
would loop forever.
fix `sync/[timeout/]enable-break' semaphore shortcut

The shortcut could be triggered in a bad case (first
argument as `#f' in non-timeout mode) and returned the
wrong result (void instead of the semaphore).
fix space-safety problem

A tail call with certain kinds of primitives would fail to
clear local bindings in a detectable way. For example, a
tail call to `sync' that blocks could retain references
to unreachable data in the context of the `sync' call.

Primitives that can cause problems in the run-time system
are already identified as "imemdiate" primitives. The
safe-for-space pass now inserts clearing actions before a tail
call, unless the call it to a known immediate primitive or a
Racket-implemented function.

Clearing operations are now omitted before non-tail calls
to immediate operations like structure predicates.

The newly added clearing operations could affect performance,
but they probably won't, since the clear operations are still
avoided in tail-call cases that are otherwise fast. The newly
omitted clearing operations may improve performance.
place channels & threads: improve GC

Allow a thread to be GCed when it is blocked on a place
channel for reading and the place channel's write end
is inaccessible.

GC is limited to threads that do not participate in cycles
of such threads, where the otherwise unerachable threads
are blocked on place channels that are reachable among the
set of threads. In other words, the GC finds the greatest
fix point (as measured by the threads to retain) instead of
least fix point --- which isn't what you want, but finding
the least fix point seems to require significant extra GC
machinery across places.

This improvement was intended to solve the same problem as
commit 7b0608c, but that case seems to run into the limitation
on cycles.
Support mastersthesis, clarify docs, and add test of rendering
Support all define-cite options in define-bibtex-cite
Call raise-argument-error correctly.
Add testcase.

Closes PR 12812.
Add descriptions to for: syntax classes.

Closes PR 13284.
Sanitize the output from HTML escape characters.

Noted by ozzloy on IRC.  The search page appears to fail when
searching for the term 'string<?'; in truth, the search succeeds, but
the search link-printing code doesn't escape the '<?' part of the
identifier.
fix bug in drracket's online check syntax renaming setup

Because of a limitation in our GC tech (and because I have not
sorted out how to program around it (which should be possible))
when the "is it safe to rename this variable" check may silently
just say "yes" when it really doesn't know the correct answer.

It turns out that this was happening on every attempt to rename
after the first one (in a given online check syntax run) due to
a bug, now fixed in this commit (the "loop" didn't actually loop...)

Also, moved the creation of the thread to its own function to
make the things it closes over more syntactically apparent.
make negative blame also use "<collects>/" instead of having
the full collection path in there
relax sandbox permissions now that contract error message
construction requires looking at the filesystem

assuming this is the right fix, it closes PR 13634
Generalizing define-bibtex-cite