The toplevel README outlines the functionality and usage of the project. This document complements it by gathering references to the work that has been done during the Google Summer of Code 2017 and which eventually led to the current working state of the project.
All core functionality has been implemented. There are still some bugs present, whose
fixes depend on changes to rustc
that are currently
underway and possibly not yet merged at the time of submission.
See this issue for a very rough description of the problem and this rust PR as a reference to the fixes needed.
However, with the language being under active development and other changes taking place, the project will need some future work: More bugfixes, and handling of new language features might require a similar kind of development work as the one that took place over the course of the program. Other possible enhancements are listed in the issue tracker:
- Checks for not directly code-related changes to a crate: #8
- Recursive checking of dependencies: #12
- Blacklisting modules and/or silencing analysis: #22
- An automated tool checking all crates on
crates.io
: #27
On a different front, the cargo plugin could need some technical improvements to improve usability and code quality.
An overview of the functionality, and it's implementation can be found here.
The project provided a very through and challenging walkthrough to the internal working of
rustc
and it's surrounding infrastructure. I had the opportunity to learn to approach
problems differently and in the context of a wider-reaching, larger project, which has
it's own priorities and forces a different approach. In that context, the provided
functionality is a stepping stone to maintain a codebase in and interact with the wider
rust internals community.
- this repository contains the main body of code written.
- multiple pull requests to the main rust repository:
- #42507 -- Fixes span translation in metadata decoding. Had to be amended by later changes to incorporate spans in error messages properly.
- #42593 -- Implements the encoding of a reference to the source code in crate metadata, together with a lazy loading scheme. This provides for the source code to be rendered in error messages.
- #43128 -- Allows to fold over type errors - which is a facility we then use.
- #43598 -- A trivial oneliner to make an internal datatype more versatile for our purposes.
- #43739 -- A fix to encode a more suited span in crate metadata for module items.
- #43847 -- Not yet merged at the time of writing. Intends to allow for encoding of macro expansion information in crate metadata.