Comments (4)
Yes, this would be good to have. But what?
Does Rust itself have a guideline for how long to support older versions? What do other crates have? What Rust version is most commonly shipped by Linux distro's?
I often work with Go too, which officially support the latest and the previous stable version, which is about 1 year with Go's release schedule.
On thing that I am definitely will be factoring in is maintenance burden, as I prefer to keep this project alive and well but not spend too much time on it 😬
from rust-id3.
Related: https://internals.rust-lang.org/t/rust-msrv-policy-and-linux-distros/17074
from rust-id3.
With binaries it's less of an issue and mainly hangs on what ever the distros have yes.
But with libraries the problem becomes all the downstream consumers especially if 10 layers down the dependencies we are pretty conscious when we raise MSRV given every layer of dependency takes time to bump with more moving parts.
My motivation here was because my builds for audiotags broke as downstream library consumer + who ever was using audiotags as a library downstream here so I was hoping to have a standard(ish) library style policy and I think just setting initial MSRV to 1.65 would be safe bet reflecting what most ecosystem is now currently at that provides enough flexibility and what the current established practice in the ecosystem.
We can add MSRV test with -Z minimal-versions nightly Cargo.lock generate will test it in CI properly automatically e.g. what we use in curve25519-dalek -
I've already sent a PR for that #128 too as well as quick placeholder fix #129 to resolve the build errors downstream if you're amenable to this solution.
Crucial bit in the MSRV Policy would be to bump minor patch version when ever MSRV gets bumped so downstream knows the MSRV was bumped giving them informed choice to stay at lower version until they are ready to go over the MSRV bump.
As to maintenance burden the MSRV test in CI handles most of it so if there is at least no accidental MSRV bump so we know it when happens consciously and then signal minor patch version that can be bumped at downstream when needed.
See policy we use elsewhere e.g. curve25519-dalek MSRV policy: https://github.com/dalek-cryptography/curve25519-dalek/tree/main/curve25519-dalek#minimum-supported-rust-version
from rust-id3.
Alright, thank you for picking this up.
We have not really established a real policy, so I'll support v1.65 as long as it requires not too much effort. If there ever comes a sort of recommendation from the Rust org/community then id3 will probably follow that.
from rust-id3.
Related Issues (20)
- Unified ID3v1/ID3v2 API HOT 6
- v1.1.2 no rules expected / `Flags` build errors HOT 2
- Buffering
- id3::frame::EncapsulatedObject: Encoding is inaccessible HOT 2
- Chapters TOC HOT 2
- Tokio support HOT 2
- The slash (`/`) characters in tags are not correctly parsed HOT 2
- In the "Creating a new tag, overwriting any old tag" example, why using both set_album() and add_frame()?? HOT 1
- Support for "comment" tag HOT 1
- Refactor the content.rs file HOT 2
- Allow operating on mp3 files in-memory HOT 9
- Consider making `Tag::read_from[...]` functions return `Result<Option<Tag>>` HOT 2
- Writing tags to aiff results in broken files on Apple Silicon HOT 8
- build error below latest stable-1 ? HOT 1
- Metadata is not applied to files HOT 6
- Readme Update - running tests depends on installed ffmpeg HOT 1
- Proper attribution HOT 1
- Ignore NULL byte following TXXX frame? HOT 2
- Support for UFID frames HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rust-id3.