Comments (10)
I agree it's about time, especially since fuzzing is supported natively.
from go-sdk.
I think we could almost seperate the discussion of supported version and generics (to an extent)
When I started work on the SDK I’d thought about using generics per the spec recommendation to use it in a language if available. I think it would be reasonable to support it in golang, but decided not to do it initially as I haven’t seen it widely used in the community yet and figured not using it probably lowers the bar for integration.
The last 2 versions of golang are supported, so I think it’s good practice to target the lower of the two (1.17). That said it’s about to end of life end of Aug, though you imagine some people will trail behind for 3 months or more.
The question is then do we want to support generics ? I think for the next 6-12 months this will still be mixture of users who haven’t embraced generics and those who do. Are any of you guys using generics in your own projects ? I get the feeling that there isn’t an immediate need for it and having a non generics API gives some flexibility with older versions for golang. The flip side is if it gives a better user experience maybe we should adopt it now ?
from go-sdk.
I think we should upgrade to 1.18, consumers of the SDK can upgrade their projects as well to 1.18 without any breaking changes to their projects, and they don't have to use generics if they don't want to.
from go-sdk.
Fuzzing is a repository requirement (go-sdk issue).
Fuzzing is natively supported in 1.18, another reason to consider upgrading.
Note that 1.18 has been available for considerably longer since our last review of this topic (5 months vs 10).
from go-sdk.
Flagd is already using 1.19
, which released back in August
https://tip.golang.org/doc/go1.19
from go-sdk.
One of the concerns of upgrading here is to not break compatibility with applications using an older version of Go. This doesn't apply to flagd as external applications don't import it directly.
from go-sdk.
Can a Golang 1.18 library be used in 1.17? If not, we should wait until 1.18 is more widely supported.
from go-sdk.
Can a Golang 1.18 library be used in 1.17? If not, we should wait until 1.18 is more widely supported.
It seems that we could upgrade to 1.18 and be backwards compatible provided that we don't use any of the new features e.g. generics (https://go.dev/ref/mod#go-mod-file-go)
For packages within the module, the compiler rejects use of language features introduced after the version specified by the go directive. For example, if a module has the directive go 1.12, its packages may not use numeric literals like 1_000_000, which were introduced in Go 1.13.
from go-sdk.
It's nice that the compiler rejects the new features, but then in makes the upgrade somewhat less valuable. Still probably worth doing.
After reading your link though, I think that we should add a go directive targeting a specific version, so that we can explicitly agree on minimum supported consumer version.
from go-sdk.
Perhaps we postpone this conversation and pick it back up in a few months. I don't think there's an immediate need to upgrade to 1.18.
from go-sdk.
Related Issues (20)
- Update README to be consistent with other SDKs
- Changes to support spec `v0.6.0` compliance HOT 4
- implement named client support: open-feature/spec@4cf8229 HOT 1
- implement initialization/shutdown: open-feature/spec@a4ffec3
- Implement event support HOT 1
- Conform to spec `v0.7.0` HOT 6
- event handlers should run immediately if the associated provider is in the state associated with that handler already
- [FEATURE] Follow official Go guidance on how to organize a module? HOT 9
- [FEATURE] Follow up for 227 HOT 2
- [BUG] Panic when following getting started tutorial HOT 2
- [FEATURE] Blocking provider mutator HOT 1
- [FEATURE] Expose domain specific provider metadata getter HOT 1
- [FEATURE] Upgrade to Go version 1.20
- [FEATURE] Implement transaction context HOT 5
- [FEATURE] Implement domain scoping HOT 2
- [FEATURE] Make provider interface "stateless", SDK maintains provider state
- Should retrieving a value really provide an error? HOT 5
- [FEATURE] Move to log/slog logging HOT 2
- [BUG] Awkward usage when trying to evaluate a boolean flag in a complex conditional HOT 8
- [FEATURE] New test-oriented client HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from go-sdk.