Remaining are:
- parts of unit200 that Matthew plans to remove.
- the `mzscheme` implementation itself.
The implementation of `mzscheme` has been moved
to the `mzscheme` collection (from the `racket` and
`scheme` collections). The `scheme/mzscheme`
language, which was undocumented, has been removed.
This is slightly backwards-incompatible, because
the `xform` handling of precompiled headers now
evaluates code in a `racket/base`-like namespace,
instead of in a `mzscheme`-like namespace.
Also, improve connection between installers and farm-configuration
entries, and improve configuration of installer name versus
target-install directory.
I'm not sure why a problem with the "package closure" operation
didn't create problems earlier for `raco setup' --- or maybe it
did, but they're difficult to see.
Also, reduce redundancy in reporting of reasons for dependency
mismatches (but keep multiple reports of the same missing
dependency but for different reasons).
Report packages that have no dependency declarations as "warnings"
(to stdout instead of stderr).
Report specific information when a dependency is discoeverd missing,
insteda of reporting it only in verbose mode.
Left one dependency broken: "drracket" currently depends on "htdp" for
a test. That needs to be fixed by removing the dependency (moving the
test to "htdp?), instead of changing the declared dependencies.
The new `--no-pkg-deps' or `-K' flag skips the check.
If a module in package X refers to a module in package Y, check that
package X declares a dependency on Y. Note that package X must
specifically depend on Y --- not another package that at the moment
happens to declare a dependency on Y.
A new "base" package represents the content of the core (so that, if
the core shrinks, a new "base2" can represent the smaller core).
Most every package now needs a dependency on "base".
Sometimes, it makes sense for X to access Y when X declares a
dependency on Z, because Z promises to always depend on Y. For
example, the "gui" package is defined to combne "gui-lib" and
"gui-doc", so it's appropriate to use the modules of "gui-lib" when
depending on "gui". A package's "info.rkt" can therefore define
`implies' as a subset of the dependencies listed in `deps', which
means that depending on the package implies a dependency on the listed
packages. (It's even possible for packages to mutually imply each
other, which is why the dependency checking code ends up with a
union-find.)
Dependency checking distinguishes between run-time dependencies and
build-time dependencies: anything listed in a ".dep" file is a build
dependency, at least. To imply a run-time dependency, a reference must
appear in a bytecode file's imports, and not in a subdirectory or
submodule that would be pruned for a binary package.
The `--fix-pkg-deps' flag attempts to automatically fix package
dependency declarations (i.e., modify a package's "info.rkt" file)
based on inferred dependencies.
The "-lib" in "compatbility-lib" is meant to mean "no documentation"
-- and, more to the point, no dependency on documentation infrastructure.
Move later to a "compatibility-doc" package.
This reverts commit acce2d27d1.
There are a number of formerly-exported identifiers that are now
no longer exported:
provide/contract-transformer?
true-provide/contract
replace-provide/contract-transformer-positive-blame
make-provide/contract-transformer
These are internal bindings that should probably never have been
exported. (They weren't documented.)
There are two currently-exported identifiers that were not
exported before:
blame-update
contract-continuation-mark-key
The first comes because mzlib/contract re-exports
racket/contract/combinator and blame-update is a new export there (for
option contracts). The other is less clear and may be hidden
(it is also new to racket/contract).