Live data from Hacker News

Ntimed – NTPD replacement

github.com

11–20 of 109 posts

Re: Ntimed – NTPD replacement

#11

Earlier quoted context omitted.

What safer options are there with equal size, overhead (read: none) and not full of layers upon layers of abstractions?

That sounds like you're implying that safety has no value, the only "overhead" worth considering is CPU cycles (what about the programmer's time/effort/sanity?), and that abstractions have negative value. I don't think that's how you're supposed to software.

Yeah. Especially considering that CPU overhead has very little value for time syncing program.

Re: Ntimed – NTPD replacement

#12
post #10

Earlier quoted context omitted.

What safer options are there with equal size, overhead (read: none) and not full of layers upon layers of abstractions?

Rust. Some of it's design goals (as stated on their webpage) are among the exact things you mentioned: zero-cost abstractions, minimal runtime, guaranteed memory safety, threads without data races.

Rust isn't even at version 1.0 yet and is probably a year away from being in a "suitable for production" state.

System time is far, far too critical to take chances with.

Re: Ntimed – NTPD replacement

#13

Earlier quoted context omitted.

What safer options are there with equal size, overhead (read: none) and not full of layers upon layers of abstractions?

That sounds like you're implying that safety has no value, the only "overhead" worth considering is CPU cycles (what about the programmer's time/effort/sanity?), and that abstractions have negative value. I don't think that's how you're supposed to software.

It's a core operating system component not some web app.

Overhead is important since Linux is designed to run on a whole spectrum of devices. Abstractions mean you are bringing in more code i.e. greater complexity, space, overhead. And frankly nobody could care less about programmer's time/effort/sanity in this case. It is a tightly focused, specific utility that shouldn't see too many changes after a certain point.

Re: Ntimed – NTPD replacement

#14

Earlier quoted context omitted.

What safer options are there with equal size, overhead (read: none) and not full of layers upon layers of abstractions?

That sounds like you're implying that safety has no value, the only "overhead" worth considering is CPU cycles (what about the programmer's time/effort/sanity?), and that abstractions have negative value. I don't think that's how you're supposed to software.

Safety has value it just doesn't imply overhead. Abstractions are a negative, they make reasoning burdensome.

Re: Ntimed – NTPD replacement

#15
post #10

Earlier quoted context omitted.

What safer options are there with equal size, overhead (read: none) and not full of layers upon layers of abstractions?

Rust. Some of it's design goals (as stated on their webpage) are among the exact things you mentioned: zero-cost abstractions, minimal runtime, guaranteed memory safety, threads without data races.

Zero-cost to whom? The developer? no as now the implementation details have to be known, the machine? no as time will be spent in the compiler churning away removing junk or if the compiler isn't smart enough including it. Also the C++ / rust definition of zero-cost is only if you don't use the abstraction. Minimal runtime is relative.

Re: Ntimed – NTPD replacement

#16

Earlier quoted context omitted.

> Why another from-scratch rewrote, And why oh why in C with so many safer options available today ..

What safer options are there with equal size, overhead (read: none) and not full of layers upon layers of abstractions?

Can you explain why abstraction is bad? Abstraction does _not_ mean your program will be slower. In fact, the opposite can happen, because the compiler has more context to work with, and can get rid of stuff.

Haskell + stream fusion gives better results than well tuned C in some very typical situations http://research.microsoft.com/en-us/um/people/simonpj/papers...

Even just comparing C++/C, C++'s templating mechanisms mean that generic containers can be optimised on a per-type basis.

Abstraction and overhead are not as tightly coupled as they used to be, and not introducing Heartbleed-style bugs is worth a lot in my opinion

Re: Ntimed – NTPD replacement

#17

Earlier quoted context omitted.

That sounds like you're implying that safety has no value, the only "overhead" worth considering is CPU cycles (what about the programmer's time/effort/sanity?), and that abstractions have negative value. I don't think that's how you're supposed to software.

It's a core operating system component not some web app. Overhead is important since Linux is designed to run on a whole spectrum of devices. Abstractions mean you are bringing in more code i.e. greater complexity, space, overhead. And frankly nobody could care less about programmer's time/effort/sanity in this case. It is a tightly focused, specific utility that shouldn't see too many changes after a certain point.

Overhead is important since Linux is designed to run on a whole spectrum of devices.

Like the difference between a ntpd.c vs ntpd.go is going to matter for anyone...

If you really find yourself stuck with an embedded device small enough that a few megabytes of RAM matter then you can still use the old C implementations, it's not like they are going away.

Abstractions mean you are bringing in more code i.e. greater complexity, space, overhead.

In this case abstractions mean you can probably write the whole thing in under 2 kloc, get memory safety for free, and base it on a network stack that other people actually use and debug independently.

It is a tightly focused, specific utility that shouldn't see too many changes after a certain point.

Umm. Yea. Right. Tell that to the ntpd guys with their 100kloc codebase...

Re: Ntimed – NTPD replacement

#18

Earlier quoted context omitted.

That sounds like you're implying that safety has no value, the only "overhead" worth considering is CPU cycles (what about the programmer's time/effort/sanity?), and that abstractions have negative value. I don't think that's how you're supposed to software.

Safety has value it just doesn't imply overhead. Abstractions are a negative, they make reasoning burdensome.

Abstractions are what make it possible to reason about complex systems. Being able to ignore parts of your codebase is the only way to make changes to it once it gets beyond a trivial size.

The whole of the Unix philosophy is enforcing this policy of strong abstractions by making each part of a complex overall system its own binary, such that they can only communicate using the file I/O abstraction, possibly via pipes. C was therefore designed for a system which promotes abstractions.

Re: Ntimed – NTPD replacement

#19
post #18

Earlier quoted context omitted.

Safety has value it just doesn't imply overhead. Abstractions are a negative, they make reasoning burdensome.

Abstractions are what make it possible to reason about complex systems. Being able to ignore parts of your codebase is the only way to make changes to it once it gets beyond a trivial size. The whole of the Unix philosophy is enforcing this policy of strong abstractions by making each part of a complex overall system its own binary, such that they can only communicate using the file I/O abstraction, possibly via pipe…

[deleted]

Re: Ntimed – NTPD replacement

#20
post #19
post #18

Earlier quoted context omitted.

Abstractions are what make it possible to reason about complex systems. Being able to ignore parts of your codebase is the only way to make changes to it once it gets beyond a trivial size. The whole of the Unix philosophy is enforcing this policy of strong abstractions by making each part of a complex overall system its own binary, such that they can only communicate using the file I/O abstraction, possibly via pipe…

[deleted]

Section 7.19.3.
Post reply on HN