[racket] serializable structs and portability

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Mon Mar 28 22:33:08 EDT 2011

At Mon, 28 Mar 2011 18:28:02 -0400, Eric Tanter wrote:
> I'm not sure I understand what you mean by "collection-based library". 
> The structs are part of an app I'm building from scratch.
> For now I have a couple of .rkt files, some of which define the structs in 
> question, and I import them in the main module with (require "foo.rkt"), etc.

I mean in a library that you require like

 (require mystuff/foo)


 (require (planet ....))

instead of

 (require "foo.rkt")

Or a relative-path `require' is ok from some other module in the same
collection, as long as a collection path is used at some point.

> On Mar 28, 2011, at 5:22 PM, Matthew Flatt wrote:
> > At Mon, 28 Mar 2011 17:36:22 -0400, Eric Tanter wrote:
> >> I'm playing with serializable structs and noticed that the absolute path of 
> >> the source rkt definition is inserted in the representation (I'm writing 
> >> structs out to a file). 
> >> The problem is that if I then move my application to a server for 
> deployment, 
> >> all serialized structs cannot be deserialized anymore. If I edit/replace, 
> it 
> >> works, but I assume this is not the right way to proceed.
> >> 
> >> What is the best way to obtain "portable" serialized structs?
> > 
> > If the struct is defined in a collection-based library, then the
> > serialized form will use the collection path instead of a filesystem
> > path. I think that's the only way currently to make the information
> > path-independent.
> > 
> > 
> _________________________________________________
>   For list-related administrative tasks:
>   http://lists.racket-lang.org/listinfo/users

Posted on the users mailing list.