1
Fork 0
jakstys.lt/content/log/2023/my-zig-and-go-work-for-the-...

37 lines
2.0 KiB
Markdown

---
title: "My Zig and Go work for the next 3 months"
date: 2023-03-24T19:10:12+02:00
---
Now that Uber [uses "zig cc" to compile it's Go Monorepo][1], here is a sneak
preview of what I have planned for the [next 3 months]({{< ref
"log/2023/7-years-at-uber" >}}) on the Zig/Go side:
- Finish an "official" Uber's blog post about how Uber uses zig and why. The
content will be similar to my [post a year ago]({{< ref
"log/2022/how-uber-uses-zig" >}}), but with the milestones closed. Since the
previous post we have enabled zig-cc as the default C/C++ compiler for CI,
dev and production, our toolchain got open sourced and the company has
committed to maintaining it. We still find bugs in Zig and Go and interaction
between both though, so there is still work to be done.
- Play around with MacOS *target* support for the mentioned toolchain. I can't
promise anything, but at least I want to evaluate the feasibility. This needs
a bit of ground work on the toolchain side plus a lot of testing.
- Make all Go tests pass with `CC="zig cc"`. This is a prerequisite for the
next goal.
- Propose and, if accepted, implement an official [CI node][2] that tests Go
with "zig cc" as the C compiler for linux/amd64 and linux/arm64. When this is
done, the Go team will be alerted of regressions that impact "zig cc" users
during the change. At the moment, unfortunately, if Go has a regression that
impacts "zig cc", the Go team learns about it only when someone (we?) attempt
to upgrade Go to the latest release.
- Extension from the above: do the same for macos. This would have caught [this
issue](https://github.com/golang/go/issues/58935) way before the release of
Go 1.20; it will now be fixed only in Go 1.20.3.
If you are my (ex-)colleague that is/was involved, thank you very much. We have
such an amazing team that was able to pull this off.
[1]: https://twitter.com/mo_kelione/status/1633474830577160195
[2]: https://cs.opensource.google/go/x/build/+/master:dashboard/builders.go