Download Latest Version 0.13.2 source code.tar.gz (321.5 kB)
Email in envelope

Get an email when there's a new version of Hermit Kernel

Home / v0.13.0
Name Modified Size InfoDownloads / Week
Parent folder
0.13.0 source code.tar.gz 2026-02-25 321.5 kB
0.13.0 source code.zip 2026-02-25 424.4 kB
README.md 2026-02-25 11.7 kB
Totals: 3 Items   757.6 kB 0

🚀 Features

  • Support regularly printing allocation stats
  • Always log targets
  • Add warn-prebuilt feature
  • (Cargo.toml) Don't build staticlib by default
  • (Cargo.toml) Harmonize virtio feature names
  • Support virtio-fs-mmio
  • Print target architecture on boot
  • (xtask) Replace --instrument-mcount with feature
  • (Cargo.toml) Deprecate fs feature
  • Don't reexport create_file at the crate root
  • Rename trace feature to net-trace
  • (Cargo.toml) Deprecate nostd feature
  • (syscalls) Make mman public

🐛 Bug Fixes

  • (virtio) Remove unused BufferError
  • (xtask) Retry Firecracker on failure
  • (x86_64) Remove unused remains of recursive page tables
  • (pci) Handle error values for IRQ number
  • (virtio) Remove unused rank field
  • (virtio) Don't print capability ID when irrelevant
  • (virtq/split) Don't box TransferTokens
  • Function_casts_as_integer
  • (pcie) Include the end bus number in scan and mapping
  • (syscall/socket) Follow POSIX and Linux for errno
  • (syscall/socket) Check for socket flags validity
  • (fs/mem) Don't implement min manually
  • Avoid casting functions to usize if possible
  • (arch/scheduler) Don't cast task_start to pointer
  • (mem/fs) Return EOVERFLOW from lseek on overflow
  • (mem/fs) Return EINVAL from ROM lseek for too large offsets
  • (mem/fs) Fix(mem/fs): test all lseek cases for negative file offsets
  • (fuse) Don't import alloc via crate
  • (fs) Don't make inner handles public
  • (aarch64) Align task_start signatures
  • (arch/scheduler) Remove panicking task_start
  • (virtio) Align device not supported logs
  • (virtio) Enhance error message when feature is not activated
  • (fs/mem) Remove unused methods
  • (fs/mem) Don't allow dead_code
  • (virtq) Make IndexAlloc start at low indixes
  • (arch) Remove unused memory_barrier function
  • (x86_64) Correctly report CPUID source for CPU frequency
  • (Cargo.toml) Don't enable deprecated crate features
  • (builtins) Allow building with --all-targets
  • (syscalls/socket) Clippy::needless_late_init
  • (virtio) Clippy::large_enum_variant
  • (aarch64/mmio) Clippy::collapsible_if
  • (x86_64/mmio) Use io::Result
  • (x86_64) Support virtio-console-mmio
  • (virtio-pci) Remove shared memory structures
  • (virtio/transport) Remove unused ComCfg::dev_status
  • (virtio-mmio) Remove unused ComCfg::get_queue_ready
  • (virtio-pci) Gate NotifCfg::length
  • (mmio) Print virtio-console info
  • (riscv64/mmio) Dead_code
  • (x86_64/mmio) Dead_code
  • (virtio) Dead_code on VirtioError
  • (virtio-fs-mmio) Print information
  • Enable ACPI for SMP on x86_64
  • Fuzzy_provenance_casts
  • Lossy_provenance_casts
  • Enable strict provenance lints
  • (x86_64/apic) Corrected IOAPIC default address
  • clippy::uninlined_format_args
  • (macros) Use unambiguous format_args! path
  • Tag all format-like macros with #[clippy::format_args]
  • (macros) Use $crate in hermit_var!
  • (macros) Use global paths
  • (macros) Macro_expanded_macro_exports_accessed_by_absolute_paths
  • (pci) Log errors in init
  • (virtio) Log error when device does not accept features
  • (arch/serial) Only be read_ready when data is available
  • (virtio-fs) De-assert interrupts
  • (tls) Create TLS for idle task when instrumenting the kernel
  • (xtask) Demangle symbols when testing rftrace
  • (virtio-fs) Register IRQ name
  • (riscv64/scheduler) Align task_entry with AArch64
  • (riscv64/scheduler) Clarify register functions
  • (virtio-console) Align handle_interrupt to other impls
  • (virtio/transport) Don't allow IsrStatus methods to be unused
  • (virtio/transport) Merge IsrStatus::is_queue_interrupt into acknowledge
  • Capitalize UEFI path
  • (socket/tcp) When polling listening, poll all sockets
  • (pci) Warn when virtio is disabled
  • Unify Hermit name
  • Remove manual feature logs

💼 Other

  • (deps) Upgrade rust-toolchain to nightly-2025-12-01
  • (deps) Don't use git source for x86_64 crate
  • (xtask/deps) Don't depend on ureq/gzip
  • (xtask) Feature-gate 'ci' subcommand
  • (xtask/arch) Don't use anyhow
  • (builtins) Fix Cargo.lock
  • (deps) Upgrade rust-toolchain to nightly-2026-01-01
  • (xtask) Run Clippy for virtio-mmio
  • (xtask) Allow multiple occurrences of flags
  • (deps) Update to trapframe 0.10.1
  • (deps) Upgrade align-address to 0.4
  • (deps) Upgrade rust-toolchain to nightly-2026-02-01
  • (deps) Upgrade rand_chacha to 0.10
  • (deps) Update Cargo.lock

🚜 Refactor

  • Replace aarch64 crate with aarch64-cpu
  • (aarch64) Replace dmb assembly with aarch64-cpu crate
  • (aarch64) Replace isb assembly with aarch64-cpu crate
  • (aarch64) Replace dsb assembly with aarch64-cpu crate
  • (aarch64) Replace TPIDR_EL1 assembly with aarch64-cpu crate
  • (aarch64) Replace ttbr0_el1 assembly with aarch64-cpu crate
  • (aarch64) Replace wfe, wfi assembly with aarch64-cpu crate
  • (aarch64) Replace id_aa64mmfr0_el1 assembly with aarch64-cpu crate
  • (virtio) Migrate VirtqError to thiserror
  • (pci) Migrate PciError to thiserror
  • (virtio-net) Migrate VirtioNetError to thiserror
  • (virtio-fs) Migrate VirtioFsError to thiserror
  • (virtio-console) Migrate VirtioConsoleError to thiserror
  • (virtio-vsock) Migrate VirtioVsockError to thiserror
  • (virtio) Migrate VirtioError to thiserror
  • (rtl8139) Migrate RTL8139Error to thiserror
  • (gem) Migrate GEMError to thiserror
  • (drivers) Migrate DriverError to thiserror
  • (virtqueue) Remove VqSize newtype
  • (virtqueue) Remove VqIndex newtype
  • (pvirtq) Remove unused WrapCount::flag_mask
  • (pvirtq) Remove WrapCount newtype
  • (virtqueue) Remove MemDescrId newtype
  • Use uhyve version define macro from hermit_entry
  • (common-os) Use slice::from_raw_parts_mut instead
  • (aarch64/serial) Safely maintain non-zero invariant
  • (riscv64) Use env::fdt
  • (riscv64/devicetree) Reduce unsafe scope
  • (pvirtq) Use bitfields for RingIdx
  • (pvirtq) Use bitfields for DescriptorRing::write_index and drv_wc
  • (pvirtq) Use bitfields for DescriptorRing::poll_index and dev_wc
  • (fs/mem) Use imported locks
  • (fd) Remove Debug bound from ObjectInterface
  • (mem/fs) Use match instead of if/else
  • (mem/fs) Extract data_len in lseek
  • Consistently use to_owned over to_string for str
  • (riscv64) Make task_start a naked function
  • (fs/mem) Get rid of another unnecessary allocation
  • (xtask) Use cargo-rustc instead of cargo-build
  • (xtask) Only build staticlib
  • (fs/mem) Move RomFileInner's RwLock into it
  • (virtq) Rename size to max_size
  • (virtqueue) Use early continue in IndexAlloc::allocate
  • Simplify virtio cfgs
  • Rename console feature to virtio-console
  • Rename fuse feature to virtio-fs
  • Rename vsock feature to virtio-vsock
  • (virtio-fs) Move fs/virtio_fs.rs to fs/mod.rs
  • (virtio-fs) Rename virtio_pci.rs to pci.rs
  • (virtio-fs) Make pci module private
  • Rename VirtioDriver::Network to Net
  • Rename VirtioDriver::FileSystem to Fs
  • (virtio) Sort VirtioDriver variants
  • (virtio) Sort virtio::Id variants
  • (riscv64/devicetree) Simplify virtio init code
  • (aarch64) Enable mmio module on virtio feature
  • (aarch64/mmio) Use import
  • (riscv64) Enable mmio module on virtio feature
  • (virtio-net-mmio) Simplify VirtioNetDriver::init
  • (virtio) Make allows more fine-grained
  • (virtio) Unify feature negotiation
  • (fd) Rename FileDescriptor to RawFd
  • (mm) Extract common divisor
  • Don't import is_uhyve_with_pci
  • (logging) Always use format args for infoentry
  • (kernel/core_local) Swap out StaticExecutor with StaticLocalExecutor
  • (aarch64/start) Inline endianness instructions
  • (aarch64/start) Move SCTLR_EL1 into function
  • (fs) Don't fully qualify Send and Sync
  • (fs) Make Send, Sync supertraits of VfsNode
  • Consistently import core::ptr
  • Consistently import core::slice
  • Consistently import core::mem
  • Consistently import core::pin::pin
  • Use pointer methods instead of functions
  • (drivers) Align interrupt map insertion
  • (arch) Do more early returns
  • (drivers) Do more early returns
  • (fs) Do more early returns
  • (fd) Do more early returns
  • (executor) Do more early returns
  • (syscalls) Do more early returns
  • Do more early returns
  • (mmio) Rename VirtioDriver::FileSystem to Fs
  • (fs) Rename fuse.rs to virtio_fs.rs
  • (virtio-fs) Change FUSE to virtio-fs in logs
  • (virtio-fs) Rename VirtioFsError to VirtioFsInitError
  • (virtio-fs) Rename Fuse* types to VirtioFs*
  • (virtio-fs) Capitalize FUSE in comments
  • (drivers) Rename fuse_handler to virtio_fs_handler
  • Don't use i when not iterating over integers
  • (executor/device) Deduplicate network initialization

📚 Documentation

  • (pvirtq) Don't call notification structs newtypes
  • (virtio) Clean up module docs
  • Capitalize the first word
  • Don't mention helper items
  • (fs) Use active instead of imperative language
  • Enable doc_cfg for docs.rs
  • (README.md) More visibly link to the crate docs
  • (mman) Add documentation
  • Build docs for docs.rs with all features
  • Rework crate documentation
  • Allow documenting features
  • Prepare documenting features by reordering them
  • Document features

⚡ Performance

  • (virtqueue) Remove unused MemPool::limit field
  • (virtqueue) Replace vec-based MemPools with bitmap-based IndexAlloc
  • (fs/mem) Remove Arc around file positions
  • (fs/mem) Get rid of unnecessary String allocations
  • (fuse) Make use of CString::new specialization
  • (virtio-pci) Don't read queue size twice
  • (virtio-pci) Use weaker memory barriers
  • (virtq) Use weaker memory barriers
  • (virtio-pci) Remove all memory barriers
  • (aarch64/start) Make SCTLR_EL1 value a constant

🎨 Styling

  • Use raw borrows instead of addr_of!
  • (ci) Remove trailing space
  • (pci) Remove non-trailing comma in cfg attributes
  • (Cargo.toml) Sort dependency properties
  • Consistently import core::fmt
  • (syscalls) Add newline
  • Remove mixed whitespaces
  • (Cargo.toml) Sort default features
  • (Cargo.toml) Move mmap feature to deprecated features

🧪 Testing

  • (virtq) Test IndexAlloc

⚙️ Miscellaneous Tasks

  • Run Firecracker before Uhyve
  • Run cargo-deny
  • (Cargo.toml) Replace list of authors
  • Upgrade Uhyve to 0.6
  • (bench) Increase alloc bench memory
  • (bench) Enable QEMU's isa-debug-exit device
  • (fs/mem) Remove copyright header
  • Use GitHub CLI to download Firecracker
  • Use virtio-console feature
  • (builtins) Don't accidentally publish
  • Validate lock file
  • Run Clippy exhaustively
  • Add matrix.flags to every qemu invocation
  • Rename matrix.flags to qemu_flags
  • (xtask) Increase RISC-V memory
  • (xtask) Enable semihosting for RISC-V
  • Enable semihosting on ARM and RISC-V
  • (xtask) Add support for virtio-fs-mmio
  • (bench) Increase alloc bench memory again
  • Set Firecracker and Uhyve paths during installation
  • Install qemu-system-arm instead of alias
  • Add "consts" to typos.toml
  • Download cargo-careful instead of building it
  • Test Uhyve filesystem
  • Don't run clippy on aarch64_be
  • Simplify publish docs
  • Rename publish docs workflow to deploy docs
  • Deploy docs from GitHub Actions instead of from a branch
  • Build docs like docs.rs would
  • Improve HTML redirect
  • Release Hermit 0.13.0
Source: README.md, updated 2026-02-25