<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-2">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Verdana;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Right, you can’t put it back in the same state; you just
create a new one.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Here is an example showing a case where I had a field named “PrivateMutex”
that was embedded in an object that needed to be pickled.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>TYPE<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>   PrivateMutex = MUTEX BRANDED Brand &
".PrivateMutex" OBJECT END;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>(*|***********************************************************************************)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>(*   Pickle Procedures                                                              
*)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>(*|***********************************************************************************)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>TYPE<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>   Special = Pickle.Special OBJECT<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>   OVERRIDES<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>      write := WriteSpecial;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>      read := ReadSpecial;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>   END; (* Special *)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>PROCEDURE WriteSpecial (self: Special;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>                        <*UNUSED*>ref: REFANY;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>                        <*UNUSED*>writer: Pickle.Writer<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>                       )<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>   RAISES {Pickle.Error,<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>      <*NOWARN*>Wr.Failure, Thread.Alerted} =<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>(* Special pickle writer for LiteConfig.PrivateMutex objects. *)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>BEGIN (* WriteSpecial *)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>   IF self.sc = TYPECODE(PrivateMutex)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>   THEN<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>      (* omit writing the mutex field *)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>   ELSE<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>      RAISE Pickle.Error("LiteConfig.WriteSpecial asked to
process unrecognized typecode."); (* should never happen *)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>   END; (* if *)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>END WriteSpecial;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>PROCEDURE ReadSpecial (self: Special;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>                       reader: Pickle.Reader;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>                       id: Pickle.RefID<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>                      ): REFANY<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>   RAISES {Pickle.Error,<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>      <*NOWARN*>Rd.EndOfFile, Rd.Failure, Thread.Alerted}
=<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>(* Special pickle reader for LiteConfig.PrivateMutex objects. *)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>BEGIN (* ReadSpecial *)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>   IF self.sc = TYPECODE(PrivateMutex)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>   THEN<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>      WITH m = NEW(PrivateMutex)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>      DO<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>         reader.noteRef(m, id);<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>         RETURN m;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>      END; (* with *)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>   ELSE<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>      RAISE Pickle.Error("LiteConfig.ReadSpecial asked to
process unrecognized typecode."); (* should never happen *)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>   END; (* if *)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>END ReadSpecial;<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>BEGIN (* LiteConfig *)<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>   Pickle.RegisterSpecial(NEW(Special, sc :=
TYPECODE(PrivateMutex)));<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Courier New";
color:#1F497D'>END LiteConfig.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> jayk123@hotmail.com
[mailto:jayk123@hotmail.com] <b>On Behalf Of </b>Jay K<br>
<b>Sent:</b> Monday, February 01, 2010 2:47 PM<br>
<b>To:</b> Coleburn, Randy; m3devel<br>
<b>Subject:</b> RE: [M3devel] platform-independent packing/alignment?<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal><span style='font-size:10.0pt;font-family:"Verdana","sans-serif"'>You *might*
imagine pickling a mutex, held or not, like to<br>
"freeze"/"suspend" a running system, possibly to move to<br>
another system, where it is "resumed".<br>
 <br>
 <br>
But in reality, that won't work.<br>
 <br>
 <br>
If changing alignment/padding won't break pickles, I again<br>
suggest that "max_align" be raised to at least 64 for all
architectures.<br>
So that double and longint are aligned.<br>
Or that max_align be thrown out entirely and have the architectures<br>
all declare things correctly..which they likely already are.<br>
 <br>
 <br>
 >  recreates the MUTEX in the environment of the reading program<br>
 <br>
Just with "NEW(MUTEX)" right?<br>
No attempt to put it back in the same state, I assume.<br>
 <br>
 <br>
 - Jay<br>
<br>
 <br>
> From: rcolebur@SCIRES.COM<br>
> To: m3devel@elegosoft.com<br>
> Date: Mon, 1 Feb 2010 14:37:48 -0500<br>
> Subject: Re: [M3devel] platform-independent packing/alignment?<br>
> <br>
> For MUTEX, you need to write a special pickler procedure that deals with
them the way you want. For most of my code, I simply include a tag on output
(writing) that is interpreted on input (reading) by my special pickler code
that recreates the MUTEX in the environment of the reading program. If anyone
wants the code, let me know and I'll send an example.<br>
> Regards,<br>
> Randy Coleburn<br>
> <br>
> -----Original Message-----<br>
> From: Dragiša Durić [mailto:dragisha@m3w.org] <br>
> Sent: Monday, February 01, 2010 3:42 AM<br>
> To: Mika Nystrom<br>
> Cc: m3devel@elegosoft.com<br>
> Subject: Re: [M3devel] platform-independent packing/alignment?<br>
> <br>
> MUTEX is primitive type whose typecode is fixed by compiler, IIRC - that<br>
> code being same even if changes were made to it's basic structure... Or<br>
> not... On the second thought, MUTEX is basically fixed, but it's<br>
> revealations can vary. Thus making it incompatible over<br>
> pickles/versions.<br>
> <br>
> I've not looked at my code/data yet, but MUTEX was only an idea what<br>
> went... It is OODBMS package, and mutex is not used for persistent data,<br>
> only for tables/indexes. Thus, problem (at leat for me) remains and it<br>
> is not pickled MUTEX.<br>
> <br>
> On Mon, 2010-02-01 at 00:19 -0800, Mika Nystrom wrote:<br>
> > For what it's worth...<br>
> > <br>
> > I recall someone (Dragisa?) just complained that he was having
problems<br>
> > unpickling data structures...<br>
> > <br>
> > I have never had much luck pickling and unpickling MUTEXes, using a
few<br>
> > (not very different) M3 compilers. I just leave them out of my
pickles.<br>
> > It makes the pickles a lot more compatible across versions. I'm not<br>
> > talking recent CM3 versions here but a variety of old versions.<br>
> > Implementors have seemed to modify MUTEX quite a bit. What's the
point<br>
> > of pickling it anyhow? If it's an active mutex the unpickling will<br>
> > surely lead to garbage, if there are wait queues and things.. then
you<br>
> > wind up un/pickling Thread structures too.<br>
> > <br>
> > Mika<br>
> > <br>
> > Tony Hosking writes:<br>
> > ><br>
> > >--Apple-Mail-4--1058110347<br>
> > >Content-Transfer-Encoding: quoted-printable<br>
> > >Content-Type: text/plain;<br>
> > > charset=utf-8<br>
> > ><br>
> > >That shouldn't affect things since the pickler picks apart the =<br>
> > >structures and ships the individual primitives. Right?<br>
> > ><br>
> > >On 1 Feb 2010, at 02:41, Jay K wrote:<br>
> > ><br>
> > >> Let's say I have:<br>
> > >> =20<br>
> > >> =20<br>
> > >> TYPE FOO =3D RECORD a: LONGFLOAT; b: UINT32; END;<br>
> > >> TYPE FOOA =3D ARRAY [0..1] OF FOO;<br>
> > >> =20<br>
> > >> =20<br>
> > >> And I have a platform with max_align =3D 32 and a platform
with =<br>
> > >max_align =3D 64.<br>
> > >> One platform will make FOOA be 24 bytes, the other 32.<br>
> > >> One platform will pad out FOO to be align the 8 byte
LONGFLOAT, one =<br>
> > >won't.<br>
> > >> Can that pickle be read/written by the two platforms?<br>
> > >> And how does the code know/detect the difference?<br>
> > >> That is, if a platform changed from max_align =3D 32 to 64,
would the =<br>
> > >pickle code work just<br>
> > >> as well on the "same" platform as on the
"different" platforms?<br>
> > >> =20<br>
> > >> =20<br>
> > >> I very recently changed NT386 max_align from 32 to 64, and I
believe<br>
> > >> the remaining active platforms with max_align =3D 32 should
also be =<br>
> > >64.<br>
> > >> It would "only" affect pickles with LONGINT or
LONGFLOAT, as well<br>
> > >> as "lining up" such structs with C.<br>
> > >> =20<br>
> > >> =20<br>
> > >> Such alignment shold make us not need the extra
"unaligned double" =<br>
> > >switch<br>
> > >> on most platforms (some mystery still on some platforms) as
well as<br>
> > >> perhaps be needed for some atomic operations, esp. maybe on<br>
> > >> LONGINT on 32bit x86.<br>
> > >> =20<br>
> > >> =20<br>
> > >> - Jay<br>
> > >>=20<br>
> > >> =20<br>
> > >> > From: dragisha@m3w.org<br>
> > >> > To: rodney_bates@lcwb.coop<br>
> > >> > Date: Sun, 31 Jan 2010 22:14:47 +0100<br>
> > >> > CC: m3devel@elegosoft.com<br>
> > >> > Subject: Re: [M3devel] platform-independent
packing/alignment?<br>
> > >> >=20<br>
> > >> > I've not changed my code, that is for sure.... But now
I am not sure<br>
> > >> > some parent type (esp MUTEX here an there) was not
changed... I'll =<br>
> > >take<br>
> > >> > a look on this again sometime soon and report my
findings.<br>
> > >> >=20<br>
> > >> > Thanks for clues.<br>
> > >> >=20<br>
> > >> > On Sun, 2010-01-31 at 14:00 -0600, Rodney M. Bates
wrote:<br>
> > >> > >=20<br>
> > >> > > Dragi=C5=A1a Duri=C4=87 wrote:<br>
> > >> > > > I've asked this before, but didn't catch
answer:<br>
> > >> > > >=20<br>
> > >> > > > On Sun, 2010-01-31 at 12:21 +0000, Jay K
wrote:<br>
> > >> > > >> I suggest we can probably get by with
platform-independent<br>
> > >> > > >> packing/alignment settings.<br>
> > >> > > >=20<br>
> > >> > > > Some time ago I've used pickles (CM3) to save
some data... My =<br>
> > >program<br>
> > >> > > > does not read that pickle anymore....=20<br>
> > >> > >=20<br>
> > >> > > And you are certain your program that tries to
read still contains<br>
> > >> > > exact structurally equivalent types to all the
types in the =<br>
> > >pickle?<br>
> > >> > >=20<br>
> > >> > > >=20<br>
> > >> > > > Someone remembers moment when this
incompatible changes were =<br>
> > >made?=20<br>
> > >> > --=20<br>
> > >> > Dragi=C5=A1a Duri=C4=87 <dragisha@m3w.org><br>
> > >> >=20<br>
> > ><br>
> > ><br>
> > >--Apple-Mail-4--1058110347<br>
> > >Content-Transfer-Encoding: quoted-printable<br>
> > >Content-Type: text/html;<br>
> > > charset=utf-8<br>
> > ><br>
> > ><html><head><base
href=3D"x-msg://140/"></head><body
style=3D"word-wrap: =<br>
> > >break-word; -webkit-nbsp-mode: space; -webkit-line-break: =<br>
> > >after-white-space; ">That shouldn't affect things since
the pickler =<br>
> > >picks apart the structures and ships the individual primitives. =<br>
> > >&nbsp;Right?<div><br>
> > ><br><div><div>On 1 Feb 2010, at 02:41, Jay K
wrote:</div><br =<br>
> > >class=3D"Apple-interchange-newline"><blockquote
type=3D"cite"><span =<br>
> > >class=3D"Apple-style-span"
style=3D"border-collapse: separate; =<br>
> > >font-family: Helvetica; font-size: medium; font-style: normal; =<br>
> > >font-variant: normal; font-weight: normal; letter-spacing:
normal; =<br>
> > >line-height: normal; orphans: 2; text-indent: 0px;
text-transform: none; =<br>
> > >white-space: normal; widows: 2; word-spacing: 0px; =<br>
> > >-webkit-border-horizontal-spacing: 0px;
-webkit-border-vertical-spacing: =<br>
> > >0px; -webkit-text-decorations-in-effect: none;
-webkit-text-size-adjust: =<br>
> > >auto; -webkit-text-stroke-width: 0px; "><div
class=3D"hmmessage" =<br>
> > >style=3D"font-size: 10pt; font-family: Verdana;
">Let's say I =<br>
> > >have:<br>&nbsp;<br>&nbsp;<br>TYPE FOO
=3D RECORD a: LONGFLOAT; b: =<br>
> > >UINT32; END;<br>TYPE FOOA =3D&nbsp;ARRAY [0..1] OF =<br>
> > >FOO;<br>&nbsp;<br>&nbsp;<br>And
I&nbsp;have a platform with max_align =<br>
> > >=3D&nbsp;32 and a platform with max_align =3D
64.<br>One platform will =<br>
> > >make FOOA be&nbsp;24 bytes, the other 32.<br>&nbsp;
One platform will =<br>
> > >pad out FOO to be align the 8 byte LONGFLOAT, one
won't.<br>Can that =<br>
> > >pickle be read/written by the two platforms?<br>And how
does the code =<br>
> > >know/detect the difference?<br>That is, if a platform
changed from =<br>
> > >max_align&nbsp;=3D&nbsp;32 to 64, would the pickle code
work just<br>as =<br>
> > >well on the "same" platform as on the
"different" =<br>
> > >platforms?<br>&nbsp;<br>&nbsp;<br>I
very recently changed NT386 =<br>
> > >max_align from 32 to 64, and I believe<br>the remaining
active platforms =<br>
> > >with max_align =3D 32 should also be 64.<br>It would
"only" affect =<br>
> > >pickles with LONGINT or LONGFLOAT, as well<br>as
"lining up" such =<br>
> > >structs with
C.<br>&nbsp;<br>&nbsp;<br>Such alignment shold make
us not =<br>
> > >need the extra "unaligned double" switch<br>on
most platforms (some =<br>
> > >mystery still on some platforms) as well as<br>perhaps be
needed for =<br>
> > >some atomic operations, esp. maybe on<br>LONGINT on 32bit =<br>
> > >x86.<br>&nbsp;<br>&nbsp;<br>&nbsp;-
Jay<br><br>&nbsp;<br>&gt; From:<span =<br>
> >
>class=3D"Apple-converted-space">&nbsp;</span><a =<br>
> > >href=3D"mailto:dragisha@m3w.org">dragisha@m3w.org</a><br>&gt;
To:<span =<br>
> >
>class=3D"Apple-converted-space">&nbsp;</span><a =<br>
> >
>href=3D"mailto:rodney_bates@lcwb.coop">rodney_bates@lcwb.coop</a><br>&gt;
=<br>
> > >Date: Sun, 31 Jan 2010 22:14:47 +0100<br>&gt;
CC:<span =<br>
> > >class=3D"Apple-converted-space">&nbsp;</span><a
=<br>
> >
>href=3D"mailto:m3devel@elegosoft.com">m3devel@elegosoft.com</a><br>&gt;
=<br>
> > >Subject: Re: [M3devel] platform-independent =<br>
> > >packing/alignment?<br>&gt;<span =<br>
> >
>class=3D"Apple-converted-space">&nbsp;</span><br>&gt;
I've not changed =<br>
> > >my code, that is for sure.... But now I am not
sure<br>&gt; some parent =<br>
> > >type (esp MUTEX here an there) was not changed... I'll
take<br>&gt; a =<br>
> > >look on this again sometime soon and report my
findings.<br>&gt;<span =<br>
> > >class=3D"Apple-converted-space">&nbsp;</span><br>&gt;
Thanks for =<br>
> > >clues.<br>&gt;<span
class=3D"Apple-converted-space">&nbsp;</span><br>&gt;
=<br>
> > >On Sun, 2010-01-31 at 14:00 -0600, Rodney M. Bates
wrote:<br>&gt; =<br>
> > >&gt;<span class=3D"Apple-converted-space">&nbsp;</span><br>&gt;
&gt; =<br>
> > >Dragi=C5=A1a Duri=C4=87 wrote:<br>&gt; &gt;
&gt; I've asked this before, =<br>
> > >but didn't catch answer:<br>&gt; &gt;
&gt;<span =<br>
> >
>class=3D"Apple-converted-space">&nbsp;</span><br>&gt;
&gt; &gt; On Sun, =<br>
> > >2010-01-31 at 12:21 +0000, Jay K wrote:<br>&gt;
&gt; &gt;&gt; I suggest =<br>
> > >we can probably get by with
platform-independent<br>&gt; &gt; &gt;&gt; =<br>
> > >packing/alignment settings.<br>&gt; &gt;
&gt;<span =<br>
> > >class=3D"Apple-converted-space">&nbsp;</span><br>&gt;
&gt; &gt; Some =<br>
> > >time ago I've used pickles (CM3) to save some data... My
program<br>&gt; =<br>
> > >&gt; &gt; does not read that pickle anymore....<span =<br>
> >
>class=3D"Apple-converted-space">&nbsp;</span><br>&gt;
&gt;<span =<br>
> > >class=3D"Apple-converted-space">&nbsp;</span><br>&gt;
&gt; And you are =<br>
> > >certain your program that tries to read still
contains<br>&gt; &gt; =<br>
> > >exact structurally equivalent types to all the types in the =<br>
> > >pickle?<br>&gt; &gt;<span =<br>
> > >class=3D"Apple-converted-space">&nbsp;</span><br>&gt;
&gt; &gt;<span =<br>
> >
>class=3D"Apple-converted-space">&nbsp;</span><br>&gt;
&gt; &gt; Someone =<br>
> > >remembers moment when this incompatible changes were
made?<span =<br>
> > >class=3D"Apple-converted-space">&nbsp;</span><br>&gt;
--<span =<br>
> >
>class=3D"Apple-converted-space">&nbsp;</span><br>&gt;
Dragi=C5=A1a =<br>
> > >Duri=C4=87 &lt;<a =<br>
> >
>href=3D"mailto:dragisha@m3w.org">dragisha@m3w.org</a>&gt;<br>&gt;<span
=<br>
> >
>class=3D"Apple-converted-space">&nbsp;</span><br></div></span></blockquote=<br>
> > >></div><br></div></body></html>=<br>
> > ><br>
> > >--Apple-Mail-4--1058110347--<br>
> -- <br>
> Dragiša Durić <dragisha@m3w.org><br>
> <o:p></o:p></span></p>

</div>

</body>

</html>