NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #2730 most downloaded on crates.io
Cross platform serial ports
Last release 2 months ago
31 Jul 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 49 of 49 stable releases
3 versions withdrawn
withdrawn after publishing
5 years old
55 releases · first in 2021
One column per quarter.
[fix][minor] Allow deserializing char size and stop bits from signed integers (as long as they are positive).
Changes:
[change][minor] Switch from winapi to windows_sys for Windows platforms.
Changes:
winapi to windows_sys for Windows platforms.[fix][minor] Fix build on Haiku.
Changes:
SerialPort::pair() on OpenBSD, Haiku and DragonFlyBSD.[add][minor] Include tty0tty devices in available_ports() on Linux.
Changes:
tty0tty devices in available_ports() on Linux.[fix][minor] Make SerialPort::pair() open the first PTY in non-blocking mode.
Changes:
SerialPort::pair() open the first PTY in non-blocking mode.[fix][patch] Improve example in main library documentation.
Changes:
[fix][minor] Fix get_baud_rate() on Linux with glibc 2.42.
Changes:
get_baud_rate() on Linux with glibc 2.42.[fix][patch] Fix build for AIX targets.
Changes:
[fix][minor] Fix SerialPort::discard_buffers() on Unix platforms.
Changes:
SerialPort::discard_buffers() on Unix platforms.[add][minor] Add SerialPort::set_break() to hold the data line in break condition.
Changes:
SerialPort::set_break() to hold the data line in break condition.[fix][minor] Fix verification of applied settings on iOS and macOS.
[fix][minor] Allow for a 2.5% deviation in actual baud rate when applying settings on Unix.
Debug for SerialPort showing the underlying file descriptor (Unix) or handle (Windows).[add][minor] Support more custom baud rates on iOS and macOS.
[fix][patch] Fix documentation build failre on http://docs.rs.
[fix][patch] Fix compilation with "doc" feature on supported platforms.
[add][minor] Add a "doc" feature to enable all feature and platform specific items with stubs for documentation purposes.
[add][minor] Add SerialPort::set_rs4xx_mode() and get_rs4xx_mode() behind rs4xx feature flag.
SerialPort::set_rs4xx_mode() and get_rs4xx_mode() behind rs4xx feature flag.[change][patch] Improve documentation about timeouts and composed operations like read_exact() and write_all().
read_exact() and write_all().[fix][minor] Fix write timeout for Unix platforms.
[add][minor] Add SerialPort::pair() on Unix platforms to open a pair of connected pseudo-terminals.
SerialPort::pair() on Unix platforms to open a pair of connected pseudo-terminals.[change][minor] Open serial ports on Unix with the O_NOCTTY flag.
O_NOCTTY flag.[fix][minor] Set the IGNBRK and IGNPAR flags in Settings::set_raw() on Unix platforms.
IGNBRK and IGNPAR flags in Settings::set_raw() on Unix platforms.[add][minor] Add SerialPort::read_exact() that takes &self.
SerialPort::read_exact() that takes &self.SerialPort::write_all() when a write returns Ok(0).SerialPort::write_all() when a write is interrupted.[add][minor] Add SerialPort::try_clone().
SerialPort::try_clone().[fix][minor] Make TryFromError public.
TryFromError public.[add][minor] Add CharSize::as_u8().
CharSize::as_u8().StopBits::as_u8().Parity::as_str() and Parity::from_str().FlowControl::as_str() and FlowControl::from_str()`.Display for CharSize, StopBits, Parity and FlowControl.TryFrom<...> for CharSize for integer types.TryFrom<...> for StopBits for integer types.TryFrom<&str> for Parity.TryFrom<&str> for FlowControl.[add][minor] Implement Read and Write for &SerialPort.
Read and Write for &SerialPort.[change][patch] Add example for SerialPort::open() for configuring the serial port with a closure.
SerialPort::open() for configuring the serial port with a closure.[change][patch] Tweak the documentation style for the optional serde support.
serde support.[add][minor] Add optional support for serde with the serde feature.
serde with the serde feature.[change][minor] Set VMIN to 1 on Unix platforms to work correctly with epoll() on Linux.
VMIN to 1 on Unix platforms to work correctly with epoll() on Linux.[add][minor] Add the "unix" crate feature to enable Unix specific extensions.
"unix" crate feature to enable Unix specific extensions."windows" crate feature to enable Windows specific extensions.Settings::as_raw_termios() and as_raw_termios_mut() on Unix platforms.Settings::as_raw_dcb() and as_raw_dcb_mut() on Windows.SerialPort::get_windows_timeouts() and set_windows_timeouts() on Windows.[fix][oatch] Remove wrong documentation about manually using the win32 device namespace on Windows.
[change][minor] Increase the default read/write timeouts on Unix platforms to 3 seconds.
VMIN and VTIME to 0 on Unix platforms in Settings::set_raw().[change][patch] Always open serial ports with the O_NONBLOCK flag on Unix.
O_NONBLOCK flag on Unix.[add][minor] Implement From , Into and AsFd for SerialPort on Unix platforms.
From<OwnedFd>, Into<OwnedFd> and AsFd for SerialPort on Unix platforms.From<OwnedHandle>, Into<OwnedHandle> and AsHandle for SerialPort on Windows.[fix][minor] Fix Settings::get_flow_control() on Unix platforms.
Settings::get_flow_control() on Unix platforms.[fix][minor] Fix Settings::get_parity() on Unix platforms.
Settings::get_parity() on Unix platforms.[change][major] Do not implicitly set the serial port to raw mode when using a closure as second argument to SerialPort::open().
SerialPort::open().Settings::set_raw() to disable OS level input/output processing.[fix][minor] Fix Settings::get_parity() on Unix platforms.
Settings::get_parity() on Unix platforms.[fix][minor] Disable fDsrSensitivity on Windows when configuring flow control.
fDsrSensitivity on Windows when configuring flow control.[change][patch] Mention the win32 device namespace in the documentation.
Debug for Settings.[add][minor] Add write_all() function that takes &self.
write_all() function that takes &self.[change][patch] Remove fills for libc constants that are no longer needed.
[change][patch] Dual-license under BSD-2-Clause and Apache-2.0.
[add][minor] Detect /dev/ttyU* and /dev/cuaU* devices when listing serial ports on FreeBSD and DragonFlyBSD.
/dev/ttyU* and /dev/cuaU* devices when listing serial ports on FreeBSD and DragonFlyBSD.[fix][minor] Handle non-existing HKLM\Hardware\DEVICEMAP\SERIAL registry key for port enumeration on Windows.
HKLM\Hardware\DEVICEMAP\SERIAL registry key for port enumeration on Windows.[fix][patch] Fix link to documentation in Cargo.toml.
Cargo.toml.[fix][minor] Fix leaking event objects on Windows.
[add][minor] Add non-trait is_read_vectored() and is_write_vectored() functions.
is_read_vectored() and is_write_vectored() functions.[add][minor] Implement port enumeration for BSD and Apple platforms.
[fix][minor] Fix buffer truncation when enumerating ports on Windows.
[add][minor] Implement port enumeration for Windows.
termios struct on Linux, when using BOTHER with a standard baud rate.read(), write() and friends that take a const &self.KeepSettings public as intended.&self instead of &mut self.[add][minor] Add SerialPort::available_ports(), which for now only works on Linux.
SerialPort::available_ports(), which for now only works on Linux.[add][minor] First alpha release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →