kitex icon indicating copy to clipboard operation
kitex copied to clipboard

Remove Go version restrictions for newer versions

Open berndverst opened this issue 1 year ago • 5 comments
trafficstars

I'm (one of) the maintainer(s) of Dapr (dapr.io), a CNCF microservices project which today has a Kitex integration.

Kitex has been the worst third party dependency to deal with. Every time a new Go version is released the current Kitex version in use by us does not compile with that Go version, then I am forced to update the Kitex SDK (and dependencies) which brings breaking changes into our code I need to fix.

Please remove the Go version restriction, or I will be removing the Kitex integration from Dapr. No other dependency used by us in Dapr (and there are many!) has this problem.

berndverst avatar May 01 '24 21:05 berndverst

FYI @liu-song - you contributed the Kitex integration to Dapr. I hope you can coordinate this. Otherwise Dapr 1.14 will be the last version which will contain Kitex.

berndverst avatar May 01 '24 21:05 berndverst

Received. After the May Day holiday in China, we will discuss and make a decision

liu-song avatar May 02 '24 05:05 liu-song

Hi @berndverst, we're sorry for the inconvenience.

We do rely on some features bound with go version to improve the performance (mostly for registering new modules into go runtime, i.e. JIT, used by github.com/bytedance/sonic).

But we already have compilation tags to fallback to non-dependent code for newer go versions which should not cause such errors again (for sonic, frugal, dynamicgo). Are you using the latest Kitex already? What are the compilation errors you encounter?

FYI @liu-song

felix021 avatar May 06 '24 03:05 felix021

I'm very sorry for the bad experience you had. The problem you encountered should be related to a dependency library github.com/choleraehyq/pid of Kitex. We will remove the dependency of this library in the near future. cc @joway

YangruiEmma avatar May 06 '24 03:05 YangruiEmma

@berndverst https://github.com/cloudwego/kitex/pull/1347

With new design, we change to use symbol table to find the Go runtime internal representation to avoid go version restriction. And we add a test if the newest go version cannot compatible with it, it will failed.

joway avatar May 13 '24 09:05 joway