Sortix 0.9

This forums is for OS project announcements including project openings, new releases, update notices, test requests, and job openings (both paying and volunteer).
User avatar
sortie
Member
Member
Posts: 931
Joined: Wed Mar 21, 2012 3:01 pm
Libera.chat IRC: sortie

Sortix 0.9

Post by sortie »

I'd like to announce the availability of Sortix 0.9, a free Unix-like hobby operating system made from scratch.

Sortix is a small self-hosting Unix-like operating system developed since 2011 aiming to be a clean and modern POSIX implementation. There's a lot of technical debt that needs to be paid, but it's getting better. Traditional design mistakes are avoided or aggressively deprecated by updating the base system and ports as needed. The Sortix kernel, standard libraries, and most utilities were written entirely from scratch. The system is halfway through becoming multi-user and while security vulnerabilities are recognized as bugs, it should be considered insecure at this time.

This release is a very considerable improvement upon Sortix 0.8 and contains significant improvements all over the base system and ports. The previous release made Sortix self-building and this release works hard towards becoming fully self-hosting and installable. Several real-life prototype self-hosting installations of Sortix exists right now, I expect the following 1.0 release to make real Sortix installations available to the general public.

Highlights

This release contains a lot of notable new features:
  • Shell line editing, completion and history.
  • Pthreads.
  • Signals.
  • Unicode support.
  • Symbolic links.
  • Regression tests.
  • New utility programs.
  • New system interfaces.
  • Reduced memory consumption.
  • Same build system for native and cross building.
  • Incorporates Sortix libz, a clean fork of zlib.
  • Considerably improved ports tree.
  • And lot of miscellaneous improvements, cleaning up, and bug fixes.
For the full list of changes, see the CHANGES file in the release directory.

This release includes these ports of third party software: binutils, bison, bzip2, dash, diffutils, gawk, gcc, git, grep (GNU), gzip (GNU), hello (GNU), libffi, libgmp, libiconv, libmpc, libmpfr, libSDL, libstdc++, libz (GNU), make (GNU), patch (GNU), quake, sed (GNU), tar (GNU), and xz. More ports are available in source form only.

Installation and More Information

You can get more information about Sortix at the official website:

https://sortix.org/

You can download Sortix 0.9 for x86 or x86_64 from these locations:

https://users-cs.au.dk/~sortie/sortix/r ... .9/builds/

You can download the source code for this release (with or without included third party ports) at:

https://users-cs.au.dk/~sortie/sortix/r ... .9/source/

Or you can simply browse the git repository:

https://gitorious.org/sortix/sortix/source/sortix-0.9

Be sure to read the official user guide at:

/share/doc/user-guide
https://sortix.org/doc/user-guide
https://users-cs.au.dk/~sortie/sortix/r ... user-guide

Participation in Development

You can either attempt to develop the system using itself (not recommended) or by following this cross-development tutorial:

/share/doc/cross-development
https://sortix.org/doc/cross-development
https://users-cs.au.dk/~sortie/sortix/r ... evelopment

Development is coordinated in the #sortix IRC channel at irc.freenode.net

Missing Features

It's important to understand what limitations Sortix has. Most of these areas are being worked on, but their completion were cut from this release.
  • Lots of missing features in the shell.
  • No desktop environment with a graphical user interface.
  • No man pages (next release will use mdocml).
  • No mouse driver.
  • There is only a single terminal.
  • No SATA harddisk driver (support not merged yet).
  • No sound drivers.
  • No graphic drivers for real hardware.
  • No shared memory mapping mappings.
  • No networking except Unix sockets.
  • No Unicode font rendering (outside code page 437).
  • No proper terminal implementation (curses is not possible yet).
  • No real users and groups implementation.
  • No dynamic linking.
  • And a bunch of bugs.
Nonetheless, the underlying system is advanced and the standard library implements enough standard interfaces that has been possible to port a large amount of third party software.

Known Problems

There's a few important problems that you should know of:
  • GRUB may simply lock up with no message if you don't provide enough memory.
  • Quake save games doesn't work as printf doesn't support floating point numbers yet, you will be unable to load saved games.
Thanks

This release was primarily developed by me, but we'd like to thank all the people that helped test the release and gave advise.

Screenshot

Image
no92
Member
Member
Posts: 307
Joined: Wed Oct 30, 2013 1:57 pm
Libera.chat IRC: no92
Location: Germany
Contact:

Re: Sortix 0.9

Post by no92 »

Solid work - "except for a few bugs" :D

Is there any reason for which you don't use GitHub but Gitourious?
User avatar
Brynet-Inc
Member
Member
Posts: 2426
Joined: Tue Oct 17, 2006 9:29 pm
Libera.chat IRC: brynet
Location: Canada
Contact:

Re: Sortix 0.9

Post by Brynet-Inc »

Nice work sortie.
Image
Twitter: @canadianbryan. Award by smcerm, I stole it. Original was larger.
shikhin
Member
Member
Posts: 274
Joined: Sat Oct 09, 2010 3:35 am
Libera.chat IRC: shikhin
Contact:

Re: Sortix 0.9

Post by shikhin »

Hey,

Nice work, sortie!

=D>

Cheers,
Shikhin
http://shikhin.in/

Current status: Gandr.
User avatar
KemyLand
Member
Member
Posts: 213
Joined: Mon Jun 16, 2014 5:33 pm
Location: Costa Rica

Re: Sortix 0.9

Post by KemyLand »

Once Coreutils (easy), the GNU C Library (Oh my god...), the X Window System (WTF?!), and GNOME/XFCE/KDE ( :shock: ) are ported, you'll have all the full power of Unix \:D/ \:D/ \:D/.

Anyway, excellent work sortie, waiting for v0.10/1.0 [-o<

BTW, were does both the names sortie and thus sortie's Unix/sortix come from?
Happy New Code!
Hello World in Brainfuck :D:

Code: Select all

++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
[/size]
User avatar
max
Member
Member
Posts: 616
Joined: Mon Mar 05, 2012 11:23 am
Libera.chat IRC: maxdev
Location: Germany
Contact:

Re: Sortix 0.9

Post by max »

KemyLand wrote:Once Coreutils (easy), the GNU C Library (Oh my god...), the X Window System (WTF?!), and GNOME/XFCE/KDE ( :shock: ) are ported, you'll have all the full power of Unix \:D/ \:D/ \:D/.
Eeww, nobody wants glibc or the X window system =P~

Nice work sortie :)
User avatar
KemyLand
Member
Member
Posts: 213
Joined: Mon Jun 16, 2014 5:33 pm
Location: Costa Rica

Re: Sortix 0.9

Post by KemyLand »

max wrote:
KemyLand wrote:Once Coreutils (easy), the GNU C Library (Oh my god...), the X Window System (WTF?!), and GNOME/XFCE/KDE ( :shock: ) are ported, you'll have all the full power of Unix \:D/ \:D/ \:D/.
Eeww, nobody wants glibc or the X window system =P~
I don't like glibc, but it's almost essential to port everything GNU-related. X11 is just like Linux. It was tough to be small and efficient. Only one of them remainded; eventually the other one will disappear :( . (Let's go with Wayland :D)
Happy New Code!
Hello World in Brainfuck :D:

Code: Select all

++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
[/size]
User avatar
sortie
Member
Member
Posts: 931
Joined: Wed Mar 21, 2012 3:01 pm
Libera.chat IRC: sortie

Re: Sortix 0.9

Post by sortie »

Thanks guys. :D
no92 wrote:Is there any reason for which you don't use GitHub but Gitourious?
Gitorious is a free platform, unlike GitHub. That goes a bit better with the spirit of my project. Also, I use Gitorious for historical reasons. I may switch hosting provider in the future.
KemyLand wrote:Once Coreutils (easy), the GNU C Library (Oh my god...), the X Window System (WTF?!), and GNOME/XFCE/KDE ( :shock: ) are ported, you'll have all the full power of Unix \:D/ \:D/ \:D/.
No.

I reject that premise, and for good reasons. GNU's code really isn't that good. In fact, much of it is terrible. Coreutils, I did do a little port of it once - before I discarded it, isn't very impressive and pretty bloated. The same applies to GNU libc, which also suffers from a good long list of design mistakes, many of which I simply don't know, because I don't attempt to care.

I'm writing my own command line utilities, porting a few things I don't want to implement myself, and I'm writing my own standard library. The job isn't finished, of course, but I learned some very interesting things. My simple operating system is occasionally better. I'm not making the same silly mistakes, I'm designing the system and keeping it simple. I'm pretty confident I can realistically aspire to outcompeting GNU easily in terms of quality.

Don't buy into the illusion that using GNU code is a must. You say GNU libc is essential to port everything GNU related? You know why? I read the source code. It's because those projects are fucking awful and do things they really shouldn't. If you read ./configure scripts, you'll notice they sometimes actively discriminate against systems that don't output the magic GNU string in version checks.

I can do better, and will do better, by going my own path here. I'm not weighed down by compatibility or demands that my system stay the same (and thus stay awful). I'm picking the best bits of Unix and keeping them, and getting rid of anything that's awful. It's my “Embrace or Fight” principle. Either I adopt things and integrate them well, or I fight them all the way and replace them with something better. Do note every time you fight something, you must be willing to pay the price.

Don't assume using X is a necessity, or GNOME/XFCE/KDE, or systemd, or any other must-haves. I'll adopt it if it's good, or likely, do my own better thing. You can do better if you go the hard route. I don't treat ports as something separate from the core system, which I just have to keep happy. I consider them parts of my system, and if they're awful, so is my system. I got a lot of GNU code in this release, and a lot of it is awful. Let's do better.
KemyLand wrote:Anyway, excellent work sortie, waiting for v0.10/1.0 [-o<
It'll be 1.0 next time, btw. That's what the numbers tell me.
KemyLand wrote:BTW, were does both the names sortie and thus sortie's Unix/sortix come from?
Sortix is really just Sortie with an X at the end instead. Sortie is the danish word for black with some letters appended. I like the name Sortix for my OS.
User avatar
KemyLand
Member
Member
Posts: 213
Joined: Mon Jun 16, 2014 5:33 pm
Location: Costa Rica

Re: Sortix 0.9

Post by KemyLand »

sortie wrote: I reject that premise, and for good reasons. GNU's code really isn't that good. In fact, much of it is terrible. Coreutils, I did do a little port of it once - before I discarded it, isn't very impressive and pretty bloated. The same applies to GNU libc, which also suffers from a good long list of design mistakes, many of which I simply don't know, because I don't attempt to care.

I'm writing my own command line utilities, porting a few things I don't want to implement myself, and I'm writing my own standard library. The job isn't finished, of course, but I learned some very interesting things. My simple operating system is occasionally better. I'm not making the same silly mistakes, I'm designing the system and keeping it simple. I'm pretty confident I can realistically aspire to outcompeting GNU easily in terms of quality.

Don't buy into the illusion that using GNU code is a must. You say GNU libc is essential to port everything GNU related? You know why? I read the source code. It's because those projects are fucking awful and do things they really shouldn't. If you read ./configure scripts, you'll notice they sometimes actively discriminate against systems that don't output the magic GNU string in version checks.

I can do better, and will do better, by going my own path here. I'm not weighed down by compatibility or demands that my system stay the same (and thus stay awful). I'm picking the best bits of Unix and keeping them, and getting rid of anything that's awful. It's my “Embrace or Fight” principle. Either I adopt things and integrate them well, or I fight them all the way and replace them with something better. Do note every time you fight something, you must be willing to pay the price.

Don't assume using X is a necessity, or GNOME/XFCE/KDE, or systemd, or any other must-haves. I'll adopt it if it's good, or likely, do my own better thing. You can do better if you go the hard route. I don't treat ports as something separate from the core system, which I just have to keep happy. I consider them parts of my system, and if they're awful, so is my system. I got a lot of GNU code in this release, and a lot of it is awful. Let's do better.
Really good reasons. I follow that same path, it's just that I though you were one of those GNU religious #-o . Let's sacrify the GNU :mrgreen: :mrgreen: :mrgreen: . BTW, where does that logo of yours comes from. It's a kind of cat or what?
Happy New Code!
Hello World in Brainfuck :D:

Code: Select all

++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
[/size]
User avatar
cormacobrien
Posts: 13
Joined: Thu Oct 02, 2014 6:24 pm
Location: Chicago

Re: Sortix 0.9

Post by cormacobrien »

If you're looking for a readline replacement, NetBSD has Editline under a more permissive BSD license, plus I think it's smaller.

Musl is a fantastic minimal libc. It's designed as a glibc replacement so there's probably some functionality to strip out.

Good luck with development going forward!
Find me on Github and Bitbucket.
User avatar
sortie
Member
Member
Posts: 931
Joined: Wed Mar 21, 2012 3:01 pm
Libera.chat IRC: sortie

Re: Sortix 0.9

Post by sortie »

KemyLand wrote:BTW, where does that logo of yours comes from. It's a kind of cat or what?
It's a stylish cat, yes. I might just share the story another time.
cormacobrien wrote:If you're looking for a readline replacement, NetBSD has Editline under a more permissive BSD license, plus I think it's smaller.

Musl is a fantastic minimal libc. It's designed as a glibc replacement so there's probably some functionality to strip out.

Good luck with development going forward!
Thanks! I haven't looked into libeditline. Is it API compatible with GNU's libreadline? I already follow musl, it's nice. I don't want it to the libc of my OS, but I certainly trust it to be a great Linux libc. dalias makes good decisions.
Antti
Member
Member
Posts: 923
Joined: Thu Jul 05, 2012 5:12 am
Location: Finland

Re: Sortix 0.9

Post by Antti »

This is the best project in this genre.

One little story. I thought that why not, let's try Sortix on few test computers. I did not have a writable optical drive so I needed to burn the ISO on a computer that was not my own. Let's just download the ISO and burn it using Windows. Oh no! I could not extract the xz package! Please release the 1.0 ISO so that everyone can open and burn it.
Octocontrabass
Member
Member
Posts: 5513
Joined: Mon Mar 25, 2013 7:01 pm

Re: Sortix 0.9

Post by Octocontrabass »

Antti wrote:Oh no! I could not extract the xz package!
Here, try this.
User avatar
sortie
Member
Member
Posts: 931
Joined: Wed Mar 21, 2012 3:01 pm
Libera.chat IRC: sortie

Re: Sortix 0.9

Post by sortie »

Excellent compression is crucial to having Sortix releases of manageable size. The xz compression program very much wins against its competition (gzip, bzip2) by providing files half the size, a very significant gain. It's 2015, xz has won the battle of Unix compression, and even Windows software (7-zip) can decompress it. It's even present in Sortix 0.9. ;-) If you can't decompress it, I'll blame you for using bad software.

But I believe there's a better solution. I'll simply make the kernel or bootloader decompress the ramdisk. This way, I get the benefits of compression, but also the property that I can release raw .iso files that don't need to be decompressed.
User avatar
KemyLand
Member
Member
Posts: 213
Joined: Mon Jun 16, 2014 5:33 pm
Location: Costa Rica

Re: Sortix 0.9

Post by KemyLand »

sortie wrote:Excellent compression is crucial to having Sortix releases of manageable size. The xz compression program very much wins against its competition (gzip, bzip2) by providing files half the size, a very significant gain. It's 2015, xz has won the battle of Unix compression, and even Windows software (7-zip) can decompress it. It's even present in Sortix 0.9. ;-) If you can't decompress it, I'll blame you for using bad software.

But I believe there's a better solution. I'll simply make the kernel or bootloader decompress the ramdisk. This way, I get the benefits of compression, but also the property that I can release raw .iso files that don't need to be decompressed.
Just don't do what Linux does (decompress itself with a stub :roll: ). That would make debugging impossible, and would require a lot of black magic and games with the ELF format.

Personally, (although you didn't said anything about it) I prefer to have only drivers and executables on the ramdisk, and assets and that kind of stuff somewhere in a ext* filesystem 8)
Happy New Code!
Hello World in Brainfuck :D:

Code: Select all

++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
[/size]
Post Reply