Most active commenters
  • WalterBright(5)

←back to thread

520 points OlympicMarmoto | 11 comments | | HN request time: 0s | source | bottom
Show context
jnwatson ◴[] No.45067216[source]
I've written a lot of low level software, BSPs, and most of an OS, and the main reason to not write your own OS these days is silicon vendors. Back in the day, they would provide you a spec detailed enough that you could feasibly write your own drivers.

These days, you get a medium-level description and a Linux driver of questionable quality. Part of this is just laziness, but mostly this is a function of complexity. Modern hardware is just so complicated it would take a long time to completely document, and even longer to write a driver for.

replies(13): >>45067491 #>>45069282 #>>45069287 #>>45069349 #>>45069690 #>>45070345 #>>45071036 #>>45071086 #>>45072259 #>>45072391 #>>45073789 #>>45075476 #>>45081942 #
dist1ll ◴[] No.45070345[source]
Intel still does it. As far as I can see they're the only player in town that provide open, detailed documentation for their high-speed NICs [0]. You can actually write a driver for their 100Gb cards from scratch using their datasheet. Most other vendors would either (1) ignore you, (2) make you sign an NDA or (3) refer you to their poorly documented Linux/BSD driver.

Not sure what the situation is for other hardware like NVMe SSDs.

[0] 2750 page datasheet for the e810 Ethernet controller https://www.intel.com/content/www/us/en/content-details/6138...

replies(4): >>45070705 #>>45071380 #>>45072199 #>>45076796 #
throwaway2037 ◴[] No.45072199[source]
Wow... that PDF is 2,750 pages! There must be an army of technical writers behind it. That is an incredible technical achievement.

Real question: Why do you think Intel does this? Does it guarantee a very strong foothold into data center NICs? I am sure competitors would argue two different angles: (1) this PDF shares too much info; some should be hidden behind an NDA, (2) it's too hard to write (and maintain) this PDF.

replies(9): >>45072325 #>>45072561 #>>45072665 #>>45073187 #>>45073195 #>>45073339 #>>45075185 #>>45076049 #>>45076880 #
1. WalterBright ◴[] No.45073339{3}[source]
I may be the only person who ever understood every detail of C++, starting with the preprocessor. I can make that claim because I'm the only person who ever implemented all of it. (You cannot really know a language until you've implemented it.) I gave up on that in the 2000's. Modern C++ is simply terrifying in its complexity.

(I'm not including the C++ Standard Library, as I didn't implement it.)

replies(4): >>45073884 #>>45076201 #>>45077194 #>>45083146 #
2. WalterBright ◴[] No.45073884[source]
P.S. we're adding an "Editions" feature to D so we can simplify the language by removing obsolete and deadend features. We didn't get everything right, and want to fix it!
replies(1): >>45074864 #
3. metaltyphoon ◴[] No.45074864[source]
This is one thing Rust did it right and I hope more languages adopt this.
4. cornstalks ◴[] No.45076201[source]
You've done some great work but I have to call BS with this claim:

> I'm the only person who ever implemented all of it.

Sean Baxter is an easy counter example.

replies(1): >>45076767 #
5. WalterBright ◴[] No.45076767[source]
I don't know much of anything about him. Did he implement the preprocessor? the optimizer? the code generator?

(For some context, back in the 80's, code generators needed enhancements to implement C++. You couldn't just use an existing one. Bjarne had to do some ugly workarounds because of this.)

replies(1): >>45077753 #
6. Conscat ◴[] No.45077194[source]
Sean Baxter single-handedly implemented all of up to C++23, and some C++26, including a huge number of GNU extensions and possibly an even larger number of his own features.
replies(1): >>45078216 #
7. tux3 ◴[] No.45077753{3}[source]
Sean Baxter's circle compiler uses LLVM as a backend, but I believe the rest is from scratch.

Arguably these days having a clear frontend/backend separation is good compiler architecture. It might slow down compile times a bit, but it's worth the cost.

replies(2): >>45077952 #>>45078541 #
8. WalterBright ◴[] No.45077952{4}[source]
It wouldn't have made much sense to write the preprocessor these days, too, but it is part of the C++ compiler. Unless integrating it with the C++ lexer for speed purposes, as I did.
9. WalterBright ◴[] No.45078216[source]
Impressive!
10. vkazanov ◴[] No.45078541{4}[source]
So it sounds like he wrote the frontend of a cpp compiler? There's a lot of work in other layers as well.
11. ezoe ◴[] No.45083146[source]
Now, who can claim such bold... oh, it's YOU.