Versioning¶
ORION follows Semantic Versioning (SemVer) to manage version numbers and releases.
Semantic Versioning¶
Version Format¶
ORION version numbers use the format:
For example: 1.2.3
Version Components¶
Each component has a specific meaning:
| Component | Meaning | Increment When |
|---|---|---|
| MAJOR | Breaking changes | API is incompatible with previous version |
| MINOR | New features | Functionality added in backward-compatible manner |
| PATCH | Bug fixes | Backward-compatible bug fixes |
Examples¶
1.0.0 → Initial stable release
1.0.1 → Bug fix (backward compatible)
1.1.0 → New feature (backward compatible)
2.0.0 → Breaking change (incompatible API)
What Triggers Version Bumps¶
MAJOR Version (X.0.0)¶
Increment when making incompatible API changes:
Examples: - Changing function signatures
! v1.x: Old signature
integer function read_file(filename)
! v2.x: New signature (incompatible)
integer function read_file(filename, options)
-
Removing public functions or modules
-
Changing data structure layouts
-
Changing default behavior in incompatible ways
- Requiring new dependencies
When to do it: - Necessary for major improvements - Cleaning up deprecated features - Fundamental architecture changes
MINOR Version (x.Y.0)¶
Increment when adding backward-compatible functionality:
Examples: - Adding new file format support
! v1.0: Support Tecplot, VTK
! v1.1: Added HDF5 support (new feature)
use Lib_HDF5 ! New module, old code still works
-
Adding new optional parameters
-
Adding new utility functions
-
Adding new command-line options
When to do it: - Adding new capabilities - Enhancing existing features - New optional parameters - New modules or packages
PATCH Version (x.y.Z)¶
Increment when making backward-compatible bug fixes:
Examples: - Fixing crashes or errors
! v1.0.0: Had a bug causing crash
if (allocated(array)) deallocate(array) ! Bug: missing check
! v1.0.1: Fixed crash
if (allocated(array)) then
deallocate(array)
endif
-
Correcting calculation errors
-
Fixing memory leaks
- Improving error messages
- Documentation corrections
- Performance improvements (without API changes)
When to do it: - Bug fixes - Security patches - Documentation updates - Minor performance tweaks