[Oxidation Plan] Choosing a target Rust version and edition

Yuya Nishihara yuya at tcha.org
Mon Jul 1 08:57:28 EDT 2019


On Mon, 1 Jul 2019 10:32:34 +0200, Raphaël Gomès wrote:
> As more and more Rust makes its way into the Mercurial code base, the 
> question of picking a minimum required version of Rust becomes more and 
> more urgent. On the one hand, staying too up to date means breaking the 
> install for some of our users, and staying too far behind means creating 
> a technical debt that only gets worse over time.
> 
> Many interesting changes have happened in Rust since the Oxidation Plan 
> was introduced, like the 2018 edition and procedural macros:
> 
>      - Opting in to the 2018 edition would be a clear benefit in terms 
> of future proofing, new (nice to have) syntactical sugar 
> notwithstanding. It also has a new non-lexical, non-AST based borrow 
> checker that has fewer bugs(!) and allows us to write correct code that 
> in some cases would have been rejected by the old one.
>      - Procedural macros would allow us to use the PyO3 crate which 
> maintainers have expressed the clear goal of compiling on stable, which 
> would help in code maintainability compared to rust-cpython.
> 
> These are the two major features I can think of that would be clearly 
> beneficial and that I think should matter in determining the target Rust 
> version. This means that the absolute oldest rustc version should be 
> 1.31.1, however picking the more recent 1.34.2 would be preferable as it 
> is of course newer, but still packaged in Debian.

Since Rust modules are highly experimental, I don't think it's important
to support quite old rustc versions at this point. Maybe supporting two or
three major versions should be enough.

Personally, I'm okay with any recent rustc version which is packaged for
Debian sid.

> I can volunteer to write the patch that will port the current 2015 
> edition code to 2018 and pin down the Rust version. I've talked to 
> gracinet, who is currently the only other contributor writing major Rust 
> patches, and he would be fine (could I say thrilled?) with adapting his 
> newer code to the 2018 edition after said patch lands.

+1 for the removal of extern crate.


More information about the Mercurial-devel mailing list