ANN: Release of SimPy 1.8

Klaus Muller kgmuller at
Wed Jan 31 16:37:01 CET 2007

With great pleasure we announce the availability of SimPy version
1.8 This is a major release, with significant changes to API and
documentation and with a number of bug fixes.

What is SimPy?
SimPy (= Simulation in Python) is an object-oriented, process-based 
discrete-event simulation language completely implemented in Python. It is 
released under the GNU Lesser GPL (LGPL). SimPy provides the modeler 
with components of a simulation model including processes, for active 
components like customers, messages, and vehicles, and resources, for 
passive components that form limited capacity congestion points like 
servers, checkout counters, and tunnels. It also provides monitor 
variables to aid in gathering statistics. Random variates are provided 
by the standard Python random module.

Many users claim that SimPy is one of the cleanest, easiest to use 
discrete event simulation packages! SimPy is in use at many universities,
research institutes and in industry.

SimPy comes with data collection capabilities, GUI and plotting packages. 
It can be easily interfaced to other packages, such as plotting, statistics,
or database systems.

Release notes for SimPy 1.8

This version is the result of many months of intense collaboration in
the SimPy community. It includes design ideas and improvements proposed by 
Steve Rogers, Matt Kuperholz and Igor Cananea. It also includes code in 
SimulationRT contributed by Robert C. Ramsdell III which allows setting 
of the simulation to real time ratio during a simulation run. Many thanks
to all contributors! Our apologies if we have forgotten to mention a

For the first time, we had an editor/co-author (Bob Helmbold)
working with us on rewriting Manual and Cheatsheet. You will like the
resulting documents!

Important Note:

SimPy 1.8 and future releases will not run under the (obsolete) Python 2.2


- New compound yield statements support time-out or event-based
  reneging in 'get' and 'put' operations on Store and Level instances.

- 'yield get' on a Store instance can now have a filter function which
  selects which and how many items (e.g.  "3 parcels weighing less than
  3 pounds") should be retrieved.

- All Monitor and Tally instances are automatically registered in
  lists 'allMonitors' or 'allTallies', respectively.

- The new function 'startCollection' allows activation of Monitors and
  Tallies at a specified time (e.g. after a warm up period).

- A 'printHistogram' method was added to Tally and Monitor which
  generates a nicely formatted table-form histogram.

- In SimPy.SimulationRT: A function to allow changing the ratio of
  wall clock to simulation time has been added. It facilitates slowing
  down or speeding up model execution, e.g. for interactive models or

Changes to code and documentation

- The Manual has been thoroughly edited, restructured and rewritten
  with a view to greater clarity and readability.  It is provided in
  both HTML and PDF format.

- The Cheatsheet has been rewritten in a tabular format and reduced to
  just a few pages. The goal was to turn it into a concise desktop
  reference of SimPy commands. The Cheatsheet is provided in both XLS
  (MS Excel spreadsheet) and PDF format.

- The obsolete Interfacing document has been replaced by a brief
  introduction to using the matplotlib library for publication-quality
  plotting of SimPy-produced data.

- The version of SimPy.Simulation(RT/Trace/Step) is now accessible by
  the variable 'version'.

- The '__str__' method of Histogram was changed to return a table
  format (like that produced by the new 'printHistogram' method of
  Monitor and Tally).


- Repaired a bug in 'yield waituntil' runtime code.

- Introduced check for '<capacity' parameter of a Level or a Store
  being a number > 0.

- Added code so that 'self.eventsFired' gets set correctly after an
  event fires in a compound yield get/put with a waitevent clause
  (reneging case).

- Repaired a bug in prettyprinting of Store objects (the buffer
  content, i.e. '._theBuffer' was not shown) by changing '._theBuffer'
  to '.theBuffer'.

(end of Release Notes)


Best wishes for happy, productive SimPying in 2007!

Klaus Muller    TonyVignaux     Bob Helmbold

More information about the Python-announce-list mailing list