This repository has been archived by the owner on Aug 5, 2022. It is now read-only.
Version 3.0.0 RC2
Pre-release
Pre-release
This is a Release Candidate.
The most significant change is the official support of Windows. Details follow. This version breaks the Plugin API with 2.x.x versions. Details follow.
In bold, the changes that are likely to have an impact for integrators of the Parameter Framework.
Major changes:
Windows support
- Compilation has been tested with Visual Studio 12 (2013) 64bits, using both the Visual Studio and the NMake build system generators provided by CMake.
Features
- Binary export of settings has been suppressed (We didn't know of anyone using it).
- Starting the remote interface no longer depends on the presence of the remote-processor library: it now solely depends on the "TuningAllowed" attribute in the toplevel configuration.
Plugins
The API provided to the plugins has changed in a non-retrocompatible way. Plugins need to be adapted. Look at changes in the skeleton-subsystem and the test-subsystem for reference.
- The plugin entry-point symbol name no longer depends on the name of the library file containing it. Instead, it is fixed and the same for everyone. The entry-point signature has changed.
- Also, this symbol name is provided as a C macro so that plugin developers don't have to worry about it being incorrect.
- This macro's name will change whenever the API is changed in a non-retrocompatible way, so that plugin developers will know at compile time that their plugin is broken.
- As a consequence to the API change, plugins can now log in their constructors.
Android integration
The Android.mk makefiles have been removed. They may come back later on a dedicated branch or be left as an exercise to the Android integrators. We have done this in order to avoid misalignments between build systems.
Under the hood
- Compile with C++11 and use some of its feature for both achieving better code quality and portability: C++11 provides support for threading.
- Use ASIO (standalone version, aka non-boost) for networking in the remote-processor library.
- Hide non-API symbols (using visibility attribute on GCC/Clang or declspec on Windows)
Minor changes:
Features:
- test-platform daemonization has been removed (because it was not easily achievable on Windows and can be achieved by the user on Linux)
- remote-process interactive mode has been removed (it wasn't used much and was relying on a poorly-written and non-portable tokenizer)
- Support for Floating Point parameters (obeying the IEEE 754 norm)
- API methods
{get,set}SchemaFolderLocation
are replaced with{get,set}SchemaUri
. As the name suggests, it takes a URI instead of a path but it is retro-compatible (under the hood, it uses functions provided by libxml2 which understands paths as URI). - A new parameter adaptation has been added: Logarithmic Adaptation (TODO: more details)
Build and CI
- Explicitly depend on CMake 2.8.12 or later (we are using features introduced in that release)
- We use "AppVeyor" as Windows CI engine.
Tests
- Test the skeleton-subsystem
Misc
- Write a "requirements" documentation: http://01org.github.io/parameter-framework/requirements/
- Lots of under-the-hood changes and reworks for portability.
- Fixes of defects found by static analysis tools.