---
title: improving Rust's debuginfo quality, 2022 Mid-year progress review
tags: survey
---
# improving Rust's debuginfo quality, 2022 Mid-year progress review
This document opens with a series of questions aimed toward [structured responses](#Structured-Questions). These are then followed by a series of more [open-ended questions](#Open-Ended-Questions).
[toc]
## Structured Questions
:::info
(These questions are formatted to be heavy on reading but light on writing; the intent is to reduce the amount of overall effort you need to put into answering our questions.)
:::
NOTE: The use of "we" below is not necessarily meant to solely denote you or your collaborators personally. If some work done by others ends up achieving your goals, that can still represent a satsified goal.
### The easy-yet-hard question: Any progress?
**Q:** *How do you *feel* about progress so far on this ambition (check one).*
* [X] The Rust project has made progress on this ambition since the start of the year
* [ ] The Rust project has not made any progress on this ambition since the start of the year
* [ ] We need help figuring out what has happened on this ambition since the start of the year
* (if you checked this last box, please also send a privmsg as soon as you can to Felix or Wesley or both, so we can help you with the rest of these questions.)
### How big does the problem feel right now?
**Q:** *How do you **feel** about the plans for this ambitition (check one):*
* [ ] we think all of our planned goals for this year are completed.
* [ ] we think this year's planned goals for this ambition will be achieved in the next six months.
* [ ] we do not think this year's planned goals for this ambition will be achieved in the next six months.
* [X] we had no goals for this ambition planned for this year, but we made ad-hoc progress on the problem itself
* [ ] we had no goals for this ambition planned for this year, and made no progress on the problem it represents
* [ ] other: __________________
**Q:** *Based on the year so far, how do you **feel** about resolving the overall problem attached to this ambition (check one).*
* [ ] we think this problem is now solved
* [ ] we think the most important parts of a solution will be available in the next six months.
* [ ] we think a solution will be available in the next two years, but not sooner than six months.
* [ ] we do not think a solution will be achieved in the next two years, but we do think it is a solvable problem
* [ ] we think our chosen problem is never-ending and will never be "resolved"
* [X] other: There's nearly an unbounded amount of effort that could be spent improving debuginfo quality but I think we *are* making significant improvement both over the last 6 months and in the final 6 months of this year as well.
### How it started
**Q:** *Which of the following best describes the status of the initiative or aspiration at the start of the year?*
(Usually just one check-box should suffice here; if you check off "other", please do fill in the blank with text so we can better understand your status.)
* [ ] at start of 2022, we did not know about any problems in this domain.
* [X] at start of 2022, we knew a problem existed, but we did not yet have a specific goal in mind for solving the problem.
* [ ] at start of 2022, we had a solution or goal in mind, but did not have a plan for how to achieve it.
* [ ] at start of 2022, we had a plan for how to achieve a specific goal, but we did not have intermediate progress points (aka "milestones") established.
* [ ] at start of 2022, we had a plan with milestones, but none of those milestones had been accomplished.
* [ ] at start of 2022, we had a plan, some of which had been completed, but more work remained to be done.
* [ ] at start of 2022, we had a plan, but based on what we had completed so far, it did not solve the problem; the plan needed revision.
* [ ] at start of 2022, we had completed most of our plan; our main focus was polish and getting the work into the hands of Rust users.
* [ ] other: __________________
### How it's going
**Q:** *Which of the following best describes the status of the initiative or aspiration today, i.e. at the time you are responding to these questions (check all that apply):*
* [ ] we need help figuring out what has happened on this ambition since the start of the year
* [X] we would like help deciding what to do next
* [X] we understand the problem better than we did at the start of the year
* [ ] we have a high-level end-to-end plan to solve the problem
* [ ] we have milestones that represent individual units of work for the near term that each make progress towards a solution
* [X] we have Rust contributors who have agreed to help with the units of work that we have identified
* [ ] we have a schedule that spells out when we expect the benefits of our work will be in the hands of Rust users
* [ ] we have completed some of our milestones
* [ ] we think we have implemented a solution to the problem, but most of our work has not yet landed in hands of Rust users
* [X] (some of) our work has reached Rust programmers but we do not know if it has improved Rust for them
* [X] (some of) our work has reached Rust users and (what we learn of) their usage is informing our plans going forward
* [X] other: Much of the work wesleywiser is aware of has landed in 1.60 or 1.61 but there are a few small pieces landing in 1.62 (current beta).
## Open-Ended Questions
:::info
These questions are light on reading and very open-ended. Write whatever you like in your responses here.
If you feel like everything you cared to report was covered by your responses in the first section, then you need not respond to any of the open-ended questions.
:::
### Progress itself
**Q:** *What progress have you made so far? What surprises have you encountered?*
:::success
We've made concrete improvements/fixes to debuginfo generation. Specifically:
- Change char type in debuginfo to DW_ATE_UTF [#89887](https://github.com/rust-lang/rust/pull/89887)
- Fix debuginfo for pointers/references to unsized types [#93006](https://github.com/rust-lang/rust/pull/93006)
- debuginfo: Support fat pointers to unsized tuples. [#94050](https://github.com/rust-lang/rust/pull/94050)
- debuginfo: Fix bug in type name generation for dyn types with associated types but no other generic arguments. [#94810](https://github.com/rust-lang/rust/pull/94810)
- async: Give predictable name to binding generated from .await expressions. [#95011](https://github.com/rust-lang/rust/pull/95011)
- debuginfo: Fix debuginfo for Box<T> where T is unsized. [#95270](https://github.com/rust-lang/rust/pull/95270)
- debuginfo: Emit ZST struct debuginfo for unit type when CPP-like debuginfo is enabled [#96316](https://github.com/rust-lang/rust/pull/96316)
Suprises:
Debuginfo just doesn't have enough test coverage, but that isn't particularly suprising.
:::
### Community development
**Q:** *Did you get any new contributors so far this year? How many new people showed up? How many seem to have stuck around? Do you need assistance with mentoring capabilities?*
:::success
None that wesleywiser is aware of.
:::
### Retention and Priorities
**Q:** *Did you or any of your collaborators end up shifting your Rust-related activity to a different project? If so, which project?*
:::success
No, not really.
:::
**Q:** *If you answered "yes" above: What made you or your collaborators decide to change focus? (example responses: "X was more interesting to me", "Y was a more important problem to address", or "I had an easier time making forward progress on Z")*
:::success
:::
**Q:** *In your opinion: What important things are we **not** doing because you and your collaborators are focused on this project (in other words, what might you have done instead of this)? How did you decide to focus on this project?*
:::success
Hard to say ... debugging in general is a top priority for mw & wesleywiser's team.
As pure conjecture, we might be working on compiler performance or a long tail of random features that are either not implemented or unstable.
:::
**Q:** *What observations/learnings would lead you to switch your focus to a different project within Rust? Are such observations/learnings currently visible to you?*
:::success
N/a
:::