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.

Reply via email to