Readit News logoReadit News
gf000 commented on Nitro: A tiny but flexible init system and process supervisor   git.vuxu.org/nitro/about/... · Posted by u/todsacerdoti
nine_k · 18 hours ago
The backlash against systemd was twofold. On one hand, when released and thrust upon distros via Gnome, it was quite rough around the edges, which caused both real problems and just understandable irritation. Fifteen years after, the kinks are ironed out, but it was sort of a long time. (Btrfs, released at about the same time, took even longer to stop being imprudent to use in production.)

On the other hand, systemd replaces Unix (sort of like Hurd, but differently). It grabs system init, logging, authentication, DNS, session management, cron, daemon monitoring, socket activation, running containers, etc. In an ideal Red Hat world, I suppose, a bare-metal box should contain a kernel, systemd, podman, IP tools, and maybe sshd and busybox. This is a very anti-Unix, mainframe-like approach, but for a big consulting firm, like Red Hat / IBM, it is very attractive.

gf000 · 8 hours ago
You are repeating a bunch of "talking points" common among systemd-critics, but are not really backed up.

First of all, it wasn't "thrust upon" anyone, it was democratically selected multiple times in a ranked voting setup in case of Debian, and independently by Arch as well. It was simply because maintainers were fed up with the absolutely unmaintainable mess that predated systemd -- it seems random-ass bash scripts are not suitable for such a complex problem as booting up a system, and doing it properly is much better.

Logging sucked great time before, e.g. you didn't even get logs from before the Linux kernel is started - systemd moves it to a single place. And if you are for some reason irritated by binary logging, you can just freely pipe it to text logs.

Authentication is not done by systemd, are you thinking of pam modules? The network service is not systemd, just runs under the same group's name - KDE file browser is also different from their terminal. Also, it's not mandatory to use. Logind is not systemd itself, again. Scheduling services makes absolute sense for systemd's problem domain, so do monitoring and socket activation.

You need some kind of order to build stuff on, the Unix philosophy is more of a feel good convention than a real design guideline (and it doesn't apply in many cases)

gf000 commented on Go is still not good   blog.habets.se/2025/07/Go... · Posted by u/ustad
zozbot234 · 11 hours ago
> but still, tracing GCs have much better performance on server workloads

Good performance with traditional tracing GC's involves a lot of memory overhead. Golang improves on this quite a bit with its concurrent GC, and maybe Java will achieve similarly in the future with ZGC, but reference counting has very little memory overhead in most cases.

> Reference counting when an object is shared between multiple cores require atomic increments/decrements and that is very expensive

Reference counting with a language like Rust only requires atomic inc/dec when independently "owning" references (i.e. references that can keep the object around and extend its lifecycle) are added or removed, which should be a rare operation. It's not really performing an atomic op on every access.

gf000 · 9 hours ago
And memory is cheap, especially when we talk about backend workloads.

A tracing GCs can do the job concurrently, without slowing down the actual, work-bearing threads, so throughput will be much better.

> Golang improves on this quite a bit with its concurrent GC

Not sure what does it have to do with memory overhead. Java's GCs are at least generation ahead on every count, Go can just get away with a slower GC due to value types.

gf000 commented on Go is still not good   blog.habets.se/2025/07/Go... · Posted by u/ustad
jiehong · 14 hours ago
Tracing GC and their pauses on server workload is another tradeoff. They all have a tradeoff. You make a fair point.
gf000 · 14 hours ago
Sure, though RC can't get away from pauses either - ever seen a C++ program seemingly hang at termination? That's a large object graph recursively running its destructors. And the worst thing is that it runs on the mutator thread (the thread doing the actual work).

Also, Java has ZGC that basically solved the pause time issue, though it does come at the expense of some throughput (compared to their default GC).

gf000 commented on Go is still not good   blog.habets.se/2025/07/Go... · Posted by u/ustad
vips7L · a day ago
Swift is my hope for the next big server language. Great type system, great error handling.
gf000 · 14 hours ago
I haven't followed swift too closely, but ref counting is not a good fit for typical server applications. Sure, value types and such take off a lot of load from the GC (yes, ref counting is a GC), but still, tracing GCs have much better performance on server workloads. (Reference counting when an object is shared between multiple cores require atomic increments/decrements and that is very expensive).
gf000 commented on Go is still not good   blog.habets.se/2025/07/Go... · Posted by u/ustad
EFreethought · a day ago
There are still a LOT of places running old versions of Java, like JDK 8.

Java is great if you stick to a recent version and update on a regular basis. But a lot of companies hate their own developers.

gf000 · 14 hours ago
60% is in newer than 8, though. So I wouldn't write down the platform.
gf000 commented on Go is still not good   blog.habets.se/2025/07/Go... · Posted by u/ustad
skybrian · a day ago
That’s great, but are you still using Maven and Gradle? I’d want to see a popular package manager that doesn’t suck before I’d consider going back.

(Similar to how Python is finally getting its act together with the uv tool.)

gf000 · 14 hours ago
There is Mill, which is pretty cool, but it is quite small.

Though Gradle is more than fine with the Kotlin DSL nowadays.

gf000 commented on Go is still not good   blog.habets.se/2025/07/Go... · Posted by u/ustad
lisbbb · 19 hours ago
My criticism of the JVM is that it is no longer useful because we don't do portability using that mechanism anymore. We build applications that run in containers and can be compiled in the exact type of environment they are going to run inside of and we control all of that. The old days of Sun Microsystems and Java needing to run on Solaris, DEC, HP, maybe SGI, and later Linux, are LOOOOOOONG gone. And yet here we still are with portability inside our portability for ancient reasons.
gf000 · 14 hours ago
If you believe that's the reason for the JVM (and that it's a "VM" in the traditional sense), you are greatly mistaken. It's like saying C is no longer needed because there is only Arm and x86..

The JVM is a runtime, just like what Go has. It allows for the best observability of any platform (you can literally connect to a prod instance and check e.g. the object allocations) and has stellar performance and stability.

gf000 commented on Go is still not good   blog.habets.se/2025/07/Go... · Posted by u/ustad
SkepticalWhale · a day ago
I mostly agree with you except the simple syntax with one way of doing things. If my memory serves me, Java supports at least 2 different paradigms for concurrency, for example, maybe more. I don’t know about C#. Correct me if wrong.
gf000 · 14 hours ago
There is no one paradigm for concurrency, no method is strictly better than the other. Channels are not the only primitive used in go either, so it's a bit moot point.

What's important is how good primitives you have access to. Java has platform and virtual threads now (the latter simplifying a lot of cases where reactive stuff was prevalent before) with proper concurrent data structures.

gf000 commented on Go is still not good   blog.habets.se/2025/07/Go... · Posted by u/ustad
Mawr · a day ago
> I can reasonably likely run a 30 years old compiled, .jar file on the latest Java version.

Great, pretty much every language ever can do the equivalent. Not what anyone is talking about.

> Java is the epitome of backwards and forward-compatible changes,

Is the number of companies stuck on Java 8 lower than 50% yet? [1]

[1]: https://www.jetbrains.com/lp/devecosystem-2023/java/

gf000 · a day ago
> Great, pretty much every language ever can do the equivalent. Not what anyone is talking about

Go already has a breaking change.

> Java 8

Yes

gf000 commented on Go is still not good   blog.habets.se/2025/07/Go... · Posted by u/ustad
Mawr · a day ago
What do you mean by saying Java compiles just as fast? Do you mean to say that the Java->bytecode conversion is fast? Duh, it barely does anything. Go compilation generates machine code, you can't compare it to bytecode generation.

Are Java AOT compilation times just as fast as Go?

gf000 · a day ago
> Duh, it barely does anything. Go compilation generates machine code, you can't compare it to bytecode generation

Why not? Machine code is not all that special - C++ and Rust is slow due to optimizations, not for machine code as target itself. Go "barely does anything", just spits out machine code almost as is.

Java AOT via GraalVM's native image is quite slow, but it has a different way of working (doing all the Java class loading and initialization and "baking" that into the native image).

u/gf000

KarmaCake day760November 29, 2024View Original