[go-nuts] dmap, deterministic map iterator order for DST

2025-05-24 Thread Jason E. Aten
I needed deterministic map iteration order for my deterministic simulation testing (using the new testing/synctest package -- experimental in go1.24, but proposal approved to move forward, yay!) so I wrote a "dmap" which provides repeatably ordered full range scan for keys that can be turned into

Re: [go-nuts] great talk on database/memory trends, DST, and the weaknesses of Raft

2025-05-24 Thread Jason E. Aten
It's a tour de force. You might especially enjoy the 18:00+ minute in discussion of the premature declarations about the death of Moore's law. He argues that if your design today makes the CPU wait on the network, then in two years you'll be waiting twice as long; this leads to a fascinating d

Re: [go-nuts] great talk on database/memory trends, DST, and the weaknesses of Raft

2025-05-24 Thread Robert Engels
One other point, my quick research shows the fastest processors can only process about 256 gb/sec with most around 100 gb/sec. I’m not saying that ultra fast networks don’t change the dynamics, but it’s been this way for a while. I plan on watching the video so maybe I am missing something and I’ll

Re: [go-nuts] great talk on database/memory trends, DST, and the weaknesses of Raft

2025-05-24 Thread Robert Engels
That last part is what is incorrect in my opinion. Even if the network bandwidth exceeds the memory bandwidth there is the IO overhead - which means that remote memory will be slower than local memory - as the remote memory still goes through the bus plus the overhead. On May 24, 2025, at 8:01 PM,

Re: [go-nuts] great talk on database/memory trends, DST, and the weaknesses of Raft

2025-05-24 Thread Jason E. Aten
He does claim that bandwidth for peer to peer, saying > 800 Gbps on a single link and https://www.tomshardware.com/news/800-gigabit-ethernet-gbe-spec-standard seems to confirm that, if I'm reading it right. You seem to be saying that memory is always the bottleneck. I don't think we disagree ther

Re: [go-nuts] great talk on database/memory trends, DST, and the weaknesses of Raft

2025-05-24 Thread robert engels
To elaborate, the entire way the “cloud” works - is by multiplexing jobs and their data across multiple machines - this is how Google BigQuery achieves sub-second responses searching terabytes of data. But this paradigm has been around for a long time - nothing new. Maybe I misread, but the gis

Re: [go-nuts] great talk on database/memory trends, DST, and the weaknesses of Raft

2025-05-24 Thread robert engels
I understand, but it makes no practical sense. The 800GB/sec is the throughput the fabric, not a peer to peer rate. So yes, the network can support multiple clients at a TOTAL rate greater than the speed of an individual machine - eventually the data goes through the memory bus of a machine. >

Re: [go-nuts] great talk on database/memory trends, DST, and the weaknesses of Raft

2025-05-24 Thread Jason E. Aten
In the video, https://www.infoq.com/presentations/redesign-oltp/ at 14:00 minutes in is what I was referring to. Greef shows a graph from Roland Dreier and cites his blog post, see Figure 1 of that blog. He points out the flip from 2020 to 2023. https://blog.enfabrica.net/the-next-step-in-high

Re: [go-nuts] great talk on database/memory trends, DST, and the weaknesses of Raft

2025-05-24 Thread robert engels
That doesn’t make sense. Memory can’t be slower than disk - disk is either physical, or memory backed - which means its upper speed limit is the memory speed limit. If the presentation means to imply that ethernet is so fast - faster than memory busses themselves - that you could fan out to ach

[go-nuts] great talk on database/memory trends, DST, and the weaknesses of Raft

2025-05-24 Thread Jason E. Aten
This is an amazing talk from last year 2024 March 22 Qcon from the TigerBeetle CEO, Joran Greef. Zig has lessons for Go. "Redesigning OLTP for a New Order of Magnitude" https://www.infoq.com/presentations/redesign-oltp/ Early on the talks covers that latest trends in memory vs network vs disk, (h

Re: [go-nuts] Question About Interface Field in a Structure

2025-05-24 Thread Kurtis Rader
The problem starts with these two lines: > var i = []i_t{{help}} > var t = []i_t{{fish}} You are initializing the structs with the values stored in `help` and `fish`, not references to those variables. Thus, when you change the value stored in the struct it has no effect on the variables from whi

Re: [go-nuts] Question About Interface Field in a Structure

2025-05-24 Thread 'jlfo...@berkeley.edu' via golang-nuts
Bingo! This solves the problem. You win the prize! I hope this discussion helps other people facing similar problems. Jon -- 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

Re: [go-nuts] Question About Interface Field in a Structure

2025-05-24 Thread Mikk Margus
Sorry, I seem to have copy-pasted your Go Playground link instead of mine, assuming "share" would place it in my clipboard automatically. https://go.dev/play/p/8XajdwXDdqW This is what I meant to share. It outputs the following: ``` before: help = falsestruct = [{%!t(*bool=0xc1006d)}]

Re: [go-nuts] Question About Interface Field in a Structure

2025-05-24 Thread 'jlfo...@berkeley.edu' via golang-nuts
Thanks for your and Brian's replies. But, unless I'm missing something, neither solve the problem. I ran both of them in the Go Playground and they both produced the same incorrect result. The result I'm looking for would be: before: help = false struct = [{false}] after: help = true struct =

Re: [go-nuts] Question About Interface Field in a Structure

2025-05-24 Thread Mikk Margus
As far as I can tell, they're asking for a way for `var help`/`var fish` etc. to get updated alongside the attribute `i_t.arg` in the update methods. This example accomplishes this. https://go.dev/play/p/7y5COCLU5EP Do note that it crashes and burns if the pointer is not of the expected type, a

Re: [go-nuts] Question About Interface Field in a Structure

2025-05-24 Thread 'Brian Candler' via golang-nuts
Or you can use a setter method: https://go.dev/play/p/W9Cz2PO8NeK On Saturday, 24 May 2025 at 03:39:34 UTC+1 Def Ceb wrote: > You're creating new copies of the values and modifying the copies, rather > than storing a reference and then modifying the original data through it. > You'd use *string