MakeDoDoc.tioga
Eric Nickell, September 30, 1986 6:42:11 pm PDT
Last tweaked by Mike Spreitzer on May 12, 1993 9:26 am PDT
Eduardo Pelegri-Llopart July 6, 1989 10:39:33 am PDT
Willie-s, May 18, 1993 3:17 pm PDT
MakeDo
CEDAR 6.0 — FOR INTERNAL XEROX USE ONLY
MakeDo
Mike Spreitzer
© Copyright 1985, 1993 Xerox Corporation. All rights reserved.
Abstract: MakeDo automatically determines dependencies between files, and can issue whatever commands are necessary to bring derived files up to date.
Created by: Mike Spreitzer
Maintained by: Mike Spreitzer <Spreitzer.pa>
Keywords: Make, Dependency, Consistency, Derive, File, DF File, Command, Compile, Bind, Order, Sequence
XEROX  Xerox Corporation
   Palo Alto Research Center
   3333 Coyote Hill Road
   Palo Alto, California 94304

For Internal Xerox Use Only
0. Introduction
MakeDo is a package for determining dependency relations between Cedar objects (usually files), and executing actions to bring these objects up-to-date. It is less ambitious than the System Modeling project, in that it has a lower-level understanding (e.g., source and binary files, instead of Cedar modules), and in that it derives the dependencies itself in a standard way from the environment, rather than reading a model.
The package MakeDo sports only a programmer's interface; the package MakeDoCommands implements a command-tool interface. See MakeDoCommands.tioga for documentation on the command-tool interface.
MakeDo can support the development of PCedar code (.mob, .c and .o's files) and it also has been ported to PCedar. See MakeDoAndPCedar.tioga for further information.
1. Theory
1.1 The Dependency Graph
There are objects. An object is like a variable: it has some interesting contents, and they may vary over time. At any given time, an object has a create date, which is the most recent time at which the object's contents were set. A UNIX file is an example of this. A Cedar FS filename-without-version is another example (take the create date and contents of the current highest version to be the create date and contents of the object). An object may not exist, which means its contents can not be examined, and its create date is MakeDo.notExistTime. This is like a NIL pointer, or the name of a file that does not exist (have any versions).
There are actions. An action has something which can be executed, which so far must be a Command Tool command. An action also has some inputs (objects whose contents it reads), and some outputs (objects whose contents it sets). Some of the inputs may be optional, which means that if they don't exist, the action is happy to not read their contents. An action also has some determiners. These are objects, the contents of which are used in determining some variable aspects of the action. The variable aspects of an action are its executable part and its set of inputs. An example action is [command: "RCompile Rope", inputs: {[]<>P>Basics.BCD, []<>P>PrincOps.BCD, []<>P>Rope.Mesa}, outputs: {[]<>P>Rope.BCD}, determiners: {[]<>P>Rope.Mesa, []<>P>Rope.BCD.Switches}].
There are some simplifying assumptions. Each object is an output of at most one action. None of an action's inputs or determiners depends (transitively) on any of its outputs (among other things, this implies that no object can be both an input and an output of the same action).
There are dependencies. An action depends on its determiners. Effectively, each of an action's outputs depends on all of its inputs, but in fact we think of this in two parts: an action depends on its inputs, and an output depends on the action (if any) that produces it.
There is a concept of modifiability. MakeDo is willing to accept a set of objects which it may modify, with the assumption that it is not allowed to modify any others. MakeDo is also willing to operate without such guidance, and will modify any objects it detects a need to. Thus, each object is either certainly modifiable, certainly not modifiable, or unspecifiedly modifiable.
An invocation of MakeDo (MakeDo.Ensure, to be specific) is given a set of goal objects to work for.
An object is a support for the goals iff some goal(s) transitively depend on that object and that object is certainly not modifiable. MakeDo is willing to accept an alleged set of supports, and will report actual supports left out of that set.
An object is a leaf (of the dependency DAG) if there is no way to derive it from other objects, or if it is certainly not modifiable.
There are two intertwined concepts of current and broken. An object is current if it's in as good shape as possible. A current object is broken if there's still something definitely wrong with it (determining this is somewhat problematical, because MakeDo is sometimes asked to operate without much guidance about what's to be expected).
Loosely speaking, an object is current if either it's A-OK, or there's nothing MakeDo can do about it. Here is a precise formulation:
A leaf is current;
a non-leaf N, with producing action A, is current iff
all of A's determiners are current and
either
some of A's determiners are broken,
or
A's variable parts are derived from the current contents of its determiners, and
all inputs to A are current, and
either
some of A's inputs are broken, or
some of A's mandatory inputs don't exist, or
A fails when executed on the current contents of its inputs, or
Three tries of A on current inputs produce an inconsistent output, or
A claims N is consistent with the current contents of its inputs.
From the above, you can deduce that MakeDo will attempt to execute an action A iff:
all of A's determiners are current, and
none of A's determiners are broken, and
A's variable parts are derived from the current contents of its determiners, and
all of A's inputs are current, and
none of A's inputs are broken, and
all of A's mandatory inputs exist, and
A is not known to fail when executed on the current contents of its inputs, and
A has not yet been tried three times on its current inputs, and
A claims some output N is inconsistent with the current contents of its inputs.
As an added bonus wart, when A claims that output N is consistent with its inputs, MakeDo forgets whether A is known to fail when executed on the current inputs; this is so that if something stupid goes wrong, you can just fix the real problem, then manually make the needed outputs, and MakeDo should recover without explicit prodding (e.g., via MakeSuspicion).
Loosely speaking, a current object is broken if it doesn't exist but is expected to, or if the action that derives it fails, or if it depends on broken objects. Precisely, a current object N is broken iff:
N is certainly modifiable and doesn't exist, or
N is produced by A and is not certainly not modifiable and either:
some of A's inputs or determiners are broken, or
N is certainly modifiable and some of A's mandatory inputs don't exist, or
A claims N is inconsistent with the current contents of its existing inputs and either some of A's mandatory inputs don't exist or A fails when executed on the current contents of its inputs or three tries of A on its current inputs produce inconsistent output.
What is an action class to think about non-existing inputs and/or outputs? In order to make these rules work without modifiability guidance, I think this:
when no inputs at all exist, the output is consistent (even if it doesn't exist) (unless there are other reasons to think the output is broken (this amounts to dependencies not modeled in the dependency graph; these are most likely for rather `fixed' dependencies, such as on compiler version));
otherwise when the output does not exist (but some inputs do), it is inconsistent;
otherwise, non-existing inputs are no cause for inconsistency.
I am not confident that these definitions of current and broken accurately capture what's desired. Comments and suggestions are welcome.
1.2 The Action-Class Registry
Each action is an instance of an action class. An action class specifies the rules for discovering dependencies, the rules for determining when an output is consistent with with the inputs, and the rules for how the variable parts of an action are computed from its determiners. MakeDo maintains a registry of action classes. It initially contains four (MimosaAndCinder, Cc, MakeIt, and Pattern); clients may add more.
The MimosaAndCinder action class understands the derivation of .c2c.c and .mob files from .mesa and .config files.
The Cc action class understands the derivation of .o files from .c files. The way a .o file is constructed from a .c file depends on whether that .c file is a leaf or comes from a .mesa, .config, or .[b]scheme file. The Cc action class understands our conventions about putting the .o file in a subdirectory of the directory containing the .c file. A C compilation action optionally depends on a file named foo.o.switches (where foo.o is the .o result); if present, this file contains (in its first and only non-blank line) extra switches to give to the C compilation command. If the .c file is a leaf or is from a .mesa or .config file, the switches are given as the "-msw" argument to the MMCC* command. Examples of contents for the .switches file are
-c -g
-c -O1
For .c files from other sources, the .switches file is ignored.
The MakeIt action class produces file foo by executing file foo.MakeIt with the directory containing foo current. File create dates are used to determine when outputs are consistent with inputs. The .MakeIt file should contain a line of the form ``-- { dependency1 dependency2 ... dependencyn }'' to declare its dependencies; those names, if relative, are relative to the directory containing foo. Careful construction of the MakeIt files is necessary to ensure proper execution. Also note that foo.MakeIt must exist before MakeDo will will build the dependency between foo.MakeIt and foo. (Thus, the MakeIt action class, unfortunately, will not build a two-step dependency between foo.MakeIt.MakeIt and foo, unless some version of the file foo.makeIt is present.)
There is a Pattern action class, which contains simple rules of the form ``file result is produced by command cmd from files named inp1, inp2, ... inpn'', where ``result'' is a text pattern with name-defining subpatterns (like the ``Target'' field of the EditTool), and the cmd and inp1, inp2, ... inpn contain references to the names defined in result (like the ``Replacement'' field of the EditTool). The command is executed with the directory containing result current. Here are the rules currently in place:
result     cmd         inputs
<d:**>'><b:**>.nm ! nm -ap <b>.o '> <b>.nm   <d>'><b>.o
<d:**>'><b:**>-scc.o ! cc -g -c <b>.c -o <b>-scc.o  <d>'><b>.c
<d:**>'><b:**>-gcc.o ! cc -g -c <b>.c -o <b>-gcc.o  <d>'><b>.c
<d:**>'><b:*>.dvi ! latex <b>.tex      <d>'><b>.tex
<d:**>'><b:*>.4050ps ! 4050dvips <b>.dvi '> <b>.4050ps <d>'><b>.dvi
<d:**>'><b:*>.DTps ! DTdvips <b>.dvi '> <b>.DTps <d>'><b>.dvi
<d:**>'><b:*>.LWps ! dvips <b>.dvi '> <b>.LWps <d>'><b>.dvi
<d:**>'>sun4←solaris'><b:**>.so<v:**>
      ComplexCc -out <d>'>sun4←solaris'><b>.so<v> -in <d>'>sun4←solaris'><b>.c2c.o -class sun4←solaris -cSwitch "-G"
              <d>'>sun4←solaris'><b>.c2c.o
1.3 Bringing Things Up-To-Date
The basic operation of MakeDo is to simultaneously derive the dependency graph and make object current. Given a set of goals, and a modifiability spec, MakeDo makes the goals current, and returns counts of how many are broken and how many are not.
1.4 Incrementality
Although conceptually at all times an object has well-defined currentness, brokenness, and producer, MakeDo does not try to know these things at all times. However, once it computes these things, it does not forget them. When computing new information, or determining what to do, MakeDo stops exploring the dependency graph where all the relevant values are known and nothing needs to be done.
1.4.1 The Modifiability Bug
One of the contributors to the currency computation is the modifiability. The modifiability is unique in having the unfortunate property of coming from the user who is asking for something to be done, instead of from the dependency graph itself. It is expected that, for any given object, the user is not really interested in changing its modifiability (very often), although the user may direct MakeDo at alternating tasks, with a different modifiability for each, but (probably, mostly) non-conflicting modifiability for the intersecting objects, if any. Comforted by this assumption, MakeDo stores modifiability on the objects. Now, strictly speaking, this means that every time modifiability is specified, MakeDo should explore the entire dependency graph and update the modifiability stored there --- and you've probably already guessed that it doesn't. What it does do is update the modifiability of any objects it happens to touch for other reasons. It is hoped that this comes close enough for most purposes --- please complain if it's not.
1.5 The object-class Registry
Each object belongs to an object class. An object class is responsible for being able to report the current create date of any of its members. MakeDo remembers such reports, and only asks the object class again if there is reason to suspect the create date may have changed. There is a procedure in the MakeDo interface that an object class may call to make MakeDo suspect that an object's create date may have changed. An object class could monitor all of its members, and poke MakeDo whenever any of them changes. The file object class does this. Alternatively, one could suspect create date changes in all the relevant objects (supposing one could enumerate this set) just before calling MakeDo.Ensure.
1.6 Parallelism
When bringing things up-to-date, MakeDo is willing to employ additional processes, up to some client-specified limit. The reason for this is that while doing the executable part of an action, that process does nothing else. With multiple processes, you could be executing multiple actions at once (e.g., taking advantage of multiple compiler servers).
When MakeDo forks an auxiliary process, it is for the purpose of executing one action --- when that finishes, the process is de-allocated. Before forking, MakeDo prints a message in the command tool indicating that it is about to fork a process, and what action it will execute. Then, in a container viewer maintained for just this purpose, named "MakeDoAuxBox", a typescript viewer is created, and the action is executed in that typescript. When it is done, the typescript is deleted. The output from the auxiliary process is also gathered in a buffer, and may be printed all at once in the original command tool when the process finishes. For more details on the behavior of the MakeDoAuxBox, see the upcoming section entitled ``The Aux Box''.
MakeDo exercises two kinds of restraint in forking auxiliary processes. First, it will have no more than a user-specified number of processes processes forked at a given time. Secondly, MakeDo tries to avoid running the user out of MDS. Every stack frame is allocated from MDS, so the more processes there are, and the deeper their stacks, the more MDS is needed. (Most) MDS that has been allocated for stack frames is permanantly assigned to a stack-frame sub-allocator; this means successive processes can use the same MDS space, but that MDS can never be used for anything besides stack frames. Thus, when MakeDo has heretofore had at most n-1 concurrent forked auxiliary processes, and it's about to have n, MakeDo thinks that during the execution of that n'th process, another increment of MDS is going to be dedicated to the stack frame sub-allocator. The size of that increment is user-specified (and is a hackish guess --- there's no dependency on what that forked process will be doing). Furthermore, because stack depth will vary from action to action, MakeDo knows that when it forks a new auxiliary process, that process may dedicate more MDS to the stack frame sub-allocator, even if it doesn't set a new record for the numer of concurrent processes. And the amount is again a user-specified guess. Also, MakeDo will not fork an auxiliary process if the MDS availability will be below a user-specified threshold.
1.7 Interrupting
Some MakeDo operations deal well with being interrupted, and some don't. For the real truth, see the descriptions of the individual commands.
When an action is forked, a button is created just to the left of its typescript. This button's name is an exclamation-mark (!), and its function is to abort that action. Another button, whose name is a pair of exclamation-marks (!!), causes MakeDo to pretend that action has completed, even though it hasn't.
2. The Aux Box
Here's an example AuxBox:
[Artwork node; type 'Artwork on' to command tool]
Visible in this snapshot are the areas for 6 auxialliary processes. For each process, there is a typescript, and three buttons (named "?", "!", and "!!"). 5 of the six also have server monitors, each of which is comprised of a server name and statistics bar.
Each process is executing a command-tool command. The output of each command, in addition to being printed in its typescript, is kept in a buffer. Normal termination of that process causes the buffer to be discarded, and a simple message to be printed in the original command tool. However, if the command fails or is abandoned, the buffered output is copied to the original command tool. This copying of the buffered output can also be forced by setting the user profile entry MakeDo.AlwaysGush to TRUE or hitting the question-mark button (?).
Hitting the exclamation-mark button (!) invokes Process.Abort on that process. Note that some commands are infrequently or never sensitive to this. If hitting the exclamation-mark button is getting you nowhere, you have no other way to stop the process. However, if the process seems to have hung itself, and is making no progress anyway, you can cause MakeDo to forget about it by hitting the double-exclamation-mark button (!!). Of course, if that process isn't really hung, and later tries to do some I/O to its (now extinct) typescript, you'll get an error (IOCommonImpl.Error[ec: StreamClosed, ...]). Note also that if MakeDo is still active when you !!, it is likely to turn right around and try that same action again.
For a description of the server monitors, see SummonerMonitorDoc.
3. Programmer's Interface
See the interface module MakeDo.
4. User Profile Entries
MakeDo.AuxilliaryProcessAllocation: INT ← 10
This is the initial setting for the limit on the number of additional processes MakeDo is willing to employ. It can be later modified by Cedar procedure calls or command switches.
MakeDo.ProcessFirstMDSCost: INT ← 8
This is the initial setting for the estimate of the MDS cost of an auxiliary process that brings the number of concurrent auxiliary processes to a new high. It can be later modified by Cedar procedure calls or command switches.
MakeDo.ProcessRestMDSCost: INT ← 1
This is the initial setting for the estimate of the MDS cost of an auxiliary process that doesn't bring the number of concurrent auxiliary processes to a new high. It can be later modified by Cedar procedure calls or command switches.
MakeDo.MDSThreshold: INT ← 3
This is the initial setting for the limit on the amount of MDS that must remain when a process is forked. It can be later modified by Cedar procedure calls or command switches.
MakeDo.AlwaysGush: BOOLFALSE
When TRUE, all the output of a forked command is copied back to the originating typescript, regardless of whether the forked command failed.
MakeDo.DeleteEmptyAuxBox: BOOLTRUE
When TRUE, the container for forked typescripts will be deleted whenever the number of forked activities goes to 0 at the end of a job.
MakeDo.MonitorSummoner: BOOLTRUE
While TRUE, forked activities that use the Summoner (Compute Server) get a miniature watch tool directed at the server added to their containers.
MakeDo.IconFile: Token ← "MakeDo-MTV.Icons"
Names the file used for the icons. If the file name is relative, it is relative to the installation directory of MakeDo (i.e. ///7.0/Commands/, if you're kosher). The 0'th icon is used when there are 0 forked processes, the 1'th when there are 1, and so on; the last icon is used as a last resort. Note that since Viewers is only willing to conceive of a limited number (64) of icon-types, you don't want to try changing this a lot in one VM.
MakeDo.Reporter: Token ← "Viewers"
Names the method to use when reporting the progress of MakeDo. An alternative to "Viewers" is "Files," which reports on log files. "Files" is mainly intended to be used in PCedar (using something like tail -f), and the log files are of the form "/usr/tmp/MakeDoLogXXX" on PCedar and "///Temp/MakeDoLogXXX" in PrincOps.
MakeDo.Libraries: Token ← "-lxrc /usr/lib/libm.a"
What libraries to use by default. Set to "" if no libraries are wanted.
MakeDo.dbxDebug: BOOL ← FALSE
Switch used in generating code for PCedar. See MakeDoAndPCedarDoc.tioga.
5. Analysis
5.1. MDS Consumption
I twice conducted the experiment of making a large package with successively larger process limits, to see how much MDS was consumed for a given number of processes. The MDS consumption was derived by differencing the MDS availability reported by the Watch Tool. In both experiments, other, relatively innoucuous, activities were carried on in parallel. These were: Tioga viewer creation, editing, and saving; creation and deletion of command tools; issuing Summoner control commands; and using Snoopy. In second experiment, the concurrent activity was heavier in the early phases, and lighter in the later. In the first experiment, there were 5 compute servers available during the later phases; in the second, there were 8. First come the summaries, then the typescripts.
Incremental MDS usage & Cumulative MDS usage & elapsed seconds
Process limit Expt. 1  Expt. 2
-p 1  4 & 4
-p 2  1 & 5  13 & 13 & 402
-p 2    1 & 14 & 393
-p 3  6 & 11 & 323 8 & 22 & 259
-p 4  5 & 16 & 264 3 & 25 & 220
-p 5    9 & 34 & 189
-p 5    1 & 35 & 189
-p 6  11 & 27 & 244 6 & 41 & 199
-p 7  6 & 33 & 229 9 & 50 & 176
-p 8    1 & 51 & 183
% test 1
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

> ← WatchStats.GetWatchStats[]
[idleCount: 150398104, diskFree: 14805, mdsFree: 125B (85), gfiFree: 505B (325), vmFree: 144405B (51461), vmRun: 135400B (47872), cpuLoad: 0.4425428]
> MakeDo -p $1 -rgom NewSets.DF
>>
>>
>> Install MakeDo
>> Install ListerUtils MidStop SummonerMonitor
>> Run ListerUtilsImpl
Ran: [Cedar]<CedarChest7.0>Lister>ListerUtilsImpl.bcd!4
>> Run MidStopImpl
Ran: [Cedar]<CedarChest7.0>MidStop>MidStopImpl.BCD!2
>> Run MultiBarsImpl ChildStackersImpl SummonerMonitorImpl
Ran: [Cedar]<CedarChest7.0>SummonerMonitor>MultiBarsImpl.BCD!2
Ran: [Cedar]<CedarChest7.0>SummonerMonitor>ChildStackersImpl.BCD!2
Ran: [Cedar]<CedarChest7.0>SummonerMonitor>SummonerMonitorImpl.BCD!11
Michehl's Theorem:
 Less is more.

Forgetfulness: A gift of God bestowed upon debtors in compensation for
their destitution of conscience.

>> Run MakeDoPackage
Ran: [Cedar]<CedarChest7.0>MakeDo>MakeDoPackage.BCD!22
>> Run -a MakeDoCommands
Ran: [Cedar]<CedarChest7.0>MakeDoCommands>MakeDoCommands.BCD!2
>>
1 goal OK; 0 not.
> ← SafeStorage.ReclaimCollectibleObjects[]

> ← WatchStats.GetWatchStats[]
[idleCount: 155491730, diskFree: 14799, mdsFree: 110B (72), gfiFree: 453B (299), vmFree: 141765B (50165), vmRun: 135400B (47872), cpuLoad: 0.6454767]
>
% test 1
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

> ← WatchStats.GetWatchStats[]
[idleCount: 157322306, diskFree: 14803, mdsFree: 110B (72), gfiFree: 453B (299), vmFree: 142056B (50222), vmRun: 135400B (47872), cpuLoad: 0.1564792]
> MakeDo -p $1 -rgom NewSets.DF
1 goal OK; 0 not.
> ← SafeStorage.ReclaimCollectibleObjects[]

> ← WatchStats.GetWatchStats[]
[idleCount: 157348091, diskFree: 14803, mdsFree: 110B (72), gfiFree: 453B (299), vmFree: 142061B (50225), vmRun: 135400B (47872), cpuLoad: 0.7286063]
>
% test 1
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

> ← WatchStats.GetWatchStats[]
[idleCount: 182081113, diskFree: 14743, mdsFree: 110B (72), gfiFree: 453B (299), vmFree: 142012B (50186), vmRun: 135400B (47872), cpuLoad: 0.413203]
> MakeDo -p $1 -rgom NewSets.DF
Forking RCompile Sets
Done with RCompile Sets
Forking RCompile BiRels
Done with RCompile BiRels
Forking RCompile SetsSimpleImpl
Done with RCompile SetsSimpleImpl
Forking RCompile NewSetsPrinting
Done with RCompile NewSetsPrinting
Forking RCompile SetsByBiRels
Done with RCompile SetsByBiRels
Forking RCompile ValueHashTables
Done with RCompile ValueHashTables
Forking RCompile SetsAsBiRels
Done with RCompile SetsAsBiRels
Forking RCompile BiRelsHashed
Done with RCompile BiRelsHashed
Forking RCompile ValueHashTablesImpl
Done with RCompile ValueHashTablesImpl
Forking RCompile BiRelsAsSets
Done with RCompile BiRelsAsSets
Forking RCompile BiRelCombining
Done with RCompile BiRelCombining
Forking RCompile BiRelShifting
Done with RCompile BiRelShifting
Forking RCompile BiRelComposition
Done with RCompile BiRelComposition
Forking RCompile BiRelsInverting
Done with RCompile BiRelsInverting
Forking RCompile BiRelVectors
Done with RCompile BiRelVectors
Forking RCompile BiRelBasics
Done with RCompile BiRelBasics
Forking RCompile BiRelsSimpleImpl
Done with RCompile BiRelsSimpleImpl
Forking RCompile BiRelsPrivate
Done with RCompile BiRelsPrivate
Forking RCompile BiRelDefaults2
Done with RCompile BiRelDefaults2
Forking RCompile BiRelScanning
Done with RCompile BiRelScanning
Forking RCompile BiRelDefaults
Done with RCompile BiRelDefaults
Forking RCompile BiRelsImpl
Done with RCompile BiRelsImpl
Forking RCompile SetInsulationImpl
Done with RCompile SetInsulationImpl
Forking RCompile BiRelsBase
Done with RCompile BiRelsBase
Forking RCompile SetCombining
Done with RCompile SetCombining
Forking RCompile SetsImpl
Done with RCompile SetsImpl
Forking Bind SetsPackage
Done with Bind SetsPackage
1 goal OK; 0 not.
> ← SafeStorage.ReclaimCollectibleObjects[]

> ← WatchStats.GetWatchStats[]
[idleCount: 378313921, diskFree: 12544, mdsFree: 104B (68), gfiFree: 413B (267), vmFree: 140731B (49625), vmRun: 135055B (47661), cpuLoad: 0.5819071]
>
% test 2
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

> ← WatchStats.GetWatchStats[]
[idleCount: 385481476, diskFree: 12488, mdsFree: 104B (68), gfiFree: 413B (267), vmFree: 141052B (49706), vmRun: 135055B (47661), cpuLoad: 0.3765281]
> MakeDo -p $1 -rgom NewSets.DF
Forking RCompile Sets
Done with RCompile Sets
Forking RCompile BiRels
Forking RCompile SetsSimpleImpl
Done with RCompile SetsSimpleImpl
Forking RCompile SetsImpl
Done with RCompile BiRels
Forking RCompile NewSetsPrinting
Done with RCompile NewSetsPrinting
Forking RCompile SetsByBiRels
Done with RCompile SetsImpl
Forking RCompile ValueHashTables
Done with RCompile ValueHashTables
Forking RCompile SetsAsBiRels
Done with RCompile SetsByBiRels
Forking RCompile BiRelsHashed
Done with RCompile SetsAsBiRels
Forking RCompile ValueHashTablesImpl
Done with RCompile ValueHashTablesImpl
Forking RCompile BiRelsAsSets
Done with RCompile BiRelsHashed
Forking RCompile BiRelCombining
Done with RCompile BiRelsAsSets
Forking RCompile BiRelShifting
Done with RCompile BiRelCombining
Forking RCompile BiRelComposition
Done with RCompile BiRelShifting
Forking RCompile BiRelsInverting
Done with RCompile BiRelComposition
Forking RCompile BiRelVectors
Done with RCompile BiRelsInverting
Forking RCompile BiRelBasics
Done with RCompile BiRelBasics
Forking RCompile BiRelsSimpleImpl
Done with RCompile BiRelVectors
Forking RCompile BiRelsPrivate
Done with RCompile BiRelsPrivate
Forking RCompile BiRelDefaults2
Done with RCompile BiRelsSimpleImpl
Forking RCompile BiRelScanning
Done with RCompile BiRelDefaults2
Forking RCompile BiRelDefaults
Done with RCompile BiRelScanning
Forking RCompile BiRelsImpl
Done with RCompile BiRelDefaults
Forking RCompile SetInsulationImpl
Done with RCompile BiRelsImpl
Forking RCompile BiRelsBase
Done with RCompile SetInsulationImpl
Forking RCompile SetCombining
Done with RCompile BiRelsBase
Done with RCompile SetCombining
Forking Bind SetsPackage
Done with Bind SetsPackage
1 goal OK; 0 not.
> ← SafeStorage.ReclaimCollectibleObjects[]

> ← WatchStats.GetWatchStats[]
[idleCount: 486161329, diskFree: 12484, mdsFree: 103B (67), gfiFree: 413B (267), vmFree: 140533B (49499), vmRun: 135055B (47661), cpuLoad: 0.6943765]
>
% test 3
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

> ← WatchStats.GetWatchStats[]
[idleCount: 503938665, diskFree: 12488, mdsFree: 103B (67), gfiFree: 413B (267), vmFree: 140634B (49564), vmRun: 134167B (47223), cpuLoad: 0.1589242]
> ← BasicTime.Now[]
December 7, 1987 17:38:45
> MakeDo -p $1 -rgom NewSets.DF
Forking RCompile Sets
Done with RCompile Sets
Forking RCompile BiRels
Forking RCompile SetsSimpleImpl
Forking RCompile SetsImpl
Done with RCompile BiRels
Forking RCompile NewSetsPrinting
Done with RCompile SetsSimpleImpl
Forking RCompile SetsByBiRels
Done with RCompile SetsImpl
Forking RCompile ValueHashTables
Done with RCompile NewSetsPrinting
Forking RCompile SetsAsBiRels
Done with RCompile ValueHashTables
Forking RCompile BiRelsAsSets
Done with RCompile SetsByBiRels
Forking RCompile BiRelsHashed
Done with RCompile BiRelsAsSets
Forking RCompile ValueHashTablesImpl
Done with RCompile SetsAsBiRels
Forking RCompile BiRelCombining
Done with RCompile BiRelsHashed
Forking RCompile BiRelShifting
Done with RCompile ValueHashTablesImpl
Forking RCompile BiRelComposition
Done with RCompile BiRelShifting
Forking RCompile BiRelsInverting
Done with RCompile BiRelCombining
Forking RCompile BiRelVectors
Done with RCompile BiRelComposition
Forking RCompile BiRelBasics
Done with RCompile BiRelsInverting
Forking RCompile BiRelsSimpleImpl
Done with RCompile BiRelBasics
Forking RCompile BiRelsPrivate
Done with RCompile BiRelsPrivate
Forking RCompile BiRelDefaults2
Done with RCompile BiRelsSimpleImpl
Forking RCompile BiRelScanning
Done with RCompile BiRelDefaults2
Forking RCompile BiRelDefaults
Done with RCompile BiRelVectors
Forking RCompile BiRelsImpl
Done with RCompile BiRelScanning
Forking RCompile SetInsulationImpl
Done with RCompile SetInsulationImpl
Forking RCompile BiRelsBase
Done with RCompile BiRelDefaults
Forking RCompile SetCombining
Done with RCompile BiRelsBase
Done with RCompile BiRelsImpl
Done with RCompile SetCombining
Forking Bind SetsPackage
Done with Bind SetsPackage
1 goal OK; 0 not.
> ← BasicTime.Now[]
December 7, 1987 17:44:08
> ← SafeStorage.ReclaimCollectibleObjects[]

> ← WatchStats.GetWatchStats[]
[idleCount: 564868162, diskFree: 12484, mdsFree: 75B (61), gfiFree: 413B (267), vmFree: 140055B (49197), vmRun: 132737B (46559), cpuLoad: 0.5476772]
>
% test 4
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

> ← WatchStats.GetWatchStats[]
[idleCount: 569246723, diskFree: 12488, mdsFree: 75B (61), gfiFree: 413B (267), vmFree: 140156B (49262), vmRun: 132737B (46559), cpuLoad: 9.046453e-2]
> ← BasicTime.Now[]
December 7, 1987 17:44:24
> MakeDo -p $1 -rgom NewSets.DF
Forking RCompile Sets
Done with RCompile Sets
Forking RCompile BiRels
Forking RCompile SetsSimpleImpl
Forking RCompile SetsImpl
Done with RCompile BiRels
Forking RCompile NewSetsPrinting
Forking RCompile SetsByBiRels
Done with RCompile SetsSimpleImpl
Forking RCompile ValueHashTables
Done with RCompile ValueHashTables
Forking RCompile SetsAsBiRels
Done with RCompile NewSetsPrinting
Forking RCompile BiRelsHashed
Done with RCompile SetsImpl
Forking RCompile ValueHashTablesImpl
Done with RCompile SetsByBiRels
Forking RCompile BiRelsAsSets
Done with RCompile SetsAsBiRels
Forking RCompile BiRelCombining
Done with RCompile BiRelsHashed
Forking RCompile BiRelShifting
Done with RCompile BiRelsAsSets
Forking RCompile BiRelComposition
Done with RCompile ValueHashTablesImpl
Forking RCompile BiRelsInverting
Done with RCompile BiRelShifting
Forking RCompile BiRelVectors
Done with RCompile BiRelComposition
Forking RCompile BiRelBasics
Done with RCompile BiRelCombining
Forking RCompile BiRelsSimpleImpl
Done with RCompile BiRelsInverting
Forking RCompile BiRelsPrivate
Done with RCompile BiRelsPrivate
Forking RCompile BiRelDefaults2
Done with RCompile BiRelBasics
Forking RCompile BiRelScanning
Done with RCompile BiRelVectors
Forking RCompile BiRelDefaults
Done with RCompile BiRelDefaults2
Forking RCompile BiRelsImpl
Done with RCompile BiRelScanning
Forking RCompile SetInsulationImpl
Done with RCompile BiRelsSimpleImpl
Forking RCompile BiRelsBase
Done with RCompile BiRelDefaults
Forking RCompile SetCombining
Done with RCompile SetInsulationImpl
Done with RCompile BiRelsBase
Done with RCompile BiRelsImpl
Done with RCompile SetCombining
Forking Bind SetsPackage
Done with Bind SetsPackage
1 goal OK; 0 not.
> ← BasicTime.Now[]
December 7, 1987 17:48:48
> ← SafeStorage.ReclaimCollectibleObjects[]

> ← WatchStats.GetWatchStats[]
[idleCount: 608029576, diskFree: 12488, mdsFree: 70B (56), gfiFree: 413B (267), vmFree: 137644B (49060), vmRun: 132046B (46118), cpuLoad: 0.8899756]
>
% test 6
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

> ← WatchStats.GetWatchStats[]
[idleCount: 614826445, diskFree: 12488, mdsFree: 70B (56), gfiFree: 413B (267), vmFree: 137746B (49126), vmRun: 132046B (46118), cpuLoad: 0.2322738]
> ← BasicTime.Now[]
December 7, 1987 17:49:13
> MakeDo -p $1 -rgom NewSets.DF
Forking RCompile Sets
Done with RCompile Sets
Forking RCompile BiRels
Forking RCompile SetsSimpleImpl
Forking RCompile SetsImpl
Done with RCompile SetsSimpleImpl
Done with RCompile BiRels
Forking RCompile NewSetsPrinting
Forking RCompile SetsByBiRels
Forking RCompile ValueHashTables
Forking RCompile SetsAsBiRels
Forking RCompile BiRelsAsSets
Done with RCompile ValueHashTables
Forking RCompile BiRelCombining
Done with RCompile SetsImpl
Done with RCompile NewSetsPrinting
Done with RCompile BiRelsAsSets
Forking RCompile BiRelsHashed
Done with RCompile SetsAsBiRels
Done with RCompile SetsByBiRels
Forking RCompile ValueHashTablesImpl
Forking RCompile BiRelShifting
Forking RCompile BiRelComposition
Forking RCompile BiRelsInverting
Done with RCompile ValueHashTablesImpl
Forking RCompile BiRelVectors
Done with RCompile BiRelShifting
Forking RCompile BiRelBasics
Done with RCompile BiRelComposition
Forking RCompile BiRelsSimpleImpl
Done with RCompile BiRelsInverting
Forking RCompile BiRelsPrivate
Done with RCompile BiRelsHashed
Forking RCompile BiRelDefaults2
Done with RCompile BiRelsPrivate
Forking RCompile SetInsulationImpl
Done with RCompile BiRelCombining
Done with RCompile BiRelBasics
Forking RCompile BiRelScanning
Forking RCompile BiRelDefaults
Done with RCompile BiRelVectors
Done with RCompile BiRelsSimpleImpl
Forking RCompile BiRelsImpl
Forking RCompile BiRelsBase
Done with RCompile SetInsulationImpl
Forking RCompile SetCombining
Done with RCompile BiRelDefaults2
Done with RCompile BiRelScanning
Done with RCompile BiRelsBase
Done with RCompile BiRelDefaults
Done with RCompile BiRelsImpl
Done with RCompile SetCombining
Forking Bind SetsPackage
Done with Bind SetsPackage
1 goal OK; 0 not.
> ← BasicTime.Now[]
December 7, 1987 17:53:17
> ← SafeStorage.ReclaimCollectibleObjects[]

> ← WatchStats.GetWatchStats[]
[idleCount: 647155965, diskFree: 12488, mdsFree: 55B (45), gfiFree: 413B (267), vmFree: 137124B (48724), vmRun: 133141B (46689), cpuLoad: 0.7555012]
>
% test 7
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

> ← WatchStats.GetWatchStats[]
[idleCount: 655604531, diskFree: 12488, mdsFree: 55B (45), gfiFree: 413B (267), vmFree: 137200B (48768), vmRun: 133141B (46689), cpuLoad: 0.5525672]
> ← BasicTime.Now[]
December 7, 1987 17:53:45
> MakeDo -p $1 -rgom NewSets.DF
Forking RCompile Sets
Done with RCompile Sets
Forking RCompile BiRels
Forking RCompile SetsSimpleImpl
Forking RCompile SetsImpl
Done with RCompile SetsSimpleImpl
Done with RCompile BiRels
Forking RCompile NewSetsPrinting
Forking RCompile SetsByBiRels
Forking RCompile ValueHashTables
Forking RCompile SetsAsBiRels
Forking RCompile BiRelsAsSets
Forking RCompile BiRelCombining
Done with RCompile SetsImpl
Forking RCompile BiRelShifting
Done with RCompile ValueHashTables
Done with RCompile NewSetsPrinting
Forking RCompile BiRelComposition
Forking RCompile BiRelsHashed
Done with RCompile SetsByBiRels
Forking RCompile ValueHashTablesImpl
Done with RCompile SetsAsBiRels
Forking RCompile BiRelsInverting
Done with RCompile BiRelShifting
Done with RCompile BiRelsAsSets
Forking RCompile BiRelVectors
Forking RCompile BiRelBasics
Done with RCompile BiRelComposition
Done with RCompile ValueHashTablesImpl
Forking RCompile BiRelsSimpleImpl
Forking RCompile BiRelsPrivate
Done with RCompile BiRelsInverting
Forking RCompile BiRelDefaults2
Done with RCompile BiRelsHashed
Forking RCompile SetInsulationImpl
Done with RCompile BiRelsPrivate
Forking RCompile BiRelsBase
Done with RCompile BiRelBasics
Forking RCompile BiRelScanning
Done with RCompile BiRelCombining
Forking RCompile BiRelDefaults
Done with RCompile SetInsulationImpl
Forking RCompile BiRelsImpl
Done with RCompile BiRelsSimpleImpl
Done with RCompile BiRelVectors
Forking RCompile SetCombining
Done with RCompile BiRelDefaults2
Done with RCompile BiRelScanning
Done with RCompile BiRelsBase
Done with RCompile BiRelDefaults
Done with RCompile BiRelsImpl
Done with RCompile SetCombining
Forking Bind SetsPackage
Done with Bind SetsPackage
1 goal OK; 0 not.
> ← BasicTime.Now[]
December 7, 1987 17:57:34
> ← SafeStorage.ReclaimCollectibleObjects[]

> ← WatchStats.GetWatchStats[]
[idleCount: 679365833, diskFree: 12484, mdsFree: 47B (39), gfiFree: 413B (267), vmFree: 136551B (48489), vmRun: 130524B (45396), cpuLoad: 0.6821516]
>
%
% test 2
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 111134621, diskFree: 9915, mdsFree: 124B (84), gfiFree: 502B (322), vmFree: 144131B (51289), vmRun: 135400B (47872), cpuLoad: 0.6356968]
> ← BasicTime.Now[]
December 8, 1987 8:52:55
> MakeDo -p $1 -rgom NewSets.DF
>>
>>
>> Install MakeDo
>> Install ListerUtils MidStop SummonerMonitor
>> Run ListerUtilsImpl
Ran: [Cedar]<CedarChest7.0>Lister>ListerUtilsImpl.bcd!4
>> Run MidStopImpl
Ran: [Cedar]<CedarChest7.0>MidStop>MidStopImpl.BCD!2
>> Run MultiBarsImpl ChildStackersImpl SummonerMonitorImpl
Ran: [Cedar]<CedarChest7.0>SummonerMonitor>MultiBarsImpl.BCD!2
Ran: [Cedar]<CedarChest7.0>SummonerMonitor>ChildStackersImpl.BCD!2
Ran: [Cedar]<CedarChest7.0>SummonerMonitor>SummonerMonitorImpl.BCD!11
>> Run MakeDoPackage
Ran: [Cedar]<CedarChest7.0>MakeDo>MakeDoPackage.BCD!22
(Sam) Brown's Law:
 Never offend people with style when you can offend them with substance.

>> Run -a MakeDoCommands
Ran: [Cedar]<CedarChest7.0>MakeDoCommands>MakeDoCommands.BCD!2
>>
1 goal OK; 0 not.
> ← BasicTime.Now[]
December 8, 1987 8:53:40
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 116871213, diskFree: 9915, mdsFree: 120B (80), gfiFree: 450B (296), vmFree: 141574B (50044), vmRun: 135400B (47872), cpuLoad: 0.799511]
>
% test 2
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 122445022, diskFree: 9915, mdsFree: 120B (80), gfiFree: 450B (296), vmFree: 141614B (50060), vmRun: 135400B (47872), cpuLoad: 0.586797]
> ← BasicTime.Now[]
December 8, 1987 8:54:01
> MakeDo -p $1 -rgom NewSets.DF
Forking RCompile Sets
Done with RCompile Sets
Forking RCompile BiRels
Forking RCompile SetsSimpleImpl
Done with RCompile SetsSimpleImpl
Forking RCompile SetsImpl
Done with RCompile BiRels
Forking RCompile NewSetsPrinting
Done with RCompile NewSetsPrinting
Forking RCompile SetsByBiRels
Done with RCompile SetsImpl
Forking RCompile ValueHashTables
Done with RCompile SetsByBiRels
Forking RCompile SetsAsBiRels
Done with RCompile ValueHashTables
Forking RCompile BiRelsAsSets
Done with RCompile SetsAsBiRels
Forking RCompile BiRelsHashed
Done with RCompile BiRelsAsSets
Forking RCompile ValueHashTablesImpl
Done with RCompile ValueHashTablesImpl
Forking RCompile BiRelCombining
Done with RCompile BiRelsHashed
Forking RCompile BiRelShifting
Done with RCompile BiRelShifting
Forking RCompile BiRelComposition
Done with RCompile BiRelCombining
Forking RCompile BiRelsInverting
Done with RCompile BiRelsInverting
Forking RCompile BiRelVectors
Done with RCompile BiRelComposition
Forking RCompile BiRelBasics
Done with RCompile BiRelBasics
Forking RCompile BiRelsSimpleImpl
Done with RCompile BiRelVectors
Forking RCompile BiRelsPrivate
Done with RCompile BiRelsPrivate
Forking RCompile BiRelDefaults2
Done with RCompile BiRelsSimpleImpl
Forking RCompile BiRelScanning
Done with RCompile BiRelDefaults2
Forking RCompile BiRelDefaults
Done with RCompile BiRelScanning
Forking RCompile BiRelsImpl
Done with RCompile BiRelDefaults
Forking RCompile SetInsulationImpl
Done with RCompile BiRelsImpl
Forking RCompile BiRelsBase
Done with RCompile SetInsulationImpl
Forking RCompile SetCombining
Done with RCompile BiRelsBase
Done with RCompile SetCombining
Forking Bind SetsPackage
Done with Bind SetsPackage
1 goal OK; 0 not.
> ← BasicTime.Now[]
December 8, 1987 9:00:42
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 205877483, diskFree: 9914, mdsFree: 103B (67), gfiFree: 410B (264), vmFree: 140573B (49531), vmRun: 133670B (47032), cpuLoad: 0.8141809]
>
% test 2
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 212655893, diskFree: 9854, mdsFree: 103B (67), gfiFree: 410B (264), vmFree: 140633B (49563), vmRun: 133670B (47032), cpuLoad: 0.4352078]
> ← BasicTime.Now[]
December 8, 1987 9:01:05
> MakeDo -p $1 -rgom NewSets.DF
Forking RCompile Sets
Done with RCompile Sets
Forking RCompile BiRels
Forking RCompile SetsSimpleImpl
Done with RCompile SetsSimpleImpl
Forking RCompile SetsImpl
Done with RCompile BiRels
Forking RCompile NewSetsPrinting
Done with RCompile NewSetsPrinting
Forking RCompile SetsByBiRels
Done with RCompile SetsImpl
Forking RCompile ValueHashTables
Done with RCompile SetsByBiRels
Forking RCompile SetsAsBiRels
Done with RCompile ValueHashTables
Forking RCompile BiRelsAsSets
Done with RCompile BiRelsAsSets
Forking RCompile BiRelsHashed
Done with RCompile SetsAsBiRels
Forking RCompile ValueHashTablesImpl
Done with RCompile ValueHashTablesImpl
Forking RCompile BiRelCombining
Done with RCompile BiRelsHashed
Forking RCompile BiRelShifting
Done with RCompile BiRelCombining
Forking RCompile BiRelComposition
Done with RCompile BiRelShifting
Forking RCompile BiRelsInverting
Done with RCompile BiRelComposition
Forking RCompile BiRelVectors
Done with RCompile BiRelsInverting
Forking RCompile BiRelBasics
Done with RCompile BiRelBasics
Forking RCompile BiRelsSimpleImpl
Done with RCompile BiRelVectors
Forking RCompile BiRelsPrivate
Done with RCompile BiRelsPrivate
Forking RCompile BiRelDefaults2
Done with RCompile BiRelsSimpleImpl
Forking RCompile BiRelScanning
Done with RCompile BiRelDefaults2
Forking RCompile BiRelDefaults
Done with RCompile BiRelScanning
Forking RCompile BiRelsImpl
Done with RCompile BiRelDefaults
Forking RCompile SetInsulationImpl
Done with RCompile SetInsulationImpl
Forking RCompile BiRelsBase
Done with RCompile BiRelsImpl
Forking RCompile SetCombining
Done with RCompile BiRelsBase
Done with RCompile SetCombining
Forking Bind SetsPackage
Done with Bind SetsPackage
1 goal OK; 0 not.
> ← BasicTime.Now[]
December 8, 1987 9:07:38
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 293232655, diskFree: 9854, mdsFree: 102B (66), gfiFree: 410B (264), vmFree: 140262B (49330), vmRun: 132611B (46473), cpuLoad: 0.613692]
>
% SetFree 20000
% SetFree 10000
% test 3
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 366926693, diskFree: 21077, mdsFree: 102B (66), gfiFree: 410B (264), vmFree: 135264B (47796), vmRun: 132611B (46473), cpuLoad: 0.4087591]
> ← BasicTime.Now[]
December 8, 1987 9:11:49
> MakeDo -p $1 -rgom NewSets.DF
Forking RCompile Sets
Done with RCompile Sets
Forking RCompile BiRels
Forking RCompile SetsSimpleImpl
Forking RCompile SetsImpl
Done with RCompile BiRels
Forking RCompile NewSetsPrinting
Done with RCompile SetsSimpleImpl
Forking RCompile SetsByBiRels
Done with RCompile NewSetsPrinting
Forking RCompile ValueHashTables
Done with RCompile ValueHashTables
Forking RCompile SetsAsBiRels
Done with RCompile SetsImpl
Forking RCompile BiRelsHashed
Done with RCompile SetsByBiRels
Forking RCompile ValueHashTablesImpl
Done with RCompile ValueHashTablesImpl
Forking RCompile BiRelsAsSets
Done with RCompile SetsAsBiRels
Forking RCompile BiRelCombining
Done with RCompile BiRelsHashed
Forking RCompile BiRelShifting
Done with RCompile BiRelsAsSets
Forking RCompile BiRelComposition
Done with RCompile BiRelShifting
Forking RCompile BiRelsInverting
Done with RCompile BiRelCombining
Forking RCompile BiRelVectors
Done with RCompile BiRelComposition
Forking RCompile BiRelBasics
Done with RCompile BiRelsInverting
Forking RCompile BiRelsSimpleImpl
Done with RCompile BiRelBasics
Forking RCompile BiRelsPrivate
Done with RCompile BiRelsPrivate
Forking RCompile BiRelDefaults2
Done with RCompile BiRelVectors
Forking RCompile BiRelScanning
Done with RCompile BiRelsSimpleImpl
Forking RCompile BiRelDefaults
Done with RCompile BiRelDefaults2
Forking RCompile BiRelsImpl
Done with RCompile BiRelScanning
Forking RCompile SetInsulationImpl
Done with RCompile BiRelDefaults
Forking RCompile BiRelsBase
Done with RCompile SetInsulationImpl
Forking RCompile SetCombining
Done with RCompile BiRelsBase
Done with RCompile BiRelsImpl
Done with RCompile SetCombining
Forking Bind SetsPackage
Done with Bind SetsPackage
1 goal OK; 0 not.
> ← BasicTime.Now[]
December 8, 1987 9:16:08
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
You will be Told about it Tomorrow. Go Home and Prepare Thyself.

> ← WatchStats.GetWatchStats[]
[idleCount: 414352168, diskFree: 21077, mdsFree: 72B (58), gfiFree: 410B (264), vmFree: 134604B (47492), vmRun: 127761B (45041), cpuLoad: 0.9635037]
>
% test 4
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 423118315, diskFree: 21077, mdsFree: 72B (58), gfiFree: 410B (264), vmFree: 134702B (47554), vmRun: 132275B (46269), cpuLoad: 0.1751825]
> ← BasicTime.Now[]
December 8, 1987 9:16:38
> MakeDo -p $1 -rgom NewSets.DF
Forking RCompile Sets
Done with RCompile Sets
Forking RCompile BiRels
Forking RCompile SetsSimpleImpl
Forking RCompile SetsImpl
Done with RCompile SetsSimpleImpl
Done with RCompile BiRels
Forking RCompile NewSetsPrinting
Forking RCompile SetsByBiRels
Forking RCompile ValueHashTables
Done with RCompile ValueHashTables
Forking RCompile SetsAsBiRels
Done with RCompile NewSetsPrinting
Forking RCompile BiRelsHashed
Done with RCompile SetsImpl
Forking RCompile ValueHashTablesImpl
Done with RCompile SetsByBiRels
Forking RCompile BiRelsAsSets
Done with RCompile SetsAsBiRels
Forking RCompile BiRelCombining
Done with RCompile ValueHashTablesImpl
Forking RCompile BiRelShifting
Done with RCompile BiRelsHashed
Forking RCompile BiRelComposition
Done with RCompile BiRelsAsSets
Forking RCompile BiRelsInverting
Done with RCompile BiRelShifting
Forking RCompile BiRelVectors
Done with RCompile BiRelCombining
Forking RCompile BiRelBasics
Done with RCompile BiRelsInverting
Done with RCompile BiRelComposition
Forking RCompile BiRelsSimpleImpl
Forking RCompile BiRelsPrivate
Done with RCompile BiRelsPrivate
Forking RCompile BiRelDefaults2
Done with RCompile BiRelBasics
Forking RCompile BiRelScanning
Done with RCompile BiRelVectors
Forking RCompile BiRelDefaults
Done with RCompile BiRelsSimpleImpl
Forking RCompile BiRelsImpl
Done with RCompile BiRelDefaults2
Forking RCompile SetInsulationImpl
Done with RCompile BiRelScanning
Forking RCompile BiRelsBase
Done with RCompile SetInsulationImpl
Forking RCompile SetCombining
Done with RCompile BiRelsBase
Done with RCompile BiRelDefaults
Done with RCompile SetCombining
Done with RCompile BiRelsImpl
Forking Bind SetsPackage
Done with Bind SetsPackage
1 goal OK; 0 not.
> ← BasicTime.Now[]
December 8, 1987 9:20:18
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 460192531, diskFree: 21077, mdsFree: 67B (55), gfiFree: 410B (264), vmFree: 134347B (47335), vmRun: 131402B (45826), cpuLoad: 0.7931874]
>
% test 5
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

"Why are you letting the tail wag the dog?" --Henry Thompson "Because it's bigger." --Mike Schroeder
> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 464163016, diskFree: 21077, mdsFree: 67B (55), gfiFree: 410B (264), vmFree: 134356B (47342), vmRun: 131402B (45826), cpuLoad: 0.7250608]
> ← BasicTime.Now[]
December 8, 1987 9:20:34
> MakeDo -p $1 -rgom NewSets.DF
Forking RCompile Sets
Done with RCompile Sets
Forking RCompile BiRels
Forking RCompile SetsSimpleImpl
Forking RCompile SetsImpl
Done with RCompile SetsSimpleImpl
Done with RCompile BiRels
Forking RCompile NewSetsPrinting
Forking RCompile SetsByBiRels
Forking RCompile ValueHashTables
Forking RCompile SetsAsBiRels
Done with RCompile ValueHashTables
Forking RCompile BiRelsAsSets
Done with RCompile SetsImpl
Forking RCompile BiRelsHashed
Done with RCompile NewSetsPrinting
Forking RCompile ValueHashTablesImpl
Done with RCompile SetsByBiRels
Forking RCompile BiRelCombining
Done with RCompile SetsAsBiRels
Forking RCompile BiRelShifting
Done with RCompile ValueHashTablesImpl
Forking RCompile BiRelComposition
Done with RCompile BiRelsAsSets
Forking RCompile BiRelsInverting
Done with RCompile BiRelsHashed
Forking RCompile BiRelVectors
Done with RCompile BiRelShifting
Forking RCompile BiRelBasics
Done with RCompile BiRelsInverting
Done with RCompile BiRelComposition
Forking RCompile BiRelsSimpleImpl
Forking RCompile BiRelsPrivate
Done with RCompile BiRelCombining
Forking RCompile BiRelDefaults2
Done with RCompile BiRelsPrivate
Forking RCompile SetInsulationImpl
Done with RCompile BiRelBasics
Forking RCompile BiRelScanning
Done with RCompile SetInsulationImpl
Forking RCompile BiRelDefaults
Done with RCompile BiRelDefaults2
Done with RCompile BiRelsSimpleImpl
Forking RCompile BiRelsImpl
Forking RCompile BiRelsBase
Done with RCompile BiRelVectors
Forking RCompile SetCombining
Done with RCompile BiRelScanning
Done with RCompile BiRelsBase
Done with RCompile BiRelDefaults
Done with RCompile SetCombining
Done with RCompile BiRelsImpl
Forking Bind SetsPackage
Done with Bind SetsPackage
1 goal OK; 0 not.
> ← BasicTime.Now[]
December 8, 1987 9:23:43
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 492086492, diskFree: 21077, mdsFree: 56B (46), gfiFree: 410B (264), vmFree: 133615B (46989), vmRun: 126140B (44128), cpuLoad: 0.647202]
>
% test 5
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 500160124, diskFree: 21077, mdsFree: 56B (46), gfiFree: 410B (264), vmFree: 133645B (47013), vmRun: 126140B (44128), cpuLoad: 0.4476886]
> ← BasicTime.Now[]
December 8, 1987 9:24:09
> MakeDo -p $1 -rgom NewSets.DF
Forking RCompile Sets
Done with RCompile Sets
Forking RCompile BiRels
Forking RCompile SetsSimpleImpl
Forking RCompile SetsImpl
Done with RCompile BiRels
Forking RCompile NewSetsPrinting
Forking RCompile SetsByBiRels
Forking RCompile ValueHashTables
Done with RCompile SetsSimpleImpl
Forking RCompile SetsAsBiRels
Done with RCompile ValueHashTables
Forking RCompile BiRelsAsSets
Done with RCompile NewSetsPrinting
Forking RCompile BiRelsHashed
Done with RCompile SetsImpl
Forking RCompile ValueHashTablesImpl
Done with RCompile SetsByBiRels
Forking RCompile BiRelCombining
Done with RCompile SetsAsBiRels
Forking RCompile BiRelShifting
Done with RCompile BiRelsAsSets
Forking RCompile BiRelComposition
Done with RCompile ValueHashTablesImpl
Forking RCompile BiRelsInverting
Done with RCompile BiRelsHashed
Forking RCompile BiRelVectors
Done with RCompile BiRelsInverting
Forking RCompile BiRelBasics
Done with RCompile BiRelShifting
Forking RCompile BiRelsSimpleImpl
Done with RCompile BiRelComposition
Forking RCompile BiRelsPrivate
Done with RCompile BiRelCombining
Forking RCompile BiRelDefaults2
Done with RCompile BiRelsPrivate
Forking RCompile SetInsulationImpl
Done with RCompile BiRelBasics
Forking RCompile BiRelScanning
Done with RCompile SetInsulationImpl
Forking RCompile BiRelDefaults
Done with RCompile BiRelsSimpleImpl
Forking RCompile BiRelsImpl
Done with RCompile BiRelVectors
Forking RCompile BiRelsBase
Done with RCompile BiRelDefaults2
Forking RCompile SetCombining
Done with RCompile BiRelScanning
Done with RCompile BiRelsBase
Done with RCompile BiRelDefaults
Done with RCompile SetCombining
Done with RCompile BiRelsImpl
Forking Bind SetsPackage
Done with Bind SetsPackage
1 goal OK; 0 not.
> ← BasicTime.Now[]
December 8, 1987 9:27:18
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 534889974, diskFree: 21077, mdsFree: 55B (45), gfiFree: 410B (264), vmFree: 133371B (46841), vmRun: 125424B (43796), cpuLoad: 0.812652]
>
% test 6
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 538025605, diskFree: 21077, mdsFree: 55B (45), gfiFree: 410B (264), vmFree: 133420B (46864), vmRun: 125435B (43805), cpuLoad: 0.6180049]
> ← BasicTime.Now[]
December 8, 1987 9:27:33
> MakeDo -p $1 -rgom NewSets.DF
Forking RCompile Sets
Done with RCompile Sets
Forking RCompile BiRels
Forking RCompile SetsSimpleImpl
Forking RCompile SetsImpl
Done with RCompile BiRels
Forking RCompile NewSetsPrinting
Forking RCompile SetsByBiRels
Forking RCompile ValueHashTables
Forking RCompile SetsAsBiRels
Done with RCompile SetsSimpleImpl
Forking RCompile BiRelsAsSets
Done with RCompile ValueHashTables
Forking RCompile BiRelCombining
Done with RCompile SetsImpl
Forking RCompile BiRelsHashed
Done with RCompile NewSetsPrinting
Forking RCompile ValueHashTablesImpl
Done with RCompile SetsByBiRels
Forking RCompile BiRelShifting
Done with RCompile BiRelsAsSets
Forking RCompile BiRelComposition
Done with RCompile ValueHashTablesImpl
Forking RCompile BiRelsInverting
Done with RCompile BiRelsHashed
Forking RCompile BiRelVectors
Done with RCompile BiRelComposition
Done with RCompile BiRelShifting
Forking RCompile BiRelBasics
Forking RCompile BiRelsSimpleImpl
Done with RCompile BiRelsInverting
Forking RCompile BiRelsPrivate
Done with RCompile BiRelCombining
Forking RCompile BiRelDefaults2
Done with RCompile SetsAsBiRels
Done with RCompile BiRelsPrivate
Forking RCompile SetInsulationImpl
Forking RCompile BiRelScanning
Done with RCompile BiRelBasics
Forking RCompile BiRelDefaults
Done with RCompile SetInsulationImpl
Forking RCompile BiRelsImpl
Done with RCompile BiRelsSimpleImpl
Forking RCompile BiRelsBase
Done with RCompile BiRelDefaults2
Done with RCompile BiRelVectors
Forking RCompile SetCombining
Done with RCompile BiRelScanning
Done with RCompile BiRelsBase
Done with RCompile BiRelDefaults
Done with RCompile BiRelsImpl
Done with RCompile SetCombining
Forking Bind SetsPackage
Done with Bind SetsPackage
1 goal OK; 0 not.
> ← BasicTime.Now[]
December 8, 1987 9:30:52
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 563498602, diskFree: 21077, mdsFree: 47B (39), gfiFree: 410B (264), vmFree: 133114B (46668), vmRun: 126145B (44133), cpuLoad: 0.7396594]
>
% ls sets.mesa
[]<>Users>Spreitzer.pa>Temp>
Sets.Mesa!7 30137 07-Dec-87 17:53:41 PST
Sets.Mesa!14 30137 08-Dec-87 09:27:26 PST
Sets.Mesa!15 30137 08-Dec-87 09:31:07 PST
-- 3 files, 90411 total bytes
% test 7
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 574062337, diskFree: 21077, mdsFree: 47B (39), gfiFree: 410B (264), vmFree: 133144B (46692), vmRun: 123730B (42968), cpuLoad: 0.6009732]
> ← BasicTime.Now[]
December 8, 1987 9:31:26
> MakeDo -p $1 -rgom NewSets.DF
Forking RCompile Sets
Done with RCompile Sets
Forking RCompile BiRels
Forking RCompile SetsSimpleImpl
Forking RCompile SetsImpl
Done with RCompile BiRels
Forking RCompile NewSetsPrinting
Forking RCompile SetsByBiRels
Forking RCompile ValueHashTables
Forking RCompile SetsAsBiRels
Forking RCompile BiRelsAsSets
Done with RCompile SetsSimpleImpl
Forking RCompile BiRelCombining
Done with RCompile ValueHashTables
Forking RCompile BiRelShifting
Done with RCompile NewSetsPrinting
Forking RCompile BiRelsHashed
Done with RCompile SetsImpl
Forking RCompile ValueHashTablesImpl
Done with RCompile BiRelsAsSets
Forking RCompile BiRelComposition
Done with RCompile SetsAsBiRels
Forking RCompile BiRelsInverting
Done with RCompile SetsByBiRels
Forking RCompile BiRelVectors
Done with RCompile BiRelShifting
Done with RCompile ValueHashTablesImpl
Forking RCompile BiRelBasics
Forking RCompile BiRelsSimpleImpl
Done with RCompile BiRelCombining
Forking RCompile BiRelsPrivate
Done with RCompile BiRelComposition
Done with RCompile BiRelsHashed
Forking RCompile BiRelDefaults2
Done with RCompile BiRelsInverting
Forking RCompile SetInsulationImpl
Forking RCompile BiRelsBase
Done with RCompile BiRelsPrivate
Forking RCompile SetCombining
Done with RCompile BiRelBasics
Done with RCompile SetInsulationImpl
Forking RCompile BiRelScanning
Done with RCompile BiRelsBase
Forking RCompile BiRelDefaults
Forking RCompile BiRelsImpl
Done with RCompile BiRelsSimpleImpl
Done with RCompile BiRelVectors
Done with RCompile BiRelDefaults2
Done with RCompile SetCombining
Done with RCompile BiRelScanning
Done with RCompile BiRelDefaults
Done with RCompile BiRelsImpl
Forking Bind SetsPackage
Done with Bind SetsPackage
1 goal OK; 0 not.
> ← BasicTime.Now[]
December 8, 1987 9:34:22
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 596120327, diskFree: 21077, mdsFree: 36B (30), gfiFree: 410B (264), vmFree: 132402B (46338), vmRun: 123730B (42968), cpuLoad: 0.9221411]
>
% test 8
>
>
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 602207272, diskFree: 21077, mdsFree: 36B (30), gfiFree: 410B (264), vmFree: 132460B (46384), vmRun: 123730B (42968), cpuLoad: 0.5231143]
> ← BasicTime.Now[]
December 8, 1987 9:34:44
> MakeDo -p $1 -rgom NewSets.DF
Forking RCompile Sets
Done with RCompile Sets
Forking RCompile BiRels
Forking RCompile SetsSimpleImpl
Forking RCompile SetsImpl
Done with RCompile SetsSimpleImpl
Done with RCompile BiRels
Forking RCompile NewSetsPrinting
Forking RCompile SetsByBiRels
Forking RCompile ValueHashTables
Forking RCompile SetsAsBiRels
Forking RCompile BiRelsAsSets
Forking RCompile BiRelCombining
Forking RCompile BiRelShifting
Done with RCompile ValueHashTables
Forking RCompile BiRelComposition
Done with RCompile SetsImpl
Forking RCompile BiRelsHashed
Done with RCompile NewSetsPrinting
Forking RCompile ValueHashTablesImpl
Done with RCompile BiRelShifting
Forking RCompile BiRelsInverting
Done with RCompile SetsByBiRels
Done with RCompile SetsAsBiRels
Forking RCompile BiRelVectors
Forking RCompile BiRelBasics
Done with RCompile ValueHashTablesImpl
Forking RCompile BiRelsSimpleImpl
Done with RCompile BiRelCombining
Forking RCompile BiRelsPrivate
Done with RCompile BiRelComposition
Forking RCompile BiRelDefaults2
Done with RCompile BiRelsAsSets
Forking RCompile SetInsulationImpl
Done with RCompile BiRelsHashed
Forking RCompile BiRelsBase
Done with RCompile BiRelsPrivate
Forking RCompile SetCombining
Done with RCompile BiRelsInverting
Forking RCompile BiRelScanning
Done with RCompile BiRelBasics
Forking RCompile BiRelDefaults
Done with RCompile BiRelsSimpleImpl
Done with RCompile BiRelsBase
Forking RCompile BiRelsImpl
Done with RCompile SetInsulationImpl
Done with RCompile BiRelVectors
Done with RCompile BiRelDefaults2
Done with RCompile SetCombining
Done with RCompile BiRelScanning
Done with RCompile BiRelDefaults
Done with RCompile BiRelsImpl
Forking Bind SetsPackage
Done with Bind SetsPackage
1 goal OK; 0 not.
> ← BasicTime.Now[]
December 8, 1987 9:37:47
> ← SafeStorage.ReclaimCollectibleObjects[]

> Sleep 1
> ← WatchStats.GetWatchStats[]
[idleCount: 628679148, diskFree: 21073, mdsFree: 35B (29), gfiFree: 410B (264), vmFree: 132050B (46120), vmRun: 122554B (42348), cpuLoad: 0.6788321]
>
Mathematicians do it with odd functions.
%