Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
October 2014
- 94 participants
- 1300 messages
Re: [Pharo-dev] Run Spur run!!
by Thierry Goubier
Le 24/10/2014 19:07, Eliot Miranda a écrit :
>
>
> On Fri, Oct 24, 2014 at 7:34 AM, Esteban Lorenzano <estebanlm(a)gmail.com
> <mailto:estebanlm@gmail.com>> wrote:
>
>
>> On 24 Oct 2014, at 16:21, Thierry Goubier
>> <thierry.goubier(a)gmail.com <mailto:thierry.goubier@gmail.com>> wrote:
>>
>>
>>
>> 2014-10-24 15:50 GMT+02:00 Clément Bera <bera.clement(a)gmail.com
>> <mailto:bera.clement@gmail.com>>:
>>
>> The current x2 speed boost is due only to spur, not to sista.
>> Sista will provide additional performance, but we have still
>> things to do before production.
>>
>> The performance gain reported is due to (from most important
>> to less important):
>> - the new GC has less overhead. 30% of the execution time used
>> to be spent in the GC.
>> - the new object format speeds up some VM internal caches
>> (especially inline caches for message sends due to an
>> indirection for object classes with a class table).
>> - the new object format allows some C code to be converted
>> into machine code routines, including block creation, context
>> creation, primitive #at:put:, which is faster because
>> switching from jitted code to C then back to jitted code
>> generate a little overhead.
>> - characters are now immediate objects, which speeds up String
>> accessing.
>> - the new object format has a larger hash which speeds up big
>> hashed collections such as big sets and dictionaries.
>> - become is faster.
>>
>>
>> All this is really cool :) And if I remember well, there is 64
>> bitness coming as well.
>>
>> Will Spur also cover ARM ?
>
> Spur is an object format, it does not have anything to do with
> underlying architecture (well, at least in theory⦠Eliot should be
> able to say more on this).
> Cog, in the other side is a jitter, and it has everything to do with
> the architecture so is difficult to have it running on ARM (but
> there is work on that direction, so we hope it will be there
> eventually).
>
> It looks like there is a misunderstanding (probably not you,
> Thierry, but since Iâve seen it time to time, I take the chance to
> clarify): Spur is not a replacement for Cog, both are orthogonal (in
> fact, Spur runs in Stack vm too).
> Real new VM is not âSpurâ vm, is "Cog+Spur" vm.
>
>
> +1. Spur changes the object representation, so it has a new heap
> layout, a new layout for objects, and a new garbage collector. Because
> the object format is simpler it allows the Cog JIT to generate machine
> code versions of more operations, in particular basicNew, basicNew: and
> closure and context creation. This is the main reason for the speedups
> in Cog+Spur. As far as the Stack VM goes if you see speedups for
> Stack+Spur vs Stack+V3 that's all due to the Spur object representation
> & GC, because there's no JIT.
>
> Now at the moment the Cog JIT only has an x86 back-end in production.
> Tim Rowledge is working on finishing the ARM back end started by Lars
> Wassermann in the GSoC a few years ago. So soonish we should be able to
> have Cog+V3 or Cog+Spur on e.g. Android.
>
> As part of 64-bit Spur I will be doing a back end for x86-64.
Which is then a 64bits Spur+Cog+Sista, right?
> And Doug McPherson is also in the mix, having written the ARM version of
> the new FFI plugin, and is going to be building Stack ARM VMs and soon
> enough Cog ARM VMs.
Thanks for all those news, this is really great.
Thierry
Oct. 24, 2014
Re: [Pharo-dev] Run Spur run!!
by Eliot Miranda
On Fri, Oct 24, 2014 at 7:34 AM, Esteban Lorenzano <estebanlm(a)gmail.com>
wrote:
>
> On 24 Oct 2014, at 16:21, Thierry Goubier <thierry.goubier(a)gmail.com>
> wrote:
>
>
>
> 2014-10-24 15:50 GMT+02:00 Clément Bera <bera.clement(a)gmail.com>:
>
>> The current x2 speed boost is due only to spur, not to sista. Sista will
>> provide additional performance, but we have still things to do before
>> production.
>>
>> The performance gain reported is due to (from most important to less
>> important):
>> - the new GC has less overhead. 30% of the execution time used to be
>> spent in the GC.
>> - the new object format speeds up some VM internal caches (especially
>> inline caches for message sends due to an indirection for object classes
>> with a class table).
>> - the new object format allows some C code to be converted into machine
>> code routines, including block creation, context creation, primitive
>> #at:put:, which is faster because switching from jitted code to C then back
>> to jitted code generate a little overhead.
>> - characters are now immediate objects, which speeds up String accessing.
>> - the new object format has a larger hash which speeds up big hashed
>> collections such as big sets and dictionaries.
>> - become is faster.
>>
>>
>
> All this is really cool :) And if I remember well, there is 64 bitness
> coming as well.
>
> Will Spur also cover ARM ?
>
>
> Spur is an object format, it does not have anything to do with underlying
> architecture (well, at least in theory⦠Eliot should be able to say more on
> this).
> Cog, in the other side is a jitter, and it has everything to do with the
> architecture so is difficult to have it running on ARM (but there is work
> on that direction, so we hope it will be there eventually).
>
> It looks like there is a misunderstanding (probably not you, Thierry, but
> since Iâve seen it time to time, I take the chance to clarify): Spur is not
> a replacement for Cog, both are orthogonal (in fact, Spur runs in Stack vm
> too).
> Real new VM is not âSpurâ vm, is "Cog+Spur" vm.
>
+1. Spur changes the object representation, so it has a new heap layout, a
new layout for objects, and a new garbage collector. Because the object
format is simpler it allows the Cog JIT to generate machine code versions
of more operations, in particular basicNew, basicNew: and closure and
context creation. This is the main reason for the speedups in Cog+Spur.
As far as the Stack VM goes if you see speedups for Stack+Spur vs Stack+V3
that's all due to the Spur object representation & GC, because there's no
JIT.
Now at the moment the Cog JIT only has an x86 back-end in production. Tim
Rowledge is working on finishing the ARM back end started by Lars
Wassermann in the GSoC a few years ago. So soonish we should be able to
have Cog+V3 or Cog+Spur on e.g. Android.
As part of 64-bit Spur I will be doing a back end for x86-64.
And Doug McPherson is also in the mix, having written the ARM version of
the new FFI plugin, and is going to be building Stack ARM VMs and soon
enough Cog ARM VMs.
> cheers,
> Esteban
>
>
> Thierry
>
>
>>
>> 2014-10-24 15:20 GMT+02:00 kilon alios <kilon.alios(a)gmail.com>:
>>
>>> thanks max, i completely forgotten about esug videos, looks like i found
>>> what to watch during the weekend :D
>>>
>>> On Fri, Oct 24, 2014 at 4:12 PM, Max Leske <maxleske(a)gmail.com> wrote:
>>>
>>>>
>>>> On 24.10.2014, at 15:06, kilon alios <kilon.alios(a)gmail.com> wrote:
>>>>
>>>> very nice
>>>>
>>>> so any more information to this, how exactly this optimization works
>>>> and which kind of data will benefit from this ?
>>>>
>>>>
>>>> Clémentâs byte code set talk at ESUG:
>>>> http://www.youtube.com/watch?v=e9J362QHwSA&index=64&list=PLJ5nSnWzQXi_6yyRL…
>>>> Clémentâs Sista talk at ESUG (2 parts):
>>>>
>>>> http://www.youtube.com/watch?v=X4E_FoLysJg&list=PLJ5nSnWzQXi_6yyRLsMMBqG8Yl…
>>>>
>>>> http://www.youtube.com/watch?v=gZOk3qojoVE&list=PLJ5nSnWzQXi_6yyRLsMMBqG8Yl…
>>>>
>>>> Eliotâs Spur talk at ESUG (3 parts):
>>>>
>>>> http://www.youtube.com/watch?v=k0nBNS1aHZ4&index=49&list=PLJ5nSnWzQXi_6yyRL…
>>>>
>>>> http://www.youtube.com/watch?v=sn3irBZE7g4&index=48&list=PLJ5nSnWzQXi_6yyRL…
>>>>
>>>> http://www.youtube.com/watch?v=1Vg0iFeg_pA&list=PLJ5nSnWzQXi_6yyRLsMMBqG8Yl…
>>>>
>>>>
>>>> On Fri, Oct 24, 2014 at 3:47 PM, Sebastian Sastre <
>>>> sebastian(a)flowingconcept.com> wrote:
>>>>
>>>>> remarkable!!!
>>>>>
>>>>> congratulations for the impressive results
>>>>>
>>>>> thanks for sharing!
>>>>>
>>>>> sebastian
>>>>>
>>>>> o/
>>>>>
>>>>> > On 23/10/2014, at 17:40, Max Leske <maxleske(a)gmail.com> wrote:
>>>>> >
>>>>> > For those of you who missed this on IRC:
>>>>> >
>>>>> > henriksp: estebanlm: Care to run a small bench Cog vs Spur for me?
>>>>> > [3:32pm] henriksp: int := ZnUTF8Encoder new.
>>>>> > [3:32pm] henriksp: [int decodeBytes:#[67 97 115 104 44 32 108 105
>>>>> 107 101 32 226 130 172 44 32 105 115 32 107 105 110 103 0]] bench.
>>>>> > [3:32pm] henriksp: had a 16x speedup with assembly implementation vs
>>>>> Cog, if it's 8x vs Spur, that's just really impressive
>>>>> > [3:44pm] Craig left the chat room. (Quit: Leaving.)
>>>>> > [3:53pm] Craig joined the chat room.
>>>>> > [4:08pm] VitamineD joined the chat room.
>>>>> > [4:20pm] estebanlm: checking
>>>>> > [4:21pm] estebanlm: Cog: 167,000 per second.
>>>>> > [4:22pm] estebanlm: Cog[Spur]: 289,000 per second.
>>>>> > [4:23pm] estebanlm: henriksp: ping
>>>>> > [4:33pm] tinchodias left the chat room. (Ping timeout: 245 seconds)
>>>>> > [4:33pm] tinchodias joined the chat room.
>>>>> > [4:34pm] henriksp: 70% more work done, nice!
>>>>> > [5:09pm]
>>>>> >
>>>>> >
>>>>> > Yay! :)
>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>
>
--
best,
Eliot
Oct. 24, 2014
Re: [Pharo-dev] Monticello on local network server
by Sven Van Caekenberghe
Dario,
It is a bit more complicated than that. For a repository, the HTTP server needs to accept PUT requests, these are used when saving.
If you want to know the exact protocol (actually just 3 operations, GET repo listing, GET mcz, PUT mcz), you can study ZnMonticelloServerDelegate. Have a look at the class comment on how to set up a server inside Pharo itself.
I know that it is possible to setup a local repo using some classic servers, but I have never done it. Maybe other people can help.
Why do you need it ?
SmalltalkHub is free and has private repos I believe. Using filetree and git is also an option. You can even save to a shared volume, even cloud drives.
Sven
PS: Why are you still using 1.4 ?
> On 24 Oct 2014, at 17:15, Dario Trussardi <dario.trussardi(a)tiscali.it> wrote:
>
> Hi,
>
> i work with Pharo 1.4.
>
> I need to manage a packages on a local server with Monticello http repository.
>
> I configured the Monticello repository with:
>
> MCHttpRepository
> location: '
> http://www.server1.com/RepositoryDTR/'
>
> user: ''
> password: ''
>
>
>
> And configured the local DNS to redirect the request on the IP server
>
> and configured the lighttpd on the server to redirect the /RepositoryDTR/ path on the specific server path.
>
> Now when i open the repository with Monticello i can see the hold *.mcz package into server 1 /RepositoryDTR/ path
>
>
> I found the error:
>
> ZnHttpUnsuccessful: 404 Not Found
>
> when i save, with Monticello browser, a new package version on the server.
>
>
> I need to do some initialization before use a remote http ?
>
>
> Thanks for any considerations,
>
> Dario
>
>
> This is the stack relative of the error.
>
> VM: Mac OS - intel - 1075 - CoInterpreter VMMaker-oscog-EstebanLorenzano.161 uuid: 8e0c22c3-b48d-4d8d-a7f9-8a75dc246f28 Jul 18 2012, StackToRegisterMappingCogit VMMaker-oscog-EstebanLorenzano.161 uuid: 8e0c22c3-b48d-4d8d-a7f9-8a75dc246f28 Jul 18 2012, https://git.gitorious.org/cogvm/blessed.git Commit: 5151310c41b08f55b70e9c6250711cb1f3672ce7 Date: 2012-07-18 14:06:15 +0200 By: Camillo Bruni <camillobruni(a)gmail.com>
> Image: Pharo1.4 [Latest update: #14445]
>
>
>
> ZnClient>>handleResponse
>
> Receiver: a ZnClient
>
> Arguments and temporary variables:
>
>
>
> Receiver's instance variables:
>
> request: a ZnRequest(PUT /RepositoryDTR/DtrLogin-DTR.417.mcz)
>
> response: a ZnResponse(404 Not Found text/html 345B)
>
> connection: nil
>
> lastUsed: nil
>
> state: #closed
>
> options: a Dictionary(#enforceAcceptContentType->true #enforceHttpSuccess->true...etc...
>
> session: nil
>
> log: a ZnLogSupport
>
>
>
> ZnClient>>executeWithRedirectsRemaining:
>
> Receiver: a ZnClient
>
> Arguments and temporary variables:
>
> redirectCount: 3
>
> Receiver's instance variables:
>
> request: a ZnRequest(PUT /RepositoryDTR/DtrLogin-DTR.417.mcz)
>
> response: a ZnResponse(404 Not Found text/html 345B)
>
> connection: nil
>
> lastUsed: nil
>
> state: #closed
>
> options: a Dictionary(#enforceAcceptContentType->true #enforceHttpSuccess->true...etc...
>
> session: nil
>
> log: a ZnLogSupport
>
>
>
> [self executeWithRedirectsRemaining: self maxNumberOfRedirects] in ZnClient>>executeWithRetriesRemaining:
>
> Receiver: a ZnClient
>
> Arguments and temporary variables:
>
>
>
> Receiver's instance variables:
>
> request: a ZnRequest(PUT /RepositoryDTR/DtrLogin-DTR.417.mcz)
>
> response: a ZnResponse(404 Not Found text/html 345B)
>
> connection: nil
>
> lastUsed: nil
>
> state: #closed
>
> options: a Dictionary(#enforceAcceptContentType->true #enforceHttpSuccess->true...etc...
>
> session: nil
>
> log: a ZnLogSupport
>
>
>
> BlockClosure>>on:do:
>
> Receiver: [self executeWithRedirectsRemaining: self maxNumberOfRedirects]
>
> Arguments and temporary variables:
>
> exception: Exception
>
> handlerAction: [:exception | retryCount > 0
>
> ifTrue: [self handleRetry; execut...etc...
>
> handlerActive: false
>
> Receiver's instance variables:
>
> outerContext: ZnClient>>executeWithRetriesRemaining:
>
> startpc: 49
>
> numArgs: 0
>
>
>
> ZnClient>>executeWithRetriesRemaining:
>
> Receiver: a ZnClient
>
> Arguments and temporary variables:
>
> retryCount: 0
>
> Receiver's instance variables:
>
> request: a ZnRequest(PUT /RepositoryDTR/DtrLogin-DTR.417.mcz)
>
> response: a ZnResponse(404 Not Found text/html 345B)
>
> connection: nil
>
> lastUsed: nil
>
> state: #closed
>
> options: a Dictionary(#enforceAcceptContentType->true #enforceHttpSuccess->true...etc...
>
> session: nil
>
> log: a ZnLogSupport
>
>
>
> [:exception | retryCount > 0
>
> ifTrue: [self handleRetry; executeWithRetriesRemaining: retryCount - 1]
>
> ifFalse: [exception pass]] in ZnClient>>executeWithRetriesRemaining:
>
> Receiver: a ZnClient
>
> Arguments and temporary variables:
>
> retryCount: HTTPProgress: Connecting to www.server1.com
>
> exception: 1
>
> Receiver's instance variables:
>
> request: a ZnRequest(PUT /RepositoryDTR/DtrLogin-DTR.417.mcz)
>
> response: a ZnResponse(404 Not Found text/html 345B)
>
> connection: nil
>
> lastUsed: nil
>
> state: #closed
>
> options: a Dictionary(#enforceAcceptContentType->true #enforceHttpSuccess->true...etc...
>
> session: nil
>
> log: a ZnLogSupport
>
Oct. 24, 2014
Re: [Pharo-dev] Playground/Rubric bracket highlighting in the System Browser
by Peter Uhnák
What is the name of the setting? I didn't find any that would change that.
I tried it also with fresh image - should it work out of the box?
Peter
On Fri, Oct 24, 2014 at 1:55 PM, stepharo <stepharo(a)free.fr> wrote:
>
> Hi!
>>
>> Playground has a very nice feature that it highlights matching bracket. I
>> guess Rubric does it.
>>
>
> The default editor does it too.
> if you go at the end of the
> [ ]
> ^
> you get the
> first one in bold
> check also the settings
>
> Stef
>
> Is this something that is planned to be implemented into the System
>> Browser editor? That would probably mean replacing the PluggableTextMorph,
>> but I don't know if there are any problems with doing so.
>>
>> Also is there a keyboard shortcut for jumping to the matching
>> brace/bracket?
>>
>> Peter
>>
>
>
>
Oct. 24, 2014
Re: [Pharo-dev] Take care with Package renaming in Pharo 3/4
by Torsten Bergmann
stepharo wrote:
> Are you sure that the class is not there because it happens to me and it
> was that the class was packaged elsewere.
and
Esteban wrote:
>try
> RPackageOrganizer default initializeFromMC.
>
>(anyway is a bug, but well⦠at least you have a workaround to not lose your changes)
No, nothing helped. Try yourself:
Pharo4.0 Latest update: #40324:
- create a package "Foobaz"
- create a class "Bar" in it
- now rename the package "FooBaz" (same name but one uppercase letter in it)
=> the package is not there anymore, also the class "Bar" is gone
according to change sorter the package was unloaded!
Running Estebans Expression does not help, you could also not open a browser on the class Bar
Bye
T.
Oct. 24, 2014
Monticello on local network server
by Dario Trussardi
Hi,
i work with Pharo 1.4.
I need to manage a packages on a local server with Monticello http repository.
I configured the Monticello repository with:
MCHttpRepository
location: 'http://www.server1.com/RepositoryDTR/'
user: ''
password: ''
And configured the local DNS to redirect the request on the IP server
and configured the lighttpd on the server to redirect the /RepositoryDTR/ path on the specific server path.
Now when i open the repository with Monticello i can see the hold *.mcz package into server 1 /RepositoryDTR/ path
I found the error:
ZnHttpUnsuccessful: 404 Not Found
when i save, with Monticello browser, a new package version on the server.
I need to do some initialization before use a remote http ?
Thanks for any considerations,
Dario
This is the stack relative of the error.
VM: Mac OS - intel - 1075 - CoInterpreter VMMaker-oscog-EstebanLorenzano.161 uuid: 8e0c22c3-b48d-4d8d-a7f9-8a75dc246f28 Jul 18 2012, StackToRegisterMappingCogit VMMaker-oscog-EstebanLorenzano.161 uuid: 8e0c22c3-b48d-4d8d-a7f9-8a75dc246f28 Jul 18 2012, https://git.gitorious.org/cogvm/blessed.git Commit: 5151310c41b08f55b70e9c6250711cb1f3672ce7 Date: 2012-07-18 14:06:15 +0200 By: Camillo Bruni <camillobruni(a)gmail.com>
Image: Pharo1.4 [Latest update: #14445]
ZnClient>>handleResponse
Receiver: a ZnClient
Arguments and temporary variables:
Receiver's instance variables:
request: a ZnRequest(PUT /RepositoryDTR/DtrLogin-DTR.417.mcz)
response: a ZnResponse(404 Not Found text/html 345B)
connection: nil
lastUsed: nil
state: #closed
options: a Dictionary(#enforceAcceptContentType->true #enforceHttpSuccess->true...etc...
session: nil
log: a ZnLogSupport
ZnClient>>executeWithRedirectsRemaining:
Receiver: a ZnClient
Arguments and temporary variables:
redirectCount: 3
Receiver's instance variables:
request: a ZnRequest(PUT /RepositoryDTR/DtrLogin-DTR.417.mcz)
response: a ZnResponse(404 Not Found text/html 345B)
connection: nil
lastUsed: nil
state: #closed
options: a Dictionary(#enforceAcceptContentType->true #enforceHttpSuccess->true...etc...
session: nil
log: a ZnLogSupport
[self executeWithRedirectsRemaining: self maxNumberOfRedirects] in ZnClient>>executeWithRetriesRemaining:
Receiver: a ZnClient
Arguments and temporary variables:
Receiver's instance variables:
request: a ZnRequest(PUT /RepositoryDTR/DtrLogin-DTR.417.mcz)
response: a ZnResponse(404 Not Found text/html 345B)
connection: nil
lastUsed: nil
state: #closed
options: a Dictionary(#enforceAcceptContentType->true #enforceHttpSuccess->true...etc...
session: nil
log: a ZnLogSupport
BlockClosure>>on:do:
Receiver: [self executeWithRedirectsRemaining: self maxNumberOfRedirects]
Arguments and temporary variables:
exception: Exception
handlerAction: [:exception | retryCount > 0
ifTrue: [self handleRetry; execut...etc...
handlerActive: false
Receiver's instance variables:
outerContext: ZnClient>>executeWithRetriesRemaining:
startpc: 49
numArgs: 0
ZnClient>>executeWithRetriesRemaining:
Receiver: a ZnClient
Arguments and temporary variables:
retryCount: 0
Receiver's instance variables:
request: a ZnRequest(PUT /RepositoryDTR/DtrLogin-DTR.417.mcz)
response: a ZnResponse(404 Not Found text/html 345B)
connection: nil
lastUsed: nil
state: #closed
options: a Dictionary(#enforceAcceptContentType->true #enforceHttpSuccess->true...etc...
session: nil
log: a ZnLogSupport
[:exception | retryCount > 0
ifTrue: [self handleRetry; executeWithRetriesRemaining: retryCount - 1]
ifFalse: [exception pass]] in ZnClient>>executeWithRetriesRemaining:
Receiver: a ZnClient
Arguments and temporary variables:
retryCount: HTTPProgress: Connecting to www.server1.com
exception: 1
Receiver's instance variables:
request: a ZnRequest(PUT /RepositoryDTR/DtrLogin-DTR.417.mcz)
response: a ZnResponse(404 Not Found text/html 345B)
connection: nil
lastUsed: nil
state: #closed
options: a Dictionary(#enforceAcceptContentType->true #enforceHttpSuccess->true...etc...
session: nil
log: a ZnLogSupport
Oct. 24, 2014
Re: [Pharo-dev] Weird rehashing problem
by Dale Henrichs
Don't know whether it's related or not, but just the other day I was
updating builderCI to use the zeroconf scripts for Pharo1.2 through
Pharo1.4 when I hit a problem loading a package from smalltalkhub that only
failed (consistently) for Pharo1.3[1] and when I reverted to using the
relatively old vm built into builderCI the loading problem disappeared[2]
... and I concluded that there was something in Pharo-3.0 that did not play
well with the recent vm(only as Pharo-1.2 and Pharo-1.4 seemed to work
fine).
The old vm suits my purposes just fine, but I would agree that there is
something fishy there related to the vms ...
Dale
[1] https://travis-ci.org/dalehenrich/builderCI/jobs/38547637#L334
[2] https://travis-ci.org/dalehenrich/builderCI/builds/38551292
On Fri, Oct 24, 2014 at 7:29 AM, Max Leske <maxleske(a)gmail.com> wrote:
> Hi
>
> I have a rather strange problem with rehasing that occurred simultaneously
> multiple times on the same day but not since. Luckily Iâve saved an image
> with the debugger in it. The mean thing is: that doesnât help me at all
> because from what I can tell either the Debugger is broken or thereâs a VM
> problem.
>
> Note:
> The image is a Pharo 1.3 image. The problem occurred on two different VMs
> independently, an NBCog VM (Croquet Closure Cog VM [CoInterpreter
> VMMaker-oscog-EstebanLorenzano.166] 21.0) and a Squeak VM (Squeak3.10.2 of
> '5 June 2008' [latest update: #7179]).
> The operation during which this happened was the loading of an
> ImageSegment (in both instances).
>
>
> Hereâs what happened. I got a SubscriptOutOfBounds error during rehashing
> of a Dictionary. When I look at the debugger itâs clear why the exception
> got signaled but not how that situation could ever happen.
>
> These are the top three contexts on the stack:
>
> Array(Object)>>errorSubscriptBounds:
> Array(Object)>>at:put:
> CBConfiguration(Dictionary)>>noCheckAdd:
>
> This is the #noCheckAdd: methodâ
>
> 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
>
> and hereâs #at:put: where the exception is signaled:
>
> at: index put: value
> <primitive: 61>
> index isInteger ifTrue:
> [self class isVariable
> ifTrue: [(index >= 1 and: [index <= self size])
> ifTrue: [self errorImproperStore]
> ifFalse: [self
> errorSubscriptBounds: index]] <âââ signaled
> ifFalse: [self errorNotIndexable]].
> index isNumber
> ifTrue: [^self at: index asInteger put: value]
> ifFalse: [self errorNonIntegerIndex]
>
> Hereâs the weird thing: according to the debugger âarray' in #noCheckAdd:
> IS NOT THE SAME INSTANCE as âselfâ in #at:put:!!!!!! ????????? When I look
> at the pointers to both arrays, the correct one is pointed to by the
> dictionary while the other is only being referenced by the exception
> context:
>
> Bad array:
> 1: SubscriptOutOfBounds: 88
> 2: Array(Object)>>errorSubscriptBounds:
> 3: Array(Object>>at:put:
> 4: an Inspector
> â¦
>
> Good array:
> 1: aCBConfiguration(size 107)
>
>
> I really have no clue how this could have happened. Iâd appreciate any
> thoughts you might haveâ¦
>
> Cheers,
> Max
>
Oct. 24, 2014
Re: [Pharo-dev] Run Spur run!!
by Esteban Lorenzano
> On 24 Oct 2014, at 16:21, Thierry Goubier <thierry.goubier(a)gmail.com> wrote:
>
>
>
> 2014-10-24 15:50 GMT+02:00 Clément Bera <bera.clement(a)gmail.com <mailto:bera.clement@gmail.com>>:
> The current x2 speed boost is due only to spur, not to sista. Sista will provide additional performance, but we have still things to do before production.
>
> The performance gain reported is due to (from most important to less important):
> - the new GC has less overhead. 30% of the execution time used to be spent in the GC.
> - the new object format speeds up some VM internal caches (especially inline caches for message sends due to an indirection for object classes with a class table).
> - the new object format allows some C code to be converted into machine code routines, including block creation, context creation, primitive #at:put:, which is faster because switching from jitted code to C then back to jitted code generate a little overhead.
> - characters are now immediate objects, which speeds up String accessing.
> - the new object format has a larger hash which speeds up big hashed collections such as big sets and dictionaries.
> - become is faster.
>
>
> All this is really cool :) And if I remember well, there is 64 bitness coming as well.
>
> Will Spur also cover ARM ?
Spur is an object format, it does not have anything to do with underlying architecture (well, at least in theory⦠Eliot should be able to say more on this).
Cog, in the other side is a jitter, and it has everything to do with the architecture so is difficult to have it running on ARM (but there is work on that direction, so we hope it will be there eventually).
It looks like there is a misunderstanding (probably not you, Thierry, but since Iâve seen it time to time, I take the chance to clarify): Spur is not a replacement for Cog, both are orthogonal (in fact, Spur runs in Stack vm too).
Real new VM is not âSpurâ vm, is "Cog+Spur" vm.
cheers,
Esteban
>
> Thierry
>
>
> 2014-10-24 15:20 GMT+02:00 kilon alios <kilon.alios(a)gmail.com <mailto:kilon.alios@gmail.com>>:
> thanks max, i completely forgotten about esug videos, looks like i found what to watch during the weekend :D
>
> On Fri, Oct 24, 2014 at 4:12 PM, Max Leske <maxleske(a)gmail.com <mailto:maxleske@gmail.com>> wrote:
>
>> On 24.10.2014, at 15:06, kilon alios <kilon.alios(a)gmail.com <mailto:kilon.alios@gmail.com>> wrote:
>>
>> very nice
>>
>> so any more information to this, how exactly this optimization works and which kind of data will benefit from this ?
>
> Clémentâs byte code set talk at ESUG: http://www.youtube.com/watch?v=e9J362QHwSA&index=64&list=PLJ5nSnWzQXi_6yyRL… <http://www.youtube.com/watch?v=e9J362QHwSA&index=64&list=PLJ5nSnWzQXi_6yyRL…>
> Clémentâs Sista talk at ESUG (2 parts):
> http://www.youtube.com/watch?v=X4E_FoLysJg&list=PLJ5nSnWzQXi_6yyRLsMMBqG8Yl… <http://www.youtube.com/watch?v=X4E_FoLysJg&list=PLJ5nSnWzQXi_6yyRLsMMBqG8Yl…>
> http://www.youtube.com/watch?v=gZOk3qojoVE&list=PLJ5nSnWzQXi_6yyRLsMMBqG8Yl… <http://www.youtube.com/watch?v=gZOk3qojoVE&list=PLJ5nSnWzQXi_6yyRLsMMBqG8Yl…>
>
> Eliotâs Spur talk at ESUG (3 parts):
> http://www.youtube.com/watch?v=k0nBNS1aHZ4&index=49&list=PLJ5nSnWzQXi_6yyRL… <http://www.youtube.com/watch?v=k0nBNS1aHZ4&index=49&list=PLJ5nSnWzQXi_6yyRL…>
> http://www.youtube.com/watch?v=sn3irBZE7g4&index=48&list=PLJ5nSnWzQXi_6yyRL… <http://www.youtube.com/watch?v=sn3irBZE7g4&index=48&list=PLJ5nSnWzQXi_6yyRL…>
> http://www.youtube.com/watch?v=1Vg0iFeg_pA&list=PLJ5nSnWzQXi_6yyRLsMMBqG8Yl… <http://www.youtube.com/watch?v=1Vg0iFeg_pA&list=PLJ5nSnWzQXi_6yyRLsMMBqG8Yl…>
>
>>
>> On Fri, Oct 24, 2014 at 3:47 PM, Sebastian Sastre <sebastian(a)flowingconcept.com <mailto:sebastian@flowingconcept.com>> wrote:
>> remarkable!!!
>>
>> congratulations for the impressive results
>>
>> thanks for sharing!
>>
>> sebastian
>>
>> o/
>>
>> > On 23/10/2014, at 17:40, Max Leske <maxleske(a)gmail.com <mailto:maxleske@gmail.com>> wrote:
>> >
>> > For those of you who missed this on IRC:
>> >
>> > henriksp: estebanlm: Care to run a small bench Cog vs Spur for me?
>> > [3:32pm] henriksp: int := ZnUTF8Encoder new.
>> > [3:32pm] henriksp: [int decodeBytes:#[67 97 115 104 44 32 108 105 107 101 32 226 130 172 44 32 105 115 32 107 105 110 103 0]] bench.
>> > [3:32pm] henriksp: had a 16x speedup with assembly implementation vs Cog, if it's 8x vs Spur, that's just really impressive
>> > [3:44pm] Craig left the chat room. (Quit: Leaving.)
>> > [3:53pm] Craig joined the chat room.
>> > [4:08pm] VitamineD joined the chat room.
>> > [4:20pm] estebanlm: checking
>> > [4:21pm] estebanlm: Cog: 167,000 per second.
>> > [4:22pm] estebanlm: Cog[Spur]: 289,000 per second.
>> > [4:23pm] estebanlm: henriksp: ping
>> > [4:33pm] tinchodias left the chat room. (Ping timeout: 245 seconds)
>> > [4:33pm] tinchodias joined the chat room.
>> > [4:34pm] henriksp: 70% more work done, nice!
>> > [5:09pm]
>> >
>> >
>> > Yay! :)
>>
>>
>
>
>
>
Oct. 24, 2014
Weird rehashing problem
by Max Leske
Hi
I have a rather strange problem with rehasing that occurred simultaneously multiple times on the same day but not since. Luckily Iâve saved an image with the debugger in it. The mean thing is: that doesnât help me at all because from what I can tell either the Debugger is broken or thereâs a VM problem.
Note:
The image is a Pharo 1.3 image. The problem occurred on two different VMs independently, an NBCog VM (Croquet Closure Cog VM [CoInterpreter VMMaker-oscog-EstebanLorenzano.166] 21.0) and a Squeak VM (Squeak3.10.2 of '5 June 2008' [latest update: #7179]).
The operation during which this happened was the loading of an ImageSegment (in both instances).
Hereâs what happened. I got a SubscriptOutOfBounds error during rehashing of a Dictionary. When I look at the debugger itâs clear why the exception got signaled but not how that situation could ever happen.
These are the top three contexts on the stack:
Array(Object)>>errorSubscriptBounds:
Array(Object)>>at:put:
CBConfiguration(Dictionary)>>noCheckAdd:
This is the #noCheckAdd: methodâ
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
and hereâs #at:put: where the exception is signaled:
at: index put: value
<primitive: 61>
index isInteger ifTrue:
[self class isVariable
ifTrue: [(index >= 1 and: [index <= self size])
ifTrue: [self errorImproperStore]
ifFalse: [self errorSubscriptBounds: index]] <âââ signaled
ifFalse: [self errorNotIndexable]].
index isNumber
ifTrue: [^self at: index asInteger put: value]
ifFalse: [self errorNonIntegerIndex]
Hereâs the weird thing: according to the debugger âarray' in #noCheckAdd: IS NOT THE SAME INSTANCE as âselfâ in #at:put:!!!!!! ????????? When I look at the pointers to both arrays, the correct one is pointed to by the dictionary while the other is only being referenced by the exception context:
Bad array:
1: SubscriptOutOfBounds: 88
2: Array(Object)>>errorSubscriptBounds:
3: Array(Object>>at:put:
4: an Inspector
â¦
Good array:
1: aCBConfiguration(size 107)
I really have no clue how this could have happened. Iâd appreciate any thoughts you might haveâ¦
Cheers,
Max
Oct. 24, 2014
Re: [Pharo-dev] Run Spur run!!
by Thierry Goubier
2014-10-24 15:50 GMT+02:00 Clément Bera <bera.clement(a)gmail.com>:
> The current x2 speed boost is due only to spur, not to sista. Sista will
> provide additional performance, but we have still things to do before
> production.
>
> The performance gain reported is due to (from most important to less
> important):
> - the new GC has less overhead. 30% of the execution time used to be spent
> in the GC.
> - the new object format speeds up some VM internal caches (especially
> inline caches for message sends due to an indirection for object classes
> with a class table).
> - the new object format allows some C code to be converted into machine
> code routines, including block creation, context creation, primitive
> #at:put:, which is faster because switching from jitted code to C then back
> to jitted code generate a little overhead.
> - characters are now immediate objects, which speeds up String accessing.
> - the new object format has a larger hash which speeds up big hashed
> collections such as big sets and dictionaries.
> - become is faster.
>
>
All this is really cool :) And if I remember well, there is 64 bitness
coming as well.
Will Spur also cover ARM ?
Thierry
>
> 2014-10-24 15:20 GMT+02:00 kilon alios <kilon.alios(a)gmail.com>:
>
>> thanks max, i completely forgotten about esug videos, looks like i found
>> what to watch during the weekend :D
>>
>> On Fri, Oct 24, 2014 at 4:12 PM, Max Leske <maxleske(a)gmail.com> wrote:
>>
>>>
>>> On 24.10.2014, at 15:06, kilon alios <kilon.alios(a)gmail.com> wrote:
>>>
>>> very nice
>>>
>>> so any more information to this, how exactly this optimization works and
>>> which kind of data will benefit from this ?
>>>
>>>
>>> Clément's byte code set talk at ESUG:
>>> http://www.youtube.com/watch?v=e9J362QHwSA&index=64&list=PLJ5nSnWzQXi_6yyRL…
>>> Clément's Sista talk at ESUG (2 parts):
>>>
>>> http://www.youtube.com/watch?v=X4E_FoLysJg&list=PLJ5nSnWzQXi_6yyRLsMMBqG8Yl…
>>>
>>> http://www.youtube.com/watch?v=gZOk3qojoVE&list=PLJ5nSnWzQXi_6yyRLsMMBqG8Yl…
>>>
>>> Eliot's Spur talk at ESUG (3 parts):
>>>
>>> http://www.youtube.com/watch?v=k0nBNS1aHZ4&index=49&list=PLJ5nSnWzQXi_6yyRL…
>>>
>>> http://www.youtube.com/watch?v=sn3irBZE7g4&index=48&list=PLJ5nSnWzQXi_6yyRL…
>>>
>>> http://www.youtube.com/watch?v=1Vg0iFeg_pA&list=PLJ5nSnWzQXi_6yyRLsMMBqG8Yl…
>>>
>>>
>>> On Fri, Oct 24, 2014 at 3:47 PM, Sebastian Sastre <
>>> sebastian(a)flowingconcept.com> wrote:
>>>
>>>> remarkable!!!
>>>>
>>>> congratulations for the impressive results
>>>>
>>>> thanks for sharing!
>>>>
>>>> sebastian
>>>>
>>>> o/
>>>>
>>>> > On 23/10/2014, at 17:40, Max Leske <maxleske(a)gmail.com> wrote:
>>>> >
>>>> > For those of you who missed this on IRC:
>>>> >
>>>> > henriksp: estebanlm: Care to run a small bench Cog vs Spur for me?
>>>> > [3:32pm] henriksp: int := ZnUTF8Encoder new.
>>>> > [3:32pm] henriksp: [int decodeBytes:#[67 97 115 104 44 32 108 105 107
>>>> 101 32 226 130 172 44 32 105 115 32 107 105 110 103 0]] bench.
>>>> > [3:32pm] henriksp: had a 16x speedup with assembly implementation vs
>>>> Cog, if it's 8x vs Spur, that's just really impressive
>>>> > [3:44pm] Craig left the chat room. (Quit: Leaving.)
>>>> > [3:53pm] Craig joined the chat room.
>>>> > [4:08pm] VitamineD joined the chat room.
>>>> > [4:20pm] estebanlm: checking
>>>> > [4:21pm] estebanlm: Cog: 167,000 per second.
>>>> > [4:22pm] estebanlm: Cog[Spur]: 289,000 per second.
>>>> > [4:23pm] estebanlm: henriksp: ping
>>>> > [4:33pm] tinchodias left the chat room. (Ping timeout: 245 seconds)
>>>> > [4:33pm] tinchodias joined the chat room.
>>>> > [4:34pm] henriksp: 70% more work done, nice!
>>>> > [5:09pm]
>>>> >
>>>> >
>>>> > Yay! :)
>>>>
>>>>
>>>
>>>
>>
>
Oct. 24, 2014