- Permit stores
put!
methods to cast the value being placed to the type appropriate for the given store. - Added examples to the documentation that were lost around the time of the rewrite for v0.5 in 2018.
- Implement a
DelayQueue
, i.e. aQueueStore
with latency between the store and take events. - Bugfix to
QueueStore
andStackStore
for take events on empty stores.
- Implement ordered versions of
Store
, namelyQueueStore
andStackStore
.
- Priorities can now be non-integer.
- Relax some of the previous deprecations, implement
Base.lock
andBase.trylock
, and document the differences in blocking and yield-ness of Base and ConcurrentSim methods.
- Start using
Base
's API:Base.unlock
,Base.islocked
,Base.isready
,Base.put!
,Base.take!
. Deprecateput
,release
. Moreover, consider usingBase.take!
instead ofBase.get
(which was not deprecated yet, as we decide which semantics to follow). Lastly,Base.lock
andBase.trylock
are not implement -- they are superficially similar torequest
andtryrequest
, but have to be explicitly@yield
-ed. - Implement
tryrequest
(similar toBase.trylock
). However, consider also usingBase.isready
andrequest
instead oftryrequest
.
- Rename from SimJulia.jl to ConcurrentSim.jl
- v0.8.2 (2021)
- implementation of Store based on a Dict
- v0.8.1 (2021)
- some minor bug fixes
- uses ResumableFunctions v0.6 or higher
- v0.8 (2019)
- adds support for Julia v1.2.
- v0.7 (2018)
- adds support for Julia v1.0
- v0.6 (2018)
- adds support for Julia v0.7.
- the
@oldprocess
macro and theproduce
/consume
functions are removed because they are no longer supported.
- v0.5 (2018)
- The old way of making processes is deprecated in favor of the semi-coroutine approach as implemented in ResumableFunctions. The
@process
macro replaces the@coroutine
macro. The old@process
macro is temporarily renamed@oldprocess
and will be removed when the infrastructure supporting theproduce
and theconsume
functions is no longer available in Julia. (DONE) - This version no longer integrates a continuous time solver. A continuous simulation framework based on DISCO and inspired by the standalone QSS solver using ConcurrentSim as its discrete-event engine can be found in the repository QuantizedStateSystems (WIP):
- Documentation is automated with Documenter.jl (WIP: Overview and Tutorial OK).
- The old way of making processes is deprecated in favor of the semi-coroutine approach as implemented in ResumableFunctions. The
- v0.4.1 (2017)
- the
@resumable
and@yield
macros are put in a separate package ResumableFunctions: - Users have to take into account the following syntax change:
@yield return arg
is replaced by@yield arg
.
- the
- v0.4 (2017) only supports Julia v0.6 and above. It is a complete rewrite: more julian and less pythonic. The discrete event features are on par with v0.3 (SimPy v3) and following features are added:
- Scheduling of events can be done with
Base.Dates.Datetime
andBase.Dates.Period
- Two ways of making
Processes
are provided:- using the existing concept of
Tasks
- using a novel finite-statemachine approach
- using the existing concept of
- A continuous time solver based on the standalone QSS solver is implemented. Only non-stiff systems can be solved efficiently.
- Scheduling of events can be done with
- v0.3 (2015) synchronizes the API with SimPy v3 and is Julia v0.3, v0.4 and v0.5 compatible:
- Documentation is available at readthedocs.
- The continuous time solver is not implemented.
- v0.2 (2014) introduces a continuous time solver inspired by the Simula library DISCO and is Julia v0.2 and v0.3 compatible.
- v0.1 (2013) is a Julia clone of SimPy v2 and is Julia v0.2 compatible.