Hacker News new | ask | show | jobs
by jnordwick 3067 days ago
I'm coming from this as somebody who often has to rewrite a lot of library code because of certain performance issue and poor decisions from library writers often regarding things like garbage collection and hidden resources, like thread pools or an event loop, that cannot be hooked into. I see it all the time. I can no longer count the number of times I've had to rewrite parts of the JDK or networking libraries because of these issues.

Now, this is what I'm hearing from what you are saying:

> 1- We can't use a JVM implementation because we aren't using a JVM language.

Makes sense.

> 2- The C library is okay, but hides its thread pool with no way to access it.

Ugh. Hate that. Its like these people writing these have never had to use them in a real project. The sign of a mediocre library.

Pony's actor model might have to rewrite almost any library used by it when concurrency is involved.

But now, I think you answered your own question in the titles now:

> Why we wrote our Kafka Client in Pony

1- Because the C library is mediocre and hides its threads from users making it not very useful for high-performance applications.

2- Because the rest of the system is in Pony. Really, you could write it in C/C++ or even Rust as long as you wrote it in a way that played well with Pony's concurrency model, but why bother with that extra effort, especially if you believe - as you seem to - that Pony's concurrency story is superior.