The problems are fairly serious. Most importantly, network objects cannot be used between machines with different architectures since the pickler is used to transfer objects used as arguments to, or results from, method calls.
This package corrects most of the problems. The only area of work still to be done is floating point format conversion, but since all the machines I have access to use IEEE format floats, I cannot test such conversion routines (nor do I have any motivation to write them).
I also added another public interface, PickleStubs.i3, which allows many common data types to be easily read and written in custom pickles.
To use this, replace the libm3/src/pickle subdirectory in the source distribution with these files and recompile.
Note that to actually use this, a bug needs to be fixed in the RTTipe.m3 file in the m3core package. This bug fix is included in the next release (after 3.5.3) of SRC M3, but you can get it from me if you need it.
Also, to actually make successful network object calls between machines of different word sizes, a small change must be made to StubLib.m3 in the netobj package. The same applies as above: the fix should be in the next release, but you can also get it from me.
IN NO EVENT WILL BLAIR MACINTYRE OR COLUMBIA UNIVERSITY BE LIABLE FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THIS SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.