Hi Simon,
In the preparation for the upcoming 1.0 release of our library we recently
made a significant breaking change to both our API and the pool layout.
Informations about that are in this pull request:
https://github.com/pmem/nvml/pull/671The root object type number is specific because it's manully configurable
and the rationale behind the POBJ_ROOT_TYPE_NUM is to ensure that the
programmer knows what's the return value of pmemobj_type_num() function
when called on the root object. And yes, this value is stored in the pool
file in the root object's header - you can check this information with
the pmempool cli we provide.
This specific change does NOT break backward-compatiblity with existing
pools.
Because our library hasn't reached a stable release yet (we are close), we
weren't too concerned with breaking pmemobj pool backward-compatiblity. In
the same pull request as the root object type number change, the pool
layout changed significantly.
If you are already running old versions of libpmemobj in production,
please let us know so that we can help you transition to more recent
versions (we are not planning any further changes to the layout).
After 1.0 release our memory layout is going to be rock solid :)
Piotrek