Closed barracuda156 closed 7 months ago
uvw updated their entire API to go from camelcase -> snakecase. Will version bump uvw and throw down a PR for this soon, thanks @barracuda156
We spent a little time looking at this today, and unfortunately uvw v3 is a completely incompatible rewrite of uvw v2, without any sort of attempt at backwards compatibility, that at the moment we don't/can't easily support. The v3 rewrite has also proven buggy and limiting (we started with it in libquic, but eventually switched to libevent because of multiple frustrations with uvw and libuv). Hopefully macports can recognize this difference and package uvw2/uvw3 separately, but for the short term we're going to have to stick with uvw v2 in Lokinet.
Medium term, upstream's uvw changes here (and in the past) are more than a little frustrating and are making me contemplate alternatives such as either straight libuv, or perhaps switching to libevent (as we did in https://github.com/oxen-io/oxen-libquic because of similar frustrations and limitations when we started out with uvw v3 there).
@jagerman Thank you for the update, this is really helpful. Saves time on trying to fix the unfixable.
No issues, I will make a port for uvw2
. Given different API, we will want to be able to install both versions simultaneously, so I will perhaps move installation into libexec sub-prefix to avoid conflicts. That will also ensure no opportunistic linking with a wrong version happens.
Does it matter, in your opinion, whether dynamic or static libs are used?
Also, ngtcp2
currently installs without support for QUIC for us, since OpenSSL 3 does not yet support it. Not sure if that is a stopper for lokinet
and how you go around this.
Also, ngtcp2 currently installs without support for QUIC for us, since OpenSSL 3 does not yet support it. Not sure if that is a stopper for lokinet and how you go around this.
I'm not sure I understand what you mean here; ngtcp2 is a QUIC implementation.
However as to OpenSSL, our current implementation (oxen-libquic) does not use openssl for ngtcp2/QUIC traffic, but rather gnutls.
@jagerman I guess I misunderstood configure output in fact: https://trac.macports.org/ticket/67762 It appears to be relevant only for OpenSSL indeed.
@barracuda156 the redesigned lokinet will be uvw free and entirely libevent based
@dr7ana Sounds good! I hope we could do away with Apple security extension dependency… :)
P. S. On a side note, it would be nice to have a new release, rather than using a random commit for a port.
P. S. On a side note, it would be nice to have a new release, rather than using a random commit for a port.
Indeed, but the ongoing 0.10 work is a significant refactor and not ready for a production release yet.
As to uvw: yes, uvw 3.0.0 completely broke all API compatibility by changing the naming style of all ClassName
to class_name
without any backwards compatibility attempt at all, and thus really shouldn't be considered the same library.