This handles contract generation for recursive or
mutually recursive Name types in the static contract
framework.
Instead of just generating recursive-sc static contracts,
it memoizes the recursive contract within a single
type->contract call by indirecting through a table.
When static contracts are instantiated, the table is
consulted for computing contract kind information and for
generating the actual contracts for the recursive names.
The OS doesn't necessarily react to a zero-sized buffer the way
that `udp-receive!` is supposed to work, so provide only a
non-zero-sized buffer to the OS.
Random tests that are implciitly injected into a program should
declare themselves as such when they fail. Otherwise, random
crashes are really confusing.
The type alias analysis is unable to detect a rare kind
of type dependency and as a result initializes type aliases
in an order that doesn't work. Adding the extra `Class`
boilerplate here accommodates the analysis.
Please merge to v6.1.1
Mandatory kw arguments in function types could confuse
the typechecker when the function had the
`syntax-procedure-converted-arguments-property` property
set.
Use the `net/git-checkout` library to support git repository servers
in general, instead of supporting only GitHub. A HTTP(S) source is
treated as a repository source when it ends with the ".git" suffix.
The new argument is needed to reliably write to a tmp file, for
example, where the existence of the tmp file prevents other processes
from using the same name.
Git-based hosting services most commonly support the smart HTTPS
protocol, which carries "git://"-format payload in a fairly straightforward
way. (Supporting the dumb protocol looks much more difficult.)
The `net/git-checkout` library implements enough of `git clone` to
extract a tree from a repository that is accessed via the "git://"
protocol. It doesn't preserve a local clone, and it attempts to
download only the slice of the repository that is needed for the
requested tree (depending on how the tree is referenced).