HN user

Hixon10

96 karma

blogger on lovely http://hixon.ru/

Posts16
Comments34
View on HN

It sounds super cool, your idea and implementation for await and transactions. Because of my limited Rust knowledge, it's hard for me to understand how difficult it was to implement such a plugin.

Also, your idea of using different domain specific colors is interesting. It might be possible to express this via some kind of effect system. I'm not aware of any popular Rust libraries for that, but it could be worth borrowing some ideas from Scala libraries.

Yeah, I like your examples. In such scenarios, it makes sense when we're just trying to protect against our own bugs rather than a user deliberately sending a path that leads to the password.txt file.

Why would it use `chroot`?

I am not sure, is this custom Os.Root implementation good enough to relay on it? I see that it is based on openat, and validation of paths/symlinks. But should we expect CVEs, which will break this protection layer?

Here's where Rivet's architecture gets fun – we don't rely on a traditional orchestrator like Kubernetes or Nomad for our runtime. Instead, our orchestrator is powered by an in-house actor-like workflow engine – similar to how FoundationDB is powered by their own actor library (Flow [4]) internally. It lets us reliably & efficiently build complex logic – like our orchestrator – that would normally be incredibly difficult to build correctly. For example, here's the logic that powers Rivet Actors themselves with complex mechanisms like retry upgrades, retry backoffs, and draining [2].

It is a bit unclear for me, do you use actors themself to develop Rivet Actors, or it is another actor-like workflow engine, not the final product?

(I would be super happy to read an article, which explains architecture, main blocks of the system, gives some an example)

I really like an idea to solve scheduling problem via compiling to WASI. Many months ago I had conversation with friends, how to implement deterministic testing in Go, without custom IO runtime (common approach in Scala/Rust/C++). We were talking about a few random things, which require a lot of effort (compare to WASI):

1. https://github.com/Shopify/toxiproxy

2. https://github.com/bytedance/ns-x

3. https://github.com/hnes/cpuworker

But all of them are not too good from the first glance.

This Timeline of Events a bit scares me. It looks like, if someone hadn't decided to stop DDOS, deno would still had problems. I would expect to cut off all DDOS traffic on some gateway level, or so.

I would like also to have benchmarks between the current Java API, and you library. Otherwise it is not obvious, does your library outperform standard implementation, or not.