<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">If you startup the VM from the command line, you will get something like this as the first line:<div class=""><br class=""></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class="">Self Virtual Machine Version 4.1.13, Sun 15 May 16 17:34:42 Mac OS X i386 (4.5.0-101-g6e1af6f)</div></blockquote><div class=""><br class=""></div><div class="">This version number looks like it might be some sort of semantic versioning system (<a href="http://semver.org" class="">semver.org</a>) or at least a major-minor-patch type of thing.</div><div class=""><br class=""></div><div class="">However, it really is Major.Minor.SnapshotVersion</div><div class=""><br class=""></div><div class="">In universe.cpp, the versions are set up:</div><div class=""><br class=""></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><div class="">// increment VM_snapshot_version whenever old snapshots will break; reset</div></div><div class=""><div class="">// it to zero when changing the minor or major version</div></div><div class=""><div class="">smi VM_major_version    = 4;</div></div><div class=""><div class="">smi VM_minor_version    = 1;</div></div><div class=""><div class="">smi VM_snapshot_version = 13;</div></div></blockquote><div class=""><div class=""><br class=""></div><div class="">but this comment is I think wrong, because the code only ever looks at the snapshot_version when determining loading a snapshot.:</div><div class=""><br class=""></div></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><div class=""><div class="">  // return for snapshots whose version matches the current snapshot version</div></div></div><div class=""><div class=""><div class="">  if (snapshot_version == VM_snapshot_version)</div></div></div><div class=""><div class=""><div class="">    return;</div></div></div><div class=""><div class=""><div class=""><br class=""></div></div></div><div class=""><div class=""><div class="">  // Between snapshot versions 10 and 11, a new primitive was added: CompileWithSICNames.</div></div></div><div class=""><div class=""><div class="">  // To maintain compatibility, and since there's only a minor addition, we also read</div></div></div><div class=""><div class=""><div class="">  // snapshot whose version is 10. -mabdelmalek 11/02</div></div></div><div class=""><div class=""><div class=""><br class=""></div></div></div><div class=""><div class=""><div class="">  bool can_read_snapshot_with_mismatched_version =</div></div></div><div class=""><div class=""><div class="">        (snapshot_version == 10  &&  VM_snapshot_version == 11)</div></div></div><div class=""><div class=""><div class="">    || ((snapshot_version == 10 || snapshot_version == 11)  &&  VM_snapshot_version == 12)</div></div></div><div class=""><div class=""><div class="">    || ((snapshot_version == 12) && VM_snapshot_version == 13);</div></div></div><div class=""><div class=""><div class="">    </div></div></div><div class=""><div class=""><div class="">  if (can_read_snapshot_with_mismatched_version)</div></div></div><div class=""><div class=""><div class="">  <span class="Apple-tab-span" style="white-space:pre">   </span>warning6("\n\tThis snapshot was saved using a different version\n"</div></div></div><div class=""><div class=""><div class="">                 "\tof the Self Virtual Machine (%d.%d.%d) and may behave unexpectedly\n"</div></div></div><div class=""><div class=""><div class="">                 "\tor not work correctly with this version (%d.%d.%d).\n", </div></div></div><div class=""><div class=""><div class="">                 read_major_version,</div></div></div><div class=""><div class=""><div class="">                 read_minor_version,</div></div></div><div class=""><div class=""><div class="">                 snapshot_version,</div></div></div><div class=""><div class=""><div class="">                 VM_major_version,</div></div></div><div class=""><div class=""><div class="">                 VM_minor_version,</div></div></div><div class=""><div class=""><div class="">                 VM_snapshot_version);</div></div></div><div class=""><div class=""><div class=""><br class=""></div></div></div><div class=""><div class=""><div class="">  if (!can_read_snapshot_with_mismatched_version)</div></div></div><div class=""><div class=""><div class="">    fatalNoMenu6("\n\tThis snapshot was saved using a different version\n"</div></div></div><div class=""><div class=""><div class="">                 "\tof the Self Virtual Machine (%d.%d.%d) and will not\n"</div></div></div><div class=""><div class=""><div class="">                 "\twork with this version (%d.%d.%d).\n", </div></div></div><div class=""><div class=""><div class="">                 read_major_version,</div></div></div><div class=""><div class=""><div class="">                 read_minor_version,</div></div></div><div class=""><div class=""><div class="">                 snapshot_version,</div></div></div><div class=""><div class=""><div class="">                 VM_major_version,</div></div></div><div class=""><div class=""><div class="">                 VM_minor_version,</div></div></div><div class=""><div class=""><div class="">                 VM_snapshot_version);</div></div></div></blockquote><div class=""><div class=""><br class=""></div><div class="">So if I increment the minor_version and reset the snapshot_version to 0, then the version checking will have to start looking at all the components, not just the snapshot_version.</div><div class=""><br class=""></div><div class="">We should do a new release soon. This should include a newly built VM and to distinguish it there should be a new VM number. </div><div class=""><br class=""></div><div class="">So what should we number it?</div><div class=""><br class=""></div><div class="">4.2.0 and change the version checking code?</div><div class="">4.2.13?</div><div class="">4.1.14 and make it read .13 snapshots?</div><div class="">2016.1/13?</div><div class="">2016.1/14?</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">:) Russell </div><div class=""><br class=""></div></div></body></html>