Skip to content

fix(deps): update rust crate uart_16550 to 0.6.0#83

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/uart_16550-0.x
Open

fix(deps): update rust crate uart_16550 to 0.6.0#83
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/uart_16550-0.x

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented Jul 24, 2025

This PR contains the following updates:

Package Type Update Change
uart_16550 dependencies minor 0.3.00.6.0

Release Notes

rust-osdev/uart_16550 (uart_16550)

v0.6.0

Compare Source

  • Rename Uart16550::try_send_bytes() to Uart16550::send_bytes()
  • Rename Uart16550::try_receive_bytes() to Uart16550::receive_bytes()
  • New public methods:
    • Uart16550::ready_to_receive()
    • Uart16550::ready_to_send()
  • Documentation improvements
  • Internal safety fixes (there was no UB, just making the internal code more
    robust)
  • Uart16550::new_mmio() and Uart16550Ttty::new_mmio() now accept a
    NonNull<u8> instead of a *mut u8. The recommended way to construct the
    MMIO address is to use:
    fn main() {
      // External MMIO address.
      let mmio_address = ptr::with_exposed_provenance_mut::<u8>(0x1000);
      let mmio_address = NonNull::new(mmio_address).unwrap();
      let mut uart = unsafe { Uart16550::new_mmio(mmio_address, 4).unwrap() };
    }

v0.5.0

Compare Source

  • Complete rewrite of the crate
  • The crate is by no means "minimalist" anymore. Now, uart_16550, is a simple
    yet highly configurable low-level driver for 16550 UART devices, typically
    known and used as serial ports or COM ports. Easy integration into Rust while
    providing fine-grained control where needed (e.g., for kernel drivers).
  • Changes were made to use this on real hardware
  • Common API for x86 port I/O and MMIO
  • 100% typed spec

We thank all past contributors. We've decided to completely rewrite the crate
to clean up technical debt from the past, maintain the highest possible coding
and API standards, and to make this crate ready for usage on real hardware,
while keeping it easy to use in virtual machines.

Special Thanks

Special Thanks to Philipp Oppermann (@​phil-opp) and Martin Kröning (@​mkroening)
for their very valuable review on the new crate!

Migration to v0.5.0

Old

use uart_16550::SerialPort;

const SERIAL_IO_PORT: u16 = 0x3F8;

let mut serial_port = unsafe { SerialPort::new(SERIAL_IO_PORT) };
serial_port.init();

// Now the serial port is ready to be used. To send a byte:
serial_port.send(42);

// To receive a byte:
let data = serial_port.receive();

New (Minimalistic)

use uart_16550::{Config, Uart16550Tty};
use core::fmt::Write;

fn main() {
  // SAFETY: The address is valid and we have exclusive access.
  let mut uart = unsafe { Uart16550Tty::new_mmio(0x1000 as *mut _, 4, Config::default()).expect("should initialize device") };
  //                                    ^ or `new_port(0x3f8, Config::default())`
  uart.write_str("hello world\nhow's it going?");
}

New (More low-level control)

use uart_16550::{Config, Uart16550};

fn main() {
  // SAFETY: The address is valid and we have exclusive access.
  let mut uart = unsafe { Uart16550::new_mmio(0x1000 as *mut _, 4).expect("should be valid port") };
  //                                 ^ or `new_port(0x3f8)`
  uart.init(Config::default()).expect("should init device successfully");
  uart.test_loopback().expect("should have working loopback mode");
  uart.check_connected().expect("should have physically connected receiver");
  uart.send_bytes_exact(b"hello world!");
}

v0.4.0

Compare Source


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot force-pushed the renovate/uart_16550-0.x branch from d3a668c to 071199a Compare September 25, 2025 18:28
@renovate renovate Bot force-pushed the renovate/uart_16550-0.x branch from 071199a to 97999ba Compare December 10, 2025 10:42
@renovate renovate Bot force-pushed the renovate/uart_16550-0.x branch from 97999ba to 20d6527 Compare March 20, 2026 21:59
@renovate renovate Bot changed the title fix(deps): update rust crate uart_16550 to 0.4.0 fix(deps): update rust crate uart_16550 to 0.5.0 Mar 20, 2026
@renovate renovate Bot changed the title fix(deps): update rust crate uart_16550 to 0.5.0 fix(deps): update rust crate uart_16550 to 0.6.0 Mar 28, 2026
@renovate renovate Bot force-pushed the renovate/uart_16550-0.x branch from 20d6527 to bcf422b Compare March 28, 2026 21:53
@renovate renovate Bot force-pushed the renovate/uart_16550-0.x branch from bcf422b to 4ed7c07 Compare May 18, 2026 14:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants