Re: [Pharo-dev] RPackage and overrides

2013-05-31 Thread Norbert Hartl


Am 31.05.2013 um 02:56 schrieb Igor Stasenko :

> ohohoho.. selector namespaces.. sounds like using nuclear weapon to
> get rid of cockroaches:

You know that cockroaches are the ones that will survive a nuclear strike ? :)

Norbert


Re: [Pharo-dev] Reflectivity beta

2013-05-31 Thread Norbert Hartl
Sounds great! What happens if a method is recompiled. All metalinks are gone 
then?

Norbert

Am 30.05.2013 um 18:15 schrieb Camille Teruel :

> Hello everyone,
> 
> Reflectivity beta is out ! 
> 
> Reflectivity is a tool that permit to annotate AST nodes with "metalinks". 
> You can put metalinks at different "positions":
> before: the metalink is executed before the node
> instead: the metalink is executed instead the node
> after: the metalink is executed after the node
> onError: the metalink is executed only if the execution of the node raises an 
> error
> onSuccess: the metalink is executed only if the execution of the node raises 
> no error
> 
> When you put metalinks on some node of a method's AST, a wrapper is installed 
> in place of the method. When executed, this wrapper compiles an expanded 
> version of the AST that takes metalinks into account and install the 
> resulting compiled method.
> 
> Examples:
> 
> increaseAllNumbersIn: aCompiledMethod
>   "A method that increases all numbers in aCompiledMethod"
>   aCompiledMethod reflectiveAST 
>   forAllNodes: [ :node | node isLiteral and: [ node value 
> isNumber ] ]
>   putInstead: [ :node | RFMetalink fromExpression: (node value + 
> 1) asString ].
> 
> removeMetalinksIn: aCompiledMethod
>   aCompiledMethod reflectiveAST removeAllMetalinks
> 
> In nautilus, you have a menu entry called 'Edit metalinks' that permit to 
> edit the metalinks of the node corresponding to the selected piece of code. 
> As an example use case, another entry called 'Put breakpoint' adds a metalink 
> that corresponds to 'Halt now' before the selected node.
> 
> Remember that it is a beta, so you might find errors and things are likely to 
> change.
> 
> You can load Reflectivity with:
>  
> Gofer it
>   smalltalkhubUser: 'RMoD' project: 'Reflectivity';
>   configuration;
>   loadDevelopment
> 
> Or you can download it from RMoD's CI:
> https://ci.inria.fr/rmod/job/Reflectivity/
> 
> Camille


Re: [Pharo-dev] Running coverage breaks the VM

2013-05-31 Thread Guillermo Polito
Ahh, that's why the code in CoInterpreter I was looking didn't match the C
code :D. Was looking at the wrong place, hehe.

Igor, why do you say that this method should be reached only with vanilla
compiled methods? From the comment I understand

  "For interpreter performance and to ease the objectAsMethod
implementation eagerly
 evaluate the primtiive, i.e. if the method is cogged and has a
primitive /do not/ evaluate
 the machine code primitive, just evaluate primitiveFunctionPointer
directly."

And in #addNewMethodToCache: there is as a first statement:

[...]
(objectMemory isOopCompiledMethod: newMethod)
ifTrue:
[primitiveIndex := self primitiveIndexOf: newMethod.
 primitiveFunctionPointer := self functionPointerFor: primitiveIndex
inClass: class]
ifFalse:
[*primitiveFunctionPointer := #primitiveInvokeObjectAsMethod*].
[...]

So I'd say that both objects as methods and primitives are kind of handled
in the same way after?



On Fri, May 31, 2013 at 2:27 AM, Igor Stasenko  wrote:

> On 30 May 2013 20:06, Guillermo Polito  wrote:
> > Ok, I was playing with flushing caches and stuff... Its still a bit
> obsure
> > to me why the example in the workspace works and the code coverage
> doesnot.
> >
> > However, I managed to hack the VM to make it work :).
> >
> > It looks like the VM is treating the objects as methods, as cog methods.
> So
> > I added the following validation in the commonSend:
> >
> > methodHeader2 = longAt((GIV(newMethod) + BaseHeaderSize) + (HeaderIndex
> <<
> > ShiftForWord));
> >
> > if (isCogMethodReference(methodHeader2) &&
> > isCompiledMethodHeader(methodHeader2)) {
> >
> > /* begin externalizeIPandSP */
> >
> > assertusqInt)localIP)) != (ceReturnToInterpreterPC()));
> >
> > GIV(instructionPointer) = oopForPointer(localIP);
> >
> > GIV(stackPointer) = localSP;
> >
> > GIV(framePointer) = localFP;
> >
> > executeCoggedNewMethodmethodHeader(1, methodHeader2);
> >
> > }
> >
> >
> > And it works :).
> >
> > I cc Eliot, so maybe he has an idea...
> >
> I touched this code.
>
> Original:
>
> CoInterpreter>>internalExecuteNewMethod
> 
> "For interpreter performance and to ease the objectAsMethod
> implementation eagerly
>  evaluate the primtiive, i.e. if the method is cogged and has a
> primitive /do not/ evaluate
>  the machine code primitive, just evaluate
> primitiveFunctionPointer directly."
> primitiveFunctionPointer ~= 0 ifTrue:
> [| succeeded |
>  self isPrimitiveFunctionPointerAnIndex ifTrue:
> [^self internalQuickPrimitiveResponse].
>  "slowPrimitiveResponse may of course context-switch.  If
> so we must
> reenter the
>   new process appropriately, returning only if we've found
> an
> interpreter frame."
>  self externalizeIPandSP.
>  succeeded := self slowPrimitiveResponse.
>  instructionPointer = cogit ceReturnToInterpreterPC ifTrue:
> [instructionPointer := self iframeSavedIP:
> framePointer].
>  self internalizeIPandSP.
>  succeeded ifTrue:
> [self return: self popStack toExecutive: true.
>  self browserPluginReturnIfNeeded.
> ^nil]].
> "if not primitive, or primitive failed, activate the method"
> (self methodHasCogMethod: newMethod)
> ifTrue: [self iframeSavedIP: localFP put: localIP
> asInteger.
> instructionPointer := cogit
> ceReturnToInterpreterPC.
> self externalizeFPandSP.
> self activateCoggedNewMethod: true.
> self internalizeIPandSP]
> ifFalse: [self internalActivateNewMethod]
>
> Now in subclass (NBCoInterpreter)
> i made this:
>
> internalExecuteNewMethod
> 
> "For interpreter performance and to ease the objectAsMethod
> implementation eagerly
>  evaluate the primtiive, i.e. if the method is cogged and has a
> primitive /do not/ evaluate
>  the machine code primitive, just evaluate
> primitiveFunctionPointer directly."
>
> | methodHeader |
>
> methodHeader := self rawHeaderOf: newMethod.
>
> (self isCogMethodReference: methodHeader) ifTrue: [
> self externalizeIPandSP.
> self executeCoggedNewMethod: true methodHeader:
> methodHeader.
> "we never reach here"
> ].
>
> primitiveFunctionPointer ~= 0 ifTrue:
> [| succeeded |
>  self isPrimitiveFunctionPointerAnIndex ifTrue:
> [^self internalQuickPrimitiveResponse].
>  "slowPrimitiveResponse may of course context-switch.  If
> so we must
> reenter the
>   new process appropriately, returning only if we've found
> a

Re: [Pharo-dev] Running coverage breaks the VM

2013-05-31 Thread Guillermo Polito
Actually, from CoInterpreter:

addNewMethodToCache: class
"Override to refuse to cache other than compiled methods.
 This protects open PICs against having to test for compiled methods."
(objectMemory isOopCompiledMethod: newMethod) ifFalse:
[primitiveFunctionPointer := #primitiveInvokeObjectAsMethod.
^self].
super addNewMethodToCache: class


On Fri, May 31, 2013 at 9:20 AM, Guillermo Polito  wrote:

> Ahh, that's why the code in CoInterpreter I was looking didn't match the C
> code :D. Was looking at the wrong place, hehe.
>
> Igor, why do you say that this method should be reached only with vanilla
> compiled methods? From the comment I understand
>
>   "For interpreter performance and to ease the objectAsMethod
> implementation eagerly
>  evaluate the primtiive, i.e. if the method is cogged and has a
> primitive /do not/ evaluate
>  the machine code primitive, just evaluate
> primitiveFunctionPointer directly."
>
> And in #addNewMethodToCache: there is as a first statement:
>
> [...]
> (objectMemory isOopCompiledMethod: newMethod)
>  ifTrue:
> [primitiveIndex := self primitiveIndexOf: newMethod.
>  primitiveFunctionPointer := self functionPointerFor: primitiveIndex
> inClass: class]
> ifFalse:
>  [*primitiveFunctionPointer := #primitiveInvokeObjectAsMethod*].
> [...]
>
> So I'd say that both objects as methods and primitives are kind of handled
> in the same way after?
>
>
>
> On Fri, May 31, 2013 at 2:27 AM, Igor Stasenko  wrote:
>
>> On 30 May 2013 20:06, Guillermo Polito  wrote:
>> > Ok, I was playing with flushing caches and stuff... Its still a bit
>> obsure
>> > to me why the example in the workspace works and the code coverage
>> doesnot.
>> >
>> > However, I managed to hack the VM to make it work :).
>> >
>> > It looks like the VM is treating the objects as methods, as cog
>> methods. So
>> > I added the following validation in the commonSend:
>> >
>> > methodHeader2 = longAt((GIV(newMethod) + BaseHeaderSize) + (HeaderIndex
>> <<
>> > ShiftForWord));
>> >
>> > if (isCogMethodReference(methodHeader2) &&
>> > isCompiledMethodHeader(methodHeader2)) {
>> >
>> > /* begin externalizeIPandSP */
>> >
>> > assertusqInt)localIP)) != (ceReturnToInterpreterPC()));
>> >
>> > GIV(instructionPointer) = oopForPointer(localIP);
>> >
>> > GIV(stackPointer) = localSP;
>> >
>> > GIV(framePointer) = localFP;
>> >
>> > executeCoggedNewMethodmethodHeader(1, methodHeader2);
>> >
>> > }
>> >
>> >
>> > And it works :).
>> >
>> > I cc Eliot, so maybe he has an idea...
>> >
>> I touched this code.
>>
>> Original:
>>
>> CoInterpreter>>internalExecuteNewMethod
>> 
>> "For interpreter performance and to ease the objectAsMethod
>> implementation eagerly
>>  evaluate the primtiive, i.e. if the method is cogged and has a
>> primitive /do not/ evaluate
>>  the machine code primitive, just evaluate
>> primitiveFunctionPointer directly."
>> primitiveFunctionPointer ~= 0 ifTrue:
>> [| succeeded |
>>  self isPrimitiveFunctionPointerAnIndex ifTrue:
>> [^self internalQuickPrimitiveResponse].
>>  "slowPrimitiveResponse may of course context-switch.  If
>> so we must
>> reenter the
>>   new process appropriately, returning only if we've
>> found an
>> interpreter frame."
>>  self externalizeIPandSP.
>>  succeeded := self slowPrimitiveResponse.
>>  instructionPointer = cogit ceReturnToInterpreterPC
>> ifTrue:
>> [instructionPointer := self iframeSavedIP:
>> framePointer].
>>  self internalizeIPandSP.
>>  succeeded ifTrue:
>> [self return: self popStack toExecutive: true.
>>  self browserPluginReturnIfNeeded.
>> ^nil]].
>> "if not primitive, or primitive failed, activate the method"
>> (self methodHasCogMethod: newMethod)
>> ifTrue: [self iframeSavedIP: localFP put: localIP
>> asInteger.
>> instructionPointer := cogit
>> ceReturnToInterpreterPC.
>> self externalizeFPandSP.
>> self activateCoggedNewMethod: true.
>> self internalizeIPandSP]
>> ifFalse: [self internalActivateNewMethod]
>>
>> Now in subclass (NBCoInterpreter)
>> i made this:
>>
>> internalExecuteNewMethod
>> 
>> "For interpreter performance and to ease the objectAsMethod
>> implementation eagerly
>>  evaluate the primtiive, i.e. if the method is cogged and has a
>> primitive /do not/ evaluate
>>  the machine code primitive, just evaluate
>> primitiveFunctionPointer directly."
>>
>> | methodHeader |
>>
>> methodHeader := self rawHeaderOf: newMethod.
>>
>> (self isCogMethodReference: methodHeader) ifTrue: [
>> se

Re: [Pharo-dev] Reflectivity beta

2013-05-31 Thread Camille Teruel

On 31 mai 2013, at 09:03, Norbert Hartl wrote:

> Sounds great! What happens if a method is recompiled. All metalinks are gone 
> then?

Yes indeed. If you have the method:
foo
self bar
with a metalink on the message node and you recompile it to:
foo
self
qux;
bar;
bar.

then it is hard to tell which node(s) should adopt the metalink because there 
is no way to tell which #bar message of the second version is the one from the 
first version. 
I would love to have an editor where you manipulates ast nodes directly. 
With such an editor the developer would have feedback of where the metalinks 
are. 
In the underlying model, AST nodes would have an equivalence relation to say 
whether two nodes are different versions the same or not.
This model could also be really useful for versioning and diff too.

> 
> Norbert
> 
> Am 30.05.2013 um 18:15 schrieb Camille Teruel :
> 
>> Hello everyone,
>> 
>> Reflectivity beta is out ! 
>> 
>> Reflectivity is a tool that permit to annotate AST nodes with "metalinks". 
>> You can put metalinks at different "positions":
>> before: the metalink is executed before the node
>> instead: the metalink is executed instead the node
>> after: the metalink is executed after the node
>> onError: the metalink is executed only if the execution of the node raises 
>> an error
>> onSuccess: the metalink is executed only if the execution of the node raises 
>> no error
>> 
>> When you put metalinks on some node of a method's AST, a wrapper is 
>> installed in place of the method. When executed, this wrapper compiles an 
>> expanded version of the AST that takes metalinks into account and install 
>> the resulting compiled method.
>> 
>> Examples:
>> 
>> increaseAllNumbersIn: aCompiledMethod
>>  "A method that increases all numbers in aCompiledMethod"
>>  aCompiledMethod reflectiveAST 
>>  forAllNodes: [ :node | node isLiteral and: [ node value 
>> isNumber ] ]
>>  putInstead: [ :node | RFMetalink fromExpression: (node value + 
>> 1) asString ].
>> 
>> removeMetalinksIn: aCompiledMethod
>>  aCompiledMethod reflectiveAST removeAllMetalinks
>> 
>> In nautilus, you have a menu entry called 'Edit metalinks' that permit to 
>> edit the metalinks of the node corresponding to the selected piece of code. 
>> As an example use case, another entry called 'Put breakpoint' adds a 
>> metalink that corresponds to 'Halt now' before the selected node.
>> 
>> Remember that it is a beta, so you might find errors and things are likely 
>> to change.
>> 
>> You can load Reflectivity with:
>>  
>> Gofer it
>>  smalltalkhubUser: 'RMoD' project: 'Reflectivity';
>>  configuration;
>>  loadDevelopment
>> 
>> Or you can download it from RMoD's CI:
>> https://ci.inria.fr/rmod/job/Reflectivity/
>> 
>> Camille



Re: [Pharo-dev] Reflectivity beta

2013-05-31 Thread Marcus Denker

On May 31, 2013, at 9:04 AM, Norbert Hartl  wrote:

> Sounds great! What happens if a method is recompiled. All metalinks are gone 
> then?
> 

Yes, because they have no semantic knowledge other than the AST node.

Starting to match trees to put back links is difficult *and* does not work 
really, either.

 E.g if I put a link
on 
self foo.

and then add a second 
self foo. 

just in front, where will the retained link be?

And them, the new method could be completely different. Maybe the user putting 
the link did not want it
on all sends called foo, but on all self sends? No way to tell… they just do 
not carry the intention of the developer.
For that one needs higher levels to take care.

The idea is that the links are low-level, you always use them in  a managed 
way. E.g. a line-based
breakpoint would be manage by the debugger, the links in an AOP system would be 
managed by the
PointCut (which declaratively specifies where to put links). Edit method --> 
level above puts links again.

In the *long* term I want Pharo to not manipulate text but ASTs directly, in 
this case it is easy to maintain the
links as the AST does not change. But this is Pharo5 or so ;-)
But even that does not remove then need of higher levels. Because if the user 
put links on all ivar accesses, the
code I add will not magically have those links even in this case, because the 
existing do not encode the intention
"I want links on all Ivar access".

Marcus


Re: [Pharo-dev] Reflectivity beta

2013-05-31 Thread Tudor Girba
Indeed, this would be fantastic :)

Doru


On Fri, May 31, 2013 at 9:45 AM, Camille Teruel wrote:

>
> On 31 mai 2013, at 09:03, Norbert Hartl wrote:
>
> Sounds great! What happens if a method is recompiled. All metalinks are
> gone then?
>
>
> Yes indeed. If you have the method:
> foo
> self bar
> with a metalink on the message node and you recompile it to:
> foo
> self
> qux;
> bar;
> bar.
>
> then it is hard to tell which node(s) should adopt the metalink because
> there is no way to tell which #bar message of the second version is the one
> from the first version.
> I would love to have an editor where you manipulates ast nodes directly.
> With such an editor the developer would have feedback of where the
> metalinks are.
> In the underlying model, AST nodes would have an equivalence relation to
> say whether two nodes are different versions the same or not.
> This model could also be really useful for versioning and diff too.
>
>
> Norbert
>
> Am 30.05.2013 um 18:15 schrieb Camille Teruel :
>
> Hello everyone,
>
> Reflectivity beta is out !
>
> Reflectivity is a tool that permit to annotate AST nodes with "metalinks".
> You can put metalinks at different "positions":
>
>- before: the metalink is executed before the node
>- instead: the metalink is executed instead the node
>- after: the metalink is executed after the node
>- onError: the metalink is executed only if the execution of the node
>raises an error
>- onSuccess: the metalink is executed only if the execution of the
>node raises no error
>
>
> When you put metalinks on some node of a method's AST, a wrapper is
> installed in place of the method. When executed, this wrapper compiles an
> expanded version of the AST that takes metalinks into account and install
> the resulting compiled method.
>
> Examples:
>
> increaseAllNumbersIn: aCompiledMethod
> "A method that increases all numbers in aCompiledMethod"
> aCompiledMethod reflectiveAST
> forAllNodes: [ :node | node isLiteral and: [ node value isNumber ] ]
> putInstead: [ :node | RFMetalink fromExpression: (node value + 1) asString
> ].
>
> removeMetalinksIn: aCompiledMethod
> aCompiledMethod reflectiveAST removeAllMetalinks
>
> In nautilus, you have a menu entry called 'Edit metalinks' that permit to
> edit the metalinks of the node corresponding to the selected piece of code.
> As an example use case, another entry called 'Put breakpoint' adds a
> metalink that corresponds to 'Halt now' before the selected node.
>
> Remember that it is a beta, so you might find errors and things are likely
> to change.
>
> You can load Reflectivity with:
>
> Gofer it
> smalltalkhubUser: 'RMoD' project: 'Reflectivity';
> configuration;
> loadDevelopment
>
> Or you can download it from RMoD's CI:
> https://ci.inria.fr/rmod/job/Reflectivity/
>
> Camille
>
>
>


-- 
www.tudorgirba.com

"Every thing has its own flow"


Re: [Pharo-dev] Amber's new stepping debugger

2013-05-31 Thread XumuK
Finally! It will be very useful!

пятница, 31 мая 2013 г., 1:26:01 UTC+4 пользователь nicolas petton написал:
>
> Hi guys! 
>
> Today I was able to debug Amber code with a stepping debugger for the 
> first time! 
> The debugger is based on an AST interpreter with a small stack 
> implementation. 
>
> Here's a short video of the debugger in action: 
> https://www.dropbox.com/s/43mli1wwbdwj5kx/amber-debugging.mov 
>
> While it's an early version, it is already usable :) 
>
> cheers, 
> nico



Re: [Pharo-dev] Running coverage breaks the VM

2013-05-31 Thread Guillermo Polito
I'll make a summary from what I understand... Maybe we should move this
discussion to the VM list, but I'm not sure.

- Igor made changes to support the primitive 220
- those changes may try to activate a non-method object
- I added a check to tell if it is a compiled method or not to the new
code, so if it's not it flows through the old method handling (which uses
the primitiveFunctionPointer I assume right from the CoInterpreter
implementation)

This, I see should be taken into account into #internalExecuteNewMethod and
#executeNewMethod, which are preeety similar and both have the same
change :).

Maybe I'm making nonsense again, It's difficult to say to me. I just want
to help fixing this.

Tx!!!
Guille


On Fri, May 31, 2013 at 9:28 AM, Guillermo Polito  wrote:

> Actually, from CoInterpreter:
>
> addNewMethodToCache: class
> "Override to refuse to cache other than compiled methods.
>  This protects open PICs against having to test for compiled methods."
> (objectMemory isOopCompiledMethod: newMethod) ifFalse:
>  [primitiveFunctionPointer := #primitiveInvokeObjectAsMethod.
> ^self].
> super addNewMethodToCache: class
>
>
> On Fri, May 31, 2013 at 9:20 AM, Guillermo Polito <
> guillermopol...@gmail.com> wrote:
>
>> Ahh, that's why the code in CoInterpreter I was looking didn't match the
>> C code :D. Was looking at the wrong place, hehe.
>>
>> Igor, why do you say that this method should be reached only with vanilla
>> compiled methods? From the comment I understand
>>
>>   "For interpreter performance and to ease the objectAsMethod
>> implementation eagerly
>>  evaluate the primtiive, i.e. if the method is cogged and has a
>> primitive /do not/ evaluate
>>  the machine code primitive, just evaluate
>> primitiveFunctionPointer directly."
>>
>> And in #addNewMethodToCache: there is as a first statement:
>>
>> [...]
>> (objectMemory isOopCompiledMethod: newMethod)
>>  ifTrue:
>> [primitiveIndex := self primitiveIndexOf: newMethod.
>>  primitiveFunctionPointer := self functionPointerFor: primitiveIndex
>> inClass: class]
>> ifFalse:
>>  [*primitiveFunctionPointer := #primitiveInvokeObjectAsMethod*].
>> [...]
>>
>> So I'd say that both objects as methods and primitives are kind of
>> handled in the same way after?
>>
>>
>>
>> On Fri, May 31, 2013 at 2:27 AM, Igor Stasenko wrote:
>>
>>> On 30 May 2013 20:06, Guillermo Polito 
>>> wrote:
>>> > Ok, I was playing with flushing caches and stuff... Its still a bit
>>> obsure
>>> > to me why the example in the workspace works and the code coverage
>>> doesnot.
>>> >
>>> > However, I managed to hack the VM to make it work :).
>>> >
>>> > It looks like the VM is treating the objects as methods, as cog
>>> methods. So
>>> > I added the following validation in the commonSend:
>>> >
>>> > methodHeader2 = longAt((GIV(newMethod) + BaseHeaderSize) +
>>> (HeaderIndex <<
>>> > ShiftForWord));
>>> >
>>> > if (isCogMethodReference(methodHeader2) &&
>>> > isCompiledMethodHeader(methodHeader2)) {
>>> >
>>> > /* begin externalizeIPandSP */
>>> >
>>> > assertusqInt)localIP)) != (ceReturnToInterpreterPC()));
>>> >
>>> > GIV(instructionPointer) = oopForPointer(localIP);
>>> >
>>> > GIV(stackPointer) = localSP;
>>> >
>>> > GIV(framePointer) = localFP;
>>> >
>>> > executeCoggedNewMethodmethodHeader(1, methodHeader2);
>>> >
>>> > }
>>> >
>>> >
>>> > And it works :).
>>> >
>>> > I cc Eliot, so maybe he has an idea...
>>> >
>>> I touched this code.
>>>
>>> Original:
>>>
>>> CoInterpreter>>internalExecuteNewMethod
>>> 
>>> "For interpreter performance and to ease the objectAsMethod
>>> implementation eagerly
>>>  evaluate the primtiive, i.e. if the method is cogged and has a
>>> primitive /do not/ evaluate
>>>  the machine code primitive, just evaluate
>>> primitiveFunctionPointer directly."
>>> primitiveFunctionPointer ~= 0 ifTrue:
>>> [| succeeded |
>>>  self isPrimitiveFunctionPointerAnIndex ifTrue:
>>> [^self internalQuickPrimitiveResponse].
>>>  "slowPrimitiveResponse may of course context-switch.
>>>  If so we must
>>> reenter the
>>>   new process appropriately, returning only if we've
>>> found an
>>> interpreter frame."
>>>  self externalizeIPandSP.
>>>  succeeded := self slowPrimitiveResponse.
>>>  instructionPointer = cogit ceReturnToInterpreterPC
>>> ifTrue:
>>> [instructionPointer := self iframeSavedIP:
>>> framePointer].
>>>  self internalizeIPandSP.
>>>  succeeded ifTrue:
>>> [self return: self popStack toExecutive: true.
>>>  self browserPluginReturnIfNeeded.
>>> ^nil]].
>>> "if not primitive, or primitive failed, activate the method"
>>> (self methodHasCogMethod: newMethod)
>>> ifTrue: [self iframeSavedIP: localF

[Pharo-dev] A screenshot we should remind today

2013-05-31 Thread Pavel Krivanek
happy nostalgia :-)

Cheers,
-- Pavel
<>

Re: [Pharo-dev] Reflectivity beta

2013-05-31 Thread Norbert Hartl

Am 31.05.2013 um 09:48 schrieb Marcus Denker :

> 
> On May 31, 2013, at 9:04 AM, Norbert Hartl  wrote:
> 
>> Sounds great! What happens if a method is recompiled. All metalinks are gone 
>> then?
>> 
> 
> Yes, because they have no semantic knowledge other than the AST node.
> 
> Starting to match trees to put back links is difficult *and* does not work 
> really, either.
> 
> E.g if I put a link
> on 
>   self foo.
> 
> and then add a second 
>   self foo. 
> 
> just in front, where will the retained link be?
> 
> And them, the new method could be completely different. Maybe the user 
> putting the link did not want it
> on all sends called foo, but on all self sends? No way to tell… they just do 
> not carry the intention of the developer.
> For that one needs higher levels to take care.
> 
> The idea is that the links are low-level, you always use them in  a managed 
> way. E.g. a line-based
> breakpoint would be manage by the debugger, the links in an AOP system would 
> be managed by the
> PointCut (which declaratively specifies where to put links). Edit method --> 
> level above puts links again.
> 
> In the *long* term I want Pharo to not manipulate text but ASTs directly, in 
> this case it is easy to maintain the
> links as the AST does not change. But this is Pharo5 or so ;-)
> But even that does not remove then need of higher levels. Because if the user 
> put links on all ivar accesses, the
> code I add will not magically have those links even in this case, because the 
> existing do not encode the intention
> "I want links on all Ivar access".

I don't think that editing the AST directly solves this problems. You can 
always remove things in a way so that bringing them back makes you loose the 
meta information. 
But then it maybe is not necessary to put something like that as a AST feature. 
If I programmatically annotate AST nodes I will have some code that does it. 
Then I only need to know when some method has changed and I can reapply the 
annotations/metalinks. To preserve exisiting metalinks I would have to know 
before and after a method has changed so I'm able to reapply the exact same 
thing there. Besides Announcements I could add metalinks to the compiler that 
triggers my code to manage metalinks of my code. There is always a way to go 
meta. Wonderful!

Time for me to make my first 3.0 tests :)

Norbert


[Pharo-dev] [update 3.0] #30175

2013-05-31 Thread Marcus Denker
30175
-

10812 CommandlineTestRunner >> #stderr is not returning properly
https://pharo.fogbugz.com/f/cases/10812

10807 Scanning wrong token produces DNU
https://pharo.fogbugz.com/f/cases/10807

10809 Path>>isAbsoluteWindowsPath: can be optimized
https://pharo.fogbugz.com/f/cases/10809

Diff information:
http://smalltalkhub.com/mc/Pharo/Pharo30/main/FileSystem-Core-MarcusDenker.87.diff
http://smalltalkhub.com/mc/Pharo/Pharo30/main/SUnit-UI-MarcusDenker.68.diff
http://smalltalkhub.com/mc/Pharo/Pharo30/main/AST-Core-MarcusDenker.161.diff
http://smalltalkhub.com/mc/Pharo/Pharo30/main/AST-Tests-Core-MarcusDenker.28.diff




Re: [Pharo-dev] [amber-lang] Amber's new stepping debugger

2013-05-31 Thread Norbert Hartl
Great work!

Norbert

Am 30.05.2013 um 23:26 schrieb Nicolas Petton :

> Hi guys!
> 
> Today I was able to debug Amber code with a stepping debugger for the first 
> time!
> The debugger is based on an AST interpreter with a small stack 
> implementation. 
> 
> Here's a short video of the debugger in action:
> https://www.dropbox.com/s/43mli1wwbdwj5kx/amber-debugging.mov
> 
> While it's an early version, it is already usable :)
> 
> cheers,
> nico




Re: [Pharo-dev] A screenshot we should remind today

2013-05-31 Thread Frank Shearar
On 31 May 2013 09:31, Sven Van Caekenberghe  wrote:
>
>
> On 31 May 2013, at 10:01, Pavel Krivanek  wrote:
>
> happy nostalgia :-)
>
> Cheers,
> -- Pavel
> 
>
>
> +1
>
> It is amazing that so much of it still lives on.
>
> We've come a long way and the future is bright ;-)
>
> Note how also the collaboration model changed: from 'All right reserved'
to MIT, from one lab to the whole world.

I agree with the sentiment, but "All rights reserved" is a copyright thing,
not a licence thing [1]. Pharo _still_ has "all rights reserved". It's just
that Pharo doesn't need to say so because the Berne Convention makes it
implicit.

So it's more that the copyright is "The Pharo Project and Contributors"
than "some random private corporation" that's the important part!

frank

[1] http://en.wikipedia.org/wiki/All_rights_reserved


Re: [Pharo-dev] No Internationalization (nor Multilingual) Project in bug tracker

2013-05-31 Thread Stéphane Ducasse

On May 30, 2013, at 11:37 PM, Nicolas Cellier 
 wrote:

> OK, i have opened https://pharo.fogbugz.com/default.asp?10811 (pre-requisite) 
> and https://pharo.fogbugz.com/default.asp?10801
> I think that was the hardest part of my work
> The rest is just Smalltalk coding ;) (you'll find two SLICES in inbox)
> 
> The most boring stuff is yet to come: final harvesting process...
> 

Nicolas we are working on parallelirizing it.
If you want we can show you how you can commit directly to pharo.
We could do a pair programming integration session.

Stef

Re: [Pharo-dev] Reflectivity beta

2013-05-31 Thread Stéphane Ducasse

> I would love to have an editor where you manipulates ast nodes directly. 

Me too. And we got killed by the state of the Scanner.
Old infrastructure always bite us hard.
We ask gisela to check with PetitParser and sync with 
Camillo/Damien/"Lukas"/Guillaume for the 
introduction of error handling in PetitParser.

Stef


Re: [Pharo-dev] Amber's new stepping debugger

2013-05-31 Thread Stéphane Ducasse
cool!

Stef

On May 30, 2013, at 11:26 PM, Nicolas Petton  wrote:

> Hi guys!
> 
> Today I was able to debug Amber code with a stepping debugger for the first 
> time!
> The debugger is based on an AST interpreter with a small stack 
> implementation. 
> 
> Here's a short video of the debugger in action:
> https://www.dropbox.com/s/43mli1wwbdwj5kx/amber-debugging.mov
> 
> While it's an early version, it is already usable :)
> 
> cheers,
> nico




[Pharo-dev] Handling error with PetitParser

2013-05-31 Thread Stéphane Ducasse
We would like to see if we can use PetitParser to build syntax hilighting and 
for this 
we need to see if there is a way to specify error handling.

Does any of you know?

So far we tried to use the RBSCanner but it does not really work for what we 
need

Stef


Re: [Pharo-dev] Reflectivity beta

2013-05-31 Thread Pavel Krivanek
Really cool! Has anyone already tried to build coverage tests based on it?

-- Pavel

On Thu, May 30, 2013 at 6:15 PM, Camille Teruel wrote:

> Hello everyone,
>
> Reflectivity beta is out !
>
> Reflectivity is a tool that permit to annotate AST nodes with "metalinks".
> You can put metalinks at different "positions":
>
>- before: the metalink is executed before the node
>- instead: the metalink is executed instead the node
>- after: the metalink is executed after the node
>- onError: the metalink is executed only if the execution of the node
>raises an error
>- onSuccess: the metalink is executed only if the execution of the
>node raises no error
>
>
> When you put metalinks on some node of a method's AST, a wrapper is
> installed in place of the method. When executed, this wrapper compiles an
> expanded version of the AST that takes metalinks into account and install
> the resulting compiled method.
>
> Examples:
>
> increaseAllNumbersIn: aCompiledMethod
> "A method that increases all numbers in aCompiledMethod"
> aCompiledMethod reflectiveAST
> forAllNodes: [ :node | node isLiteral and: [ node value isNumber ] ]
> putInstead: [ :node | RFMetalink fromExpression: (node value + 1) asString
> ].
>
> removeMetalinksIn: aCompiledMethod
> aCompiledMethod reflectiveAST removeAllMetalinks
>
> In nautilus, you have a menu entry called 'Edit metalinks' that permit to
> edit the metalinks of the node corresponding to the selected piece of code.
> As an example use case, another entry called 'Put breakpoint' adds a
> metalink that corresponds to 'Halt now' before the selected node.
>
> Remember that it is a beta, so you might find errors and things are likely
> to change.
>
> You can load Reflectivity with:
>
> Gofer it
> smalltalkhubUser: 'RMoD' project: 'Reflectivity';
> configuration;
> loadDevelopment
>
> Or you can download it from RMoD's CI:
> https://ci.inria.fr/rmod/job/Reflectivity/
>
> Camille
>


Re: [Pharo-dev] Keeping Pharo CPU usage low: how?

2013-05-31 Thread Norbert Hartl

Am 27.05.2013 um 10:17 schrieb p...@highoctane.be:

> I was looking at the output of "top" for while and Pharo was trusting the top 
> spot indeed.
> 
> Well, I'll look at all that this evening and give back the impressions.
> 
> I want to run several instances of Pharo on the box and it will for sure add 
> up. Say, 20 x 2% gives an awful lot.
> 
What is the use of having 20 idle images on one server? :)  I think you can't 
easily say that it always adds on top. If your image is running at 100% the 2% 
off even if fully countable wouldn't be that much. But nevertheless it is a 
valid point and I cannot see pharo becomes more modern by stop polling in the 
mid-term future.
Anyway I played a little bit with the tweaks and there are things that make me 
wonder. I raised the limit for server mode but didn't get much benefit. Having 
a cycle pause of 100ms in serverMode and stopping the ui process still gave me 
a 1% CPU usage which is really a lot. Does anyone know in-depth what an image 
is doing? How to investigate? Maybe there are a lot of native polling things 
involved, too? 
I need to dig deeper.

Norbert

> Phil
> 
> 
> On Mon, May 27, 2013 at 10:07 AM, Norbert Hartl  wrote:
> 
> Am 27.05.2013 um 09:49 schrieb Sven Van Caekenberghe :
> 
>> BTW, load & cpu usage numbers can be very hard to interpret. 
> 
> really? CPU usage is pretty easy and you can see this in most OSses directly. 
> 100% CPU usage is full :) Load isn't that much harder. It's just the load of 
> the scheduler queue. So if some needs a rule of thumb
> 
> safe CPU load = number of cores/processes * 0.7
> theoretical optimal CPU load = number of core/processes
> 
> Everything above should really be investigated because you entered the zone 
> where  additional CPU load can drive your machine unresponsive. 
> You have less CPU usage but high load? Investigate I/O usage! 
> 
> I know you know that, Sven. I just wanted to mention it because this comes up 
> from time to time. Compared to memory consumption, CPU, scheduler and I/O are 
> easier targets IMHO.
> 
> For Phil the point isn't the health of the system. It is EC2. You have to pay 
> for the CPU usage on EC2 so I think he had the impression there is room for 
> improvement. And indeed there is. But if you calculate it through it isn't 
> really a factor.
> 
> Norbert
> 
> 



Re: [Pharo-dev] Keeping Pharo CPU usage low: how?

2013-05-31 Thread Sven Van Caekenberghe

On 31 May 2013, at 11:26, Norbert Hartl  wrote:

> 
> Am 27.05.2013 um 10:17 schrieb p...@highoctane.be:
> 
>> I was looking at the output of "top" for while and Pharo was trusting the 
>> top spot indeed.
>> 
>> Well, I'll look at all that this evening and give back the impressions.
>> 
>> I want to run several instances of Pharo on the box and it will for sure add 
>> up. Say, 20 x 2% gives an awful lot.
>> 
> What is the use of having 20 idle images on one server? :)  I think you can't 
> easily say that it always adds on top. If your image is running at 100% the 
> 2% off even if fully countable wouldn't be that much. But nevertheless it is 
> a valid point and I cannot see pharo becomes more modern by stop polling in 
> the mid-term future.
> Anyway I played a little bit with the tweaks and there are things that make 
> me wonder. I raised the limit for server mode but didn't get much benefit. 
> Having a cycle pause of 100ms in serverMode and stopping the ui process still 
> gave me a 1% CPU usage which is really a lot. Does anyone know in-depth what 
> an image is doing? How to investigate? Maybe there are a lot of native 
> polling things involved, too? 
> I need to dig deeper.

Killing as much non-needed process is certainly step one. A clean image has 
these processes:

1. Delay scheduling process
2. Input events fetching process
3. The low space watcher
4. The weak array finalization process
5. Morphic UI process
6. The idle process

So you killed 5. How did you do that exactly ?
Is #serverMode still relevant when 5 is gone ?
Would it be possible to kill 2 ? Is it needed for a headless server ? 
As long as file and socket IO keeps working, we're good.

The rest is probably all needed.

Are there any (slightly busy) processes inside the VM that we can't see at the 
Smalltalk level ? 

> Norbert
> 
>> Phil
>> 
>> 
>> On Mon, May 27, 2013 at 10:07 AM, Norbert Hartl  wrote:
>> 
>> Am 27.05.2013 um 09:49 schrieb Sven Van Caekenberghe :
>> 
>>> BTW, load & cpu usage numbers can be very hard to interpret. 
>> 
>> really? CPU usage is pretty easy and you can see this in most OSses 
>> directly. 100% CPU usage is full :) Load isn't that much harder. It's just 
>> the load of the scheduler queue. So if some needs a rule of thumb
>> 
>> safe CPU load = number of cores/processes * 0.7
>> theoretical optimal CPU load = number of core/processes
>> 
>> Everything above should really be investigated because you entered the zone 
>> where  additional CPU load can drive your machine unresponsive. 
>> You have less CPU usage but high load? Investigate I/O usage! 
>> 
>> I know you know that, Sven. I just wanted to mention it because this comes 
>> up from time to time. Compared to memory consumption, CPU, scheduler and I/O 
>> are easier targets IMHO.
>> 
>> For Phil the point isn't the health of the system. It is EC2. You have to 
>> pay for the CPU usage on EC2 so I think he had the impression there is room 
>> for improvement. And indeed there is. But if you calculate it through it 
>> isn't really a factor.
>> 
>> Norbert
>> 
>> 
> 




Re: [Pharo-dev] Keeping Pharo CPU usage low: how?

2013-05-31 Thread p...@highoctane.be
I don't know how to do this for Linux based VMs (which is what I'll need in
the end) but can do some experiments with Apple Xcode Instruments.

That's something I've wanted to do for a long time as this gives deep
insight on how a program is behaving.

http://en.wikipedia.org/wiki/Instruments_%28application%29
http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/Introduction/Introduction.html

Thanks for looking into this.

Maybe could we do a chapter on these matters in one of the Pharo books.

The point of having idle VMs is that when one machine is hit by a peak of
usage, the other instances can swallow the load. Now, I am not talking
about a single EC2 VM, but a group of them, each having a set of VMs.

FWIW, AIMP3 playing MP3s all the time is 9%-11% on an old PIV 3Ghz, while
Skype takes 1% idling



Phil


On Fri, May 31, 2013 at 11:26 AM, Norbert Hartl  wrote:

>
> Am 27.05.2013 um 10:17 schrieb p...@highoctane.be:
>
> I was looking at the output of "top" for while and Pharo was trusting the
> top spot indeed.
>
> Well, I'll look at all that this evening and give back the impressions.
>
> I want to run several instances of Pharo on the box and it will for sure
> add up. Say, 20 x 2% gives an awful lot.
>
> What is the use of having 20 idle images on one server? :)  I think you
> can't easily say that it always adds on top. If your image is running at
> 100% the 2% off even if fully countable wouldn't be that much. But
> nevertheless it is a valid point and I cannot see pharo becomes more modern
> by stop polling in the mid-term future.
> Anyway I played a little bit with the tweaks and there are things that
> make me wonder. I raised the limit for server mode but didn't get much
> benefit. Having a cycle pause of 100ms in serverMode and stopping the ui
> process still gave me a 1% CPU usage which is really a lot. Does anyone
> know in-depth what an image is doing? How to investigate? Maybe there are a
> lot of native polling things involved, too?
> I need to dig deeper.
>
> Norbert
>
> Phil
>
>
> On Mon, May 27, 2013 at 10:07 AM, Norbert Hartl wrote:
>
>>
>> Am 27.05.2013 um 09:49 schrieb Sven Van Caekenberghe :
>>
>> BTW, load & cpu usage numbers can be very hard to interpret.
>>
>>
>> really? CPU usage is pretty easy and you can see this in most OSses
>> directly. 100% CPU usage is full :) Load isn't that much harder. It's just
>> the load of the scheduler queue. So if some needs a rule of thumb
>>
>> safe CPU load = number of cores/processes * 0.7
>> theoretical optimal CPU load = number of core/processes
>>
>> Everything above should really be investigated because you entered the
>> zone where  additional CPU load can drive your machine unresponsive.
>> You have less CPU usage but high load? Investigate I/O usage!
>>
>> I know you know that, Sven. I just wanted to mention it because this
>> comes up from time to time. Compared to memory consumption, CPU, scheduler
>> and I/O are easier targets IMHO.
>>
>> For Phil the point isn't the health of the system. It is EC2. You have to
>> pay for the CPU usage on EC2 so I think he had the impression there is room
>> for improvement. And indeed there is. But if you calculate it through it
>> isn't really a factor.
>>
>> Norbert
>>
>>
>
>


Re: [Pharo-dev] Keeping Pharo CPU usage low: how?

2013-05-31 Thread Norbert Hartl

Am 31.05.2013 um 11:38 schrieb Sven Van Caekenberghe :

> 
> On 31 May 2013, at 11:26, Norbert Hartl  wrote:
> 
>> 
>> Am 27.05.2013 um 10:17 schrieb p...@highoctane.be:
>> 
>>> I was looking at the output of "top" for while and Pharo was trusting the 
>>> top spot indeed.
>>> 
>>> Well, I'll look at all that this evening and give back the impressions.
>>> 
>>> I want to run several instances of Pharo on the box and it will for sure 
>>> add up. Say, 20 x 2% gives an awful lot.
>>> 
>> What is the use of having 20 idle images on one server? :)  I think you 
>> can't easily say that it always adds on top. If your image is running at 
>> 100% the 2% off even if fully countable wouldn't be that much. But 
>> nevertheless it is a valid point and I cannot see pharo becomes more modern 
>> by stop polling in the mid-term future.
>> Anyway I played a little bit with the tweaks and there are things that make 
>> me wonder. I raised the limit for server mode but didn't get much benefit. 
>> Having a cycle pause of 100ms in serverMode and stopping the ui process 
>> still gave me a 1% CPU usage which is really a lot. Does anyone know 
>> in-depth what an image is doing? How to investigate? Maybe there are a lot 
>> of native polling things involved, too? 
>> I need to dig deeper.
> 
> Killing as much non-needed process is certainly step one. A clean image has 
> these processes:
> 
> 1. Delay scheduling process
> 2. Input events fetching process
> 3. The low space watcher
> 4. The weak array finalization process
> 5. Morphic UI process
> 6. The idle process
> 
> So you killed 5. How did you do that exactly ?

I didn't kill it. I just did

MorphicUIManager default uiProcess suspend

> Is #serverMode still relevant when 5 is gone ?

I was asking myself the same question.

> Would it be possible to kill 2 ? Is it needed for a headless server ? 

That could be one of the more busy processes. So if we stop 5. there is no 
point in running 2., right? Or asking the other way round: What is included in 
input events fetching? keyboard and mouse or something else, too?

> As long as file and socket IO keeps working, we're good.
> 
Yes and it is quite interesting to see how much polling is going on there. I 
think those two are the ones that would benefit the most from having an event 
based native adaption.

Norbert

> The rest is probably all needed.
> 
> Are there any (slightly busy) processes inside the VM that we can't see at 
> the Smalltalk level ? 
> 

>> Norbert
>> 
>>> Phil
>>> 
>>> 
>>> On Mon, May 27, 2013 at 10:07 AM, Norbert Hartl  wrote:
>>> 
>>> Am 27.05.2013 um 09:49 schrieb Sven Van Caekenberghe :
>>> 
 BTW, load & cpu usage numbers can be very hard to interpret. 
>>> 
>>> really? CPU usage is pretty easy and you can see this in most OSses 
>>> directly. 100% CPU usage is full :) Load isn't that much harder. It's just 
>>> the load of the scheduler queue. So if some needs a rule of thumb
>>> 
>>> safe CPU load = number of cores/processes * 0.7
>>> theoretical optimal CPU load = number of core/processes
>>> 
>>> Everything above should really be investigated because you entered the zone 
>>> where  additional CPU load can drive your machine unresponsive. 
>>> You have less CPU usage but high load? Investigate I/O usage! 
>>> 
>>> I know you know that, Sven. I just wanted to mention it because this comes 
>>> up from time to time. Compared to memory consumption, CPU, scheduler and 
>>> I/O are easier targets IMHO.
>>> 
>>> For Phil the point isn't the health of the system. It is EC2. You have to 
>>> pay for the CPU usage on EC2 so I think he had the impression there is room 
>>> for improvement. And indeed there is. But if you calculate it through it 
>>> isn't really a factor.
>>> 
>>> Norbert
>>> 
>>> 
>> 
> 
> 




Re: [Pharo-dev] Reflectivity beta

2013-05-31 Thread Camille Teruel

On 31 mai 2013, at 11:16, Pavel Krivanek wrote:

> Really cool! Has anyone already tried to build coverage tests based on it?

Not yet, that's brand new stuff so nobody did anything with it.

> -- Pavel
> 
> On Thu, May 30, 2013 at 6:15 PM, Camille Teruel  
> wrote:
> Hello everyone,
> 
> Reflectivity beta is out ! 
> 
> Reflectivity is a tool that permit to annotate AST nodes with "metalinks". 
> You can put metalinks at different "positions":
> before: the metalink is executed before the node
> instead: the metalink is executed instead the node
> after: the metalink is executed after the node
> onError: the metalink is executed only if the execution of the node raises an 
> error
> onSuccess: the metalink is executed only if the execution of the node raises 
> no error
> 
> When you put metalinks on some node of a method's AST, a wrapper is installed 
> in place of the method. When executed, this wrapper compiles an expanded 
> version of the AST that takes metalinks into account and install the 
> resulting compiled method.
> 
> Examples:
> 
> increaseAllNumbersIn: aCompiledMethod
>   "A method that increases all numbers in aCompiledMethod"
>   aCompiledMethod reflectiveAST 
>   forAllNodes: [ :node | node isLiteral and: [ node value 
> isNumber ] ]
>   putInstead: [ :node | RFMetalink fromExpression: (node value + 
> 1) asString ].
> 
> removeMetalinksIn: aCompiledMethod
>   aCompiledMethod reflectiveAST removeAllMetalinks
> 
> In nautilus, you have a menu entry called 'Edit metalinks' that permit to 
> edit the metalinks of the node corresponding to the selected piece of code. 
> As an example use case, another entry called 'Put breakpoint' adds a metalink 
> that corresponds to 'Halt now' before the selected node.
> 
> Remember that it is a beta, so you might find errors and things are likely to 
> change.
> 
> You can load Reflectivity with:
>  
> Gofer it
>   smalltalkhubUser: 'RMoD' project: 'Reflectivity';
>   configuration;
>   loadDevelopment
> 
> Or you can download it from RMoD's CI:
> https://ci.inria.fr/rmod/job/Reflectivity/
> 
> Camille
> 



Re: [Pharo-dev] Keeping Pharo CPU usage low: how?

2013-05-31 Thread Igor Stasenko
On 31 May 2013 11:26, Norbert Hartl  wrote:
>
> Am 27.05.2013 um 10:17 schrieb p...@highoctane.be:
>
> I was looking at the output of "top" for while and Pharo was trusting the
> top spot indeed.
>
> Well, I'll look at all that this evening and give back the impressions.
>
> I want to run several instances of Pharo on the box and it will for sure add
> up. Say, 20 x 2% gives an awful lot.
>
> What is the use of having 20 idle images on one server? :)  I think you
> can't easily say that it always adds on top. If your image is running at
> 100% the 2% off even if fully countable wouldn't be that much. But
> nevertheless it is a valid point and I cannot see pharo becomes more modern
> by stop polling in the mid-term future.
> Anyway I played a little bit with the tweaks and there are things that make
> me wonder. I raised the limit for server mode but didn't get much benefit.
> Having a cycle pause of 100ms in serverMode and stopping the ui process
> still gave me a 1% CPU usage which is really a lot. Does anyone know
> in-depth what an image is doing? How to investigate? Maybe there are a lot
> of native polling things involved, too?
> I need to dig deeper.
>

each ms, a heartbeat thread wakes up and triggers interrupt processing.
this is equivalent to polling each 1ms

just yesterday we discussed this.. the problem  is how to avoid
interrupt processing
each ms and support green threading at same time.
i know that hardware given plenty of opportunities to do that.. but
the problem is that
most of it available only in privileged mode.

i hate to see that: hardware allows much better scheduling handling, but we're
doomed to use ineffective scheme, because of OS limitations.


> Norbert
>
> Phil
>

-- 
Best regards,
Igor Stasenko.



Re: [Pharo-dev] Keeping Pharo CPU usage low: how?

2013-05-31 Thread Marcus Denker

On May 31, 2013, at 11:39 AM, Sven Van Caekenberghe  wrote:

> 
> On 31 May 2013, at 11:26, Norbert Hartl  wrote:
> 
>> 
>> Am 27.05.2013 um 10:17 schrieb p...@highoctane.be:
>> 
>>> I was looking at the output of "top" for while and Pharo was trusting the 
>>> top spot indeed.
>>> 
>>> Well, I'll look at all that this evening and give back the impressions.
>>> 
>>> I want to run several instances of Pharo on the box and it will for sure 
>>> add up. Say, 20 x 2% gives an awful lot.
>>> 
>> What is the use of having 20 idle images on one server? :)  I think you 
>> can't easily say that it always adds on top. If your image is running at 
>> 100% the 2% off even if fully countable wouldn't be that much. But 
>> nevertheless it is a valid point and I cannot see pharo becomes more modern 
>> by stop polling in the mid-term future.
>> Anyway I played a little bit with the tweaks and there are things that make 
>> me wonder. I raised the limit for server mode but didn't get much benefit. 
>> Having a cycle pause of 100ms in serverMode and stopping the ui process 
>> still gave me a 1% CPU usage which is really a lot. Does anyone know 
>> in-depth what an image is doing? How to investigate? Maybe there are a lot 
>> of native polling things involved, too? 
>> I need to dig deeper.
> 
> Killing as much non-needed process is certainly step one. A clean image has 
> these processes:
> 
> 1. Delay scheduling process
> 2. Input events fetching process
> 3. The low space watcher
> 4. The weak array finalization process
> 5. Morphic UI process
> 6. The idle process
> 
> So you killed 5. How did you do that exactly ?
> Is #serverMode still relevant when 5 is gone ?
> Would it be possible to kill 2 ? Is it needed for a headless server ? 
> As long as file and socket IO keeps working, we're good.
> 
> The rest is probably all needed.

Did you try the server mode?

WorldState serverMode: true.

Marcus


Re: [Pharo-dev] Trait exclusions

2013-05-31 Thread Damien Cassou
Hi Frank,

On Wed, May 29, 2013 at 11:45 PM, Frank Shearar  wrote:
> I have a Trait TGroup that requires #*, #identity and #inverse. I want
> to construct a TField by composing TGroup with itself. One TGroup will
> form the operations #*, #one, and #reciprocal while the other will
> form #+, #zero and #negated.
>
> I don't want #identity or #inverse, because these apply to one
> operation, and it makes TField's API ambiguous. That's what
> TraitExclusion is for.

maybe a diagram would help

--
Damien Cassou
http://damiencassou.seasidehosting.st

"Success is the ability to go from one failure to another without
losing enthusiasm."
Winston Churchill



Re: [Pharo-dev] Keeping Pharo CPU usage low: how?

2013-05-31 Thread Norbert Hartl

Am 31.05.2013 um 12:57 schrieb Marcus Denker :

> 
> On May 31, 2013, at 11:39 AM, Sven Van Caekenberghe  wrote:
> 
>> 
>> On 31 May 2013, at 11:26, Norbert Hartl  wrote:
>> 
>>> 
>>> Am 27.05.2013 um 10:17 schrieb p...@highoctane.be:
>>> 
 I was looking at the output of "top" for while and Pharo was trusting the 
 top spot indeed.
 
 Well, I'll look at all that this evening and give back the impressions.
 
 I want to run several instances of Pharo on the box and it will for sure 
 add up. Say, 20 x 2% gives an awful lot.
 
>>> What is the use of having 20 idle images on one server? :)  I think you 
>>> can't easily say that it always adds on top. If your image is running at 
>>> 100% the 2% off even if fully countable wouldn't be that much. But 
>>> nevertheless it is a valid point and I cannot see pharo becomes more modern 
>>> by stop polling in the mid-term future.
>>> Anyway I played a little bit with the tweaks and there are things that make 
>>> me wonder. I raised the limit for server mode but didn't get much benefit. 
>>> Having a cycle pause of 100ms in serverMode and stopping the ui process 
>>> still gave me a 1% CPU usage which is really a lot. Does anyone know 
>>> in-depth what an image is doing? How to investigate? Maybe there are a lot 
>>> of native polling things involved, too? 
>>> I need to dig deeper.
>> 
>> Killing as much non-needed process is certainly step one. A clean image has 
>> these processes:
>> 
>> 1. Delay scheduling process
>> 2. Input events fetching process
>> 3. The low space watcher
>> 4. The weak array finalization process
>> 5. Morphic UI process
>> 6. The idle process
>> 
>> So you killed 5. How did you do that exactly ?
>> Is #serverMode still relevant when 5 is gone ?
>> Would it be possible to kill 2 ? Is it needed for a headless server ? 
>> As long as file and socket IO keeps working, we're good.
>> 
>> The rest is probably all needed.
> 
> Did you try the server mode?
> 
> WorldState serverMode: true.

I did and it doesn't make a big difference what makes me wonder. So having 
quite some CPU usage with a static 50ms delay does mean that every cycle does 
many things or the CPU usage is not UI bound.

Norbert


[Pharo-dev] using fogbugz for other projects (like moose)

2013-05-31 Thread Tudor Girba
Hi,

Would it be possible and desired, to open the Pharo fogbugz infrastructure
for other related projects?

Namely, I am thinking of Moose, in particular given that various issues are
directly relevant for Pharo as well? For projects like Moose, this would
imply less costs. The question is if something in this direction is even
desired.

Cheers,
Doru

-- 
www.tudorgirba.com

"Every thing has its own flow"


Re: [Pharo-dev] Running coverage breaks the VM

2013-05-31 Thread Igor Stasenko
On 31 May 2013 09:20, Guillermo Polito  wrote:
> Ahh, that's why the code in CoInterpreter I was looking didn't match the C
> code :D. Was looking at the wrong place, hehe.
>
> Igor, why do you say that this method should be reached only with vanilla
> compiled methods? From the comment I understand
>
>   "For interpreter performance and to ease the objectAsMethod
> implementation eagerly
>  evaluate the primtiive, i.e. if the method is cogged and has a
> primitive /do not/ evaluate
>  the machine code primitive, just evaluate primitiveFunctionPointer
> directly."
>

Yes, my bad..
It is hard to see that in code: the logic to handle objects-as-method.
So, yes, please fix executNewMethod and internalExecuteNewMethod with
this additional check.

> And in #addNewMethodToCache: there is as a first statement:
>
> [...]
> (objectMemory isOopCompiledMethod: newMethod)
> ifTrue:
> [primitiveIndex := self primitiveIndexOf: newMethod.
> primitiveFunctionPointer := self functionPointerFor: primitiveIndex inClass:
> class]
> ifFalse:
> [primitiveFunctionPointer := #primitiveInvokeObjectAsMethod].
> [...]
>
> So I'd say that both objects as methods and primitives are kind of handled
> in the same way after?
>
>
>
> On Fri, May 31, 2013 at 2:27 AM, Igor Stasenko  wrote:
>>
>> On 30 May 2013 20:06, Guillermo Polito  wrote:
>> > Ok, I was playing with flushing caches and stuff... Its still a bit
>> > obsure
>> > to me why the example in the workspace works and the code coverage
>> > doesnot.
>> >
>> > However, I managed to hack the VM to make it work :).
>> >
>> > It looks like the VM is treating the objects as methods, as cog methods.
>> > So
>> > I added the following validation in the commonSend:
>> >
>> > methodHeader2 = longAt((GIV(newMethod) + BaseHeaderSize) + (HeaderIndex
>> > <<
>> > ShiftForWord));
>> >
>> > if (isCogMethodReference(methodHeader2) &&
>> > isCompiledMethodHeader(methodHeader2)) {
>> >
>> > /* begin externalizeIPandSP */
>> >
>> > assertusqInt)localIP)) != (ceReturnToInterpreterPC()));
>> >
>> > GIV(instructionPointer) = oopForPointer(localIP);
>> >
>> > GIV(stackPointer) = localSP;
>> >
>> > GIV(framePointer) = localFP;
>> >
>> > executeCoggedNewMethodmethodHeader(1, methodHeader2);
>> >
>> > }
>> >
>> >
>> > And it works :).
>> >
>> > I cc Eliot, so maybe he has an idea...
>> >
>> I touched this code.
>>
>> Original:
>>
>> CoInterpreter>>internalExecuteNewMethod
>> 
>> "For interpreter performance and to ease the objectAsMethod
>> implementation eagerly
>>  evaluate the primtiive, i.e. if the method is cogged and has a
>> primitive /do not/ evaluate
>>  the machine code primitive, just evaluate
>> primitiveFunctionPointer directly."
>> primitiveFunctionPointer ~= 0 ifTrue:
>> [| succeeded |
>>  self isPrimitiveFunctionPointerAnIndex ifTrue:
>> [^self internalQuickPrimitiveResponse].
>>  "slowPrimitiveResponse may of course context-switch.  If
>> so we must
>> reenter the
>>   new process appropriately, returning only if we've found
>> an
>> interpreter frame."
>>  self externalizeIPandSP.
>>  succeeded := self slowPrimitiveResponse.
>>  instructionPointer = cogit ceReturnToInterpreterPC
>> ifTrue:
>> [instructionPointer := self iframeSavedIP:
>> framePointer].
>>  self internalizeIPandSP.
>>  succeeded ifTrue:
>> [self return: self popStack toExecutive: true.
>>  self browserPluginReturnIfNeeded.
>> ^nil]].
>> "if not primitive, or primitive failed, activate the method"
>> (self methodHasCogMethod: newMethod)
>> ifTrue: [self iframeSavedIP: localFP put: localIP
>> asInteger.
>> instructionPointer := cogit
>> ceReturnToInterpreterPC.
>> self externalizeFPandSP.
>> self activateCoggedNewMethod: true.
>> self internalizeIPandSP]
>> ifFalse: [self internalActivateNewMethod]
>>
>> Now in subclass (NBCoInterpreter)
>> i made this:
>>
>> internalExecuteNewMethod
>> 
>> "For interpreter performance and to ease the objectAsMethod
>> implementation eagerly
>>  evaluate the primtiive, i.e. if the method is cogged and has a
>> primitive /do not/ evaluate
>>  the machine code primitive, just evaluate
>> primitiveFunctionPointer directly."
>>
>> | methodHeader |
>>
>> methodHeader := self rawHeaderOf: newMethod.
>>
>> (self isCogMethodReference: methodHeader) ifTrue: [
>> self externalizeIPandSP.
>> self executeCoggedNewMethod: true methodHeader:
>> methodHeader.
>> "we never reach here"
>> ].
>>
>

Re: [Pharo-dev] RPackage and overrides

2013-05-31 Thread Igor Stasenko
On 31 May 2013 09:00, Norbert Hartl  wrote:
>
>
> Am 31.05.2013 um 02:56 schrieb Igor Stasenko :
>
>> ohohoho.. selector namespaces.. sounds like using nuclear weapon to
>> get rid of cockroaches:
>
> You know that cockroaches are the ones that will survive a nuclear strike ? :)
>
yes, i know. And that's why i was using this metaphor :)

> Norbert



-- 
Best regards,
Igor Stasenko.



Re: [Pharo-dev] Trait exclusions

2013-05-31 Thread Frank Shearar
On 31 May 2013 12:01, Damien Cassou  wrote:
> Hi Frank,
>
> On Wed, May 29, 2013 at 11:45 PM, Frank Shearar  
> wrote:
>> I have a Trait TGroup that requires #*, #identity and #inverse. I want
>> to construct a TField by composing TGroup with itself. One TGroup will
>> form the operations #*, #one, and #reciprocal while the other will
>> form #+, #zero and #negated.
>>
>> I don't want #identity or #inverse, because these apply to one
>> operation, and it makes TField's API ambiguous. That's what
>> TraitExclusion is for.
>
> maybe a diagram would help

In explaining the problem, or an an alternative to the crazy
composition? I rather think that this - which doesn't work, and
prompted the question in the first place - is rather readable... _and
executable_:

(TGroup @ {#* -> #+. #inverse -> #negated. #identity -> #zero} +
TGroup @ {#inverse -> #reciprocal. #identity -> #zero}) - {#identity.
#inverse}

What I don't understand is
(a) why exclusion only applies to the rightmost trait in the composition and
(b) why aliases either break (in Pharo [1]) or do nothing (in Squeak),
where I'd expected to see implementations saying "self requirement".

frank

[1] https://pharo.fogbugz.com/default.asp?10803#78542



[Pharo-dev] Lowecase class names

2013-05-31 Thread Jan Vrany

Hi

is there any reason why class builder does not allow lowercase
classnames? Underscore is allowed, though.

Jan



Re: [Pharo-dev] Trait exclusions

2013-05-31 Thread Stéphane Ducasse

On May 31, 2013, at 1:28 PM, Frank Shearar  wrote:

> On 31 May 2013 12:01, Damien Cassou  wrote:
>> Hi Frank,
>> 
>> On Wed, May 29, 2013 at 11:45 PM, Frank Shearar  
>> wrote:
>>> I have a Trait TGroup that requires #*, #identity and #inverse. I want
>>> to construct a TField by composing TGroup with itself. One TGroup will
>>> form the operations #*, #one, and #reciprocal while the other will
>>> form #+, #zero and #negated.
>>> 
>>> I don't want #identity or #inverse, because these apply to one
>>> operation, and it makes TField's API ambiguous. That's what
>>> TraitExclusion is for.
>> 
>> maybe a diagram would help
> 
> In explaining the problem, or an an alternative to the crazy
> composition? I rather think that this - which doesn't work, and
> prompted the question in the first place - is rather readable... _and
> executable_:
> 
>(TGroup @ {#* -> #+. #inverse -> #negated. #identity -> #zero} +
> TGroup @ {#inverse -> #reciprocal. #identity -> #zero}) - {#identity.
> #inverse}
> 
> What I don't understand is
> (a) why exclusion only applies to the rightmost trait in the composition and
> (b) why aliases either break (in Pharo [1])

do they?


> or do nothing (in Squeak),
> where I'd expected to see implementations saying "self requirement".

we removed self requirement because it was slow to compute in interactive mode. 
> 
> frank
> 
> [1] https://pharo.fogbugz.com/default.asp?10803#78542
> 




Re: [Pharo-dev] using fogbugz for other projects (like moose)

2013-05-31 Thread Stéphane Ducasse
We could create a tag for moose without problem I guess.
I will let the experts answer.

Stef
> Hi,
> 
> Would it be possible and desired, to open the Pharo fogbugz infrastructure 
> for other related projects?
> 
> Namely, I am thinking of Moose, in particular given that various issues are 
> directly relevant for Pharo as well? For projects like Moose, this would 
> imply less costs. The question is if something in this direction is even 
> desired.
> 
> Cheers,
> Doru
> 
> -- 
> www.tudorgirba.com
> 
> "Every thing has its own flow"



[Pharo-dev] [update 3.0] #30176

2013-05-31 Thread Marcus Denker
30176
-

10770 Comment of on:send:to:
https://pharo.fogbugz.com/f/cases/10770

10805 Obsolete behaviors remaining: an 
Array(AnObsoleteDefaultCommandLineHandler class 
AnObsoleteDefaultCommandLineHandler)
https://pharo.fogbugz.com/f/cases/10805

10811 Add an InvalidUTF8 exception
https://pharo.fogbugz.com/f/cases/10811

Diff information:
http://smalltalkhub.com/mc/Pharo/Pharo30/main/Zinc-Character-Encoding-Core-MarcusDenker.9.diff
http://smalltalkhub.com/mc/Pharo/Pharo30/main/System-CommandLine-MarcusDenker.125.diff
http://smalltalkhub.com/mc/Pharo/Pharo30/main/Multilingual-TextConversion-MarcusDenker.48.diff
http://smalltalkhub.com/mc/Pharo/Pharo30/main/Announcements-Core-MarcusDenker.42.diff




Re: [Pharo-dev] using fogbugz for other projects (like moose)

2013-05-31 Thread Tudor Girba
If I understand correctly, the tag is used to denote the component. In the
case of Moose we have multiple of these sub-components and somehow they
would need to be captured. Looking at the existing tracker, we have the
categories as listed below.

Perhaps this would pollute too much the Pharo space?

Component-MooseCore
Component-Famix
Component-SmalltalkImporter
Component-RPackage
Component-Mondrian   = Visualization engine
Component-Roassal= Visualization engine
Component-Glamour
Component-Glamour-Seaside
Component-Algos
Component-Fame
Component-Finder = Issue relates to program UI
Component-Install= Utility and installation scripts
Component-Docs   = Issue relates to end-user documentation
Component-MooseTools
Component-ExternalTools = External tools such as inFusion, srcML, VerveineJ
Component-Test
Component-CAnalyzer  = FAMIX extension dedicated to C
Component-DSM
Component-SmallDude
Component-XML= XMLParser and Pastell (XPath query facility)
Component-Spy= The Spy profiling framework
Component-Hapao  = The Hapao test coverage tool
Component-PetitParser
Component-AutoMoose
Component-Arki
Component-VerveineJ
Component-VerveineCSharp
Component-EyeSee
Component-Metanool
Component-GlamorousToolkit

Cheers,
Doru




On Fri, May 31, 2013 at 1:33 PM, Stéphane Ducasse  wrote:

> We could create a tag for moose without problem I guess.
> I will let the experts answer.
>
> Stef
>
> Hi,
>
> Would it be possible and desired, to open the Pharo fogbugz infrastructure
> for other related projects?
>
> Namely, I am thinking of Moose, in particular given that various issues
> are directly relevant for Pharo as well? For projects like Moose, this
> would imply less costs. The question is if something in this direction is
> even desired.
>
> Cheers,
> Doru
>
> --
> www.tudorgirba.com
>
> "Every thing has its own flow"
>
>
>


-- 
www.tudorgirba.com

"Every thing has its own flow"


Re: [Pharo-dev] Trait exclusions

2013-05-31 Thread Frank Shearar
On 31 May 2013 12:32, Stéphane Ducasse  wrote:
>
> On May 31, 2013, at 1:28 PM, Frank Shearar  wrote:
>
>> On 31 May 2013 12:01, Damien Cassou  wrote:
>>> Hi Frank,
>>>
>>> On Wed, May 29, 2013 at 11:45 PM, Frank Shearar  
>>> wrote:
 I have a Trait TGroup that requires #*, #identity and #inverse. I want
 to construct a TField by composing TGroup with itself. One TGroup will
 form the operations #*, #one, and #reciprocal while the other will
 form #+, #zero and #negated.

 I don't want #identity or #inverse, because these apply to one
 operation, and it makes TField's API ambiguous. That's what
 TraitExclusion is for.
>>>
>>> maybe a diagram would help
>>
>> In explaining the problem, or an an alternative to the crazy
>> composition? I rather think that this - which doesn't work, and
>> prompted the question in the first place - is rather readable... _and
>> executable_:
>>
>>(TGroup @ {#* -> #+. #inverse -> #negated. #identity -> #zero} +
>> TGroup @ {#inverse -> #reciprocal. #identity -> #zero}) - {#identity.
>> #inverse}
>>
>> What I don't understand is
>> (a) why exclusion only applies to the rightmost trait in the composition and
>> (b) why aliases either break (in Pharo [1])
>
> do they?

I'm not sure what "they" refers to. Assuming you meant "do aliases
break in Pharo?" yes they do: the alias expects the new name to
already exist in the method dictionary. So if you write your trait

Trait named: #TMyTrait
uses: TSomething @ {#aMethod -> #notWrittenYet}
category: 'Thing'

then you get a KeyNotFound because TMyTrait doesn't have
#notWrittenYet in its method dictionary. It should be fairly easy to
fix; I just raised the ticket.

If you meant "do exclusions only apply to the rightmost trait?", yes
they do. The comment in both Pharo and Squeak say that - binds tighter
than @ or +. That's fine. To me, that would mean that S + T @ {#m ->
#z} - {#m} would remove #m from T. But I thought that (S + T @ {#m -
#z}) - {#m} would mean "remove m from S + T @ {#m - #z}", but it
doesn't. That might simply be a TraitComposition bug. I don't know,
which is why I'm asking :)

>> or do nothing (in Squeak),
>> where I'd expected to see implementations saying "self requirement".
>
> we removed self requirement because it was slow to compute in interactive 
> mode.

Ah, ok. Fair enough!

frank

>> frank
>>
>> [1] https://pharo.fogbugz.com/default.asp?10803#78542



Re: [Pharo-dev] Amber's new stepping debugger

2013-05-31 Thread kilon
Amazing work Nicolas , the debugger is a huge reason why I Love smalltalk so
much. Makes the use of amber very compelling. 



--
View this message in context: 
http://forum.world.st/Pharo-dev-Amber-s-new-stepping-debugger-tp4690847p4690988.html
Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.



Re: [Pharo-dev] A screenshot we should remind today

2013-05-31 Thread kilon
Kinda ironic that I code for fun since 1988 , learned so many programming
languages but only recently I heard about this interesting language called
"Smalltalk". It could have ended my search very soon if I did started with
smalltalk instead , but alas :D



--
View this message in context: 
http://forum.world.st/Pharo-dev-A-screenshot-we-should-remind-today-tp4690921p4690989.html
Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.



Re: [Pharo-dev] Running coverage breaks the VM

2013-05-31 Thread Guillermo Polito
It is fixed in latest vm (which you can get from the zeroconf script
http://get.pharo.org/vmLatest) :).

Guille


On Fri, May 31, 2013 at 1:25 PM, Igor Stasenko  wrote:

> On 31 May 2013 09:20, Guillermo Polito  wrote:
> > Ahh, that's why the code in CoInterpreter I was looking didn't match the
> C
> > code :D. Was looking at the wrong place, hehe.
> >
> > Igor, why do you say that this method should be reached only with vanilla
> > compiled methods? From the comment I understand
> >
> >   "For interpreter performance and to ease the objectAsMethod
> > implementation eagerly
> >  evaluate the primtiive, i.e. if the method is cogged and has a
> > primitive /do not/ evaluate
> >  the machine code primitive, just evaluate
> primitiveFunctionPointer
> > directly."
> >
>
> Yes, my bad..
> It is hard to see that in code: the logic to handle objects-as-method.
> So, yes, please fix executNewMethod and internalExecuteNewMethod with
> this additional check.
>
> > And in #addNewMethodToCache: there is as a first statement:
> >
> > [...]
> > (objectMemory isOopCompiledMethod: newMethod)
> > ifTrue:
> > [primitiveIndex := self primitiveIndexOf: newMethod.
> > primitiveFunctionPointer := self functionPointerFor: primitiveIndex
> inClass:
> > class]
> > ifFalse:
> > [primitiveFunctionPointer := #primitiveInvokeObjectAsMethod].
> > [...]
> >
> > So I'd say that both objects as methods and primitives are kind of
> handled
> > in the same way after?
> >
> >
> >
> > On Fri, May 31, 2013 at 2:27 AM, Igor Stasenko 
> wrote:
> >>
> >> On 30 May 2013 20:06, Guillermo Polito 
> wrote:
> >> > Ok, I was playing with flushing caches and stuff... Its still a bit
> >> > obsure
> >> > to me why the example in the workspace works and the code coverage
> >> > doesnot.
> >> >
> >> > However, I managed to hack the VM to make it work :).
> >> >
> >> > It looks like the VM is treating the objects as methods, as cog
> methods.
> >> > So
> >> > I added the following validation in the commonSend:
> >> >
> >> > methodHeader2 = longAt((GIV(newMethod) + BaseHeaderSize) +
> (HeaderIndex
> >> > <<
> >> > ShiftForWord));
> >> >
> >> > if (isCogMethodReference(methodHeader2) &&
> >> > isCompiledMethodHeader(methodHeader2)) {
> >> >
> >> > /* begin externalizeIPandSP */
> >> >
> >> > assertusqInt)localIP)) != (ceReturnToInterpreterPC()));
> >> >
> >> > GIV(instructionPointer) = oopForPointer(localIP);
> >> >
> >> > GIV(stackPointer) = localSP;
> >> >
> >> > GIV(framePointer) = localFP;
> >> >
> >> > executeCoggedNewMethodmethodHeader(1, methodHeader2);
> >> >
> >> > }
> >> >
> >> >
> >> > And it works :).
> >> >
> >> > I cc Eliot, so maybe he has an idea...
> >> >
> >> I touched this code.
> >>
> >> Original:
> >>
> >> CoInterpreter>>internalExecuteNewMethod
> >> 
> >> "For interpreter performance and to ease the objectAsMethod
> >> implementation eagerly
> >>  evaluate the primtiive, i.e. if the method is cogged and has a
> >> primitive /do not/ evaluate
> >>  the machine code primitive, just evaluate
> >> primitiveFunctionPointer directly."
> >> primitiveFunctionPointer ~= 0 ifTrue:
> >> [| succeeded |
> >>  self isPrimitiveFunctionPointerAnIndex ifTrue:
> >> [^self internalQuickPrimitiveResponse].
> >>  "slowPrimitiveResponse may of course context-switch.
>  If
> >> so we must
> >> reenter the
> >>   new process appropriately, returning only if we've
> found
> >> an
> >> interpreter frame."
> >>  self externalizeIPandSP.
> >>  succeeded := self slowPrimitiveResponse.
> >>  instructionPointer = cogit ceReturnToInterpreterPC
> >> ifTrue:
> >> [instructionPointer := self iframeSavedIP:
> >> framePointer].
> >>  self internalizeIPandSP.
> >>  succeeded ifTrue:
> >> [self return: self popStack toExecutive: true.
> >>  self browserPluginReturnIfNeeded.
> >> ^nil]].
> >> "if not primitive, or primitive failed, activate the method"
> >> (self methodHasCogMethod: newMethod)
> >> ifTrue: [self iframeSavedIP: localFP put: localIP
> >> asInteger.
> >> instructionPointer := cogit
> >> ceReturnToInterpreterPC.
> >> self externalizeFPandSP.
> >> self activateCoggedNewMethod: true.
> >> self internalizeIPandSP]
> >> ifFalse: [self internalActivateNewMethod]
> >>
> >> Now in subclass (NBCoInterpreter)
> >> i made this:
> >>
> >> internalExecuteNewMethod
> >> 
> >> "For interpreter performance and to ease the objectAsMethod
> >> implementation eagerly
> >>  evaluate the primtiive, i.e. if the method is cogged and has a
> >> primitive /do not/ evalu

[Pharo-dev] Release Artefact 1.0, the PDF framework

2013-05-31 Thread Guillaume Larcheveque
We are proud to announce that Artefact is available in 1.0 version.

You can download it from: http://smalltalkhub.com/#!/~RMoD/Artefact

Artefact is a framework to generate PDF documents. It is fully written in
Smalltalk and doesn't require any native library. Artefact is light,
platform independant and offer to users a high level of abstraction in
order to easily creating PDF documents.

 * completely written in Smalltalk (and only Smalltalk),
 * complete freedom about the order of creation for pages, elements... (no
need to follow the document order)
 * multi format and orientation for pages
 * page composition based on reusables PDF elements,
 * extensibility by offering a composition standard to create your own high
level elements
 * styleSheet that can be reused in many documents and avoid wasting time
and place with duplication
 * image support with the JPEG format
 * pre-defined high level elements like datagrid
 * support PDF compression to produce compact files

A basic documentation is available in the help browser. Many examples are
implemented in the PDFDemos class.

-- 
*Olivier Auverlot and Guillaume Larcheveque*


Re: [Pharo-dev] using fogbugz for other projects (like moose)

2013-05-31 Thread Camillo Bruni
Humm, I would say this is overkill :P, there would be more Moose projects than 
Pharo ones.
So far we followed the strategy of having 1 fogbugz project per external 
project.

On 2013-05-31, at 13:52, Tudor Girba  wrote:

> If I understand correctly, the tag is used to denote the component. In the
> case of Moose we have multiple of these sub-components and somehow they
> would need to be captured. Looking at the existing tracker, we have the
> categories as listed below.
> 
> Perhaps this would pollute too much the Pharo space?
> 
> Component-MooseCore
> Component-Famix
> Component-SmalltalkImporter
> Component-RPackage
> Component-Mondrian   = Visualization engine
> Component-Roassal= Visualization engine
> Component-Glamour
> Component-Glamour-Seaside
> Component-Algos
> Component-Fame
> Component-Finder = Issue relates to program UI
> Component-Install= Utility and installation scripts
> Component-Docs   = Issue relates to end-user documentation
> Component-MooseTools
> Component-ExternalTools = External tools such as inFusion, srcML, VerveineJ
> Component-Test
> Component-CAnalyzer  = FAMIX extension dedicated to C
> Component-DSM
> Component-SmallDude
> Component-XML= XMLParser and Pastell (XPath query facility)
> Component-Spy= The Spy profiling framework
> Component-Hapao  = The Hapao test coverage tool
> Component-PetitParser
> Component-AutoMoose
> Component-Arki
> Component-VerveineJ
> Component-VerveineCSharp
> Component-EyeSee
> Component-Metanool
> Component-GlamorousToolkit
> 
> Cheers,
> Doru
> 
> 
> 
> 
> On Fri, May 31, 2013 at 1:33 PM, Stéphane Ducasse > wrote:
> 
>> We could create a tag for moose without problem I guess.
>> I will let the experts answer.
>> 
>> Stef
>> 
>> Hi,
>> 
>> Would it be possible and desired, to open the Pharo fogbugz infrastructure
>> for other related projects?
>> 
>> Namely, I am thinking of Moose, in particular given that various issues
>> are directly relevant for Pharo as well? For projects like Moose, this
>> would imply less costs. The question is if something in this direction is
>> even desired.
>> 
>> Cheers,
>> Doru
>> 
>> --
>> www.tudorgirba.com
>> 
>> "Every thing has its own flow"
>> 
>> 
>> 
> 
> 
> -- 
> www.tudorgirba.com
> 
> "Every thing has its own flow"




Re: [Pharo-dev] using fogbugz for other projects (like moose)

2013-05-31 Thread Clément Bera
Actually in fogbugz you have project and area. For example if you create a
bug on project Mate you can choose between Mate DSL, Mate SSA or Virtual
CPU in the area select box.

So you could do something similar for moose and then we would only see 1
label moose in project select box. So I think Moose can be added to the bug
tracker without 'polluting' the Pharo space this way.



2013/5/31 Tudor Girba 

> If I understand correctly, the tag is used to denote the component. In the
> case of Moose we have multiple of these sub-components and somehow they
> would need to be captured. Looking at the existing tracker, we have the
> categories as listed below.
>
> Perhaps this would pollute too much the Pharo space?
>
> Component-MooseCore
> Component-Famix
> Component-SmalltalkImporter
> Component-RPackage
> Component-Mondrian   = Visualization engine
> Component-Roassal= Visualization engine
> Component-Glamour
> Component-Glamour-Seaside
> Component-Algos
> Component-Fame
> Component-Finder = Issue relates to program UI
> Component-Install= Utility and installation scripts
> Component-Docs   = Issue relates to end-user documentation
> Component-MooseTools
> Component-ExternalTools = External tools such as inFusion, srcML, VerveineJ
> Component-Test
> Component-CAnalyzer  = FAMIX extension dedicated to C
> Component-DSM
> Component-SmallDude
> Component-XML= XMLParser and Pastell (XPath query facility)
> Component-Spy= The Spy profiling framework
> Component-Hapao  = The Hapao test coverage tool
> Component-PetitParser
> Component-AutoMoose
> Component-Arki
> Component-VerveineJ
> Component-VerveineCSharp
> Component-EyeSee
> Component-Metanool
> Component-GlamorousToolkit
>
> Cheers,
> Doru
>
>
>
>
> On Fri, May 31, 2013 at 1:33 PM, Stéphane Ducasse <
> stephane.duca...@inria.fr> wrote:
>
>> We could create a tag for moose without problem I guess.
>> I will let the experts answer.
>>
>> Stef
>>
>> Hi,
>>
>> Would it be possible and desired, to open the Pharo fogbugz
>> infrastructure for other related projects?
>>
>> Namely, I am thinking of Moose, in particular given that various issues
>> are directly relevant for Pharo as well? For projects like Moose, this
>> would imply less costs. The question is if something in this direction is
>> even desired.
>>
>> Cheers,
>> Doru
>>
>> --
>> www.tudorgirba.com
>>
>> "Every thing has its own flow"
>>
>>
>>
>
>
> --
> www.tudorgirba.com
>
> "Every thing has its own flow"
>



-- 
Clément Béra
Mate Virtual Machine Engineer
Bâtiment B 40, avenue Halley 59650 *Villeneuve d'Ascq*


Re: [Pharo-dev] Lowecase class names

2013-05-31 Thread Marcus Denker

On May 31, 2013, at 1:32 PM, Jan Vrany  wrote:

> Hi
> 
> is there any reason why class builder does not allow lowercase
> classnames? Underscore is allowed, though.
> 

In the past people started too add check to make sure that we only use
the naming that people are supposed to use.
The place these checks where placed was the class builder. Over time
it has shown that this is not good: it has do be done on a higher level.

(we already removed certain checks, e.g. about variable capitalization).

We should at some point introduce something that does these kinds of checks
for the tools, but allows one to just do anything when needed at the lower 
level…

Marcus




Re: [Pharo-dev] Running coverage breaks the VM

2013-05-31 Thread Frank Shearar
I'll have to give this a try once I've upgraded my machine. I only
have GLIBC_2.11 and this requires GLIBC_2.15.

Excellent news though!

frank

On 31 May 2013 14:17, Guillermo Polito  wrote:
> It is fixed in latest vm (which you can get from the zeroconf script
> http://get.pharo.org/vmLatest) :).
>
> Guille
>
>
> On Fri, May 31, 2013 at 1:25 PM, Igor Stasenko  wrote:
>>
>> On 31 May 2013 09:20, Guillermo Polito  wrote:
>> > Ahh, that's why the code in CoInterpreter I was looking didn't match the
>> > C
>> > code :D. Was looking at the wrong place, hehe.
>> >
>> > Igor, why do you say that this method should be reached only with
>> > vanilla
>> > compiled methods? From the comment I understand
>> >
>> >   "For interpreter performance and to ease the objectAsMethod
>> > implementation eagerly
>> >  evaluate the primtiive, i.e. if the method is cogged and has a
>> > primitive /do not/ evaluate
>> >  the machine code primitive, just evaluate
>> > primitiveFunctionPointer
>> > directly."
>> >
>>
>> Yes, my bad..
>> It is hard to see that in code: the logic to handle objects-as-method.
>> So, yes, please fix executNewMethod and internalExecuteNewMethod with
>> this additional check.
>>
>> > And in #addNewMethodToCache: there is as a first statement:
>> >
>> > [...]
>> > (objectMemory isOopCompiledMethod: newMethod)
>> > ifTrue:
>> > [primitiveIndex := self primitiveIndexOf: newMethod.
>> > primitiveFunctionPointer := self functionPointerFor: primitiveIndex
>> > inClass:
>> > class]
>> > ifFalse:
>> > [primitiveFunctionPointer := #primitiveInvokeObjectAsMethod].
>> > [...]
>> >
>> > So I'd say that both objects as methods and primitives are kind of
>> > handled
>> > in the same way after?
>> >
>> >
>> >
>> > On Fri, May 31, 2013 at 2:27 AM, Igor Stasenko 
>> > wrote:
>> >>
>> >> On 30 May 2013 20:06, Guillermo Polito 
>> >> wrote:
>> >> > Ok, I was playing with flushing caches and stuff... Its still a bit
>> >> > obsure
>> >> > to me why the example in the workspace works and the code coverage
>> >> > doesnot.
>> >> >
>> >> > However, I managed to hack the VM to make it work :).
>> >> >
>> >> > It looks like the VM is treating the objects as methods, as cog
>> >> > methods.
>> >> > So
>> >> > I added the following validation in the commonSend:
>> >> >
>> >> > methodHeader2 = longAt((GIV(newMethod) + BaseHeaderSize) +
>> >> > (HeaderIndex
>> >> > <<
>> >> > ShiftForWord));
>> >> >
>> >> > if (isCogMethodReference(methodHeader2) &&
>> >> > isCompiledMethodHeader(methodHeader2)) {
>> >> >
>> >> > /* begin externalizeIPandSP */
>> >> >
>> >> > assertusqInt)localIP)) != (ceReturnToInterpreterPC()));
>> >> >
>> >> > GIV(instructionPointer) = oopForPointer(localIP);
>> >> >
>> >> > GIV(stackPointer) = localSP;
>> >> >
>> >> > GIV(framePointer) = localFP;
>> >> >
>> >> > executeCoggedNewMethodmethodHeader(1, methodHeader2);
>> >> >
>> >> > }
>> >> >
>> >> >
>> >> > And it works :).
>> >> >
>> >> > I cc Eliot, so maybe he has an idea...
>> >> >
>> >> I touched this code.
>> >>
>> >> Original:
>> >>
>> >> CoInterpreter>>internalExecuteNewMethod
>> >> 
>> >> "For interpreter performance and to ease the objectAsMethod
>> >> implementation eagerly
>> >>  evaluate the primtiive, i.e. if the method is cogged and has a
>> >> primitive /do not/ evaluate
>> >>  the machine code primitive, just evaluate
>> >> primitiveFunctionPointer directly."
>> >> primitiveFunctionPointer ~= 0 ifTrue:
>> >> [| succeeded |
>> >>  self isPrimitiveFunctionPointerAnIndex ifTrue:
>> >> [^self internalQuickPrimitiveResponse].
>> >>  "slowPrimitiveResponse may of course context-switch.
>> >> If
>> >> so we must
>> >> reenter the
>> >>   new process appropriately, returning only if we've
>> >> found
>> >> an
>> >> interpreter frame."
>> >>  self externalizeIPandSP.
>> >>  succeeded := self slowPrimitiveResponse.
>> >>  instructionPointer = cogit ceReturnToInterpreterPC
>> >> ifTrue:
>> >> [instructionPointer := self iframeSavedIP:
>> >> framePointer].
>> >>  self internalizeIPandSP.
>> >>  succeeded ifTrue:
>> >> [self return: self popStack toExecutive: true.
>> >>  self browserPluginReturnIfNeeded.
>> >> ^nil]].
>> >> "if not primitive, or primitive failed, activate the method"
>> >> (self methodHasCogMethod: newMethod)
>> >> ifTrue: [self iframeSavedIP: localFP put: localIP
>> >> asInteger.
>> >> instructionPointer := cogit
>> >> ceReturnToInterpreterPC.
>> >> self externalizeFPandSP.
>> >> self activateCoggedNewMethod: true.
>> >> self internalizeIPandSP]
>> >> 

[Pharo-dev] zeroconf --headless/-headless

2013-05-31 Thread Andrei Vasile Chis
Hi,

If I try to execute './pharo Pharo.image' after downloading the latest
Pharo Vm with the zero conf script it fails with the error: unknown option:
-headless. If I download the stable one it works.

Cheers,
Andrei


[Pharo-dev] [update 3.0] #30177

2013-05-31 Thread Marcus Denker
30177
-

10718 More commands for Node Navigation
https://pharo.fogbugz.com/f/cases/10718

10411 flush after nextChunkPut:
https://pharo.fogbugz.com/f/cases/10411


Diff information:
http://smalltalkhub.com/mc/Pharo/Pharo30/main/NodeNavigation-MarcusDenker.38.diff
http://smalltalkhub.com/mc/Pharo/Pharo30/main/Collections-Streams-MarcusDenker.135.diff




Re: [Pharo-dev] Release Artefact 1.0, the PDF framework

2013-05-31 Thread Damien Cassou
Images are automatically built by a continuous integration job:
https://ci.inria.fr/pharo-contribution/job/Artefact/.

On Fri, May 31, 2013 at 3:30 PM, Guillaume Larcheveque
 wrote:
> We are proud to announce that Artefact is available in 1.0 version.
>
> You can download it from: http://smalltalkhub.com/#!/~RMoD/Artefact
>
> Artefact is a framework to generate PDF documents. It is fully written in
> Smalltalk and doesn't require any native library. Artefact is light,
> platform independant and offer to users a high level of abstraction in order
> to easily creating PDF documents.
>
>  * completely written in Smalltalk (and only Smalltalk),
>  * complete freedom about the order of creation for pages, elements... (no
> need to follow the document order)
>  * multi format and orientation for pages
>  * page composition based on reusables PDF elements,
>  * extensibility by offering a composition standard to create your own high
> level elements
>  * styleSheet that can be reused in many documents and avoid wasting time
> and place with duplication
>  * image support with the JPEG format
>  * pre-defined high level elements like datagrid
>  * support PDF compression to produce compact files
>
> A basic documentation is available in the help browser. Many examples are
> implemented in the PDFDemos class.
>
> --
> Olivier Auverlot and Guillaume Larcheveque
>



--
Damien Cassou
http://damiencassou.seasidehosting.st

"Success is the ability to go from one failure to another without
losing enthusiasm."
Winston Churchill



Re: [Pharo-dev] Release Artefact 1.0, the PDF framework

2013-05-31 Thread Max Leske
Awesome guys! I'll have to take a look soon.

Max


On 31.05.2013, at 16:00, Damien Cassou  wrote:

> Images are automatically built by a continuous integration job:
> https://ci.inria.fr/pharo-contribution/job/Artefact/.
> 
> On Fri, May 31, 2013 at 3:30 PM, Guillaume Larcheveque
>  wrote:
>> We are proud to announce that Artefact is available in 1.0 version.
>> 
>> You can download it from: http://smalltalkhub.com/#!/~RMoD/Artefact
>> 
>> Artefact is a framework to generate PDF documents. It is fully written in
>> Smalltalk and doesn't require any native library. Artefact is light,
>> platform independant and offer to users a high level of abstraction in order
>> to easily creating PDF documents.
>> 
>> * completely written in Smalltalk (and only Smalltalk),
>> * complete freedom about the order of creation for pages, elements... (no
>> need to follow the document order)
>> * multi format and orientation for pages
>> * page composition based on reusables PDF elements,
>> * extensibility by offering a composition standard to create your own high
>> level elements
>> * styleSheet that can be reused in many documents and avoid wasting time
>> and place with duplication
>> * image support with the JPEG format
>> * pre-defined high level elements like datagrid
>> * support PDF compression to produce compact files
>> 
>> A basic documentation is available in the help browser. Many examples are
>> implemented in the PDFDemos class.
>> 
>> --
>> Olivier Auverlot and Guillaume Larcheveque
>> 
> 
> 
> 
> --
> Damien Cassou
> http://damiencassou.seasidehosting.st
> 
> "Success is the ability to go from one failure to another without
> losing enthusiasm."
> Winston Churchill
> 




Re: [Pharo-dev] Hosting your own SmalltlakHub: turning off/on the web

2013-05-31 Thread Mariano Martinez Peck
Hi Nico,

First, let me say that without a lot of pain, I have my own (actually, its
for a client)  SmalltalkHub instance running with Pharo 2.0, mongoDB, nginx
and HTTPS :)

Usually we need the web interface quite infrequently, that is, when we
create a new user or a new project. So I would like to turn off the website
for most of the time and just turn it on when I need something like that.
Of course when I mean turn off the website I mean that: only the website.
Monticello should continue working :)

One "solution" I found is that since I have nginx listening in an SSL port
and then this is forwarded to the port zinc is listening, I can just turn
off nginx. That way noone can reach the website from outside... but maybe
there is a better solution...

Thanks!


-- 
Mariano
http://marianopeck.wordpress.com


Re: [Pharo-dev] Release Artefact 1.0, the PDF framework

2013-05-31 Thread btc

Thats really great.  I'll have to find some time to have a look at it.

cheers -ben

Guillaume Larcheveque wrote:

We are proud to announce that Artefact is available in 1.0 version.

You can download it from: http://smalltalkhub.com/#!/~RMoD/Artefact

Artefact is a framework to generate PDF documents. It is fully written in
Smalltalk and doesn't require any native library. Artefact is light,
platform independant and offer to users a high level of abstraction in
order to easily creating PDF documents.

 * completely written in Smalltalk (and only Smalltalk),
 * complete freedom about the order of creation for pages, elements... (no
need to follow the document order)
 * multi format and orientation for pages
 * page composition based on reusables PDF elements,
 * extensibility by offering a composition standard to create your own high
level elements
 * styleSheet that can be reused in many documents and avoid wasting time
and place with duplication
 * image support with the JPEG format
 * pre-defined high level elements like datagrid
 * support PDF compression to produce compact files

A basic documentation is available in the help browser. Many examples are
implemented in the PDFDemos class.

  





Re: [Pharo-dev] zeroconf --headless/-headless

2013-05-31 Thread Camillo Bruni
yep we switched to --headless maybe we have to sit with esteban and add a
compatibility option '-headless' again. The image-side of 2.0 and 3.0 are 
already prepared for that.

Actually we changed all long options to use '--' like real unix commands :P


On 2013-05-31, at 16:02, Andrei Vasile Chis  wrote:

> Hi,
> 
> If I try to execute './pharo Pharo.image' after downloading the latest
> Pharo Vm with the zero conf script it fails with the error: unknown option:
> -headless. If I download the stable one it works.
> 
> Cheers,
> Andrei




[Pharo-dev] Bug in SmalltalkHub "delete package"

2013-05-31 Thread Mariano Martinez Peck
Hi guys. I tried to remove a package from the "remove package" button in
the website. The package is indeed removed from the website, but if you
take a fresh image, add the repository and add it to monticello, you still
can see and browse the removed package

any idea how to solve it? I need to remove packages for real...

thanks!

-- 
Mariano
http://marianopeck.wordpress.com


Re: [Pharo-dev] zeroconf --headless/-headless

2013-05-31 Thread Clément Bera
Hey,

Now the argument are with: - - no ?
It should be --headless ?

I'm not sure.
Camillo has probably already fixed it reading your mail anyway


2013/5/31 Andrei Vasile Chis 

> Hi,
>
> If I try to execute './pharo Pharo.image' after downloading the latest
> Pharo Vm with the zero conf script it fails with the error: unknown option:
> -headless. If I download the stable one it works.
>
> Cheers,
> Andrei
>



-- 
Clément Béra
Mate Virtual Machine Engineer
Bâtiment B 40, avenue Halley 59650 *Villeneuve d'Ascq*


[Pharo-dev] How can I remove a user from SmalltalkHub?

2013-05-31 Thread Mariano Martinez Peck
That :)

Thanks!

-- 
Mariano
http://marianopeck.wordpress.com


[Pharo-dev] [regression reporter]regression occurred

2013-05-31 Thread no-reply
https://ci.inria.fr/pharo/job/Pharo-3.0-Update-Step-2-Validation/./label=linux/203/

3 regressions found.
  FuelTests.FLMethodContextSerializationTest.testDoIt
  Tests.Release.ReleaseTest.testObsoleteBehaviors
  Tests.Release.ReleaseTest.testObsoleteClasses



[Pharo-dev] [regression reporter]regression occurred

2013-05-31 Thread no-reply
https://ci.inria.fr/pharo/job/Pharo-3.0-Update-Step-2-Validation/./label=mac/203/

3 regressions found.
  FuelTests.FLMethodContextSerializationTest.testDoIt
  Tests.Release.ReleaseTest.testObsoleteBehaviors
  Tests.Release.ReleaseTest.testObsoleteClasses



[Pharo-dev] [regression reporter]regression occurred

2013-05-31 Thread no-reply
https://ci.inria.fr/pharo/job/Pharo-3.0-Update-Step-2-Validation/./label=win/203/

3 regressions found.
  FuelTests.FLMethodContextSerializationTest.testDoIt
  Tests.Release.ReleaseTest.testObsoleteBehaviors
  Tests.Release.ReleaseTest.testObsoleteClasses



Re: [Pharo-dev] [ANN] A small Filetree extension for git integration

2013-05-31 Thread Max Leske

On 30.05.2013, at 09:53, Goubier Thierry  wrote:

> Le 29/05/2013 17:43, Max Leske a écrit :
>> Cool!
> 
> Thanks
> 
>> Just so you know: I'm working on FileSystem-Git which will use LibGit 
>> bindings through NativeBoost. But it will take me quite a while to finish.
> 
> I tried FileSystem-Git (not sure I tried the best version) but didn't managed 
> to get it to work with my pre-existing git repo. Not tried much, because I 
> got FileTree to work as I used to in 1.4.

To be honest, I haven't put much effort in keeping a running version around 
after I started to rewrite it. Most things do work I think but I wouldn't 
recommend to use FileSystem-Git at the moment (which is a shame but I'd rather 
have people use a version of which I can comfortably say I'm proud of. At the 
moment the multiple repositories, unfinished implementation / rewrites are a 
mess...

> 
>> Thanks for the effort! It will make my work easier too since I can now 
>> update my filetree repo better :)
> 
> Tell me if it works the way you would expect it to. I don't really know my 
> way around git apart from the basics common to all version systems, and I'll 
> be willing for suggestions.

I'll take a look when I get back to hacking.

Max

> 
> Thierry
> 
> 
>> Cheers,
>> Max
>> 
>> 
>> On 29.05.2013, at 17:31, Goubier Thierry  wrote:
>> 
>>> Hi all,
>>> 
>>> I've added an extension to filetree:// in Monticello, named gitfiletree://, 
>>> which adds the git commands to automagically commit new versions of 
>>> packages in a filetree repository inside a larger git repository (i.e. 
>>> Pharo + any fun and interesting language I have to use such as C under git).
>>> 
>>> It relies on OS-Process (to be able to send git commands over a shell) and 
>>> Filetree (of course), and it's on SmalltalkHub.
>>> 
>>> http://smalltalkhub.com/#!/~ThierryGoubier/MonticelloFileTree-Git/
>>> 
>>> If anybody is interested in suggesting improvements (such as how to query 
>>> and load specific versions or better ways to use git commands)?
>>> 
>>> At the moment, it should be able to handle mixed MC and others 
>>> repositories, and multiple packages in the same git.
>>> 
>>> Thierry
>>> --
>>> Thierry Goubier
>>> CEA list
>>> Laboratoire des Fondations des Systèmes Temps Réel Embarqués
>>> 91191 Gif sur Yvette Cedex
>>> France
>>> Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
>>> 
>> 
>> 
>> 
> 
> 
> -- 
> Thierry Goubier
> CEA list
> Laboratoire des Fondations des Systèmes Temps Réel Embarqués
> 91191 Gif sur Yvette Cedex
> France
> Phone/Fax: +33 (0) 1 69 08 32 92 / 83 95
> 




Re: [Pharo-dev] Bug in SmalltalkHub "delete package"

2013-05-31 Thread Damien Cassou
On Fri, May 31, 2013 at 5:48 PM, Mariano Martinez Peck
 wrote:
> Hi guys. I tried to remove a package from the "remove package" button in the
> website. The package is indeed removed from the website, but if you take a
> fresh image, add the repository and add it to monticello, you still can see
> and browse the removed package
>
> any idea how to solve it? I need to remove packages for real...


please report the bug to
http://code.google.com/p/smalltalk-hub/issues/list with *precise*
steps and details on how to reproduce.

--
Damien Cassou
http://damiencassou.seasidehosting.st

"Success is the ability to go from one failure to another without
losing enthusiasm."
Winston Churchill



[Pharo-dev] [update 3.0] #30178

2013-05-31 Thread Marcus Denker
30178
-

10714 General update
https://pharo.fogbugz.com/f/cases/10714

10816 ReleaseTest>>#testUndeclared fails in Opal RegressionTests
https://pharo.fogbugz.com/f/cases/10816

10815 failing in Opal regressionTEst: DebuggerTest.testBasic
https://pharo.fogbugz.com/f/cases/10815


Diff information:
http://smalltalkhub.com/mc/Pharo/Pharo30/main/ToolsTest-MarcusDenker.denker.36.diff
http://smalltalkhub.com/mc/Pharo/Pharo30/main/NewList-MarcusDenker.44.diff
http://smalltalkhub.com/mc/Pharo/Pharo30/main/Morphic-Base-MarcusDenker.5.diff




Re: [Pharo-dev] zeroconf --headless/-headless

2013-05-31 Thread Andrei Vasile Chis
Hi,

Yes now the arguments are with --.
Just that the zero conf scripts still use -.

It can be easily fix, but then the stable vm will not work any more as it
needs -.
So the zero conf should use - for the stable vm and -- for the latest vm.


On Fri, May 31, 2013 at 5:48 PM, Clément Bera wrote:

> Hey,
>
> Now the argument are with: - - no ?
> It should be --headless ?
>
> I'm not sure.
> Camillo has probably already fixed it reading your mail anyway
>
>
> 2013/5/31 Andrei Vasile Chis 
>
>> Hi,
>>
>> If I try to execute './pharo Pharo.image' after downloading the latest
>> Pharo Vm with the zero conf script it fails with the error: unknown option:
>> -headless. If I download the stable one it works.
>>
>> Cheers,
>> Andrei
>>
>
>
>
> --
> Clément Béra
> Mate Virtual Machine Engineer
> Bâtiment B 40, avenue Halley 59650 *Villeneuve d'Ascq*
>


Re: [Pharo-dev] Pharo 3.2 Meeting

2013-05-31 Thread Esteban Lorenzano
Yes but not to replace the current ones, just to allow the use :)

On 31 May 2013, at 19:38, Frank Shearar  wrote:

> Hmm... "Circular menu" - are you talking about implementing pie menus?
> 
> frank
> 
> 
> On 31 May 2013 17:05, Camille Teruel  wrote:
>> Hello everyone!
>> 
>> Here is the plan for pharo 3.2. As you can see June will be a busy 
>> month!
>> Camille
> 


Re: [Pharo-dev] Pharo 3.2 Meeting

2013-05-31 Thread Frank Shearar
Excellent!

frank

On 31 May 2013 18:40, Esteban Lorenzano  wrote:
> Yes but not to replace the current ones, just to allow the use :)
>
> On 31 May 2013, at 19:38, Frank Shearar  wrote:
>
> Hmm... "Circular menu" - are you talking about implementing pie menus?
>
> frank
>
>
> On 31 May 2013 17:05, Camille Teruel  wrote:
>>
>> Hello everyone!
>>
>> Here is the plan for pharo 3.2. As you can see June will be a busy
>> month!
>> Camille
>
>



Re: [Pharo-dev] zeroconf --headless/-headless

2013-05-31 Thread Bruni camillo
Yeah I waited until we release the new vm... But I'll just change the
latest script as you suggested. I won't have time today if you want you can
push a new configuration for zeroconf, Jenkins will test everything ;-)
 On May 31, 2013 7:16 PM, "Andrei Vasile Chis" 
wrote:

> Hi,
>
> Yes now the arguments are with --.
> Just that the zero conf scripts still use -.
>
> It can be easily fix, but then the stable vm will not work any more as it
> needs -.
> So the zero conf should use - for the stable vm and -- for the latest vm.
>
>
> On Fri, May 31, 2013 at 5:48 PM, Clément Bera wrote:
>
>> Hey,
>>
>> Now the argument are with: - - no ?
>> It should be --headless ?
>>
>> I'm not sure.
>> Camillo has probably already fixed it reading your mail anyway
>>
>>
>> 2013/5/31 Andrei Vasile Chis 
>>
>>> Hi,
>>>
>>> If I try to execute './pharo Pharo.image' after downloading the latest
>>> Pharo Vm with the zero conf script it fails with the error: unknown option:
>>> -headless. If I download the stable one it works.
>>>
>>> Cheers,
>>> Andrei
>>>
>>
>>
>>
>> --
>> Clément Béra
>> Mate Virtual Machine Engineer
>> Bâtiment B 40, avenue Halley 59650 *Villeneuve d'Ascq*
>>
>
>


Re: [Pharo-dev] [amber-lang] Amber's new stepping debugger

2013-05-31 Thread laurent laffont
Impressive, that's a real step forward.

Laurent


On Thu, May 30, 2013 at 11:26 PM, Nicolas Petton
wrote:

> Hi guys!
>
> Today I was able to debug Amber code with a stepping debugger for the
> first time!
> The debugger is based on an AST interpreter with a small stack
> implementation.
>
> Here's a short video of the debugger in action:
> https://www.dropbox.com/s/43mli1wwbdwj5kx/amber-debugging.mov
>
> While it's an early version, it is already usable :)
>
> cheers,
> nico


[Pharo-dev] Rubric screencast

2013-05-31 Thread plantec
Hi all,
It shows how one can use user defined selection and icons to manage text parts.
http://vimeo.com/67400546
cheers
Alain


Re: [Pharo-dev] zeroconf --headless/-headless

2013-05-31 Thread Camillo Bruni
fixed it: http://get.pharo.org/vmLatest works now under linux
additionally I added a small CLI introduction to http://get.pharo.org ;)


On 2013-05-31, at 20:21, Bruni camillo  wrote:

> Yeah I waited until we release the new vm... But I'll just change the
> latest script as you suggested. I won't have time today if you want you can
> push a new configuration for zeroconf, Jenkins will test everything ;-)
> On May 31, 2013 7:16 PM, "Andrei Vasile Chis" 
> wrote:
> 
>> Hi,
>> 
>> Yes now the arguments are with --.
>> Just that the zero conf scripts still use -.
>> 
>> It can be easily fix, but then the stable vm will not work any more as it
>> needs -.
>> So the zero conf should use - for the stable vm and -- for the latest vm.
>> 
>> 
>> On Fri, May 31, 2013 at 5:48 PM, Clément Bera wrote:
>> 
>>> Hey,
>>> 
>>> Now the argument are with: - - no ?
>>> It should be --headless ?
>>> 
>>> I'm not sure.
>>> Camillo has probably already fixed it reading your mail anyway
>>> 
>>> 
>>> 2013/5/31 Andrei Vasile Chis 
>>> 
 Hi,
 
 If I try to execute './pharo Pharo.image' after downloading the latest
 Pharo Vm with the zero conf script it fails with the error: unknown option:
 -headless. If I download the stable one it works.
 
 Cheers,
 Andrei
 
>>> 
>>> 
>>> 
>>> --
>>> Clément Béra
>>> Mate Virtual Machine Engineer
>>> Bâtiment B 40, avenue Halley 59650 *Villeneuve d'Ascq*
>>> 
>> 
>> 




Re: [Pharo-dev] Rubric screencast

2013-05-31 Thread Alexandre Bergel
Hi Alain!

Impressive!
Would it be possible to have an element of the text responsive to some 
interaction? For example, if in my text field I enter the value 100. Can I 
click on it (and remain the mouse button down) and move the mouse to increase 
or decrease this numerical value?

Many systems promoting the idea of live programming use this technique to 
interact with their system. For example: https://vimeo.com/66085662

Cheers,
Alexandre


On May 31, 2013, at 2:54 PM, plantec  wrote:

> Hi all,
> It shows how one can use user defined selection and icons to manage text 
> parts.
> http://vimeo.com/67400546
> cheers
> Alain

-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.






Re: [Pharo-dev] Pharo 3.2 Meeting

2013-05-31 Thread Alexandre Bergel
Excellent!

Alexandre


On May 31, 2013, at 12:05 PM, Camille Teruel  wrote:

> Hello everyone!
> 
> Here is the plan for pharo 3.2. As you can see June will be a busy 
> month!
> Camille

-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.






Re: [Pharo-dev] Rubric screencast

2013-05-31 Thread Igor Stasenko
On 1 June 2013 01:25, Alexandre Bergel  wrote:
> Hi Alain!
>
> Impressive!

Very. But only feature-wise.
Speed-wise is not. Is it related to recording? hoping that live version faster.

> Would it be possible to have an element of the text responsive to some 
> interaction? For example, if in my text field I enter the value 100. Can I 
> click on it (and remain the mouse button down) and move the mouse to increase 
> or decrease this numerical value?
>
> Many systems promoting the idea of live programming use this technique to 
> interact with their system.  For example: https://vimeo.com/66085662
>
many? I never seen anything as flexible as in some old Squeak
examples/demos (including etoys).
( Bret Victor ~~ many :)

> Cheers,
> Alexandre
>
>
> On May 31, 2013, at 2:54 PM, plantec  wrote:
>
>> Hi all,
>> It shows how one can use user defined selection and icons to manage text 
>> parts.
>> http://vimeo.com/67400546
>> cheers
>> Alain
>
> --
> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
> Alexandre Bergel  http://www.bergel.eu
> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>
>
>
>



-- 
Best regards,
Igor Stasenko.



Re: [Pharo-dev] Rubric screencast

2013-05-31 Thread plantec

On 1 juin 2013, at 01:48, Igor Stasenko  wrote:

> On 1 June 2013 01:25, Alexandre Bergel  wrote:
>> Hi Alain!
>> 
>> Impressive!
> 
> Very. But only feature-wise.
> Speed-wise is not. Is it related to recording?

yes, my computer is slow and the screen recording make it inresponsive

> hoping that live version faster.

just try it :)

But I think there is a lot of place for improvement:
A selection is a PolygonMorph. Maybe a dedicated version should be done.

Cheers
Alain

> 
> 
> 
> -- 
> Best regards,
> Igor Stasenko.
> 




[Pharo-dev] Fwd: Vm-dev Digest, Vol 83, Issue 46

2013-05-31 Thread Max Leske


Begin forwarded message:

> On Fri, May 31, 2013 at 1:11 PM, Eliot Miranda wrote:
> 
>> 
>> 
>> On Fri, May 31, 2013 at 12:54 AM, Max Leske  wrote:
>> 
>>> 
>>> Bump.
>>> 
>>> Doesn't anybody feel that corrupt blocks are a problem? IMHO that's
>>> something that should *never* happen.
>>> 
>> 
>> But what's happening here is that the Fuel serializer is allowing the
>> serialization of blocks without serializing their outer context and method,
>> and later the reconstruction of blocks against the *wrong* version of a
>> method.  This is a Fuel bug.  IMO the right solution is for Fuel to
>> serialize the method of the block, and on reconstruction replace the
>> reconstructed method with the method in the system iff the reconstructed
>> method is the same as that in the system, but substitute the recinstructed
>> method if it differs from the system's version (or of course if the
>> system;s version is missing).  this mimics the system's behaviour with
>> unbound methods, where e.g. a block holds onto a method and the code of a
>> class is recompiled, resulting iun that block holding onto an unbound
>> method.
>> 
> 
> Sorry, "without serializing their outer context and method" is wrong;
> "without serializing their method"