notes.txt 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. Version 2.4.2
  2. * General bug fixes to Python 3 support
  3. + Allow realtime interrupts to use objects as input
  4. + Added a simplistic bare-bone XML trace visualizer w.r.t. Bill Song's (old) work
  5. * Made tracers more uniform
  6. * Fixed code injection possibilities when using tracers
  7. * Fixed thread-safeness
  8. Version 2.4.1
  9. * Incremental direct connection only done on change
  10. * Direct connection at startup is the non-incremental one for performance
  11. * Made minimal simulation kernel more complete
  12. Version 2.4.0
  13. + Allow realtime interrupts on arbitrary ports
  14. + Allow realtime simulation to monitor specific ports
  15. * Fixed bug while removing a port
  16. * Fixed bug when adding a model during simulation
  17. * Incremental update of direct connection
  18. * Fixed external interrupts blocking internal transitions
  19. * Set elapsed time attribute to None when you shouldn't access it
  20. Version 2.3.1
  21. + Added nicer configuration for the optimized, minimal simulation kernel
  22. Version 2.3.0
  23. + Added an optimized simulation kernel for sequential simulation
  24. * Much faster direct connection algorithm
  25. * Fixed bug in checkpointing when no state saving was being done
  26. Version 2.2.4
  27. + Add setuptools installation
  28. * Fixed bug in Dynamic Structure DEVS simulation for (dis)connectPorts
  29. * Fixed bug in realtime simulation
  30. * Fixed bug with checkpointing
  31. * Restructured project
  32. Version 2.2.3
  33. * Fixed bug in the GVT algorithm where 'red' messages could be transient
  34. * Changed termination detection algorithm to prevent bottlenecks
  35. * Fixed missing import in realtime backend for exception handling
  36. * Updated GVT test for previously reformed GVT algorithm
  37. Version 2.2.2
  38. * Changed realtime backend to not use threads in the 'threadless' variants
  39. * Fixed elapsed attribute at initialisation
  40. * Fixed allocator crashing due to new Z function support
  41. * Fixed locking fairness for GVT setting (faster relocation/allocation)
  42. * Fixed basic boundary relocator for when dynamic allocation
  43. Version 2.2.1
  44. + Added user events in the loggers (optional) for 'state changes'
  45. + Allow continuing a previous simulation by calling simulate again
  46. + Added Z functions (output-to-input, input-to-input and output-to-output)
  47. * Changed the reinit interface to make continuing possible
  48. * Fixed massive memory leak by forgetting to set the
  49. 'temporaryIrreversible' flag in local simulation
  50. * Change to the termination detection: wait for 100ms before sending
  51. * Fixed complete horizon revertion (beyond GVT!)
  52. * Activity-log file is only generated when useful
  53. * ManualRelocator generates activity traces
  54. Version 2.2.0
  55. + Added templates for scheduler, relocator, tracer and experiment files
  56. + Allow custom activity functions for pre-transition and post-transition
  57. + Allow the definition of custom schedulers, defined externally
  58. + Pass the horizon to the relocators
  59. + No state saving when relocation caused sequential simulation
  60. + Allow local checkpointing (in most cases)
  61. + Possibility for a 'test cycle' which saves message count (+visualize)
  62. + Test cycle simulation creates an 'advised' initial distribution
  63. + Schedulers can now be configured per-node instead of globally
  64. + Allow for pull based termination conditions (NOT recommended)
  65. + Tracers are a lot more plugable, multiple tracers can work simultaneous
  66. + Realtime interrupts can happen with method calls on the simulator
  67. + Initial allocation can be loaded from file
  68. + Allowed local nested simulation in a distributed simulation
  69. + Included a model of a subset of PythonPDEVS
  70. + Much faster tracing due to trace message grouping (remove all RTT calls)
  71. + Method to reset a models alterations before reinitialising it
  72. + Method to force sequential simulation
  73. + Ignore state saving when sequential simulation is possible due to
  74. relocations
  75. + Added scaled realtime
  76. + Relocators can use a 'last state only' approach
  77. * File reading for realtime happens on-demand
  78. * Fixed GVT algorithm
  79. * Fixed checkpoint restoration with severely broken files
  80. * Rewrite of the realtime backend, works much better now
  81. * Yielding of the main thread for anti-messages and relocations
  82. * Split of the simulator configuration
  83. * Various bugfixes
  84. * External messages are processed differently, should give slight speedup
  85. * Removal of (most) global variables
  86. * Classic DEVS simulation bugfixes
  87. - Removed auto-allocation: use the new 'allocators' instead
  88. - Removed PyRO support
  89. Version 2.1.5
  90. + Added optional memoization
  91. + Added the basis of an activity relocator, still very slow
  92. + User can choose between manual relocation, or automatic relocation
  93. + Relocation now uses 'async locking' and remote kernels will have a quick
  94. stop feature to prevent many transitions that will simply be removed
  95. + Added Dirty Heap scheduler
  96. + Added 'discrete time' Scheduler
  97. + Added Minimal List scheduler
  98. + Progress bar visualizes when an error happens, process is now killable
  99. + Dynamic Structure DEVS added for local simulation
  100. + Added a polymorphic scheduler (still very unstable)
  101. + Activity tracking in distributed simulation now returns something usable
  102. + Added Classic DEVS simulation as an option
  103. + Added a random number generator for deterministic simulation
  104. * Fixed deadlock in distributed simulation for an overfilled threadpool
  105. * Activity is only counted for not-reverted functions
  106. * Fixed the Syslog logger (some messages were in wrong order, some forgotten)
  107. * Fixed GVT algorithm, deadlocks and incorrect GVTs should be solved
  108. * Fixed termination algorithm
  109. Version 2.1.4
  110. + Added a Cell DEVS styled activity tracer
  111. + Added a Cell DEVS styled location tracer
  112. + Added Cell DEVS styled tracer 'gnuplot' and 'libav' animation script
  113. + Start of Sphinx documentation
  114. + Added PyRO tests
  115. + Realtime simulation keeps track of the termination_time
  116. * Realtime backend is now compliant with Python3
  117. * Fixed PyRO simulation for nodes without actual models
  118. * Default message copy method now uses pickle's HIGHEST PROTOCOL
  119. * Fixed the *elapsed* attribute for the confluent transition function
  120. Version 2.1.3
  121. + Added marshal library for use in the state saver
  122. + Added HeapSet scheduler
  123. + Added NoAge scheduler (only use when ALWAYS ta > 0)
  124. + Added SortedList scheduler
  125. + VCD and XML traces can also be saved to a user-defined filename
  126. + Added automatic model-to-node allocation as an option
  127. + Added some additional checks in the configuration setting
  128. + Checkpoint recovery for XML and VCD tracing is possible
  129. + Termination condition became somewhat more fine grained
  130. + Draw the model to a user-defined file
  131. + Added model reinitialisation: simply rerun simulate()
  132. + Added API for changing a model after it has been distributed (for reinit)
  133. * Split up the state savers
  134. * Game Loop realtime backend is now user-configurable for FPS
  135. * Added some configuration options
  136. * Nested simulation was completely rewritten
  137. * Logging now respects the logging settings and messages before this
  138. configuration are queued
  139. * Fixed a simulation bug where some messages get resent due to revertions
  140. * Fixed PyRO simulation
  141. * Fixed several problems with relocation, still somewhat buggy
  142. * Cleaned up tests
  143. * Fixed memory leak in the MPI backend
  144. * Fixed Python3 compliance
  145. * Message scheduler became much cleaner and more maintainable
  146. * Anti messages are sent 'en masse'
  147. * Model distribution is faster by a factor 10 due to different pickling
  148. - Nested simulation only works if both the nesting and the nested
  149. simulation are local
  150. - Configuration options for the nested simulation are removed as they are
  151. no longer necessary
  152. Version 2.1.2
  153. + Added a looping backend for realtime simulation
  154. + Looping realtime backend builtin in the simulator with calls
  155. realtime_finished() and realtime_loop_call()
  156. + Allow even huge models to be transfered and checkpointed, by removing
  157. artificial recursion when pickling fails otherwise (includes small test)
  158. + Added basic tests for VCD and XML tracing
  159. + Allow direct simulation of AtomicDEVS models
  160. + Added tests for the three different realtime backends
  161. + Added small smoke test for checkpointing
  162. + Model can be marked as 'used in termination condition'
  163. + Model has the new simSettings function to do model-specific configs
  164. + Lots of internal documentation added
  165. + Check for whether or not the number of used locations is actually
  166. available
  167. + Edge labels can be hidden when drawing the model for small graphs
  168. * Fixed a massive performance degradation in the MPI redirection
  169. * Don't attempt to load an incomplete checkpoint (and subsequently crash)
  170. * Minor changes to realtime simulation backends
  171. * Relocation directives can be denied in case it is a model used in
  172. termination condition
  173. * Used dictionary comprehension instead of for loop at some places
  174. * Progress bar now always ends with 'completely done' instead of partial
  175. * Minor code cleanup
  176. * Fixed a race condition in the external message scheduler
  177. * Message scheduler was leaking memory by not cleaning up everything
  178. - Termination condition can no longer run on any node, runs on controller
  179. Version 2.1.1
  180. + Message copy can be ignored for performance (as in nearly all other
  181. simulators)
  182. + Added realtime test
  183. * Fixed several realtime termination bugs
  184. * Realtime component now uses sys.stdin instead of raw_input
  185. * Fixed PyRO middleware usage
  186. * Fixed some critical bugs in the XML and VCD tracers
  187. * Local simulation no longer runs on a thread for easy profiling/debugging
  188. * Huge performance improvement for when lots of models are transitioning
  189. * Changed the signalling protocol from message based (as in the abstract
  190. simulator) to an optimized implementation
  191. * Fixed some bugs in the scheduler
  192. * Increased performance for the scheduler
  193. * Bugfix for when a revertion was caused by an anti-message
  194. Version 2.1
  195. + Models can be drawn before simulation using GraphViz
  196. + Added model migration
  197. + A node can now host any number of models, even atomics
  198. + Added model migration, including directives
  199. + Added an API to set all simulation options, with some sanity checking
  200. + Added a fetch_all option to the simulator to reconstruct the model
  201. locally
  202. + Added automatic detection of middleware
  203. + Added RootDEVS class
  204. + Added progress visualisation, rather handy in distributed simulation
  205. * Huge alterations to the internal representation of models
  206. * Reduced code size by completely refactoring model and simulation setup
  207. * Simulation can now be killed with ctrl-c without hanging
  208. * Coupled models get completely removed by direct connection
  209. * Direct connection works only once on the root model
  210. * Model is constructed locally and then broadcast to other kernels
  211. * Fixed fossil collection race condition
  212. * Simplified checkpoint restoration and creation
  213. * Cleaned up tests
  214. * Simplified Solver core due to more agressive direct connection
  215. - Removed the plethora of (incompatible) IDs in models
  216. - Removed the mpirunner.py scripts
  217. - Removed checks for wrong local invocations, should no longer happen
  218. - Removed RemoteCDEVS class
  219. - Removed irreversibility (except locally) due to problems with model relocation
  220. - Removed remote code execution for model construction, normal code
  221. execution is still possible
  222. - Removed special Cython parts and build scripts
  223. Version 2.0
  224. + Further optimisations to the main simulation algorithm
  225. + Added Parallel DEVS simulation
  226. + Output function now returns a dictionary of outputs
  227. + Realtime simulation can use manual and automated input simultaneously
  228. + Added distributed simulation, both PyRO and MPI4Py
  229. + Added syslog logger
  230. + Added checkpointing
  231. + Allow for termination time instead of termination condition
  232. + Added direct saving to file of output
  233. + Allow nested simulation in distributed environment
  234. + Made Python3 compliant
  235. + Made PyPy compliant
  236. + Made Cython compliant
  237. + Messages got their own class
  238. + Added NestingException exception for nesting problems
  239. + Added irreversibility for faster distributed simulation
  240. + Added actual automated tests using Python unittest instead of ad-hoc manual testing
  241. * Split up several files due to huge amount of additions
  242. * Optimized memory consumption of VCD and XML output
  243. * Modularised simulation tracing
  244. * Updated examples
  245. * Transitions now take an additional argument indicating the input
  246. * Fixed realtime simulation bugs
  247. - Removed Classic DEVS simulation
  248. - Removed Peek and Poke methods
  249. - Removed Root output in verbose tracing
  250. Version 1.2
  251. + Allow realtime simulation using Python threads and TkInter events
  252. Version 1.1
  253. + Added custom 'copy()' function for messages
  254. + Added direct connection
  255. * Optimized message scheduler
  256. * Optimized message passing
  257. - Removed INFINITY object, redirected to a float
  258. Version 1.0.5
  259. + Added VCD tracing option
  260. * Fixed non-determinism bug in sorting colliding models
  261. Version 1.0.4
  262. + Added XML tracing option
  263. Version 1.0.3
  264. * Cleanup of terminology
  265. * Use True/False instead of 1/0
  266. Version 1.0.2
  267. + Added code to display atomic DEVS' initial conditions
  268. Version 1.0.1
  269. * Deal with DeprecationWarning
  270. * Default timeAdvance returns INFINITY
  271. Version 1.0
  272. + Initial version