The TODO list is now just a list of general changes I would like to make
over the long term. It does not contain any really specific technical
details of what I would like to do in the immediate future.
Forgot to include the ".dao" file extension when converting a logical
module name to file path string.
The 'canonicalize' function is a member of the
'Dao.Interprter.Intermediate' class, but I would like to use the name
'canonicalize' for something else. Since the only place it is used is in
this testing module, I have removed the use of 'canonicalize' and
replaced it with the expansion of that function. That frees up the name.
Added a new function 'Dao.Random.depthLimitedInt' which takes an integer
and logarithmically scales it based on the current recursion depth of
the random generator. This allows me to shape the domain of randomly
created data structures such that objects that can produce very large
recursive objects can be made to reduce the size of objects further down
the recursive call stack to prevent objects from getting too large.
Made use of the recently added 'Dao.Random.depthLimitedInt' function in
the "Dao.Random" module to better shape the domain of randomly produced
objects. This small change has worked unbelievably well to produce a
healthy ecosystem of random but reasonably-sized objects for testing.
The test application now runs much, much faster and no longer frequently
end up exhausting all memory like it did before.