Hacker News new | ask | show | jobs
by blueish 2934 days ago
I recently took a compilers course from Hutchinson, and he talked a bit about the design behind object passing in Emerald from a compilers point of view, how once you have garbage collection, it's easy to implement moving objects between nodes of programs. Interesting concept that I was surprised to find wasn't as commonplace!
2 comments

One issue is that at scale, communication costs dwarf almost every other cost. So, sending objects between nodes isn't as critical as you might think it is for distributed systems.

(I was also in Norm's class! It was awesome, and also got me over the Rust hype to some degree)

> also got me over the Rust hype to some degree

You can't just throw a detail like that and not tell us more. :D

I guess he means that you don't need speed for distributed applications, which is a bit misquided because nobody said you did, and that's not what Rust claims to do well.
> communication costs dwarf almost every other cost.

That may have been true 10 or 20 years ago when networking was much slower.

Everything else was much slower, too.

Oftentimes the biggest cost associated with communication is latency, and the one thing that hasn't changed over the past few decades is the speed of light.

The problem usually isn't so much throughput, it's latency... and the speed of light sets a lower bound on that, unfortunately.
its still true because everything else is faster, too
Garbage collection isn’t absolutely necessary with lifetime/liveness or explicit frees. Furthermore, at scale in production, if a GC were absolutely necessary, then it’s vital to have a concurrent, incremental collector like c4 because GC 30 sec pauses and sharding up app servers with 2 GiB heaps is unacceptable in the real world.