Skip to content

0.10.0

Latest
Compare
Choose a tag to compare
@mkroening mkroening released this 18 Jan 17:36
791b932

πŸš€ 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