Thursday, September 16, 2004


I'm making progress on Io for Symbian. I tracked down the problem that was causing the crash on the Nokia 3650. Now I just need to fix it. I've assigned it a proper Uid, obtained from Symbian and tidied up the way Io coroutines and Symbian Active Objects interact so the system runs much more responsively. I'm also setting up a website page specific for the port and will post a note here when done.

In Io, each object can react to asynchronous messages. These messages get added to a queue and the object processes each message in the queue. A call to 'yield' will allow other objects to process their own ansynchronous message queues. This is how the co-operative multitasking works in the system.

In Symbian I need to process system events in a timely manner otherwise the responsiveness of the phone suffers and the application risks being shut down by the system. My current approach to managing the calls to yield so Io asynchronous objects run is to have an 'EventRuner' Io object that has a method which yields to other Io objects and processes Symbian events using the ActiveScheduler. This runs continuously while a script runs.

Unfortunately this has the side effect of continuously running yield calls and event processing even if there are no objects or events to manage. What I need to change is to have the system only run the object if actual processing is needed to save battery power and other phone resources.

Also on the list is wrapping more Symbian libraries and improving the user interface.

1:19:05 PM