[squeak-dev] [Ann] Cuis 3.1 is available

Juan Vuletich juan at jvuletich.org
Fri Mar 4 23:52:35 UTC 2011

Comments inline.

Casey Ransberger wrote:
> Inline!
> On Mar 4, 2011, at 12:41 PM, Juan Vuletich <juan at jvuletich.org> wrote:
>> Hi Folks,
>> Cuis 3.1 is available at http://www.jvuletich.org/Cuis/Index.html . From the release notes:
>> New in Cuis 3.1
>> -------------------
>>   * Super fast Morphic world display.
>>         o     About ten times faster when many windows are open.
>>         o     Makes the whole UI feel much more responsive.
>>         o     Simpler code.
> Sweet! I noticed that 3.0 felt a little more sluggish on my iPad. I've been worried that something my themes engine was doing was the culprit, bit haven't had time to profile. 
> This will make experimenting on small devices a lot more tolerable: thank you!

Yes. Redraws were a bit slower in 3.0 than in previous versions. As I 
took my netbook to vacations, I had some time to focus on fun stuff, 
without work worries. So, I could dig deeper than before in Morphic 
performance issues. World redraws in Cuis 3.1 are much faster than any 
other version of Cuis, Squeak or Pharo.

>>   * Cleaner look for Default theme. Nicer buttons, menus and halos. Faster world redraw allows for full-window resize
> Can't wait to check it out.
>>   * Morphic buttons simplification: reduced 5 morphic button classes into just one.
> Interesting. Did you merge the protocols and then clean up the result? I'm curious what your process looked like. 

Well, I didn't merge the protocols but cleaned them. The survivor is 
PluggableButtonMorph. I added the missing functionality (essentialy 
showing an icon), and for existing functionality, I added the protocol 
in PBM to the other button classes (and the senders). Then it was just a 
matter of swapping them. Buttons are rather simple, it only tooke me 3 
hours to do this.

>>   * New Transcript
>>         o     Fast (Calls return quickly)
>>         o     Fast (Updates are immediate)
>>         o     Thread safe
>>         o     Can log to file in addition to Display
>>         o     Display output is optional (for headless images)
>>         o     Can work on a bare bones image (Doesn't need UI, dependency, events, processes)
>>         o     Optional morphic window for seamless integration in Morphic
>>         o     UI framework agnostic. Can be used to debug Morphic, even with the morphic window open, without crashing the image!
>>         o     No longer a text editor. Display is read only.
> Doesn't need UI? Can you elaborate? Does this mean it uses bitblt to write to the screen directly, or are you exposing an API that could be used with e.g. OSProcess to write to the console?

It uses BitBlt to write to the Display. It also writes to disk. Both 
outputs are optional. Writing directly to the Display means not needing 
to do a World cycle inside the Transcript update. This is what the old 
TranscriptStream does (via #refreshWorld) and makes it fragile.

In addition, I did a TranscriptMorph that with just 3 methods is enough 
to show it in a proper Morphic window (that can be easily moved, 
resized, etc). Using this morph doesn't break the good properties of the 
new Transcript. It is still safe to call even from the Morphic World 
redraw logic.

>>   * Support for .mcz files (they are treated like .cs and .st files)
> Whao, did Hell freeze over? :)

Hehehe. :)

> How's this work? I'm guessing you didn't port Monticello. Does this use the mcz to cs importer I saw Andreas recommend once upon a time?

No, I didn't port Monticello. Weren't you doing that ;) ? And I wasn't 
aware of that mcz to cs importer... I just used ZipArchive and a few 
methods... Total code size is 9kb. If you want to take a look, it is 
change set #0789.

BTW, it would be

> In any event, AWESOME. The extra steps involved in changing .mcz to .zip and extracting the sources from the bundle are extra work when you're trying to bring stuff in from another distro. It'll be nice to be able to get down to the nitty gritty of resolving missing dependencies, remediating differences, and sussing out load order right away when porting.
> This will make my life just a teensy bit easier:)
Mine too! :)
>> Cheers,
>> Juan Vuletich
> Congratulations on another fantastic release, Juan!


Juan Vuletich

More information about the Squeak-dev mailing list