Just a small change, now a short (8 character) alpha-numeric string will be used whenever a user hosts a connection, rather than just having to enter the IP and port combination:
Just a small change, now a short (8 character) alpha-numeric string will be used whenever a user hosts a connection, rather than just having to enter the IP and port combination:
As I mentioned once before, I’ve been meaning to add the ability to share screens between different users. I spent a few hours yesterday evening, trying to get everything working correctly in the new setup. So far, I have messages sent and received (encoded using a Public Domain Java Base64 library) between a host and one or more clients, all with an easy enough to use GUI built right into Wombat:
Threads can get all sorts of interesting sometimes. And fun to debug. Essentially, whenever the user would restart the Petite process (using the Stop button) a new output thread would be spawned. There wasn’t any problem with the output being duplicated or lost–I already had locking in place to prevent that–but what would happen is that the threads would interleave the output, scrambling output nicely.
A few minor enhancements with the new Petite-based builds:
I still haven’t pushed an official build for the students to actually use, but we’re getting closer. I think by the time that the students get to the midterm or so, we should be ready to switch over.
Bug fixes:
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.
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.x line (using the built in updater and Petite).
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:
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.
…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!