[Pkg] The Trunk: Collections.spur-nice.582.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Sep 27 20:18:31 UTC 2014


Eliot Miranda uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections.spur-nice.582.mcz

==================== Summary ====================

Name: Collections.spur-nice.582
Author: eem
Time: 27 September 2014, 1:17:00.586 pm
UUID: c65c527c-c1d9-4a53-972f-a7b8d63694a5
Ancestors: Collections-nice.582

Collections-nice.582 patched for Spur by SpurBootstrapMonticelloPackagePatcher Cog-eem.208

Port TAG-SortFunctions of Travis Griggs from Cincom public store - version (11,tgriggs)

Note that no collation policy were used for String.
The spaceship operator <=> is also required in Kernel-Numbers.

See also the blog http://objology.blogspot.fr/2010/11/tag-sortfunctions.html
 and http://objology.blogspot.fr/2010/11/tag-sortfunctions-redux.html

Note about the cost of these sort functions:
as shown by this mini-bench on cog, using a Symbol costs a bit more (perform:) than a block activation, and monadic block a bit more than dyadic one because activated twice more, but it seems acceptable to me with regard to the great simplification and expressiveness of code :

| collec1 collec2 collec3 |
collec1 := (1 to: 200000) collect: [:i | 1000000 atRandom-500000].
collec2 := collec1 copy.
collec3 := collec1 copy.
{
[collec1 sort: [:a :b | a abs < b abs]] timeToRun.
[collec2 sort: [:e | e abs] ascending] timeToRun.
[collec3 sort: #abs ascending] timeToRun.
}
 #(345 532 912)

=============== Diff against Collections-nice.582 ===============

Item was changed:
==== ERROR ===

Error: Unrecognized class type

27 September 2014 8:18:30.045 pm

VM: unix - a SmalltalkImage
Image: Squeak3.11alpha [latest update: #8824]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /home/squeaksource
Trusted Dir /home/squeaksource/secure
Untrusted Dir /home/squeaksource/My Squeak

MCClassDefinition(Object)>>error:
	Receiver: a MCClassDefinition(Character)
	Arguments and temporary variables: 
		aString: 	'Unrecognized class type'
	Receiver's instance variables: 
		name: 	#Character
		superclassName: 	#Magnitude
		variables: 	an OrderedCollection(a MCClassVariableDefinition(CharacterTable) a M...etc...
		category: 	#'Collections-Strings'
		type: 	#immediate
		comment: 	'I represent a character by storing its associated Unicode as an unsig...etc...
		commentStamp: 	'eem 8/12/2014 14:53'
		traitComposition: 	nil
		classTraitComposition: 	nil

MCClassDefinition>>kindOfSubclass
	Receiver: a MCClassDefinition(Character)
	Arguments and temporary variables: 

	Receiver's instance variables: 
		name: 	#Character
		superclassName: 	#Magnitude
		variables: 	an OrderedCollection(a MCClassVariableDefinition(CharacterTable) a M...etc...
		category: 	#'Collections-Strings'
		type: 	#immediate
		comment: 	'I represent a character by storing its associated Unicode as an unsig...etc...
		commentStamp: 	'eem 8/12/2014 14:53'
		traitComposition: 	nil
		classTraitComposition: 	nil

MCClassDefinition>>printDefinitionOn:
	Receiver: a MCClassDefinition(Character)
	Arguments and temporary variables: 
		stream: 	a WriteStream
	Receiver's instance variables: 
		name: 	#Character
		superclassName: 	#Magnitude
		variables: 	an OrderedCollection(a MCClassVariableDefinition(CharacterTable) a M...etc...
		category: 	#'Collections-Strings'
		type: 	#immediate
		comment: 	'I represent a character by storing its associated Unicode as an unsig...etc...
		commentStamp: 	'eem 8/12/2014 14:53'
		traitComposition: 	nil
		classTraitComposition: 	nil

[] in MCDiffyTextWriter(MCStWriter)>>writeClassDefinition:
	Receiver: a MCDiffyTextWriter
	Arguments and temporary variables: 
		definition: 	a WriteStream
		s: 	a MCClassDefinition(Character)
	Receiver's instance variables: 
		stream: 	a WriteStream
		initStream: 	nil


--- The full stack ---
MCClassDefinition(Object)>>error:
MCClassDefinition>>kindOfSubclass
MCClassDefinition>>printDefinitionOn:
[] in MCDiffyTextWriter(MCStWriter)>>writeClassDefinition:
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
String class(SequenceableCollection class)>>new:streamContents:
String class(SequenceableCollection class)>>streamContents:
MCDiffyTextWriter(MCTextWriter)>>chunkContents:
MCDiffyTextWriter(MCStWriter)>>writeClassDefinition:
MCDiffyTextWriter(MCStWriter)>>visitClassDefinition:
MCClassDefinition>>accept:
[] in MCDiffyTextWriter(MCTextWriter)>>visitInFork:
String class(SequenceableCollection class)>>new:streamContents:
String class(SequenceableCollection class)>>streamContents:
MCDiffyTextWriter(MCTextWriter)>>visitInFork:
MCDiffyTextWriter>>writePatchFrom:to:
MCDiffyTextWriter>>writeModification:
[] in MCDiffyTextWriter>>writePatch:
SortedCollection(OrderedCollection)>>do:
MCDiffyTextWriter>>writePatch:
SSDiffyTextWriter>>writePatch:
[] in SSDiffyTextWriter>>writeVersion:for:
BlockClosure>>on:do:
SSDiffyTextWriter>>writeVersion:for:
[] in SSEMailSubscription>>versionAdded:to:
BlockClosure>>on:do:
SSEMailSubscription>>versionAdded:to:
[] in [] in SSProject>>versionAdded:
[] in BlockClosure>>newProcess


More information about the Packages mailing list