On this page:
4.1 Checking two files for differences
4.2 More Search Options
4.3 Bytecode Graphs
4.4 Dr.Racket Integration
6.1.1.7

4 Future Work

Bytecode is a useful format to program with. The language is much simpler than full-blown Racket. Besides this simple command-line explorer, here are a few ideas for future tools.

See also the project’s issue tracker.

4.1 Checking two files for differences

Bytecode should be much more amenable to "diffing" than source files. Superficial changes should disappear after the compiler’s extracted the core functionality. Potential applications:
  • Code search – find a library function similar to a code chunk

  • Detect malware / corrupted files

  • Cheating detection software

These are just ideas for now. First thing is to explore and see what’s possible and feasible.

See S6 project for inspiration. Also, possibly, MOSS.

4.2 More Search Options

The current find tool is very simple. It is only string matching on struct names. You need to know what structs are available before using it at all.

The question is, what search tools would be most useful? Some ideas:
  • Search for an identifier from the source code.

  • Search for patterns of structs (lambdas containing if-statements, I dunno)

  • Find contracts, or instances of another higher-order construct.

  • Search for often-run structs.

4.3 Bytecode Graphs

Working with the REPL gives a nice idea of that the struct hierarchy in the bytecode looks like. With a paper and pencil, I can trace out the whole picture for myself.

Unless space / efficiency becomes a problem, we should be able to generate a picture. Possibly use the racket-explorer, or maybe just make a graphical tool for Dr. Racket and record the images as the user steps through. (Imagine a REPL that remembered the picture of a user’s search path.)

4.4 Dr.Racket Integration

The command line is nice, but an interactive panel within Dr. Racket would be much nicer. One of these days.