Skip to content
This repository was archived by the owner on Feb 26, 2025. It is now read-only.

Commit 9cbd834

Browse files
Nicolas Cornu1ucmatz-e
authored
Prepare v3.0.0-beta1. (#1027)
Update CHANGELOG and version number for pre-release `3.0.0-beta1`. --------- Co-authored-by: Luc Grosheintz <luc.grosheintz@gmail.com> Co-authored-by: Matthias Wolf <matthias.wolf@epfl.ch>
1 parent 6837987 commit 9cbd834

File tree

7 files changed

+67
-2
lines changed

7 files changed

+67
-2
lines changed

CHANGELOG.md

+25
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,29 @@
11
# Changes
2+
## Version 3.0.0-beta - 2024-07-16
3+
This version is a major one and is breaking some usage compare to v2.
4+
Read the migration guide from the documentation: https://bluebrain.github.io/HighFive/md__2home_2runner_2work_2_high_five_2_high_five_2doc_2migration__guide.html
5+
6+
The minimum version for C++ has been moved to `C++14`.
7+
8+
### Removed
9+
- Removed `read(T*, ...)`, use explicit `read_raw(T*, ...)` for `Slice` or `Attribute`. (#928)
10+
- Removed `FixedLenStringArray`, use any container with strings instead. (#932)
11+
- Removed `FileDriver` and `MPIOFileDriver`, use file access properties instead. (#949)
12+
- Removed default constructor for `Group` and `DataSet`. (#947, #948)
13+
- Broadcasting have been removed. Use `squeeze` and `reshape` feature instead. (#992)
14+
- `ObjectCreateProps` and `ObjectAccessProps` those don't map well to HighFive and are unused. (#1002)
15+
16+
### New Features
17+
- Added support for `std::span`. (#987)
18+
- Added `squeezeMemSpace` and `reshapeMemSpace` for `Attribute` and `Slice` to reshape the memory space. (#991)
19+
- Added `ProductSet` to select a Cartesian products of (generalized) slices. (#842)
20+
21+
### Improvements
22+
- Optimized chained hyperslab selection. (#1031)
23+
- Type `T[N]` or `T[N][M]` will work better. (#929)
24+
- `DataspaceType` is now an enum class for `dataspace_scalar` or `dataspace_null`. (#900)
25+
- `File::AccessMode` is now an enum class. (#1020)
26+
227
## Version 2.9.0 - 2024-01-25
328
### New Features
429
- Add named ctors for scalar and null dataspaces. (#899)

CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.13)
22
cmake_policy(VERSION 3.13)
33

44
project(HighFive VERSION 3.0.0)
5+
set(HIGHFIVE_VERSION_PRERELEASE 1)
56

67
# Configure HighFive
78
# ------------------

README.md

+21
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,27 @@ It integrates nicely with other CMake projects by defining (and exporting) a Hig
4646
- xtensor (optional)
4747
- half (optional)
4848

49+
### Versioning & Code Stability
50+
We use semantic versioning. Currently, we're preparing `v3` which contains a
51+
limited set of breaking changes required to eliminate undesireable behaviour or
52+
modernize outdated patterns. We provide a
53+
[Migration Guide](https://bluebrain.github.io/HighFive/md__2home_2runner_2work_2_high_five_2_high_five_2doc_2migration__guide.html),
54+
please report any missing or incorrect information to help others make the
55+
switch more easily.
56+
57+
- `v2.x.y` are stable and any API breaking changes are considered bugs. There's
58+
like not going to be very many releases of the `v2` line once `v3` is stable.
59+
60+
- `v3.0.0-beta?` are pre-releases of `v3.0.0`. We predict that one more
61+
breaking changes might happen: the string handling is confusing to some of the
62+
maintainers and the default encoding is inconsistent (and will likely be made
63+
consistent).
64+
65+
For codes that either use `std::string` when dealing with strings, or that
66+
don't use strings with HDF5 at all, we don't currently have any additional
67+
breaking changes planned for 3.0.0.
68+
69+
4970
### Known flaws
5071
- HighFive is not thread-safe. At best it has the same limitations as the HDF5 library. However, HighFive objects modify their members without protecting these writes. Users have reported that HighFive is not thread-safe even when using the threadsafe HDF5 library, e.g., https://github.com/BlueBrain/HighFive/discussions/675.
5172
- Eigen support in core HighFive was broken until v3.0. See https://github.com/BlueBrain/HighFive/issues/532. H5Easy was not

include/highfive/H5Version.hpp

+4-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
#define HIGHFIVE_VERSION_MINOR 0
1313
#define HIGHFIVE_VERSION_PATCH 0
1414

15+
// Undefined for regular releases.
16+
#define HIGHFIVE_VERSION_PRERELEASE 1
17+
1518
/** \brief Concatenated representation of the HighFive version.
1619
*
1720
* \warning The macro `HIGHFIVE_VERSION` by itself isn't valid C/C++.
@@ -30,4 +33,4 @@
3033
*
3134
* \warning This macro only exists from 2.7.1 onwards.
3235
*/
33-
#define HIGHFIVE_VERSION_STRING "3.0.0"
36+
#define HIGHFIVE_VERSION_STRING "3.0.0-beta1"

include/highfive/H5Version.hpp.in

+4-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
#define HIGHFIVE_VERSION_MINOR @PROJECT_VERSION_MINOR@
1313
#define HIGHFIVE_VERSION_PATCH @PROJECT_VERSION_PATCH@
1414

15+
// Undefined for regular releases.
16+
#define HIGHFIVE_VERSION_PRERELEASE @HIGHFIVE_VERSION_PRERELEASE@
17+
1518
/** \brief Concatenated representation of the HighFive version.
1619
*
1720
* \warning The macro `HIGHFIVE_VERSION` by itself isn't valid C/C++.
@@ -30,4 +33,4 @@
3033
*
3134
* \warning This macro only exists from 2.7.1 onwards.
3235
*/
33-
#define HIGHFIVE_VERSION_STRING "@PROJECT_VERSION@"
36+
#define HIGHFIVE_VERSION_STRING "@PROJECT_VERSION@-beta@HIGHFIVE_VERSION_PRERELEASE@"

include/highfive/bits/H5Slice_traits.hpp

+6
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,7 @@ class HyperSlab {
401401
///
402402
/// Note that the selections along each axis must be sorted and non-overlapping.
403403
///
404+
/// \since 3.0
404405
class ProductSet {
405406
public:
406407
template <class... Slices>
@@ -461,6 +462,11 @@ class SliceTraits {
461462
///
462463
Selection select(const ElementSet& elements) const;
463464

465+
///
466+
/// \brief Select a region consisting of a product of slices.
467+
///
468+
/// \since 3.0
469+
///
464470
Selection select(const ProductSet& product_set) const;
465471

466472
template <typename T>

tests/unit/tests_high_five_base.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -2537,6 +2537,12 @@ TEST_CASE("Version Numbers") {
25372537
std::to_string(patch);
25382538

25392539
CHECK(version == expected);
2540+
2541+
#if defined(HIGHFIVE_VERSION_PRERELEASE)
2542+
int prerelease = HIGHFIVE_VERSION_PRERELEASE;
2543+
expected += "-beta" + std::to_string(prerelease);
2544+
#endif
2545+
25402546
CHECK(HIGHFIVE_VERSION_STRING == expected);
25412547
}
25422548

0 commit comments

Comments
 (0)