Repository navigation
Latency Lab v3.3.0
Release notes
Models that would have run wrongly are now refused
LatencyLab used to accept some models and then run something other than what they described, without a word. It now refuses them when they are loaded, saying what is wrong:
- a duration given as
NaNorInfinity; aNaNduration could make a version 1 run hang forever; - a normal distribution with a negative mean;
- a lognormal distribution whose
muis so large that its median duration would be infinite; - a version 1 model that declares a delay on its wiring; version 1 has no delays, so the delay was quietly ignored;
- a task or event name containing
>, which could merge two different critical paths into one count; - a fractional schema version such as
2.9, which used to be treated as 2 and run; - a key written twice in the same part of a model file, such as a task copied and pasted without being renamed. Previously the second copy silently replaced the first. This applies everywhere a model is read: the command line, a run, Open and the Model Composer.
Clearer errors on the command line
When the command line is given a model it cannot read or that is not valid, it now prints one line saying which file and what is wrong, then exits with status 2. Before, it stopped with a Python traceback.
A histogram that stays usable
A model with one very long tail could make the makespan histogram ask for hundreds of millions of bars, which ran the app out of memory. The histogram now uses at most 200 bars, widening each one when it has to. The percentile markers also line up with the bars again: they now sit over the bar that holds their value instead of drifting away from it.