Open ddunbar opened 7 years ago
We now have an implementation of the core delta debugging algorithm already in SwiftPM:
https://github.com/apple/swift-package-manager/pull/1036
As a starter bug, this requires:
Learning about the behavior of existing tools like this (see description), and why they are useful
Figuring out how to invoke add a new tool to SwiftPM (e.g., {swift package minimize}).
Creating a model of what kinds of reductions to try to perform. Something simple like starting with each individual source line in the entire package would be a reasonable place to start.
Writing the logic to invoke the delta debugging algorithm with these reductions and then invoke the test predicate – this involves copying the source to a staging area, performing the modification, and then checking that the test predicate (i.e. shell script) passes or not.
I think this is a good starter bug because it is a potentially high-value feature that is purely additive and doesn't require significant design discussion (beyond the software engineering level).
Resetting assignee for all Starter Bugs not modified since 2018.
Additional Detail from JIRA
| | | |------------------|-----------------| |Votes | 0 | |Component/s | Package Manager | |Labels | Bug, StarterBug | |Assignee | None | |Priority | Medium | md5: 83f2d1d181b16d93390c4b88e07dd5ffIssue Description:
SwiftPM should have a feature to automatically minimize a package to the smallest package to pass some test predicate (supplied by a shell script, for example).
This is invaluable tool for getting high quality / actionable bug reports for compiler crashes, build failures, etc. from developers who may not otherwise be able to share their source code.
Similar tools in this space are:
C-Reduce: https://embed.cs.utah.edu/creduce/
Delta: http://delta.tigris.org
Bugpoint: http://llvm.org/docs/Bugpoint.html
and we know from experience that these tools can be very powerful at efficiently reducing even very large test inputs to small test cases.