Tough movie about a young girl that can never keep a job.
Slowly paced, emotionally intense movie, sometimes hard to take. If you go to the movies in search for emotions, of whatever kind (not necessarily good ones), this is a movie for you.

One of many universal character encoding systems, Rosetta has a home on the web <http://www.kotovnik.com/~avg/rosetta/>, but no body of implementations or users, unlike Unicode or ISO-2022. It defines a character encoding scheme, based around the idea of defining code pages for each language, but so far (the site was last modified in 1997) it only defines characters for English and Russian and a small body of symbols.

There are three goals that stand out upon reading the proposed RFC for Rosetta. The first goal is keeping text size down to the level of legacy character sets. Current Russiancharacter sets, like KOI8-R, use 1 byte per character; Unicode, in its UTF-8 and UTF-16 encoding forms, uses two. The rarely used SCSUUnicode encoding form will compress most alphabetic text to about one byte per character. Secondly, Rosetta tries to keep characters in sort order; this goal is ultimately futile, as many languages count multiple letters as one for sorting (Spanish, Maltese), count one letter as multiple letters (German), have no standard sort order (Chinese, Japanese), or have an otherwise complex sort order (French). Thirdly, Rosetta automatically tags the languages of the document.

Judging purely from an English perspective, Rosetta currently fails to provide all the necessary characters, currently missing the c-cedilla (used in fac,ade), the o-circumflex (used in ro^le), the o-diaresis (used in coo"perate) and an opening quotation mark. These are all easily rectifiable, but shows a lack of research.

It's hard to judge Rosetta on a global sense, besides pointing out that it is currently missing most of the languages and most of the characters of the world. Rosetta does proscribe visual directionality for bidirectional scripts, which does not make Hebrew and Arabic speakers happy.

A controversial move, the decision was made on the basis of price and performance of the respective roadmaps for Intel processors and IBM's plans for POWER in the near future. Jumping ship may make sense in the near future, but seems something of a missed opportunity: offering support for both Intel and POWER platforms would offer flexibility and the ability to jump back should the current roadmap lead us astray. But for the immediate future, Intel seems to be the way to go.

Switching processor architectures is something that Apple have done before, from the old Motorola680x0 architecture to the PowerPC variant of the POWER architecture. Newly compiled PowerPC applications ran with all the speed the processor could muster, whereas existing 680x0 applications were run under a 680x0emulation layer, which impacted performance, making these applications slower on the new machines than they were on the old machines. It wasn't hot on the performance front, but at least it worked.

Apple are hoping to pull off the same trick again, this time by translating the PowerPC instruction set to native x86 code and running this on the host Intel processor of the new Macintosh computers, and 'Rosetta' is the software that will attempt this.

Scope

If you've seen PearPC (or, heaven forfend, CherryOS) in action, you might be skeptical. Fortunately for early adopters of the new Intel-based Macs, running PowerPC Mac OS X programs on x86 isn't nearly as hard as PearPC makes it seem. PearPC has the unenviable task of simulating the behaviour of an entire CHRPPowerPC-based microcomputer, and simulating the execution of the entire operating system.

Rosetta's job (like that of FX!32) is much simpler. The underlying host operating system provides an API identical to the one the non-native PowerPC code expects (they are both, after all, Mac OS X), so when the application makes a system call, or a call via an API which Rosetta knows is equivalent to a native API entry point, it simply passes on the call to the real operating system.

Most interactive applications actually spend the majority of their time executing code that's not actually part of the application, but the operating system: redrawing windows, rendering text, and so on. Because of this, such interactive applications are unlikely to suffer a performance penalty running under Rosetta.

This also applies to applications which make heavy use of 3D graphics: OpenGL is used to render these, and so the majority of the work will still be done by native code and the GPU of the graphics cards.

Limitations

From Apple's documentation, Rosetta's overall structure appears to be far simpler than FX!32's, more akin to Virtual PC's. Before executing a 'chunk' of code (probably a 4kb page), Rosetta first translates it to native x86 code before executing that. No mention is made of any profiling of the running code, or any further optimisation applied to it after the initial translation.

Blocks of translated code are cached, but it's not stated whether this cache is persistent. Implicitly, the translated code is discarded each time the application terminates, implying lengthy application startup times.

Applications which use linked libraries for which Rosetta cannot find x86 equivalents must run entirely in x86 mode, even if a Universal Binary (or fat binary, to use the old terminology) provides native x86 equivalents of the main application code.

In addition to these performance limitations, there are a few hard limitations. Naturally enough, PowerPC code for Mac OS 9 is not supported, and neither are kernel extensions. 64-bit code specific to the G5 will not be translated, and somewhat mystifyingly, AltiVec instructions are not supported at all, Rosetta's instruction set being modelled on the G3 rather than the G4 or G5.

Wait and see?

Will Rosetta allow Apple to transition as seamlessly as they hope? Will early adopters of the "new" technology be left distinctly unimpressed? Time will, as always, tell. At least they got one thing right this time: they picked a winner of a name (after, for obvious reasons, the Rosetta stone). It trips off the tongue, doesn't it? Rosetta... Rosetta... Rosetta...