This makes it an error to not do something with a returned smart pointer, which should help prevent mistakes. In cases where you do need to ignore the value, casting to void will placate the compiler. I did have to add comments to disable clang-format on a couple of lines, where it wanted to format the code like this: ```c++ private : NonnullRefPtr() = delete; ``` |
||
---|---|---|
.github | ||
AK | ||
Base | ||
Documentation | ||
Kernel | ||
Meta | ||
Ports | ||
Tests | ||
Toolchain | ||
Userland | ||
.clang-format | ||
.clang-tidy | ||
.gitattributes | ||
.gitignore | ||
.mailmap | ||
.pre-commit-config.yaml | ||
.prettierignore | ||
.prettierrc | ||
azure-pipelines.yml | ||
CMakeLists.txt | ||
CONTRIBUTING.md | ||
LICENSE | ||
README.md |
SerenityOS
Graphical Unix-like operating system for x86 computers.
About
SerenityOS is a love letter to '90s user interfaces with a custom Unix-like core. It flatters with sincerity by stealing beautiful ideas from various other systems.
Roughly speaking, the goal is a marriage between the aesthetic of late-1990s productivity software and the power-user accessibility of late-2000s *nix. This is a system by us, for us, based on the things we like.
I (Andreas) regularly post raw hacking sessions and demos on my YouTube channel.
Sometimes I write about the system on my github.io blog.
I'm also on Patreon and GitHub Sponsors if you would like to show some support that way.
Screenshot
Kernel features
- x86 (32-bit) and x86_64 (64-bit) kernel with pre-emptive multi-threading
- Hardware protections (SMEP, SMAP, UMIP, NX, WP, TSD, ...)
- IPv4 stack with ARP, TCP, UDP and ICMP protocols
- ext2 filesystem
- POSIX signals
- Purgeable memory
- /proc filesystem
- Pseudoterminals (with /dev/pts filesystem)
- Filesystem notifications
- CPU and memory profiling
- SoundBlaster 16 driver
- VMWare/QEMU mouse integration
System services
- Launch/session daemon (SystemServer)
- Compositing window server (WindowServer)
- Text console manager (TTYServer)
- DNS client (LookupServer)
- Network protocols server (RequestServer and WebSocket)
- Software-mixing sound daemon (AudioServer)
- Desktop notifications (NotificationServer)
- HTTP server (WebServer)
- Telnet server (TelnetServer)
- DHCP client (DHCPClient)
Libraries
- C++ templates and containers (AK)
- Event loop and utilities (LibCore)
- 2D graphics library (LibGfx)
- OpenGL 1.x compatible library (LibGL)
- GUI toolkit (LibGUI)
- Cross-process communication library (LibIPC)
- HTML/CSS engine (LibWeb)
- JavaScript engine (LibJS)
- Markdown (LibMarkdown)
- Audio (LibAudio)
- Digital Signal Processing/Synthesizer Chains (LibDSP)
- PCI database (LibPCIDB)
- Terminal emulation (LibVT)
- Out-of-process network protocol I/O (LibProtocol)
- Mathematical functions (LibM)
- ELF file handling (LibELF)
- POSIX threading (LibPthread)
- Higher-level threading (LibThreading)
- Transport Layer Security (LibTLS)
- HTTP and HTTPS (LibHTTP)
- IMAP (LibIMAP)
Userland features
- Unix-like libc and userland
- Shell with pipes and I/O redirection
- On-line help system (both terminal and GUI variants)
- Web browser (Browser)
- C++ IDE (HackStudio)
- Desktop synthesizer (Piano)
- E-mail client (Mail)
- Various desktop apps & games
- Color themes
How do I read the documentation?
Man pages are available online at man.serenityos.org. These pages are generated from the Markdown source files in Base/usr/share/man
and updated automatically.
When running SerenityOS you can use man
for the terminal interface, or help
for the GUI.
How do I build and run this?
See the SerenityOS build instructions
Before opening an issue
Please see the issue policy.
FAQ: Frequently Asked Questions
Get in touch
Join our Discord server: SerenityOS Discord
Author
- Andreas Kling - awesomekling
Contributors
- Robin Burchell - rburchell
- Conrad Pankoff - deoxxa
- Sergey Bugaev - bugaevc
- Liav A - supercomputer7
- Linus Groh - linusg
- Ali Mohammad Pur - alimpfard
- Shannon Booth - shannonbooth
- Hüseyin ASLITÜRK - asliturk
- Matthew Olsson - mattco98
- Nico Weber - nico
- Brian Gianforcaro - bgianfo
- Ben Wiederhake - BenWiederhake
- Tom - tomuta
- Paul Scharnofske - asynts
- Itamar Shenhar - itamar8910
- Luke Wilde - Lubrsi
- Brendan Coles - bcoles
- Andrew Kaster - ADKaster
- thankyouverycool - thankyouverycool
- Idan Horowitz - IdanHo
- Gunnar Beutner - gunnarbeutner
- Tim Flynn - trflynn89
- Jean-Baptiste Boric - boricj
- Stephan Unverwerth - sunverwerth
- Max Wipfli - MaxWipfli
- Daniel Bertalan - BertalanD
- Jelle Raaijmakers - GMTA
- Sam Atkins - AtkinsSJ
- Tobias Christiansen - TobyAsE
- Lenny Maiorani - ldm5180
- sin-ack - sin-ack
- Jesse Buhagiar - Quaker762
- Peter Elliott - Petelliott
- Karol Kosek - krkk
- Mustafa Quraish - mustafaquraish
- David Tuin - davidot
(And many more!) The people listed above have landed more than 100 commits in the project. :^)
License
SerenityOS is licensed under a 2-clause BSD license.