Wombat IDE - And so it begins

The second (and it turned out final) iteration of Wombat was based on Java. With nearly 10 years of Java experience at that point, I could write Java code more quickly and efficiently than most other languages. In addition, it had the advantage of being portable, running on essentially every modern operating system with no changes to the deployed class files.

The original project was hosted in a local SVN repository and consisted of an IntelliJ IDEA project which I almost immediately converted to a NetBeans project. My goal was a to have a simple and lightweight IDE that I could use to develop my desktop, laptop, or any of the machines at Indiana University.

So far as Scheme backend went, I was looking for something simple and fast that could easily be embedded in Java and hopefully would support the R6RS Scheme Standard. The last was to ensure as much compatibility as I could with Chez Scheme as many of the grading scripts used in the course are run using Chez Scheme. Here are the options that I considered and potential advantages or disadvantages of each one.

  • Jaja -- No longer active, old (written for Java 1.0.2 - 1.1.7), incomplete, Licensed under GPL v2
  • JScheme -- Incomplete R4RS, old (Java 1.1)
  • Kawa -- R6RS, actively developed, relatively large and complex project including more than just a Scheme, XIT/MIT license
  • SISC -- R5RS, complete standard, claimed fasted, Licensed under MPL v1.1 and GPL v2

I removed Jaja and JScheme as they were too old. After trying both Kawa and SISC, I settled on SISC as it was much easier to embed in a Java program where Kawa seemed primarily focused on being a stand alone system. At this point, I was using Subversion revision numbers for my versioning system and with a good number of revisions before I got a successful release build, this build was known as r83. Prior to r75, I stored Wombat in a private SVN repository, but as of r75, I moved to Google Code at http://code.google.com/p/wombat-ide/.

The first release of Wombat was somewhat underwhelming, but nevertheless supported multiple open documents; syntax highlighting for a limited number of keywords, strings, and comments; and bracket matching, all of which can be seen in the below screenshot.