gopherjs
gopherjs copied to clipboard
Add Go 1.19 support
Go 1.19 was released last week and we should begin work on supporting it.
Skimming through the release notes, the following changes seem relevant to us:
- The sync/atomic package defines new atomic types Bool, Int32, Int64, Uint32, Uint64, Uintptr, and Pointer.
I hope that supporting it won't be too much work, although I suspect that generics might have started infiltrating the standard library, in which case we'll have to double down on https://github.com/gopherjs/gopherjs/issues/1013 first.
Any update on this?
@KiddoV only that it will happen at some point. I am currently writing a guide for how to add new Go version support in a hope that someone from community would step up and help us out. If no volunteers appear, I will probably work on 1.19 only after generics. Please let me know if you are interested in contributing 🙂
In a hope to inspire more contributions I wrote a guide to supporting new Go versions in GopherJS. I would appreciate feedback on what may be unclear (especially to the non-maintainer folks) or can be phrased better (English isn't my native language ¯_(ツ)_/¯).
The draft is available here, and should be accessible by anyone (ping me if you are having issues): https://docs.google.com/document/d/1QD_jl9G1jwL2ye_ZeFMtqIEEYZ9cNIHbV3n3R4pXdYA/edit?usp=sharing. I intend to move it into the github wiki, once the feedback is gathered and addressed.
Now Golang is with 1.20, and go1.18.x is unsupported.
Hi @chenrui333, I am acutely aware of this :) Unfortunately, I have only limited amount of time for open source work, and all of it is currently going towards adding generics support. If you have some spare time and the desire to contribute support for Go 1.19+ - let me know, I'll be happy to provide pointers and advice.
Would love to know if this is in progress or not!
Indeed there is progress being made. Just a few hours ago, a PR was merged into our branch adding generics support.
Of course, generics is a complicated thing to add, and it's being done virtually entirely by @nevkontakte in his free time, so patience is appreciated!
Thank you for the update! I'm excited for this change.
We have been working on a generic-less Go 1.19. It is getting close to being done. See the go1.19 branch.
I suppose we should discuss how to label GopherJS 1.19, and what that means to the support of 1.17 and 1.18.
What makes most sense to me, having not spent much time thinking about it:
- Release GopherJS 1.19 as a beta release (same as we did for 1.18)
- Continue to support 1.17 and 1.18, until generics are done, then we can drop 1.17, and likely 1.18 very quickly after.
I agree with @flimzy, although I feel like supporting 1.18 would seem redundant after 1.19-beta release. In the other news, my alternate generics branch is very close to fully supporting generics at a single-package level, after which multi-package support is quite straightforward. So I have high hopes for a full 1.19 very soon.
Also I've looked through the release notes and it seems like the work @grantnelson-wf has done covers everything that doesn't depend on generics. Unless anyone objects, we should be good to merge it into master and publish 1.19-beta1 release.
I think that's fine. So we'll have 1.17 (stable) and 1.19 (beta) under active support for the time being.
No objections from me for merging/tagging 1.19-beta1.
Thanks to @grantnelson-wf efforts, Go 1.19 support (sans generics) has been released. https://github.com/gopherjs/gopherjs/issues/1270 will track work on 1.20. Work on generics is ongoing in https://github.com/gopherjs/gopherjs/issues/1013.