[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