Releases: ROOT-Sim/core
v3.0.0-rc1
What's Changed
- Optionally build without MPI by @Piccions in #73
- Print logo only on rank zero by @alessandropellegrini in #76
- Install targets for the rscore library and ROOT-Sim.h by @Piccions in #79
- Test framework rework by @Piccions in #78
- Setting up Code Analysis Actions by @alessandropellegrini in #82
- Statistics subsystem: new available statistics, plotting scripts, tests by @Piccions in #74
- Bugfixes: SetState() consistency during silent processing & GVT values lower than 1.0 in the processing loop by @Piccions in #84
- Higher quality PRNG seeding by @Piccions in #83
- Deferred fossil collection by @Piccions in #86
- Caching timestamps for improved straggler detection by @Piccions in #87
- Causality check bugfix in the parallel ScheduleNewEvent() by @Piccions in #88
- Fixed the stats counts of anti-messages and rolled-back messages by @Piccions in #92
Full Changelog: v3.0.0-beta...3.0.0-rc1
v3.0.0-beta
What's Changed
- Introduce PHold as a test by @alessandropellegrini in #51
- Fixed a memory leak in the test lp mock framework by @Piccions in #54
- Fix topology test by @alessandropellegrini in #55
- Merge v3.0.0-alpha.4 in develop by @alessandropellegrini in #61
- Fix website deployment by @alessandropellegrini in #63
- Remove GCC specific __builtin_ia32_pause() by @Piccions in #64
- Improving testing framework self tests by @alessandropellegrini in #62
- Fix of an inconsistent treatment of the member pl_size of struct lp_msg by @Piccions in #66
- Count explicitly-failed tests in the failed test count by @alessandropellegrini in #69
- Multiple buddy systems instantiation for LPs rollbackable memory by @Piccions in #58
Full Changelog: v3.0.0-alpha.5...v3.0.0-beta
v3.0.0-alpha.5
What's Changed
- Fix the auto-deployment of the documentation by @alessandropellegrini in #59
Full Changelog: v3.0.0-alpha.4...v3.0.0-alpha.5
v3.0.0-alpha.4
What's Changed
- Hotfix 3.0.0 alpha2 by @Piccions in #26
- Ported traffic model by @AdrianoPi in #29
- Rewrite base models by @alessandropellegrini in #27
- Support multiple topologies by @alessandropellegrini in #28
- Traffic model topology fix by @Piccions in #31
- Windows CI by @Piccions in #32
- Merge latest branch into develop by @alessandropellegrini in #38
- Switching to an actual library implementation by @alessandropellegrini in #40
- MacOS CI, Valgrind cleanness, output fix by @Piccions in #44
- Message queue improvement by @Piccions in #46
- Docs by @Piccions in #47
- Modern cmake by @Piccions in #49
- Release 3.0.0-alpha.4 by @alessandropellegrini in #52
New Contributors
- @AdrianoPi made their first contribution in #29
Full Changelog: 3.0.0-alpha.3...v3.0.0-alpha.4
v3.0.0-alpha.3
v3.0.0-alpha2
What's Changed
- Reuse compliance by @Piccions in #18
- Release 3.0.0 by @alessandropellegrini in #20
- PRNG seed selection, model INIT and FINI handlers by @Piccions in #22
- MPI runtime fix by @Piccions in #23
- Release 3.0.0-alpha2 by @alessandropellegrini in #24
Full Changelog: 3.0.0-alpha...3.0.0-alpha2
v3.0.0-alpha
Released on 2021-02-11
This is the first release of the 3.x version of ROOT-Sim. This is a full rewrite of the simulation core, which is neater, smaller, and faster.
What's Changed
- Pull request actions by @alessandropellegrini in #9
- Cleanup code by @alessandropellegrini in #13
- Stats subsystem by @Piccions in #15
- Release 3.0.0-alpha by @alessandropellegrini in #16
Full Changelog: 2.1.0...3.0.0-alpha
v2.1.0
Released on 2020-10-28
This is a release carrying mostly bugfix, code cleanup, and performance improvements to the code base.
v2.0.0
Released on 2018-12-06
This is the stable 2.0 release of ROOT-Sim.
All the code has been properly documented. The library is accompanied by a set of rules to help the distributed development effort, and prevent something to screw up the whole work. A wiki has been added to the online repository, and the website has been significantly restructured in a way to be automatically sync'ed with the code repository (as far as possible).
Added
- ABM Support: A new set of semantically rich API has been added to ROOT-Sim. This API significantly simplifies the development of Agent-Based Models, and transparently supports all the activities required to support rollback and restore of simulation objects. The model can specify portions of the state of a simulation object which must be transparently synchronized with other LPs in the system, also on remote distributed nodes.
- JSON-based configuration of models: A JSON parser has been introduced in the library. This can be used to configure, e.g., custom topologies. Also, simulation models can lever this parser to implement their own configuration files.
- Continuous Integration: Continuous integration has been significantly refactored, allowing to stress test the project much more and realigning to newer versions of the system software. Code coverage has also been supported.
- Tests and Unit Tests: A test script has been introduced, which relies on some unit tests (currently, only DyMeLoR is subject to a unit test) and some models to cover much of the code base while testing.
- Automatic deploy of website and documentation: Continuous Integration has been rearranged to automatically generate the documentation and update some parts of the website from the content of the repository, any time that a new merge is made in
develop
or inmaster
.
Changed
- Argument parsing: We have now switched to
argp
to parse command line arguments. This has the benefit that also simulation models can implement their parsers almost at no cost. Some models have already been refactored to use this facility. - Topology library: The topology library has been significantly enhanced. New topologies have been added. In particular, it is now possible to specify arbitrary topologies, represented as graphs with edges which carry either a probability or a weight. These values are used by API functions such as
FindReceiver()
to find the destination of a message. Topologies can change at any time during simulation, and they are transparently rolled back if needed. - Checkpoint/Restore: The code supporting state saving has been refactored. In particular, the code has been modified to completely separate the routines which handle platform-level data (such as rollbackable libraries) and simulation model buffers. This separation of concerns has significantly cleaned up the code.
- Faster ULTs: This release explicitly targets x86_64 systems. Therefore, we decide to break portability, remove the portable signal-based approach for creating ULTs, and implemented an extremely fast context setup routine. This change has cut the time to setup LPs by at least a factor of 1000.
- Contributing Guidelines: Contributing guidelines have been added to the project. The code base has been significantly cleaned up and documented, to comply with the new guidelines.
Deprecated
- NUMA Optimization: The NUMA subsystem has been found to be suboptimal under some circumstances. The current research effort in this direction tells that a more comprehensive approach is feasible, and more effective. Since the new subsystem will basically constitute a complete rewrite of the previous, in this cleaner release we have deprecated the old subsystem.
- Parameter Parsing API: The new
argp
-based parser made the older code to parse simulation models parameters obsolete, and it has thus been deprecated. - Treiber Stack: The Treiber stack was being anyhow the bottleneck of the slab allocator. A different approach is under study, so this data structure has been deprecated from the simulator.
Removed
- Event & Cross State Synchronization: ECS has been temporarily compiled-out of ROOT-Sim. Some of the code base is still in the repository anyhow. A complete cleanup and enhancement of the subsystem is due for the next release.
- Buddy System and Segment Allocator: A bug in the buddy system has been found, but it was not possible to fix it in time for the current release. Considering that this is only 100% necessary for ECS (which has also been removed), and considering that the performance penalty by removing it is not that dramatic, it has been temporarily disabled (although it is still in the code base). This will be reintroduced in the next release.
2.0.0-alpha2
Released on 2018-02-01
This is the second alpha release for version 2.0.0.
In this release, several performance and correctness minor bugs have been fixed.
The preliminary experimentation has shown, under certain workloads, a 3x speedup with respect to the previous alpha.
Added
- Treiber Stack: a non-blocking Treiber stack has been added, to implement a retirement queue for message buffers, rather than freeing immediately from the slab, in order to reduce the memory-release bottleneck.
Changed
- Message Channel: switched to a (M, 1) register.
- Slab Allocator: operations have been significantly optimized.