hmm, I'm already very interested in the project like Julia-on-(Spark/c++?), 
and the ser/des issue is a big obstacle.
在 2015年9月21日星期一 UTC+8下午9:30:05,Andrei Zh写道:
>
> Hi, 
>
> not yet. I made some initial research regarding serialization of ASTs and 
> reconstructing functions from them, but it seems quite a tricky procedure 
> and I have very little time for this project now. I plan to come back to 
> this issue around the beginning of the next month. 
>
> On Mon, Sep 21, 2015 at 11:25 AM, edward zhang <windy...@gmail.com 
> <javascript:>> wrote:
>
>> hi, dear, 
>>  have you already fixed this problem?
>>
>>
>> 在 2015年8月14日星期五 UTC+8下午11:06:30,Andrei Zh写道:
>>
>>>
>>> Hi Jake, 
>>>
>>> your example works because you don't leave Julia session. `foo` is 
>>> defined in this session, so the the pair of module name and function name 
>>> is enough to get function object. If you save serialized function (or just 
>>> retype it byte by byte) , it won't work. Here's an example: 
>>>
>>> Session #1: 
>>>
>>> julia> io = IOBuffer()
>>> IOBuffer(data=Uint8[...], readable=true, writable=true, seekable=true, 
>>> append=false, size=0, maxsize=Inf, ptr=1, mark=-1)
>>>
>>>
>>> julia> foo(x) =  x + 1
>>> foo (generic function with 1 method)
>>>
>>>
>>> julia> serialize(io, foo)
>>>
>>>
>>> julia> takebuf_array(io)
>>> 9-element Array{Uint8,1}:
>>>  0x13
>>>  0x02
>>>  0x23
>>>  0x2f
>>>  0x02
>>>  0x03
>>>  0x66
>>>  0x6f
>>>  0x6f
>>>
>>>
>>> julia>
>>>
>>>
>>>
>>> Session #2: 
>>>
>>> julia> data = Uint8[0x13, 0x02, 0x23, 0x2f, 0x02, 0x03, 0x66, 0x6f, 0x6f
>>> ]
>>> 9-element Array{Uint8,1}:
>>>  0x13
>>>  0x02
>>>  0x23
>>>  0x2f
>>>  0x02
>>>  0x03
>>>  0x66
>>>  0x6f
>>>  0x6f
>>>
>>>
>>> julia> io = IOBuffer(data)
>>> IOBuffer(data=Uint8[...], readable=true, writable=false, seekable=true, 
>>> append=false, size=9, maxsize=Inf, ptr=1, mark=-1)
>>>
>>>
>>> julia> bar = deserialize(io)
>>> (anonymous function)
>>>
>>>
>>> julia> bar(1)
>>> ERROR: function foo not defined on process 1
>>>  in error at error.jl:21
>>>  in anonymous at serialize.jl:398
>>>
>>>
>>> julia>
>>>
>>>  
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Friday, August 14, 2015 at 5:49:55 PM UTC+3, Jake Bolewski wrote:
>>>>
>>>> Andrei Zh
>>>>
>>>> I'm confused.  Have you actually tried?  
>>>>
>>>> julia> io = IOBuffer()
>>>> IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, 
>>>> append=false, size=0, maxsize=Inf, ptr=1, mark=-1)
>>>>
>>>> julia> foo(x) =  x + 1
>>>> foo (generic function with 1 method)
>>>>
>>>> julia> serialize(io, foo)
>>>>
>>>> julia> seekstart(io)
>>>> IOBuffer(data=UInt8[...], readable=true, writable=true, seekable=true, 
>>>> append=false, size=9, maxsize=Inf, ptr=1, mark=-1)
>>>>
>>>> julia> baz = deserialize(io)
>>>> foo (generic function with 1 method)
>>>>
>>>> julia> baz(1)
>>>> 2
>>>>
>>>> The serialization code won't recursively serialize all the of the 
>>>> functions dependencies so you will have to send/serialize the code that 
>>>> defines the environment (types, constants, Packages, etc).
>>>>
>>>
>

Reply via email to