h1. Release Notes

h2. Eclipse APP4MC 1.1.0 (Apr 2021)

Model handling
* Model migration support (1.0.0 -> 1.1.0)

Product
* Improved handling of models in the Amalthea Model Editor
** model loading on demand
** faster loading of (large) models
** improved resolution of cross-file references
* Reduced dependencies of the Amalthea model<br/>(allows easier use in non Eclipse environments)
* Removed "Amalthea no-load nature"<br/>(no longer required because of model loading on demand)
* New visualization of scheduler mapping
* Validations: New APP4MC.sim validations
* Several bug fixes

Recommended Java runtime is *Java 11*.<br/>Minimum is Java 8 (with limitations if JavaFX is not included).

_For details see "Release 1.1.0 issues":https://projects.eclipse.org/projects/technology.app4mc/releases/1.1.0/bugs_


h2. Eclipse APP4MC 1.0.0 (Nov 2020)

Model handling
* Model migration support (0.9.9 -> 1.0.0)

Model changes
* Removed MeasurementModel (deprecated since 0.9.9 and replaced by new ATDB)
* Removed ProcessEventType 'deadline'

Product
* New Amalthea Trace Database (ATDB)
* New transformations BTF -> ATDB, ATDB -> Amalthea
* Extended Metrics Viewer
* Several bug fixes

UI
* Added possibility to refresh a pinned visualization

_For details see "Release 1.0.0 issues":https://projects.eclipse.org/projects/technology.app4mc/releases/1.0.0/bugs_


h2. Eclipse APP4MC 0.9.9 (Jul 2020)

Model handling
* Model migration support (0.9.8 -> 0.9.9)

Model changes
* Data types: Struct and StructEntry are tagable
* MeasurementModel is deprecated

Product
* Trace data and metrics: Extended definition of Amalthea Trace Database (Preview)
* Validations: New INCHRON validations, extended documentation

UI
* Model Explorer no longer expands model files
* Migration dialog supports recursive operation on folders

_For details see "Release 0.9.9 issues":https://projects.eclipse.org/projects/technology.app4mc/releases/0.9.9/bugs_


h2. Eclipse APP4MC 0.9.8 (Apr 2020)

Model handling
* Model migration support (0.9.7 -> 0.9.8)

Product
* Eclipse target platform is updated to IDE 2019-12
* New (extendable) visualization framework
* Standard visualizations for runnables and deviations
* Additional example models
* EMF model viewers are available as update site
* ...

_For details see "Release 0.9.8 issues":https://projects.eclipse.org/projects/technology.app4mc/releases/0.9.8/bugs_


h2. Eclipse APP4MC 0.9.7 (Jan 2020)

Model handling
* Model migration support (0.9.6 -> 0.9.7)
* Added virtual folders in component model tree view

Model changes
* Introduced namespaces and component structures
* New model element to describe hierarchical interfaces
* Model cleanup (simplified component ports)

Product
* Restructured migration component (also available as headless jar)

_For details see "Release 0.9.7 issues":https://projects.eclipse.org/projects/technology.app4mc/releases/0.9.7/bugs_


h2. Eclipse APP4MC 0.9.6 (Oct 2019)

Model handling
* Model migration support (0.9.5 -> 0.9.6)
* New "no-load" nature (avoids model loading while moving/copying model files)
* Multi-line strings are supported in the editor (for selected string attributes)

Model changes
* Extended ModeConditions (allow the comparison of two mode labels)
* Refined EventChain definition (to explicitly describe fork-join, alternative, etc.)
* Counter added to RunnableCall

Build infrastructure
* Split git repository and independent build job for model migration component
* Changed to tycho-pomless maven builds

_For details see "Release 0.9.6 issues":https://projects.eclipse.org/projects/technology.app4mc/releases/0.9.6/bugs_


h2. Eclipse APP4MC 0.9.5 (Jul 2019)

Model handling
* Model migration support (0.9.4 -> 0.9.5)
* New validation framework

Model changes
* Consolidated call graph: items of tasks and runnables are unified, call sequences are removed
* Simplified clock definitions (used in scenarios of variable rate stimuli)
* Limited frequency values to non negative (value >= 0)

_For details see "Release 0.9.5 issues":https://projects.eclipse.org/projects/technology.app4mc/releases/0.9.5/bugs_


h2. Eclipse APP4MC 0.9.4 (Apr 2019)

Model handling
* Model migration support (0.9.3 -> 0.9.4)
* Optimized model search
* New validation framework (preview)

Model changes
* Extended modes to allow the handling of counters (integer values, comparison, increment, decrement)
* Uniform use of execution conditions (for stimuli, runnables, mode switches)
* Model cleanup (removed runnable deadlines, distinct naming)

_For details see "Release 0.9.4 issues":https://projects.eclipse.org/projects/technology.app4mc/releases/0.9.4/bugs_


h2. Eclipse APP4MC 0.9.3 (Jan 2019)

Model handling
* Model migration support (0.9.2 -> 0.9.3)
* Optimized model search

Model changes
* Introduced "Ticks" as base concept for required computation effort
* Simplified "Execution Needs" (no specific entries for different processing units)
* Reworked distributions (discrete, continuous, time) without generics

_For details see "Release 0.9.3 issues":https://projects.eclipse.org/projects/technology.app4mc/releases/0.9.3/bugs_


h2. Eclipse APP4MC 0.9.2 (Oct 2018)

Model handling
* Model migration support (0.9.1 -> 0.9.2)
* New model search dialog
* New model builders (with a Groovy-like builder pattern)

Model changes
* Small extensions in the hardware model

_For details see "Release 0.9.2 issues":https://projects.eclipse.org/projects/technology.app4mc/releases/0.9.2/bugs_


h2. Eclipse APP4MC 0.9.1 (Jul 2018)

General
* New Eclipse Oxygen.3a based product (compatible with Java 8, Java 9 and Java 10)
* License change from EPL-1.0 to EPL-2.0

Model handling
* Model migration support (0.9.0 -> 0.9.1)
* New implementation of transient back references
* Unified approach for fast name search and mass delete
* Updated model utilities

Model changes
* New concept of DataDependency (to describe potential data dependencies)
* New possibility to specify RunnableParameters and CallArguments


h2. Eclipse APP4MC 0.9.0 (Apr 2018)

Model handling
* Model migration support (0.8.3 -> 0.9.0)
* Updated model utilities

Model changes
* *New hardware model*
* New concept of ExecutionNeed (replaces the former RunnableInstructions)

 __Note: This is the first implementation of the new hardware model. It will be extended in the next version and (minor) changes are expected__.


h2. Eclipse APP4MC 0.8.3 (Jan 2018)

General
* New Eclipse Neon.3 based product

Model handling
* Model migration support (0.8.2 -> 0.8.3)
* Updated model utilities

Model changes
* New mode conditions (logical AND)
* New timing requirement (end to start)
* Reworked Stimuli definitions
* New reference to port for client server and sender receiver communication

_For details see "Release 0.8.3 issues":https://projects.eclipse.org/projects/technology.app4mc/releases/0.8.3/bugs_


h2. Eclipse APP4MC 0.8.2 (Oct 2017)

General
* Model changes (extensions)
* New graphical editors (based on Sirius)

Model handling
* Model migration support (0.8.1 -> 0.8.2)
* New model utilities

Model changes
* New runnable item to get the result of an asynchronous request
* New possibility to specify the label access implementation
* New measurement model
* New component event

_For details see "Release 0.8.2 issues":https://projects.eclipse.org/projects/technology.app4mc/releases/0.8.2/bugs_


h2. Eclipse APP4MC 0.8.1 (Jul 2017)

General
* Model changes (extension and harmonization)
* Improved model handling
* New tooling: EMF Graphical Viewer

Model handling
* Model migration support (0.8.0 -> 0.8.1)
* New support for compressed model files (zip)
* More back references

Model changes
* Extended Schedulers (hierarchical, reservation based)
* Extend Semaphore definition (types)
* Consistent naming of Triggers, Activations and Stimuli
* New elements for data driven computation (conditions, triggers)

_For details see "Release 0.8.1 issues":https://projects.eclipse.org/projects/technology.app4mc/releases/0.8.1/bugs_



h2. Eclipse APP4MC 0.8.0 (Apr 2017)

General
* Model changes (mainly to simplify handling)
* Improved tooling: model utilities
* New UI components: Multicore Wizard, Task-Visualizer (draft version)

Model handling
* Model migration support (0.7.2 -> 0.8.0)

Model changes
* Simplified model handling: Mapping Model, Modes, Time
* New classifiers to annotate Core and Memory
* Reworked Property Constraints
* Extended OS Overheads

_For details see "Release 0.8.0 issues":https://projects.eclipse.org/projects/technology.app4mc/releases/0.8.0/bugs_



h2. Eclipse APP4MC 0.7.2 (Jan 2017)

General
* Smaller product definition (optional parts can be installed via update sites)
* Harmonized model API

Model handling
* Model migration support (0.7.1 -> 0.7.2)
* Improved back references

Model changes
* New core-specific runtimes (instructions) for runnables
* New model elements for streaming communication (Channels)*
* New Transmission Policy for communication (e.g. label accesses) 
* New Event-based Stimulus
* New Data Consistency needs
* New Counters for InterProcessActivation and EventStimulus
* Harmonized model elements to describe probability
* Storage of common elements (e.g. tags) in one central location

Bug fixes / Improvements
* Model migration (ISR call graph, Section names, cross document references)
* Back references (Memory -> Mapping, Scheduler -> CoreAllocation)

Documentation
* New model elements: Physical memory sections, Channels
* New examples

 * =  __Experimental feature (first modeling attempt that may change in future versions)__.

_For details see "Release 0.7.2 issues":https://projects.eclipse.org/projects/technology.app4mc/releases/0.7.2/bugs_



h2. Eclipse APP4MC 0.7.1 (Oct 2016)

Model handling
* Model migration support (0.7.0 -> 0.7.1)
* Improved update of opposite references
* Storage of default values is enabled by default

Model changes
* New distribution "Beta Distribution"
* New stimuli type "Synthetic" (to "replay" activations from a hardware trace)
* New DataStabilityGroup
* Introduced SamplingType as new attribute for Deviation
* Introduced physical memory sections (PhysicalSectionConstraint, PhysicalSectionMapping)
* Reworked AffinityConstraints (removed Scheduler constraints, added Data constraints)
* Reworked Event / Event-Chain Constraints
* Reworked RunnableSequencingConstraints
* New types for DataSizes and DataRates

_For details see "Bugzilla entries for 0.7.1":https://bugs.eclipse.org/bugs/buglist.cgi?product=App4mc&target_milestone=0.7.1_



h2. Eclipse APP4MC 0.7.0 (Jul 2016)

Model handling
* Model migration support (itea1.1.0 -> itea1.1.1 -> 0.7.0)
* Simplified model creation wizard
* One consolidated model
* Additional opposite references (transient) to ease model navigation
* Scripting support for workflows (based on Eclipse EASE)

Model changes
* Removed 'attributes' and 'features' from hardware model
* Replaced generic __ProcessAllocation__ with specific __ISRAllocation__ and __TaskAllocation__
* New __BigInteger__ values for __CustomAttributes__
* Some renamed classes and attributes (details in the help)

Model structure
* Removed direct dependency to Franca (replaced by implicit reference by interface name)

Documentation
* Updated model documentation / class diagrams
* New developer guide regarding Model Migration Framework
* New developer guide regarding Workflows

