# Wombat IDE - Enhancements and forward thinking

A few minor enhancements with the new Petite-based builds: Start case sensitive by default Added a library directory in preparation for the new C211 libraries Added code to prevent gensym printing (makes records more readable in general) Re-added the C211 tree library (except for draw-tree), it’s pure Scheme but the API hasremained the same I still haven’t pushed an official build for the students to actually use, but we’re getting closer.

# Wombat IDE - Bug fixes galore!

Bug fixes:

• Added the ability to cancel when saving on close
• Fixed Stop with Petite
• Fixed an issue where the cursor wouldn’t be at the end on up arrow
• Updated the launcher to actually exit in all cases, including errors on startup
• Fixed build process for Petite sub-directories
• Altered the Launcher to download zip archives and unzip them rather than grabbing the executable directly
• Set the executable bit on unpacking files from zip so that Petite actually works on Linux and OSX machines

# Wombat IDE - Shutdown hook

An interesting feature: Runtime.getRuntime().addShutdownHook(new Thread() { public void run() { NativeProcess.destroy(); } }); (NativeProcess is the Petite Process object.) Theoretically, this code will run whenever the Java Virtual Machine shuts down normally, so if it crashes there will still be problems (although it’s harder than you might think to get the JVM to crash unless you’re specifically trying to do so). I just thought that was neat and should avoid some of the problems that Odete was having with zombie processes.

# Wombat IDE 2.x

The new version of Wombat has been uploaded. Rather than the Java Webstart based 1.x version, the new version has a built in auto update system. All that you need is the launcher (you can get it here) and everything should go from there. You should automatically get at least version 2.20.3. From now on, the 1.x line (using Webstart and Kawa) will no longer be updated and all updates will be to the 2.

# Wombat IDE - The first Petite versions

I started the basic conversion to petite back on 13 January, but I finally managed to get everything working today. To start the conversion, the first thing that I did was split everything into three active projects:

• ide - contains the GUI code and code to whatever Scheme system I use
• launcher - contains the code to find the correct version of the IDE and launch it and also to update to the latest version(s) automatically
• petite - contains the bindings to Petite and can actually act as a stand-alone command-line REPL

# Wombat IDE - Yeah... Maybe I was crazy

So I started let today. And let me tell you (no pun intended) that is one sticky function to work with, once you get the entire family involved. You have let, let*, let-values, letrec, and named lets, along with all sorts of combinations thereof. I actually made it about 90% through all of these (just a few bugs to work out in letrec) before I realized that this was perhaps more than I actually wanted to do for the public version of Wombat.

# Wombat IDE - Call me crazy...

…but I’m working on my own implementation of Scheme in Java. Don’t get me wrong, Kawa has been great for what it was, but there are just enough things that are just slightly off that I want to make the change.

Essentially, it all comes down to the fact that the autograder and other tools still run on Chez Scheme. Over the semester, there have been an increasing number of problems where the two don’t quite agree and so there has to be special cases done by hand. Optimally, I would like Wombat to have 100% compatibility with Chez Scheme (at least in the parts that the students use), but I don’t think that I’m going to be able to get there with what I’m doing. There’s already about 1000 lines of code to make them work better together and it’s only likely to get longer. At some point, I might as well just write my own Scheme. So here goes!

# Wombat IDE - C211 Matrix Library

For the final exam, I’ve added a matrix API. The students are supposed to have implemented this, but we know that haven’t, so this way they can either use their version or mine.

Matrix API (Edit: The most up to date Matrix API can be found here):

# Wombat IDE - A problem with characters

Previously character literals (of the form #\a, #\space, etc) were messing with automatic indentation and bracket matching (mostly, if you tried to do #$$ or #$$ ), but now it’s fixed.

Update to version 1.340.13 if this has been a problem.

# Wombat IDE - Images are annoying sometimes

There have been two image bugs that have been bothering me for a while. Occasionally error messages will crop up showing an IndexOutOfBoundsException. I’ve fixed most of those, but I finally found a new one dealing with strange negative array indices. Some images don’t work correctly with read-image. I haven’t been able to determine why (I should be able to deal with any image that Java’s JAI can read), but I finally tracked it down to some kinds of grayscale images.