Skip to content

Latest commit

 

History

History
68 lines (44 loc) · 2.22 KB

TODO.md

File metadata and controls

68 lines (44 loc) · 2.22 KB

TODO

  • maybe take file name and line number as arguments to choose() functions -- this will support inference of self-similarity in the choice tree based on the fact that it's just the same code executing over and over (but with different inputs, so the self-similarity is not expected to be perfect) -- this also helps traceability and debuggability

  • (perhaps optionally) avoid exploring branches with zero weight

  • write some more generators in the test driver

  • work out how to evaluate how well this thing works, when used in non-trivial situations

  • coverage-guided generation

  • plug this into Csmith and YARPGen and see what happens

  • work out how to take hints from the user about things like desirable patterns, subtrees that are likely to behave similarly every time we reach them, etc.

  • work out how to take feedback about good/bad paths into account

  • maybe split this into multiple files but then put them together using a script so in the end there's a single file that people can use

  • make BFS optionally sometimes sample from lower depths, or even round-robin among levels with available work

  • probably should look at the priority queue in the middle of some runs and see how big the buckets are getting

  • make everything here consistent with GLOSSARY.md

  • cardinality estimator guide

  • coverage-driven guide

  • meta-guide that round-robins among existing ones

  • support hierarchy/grouping in the stream of choices

  • put everything except Guide into a "details" namespace?

  • once things are working, we can play allocator games to substantially reduce memory use

  • support weighted choice using an interface like YARPGen's qinternal one

  • wrap this library in a process and write a separate library that talks to it using RPC or whatever, so programs like Csmith can use this; perhaps use https://github.com/rpclib/rpclib

  • support rejection of samples: #2

  • optionally stop adding nodes to the explicit decision tree beyond a certain depth, since beyond a certain point we're just never going to be able to make use of the information contained down there

  • what do we do about swarm testing, or parameter shuffling as YARPGen calls it?