version - moduleus/urx GitHub Wiki
Version
Terminology
The library urx contains the data structure and the API.
The data structure represents raw data. This can be a file or data structures in C++ / MATLAB / Python formats.
The API includes C++ functions exploiting the data structure, as well as Python and MATLAB interfaces.
The library loads a file with the same major version number but imports a file with an older major version number.
Format
Version numbers follow X.Y.Z format where:
- X: major version,
- Y: minor version,
- Z: patch version.
A major version change occurs when there is a compatibility break in the data structure and possibly the API.
A minor version change occurs when a feature is added or deprecated in the API, or when a field in the data structure is deprecated. Deprecated elements may be removed when the next major version is released.
A patch version change occurs when there is a modification in the API that neither adds nor removes features (such as a bug fix).
When the data structure is loaded by a library with the same major version but a different minor or patch version, the data structure version is updated in memory, but the original file is preserved. Note that when the loaded data structure is saved to a file, the version written will be the new version.
Example of Library Version Change
| Case | Change |
|---|---|
| Change in data structure | Major |
| Optimization of read/write time | Minor (if a new function or parameter is added to a function), Patch (if C++ function signatures and Python/MATLAB interfaces remain unchanged). |
| Better installation tool | Minor (e.g., if a MATLAB file is missing), Patch (if no new feature is introduced). |
Version Compatibility
A version of the urx library can only read data from the same major version via the load method.
Use the import method to read a urx file with a lower major versions. As a reminder, any modification to the data structure requires a major version change.
If the data structure to be read has a higher major version than the library, you must either update your library/software or use the external conversion utility available in a more recent version of the library.
This utility allows you to upgrade or downgrade versions. A final report will indicate any potential incompatibilities.
UAC
When using UAC library, you need to use the same major.minor version of both libraries.
Data structure compatibility examples
| Case | File version | Library version | Behavior |
|---|---|---|---|
| Major | 1.2.3 | 0.x.x | Cannot read file. Ask the user to update the software or convert the data via the external utility from a more recent version. |
| Major | 1.2.3 | 2.x.x | Cannot read file. Ask user to import urx file. |
| Patch | 1.2.3 | 1.2.x | Compatible |
| Minor | 1.2.3 | 1.0.0 | Compatible |
| Minor | 1.2.3 | 1.5.0 | Compatible |