- Joined
- Dec 12, 2022
Hey, @Markass the Worst, install a poll about the nature of Drew DeVault's fiancee. My guess is Drew himself was in the shark suit.
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
I can't, only jannies have that permission.Hey, @Markass the Worst, install a poll about the nature of Drew DeVault's fiancee. My guess is Drew himself was in the shark suit.
The new fad in languages is features that make no fucking sense. Just look at zig's result location semantics.Didn't he say that Hare was basically done? Man, imagine if the language had some kind of extension facility, so that it could go 100 years without language revisions - that'd be wild, I wonder if such a thing is even possible.
I had to look up what "a done type" is, and while the docs don't appear to define it anywhere (yet?), it seems to be just a built-in type that loops treat specially. Hare really is just C, but the things that pissed Drew off get special syntax.
Actually the more I think about it, the less the done type thing makes sense. As far as I understand, in Hare the types((x | done) | done)
andy | done
(wherey = x | done
) are different since the first one has only one done state and the second has two. Butio::EOF = done
, so why isstr | io::EOF
a done type? Does that mean an iterator can't return things of typestr | io::EOF
? Do you have to first definez = str | io::EOF
so that an iterator can returnz
instead?
The depressing part is that the definition of "Result Location Semantics" was necessary. Why is it necessary? Because it was an implicit feature. At first Zig was a normal language, say, you wanted to cast an integer, you could doThe new fad in languages is features that make no fucking sense. Just look at zig's result location semantics.
var x: u16 = @intCast(y, u16);
which is very intuitive if you ask me. You can even use the cast result in bigger expressions or shorten your assignment to var x = @intCast(y, u16);
var x: u16 = @intCast(y);
and Zig figured out at compile time which int you wanted y to be cast to. Now they formalized that. Dumb behavior in the first place if you ask me.This is fucking weird. So the iterator can only returnActually the more I think about it, the less the done type thing makes sense. As far as I understand, in Hare the types((x | done) | done)
andy | done
(wherey = x | done
) are different since the first one has only one done state and the second has two. Butio::EOF = done
, so why isstr | io::EOF
a done type? Does that mean an iterator can't return things of typestr | io::EOF
? Do you have to first definez = str | io::EOF
so that an iterator can returnz
instead?
(x | done)
? What about errors? To me it means my function has to panic or it has to be part of x and the first thing the loop does is check for the error. foreach being able to react to errors would be better. Even the example is retarded because the error gets discarded.Errors are bloat, folks. Everyone knows that. I thought these had been lost to time by now, but I'll share some of his stupid opinions on programming languages that were mocked when they were fresh.This is fucking weird. So the iterator can only return(x | done)
? What about errors? To me it means my function has to panic or it has to be part of x and the first thing the loop does is check for the error. foreach being able to react to errors would be better. Even the example is retarded because the error gets discarded.
You see, your dependencies are (He'll ignore that he uses a parser generator, compiler backend, and other things others have written, because those don't count towards complexity in his mind.
What is better? A 1 million LoC codebase of very low complexity per line of code or one that achieves the same in 1k LoC? It depends.
Rule of thumb: Only ride on aircraft you are comfortable to construct yourself. Or don't use computers you can't create yourself. Drew, this is a vanity project and nothing about the good for programmers.Now, when he writes this advice, he never means a language such as Forth, which has been and can be implemented in a handful of machine instructions, measured in kilobytes at most; no, he always means the C language, and more recently Hare.
x | y | y
had two distinct y
states, those y
states couldn't be distinguished by type. But they can if you first define z = x | y
because z
gets a different type ID. Saves the compiler writer a few hours, at the bargain price of fucking over every user of the language forever.I worded it a bit weirdly, but what Hare does is notably not how an actual sum type works - those could be implemented the way your second paragraph described. "What's good isn't new, and what's new isn't good" feels appropriate here. I'dI think I understood the "idea" behind these sum types now and why it is so weird. It's like taking all downsides of structs and unions in C and mashing them together, it's a data structure that can hold one only member (like a union) but takes more space to store the type (like a struct), and it can't hold two different states like you said (because its basically a union with a flag).
Actually I believe C could do (x | y | y) with a single union and a typedef, and you can store the flag with it, as a struct of an enum/integer and said union.
C zealots keep winning.
Probably Stallman, though it could be the founder of HN as well.Does anyone know who he's talking about? This is on his burnout post (https://archive.ph/dEJuL), but these type of extreme allegations aren't really in there.
Probably Stallman, though it could be the founder of HN as well.
Rape and death had come to our community, and was kept silent. But I am a principled person, and I stand for what is right; I spoke the truth and it brought me and my loved ones agonizing stress and trauma and shook our community to the core. Board members resigned. Marriages are on the rocks. When the dust settled, I was initially uncomfortable staying in this community, but things eventually started to get better. Until another member of this community, someone I trusted and thought of as a friend, confessed to me that he had raped multiple women a few years ago. I submitted my resignation from this community last night.
I had two trains of thought on it.So maybe that refers to the same. idk. It's all very unspecific.
So it's different from his Helix microkernel and Ares OS project, huh?It's called Bunnix.
Honestly, it sounds more like a proof-of-concept or hobby project. Those don't need to do anything better than existing solutions.But the obvious question is, why? I understand the desire to make your own stuff, if I was smart enough (with enough free time) I'd like to make my own toy OS too. What I can't figure out is, what does this do differently enough from other tiny distros to be worth doing? What is Drew trying to learn or improve? He seems familiar enough with each piece of the OS that it didn't cause him problems, but he hasn't cited anything he made better.
I'm gonna shock the system. I'm gonna show the chuds.Drew has spent the last three weeks "speedrunning" the development of a new OS, written in Hare.
View attachment 5985733
Last week he got userspace and the shell running,
View attachment 5985741
View attachment 5985743
Today he posted a video showing it running, with login and utilities. It's called Bunnix. He also posted an ISO but I'm not running random catbox files to check it out.
View attachment 5985757
You can scroll up the linked posts to see a ton of daily updates on specific things he implemented. I briefly scanned through it, looks legit, and it doesn't seem like Hare blocked him anywhere. Good for him.
But the obvious question is, why? I understand the desire to make your own stuff, if I was smart enough (with enough free time) I'd like to make my own toy OS too. What I can't figure out is, what does this do differently enough from other tiny distros to be worth doing? What is Drew trying to learn or improve? He seems familiar enough with each piece of the OS that it didn't cause him problems, but he hasn't cited anything he made better.
It's probably just a proof of concept for Hare, which is fair enough, and still a nice achievement. But was anyone considering Hare seriously enough to say "I wonder if I can write an OS with that thing"?
Presumably so, I didn't see mention of them in any post from the last 3 weeks.So it's different from his Helix microkernel and Ares OS project, huh?
Agreed, but usually when I do projects like this, I'm trying to learn something or prove something. There doesn't have to be a groundbreaking justification for "make an imageboard in Gopher", or "port Doom to NeoVim", but usually there's a mission statement at the start.Honestly, it sounds more like a proof-of-concept or hobby project. Those don't need to do anything better than existing solutions.
It doesn't matter, you don't need a reason. Good for him.But the obvious question is, why? I understand the desire to make your own stuff, if I was smart enough (with enough free time) I'd like to make my own toy OS too. What I can't figure out is, what does this do differently enough from other tiny distros to be worth doing? What is Drew trying to learn or improve? He seems familiar enough with each piece of the OS that it didn't cause him problems, but he hasn't cited anything he made better.
ed
unironically (despite it being the standard text editor).