Releases: JonasKruckenberg/k23
wavltree-v0.0.7
Added
- Rust
2024
edition (#309)
wavltree-v0.0.6
wavltree v0.0.5
Other
- Rust 2024 edition ready (#222)
wavltree v0.0.4
Added
- implement
AddressSpace::unmap
(#217)
wavltree v0.0.3
v0.0.2
wavltree v0.0.1
wavltree v0.0.0
Initial release of the wavltree
Weak AVL Tree crate.
0.0.3
It's time for another one! A bit more exciting this time!
What's Changed
KASLR
Over the last two weeks I finally implemented Kernel Address Space Layout Randomization (KASLR) in the loader. This required making a few changes to the way the kernel is built (i.e. fully position independent) and the loader.
Every memory region (kernel elf, stacks, heap, physical memory) is now mapped at randomized offsets.
This code can easily be reused to implement ASLR for user space as well. Next up would be function-grained ASLR, but that is much more complicated and I've been bashing my head against it without much success, so I'll leave that for later.
Streamlined build system
The build system got simplified massively to the point where dependencies on various native tools could be removed. It should also be more streamlined now!
Tests are run in CI
The test suite now gets on in CI on every commit; This way we can better track exactly how far along the WASM journey we are!
Other
- Removed the
kconfig
configuration system and simplified repo setup - vendored the
linked_list_allocator
to reduce the dependency tree and have better integration
0.0.2
This is a smaller release, focusing mostly on an improved developer experience, better code organization and bug fixes.
What's Changed
Better Build Setup
k23 now has a much cleaner build setup using just
, nushell
and optionally nix
for dependency management.
# Run in QEMU
just run configs/riscv64-qemu.toml
# Runs tests in QEMU
just test configs/riscv64-qemu.toml
# And the basic check commands remain
just check configs/riscv64-qemu.toml
just clippy configs/riscv64-qemu.toml
just preflight
kconfig
Build Configuration System
Compile-time configuration is now done through the kconfig
system (not related to Linux's kconfig
) which let's you declare
configuration symbols in Rust code and configure them in a unified .toml
file:
#[kconfig_declare::symbol("kernel.stack-size-pages")]
pub const STACK_SIZE_PAGES: size = 32;
the above configuration symbol will read from the following .toml
file
[kernel]
stack-size-pages = 128