ぐる式 (貳) より引っ越し作業中.未完.

2006年8月23日水曜日

Squeak 3.8.1 (6744)

upgrading Squeak3.8 to 3.8.1

チェリー・ヴァニラなイメージでアップデートを掛けてみた.クラスは 3 個減ったがこいつらは CardPlayer55, CardPlayer57, Player56 という Player のサブクラス群だった.メソッド数は 5 つほど増えている.

SystemVersion newVersion: 'Squeak3.8.1'. Utilities updateUrlLists setContents: #(#('Squeak FTP Updates' #('ftp.squeak.org/'))). Utilities updateFromServer.

上記をワークスペースなりにペーストして do it. 最後チェンジセット 6744FastSocketStream-gk.cs で removeSelectorSimply: を呼んでいるんだが,こいつは deprecated: であり,五月蝿うてならぬので,最初のウォークバックで basicRemoveSelector: に書き換えるよろし.

チェリー・ヴァニラなイメージで書き出す.

| classes stream |classes := OrderedCollection new: Metaclass allInstances size.Smalltalk do:         [:each |         (each isKindOf: Behavior)                 ifTrue: [classes add: each name]].stream := FileStream newFileNamed: 'Squeak3.8.1.classes'.classes asSortedCollection do:         [:each |         stream nextPutAll: each name.        stream cr.].stream close.

3.8.1 から比較する.

| newClasses oldClasses stream newOnly oldOnly aStream aModel diffBlock outBlock |stream := (FileStream oldFileNamed: 'Squeak3.8.classes') contentsOfEntireFile. oldClasses := stream findTokens: String cr.newClasses := OrderedCollection new: Metaclass allInstances size.Smalltalk do:         [:each |         (each isKindOf: Behavior)                 ifTrue: [newClasses add: each name printString]].newOnly := IdentitySet new.oldOnly := IdentitySet new.diffBlock :=         [:classes :comparativeClasses :targetClasses |        classes asSortedCollection                 do:                         [:class |                         (comparativeClasses includes: class)                                ifFalse: [targetClasses add: class]]].diffBlock         value: newClasses         value: oldClasses         value: newOnly.diffBlock         value: oldClasses         value: newClasses         value: oldOnly.outBlock :=         [:head :classes :outStream |         outStream nextPutAll: head; cr.        classes asSortedCollection                do: [:class | outStream tab; nextPutAll: class; cr]].aStream := WriteStream on: (String new: 10000).outBlock         value: 'Classes: Added on Squeak 3.8.1'         value: newOnly         value: aStream.aStream cr; cr.outBlock         value: 'Classes: Deleted on Squeak 3.8.1 (exists 3.8)'         value: oldOnly         value: aStream.aModel := (StringHolder new) contents: aStream contents.StringHolderView open: aModel.^aModel

このコード, 1.31 と 2.0 のクラスの差異を調べるために 8 年ぐらい前に書いたコードだけど,まだ動くんだ (笑).

0 件のコメント:

コメントを投稿