While I haven't gotten all the tests working yet (there are some issues 
with some of the timer functions on Windows it seems), I spent a bunch of 
time getting asyncio working with pycapnp (it was the most reasonable way 
to get native Python TLS support working).
I've fixed a lot of bugs, removed a lot of the deprecated C++ functions 
(the warnings were hiding a lot of serious issues).

https://github.com/haata/pycapnp-async

I'll be using this for a cross-platform tool I've been working so I'll at 
least be maintaining it for basic client functionality (server stuff works 
as well, minus a few Windows tests). My main use case is a TLS connection 
between a Rust server and Python clients (this is currently working using 
tokio-rustls).

It does require Python 3.7 and higher (3.8 also works). I discovered some 
bugs in asyncio that make porting difficult to 3.5 and 3.6 (though it's 
likely possible with a bunch of effort).

-HaaTa

On Thursday, November 28, 2019 at 6:24:08 AM UTC-8, Pepijn de Vos wrote:
>
> Actually, it appears that the library contains a pointer, whereas the 
> Python lib tries to use a reference.
> I'm not sure where this difference came from, but it's clearly incorrect.
>
> (env) [apicula]$ nm -gD /usr/lib/libkj-async-0.7.0.so | grep 
> TransformPromiseNodeBase
> 000000000002b1e0 T _ZN2kj1_24TransformPromiseNodeBase7onReadyEPNS0_5EventE
> (env) [apicula]$ c++filt 
> _ZN2kj1_24TransformPromiseNodeBase7onReadyEPNS0_5EventE
> kj::_::TransformPromiseNodeBase::onReady(kj::_::Event*)
> (env) [apicula]$ c++filt 
> _ZN2kj1_24TransformPromiseNodeBase7onReadyERNS0_5EventE
> kj::_::TransformPromiseNodeBase::onReady(kj::_::Event&)
>
>
>
> On Thursday, 28 November 2019 15:17:40 UTC+1, Pepijn de Vos wrote:
>>
>> Hey all,
>>
>> I'm exploring serialization libraries, so I installed the Python lib and 
>> got the following error
>>
>> ImportError: [...]capnp.cpython-38-x86_64-linux-gnu.so: undefined 
>> symbol: _ZN2kj1_24TransformPromiseNodeBase7onReadyERNS0_5EventE
>>
>> Which is definitely a thing, and has been for two years: 
>> https://github.com/capnproto/capnproto/blame/master/c%2B%2B/src/kj/async-inl.h#L392
>>
>> It also seems to be linked correctly
>>
>> $ ldd [...]capnp.cpython-38-x86_64-linux-gnu.so
>>     linux-vdso.so.1 (0x00007ffe675cf000)
>>     libcapnpc-0.7.0.so => /usr/lib/libcapnpc-0.7.0.so (0x00007f7dc5173000
>> )
>>     libcapnp-rpc-0.7.0.so => /usr/lib/libcapnp-rpc-0.7.0.so (
>> 0x00007f7dc5090000)
>>     libcapnp-0.7.0.so => /usr/lib/libcapnp-0.7.0.so (0x00007f7dc4ff4000)
>>     libkj-async-0.7.0.so => /usr/lib/libkj-async-0.7.0.so (
>> 0x00007f7dc4f60000)
>>     libkj-0.7.0.so => /usr/lib/libkj-0.7.0.so (0x00007f7dc4eda000)
>>     libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007f7dc4cf0000)
>>     libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f7dc4cd4000)
>>     libc.so.6 => /usr/lib/libc.so.6 (0x00007f7dc4b0d000)
>>     libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f7dc4aeb000)
>>     libm.so.6 => /usr/lib/libm.so.6 (0x00007f7dc49a5000)
>>     /usr/lib64/ld-linux-x86-64.so.2 (0x00007f7dc540e000)
>>
>>
>> So the system library version is 0.7, and the latest Python library is 
>> 0.6.4, not sure if the versions are just mismatched somehow.
>> I tried installing from git with the same result, is the Python library 
>> just outdated?
>> Or maybe the Arch package is just broken, because it doesn't contain the 
>> required symbol?
>>
>> Cheers,
>> Pepijn
>>
>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/capnproto/f8decb16-f304-4d80-9e2c-7df4946df458%40googlegroups.com.

Reply via email to