cursive icon indicating copy to clipboard operation
cursive copied to clipboard

[BUG] Building Cursive with `--features ansi` yields a future incompatibility warning due to nom v4.2.3

Open cpdean opened this issue 1 year ago • 4 comments

Describe the bug Not a bug, but a compiler warning. Cursive built with ansi will print a warning that it will not build in a future version of Rust.

warning: the following packages contain code that will be rejected by a future version of Rust: nom v4.2.3

The slightly more detailed report suggests to upgrade to a newer version of nom.

To Reproduce

cargo build --features ansi
...
warning: the following packages contain code that will be rejected by a future version of Rust: nom v4.2.3

Expected behavior I would hope the latest version of Cursive would build on future versions of Rust.

Environment

macOS 13.5

uname -v
Darwin Kernel Version 22.6.0: Wed Jul  5 22:22:05 PDT 2023; root:xnu-8796.141.3~6/RELEASE_ARM64_T6000

cargo --version
cargo 1.70.0 (ec8a8a0ca 2023-04-25)

rustc --version
rustc 1.70.0 (90c541806 2023-05-31)

cpdean avatar Aug 17 '23 11:08 cpdean

Ah sorry I see this issue is actually coming from ansi-parser v0.8.0

cpdean avatar Aug 17 '23 11:08 cpdean

Ah sorry I see this issue is actually coming from ansi-parser v0.8.0

Yep, this issue stems from nom 4.x pulled in transitively by ansi-parser 0.8. There is an open, draft merge request upstream, but neither the MR nor the repo seems to have seen any activity since ~1y ago.

Since I do have worked with nom a lot before, I'll might take a look at it. Besides that .. looking at the current usage of the ansi-parser crate, it might be even possible to get by without it. Only a small subset is used anyway, and parsing out these sequences isn't a lot of work (as can be evidently seen when looking at the source of the ansi-parser crate itself).

Should still be fine for some time though.

christoph-heiss avatar Aug 17 '23 21:08 christoph-heiss

I agree, I'm not very happy with the current state of ansi-parser. We're using a pretty old version (though there has been some development on the gitlab page since), and the logic should be simple enough to re-implement.

I'd still ideally make this as a separate crate (either a fork of ansi-parser or something new) than having the ansi implementation literally in cursive - makes it easier to re-use, and easy to switch out if needed.

gyscos avatar Sep 29 '23 15:09 gyscos

This doesn't seem to be an issue anymore, it's now using:

ansi-parser v0.9.1
nom v7.1.3

fixed in commit f3bd7e96 mentioned in changelog via commit

correabuscar avatar Jun 11 '24 06:06 correabuscar