[Bf-committers] File VERSION -> MINVERSION
Holger Machens
homac at strace.org
Sat Nov 30 14:26:10 CET 2019
Hello folks!
TLDR question:
What is the meaning of the attributes
minversion and minsubversion in DNA
struct FileGlobal?
(ref: source/makesdna/DNA_fileglobal_types.h)
Too Long Explanation:
I've just updated my Java API (Java .Blend) to reflect recent DNA
changes in release 2.81-16. I've noticed, that BLENDER_MINVERSION still
refers to release 2.80-0 while some changes in the DNA of release 2.81-x
render older files incompatible on a binary level. For example some
attributes of structs in the DNA exchanged their position or new
attributes were added inbetween existing attributes, which also changes
the relative position of other attributes in the data structure. Thus,
you cannot just use a pointer to a C struct of version 2.81 to interpret
the data of a C struct in version 2.80. But it would have been possible
if attributes were only added to the end of a struct only for example.
I looked in the source code and read the recent manual but didn't find
an explanation regarding the meaning of MINVERSION and MINSUBVERSION.
According to my observations, I have to assume, that files in the range
from MINVERSION to VERSION are not meant to be binary compatible with
each other. On the other hand, Blender can read and translate Blender
files from much older versions than 2.80 for example. Thus, I wonder
what purpose the MINVERSION in the global files structure has. Is it
eventually going to be removed in future releases?
Thanks in advance
Holger Machens
More information about the Bf-committers
mailing list