296 lines
14 KiB
Text
296 lines
14 KiB
Text
Version 2.4.2
|
|
* General bug fixes to Python 3 support
|
|
+ Allow realtime interrupts to use objects as input
|
|
+ Added a simplistic bare-bone XML trace visualizer w.r.t. Bill Song's (old) work
|
|
* Made tracers more uniform
|
|
* Fixed code injection possibilities when using tracers
|
|
* Fixed thread-safeness
|
|
|
|
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 sequential 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
|