Hannes Mehnert

Contact

  • Office: 4D12 (view from my office IMG_2065.JPG)
  • Mail: hame at domain

Research Interest

Teaching

Publications

Possible Bachelor/Master Projects (some ideas)

  • Scala
    • Implement a parser library similar to camlp5 (to allow correct parsing of Coq)
  • Kopitiam
    • Enhance Eclipse integration
    • Implement static analysis of Java code
    • Automation of Proofs
    • Improve Coq mode of Eclipse (proper parsing, content assistance, ..)
  • Dylan
    • Interactive Code Browser (CodeBubbles) via Web (JavaScript)
      The compiler provides an amazing amount of data via an API, it would be nice to have an interface via a web browser for this. A nice case study what can be achieved with HTML5 and Javascript. http://www.cs.brown.edu/people/acb/codebubbles_site.htm
    • Replace frontend with different syntax (LISP / PLOT)
      The syntax of Dylan is Algol-like. PLOT looks similar, apart from the macro system. The amount of punctation needed is lower. http://users.rcn.com/david-moon/PLOT/ Another project would be to write a compiler frontend which is able to parse the old Dylan syntax (LISP-style).
    • Implement Link Time Optimization for Open Dylan
      Inter-library dependencies can be resolved at link time solely. Currently every library contains every defined method, initialized constants, etc. The idea of link time optimization is to remove the unreachable code, resulting in a smaller binary and a faster startup time. Since the Open Dylan compiler has all the information which application to build, it could, instead of building a lot of shared objects, build a statically linked library with only those definitions and initializations required.

      A rough sketch for LLVM is available: http://llvm.org/docs/LinkTimeOptimization.html

    • Speedup generic function dispatch
      More efficient dispatch (by being deterministic), as mentioned in Eric Kidd's 'Efficient Compression of Generic Function Dispatch Tables', should be possible now that C3 is integrated. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.68.9146&rep=rep1&type=pdf
    • Speedup runtime
      Yoav Zibin PhD thesis has a great collection of efficient algorithms for object-oriented runtime. http://www.flashtogether.com/yoavzibin/publications/my-thesis.pdf
    • Implement 'hot code update' for UNIX
      Compiling and uploading expressions into a running binary. There is already support on Windows, but UNIX lacks this support.
    • Implement elisp frontend for deuce
      Deuce is an editor similar to emacs, but has for example polymorphic buffer pointers. This editor should be enhanced to be able to use elisp code, and thus running a huge amount of modes from emacs natively.
    • Design and implement test suite for compiler
      Testing compiler optimizations and typist is a non-trivial task. The frontend is not so much of interest, but rather are optimization and type inference. The input and output of these phases are in the intermediate language, which doesn't have a reader by now.

Projects

  • Kopitiam Eclipse plugin for side-by-side development of Java code and Coq proofs
  • Dylan compiler hacker and maintainer (Open Dylan)
    An object-centered dynamically typed programming language. Related to LISP, but with an ALGOL syntax and a clear separation of compile and run time. Dylan supports higher order functions, multiple inheritance, multiple dispatch, meta programming, exceptions, optional keyword arguments, …

    There are two open source implementations, both written in Dylan: Gwydion Dylan (originally developed at CMU) which compiles Dylan to C, but has no thread support; and Open Dylan (formerly Functional Developer, developed at Harlequin), which compiles Dylan to either x86 assembly or C code. Open Dylan has an IDE (currently only on Windows) which supports debugging, REPL, etc.

  • Live control and data flow visualization for the Open Dylan compiler
    Served as a debug tool for my Diplom thesis (to see what is going on in during compilation)
  • Network night vision - network protocol analyzer and TCP/IP stack
  • (no longer maintained) KPortage - Gentoo package management KDE frontend
  • (no longer maintained) Buddha - DNS and DHCP configuration management (used in 2005/2006 for 4000 people network)
  • (no longer maintained) Sputnik - RFID tracking middleware (used in 2006/2007 to track 1000 people during 4 days at a conference)

Date: 2012-02-05 22:58:27 EST