-
-
Notifications
You must be signed in to change notification settings - Fork 14.7k
non-lexical lifetimes (NLL) tracking issue #43234
Copy link
Copy link
Closed
Labels
A-NLLArea: Non-lexical lifetimes (NLL)Area: Non-lexical lifetimes (NLL)A-lifetimesArea: Lifetimes / regionsArea: Lifetimes / regionsC-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCCategory: An issue tracking the progress of sth. like the implementation of an RFCS-tracking-impl-incompleteStatus: The implementation is incomplete.Status: The implementation is incomplete.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.T-langRelevant to the language teamRelevant to the language teamdisposition-mergeThis issue / PR is in PFCP or FCP with a disposition to merge it.This 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.The final comment period is finished for this PR / Issue.metabugIssues about issues themselves ("bugs about bugs")Issues about issues themselves ("bugs about bugs")
Metadata
Metadata
Assignees
Labels
A-NLLArea: Non-lexical lifetimes (NLL)Area: Non-lexical lifetimes (NLL)A-lifetimesArea: Lifetimes / regionsArea: Lifetimes / regionsC-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCCategory: An issue tracking the progress of sth. like the implementation of an RFCS-tracking-impl-incompleteStatus: The implementation is incomplete.Status: The implementation is incomplete.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.T-langRelevant to the language teamRelevant to the language teamdisposition-mergeThis issue / PR is in PFCP or FCP with a disposition to merge it.This 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.The final comment period is finished for this PR / Issue.metabugIssues about issues themselves ("bugs about bugs")Issues about issues themselves ("bugs about bugs")
Type
Fields
Give feedbackNo fields configured for issues without a type.
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
#![feature(nll)]for experimentation.uitest suite. (Current plan forcompile-failsuite is to port majority of those tests toui)cargo checkwithout and with NLL turned on, so that we can see a summary of the current performance impact on the compiler's static analyses in isolation.-Z borrowck=migrateto test planning migration to non-lexical lifetimes #46908 and Add-Z borrowck=migrate#52681-Z borrowck=migrate#52681, we are issuing compatibility warnings on the 2018 edition.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:
NLL-Complete, corresponding to code that should be accepted but isn't right now.NLL-sound, corresponding to code that should get errors, but isn't right now.NLL-diagnostics, corresponding to low quality error messages.NLL-performant, corresponding to cases where NLL analysis takes too long.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 aNLL-foolabel 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-mentorare those that contain mentoring instructions that can help you get started.Issues (and pull requests) tagged with
I-nominatedare 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