<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>