devel-versioning.rst
changeset 1112 91e7ec70a38e
parent 1108 60726f28b999
child 1113 c55780172a46
equal deleted inserted replaced
1111:e1a7f1896571 1112:91e7ec70a38e
   344   GLib GTK+ Gimp GNOME Kaffe
   344   GLib GTK+ Gimp GNOME Kaffe
   345 
   345 
   346 Forms of compatibility.
   346 Forms of compatibility.
   347 =======================
   347 =======================
   348 
   348 
       
   349 Source/binary compatibility.
       
   350 ----------------------------
       
   351 
   349 Runtime or binary compatibility mean that binary can be swaped with another
   352 Runtime or binary compatibility mean that binary can be swaped with another
   350 version without breaking normal program work.
   353 version without breaking normal program work.
   351 
   354 
   352 Compile time or source compatibility mean that supplied header/interfaces allow
   355 Compile time or source compatibility mean that supplied header/interfaces allow
   353 successful compiling/linking.
   356 successful compiling/linking.
   357  * Change type of argument in method to more generic take source compatibility
   360  * Change type of argument in method to more generic take source compatibility
   358    but break binary compatibility.
   361    but break binary compatibility.
   359  * Adding new method to abstract class take binary compatibility but break
   362  * Adding new method to abstract class take binary compatibility but break
   360    compilation (unimplement method error).
   363    compilation (unimplement method error).
   361 
   364 
   362 File format compatibility.
   365 Format or protocol compatibility.
   363 
   366 ---------------------------------
   364 Protocol compatibility.
   367 
   365 
   368 File format or protocol backward compatibility mean that new program can use old
   366 
   369 format or protocol.
       
   370 
       
   371 In order to do that file format or protocol MUST store or provide some
       
   372 versioning information. Usually this done by:
       
   373 
       
   374  * Separate versioning field in data.
       
   375  * New prefix or name in data.
       
   376  * List of feature requirements, supported algorighm, etc.
       
   377 
       
   378 It is essential make code that detect unknown or possibly new format or protocol
       
   379 and stop working with them to avoid user data corruption.
       
   380 
       
   381 Forward compati
   367 
   382 
   368 Reference.
   383 Reference.
   369 ==========
   384 ==========
   370 
   385 
   371   http://semver.org/
   386   http://semver.org/