them and use that to order 'raco setup'
The dep-list.rkt file contains code that reads .dep files
and computes the topological sort; this result is expected
to be copied over into setup-unit.rkt
Rename `read-intern-literal' to `datum-intern-literal'.
Interning is needed only in `read-syntax' or `datum->syntax' to
set up the invariants that the bytecode compiler needs for cross-module
optimization. When `read'ing numbers from a data file, meanwhile,
interning slows things down a lot and doesn't seem worthwhile.
This change saves a small amount of space in cross-reference files
and some space in loaded cross-reference information.
It also saves work converting strings to mutable on deserialize,
although the performance difference seems negligible.
The main problem was that when a place catches an exception,
it would continue in breaks-disabled mode. Also improve
`parallel-do' to detects additional breaks when waiting on
places and propagate them, in case a place was running something
that ate the initial break.
This reverts commit 89581f5e21.
Putting "drscheme" last is useful because it avoids having two
places try to compile "drracket" and "drscheme" at the same time,
in which case the "drscheme" place gets stuck waiting on the
"drracket" place. Moving "drscheme" to the end is a hack, but
it improves the build time for 2-4 cores.
The absolute paths were introduced by support for parallel build,
which piggy-backs information in "in.sxref" to communicate among
processes. Since the information is persistent beyond that
cooperation, the information needs to be in relative form.
[Sorry for the reformatting noise, but the file's indentation was
especially mangled.]
The change allows `raco setup' to reach a fixed point under Windows
for "redex/examples/cont-mark-transform".
I'm more and more convinced that `normal-case-path' is never
a good idea. In some cases, maybe it's good to recognize a
few extra equivalences, but it works badly when paths are taken
from many sources and are not consistently normalized. It's better
to just preserve case.
For basic normalization, `simplify-path' is the right choice. Use
inode identity (as `raco setup' does) when anything stronger
than `simplify-path' is needed.
The format previously included relative paths in the syntax
of the platform used to run `raco setup'. While a "cache.rktd"
built on Unix would work for Windows, the reverse would not
be true. Also, `raco setup' under Windows would get confused
because it would arrive at different relative paths for the
same collection (e.g., "drracket/private" and "drracket\\private").
The portable representation of relative paths is also
normalized.
A "cache.rktd" file still has absolute paths for Planet packages
or links installed with `raco link', but that's not a problem for
packaging a distribution with a portable "cache.rktd".
Also, `raco setup' cleans "cache.rtkd" by removing collections
that are omitted and by not including collections that have no
"info.rkt"/"info.ss" file.
Needed so that `raco setup' doesn't rebuild documents as it
decides, say, that the "games/cards" document depends on
"games/scribblings\\games.scrbl" instead of
"games/scribblings/games.scrbl".
Has this been needed for a while, or did it somehow
become needed with recent changes to `raco setup' to
support `raco link'?
Although the ".plt" format is going to be replaced, the format is
currently viable for distributing collections, and I have wanted
a raw `unpack' command for a while. It was useful today to fix
problems with `raco pack' and collection links.
- simpler and more reliable break protocol
- use logging instead of `eprintf' for non-exception errors
- avoid runtime code duplication in parallel-do macro
- fix some non-tail calls that should be tail calls
- print relevant place in "making" lines
- minor source formatting