Processing for iOS Update

Currently, we have a (mostly) working implementation of the core library sans 3D-rendering subsystem components. We can code, deploy and run these processing sketches on all of the iOS devices (iOS 3.2+). However, there are a few issues we're wrangling with right now and it's because of the toolchain which makes this whole Processing sketch to App conversion. To understand the problems involved, let's have a look at how we do it.

How the toolchain works

Essentially, the toolchain is long series of cross-compilations from one language to many others, resulting in the production of a native ARM application.

Firstly, we start out with the Processing sketch which is compiled using javac along with our implementation of the Processing API. This implementation is custom because the JRE is not bundled with the iOS SDK.

Secondly, we transform the resultant java byte code into C/Objective-C using a tool called XMLVM which creates an Xcode project for us. XMLVM effectively implements an environment where our transmuted java application can run and where we can access the underlying iOS libraries and frameworks.

Thirdly, we pass the C/Objective-C-based Xcode project through the xBuild toolchain to create a native application which can run on iOS devices or in the simulator.

So we have this wonderful series of transformations. The problem is that right now, a complete clean build can take upwards of a minute to build, while a partially-compiled build towards twenty seconds or so. That's not particularly good for users, so we're working on ways to optimise the experience.

The Future

What we're looking to do in the near future is finalise the essential, non-graphics-related components of the Processing SDK alongside a fully-compatible implementation of the 2D graphics subsystem. When that happens, we'll be asking for testers with scores of patience and understanding to help us test and verify the correctness of the whole thing.

So yes, we're still working on Processing for iOS, but not exclusively. In a few weeks we'll be able to announce other projects we've been working on which is are of a different nature to Processing. Stay tuned!