Hi David,<div><br></div><div>    first, thatks very much.  These will enable us to simplify the time implementation significantly, and that&#39;s important.<br><br><div class="gmail_quote">On Wed, Aug 15, 2012 at 8:07 PM, David T. Lewis <span dir="ltr">&lt;<a href="mailto:lewis@mail.msen.com" target="_blank">lewis@mail.msen.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <br>We currently have incompatible implementations of microsecond clock primitives<br>
in SqueakVM and Cog. Opinions may vary as the the preferred approach, but the<br>
inconsistencies need to be reconciled.<br>
<br>
I have implemented the Cog primitives on SqueakVM, and the SqueakVM primitive<br>
on Cog. The platform source support for these is different on Cog and trunk, but it<br>
turned out to be straightforward to do equivalent implementations in the two VMMaker<br>
branches. I would like to suggest that we adopt a common set of three primitives in<br>
both Cog and SqueakVM trunk. We can worry about reconciling the platform sources<br>
in the future, meanwhile there is value in providing a common api for the primitives.<br>
<br>
The three primitives of interest are these:<br>
<br>
primitiveUtcWithOffset<br>
        &quot;Answer an array with UTC microseconds since the Posix epoch and<br>
        the current seconds offset from GMT in the local time zone.<br>
        This is a named (not numbered) primitive in the null module (ie the VM)&quot;<br>
<br>
primitiveUTCMicrosecondClock<br>
        &quot;Answer the UTC microseconds since the Smalltalk epoch. The value is<br>
        derived from the Posix epoch with a constant offset corresponding to<br>
        elapsed microseconds between the two epochs according to RFC 868.&quot;<br>
<br>
primitiveLocalMicrosecondClock<br>
        &quot;Answer the local microseconds since the Smalltalk epoch. The value is<br>
        derived from the Posix epoch with a constant offset corresponding to<br>
        elapsed microseconds between the two epochs according to RFC 868, and<br>
        with an offset duration corresponding to the current offset of local<br>
        time from UTC.&quot;<br>
<br>
I am attaching two change sets for consideration. Cog-primitiveUtcWithOffset-dtl.cs<br>
is for inclusion in oscog to provide an implementation of the SqueakVM primitiveUtcWithOffset.<br>
SqueakVM-cogMicrosecondPrimitives-dtl.cs is for inclusion in the interpreter VM to<br>
provide implementions of primitiveUTCMicrosecondClock and primitiveLocalMicrosecondClock<br>
and add them to the numbered primitives table.<br>
<br>
Does this sound like a reasonable solution? If so, I will commit primitiveUTCMicrosecondClock<br>
and primitiveLocalMicrosecondClock to VMMaker trunk, and request that the<br>
primitiveUtcWithOffset change be added to Cog.<br></blockquote><div><br></div><div>It does, but I need some time to integrate first.  I&#39;ll report back soon.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
Thanks,<br>
Dave<br>
<br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div><br>
</div>