Overview
This release includes substantial changes designed to (1) improve run-time efficiency and stability, (2) simplify code complexity, (3) improve platform independent compilation, (4) permit the optional selection of Intel MKL or OpenBLAS for DynAdjust linear algebra operations, (5) improve automated testing, and (6) auto-build statically-linked and dynamically-linked binaries for Linux, Mac and Windows with either Intel MKL or OpenBLAS.
No functional changes have been made, except for minor enhancements and fixes to defects.
1. Run-time efficiency and stability
- Improve CMake configuration files (throughout) and C++ compiler flags to optimise run-time speeds
- Strengthen scheduling, execution of, and messaging between multiple threads
2. Simplify code complexity
- Refactor large source code files into smaller files, separating logical components
- Refactor code to enable multiple solver algorithms
3. Platform independent compilation
- Significant improvements to enable compilation on multiple platforms
- The source code project is now completely handled by CMake, removing all dependency upon Microsoft Visual Studio solution and project files. This eliminates maintenance complexity and duplication of effort.
4. Optional selection of Intel MKL or OpenBLAS
- Automatic identification of installed libraries
- Permit selection of preferred linear algebra library (Intel MKL or OpenBLAS)
5. Automated testing
- New GitHub workflows to test the full suite of functionality in all configurations
- Improved CMake testing
- New CTests
6. Auto-building of binaries
- New GitHub workflows to auto-build binaries for all configurations
- Statically-linked and dynamically-linked binaries
- Support for Linux, Mac and Windows
- Support for building either Intel MKL or OpenBLAS.
Minor enhancements and fixes
- Fix handling of file epoch for static datums
- Handle Y clusters with ellipsoid height (for Y Clusters in LLH format)
- Improve debug output and printing of computed LLH values
- Improve LICENSE and README
- General tidy up of header includes (and there's more work to do)