Releases
v0.10.0
π 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 data reading to virtio-spec
(pci) Implement set_irq
using EndpointHeader::update_interrupt
(virtio) Move notif_data
into virtio-spec
(virtio) Remove memory newtypes
(virtio) Use generic PCI memory_map_bar impl
(net/virtio) Move transport modules into virtio module
(net/virtio) Migrate Status
to virtio-spec
(net/virtio) Migrate NetDevCfgRaw
to virtio-spec
Rename virtio-spec
dependency to virtio
(virtio-spec) Move fs
module into separate file
(fs/virtio) Migrate FsDevCfgRaw
to virtio-spec
(x86_64) Move Fdt
creation into get_fdt
(x86_64) Extract TOTAL_MEMORY
access
(x86_64) Extract PHYSICAL_FREE_LIST
lock
(virtqueue) Extract NotificationData
creation
(virtqueue/packed) Add RingIdx
(virtqueue/packed) Migrate from zerocopy::little_endian
to virtio-spec
(virtqueue) Migrate to DescrFlags
to virtio-spec
(virtqueue) Migrate Descriptor
to virtio-spec
(virtqueue/split) Migrate UsedElem
to virtio-spec
(virtqueue/packed) Migrate EventSuppr
to virtio-spec
(virtqueue) Migrate Descriptor
to virtio-spec
(virtqueue/split) Make accesses non-volatile
(virtqueue/split) Rename GenericRing::index
to idx
(virtqueue/split) Migrate to virtq::Avail
and virtq::Used
(virtqueue/packed) Move avail and used flag handling to the ring
Move fd::IoError
to io::Error
Add and use io::Result
type
(fuse) Migrate to fuse-abi
crate
(virtio) Adapt DeviceConfigSpace::read_config_with
(virtio-spec) Import endian-num types from crate root
(virtio-spec) Move NotificationData into separate module
(virtio-spec) Feature-gate transport modules
(virtq) Use safe types for virtq buffers
(virtq) Represent avail and used buffers as distinct types
(virtq) Eliminate RefCell and Rc usage
Migrate to virtio-spec release
(virtio-net) Remove unused is_multi field
(virtq) Reduce code duplication
(xtask) Move sanitized cargo to crate root
(xtask) Extract sanitize
function
(xtask) Extract fn project_root
(uhyve) Unify uhyve_send
(virtq) Remove intermediate virtqueue channels
(arch) Move boot info into env
(riscv64) Avoid redundant HARTS_AVAILABLE
access
Remove arch-specific get_fdt
(mm) Memory check
(x86_64/physicalmem) Inline find_all_nodes
(x86_64/physicalmem) Simplify TOTAL_MEMORY
handling
(x86_64/acpi) Use methods for reading pointers
(apic) Merge ioapic_inton
and ioapic_intoff
(apic) Simplify I/O APIC config
(xtask) Make --smp
hypervisor independent
(xtask) Determine small
in Rs
(xtask) Extract arch in Rs
(xtask) impl Display for Arch
(pci) Remove explicit type
Move lint config into Cargo.toml
(console) Extract Console::write
(stdio) Use Console::write
(console) Extract Console::read
(console) Centralize state
(xtask) Extract clippy base
(stdio) Migrate to uhyve-interface
(acpi) Migrate from x86
crate to x86_64
crate
(apic) Migrate MSR access to x86_64
crate
(apic) Migrate CR3 access to x86_64
crate
(apic) Vendor MSR constants
(gdt) Migrate CR3 access to x86_64
crate
(kernel) Migrate CR0 and CR4 access to x86_64
crate
(pci) Migrate to x86_64
crate
(pic) Migrate to x86_64
crate
(pit) Migrate to x86_64
crate
(processor) Migrate CR0, CR4, and XCR0 access to x86_64
crate
(processor) Migrate FS and GS access to x86_64
crate
(processor) Migrate halt()
to x86_64
crate
(processor) Migrate EFER setup to x86_64
crate
(processor) Migrate CPUID access to raw_cpuid
crate
(processor) Decrease unsafe
scope
(processor) Migrate MSR access to x86_64
crate
(processor) Use specialized functions for STAR, LSTAR, and SFMASK access
(processor) Use safe function for STAR access
(systemtime) Migrate port access to x86_64
crate
(vga) Migrate port access to x86_64
crate
(mm) Migrate CR3 access to x86_64
crate
(rtl8139) Migrate port access to x86_64
crate
(uhyve) Migrate port access to x86_64
crate
π Documentation
(virtio-spec) Add missing doc aliases
(virtio-spec) pvirtq
module docs typo
β‘ Performance
(arch) Relax TOTAL_MEMORY
accesses
Make network buffers a power of two
π¨ Styling
(virtio-spec) Format code in doc comments
(x86_64/paging) Stray comma
(gem) Rename RecieveStatus
to ReceiveStatus
Fix typos
Add typos.toml
(xtask) Add semicolons
Format hex literals as lowercase
Dont use core
as ::core
outside of macros
Use Rust 2024 style edition
(ci) Format
π§ͺ Testing
Add get_application_parameters
test
βοΈ Miscellaneous Tasks
(Cargo.toml) Sort features
Migrate to maintained rustsec/audit-check
Add typos job
Remove caching
You canβt perform that action at this time.