Pharo7 and full block closures

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

Pharo7 and full block closures

Holger Freyther
Hi,

I kind of missed the open alpha of "Scorch" and to make up for it I tried to follow the instructions on Pharo7 but I do crash the VM. Is that to be expected?

"Add special selector for trap instruction"
Smalltalk specialObjectsArray at: 60 put: #trapTripped.
"Disable hot spot detection (to load the Scorch code)"
Smalltalk specialObjectsArray at: 59 put: nil.
"Recompile the fetch mourner primitive which has strange side-effect with alternate bytecode set and closures"
WeakArray class compile: 'primitiveFetchMourner ^ nil' classified: #patch.
"Enable FullBlockClosure and alternate bytecode set"
CompilationContext bytecodeBackend: OpalEncoderForSistaV1.
CompilationContext usesFullBlockClosure: true.
OpalCompiler recompileAll.


If I only execute the last three lines it is crashing as well but at a different point in the VM?


(lldb) bt
* thread #1: tid = 0x5636d2, 0xa165e496 libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
  * frame #0: 0xa165e496 libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0xa1744c63 libsystem_pthread.dylib`pthread_kill + 90
    frame #2: 0xa15bea34 libsystem_c.dylib`abort + 141
    frame #3: 0x00087128 Pharo`error + 55
    frame #4: 0x000132e6 Pharo`lookupMethodInClass + 601
    frame #5: 0x000085c1 Pharo`interpret + 25756
    frame #6: 0x00011b9a Pharo`enterSmalltalkExecutiveImplementation + 135
    frame #7: 0x000023ab Pharo`interpret + 646
    frame #8: 0x000889d9 Pharo`-[sqSqueakMainApplication runSqueak] + 476
    frame #9: 0x95ac4a1b Foundation`__NSFirePerformWithOrder + 419
    frame #10: 0x942811fe CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30
    frame #11: 0x94281157 CoreFoundation`__CFRunLoopDoObservers + 391
    frame #12: 0x942614a2 CoreFoundation`__CFRunLoopRun + 1058
    frame #13: 0x94260e1a CoreFoundation`CFRunLoopRunSpecific + 506
    frame #14: 0x94260c0b CoreFoundation`CFRunLoopRunInMode + 123
    frame #15: 0x93954396 HIToolbox`RunCurrentEventLoopInMode + 268
    frame #16: 0x93954057 HIToolbox`ReceiveNextEventCommon + 195
    frame #17: 0x93953f7b HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 83
    frame #18: 0x91f86015 AppKit`_DPSNextEvent + 1227
    frame #19: 0x926ebbbb AppKit`-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1742
    frame #20: 0x926eb4e5 AppKit`-[NSApplication(NSEvent) nextEventMatchingMask:untilDate:inMode:dequeue:] + 132
    frame #21: 0x91f7acb6 AppKit`-[NSApplication run] + 943
    frame #22: 0x91f47d1e AppKit`NSApplicationMain + 1368
    frame #23: 0xa152f395 libdyld.dylib`start + 1
(lldb) p (int) activeProcess()
(int) $0 = 115378352
(lldb) p/x (int) activeProcess()
(int) $1 = 0x06e088b0
(lldb) p (void) printAllStacks()
Process  0x6e088b0 priority 40
0xbfffc124 I FileReference(AbstractFileReference)>writeStreamDo: 0x9a303d8: a(n) FileReference
0xbfffc144 M [] in OmBlockFileStore(OmFileStore)>flushEntryBuffer 0x9a2c3c0: a(n) OmBlockFileStore
0xbfffc164 M [] in Semaphore>critical: 0x6e08898: a(n) Semaphore
0xbfffc184 M BlockClosure>ensure: 0x6f2d1f8: a(n) BlockClosure
0xbfffc1a4 M Semaphore>critical: 0x6e08898: a(n) Semaphore
0xbfffc1c8 I OmBlockFileStore(OmFileStore)>critical: 0x9a2c3c0: a(n) OmBlockFileStore
0xbfffc1e4 M OmBlockFileStore(OmFileStore)>flushEntryBuffer 0x9a2c3c0: a(n) OmBlockFileStore
0xbfffc204 I OmDeferrer>sendMessage 0x9a303f8: a(n) OmDeferrer
0xbfffc21c M [] in OmDeferrer>flush 0x9a303f8: a(n) OmDeferrer
0xbfffc23c M BlockClosure>ensure: 0x6f2d0e0: a(n) BlockClosure
0xbfffc260 I OmDeferrer>flush 0x9a303f8: a(n) OmDeferrer
0xbfffc280 I [] in OmDeferrer>runMessageProcess 0x9a303f8: a(n) OmDeferrer
0xbfffc2a0 I [] in BlockClosure>newProcess 0x6e12fb8: a(n) BlockClosure

processes at priority 40
Process  0x7f4ae88 priority 40
0xbfff7208 M IdentityDictionary(Dictionary)>at:ifAbsent: 0x6e11fa8: a(n) IdentityDictionary
0xbfff7228 M IdentityDictionary(Dictionary)>at:ifAbsentPut: 0x6e11fa8: a(n) IdentityDictionary
0xbfff7248 M IRBytecodeGenerator>label: 0x6e12050: a(n) IRBytecodeGenerator
0xbfff7264 M IRTranslatorV2>label: 0x6e12118: a(n) IRTranslatorV2
0xbfff7280 M IRTranslatorV2>visitSequence: 0x6e12118: a(n) IRTranslatorV2
0xbfff729c M IRSequence>accept: 0x6e12138: a(n) IRSequence
0xbfff8fa4 M IRTranslatorV2(IRVisitor)>visitNode: 0x6e12118: a(n) IRTranslatorV2
0xbfff8fc0 M [] in IRTranslatorV2(IRVisitor)>visitNodes: 0x6e12118: a(n) IRTranslatorV2
0xbfff8fe4 M SortedCollection(OrderedCollection)>do: 0x6e12248: a(n) SortedCollection
0xbfff9000 M IRTranslatorV2(IRVisitor)>visitNodes: 0x6e12118: a(n) IRTranslatorV2
0xbfff901c M IRTranslatorV2>visitSequences: 0x6e12118: a(n) IRTranslatorV2
0xbfff9038 M IRTranslatorV2>visitMethod: 0x6e12118: a(n) IRTranslatorV2
0xbfff9054 M IRMethod>accept: 0x6e12320: a(n) IRMethod
0xbfff9070 M IRTranslatorV2(IRVisitor)>visitNode: 0x6e12118: a(n) IRTranslatorV2
0xbfff9094 M IRMethod>generateBlock:withScope: 0x6e12320: a(n) IRMethod
0xbfff90b4 M IRMethod>compiledBlock: 0x6e12320: a(n) IRMethod
0xbfff90d4 M OCASTTranslator>translateFullBlock: 0x6e123a8: a(n) OCASTTranslator
0xbfff90f8 M OCASTTranslatorForValue(OCASTTranslator)>visitFullBlockNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff9120 M OCASTTranslatorForValue(OCASTTranslator)>visitBlockNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff913c M RBBlockNode>acceptVisitor: 0x6e12420: a(n) RBBlockNode
0xbfff9158 M OCASTTranslatorForValue(RBProgramNodeVisitor)>visitNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff9174 M OCASTTranslatorForValue(OCASTTranslator)>visitNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff9190 M [] in OCASTTranslatorForValue(OCASTTranslator)>emitMessageNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff91b4 M OrderedCollection>do: 0x6e12480: a(n) OrderedCollection
0xbfff91d0 M OCASTTranslatorForValue(OCASTTranslator)>emitMessageNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff91ec M OCASTTranslatorForValue(OCASTTranslator)>visitMessageNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff9208 M RBMessageNode>acceptVisitor: 0x6e124f8: a(n) RBMessageNode
0xbfff9224 M OCASTTranslatorForValue(RBProgramNodeVisitor)>visitNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff9240 M OCASTTranslatorForValue(OCASTTranslator)>visitNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff925c M [] in OCASTTranslatorForEffect(OCASTTranslator)>emitMessageNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfff9280 M OrderedCollection>do: 0x6e12550: a(n) OrderedCollection
0xbfff929c M OCASTTranslatorForEffect(OCASTTranslator)>emitMessageNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa00c M OCASTTranslatorForEffect>emitMessageNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa028 M OCASTTranslatorForEffect(OCASTTranslator)>visitMessageNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa044 M RBMessageNode>acceptVisitor: 0x6e125c8: a(n) RBMessageNode
0xbfffa060 M OCASTTranslatorForEffect(RBProgramNodeVisitor)>visitNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa07c M OCASTTranslatorForEffect(OCASTTranslator)>visitNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa098 M [] in OCASTTranslatorForEffect>visitSequenceNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa0bc M OrderedCollection>do: 0x6e12668: a(n) OrderedCollection
0xbfffa0d8 M OCASTTranslatorForEffect>visitSequenceNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa0f4 M RBSequenceNode>acceptVisitor: 0x6e126e0: a(n) RBSequenceNode
0xbfffa110 M OCASTTranslatorForEffect(RBProgramNodeVisitor)>visitNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa12c M OCASTTranslatorForEffect(OCASTTranslator)>visitNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa148 M OCASTTranslator>visitMethodNode: 0x6e12708: a(n) OCASTTranslator
0xbfffa164 M RBMethodNode>acceptVisitor: 0x6e12780: a(n) RBMethodNode
0xbfffa180 M OCASTTranslator(RBProgramNodeVisitor)>visitNode: 0x6e12708: a(n) OCASTTranslator
0xbfffa19c M OCASTTranslator>visitNode: 0x6e12708: a(n) OCASTTranslator
0xbfffa1bc M RBMethodNode>generateIR 0x6e12780: a(n) RBMethodNode
0xbfffa1d4 M RBMethodNode>generate: 0x6e12780: a(n) RBMethodNode
0xbfffa1f4 M [] in OpalCompiler>compile 0x6e127e8: a(n) OpalCompiler
0xbfffa20c M BlockClosure>on:do: 0x6e12868: a(n) BlockClosure
0xbfffa230 M OpalCompiler>compile 0x6e127e8: a(n) OpalCompiler
0xbfffa250 M AbstractNautilusUI class(Behavior)>recompile:from: 0x7fb08f8: a(n) AbstractNautilusUI class
0xbfffa274 M [] in AbstractNautilusUI class(Behavior)>compileAllFrom: 0x7fb08f8: a(n) AbstractNautilusUI class
0xbfffa29c M Set>do: 0x6e12970: a(n) Set
0xbfffaf34 M AbstractNautilusUI class(Behavior)>compileAllFrom: 0x7fb08f8: a(n) AbstractNautilusUI class
0xbfffaf50 M AbstractNautilusUI class(Class)>compileAllFrom: 0x7fb08f8: a(n) AbstractNautilusUI class
0xbfffaf6c M AbstractNautilusUI class(Behavior)>compileAll 0x7fb08f8: a(n) AbstractNautilusUI class
0xbfffaf8c I AbstractNautilusUI class(Class)>compileAll 0x7fb08f8: a(n) AbstractNautilusUI class
0xbfffafac I AbstractNautilusUI class(Behavior)>recompile 0x7fb08f8: a(n) AbstractNautilusUI class
0xbfffafc4 M [] in SmalltalkImage>recompile 0x74ca9b8: a(n) SmalltalkImage
0xbfffaff8 M [] in OrderedCollection(Collection)>do:displayingProgress:every: 0x6e12aa0: a(n) OrderedCollection
0xbfffb01c M OrderedCollection>do: 0x6e12aa0: a(n) OrderedCollection
0xbfffb054 I [] in OrderedCollection(Collection)>do:displayingProgress:every: 0x6e12aa0: a(n) OrderedCollection
0xbfffb078 I BlockClosure>cull: 0x6e12b40: a(n) BlockClosure
0xbfffb094 M [] in Job>run 0x6e12a58: a(n) Job
0xbfffb0b8 M [] in CurrentJob(DynamicVariable)>value:during: 0x72f6dc0: a(n) CurrentJob
0xbfffb0d8 M BlockClosure>ensure: 0x6e12b80: a(n) BlockClosure
0xbfffb104 I CurrentJob(DynamicVariable)>value:during: 0x72f6dc0: a(n) CurrentJob
0xbfffb12c I CurrentJob class(DynamicVariable class)>value:during: 0x7233b28: a(n) CurrentJob class
0xbfffb14c M [] in Job>run 0x6e12a58: a(n) Job
0xbfffb16c M BlockClosure>ensure: 0x6e12c80: a(n) BlockClosure
0xbfffb190 I Job>run 0x6e12a58: a(n) Job
0xbfffb1b0 I MorphicUIManager(UIManager)>displayProgress:from:to:during: 0x9a2c2d8: a(n) MorphicUIManager
0xbfffb1e0 I ByteString(String)>displayProgressFrom:to:during: 0x748c040: a(n) ByteString
0xbfffb214 I OrderedCollection(Collection)>do:displayingProgress:every: 0x6e12aa0: a(n) OrderedCollection
0xbfffb240 I OrderedCollection(Collection)>do:displayingProgress: 0x6e12aa0: a(n) OrderedCollection
0xbfffb268 I SmalltalkImage>recompile 0x74ca9b8: a(n) SmalltalkImage
0xbfffb288 I OpalCompiler class>recompileAll 0x7310170: a(n) OpalCompiler class



Reply | Threaded
Open this post in threaded view
|

Re: Pharo7 and full block closures

Clément Béra
Hi Holger,

Nobody can guarantee any framework to be stable on Pharo alpha (Currently Pharo 7) since deep changes can happen every day during alpha. So the answer is yes, having any framework not working on the alpha version is to be expected.

The instructions to use the Sista runtime are detailed here in the How to get/build a Sista image and VM section and are very clear in step 1 about using Pharo 6 (the stable Pharo version). They also work with Pharo 6.1.

Sista will work for the release of Pharo 7 as it did for Pharo 6 and 6.1 but it won't work every day during the alpha of Pharo 7 and no sane framework developer can guarantee that. Sista does not work currently in Pharo 7 due to some changes breaking the full block closures, I am going to fix it but even then in the incoming months there is a high chance that another change in Pharo 7 breaks it again, so I would never recommend to use it with the alpha.


On Fri, Sep 22, 2017 at 5:08 AM, Holger Freyther <[hidden email]> wrote:
Hi,

I kind of missed the open alpha of "Scorch" and to make up for it I tried to follow the instructions on Pharo7 but I do crash the VM. Is that to be expected?

"Add special selector for trap instruction"
Smalltalk specialObjectsArray at: 60 put: #trapTripped.
"Disable hot spot detection (to load the Scorch code)"
Smalltalk specialObjectsArray at: 59 put: nil.
"Recompile the fetch mourner primitive which has strange side-effect with alternate bytecode set and closures"
WeakArray class compile: 'primitiveFetchMourner ^ nil' classified: #patch.
"Enable FullBlockClosure and alternate bytecode set"
CompilationContext bytecodeBackend: OpalEncoderForSistaV1.
CompilationContext usesFullBlockClosure: true.
OpalCompiler recompileAll.


If I only execute the last three lines it is crashing as well but at a different point in the VM?


(lldb) bt
* thread #1: tid = 0x5636d2, 0xa165e496 libsystem_kernel.dylib`__pthread_kill + 10, queue = 'com.apple.main-thread', stop reason = signal SIGABRT
  * frame #0: 0xa165e496 libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0xa1744c63 libsystem_pthread.dylib`pthread_kill + 90
    frame #2: 0xa15bea34 libsystem_c.dylib`abort + 141
    frame #3: 0x00087128 Pharo`error + 55
    frame #4: 0x000132e6 Pharo`lookupMethodInClass + 601
    frame #5: 0x000085c1 Pharo`interpret + 25756
    frame #6: 0x00011b9a Pharo`enterSmalltalkExecutiveImplementation + 135
    frame #7: 0x000023ab Pharo`interpret + 646
    frame #8: 0x000889d9 Pharo`-[sqSqueakMainApplication runSqueak] + 476
    frame #9: 0x95ac4a1b Foundation`__NSFirePerformWithOrder + 419
    frame #10: 0x942811fe CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30
    frame #11: 0x94281157 CoreFoundation`__CFRunLoopDoObservers + 391
    frame #12: 0x942614a2 CoreFoundation`__CFRunLoopRun + 1058
    frame #13: 0x94260e1a CoreFoundation`CFRunLoopRunSpecific + 506
    frame #14: 0x94260c0b CoreFoundation`CFRunLoopRunInMode + 123
    frame #15: 0x93954396 HIToolbox`RunCurrentEventLoopInMode + 268
    frame #16: 0x93954057 HIToolbox`ReceiveNextEventCommon + 195
    frame #17: 0x93953f7b HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 83
    frame #18: 0x91f86015 AppKit`_DPSNextEvent + 1227
    frame #19: 0x926ebbbb AppKit`-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1742
    frame #20: 0x926eb4e5 AppKit`-[NSApplication(NSEvent) nextEventMatchingMask:untilDate:inMode:dequeue:] + 132
    frame #21: 0x91f7acb6 AppKit`-[NSApplication run] + 943
    frame #22: 0x91f47d1e AppKit`NSApplicationMain + 1368
    frame #23: 0xa152f395 libdyld.dylib`start + 1
(lldb) p (int) activeProcess()
(int) $0 = 115378352
(lldb) p/x (int) activeProcess()
(int) $1 = 0x06e088b0
(lldb) p (void) printAllStacks()
Process  0x6e088b0 priority 40
0xbfffc124 I FileReference(AbstractFileReference)>writeStreamDo: 0x9a303d8: a(n) FileReference
0xbfffc144 M [] in OmBlockFileStore(OmFileStore)>flushEntryBuffer 0x9a2c3c0: a(n) OmBlockFileStore
0xbfffc164 M [] in Semaphore>critical: 0x6e08898: a(n) Semaphore
0xbfffc184 M BlockClosure>ensure: 0x6f2d1f8: a(n) BlockClosure
0xbfffc1a4 M Semaphore>critical: 0x6e08898: a(n) Semaphore
0xbfffc1c8 I OmBlockFileStore(OmFileStore)>critical: 0x9a2c3c0: a(n) OmBlockFileStore
0xbfffc1e4 M OmBlockFileStore(OmFileStore)>flushEntryBuffer 0x9a2c3c0: a(n) OmBlockFileStore
0xbfffc204 I OmDeferrer>sendMessage 0x9a303f8: a(n) OmDeferrer
0xbfffc21c M [] in OmDeferrer>flush 0x9a303f8: a(n) OmDeferrer
0xbfffc23c M BlockClosure>ensure: 0x6f2d0e0: a(n) BlockClosure
0xbfffc260 I OmDeferrer>flush 0x9a303f8: a(n) OmDeferrer
0xbfffc280 I [] in OmDeferrer>runMessageProcess 0x9a303f8: a(n) OmDeferrer
0xbfffc2a0 I [] in BlockClosure>newProcess 0x6e12fb8: a(n) BlockClosure

processes at priority 40
Process  0x7f4ae88 priority 40
0xbfff7208 M IdentityDictionary(Dictionary)>at:ifAbsent: 0x6e11fa8: a(n) IdentityDictionary
0xbfff7228 M IdentityDictionary(Dictionary)>at:ifAbsentPut: 0x6e11fa8: a(n) IdentityDictionary
0xbfff7248 M IRBytecodeGenerator>label: 0x6e12050: a(n) IRBytecodeGenerator
0xbfff7264 M IRTranslatorV2>label: 0x6e12118: a(n) IRTranslatorV2
0xbfff7280 M IRTranslatorV2>visitSequence: 0x6e12118: a(n) IRTranslatorV2
0xbfff729c M IRSequence>accept: 0x6e12138: a(n) IRSequence
0xbfff8fa4 M IRTranslatorV2(IRVisitor)>visitNode: 0x6e12118: a(n) IRTranslatorV2
0xbfff8fc0 M [] in IRTranslatorV2(IRVisitor)>visitNodes: 0x6e12118: a(n) IRTranslatorV2
0xbfff8fe4 M SortedCollection(OrderedCollection)>do: 0x6e12248: a(n) SortedCollection
0xbfff9000 M IRTranslatorV2(IRVisitor)>visitNodes: 0x6e12118: a(n) IRTranslatorV2
0xbfff901c M IRTranslatorV2>visitSequences: 0x6e12118: a(n) IRTranslatorV2
0xbfff9038 M IRTranslatorV2>visitMethod: 0x6e12118: a(n) IRTranslatorV2
0xbfff9054 M IRMethod>accept: 0x6e12320: a(n) IRMethod
0xbfff9070 M IRTranslatorV2(IRVisitor)>visitNode: 0x6e12118: a(n) IRTranslatorV2
0xbfff9094 M IRMethod>generateBlock:withScope: 0x6e12320: a(n) IRMethod
0xbfff90b4 M IRMethod>compiledBlock: 0x6e12320: a(n) IRMethod
0xbfff90d4 M OCASTTranslator>translateFullBlock: 0x6e123a8: a(n) OCASTTranslator
0xbfff90f8 M OCASTTranslatorForValue(OCASTTranslator)>visitFullBlockNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff9120 M OCASTTranslatorForValue(OCASTTranslator)>visitBlockNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff913c M RBBlockNode>acceptVisitor: 0x6e12420: a(n) RBBlockNode
0xbfff9158 M OCASTTranslatorForValue(RBProgramNodeVisitor)>visitNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff9174 M OCASTTranslatorForValue(OCASTTranslator)>visitNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff9190 M [] in OCASTTranslatorForValue(OCASTTranslator)>emitMessageNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff91b4 M OrderedCollection>do: 0x6e12480: a(n) OrderedCollection
0xbfff91d0 M OCASTTranslatorForValue(OCASTTranslator)>emitMessageNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff91ec M OCASTTranslatorForValue(OCASTTranslator)>visitMessageNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff9208 M RBMessageNode>acceptVisitor: 0x6e124f8: a(n) RBMessageNode
0xbfff9224 M OCASTTranslatorForValue(RBProgramNodeVisitor)>visitNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff9240 M OCASTTranslatorForValue(OCASTTranslator)>visitNode: 0x6e12450: a(n) OCASTTranslatorForValue
0xbfff925c M [] in OCASTTranslatorForEffect(OCASTTranslator)>emitMessageNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfff9280 M OrderedCollection>do: 0x6e12550: a(n) OrderedCollection
0xbfff929c M OCASTTranslatorForEffect(OCASTTranslator)>emitMessageNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa00c M OCASTTranslatorForEffect>emitMessageNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa028 M OCASTTranslatorForEffect(OCASTTranslator)>visitMessageNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa044 M RBMessageNode>acceptVisitor: 0x6e125c8: a(n) RBMessageNode
0xbfffa060 M OCASTTranslatorForEffect(RBProgramNodeVisitor)>visitNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa07c M OCASTTranslatorForEffect(OCASTTranslator)>visitNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa098 M [] in OCASTTranslatorForEffect>visitSequenceNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa0bc M OrderedCollection>do: 0x6e12668: a(n) OrderedCollection
0xbfffa0d8 M OCASTTranslatorForEffect>visitSequenceNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa0f4 M RBSequenceNode>acceptVisitor: 0x6e126e0: a(n) RBSequenceNode
0xbfffa110 M OCASTTranslatorForEffect(RBProgramNodeVisitor)>visitNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa12c M OCASTTranslatorForEffect(OCASTTranslator)>visitNode: 0x6e12520: a(n) OCASTTranslatorForEffect
0xbfffa148 M OCASTTranslator>visitMethodNode: 0x6e12708: a(n) OCASTTranslator
0xbfffa164 M RBMethodNode>acceptVisitor: 0x6e12780: a(n) RBMethodNode
0xbfffa180 M OCASTTranslator(RBProgramNodeVisitor)>visitNode: 0x6e12708: a(n) OCASTTranslator
0xbfffa19c M OCASTTranslator>visitNode: 0x6e12708: a(n) OCASTTranslator
0xbfffa1bc M RBMethodNode>generateIR 0x6e12780: a(n) RBMethodNode
0xbfffa1d4 M RBMethodNode>generate: 0x6e12780: a(n) RBMethodNode
0xbfffa1f4 M [] in OpalCompiler>compile 0x6e127e8: a(n) OpalCompiler
0xbfffa20c M BlockClosure>on:do: 0x6e12868: a(n) BlockClosure
0xbfffa230 M OpalCompiler>compile 0x6e127e8: a(n) OpalCompiler
0xbfffa250 M AbstractNautilusUI class(Behavior)>recompile:from: 0x7fb08f8: a(n) AbstractNautilusUI class
0xbfffa274 M [] in AbstractNautilusUI class(Behavior)>compileAllFrom: 0x7fb08f8: a(n) AbstractNautilusUI class
0xbfffa29c M Set>do: 0x6e12970: a(n) Set
0xbfffaf34 M AbstractNautilusUI class(Behavior)>compileAllFrom: 0x7fb08f8: a(n) AbstractNautilusUI class
0xbfffaf50 M AbstractNautilusUI class(Class)>compileAllFrom: 0x7fb08f8: a(n) AbstractNautilusUI class
0xbfffaf6c M AbstractNautilusUI class(Behavior)>compileAll 0x7fb08f8: a(n) AbstractNautilusUI class
0xbfffaf8c I AbstractNautilusUI class(Class)>compileAll 0x7fb08f8: a(n) AbstractNautilusUI class
0xbfffafac I AbstractNautilusUI class(Behavior)>recompile 0x7fb08f8: a(n) AbstractNautilusUI class
0xbfffafc4 M [] in SmalltalkImage>recompile 0x74ca9b8: a(n) SmalltalkImage
0xbfffaff8 M [] in OrderedCollection(Collection)>do:displayingProgress:every: 0x6e12aa0: a(n) OrderedCollection
0xbfffb01c M OrderedCollection>do: 0x6e12aa0: a(n) OrderedCollection
0xbfffb054 I [] in OrderedCollection(Collection)>do:displayingProgress:every: 0x6e12aa0: a(n) OrderedCollection
0xbfffb078 I BlockClosure>cull: 0x6e12b40: a(n) BlockClosure
0xbfffb094 M [] in Job>run 0x6e12a58: a(n) Job
0xbfffb0b8 M [] in CurrentJob(DynamicVariable)>value:during: 0x72f6dc0: a(n) CurrentJob
0xbfffb0d8 M BlockClosure>ensure: 0x6e12b80: a(n) BlockClosure
0xbfffb104 I CurrentJob(DynamicVariable)>value:during: 0x72f6dc0: a(n) CurrentJob
0xbfffb12c I CurrentJob class(DynamicVariable class)>value:during: 0x7233b28: a(n) CurrentJob class
0xbfffb14c M [] in Job>run 0x6e12a58: a(n) Job
0xbfffb16c M BlockClosure>ensure: 0x6e12c80: a(n) BlockClosure
0xbfffb190 I Job>run 0x6e12a58: a(n) Job
0xbfffb1b0 I MorphicUIManager(UIManager)>displayProgress:from:to:during: 0x9a2c2d8: a(n) MorphicUIManager
0xbfffb1e0 I ByteString(String)>displayProgressFrom:to:during: 0x748c040: a(n) ByteString
0xbfffb214 I OrderedCollection(Collection)>do:displayingProgress:every: 0x6e12aa0: a(n) OrderedCollection
0xbfffb240 I OrderedCollection(Collection)>do:displayingProgress: 0x6e12aa0: a(n) OrderedCollection
0xbfffb268 I SmalltalkImage>recompile 0x74ca9b8: a(n) SmalltalkImage
0xbfffb288 I OpalCompiler class>recompileAll 0x7310170: a(n) OpalCompiler class




Reply | Threaded
Open this post in threaded view
|

Re: Pharo7 and full block closures

Holger Freyther

> On 22. Sep 2017, at 13:33, Clément Bera <[hidden email]> wrote:


Hi Clement,


> Sista will work for the release of Pharo 7 as it did for Pharo 6 and 6.1 but it won't work every day during the alpha of Pharo 7 and no sane framework developer can guarantee that. Sista does not work currently in Pharo 7 due to some changes breaking the full block closures, I am going to fix it but even then in the incoming months there is a high chance that another change in Pharo 7 breaks it again, so I would never recommend to use it with the alpha.


thank you for your response. I didn't expect it to work (after all you label it "Alpha" and I ran into issues already) but my intention for the mail was a bit different. Let me try to briefly explain my motivation. In my experience:

(1) Software not executed stops to work (or never "worked")
(2) The earlier breakage is detected the less expensive it is to fix.

My assumption is that Opal is part of Pharo and that we look at a regression of the Opal compiler and/or how it interacts with the rest of the image. As it might be easier to understand/fix it now than later I brought it up. From my point of view I wonder if we want to add ~50s to the CI process to execute:

CompilationContext bytecodeBackend: OpalEncoderForSistaV1.
CompilationContext usesFullBlockClosure: true.
OpalCompiler recompileAll.


Is there any value in doing so?


cheers

        holger


PS

(2) The intuitive explanation is that the cost of analysis is a lot lower the earlier the problem is detected. There are fewer potential changes that lead to the breakage and the people involved will remember what/why they did reducing the cost of fixing. Ideally things are found to be broken and fixed before integration.

Maybe an analogy is old-school aviation navigation.. the earlier a mistake is found in navigation the closer to the original course...
Reply | Threaded
Open this post in threaded view
|

Re: Pharo7 and full block closures

Clément Béra
I totally agree with you on this. 

For a while I had a CI job that was trying to execute Sista on the latest version of Pharo and VM, and sent me a mail when something had gone wrong. I disabled it when there was problems on the CI, I will make it work again. This way I am notified and I can update the Sista code as Pharo 7 is developed. That helps a lot.

On the Pharo CI the time to run tests matters hence I will try to find another solution to test full block and the other bytecode set. I did not do that because I hope I can change Pharo to use full block by default soon, but since they're broken...

Regards



On Fri, Sep 22, 2017 at 10:58 AM, Holger Freyther <[hidden email]> wrote:

> On 22. Sep 2017, at 13:33, Clément Bera <[hidden email]> wrote:


Hi Clement,


> Sista will work for the release of Pharo 7 as it did for Pharo 6 and 6.1 but it won't work every day during the alpha of Pharo 7 and no sane framework developer can guarantee that. Sista does not work currently in Pharo 7 due to some changes breaking the full block closures, I am going to fix it but even then in the incoming months there is a high chance that another change in Pharo 7 breaks it again, so I would never recommend to use it with the alpha.


thank you for your response. I didn't expect it to work (after all you label it "Alpha" and I ran into issues already) but my intention for the mail was a bit different. Let me try to briefly explain my motivation. In my experience:

(1) Software not executed stops to work (or never "worked")
(2) The earlier breakage is detected the less expensive it is to fix.

My assumption is that Opal is part of Pharo and that we look at a regression of the Opal compiler and/or how it interacts with the rest of the image. As it might be easier to understand/fix it now than later I brought it up. From my point of view I wonder if we want to add ~50s to the CI process to execute:

CompilationContext bytecodeBackend: OpalEncoderForSistaV1.
CompilationContext usesFullBlockClosure: true.
OpalCompiler recompileAll.


Is there any value in doing so?


cheers

        holger


PS

(2) The intuitive explanation is that the cost of analysis is a lot lower the earlier the problem is detected. There are fewer potential changes that lead to the breakage and the people involved will remember what/why they did reducing the cost of fixing. Ideally things are found to be broken and fixed before integration.

Maybe an analogy is old-school aviation navigation.. the earlier a mistake is found in navigation the closer to the original course...

Reply | Threaded
Open this post in threaded view
|

Re: Pharo7 and full block closures

Stephane Ducasse-3
In reply to this post by Holger Freyther
Hi holger

I like your approach. Tx!

Stef


On Fri, Sep 22, 2017 at 10:58 AM, Holger Freyther <[hidden email]> wrote:

>
>> On 22. Sep 2017, at 13:33, Clément Bera <[hidden email]> wrote:
>
>
> Hi Clement,
>
>
>> Sista will work for the release of Pharo 7 as it did for Pharo 6 and 6.1 but it won't work every day during the alpha of Pharo 7 and no sane framework developer can guarantee that. Sista does not work currently in Pharo 7 due to some changes breaking the full block closures, I am going to fix it but even then in the incoming months there is a high chance that another change in Pharo 7 breaks it again, so I would never recommend to use it with the alpha.
>
>
> thank you for your response. I didn't expect it to work (after all you label it "Alpha" and I ran into issues already) but my intention for the mail was a bit different. Let me try to briefly explain my motivation. In my experience:
>
> (1) Software not executed stops to work (or never "worked")
> (2) The earlier breakage is detected the less expensive it is to fix.
>
> My assumption is that Opal is part of Pharo and that we look at a regression of the Opal compiler and/or how it interacts with the rest of the image. As it might be easier to understand/fix it now than later I brought it up. From my point of view I wonder if we want to add ~50s to the CI process to execute:
>
> CompilationContext bytecodeBackend: OpalEncoderForSistaV1.
> CompilationContext usesFullBlockClosure: true.
> OpalCompiler recompileAll.
>
>
> Is there any value in doing so?
>
>
> cheers
>
>         holger
>
>
> PS
>
> (2) The intuitive explanation is that the cost of analysis is a lot lower the earlier the problem is detected. There are fewer potential changes that lead to the breakage and the people involved will remember what/why they did reducing the cost of fixing. Ideally things are found to be broken and fixed before integration.
>
> Maybe an analogy is old-school aviation navigation.. the earlier a mistake is found in navigation the closer to the original course...

Reply | Threaded
Open this post in threaded view
|

Re: Pharo7 and full block closures

Stephane Ducasse-3
In reply to this post by Clément Béra
Hi clement

let us know how we can help because he all want the new closures.

Stef

On Fri, Sep 22, 2017 at 11:11 AM, Clément Bera <[hidden email]> wrote:

> I totally agree with you on this.
>
> For a while I had a CI job that was trying to execute Sista on the latest
> version of Pharo and VM, and sent me a mail when something had gone wrong. I
> disabled it when there was problems on the CI, I will make it work again.
> This way I am notified and I can update the Sista code as Pharo 7 is
> developed. That helps a lot.
>
> On the Pharo CI the time to run tests matters hence I will try to find
> another solution to test full block and the other bytecode set. I did not do
> that because I hope I can change Pharo to use full block by default soon,
> but since they're broken...
>
> Regards
>
>
>
> On Fri, Sep 22, 2017 at 10:58 AM, Holger Freyther <[hidden email]>
> wrote:
>>
>>
>> > On 22. Sep 2017, at 13:33, Clément Bera <[hidden email]> wrote:
>>
>>
>> Hi Clement,
>>
>>
>> > Sista will work for the release of Pharo 7 as it did for Pharo 6 and 6.1
>> > but it won't work every day during the alpha of Pharo 7 and no sane
>> > framework developer can guarantee that. Sista does not work currently in
>> > Pharo 7 due to some changes breaking the full block closures, I am going to
>> > fix it but even then in the incoming months there is a high chance that
>> > another change in Pharo 7 breaks it again, so I would never recommend to use
>> > it with the alpha.
>>
>>
>> thank you for your response. I didn't expect it to work (after all you
>> label it "Alpha" and I ran into issues already) but my intention for the
>> mail was a bit different. Let me try to briefly explain my motivation. In my
>> experience:
>>
>> (1) Software not executed stops to work (or never "worked")
>> (2) The earlier breakage is detected the less expensive it is to fix.
>>
>> My assumption is that Opal is part of Pharo and that we look at a
>> regression of the Opal compiler and/or how it interacts with the rest of the
>> image. As it might be easier to understand/fix it now than later I brought
>> it up. From my point of view I wonder if we want to add ~50s to the CI
>> process to execute:
>>
>> CompilationContext bytecodeBackend: OpalEncoderForSistaV1.
>> CompilationContext usesFullBlockClosure: true.
>> OpalCompiler recompileAll.
>>
>>
>> Is there any value in doing so?
>>
>>
>> cheers
>>
>>         holger
>>
>>
>> PS
>>
>> (2) The intuitive explanation is that the cost of analysis is a lot lower
>> the earlier the problem is detected. There are fewer potential changes that
>> lead to the breakage and the people involved will remember what/why they did
>> reducing the cost of fixing. Ideally things are found to be broken and fixed
>> before integration.
>>
>> Maybe an analogy is old-school aviation navigation.. the earlier a mistake
>> is found in navigation the closer to the original course...
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Pharo7 and full block closures

Clément Béra
Well we need to use them but the integration process is difficult to deal with: we need to change the bootstrap to cross compile to the other bytecode set. I need to have some time to focus on it amd I need the help of someone understanding the bootstrap like Guille

On Sep 22, 2017 18:31, "Stephane Ducasse" <[hidden email]> wrote:
Hi clement

let us know how we can help because he all want the new closures.

Stef

On Fri, Sep 22, 2017 at 11:11 AM, Clément Bera <[hidden email]> wrote:
> I totally agree with you on this.
>
> For a while I had a CI job that was trying to execute Sista on the latest
> version of Pharo and VM, and sent me a mail when something had gone wrong. I
> disabled it when there was problems on the CI, I will make it work again.
> This way I am notified and I can update the Sista code as Pharo 7 is
> developed. That helps a lot.
>
> On the Pharo CI the time to run tests matters hence I will try to find
> another solution to test full block and the other bytecode set. I did not do
> that because I hope I can change Pharo to use full block by default soon,
> but since they're broken...
>
> Regards
>
>
>
> On Fri, Sep 22, 2017 at 10:58 AM, Holger Freyther <[hidden email]>
> wrote:
>>
>>
>> > On 22. Sep 2017, at 13:33, Clément Bera <[hidden email]> wrote:
>>
>>
>> Hi Clement,
>>
>>
>> > Sista will work for the release of Pharo 7 as it did for Pharo 6 and 6.1
>> > but it won't work every day during the alpha of Pharo 7 and no sane
>> > framework developer can guarantee that. Sista does not work currently in
>> > Pharo 7 due to some changes breaking the full block closures, I am going to
>> > fix it but even then in the incoming months there is a high chance that
>> > another change in Pharo 7 breaks it again, so I would never recommend to use
>> > it with the alpha.
>>
>>
>> thank you for your response. I didn't expect it to work (after all you
>> label it "Alpha" and I ran into issues already) but my intention for the
>> mail was a bit different. Let me try to briefly explain my motivation. In my
>> experience:
>>
>> (1) Software not executed stops to work (or never "worked")
>> (2) The earlier breakage is detected the less expensive it is to fix.
>>
>> My assumption is that Opal is part of Pharo and that we look at a
>> regression of the Opal compiler and/or how it interacts with the rest of the
>> image. As it might be easier to understand/fix it now than later I brought
>> it up. From my point of view I wonder if we want to add ~50s to the CI
>> process to execute:
>>
>> CompilationContext bytecodeBackend: OpalEncoderForSistaV1.
>> CompilationContext usesFullBlockClosure: true.
>> OpalCompiler recompileAll.
>>
>>
>> Is there any value in doing so?
>>
>>
>> cheers
>>
>>         holger
>>
>>
>> PS
>>
>> (2) The intuitive explanation is that the cost of analysis is a lot lower
>> the earlier the problem is detected. There are fewer potential changes that
>> lead to the breakage and the people involved will remember what/why they did
>> reducing the cost of fixing. Ideally things are found to be broken and fixed
>> before integration.
>>
>> Maybe an analogy is old-school aviation navigation.. the earlier a mistake
>> is found in navigation the closer to the original course...
>
>

Reply | Threaded
Open this post in threaded view
|

Re: Pharo7 and full block closures

tesonep@gmail.com
Hi Clément, 
   If you need help with the CI, I can also help you. We can create it as a another parallel stage in the PR validation. So once it is stable we can detect asap changes that break it. 

Cheers, 

On 22 Sep 2017 18:45, "Clément Bera" <[hidden email]> wrote:
Well we need to use them but the integration process is difficult to deal with: we need to change the bootstrap to cross compile to the other bytecode set. I need to have some time to focus on it amd I need the help of someone understanding the bootstrap like Guille

On Sep 22, 2017 18:31, "Stephane Ducasse" <[hidden email]> wrote:
Hi clement

let us know how we can help because he all want the new closures.

Stef

On Fri, Sep 22, 2017 at 11:11 AM, Clément Bera <[hidden email]> wrote:
> I totally agree with you on this.
>
> For a while I had a CI job that was trying to execute Sista on the latest
> version of Pharo and VM, and sent me a mail when something had gone wrong. I
> disabled it when there was problems on the CI, I will make it work again.
> This way I am notified and I can update the Sista code as Pharo 7 is
> developed. That helps a lot.
>
> On the Pharo CI the time to run tests matters hence I will try to find
> another solution to test full block and the other bytecode set. I did not do
> that because I hope I can change Pharo to use full block by default soon,
> but since they're broken...
>
> Regards
>
>
>
> On Fri, Sep 22, 2017 at 10:58 AM, Holger Freyther <[hidden email]>
> wrote:
>>
>>
>> > On 22. Sep 2017, at 13:33, Clément Bera <[hidden email]> wrote:
>>
>>
>> Hi Clement,
>>
>>
>> > Sista will work for the release of Pharo 7 as it did for Pharo 6 and 6.1
>> > but it won't work every day during the alpha of Pharo 7 and no sane
>> > framework developer can guarantee that. Sista does not work currently in
>> > Pharo 7 due to some changes breaking the full block closures, I am going to
>> > fix it but even then in the incoming months there is a high chance that
>> > another change in Pharo 7 breaks it again, so I would never recommend to use
>> > it with the alpha.
>>
>>
>> thank you for your response. I didn't expect it to work (after all you
>> label it "Alpha" and I ran into issues already) but my intention for the
>> mail was a bit different. Let me try to briefly explain my motivation. In my
>> experience:
>>
>> (1) Software not executed stops to work (or never "worked")
>> (2) The earlier breakage is detected the less expensive it is to fix.
>>
>> My assumption is that Opal is part of Pharo and that we look at a
>> regression of the Opal compiler and/or how it interacts with the rest of the
>> image. As it might be easier to understand/fix it now than later I brought
>> it up. From my point of view I wonder if we want to add ~50s to the CI
>> process to execute:
>>
>> CompilationContext bytecodeBackend: OpalEncoderForSistaV1.
>> CompilationContext usesFullBlockClosure: true.
>> OpalCompiler recompileAll.
>>
>>
>> Is there any value in doing so?
>>
>>
>> cheers
>>
>>         holger
>>
>>
>> PS
>>
>> (2) The intuitive explanation is that the cost of analysis is a lot lower
>> the earlier the problem is detected. There are fewer potential changes that
>> lead to the breakage and the people involved will remember what/why they did
>> reducing the cost of fixing. Ideally things are found to be broken and fixed
>> before integration.
>>
>> Maybe an analogy is old-school aviation navigation.. the earlier a mistake
>> is found in navigation the closer to the original course...
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Pharo7 and full block closures

Clément Béra
Yeah we may need to do that as a transition to move them to production. Let's do that the first week of october Pablo

On Sep 22, 2017 18:59, "[hidden email]" <[hidden email]> wrote:
Hi Clément, 
   If you need help with the CI, I can also help you. We can create it as a another parallel stage in the PR validation. So once it is stable we can detect asap changes that break it. 

Cheers, 


On 22 Sep 2017 18:45, "Clément Bera" <[hidden email]> wrote:
Well we need to use them but the integration process is difficult to deal with: we need to change the bootstrap to cross compile to the other bytecode set. I need to have some time to focus on it amd I need the help of someone understanding the bootstrap like Guille

On Sep 22, 2017 18:31, "Stephane Ducasse" <[hidden email]> wrote:
Hi clement

let us know how we can help because he all want the new closures.

Stef

On Fri, Sep 22, 2017 at 11:11 AM, Clément Bera <[hidden email]> wrote:
> I totally agree with you on this.
>
> For a while I had a CI job that was trying to execute Sista on the latest
> version of Pharo and VM, and sent me a mail when something had gone wrong. I
> disabled it when there was problems on the CI, I will make it work again.
> This way I am notified and I can update the Sista code as Pharo 7 is
> developed. That helps a lot.
>
> On the Pharo CI the time to run tests matters hence I will try to find
> another solution to test full block and the other bytecode set. I did not do
> that because I hope I can change Pharo to use full block by default soon,
> but since they're broken...
>
> Regards
>
>
>
> On Fri, Sep 22, 2017 at 10:58 AM, Holger Freyther <[hidden email]>
> wrote:
>>
>>
>> > On 22. Sep 2017, at 13:33, Clément Bera <[hidden email]> wrote:
>>
>>
>> Hi Clement,
>>
>>
>> > Sista will work for the release of Pharo 7 as it did for Pharo 6 and 6.1
>> > but it won't work every day during the alpha of Pharo 7 and no sane
>> > framework developer can guarantee that. Sista does not work currently in
>> > Pharo 7 due to some changes breaking the full block closures, I am going to
>> > fix it but even then in the incoming months there is a high chance that
>> > another change in Pharo 7 breaks it again, so I would never recommend to use
>> > it with the alpha.
>>
>>
>> thank you for your response. I didn't expect it to work (after all you
>> label it "Alpha" and I ran into issues already) but my intention for the
>> mail was a bit different. Let me try to briefly explain my motivation. In my
>> experience:
>>
>> (1) Software not executed stops to work (or never "worked")
>> (2) The earlier breakage is detected the less expensive it is to fix.
>>
>> My assumption is that Opal is part of Pharo and that we look at a
>> regression of the Opal compiler and/or how it interacts with the rest of the
>> image. As it might be easier to understand/fix it now than later I brought
>> it up. From my point of view I wonder if we want to add ~50s to the CI
>> process to execute:
>>
>> CompilationContext bytecodeBackend: OpalEncoderForSistaV1.
>> CompilationContext usesFullBlockClosure: true.
>> OpalCompiler recompileAll.
>>
>>
>> Is there any value in doing so?
>>
>>
>> cheers
>>
>>         holger
>>
>>
>> PS
>>
>> (2) The intuitive explanation is that the cost of analysis is a lot lower
>> the earlier the problem is detected. There are fewer potential changes that
>> lead to the breakage and the people involved will remember what/why they did
>> reducing the cost of fixing. Ideally things are found to be broken and fixed
>> before integration.
>>
>> Maybe an analogy is old-school aviation navigation.. the earlier a mistake
>> is found in navigation the closer to the original course...
>
>



Reply | Threaded
Open this post in threaded view
|

Re: Pharo7 and full block closures

Stephane Ducasse-3
In reply to this post by tesonep@gmail.com
good idea!
Tx for the good spirit!
I like to work with smart and nice people like you guys.
I feel lucky.

On Fri, Sep 22, 2017 at 6:59 PM, [hidden email] <[hidden email]> wrote:

> Hi Clément,
>    If you need help with the CI, I can also help you. We can create it as a
> another parallel stage in the PR validation. So once it is stable we can
> detect asap changes that break it.
>
> Cheers,
>
>
> On 22 Sep 2017 18:45, "Clément Bera" <[hidden email]> wrote:
>
> Well we need to use them but the integration process is difficult to deal
> with: we need to change the bootstrap to cross compile to the other bytecode
> set. I need to have some time to focus on it amd I need the help of someone
> understanding the bootstrap like Guille
>
> On Sep 22, 2017 18:31, "Stephane Ducasse" <[hidden email]> wrote:
>>
>> Hi clement
>>
>> let us know how we can help because he all want the new closures.
>>
>> Stef
>>
>> On Fri, Sep 22, 2017 at 11:11 AM, Clément Bera <[hidden email]>
>> wrote:
>> > I totally agree with you on this.
>> >
>> > For a while I had a CI job that was trying to execute Sista on the
>> > latest
>> > version of Pharo and VM, and sent me a mail when something had gone
>> > wrong. I
>> > disabled it when there was problems on the CI, I will make it work
>> > again.
>> > This way I am notified and I can update the Sista code as Pharo 7 is
>> > developed. That helps a lot.
>> >
>> > On the Pharo CI the time to run tests matters hence I will try to find
>> > another solution to test full block and the other bytecode set. I did
>> > not do
>> > that because I hope I can change Pharo to use full block by default
>> > soon,
>> > but since they're broken...
>> >
>> > Regards
>> >
>> >
>> >
>> > On Fri, Sep 22, 2017 at 10:58 AM, Holger Freyther <[hidden email]>
>> > wrote:
>> >>
>> >>
>> >> > On 22. Sep 2017, at 13:33, Clément Bera <[hidden email]>
>> >> > wrote:
>> >>
>> >>
>> >> Hi Clement,
>> >>
>> >>
>> >> > Sista will work for the release of Pharo 7 as it did for Pharo 6 and
>> >> > 6.1
>> >> > but it won't work every day during the alpha of Pharo 7 and no sane
>> >> > framework developer can guarantee that. Sista does not work currently
>> >> > in
>> >> > Pharo 7 due to some changes breaking the full block closures, I am
>> >> > going to
>> >> > fix it but even then in the incoming months there is a high chance
>> >> > that
>> >> > another change in Pharo 7 breaks it again, so I would never recommend
>> >> > to use
>> >> > it with the alpha.
>> >>
>> >>
>> >> thank you for your response. I didn't expect it to work (after all you
>> >> label it "Alpha" and I ran into issues already) but my intention for
>> >> the
>> >> mail was a bit different. Let me try to briefly explain my motivation.
>> >> In my
>> >> experience:
>> >>
>> >> (1) Software not executed stops to work (or never "worked")
>> >> (2) The earlier breakage is detected the less expensive it is to fix.
>> >>
>> >> My assumption is that Opal is part of Pharo and that we look at a
>> >> regression of the Opal compiler and/or how it interacts with the rest
>> >> of the
>> >> image. As it might be easier to understand/fix it now than later I
>> >> brought
>> >> it up. From my point of view I wonder if we want to add ~50s to the CI
>> >> process to execute:
>> >>
>> >> CompilationContext bytecodeBackend: OpalEncoderForSistaV1.
>> >> CompilationContext usesFullBlockClosure: true.
>> >> OpalCompiler recompileAll.
>> >>
>> >>
>> >> Is there any value in doing so?
>> >>
>> >>
>> >> cheers
>> >>
>> >>         holger
>> >>
>> >>
>> >> PS
>> >>
>> >> (2) The intuitive explanation is that the cost of analysis is a lot
>> >> lower
>> >> the earlier the problem is detected. There are fewer potential changes
>> >> that
>> >> lead to the breakage and the people involved will remember what/why
>> >> they did
>> >> reducing the cost of fixing. Ideally things are found to be broken and
>> >> fixed
>> >> before integration.
>> >>
>> >> Maybe an analogy is old-school aviation navigation.. the earlier a
>> >> mistake
>> >> is found in navigation the closer to the original course...
>> >
>> >
>>
>