mikeash Site Admin
Joined: 11 Mar 2004 Posts: 127 Location: VA, USA
|
Posted: Tue Aug 01, 2006 6:52 pm Post subject: 1.2.5: no more crashes after OS updates! |
|
|
I just put LiveDictionary 1.2.5 out. This is basically identical to LiveDictionary 1.3b2, but with the version number changed. There are significant internal differences but I decided that they're obscure enough that doing a full point update would just confuse people. However, I'd like to discuss them here, because they'll have a very good effect in the end.
Anyone who has been using LiveDictionary for more than a few months has noticed that LiveDictionary likes to put up nasty warnings and crash and burn after an OS update. Then a LiveDictionary update follows a day or two later, and life is happy again.
This probably caused some anxiety among some of you. What if I drop off the face of the Earth, or am just on vacation for too long?
It also caused some anxiety for me, since I don't want to delay the update. But what if an OS update happens at an inconvenient moment?
This problem was caused by the technique LiveDictionary used to get text out of Safari. When LiveDictionary was originally created, there was no public method for extracting the text at a certain point out of a WebView (the main view that Safari and other WebKit apps use). But obviously there is some way to do it buried down in the code, otherwise you couldn't click and drag in the text to copy and paste. So I went digging.
Ultimately I ended up with a horrible collection of black magic which I will probably explain more deeply in a blog post. But suffice it to say, I was doing a lot of really terrible and unsupported things. A small change in WebKit could, and often did, completely break my code. Then I'd have to get the debugger out and go through and see what changed, and fix my code to suit.
At some point, the public DOM APIs (the same stuff you get when you examine pages using JavaScript, more or less) got enough functionality to do what LiveDictionary needs. LiveDictionary 1.2.5 abandons the old error-prone code for the new shininess for the current and future versions of Safari. (Old versions of Safari still get the old code, since it's known to work even if it's ugly.)
This means that LiveDictionary 1.2.5 should work, with no changes, for any future OS, through Leopard and beyond. That's not to say that I'm going to stop working on it! But neither you nor I need to get a lump in the throat when Apple releases an OS update anymore. |
|