Skip to content

Releases: hermit-os/kernel

0.13.0

25 Feb 14:46
ef27b79

Choose a tag to compare

🚀 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-pc...
Read more

0.12.0

04 Nov 14:09
115c24b

Choose a tag to compare

🚀 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_map asynchronously
  • (addrinfo) Add AI_* constants
  • (socket) Implement fmt::Debug for addrinfo
  • (addrinfo) Impl freeaddrinfo
  • (addrinfo) Implement getaddrinfo
  • Rename mmap feature to mman
  • (mman) Implement mlock and munlock
  • (mman) Implement mlockall and munlockall
  • (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_fn if never pending
  • (executor) Always wake up waker when pending
  • (executor/device) Remove unused RxHandle
  • (executor/network) Remove unused NetworkInterface::get_socket and NetworkInterface::get_dns_socket
  • (executor/task) Remove unused AsyncTaskId::into and AsyncTaskId::from
  • (executor) Make allow(dead_code) more fine-grained
  • (scheduler) Gate PerCoreScheduler::recreate_objmap
  • (scheduler) Make PerCoreScheduler::get_object interrupt-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::allocate into DeviceAlloc
  • (mm) Merge arch-dependent virtualmem modules
  • (x86_64) Make identity_map arch-compatible
  • (physicalmem) Make init_frame_range arch-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_addr with as_mut_ptr
  • (virtqueue) Rename BufferElem::addr to as_ptr
  • (drivers) Replace virt_to_phys with DeviceAlloc::phys_addr_from
  • (device_alloc) Extract ptr_from function
  • (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 VecDeque for 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...
Read more

0.11.0

25 Mar 07:35
c2c480c

Choose a tag to compare

🚀 Features

  • (xtask) Download OVMF prebuilts
  • (processor) Read TSC frequency from FDT
  • (hermit-builtins) Add nan, nanf
  • (fs/mem) Implement fstat
  • Add gap between kernel and available virtual memory
  • (x86_64/mm) Remove detect_from_multiboot
  • (x86_64/mm) Remove detect_from_uhyve
  • Switch to identity-mapped page tables
  • (fs) Make off_t signed as required by POSIX
  • (fd) Implement fcntl(F_GETFL)
  • (aarch64-interrupts) Rename gic related variables
  • (aarch64-interrupts) Use cpuid and gicr_stride
  • (socket) Add AF_UNSPEC
  • (socket) Make AF_INET non-zero
  • (time) Add SystemTime::UNIX_EPOCH and SystemTime::duration_since
  • Make empty mm public
  • (mm) Export virtual_to_physical

🐛 Bug Fixes

  • Move O_NONBLOCK definition into OpenOptions
  • (paging) clippy::doc_overindented_list_items
  • (xtask) Run doc for hermit-builtins and xtask
  • (xtask) Setup the correct buildtype for hermit-c
  • Don't set errno on success
  • (xtask/qemu) Set virtio-mmio.force-legacy=off
  • (drivers) Initialize 64-bit RISC-V drivers before the executor
  • (riscv64) Finalize MMIO drivers
  • (x86_64/paging) Don't panic in disect
  • (x86_64/paging) Break when printing unused table entries
  • (x86_64/paging) Support all functions on UEFI
  • (mm) Exempt UEFI from device alloc mapping
  • (x86_64/mm) kernel_heap_end should only be the first page
  • (x86_64/mm) Identity-map physical memory
  • (fd) Extract StatusFlags into separate type
  • (riscv64/interrupts) Typo
  • (riscv64/interrupts) Remove commented-out code
  • (riscv64/interrupts) Improve interrupt handler
  • (fd) Make open options contain the file status flags
  • (fs) Only check for O_CREAT if file does not exist
  • (fs) Deduplicate boolean expression
  • Provide type annotations in comparisons
  • clippy::uninlined-format-args

💼 Other

  • (deps) Upgrade ureq from 2 to 3
  • Map BAR with the information from capabilities
  • (deps) Update OpenSBI to version 1.5.1
  • (deps) Upgrade arm-gic to 0.2
  • (kernel) Specify hermit-macro version
  • (deps) Update Cargo.lock

🚜 Refactor

  • (x86_64/paging) Use higher-ranked trait bounds
  • (x86_64/mm) Merge kernel_heap_end functions
  • (x86_64/mm) Make kernel_heap_end non-const
  • (x86_64/mm) Explicitly work with page table indices for kernel_heap_end
  • (fd) Replace ObjectInterface::ioctl with set_status_flags

🎨 Styling

  • Format hermit-builtins
  • Sort hermit-builtins exports
  • (x86_64/apic) Rename typ to ty for types
  • (hermit-macro) Reorder Cargo.toml

⚙️ Miscellaneous Tasks

  • Run format job for hermit-builtins
  • Test virtio-net on UEFI
  • Activate httpd target for riscv64
  • Upgrade toolchain channel to nightly-2025-03-15
  • (hermit-macro) Add authors, repository to Cargo.toml

0.10.0

18 Jan 17:36
791b932

Choose a tag to compare

🚀 Features

  • (x86_64) Print FDT
  • (newlib) Add support for riscv64
  • (virtio-spec) Add vsock definitions
  • (newlib) Add support for aarch64
  • (xtask) Sanitize rustc for finding binutils
  • (xtask) Sanitize rustup calls
  • (xtask) Sanitize cargo for normal builds
  • (xtask) Support relative paths
  • (xtask) Add --artifact-dir option for builds
  • (xtask) Allow starting the hypervisor using sudo
  • (newlib) Remove sbrk
  • Add strace feature
  • Log jumping into application
  • (env) Parse FDT bootargs on all platforms
  • (env) Parse env=KEY=VALUE for env vars
  • (uhyve) Don't override get_application_parameters
  • UEFI MVP
  • Add stable exit code message in non-Uhyve VMs
  • (xtask) Set vcpu_count for Firecracker
  • (xtask) Create xtask ci rs subcommand
  • (xtask) Add xtask ci c subcommand
  • (log) Make HERMIT_LOG_LEVEL_FILTER case-insensitive
  • (panic) Resolve deadlock when panicking while printing
  • Upgrade to Rust 2024
  • (uhyve) Use absolute paths
  • Weakly provide the sys_errno_location function for all errno access
  • Add version note

🐛 Bug Fixes

  • (pci) Remove FnOnce workaround
  • (virtio) Remove unused PciError::BadCapPtr
  • (virtio/pci) Remove PciCfgAlt
  • (pci) Make BAR pages no-execute
  • (virtio) Make config generation checking transport independent
  • (net/virtio/pci) Remove commented out code
  • (virtio-spec) Rustdoc::broken_intra_doc_links
  • (net/virtio) Remove unused and wrong net command enums
  • (virtio-spec) Make net::Config fields read-only
  • (x86_64/physicalmem) Rename detect_from_limits to detect_from_uhyve
  • (virtqueue/packed) Simplify DrvNotif::enable_specific
  • (virtqueue/split) Set next_idx for driver notifications
  • (virtqueue/packed) Fix EventSuppr bitfield operations
  • (virtqueue/packed) Check range on RING_EVENT_FLAGS_DESC
  • (virtqueue/packed) Use correct next_idx
  • (virtqueue/packed) Set flags according to wrap count
  • (virtqueue/split) Fix off-by-one error
  • (pci) Remove unused enum DeviceHeader
  • (pci) Remove unused mod constants
  • (pci) Remove unused PciDevice methods
  • (virtqueue/split) Remove dead code
  • (virtqueue/packed) Zero-initialize descriptors
  • (virtqueue/packed) Don't change flags when not making available
  • (virtqueue/packed) Check for descriptor exhaustion
  • (virtq/split) Return id with the correct index for the chain head
  • (virtio-spec) Export vsock feature bits
  • (virtq) Move fuse_entry_out to payload
  • (net/virtio) Push the correct number of packets to the queue
  • (xtask) Keep CARGO_HOME and RUSTUP_HOME
  • (xtask) Set current dir for sanitized binaries
  • (xtask) Move builtins target dir into main one
  • (syscalls) Unused_imports
  • (entropy) Unused_imports
  • (recmutex) Clippy::new_without_default
  • (recmutex) Clippy::not_unsafe_ptr_arg_deref
  • (tasks) Clippy::not_unsafe_ptr_arg_deref
  • (riscv64/virtualmem) Dead_code
  • (xtask) Enable clippy for feature = "newlib"
  • Boot application processors after initializing scheduler
  • (fd) Clippy::too_long_first_doc_paragraph
  • (x86_64) Downgrade log level of page unmap
  • (x86_64/phys_mem) Don't panic on empty FDT memory map
  • Remove explicit link section attributes
  • (aarch64) Remove unused get_boot_info_address
  • (entry) Only set boot info globals on first CPU core
  • (riscv64) Validate entry signature
  • (entry) Allow boot info null pointer
  • (smp) Don't populate boot info pointer
  • (x86_64/smp) Remove boot_info parameter
  • (arch) Remove RAW_BOOT_INFO
  • (arch) Make BOOT_INFO a OnceCell
  • Make Virtq require Send
  • (pci) Put PCI devices into a cell
  • (pci) Put PCI drivers into a cell
  • (x86_64) Put MMIO drivers into a cell
  • (x86_64/vga) Put VGA screen into mutex
  • (aarch64) Put serial port into mutex
  • (aarch64) Put GIC into mutex
  • (net) Make GEM driver Send
  • (riscv64) Put MMIO drivers into a cell
  • (riscv64) Put available HARTs into a cell
  • (shell) Unreachable_code
  • (shell) Unused_variables
  • (xtask) Enable shell feature
  • clippy::needless_lifetimes
  • (aarch64/core_local) clippy::pointers_in_nomem_asm_block
  • (shell) Move shell into async task
  • (arch) Migrate to naked_asm in naked functions
  • (riscv64) Remove manual align implementations
  • (cfg) dead_code
  • (x86_64/mem) Allow deallocating before kernel
  • (x86_64/paging) Extract map_pages
  • (x86_64/paging) print_page_tables
  • (x86_64/paging) Rework disect
  • (x86_64/paging) Add print_page_table_entries
  • (virtqueue) Clippy::extra_unused_lifetimes
  • (xtask) Build docs for each arch separately
  • (x86_64) Make kernel_heap_end a valid virtual address
  • (x86_64) Log interrupt even without handler
  • (x86_64) Check for null pointer in core_scheduler
  • (main) Enable interrupts after initializing scheduler
  • (apic) Disable PIT interrupt
  • (x86_64) Use unaligned write for TLS pointer
  • (apic) Fix width of MP config table entry type
  • (xtask) Remove --verbose from Uhyve call
  • (virtqueue) clippy::unnecessary_map_or
  • (pci) clippy::question_mark
  • (syscalls) Use c_char instead of u8
  • (socket) Remove upstream-resolved allow
  • (virtio-net) Use the correct number of buffers for merging
  • (syscalls) Use ptr::byte_add
  • (syscalls) Remove useless pointer casts
  • Enable clippy::string_to_string
  • Enable clippy::ref_as_ptr
  • Enable clippy::ptr_as_ptr
  • Enable clippy::ptr_cast_constness
  • Enable clippy::borrow_as_ptr
  • Enable clippy::cast_lossless
  • Enable clippy::if_not_else
  • Enable clippy::ignored_unit_patterns
  • Enable clippy::manual_let_else
  • Enable clippy::semicolon_if_nothing_returned
  • Enable clippy::ref_option
  • Enable clippy::explicit_deref_methods
  • Enable clippy::default_trait_access
  • Enable clippy::manual_assert
  • Enable clippy::inconsistent_struct_constructor
  • Enable clippy::match_wildcard_for_single_variants
  • Enable clippy::unreadable_literal
  • Enable clippy::separated_literal_suffix
  • Enable clippy::decimal_literal_representation
  • (dns) clippy::len_zero
  • (dns) clippy::useless_conversion
  • (xtask) Run clippy on feature = "dns"
  • (xtask) Don't test feature = "shell" on unsupported arches
  • (virtqueue) Make BufferElem::{len,capacity} return u32
  • (uhyve) Fix improper unlink string handling
  • (common-os) clippy::unreadable-literal
  • (common-os) clippy::fn_to_numeric_cast
  • (common-os) clippy::unnecessary_cast
  • (common-os) clippy::result_unit_err
  • (common-os) Expect dead_code
  • (aarch64) Fix compilation with feature = "common-os"
  • (riscv64) Fix compilation with feature = "common-os"
  • (xtask) Run clippy on feature = "common-os"
  • (x86_64) Use correct MSR for read{fs,gs}
  • Allow building with all features
  • (interrupts) unused_imports
  • (scheduler) dead_code
  • (rtl8139) clippy::if-not-else
  • clippy::semicolon-if-nothing-returned
  • (udp) clippy::ignored-unit-patterns
  • (xtask) Clippy all features
  • clippy::literal_string_with_formatting_args
  • clippy::precedence
  • (tests) static_mut_refs
  • (tests) stable_features
  • (tests) Remove unused value_fence
  • (tests) Don't reexport in common
  • (tests) Move parse to avoid dead_code
  • (tests) unsafe-op-in-unsafe-fn
  • (tests) Allow dead_code on test_case_runner
  • (tests) Literals
  • (tests/basic_mem) Clippy
  • (tests) clippy::uninit_vec
  • (tests/thread) Pointer casting
  • (tests) clippy::result_unit_err
  • (tests) Remove explicit QEMU debug exit
  • (xtask) Run clippy on all targets
  • (tests) Clean up comments
  • Use #[unsafe(no_mangle)]
  • Mark extern blocks as unsafe
  • (macros) tail_expr_drop_order
  • (xtask) Use canonical cargo_home location
  • (xtask) Assume exe exists in cargo_home
  • (xtask) Add support testing for C-based HTTP servers
  • (xtask) Don't assume exe exists in cargo_home
  • (paging) Support huge pages in debug function

💼 Other

  • Turn cmd from a tuple into a struct
  • Separate response headers and payload
  • Don't assume uninitialized objects to be initalized
  • Don't expose uninit rsp to the fuse module
  • Use DeviceAlloc for virtq allocations
  • TransferTokens should always have a BufferToken
  • Move common logic for making descriptor available into a function
  • Remove unnecessary memory barriers
  • Move common lines in conditional outside
  • Move ctrl_desc to TransferToken
  • Merge Buffer variants
  • Start MemDescrId from 0
  • Delay MemDescrId assignment until push
  • Handle id exhaustion
  • Don't expose TransferTokens to the drivers
  • Use the actual type for ctrl_descs instead of MemDescr
  • Don't modify flags for skipped descriptors
  • Improve error handling
  • Correctly parse irq-flags from dts
  • (fs) Correct uhyve mount message
  • (deps) Upgrade zerocopy to 0.8, fuse-abi to 0.2, and virtio-spec to 0.2
  • Store only the most preferred capability of a type
  • (qemu) Simplify memory calculation
  • Close connection if data isn't available
  • (deps) Update Cargo.lock
  • (virtio-fs) Remove unnecessary to_string()
  • (vscode) Don't check all architectures
  • Don't panic on initial unmap if page is not mapped
  • (deps) Update Cargo.lock
  • (deps) Remove x86
  • Use the serial buffer hypercall instead of the byte-wise one
  • (deps) Update hermit-entry to 0.10.2
  • (deps) Don't specify minor version of bitflags crate
  • (deps) Update Cargo.lock

🚜 Refactor

  • (virtio/pci) Remove offset, length fields
  • (virtio/pci) Inline Origin into PciCap
  • (virtio/pci) Rename PciCap::cap_struct to PciCap::cap
  • (virtio/pci) Remove cfg_type, id from PciCap
  • (virtio/pci) Migrate extra cap ...
Read more

0.8.0

07 Jun 14:46
7425269

Choose a tag to compare

Highlights

  • feat(xtask): add support for building with cargo-careful by @mkroening in #1142
  • feat: allow mounting a virtiofsd share to / by @stlankes in #774
  • feat: add virtio-def crate for virtio definitions by @mkroening in #1149
  • feat(riscv64): fix compilation with default features and with gem-net by @mkroening in #1162
  • feat(mm): add DeviceAlloc for communicating with devices by @mkroening in #1160
  • feat: stabilize kernel interface by @stlankes in #1167
  • feat(sys): add sys_available_parallelism by @mkroening in #1184
  • feat(xtask): add xtask doc by @mkroening in #1200
  • feat: rename virtio-def crate to virtio-spec by @mkroening in #1201
  • feat(virtio-spec): many features for endian numbers, make feature flags little-endian by @mkroening in #1205
  • feat(syscall): add sys_shutdown in favor of sys_shutdown_socket by @mkroening in #1220
  • feat(virtio-net): enable VIRTIO_NET_F_MQ and test VIRTIO_F_RING_PACKED by @mkroening in #1223
  • feat(virtio-spec): migrate to endian-num crate by @mkroening in #1225
  • feat(newlib): using kernel networking, instead of lwip by @CarlWachter in #1237
  • feat(newlib): remove lwIP support by @mkroening in #1165

What's Changed

New Contributors

Read more

0.7.0

11 Apr 15:12
4ce7439

Choose a tag to compare

Highlights

What's Changed

New Contributors

Full Changelog: v0.6.9...v0.7.0

0.6.9

29 Feb 08:42
1d9d19c

Choose a tag to compare

What's Changed

Full Changelog: v0.6.8...v0.6.9

0.6.8

16 Feb 13:39
6a1ac7b

Choose a tag to compare

Hightlights

What's Changed

Full Changelog: v0.6.7...v0.6.8

0.6.7

19 Dec 11:03
244d5b3

Choose a tag to compare

Highlights

What's Changed

Full Changelog: v0.6.6...v0.6.7

0.6.6

30 Nov 16:25
bb07a10

Choose a tag to compare

Highlights

What's Changed

New Contributors

Full Changelog: v0.6.5...v0.6.6