Merged with /trunk jv
authorJan Vrany <jan.vrany@fit.cvut.cz>
Thu, 26 Aug 2010 11:12:57 +0100
branchjv
changeset 17797 71451ae83564
parent 17796 2fe4a1c91aa9
child 17798 3ad99b128366
Merged with /trunk
AbstractTime.st
ArithmeticValue.st
Block.st
CharacterArray.st
Collection.st
Context.st
Dictionary.st
GenericException.st
InlineObjectClassDescription.st
Integer.st
KeyedCollection.st
LargeInteger.st
Make.proto
Make.spec
MessageNotUnderstood.st
NamespaceAwareLookup.st
Object.st
Process.st
Registry.st
SequenceableCollection.st
Signal.st
SmallInteger.st
Smalltalk.st
Stream.st
TimeoutNotification.st
UnixOperatingSystem.st
UserPreferences.st
WeakArray.st
abbrev.stc
bc.mak
libInit.cc
libbasic.rc
stx_libbasic.st
vcmake.bat
--- a/AbstractTime.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/AbstractTime.st	Thu Aug 26 11:12:57 2010 +0100
@@ -1154,16 +1154,17 @@
 !AbstractTime class methodsFor:'documentation'!
 
 version
-    ^ '$Id: AbstractTime.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: AbstractTime.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.68 2010/03/31 13:52:36 stefan Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/AbstractTime.st,v 1.70 2010/08/19 11:20:32 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: AbstractTime.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: AbstractTime.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 
 
+
--- a/ArithmeticValue.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/ArithmeticValue.st	Thu Aug 26 11:12:57 2010 +0100
@@ -203,6 +203,7 @@
     ^ self == ArithmeticValue
 ! !
 
+
 !ArithmeticValue methodsFor:'arithmetic'!
 
 * something
@@ -767,6 +768,15 @@
     ^ aShortFloat retry:#= coercing:self
 !
 
+integerQuotientFromInteger:anInteger
+    "anInteger does not know how to divide by the receiver -
+     retry the operation by coercing to higher generality"
+
+    ^ anInteger retry:#// coercing:self
+
+    "Created: / 09-08-2010 / 19:49:26 / cg"
+!
+
 lessFromFixedPoint:aFixedPoint
     "the receiver does not know how to compare to a fixedPoint number -
      retry the operation by coercing to higher generality"
@@ -822,6 +832,15 @@
     "Modified: 17.4.1996 / 12:33:33 / cg"
 !
 
+moduluFromInteger:anInteger
+    "anInteger does not know how to divide by the receiver -
+     retry the operation by coercing to higher generality"
+
+    ^ anInteger retry:#\\ coercing:self
+
+    "Created: / 09-08-2010 / 19:51:45 / cg"
+!
+
 productFromComplex:aComplex
     "the receiver does not know how to multiply a complex -
      retry the operation by coercing to higher generality"
@@ -1314,15 +1333,15 @@
 !ArithmeticValue class methodsFor:'documentation'!
 
 version
-    ^ '$Id: ArithmeticValue.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: ArithmeticValue.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/ArithmeticValue.st,v 1.86 2010/08/02 11:33:27 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/ArithmeticValue.st,v 1.87 2010/08/09 17:52:46 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: ArithmeticValue.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: ArithmeticValue.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 ArithmeticValue initialize!
@@ -1330,3 +1349,4 @@
 
 
 
+
--- a/Block.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/Block.st	Thu Aug 26 11:12:57 2010 +0100
@@ -548,7 +548,6 @@
     "Created: 15.11.1996 / 11:38:37 / cg"
 ! !
 
-
 !Block methodsFor:'accessing'!
 
 home
@@ -606,7 +605,6 @@
     ^ nargs
 ! !
 
-
 !Block methodsFor:'compatibility-Cola & Pepsi'!
 
 arity
@@ -2015,15 +2013,14 @@
      exceptionBlock's value is returned. The receiver's code must be prepared
      for premature returning (by adding ensure blocks, as required)"
 
-    |showStopper me signal retVal done|
+    |showStopper me retVal done|
 
     done := false.
     me := Processor activeProcess.
 
-    signal := Signal new notifierString:'timeout'.
-    showStopper := [ done ifFalse:[ me interruptWith:[ done ifFalse:[ signal raise ]] ]].
-
-    signal handle:[:ex |
+    showStopper := [ done ifFalse:[ me interruptWith:[ done ifFalse:[ TimeoutNotification raiseRequest ]] ]].
+
+    TimeoutNotification handle:[:ex |
         retVal := exceptionBlock value.
     ] do:[
         [
@@ -2048,7 +2045,7 @@
     "
 
     "Modified: / 21-05-2010 / 12:19:57 / sr"
-    "Modified: / 01-07-2010 / 12:42:54 / cg"
+    "Modified: / 20-08-2010 / 12:16:58 / cg"
 ! !
 
 !Block methodsFor:'exception handling private'!
@@ -2928,15 +2925,15 @@
 !Block class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Block.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: Block.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/Block.st,v 1.181 2010/07/01 10:43:17 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/Block.st,v 1.182 2010/08/20 10:17:59 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: Block.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: Block.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 Block initialize!
@@ -2945,3 +2942,4 @@
 
 
 
+
--- a/CharacterArray.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/CharacterArray.st	Thu Aug 26 11:12:57 2010 +0100
@@ -4122,6 +4122,39 @@
 ! !
 
 
+!CharacterArray methodsFor:'matching - regex'!
+
+hasAnyRegexMatches: rxString
+    "return true, if any substrings in the receiver, matches the regular expression in rxString"
+
+    rxString asRegex matchesIn:self do:[:m | ^ true].
+    ^ false
+
+    "
+     '1234 abcd 3456 defg' hasAnyRegexMatches:'[0-9]+'   
+     'abcd 3456 defg' hasAnyRegexMatches:'[0-9]+'        
+     'abcd xxax defg' hasAnyRegexMatches:'[0-9]+'        
+    "
+
+    "Created: / 13-08-2010 / 17:09:05 / sr"
+!
+
+hasAnyRegexMatchesIgnoringCase: rxString
+    "return true, if any substrings in the receiver, matches the regular expression in rxString"
+
+    rxString asRegexIgnoringCase matchesIn:self do:[:m | ^ true].
+    ^ false
+
+    "
+     'ABCD XYZ DEFG' hasAnyRegexMatchesIgnoringCase:'[a-z]+'        
+     'ABCD XYZ DEFG' hasAnyRegexMatches:'[a-z]+'        
+
+     '1234 abcd 3456 defg' hasAnyRegexMatchesIgnoringCase:'[a-z]+'   
+     'abcd 3456 defg' hasAnyRegexMatchesIgnoringCase:'[a-z]+'        
+    "
+
+    "Created: / 13-08-2010 / 17:11:11 / sr"
+! !
 
 !CharacterArray methodsFor:'padded copying'!
 
@@ -4741,56 +4774,64 @@
         (next == $%) ifTrue:[
             aStream nextPut:$%.
         ] ifFalse:[
-        next == $< ifTrue:[
-            idx2 := self indexOf:$> startingAt:idx+2.
-            key := self copyFrom:idx+2 to:idx2-1.
-            idx := idx2 - 1.
-            key := key asSymbolIfInterned.
-            (#(cr tab nl return lf ff null) includesIdentical:key) ifTrue:[
-                aStream nextPut:(Character perform:key).
-            ].
-        ] ifFalse:[
-            (next between:$1 and:$9) ifTrue:[
-                v := argArrayOrDictionary at:(next digitValue) ifAbsent:nil
+            next == $< ifTrue:[
+                idx2 := self indexOf:$> startingAt:idx+2.
+                key := self copyFrom:idx+2 to:idx2-1.
+                idx := idx2 - 1.
+                key := key asSymbolIfInterned.
+                (#(cr tab nl return lf ff null) includesIdentical:key) ifTrue:[
+                    aStream nextPut:(Character perform:key).
+                ].
             ] ifFalse:[
-                next == $( ifTrue:[
-                    idx2 := self indexOf:$) startingAt:idx+2.
-                    key := self copyFrom:idx+2 to:idx2-1.
-                    idx := idx2 - 1.
-                    key := key asSymbolIfInterned ? key.
-                    (argArrayOrDictionary includesKey:key) ifTrue:[
-                        v := argArrayOrDictionary at:key
-                    ] ifFalse:[
-                        (key size == 1 and:[ argArrayOrDictionary includesKey:(key at:1)]) ifTrue:[
-                            v := argArrayOrDictionary at:(key at:1)
+                (next between:$1 and:$9) ifTrue:[
+                    v := argArrayOrDictionary at:(next digitValue) ifAbsent:nil
+                ] ifFalse:[
+                    next == $( ifTrue:[
+                        idx2 := self indexOf:$) startingAt:idx+2.
+                        key := self copyFrom:idx+2 to:idx2-1.
+                        idx := idx2 - 1.
+                        (argArrayOrDictionary includesKey:key) ifTrue:[
+                            v := argArrayOrDictionary at:key
                         ] ifFalse:[
-                            key isNumeric ifTrue:[
-                                key := Integer readFrom:key onError:nil.
+                            key := key asSymbolIfInterned ? key.
+                            (argArrayOrDictionary includesKey:key) ifTrue:[
+                                v := argArrayOrDictionary at:key
+                            ] ifFalse:[
+                                (key size == 1 and:[ argArrayOrDictionary includesKey:(key at:1)]) ifTrue:[
+                                    v := argArrayOrDictionary at:(key at:1)
+                                ] ifFalse:[
+                                    key isNumeric ifTrue:[
+                                        key := Integer readFrom:key onError:nil.
+                                    ].
+                                    v := argArrayOrDictionary at:key ifAbsent:nil
+                                ]
                             ].
-                            v := argArrayOrDictionary at:key ifAbsent:nil
-                        ]
+                        ].
+                    ] ifFalse:[
+                        next isLetterOrDigit ifTrue:[
+                            "so next is a non-numeric single character."
+                            v := argArrayOrDictionary 
+                                    at:next 
+                                    ifAbsent:[
+                                        "try symbol instead of character"
+                                        argArrayOrDictionary 
+                                            at:next asSymbol 
+                                            ifAbsent:[String with:$% with:next].
+                                 ].
+                        ] ifFalse:[
+                            v := String with:$% with:next.
+                        ].
+                    ]
+                ].
+                v notNil ifTrue:[
+                    v isBlock ifTrue:[
+                        v := v value
                     ].
-                ] ifFalse:[
-                    "so next is a non-numeric single character.
-                     This would not work with Arrays, since they have integer indizes"
-                    argArrayOrDictionary isSequenceable ifFalse:[
-                        v := argArrayOrDictionary at:next ifAbsent:[
-                                "try symbol instead of character"
-                                argArrayOrDictionary at:next asSymbol ifAbsent:[String with:$% with:next].
-                             ].
-                    ] ifTrue:[
-                        v := String with:$% with:next. "No match, keep original sequence"
-                    ].
-                ]
-            ].
-            v notNil ifTrue:[
-                v isBlock ifTrue:[
-                    v := v value
+
+                    v printOn:aStream.
                 ].
-
-                v printOn:aStream.
-            ].
-        ]].
+            ]
+        ].
         start := idx + 2
     ].
 
@@ -4825,6 +4866,8 @@
          'hello %1 %a %b' expandPlaceholdersWith:dict on:s.
      ].
     "
+
+    "Modified: / 12-08-2010 / 13:23:10 / cg"
 !
 
 firstLine
@@ -5821,15 +5864,15 @@
 !CharacterArray class methodsFor:'documentation'!
 
 version
-    ^ '$Id: CharacterArray.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: CharacterArray.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.433 2010/05/11 17:14:29 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/CharacterArray.st,v 1.437 2010/08/13 15:11:58 sr Exp '
 !
 
 version_SVN
-    ^ '$Id: CharacterArray.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: CharacterArray.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 CharacterArray initialize!
@@ -5838,3 +5881,5 @@
 
 
 
+
+
--- a/Collection.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/Collection.st	Thu Aug 26 11:12:57 2010 +0100
@@ -458,6 +458,39 @@
     self emptyCollectionError.
 !
 
+at:aKey ifNilOrAbsentPut:valueBlock
+    "try to fetch the element at aKey. If either the key is invalid (as in a Dictionary)
+     or there is no element stored under that key (as in an Array), set the element 
+     from the valueBlock and return it.
+     Useful for lazy initialization of collections."
+
+    |val|
+
+    val := self at:aKey ifAbsent:[ self at:aKey put:valueBlock value ].
+    val isNil ifTrue:[
+        self at:aKey put:(val := valueBlock value).
+    ].
+    ^ val
+
+    "
+     |d|
+
+     d := Dictionary new.
+     d at:#foo ifNilOrAbsentPut:[ 'hello' ]. 
+     d     
+    "
+
+    "
+     |a|
+
+     a := Array new:10.
+     a at:1 ifNilOrAbsentPut:[ 'hello' ].  
+     a    
+    "
+
+    "Created: / 24-08-2010 / 17:07:21 / cg"
+!
+
 atAll:indexCollection put:anObject
     "put anObject into all indexes from indexCollection in the receiver.
      This abstract implementation requires that the receiver supports
@@ -1233,8 +1266,8 @@
 !
 
 sum:aBlock
-    "for each element in the receiver, evaluate the argument, aBlock
-     and sum up the results. Return the total sum or 0 for an empty collection.
+    "for each element in the receiver, evaluate the argument, aBlock and sum up the results. 
+     Return the total sum or 0 for an empty collection.
      Similar to (self collect...) sum, but avoids creation of an intermediate collection."
 
     |sum|
@@ -1255,6 +1288,8 @@
      ((1 to:10) collect:[:n | n squared]) sum 
      ((1 to:10) sum:[:n | n squared])         
     "
+
+    "Modified: / 23-08-2010 / 18:19:42 / cg"
 ! !
 
 !Collection methodsFor:'converting'!
@@ -2267,6 +2302,14 @@
     "
 !
 
+keysDo:aBlock
+    "evaluate the argument, aBlock for every key in the collection."
+
+    self keysAndValuesDo:[:k :v | aBlock value:k]
+
+    "Created: / 24-08-2010 / 10:12:14 / cg"
+!
+
 map:selector
     "for lisp fans - similar to collect"
 
@@ -3167,6 +3210,32 @@
     "Modified: / 11-07-2010 / 17:05:25 / cg"
 !
 
+maxApplying:aBlock
+    "return the maximum value from applying aBlock to each element in the receiver collection,
+     using < to compare elements.
+     Raises an error, if the receiver is empty."
+
+    self emptyCheck.
+
+    ^ self 
+        inject:nil
+        into:[:maxSoFar :this | 
+            |v|
+
+            v := aBlock value:this.
+            (maxSoFar isNil or:[maxSoFar < v]) 
+                ifTrue:[v]
+                ifFalse:[maxSoFar]
+        ]
+
+    "
+     #(15 1 -9 -20 10 5) max                        -> 15
+     #(15 1 -9 -20 10 5) maxApplying:[:el | el abs] -> 20
+    "
+
+    "Created: / 23-08-2010 / 11:02:50 / cg"
+!
+
 min
     "return the minimum value in the receiver collection,
      using < to compare elements.
@@ -3192,6 +3261,32 @@
     "Modified: / 11-07-2010 / 17:06:38 / cg"
 !
 
+minApplying:aBlock
+    "return the minimum value from applying aBlock to each element in the receiver collection,
+     using < to compare elements.
+     Raises an error, if the receiver is empty."
+
+    self emptyCheck.
+
+    ^ self 
+        inject:nil
+        into:[:minSoFar :this |
+            |v|
+
+            v := aBlock value:this.
+            (minSoFar isNil or:[v < minSoFar]) 
+                ifTrue:[v]
+                ifFalse:[minSoFar]
+        ]
+
+    "
+     #(15 -1 -9 10 5) min                        -> -9
+     #(15 -1 -9 10 5) minApplying:[:el | el abs] -> 1
+    "
+
+    "Created: / 23-08-2010 / 11:01:42 / cg"
+!
+
 minMax
     "return the minimum and maximum values in the receiver collection
      as a two element array, using #< to compare elements.
@@ -3736,15 +3831,15 @@
 !Collection class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Collection.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: Collection.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/Collection.st,v 1.246 2010/08/07 17:18:25 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/Collection.st,v 1.250 2010/08/24 15:10:11 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: Collection.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: Collection.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 Collection initialize!
@@ -3752,3 +3847,4 @@
 
 
 
+
--- a/Context.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/Context.st	Thu Aug 26 11:12:57 2010 +0100
@@ -12,11 +12,11 @@
 "{ Package: 'stx:libbasic' }"
 
 Object variableSubclass:#Context
-        instanceVariableNames:'flags sender* home receiver selector searchClass method lineNr
-                retvalTemp handle*'
-        classVariableNames:'InvalidReturnSignal SingleStepInterruptRequest'
-        poolDictionaries:''
-        category:'Kernel-Methods'
+	instanceVariableNames:'flags sender* home receiver selector searchClass method lineNr
+		retvalTemp handle*'
+	classVariableNames:'InvalidReturnSignal SingleStepInterruptRequest'
+	poolDictionaries:''
+	category:'Kernel-Methods'
 !
 
 !Context class methodsFor:'documentation'!
@@ -502,8 +502,13 @@
 
 method
     "return the method for which the receiver was created.
-     To save time during normal execution, this information is not held in the
-     context, but computed here on request."
+     Change with ST/X vsn 6:
+        In older versions, the method was not stored in the context, but a lookup
+        was simulated using selector and class.
+        (which occasionally returned the wrong method - especially in the debugger, 
+        when the debugged method was changed).
+        This has been changed - especially to support Jan's meta-object protocol.
+        It is now stored in the context"
 
     |c sender sendersSelector m|
 
@@ -2390,15 +2395,15 @@
 !Context class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Context.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: Context.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/Context.st,v 1.157 2010/04/07 17:36:33 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/Context.st,v 1.158 2010/08/14 10:56:21 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: Context.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: Context.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 Context initialize!
@@ -2407,3 +2412,4 @@
 
 
 
+
--- a/Dictionary.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/Dictionary.st	Thu Aug 26 11:12:57 2010 +0100
@@ -1546,7 +1546,7 @@
 !
 
 keysDo:aBlock
-    "perform the block for all keys in the collection.
+    "evaluate the argument, aBlock for every key in the collection.
 
      See also:
         #associationsDo:   (which passes key-value associations)
@@ -1569,6 +1569,8 @@
             aBlock value:key
         ]
     ]
+
+    "Modified: / 24-08-2010 / 10:13:58 / cg"
 !
 
 keysSelect:aBlock
@@ -2055,18 +2057,19 @@
 !Dictionary class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Dictionary.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: Dictionary.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/Dictionary.st,v 1.101 2010/02/26 10:48:56 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/Dictionary.st,v 1.102 2010/08/24 08:28:27 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: Dictionary.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: Dictionary.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 Dictionary initialize!
 
 
 
+
--- a/GenericException.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/GenericException.st	Thu Aug 26 11:12:57 2010 +0100
@@ -209,9 +209,11 @@
     <context: #return>
 
     ^ (self newException
-        suspendedContext:thisContext sender
-        errorString:messageText)
-            raiseSignal.
+                suspendedContext:thisContext sender
+                errorString:messageText)
+        raiseSignal.
+
+    "Modified: / 10-08-2010 / 09:41:56 / cg"
 ! !
 
 !GenericException class methodsFor:'Compatibility-Squeak'!
@@ -541,13 +543,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-        suspendedContext:thisContext sender)
-        raise
-
-    "Modified: / 2.5.1996 / 16:36:23 / cg"
-    "Modified: / 5.3.1998 / 16:44:36 / stefan"
-    "Created: / 23.7.1999 / 14:07:17 / stefan"
+    ^ self basicNew
+        raiseIn:thisContext sender
+
+    "Created: / 23-07-1999 / 14:07:17 / stefan"
+    "Modified: / 10-08-2010 / 09:30:42 / cg"
 !
 
 raiseErrorString:aString
@@ -557,13 +557,12 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-        suspendedContext:thisContext sender errorString:aString)
-            raise.
-
-    "Modified: / 9.5.1996 / 15:17:59 / cg"
-    "Modified: / 12.3.1998 / 15:15:22 / stefan"
-    "Created: / 23.7.1999 / 14:07:33 / stefan"
+    ^ self basicNew
+        raiseErrorString:aString
+        in:thisContext sender
+
+    "Created: / 23-07-1999 / 14:07:33 / stefan"
+    "Modified: / 10-08-2010 / 09:34:37 / cg"
 !
 
 raiseErrorString:aString in:aContext
@@ -573,13 +572,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-        suspendedContext:aContext errorString:aString)
-            raise.
-
-    "Modified: / 9.5.1996 / 15:17:59 / cg"
-    "Modified: / 12.3.1998 / 15:15:22 / stefan"
-    "Created: / 23.7.1999 / 14:07:33 / stefan"
+    ^ self basicNew
+        raiseErrorString:aString in:aContext
+
+    "Created: / 23-07-1999 / 14:07:33 / stefan"
+    "Modified: / 10-08-2010 / 09:35:37 / cg"
 !
 
 raiseFrom:something 
@@ -605,13 +602,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-        suspendedContext:thisContext sender)
-        raiseRequest.
-
-    "Modified: / 2.5.1996 / 16:36:52 / cg"
-    "Modified: / 5.3.1998 / 16:50:46 / stefan"
-    "Created: / 23.7.1999 / 14:08:24 / stefan"
+    ^ self basicNew
+        raiseRequestIn:thisContext sender
+
+    "Created: / 23-07-1999 / 14:08:24 / stefan"
+    "Modified: / 10-08-2010 / 09:37:06 / cg"
 !
 
 raiseRequestErrorString:aString
@@ -621,9 +616,10 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-        suspendedContext:thisContext sender errorString:aString)
-        raiseRequest
+    ^ self basicNew
+        raiseRequestErrorString:aString in:thisContext sender
+
+    "Modified: / 10-08-2010 / 09:40:38 / cg"
 !
 
 raiseRequestFrom:something 
@@ -649,13 +645,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-        suspendedContext:thisContext sender parameter:aParameter)
-        raiseRequest.
-
-    "Modified: / 9.5.1996 / 15:13:20 / cg"
-    "Modified: / 12.3.1998 / 15:16:57 / stefan"
-    "Created: / 23.7.1999 / 14:08:48 / stefan"
+    ^ self basicNew
+        raiseRequestWith:aParameter in:thisContext sender
+
+    "Created: / 23-07-1999 / 14:08:48 / stefan"
+    "Modified: / 10-08-2010 / 09:57:14 / cg"
 !
 
 raiseRequestWith:aParameter errorString:aString
@@ -665,13 +659,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-        suspendedContext:thisContext sender parameter:aParameter errorString:aString)
-        raiseRequest
-
-    "Modified: / 9.5.1996 / 15:13:35 / cg"
-    "Modified: / 12.3.1998 / 15:17:52 / stefan"
-    "Created: / 23.7.1999 / 14:08:57 / stefan"
+    ^ self basicNew
+        raiseRequestWith:aParameter errorString:aString in:thisContext sender
+
+    "Created: / 23-07-1999 / 14:08:57 / stefan"
+    "Modified: / 10-08-2010 / 09:56:55 / cg"
 !
 
 raiseRequestWith:aParameter errorString:aString in:aContext
@@ -683,13 +675,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-        suspendedContext:aContext parameter:aParameter errorString:aString)
-        raiseRequest
-
-    "Modified: / 26.7.1996 / 16:29:27 / cg"
-    "Modified: / 12.3.1998 / 15:18:34 / stefan"
-    "Created: / 23.7.1999 / 14:09:07 / stefan"
+    ^ self basicNew
+        raiseRequestWith:aParameter errorString:aString in:aContext
+
+    "Created: / 23-07-1999 / 14:09:07 / stefan"
+    "Modified: / 10-08-2010 / 09:56:36 / cg"
 !
 
 raiseRequestWith:aParameter in:aContext
@@ -700,9 +690,10 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-        suspendedContext:aContext parameter:aParameter)
-        raiseRequest
+    ^ self basicNew
+        raiseRequestWith:aParameter in:aContext
+
+    "Modified: / 10-08-2010 / 09:56:12 / cg"
 !
 
 raiseSignal
@@ -791,13 +782,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-        suspendedContext:thisContext sender parameter:aParameter)
-        raise.
-
-    "Modified: / 9.5.1996 / 15:14:24 / cg"
-    "Modified: / 12.3.1998 / 15:19:11 / stefan"
-    "Created: / 23.7.1999 / 14:09:27 / stefan"
+    ^ self basicNew
+        raiseWith:aParameter in:thisContext sender
+
+    "Created: / 23-07-1999 / 14:09:27 / stefan"
+    "Modified: / 10-08-2010 / 09:51:11 / cg"
 !
 
 raiseWith:aParameter errorString:aString
@@ -808,13 +797,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-        suspendedContext:thisContext sender parameter:aParameter errorString:aString)
-        raise.
-
-    "Modified: / 9.5.1996 / 15:14:32 / cg"
-    "Modified: / 12.3.1998 / 15:19:40 / stefan"
-    "Created: / 23.7.1999 / 14:09:36 / stefan"
+    ^ self basicNew
+          raiseWith:aParameter errorString:aString in:thisContext sender.
+
+    "Created: / 23-07-1999 / 14:09:36 / stefan"
+    "Modified: / 10-08-2010 / 09:52:59 / cg"
 !
 
 raiseWith:aParameter errorString:aString in:aContext
@@ -827,13 +814,11 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-          suspendedContext:aContext parameter:aParameter errorString:aString)
-          raise.
-
-    "Modified: / 26.7.1996 / 16:29:42 / cg"
-    "Modified: / 12.3.1998 / 15:20:12 / stefan"
-    "Created: / 23.7.1999 / 14:09:46 / stefan"
+    ^ self basicNew
+          raiseWith:aParameter errorString:aString in:aContext.
+
+    "Created: / 23-07-1999 / 14:09:46 / stefan"
+    "Modified: / 10-08-2010 / 09:52:10 / cg"
 !
 
 raiseWith:aParameter in:aContext
@@ -845,9 +830,10 @@
     <context: #return>
     <resource: #skipInDebuggersWalkBack>
 
-    ^ (self newException
-          suspendedContext:aContext parameter:aParameter)
-          raise.
+    ^ self basicNew
+        raiseWith:aParameter in:aContext
+
+    "Modified: / 10-08-2010 / 09:52:38 / cg"
 !
 
 signalWith:messageText
@@ -1172,9 +1158,12 @@
 !
 
 creator
-    "return the creator of the exception"
-
-    ^ signal
+    "return the creator of the exception;
+     same as signal, for compatibility"
+
+    ^ signal ? self class
+
+    "Modified: / 10-08-2010 / 09:23:18 / cg"
 !
 
 errorString
@@ -1359,15 +1348,9 @@
 signal
     "return the signal, that caused the exception"
 
-    ^ signal
-!
-
-signal:aSignal
-    "set the signal, that caused the exception"
-
-    signal := aSignal
-
-    "Created: / 5.3.1998 / 16:02:46 / stefan"
+    ^ signal ? self class
+
+    "Modified: / 10-08-2010 / 09:22:33 / cg"
 !
 
 suspendedContext
@@ -1446,9 +1429,11 @@
      Subclasses may redefine this."
 
     proceedable notNil ifTrue:[^ proceedable].
-    ^ signal mayProceed.
-
-    "Created: / 23.7.1999 / 14:48:26 / stefan"
+    signal notNil ifTrue:[^ signal mayProceed].
+    ^ self class mayProceed.
+
+    "Created: / 23-07-1999 / 14:48:26 / stefan"
+    "Modified: / 10-08-2010 / 09:39:15 / cg"
 !
 
 noHandler
@@ -1849,6 +1834,22 @@
 
 !GenericException methodsFor:'private'!
 
+checkProceedable
+    "helper for all raiseRequest methods"
+
+    self mayProceed ifFalse:[
+        StrictRaising ifTrue:[
+            "/ proceeding from wrongProceedabilitySignal grants the raiseRequest
+            WrongProceedabilityError raiseRequestWith:signal
+        ] ifFalse:[
+            self class name infoPrint.
+            ' [warning]: raised with wrong proceedability' infoPrintCR.
+        ]
+    ].
+
+    "Created: / 10-08-2010 / 09:54:41 / cg"
+!
+
 doCallAction
     "call the action proper
      - needed an extra method to have a raise-marked context around
@@ -1904,10 +1905,13 @@
     originator isNil ifTrue:[
         originator := suspendedContext homeReceiver
     ].
-
-    signal isExceptionCreator ifFalse:[
-        "not an exception or Signal - there is something wrong here..."
-        GenericException raiseWith:signal errorString:'unexpected non-ExceptionCreator in calling context'.
+    signal isNil ifTrue:[
+        signal := self class
+    ] ifFalse:[
+        signal isExceptionCreator ifFalse:[
+            "not an exception or Signal - there is something wrong here..."
+            Error "GenericException" raiseWith:signal errorString:'unexpected non-ExceptionCreator in calling context'.
+        ]
     ].
 
     "now, start searching for a handler.
@@ -1977,9 +1981,9 @@
     "
     ^ self doCallAction
 
-    "Created: / 12.5.1996 / 15:09:39 / cg"
-    "Modified: / 9.11.1997 / 14:48:44 / cg"
-    "Modified: / 3.8.1999 / 11:20:41 / stefan"
+    "Created: / 12-05-1996 / 15:09:39 / cg"
+    "Modified: / 03-08-1999 / 11:20:41 / stefan"
+    "Modified: / 10-08-2010 / 09:26:14 / cg"
 ! !
 
 !GenericException methodsFor:'raising'!
@@ -2001,6 +2005,37 @@
     "Modified: / 3.8.1999 / 13:33:01 / stefan"
 !
 
+raiseErrorString:aString in:aContext
+    "raise the signal nonproceedable.
+     The argument, aString is used as messageText"
+
+    <context: #return>
+
+    raiseContext := thisContext.
+    suspendedContext := aContext.
+    messageText := aString.
+    proceedable := false.
+
+    ^ self doRaise
+
+    "Created: / 10-08-2010 / 09:33:43 / cg"
+!
+
+raiseIn:aContext
+    "actually raise a non-proceedable exception"
+
+    <context: #return>
+
+    raiseContext := thisContext.
+    suspendedContext := aContext.
+    proceedable := false.
+
+    ^ self doRaise
+
+    "Modified: / 03-08-1999 / 13:33:01 / stefan"
+    "Created: / 10-08-2010 / 09:30:19 / cg"
+!
+
 raiseRequest
     "actually raise a proceedable exception."
 
@@ -2011,21 +2046,48 @@
         suspendedContext := raiseContext sender
     ].
 
-    self mayProceed ifFalse:[
-        StrictRaising ifTrue:[
-            "/ proceeding from wrongProceedabilitySignal grants the raiseRequest
-            WrongProceedabilityError raiseRequestWith:signal
-        ] ifFalse:[
-            self class name infoPrint.
-            ' [warning]: raised with wrong proceedability' infoPrintCR.
-        ]
-    ].
+    self checkProceedable.
 
     proceedable := true.
     ^ self doRaise
 
     "Modified: / 04-08-1999 / 08:05:12 / stefan"
-    "Modified: / 10-07-2010 / 19:48:42 / cg"
+    "Modified: / 10-08-2010 / 09:55:00 / cg"
+!
+
+raiseRequestErrorString:errorString in:aContext
+    "actually raise a proceedable exception."
+
+    <context: #return>
+
+    raiseContext := thisContext.
+    suspendedContext := aContext.
+    messageText := errorString.
+
+    self checkProceedable.
+
+    proceedable := true.
+    ^ self doRaise
+
+    "Modified: / 04-08-1999 / 08:05:12 / stefan"
+    "Created: / 10-08-2010 / 09:40:05 / cg"
+!
+
+raiseRequestIn:aContext
+    "actually raise a proceedable exception."
+
+    <context: #return>
+
+    raiseContext := thisContext.
+    suspendedContext := aContext.
+
+    self checkProceedable.
+
+    proceedable := true.
+    ^ self doRaise
+
+    "Modified: / 04-08-1999 / 08:05:12 / stefan"
+    "Created: / 10-08-2010 / 09:36:45 / cg"
 !
 
 raiseRequestWith:aParameter errorString:aString
@@ -2041,6 +2103,43 @@
     "Created: / 23.7.1999 / 14:08:57 / stefan"
 !
 
+raiseRequestWith:aParameter errorString:aString in:aContext
+    "actually raise a proceedable exception."
+
+    <context: #return>
+
+    raiseContext := thisContext.
+    suspendedContext := aContext.
+    parameter := aParameter.
+    messageText := aString.
+
+    self checkProceedable.
+
+    proceedable := true.
+    ^ self doRaise
+
+    "Modified: / 04-08-1999 / 08:05:12 / stefan"
+    "Created: / 10-08-2010 / 09:55:48 / cg"
+!
+
+raiseRequestWith:aParameter in:aContext
+    "actually raise a proceedable exception."
+
+    <context: #return>
+
+    raiseContext := thisContext.
+    suspendedContext := aContext.
+    parameter := aParameter.
+
+    self checkProceedable.
+
+    proceedable := true.
+    ^ self doRaise
+
+    "Modified: / 04-08-1999 / 08:05:12 / stefan"
+    "Created: / 10-08-2010 / 09:53:51 / cg"
+!
+
 raiseSignal
     "actually raise an exception (whatever the proceedability is)."
 
@@ -2064,6 +2163,39 @@
     ^ (self 
         suspendedContext:thisContext sender parameter:aParameter errorString:aString)
         raise.
+!
+
+raiseWith:aParameter errorString:aString in:aContext
+    "raise the signal nonproceedable.
+     The argument, aString is used as messageText"
+
+    <context: #return>
+
+    raiseContext := thisContext.
+    suspendedContext := aContext.
+    messageText := aString.
+    parameter := aParameter.
+    proceedable := false.
+
+    ^ self doRaise
+
+    "Created: / 10-08-2010 / 09:51:51 / cg"
+!
+
+raiseWith:aParameter in:aContext
+    "raise the signal nonproceedable.
+     The argument, aString is used as messageText"
+
+    <context: #return>
+
+    raiseContext := thisContext.
+    suspendedContext := aContext.
+    parameter := aParameter.
+    proceedable := false.
+
+    ^ self doRaise
+
+    "Created: / 10-08-2010 / 09:50:54 / cg"
 ! !
 
 !GenericException methodsFor:'setup'!
@@ -2133,18 +2265,19 @@
 !GenericException class methodsFor:'documentation'!
 
 version
-    ^ '$Id: GenericException.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: GenericException.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.125 2010/07/10 17:49:23 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/GenericException.st,v 1.126 2010/08/10 08:34:53 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: GenericException.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: GenericException.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 GenericException initialize!
 
 
 
+
--- a/InlineObjectClassDescription.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/InlineObjectClassDescription.st	Thu Aug 26 11:12:57 2010 +0100
@@ -42,14 +42,25 @@
      a classes name is asked for."
 
     ^ #'Inline Object'
+!
+
+nameSpace
+    ^ nil
+
+    "Created: / 13-08-2010 / 18:23:33 / cg"
 ! !
 
 !InlineObjectClassDescription class methodsFor:'documentation'!
 
 version
-    ^ '$Id: InlineObjectClassDescription.st 10517 2010-04-26 18:26:38Z vranyj1 $'
+    ^ '$Id: InlineObjectClassDescription.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_SVN
-    ^ '$Id: InlineObjectClassDescription.st 10517 2010-04-26 18:26:38Z vranyj1 $'
+    ^ '$Id: InlineObjectClassDescription.st 10570 2010-08-26 10:12:57Z vranyj1 $'
+!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libbasic/InlineObjectClassDescription.st,v 1.2 2010/08/13 16:57:49 cg Exp §'
 ! !
+
--- a/Integer.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/Integer.st	Thu Aug 26 11:12:57 2010 +0100
@@ -1139,6 +1139,7 @@
     ^ self == Integer
 ! !
 
+
 !Integer methodsFor:'Compatibility-Dolphin'!
 
 & aNumber
@@ -2572,7 +2573,11 @@
 !
 
 binco:kIn
+    "an alternative name for the binomial coefficient for squeak compatibility"
+
     ^ self binomialCoefficient:kIn
+
+    "Modified: / 17-08-2010 / 17:29:07 / cg"
 !
 
 binomialCoefficient:kIn
@@ -2806,12 +2811,12 @@
 fib_helper
     "compute the fibionacci number for the receiver.
 
-	Fib(n) = Fib(n-1) + Fib(n-2)
-
-    Knuth:
-	Fib(n+m) = Fib(m) * Fib(n+1) + Fib(m-1) * Fib(n)
-
-    This is about 3 times faster than fib_iterative.
+        Fib(n) = Fib(n-1) + Fib(n-2)
+
+     Knuth:
+        Fib(n+m) = Fib(m) * Fib(n+1) + Fib(m-1) * Fib(n)
+
+     This is about 3 times faster than fib_iterative.
     "
 
     |fibUsingDict dict|
@@ -2819,61 +2824,61 @@
     dict := Dictionary new:100.
 
     fibUsingDict := [:x |
-	|n fib fibN fibNp1 fibNm1 fibXm1 fibXm2 fibXp1|
-
-	x <= 30 ifTrue:[
-		"/ 0 1 2 3 4 5 6  7  8  9 10 11  12  13  14  15  16   17   18   19   20    21    22    23    24    25     26     27     28     29     30
-	    fib := #(1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040
-		     ) at:x
-	] ifFalse:[
-	    fib := dict at:x ifAbsent:nil.
-	    fib isNil ifTrue:[
-		fibXm1 := dict at:(x-1) ifAbsent:nil.
-		fibXm1 notNil ifTrue:[
-		    fibXm2 := dict at:(x-2) ifAbsent:nil.
-		    fibXm2 notNil ifTrue:[
-			fib := fibXm1 + fibXm2.
-		    ] ifFalse:[
-			fibXp1 := dict at:(x+1) ifAbsent:nil.
-			fibXp1 notNil ifTrue:[
-			    fib := fibXp1 - fibXm1.
-			]
-		    ]
-		].
-
-		fib isNil ifTrue:[
-		    n := x // 2.
-		    x odd ifTrue:[
-			"/ m is set to n+1; therefore:
-			"/ Fib(x) = Fib(n+n+1)      ; x odd; setting n = (x-1)/2
-			"/ using Knuth:
-			"/ Fib(n+n+1) = Fib(n+1) * Fib(n+1) + Fib(n+1-1) * Fib(n)
-			"/            = (Fib(n+1) ^ 2) + (Fib(n) ^ 2)
-			fibN   := fibUsingDict value:n.
-			fibNp1 := fibUsingDict value:(n+1).
-			fib := fibN squared + fibNp1 squared
-		    ] ifFalse:[
-			"/ as
-			"/    Fib(n+1) = Fib(n) + Fib(n-1)
-			"/ therefore:
-			"/    Fib(n) = Fib(n+1) - Fib(n-1)
-			"/ and, since n is even, n+1 and n-1 are odd, and can be computed as above.
-			"/ This gives us:
-			"/    Fib(x) = Fib(x+1) - Fib(x-1)      ; x even; setting n = x/2
-			"/           = Fib(n+n+1) - Fib(n+n-1)
-			"/           = Fib(n+n+1) - Fib((n-1)+(n-1)+1)
-			"/           = ((Fib(n+1)^2) + (Fib(n)^2)) - ((Fib((n-1)+1)^2) + (Fib((n-1))^2))
-			"/           = (Fib(n+1)^2) + (Fib(n)^2) - (Fib(n)^2) - (Fib((n-1))^2)
-			"/           = (Fib(n+1)^2) - (Fib((n-1))^2)
-			fibNm1 := fibUsingDict value:(n-1).
-			fibNp1 := fibUsingDict value:(n+1).
-			fib := fibNp1 squared - fibNm1 squared
-		    ].
-		].
-		dict at:x put:fib.
-	    ]
-	].
-	fib
+        |n fib fibN fibNp1 fibNm1 fibXm1 fibXm2 fibXp1|
+
+        x <= 30 ifTrue:[
+                "/ 0 1 2 3 4 5 6  7  8  9 10 11  12  13  14  15  16   17   18   19   20    21    22    23    24    25     26     27     28     29     30
+            fib := #(1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040
+                     ) at:x
+        ] ifFalse:[
+            fib := dict at:x ifAbsent:nil.
+            fib isNil ifTrue:[
+                fibXm1 := dict at:(x-1) ifAbsent:nil.
+                fibXm1 notNil ifTrue:[
+                    fibXm2 := dict at:(x-2) ifAbsent:nil.
+                    fibXm2 notNil ifTrue:[
+                        fib := fibXm1 + fibXm2.
+                    ] ifFalse:[
+                        fibXp1 := dict at:(x+1) ifAbsent:nil.
+                        fibXp1 notNil ifTrue:[
+                            fib := fibXp1 - fibXm1.
+                        ]
+                    ]
+                ].
+
+                fib isNil ifTrue:[
+                    n := x // 2.
+                    x odd ifTrue:[
+                        "/ m is set to n+1; therefore:
+                        "/ Fib(x) = Fib(n+n+1)      ; x odd; setting n = (x-1)/2
+                        "/ using Knuth:
+                        "/ Fib(n+n+1) = Fib(n+1) * Fib(n+1) + Fib(n+1-1) * Fib(n)
+                        "/            = (Fib(n+1) ^ 2) + (Fib(n) ^ 2)
+                        fibN   := fibUsingDict value:n.
+                        fibNp1 := fibUsingDict value:(n+1).
+                        fib := fibN squared + fibNp1 squared
+                    ] ifFalse:[
+                        "/ as
+                        "/    Fib(n+1) = Fib(n) + Fib(n-1)
+                        "/ therefore:
+                        "/    Fib(n) = Fib(n+1) - Fib(n-1)
+                        "/ and, since n is even, n+1 and n-1 are odd, and can be computed as above.
+                        "/ This gives us:
+                        "/    Fib(x) = Fib(x+1) - Fib(x-1)      ; x even; setting n = x/2
+                        "/           = Fib(n+n+1) - Fib(n+n-1)
+                        "/           = Fib(n+n+1) - Fib((n-1)+(n-1)+1)
+                        "/           = ((Fib(n+1)^2) + (Fib(n)^2)) - ((Fib((n-1)+1)^2) + (Fib((n-1))^2))
+                        "/           = (Fib(n+1)^2) + (Fib(n)^2) - (Fib(n)^2) - (Fib((n-1))^2)
+                        "/           = (Fib(n+1)^2) - (Fib((n-1))^2)
+                        fibNm1 := fibUsingDict value:(n-1).
+                        fibNp1 := fibUsingDict value:(n+1).
+                        fib := fibNp1 squared - fibNm1 squared
+                    ].
+                ].
+                dict at:x put:fib.
+            ]
+        ].
+        fib
     ].
 
     ^ fibUsingDict value:self
@@ -2896,6 +2901,8 @@
      1 to:100 do:[:i | self assert:(i fib_iterative = i fib_helper) ]
      1 to:100 do:[:i | self assert:(i fib_iterative = i fib) ]
     "
+
+    "Modified: / 17-08-2010 / 17:29:34 / cg"
 !
 
 gcd:anInteger
@@ -2943,16 +2950,15 @@
     result := LargeInteger basicNew numberOfDigits:(b // 8)+1.
     b := b+1.
     [b > 0] whileTrue:[
-	rem >= self ifTrue:[
-	    rem := rem -= self.
-	    result digitBytes bitSetAt:b.
-	].
-	rem := rem mul2.
-	b := b - 1.
+        rem >= self ifTrue:[
+            rem := rem -= self.
+            result digitBytes bitSetAt:b.
+        ].
+        rem := rem mul2.
+        b := b - 1.
     ].
     ^ result compressed.
 
-
     "
      333 integerReciprocal                (2 raisedTo:18) // 333
      393 integerReciprocal
@@ -2962,7 +2968,8 @@
      10239552311579 integerReciprocal
    "
 
-    "Modified: / 3.5.1999 / 14:27:18 / stefan"
+    "Modified: / 03-05-1999 / 14:27:18 / stefan"
+    "Modified: / 17-08-2010 / 17:30:22 / cg"
 !
 
 integerSqrt
@@ -3059,18 +3066,17 @@
 primeFactors
     "return a collection of prime factors of the receiver.
      For prime numbers, an empty collection is returned.
-     Can take a long time for big numbers
-     (win a nobel price, if you find something quick)"
+     Can take a long time for big numbers"
 
     ^ self primeFactorsUpTo:nil
 
     "
      2 to:10000 do:[:n |
-	self assert:((n isPrime and:[ n primeFactors isEmpty])
-		    or:[ n isPrime not and:[n primeFactors product = n]])
+        self assert:((n isPrime and:[ n primeFactors isEmpty])
+                    or:[ n isPrime not and:[n primeFactors product = n]])
      ]
      3 to:10000 do:[:n |
-	self assert:(n factorial primeFactors product = n factorial)
+        self assert:(n factorial primeFactors product = n factorial)
      ]
 
      13195 primeFactors
@@ -3091,18 +3097,22 @@
      1000000000 primeFactors
 
      Time millisecondsToRun:[
-	1000 timesRepeat:[
-	    10000000000000000000000000000000000000 primeFactors
-	]
+        1000 timesRepeat:[
+            10000000000000000000000000000000000000 primeFactors
+        ]
      ]   421
     "
+
+    "Modified: / 17-08-2010 / 17:27:33 / cg"
 !
 
 primeFactorsUpTo:limitArgOrNil
     "return a collection of prime factors of the receiver.
      For prime numbers, an empty collection is returned.
      Can take a long time for big numbers
-     (win a nobel price, if you find something quick)"
+     (win a nobel price, if you find something quick (*)
+
+     (*):which does not mean that the code below is optimal - far from it !!"
 
     |rest n factors limit lastPrime checkThisFactor nextTry|
 
@@ -3110,77 +3120,77 @@
     rest := self.
     limit := (rest // 2).
     limitArgOrNil notNil ifTrue:[
-	limit := limit min:limitArgOrNil.
+        limit := limit min:limitArgOrNil.
     ].
 
     "/ try to get the number down fast:
     n := rest lowBit.
     n ~~ 1 ifTrue:[
-	self == 2 ifTrue:[^ #() ].
-	factors add:2 withOccurrences:(n-1).
-	rest := rest rightShift:(n-1).
+        self == 2 ifTrue:[^ #() ].
+        factors add:2 withOccurrences:(n-1).
+        rest := rest rightShift:(n-1).
     ].
 
     checkThisFactor := [:prime |
-	    prime*prime > rest ifTrue:[
-		(rest ~~ 1 and:[factors notEmpty]) ifTrue:[ factors add:rest ].
-		^ factors.
-	    ].
-
-	    [rest \\ prime == 0] whileTrue:[
-		factors add:prime.
-		rest := rest // prime.
-		rest == 1 ifTrue:[^ factors].
-	    ].
-	    lastPrime := prime.
-	].
+            prime*prime > rest ifTrue:[
+                (rest ~~ 1 and:[factors notEmpty]) ifTrue:[ factors add:rest ].
+                ^ factors.
+            ].
+
+            [rest \\ prime == 0] whileTrue:[
+                factors add:prime.
+                rest := rest // prime.
+                rest == 1 ifTrue:[^ factors].
+            ].
+            lastPrime := prime.
+        ].
 
     limit <= 2000 ifTrue:[
-	Integer primesUpTo2000 do:checkThisFactor.
-	^ factors
+        Integer primesUpTo2000 do:checkThisFactor.
+        ^ factors
     ].
 
     "/ actually, all of the code is duplicated; once for primes from a table,
     "/ and then primes as generated on the fly. The prime generation involves a prime-test,
     "/ which may slow things down quite a bit.
     "/ (the primesUpTo uses a faster sieve, but can only represent primes to upTo (say)
-    "/ a few millions.
+    "/ a few millions).
 
     Integer primesUpTo:(limit min:(1000000 max:Integer primeCacheSize)) do:checkThisFactor.
 
     nextTry := lastPrime + 2.
     [ nextTry <= limit ] whileTrue:[
-	"/ now, we are beyond the list of pre-generated primes.
-	"/ change our strategy to: see if it divides an odd number;
-	"/ if so, add the divisor's prime factors.
-	nextTry*nextTry > rest ifTrue:[
-	    (rest ~~ 1 and:[factors notEmpty]) ifTrue:[ factors add:rest ].
-	    ^ factors.
-	].
-	[(rest \\ nextTry) == 0] whileTrue:[
-	    "/ can only happen relatively late after the last prime,
-	    "/ because otherwise, the primeFactors of nextTry would already have
-	    "/ been found as divisors.
-	    "/ first chance is: (lastPrime + 2) squared
-	    nextTry < lastPrime squared ifTrue:[
-		"/ nextTry is a prime !!
-		factors add:nextTry
-	    ] ifFalse:[
-		factors addAll:(nextTry primeFactors).
-	    ].
-	    rest := rest // nextTry.
-	].
-	nextTry := nextTry + 2.
+        "/ now, we are beyond the list of pre-generated primes.
+        "/ change our strategy to: see if it divides an odd number;
+        "/ if so, add the divisor's prime factors.
+        nextTry*nextTry > rest ifTrue:[
+            (rest ~~ 1 and:[factors notEmpty]) ifTrue:[ factors add:rest ].
+            ^ factors.
+        ].
+        [(rest \\ nextTry) == 0] whileTrue:[
+            "/ can only happen relatively late after the last prime,
+            "/ because otherwise, the primeFactors of nextTry would already have
+            "/ been found as divisors.
+            "/ first chance is: (lastPrime + 2) squared
+            nextTry < lastPrime squared ifTrue:[
+                "/ nextTry is a prime !!
+                factors add:nextTry
+            ] ifFalse:[
+                factors addAll:(nextTry primeFactors).
+            ].
+            rest := rest // nextTry.
+        ].
+        nextTry := nextTry + 2.
     ].
     ^ factors
 
     "
      2 to:10000 do:[:n |
-	self assert:((n isPrime and:[ n primeFactors isEmpty])
-		    or:[ n isPrime not and:[n primeFactors product = n]])
+        self assert:((n isPrime and:[ n primeFactors isEmpty])
+                    or:[ n isPrime not and:[n primeFactors product = n]])
      ]
      3 to:10000 do:[:n |
-	self assert:(n factorial primeFactors product = n factorial)
+        self assert:(n factorial primeFactors product = n factorial)
      ]
 
      13195 primeFactors
@@ -3201,11 +3211,13 @@
      1000000000 primeFactors
 
      Time millisecondsToRun:[
-	1000 timesRepeat:[
-	    10000000000000000000000000000000000000 primeFactors
-	]
+        1000 timesRepeat:[
+            10000000000000000000000000000000000000 primeFactors
+        ]
      ]   421
     "
+
+    "Modified: / 17-08-2010 / 17:28:05 / cg"
 !
 
 raisedTo:exp mod:mod
@@ -3929,6 +3941,7 @@
     "Modified: 15.10.1997 / 18:43:49 / cg"
 ! !
 
+
 !Integer methodsFor:'special access'!
 
 exponent
@@ -4707,15 +4720,15 @@
 !Integer class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Integer.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: Integer.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/Integer.st,v 1.248 2010/08/02 10:34:20 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/Integer.st,v 1.251 2010/08/17 15:32:31 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: Integer.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: Integer.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 Integer initialize!
@@ -4724,3 +4737,4 @@
 
 
 
+
--- a/KeyedCollection.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/KeyedCollection.st	Thu Aug 26 11:12:57 2010 +0100
@@ -153,14 +153,6 @@
     ^ self subclassResponsibility
 
     "Created: / 19.6.1998 / 00:56:52 / cg"
-!
-
-keysDo:aBlock
-    "evaluate aBlock for each key"
-
-    self keysAndValuesDo:[:elKey :elValue | aBlock value:elKey]
-
-    "Created: / 19.6.1998 / 00:56:34 / cg"
 ! !
 
 !KeyedCollection methodsFor:'removing'!
@@ -208,16 +200,17 @@
 !KeyedCollection class methodsFor:'documentation'!
 
 version
-    ^ '$Id: KeyedCollection.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: KeyedCollection.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/KeyedCollection.st,v 1.7 2010/01/29 16:42:18 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/KeyedCollection.st,v 1.8 2010/08/24 08:29:08 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: KeyedCollection.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: KeyedCollection.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 
 
+
--- a/LargeInteger.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/LargeInteger.st	Thu Aug 26 11:12:57 2010 +0100
@@ -1031,29 +1031,29 @@
 bitAt:anIntegerIndex
     "return the value of the index's bit (index starts at 1) as 0 or 1.
      Notice: the result of bitAt: on negative receivers is not
-	     defined in the language standard (since the implementation
-	     is free to choose any internal representation for integers)"
+             defined in the language standard (since the implementation
+             is free to choose any internal representation for integers)"
 
 %{  /* NOCONTEXT */
     if (__isSmallInteger(anIntegerIndex)) {
-	INT idx = __smallIntegerVal(anIntegerIndex) - 1;
-
-	if (idx >= 0) {
-	    int v1;
-	    int byteOffset = idx / 8;
-	    int digitLen   = __stringSize(__INST(digitByteArray));
-
-	    if (digitLen < byteOffset) {
-		RETURN(__mkSmallInteger(0));
-	    }
-
-	    v1 = (__byteArrayVal(__INST(digitByteArray)))[byteOffset];
-	    if (v1 & (1 << (idx % 8))) {
-		RETURN(__mkSmallInteger(1));
-	    } else {
-		RETURN(__mkSmallInteger(0));
-	    }
-	}
+        INT idx = __smallIntegerVal(anIntegerIndex) - 1;
+
+        if (idx >= 0) {
+            int v1;
+            int byteOffset = idx / 8;
+            int digitLen   = __byteArraySize(__INST(digitByteArray));
+
+            if (digitLen < byteOffset) {
+                RETURN(__mkSmallInteger(0));
+            }
+
+            v1 = (__byteArrayVal(__INST(digitByteArray)))[byteOffset];
+            if (v1 & (1 << (idx % 8))) {
+                RETURN(__mkSmallInteger(1));
+            } else {
+                RETURN(__mkSmallInteger(0));
+            }
+        }
     }
 %}.
     ^ super bitAt:anIntegerIndex
@@ -1068,6 +1068,8 @@
      TestCase assert:( 16rFFFFFFFF01FF bitAt:9  ) == 1
      TestCase assert:( 16rFFFFFFFF01FF bitAt:10 ) == 0
     "
+
+    "Modified: / 10-08-2010 / 12:33:04 / cg"
 !
 
 bitXor:anInteger
@@ -5139,17 +5141,18 @@
 !LargeInteger class methodsFor:'documentation'!
 
 version
-    ^ '$Id: LargeInteger.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: LargeInteger.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.201 2010/04/14 08:00:14 stefan Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.202 2010/08/10 10:34:11 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: LargeInteger.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: LargeInteger.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 
 
 
+
--- a/Make.proto	Thu Aug 19 21:39:34 2010 +0100
+++ b/Make.proto	Thu Aug 26 11:12:57 2010 +0100
@@ -1,4 +1,4 @@
-# $Header$
+# $Header: /cvs/stx/stx/libbasic/Make.proto,v 1.231 2010/08/20 10:18:30 cg Exp $
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libbasic.
@@ -231,6 +231,7 @@
 $(OUTDIR)RecursiveStoreError.$(O) RecursiveStoreError.$(H): RecursiveStoreError.st $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)SHA1Stream.$(O) SHA1Stream.$(H): SHA1Stream.st $(INCLUDE_TOP)/stx/libbasic/HashStream.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Time.$(O) Time.$(H): Time.st $(INCLUDE_TOP)/stx/libbasic/AbstractTime.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)TimeoutNotification.$(O) TimeoutNotification.$(H): TimeoutNotification.st $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Timestamp.$(O) Timestamp.$(H): Timestamp.st $(INCLUDE_TOP)/stx/libbasic/AbstractTime.$(H) $(INCLUDE_TOP)/stx/libbasic/Magnitude.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)UserInterrupt.$(O) UserInterrupt.$(H): UserInterrupt.st $(INCLUDE_TOP)/stx/libbasic/ControlInterrupt.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)UserNotification.$(O) UserNotification.$(H): UserNotification.st $(INCLUDE_TOP)/stx/libbasic/Notification.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
@@ -381,9 +382,10 @@
 $(OUTDIR)PipeStream.$(O) PipeStream.$(H): PipeStream.st $(INCLUDE_TOP)/stx/libbasic/NonPositionableExternalStream.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalStream.$(H) $(INCLUDE_TOP)/stx/libbasic/ReadWriteStream.$(H) $(INCLUDE_TOP)/stx/libbasic/WriteStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PositionableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/PeekableStream.$(H) $(INCLUDE_TOP)/stx/libbasic/Stream.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Symbol.$(O) Symbol.$(H): Symbol.st $(INCLUDE_TOP)/stx/libbasic/String.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)Unicode16String.$(O) Unicode16String.$(H): Unicode16String.st $(INCLUDE_TOP)/stx/libbasic/TwoByteString.$(H) $(INCLUDE_TOP)/stx/libbasic/CharacterArray.$(H) $(INCLUDE_TOP)/stx/libbasic/ByteArray.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)UnixFileDescriptorHandle.$(O) UnixFileDescriptorHandle.$(H): UnixFileDescriptorHandle.st $(INCLUDE_TOP)/stx/libbasic/OSFileHandle.$(H) $(INCLUDE_TOP)/stx/libbasic/OSHandle.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)UnixFileHandle.$(O) UnixFileHandle.$(H): UnixFileHandle.st $(INCLUDE_TOP)/stx/libbasic/OSFileHandle.$(H) $(INCLUDE_TOP)/stx/libbasic/OSHandle.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)UnixOperatingSystem.$(O) UnixOperatingSystem.$(H): UnixOperatingSystem.st $(INCLUDE_TOP)/stx/libbasic/AbstractOperatingSystem.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/OSFileHandle.$(H) $(INCLUDE_TOP)/stx/libbasic/OSHandle.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(STCHDR)
+$(OUTDIR)UnixFileDescriptorHandle.$(O) UnixFileDescriptorHandle.$(H): UnixFileDescriptorHandle.st $(STCHDR)
+$(OUTDIR)UnixFileHandle.$(O) UnixFileHandle.$(H): UnixFileHandle.st $(STCHDR)
+$(OUTDIR)UnixOperatingSystem.$(O) UnixOperatingSystem.$(H): UnixOperatingSystem.st $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
 
+
--- a/Make.spec	Thu Aug 19 21:39:34 2010 +0100
+++ b/Make.spec	Thu Aug 26 11:12:57 2010 +0100
@@ -1,4 +1,4 @@
-# $Header$
+# $Header: /cvs/stx/stx/libbasic/Make.spec,v 1.108 2010/08/20 10:18:38 cg Exp $
 #
 # DO NOT EDIT 
 # automagically generated from the projectDefinition: stx_libbasic.
@@ -336,6 +336,7 @@
 	PipeStream \
 	Symbol \
 	Unicode16String \
+	TimeoutNotification \
 
 WIN32_CLASSES= \
 	CharacterEncoderImplementations::MS_Baltic \
@@ -638,6 +639,7 @@
     $(OUTDIR)PipeStream.$(O) \
     $(OUTDIR)Symbol.$(O) \
     $(OUTDIR)Unicode16String.$(O) \
+    $(OUTDIR)TimeoutNotification.$(O) \
 
 WIN32_OBJS= \
     $(OUTDIR)CharacterEncoderImplementations__MS_Baltic.$(O) \
@@ -652,3 +654,4 @@
 
 
 
+
--- a/MessageNotUnderstood.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/MessageNotUnderstood.st	Thu Aug 26 11:12:57 2010 +0100
@@ -144,7 +144,7 @@
     ].
     sel := self selector.
     sel class == Symbol ifTrue:[
-        description := description , ' does not understand: #' , sel.
+        description := description , ' does not understand: ' , sel storeString.
         "/ description := sel, ' not understood by ' ,  description.
     ] ifFalse:[
         "a non-symbol selector may happen when things go mad in a primitive, 
@@ -162,14 +162,21 @@
         2 perform:55
         nil // 2
     "
+
+    "Modified: / 19-08-2010 / 15:33:03 / cg"
 ! !
 
 !MessageNotUnderstood class methodsFor:'documentation'!
 
 version
-    ^ '$Id: MessageNotUnderstood.st 10517 2010-04-26 18:26:38Z vranyj1 $'
+    ^ '$Id: MessageNotUnderstood.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
-version_SVN
-    ^ '$Id: MessageNotUnderstood.st 10517 2010-04-26 18:26:38Z vranyj1 $'
+version_SVN  
+  ^ '$Id: MessageNotUnderstood.st 10570 2010-08-26 10:12:57Z vranyj1 $'
+!  
+ 
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libbasic/MessageNotUnderstood.st,v 1.11 2010/08/19 13:44:12 cg Exp §'
 ! !
+
--- a/NamespaceAwareLookup.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/NamespaceAwareLookup.st	Thu Aug 26 11:12:57 2010 +0100
@@ -9,6 +9,8 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+'From Smalltalk/X, Version:6.1.2 on 19-08-2010 at 10:16:13 PM'                  !
+
 "{ Package: 'stx:libbasic' }"
 
 Lookup subclass:#NamespaceAwareLookup
@@ -349,7 +351,7 @@
 !NamespaceAwareLookup class methodsFor:'documentation'!
 
 version_SVN
-    ^ '$Id: NamespaceAwareLookup.st 10567 2010-08-19 20:39:34Z vranyj1 $'
+    ^ '$Id: NamespaceAwareLookup.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 NamespaceAwareLookup initialize!
--- a/Object.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/Object.st	Thu Aug 26 11:12:57 2010 +0100
@@ -2106,6 +2106,7 @@
 %}
 ! !
 
+
 !Object methodsFor:'converting'!
 
 -> anObject
@@ -2678,12 +2679,16 @@
     (aBooleanOrBlock value) ifFalse:[
         AssertionFailedError
             raiseRequestWith:self
-            errorString:('Assertion failed', ' { ',thisContext sender printString,' }')
+            errorString:('Assertion failed in ', 
+                         thisContext sender printString,
+                         '[', thisContext sender lineNumber printString,']')
     ].
 
     "
      self assert:false
     "
+
+    "Modified: / 20-08-2010 / 17:13:06 / cg"
 !
 
 assert:aBooleanOrBlock message:messageIfFailing
@@ -9328,16 +9333,17 @@
 !Object class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Object.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: Object.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/Object.st,v 1.651 2010/08/05 15:40:40 sr Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/Object.st,v 1.652 2010/08/20 15:51:57 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: Object.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: Object.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 Object initialize!
 
+
--- a/Process.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/Process.st	Thu Aug 26 11:12:57 2010 +0100
@@ -747,6 +747,16 @@
     suspendActions := nil.
 
     "Created: 12.1.1997 / 00:36:16 / cg"
+!
+
+removeExitAction:anExitAction ifAbsent:exceptionBlock
+    "remove the identical exitAction; if found, remove and return it;
+    if not, return the value from evaluating exceptionBlock"
+
+    exitActions notNil ifTrue:[
+        ^ exitActions removeIdentical:anExitAction ifAbsent:exceptionBlock.
+    ].
+    ^ exceptionBlock value.
 ! !
 
 !Process methodsFor:'accessing-stack'!
@@ -2043,18 +2053,19 @@
 !Process class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Process.st 10549 2010-07-20 11:11:45Z vranyj1 $'
+    ^ '$Id: Process.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/Process.st,v 1.170 2010/03/06 13:45:45 stefan Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/Process.st,v 1.171 2010/08/13 07:40:24 sr Exp '
 !
 
 version_SVN
-    ^ '$Id: Process.st 10549 2010-07-20 11:11:45Z vranyj1 $'
+    ^ '$Id: Process.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 Process initialize!
 
 
 
+
--- a/Registry.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/Registry.st	Thu Aug 26 11:12:57 2010 +0100
@@ -276,7 +276,7 @@
 
     executor := anObject executor.
     executor notNil ifTrue:[
-        self register:anObject as:(anObject executor)
+        self register:anObject as:executor.
     ].
 !
 
@@ -514,9 +514,14 @@
 !Registry class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Registry.st 10517 2010-04-26 18:26:38Z vranyj1 $'
+    ^ '$Id: Registry.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_SVN
-    ^ '$Id: Registry.st 10517 2010-04-26 18:26:38Z vranyj1 $'
+    ^ '$Id: Registry.st 10570 2010-08-26 10:12:57Z vranyj1 $'
+!
+
+version_CVS
+    ^ 'Header: /cvs/stx/stx/libbasic/Registry.st,v 1.61 2010/08/11 10:06:08 stefan Exp '
 ! !
+
--- a/SequenceableCollection.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/SequenceableCollection.st	Thu Aug 26 11:12:57 2010 +0100
@@ -2076,6 +2076,7 @@
     "
 ! !
 
+
 !SequenceableCollection methodsFor:'converting'!
 
 asCollectionOfSubCollectionsOfSize:pieceSize
@@ -4484,6 +4485,22 @@
     "Modified: 9.5.1996 / 00:57:23 / cg"
 !
 
+keysDo:aBlock
+    "evaluate the argument, aBlock for every key in the collection.
+     That is: enumerate the indices.
+     Here mostly for protocol compatibility."
+
+    1 to:self size do:aBlock
+
+    "
+     #(one two three four five six)
+        keysDo:[:key | Transcript show:key; space; showCR:element
+     ]
+    "
+
+    "Created: / 24-08-2010 / 10:11:23 / cg"
+!
+
 nonNilElementsDo:aBlock
     "evaluate the argument, aBlock for every non-nil element in the collection."
 
@@ -7832,15 +7849,15 @@
 !SequenceableCollection class methodsFor:'documentation'!
 
 version
-    ^ '$Id: SequenceableCollection.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: SequenceableCollection.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/SequenceableCollection.st,v 1.298 2010/08/07 23:16:59 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/SequenceableCollection.st,v 1.299 2010/08/24 08:16:49 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: SequenceableCollection.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: SequenceableCollection.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 SequenceableCollection initialize!
@@ -7849,3 +7866,4 @@
 
 
 
+
--- a/Signal.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/Signal.st	Thu Aug 26 11:12:57 2010 +0100
@@ -510,13 +510,11 @@
 
     <context: #return>
 
-    ^ (self newException
-        suspendedContext:thisContext sender)
-        raise
+    ^ self newException
+        raiseIn:thisContext sender
 
-    "Modified: / 2.5.1996 / 16:36:23 / cg"
-    "Modified: / 5.3.1998 / 16:44:36 / stefan"
-    "Created: / 23.7.1999 / 14:07:17 / stefan"
+    "Created: / 23-07-1999 / 14:07:17 / stefan"
+    "Modified: / 10-08-2010 / 09:58:57 / cg"
 !
 
 raiseErrorString:aString
@@ -525,13 +523,11 @@
 
     <context: #return>
 
-    ^ (self newException
-        suspendedContext:(thisContext sender) errorString:aString)
-            raise.
+    ^ self newException
+        raiseErrorString:aString in:thisContext sender
 
-    "Modified: / 9.5.1996 / 15:17:59 / cg"
-    "Modified: / 12.3.1998 / 15:15:22 / stefan"
-    "Created: / 23.7.1999 / 14:07:33 / stefan"
+    "Created: / 23-07-1999 / 14:07:33 / stefan"
+    "Modified: / 10-08-2010 / 09:59:22 / cg"
 !
 
 raiseErrorString:aString in:aContext
@@ -540,13 +536,11 @@
 
     <context: #return>
 
-    ^ (self newException
-        suspendedContext:aContext errorString:aString)
-            raise.
+    ^ self newException
+        raiseErrorString:aString in:aContext
 
-    "Modified: / 9.5.1996 / 15:17:59 / cg"
-    "Modified: / 12.3.1998 / 15:15:22 / stefan"
-    "Created: / 23.7.1999 / 14:07:33 / stefan"
+    "Created: / 23-07-1999 / 14:07:33 / stefan"
+    "Modified: / 10-08-2010 / 09:59:58 / cg"
 !
 
 raiseFrom:something 
@@ -556,12 +550,11 @@
     <context: #return>
 
     ^ (self newException
-        suspendedContext:(thisContext sender) parameter:something originator:something)
+            suspendedContext:(thisContext sender) parameter:something originator:something)
         raise
 
-    "Modified: / 2.5.1996 / 16:36:38 / cg"
-    "Modified: / 5.3.1998 / 16:49:55 / stefan"
-    "Created: / 23.7.1999 / 14:07:59 / stefan"
+    "Created: / 23-07-1999 / 14:07:59 / stefan"
+    "Modified: / 10-08-2010 / 09:58:36 / cg"
 !
 
 raiseRequest
@@ -570,13 +563,11 @@
 
     <context: #return>
 
-    ^ (self newException
-        suspendedContext:thisContext sender)
-        raiseRequest.
+    ^ self newException
+        raiseRequestIn:thisContext sender
 
-    "Modified: / 2.5.1996 / 16:36:52 / cg"
-    "Modified: / 5.3.1998 / 16:50:46 / stefan"
-    "Created: / 23.7.1999 / 14:08:24 / stefan"
+    "Created: / 23-07-1999 / 14:08:24 / stefan"
+    "Modified: / 10-08-2010 / 10:00:13 / cg"
 !
 
 raiseRequestErrorString:aString
@@ -585,9 +576,10 @@
 
     <context: #return>
 
-    ^ (self newException
-        suspendedContext:(thisContext sender) errorString:aString)
-        raiseRequest
+    ^ self newException
+        raiseRequestErrorString:aString in:thisContext sender
+
+    "Modified: / 10-08-2010 / 10:00:40 / cg"
 !
 
 raiseRequestFrom:something 
@@ -611,13 +603,11 @@
 
     <context: #return>
 
-    ^ (self newException
-        suspendedContext:(thisContext sender) parameter:aParameter)
-        raiseRequest.
+    ^ self newException
+        raiseRequestWith:aParameter in:thisContext sender
 
-    "Modified: / 9.5.1996 / 15:13:20 / cg"
-    "Modified: / 12.3.1998 / 15:16:57 / stefan"
-    "Created: / 23.7.1999 / 14:08:48 / stefan"
+    "Created: / 23-07-1999 / 14:08:48 / stefan"
+    "Modified: / 10-08-2010 / 10:01:00 / cg"
 !
 
 raiseRequestWith:aParameter errorString:aString
@@ -626,13 +616,11 @@
 
     <context: #return>
 
-    ^ (self newException
-        suspendedContext:(thisContext sender) parameter:aParameter errorString:aString)
-        raiseRequest
+    ^ self newException
+        raiseRequestWith:aParameter errorString:aString in:thisContext sender
 
-    "Modified: / 9.5.1996 / 15:13:35 / cg"
-    "Modified: / 12.3.1998 / 15:17:52 / stefan"
-    "Created: / 23.7.1999 / 14:08:57 / stefan"
+    "Created: / 23-07-1999 / 14:08:57 / stefan"
+    "Modified: / 10-08-2010 / 10:01:38 / cg"
 !
 
 raiseRequestWith:aParameter errorString:aString in:aContext
@@ -643,13 +631,11 @@
 
     <context: #return>
 
-    ^ (self newException
-        suspendedContext:aContext parameter:aParameter errorString:aString)
-        raiseRequest
+    ^ self newException
+        raiseRequestWith:aParameter errorString:aString in:aContext
 
-    "Modified: / 26.7.1996 / 16:29:27 / cg"
-    "Modified: / 12.3.1998 / 15:18:34 / stefan"
-    "Created: / 23.7.1999 / 14:09:07 / stefan"
+    "Created: / 23-07-1999 / 14:09:07 / stefan"
+    "Modified: / 10-08-2010 / 10:02:08 / cg"
 !
 
 raiseRequestWith:aParameter in:aContext
@@ -659,9 +645,10 @@
 
     <context: #return>
 
-    ^ (self newException
-        suspendedContext:aContext parameter:aParameter)
-        raiseRequest
+    ^ self newException
+        raiseRequestWith:aParameter in:aContext
+
+    "Modified: / 10-08-2010 / 10:02:26 / cg"
 !
 
 raiseSignal
@@ -743,13 +730,11 @@
 
     <context: #return>
 
-    ^ (self newException
-        suspendedContext:(thisContext sender) parameter:aParameter)
-        raise.
+    ^ self newException
+        raiseWith:aParameter in:thisContext sender
 
-    "Modified: / 9.5.1996 / 15:14:24 / cg"
-    "Modified: / 12.3.1998 / 15:19:11 / stefan"
-    "Created: / 23.7.1999 / 14:09:27 / stefan"
+    "Created: / 23-07-1999 / 14:09:27 / stefan"
+    "Modified: / 10-08-2010 / 10:02:51 / cg"
 !
 
 raiseWith:aParameter errorString:aString
@@ -759,13 +744,11 @@
 
     <context: #return>
 
-    ^ (self newException
-        suspendedContext:(thisContext sender) parameter:aParameter errorString:aString)
-        raise.
+    ^ self newException
+        raiseWith:aParameter errorString:aString in:thisContext sender
 
-    "Modified: / 9.5.1996 / 15:14:32 / cg"
-    "Modified: / 12.3.1998 / 15:19:40 / stefan"
-    "Created: / 23.7.1999 / 14:09:36 / stefan"
+    "Created: / 23-07-1999 / 14:09:36 / stefan"
+    "Modified: / 10-08-2010 / 10:03:29 / cg"
 !
 
 raiseWith:aParameter errorString:aString in:aContext
@@ -777,13 +760,11 @@
 
     <context: #return>
 
-    ^ (self newException
-          suspendedContext:aContext parameter:aParameter errorString:aString)
-          raise.
+    ^ self newException
+        raiseWith:aParameter errorString:aString in:aContext
 
-    "Modified: / 26.7.1996 / 16:29:42 / cg"
-    "Modified: / 12.3.1998 / 15:20:12 / stefan"
-    "Created: / 23.7.1999 / 14:09:46 / stefan"
+    "Created: / 23-07-1999 / 14:09:46 / stefan"
+    "Modified: / 10-08-2010 / 10:03:19 / cg"
 !
 
 raiseWith:aParameter in:aContext
@@ -794,9 +775,10 @@
 
     <context: #return>
 
-    ^ (self newException
-        suspendedContext:aContext parameter:aParameter)
-        raise.
+    ^ self newException
+        raiseWith:aParameter in:aContext
+
+    "Modified: / 10-08-2010 / 10:03:05 / cg"
 !
 
 signalWith:messageText
@@ -982,16 +964,17 @@
 !Signal class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Signal.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: Signal.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/Signal.st,v 1.108 2009/10/01 07:38:26 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/Signal.st,v 1.109 2010/08/10 08:35:38 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: Signal.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: Signal.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 
 
+
--- a/SmallInteger.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/SmallInteger.st	Thu Aug 26 11:12:57 2010 +0100
@@ -545,7 +545,7 @@
      Be careful with negative results: 9 // 4 = 2,
      while -9 // 4 = -3.
      The following is always true:
-	(receiver // aNumber) * aNumber + (receiver \\ aNUmber) = receiver
+        (receiver // aNumber) * aNumber + (receiver \\ aNUmber) = receiver
      See #quo: which returns -2 in the latter."
 
 %{  /* NOCONTEXT */
@@ -563,61 +563,61 @@
     INT dividend, divisor, rslt;
 
     if (__isSmallInteger(aNumber)) {
-	divisor = __intVal(aNumber);
-	if (divisor != 0) {
-	    dividend = __intVal(self);
-	    rslt = dividend / divisor;
-	    /*
-	     * Optimized to speed up positive result
-	     */
-	    if (rslt <= 0) {
-		if (rslt == 0) {
-		    if ((dividend ^ divisor) < 0) {
-			/*
-			 * result (negative) has been truncated toward 0.
-			 * Return -1, because we truncate toward negative inf.
-			 */
-			 rslt = -1;
-		    }
-		} else {
-		    /*
-		     * If result (negative) has been truncated toward 0,
-		     * subtract 1, because we truncate toward negative inf.
-		     */
-		    if (divisor > 0) {
-			if (rslt * divisor > dividend) {
-			    rslt--;
-			}
-		    } else {
-			if (rslt * divisor < dividend) {
-			    rslt--;
-			}
-		    }
-		}
-	    }
-	    RETURN ( __mkSmallInteger(rslt) );
-	}
+        divisor = __intVal(aNumber);
+        if (divisor != 0) {
+            dividend = __intVal(self);
+            rslt = dividend / divisor;
+            /*
+             * Optimized to speed up positive result
+             */
+            if (rslt <= 0) {
+                if (rslt == 0) {
+                    if ((dividend ^ divisor) < 0) {
+                        /*
+                         * result (negative) has been truncated toward 0.
+                         * Return -1, because we truncate toward negative inf.
+                         */
+                         rslt = -1;
+                    }
+                } else {
+                    /*
+                     * If result (negative) has been truncated toward 0,
+                     * subtract 1, because we truncate toward negative inf.
+                     */
+                    if (divisor > 0) {
+                        if (rslt * divisor > dividend) {
+                            rslt--;
+                        }
+                    } else {
+                        if (rslt * divisor < dividend) {
+                            rslt--;
+                        }
+                    }
+                }
+            }
+            RETURN ( __mkSmallInteger(rslt) );
+        }
     } else {
-	if (__isFraction(aNumber)) {
-	    OBJ t;
-	    INT num, den;
-
-	    t = __FractionInstPtr(aNumber)->f_numerator;
-	    if (__isSmallInteger(t)) {
-		num = __intVal(t);
-		t = __FractionInstPtr(aNumber)->f_denominator;
-		if (__isSmallInteger(t)) {
-		    den = __intVal(t);
-		    RETURN ( __mkSmallInteger(__intVal(self) * den / num ));
-		}
-	    }
-	}
+        if (__isFraction(aNumber)) {
+            OBJ t;
+            INT num, den;
+
+            t = __FractionInstPtr(aNumber)->f_numerator;
+            if (__isSmallInteger(t)) {
+                num = __intVal(t);
+                t = __FractionInstPtr(aNumber)->f_denominator;
+                if (__isSmallInteger(t)) {
+                    den = __intVal(t);
+                    RETURN ( __mkSmallInteger(__intVal(self) * den / num ));
+                }
+            }
+        }
     }
 %}.
     (aNumber = 0) ifTrue:[
-	^ ZeroDivide raiseRequestWith:thisContext.
+        ^ ZeroDivide raiseRequestWith:thisContext.
     ].
-    ^ self retry:#// coercing:aNumber
+    ^ aNumber integerQuotientFromInteger:self
 
     "
      9 // 4     ~~ 2 ifTrue:[self halt].
@@ -635,6 +635,8 @@
      9 quo:-4  => -2
      -9 quo:-4 => 2
     "
+
+    "Modified: / 09-08-2010 / 19:50:23 / cg"
 !
 
 \\ aNumber
@@ -642,7 +644,7 @@
      negative infinity. The remainder has the same sign as aNumber.
      m < |aNumber| AND there is an integer k with (k * aNumber + m) = self
      The following is always true:
-	(receiver // aNumber) * aNumber + (receiver \\ aNumber) = receiver
+        (receiver // aNumber) * aNumber + (receiver \\ aNumber) = receiver
      Compare with #rem:
 
      Redefined for speed."
@@ -662,34 +664,34 @@
     INT dividend, divisor, rem;
 
     if (__isSmallInteger(aNumber)
-	&& (divisor = __intVal(aNumber)) != 0) {
-	/*
-	 * Note that the sign of something modulo a negative number is undefined
-	 * in C!
-	 */
-	dividend = __intVal(self);
-	rem = dividend % divisor;
-	if (rem) {
-	    if ((rem ^ divisor) < 0) {
-		/* sign of remainder is different from sign of divisor */
-		rem = -rem;
-	    }
-	    if ((dividend ^ divisor) < 0) {
-		/* different signs, so division would have returned a
-		 * negative number.
-		 * C rounds toward zero, this code will simulate
-		 * rounding towards negative infinity.
-		 */
-		rem = divisor - rem;
-	    }
-	}
-	RETURN ( __mkSmallInteger(rem) );
+        && (divisor = __intVal(aNumber)) != 0) {
+        /*
+         * Note that the sign of something modulo a negative number is undefined
+         * in C!
+         */
+        dividend = __intVal(self);
+        rem = dividend % divisor;
+        if (rem) {
+            if ((rem ^ divisor) < 0) {
+                /* sign of remainder is different from sign of divisor */
+                rem = -rem;
+            }
+            if ((dividend ^ divisor) < 0) {
+                /* different signs, so division would have returned a
+                 * negative number.
+                 * C rounds toward zero, this code will simulate
+                 * rounding towards negative infinity.
+                 */
+                rem = divisor - rem;
+            }
+        }
+        RETURN ( __mkSmallInteger(rem) );
     }
 %}.
     (aNumber = 0) ifTrue:[
-	^ ZeroDivide raiseRequestWith:thisContext.
+        ^ ZeroDivide raiseRequestWith:thisContext.
     ].
-    ^ self retry:#\\ coercing:aNumber
+    ^ aNumber moduluFromInteger:self
 
     "
      9 \\ 4  == 1 ifFalse:[self halt].
@@ -700,6 +702,8 @@
      (-9 rem:4) == -1 ifFalse:[self halt].
      1000 \\ 3600000 == 1000 ifFalse:[self halt]
     "
+
+    "Modified: / 09-08-2010 / 19:52:02 / cg"
 !
 
 abs
@@ -3918,18 +3922,19 @@
 !SmallInteger class methodsFor:'documentation'!
 
 version
-    ^ '$Id: SmallInteger.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: SmallInteger.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.186 2010/08/02 10:33:35 cg Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/SmallInteger.st,v 1.187 2010/08/09 17:52:27 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: SmallInteger.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: SmallInteger.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 
 
 
 
+
--- a/Smalltalk.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/Smalltalk.st	Thu Aug 26 11:12:57 2010 +0100
@@ -7373,14 +7373,14 @@
      ST/X revision Naming is:
         <major>.<minor>.<revision>.<release>"
 
-    ^ 1
+    ^ 2
 
     "
      Smalltalk revisionNr
-     Smalltalk hello
-    "
-
-    "Modified: / 05-10-2007 / 10:13:25 / cg"
+     Smalltalk hello string       
+    "
+
+    "Modified: / 12-08-2010 / 01:20:56 / cg"
 !
 
 timeStamp
@@ -7465,15 +7465,15 @@
 !Smalltalk class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Smalltalk.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: Smalltalk.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.937 2010/08/06 13:05:23 stefan Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/Smalltalk.st,v 1.938 2010/08/11 23:21:32 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: Smalltalk.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: Smalltalk.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 
@@ -7487,3 +7487,4 @@
 
 
 
+
--- a/Stream.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/Stream.st	Thu Aug 26 11:12:57 2010 +0100
@@ -194,6 +194,7 @@
     ^ ChunkSeparator
 ! !
 
+
 !Stream methodsFor:'accessing'!
 
 contents
@@ -2914,7 +2915,9 @@
         Smalltalk at:#Transcript put:Stdout
      or to use #show:/#showCR: with internal or external streams."
 
-    (something bindWith:arg) printOn:self
+    self show:(something bindWith:arg)
+
+    "Modified: / 19-08-2010 / 15:42:00 / cg"
 !
 
 show:something with:arg1 with:arg2
@@ -2925,7 +2928,9 @@
         Smalltalk at:#Transcript put:Stdout
      or to use #show:/#showCR: with internal or external streams."
 
-    (something bindWith:arg1 with:arg2) printOn:self
+    self show:(something bindWith:arg1 with:arg2)
+
+    "Modified: / 19-08-2010 / 15:42:09 / cg"
 !
 
 show:something with:arg1 with:arg2 with:arg3
@@ -2936,7 +2941,22 @@
         Smalltalk at:#Transcript put:Stdout
      or to use #show:/#showCR: with internal or external streams."
 
-    (something bindWith:arg1 with:arg2 with:arg3) printOn:self
+    self show:(something bindWith:arg1 with:arg2 with:arg3)
+
+    "Modified: / 19-08-2010 / 15:42:17 / cg"
+!
+
+show:something with:arg1 with:arg2 with:arg3 with:arg4
+    "append a printed representation of the argument to the stream, expanding
+     the placeHolders %1,%2 and %3 with the printStrings of arg1, arg2 and arg3.
+     This makes streams somewhat compatible to TextCollectors and
+     allows you to say: 
+        Smalltalk at:#Transcript put:Stdout
+     or to use #show:/#showCR: with internal or external streams."
+
+    self show:(something bindWith:arg1 with:arg2 with:arg3 with:arg4)
+
+    "Created: / 19-08-2010 / 15:42:25 / cg"
 !
 
 showCR:aString
@@ -2954,6 +2974,58 @@
     "Modified: 11.7.1996 / 10:01:27 / cg"
 !
 
+showCR:something with:arg
+    "append a printed representation of the argument to the stream, expanding
+     the placeHolder %1 with the printString of arg.
+     This makes streams somewhat compatible to TextCollectors and
+     allows you to say: 
+        Smalltalk at:#Transcript put:Stdout
+     or to use #show:/#showCR: with internal or external streams."
+
+    self showCR:(something bindWith:arg)
+
+    "Created: / 19-08-2010 / 15:41:46 / cg"
+!
+
+showCR:something with:arg1 with:arg2
+    "append a printed representation of the argument to the stream, expanding
+     the placeHolders %1 and %2 with the printStrings of arg1 and arg2.
+     This makes streams somewhat compatible to TextCollectors and
+     allows you to say: 
+        Smalltalk at:#Transcript put:Stdout
+     or to use #show:/#showCR: with internal or external streams."
+
+    self showCR:(something bindWith:arg1 with:arg2)
+
+    "Created: / 19-08-2010 / 15:42:37 / cg"
+!
+
+showCR:something with:arg1 with:arg2 with:arg3
+    "append a printed representation of the argument to the stream, expanding
+     the placeHolders %1,%2 and %3 with the printStrings of arg1, arg2 and arg3.
+     This makes streams somewhat compatible to TextCollectors and
+     allows you to say: 
+        Smalltalk at:#Transcript put:Stdout
+     or to use #show:/#showCR: with internal or external streams."
+
+    self showCR:(something bindWith:arg1 with:arg2 with:arg3)
+
+    "Created: / 19-08-2010 / 15:42:43 / cg"
+!
+
+showCR:something with:arg1 with:arg2 with:arg3 with:arg4
+    "append a printed representation of the argument to the stream, expanding
+     the placeHolders %1,%2 and %3 with the printStrings of arg1, arg2 and arg3.
+     This makes streams somewhat compatible to TextCollectors and
+     allows you to say: 
+        Smalltalk at:#Transcript put:Stdout
+     or to use #show:/#showCR: with internal or external streams."
+
+    self showCR:(something bindWith:arg1 with:arg2 with:arg3 with:arg4)
+
+    "Created: / 19-08-2010 / 15:42:50 / cg"
+!
+
 showCr:aString
     "append a printed representation of the argument to the stream
      and append a newline character.
@@ -3129,18 +3201,19 @@
 !Stream class methodsFor:'documentation'!
 
 version
-    ^ '$Id: Stream.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: Stream.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/Stream.st,v 1.185 2009/12/17 15:52:07 stefan Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/Stream.st,v 1.186 2010/08/19 13:43:26 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: Stream.st 10544 2010-07-12 16:20:36Z vranyj1 $'
+    ^ '$Id: Stream.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 Stream initialize!
 
 
 
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TimeoutNotification.st	Thu Aug 26 11:12:57 2010 +0100
@@ -0,0 +1,47 @@
+"
+ COPYRIGHT (c) 2010 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+"{ Package: 'stx:libbasic' }"
+
+Notification subclass:#TimeoutNotification
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Kernel-Exceptions'
+!
+
+!TimeoutNotification class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2010 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+!
+
+documentation
+"    
+    Used with watchdog timers.
+"
+! !
+
+!TimeoutNotification class methodsFor:'documentation'!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libbasic/TimeoutNotification.st,v 1.1 2010/08/20 10:16:29 cg Exp §'
+! !
--- a/UnixOperatingSystem.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/UnixOperatingSystem.st	Thu Aug 26 11:12:57 2010 +0100
@@ -11252,7 +11252,7 @@
 
 !UnixOperatingSystem::SocketHandle class methodsFor:'queries'!
 
-getAddressInfo:hostName serviceName:serviceNameArg domain:domainArg type:typeArg protocol:protoArg flags:flags
+XXgetAddressInfo:hostName serviceName:serviceNameArg domain:domainArg type:typeArg protocol:protoArg flags:flags
     "answer an Array of socket addresses for serviceName on hostName
      Domain, type, protocol may be nil or specify a hint for the socket
      addresses to be returned."
@@ -11626,6 +11626,76 @@
     "
 !
 
+getAddressInfo:hostName serviceName:serviceNameArg domain:domainArg type:typeArg protocol:protoArg flags:flags
+    "answer an Array of socket addresses for serviceName on hostName
+     Domain, type, protocol may be nil or specify a hint for the socket
+     addresses to be returned."
+
+    |result domain type proto serviceName|
+
+    domain := OperatingSystem domainCodeOf:domainArg.
+    type := OperatingSystem socketTypeCodeOf:typeArg.
+    proto := self protocolCodeOf:protoArg.
+    serviceNameArg notNil ifTrue:[
+        serviceName := serviceNameArg printString.      "convert integer port numbers"
+    ].
+
+    result := self primGetAddressInfo:hostName serviceName:serviceName domainCode:domain socketTypeCode:type protocolCode:proto flags:flags.
+    result isArray ifFalse:[
+        |request|
+        request := SocketAddressInfo new
+            domain:domainArg;
+            type:typeArg;
+            protocol:protoArg;
+            canonicalName:hostName;
+            serviceName:serviceName.
+        ^ (HostNameLookupError new
+                parameter:result;
+                messageText:' - ', (result printString);
+                request:request) raiseRequest.
+    ].
+    1 to:result size do:[:i |
+        |entry dom info|
+
+        entry := result at:i.
+
+        info := SocketAddressInfo new.
+        info
+            flags:(entry at:1);
+            domain:(dom := OperatingSystem domainSymbolOf:(entry at:2));
+            type:(OperatingSystem socketTypeSymbolOf:(entry at:3));
+            protocol:(self protocolSymbolOf:(entry at:4));
+            socketAddress:((SocketAddress newDomain:dom) fromBytes:(entry at:5));
+            canonicalName:(entry at:6).
+
+        result at:i put:info.
+    ].
+    ^ result
+
+    "
+     self getAddressInfo:'localhost' serviceName:nil
+            domain:nil type:nil protocol:nil flags:nil
+     self getAddressInfo:'localhost' serviceName:nil
+            domain:#inet type:#stream protocol:nil flags:nil
+     self getAddressInfo:'localhost' serviceName:nil
+            domain:#inet type:#stream protocol:#tcp flags:nil
+     self getAddressInfo:'blurb.exept.de' serviceName:nil
+            domain:#inet type:nil protocol:nil flags:nil
+     self getAddressInfo:'1.2.3.4' serviceName:'bla'
+            domain:#inet type:nil protocol:nil flags:nil
+     self getAddressInfo:'localhost' serviceName:'echo'
+            domain:#inet type:nil protocol:nil flags:nil
+     self getAddressInfo:nil serviceName:'echo'
+            domain:#inet type:nil protocol:nil flags:nil
+     self getAddressInfo:nil serviceName:nil
+            domain:#inet type:nil protocol:nil flags:nil
+     self getAddressInfo:'www.google.de' serviceName:nil
+            domain:nil type:nil protocol:nil flags:nil
+     self getAddressInfo:'smc1' serviceName:nil
+            domain:nil type:nil protocol:nil flags:nil
+    "
+!
+
 getNameInfo:socketAddress wantHostName:wantHostName wantServiceName:wantServiceName datagram:useDatagram flags:flags
     "answer an Array containing the hostName and serviceName
      in socketAddress.
@@ -11857,6 +11927,327 @@
                 domain:#inet type:#stream protocol:nil flags:nil) first socketAddress
          wantHostName:true wantServiceName:true datagram:false flags:0
     "
+!
+
+primGetAddressInfo:hostName serviceName:serviceName domainCode:domain socketTypeCode:type protocolCode:proto flags:flags
+    "answer an Array of socket addresses for serviceName on hostName
+     Domain, type, protocol may be nil or specify a hint for the socket
+     addresses to be returned."
+
+    |error errorString result|
+
+%{ /* UNLIMITEDSTACK */  /* Don't know whether DNS, NIS, LDAP or whatever is consulted */
+#undef xxAI_NUMERICHOST /* remove xx to test gethost...() path */
+
+
+#if !defined(NO_SOCKET)
+    char *__hostName, *__serviceName;
+    int ret, cnt = 0;
+
+    if (hostName == nil) {
+        __hostName = 0;
+    } else if (__isStringLike(hostName)) {
+        __hostName = __stringVal(hostName);
+    } else {
+        error = @symbol(badArgument1);
+        goto err;
+    }
+    if (serviceName == nil) {
+        __serviceName = 0;
+    } else if (__isStringLike(serviceName)) {
+        __serviceName = __stringVal(serviceName);
+    } else {
+        error = @symbol(badArgument2);
+        goto err;
+    }
+    if (__hostName == 0 && __serviceName == 0) {
+        error = @symbol(badArgument);
+        goto err;
+    }
+
+{
+# if defined(AI_NUMERICHOST)
+    /*
+     * Use getaddrinfo()
+     */
+    struct addrinfo hints;
+    struct addrinfo *info = NULL, *infop;
+
+    memset(&hints, 0, sizeof(hints));
+    if (__isSmallInteger(domain))
+        hints.ai_family = __intVal(domain);
+    if (__isSmallInteger(type))
+        hints.ai_socktype = __intVal(type);
+    if (__isSmallInteger(proto))
+        hints.ai_protocol = __intVal(proto);
+
+    do {
+        if (hostName == nil) {
+            __hostName = 0;
+        } else if (__isStringLike(hostName)) {
+            __hostName = __stringVal(hostName);
+        }
+        if (serviceName == nil) {
+            __serviceName = 0;
+        } else if (__isStringLike(serviceName)) {
+            __serviceName = __stringVal(serviceName);
+        }
+
+//        __BEGIN_INTERRUPTABLE__
+        ret = getaddrinfo(__hostName, __serviceName, &hints, &info);
+//        __END_INTERRUPTABLE__
+    } while (ret == EAI_SYSTEM && errno == EINTR);
+    if (ret != 0) {
+        switch (ret) {
+        case EAI_FAMILY:
+            error = @symbol(badProtocol);
+            break;
+        case EAI_SOCKTYPE:
+            error = @symbol(badSocketType);
+            break;
+        case EAI_BADFLAGS:
+            error = @symbol(badFlags);
+            break;
+        case EAI_NONAME:
+            error = @symbol(unknownHost);
+            break;
+        case EAI_SERVICE:
+            error = @symbol(unknownService);
+            break;
+#ifdef EAI_ADDRFAMILY
+        case EAI_ADDRFAMILY :
+            error = @symbol(unknownHostForProtocol);
+            break;
+#endif
+#ifdef EAI_NODATA
+        case EAI_NODATA:
+            error = @symbol(noAddress);
+            break;
+#endif
+        case EAI_MEMORY:
+            error = @symbol(allocationFailure);
+            break;
+        case EAI_FAIL:
+            error = @symbol(permanentFailure);
+            break;
+        case EAI_AGAIN:
+            error = @symbol(tryAgain);
+            break;
+        case EAI_SYSTEM:
+            error = @symbol(systemError);
+            break;
+        default:
+            error = @symbol(unknownError);
+        }
+        errorString = __MKSTRING(gai_strerror(ret));
+        goto err;
+    }
+    for (cnt=0, infop=info; infop; infop=infop->ai_next)
+        cnt++;
+
+    result = __ARRAY_NEW_INT(cnt);
+    if (result == nil) {
+        error = @symbol(allocationFailure);
+        goto err;
+    }
+    for (infop=info, cnt=0; infop; infop=infop->ai_next, cnt++) {
+        OBJ o, resp;
+
+        resp = __ARRAY_NEW_INT(6);
+        if (resp == nil) {
+            error = @symbol(allocationFailure);
+            goto err;
+        }
+
+        __ArrayInstPtr(result)->a_element[cnt] = resp; __STORE(result, resp);
+
+        __ArrayInstPtr(resp)->a_element[0] = __mkSmallInteger(infop->ai_flags);
+        __ArrayInstPtr(resp)->a_element[1] = __mkSmallInteger(infop->ai_family);
+        __ArrayInstPtr(resp)->a_element[2] = __mkSmallInteger(infop->ai_socktype);
+        __ArrayInstPtr(resp)->a_element[3] = __mkSmallInteger(infop->ai_protocol);
+
+        __PROTECT__(resp);
+        o = __BYTEARRAY_NEW_INT(infop->ai_addrlen);
+        __UNPROTECT__(resp);
+        if (o == nil) {
+            error = @symbol(allocationFailure);
+            goto err;
+        }
+        memcpy(__byteArrayVal(o), infop->ai_addr, infop->ai_addrlen);
+       __ArrayInstPtr(resp)->a_element[4] = o; __STORE(resp, o);
+
+        if (infop->ai_canonname) {
+            __PROTECT__(resp);
+            o = __MKSTRING(infop->ai_canonname);
+            __UNPROTECT__(resp);
+            if (o == nil) {
+                error = @symbol(allocationFailure);
+                goto err;
+            }
+            __ArrayInstPtr(resp)->a_element[5] = o; __STORE(resp, o);
+        }
+    }
+
+err:
+    if (info) freeaddrinfo(info);
+
+# else /* ! AI_NUMERICHOST =============================================================*/
+
+    /*
+     * Use getservbyname() / gethostByName()
+     */
+    struct hostent *hp;
+    char **addrpp;
+    int port = 0;
+    int i;
+
+    if (__serviceName) {
+        struct servent *sp;
+        char *__proto = 0;
+
+        if (__isStringLike(protoArg))
+            __proto = __stringVal(protoArg);
+
+        sp = getservbyname(__serviceName, __proto);
+        if (sp == NULL) {
+            errorString = @symbol(unknownService);
+            error = __mkSmallInteger(-3);
+            goto err;
+        }
+        port = sp->s_port;
+    }
+
+    if (__hostName) {
+#  ifdef USE_H_ERRNO
+        do {
+            if (hostName == nil) {
+                __hostName = 0;
+            } else if (__isStringLike(hostName)) {
+                __hostName = __stringVal(hostName);
+            }
+            /* __BEGIN_INTERRUPTABLE__ is dangerous, because gethostbyname
+             * uses a static data area
+             */
+            __BEGIN_INTERRUPTABLE__
+            hp = gethostbyname(__hostName);
+            __END_INTERRUPTABLE__
+        } while ((hp == NULL)
+                  && (
+                        (h_errno == TRY_AGAIN)
+                      || errno == EINTR
+#   ifdef IRIX5_3
+                      || (errno == ECONNREFUSED)
+#   endif
+                     )
+        );
+        if (hp == 0) {
+            switch (h_errno) {
+            case HOST_NOT_FOUND:
+                errorString = @symbol(unknownHost);
+                break;
+            case NO_ADDRESS:
+                errorString = @symbol(noAddress);
+                break;
+            case NO_RECOVERY:
+                errorString = @symbol(permanentFailure);
+                break;
+            case TRY_AGAIN:
+                errorString = @symbol(tryAgain);
+                break;
+            default:
+                errorString = @symbol(unknownError);
+                break;
+            }
+            error = __mkSmallInteger(h_errno);
+            goto err;
+        }
+#  else /* !USE_H_ERRNO */
+        hp = gethostbyname(__hostName);
+        if (hp == 0) {
+            errorString = @symbol(unknownHost);
+            error = __mkSmallInteger(-1);
+            goto err;
+        }
+#  endif /* !USE_H_ERRNO*/
+
+        if (__isSmallInteger(domain) && hp->h_addrtype != __smallIntegerVal(domain)) {
+            errorString = @symbol(unknownHost);
+            error = __mkSmallInteger(-2);
+            goto err;
+        }
+
+        for (cnt = 0, addrpp = hp->h_addr_list; *addrpp; addrpp++)
+            cnt++;
+        addrpp = hp->h_addr_list;
+    } else {
+        cnt = 1;
+    }
+
+    result = __ARRAY_NEW_INT(cnt);
+    if (result == nil) {
+        error = @symbol(allocationFailure);
+        goto err;
+    }
+
+    for (i = 0; i < cnt; i++) {
+        OBJ o, resp;
+        struct sockaddr_in *sa;
+
+        resp = __ARRAY_NEW_INT(6);
+        if (resp == nil) {
+            error = @symbol(allocationFailure);
+            goto err;
+        }
+
+        __ArrayInstPtr(result)->a_element[i] = resp; __STORE(result, resp);
+        __ArrayInstPtr(resp)->a_element[0] = __mkSmallInteger(0);
+        __ArrayInstPtr(resp)->a_element[2] = type; __STORE(result, type);
+        __ArrayInstPtr(resp)->a_element[3] = proto; __STORE(result, proto);
+        __PROTECT__(resp);
+        o = __BYTEARRAY_NEW_INT(sizeof(*sa));
+        __UNPROTECT__(resp);
+        if (o == nil) {
+            error = @symbol(allocationFailure);
+            goto err;
+        }
+        __ArrayInstPtr(resp)->a_element[4] = o; __STORE(resp, o);
+        sa = (struct sockaddr_in *)__byteArrayVal(o);
+        sa->sin_port = port;
+
+        if (__hostName) {
+            sa->sin_family = hp->h_addrtype;
+            memcpy(&sa->sin_addr, *addrpp, hp->h_length);
+            __ArrayInstPtr(resp)->a_element[1] = __mkSmallInteger(hp->h_addrtype);
+            if (hp->h_name) {
+                __PROTECT__(resp);
+                o = __MKSTRING(hp->h_name);
+                __UNPROTECT__(resp);
+                if (o == nil) {
+                    error = @symbol(allocationFailure);
+                    goto err;
+                }
+                __ArrayInstPtr(resp)->a_element[5] = o; __STORE(resp, o);
+            }
+            addrpp++;
+        } else{
+            __ArrayInstPtr(resp)->a_element[1] = domain; __STORE(resp, domain);
+        }
+    }
+
+err:;
+# endif /* ! AI_NUMERICHOST */
+}
+#else /* ! HAS_SOCKET */
+    error = @symbol(notImplemented);
+#endif
+%}.
+    error notNil ifTrue:[
+        errorString notNil ifTrue:[
+            ^ errorString.
+        ].
+        ^ error.
+    ].
+    ^ result.
 ! !
 
 !UnixOperatingSystem::SocketHandle methodsFor:'accepting'!
@@ -12700,15 +13091,15 @@
 !UnixOperatingSystem class methodsFor:'documentation'!
 
 version
-    ^ '$Id: UnixOperatingSystem.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: UnixOperatingSystem.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.276 2010/07/27 09:08:07 stefan Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/UnixOperatingSystem.st,v 1.277 2010/08/18 18:33:20 stefan Exp '
 !
 
 version_SVN
-    ^ '$Id: UnixOperatingSystem.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: UnixOperatingSystem.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 UnixOperatingSystem initialize!
@@ -12718,3 +13109,4 @@
 
 
 
+
--- a/UserPreferences.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/UserPreferences.st	Thu Aug 26 11:12:57 2010 +0100
@@ -790,6 +790,67 @@
     "Created: / 12.11.2001 / 15:49:00 / cg"
 !
 
+nativeDialogs
+    ^ self at:#nativeDialogs ifAbsent:false
+
+    "Created: / 24-08-2010 / 17:01:47 / sr"
+!
+
+nativeDialogs:aBoolean
+    |currentScreen|
+
+    self at:#nativeDialogs put:aBoolean.
+    currentScreen := Screen current.
+    currentScreen notNil ifTrue:[
+        currentScreen supportsNativeDialogs ifTrue:[
+            currentScreen nativeDialogs:aBoolean
+        ].
+    ].
+
+    "Modified: / 24-08-2010 / 18:06:43 / sr"
+!
+
+nativeFileDialogs
+    ^ self at:#nativeFileDialogs ifAbsent:false
+
+    "Created: / 24-08-2010 / 17:01:59 / sr"
+!
+
+nativeFileDialogs:aBoolean
+    |currentScreen|
+
+    self at:#nativeFileDialogs put:aBoolean.
+    currentScreen := Screen current.
+    currentScreen notNil ifTrue:[
+        currentScreen supportsNativeFileDialogs ifTrue:[
+            currentScreen nativeFileDialogs:aBoolean
+        ].
+    ].
+
+    "Modified: / 24-08-2010 / 18:06:27 / sr"
+!
+
+nativeWidgets
+    ^ self at:#nativeWidgets ifAbsent:false
+
+    "Created: / 24-08-2010 / 16:58:44 / sr"
+!
+
+nativeWidgets:aBoolean
+    |currentScreen|
+
+    self at:#nativeWidgets put:aBoolean.
+    currentScreen := Screen current.
+    currentScreen notNil ifTrue:[
+        currentScreen supportsNativeWidgets ifTrue:[
+            currentScreen nativeWidgets:aBoolean
+        ].
+    ].
+
+    "Created: / 24-08-2010 / 16:58:14 / sr"
+    "Modified: / 24-08-2010 / 18:05:56 / sr"
+!
+
 showTipOfTheDayAtStartup
     ^ self at:#showTipOfTheDayAtStartup ifAbsent:false
 !
@@ -806,21 +867,15 @@
 !
 
 useNativeFileDialog
-    "using native file dialog"
-
-    ^ self at:#useNativeFileDialog ifAbsent:false
+    ^ self nativeFileDialogs
+
+    "Modified: / 24-08-2010 / 17:02:10 / sr"
 !
 
 useNativeFileDialog:aBoolean
-    "using native file dialog (if available)"
-
-    self at:#useNativeFileDialog put:aBoolean
-
-    "
-     UserPreferences current useNativeFileDialog:true
-     UserPreferences current useNativeFileDialog:false
-     UserPreferences current useNativeFileDialog
-    "
+    self nativeFileDialogs:aBoolean
+
+    "Modified: / 24-08-2010 / 17:02:13 / sr"
 !
 
 useNewChangesBrowser
@@ -3299,15 +3354,16 @@
 !UserPreferences class methodsFor:'documentation'!
 
 version
-    ^ '$Id: UserPreferences.st 10549 2010-07-20 11:11:45Z vranyj1 $'
+    ^ '$Id: UserPreferences.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ '§Header: /cvs/stx/stx/libbasic/UserPreferences.st,v 1.251 2010/07/17 12:50:41 cg Exp §'
+    ^ '§Header: /cvs/stx/stx/libbasic/UserPreferences.st,v 1.253 2010/08/24 16:07:14 sr Exp §'
 !
 
 version_SVN
-    ^ '$Id: UserPreferences.st 10549 2010-07-20 11:11:45Z vranyj1 $'
+    ^ '$Id: UserPreferences.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
 
 
+
--- a/WeakArray.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/WeakArray.st	Thu Aug 26 11:12:57 2010 +0100
@@ -257,6 +257,19 @@
     "Modified: 25.1.1997 / 13:41:25 / cg"
 !
 
+at:index ifInvalid:exeptionalValue
+    "return the indexed instance variable with index, anInteger,
+     but only if still valid; otherwise return the value from exceptionalValue"
+
+    |el|
+
+    el := self basicAt:index.
+    el == 0 ifTrue:[
+        ^ exeptionalValue value
+    ].
+    ^ el
+!
+
 at:index put:someObject
     "store someObject in the weakArray at some index."
 
@@ -1007,12 +1020,17 @@
 !WeakArray class methodsFor:'documentation'!
 
 version
-    ^ '$Id: WeakArray.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: WeakArray.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_SVN
-    ^ '$Id: WeakArray.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: WeakArray.st 10570 2010-08-26 10:12:57Z vranyj1 $'
+!
+
+version_CVS
+    ^ '§Header: /cvs/stx/stx/libbasic/WeakArray.st,v 1.66 2010/08/11 14:11:08 sr Exp §'
 ! !
 
 WeakArray initialize!
 
+
--- a/abbrev.stc	Thu Aug 19 21:39:34 2010 +0100
+++ b/abbrev.stc	Thu Aug 26 11:12:57 2010 +0100
@@ -376,3 +376,5 @@
 RomanNumberFormatError RomanNumberFormatError stx:libbasic 'Magnitude-Numbers' 1
 Symbol Symbol stx:libbasic 'Collections-Text' 0
 Unicode16String Unicode16String stx:libbasic 'Collections-Text' 0
+TimeoutNotification TimeoutNotification stx:libbasic 'Kernel-Exceptions' 1
+
--- a/bc.mak	Thu Aug 19 21:39:34 2010 +0100
+++ b/bc.mak	Thu Aug 26 11:12:57 2010 +0100
@@ -1,4 +1,4 @@
-# $Header$
+# $Header: /cvs/stx/stx/libbasic/bc.mak,v 1.167 2010/08/20 10:18:37 cg Exp $
 #
 # DO NOT EDIT
 # automagically generated from the projectDefinition: stx_libbasic.
@@ -184,6 +184,7 @@
 $(OUTDIR)RecursiveStoreError.$(O) RecursiveStoreError.$(H): RecursiveStoreError.st $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)SHA1Stream.$(O) SHA1Stream.$(H): SHA1Stream.st $(INCLUDE_TOP)\stx\libbasic\HashStream.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Time.$(O) Time.$(H): Time.st $(INCLUDE_TOP)\stx\libbasic\AbstractTime.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)TimeoutNotification.$(O) TimeoutNotification.$(H): TimeoutNotification.st $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Timestamp.$(O) Timestamp.$(H): Timestamp.st $(INCLUDE_TOP)\stx\libbasic\AbstractTime.$(H) $(INCLUDE_TOP)\stx\libbasic\Magnitude.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)UserInterrupt.$(O) UserInterrupt.$(H): UserInterrupt.st $(INCLUDE_TOP)\stx\libbasic\ControlInterrupt.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)UserNotification.$(O) UserNotification.$(H): UserNotification.st $(INCLUDE_TOP)\stx\libbasic\Notification.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
@@ -334,14 +335,12 @@
 $(OUTDIR)PipeStream.$(O) PipeStream.$(H): PipeStream.st $(INCLUDE_TOP)\stx\libbasic\NonPositionableExternalStream.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalStream.$(H) $(INCLUDE_TOP)\stx\libbasic\ReadWriteStream.$(H) $(INCLUDE_TOP)\stx\libbasic\WriteStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PositionableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\PeekableStream.$(H) $(INCLUDE_TOP)\stx\libbasic\Stream.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Symbol.$(O) Symbol.$(H): Symbol.st $(INCLUDE_TOP)\stx\libbasic\String.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Unicode16String.$(O) Unicode16String.$(H): Unicode16String.st $(INCLUDE_TOP)\stx\libbasic\TwoByteString.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterArray.$(H) $(INCLUDE_TOP)\stx\libbasic\ByteArray.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)CharacterEncoderImplementations__MS_Baltic.$(O) CharacterEncoderImplementations__MS_Baltic.$(H): CharacterEncoderImplementations__MS_Baltic.st $(STCHDR)
-$(OUTDIR)CharacterEncoderImplementations__MS_Cyrillic.$(O) CharacterEncoderImplementations__MS_Cyrillic.$(H): CharacterEncoderImplementations__MS_Cyrillic.st $(STCHDR)
-$(OUTDIR)CharacterEncoderImplementations__MS_Greek.$(O) CharacterEncoderImplementations__MS_Greek.$(H): CharacterEncoderImplementations__MS_Greek.st $(STCHDR)
-$(OUTDIR)PCFilename.$(O) PCFilename.$(H): PCFilename.st $(STCHDR)
-$(OUTDIR)Win32Constants.$(O) Win32Constants.$(H): Win32Constants.st $(STCHDR)
+$(OUTDIR)CharacterEncoderImplementations__MS_Greek.$(O) CharacterEncoderImplementations__MS_Greek.$(H): CharacterEncoderImplementations__MS_Greek.st $(INCLUDE_TOP)\stx\libbasic\CharacterEncoderImplementations__SingleByteEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\CharacterEncoder.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)PCFilename.$(O) PCFilename.$(H): PCFilename.st $(INCLUDE_TOP)\stx\libbasic\Filename.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Win32Constants.$(O) Win32Constants.$(H): Win32Constants.st $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)Win32Process.$(O) Win32Process.$(H): Win32Process.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)Win32FILEHandle.$(O) Win32FILEHandle.$(H): Win32FILEHandle.st $(STCHDR)
 $(OUTDIR)Win32Handle.$(O) Win32Handle.$(H): Win32Handle.st $(STCHDR)
-$(OUTDIR)Win32OperatingSystem.$(O) Win32OperatingSystem.$(H): Win32OperatingSystem.st $(STCHDR)
-$(OUTDIR)Win32Process.$(O) Win32Process.$(H): Win32Process.st $(STCHDR)
 
 # ENDMAKEDEPEND --- do not remove this line
+
--- a/libInit.cc	Thu Aug 19 21:39:34 2010 +0100
+++ b/libInit.cc	Thu Aug 26 11:12:57 2010 +0100
@@ -1,5 +1,5 @@
 /*
- * $Header$
+ * $Header: /cvs/stx/stx/libbasic/libInit.cc,v 1.159 2010/08/20 10:18:40 cg Exp $
  *
  * DO NOT EDIT
  * automagically generated from the projectDefinition: stx_libbasic.
@@ -158,6 +158,7 @@
 _RecursiveStoreError_Init(pass,__pRT__,snd);
 _SHA1Stream_Init(pass,__pRT__,snd);
 _Time_Init(pass,__pRT__,snd);
+_TimeoutNotification_Init(pass,__pRT__,snd);
 _Timestamp_Init(pass,__pRT__,snd);
 _UserInterrupt_Init(pass,__pRT__,snd);
 _UserNotification_Init(pass,__pRT__,snd);
@@ -328,3 +329,4 @@
 
 __END_PACKAGE__();
 }
+
--- a/libbasic.rc	Thu Aug 19 21:39:34 2010 +0100
+++ b/libbasic.rc	Thu Aug 26 11:12:57 2010 +0100
@@ -3,8 +3,8 @@
 // automagically generated from the projectDefinition: stx_libbasic.
 //
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION     6,1,10549,10549
-  PRODUCTVERSION  6,1,1,1
+  FILEVERSION     6,1,1,74
+  PRODUCTVERSION  6,1,2,1
   FILEFLAGSMASK   VS_FF_DEBUG | VS_FF_PRERELEASE
   FILEFLAGS       VS_FF_PRERELEASE | VS_FF_SPECIALBUILD
   FILEOS          VOS_NT_WINDOWS32
@@ -18,12 +18,12 @@
     BEGIN
       VALUE "CompanyName", "eXept Software AG\0"
       VALUE "FileDescription", "Smalltalk/X Basic Classes (LIB)\0"
-      VALUE "FileVersion", "6.1.10549.10549\0"
+      VALUE "FileVersion", "6.1.1.74\0"
       VALUE "InternalName", "stx:libbasic\0"
       VALUE "LegalCopyright", "Copyright Claus Gittinger 1988-2009\nCopyright eXept Software AG 1998-2009\0"
       VALUE "ProductName", "Smalltalk/X\0"
-      VALUE "ProductVersion", "6.1.1.1\0"
-      VALUE "ProductDate", "Wed, 21 Jul 2010 15:47:23 GMT\0"
+      VALUE "ProductVersion", "6.1.2.1\0"
+      VALUE "ProductDate", "Fri, 20 Aug 2010 10:18:03 GMT\0"
     END
 
   END
@@ -33,3 +33,4 @@
     VALUE "Translation", 0x409, 0x4E4 // U.S. English, Windows Multilingual
   END
 END
+
--- a/stx_libbasic.st	Thu Aug 19 21:39:34 2010 +0100
+++ b/stx_libbasic.st	Thu Aug 26 11:12:57 2010 +0100
@@ -495,6 +495,7 @@
         (RomanNumberFormatError autoload)
         Symbol
         Unicode16String
+        TimeoutNotification
     )
 !
 
@@ -534,19 +535,20 @@
     "Return a SVN revision number of myself.
      This number is updated after a commit"
 
-    ^ "$SVN-Revision:"'10562M'"$"
+    ^ "$SVN-Revision:"'10569M'"$"
 ! !
 
 !stx_libbasic class methodsFor:'documentation'!
 
 version
-    ^ '$Id: stx_libbasic.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: stx_libbasic.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 !
 
 version_CVS
-    ^ 'Header: /cvs/stx/stx/libbasic/stx_libbasic.st,v 1.74 2010/04/27 08:10:31 stefan Exp '
+    ^ 'Header: /cvs/stx/stx/libbasic/stx_libbasic.st,v 1.75 2010/08/20 10:18:46 cg Exp '
 !
 
 version_SVN
-    ^ '$Id: stx_libbasic.st 10564 2010-08-10 08:55:15Z vranyj1 $'
+    ^ '$Id: stx_libbasic.st 10570 2010-08-26 10:12:57Z vranyj1 $'
 ! !
+
--- a/vcmake.bat	Thu Aug 19 21:39:34 2010 +0100
+++ b/vcmake.bat	Thu Aug 26 11:12:57 2010 +0100
@@ -3,6 +3,7 @@
 @REM type vcmake, and wait...
 @REM do not edit - automatically generated from ProjectDefinition
 @REM -------
-make.exe -N -f bc.mak USEVC=1 %1 %2
+make.exe -N -f bc.mak -DUSEVC %1 %2
 
 
+