Nice! Thanks for the example, Def Ceb. Below is the other really nice video/talk by Andrew Kelley that I watched but couldn't find again immediately.
It gives some of the origin story/motivating problem for Zig (realtime audio workstation). https://www.youtube.com/watch?v=Gv2I7qTux7g It is linked from https://ziglang.org/learn/ which has a learning outline for Zig. On Thursday, June 26, 2025 at 12:35:46 PM UTC+2 Def Ceb wrote: > I've had some luck with some cross-OS Go stuff via `CGO_ENABLED=1 CC='zig > cc -target <target>' CXX='zig c++ -target <target>' AR='zig ar' go build` > Not a lot of nice options otherwise for MacOS. > > On Thu, Jun 26, 2025, 13:23 Jason E. Aten <j.e....@gmail.com> wrote: > >> I've been thinking maybe I should set up a blog to talk about non-Go >> computer science... so maybe I'll get to that...it seems like a big >> undertaking. >> >> In the meantime, here are some very cool topics I have >> come across recently that are (tangentially) related to Golang: >> >> 1. Sophie Wilson on the future of hardware, from last year (2024). >> >> This talk is from the designer of the original ARM instruction set. >> >> https://www.youtube.com/watch?v=MkbgZMCTUyU >> >> Fascinating to see where hardware is going, and think about how >> Go can be ready for it. >> >> 2. Zig as a better C, for more portable CGO. >> >> I heard the founder of Zig, Andrew Kelley, speak last week at a >> gathering of TigerBeetle interested folks. >> >> TigerBeetle, the database, is written in Zig, a better C, for maximum >> control. >> >> Basically TigerBeetle is written very much like an embedded >> system, so things like having an operating >> system are (almost but not quite) optional. >> >> It is single thread/single core, and so suffers no slow >> down from cache-coherency stalls on >> multiprocessors. But it uses the network for replication. >> >> Hence even on a 5 node replicated cluster, >> it is 1000x faster than general purpose >> databases like SQL-Lite, MySQL, Postgres, while being vastly >> more safe. >> >> Note TigerBeetle tracks counts and accounting debit-credit >> (shifting counts from one account to another); it >> is not a general purpose SQL database. But as Joran Greef, >> its founder/author, pointed out, TigerBeetle's first application >> was tracking energy use for home smart-meters >> on 30 minute consumption intervals, which is more general >> count-tracking than just double-entry accounting book keeping. >> >> TigerBeetle runs View-Stamped-Replication (VSR) for fault tolerance, >> which is equivalent to Raft / Multi-Paxos -- something >> that none of the above general purpose SQL databases can manage >> out of the box (ignoring 3rd party projects things like rqlite which >> are one-man projects and not standard, and ignoring Ben Johnson's >> highly useful sqlite streaming backup stuff, which is sadly not Paxos and >> thus has a window for data loss.) >> >> Immediate relevancy to Go: If your Go project includes >> CGO components, and you want very portable >> cross-compilation even for your C components, the Zig compiler >> is also a C compiler (building on Clang) _AND_ Zig ships with >> the sources for a ton of different C standard libraries from >> across lots of OS and architecture platforms. >> >> So using Zig as your C compiler means you can cross-compile your CGO C >> parts _almost_ as easily as you can cross-compile your Go parts. >> >> Bigger picture, Zig is fascinating to me in that Zig/Andrew Kelley got >> generics >> "for free" almost immediately when early on he dropped macros and >> put in "comptime" compile-time func evaluation instead. >> >> Compared to the pain that was getting Go generics to work, and the >> lack of full support for generics as first class data members even at >> this point >> (https://github.com/golang/go/issues/74331), this seems like kind of a >> minor miracle. >> >> Zig does not have a multi-threaded story at this point. Andrew is busy >> ripping out and re-doing a previous attempt at async/await, and taking >> alot of inspiration from Go and Go's io.Reader and io.Writer in the >> meantime. Zig >> already stole defer (and refined it in errderfer, a second type of defer) >> from Go. >> >> But, that lack of non-deterministic (from threading) is one of the >> reasons that >> TigerBeetle chose Zig in the first place. They knew from FoundationDB's >> success with Deterministic Simulation Testing (DST) that they wanted >> to use DST to bring their database to market in a timely and well-tested >> manner, and to take advantage of the gift that DST gives: the ability to >> add new features, optimizations, and accomplish refactors in your >> distributed system without the fear of breaking the working system. >> >> So TigerBeetle implements their own DST, exploiting Zig's single core >> better-than-C safety and efficiency. >> >> Inspiring all around. >> >> - Jason >> >> p.s. links for more on Zig: >> >> humorous shorts... >> https://www.youtube.com/shorts/Bab7-58-TWk >> https://youtube.com/shorts/7sXj-aWZEoY?si=O2uVpmO26YJuJx74 >> >> longer stuff... >> https://ziglang.org/ >> https://www.youtube.com/watch?v=5_oqWE9otaE >> https://www.youtube.com/watch?v=5eL_LcxwwHg >> https://www.youtube.com/watch?v=YXrb-DqsBNU >> https://ziggit.dev/t/36-zig-roadmap-2024-andrew-kelley/3024/21 >> https://www.youtube.com/watch?v=i9nFvSpcCzo >> https://github.com/ziglang/zig/wiki/Community >> >> >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "golang-nuts" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to golang-nuts...@googlegroups.com. >> To view this discussion visit >> https://groups.google.com/d/msgid/golang-nuts/16193871-9116-46e8-bb1e-5c730f979683n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/golang-nuts/16193871-9116-46e8-bb1e-5c730f979683n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/a751f6b3-a73b-4d15-b6c4-d1f0d44f578en%40googlegroups.com.