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+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/golang-nuts/16193871-9116-46e8-bb1e-5c730f979683n%40googlegroups.com.