Skip to content

non-lexical lifetimes (NLL) tracking issue #43234

Closed

Description

@nikomatsakis

This issue tracks the status of the transition to non-lexical lifetimes and a MIR-based borrow-checker. Both of these are jargon-y terms for compiler authors: the effect of these features on end-users is, simply put, that the compiler accepts a wider range of code with fewer bugs (and, hopefully, better error messages). We will refer to the combination of the above as NLL.

Current status

Most of NLL is already enabled in current versions of Rust. However, 'migration mode' is still enabled (#58781). This causes us to reject some code that we would eventually like to accept, and to use different code paths for emitting some diagnostics. The progress towards disabling 'migration mode' is tracked in #58781

Key facts for getting involved

Implementation plan

Many of the work items for unchecked bullets above are gathered into one place on #57895

How to join the working group

If you'd like to help, please join the NLL working group -- just leave a comment below or ping @nikomatsakis on gitter and you will be added to the @rust-lang/wg-compiler-nll team. You will then get occasional pings (e.g., when new mentoring instructions are available or when looking for help), as well as being eligible to be assigned to issues and so forth. We discuss things on the WG-compiler-nll channel on Gitter.

How to find an issue to work on

To find important issues, use one of the following queries:

You may also wish to look for E-mentor issues, which means that they have mentoring instructions. Also, if an issue is assigned, then someone is supposed to be working on it, but it's worth checking if they have made progress and pinging them -- people often get busy with other things.

Issues tagged with NLL-deferred are low priority right now, but if one strikes your fancy, feel free to tackle it!

How are issues are organized

All issues related to NLL are tagged with WG-compiler-nll. They are further tagged with a NLL-foo label to indicate a subcategory. Issues that have no NLL-label are considered "untriaged" and need to be sorted. Issues tagged with NLL-deferred are low priority right now.

Finally, you can always take a look at the full list of NLL-related issues.

In particular, issues tagged with E-mentor are those that contain mentoring instructions that can help you get started.

Issues (and pull requests) tagged with I-nominated are meant to be reviewed by the WG-compiler-nll at each weekly meeting. Here's the current nominated list.

If you can't find anything, reach out to @nikomatsakis on gitter.

Other issues

This section tracks related issues and notes.

Bugs in AST borrow check fixed in MIR borrowck

#47366 tracks known bugs from the AST borrow checker that were fixed in the MIR borrow checker. For each such bug, we have added a test to the repo with #![feature(nll)] and then closed the relevant issue (obviously, though, the bug will still be reproducable until the MIR-based borrow checker is stabilized, presuming one uses the AST-based borrow checker). You can also search for things tagged with NLL-fixed-by-NLL.

Questions to be resolved before stabilization
Possible extensions
  • refine liveness with maybe-initialized at greater resolution than a single variable

Activity

  1. added
    T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.
    on Jul 14, 2017
  2. nikomatsakis commented on Jul 14, 2017

    @nikomatsakis
    ContributorAuthor

    I've written up a gist with the initial draft of a plan. It lays out the first few steps anyway and some of the initial vision. I'll just copy-and-paste the end here, which lays out some of the PRs I think would make sense:

    (list moved to header)

  3. nikomatsakis commented on Jul 14, 2017

    @nikomatsakis
    ContributorAuthor

    @Nashenas88 has expressed some interest in doing this! It occurs to me that this project may be big enough for multiple people, too.

    cc @rust-lang/compiler

  4. added
    C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFC
    on Jul 28, 2017
  5. added a commit that references this issue on Jul 28, 2017
  6. added a commit that references this issue on Aug 10, 2017
  7. added this to the milestone on Sep 15, 2017
  8. added
    E-mentorCall for participation: This issue has a mentor. Use #t-compiler/help on Zulip for discussion.
    on Sep 15, 2017
  9. removed this from the milestone on Sep 15, 2017
  10. spastorino commented on Sep 18, 2017

    @spastorino
    Member

    have talked with @nikomatsakis and I'm joining this group 😄

  11. 111 remaining items

  12. Aaron1011 commented on Feb 6, 2022

    @Aaron1011
    Contributor

    I've started updating this issue with a summary of the current status.

  13. m-ou-se commented on Mar 31, 2022

    @m-ou-se
    Member

    Here's an example that only compiles with #![feature(nll)] enabled: #95527

    What work is left before that compiles on stable?

  14. m-ou-se commented on May 17, 2022

    @m-ou-se
    Member

    I've nominated this because this is a blocker* for scoped threads, and would like to know if we can stabilize nll in Rust 1.63.

    (* We could stabilize scoped threads without waiting for nll, but some use cases will then result in confusing errors.)

  15. m-ou-se commented on May 17, 2022

    @m-ou-se
    Member

    Looks like tracking of this issue is happening here now: #95565 (:

  16. removed
    I-lang-nominatedNominated for discussion during a lang team meeting.
    on May 17, 2022
  17. jackh726 commented on May 17, 2022

    @jackh726
    Member

    Also in #58781

  18. m-ou-se commented on May 17, 2022

    @m-ou-se
    Member

    And also this one, it seems? #57895

    That's a lot of tracking issues for the same thing (:

  19. jackh726 commented on May 17, 2022

    @jackh726
    Member

    Closed that one in favor of this and #58781

  20. added a commit that references this issue on Jun 16, 2022
    34f2839
  21. added a commit that references this issue on Sep 15, 2022
    a0a52cc
  22. added a commit that references this issue on Aug 29, 2024
    e450f70
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-NLLArea: Non-lexical lifetimes (NLL)A-lifetimesArea: Lifetimes / regionsC-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCS-tracking-impl-incompleteStatus: The implementation is incomplete.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-langRelevant to the language teamdisposition-mergeThis issue / PR is in PFCP or FCP with a disposition to merge it.finished-final-comment-periodThe final comment period is finished for this PR / Issue.metabugIssues about issues themselves ("bugs about bugs")

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions