Brutal OS reached milestone 4(brutal.smnx.sh)
brutal.smnx.sh
Brutal OS reached milestone 4
https://brutal.smnx.sh/articles/milestone-4
74 comments
That kerning on that "hello world" vector font demo though
In this case, keming is a more appropriate term.
My favourite patch note of all time is from Path of Exile and reads simply “Fixed keming.”
You mean letter spacing? It looks like there is no kerning going on.
Yeah kerning is still WIP
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 :-/
[1] https://gitlab.gnome.org/GNOME/pango & https://github.com/harfbuzz/harfbuzz
[2] https://www.amazon.co.uk/CJKV-Information-Processing-Ken-Lun...
[1] https://gitlab.gnome.org/GNOME/pango & https://github.com/harfbuzz/harfbuzz
[2] https://www.amazon.co.uk/CJKV-Information-Processing-Ken-Lun...
If it had kerning, then would it still be brutalist?
> BRUTAL is an operating system built from scratch in modern C.
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?
> 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...
Hi,
Sorry if our doc is not fully fleshed out yet, the project is still in the early stages, and APIs and idioms keep changing rapidly.
> 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
> 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
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.
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
> 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?
> 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?
It's cool and all that there seem to be more alternative OSes gaining momentum recently with things like this and SerenityOS and it's definitely impressive how much work people have put into them, but I can't for the life of me understand why you would go through the massive task of trying to make your own OS and then just copy Unix. These are 60 year old ideas that were largely born out of hardware constraints -- we have the ability to experiment with different design ideas now.
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.
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.
Is there a discord server or where does community gathers? This projects seems really cool and I would like to contribute.
Not Brutal enough. We have rounded corners in the UI.
[deleted]
It’s not UNIX but it “is” UNIX? That’s kind of all I got out of the about.
Glad to see new OS design in 2022!
Glad to see new OS design in 2022!
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
What (if any) is the overlap with Plan9 (and its various forks and derivatives, including Inferno)?
Given KenC, I was amused to see that Brutal has its own C variant too!
Given KenC, I was amused to see that Brutal has its own C variant too!
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.
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.
> A language like C but with lambdas isn't really C, not that that's a bad thing.
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
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
It's not standard, but Blocks (w/ clang & compiler-rt) have been around in C for a while.
https://en.wikipedia.org/wiki/Blocks_(C_language_extension)
https://en.wikipedia.org/wiki/Blocks_(C_language_extension)
> A language like C but with lambdas isn't really C, not that that's a bad thing.
At that point, why not just use Rust?
At that point, why not just use Rust?
Because I might, in some conceivable future, wish to implement that obscure data structure the doubly-linked list.
Shrug. And?
You can implement it and it's a bit harder in Rust https://rust-unofficial.github.io/too-many-lists/index.html
You can implement it and it's a bit harder in Rust https://rust-unofficial.github.io/too-many-lists/index.html
Does rust have an equivalent to the classic KR book?
Did Unix? Does C with lambdas has its K&R?
I don't see why it's some sort of requirement.
I don't see why it's some sort of requirement.
After K&R 2nd Ed. (ANSI C) and Modern C (C99) you can do a lot.
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. 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.
https://doc.rust-lang.org/book/
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/
Sick. How far along is it?
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.)
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.)
We are still early in development; it still lacks proper filesystem and networking support
What is that hardware in the cover image? Is it even real?
It was a design study from Soviet Union in I think 1980s, but no real hardware got built.
In most modern browsers you can right click an image and send it to Google to reverse image search it for you.
https://www.reddit.com/r/DesignPorn/comments/ei1pa8/sphinx_s...
https://kbd.news/Project-Sphinx-711.html
https://www.reddit.com/r/DesignPorn/comments/ei1pa8/sphinx_s...
https://kbd.news/Project-Sphinx-711.html
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.
[deleted]
0des(1)
The OS looks quite interesting, but the GUI library caught my attention - hope there are plans to make it available separately.
They said it runs on macOS and linux, so I would assume so
The gui library is able to be used on Linux. But For the moment we can’t do hardware acceleration (but it is still really fast without it).
Are you planning on supporting Vulkan?
That Soviet PC though... Shame we'll never see it.
What is it, thought it was a render?
That's Project SPHINX:
https://www.inexhibit.com/case-studies/project-sphinx-when-t...
vv cool! I got it to build and run except I couldnt get the mouse to move, but still seems very neat. Hope I can try contributing a bit!
Where is their "brutal toolchain" (not GNU, not LLVM) able to bootstrap build their OS from kernel to user space? (sarcasm).
I wish they prove me wrong.
I wish they prove me wrong.
Working on it https://github.com/brutal-org/brutal/tree/main/sources/libs/...
It as already has some neat feature like C2json
It as already has some neat feature like C2json
They are doing it the right way.
But we should not get ahead of ourselves, let's wait for them to fully self-bootstrap 'brutal' with their toolchain.
But we should not get ahead of ourselves, let's wait for them to fully self-bootstrap 'brutal' with their toolchain.
Very cool project, and i want that hardware badly... But... Please add some margin on your article before someone gets hurt
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.
https://blog.adafruit.com/2021/12/13/project-sphinx-when-the...
https://blog.adafruit.com/2021/12/13/project-sphinx-when-the...
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.
That's amazing! I didn't even know displays like that existed at the time.
I wonder where we would be now if that had gone according to plan.
I wonder where we would be now if that had gone according to plan.
I love this.