IronClad v0.70
Non-breaking changes
- Greatly improved block device (SATA, NVMe) caching. Leading to big performance improvements.
- Added a basic NVMe driver.
- Implement support for x86's SMAP, and expose it in an architecture-independent way.
- Harden syscall memory argument checks.
- Added
AT_REMOVEDIR
for the unlink syscall. - Added a kernel-side terminal for easier early boot debugging for the
x86_64-limine target. - Improve PS2 device detection as to avoid false positives and false negatives.
- Reworked x86_64-limine's clock subsystem.
- Add support for pipe sockets with socketpair.
Improved internal kernel printing by adding support for more 'Image uses. - Better handle Out Of Memory (OOM) conditions with fallible allocations.
- Improve ACPI power button handling by exposing them to userland with the
pwrbutton/sleepbutton devices, which can be polled by userland daemons
for power commands. - Expand program loading ASLR applications by also using it for dynamic
program bases. - Tons of bug fixes.
- Improve signal handling.
Breaking changes
- Removed the spawn syscall
, modified the fork
syscall` to take a
FORK_VFORK argument that makes it not copy the parent process's tables. For
the rationale, visit our blog's article on the matter. - Removed power handling interfaces replaced by the pwrbutton/sleepbutton
changes. - Changed the mapping of the signal numbers handled by Ironclad due to POSIX
requirements, affectingSIGHUP
,SIGINT
,SIGQUIT
,SIGABRT
,SIGKILL
,SIGALRM
,
and `SIGTERM☠. - Replaced the
getrandom
syscall for the POSIX-compliantgetentropy
.
Non-code related changes
- Moved our infrastructure from Savannah and Github to Codeberg.
- Coalesced project web presence to (https://ironclad-os.org).
- Started work on the project's blog, a
hub for Ironclad news, articles, and all Ironclad, with RSS feeds for easy
following.