Each release lists the issues it addresses. The issue number is followed by the kind of feature (in parentheses) and a short description.
Legenda for the issue kind:
- N: new feature
- A: addition to a feature
- C: change to the behavior of a feature
- F: fixed feature
- R: removed feature
- #34 (N) Support multivalued functions (for Interval Taylor models support)
- #569 (A) Adding multiple points simulator
- #685 (A) Support ARM by making it properly fall into C99 rounding
- #686 (A) Support GCC 12 on all platforms
- #681 (C) Refactor the logger as a ConcLog logger submodule
- #688 (C) Modify atan to avoid using long double, to support ARM architecture
- #702 (C) Refactor the concurrency modules as a BetterThreads concurrency submodule
- #698 (C) Use snprintf instead of the deprecated sprintf
- #198 (C,F) Modify differential inclusion code to conform to other evolvers, fix reach set returned to be rigorous
- #678 (F) Address warnings using AppleClang, which is now usable on C++20 Concepts code
Date: 07/08/2021
- #357 (N) Introduce a TaylorSeriesBounderIntegrator, that identifies the bounds from the expansion without resorting to a Bounder initially
- #613 (A) Add Python bindings for Variables2d, Projection2d fields, HybridEnclosure space accessors
- #617 (A) Add is_polynomial_in predicate for symbolic expressions
- #622 (A) Implement GradedTaylorPicardIterator that avoids initial use of Bounder
- #626 (A) Allow 'none' graphics backend or drawer from CLI, to temporarily switch off graphics when desired
- #628 (A) Implement some methods for Polynomial, in particular for vectors thereof
- #636 (A) Add Python bindings for hybrid automaton target method
- #642 (A) Add Python bindings for hybrid automaton name and symbolic expressions in dynamics/guards/invariants/resets
- #643 (A) Add C++ and Python support for iteration through components of a CompositeHybridAutomaton
- #612 (C) Remove unused legend from Gnuplot output
- #639 (C) Use a finer (3/4) refinement strategy for the step size when computing a flow step based on an accuracy threshold
- #616 (F) Fix behavior of unary symbolic expression predicates
- #620 (F) EulerBounder did not reset the bounding domain between refinements to the step size
- #631 (F) Conditional disabling of graphics in absence of both Cairo and Gnuplot was incorrect
- #645 (F) Use only static const Generator objects, addressing linking issue for the whole library
- #623 (R) Simplify IntegratorInterface with only one flow step, removing flow/flow_to and hiding flow_bounds
Date: 24/05/2021
- #538 (N) Introduce a concurrency module designed for parallel execution of internal tasks
- #549 (N) Introduce a Least Recently Used cache utility for holding a limited number of homogeneous objects
- #559 (N) Introduce an optional ariadne_main.hpp that offers an ariadne_main() function handling all header tasks for an executable
- #562 (N) Introduce a command line interface class for acquiring CLI input arguments setting logger verbosity, theme and scheduler, along with concurrency, graphics backend and drawer
- #561 (A) Add Python bindings for TaskManager in order to control concurrency
- #570 (A) Add Python bindings for GraphicsManager in order to control drawer and graphics backend
- #571 (A) Add Python bindings for Logger in order to expose (themed) logging
- #599 (A) Add extra Python bindings for HybridEnclosure, add Python subscripting for ListSet
- #602 (A) Add extra Python bindings for Enclosure, add Python bindings for Point2d for graphics
- #605 (A) Add Python bindings for CommandLineInterface, to acquire arguments to a Python script
- #551 (C) Make VectorFieldEvolver process sets in parallel (when splitting initially or during evolution)
- #556 (C) Disallow unsafe default value of upper semantics for orbit methods
- #565 (C) Draw lists of (Labelled/Hybrid)Enclosure in parallel
- #563 (C) Rename the 'output' module into the 'io' module to support future classes related to input
- #566 (C) Make HybridEvolver process sets in parallel (due to either splitting or multiple trajectories)
- #573 (C) Use an LRU cache for modes in CompositeHybridAutomaton, avoid exhausting a given mode in HybridEvolver before changing mode
- #580 (C) VectorFieldEvolver, IteratedMapEvolver and HybridEvolver now check that the initial enclosure is consistent
- #592 (C) Enclosure now uses the global GraphicsManager drawer instead of having a dedicated configuration field
- #595 (C) Modify examples to use ariadne_main function for simplicity, tutorials are not changed
- #539 (F) A segmentation fault sometimes would be issued when terminating the executable, due to logging
- #557 (F) Fix behavior of StopWatch utility for concurrent code, enhance the class for choosing a duration type
- #567 (F) Fix problem with state_time space creation when state space already contains the 't' variable
- #576 (F) Fix HybridEnclosure state_set() incorrectly working when an auxiliary function is present
- #578 (F) Fix VectorFieldEvolver not storing the auxiliary mapping to the initial enclosure created from an expression set
- #581 (F) Fix Enclosure splittings not carrying over the auxiliary mapping
- #558 (R) Remove unnecessary IteratedMapEvolver::enclosure methods
- #552 (R) Remove evolve/reach/reach_evolve methods from EvolverInterface, relying on orbit generation only
- #553 (R) Remove ability to write an evolver object to the standard output, since it was implemented as a fixed string for all evolvers anyway
Date: 25/04/2021
- #441 (N) Introduce support for Gnuplot output, including animated gif plot of sets and tridimensional plots for PDEs
- #507 (N) Introduce a simulator for vector field dynamics
- #514 (N) Introduce Python examples in python/examples
- #538 (N) Introduce a concurrency module with basic primitives for parallel execution
- #509 (A) Add support for a set as input in simulators, using the midpoint as the effective point
- #513 (A) Add missing Python bindings for verify_safety in (Hybrid)ReachabilityAnalyser
- #516 (A) Add missing Python bindings for Real predicates to be used in automata specification
- #518 (A) Add missing Python bindings for evolver configuration and initial set assignment
- #520 (A) Add missing Python bindings for plotting using HybridFigure
- #543 (A) Add missing Python bindings for iterating across ListSet of Enclosure classes
- #527 (A) Allow to draw a Labelled/Hybrid orbit directly to a Labelled/Hybrid figure
- #492 (C) Change SFINAE code to use C++20 concepts, currently preventing AppleClang compilation under macOS until the compiler supports Concepts
- #529 (C) Disallow construction of VectorField and IteratedMap from a Function, since it was broken
- #533 (C) Map<K,V> now checks for existing key using ARIADNE_ASSERT, yielding errors also for Release builds
- #447 (F) Check that a VectorField is defined with dynamics for all involved variables, fixes a segfault within evolution
- #532 (F) RealExpressionBoundedConstraintSet could be constructed in an incoherent way, due to missing checks
- #536 (F) Discrete evolution did not update the enclosure time, resulting in incorrect plots vs time
- #211 (R) Remove various deprecated functions
Date: 09/03/2021
- #412 (N) Supply Aptitude and Homebrew packages for installation
- #267 (A) Complete Python bindings for dynamics and hybrid modules
- #477 (C) Make the tutorials the same for C++ and Python
Date: 17/04/2020
First release.