[squeak-dev] [Ann][Cuis] Cuis 2.8 released

Levente Uzonyi leves at elte.hu
Sat Nov 6 18:01:43 UTC 2010


On Sat, 6 Nov 2010, Juan Vuletich wrote:

> Levente Uzonyi wrote:
>> On Thu, 4 Nov 2010, Juan Vuletich wrote:
>> 
>>> Hi Folks,
>>> 
>>> Cuis 2.8 is available at www.jvuletich.org/Cuis/Index.html .
>>> 
>>> New in Cuis 2.8:
>>> - Fixes to Character sorting and testing methods, to honor ISO-8859-15 
>>> encoding
>>> - Better conversion to/from UTF-8
>>> - Faster startup (forked DateAndTime class>>startup)
>> 
>> I checked the changeset and found that you're forking the process at 
>> priority 50 (#userInterruptPriority). AFAIK the process running the startup 
>> code has priority 40, so the startup process will be suspended while the 
>> forked process is running.
>
> Yes. But that forked process is waiting on delays almost all the time, and 
> needs to wake up and do its stuff precisely at the start of a new second. In 
> Squeak, it runs at priority 40, so this is not guaranteed. I suggest doing

I see.

> this change in Squeak too. Besides, I added protection from invalid offsets 
> with the OffsetsAreValid class var. In a commercial project, I found that 
> with the Squeak implementation, using DateAndTime during system startup is 
> not safe.

Okay, just for nitpicking, the #waitForSeconds send is unnecessary in 
DateAndTime >> #now, because #milliSecondsSinceMidnight will send it.

>
>>> - Honor quit signals from the OS (from Squeak)
>>> - #findBinary:do:ifNone: and #findBinaryIndex:do:ifNone: in 
>>> SequenceableCollection
>> 
>> I think #findBinary:ifNone: is useful, because it can be used just like
>> #detect:ifNone:.
>
> Right. I did not remove #detect:ifNone: as that would break a lot of code. 
> But I believe having the actionBlock in the sender will usually save some 
> #ifTrue: to do stuff only when an element was found.

The only minor problem with blocks is that they have to be copied and 
activated which is sometimes too expensive.

But, your exceptionBlock enhancement is fantastic in #findBinary*ifNone:. 
I was about to implement some kind of C++-style #upperBound: and 
#lowerBound:, but your solution already includes that and it's even more 
general. It shows the power of Smalltalk and blocks.

>
>>> - PointerTracingTools by Matthew Fulmer
>>> - Many recent tweaks from Squeak
>>> - Tweaks to blinking cursors
>>> - Tweaks to LayoutSpecs and PluggableMorphs
>>> - Tweaks to Editors
>>> 
>> 
>> I also checked the MessageTally changeset (0431) and found that 
>> MessageTally won't work in Cuis running on Cog, because some VM parameters 
>> can be nil. See MessageTally >> #spyEvery:on: and friends.
>
> Cuis change sets are numbered and should considered in order. Latest update 
> number is 034, so 431 is quite old. It is actually older than Cog public 
> release. That code was modified later, when the issues you mention were found 
> in Squeak. You can check that by opening a changes list on change set 431 in 
> Cuis. MessageTally works correctly in Cuis on Cog.

I'm aware of the numbering scheme, but I was checking the changesets by 
name. The fixes are in 0511-CogCompatibility and I was only looking at the 
changesets that had tally in their name.


Levente

>
>> 
>> Levente
>
> Thanks for reviewing!
>
> Cheers,
> Juan Vuletich
>
>



More information about the Squeak-dev mailing list