Go compiler and runtime meeting notes
Google's Go compiler and runtime team meets periodically (roughly weekly) to discuss ongoing development of the compiler and runtime. While not open to the public, there's been desire by the community to learn what the compiler and runtime team is working on. While we learn what is a good format, and what works and doesn't, we will start publishing meeting minutes here.
These compiler and runtime meeting minutes are under development. We welcome feedback on content, format, level of detail, timeliness, and so on. If the minutes are helpful, please let us know. If they are less than helpful, we welcome constructive comments on how to improve them.
Notes on agenda items that address Google specific needs are elided.
This meta-issue records minutes of Google's Go compiler and runtime meetings as issue comments, so that they can be cross-linked easily with the relevant issues. This meta-issue is for minutes only; comments that are not meeting minutes will be deleted.
2021-01-19
These compiler and runtime meeting minutes are under development. We welcome feedback on content, format, level of detail, timeliness, and so on. If the minutes are helpful, please let us know. If they are less than helpful, we welcome constructive comments on how to improve them.
Notes on agenda items that address Google specific needs are elided.
- We continued a discussion about increasing the bootstrap version of Go from 1.4 to 1.16 after the 1.17 release. We wanted to make sure it wasn't hard for people to build from scratch, but we would like to use features that have been added over time. Consensus was that this would be okay to submit as a formal proposal.
- We discussed Austin's benchmark unit proposal. Consensus was hopeful that it would be accepted.
- We discussed the weak maps proposal. A number of corner cases, gotchas, and subtleties were discussed. Consensus was that the discussion on the issue was up to date.
- After falling off the prior week's agenda, we began a discussion about releasing the compiler and runtime meeting notes. We all felt communication with the community was important, and we would start with an internal publication of meeting notes. No dates were set for a final decision.
2021-01-26
These compiler and runtime meeting minutes are under development. We welcome feedback on content, format, level of detail, timeliness, and so on. If the minutes are helpful, please let us know. If they are less than helpful, we welcome constructive comments on how to improve them.
Notes on agenda items that address Google specific needs are elided.
- We continued discussing whether or not there were any concerns with publishing compiler and runtime meeting notes. No issues were raised, so it's likely I will go ahead and start publishing the notes.
- We discussed the redirecting crash output proposal. No major concerns were raised, but consensus was that a call would be best approach (against environment variables, etc).
- We discussed the pain merging the development branches (
master -> dev.regabi -> dev.typeparams). The consensus was that without acceptance of the generics proposal, we need to keep living with the pain. - We briefly discussed using the type checker in
dev.typeparamsas the default type checker. Using that type checker is blocked on either acceptance of generics proposal or a separate proposal to move to a new type checker.
2021-02-02 These compiler and runtime meeting minutes are under development. We welcome feedback on content, format, level of detail, timeliness, and so on. If the minutes are helpful, please let us know. If they are less than helpful, we welcome constructive comments on how to improve them.
Notes on agenda items that address Google specific needs are elided.
- We continued our discussion of moving to the new default typechecker on
dev.typeparams. Engineering effort continues at a break-neck pace, and we're hopeful we'll be able to have this early. - We discussed the issue with spinning M's, and have seen large improvements for unique workloads within Google. Consensus was that this was an excellent find.
- We had a brief discussion of integer constant resolution.
- We briefly discussed merging the
dev.regabibranch back to master when the tree opens. Consensus was that it would be safe to merge when the tree opened. - We discussed some recent additions to
dev.typeparams, that added support for generic functions and types. It's possible the backend work will happen on the branch's compiler soon.
2021-02-08
These compiler and runtime meeting minutes are under development. We welcome feedback on content, format, level of detail, timeliness, and so on. If the minutes are helpful, please let us know. If they are less than helpful, we welcome constructive comments on how to improve them.
Notes on agenda items that address Google specific needs are elided.
- We briefly discussed the status of 1.16.
- We discussed the tree reopening, and landing of the
dev.regabibranch, and thedev.typeparmsbranches onmaster. Current plans are to mergedev.regabiduring the first week. If both proposals (1, 2) are accepted,dev.typeparamswill also be merged during that week. - We discussed the new pacer proposal, and its benefits.
- We also discussed the status of the register abi. While functionality is gated behind a flag, we don't want to go into code-freeze, enabling the ABI that late. We discussed the amount of soak time we think we will need.
2021-02-16
These compiler and runtime meeting minutes are under development. We welcome feedback on content, format, level of detail, timeliness, and so on. If the minutes are helpful, please let us know. If they are less than helpful, we welcome constructive comments on how to improve them.
Notes on agenda items that address Google specific needs are elided.
- We had a small celebration about the acceptance of the Generics Proposal.
- We discussed merging the
dev.typeparamsbranch to master. There are public API typechecking changes on that branch that aren't stable. As a result, we will likely hide the APIs using buildtags. - We continued a long-running discussion on making types2 the default typechecker. We still don't need to make a decision here, so back into the oven it goes.
- We discussed revising the syntax for typelists in generics. An internally floated proposal is similar to public proposals. More to come.
- We discussed adding attendance to entries in this document. As no one objected to having their name added, I will start doing that. I won't start by CC-ing people, just linking to their github profile for now.
Attendees: Carlos Amedee David Chase Austin Clements Matthew Dempsky Jeremy Faller Robert Griesemer Than McIntosh Martin Möhrmann Patrik Nyblom Michael Pratt Keith Randall Dan Scales Ian Lance Taylor Cherry Zhang
2021-02-23
These compiler and runtime meeting minutes are under development. We welcome feedback on content, format, level of detail, timeliness, and so on. If the minutes are helpful, please let us know. If they are less than helpful, we welcome constructive comments on how to improve them.
Notes on agenda items that address Google specific needs are elided.
- We celebrated the reopening of tree for 1.17 development.
- We discussed some of the features we want to land for 1.17, including the register ABI, foundational work for generics, the new gc pacer, improvements to the scheduler, escape analysis improvements, and possibly some phase changes to the compiler. We also had a more in-depth discussion of subtle points in
types2. - We discussed the work on register ABI. A hello world is working (in review, not fully committed). More work for return values has also started, and we're having some success there.
- A new ABI with
Gin R14 and a zeroed X15 has shown reasonable promise to offer good runtime performance improvements. Work is ongoing to confirm results, and clean up some poorly understood overhead in wrappers. Also, not all of the places where we useGin assembly have been converted over. More data to come. - We discussed an issue that turning on stack poisoning seems to bork the
openbsd-amd64-68trybot. - We discussed a proposal to add zeroing for cryptographic functions. Consensus was that this is non-trivial.
Attendees: Carlos Amedee David Chase Austin Clements Matthew Dempsky Jeremy Faller Robert Griesemer Than McIntosh Martin Möhrmann Patrik Nyblom Michael Pratt Keith Randall Dan Scales Ian Lance Taylor Cherry Zhang
2021-03-02
These compiler and runtime meeting minutes are under development. We welcome feedback on content, format, level of detail, timeliness, and so on. If the minutes are helpful, please let us know. If they are less than helpful, we welcome constructive comments on how to improve them.
Notes on agenda items that address Google specific needs are elided.
- We discussed the current status of our 1.17 and 1.18 goals, including the register ABI, and generics.
- We discussed a small issue on sum types. Likely more external communication to come.
- We discussed how best to handle the meeting notes (this issue), and questions and feedback. We decided it would be best to move queries to the mailing list(s) for now.
- We discussed moving GOEXPERIMENT, and how important it would be to help the registerABI work to land.
- We discussed a subtle issue in the register ABI to simplify the internal representation and requirements for go & defer. Specifically, having the compiler rewrite defer
f(x) ⇒ x' := x; defer func() { f(x') }().
Attendees: David Chase Austin Clements Matthew Dempsky Jeremy Faller Robert Griesemer Than McIntosh Patrik Nyblom Michael Pratt Keith Randall Dan Scales Cherry Zhang
2021-03-09 These compiler and runtime meeting minutes are under development. We welcome feedback on content, format, level of detail, timeliness, and so on. If the minutes are helpful, please let us know. If they are less than helpful, we welcome constructive comments on how to improve them.
Notes on agenda items that address Google specific needs are elided.
- Again, we discussed the status of our 1.17 and 1.18 goals.
- We hope that move GOEXPERIMENT knob is accepted, as the current plan with the register ABI is to use it for turnup.
- We discussed the progress on type lists. An internal proposal likely addresses all concerns, and an external document will be available.
Attendees: David Chase Austin Clements Matthew Dempsky Jeremy Faller Robert Griesemer Than McIntosh Martin Möhrmann Patrik Nyblom Michael Pratt Keith Randall Dan Scales Ian Lance Taylor Cherry Zhang
2021-03-16
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
- We discussed typelists again.
- We discussed possibly updating MIPS to MIPS32r2. The thinking is that R2's been around for a long time (10years?), and there is significant performance to be gained in the crypto libraries if we adopt it. Previous attempts have failed because of Loongson users. Discussion will likely continue.
- We discussed how to address amd64 per-architecture optimizations. Haswell specific optimizations have shown large improvements in certain workloads, and it might be worth providing for these wins. Discussion will likely continue.
Attendees: The notetaker would like to apologize for leaving off Michael Knyszek from previous attendance. I don't have a good system yet, and it's quite manual. David Chase Austin Clements Matthew Dempsky Jeremy Faller Robert Griesemer Michael Knyszek Than McIntosh Martin Möhrmann Patrik Nyblom Michael Pratt Keith Randall Dan Scales Ian Lance Taylor Cherry Zhang
2021-03-23
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
- Most of the meeting was a discussion about 1.18.
- We discussed changes to the standard library for generics in 1.18
- We discussed followon work for the register ABI (beyond amd64).
- We discussed measuring PGO and other GC (Immix) ideas.
Attendees: I was absent from the meeting, and unable to grab the screenshot.
2021-03-30
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
- We discussed the remaining outstanding work, now that we're 1 month from the code freeze.
- Windows/ARM: completed, status of cgo is unknown
- RegisterABI: most of the rest of the changes are in review, will be able to start debugging in earnest.
- GC Pacer: Not complicated, but currently unscheduled. Register ABI is taking precedence, and if we get a chance, it'll get in.
- Scheduler Improvements: Most CLs are ready for review, need to do more testing for metrics.
- Improving Escape Analysis: Most CLs are ready for review
- Haswell Improvements: Needs a proposal first.
- Compiler phase changes: (interleaving front-end and SSA) mostly delayed.
- We discussed using
GOEXPERIMENTas a one true feature gating system. Register ABI work has found this to be helpful
Attendees: Lost to the sands of time. I forgot to take a screenshot.
2021-04-06
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
- We discussed turning up the register abi. Our current plan is to turn the five flags that control it one-by-one, and watching the builders/trybots. The date for this turn up is TBD.
- We discussed branching again (during the freeze) for register abi and generics. Our current plan is to use a single branch for both.
- We discussed how debug information for generics was going to work. We talked about how other compilers (gcc, swift) do it. Some issues might be brought up in a future meeting with the delve folks.
Attendees: David Chase Austin Clements Matthew Dempsky Jeremy Faller Robert Griesemer Michael Knyszek Patrik Nyblom Michael Pratt Keith Randall Dmitri Shuralyov Ian Lance Taylor Cherry Zhang
2021-04-20
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
- We discussed regabi which has been completely enabled in
master. Please let us know if there are any instabilities. Performance (while still changing) is showing ≥ 5% wins, and smaller binaries by 2%, with 10% smaller.TEXTsections. - We discussed the status of
types2. It's not in yet, but we intend to get it in before release.
Attendees: David Chase Matthew Dempsky Jeremy Faller Robert Griesemer Michael Knyszek Than McIntosh Martin Möhrmann Patrik Nyblom Michael Pratt Keith Randall Dan Scales Ian Lance Taylor Cherry Zhang
2021-05-11 These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
I'm a little behind updating these notes. I'll consolidate the last couple of meetings into this one.
- The freeze is on. Generics and the register ABI work will continue on a the
dev.typeparamsbranch. - The register ABI is holding true on the ~5% performance improvement, and smaller binaries. There are some regressions in some benchmarks, likely related to live variables over loops with register pressure, but we might not feel comfortable fixing these for 1.17.
- On May 11, we discussed the Uber blog post. We think it's being adequately discussed on the proposal.
- On May 4, we discussed Ian's slices proposal.
- We continue to track the 1.17 release milestone. So far, it looks like we're on track for the 1.17 beta.
Ping. Is the meeting stopped since May? :)
2021-11-30 These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
Resuming notes after a fairly long hiatus.
- 1.18 release freeze continues; C&R team has been working mainly on bug fixing and preparing for a beta "1" release predicted to come out some time next week.
- Generics status:
- for the front end, Robert reports that existing bugs break down mainly into two categories: problems with type inference (including some that cause infinite recursion), and problems with error reporting (error message confusing or not quite as clear as it could be). None of these should block the first beta.
- back end is in good shape, delve / debugging works well, no known issues.
- documentation: a generics tutorial is in the works and being reviewed
- Notable bugs: the team has been focusing on a collection of memory corruption bugs (#49209, #49259, #49453, #49689, #49686 ). Key recent findings:
- these bugs are 100% correlated with NetBSD/OpenBSD on AMD processors (Intel processors don't seem to be impacted, ditto linux)
- the bugs happen both on VMs (GCP, AWS) and on bare metal
- the bugs are reproducible going back several Go releases (we've seen crashes on Go 1.10 and Go 1.12 as part of the bootstrap)
- we are leaning towards not keeping these as release blockers given the above
- Notable bugs part 2: there is a new issue (#49138) with the race detector issue on macOS 12.
- Cherry reports: the race detector SIGABRTs on MacOS 12. MacOS has a new malloc (“nano malloc”); setting env var MallocNanoZone=0 disables it. We are hearing from apple that the new malloc maps at a specific address, and TSAN also maps something fixed there. Apple probably won’t change their malloc. Cherry working on a fix.
Attendees: Jeremy Faller Austin Clements Robert Griesemer Michael Knyszek Than McIntosh Martin Möhrmann Patrik Nyblom Michael Pratt Keith Randall Dan Scales Cherry Mui
2021-12-07
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
[Resuming after yet another hiatus, hope to put these out on a more regular timetable at some point].
- 1.18 release freeze continues
- C&R team has been working mainly on bug fixing
- Discussion of bugs as blocking beta release of 1.18
- runtime/pprof: new test TestLabelSystemstack is flaky Fix in review
- all: rewrite interface{} to any Waiting on one x/tools vet CL (and vendoring)
- doc: write Go 1.18 release notes misc discussion.
- discussion of the 1.18 GC pacer changes and their impact on builder instability
- structured builder output would help
- should we consider changing things so that we never stop on the first error when doing builder all.bash runs?
[Attendees list missing, apologies from note-taker].
2022-01-05
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
- 1.18 release freeze continues
- C&R team has been working mainly on bug fixing
- 🎉 Go 1.18 beta 1 released (2021-12-14)
- FreeBSD memory corruption problems
- folks from the release team are now updating the builders to incorporate the kernel fix
- bugs expected to be fixed by this include #46272, #49967, #49752
- Notable bugs and bugs discussed in detail
- #50427
- #50321
- #50276
- #50177
- #49912
- #46794
- #48656
- #48619
- #43056
- #50097
- #50084
- #49959
- #50391
- #50321
- #50190
- #50417
[Attendees list missing, apologies from note-taker].
2022-01-18
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
- 1.18 release freeze continues
- C&R team has been working mainly on bug fixing
- 🎉 FreeBSD corruption issues are now behind us (kernel bug resolved). Much rejoicing, this was a very painful problem to track down.
- Discussion of notable bugs
- Discussion of areas where we are looking ahead for post 1.18 work
- Go vision, runtime vision
- Core health
- PGO
- cmd/cover
- Generics polishing
- SetMemoryLimit
- Performance monitoring
[Attendees list missing, apologies from note-taker].
2022-01-18
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
- 1.18 release freeze continues
- C&R team has been working mainly on bug fixing
- Austin has circulated a spreadsheet with ideas on things we can do to improve "core project health", e.g. improve developer velocity, catch bugs earlier, reduce toil on the part of the release team. Team is reviewing and adding to it.
- Generics
- Several bugs fixed in generics since the first beta
- we recently had a user-visible change to export data
- google internal testing doesn't specifically stress generics to the degree that it does with non-generic code
- conclusion: it would help to have a second beta release
- Notable bugs
- #49912 Robert is going to be looking into this. Marked as release blocker.
- #50417 Dan has committed fix.
- #50619 Just found; this may trigger a second beta
- #50642 fix is in progress for this.
[Attendees list missing, apologies from note-taker].
2022-01-25
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
- 1.18 release freeze continue
- C&R team has been working mainly on bug fixing
- Notable bugs
- team members are working on triaging a couple of potential 1.18 bugs identfied as part of Google internal testing. More work needed to identify root cause.
- release blocker #50685 fix is being tested.
- Generics status:
- Several fixes have been checked in recently, another fix anticipated shortly for #50619.
- expectation is that we'll start preparing a 2nd beta release shortly after that goes in
Attendees: Jeremy Faller Ian Lance Taylor Austin Clements Robert Griesemer Michael Knyszek Than McIntosh Martin Möhrmann Michael Pratt Keith Randall Dan Scales Cherry Mui
2022-02-01
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
- 1.18 release freeze continues
- second 1.18 beta release went out earlier this week (yay)
- C&R team has been working mainly on bug fixing
- Notable bugs:
- discussion of #35006 (updating C compiler on windows builders)
- issue #50936 (SIGSEGV in gentraceback during SIGPROF handling); this issue (now fixed) came up during Google-internal testing
- issue #50113 (deadlocks during syscall.AllThreadsSyscall); fix being tested CL 381534
- we have four remaining release blockers, #45867, #49912, #50427, and #50887
- team members are brainstorming to identify + prioritize ideas to improve "core team health" (developer productivity)
Attendees: Jeremy Faller Ian Lance Taylor Austin Clements Robert Griesemer Michael Knyszek Than McIntosh Martin Möhrmann Michael Pratt Keith Randall Dan Scales Cherry Mui Alex Rakoczy Matthew Dempsky
2022-02-15
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
- 1.18 release freeze continues
- C&R team has been working mainly on bug fixing
- Bug highlights:
- no C&R release-blocking bugs at the moment, which is good
- #50113 has now been fixed (thank you Michael Pratt); this was a tricky bug
- discussion of #49679 (currently no way to reproduce)
- discussion of #45867 (may want to change the test here)
- discussion of #48505 Consensus seems to be towards adding GOAMD64=V1 and GOAMD64=V3 builders at some point.
- discussion of out-of-tree ports (arch and os)
Attendees: Austin Clements Cherry Mui Dan Scales David Chase Dmitri Shuraylov Ian Lance Taylor Jeremy Faller Keith Randall Matthew Dempsky Michael Knyszek Michael Pratt Than McIntosh
No meeting this week (Feb 22, 2022).
2022-03-01
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
- 1.18 release branch cut, 1.19 tree open for development
- Discussion of issues relating to enabling of unified IR
- How many changes do we anticipate would have to be made on both the non-unified-IR and unified-IR paths? How long do we keep both working after enabling unified IR?
- consensus seems to be that we have to maintain both code paths until we commit to unified IR.
- we’ve basically been doing this for months now. mdempsky@ isn’t too concerned.
- discussion of testing strategy (we need both yes- and no-unified builders)
- austin@: can we break unified IR into multiple sub-experiments like we did regabi?
- considering making extra dictionary stuff a separate flag/experiment.
- mdempsky@: Working on dictionaries right now (currently all stenciled), but want to get that working before flipping the switch.
- How long do we think we need to soak?
- mpdempsky@: most likely enable next week
- Discussion of tentative major Go 1.19 C&R items/deliverables
- Switch to unified IR
- Generics bugs
- Generics tech debt
- Compile speed (#49569)
- Type checker error messages
- khr@: Jump tables
- SetMemoryLimit (#48409)
- drchase@: Revisit initial heap size?
- mknyszek@: enabling currently not in scope, but can be turned on via a GOEXEPRIMENT nob
- cmd/cover overhaul
- thanm@: about to put the proposal into the proposal process. Working on implementation. Getting good results.
- Proposals: arenas (CL), runtime.Pinner (CL), key erasure, extra runtime/metrics, turn off idle mark workers for periodic GC, external time
- khr@: Larger starting stack size
- Discussion of (#51410)
- recently caused a performance problem for a google-internal application
Attendees: Alex Rakoczy Austin Clements Cherry Mui Dan Scales David Chase Dmitri Shuraylov Eli Bendersky Ian Lance Taylor Jeremy Faller Keith Randall Matthew Dempsky Michael Knyszek Michael Pratt Robert Griesemer Than McIntosh
2022-03-01
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
- Discussion about triaging of builder problems
- what sort of automation can we develop to make overall process easier?
- often when a bug is filed for a specific builder test failure, someone will check a change to the test to skip the specific scenario (e.g. GOOS/GOARCH) until the bug is fixed.
- what are we doing to ensure that these skips aren't forgotten about and left in forever?
- ... ideally we could encode these skips in a way that we can see if they stop failing.
- impromptu GitHub project demo
- more discussion of #51410
- not the only known performance cliff
- austin points out that our map is pretty old; at what point do we rewrite the map using the latest and greatest techniques?
- gri@: now that we have generics, it may make sense to do this in userland.
- iant@: different people have different requirements for maps. It may make sense to have a range of map implementations that aren’t in the runtime at all.
- cmd/cover rewrite proposal has been released to public process
- robpike@ still argues for a source transform
- mdempsky@: The original userland fuzzing was a source transform and the compiler-native support is way less intrusive and much easier to maintain.
- Status
- unified IR
- mdempsky@: still working on dictionary stuff. Importer was blocked, now unblocked. Finding some bugs and working on them. Still on track to land in next week or two.
- unified IR
Attendees: Alex Rakoczy Austin Clements Cherry Mui David Chase Dmitri Shuraylov Eli Bendersky Ian Lance Taylor Matthew Dempsky Michael Knyszek Michael Pratt Robert Griesemer Than McIntosh
2022-03-15
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
- Go 1.18 just went out!🎉🎉🎉 (much cheering)
- The compiler now requires the -p flag (CL 391014)
- The code paths to support a missing -p flag still need to be cleaned up.
- plan is to eventually eliminate the "". convention from the linker if possible
- Status
-
Generics
- [Robert]: given that we have only 1.5 months for development in this cycle, not enough time for huge projects (parameterized aliases, big compile time improvements)
- focus will most likely be mainly on bugs
- [Keith] working on some generics performance CLs
-
Unified IR
- [Matthew]: planning on landing soon (now that 1.18 release is out)
- held up by annoying dead code issue
- continuing to work on shape types in unified IR
-
SetMemoryLimit
- [MichaelK]: big stack of CLs in progress.
- hope to land by the end of March
-
cmd/cover
- [ThanM]: Based on proposal feedback, now looking at a hybrid design that combines source-to-source rewriting with compiler support. Solves tricky problems with source position information in the compiler and some tricky problems with source rewriting.
- rollout: still optimistic it can be landed in the next month and a half. austin@: Worth identifying descope options.
-
Generics
Attendees: Alex Rakoczy Austin Clements Cherry Mui David Chase Eli Bendersky Jeremy Faller Keith Randall Martin Möhrmann Matthew Dempsky Michael Knyszek Michael Pratt Robert Griesemer Than McIntosh
2022-03-22
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
- ABI spec now has a shortlink: go.dev/s/regabi
- meta-remark: planning on moving the "center of gravity" for front-end discussions to this meeting
- status
- Type checker
- Doing cleanups. Looking into performance. Minor fixes. Thinking about generics support that we postponed (does that need proposals?)
- Clearing out a lot of unnecessary code from non-types2-based checking. Taking advantage of required -p flag.
- CL is out to not require -p, but make unlinkable objects. Idea: if it’s package main, treat as -p main.
- Generics
- Slow trickle of user issues. Nothing major. (🎉)
- Unified IR
- Burning down tech debt to make this switch easier. Making dictionary code easier to reuse.
- SetMemoryLimit
- Heap goal is responding to the limit. Next step is the scavenger. Then testing everything. Some CLs are out for review.
- cmd/cover
- Focusing on cmd/go. Many script tests verify odd aspects of coverage. More or less convinced that the hybrid approach is the right way to go.
- Type checker
- Supporting out-of-tree OS ports
- Examples: Ron Minnich’s repository, Fuchsia
- What is the incentive for us to actually make this easier?
- What support would we provide for out-of-tree ports?
- [Robert]: Do we have builders for out-of-tree ports?
- [Austin]: I think that’s one thing we most want to get out of.
- [Keith]: We should kick out one or more of our least-maintained ports (we all know what they are) and see what it actually takes.
- [Austin]: we could also do our own out-of-tree port and own it ourselves for a little while.
- [MichaelP]: cleanups in the syscalls in the runtime package make make it easier (as a side effect) to support out-of-tree ports.
- [Than]: If we do this, it would be helpful to have a way for an out-of-tree maintainer to have a way to get our blessing at some hash that passes all.bash. The blessing would be in the eye of the general public.
- [Keith]: We could have a wiki page that says “if you’re interested in running on Dragonfly, go over here, we think this ports works.”
Attendees: Alex Rakoczy Austin Clements Cherry Mui Dmitri Shuraylov Eli Bendersky Jeremy Faller Keith Randall Martin Möhrmann Matthew Dempsky Michael Knyszek Michael Pratt Robert Griesemer Than McIntosh
2022-03-29
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
- discussed plans for the typechecker in Go 1.19
- discussion of Russ's sync/atomic types CL.
- this is an interesting CL since it represents the first real use of generic types in std
- some potential/possible fallout from static analyzers and other tools that don't yet grok generics
- discussion of freeze timeline and team meeting dates
- Updating Windows builder C toolchain
- [Than] plan is to wait until all the CLs are in, then sync with the release team to organize the actual builder update. CLs have to wait for proposal approval due to API change made in debug.pe
- discussion of timeline for updating bootstrap version of Go on builders
- core team will own/prioritize this; may slip to next release
- general feeling at this point is that it’s a lot more work to update the builders than to live with the status quo for another ~6 months.
- discussion of recent dvyukov@ CL to update linux_amd64 race syso (removes goroutine limit)
- would be great to get this rolled out to all applicable builders for 1.19
- [Than]: I want to make sure it gets built with the new Windows C compiler.
- [Cherry]: we have a tool that automates the update via gomotes, once new compiler is in place we can just use that
- status
- Front end
- Just fixing bugs in type checker and parser, plus "-p" cleanup.
- Unified IR
- Added a go/types importer.
- Other generics issues
- Bugs have been easy to diagnose and solve.
- SetMemoryLimit
- Updating CLs from comments.
- Stuck on not being able to ready a goroutine from inside the allocator. Working on it.
- Targeting end of week for having all the CLs ready.
- cmd/cover
- Working on cmd/go. Unit tests are passing with both new and old coverage. A lot more unit tests to write.
- After that, going to focus on reporting changes.
- Committed to the hybrid approach at this point.
- Front end
Attendees: Austin Clements Cherry Mui David Chase Dmitri Shuraylov Eli Bendersky Ian Lance Taylor Matthew Dempsky Michael Knyszek Michael Pratt Robert Griesemer Than McIntosh
2022-04-12
These compiler and runtime meeting minutes are a snapshot of what was discussed in an internal Google meeting. Notes on agenda items that address Google specific needs are elided. Any comments on this issue will be removed, and discussion about topics raised should be taken to the appropriate mailing list. Additionally, any feedback or suggestions for additions to the notes should be handled there as well.
- one month to go (roughly) before release freeze
- Updates
- Front-end/generics
- [Matt] compiler is now switched over to unified IR export format, which caused a bunch of problems with x/tools tests. For now, disabled trybot. Need a better solution for major export format changes.
- generics issues: bugs are coming in, but the rate overall seems to be manageable at the moment. Several failures are in consistency changes with new code going through the old importer for things where those checks no longer make sense.
- SetMemoryLimit
- moving closer to land this feature
- plan is to document limitations on small heaps (with plan to improve in the future), feature-flag big change but don’t worry about small corner-case differences
- Michael P and Austin to review CLs
- cmd/cover
- Plan: drop old compiler-only support from CL stack, put hybrid CLs out for review. Prioritize matching current functionality, with new functionality for later.
- What should “go build -cover” cover? “go test -cover pkgs…” covers just pkgs, but that doesn’t seem like the right default for go build. Cover the main module by default?
- [Than] The argument for instrumenting everything is that you can filter it down at reporting time.
- [Michael K]: if I were to use “go build -cover”, instrumenting everything is what I would expect.
- [Ian] I suspect most people aren’t going to care about coverage of std. And probably “low level libraries” though we don’t know what that is.
- [Than] defaulting to packages in the main module may be best.
- [Kieth] one factor is run-time cost of coverage instrumentation.
- [Than] benchmarking needed here. Definitely faster than -race, but not sure exactly how much.
- discussion of https://github.com/golang/go/issues/52209 [cmd/compile, cmd/link: generate dwarf type info in compiler] and related stack of CLs
- Than to review and keep an eye on progress.
- Noted that this is a fairly large project, will probably take a while to get through all the details.
- Front-end/generics
Attendees: Austin Clements Carlos Amedee Cherry Mui David Chase Dmitri Shuraylov Eli Bendersky Heschi Krienek Ian Lance Taylor Keith Randall Martin Möhrmann Matthew Dempsky Michael Knyszek Michael Pratt Than McIntosh