Giter Site home page Giter Site logo

Comments (6)

dtolnay avatar dtolnay commented on July 18, 2024 2

It looks like you are using an old nightly compiler. In general, old nightly compilers are not supported. The expectation is that if you are using a nightly toolchain, then you are remaining on top of recent nightly changes.

If you need to pin to an old nightly toolchain, then you would need to use corresponding old crate versions, too (such as via a lockfile).

from proc-macro2.

Rahix avatar Rahix commented on July 18, 2024 1

@dtolnay Just to provide some context, the reason we pin older nightlies for Rust on AVR is that there are compiler regressions in the AVR backend from time to time. This has two implications:

  1. When a regression is present, there simply is no way to use latest nightly.
  2. When no known regressions are present, we still want to advertise a known-to-work compiler version so unsuspecting users aren't the first ones to run into new problems.

Such is the life of a tier 3 target...

In general, old nightly compilers are not supported. The expectation is that if you are using a nightly toolchain, then you are remaining on top of recent nightly changes.

This is a bit unfortunate, as for the stated reason, we A) cannot always upgrade nightly and B) this makes regression-hunting quite difficult if certain crates break with not-that-old compiler versions.

then you would need to use corresponding old crate versions, too (such as via a lockfile).

This is a good pointer though, I guess we can try doing that for crates that are AVR-specific. This of course won't work as soon as any non-platform-specific crate in the dependency tree pulls in later versions...

from proc-macro2.

Rahix avatar Rahix commented on July 18, 2024 1

Actually, thinking about it, the version in rust-toolchain.toml is probably infered from current latest installed nightly

@mikkelens No, it is not. It is hard-coded here and we update it when we have a new known-to-work compiler version.

from proc-macro2.

mikkelens avatar mikkelens commented on July 18, 2024

This being missing makes me unable to use arduino-hal templates with cargo generate because their dependencies use this crate through quote, and using stable is not an option for this. I'm trying to figure out how to force transitive dependencies to use 1.0.35 of quote or 1.0.79 of proc-macro2, but simply specifying it for cargo with a cargo update -p proc-macro2 --precise 1.0.79 does not do it.

from proc-macro2.

mikkelens avatar mikkelens commented on July 18, 2024

The avr-hal templates for arduino, aka. arduino-hal templates, use a rust-toolchain.toml file to specify specific versions of nightly similar to what you describe, but like you imply, they use an older version of nightly (in my case: 2024-03-22).
Anyways, I was able to solve the issue by adding this to my my Cargo.toml, which ends up modifying my "lockfile" (assuming you are refering to Cargo.lock):

[patch.crates-io]
proc-macro2 = { git = "https://github.com/dtolnay/proc-macro2", rev = "4ba4ab1ec52d9e8286826a898430683ba002a002" }

from proc-macro2.

mikkelens avatar mikkelens commented on July 18, 2024

Actually, thinking about it, the version in rust-toolchain.toml is probably infered from current latest installed nightly, and I updated nightly only after generating the template today. Sorry for the confusion.

from proc-macro2.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.