Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Maintenance release 4.2.1 #100

Conversation

sirhcel
Copy link
Contributor

@sirhcel sirhcel commented May 10, 2023

We have integrated several fixes since releasing 4.2.0 but the current main branch breaks semantic versioning due to the field interface added to UsbPortInfo with 364e1fb.

There is demand for a maintenance release from our Matrix channel to release the changes from #98. What about cutting it as everything from main but the breaking changes?

I've checked semantic version compatibility as follows:

$ cargo semver-checks check-release --baseline-version 4.2.0
    Updating index
     Parsing serialport v4.2.1-alpha.0 (current)
     Parsing serialport v4.2.0 (baseline, cached)
    Checking serialport v4.2.0 -> v4.2.1-alpha.0 (patch change)
   Completed [   0.013s] 43 checks; 43 passed, 0 unnecessary

This PR is for discussing the actual changes and populating the release branch with them. Once we agree that this moves into the right direction, I will do the housekeeping and update version, changelog, ...

mf-dhadley and others added 21 commits May 10, 2023 22:17
On macOS, attempts to set the baud rate of pseudo terminals via normal
ioctl apis appears to be problematic. To support users targeting these
pseudo terminals, this commit adds the ability to use a `baud_rate` of 0
to skip the attempt altogether.
The method used the ioctl return value rather than the reference argument when constructing the returned bitflags
CFStringGetCStringPtr is not guaranteed to succeed,
CFStringGetCString should be used instead.
Update to the latest nix version and adapt nix::poll::ppoll to receive
an Option<nix::sys::signal::SigSet> instead of a plain SigSet.

Signed-off-by: Richard Leitner <richard.leitner@skidata.com>
return the ANSI encoded version of the string, instead, use
ReqQueryValueExW to return the UTF-16 encoded version. This should
prevent device names from breaking when they use non-ASCII characters.

Signed-off-by: mlsvrts <mlsvrts@protonmail.com>
'SetupDiGetDeviceRegistryProperty' in order to support unicode
manufacturer information and device friendly names.

Signed-off-by: mlsvrts <mlsvrts@protonmail.com>
Both issues improve readability.
* Add a loopback test example

Adds a new example with support for running loopback tests on a port and
printing some timing statistics. Loopback test supports running in
split or standard serial port modes, and specifiying the data and iterations
of test to perform.

Signed-off-by: mlsvrts <mlsvrts@protonmail.com>

* Remove 'short' from loopback test 'bytes' argument.

Supporting '-b' for both 'bytes' and 'baudrate' could cause a collision,
this update prevents the issue.

Signed-off-by: mlsvrts <mlsvrts@protonmail.com>

Signed-off-by: mlsvrts <mlsvrts@protonmail.com>
* Upgrade nix to 0.26

Remove the patch version in the dependency definition to get minor fixes
automatically. This shouldn't be a problem as nix should be API stable
across patch versions.

Signed-off-by: Richard Leitner <richard.leitner@skidata.com>

* Raise the MSRV to 1.56.1

This is needed as nix v0.26.0 raised its MSRV to 1.56.1. For more
information please see the changelog:
	https://github.com/nix-rust/nix/blob/master/CHANGELOG.md#0260---2022-11-29

Or the corresponding PR:
	nix-rust/nix#1792

Signed-off-by: Richard Leitner <richard.leitner@skidata.com>

Signed-off-by: Richard Leitner <richard.leitner@skidata.com>
* Update Readme

* Another typo fix
This fixes the following clippy warning:

warning: casting to the same type is unnecessary (`u32` -> `u32`)
   --> src/posix/tty.rs:461:12
    |
461 |         Ok(termios2.c_ospeed as u32)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `termios2.c_ospeed`
    |
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast
    = note: `#[warn(clippy::unnecessary_cast)]` on by default

Signed-off-by: Richard Leitner <dev@g0hl1n.net>
This allows 2.0.y bitflags versions. There are no obvious changes
necessary to our code base according to the release notes [1]. Therefore
this should be fine.

The range is given to avoid having 2 bitflags versions as clap
still depends on the 1.3.2 version. To resolve this issue there is an
extra PR open [2]. As soon as this got merged we can drop the 1.3.y
support.

We are excluding 2.1.y releases as bitflags may change the MSRV in minor
releases.

[1] https://github.com/bitflags/bitflags/releases
[2] serialport#76

Signed-off-by: Richard Leitner <dev@g0hl1n.net>
Let our README show a badge containing the MSRV.

Signed-off-by: Richard Leitner <dev@g0hl1n.net>
Use cargo-deny to add more linting power. Furthermore add exceptions for
findings.

Signed-off-by: Richard Leitner <dev@g0hl1n.net>
There's a few memory leaks on macOS where performing the "available_ports" method and we attempt to lookup a key. This commit addresses that and I've verified correct behaviour via Instruments.

The scopeguard package has been introduced so that we can conveniently track our release responsibilities.
@sirhcel sirhcel mentioned this pull request May 10, 2023
@huntc
Copy link
Contributor

huntc commented May 10, 2023

I think it’s imperative that we are able to release maintenance fixes to crates.io. 4.2.0 arguably has CVEs for macOS, and so we should consider yanking 4.2.0 and publishing a 4.2.1. Maintaining a 4.2 branch and cherry picking from main seems intuitive to me.

The main branch can then become destined towards a 5.0…

@eldruin
Copy link
Contributor

eldruin commented May 11, 2023

Seems like a good idea to me, thank you!

@sirhcel
Copy link
Contributor Author

sirhcel commented May 15, 2023

Updated the changelog and prepared release 4.2.1 plus the next iteration cycle. What's left to to:

  • Integrate this PR
  • Tag and cut the release
  • Release 4.2.1 on crates.io
  • Yank 4.2.0 on crates io
  • Discuss further steps for eventually releasing security advisories

@jessebraham, could you help out with the latter two bullet points?

Having a general release branch for 4.2 sounds good to me and will add one once the release has been cut.

Let's have a clean baseline for looking at the next commits.

This is a port of the latest cleanup done on main for the next
maintenance release.
@sirhcel
Copy link
Contributor Author

sirhcel commented May 19, 2023

@sirhcel sirhcel closed this May 19, 2023
@sirhcel sirhcel deleted the maintenance-release-4.2.1 branch June 12, 2023 07:40
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.

10 participants