| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| 0.12.0 source code.tar.gz | 2025-11-04 | 319.9 kB | |
| 0.12.0 source code.zip | 2025-11-04 | 421.8 kB | |
| README.md | 2025-11-04 | 14.5 kB | |
| Totals: 3 Items | 756.1 kB | 0 | |
๐ Features
- (aarch64,riscv64) Add gap between kernel and available virtual memory
- (physicalmem) Unify physical memory initialization
- (libm) Export new symbols
- (arch/x86_64) Configure XCR0 and save ZMM registers for AVX512
- (net) Remove
AF_INET_OLD - Add hermit-ifup script
- (xtask) Add TAP device support
- Add network tracing back
- Automaticall log smoltcp verbosely when tracing network
- (logging) Print time
- (logging) Print target on feature = "log-target"
- (hermit-builtins) Allow merging libm symbols
- (xtask) Add support for http_server_select
- (x86_64/mm) Log page tables
- (mm) Offset device memory when being careful
- (syscalls/socket) Implement gai_strerror
- (syscalls/socket) Add
SOCK_RAW - (syscalls/socket) Add
SOCK_SEQPACKET - (xtask) Test stdin example
- (xtask) Add virtio-console devices
- (drivers/net) Add loopback network driver
- (scheduler) Don't lock
Task::object_mapasynchronously - (addrinfo) Add
AI_*constants - (socket) Implement fmt::Debug for addrinfo
- (addrinfo) Impl freeaddrinfo
- (addrinfo) Implement getaddrinfo
- Rename mmap feature to mman
- (mman) Implement
mlockandmunlock - (mman) Implement
mlockallandmunlockall - (drivers/net) Make virtio-net optional, take two
- Add cwd syscalls
- Add umask syscall
- Add access / faccessat function and syscall
- Add ftruncate/fchmod/truncate syscalls
- Print git version, features, build time
- Use async-executor
- Add kernel-stack feature to allow disabling switching stacks on syscalls
- (Cargo.toml) Make tcp, udp imply net
- (Cargo.toml) Make gem-net, rtl8139 imply net instead of tcp
- (Cargo.toml) Make virtio-net imply net
- (Cargo.toml) Make dhcpv4, dns imply net
- (aarch64) Add support for stdin
- (sockets) Stub UNIX sockets
- (syscalls) Stub
fchdir - (aarch64) Initialize secondary cores with target endianness
- (xtask) Add support for aarch64_be
- (aarch64) Don't ignore 32-bit memory bars
- (pci) Allow mapping of 32-bit bars
- (xtask) Add PCIe support
- (x86_64) Add PCIe support
- (physicalmem) Use all memory regions on UEFI
- (physicalmem) Respect memory reservations
- Add profiling profile
- (rtl8139) Use MMIO instead of port IO
- (mm) Add PageAlloc, FrameAlloc
- (mm) Add PageRangeBox, PageBox, FrameBox
- (uhyve) Link uhyve interface versions to images
- Pad log levels
- Don't log complete module path on
feature = "log-target"
๐ Bug Fixes
- (x86_64/physicalmem) Handle parent entry huge page
- (physicalmem) Identity map 4K pages on AArch64
- (build) Error message for missing llvm_tools
- Use #[naked] as an unsafe attribute
- (virtio-net) Advertise the control queue support
- (xtask) Test axum-example
- (gem-net) Ignore interrupt rather than crashing
- (riscv) Handle shutdown errors
- (rtl8139) Allocate on
DeviceAlloc - (virtio-net) Only initialize virtqueues after feature negotiation
- (xtask) Simplify QEMU cmdline creation
- In any case, getsockname determines the network address
- Dead_code
- (macro) Early returns with strace
- (syscall) Make setting errno explicit
- (riscv64) Add debug messages in boot_next_processor
- (virtio) Allow exact buffer size in send_packet
- Make compiler happy regarding cfgs
- (virtio-net) Don't skip hdr descriptors with MRG_RXBUF
- (macros) Switch to kernel stack on newlib
- (virtio-net) Don't advertize CSUM, GUEST_CSUM
- (fuse) Check for the existence of op_header
- Typos
- (virtio-net) Prepare checksum correctly
- (arch/aarch64) Restore and save FPU state
- (x86_64/mm) Add context to
MapToError - (x86_64/mm) Remove
disect - (x86_64/mm) Remove
print_page_table_entries - (x86_64/mm) Remove
print_page_tables - (pci) Also map PCI memory on UEFI
- (bind) Return EDESTADDRREQ on NULL address
- (bench) Grab PR comment via gh cli
- (executor) Don't hold async_tasks RefCell while polling tasks
- (mm) Don't reserve physical memory
- (fd/socket) Don't use
poll_fnif never pending - (executor) Always wake up waker when pending
- (executor/device) Remove unused
RxHandle - (executor/network) Remove unused
NetworkInterface::get_socketandNetworkInterface::get_dns_socket - (executor/task) Remove unused
AsyncTaskId::intoandAsyncTaskId::from - (executor) Make allow(dead_code) more fine-grained
- (scheduler) Gate
PerCoreScheduler::recreate_objmap - (scheduler) Make
PerCoreScheduler::get_objectinterrupt-safe again - (addrinfo) Don't implement Clone, Copy
- (aarch64) PL031 read is always little endian
- (fs) Don't return EINVAL on missing file (better errors are returned by fs.open)
- (build.rs) Specify image base for x86 SMP boot assembly
- Set errno on appropriate new syscalls
- (socket) Accept non-zero proto values
- (aarch64) Migrate to fdt crate and remove hermit-dtb
- (x86_64) Detect frequency before printing time
- (arch) Don't use
cfg(target_arch = x) - (x86_64/mmio) Allow compiling both virtio-net and virtio-console
- (aarch64/mmio) Dead_code
- (aarch64/mmio) Unused_imports
- (arch/mmio) Unreachable_patterns
- (executor/device) Expect(unused_mut)
- (riscv64/devicetree) Allow compiling both gem-net and virtio-console-mmio
- (riscv64/devicetree) Dead_code
- Use
feature = "virtio-net"where appropriate - (kernel_stack) Don't transmute args via memory
- (executor) Avoid possible deadlock
- Typos
impl From<Infallible> for Errno- (serial) Forward serial read to VecDeque impl
- (virtio-net) Free up send capacity before checking it
- (x86_64) Initialize PCI after ACPI
- (xtask) Run UEFI with clean ESP
- (pci) Ignore incompatible capabilities instead of crashing
- (aarch64/tls) Avoid memory leak
- Rework TLS, fix alignments
- (x86_64) Print page tables only when tracing
- (physicalmem) Log claimed physical memory
- (mman) Don't deallocate PROT_NONE frames
- (virtio) Don't include optional fields in minimum size
- (riscv64) Make init_page_tables unsafe
- (mm) Make arch::mm::init unsafe
- (mm) Make virtualmem and physicalmem functions unsafe as appropriate
- (riscv64) Properly fence page table change
- Don't log before core-local storage is initialized
- (xtask) Print firecracker logs before erroring
- (pvirtq) Typos
- (aarch64/interrupts) Synchronize CPACR_EL1 modification
- (x86_64/smp) SMP boot code size assertion
๐ผ Other
- Don't configure Performance Monitors Extension
- Increase virtual memory size
- Use enum_dispatch
- Don't alloc when waking blocked tasks up
- Update file position upon lseek
- Return new position in file (as in POSIX)
- Unify qemu devices argument
- Remove post_processing stub
- Use proper types for Lookup commands
- Publish benchmark data in separate workflow
- Merge results into one file
- Run benchmarks on fixed runners to increase consistency
- (hopefully) fix runs-on syntax error for benchmarks
- Fixed incorrect lseek behaviour with whence Set or Cur
- Poll_on no longer required in new_idle
- Allow specifying the buffer size
- Allow multiple Uhyve mounts at arbitrary paths given by fdt
๐ Refactor
- (mm) Unify physical memory allocation
- (mm) Migrate all arches to
kernel_heap_end() - (mm) Unify virtual memory allocation
- (virtqueue) Migrate to
DeviceAlloc - (gem) Vendor
mm::allocate,mm::deallocate - (mm) Inline
mm::allocateintoDeviceAlloc - (mm) Merge arch-dependent virtualmem modules
- (x86_64) Make
identity_maparch-compatible - (physicalmem) Make
init_frame_rangearch-generic - (physicalmem) Unify physical memory detection
- Use inline const to initialize priority queue
- (virtqueue) Don't swallow errors on incorrect pop order
- (fs) Migrate FileType to num_enum
- (fs) Migrate SeekWhence to num_enum
- Migrate io::Error to num_enum
- (macro) Set errno in system macro
- (drivers/net) Unify MTUs and fix buffer sizes for virtio-net
- (riscv64/scheduler) Use alternate hex format for 0x
- (riscv64) Reduce unsafe scope in pre_init
- (macros) Use cfg_if! for defining kernel_function!
- (xtask) Make guest IP a variable
- (arch/x86_64) Dynamically allocate XSAVE area
- (logging) Outline println args
- (logging) Make KernelLogger a proper static
- (logging) Make KERNEL_LOGGER public
- (net) Simplify prefix_len calculation
- (net) Simplify ethernet address creation
- (net) Simplify IP address creation
- (net) Merge imports
- (net) Simplify IPv4 CIDR block creation
- (net) Deduplicate IP CIDR block creation
- (entropy) Use syscall macro
- Inline kernel_function macro
- (virtqueue) Replace
packed::DescriptorRing::raw_addrwithas_mut_ptr - (virtqueue) Rename
BufferElem::addrtoas_ptr - (drivers) Replace
virt_to_physwithDeviceAlloc::phys_addr_from - (device_alloc) Extract
ptr_fromfunction - (io) Inline core::result
- (errno) Make error numbers an enum
- (io) Replace io::Error with Errno
- (syscalls) Move socket.rs to socket/mod.rs
- (syscalls/socket) Extract related code into addrinfo module
- (syscalls/socket) Enumify
EAI_* - (syscalls/socket) Enumify
AF_* - (syscalls/socket) Enumify
SOCK_* - (syscalls/socket) Enumify
IPPROTO_* - (executor) Use a
VecDequefor the task queue - (mm) Inline physicalmem/virtualmem print_information
- (mm) Inline physicalmem::deallocate
- (mm) Inline physicalmem::allocate_aligned
- (mm) Inline physicalmem::allocate
- (mm) Inline virtualmem::deallocate
- (mm) Inline virtualmem::allocate_aligned
- (mm) Inline virtualmem::allocate
- (drivers/net) Move get_network_driver to drivers/net
- (addrinfo) Box ai_next
- (net) Remove mutex indirection to network device
- (net) Don't use an intermediate structure for smoltcp
- (io) Read into initialized memory
- (io) Use embedded-io traits
impl Write for Consoleimpl Write for FuseFileHandleInnerimpl Write for UhyveFileHandleInnerimpl Read for Consoleimpl Read for FuseFileHandleInnerimpl Read for UhyveFileHandleInnerimpl ReadReady for Console- (executor) Don't import core_local functions
- (executor) Move
Task::polltoimpl Future - (executor) Trace polling at task level
- (executor) Make AsyncTask Send
- (arch) Split kernel_function into separate module
- Replace
any(feature = "tcp", feature = "udp")withfeature = "net" - Replace
all(feature = "net", x)withx - (vsock) Don't lock
NullSocket - (fd) Lock all
ObjectInterfaces externally - (fd) Make accept, bind, connect, listen, set_status_flags mutable
- (socket) Implement
ObjectInterfacefor sockets directly - (socket) Implement accept directly
- (socket) Implement
ObjectInterfacewithout intermediate methods - (x86_64/pci) Extract scan_bus function
- (fs) Move uhyve check outside of init
- (x86_64) Move check outside init_x2apic
- Remove nightly feature
map_try_insert - (physicalmem) Extract list modification from map_frame_range
- (physicalmem) Remove found_ram variable
- (physicalmem) Unify UEFI and non-UEFI loops
- Allow rtl8139 feature on all architectures
- Use PageRangeAllocators instead of FREE_LISTs
- (x86_64) Migrate to PageBox
- (arch) Merge init_page_tables into mm::init
- (riscv64) Unify enabling page tables
- (riscv64) Use satp::set instead of satp::write
- (x86_64/switch) Replace integer literal with named constant
๐ Documentation
- (virtio-net) Remove outdated doc comment
- (aarch64/start) Add SCTRL docs
- (errno) Add doc comment
- (readme) Replace hermit-playground with hermit-c
- (mm) Add memory layout graphic
- (x86_64) Add explantory comment to
qemu_exit - (aarch64/interrupts) Improve FPU trap wording
- (virtq) Remove outdated safety comment
โก Performance
- Enable
mutable-noalias - (device_alloc) Don't re-map device memory
- (virtio-net) Don't copy packets when num_buffers is 1
- (gem-net) Use
DeviceAllocfor buffers - (drivers) Remove
virt_to_phys - (drivers) Use smallvec for AvailBufferToken
- (virtqueue) Use smallvec for UsedDeviceWritableBuffer
- (virtqueue/packed) Don't box transfer tokens
- (virtio-net) Reuse allocations for virtqueue item headers
- (virtqueue) Use swap_remove when feasible
- (mm) Make virt_to_phys a no-op again
- (device_alloc) Inline memory conversion methods
- (alloc) Don't overalign allocations
- (x86_64) Skip APIC probe on uhyve
- (aarch64/interrupts) Only trap FPU when changing the task
๐จ Styling
- (Cargo.toml) Unify indentation
- Consistently use crate::io via import
- (syscalls/socket) Use
fdimport - (cfg) Add trailing commas before newline
- Remove commas before trailing parens
- (fuse) Use if let Some in Drop trait
- Remove duplicate whitespaces from strings
- Improve DHCP + static IP warning
- Align DHCP and non-DHCP log messages
- (x86_64/apic) Improve warnings
- (mman) Rename variables for clarity
- (riscv64) Don't import freestanding sfence_vma function
๐งช Testing
- (macro) Add early return
- (virtio-net) Have a CI test with small receive buffers
โ๏ธ Miscellaneous Tasks
- (add_tls) Added tls example to ci
- (gem-net) Test GEM NIC on RISC-V with QEMU
- Run AArch64 jobs on ubuntu-24.04-arm runners
- Run cargo-hack on all architectures
- Also check each feature with PCI
- Test TAP devices
- Update .vscode/settings.json
- Add continuous benchmarking
- Don't populate overridden submodules
- Don't install recommended qemu packages
- Test stdin example
- Test virtio-console
- Test loopback driver
- Don't install nightly for rftrace 0.3.0
- Enable weekly Dependabot Rust toolchain updates
- Check with tcp
- Clean hermit-rs dir after QEMU runs
- Test aarch64_be
- Clean target dir more often
- Test PCIe support
- Patch Uhyve's KVM exits disabling
- Run thread_test earlier and on all architectures
- Run Uhyve, Firecracker before QEMU
- Don't build kernel for WASM separately
- Simplify WASM test
- Test RTL8139 on aarch64
- Patch Uhyve hanging on panics
- Patch Uhyve hangs on SMP