Eliot Miranda uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-eem.483.mcz
==================== Summary ====================
Name: System-eem.483
Author: eem
Time: 30 April 2012, 4:34:10.236 pm
UUID: 597c950a-a419-4668-a234-cb1ffd613232
Ancestors: System-eem.482
Sort the results of browse references... for inst vars.
=============== Diff against System-eem.482 ===============
Item was changed:
----- Method: SystemNavigation>>browseAllAccessesTo:from: (in category 'browse') -----
browseAllAccessesTo: instVarName from: aClass
"Create and schedule a Message Set browser for all the receiver's methods or any methods of a subclass/superclass that refer to the instance variable name."
"self new browseAllAccessesTo: 'contents' from: Collection."
^ self
+ browseMessageList: [ (self allAccessesTo: instVarName from: aClass) sort ]
- browseMessageList: [ self allAccessesTo: instVarName from: aClass ]
name: 'Accesses to ' , instVarName
autoSelect: instVarName!
Dear Smalltalkers,
I am very happy to announce that the Styled Text Editor for the brand new Cuis 4.0 is now available on GitHub [1]. The Styled Text Editor was first presented by me at last year's ESUG in Edinburgh [2]. Thanks to ESUG the presentation was recorded [3].
The Styled Text Editor is a framework for rich text editing using styles as known from popular word processors like Apple Pages or Microsoft Word. It features paragraph and character styles, allowing easy text formatting using styles only. It is intended for applications where users need to work with good looking rich text in a simple and fast way.
Rich text commonly refers to text with formatting information like different fonts, sizes, alignments, and emphasis. To make editing as simple as possible instead of individual formatting information end users apply styles to parts of the text. Editing is made fast by keyboard shortcuts for text navigation, selection, and styles selection. Where possible the feel of widely used rich text editors is supported.
It includes many features like
- numbered and bulleted list paragraph styles
- support for images
- multiple level undo and redo
- text completion using various glossaries including a dictionary of English with about 166.000 words
- RTF clipboard (on OS X VMs with the ClipboardExtendedPlugin)
The Styled Text Editor is developed in Cuis with the plan to eventually port it to Squeak and Pharo. The development of the Styled Text Editor inspired many changes to Cuis itself, and It is the first package to use the brand new DVCS based development process for external packages for Cuis 4.0.
The idea and funding was provided by me, Bernhard Pieber and my company Software Generation. The implementation was done by Juan Vuletich, the mastermind behind Cuis. Thanks Juan for the close cooperation. It was and still is great fun to work with you.
We are looking forward to feedback from you. Fork it on GitHub [1], create issues and send us pull requests. ;-)
Cheers,
Bernhard Pieber
[1] https://github.com/bpieber/Cuis-StyledTextEditor
[2] http://www.esug.org/wiki/pier/Conferences/2011/Schedule-And-Talks/StyledTex…
[3] http://www.youtube.com/watch?v=pUoVbvwspi8&list=PL813665D04A2E4C0A&index=7&…
Eliot Miranda uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-eem.473.mcz
==================== Summary ====================
Name: Collections-eem.473
Author: eem
Time: 28 April 2012, 5:02:56.235 pm
UUID: 6fa8cab9-1079-4bba-9fe4-0a96fcd47256
Ancestors: Collections-eem.472
A reimplementation of Travis Griggs' piecesCutWhere:[do:]
=============== Diff against Collections-eem.472 ===============
Item was added:
+ ----- Method: SequenceableCollection>>piecesCutWhere: (in category 'enumerating') -----
+ piecesCutWhere: binaryBlock
+ "Answer substrings of the receiver derived from cutting the receiver
+ at points where binaryBlock answers true for adjacent elements."
+
+ | pieces |
+ pieces := OrderedCollection new.
+ self piecesCutWhere: binaryBlock
+ do: [:piece|
+ pieces add: piece].
+ ^pieces
+
+ "'Now is the time for all good people to come to the aid of the cause of world peace. It is just fine, even desirable, to love your country, if that means wanting it to play a beneficial role in the course of world events and be the best possible example of a good society. But if it means wanting dominion over the rest of the world, it is not love but defensiveness or self-glorification, and will lead only to oblivion.'
+ piecesCutWhere: [:a :b| a = $. and: [b isSeparator]]"!
Item was added:
+ ----- Method: SequenceableCollection>>piecesCutWhere:do: (in category 'enumerating') -----
+ piecesCutWhere: binaryBlock do: pieceBlock
+ "Evaluate pieceBlock with substrings of the receiver derived from cutting the
+ receiver at points where binaryBlock answers true for adjacent elements."
+
+ | size lastCut this next |
+ (size := self size) <= 1 ifTrue:
+ [size = 1 ifTrue:
+ [pieceBlock value: self].
+ ^self].
+ lastCut := 1.
+ this := self at: 1.
+ 2 to: size do:
+ [:i|
+ next := self at: i.
+ (binaryBlock value: this value: next) ifTrue:
+ [pieceBlock value: (self copyFrom: lastCut to: i - 1).
+ lastCut := i].
+ this := next].
+ pieceBlock value: (self copyFrom: lastCut to: size)!
If anyone is interested in a story about Squeak being used in real
business today, the slides for my STIC 2012 talk are available on
STIC's website.
http://www.stic.st/conferences/stic12/stic12-abstracts/location-aware-netwo…
It's an experience report about an upgrade to 4Dst's "Awareness
Engine" product, a Squeak-based telephone switching system which they
market. In 2011, a GIS module plug-in was integrated into the
application to provide regional call routing capability to this
production system which has been running continuously since 2009.
What's not mentioned in the talk is that we simultaneously upgraded
the underlying Smalltalk platform from Squeak 3.9 to 4.2 (a
significant improvement). Squeak's practical attitude about
backward-compatibility proved to be very business-friendly -- the
upgrade was completed rapidly and implemented into production without
issues.
On 4/21/12, Bernhard Pieber <bernhard(a)pieber.com> wrote:
> Am 21.04.2012 um 22:22 schrieb "phil(a)highoctane.be" <phil(a)highoctane.be>:
>> Yeah VM works on iOS.
> Cool!
>
>> My use case is private, nothing fancy. I just value having decent
>> TextEditor and friends.
>>
>> For an OO thing like Smalltalk Pharo, it would be a shame to now have a
>> top notch UI kit for editing text.
> I totally agree. That's one reason why I started the Styled Text Editor
> project. ;-)
Great effort!
Are there screen shots of the implementation available somewhere?
In which format does it save the files? RTF? HTML? Something else?
--Hannes
> Cheers,
> Bernhard
>
>> I hope to be able to provide several decent samples so that newcomers
>> don't have to go through the same pain as I go through now.
>>
>> Phil
>>
>> 2012/4/21 Bernhard Pieber <bernhard(a)pieber.com>
>> Thanks for the encouragement!
>>
>> The necessary funding depends on the effort of course, and this in turn
>> depends on the approach one uses for porting. We have an idea how to do
>> the port to Pharo as an external package. Do you have a concrete use case
>> in mind?
>>
>> Cheers,
>> Bernhard
>>
>> P.S. Did you succeed building the Mac VM on Xcode 4.3 yet?
>>
>> Am 21.04.2012 um 21:17 schrieb "phil(a)highoctane.be" <phil(a)highoctane.be>:
>>
>>> Great news!
>>>
>>> I am currently busy looking after Text, TextAttributes, TextConstants,
>>> Paragraph... and god, it went through the grinder and it shows.
>>>
>>> I understand the reasons that led to such things but Collections-Text is
>>> in need of improvement for sure.
>>>
>>> How much funding would be necessary to get this port done?
>>>
>>> Phil
>>>
>>> 2012/4/21 Bernhard Pieber <bernhard(a)pieber.com>
>>> Dear Smalltalkers,
>>>
>>> I am very happy to announce that the Styled Text Editor for the brand new
>>> Cuis 4.0 is now available on GitHub [1]. The Styled Text Editor was first
>>> presented by me at last year's ESUG in Edinburgh [2]. Thanks to ESUG the
>>> presentation was recorded [3].
>>>
>>> The Styled Text Editor is a framework for rich text editing using styles
>>> as known from popular word processors like Apple Pages or Microsoft Word.
>>> It features paragraph and character styles, allowing easy text formatting
>>> using styles only. It is intended for applications where users need to
>>> work with good looking rich text in a simple and fast way.
>>>
>>> Rich text commonly refers to text with formatting information like
>>> different fonts, sizes, alignments, and emphasis. To make editing as
>>> simple as possible instead of individual formatting information end users
>>> apply styles to parts of the text. Editing is made fast by keyboard
>>> shortcuts for text navigation, selection, and styles selection. Where
>>> possible the feel of widely used rich text editors is supported.
>>>
>>> It includes many features like
>>> - numbered and bulleted list paragraph styles
>>> - support for images
>>> - multiple level undo and redo
>>> - text completion using various glossaries including a dictionary of
>>> English with about 166.000 words
>>> - RTF clipboard (on OS X VMs with the ClipboardExtendedPlugin)
>>>
>>> The Styled Text Editor is developed in Cuis with the plan to eventually
>>> port it to Squeak and Pharo. The development of the Styled Text Editor
>>> inspired many changes to Cuis itself, and It is the first package to use
>>> the brand new DVCS based development process for external packages for
>>> Cuis 4.0.
>>>
>>> The idea and funding was provided by me, Bernhard Pieber and my company
>>> Software Generation. The implementation was done by Juan Vuletich, the
>>> mastermind behind Cuis. Thanks Juan for the close cooperation. It was and
>>> still is great fun to work with you.
>>>
>>> We are looking forward to feedback from you. Fork it on GitHub [1],
>>> create issues and send us pull requests. ;-)
>>>
>>> Cheers,
>>> Bernhard Pieber
>>>
>>> [1] https://github.com/bpieber/Cuis-StyledTextEditor
>>> [2]
>>> http://www.esug.org/wiki/pier/Conferences/2011/Schedule-And-Talks/StyledTex…
>>> [3]
>>> http://www.youtube.com/watch?v=pUoVbvwspi8&list=PL813665D04A2E4C0A&index=7&…
>>>
>>>
>>>
>>> --
>>> Philippe Back
>>> "Helping you hit the top 3 outcomes you really want to achieve"
>>>
>>> Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:
>>> phil(a)highoctane.be | Web: http://philippeback.eu | Blog:
>>> http://philippeback.be
>>>
>>> High Octane SPRL
>>> rue cour Boisacq 101
>>> 1301 Bierges
>>>
>>
>>
>>
>> --
>> Philippe Back
>> "Helping you hit the top 3 outcomes you really want to achieve"
>>
>> Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail: phil(a)highoctane.be
>> | Web: http://philippeback.eu | Blog:
>> http://philippeback.be
>>
>> High Octane SPRL
>> rue cour Boisacq 101
>> 1301 Bierges
>>
>
Changes to Trunk (http://source.squeak.org/trunk.html) in the last 24 hours:
http://lists.squeakfoundation.org/pipermail/packages/2012-April/005306.html
Name: Monticello-eem.505
Ancestors: Monticello-bf.504
Simple history search for the working copy browser.
Open a Workspace containing all the history (version
summaries) for the current package.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2012-April/005307.html
Name: Kernel-nice.652
Ancestors: Kernel-laza.649
PURPOSE:
Any Float now prints with the minimal number of digits that describes it unambiguously.
This way, every two different Float will have a different printed representation.
More over, every Float can be reconstructed from its printed representation with #readFrom:.
self assert: ([:f | f isNaN or: [(Float readFrom: f printString) = f]] value: Float someInstance).
Note that Float nan, Float infinity and Float infinity negated still print as 'NaN' 'Infinity' and '-Infinity' which are compatible with #readFrom:.
RATIONALE:
the old behaviour was obscuring our data like for example:
0.1 successor printString = 0.1 printString.
1.0e-100 printString = '9.99999999999999e-101'.
The old behaviour was returning many digits without any guaranty of exactness which is useless.
The old behaviour was faster (x4) but this is less relevant than exactness.
Similar or better speed should be obtained by controlling number of printed digits if we can afford inexactness.
IMPLEMENTATION:
The essential change was to use #absPrintExactlyOn:base: in #printOn:base:
Side note: this is really a bad name, because it prints the shortest base-representation, not the exact one.
Anyway, we can only print the exact one in even bases.
For example, the exact representation of 0.1 in base 10 is:
0.1 asFraction asScaledDecimal = 0.1000000000000000055511151231257827021181583404541015625s55.
The second change was to marginally fast-up #absPrintExactlyOn:base: main loop by avoiding a #not send and piping decimal point test.
Avoiding the #not makes the intention a tiny bit clearer.
Also of few formatting has been performed in the last lines.
REJECTED CHANGES:
It is possible to move self > 0.0 before self isNaN to statistically reduce the number of tests performed.
This works because Float nan > 0.0 = false.
But this speed-up is quite marginal.
Similarly (self = Infinity) could replace (self isInfinite) and save another send and also another test (because NegativeInfinity can't happen at this stage).
This would be at the price of a class var reference leak.
It could be more interesting to move this #isInfinite test in #printOn:base: in order to gather print rules for exceptional values.
I didn't to avoid duplicating the test in the two branches > 0.0 and < 0.0.
A far more efficient speed-up would be to optimize LargeInteger arithmetic.
I think there is room, the VM is still using byte operations (thus at most 16 bits).
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2012-April/005308.html
Name: Kernel-nice.683
Ancestors: Kernel-eem.682, Kernel-nice.652
Merge with nice.652 (Float unambiguous printing).
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2012-April/005309.html
Name: Kernel-eem.684
Ancestors: Kernel-nice.683
Implement endPC numArgs and numTemps for closures
and contexts (both block and method activations).
Provide CompiledMethod>abstractBytecodeMessagesDo:
et al.
Implement BlockClosure>isClean to identify self-contained blocks.
=============================================
http://lists.squeakfoundation.org/pipermail/packages/2012-April/005310.html
Name: Tests-eem.151
Ancestors: Tests-ul.150
Add tests for BlockClosure>isClean
=============================================
Hi All,
The Jenkins server is almost there. It produces xml files and presents
them with the Emma plugin. For the image, Lukas's code works almost
extant. I did have to comment out a class called Author, which we don't
have.
We get xml files. And Jenkins presents them with all the precision and
accuracy that Lukas created them with. So far so good. But there's a
wrinkle I need help with.
Starting the build is one thing. Stopping it - and stopping it at the
right time - is quite another. Left on its own, Jenkins will shut things
down after ~8 seconds. To do ~3000 tests in ~70 xml files takes ~90
seconds.
Lukas has two pieces of code that address this ... or, don't. I'm not
sure if both are necessary or if one of them is just for logging
purposes. My interest in logging is up there with tests, so I need to
get this right.
Naturally, there is one in the image and, another in the shell script.
For the image, you load in a script on startup of all the tests you want
to run. You add #snapshot:andQuit: at the end of that script.
But in the build.sh script there is this:
if [ $! ] ; then
while kill -0 $! 2> /dev/null ; do
I think this is saying: "If there is a process running in the
background; while the last process running in the background cannot
receive a signal, do the following..."
So I have two questions:
1.) Why would a process not be able to receive a signal?
2.) And if it couldn't, then what would that tell me.
After I can figure out this last item, then I should be able to open up
the squeakci.org site next week.
Thanks,
Chris
# wait for the process to terminate, or a debug log
if [ $! ] ; then
while kill -0 $! 2> /dev/null ; do
if [ -f "$OUTPUT_DUMP" ] || [ -f "$OUTPUT_DEBUG" ] ; then
sleep 5
kill -s SIGKILL $! 2> /dev/null
if [ -f "$OUTPUT_DUMP" ] ; then
echo "$(basename $0): VM aborted ($PHARO_VM)"
cat "$OUTPUT_DUMP" | tr '\r' '\n' | sed 's/^/ /'
elif [ -f "$OUTPUT_DEBUG" ] ; then
echo "$(basename $0): Execution aborted ($PHARO_VM)"
cat "$OUTPUT_DEBUG" | tr '\r' '\n' | sed 's/^/ /'
fi
exit 1
fi
sleep 1
done
else
echo "$(basename $0): unable to start VM ($PHARO_VM)"
exit 1
fi
Eliot Miranda uploaded a new version of Tests to project The Trunk:
http://source.squeak.org/trunk/Tests-eem.151.mcz
==================== Summary ====================
Name: Tests-eem.151
Author: eem
Time: 26 April 2012, 12:02:22.807 pm
UUID: d1afe8a4-9721-4e74-a3f3-b2fc1057d51b
Ancestors: Tests-ul.150
Add tests for BlockClosure>isClean
=============== Diff against Tests-ul.150 ===============
Item was added:
+ ----- Method: ClosureTests>>testIsClean (in category 'testing') -----
+ testIsClean
+ | local |
+ local := #testIsClean.
+
+ self assert: [] isClean. "closes over nothing at all"
+ self assert: [:a :b| a < b] isClean. "accesses only arguments"
+ self assert: [:a :b| | s | s := a + b. s even] isClean. "accesses only local variables"
+
+ self deny: [^nil] isClean. "closes over home (^-return)"
+ self deny: [self] isClean. "closes over the receiver"
+ self deny: [collection] isClean. "closes over the receiver (to access the inst var collection)"
+ self deny: [local] isClean. "closes over local variable of outer context"!