The Shape of Everything
A website mostly about Mac stuff, written by Gus Mueller
» Acorn
» Twitter
» Maybe Pizza?
» Code
» Archive
January 15, 2014

Here's a random progress report on the various projects I'm currently working on:

Lift
I've got an initial implementation for lift (layered image file type) done in Objective-C, and working in the Acorn betas. This won't be public in the next release of Acorn, but you can enable it with a hidden pref (and it'll show up in the export menu). I've included it in Acorn so people who would like to give feedback about it can. Also, dogfooding.

The example OS X project also includes a little tool which will take a directory of images and create a new .lift image out of them (also making any sub directories into group layers).

I still need to setup a website and get more folks involved. There was a ton of interest when I proposed the idea last year, and I need to figure out how to recapture that.

Cocoa Script
There have been some bug fixes in the OpenCL classes, as well as some memory leak fixes.

I've also added a new @import declaration as an experiment:

@import "Routines.coscript"

When coscript (that's shorthand for Cocoa Script) preprocesses a file, it'll look for a "Routines.coscript" and insert that into the source file. Right now coscript has the include method:

[coscript include:"Routines.coscript"];

But that happens at runtime and walks a fine line with JavaScriptCore… actually, it's not a fine line at all. JavaScriptCore isn't reentrant, and the include: method breaks that rule. So if you're using include:, take a look and see if @import will work for you.

FMDB
Not much to report, though I did recently change the behavior of setBusyRetryTimeout:. It now does nothing but print out a warning to use setRetryTimeout: instead. When I wrote FMDB I was unaware that SQLite already had a sqlite3_busy_timeout function, so I wrote my own version of it. With the setRetryTimeout: addition, I got to delete some code.

FMPSD
I recently fixed a bug which would create bad PSD files when trying to convert a layer name into a pascal string for writing. Yes, pascal strings. The PSD format is over 20 years old now, and that was the hotness back then I guess. The next version of Acorn has this fix.

Which reminds me, I should write an import/export plugin for Photoshop that reads and writes lift images. Or maybe someone who's done such a thing could tackle it.

Acorn
The next release of Acorn will be 4.3, and I've already started putting some betas up. New features will be focusing on the raw image import side of things (colorspace, bit depth, and better scaling so far), and after that I'll be working on bug fixes. I'll probably also move from JSTalk to the latest version of Cocoa Script for 4.3, but if I've done my work correctly, nobody should notice.

I've also knocked out the (formerly) top two crashers in 4.3 as well. One of them had been eluding me for months - but I finally got a reproducible case and squashed it with a couple of lines of code. I'm honestly not sure what the next top crashers are… and that's a good thing I suppose.

We also recently sold 1,500 licenses of Acorn to a major newspaper, who were previously using Photoshop for their work. Acorn's mission isn't to be a PS clone or to replace it- but hey, if it works better for you who am I to stop that?

FM gives special deals for site licenses or high volume purchases. So if you think Acorn would be awesome for your organization, get in touch!