Version 2.4.1 * Incremental direct connection only done on change * Direct connection at startup is the non-incremental one for performance * Made minimal simulation kernel more complete Version 2.4.0 + Allow realtime interrupts on arbitrary ports + Allow realtime simulation to monitor specific ports * Fixed bug while removing a port * Fixed bug when adding a model during simulation * Incremental update of direct connection * Fixed external interrupts blocking internal transitions * Set elapsed time attribute to None when you shouldn't access it Version 2.3.1 + Added nicer configuration for the optimized, minimal simulation kernel Version 2.3.0 + Added an optimized simulation kernel for sequentiel simulation * Much faster direct connection algorithm * Fixed bug in checkpointing when no state saving was being done Version 2.2.4 + Add setuptools installation * Fixed bug in Dynamic Structure DEVS simulation for (dis)connectPorts * Fixed bug in realtime simulation * Fixed bug with checkpointing * Restructured project Version 2.2.3 * Fixed bug in the GVT algorithm where 'red' messages could be transient * Changed termination detection algorithm to prevent bottlenecks * Fixed missing import in realtime backend for exception handling * Updated GVT test for previously reformed GVT algorithm Version 2.2.2 * Changed realtime backend to not use threads in the 'threadless' variants * Fixed elapsed attribute at initialisation * Fixed allocator crashing due to new Z function support * Fixed locking fairness for GVT setting (faster relocation/allocation) * Fixed basic boundary relocator for when dynamic allocation Version 2.2.1 + Added user events in the loggers (optional) for 'state changes' + Allow continuing a previous simulation by calling simulate again + Added Z functions (output-to-input, input-to-input and output-to-output) * Changed the reinit interface to make continuing possible * Fixed massive memory leak by forgetting to set the 'temporaryIrreversible' flag in local simulation * Change to the termination detection: wait for 100ms before sending * Fixed complete horizon revertion (beyond GVT!) * Activity-log file is only generated when useful * ManualRelocator generates activity traces Version 2.2.0 + Added templates for scheduler, relocator, tracer and experiment files + Allow custom activity functions for pre-transition and post-transition + Allow the definition of custom schedulers, defined externally + Pass the horizon to the relocators + No state saving when relocation caused sequential simulation + Allow local checkpointing (in most cases) + Possibility for a 'test cycle' which saves message count (+visualize) + Test cycle simulation creates an 'advised' initial distribution + Schedulers can now be configured per-node instead of globally + Allow for pull based termination conditions (NOT recommended) + Tracers are a lot more plugable, multiple tracers can work simultaneous + Realtime interrupts can happen with method calls on the simulator + Initial allocation can be loaded from file + Allowed local nested simulation in a distributed simulation + Included a model of a subset of PythonPDEVS + Much faster tracing due to trace message grouping (remove all RTT calls) + Method to reset a models alterations before reinitialising it + Method to force sequential simulation + Ignore state saving when sequential simulation is possible due to relocations + Added scaled realtime + Relocators can use a 'last state only' approach * File reading for realtime happens on-demand * Fixed GVT algorithm * Fixed checkpoint restoration with severely broken files * Rewrite of the realtime backend, works much better now * Yielding of the main thread for anti-messages and relocations * Split of the simulator configuration * Various bugfixes * External messages are processed differently, should give slight speedup * Removal of (most) global variables * Classic DEVS simulation bugfixes - Removed auto-allocation: use the new 'allocators' instead - Removed PyRO support Version 2.1.5 + Added optional memoization + Added the basis of an activity relocator, still very slow + User can choose between manual relocation, or automatic relocation + Relocation now uses 'async locking' and remote kernels will have a quick stop feature to prevent many transitions that will simply be removed + Added Dirty Heap scheduler + Added 'discrete time' Scheduler + Added Minimal List scheduler + Progress bar visualizes when an error happens, process is now killable + Dynamic Structure DEVS added for local simulation + Added a polymorphic scheduler (still very unstable) + Activity tracking in distributed simulation now returns something usable + Added Classic DEVS simulation as an option + Added a random number generator for deterministic simulation * Fixed deadlock in distributed simulation for an overfilled threadpool * Activity is only counted for not-reverted functions * Fixed the Syslog logger (some messages were in wrong order, some forgotten) * Fixed GVT algorithm, deadlocks and incorrect GVTs should be solved * Fixed termination algorithm Version 2.1.4 + Added a Cell DEVS styled activity tracer + Added a Cell DEVS styled location tracer + Added Cell DEVS styled tracer 'gnuplot' and 'libav' animation script + Start of Sphinx documentation + Added PyRO tests + Realtime simulation keeps track of the termination_time * Realtime backend is now compliant with Python3 * Fixed PyRO simulation for nodes without actual models * Default message copy method now uses pickle's HIGHEST PROTOCOL * Fixed the *elapsed* attribute for the confluent transition function Version 2.1.3 + Added marshal library for use in the state saver + Added HeapSet scheduler + Added NoAge scheduler (only use when ALWAYS ta > 0) + Added SortedList scheduler + VCD and XML traces can also be saved to a user-defined filename + Added automatic model-to-node allocation as an option + Added some additional checks in the configuration setting + Checkpoint recovery for XML and VCD tracing is possible + Termination condition became somewhat more fine grained + Draw the model to a user-defined file + Added model reinitialisation: simply rerun simulate() + Added API for changing a model after it has been distributed (for reinit) * Split up the state savers * Game Loop realtime backend is now user-configurable for FPS * Added some configuration options * Nested simulation was completely rewritten * Logging now respects the logging settings and messages before this configuration are queued * Fixed a simulation bug where some messages get resent due to revertions * Fixed PyRO simulation * Fixed several problems with relocation, still somewhat buggy * Cleaned up tests * Fixed memory leak in the MPI backend * Fixed Python3 compliance * Message scheduler became much cleaner and more maintainable * Anti messages are sent 'en masse' * Model distribution is faster by a factor 10 due to different pickling - Nested simulation only works if both the nesting and the nested simulation are local - Configuration options for the nested simulation are removed as they are no longer necessary Version 2.1.2 + Added a looping backend for realtime simulation + Looping realtime backend builtin in the simulator with calls realtime_finished() and realtime_loop_call() + Allow even huge models to be transfered and checkpointed, by removing artificial recursion when pickling fails otherwise (includes small test) + Added basic tests for VCD and XML tracing + Allow direct simulation of AtomicDEVS models + Added tests for the three different realtime backends + Added small smoke test for checkpointing + Model can be marked as 'used in termination condition' + Model has the new simSettings function to do model-specific configs + Lots of internal documentation added + Check for whether or not the number of used locations is actually available + Edge labels can be hidden when drawing the model for small graphs * Fixed a massive performance degradation in the MPI redirection * Don't attempt to load an incomplete checkpoint (and subsequently crash) * Minor changes to realtime simulation backends * Relocation directives can be denied in case it is a model used in termination condition * Used dictionary comprehension instead of for loop at some places * Progress bar now always ends with 'completely done' instead of partial * Minor code cleanup * Fixed a race condition in the external message scheduler * Message scheduler was leaking memory by not cleaning up everything - Termination condition can no longer run on any node, runs on controller Version 2.1.1 + Message copy can be ignored for performance (as in nearly all other simulators) + Added realtime test * Fixed several realtime termination bugs * Realtime component now uses sys.stdin instead of raw_input * Fixed PyRO middleware usage * Fixed some critical bugs in the XML and VCD tracers * Local simulation no longer runs on a thread for easy profiling/debugging * Huge performance improvement for when lots of models are transitioning * Changed the signalling protocol from message based (as in the abstract simulator) to an optimized implementation * Fixed some bugs in the scheduler * Increased performance for the scheduler * Bugfix for when a revertion was caused by an anti-message Version 2.1 + Models can be drawn before simulation using GraphViz + Added model migration + A node can now host any number of models, even atomics + Added model migration, including directives + Added an API to set all simulation options, with some sanity checking + Added a fetch_all option to the simulator to reconstruct the model locally + Added automatic detection of middleware + Added RootDEVS class + Added progress visualisation, rather handy in distributed simulation * Huge alterations to the internal representation of models * Reduced code size by completely refactoring model and simulation setup * Simulation can now be killed with ctrl-c without hanging * Coupled models get completely removed by direct connection * Direct connection works only once on the root model * Model is constructed locally and then broadcast to other kernels * Fixed fossil collection race condition * Simplified checkpoint restoration and creation * Cleaned up tests * Simplified Solver core due to more agressive direct connection - Removed the plethora of (incompatible) IDs in models - Removed the mpirunner.py scripts - Removed checks for wrong local invocations, should no longer happen - Removed RemoteCDEVS class - Removed irreversibility (except locally) due to problems with model relocation - Removed remote code execution for model construction, normal code execution is still possible - Removed special Cython parts and build scripts Version 2.0 + Further optimisations to the main simulation algorithm + Added Parallel DEVS simulation + Output function now returns a dictionary of outputs + Realtime simulation can use manual and automated input simultaneously + Added distributed simulation, both PyRO and MPI4Py + Added syslog logger + Added checkpointing + Allow for termination time instead of termination condition + Added direct saving to file of output + Allow nested simulation in distributed environment + Made Python3 compliant + Made PyPy compliant + Made Cython compliant + Messages got their own class + Added NestingException exception for nesting problems + Added irreversibility for faster distributed simulation + Added actual automated tests using Python unittest instead of ad-hoc manual testing * Split up several files due to huge amount of additions * Optimized memory consumption of VCD and XML output * Modularised simulation tracing * Updated examples * Transitions now take an additional argument indicating the input * Fixed realtime simulation bugs - Removed Classic DEVS simulation - Removed Peek and Poke methods - Removed Root output in verbose tracing Version 1.2 + Allow realtime simulation using Python threads and TkInter events Version 1.1 + Added custom 'copy()' function for messages + Added direct connection * Optimized message scheduler * Optimized message passing - Removed INFINITY object, redirected to a float Version 1.0.5 + Added VCD tracing option * Fixed non-determinism bug in sorting colliding models Version 1.0.4 + Added XML tracing option Version 1.0.3 * Cleanup of terminology * Use True/False instead of 1/0 Version 1.0.2 + Added code to display atomic DEVS' initial conditions Version 1.0.1 * Deal with DeprecationWarning * Default timeAdvance returns INFINITY Version 1.0 + Initial version