Hi all,
I have updated the VMs that ship with the Squeak-trunk bundles.
The version of all OpenSmalltalkVMs currently is 201704270225.
The recent BlockContext/Context change unfortunately broke Metacello which
is used as part of the trunk testing pipeline. I've put a workaround in
place for the time being.
TravisCI just produced new 32bit trunk bundles: [1]. The 64bit bundles fail
for some reason during or after condensing the changes file [2]. But
unfortunately, I don't have enough time to look into this at the moment.
Best,
Fabio
[1] http://files.squeak.org/6.0alpha/Squeak6.0alpha-17229-32bit/
[2] https://travis-ci.org/squeak-smalltalk/squeak-app/jobs/226437862#L2424
--
On Thu, Apr 27, 2017 at 1:25 AM Eliot Miranda <eliot.miranda(a)gmail.com>
wrote:
> Hi Chris,
>
> On Mon, Apr 24, 2017 at 3:40 PM, Chris Muller <asqueaker(a)gmail.com> wrote:
>
>>
>> After trying a fairly recent VM, I've actually had to go back to that
>> Aug-17-2016 VM, because of the frequency of crashes in the new VM. Have
>> the very latest latest VM's fixed these crashes? We might want to do some
>> testing before making it the one the world sees..
>>
>
> My understanding is that the VM source as per VMMaker.oscog-eem.2187, 27
> March 2017, 3 pm, git commit 4ceff23323bcd0f2d3d0a4a43c2995f43d09c98a, Mon
> Mar 27 16:07:32 2017 should be good. This fixed what I hope is the
> remaining bug with the new compactor at snapshot. I certainly don't
> experience crashes using it, and I hear from some members of the Pharo
> community that it works well. That said, Levente reported a crash on
> update in the 64-bit VM as of VMMaker.oscog-eem.2197 , git commit date 201704181925.
> I haven't been able to reproduce this yet, and I haven't seen any problems
> with update in my usage.
>
>
>> On Thu, Apr 20, 2017 at 2:01 PM, Fabio Niephaus <lists(a)fniephaus.com>
>> wrote:
>>
>>> Hi Chris,
>>>
>>> On Wed, Apr 19, 2017 at 6:57 PM Chris Cunningham <
>>> cunningham.cb(a)gmail.com> wrote:
>>>
>>>> Over the last week, I've been trying to build a new image on the latest
>>>> trunk, which for my purposes needs to include ODBC, and until just
>>>> recently, I've been failing.
>>>>
>>>> After rooting around a bit, I finally found that the base trunk image I
>>>> was using (from this location: http://files.squeak.org/6.0alpha/ )
>>>> seems to all be based off of this VM:
>>>> [image: image.png]
>>>> My previous image that I was porting from is:
>>>> [image: image.png]
>>>> which worked fine calling out FFI/ODBC.
>>>> After trying many changes (looking at 64 bit image, 32 bit image, other
>>>> fumbling around), I finally tracked down a current VM from
>>>> https://bintray.com/opensmalltalk/vm/cog/_latestVersion#files
>>>> This version:
>>>> [image: image.png]
>>>> seems to work just fine with FFI (at leat, it runs the ODBC code
>>>> without a hitch). Even in the 64 bit version.
>>>>
>>>> I've sent this message for a few reasons:
>>>> 1 - for my future self, to remember where the link is for the most
>>>> current VM's (I can't find a link to it elsewhere outside of the email
>>>> archives)
>>>>
>>>
>>> I've added the link to the vm section at: http://squeak.org/downloads/
>>>
>>>
>>>> 2 - for anyone else having FFI issues
>>>> 3 - as a subtle request to eventually update the stable, blessed
>>>> version of the VMs that are used in the bleeding edge Image archives, so
>>>> that they work better with less hassle.
>>>>
>>>
>>> I'm afraid we still don't have a good release process in place.
>>> However, I'm happy to update the vm used for the Squeak trunk bundles
>>> with a current bleeding edge vm if no one objects.
>>>
>>> Best,
>>> Fabio
>>>
>>>
>>>>
>>>> Thanks,
>>>> cbc
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>
>
> --
> _,,,^..^,,,_
> best, Eliot
>
Levente Uzonyi uploaded a new version of EToys to project The Trunk:
http://source.squeak.org/trunk/EToys-ul.298.mcz
==================== Summary ====================
Name: EToys-ul.298
Author: ul
Time: 27 April 2017, 1:02:38.02162 pm
UUID: d4ecbed2-60da-4651-b11b-b6ecd27bee67
Ancestors: EToys-nice.297
- removed some of the extension methods, mostly those which have already been removed from the Trunk
- removed #fixTemps sends
- use the generic quicksort implementation in ChessMoveList
=============== Diff against EToys-nice.297 ===============
Item was removed:
- ----- Method: Behavior>>indexIfCompact (in category '*Etoys-Squeakland-private') -----
- indexIfCompact
- "If these 5 bits are non-zero, then instances of this class
- will be compact. It is crucial that there be an entry in
- Smalltalk compactClassesArray for any class so optimized.
- See the msgs becomeCompact and becomeUncompact."
- ^ (format bitShift: -11) bitAnd: 16r1F
- "
- Smalltalk compactClassesArray doWithIndex:
- [:c :i | c == nil ifFalse:
- [c indexIfCompact = i ifFalse: [self halt]]]
- "!
Item was changed:
----- Method: BroomMorph>>filter: (in category 'accessing') -----
filter: aBlock
"Set my acceptance filter. aBlock should return true for all Morphs to be moved"
+ filter := aBlock!
- filter := aBlock fixTemps!
Item was removed:
- ----- Method: ByteString>>primitiveFindSubstring:in:startingAt:matchTable: (in category '*Etoys-Squeakland-comparing') -----
- primitiveFindSubstring: key in: body startingAt: start matchTable: matchTable
- "Answer the index in the string body at which the substring key first occurs, at or beyond start. The match is determined using matchTable, which can be used to effect, eg, case-insensitive matches. If no match is found, zero will be returned.
-
- The algorithm below is not optimum -- it is intended to be translated to C which will go so fast that it wont matter."
- | index |
- <primitive: 'primitiveFindSubstring' module: 'MiscPrimitivePlugin'>
- <var: #key declareC: 'unsigned char *key'>
- <var: #body declareC: 'unsigned char *body'>
- <var: #matchTable declareC: 'unsigned char *matchTable'>
-
- key size = 0 ifTrue: [^ 0].
- start to: body size - key size + 1 do:
- [:startIndex |
- index := 1.
- [(matchTable at: (body at: startIndex+index-1) asciiValue + 1)
- = (matchTable at: (key at: index) asciiValue + 1)]
- whileTrue:
- [index = key size ifTrue: [^ startIndex].
- index := index+1]].
- ^ 0
- "
- ' ' findSubstring: 'abc' in: 'abcdefabcd' startingAt: 1 matchTable: CaseSensitiveOrder 1
- ' ' findSubstring: 'abc' in: 'abcdefabcd' startingAt: 2 matchTable: CaseSensitiveOrder 7
- ' ' findSubstring: 'abc' in: 'abcdefabcd' startingAt: 8 matchTable: CaseSensitiveOrder 0
- ' ' findSubstring: 'abc' in: 'abcdefABcd' startingAt: 2 matchTable: CaseSensitiveOrder 0
- ' ' findSubstring: 'abc' in: 'abcdefABcd' startingAt: 2 matchTable: CaseInsensitiveOrder 7
- "!
Item was removed:
- ----- Method: Character>>asUnicodeChar (in category '*Etoys-Squeakland-converting') -----
- asUnicodeChar
- "@@@ FIXME: Make this use asUnicode and move it to its lonely sender @@@"
- | table charset v |
- self leadingChar = 0 ifTrue: [^ self asInteger].
- charset := EncodedCharSet charsetAt: self leadingChar.
- charset isCharset ifFalse: [^ self].
- table := charset ucsTable.
- table isNil ifTrue: [^ Character value: 16rFFFD].
-
- v := table at: self charCode + 1.
- v = -1 ifTrue: [^ Character value: 16rFFFD].
-
- ^ Character leadingChar: charset unicodeLeadingChar code: v.!
Item was removed:
- ----- Method: ChessMoveList>>sort:to:using: (in category 'sorting') -----
- sort: i to: j using: sorter
- "Sort elements i through j of self to be nondescending according to sorter."
-
- | di dij dj tt ij k l n |
- "The prefix d means the data at that index."
- (n := j + 1 - i) <= 1 ifTrue: [^self]. "Nothing to sort."
- "Sort di,dj."
- di := collection at: i.
- dj := collection at: j.
- (sorter sorts: di before: dj) ifFalse:["i.e., should di precede dj?"
- collection swap: i with: j.
- tt := di. di := dj. dj := tt].
- n > 2 ifTrue:["More than two elements."
- ij := (i + j) // 2. "ij is the midpoint of i and j."
- dij := collection at: ij. "Sort di,dij,dj. Make dij be their median."
- (sorter sorts: di before: dij) ifTrue:["i.e. should di precede dij?"
- (sorter sorts: dij before: dj) "i.e., should dij precede dj?"
- ifFalse:[collection swap: j with: ij.
- dij := dj].
- ] ifFalse:[ "i.e. di should come after dij"
- collection swap: i with: ij.
- dij := di
- ].
- n > 3 ifTrue:["More than three elements."
- "Find k>i and l<j such that dk,dij,dl are in reverse order.
- Swap k and l. Repeat this procedure until k and l pass each other."
- k := i. l := j.
- [
- [l := l - 1. k <= l and: [sorter sorts: dij before: (collection at: l)]]
- whileTrue. "i.e. while dl succeeds dij"
- [k := k + 1. k <= l and: [sorter sorts: (collection at: k) before: dij]]
- whileTrue. "i.e. while dij succeeds dk"
- k <= l
- ] whileTrue:[collection swap: k with: l].
- "Now l<k (either 1 or 2 less), and di through dl are all less than
- or equal to dk through dj. Sort those two segments."
- self sort: i to: l using: sorter.
- self sort: k to: j using: sorter]].
- !
Item was changed:
----- Method: ChessMoveList>>sortUsing: (in category 'sorting') -----
sortUsing: historyTable
+
+ ^collection
+ quickSortFrom: startIndex
+ to: readLimit
+ by: [ :a :b | historyTable sorts: a before: b ]!
- ^self sort: startIndex to: readLimit using: historyTable!
Item was removed:
- ----- Method: Delay>>scheduleEvent (in category '*Etoys-Squeakland-private') -----
- scheduleEvent
- "Schedule this delay"
- resumptionTime := Time millisecondClockValue + delayDuration.
- AccessProtect critical:[
- ScheduledDelay := self.
- TimingSemaphore signal.
- ].!
Item was removed:
- ----- Method: Dictionary>>errorKeyNotFound (in category '*Etoys-Squeakland-private') -----
- errorKeyNotFound
-
- self error: 'key not found'!
Item was removed:
- ----- Method: Dictionary>>keyAt: (in category '*Etoys-Squeakland-private') -----
- keyAt: index
- "May be overridden by subclasses so that fixCollisions will work"
- | assn |
- assn := array at: index.
- assn == nil ifTrue: [^ nil]
- ifFalse: [^ assn key]!
Item was removed:
- ----- Method: Dictionary>>noCheckAdd: (in category '*Etoys-Squeakland-private') -----
- noCheckAdd: anObject
- "Must be defined separately for Dictionary because (self findElementOrNil:) expects a key, not an association. 9/7/96 tk"
-
- array at: (self findElementOrNil: anObject key) put: anObject.
- tally := tally + 1!
Item was changed:
----- Method: FileList2 class>>buildFileTypeButtons:actionRow:fileList: (in category '*Etoys-Squeakland-blue ui') -----
buildFileTypeButtons: window actionRow: actionRow fileList: aFileList
| fileTypeInfo fileTypeButtons fileTypeRow aButton |
fileTypeInfo := self endingSpecs.
fileTypeRow := window addARowCentered: #().
fileTypeRow color: ScriptingSystem paneColor.
fileTypeRow layoutInset: 3 @ 3.
fileTypeRow cellInset: 2 @ 0.
fileTypeRow hResizing: #spaceFill.
fileTypeButtons := fileTypeInfo
collect: [:each |
aButton := self
buildButtonText: each first
balloonText: nil
receiver: aFileList
selector: #update:fileTypeRow:morphUp:.
aButton arguments: {actionRow. fileTypeRow. aButton}.
aButton setProperty: #enabled toValue: true.
aButton setProperty: #buttonText toValue: each first.
aButton].
fileTypeRow addAllMorphs: fileTypeButtons.
aFileList directoryChangeBlock: [:newDir | self
enableTypeButtons: fileTypeButtons
info: fileTypeInfo
+ forDir: newDir].
- forDir: newDir] fixTemps.
!
Item was removed:
- ----- Method: OrderedCollection>>errorConditionNotSatisfied (in category '*Etoys-Squeakland-private') -----
- errorConditionNotSatisfied
-
- self error: 'no element satisfies condition'!
Item was removed:
- ----- Method: OrderedCollection>>grow (in category '*Etoys-Squeakland-adding') -----
- grow
- "Become larger. Typically, a subclass has to override this if the subclass
- adds instance variables."
- | newArray |
- newArray := Array new: self size + self growSize.
- newArray replaceFrom: 1 to: array size with: array startingAt: 1.
- array := newArray!
Item was removed:
- ----- Method: OrderedCollection>>growSize (in category '*Etoys-Squeakland-adding') -----
- growSize
- ^ array size max: 2!
Item was removed:
- ----- Method: Random class>>theItsCompletelyBrokenTest (in category '*Etoys-Squeakland-testing') -----
- theItsCompletelyBrokenTest
- "Random theItsCompletelyBrokenTest"
- "The above should print as...
- (0.149243269650845 0.331633021743797 0.75619644800024 0.393701540023881 0.941783181364547 0.549929193942775 0.659962596213428 0.991354559078512 0.696074432551896 0.922987899707159 )
- If they are not these values (accounting for precision of printing) then something is horribly wrong: DO NOT USE THIS CODE FOR ANYTHING. "
- | rng |
- rng := Random new.
- rng seed: 2345678901.
- ^ (1 to: 10) collect: [:i | rng next]!
Item was removed:
- ----- Method: Set>>init: (in category '*Etoys-Squeakland-private') -----
- init: n
- "Initialize array to an array size of n"
- array := Array new: n.
- tally := 0!
Item was removed:
- ----- Method: Set>>keyAt: (in category '*Etoys-Squeakland-private') -----
- keyAt: index
- "May be overridden by subclasses so that fixCollisions will work"
- ^ array at: index!
Item was removed:
- ----- Method: Set>>noCheckAdd: (in category '*Etoys-Squeakland-private') -----
- noCheckAdd: anObject
- array at: (self findElementOrNil: anObject) put: anObject.
- tally := tally + 1!
Item was removed:
- ----- Method: Set>>swap:with: (in category '*Etoys-Squeakland-private') -----
- swap: oneIndex with: otherIndex
- "May be overridden by subclasses so that fixCollisions will work"
-
- array swap: oneIndex with: otherIndex
- !
Item was removed:
- ----- Method: Set>>withArray: (in category '*Etoys-Squeakland-private') -----
- withArray: anArray
- "private -- for use only in copy"
- array := anArray!
Item was removed:
- ----- Method: SharedQueue>>init: (in category '*Etoys-Squeakland-private') -----
- init: size
-
- contentsArray := Array new: size.
- readPosition := 1.
- writePosition := 1.
- accessProtect := Semaphore forMutualExclusion.
- readSynch := Semaphore new!
Item was removed:
- ----- Method: String>>findLastOccuranceOfString:startingAt: (in category '*Etoys-Squeakland-deprecated-3.10') -----
- findLastOccuranceOfString: subString startingAt: start
- "Answer the index of the last occurance of subString within the receiver, starting at start. If
- the receiver does not contain subString, answer 0."
-
- ^ self findLastOccurrenceOfString: subString startingAt: start
- !
Hi
> On 26.04.2017, at 22:31, Dale Henrichs <dale.henrichs(a)gemtalksystems.com> wrote:
>
>
> On 04/26/2017 11:08 AM, Tobias Pape wrote:
>> Hi,
>> (cc squeak-dev)
>>
>>> On 26.04.2017, at 19:52, Esteban A. Maringolo <emaringolo(a)gmail.com> wrote:
>>>
>>> You should have a GRSqueakPlatform as subclass, and then evaluate
>>> "GRSqueakPlatform select", this will create and assign the new
>>> instance as GRPlatform singleton.
>>>
>> Sadly, in his image won't be a GRSqueakPlatform.
>> Why? because (SystemVersion current version asString) returns 'Squeak6.0alpha', but
>> MetacelloSqueakPlatform>>defaultPlatformAttributes does not know about that.
>> And ConfigurationOfGrease>>baseline117: only has an idea of #'squeak4.x' and #'squeak5.x'.
>>
>> I've no good idea how to fix that yet.
> submit a pull request for the Metacello project on github[1] and update the method MetacelloSqueakPlatform>>defaultPlatformAttributes[2] with your new Squeak versions added to the list ...
>
> If you want to avoid having to update Metacello for each new Squeak release, add something along the lines of what pharo has been doing for a few years[3] ... then you only need to remember to update that method ... but at least it will be part of the base image ...
>
> For GemStone I've included code to generate the default attributes for GemStone based on the GemStone version number ...
>
Hey Dale, those are good ideas and I've thought about that, too.
However, that does not help on its own. because even if this brought us, eg, #'squeak6.x' or #'squeak6alpha', Grease would pick none of them.
So, this could work:
1. have an extraction like gemstone below, but
2. ALSO identify as #'squeakTrunk' if version string ends in 'alpha', and
3. Change grease baseline 117 (or push number here?) the specific line from #'squeak5.x' to
a. either #( 'squeak5.x' 'squeak6.x')
b. or #( 'squeak5.x' 'squeakTrunk')
c. or have #'squeak6.x' separate.
@squeak-dev: hoping you are ok with (1), are you ok with (2)?
@seaside-dev: would you rather like (3a), (3b), or (3c)?
Best regards
-Tobias
> Dale
>
> [1] https://github.com/dalehenrich/metacello-work
> [2] https://github.com/dalehenrich/metacello-work/blob/master/repository/Metace…
> [3] https://github.com/dalehenrich/metacello-work/blob/master/repository/Metace…
> [4] https://github.com/dalehenrich/metacello-work/blob/master/repository/Metace…
>>
>> Any takers?
>>
>> best regards
>> -Tobias
>>
>>
>>> Regards.
>>> Esteban A. Maringolo
>>>
>>>
>>> 2017-04-26 14:27 GMT-03:00 H. Hirzel <hannes.hirzel(a)gmail.com>:
>>>> The issue is that
>>>>
>>>> GRPlatform current
>>>>
>>>>
>>>> returns nil.
>>>>
>>>> On 4/26/17, H. Hirzel <hannes.hirzel(a)gmail.com> wrote:
>>>>> After replacing
>>>>>
>>>>> #greaseInteger
>>>>>
>>>>> with
>>>>>
>>>>> #asInteger
>>>>>
>>>>> I get an error in
>>>>>
>>>>>
>>>>> WAKeyGenerator>>initialize
>>>>>
>>>>> initialize
>>>>> super initialize.
>>>>> self generator: GRPlatform current newRandom.
>>>>> self space:
>>>>> 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-'
>>>>>
>>>>>
>>>>>
>>>>> So there are issues with the Grease compatibility layer.
>>>>>
>>>>> Maybe the configuration map loads the wrong version?
>>>>>
>>>>>
>>>>> Suggestions?
>>>>>
>>>>>
>>>>> On 4/26/17, H. Hirzel <hannes.hirzel(a)gmail.com> wrote:
>>>>>> Hello
>>>>>>
>>>>>> Loading Seaside into Squeak6.0a-17082 .... gives the following error
>>>>>>
>>>>>> Character(Object)>>doesNotUnderstand: #greaseInteger
>>>>>>
>>>>>> Details [1]
>>>>>>
>>>>>> Is there a particular Squeak6.0a version where Seaside loads fine?
>>>>>> http://files.squeak.org/6.0alpha/
>>>>>>
>>>>>> Any suggestions how a fix to Grease should look like?
>>>>>>
>>>>>> Regards
>>>>>> --Hannes
>>>>>>
>>>>>> ---------------------------------------------------------------------------------------------
>>>>>> Character(Object)>>doesNotUnderstand: #greaseInteger
>>>>>> Receiver: Character null
>>>>>> Arguments and temporary variables:
>>>>>> aMessage: greaseInteger
>>>>>> exception: MessageNotUnderstood:
>>>>>> Character>>greaseInteger
>>>>>> resumeValue: nil
>>>>>> Receiver's instance variables:
>>>>>> Character null
>>>>>>
>>>>>> WAUrlEncoder class>>encode:on:
>>>>>> Receiver: WAUrlEncoder
>>>>>> Arguments and temporary variables:
>>>>>> aCharacter: Character null
>>>>>> aStream: a WriteStream
>>>>>> printer: a GRNumberPrinter
>>>>>> Receiver's instance variables:
>>>>>> superclass: WATableBasedEncoder
>>>>>> methodDict: a MethodDictionary()
>>>>>> format: 65538
>>>>>> instanceVariables: nil
>>>>>> organization: ('as yet unclassified')
>>>>>>
>>>>>> subclasses: nil
>>>>>> name: #WAUrlEncoder
>>>>>> classPool: nil
>>>>>> sharedPools: nil
>>>>>> environment: Smalltalk
>>>>>> category: #'Seaside-Core-Document'
>>>>>> table: #(nil nil nil nil nil nil nil nil nil nil nil
>>>>>> nil nil nil
>>>>>> nil nil nil ni...etc...
>>>>>>
>>>>>> WAUrlEncoder class>>initializeTable
>>>>>> Receiver: WAUrlEncoder
>>>>>> Arguments and temporary variables:
>>>>>> stream: a WriteStream
>>>>>> characterLimit: 255
>>>>>> index: 0
>>>>>> character: Character null
>>>>>> value: nil
>>>>>> Receiver's instance variables:
>>>>>> superclass: WATableBasedEncoder
>>>>>> methodDict: a MethodDictionary()
>>>>>> format: 65538
>>>>>> instanceVariables: nil
>>>>>> organization: ('as yet unclassified')
>>>>>>
>>>>>> subclasses: nil
>>>>>> name: #WAUrlEncoder
>>>>>> classPool: nil
>>>>>> sharedPools: nil
>>>>>> environment: Smalltalk
>>>>>> category: #'Seaside-Core-Document'
>>>>>> table: #(nil nil nil nil nil nil nil nil nil nil nil
>>>>>> nil nil nil
>>>>>> nil nil nil ni...etc...
>>>>>>
>>>> _______________________________________________
>>>> seaside mailing list
>>>> seaside(a)lists.squeakfoundation.org
>>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>>> _______________________________________________
>>> seaside mailing list
>>> seaside(a)lists.squeakfoundation.org
>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>> _______________________________________________
>> seaside mailing list
>> seaside(a)lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
> _______________________________________________
> seaside mailing list
> seaside(a)lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
Over the last week, I've been trying to build a new image on the latest
trunk, which for my purposes needs to include ODBC, and until just
recently, I've been failing.
After rooting around a bit, I finally found that the base trunk image I was
using (from this location: http://files.squeak.org/6.0alpha/ ) seems to all
be based off of this VM:
[image: Inline image 3]
My previous image that I was porting from is:
[image: Inline image 2]
which worked fine calling out FFI/ODBC.
After trying many changes (looking at 64 bit image, 32 bit image, other
fumbling around), I finally tracked down a current VM from
https://bintray.com/opensmalltalk/vm/cog/_latestVersion#files
This version:
[image: Inline image 1]
seems to work just fine with FFI (at leat, it runs the ODBC code without a
hitch). Even in the 64 bit version.
I've sent this message for a few reasons:
1 - for my future self, to remember where the link is for the most current
VM's (I can't find a link to it elsewhere outside of the email archives)
2 - for anyone else having FFI issues
3 - as a subtle request to eventually update the stable, blessed version of
the VMs that are used in the bleeding edge Image archives, so that they
work better with less hassle.
Thanks,
cbc
Nicolas Cellier uploaded a new version of Kernel to project The Inbox:
http://source.squeak.org/inbox/Kernel-nice.1102.mcz
==================== Summary ====================
Name: Kernel-nice.1102
Author: nice
Time: 27 April 2017, 12:07:32.099435 am
UUID: 5049a01f-53bd-4e40-a6a3-a906a14631ad
Ancestors: Kernel-nice.1101
Nuke pre-v3 closureCopy:copiedValues: method. No such message has been sent for a long long time.
Simplify the BlockStartLocator, because there is no need to handle pre-v3 closure anymore.
=============== Diff against Kernel-nice.1101 ===============
Item was changed:
InstructionClient subclass: #BlockStartLocator
+ instanceVariableNames: ''
- instanceVariableNames: 'nextJumpIsAroundBlock'
classVariableNames: ''
poolDictionaries: ''
category: 'Kernel-Methods'!
Item was removed:
- ----- Method: BlockStartLocator>>initialize (in category 'initialize-release') -----
- initialize
- nextJumpIsAroundBlock := false!
Item was removed:
- ----- Method: BlockStartLocator>>jump: (in category 'instruction decoding') -----
- jump: offset
- "If this jump is around a block answer the size of that block."
-
- nextJumpIsAroundBlock ifTrue:
- [nextJumpIsAroundBlock := false.
- ^offset]!
Item was removed:
- ----- Method: BlockStartLocator>>send:super:numArgs: (in category 'instruction decoding') -----
- send: selector super: supered numArgs: numberArguments
- nextJumpIsAroundBlock := #closureCopy:copiedValues: == selector
- "Don't use
- nextJumpIsAroundBlock := #(blockCopy: closureCopy:copiedValues:) includes: selector
- since BlueBook BlockContexts do not have their own temps."!
Item was removed:
- ----- Method: Context>>closureCopy:copiedValues: (in category 'controlling') -----
- closureCopy: numArgs copiedValues: anArray
- "Distinguish a block of code from its enclosing method by
- creating a BlockClosure for that block. The compiler inserts into all
- methods that contain blocks the bytecodes to send the message
- closureCopy:copiedValues:. Do not use closureCopy:copiedValues: in code that you write!! Only the
- compiler can decide to send the message closureCopy:copiedValues:. Fail if numArgs is
- not a SmallInteger. Optional. No Lookup. See Object documentation
- whatIsAPrimitive."
-
- <primitive: 200>
- ^BlockClosure outerContext: self startpc: pc + 2 numArgs: numArgs copiedValues: anArray!
Hi
> On 26.04.2017, at 23:38, Dale Henrichs <dale.henrichs(a)gemtalksystems.com> wrote:
>
>
>
> On 04/26/2017 02:26 PM, Tobias Pape wrote:
>> Hi
>>> On 26.04.2017, at 22:31, Dale Henrichs <dale.henrichs(a)gemtalksystems.com> wrote:
>>>
>>>
>>> On 04/26/2017 11:08 AM, Tobias Pape wrote:
>>>> Hi,
>>>> (cc squeak-dev)
>>>>
>>>>> On 26.04.2017, at 19:52, Esteban A. Maringolo <emaringolo(a)gmail.com> wrote:
>>>>>
>>>>> You should have a GRSqueakPlatform as subclass, and then evaluate
>>>>> "GRSqueakPlatform select", this will create and assign the new
>>>>> instance as GRPlatform singleton.
>>>>>
>>>> Sadly, in his image won't be a GRSqueakPlatform.
>>>> Why? because (SystemVersion current version asString) returns 'Squeak6.0alpha', but
>>>> MetacelloSqueakPlatform>>defaultPlatformAttributes does not know about that.
>>>> And ConfigurationOfGrease>>baseline117: only has an idea of #'squeak4.x' and #'squeak5.x'.
>>>>
>>>> I've no good idea how to fix that yet.
>>> submit a pull request for the Metacello project on github[1] and update the method MetacelloSqueakPlatform>>defaultPlatformAttributes[2] with your new Squeak versions added to the list ...
>>>
>>> If you want to avoid having to update Metacello for each new Squeak release, add something along the lines of what pharo has been doing for a few years[3] ... then you only need to remember to update that method ... but at least it will be part of the base image ...
>>>
>>> For GemStone I've included code to generate the default attributes for GemStone based on the GemStone version number ...
>>>
>> Hey Dale, those are good ideas and I've thought about that, too.
>> However, that does not help on its own. because even if this brought us, eg, #'squeak6.x' or #'squeak6alpha', Grease would pick none of them.
> Hey Tobias, when a new version of Squeak is nearing release, you presumably need to validate that Seaside and all of it's dependent projects load/run in the new version, at which time you'd update the configuration/baseline as part of the validation ... and also run tests, etc.
True. The case here is that someone took a Trunk mid-cycle.
But yes, generally we should do that.
> Both Grease[1] and Seaside[2] are up on github and use smalltalkCI and travis-ci to run tests, so for that, you could fork Grease and Seaside, edit the .travis.yml file to include the new squeak version; edit the baseline to include the new Squeak version (all of which could be done from your web browser) and when you commit, travis builds are kicked off automatically -- if the tests pass on travis-ci, you issue a pull request for Grease and Seaside and Bob's you uncle ...
1. ask
2. dale answers
3. ???
4. profit!
\o/
no seriously, that process is fine.
I was bikeshedding implementation details...
long story short: there's no seaside@squeaktrunk at the moment without at least a tiny bit of hand-tuing.
Hannes, since I have not much time atm for Seaside, can you try out a bit yourself?
You should get things loaded at least if you make `MetacelloSqueakPlatform>>defaultPlatformAttributes` return #'squeak5.0'
best regards
-Tobias
>
> [1] https://github.com/SeasideSt/Grease/
> [2] https://github.com/SeasideSt/Seaside
>>
>> So, this could work:
>> 1. have an extraction like gemstone below, but
>> 2. ALSO identify as #'squeakTrunk' if version string ends in 'alpha', and
>> 3. Change grease baseline 117 (or push number here?) the specific line from #'squeak5.x' to
>> a. either #( 'squeak5.x' 'squeak6.x')
>> b. or #( 'squeak5.x' 'squeakTrunk')
>> c. or have #'squeak6.x' separate.
>>
>> @squeak-dev: hoping you are ok with (1), are you ok with (2)?
>> @seaside-dev: would you rather like (3a), (3b), or (3c)?
>>
>> Best regards
>> -Tobias
>>
>>
>>> Dale
>>>
>>> [1] https://github.com/dalehenrich/metacello-work
>>> [2] https://github.com/dalehenrich/metacello-work/blob/master/repository/Metace…
>>> [3] https://github.com/dalehenrich/metacello-work/blob/master/repository/Metace…
>>> [4] https://github.com/dalehenrich/metacello-work/blob/master/repository/Metace…
>>>> Any takers?
>>>>
>>>> best regards
>>>> -Tobias
>>>>
>>>>
>>>>> Regards.
>>>>> Esteban A. Maringolo
>>>>>
>>>>>
>>>>> 2017-04-26 14:27 GMT-03:00 H. Hirzel <hannes.hirzel(a)gmail.com>:
>>>>>> The issue is that
>>>>>>
>>>>>> GRPlatform current
>>>>>>
>>>>>>
>>>>>> returns nil.
>>>>>>
>>>>>> On 4/26/17, H. Hirzel <hannes.hirzel(a)gmail.com> wrote:
>>>>>>> After replacing
>>>>>>>
>>>>>>> #greaseInteger
>>>>>>>
>>>>>>> with
>>>>>>>
>>>>>>> #asInteger
>>>>>>>
>>>>>>> I get an error in
>>>>>>>
>>>>>>>
>>>>>>> WAKeyGenerator>>initialize
>>>>>>>
>>>>>>> initialize
>>>>>>> super initialize.
>>>>>>> self generator: GRPlatform current newRandom.
>>>>>>> self space:
>>>>>>> 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-'
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> So there are issues with the Grease compatibility layer.
>>>>>>>
>>>>>>> Maybe the configuration map loads the wrong version?
>>>>>>>
>>>>>>>
>>>>>>> Suggestions?
>>>>>>>
>>>>>>>
>>>>>>> On 4/26/17, H. Hirzel <hannes.hirzel(a)gmail.com> wrote:
>>>>>>>> Hello
>>>>>>>>
>>>>>>>> Loading Seaside into Squeak6.0a-17082 .... gives the following error
>>>>>>>>
>>>>>>>> Character(Object)>>doesNotUnderstand: #greaseInteger
>>>>>>>>
>>>>>>>> Details [1]
>>>>>>>>
>>>>>>>> Is there a particular Squeak6.0a version where Seaside loads fine?
>>>>>>>> http://files.squeak.org/6.0alpha/
>>>>>>>>
>>>>>>>> Any suggestions how a fix to Grease should look like?
>>>>>>>>
>>>>>>>> Regards
>>>>>>>> --Hannes
>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------------------------------
>>>>>>>> Character(Object)>>doesNotUnderstand: #greaseInteger
>>>>>>>> Receiver: Character null
>>>>>>>> Arguments and temporary variables:
>>>>>>>> aMessage: greaseInteger
>>>>>>>> exception: MessageNotUnderstood:
>>>>>>>> Character>>greaseInteger
>>>>>>>> resumeValue: nil
>>>>>>>> Receiver's instance variables:
>>>>>>>> Character null
>>>>>>>>
>>>>>>>> WAUrlEncoder class>>encode:on:
>>>>>>>> Receiver: WAUrlEncoder
>>>>>>>> Arguments and temporary variables:
>>>>>>>> aCharacter: Character null
>>>>>>>> aStream: a WriteStream
>>>>>>>> printer: a GRNumberPrinter
>>>>>>>> Receiver's instance variables:
>>>>>>>> superclass: WATableBasedEncoder
>>>>>>>> methodDict: a MethodDictionary()
>>>>>>>> format: 65538
>>>>>>>> instanceVariables: nil
>>>>>>>> organization: ('as yet unclassified')
>>>>>>>>
>>>>>>>> subclasses: nil
>>>>>>>> name: #WAUrlEncoder
>>>>>>>> classPool: nil
>>>>>>>> sharedPools: nil
>>>>>>>> environment: Smalltalk
>>>>>>>> category: #'Seaside-Core-Document'
>>>>>>>> table: #(nil nil nil nil nil nil nil nil nil nil nil
>>>>>>>> nil nil nil
>>>>>>>> nil nil nil ni...etc...
>>>>>>>>
>>>>>>>> WAUrlEncoder class>>initializeTable
>>>>>>>> Receiver: WAUrlEncoder
>>>>>>>> Arguments and temporary variables:
>>>>>>>> stream: a WriteStream
>>>>>>>> characterLimit: 255
>>>>>>>> index: 0
>>>>>>>> character: Character null
>>>>>>>> value: nil
>>>>>>>> Receiver's instance variables:
>>>>>>>> superclass: WATableBasedEncoder
>>>>>>>> methodDict: a MethodDictionary()
>>>>>>>> format: 65538
>>>>>>>> instanceVariables: nil
>>>>>>>> organization: ('as yet unclassified')
>>>>>>>>
>>>>>>>> subclasses: nil
>>>>>>>> name: #WAUrlEncoder
>>>>>>>> classPool: nil
>>>>>>>> sharedPools: nil
>>>>>>>> environment: Smalltalk
>>>>>>>> category: #'Seaside-Core-Document'
>>>>>>>> table: #(nil nil nil nil nil nil nil nil nil nil nil
>>>>>>>> nil nil nil
>>>>>>>> nil nil nil ni...etc...
>>>>>>>>
>>>>>> _______________________________________________
>>>>>> seaside mailing list
>>>>>> seaside(a)lists.squeakfoundation.org
>>>>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>>>>> _______________________________________________
>>>>> seaside mailing list
>>>>> seaside(a)lists.squeakfoundation.org
>>>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>>>> _______________________________________________
>>>> seaside mailing list
>>>> seaside(a)lists.squeakfoundation.org
>>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>>> _______________________________________________
>>> seaside mailing list
>>> seaside(a)lists.squeakfoundation.org
>>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>> _______________________________________________
>> seaside mailing list
>> seaside(a)lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>
> _______________________________________________
> seaside mailing list
> seaside(a)lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside