cloudwego / kitex

Go RPC framework with high-performance and strong-extensibility for building micro-services.
https://www.cloudwego.io
Apache License 2.0
7.11k stars 822 forks source link

Remove Go version restrictions for newer versions #1343

Open berndverst opened 7 months ago

berndverst commented 7 months ago

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 commented 7 months ago

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.

liu-song commented 7 months ago

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

felix021 commented 7 months ago

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

YangruiEmma commented 7 months ago

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

joway commented 7 months ago

@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.