> This is interesting! Is this related to:
> https://github.com/WebAssembly/design/issues/1274

not exactly I don't want to propose or be dependent on full bindings yet. I 
mainly just want to describe the WASI interface in term of capn proto 
schema. Full bindings might be nice in the future though! Thanks for the 
input.

On Saturday, June 15, 2019 at 9:08:01 AM UTC-7, M Bz wrote:
>
> Hello, 
> I'm currently investigating whether capt'n proto schema would be 
> appropriate for describing Webassebly interfaces. I'm attempting to 
> translate this interface 
> <https://github.com/WebAssembly/WASI/blob/master/docs/WASI-overview.md> 
> to capn proto schema. I several questions and I'm sure I'll have more as 
> the work progresses.
>
> 1. Webassebly will soon have opaque references 
> <https://github.com/WebAssembly/reference-types>. How would you 
> represent reference types in capt'n proto?
>
> 2. Is annotation the correct way to represent pointers? for example
>
>   using Pointer = UInt32;
>
>   using TimestampT = Uint64
>
>  # Return the resolution of a clock.
>
>  # Note: This is similar to clock_getres in POSIX.
>>   clockResGet @2 (
>>     clock_id :ClockId, # The clock for which to return the resolution.
>>     resolution :Pointer $type("TimestampT") # The resolution of the clock.
>>   ) -> (
>>     error :ErrnoT
>>   );
>
>
>  Here I need to generate the corrisponding wasm signature
>  
>
>> (func $clockResGet(param $clock_id i32)(param $resolution_pntr  i32) 
>> (return i32))
>
>
> But what I really want to write in captn proto is
>
>   using Pointer = UInt32;
>>   using TimestampT = Uint64
>>   # Return the resolution of a clock.
>>   # Note: This is similar to clock_getres in POSIX.
>>   clockResGet @2 (
>>      clock_id :ClockId, # The clock for which to return the resolution.
>>   ) -> ( 
>
>     error :ErrnoT,
>
>         resolution :TimestampT
>
>>   );
>
>
> But I can't do this because because wasm doesn't have mutiple return 
> values and I can't automatically generate the correct wasm signature in all 
> cases since I'm porting a old interface and some times the output pointers 
> are not always in the same order.
>
> Another Option I thought about was this.    
>
>   using Pointer = UInt32;
>>   using TimestampT = Uint64
>>   # Return the resolution of a clock.
>>   # Note: This is similar to clock_getres in POSIX.
>>   clockResGet @2 (
>>      clock_id :ClockId, # The clock for which to return the resolution.
>>   ) -> ( 
>>     error :ErrnoT, 
>>     resolution :TimestampT  $arg_index(1)
>>   );
>
>
> Here the annotation "$arg_index" say what param index to put the output 
> pointer in wasm function signature.  I think this solution might be the 
> best for now. But I would love to hear some feedback. 
>

-- 
You received this message because you are subscribed to the Google Groups 
"Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to capnproto+unsubscr...@googlegroups.com.
Visit this group at https://groups.google.com/group/capnproto.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/capnproto/2b08a725-752a-4fd0-8ef4-b8620e24c45c%40googlegroups.com.

Reply via email to