[Pharo-project] cog vm for iOS

Esteban Lorenzano estebanlm at gmail.com
Wed May 25 18:01:22 CEST 2011


Well... I'm going to use this post to talk a bit about Pharo in iOS, because it is more complex than "having a vm working"
But first, a summary of where we stand:
1) The Stack VM is working with iPhone/iPad, but needs some minor adjustments (some tuning). 
One problem here is that I didn't integrate it to CMakeVMMaker (and as a consequence, to hudson), so build it is not a trivial task. But I will, as soon as some one jump and say "hey, I'm going to use it, for real!"... or as soon as I can find a free afternoon... it is planned (and I worked a little on this), but it is not a priority right now :)
2) The Cog (I mean, the jitter) will never work on iPad/iPhone, because of the apple license (clause 3.3.2) and because of the security sandbox policy. But I think the Stack VM can do a pretty job. No, I'm not going to prepare this just for recreational purposes because I do not have the time, and the community work I do should be spent in things the community can use... and I think that Eliot (who is, in fact, the one who can do this, I'm just a builder) will think similar :)

So... if we have a vm running on iOS, why there is no a legion of fellow pharoers taking over the appstore? 

Well... because it is not enough. 
There are several problems, besides the vm working or not (to be fair, the interpreter vm works on iphone since at least two years, and John is the only one who succeed on pushing some nice smalltalk apps into the appstore). 
The main problem is that our morphic world is ok for desktop working, and some times for desktop commercial apps (like those of pinesoft), but it just can't be used to create real apps for the iPhone/iPad market. There are some exceptions, like some eToys work and probable the developing of games like "tic-tac-toe" or so... (I mean: graphic games who can be done with morphs). But as a general rule, you can't do a real app in pharo/squeak who runs in the iPhone/iPad and can be sold in the appstore.
To overcome this problem, what John does is to create the full view in Cocoa, and "plug" the model to pharo/squeak images, using pharo as a module of a cocoa application. This can be done for several apps (and the fraction calculator is an example), but fails when you want a deeper interaction (because of the cost, not just in "programming time" but also the "translation time" between the cocoa app and pharo: it is just not good enough to bring a cool user experience (at least in all my experiments it was the case)

There is another possible approach, who I think is the better in the long way, and that is what I was doing with Deimos project: using a bridge to construct, in pharo, real cocoa UI objects... the advantages with this are obvious. Nevertheless, there are also some problems with this approach: 
1) last year I was working on this, and apple changed a clause. The result can be expressed as if they executed: 'deimos become: shit'. Months after they review the policy, but I was concentrated on Mars (the desktop equivalent to Deimos). I will continue this, but first I want to finish Mars, and also I need to solve the problem below: 
2) there are also a performance problem with the ObjectiveC plugin and callbacks. In all my experiments, I never went below 70ms executing a callback from cocoa to pharo (and that's necessary, for example, to fill tables). The minimum time needed to have a cool "scroll" effect on tables is 40ms. Of course, iPhone 4 is better than 3gs... but the problem remains. The real thing is that ObjectiveC plugin relies on a semaphore communication model, and that's not good enough. So... I think the better approach here is to port FFI-Callback plugin (latest work of Eliot) to iOS. FFI-Callback plugin uses a whole different approach, who can overcome this performance issues (and some other who's not the case mention here). 

So... yes... I would love to finish this soon. But right now, other issues are top in priotity, and I just can't promise a release date. (Of course, the stackvm for iphone will be compiling on hudson some time soon... before ESUG for sure)

hope this can explain all the status... :)

cheers,
Esteban

El 25/05/2011, a las 11:56a.m., Igor Stasenko escribió:

> On 25 May 2011 16:22, Steve Wirts <stevewirts at gmail.com> wrote:
>> Hi All,
>> Sorry if this topic has been covered in a previous email, I couldn't find
>> anything conclusive so I'm posting it for my own clarity.
>> I am a smalltalk programmer at heart but have been working in java at a java
>> shop for sometime.  Recently there's been a very strong directive from
>> management to "get everything working on an iPad".
>> I see a great opportunity to introduce pharo at the moment but need a way to
>> deploy to iPad/iPhone devices.  I'm not a c programmer and am overwhelmed at
>> the thought of trying to build a cog vm for ios devices.
>> 
>> Is there a binary package of cog vm for iPad/iPhone available somewhere?
> 
> Ask Esteban! :)
> 
> -- 
> Best regards,
> Igor Stasenko AKA sig.




More information about the Pharo-project mailing list