Octave, GNU Octave, Matlab, Scientific Computing, Language, Interpreter, Compiler, C++, LAPACK, Fortran, Fun , GNU

Friday, October 26, 2007

Octave Projects for the fearless

Ok, here goes. Theres a list of projects I just racked my brains to think whats next to keep ourselves excited about Octave. Specifically the interpreter. Of late, I've been mindlessly compiling Octave, and trying to mix and match this with several packages. As my mind puts the mix-n-match, pick-n-choose mental workings on the back seat, I prefer to let the harder problems emerge; this is simply improving the interpreter. Specifically,
  1. provide hooks for profiler, and debugger as AST evaluators.
  2. creating a JIT compiler for Octave, to quicken up the loopy-loop constructs.
  3. all types of safe optimizations in the compiler for JIT.

Clearly all of these are beyond the reach of a novice untrained in the rigours of compiler design. Even then, moving this knowledge to Octave code-base is still a challenge.

With this prelude, I post the set of 5 projects I feel are challenging to anyone willing to work on Octave interpreter.

  1. Octave Startup: study the various hooks and such for Octave startup.
  2. Octave function: modify the Octave startup to not load any of the standard m-files, and just track the read-eval-print loop of a simple m-file function. Trace the parse tree, its loading into interpreter data structure (e.g, symbol table) and its evaluation.
  3. Do #2 for a single for-loop.
  4. Study python-byte compiling from AST to the byte code, and byte code interpreter. Look at opimizations.
  5. Add the '?' C-language ternary operator, by modifying the Octave parser and interpreter.
I think this will set the juices flowing and create a potential test suite to check your skills, while you try to improve the Octave interpreter.

-Muthu
PS: Use doxygen with the Octave CVS in the source browser mode. It helps in learning the Octave sources, with a hyperlinked document from doxygen.

No comments:

Creative Commons License