The idea is to take all the concepts we like about UNIX and iterate on them. It's UNIX as if it was invented now. For example, let's have a C compiler but let's add lambda and a more complete type system. Or let's have a shell, but let's have full ide like autocomplete to it. Or instead of plain text, let's use JSON
Any chance of bringing in Plan9 type ideas/concepts? Ie being able to mount remote compute resources similar to mounting file systems in UNIX? (As the one real plan9-ism in mind at the moment.)
A language like C but with lambdas isn't really C, not that that's a bad thing.
I was a little surprised that a compiler was in scope given the amount of other work that needed to be written and (hopefully) supported, though I guess that's a different issue.
Someone somewhere once likened UNIX to the OS version of C to me, or something like that. There's also the various books on UNIX from those days.
My question though was more about rust as a language. Does it have a golden standard introduction to it like C does. Not 'some sort of requirement', but genuine interest in a clear path to learn the language.
> My question though was more about rust as a language. Does it have a golden standard introduction to it like C does.
You'd have to be specific. If you are looking for simplicity, nothing will ever beat C, but just because a languague is simple doesn't mean it's easy to program. See Brainfuck.
Generally Rust Book is considered a gold standard, but I rarely read them unless I am truly at a loss what next.
Honestly the amount of crazy code involved in Linux font rendering[1], and then you get to CJKV support[2], it's mind-boggling. Even then, it's nowhere near as good as macOS :-/
Can you expand on that a little? I know a little bit about how Windows and macOS handle font rendering, but I know nothing about how Linux does things.
It looks cool but the keyboard is almost square, making it difficult to touch the keys in the top row while still resting your hands. A flat aspect ratio (like most keyboards have) would be better. It's easier to move your fingers over large distances horizontally than vertically; see also the piano keyboard.
You know what you're doing right now. Stop it. We are not dainty wristed aliens yet. I love velcro shoes and elastic waistbands as much as the next guy, but this is bordering on comedy. How do you people lift a coffee cup with a straight face while saying this type of stuff?
You're right. Lifting a coffee cup with poor ergonomics isn't going to cause any injuries. Typing for hundreds of hours over many years in a poor position can lead to problems such as RSI.
I'm raising valid disagreement in good faith. I don't think I will.
> We are not dainty wristed aliens yet. I love velcro shoes and elastic waistbands as much as the next guy, but this is bordering on comedy. How do you people lift a coffee cup with a straight face while saying this type of stuff?
While I'm glad your massive hulk wrists are totally immune to RSI, the rest of us mere mortals have to deal with ergonomic issues if we spend any significant time on a keyboard. It's not a matter of strength; lifting a coffee cup once is fine, lifting it a thousand times a day at increasingly awkward angles is a lovely recipe for injury.
I believe that is a Soviet Project SPHINX system - a design for a smart home network that never actually got produced due to the fall of the Soviet Union.
Even if it only involves stuffing a raspberry pi into something, I want to yell at someone over the phone from my penthouse office in front of that thing while 80s power-montage music plays.
This is really awesome. I'll definitely be following the development of this OS!
You figure you'll keep with the bleeding edge C standards for the future?
Also, if someone wanted to build compatibility layers out to other FOSS OSes into the system somewhere would that be tolerated? For example drivers from other OSes could massively improve quality of life and usability.
Thanks for the prompt response and +1 for me. But... why spell this out _here_? Add that info to your documentation. For a new OS to be adopted, good documentation is probably even more important than good performance :-P
I see mostly syntactic sugar and a few adoptions from POSIX; and C17 didn't change much either. So, for me, this is basically C11 - which I still find very modern and does not seem that widely adopted TBH. So good on you. (But make sure to support code in older C standard versions.)
Also, I doubt that it is really a good idea to reimplement libc. I would assume taking on even more work than the already huge effort that is an OS would either slow you down or reduce quality. IIRC, when Linux got started, Torvalds ported gcc along with glibc and also bash. Could you explain your choice of a different direction?
There's a lot to be said for ideas which hit it so "on the nail" in the IT world that they manage to stick around for so many decades. An alternative take, too, could be basing an OS on bleeding edge C23 and new releases into the future should act as something of a modern baseline of the UNIX standard. That could be used as a starting point or comparison for future OS development.
Or, perhaps at worst, it probably makes the developers very aware of how the current *nix flavors could be improved from the lowest levels on up.
73 comments
[ 3.0 ms ] story [ 158 ms ] thread1: https://brutal.smnx.sh/articles/milestone-1
2: https://brutal.smnx.sh/articles/milestone-2
3: https://brutal.smnx.sh/articles/milestone-3
They're not only redesigning the OS, they're also redesigning the calendar (and font kerning too, it seems)
Glad to see new OS design in 2022!
Any chance of bringing in Plan9 type ideas/concepts? Ie being able to mount remote compute resources similar to mounting file systems in UNIX? (As the one real plan9-ism in mind at the moment.)
I was a little surprised that a compiler was in scope given the amount of other work that needed to be written and (hopefully) supported, though I guess that's a different issue.
At that point, why not just use Rust?
I don't see why it's some sort of requirement.
My question though was more about rust as a language. Does it have a golden standard introduction to it like C does. Not 'some sort of requirement', but genuine interest in a clear path to learn the language.
You'd have to be specific. If you are looking for simplicity, nothing will ever beat C, but just because a languague is simple doesn't mean it's easy to program. See Brainfuck.
Generally Rust Book is considered a gold standard, but I rarely read them unless I am truly at a loss what next.
https://doc.rust-lang.org/book/
You can implement it and it's a bit harder in Rust https://rust-unofficial.github.io/too-many-lists/index.html
The C standard working group is currently debating whether to add lambdas to the language:
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2924.pdf
https://en.wikipedia.org/wiki/Blocks_(C_language_extension)
Given KenC, I was amused to see that Brutal has its own C variant too!
[1] https://gitlab.gnome.org/GNOME/pango & https://github.com/harfbuzz/harfbuzz
[2] https://www.amazon.co.uk/CJKV-Information-Processing-Ken-Lun...
https://www.reddit.com/r/DesignPorn/comments/ei1pa8/sphinx_s...
https://kbd.news/Project-Sphinx-711.html
I'm raising valid disagreement in good faith. I don't think I will.
> We are not dainty wristed aliens yet. I love velcro shoes and elastic waistbands as much as the next guy, but this is bordering on comedy. How do you people lift a coffee cup with a straight face while saying this type of stuff?
While I'm glad your massive hulk wrists are totally immune to RSI, the rest of us mere mortals have to deal with ergonomic issues if we spend any significant time on a keyboard. It's not a matter of strength; lifting a coffee cup once is fine, lifting it a thousand times a day at increasingly awkward angles is a lovely recipe for injury.
https://www.inexhibit.com/case-studies/project-sphinx-when-t...
Also the C code is pretty interesting, I like that its built up result types and generic types but also in c, very cool, if not a little bit wild :)
I wish they prove me wrong.
It as already has some neat feature like C2json
But we should not get ahead of ourselves, let's wait for them to fully self-bootstrap 'brutal' with their toolchain.
https://blog.adafruit.com/2021/12/13/project-sphinx-when-the...
I wonder where we would be now if that had gone according to plan.
Modern as in C11?
> BRUTAL is built on top of a capabilty based micro-kernel.
Their own, or somebody else's? Why can't they just say which?
> BRUTAL targets x86_64, i686, RISC-V and ARM.
Ok, a decent set of targets, certainly for starting out with.
> BRUTAL exposes its features to developers through clean APIs.
Which are listed where?
> BRUTAL features a rich and modern C library complete with fibers, custom allocators, generic data structures, and more...
Did they reimplement the entire C library? Added a backed/port for an existing library?
I like Brutalism in design, don't like Minimalism in documentation.
https://duckduckgo.com/?q=brutalism&t=ffab&iar=images&iax=im...
> Modern as in C11?
As in bleeding-edge C23
> Their own, or somebody else's? Why can't they just say which?
Our own
> Which are listed where?
We have a Doxygen doc but it's not published yet.
> Did they reimplement the entire C library?
Yes
Hopes this answers your questions
You figure you'll keep with the bleeding edge C standards for the future?
Also, if someone wanted to build compatibility layers out to other FOSS OSes into the system somewhere would that be tolerated? For example drivers from other OSes could massively improve quality of life and usability.
> As in bleeding-edge C23
Well... looking at what's coming C23: https://en.cppreference.com/w/c/23
I see mostly syntactic sugar and a few adoptions from POSIX; and C17 didn't change much either. So, for me, this is basically C11 - which I still find very modern and does not seem that widely adopted TBH. So good on you. (But make sure to support code in older C standard versions.)
Also, I doubt that it is really a good idea to reimplement libc. I would assume taking on even more work than the already huge effort that is an OS would either slow you down or reduce quality. IIRC, when Linux got started, Torvalds ported gcc along with glibc and also bash. Could you explain your choice of a different direction?
Or, perhaps at worst, it probably makes the developers very aware of how the current *nix flavors could be improved from the lowest levels on up.