On 4 September 2012 00:06, <commits(a)source.squeak.org> wrote:
> Levente Uzonyi uploaded a new version of Kernel to project The Trunk:
> http://source.squeak.org/trunk/Kernel-ul.709.mcz
>
> ==================== Summary ====================
>
> Name: Kernel-ul.709
> Author: ul
> Time: 4 September 2012, 12:42:11.196 am
> UUID: 359e6dd2-5981-ae43-a5bd-c687dd1d5614
> Ancestors: Kernel-eem.708
>
> Various changes:
> - improved Object >> #inboundPointersExcluding:. Better results (less noise) and performance. Uses a marker object instead of 0.
> - introduced ProtoObject >> #pointsOnlyWeaklyTo: which returns true if the receiver only has a weak reference to the argument, otherwise false. The reason why it's in ProtoObject is that #pointsTo: is there too. Implementation from Pharo by Igor Stasenko.
> - added Process >> #environmentAt:ifAbsentPut: which is useful for direct manipulation of the environment of Processes
> - introduced Behavior >> #isCompact and changed two methods which can use this method directly
>
> =============== Diff against Kernel-eem.708 ===============
>
> Item was changed:
> ----- Method: Behavior>>becomeCompact (in category 'private') -----
> becomeCompact
> "Here are the restrictions on compact classes in order for export segments to work: A compact class index may not be reused. If a class was compact in a release of Squeak, no other class may use that index. The class might not be compact later, and there should be nil in its place in the array."
> | cct index |
>
> self isWeak ifTrue:[^ self halt: 'You must not make a weak class compact'].
> cct := Smalltalk compactClassesArray.
> + (self isCompact or: [cct includes: self])
> - (self indexIfCompact > 0 or: [cct includes: self])
> ifTrue: [^ self halt: self name , 'is already compact'].
> index := cct indexOf: nil
> ifAbsent: [^ self halt: 'compact class table is full'].
> "Install this class in the compact class table"
> cct at: index put: self.
> "Update instspec so future instances will be compact"
> format := format + (index bitShift: 11).
> "Make up new instances and become old ones into them"
> self updateInstancesFrom: self.
> "Purge any old instances"
> Smalltalk garbageCollect.!
>
> Item was changed:
> ----- Method: Behavior>>becomeCompactSimplyAt: (in category 'private') -----
> becomeCompactSimplyAt: index
> "Make me compact, but don't update the instances. For importing segments."
> "Here are the restrictions on compact classes in order for export segments to work: A compact class index may not be reused. If a class was compact in a release of Squeak, no other class may use that index. The class might not be compact later, and there should be nil in its place in the array."
> | cct |
>
> self isWeak ifTrue:[^ self halt: 'You must not make a weak class compact'].
> cct := Smalltalk compactClassesArray.
> + (self isCompact or: [cct includes: self])
> - (self indexIfCompact > 0 or: [cct includes: self])
> ifTrue: [^ self halt: self name , 'is already compact'].
> (cct at: index) ifNotNil: [^ self halt: 'compact table slot already in use'].
> "Install this class in the compact class table"
> cct at: index put: self.
> "Update instspec so future instances will be compact"
> format := format + (index bitShift: 11).
> "Caller must convert the instances"
> !
>
> Item was added:
> + ----- Method: Behavior>>isCompact (in category 'testing') -----
> + isCompact
> +
> + ^self indexIfCompact ~= 0!
>
> Item was changed:
> ----- Method: Object>>inboundPointersExcluding: (in category 'tracing') -----
> inboundPointersExcluding: objectsToExclude
> + "Answer a list of all objects in the system that hold a reference to me, excluding those in the collection of objectsToExclude."
> - "Answer a list of all objects in the system that point to me, excluding those in the collection of objectsToExclude. I do my best to avoid creating any temporary objects that point to myself, especially method and block contexts. Adapted from PointerFinder class >> #pointersTo:except:"
>
> + | pointers object objectsToAlwaysExclude |
> - | anObj pointers objectsToAlwaysExclude |
> Smalltalk garbageCollect.
> + pointers := OrderedCollection new.
> + "SystemNavigation >> #allObjectsDo: is inlined here with a slight modification: the marker object is pointers. This gives better results, because the value of pointers, it's inner objects and transient method contexts will not be iterated over."
> + object := self someObject.
> + [ object == pointers ] whileFalse: [
> + (object isInMemory and: [ object pointsTo: self ]) ifTrue: [
> + pointers add: object ].
> + object := object nextObject ].
> - "big collection shouldn't grow, so it's contents array is always the same"
> - pointers := OrderedCollection new: 1000.
> -
> - "#allObjectsDo: and #pointsTo: are expanded inline to keep spurious
> - method and block contexts out of the results"
> - anObj := self someObject.
> - [0 == anObj] whileFalse: [ "We must use #== here, to avoid leaving the loop when anObj is another number that's equal to 0 (e.g. 0.0)."
> - anObj isInMemory
> - ifTrue: [((anObj instVarsInclude: self)
> - or: [anObj class == self])
> - ifTrue: [pointers add: anObj]].
> - anObj := anObj nextObject].
> -
> objectsToAlwaysExclude := {
> - pointers collector.
> thisContext.
> thisContext sender.
> thisContext sender sender.
> objectsToExclude.
> }.
> + ^pointers removeAllSuchThat: [ :ea |
> -
> - ^ pointers removeAllSuchThat: [:ea |
> (objectsToAlwaysExclude identityIncludes: ea)
> + or: [ objectsToExclude identityIncludes: ea ] ]!
> - or: [objectsToExclude identityIncludes: ea]]!
>
> Item was added:
> + ----- Method: Process>>environmentAt:ifAbsentPut: (in category 'process specific') -----
> + environmentAt: key ifAbsentPut: aBlock
> +
> + ^(env ifNil: [ env := Dictionary new ]) at: key ifAbsentPut: aBlock.!
Given that Process >> #environmentAt:put: says "^ (env ifNil: [ env :=
Dictionary new ]) at: key put: value" wouldn't it be better to defer
the dictionary creation to it, or pull the two initialisation places
into one, separate, place?
frank
> Item was added:
> + ----- Method: ProtoObject>>pointsOnlyWeaklyTo: (in category 'tracing') -----
> + pointsOnlyWeaklyTo: anObject
> + "Assume, we already know that receiver points to an object, answer true if receiver points only weakly to it."
> +
> + self class isWeak ifFalse: [ ^false ].
> + 1 to: self class instSize do: [ :i |
> + (self instVarAt: i) == anObject ifTrue: [ ^false ] ].
> + ^true!
>
>
http://yellow.16r.cahttp://blue.16r.cahttp://alt.16r.cahttp://www.osrcon.ca/AL-Examples.sthttp://reversehttp.net/index.htmlhttp://reversehttp.net/relay-http-spec.html
I have three sites here. The first two are the same class (GNHelloWorld)
served from different environments of a single image. I tried to load
Altitude into the Environments image and it will not go in no way no
how. WebClient and GreenNeon do, though, using Monticello.
The third site is a quick Altitude site. The movie appears for me in
Chrome and Safari, but not in Firefox or Opera. The gray gradients work
and don't work in the same browsers.
You will notice the Counter Page link, which when you roll over it
creates a suitable url. It does not work. Altitude's relationship
between paths and resources is very versatile and I haven't got the hang
of it yet. So I can't link to the other page. Works on localhost ...
Xtreams from the 2010 ESUG video I watched has this ability to
layer/stack streams. This makes encoding trivial. It's impressive.
Altitude has things called endpoints and relays (not to be confused with
terminals and transforms), which I think point to the main purpose of
Altitude - remote messaging. For surgery on an image to pare it down
megabyte by megabyte. Or, consider an image as a single object. Then the
image/objects send each other messages in the cloud. No polling.
Pushing. As described by Tony Garnock Jones.
TGJ's pages on the topic is linked above. As well as the code I used for
the alt.16r.ca site. From the vantage point of Altitude's main purpose
being remote messaging, websites are incidental.
Chris
When I crack open the zip file for the lastSuccussfulBuild[1] which is labeled #44, the "About Squeak" information in the image tells me that it is Squeak4.3 (update #12208)...
I was under the impression that the Squeak4.4 images were being built on Jenkins...
Just curious, because I have been using[1] to test Metacello against Squeak4.4 and if it's not really Squeak4.4, I'd like to know where to get the downloads:)
I'm double checking because I just got a test error with my TravisCI build[2] this morning and I need to actually get a fresh download to checkout the error...which is when I noticed that it was Squeak4.3:)
Thanks,
Dale
[1] http://www.squeakci.org/job/SqueakTrunk/lastSuccessfulBuild/artifact/target…
[2] http://travis-ci.org/#!/dalehenrich/metacello-work/jobs/2360274
http://www.squeaksource.com/RFB
I just checked the repo for RFB. Ian uploaded new a version two days
ago. I tried it out it out on a 4.4-12186 image with ChickenOfTheVNC on
localhost and it looks great.
Chris
Hi guys,
Do you know a working (= Shout & Contextual menus) version of Script
Manager for Squeak 4.3?
I'm using the image at http://ftp.squeak.org/4.3/Squeak4.3.zip
Cheers,
Hernán
Hello
I ran all the Tests in Windows 7 on an image from the All-in-one
package from www.squeak.org updated to the very last change as of
today.
First of all it paused after 33 tests for several minutes and then
continued. A debugger window came up towards the end of the tests and
it did not stop after 3218 tests but run up to 3332 tests.
22 expected failures, 37 failures, 294 errors.
May I ask somebody else with Windows 7 to run the tests?
Regards
Hannes
Chris Muller uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-cmm.423.mcz
==================== Summary ====================
Name: Tools-cmm.423
Author: cmm
Time: 5 September 2012, 7:25:38.968 pm
UUID: ee66f6c3-32ef-4b09-9b2d-8977596be4c5
Ancestors: Tools-ul.422
New desktop hot-keys: $O for Monticello, $] to save the image, and $_ to kill the image.
=============== Diff against Tools-ul.422 ===============
Item was changed:
----- Method: PasteUpMorph>>defaultDesktopCommandKeyTriplets (in category '*Tools') -----
defaultDesktopCommandKeyTriplets
"Answer a list of triplets of the form
<key> <receiver> <selector> [+ optional fourth element, a <description> for use in desktop-command-key-help]
that will provide the default desktop command key handlers. If the selector takes an argument, that argument will be the command-key event"
| noviceKeys expertKeys |
noviceKeys := {
{ $o. ActiveWorld. #activateObjectsTool. 'Activate the "Objects Tool"'}.
{ $r. ActiveWorld. #restoreMorphicDisplay. 'Redraw the screen'}.
{ $z. self. #undoOrRedoCommand. 'Undo or redo the last undoable command'}.
{ $F. Project current. #toggleFlapsSuppressed. 'Toggle the display of flaps'}.
{ $N. self. #toggleClassicNavigatorIfAppropriate. 'Show/Hide the classic Navigator, if appropriate'}.
{ $M. self. #toggleShowWorldMainDockingBar. 'Show/Hide the Main Docking Bar'}.
+ { $]. Smalltalk. #saveSession. 'Save the image.'}.
}.
Preferences noviceMode
ifTrue:[^ noviceKeys].
expertKeys := {
{ $b. SystemBrowser. #defaultOpenBrowser. 'Open a new System Browser'}.
{ $k. StringHolder. #open. 'Open a new, blank Workspace'}.
{ $m. self. #putUpNewMorphMenu. 'Put up the "New Morph" menu'}.
+ { $O. self. #findAMonticelloBrowser. 'Bring a Monticello window into focus.'}.
{ $t. self. #findATranscript:. 'Make a System Transcript visible'}.
{ $w. SystemWindow. #closeTopWindow. 'Close the topmost window'}.
{ $C. self. #findAChangeSorter:. 'Make a Change Sorter visible'}.
{ $L. self. #findAFileList:. 'Make a File List visible'}.
{ $P. self. #findAPreferencesPanel:. 'Activate the Preferences tool'}.
{ $R. Utilities. #browseRecentSubmissions. 'Make a Recent Submissions browser visible'}.
{ $W. self. #findAMessageNamesWindow:. 'Make a MessageNames tool visible'}.
{ $Z. ChangeList. #browseRecentLog. 'Browse recently-logged changes'}.
{ $\. SystemWindow. #sendTopWindowToBack. 'Send the top window to the back'}.
+ { $_. Smalltalk. #quitPrimitive. 'Quit the image immediately.'}.
}.
^ noviceKeys, expertKeys
!
Item was added:
+ ----- Method: PasteUpMorph>>findAMonticelloBrowser (in category '*Tools') -----
+ findAMonticelloBrowser
+ MCWorkingCopyBrowser open!
Item was changed:
+ (PackageInfo named: 'Tools') postscript: 'Workspace allSubInstancesDo: [ :each | (each instVarNamed: #bindings) ifNil: [ each initializeBindings ] ].
+ World initializeDesktopCommandKeySelectors'!
- (PackageInfo named: 'Tools') postscript: 'Workspace allSubInstancesDo: [ :each | (each instVarNamed: #bindings) ifNil: [ each initializeBindings ] ]'!