Instantiations released VA Smalltalk 8.6.1 yesterday. We haven’t ported our project code to the new version yet, but given the fact that this is “just” an update to 8.6, I don’t expect to experience a lot of problems here. The Migration Guide, an often undervalued but very helpful resource, doesn’t really mention a lot that seems relevant to our code (except for the Base64 encoder, but we’ll have to see if it’s just a new class name for us or if there’s more to it).
But be warned: if you think an update that only shows in the third digit of a version number is a minor update, you are wrong, Instantiations has a tradition of coming up with new and interesting features in what seems to be minor releases. This time, there is not much new feature-wise, meaning you can’t build much new stuff for your end users that you couldn’t with 8.6. But for the developer, 8.6.1 feels a lot slicker and this release really is a big step forward.
Code Assist is such a great and nice feature and has learned quite a few nice tricks in 8.6.1. It now runs lint checks online on your code right as you type and provides you with a lot of hints and stuff.
But first things first.
I’ll give you a brief overview of the first things I encountered with 8.6.1 and that I think are probably important for other users.
Installation and Environments
One of the strange things in VA Smalltalk for the last few releases was the fact that the install scripts for Linux needed teh X server. There was no installation script for headless installation. It was easy to get around this if you know VA Smalltalk, but for a less experienced user, this was a no-go. With 8.6.1, the Linux version ships as either rpm or deb packages and an install script that runs on the command line. On our OpenSuSE box, this worked like a charm using ssh.
On the client side, I was shocked at first that the 8.6.1 installer does not ask for an installation path and just installs into the existing 8.6 installation directory.It does, however, make sure that the important directories like newimage etc. are untouched and adds 861-versions of these. There is no separate installation package for client and manager any more.
So I was in doubt if I like that. But it turns out that my existing environments/images are running as before, old image, connected to the old Library. No troubles so far.
The best thing that may or may not be new, but that I just realized now is that if you create a new Environment (image directory), the Environments tool lets you select if you want to create an 8.6.0 or an 8.6.1 environment. Great idea for all those who have to maintain existing software but also make progress in new versions.
The installer also has an option to upgrade an existing library to 8.6.1, which I didn’t test. But it sounds like a fantastic little feature (once you’ve made a backup of your library, as you always do, right?). We chose to use a new Library, and do whatever needs to be done later (we’ll most likely make a copy of the existing 8.6 library and use the Library Importer tool to get the latest VAST code into it. This way we keep all our code history).
Boy, 8.6.1 is so much better than 8.6. If you are on a version like 7 or even older, I promise you won’t realize your favorite tool any more. Code Assist was such a great step forward in 8.6, but it really lifts off in 8.6.1.
The editor now has such nice things as code folding (you can fold long comments) and it feels much faster and fluid. Autocompletion suggestions come up much quicker and teh whole thing just seems like it got a boost. I only learned a lot about what Code Assist added to the last version (like camel case guessing – you can type “oc” and Code Assist will instantly suggest “OrderedCollection”), so I look forward to what I will learn and love over the next few weeks and months.
I remember being blown away by what Seth showed in August at ESUG. A lot of refactoring and code improvement will be so much more fluid with 8.6.1, but I must say I haven’t played with this stuff yet.
One thing I checked was Refactoring, or better the “Mastering Envy Refactoring Browser extensions”. I’ve sat with Seth and showed him a few things I really thought should be changed or improved there. And what can I say?
Refactoring now just feels right in so many little aspects. Like when you select an instance variable in a Class Browser and click on “Create Accessors…”. The Browser now knows which variable you mean!
This doesn’t sound like a big thing, but it is, because in the past, you had to pick the very same variable ion a little prompter again. Not any more. It is pre-selcted now and you can just press Enter! If you refactor a lot, and I really do refactor a lot, both my own and lots of legacy code, then you will value these little things a lot. It saves you a lot of time and your metabolism profits a lot from 8.6.1.
I haven’t really spent much time with the new version, but what I’ve seen is really promising. I’ve also read Marten’s first impressions and he also likes 8.6.1.
I’m sure I will come across new wow-moments with this release and look forward to porting our code (which will be a bit involved, since we have quite a few fixes to Glorp and Seaside that may or may not be fixed in this new release and we’ll have to take a close look at these) and work with it.