Re: [Pharo-dev] NativeBoost String Handling Bug?

2013-12-03 Thread Luc Fabresse
Congrats Sean!
and thanks Igor ;-)


#Luc


2013/12/3 Igor Stasenko siguc...@gmail.com

 Yes, thank you.


 On 3 December 2013 05:57, Sean P. DeNigris s...@clipperadams.com wrote:

 Igor Stasenko wrote
  if yes then i think we can finally close the bug entry).

 I updated the issue and made your packages into a slice:
 https://pharo.fogbugz.com/default.asp?7542
 SLICE-Issue-7542-NB-system-example-SeanDeNigris.1



 -
 Cheers,
 Sean
 --
 View this message in context:
 http://forum.world.st/NativeBoost-String-Handling-Bug-tp4726860p4726895.html
 Sent from the Pharo Smalltalk Developers mailing list archive at
 Nabble.com.




 --
 Best regards,
 Igor Stasenko.



Re: [Pharo-dev] Versionner CI?

2013-12-03 Thread Christophe Demarey
Hi Sean,

Le 3 déc. 2013 à 06:15, Sean P. DeNigris a écrit :

 I was surprised there was no job on community contributions...

There is one job on the rmod ci server. I should move it to the community 
server.

Thanks for pointing that,
Christophe

smime.p7s
Description: S/MIME cryptographic signature


Re: [Pharo-dev] Responsible development

2013-12-03 Thread Stéphane Ducasse

On Dec 2, 2013, at 8:37 PM, Benjamin benjamin.vanryseghem.ph...@gmail.com 
wrote:

 On 02 Dec 2013, at 20:27, Stéphane Ducasse stephane.duca...@inria.fr wrote:
 
 We try now to have responsive UIs in the sense the tools like Nautilus 
 try to 
 run things in a separate thread.
 
 I will do an experiment and fork each Nautilus opening to see if it can 
 save my ass :P
 :)
 
 personnally I would be really against because just forking is just a way 
 to have a lot more mess in the future.
 
 Why ?
 
 Because you do not know when you invariants should hold. Normally you expect 
 them to hold once the system is loaded.
 Because loading for example act as an atomic action when you modify the 
 system. Now if your thread can see and modify
 different versions of the state be prepared to have really strange and 
 difficult bugs to find. 
 
 I prefer to have cache than to have forked processes around. 
 
 Cache will not help you killing Nautilus when it freezes your image

fork neither.

 (why cache by the way ?)

I thought the discussion was about speeding up nautilus when performing start 
up actions.
 
 Ben
 
 
 Stef
 
 




Re: [Pharo-dev] Opal hook?

2013-12-03 Thread Clément Bera
Well if the class does not exists it calls the method on UndefinedObject
(UndeclaredBinding). And you have:

UndefinedObjectsubclass: nameOfClass
instanceVariableNames: instVarNames
 classVariableNames: classVarNames
poolDictionaries: poolDictnames
category: category
 Calling this method is now considered an accident.  If you really want to
create a class with a nil superclass, then create the class and then set
the superclass using #superclass:
 self traceCr: ('Attempt to create ', nameOfClass, ' as a subclass of nil.
 Possibly a class is being loaded before its superclass.').
^ProtoObject
 subclass: nameOfClass
instanceVariableNames: instVarNames
classVariableNames: classVarNames
 poolDictionaries: poolDictnames
category: category

The best is to set manually the superclass after with #superclass:


2013/12/2 Stéphane Ducasse stephane.duca...@inria.fr

 Hi

 when I load a class whose superclass is not in the image I have the
 impression that the system create a subclass from ProtoObject
 and I would like to be able to control the superclass.

 ProtoObject subclass: #Adaptor1Example
 instanceVariableNames: 'customers accountID address name
 phoneNumber'
 classVariableNames: ''
 poolDictionaries: ''
 category: 'Examples-Cookbook'

 Any idea where to look?

 Stef



Re: [Pharo-dev] Unifying Testing Ideas

2013-12-03 Thread Attila Magyar
Sean P. DeNigris wrote
 I understand the motivation. My question is how do we create appropriate
 hooks so that we don't get into these conflicts?

I don't know yet, I'm open for discussion.


Sean P. DeNigris wrote
 - anyArgument now inst var of BabyMockTestCase, similar to BmAnyMessage

How do you use the anyArgument? The /with:/ is optional, so

mock should receive: #a:b:c:

accepts a:b:c: with any arguments by default, unless you restrict it with
/with:and:and:/.

Or did you want something like this?

mock a: anyArgument b: exactArgument1 c: exactArgument2

This seems to be a valid need.


Sean P. DeNigris wrote
 - #does: now optionally takes arguments

I rarely use /does/, as far as I remember it is not even documented. I don't
know the code behind the test but based on the names it looks like an
adapter like thing. (e.g. a thin wrapper above a 3rd party api with not too
much logic inside). If this is the case, normally I would test it with
integration tests, instead of mocks.





--
View this message in context: 
http://forum.world.st/Unifying-Testing-Ideas-tp4726787p4726915.html
Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.



Re: [Pharo-dev] Roassal Bug related to Athens?

2013-12-03 Thread Stéphane Ducasse
Igor 

I see that you are learning the pattern:
Write a simple doc
[point people to it 
point people to it 
point people to it 
point people to it 
point people to it point people to it point people to it point people to it 
point people to it point people to it point people to it point people to it 
point people to it point people to it point people to it point people to it 
point people to it ] until: [They got it]

It is a massive amount of energy saving :)

Stef


On Dec 2, 2013, at 10:12 PM, Igor Stasenko siguc...@gmail.com wrote:

 http://code.google.com/p/nativeboost/wiki/SessionManagement
 
 
 On 2 December 2013 22:02, Igor Stasenko siguc...@gmail.com wrote:
 
 
 
 On 2 December 2013 17:14, Usman Bhatti usman.bha...@gmail.com wrote:
 Hello Igor,
 
 Moose 5.0 is using Athens as default canvas for Roassal and we have bug with 
 Roassal that seems to be related to Athens.
 http://code.google.com/p/moose-technology/issues/detail?id=1019
 
 I think it is related to the fact that we create a surface in the OS with 
 Athens and once we quit the image, the surface is destroyed as well. So, when 
 image is restarted with the visualization trying to use the surface, we get 
 the error.
 
 right.
  
 Could you point to what possibly can be done to avoid this error? Merely 
 checking the existence of an appropriate drawing surface in Athens every time 
 visualization is drawn, would it suffice?
 
 yes.. i explained and given examples multiple times both for NB and Athens 
 (and last time it was like couple weeks ago).
 
  http://lmgtfy.com/?q=nativeboost+session+awarel=1
 
 regards,
 
 Usman
 
 
 
 -- 
 Best regards,
 Igor Stasenko.
 
 
 
 -- 
 Best regards,
 Igor Stasenko.



Re: [Pharo-dev] transcript is plain bad

2013-12-03 Thread Stéphane Ducasse

On Dec 2, 2013, at 8:46 PM, p...@highoctane.be wrote:

 And missing a ton of methods.
 
 Teh StackInterpreterSimulator is agreeing with this statement.

send us the ones that are missing.

Please note that we should kill the transcript in the future because this is a 
^%$*((^%$* outdated way to manage 
feedback: plain string, close the window data is lost, limited in length, no 
filtering…..
bad bad bad does not scale horrible and so frustrating. I will not send you the 
current transcript I have because I deal with private code
but this does not work. 

Stef
 
 
 
 
 
 On Mon, Dec 2, 2013 at 8:05 PM, Esteban Lorenzano esteba...@gmail.com wrote:
 yes, the transcript is ThreadSafeTranscript
 
 
 On Mon, Dec 2, 2013 at 8:00 PM, Yuriy Tymchuk yuriy.tymc...@me.com wrote:
 Buy the way, is absence of Transcript class - ok?
 
 I know how it all works now, but is it ok? :)
 
 uko
 
 
 On 02 Dec 2013, at 19:58, Esteban Lorenzano esteba...@gmail.com wrote:
 
 yes, please :)
 
 
 On Mon, Dec 2, 2013 at 7:56 PM, Stéphane Ducasse stephane.duca...@inria.fr 
 wrote:
 
  The return of the toothpick is near. o/
 
 No I will finish my logger :)
 
 Stef
 
 
 
 
 



Re: [Pharo-dev] transcript is plain bad

2013-12-03 Thread Stéphane Ducasse

On Dec 3, 2013, at 2:59 AM, Esteban A. Maringolo emaring...@gmail.com wrote:

 2013/12/2 Sean P. DeNigris s...@clipperadams.com:
 EstebanLM wrote
 yes, the transcript is ThreadSafeTranscript
 
 Does ThreadSafe mean I don't have to wrap all my debug logging in
 WorldState addDeferredUIMessage: [ Transcript... ]? That would save a lot
 of time :)
 
 According to the implementation it means there is a Mutex stopping
 multiple processes from doing operations (#nextPut:, #nextPutAll:) at
 the same time. It is... who sends the message first will be received
 happily, whoever is second will have to wait in a semaphore :D


I did that because I was trying to write a chapter on concurrent programming 
and since the output could be in any order
it was difficult to show anything reliably. Now the implementation can be bad 
and anybody willing to imporve it is more than welcome.

 Funny outputs might happen if two different senders use #nextPut: intertwined.
 (other frameworks only left complete line outputs to loggers

What is is?

In the new logger I'm writing we have log ***OBJECTS*** and not dead strings.
 , to
 avoid this kind of scenarios).
 
 Regards!
 




Re: [Pharo-dev] Versionner CI?

2013-12-03 Thread Clément Bera
The jobs's on Rmod:
https://ci.inria.fr/rmod/job/Versionner/


2013/12/3 Sean P. DeNigris s...@clipperadams.com

 I was surprised there was no job on community contributions...



 -
 Cheers,
 Sean
 --
 View this message in context:
 http://forum.world.st/Versionner-CI-tp4726899.html
 Sent from the Pharo Smalltalk Developers mailing list archive at
 Nabble.com.




[Pharo-dev] Spec table problem

2013-12-03 Thread Clément Bera
This example I used to have does not work any more in the latest Pharo 3:

tree := TreeModel new.
tree openWithSpec.

tree columns: (Array
 with: (TreeColumnModel new displayBlock: [:node | node content first
asString ]; headerLabel: 'Name'; yourself)
with: (TreeColumnModel new displayBlock: [:node | node content second
asString ]; headerLabel: 'Last Name'; yourself)
 with: (TreeColumnModel new displayBlock: [:node | node content third
asString ]; headerLabel: 'Age'; yourself)
with: (TreeColumnModel new displayBlock: [:node | node content fourth
asString ]; headerLabel: 'Gender'; yourself)).
 tree roots: {
{'Benjamin'.'Van Ryseghem'.'26'.'M'} .
{'Pamela'.'Anderson'.'Far too much'.'F'}
}.

How can I have a similar behavior to what it used to do ?

Thanks !


Re: [Pharo-dev] Responsible development

2013-12-03 Thread p...@highoctane.be
The main issue I do face when doing Pharo dev at the moment is that there
is always this feeling of risking getting locked out of the image.

It happens every once in a while for weird reasons.

Now, with configurations, Monticello and some changes file drag and drops,
it is tolerable.

But there is that fear of getting the image to freeze. The Cmd + . not
working at all times add to that impression.

Things like Oz and a remote browser to an image may alleviate that at one
point in the future.

Now, Xcode also freezes at times, and good luck for finding what's wrong.

The ability to regain control is really what could be a great plus to the
platform. As far as I am concerned, as a developer, I hate not having
control on what's going on when coding. That may be a psychological trait.
And yes, OO isn't about understanding it all before doing anything.

But facing a frozen image with no way to get it back is really deeply
frustrating. Especially with no way to understand why it went dark.
That's where Oz is very interesting (as is Spoon with the remote browser -
no matter how unfinished that is).

So, I end up saving my image like XXX_mmdd_hhmm with one workspace a
day (workspaceProjectMMDD).
This takes a lot of disk space, but that is cheap now.

It all is rooted in the fear of getting a freeze.

Phil



---
Philippe Back
Dramatic Performance Improvements
Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
Mail:p...@highoctane.be | Web: http://philippeback.eu
Blog: http://philippeback.be | Twitter: @philippeback
Youtube: http://www.youtube.com/user/philippeback/videos

High Octane SPRL
rue cour Boisacq 101 | 1301 Bierges | Belgium

Pharo Consortium Member - http://consortium.pharo.org/
Featured on the Software Process and Measurement Cast -
http://spamcast.libsyn.com
Sparx Systems Enterprise Architect and Ability Engineering EADocX Value
Added Reseller




On Tue, Dec 3, 2013 at 10:01 AM, Stéphane Ducasse stephane.duca...@inria.fr
 wrote:


 On Dec 2, 2013, at 8:37 PM, Benjamin benjamin.vanryseghem.ph...@gmail.com
 wrote:

  On 02 Dec 2013, at 20:27, Stéphane Ducasse stephane.duca...@inria.fr
 wrote:
 
  We try now to have responsive UIs in the sense the tools like
 Nautilus try to
  run things in a separate thread.
 
  I will do an experiment and fork each Nautilus opening to see if it
 can save my ass :P
  :)
 
  personnally I would be really against because just forking is just a
 way to have a lot more mess in the future.
 
  Why ?
 
  Because you do not know when you invariants should hold. Normally you
 expect them to hold once the system is loaded.
  Because loading for example act as an atomic action when you modify the
 system. Now if your thread can see and modify
  different versions of the state be prepared to have really strange and
 difficult bugs to find.
 
  I prefer to have cache than to have forked processes around.
 
  Cache will not help you killing Nautilus when it freezes your image

 fork neither.

  (why cache by the way ?)

 I thought the discussion was about speeding up nautilus when performing
 start up actions.
 
  Ben
 
 
  Stef
 
 





Re: [Pharo-dev] transcript is plain bad

2013-12-03 Thread p...@highoctane.be
I am working on this one.

Don't kill the transcript, it is useful when working without a console.

Now, adding the features you mention is not hard. And the top right
triangle menu of Transcript could get a clue from the Workspace one with a
Save As entry.

I once had an issue with things like (out of the top of my head) FileStream
stdout nextPutAll: 'hello'; cr; flush. when I went headless. The image
worked at one point and the froze/locked. Until this is sorted out in full,
keep a transcript handy.

I gave the image to Guille who sent me back a version unlocked with Oz,
but it still dies on Windows for example. Weird.

Phil



---
Philippe Back
Dramatic Performance Improvements
Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
Mail:p...@highoctane.be | Web: http://philippeback.eu
Blog: http://philippeback.be | Twitter: @philippeback
Youtube: http://www.youtube.com/user/philippeback/videos

High Octane SPRL
rue cour Boisacq 101 | 1301 Bierges | Belgium

Pharo Consortium Member - http://consortium.pharo.org/
Featured on the Software Process and Measurement Cast -
http://spamcast.libsyn.com
Sparx Systems Enterprise Architect and Ability Engineering EADocX Value
Added Reseller




On Tue, Dec 3, 2013 at 10:10 AM, Stéphane Ducasse stephane.duca...@inria.fr
 wrote:


 On Dec 2, 2013, at 8:46 PM, p...@highoctane.be wrote:

 And missing a ton of methods.

 Teh StackInterpreterSimulator is agreeing with this statement.


 send us the ones that are missing.

 Please note that we should kill the transcript in the future because this
 is a ^%$*((^%$* outdated way to manage
 feedback: plain string, close the window data is lost, limited in length,
 no filtering…..
 bad bad bad does not scale horrible and so frustrating. I will not send
 you the current transcript I have because I deal with private code
 but this does not work.

 Stef






 On Mon, Dec 2, 2013 at 8:05 PM, Esteban Lorenzano esteba...@gmail.comwrote:

 yes, the transcript is ThreadSafeTranscript


 On Mon, Dec 2, 2013 at 8:00 PM, Yuriy Tymchuk yuriy.tymc...@me.comwrote:

 Buy the way, is absence of Transcript class - ok?

 I know how it all works now, but is it ok? :)

 uko


 On 02 Dec 2013, at 19:58, Esteban Lorenzano esteba...@gmail.com wrote:

 yes, please :)


 On Mon, Dec 2, 2013 at 7:56 PM, Stéphane Ducasse 
 stephane.duca...@inria.fr wrote:


  The return of the toothpick is near. o/

 No I will finish my logger :)

 Stef









Re: [Pharo-dev] Versionner CI?

2013-12-03 Thread Christophe Demarey
I just moved the job to Pharo Contributions: 
https://ci.inria.fr/pharo-contribution/view/Versions%20and%20Dependencies/
I will also put Metacello job there.

Le 3 déc. 2013 à 10:18, Clément Bera a écrit :

 The jobs's on Rmod:
 https://ci.inria.fr/rmod/job/Versionner/
 
 
 2013/12/3 Sean P. DeNigris s...@clipperadams.com
 I was surprised there was no job on community contributions...
 
 
 
 -
 Cheers,
 Sean
 --
 View this message in context: 
 http://forum.world.st/Versionner-CI-tp4726899.html
 Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.
 
 



smime.p7s
Description: S/MIME cryptographic signature


Re: [Pharo-dev] Responsible development

2013-12-03 Thread Benjamin
On 03 Dec 2013, at 10:01, Stéphane Ducasse stephane.duca...@inria.fr wrote:

 
 On Dec 2, 2013, at 8:37 PM, Benjamin benjamin.vanryseghem.ph...@gmail.com 
 wrote:
 
 On 02 Dec 2013, at 20:27, Stéphane Ducasse stephane.duca...@inria.fr wrote:
 
 We try now to have responsive UIs in the sense the tools like Nautilus 
 try to 
 run things in a separate thread.
 
 I will do an experiment and fork each Nautilus opening to see if it can 
 save my ass :P
 :)
 
 personnally I would be really against because just forking is just a way 
 to have a lot more mess in the future.
 
 Why ?
 
 Because you do not know when you invariants should hold. Normally you 
 expect them to hold once the system is loaded.
 Because loading for example act as an atomic action when you modify the 
 system. Now if your thread can see and modify
 different versions of the state be prepared to have really strange and 
 difficult bugs to find. 
 
 I prefer to have cache than to have forked processes around. 
 
 Cache will not help you killing Nautilus when it freezes your image
 
 fork neither.

It should not freeze your image anymore, only its own thread

Ben

 
 (why cache by the way ?)
 
 I thought the discussion was about speeding up nautilus when performing start 
 up actions.
 
 Ben
 
 
 Stef



Re: [Pharo-dev] Grease conflicts #packages with RPackage

2013-12-03 Thread Stephan Eggermont
Mariano wrote:
 You will only have problems with class side #packages.
 Are all those 35 class side?

5 out of 35. 4 of which are in Pharo 3

Stephan



Re: [Pharo-dev] Opal hook?

2013-12-03 Thread Clément Bera
Then for your project replace ProtoObject by StubRootClass in
 UndefinedObjectsubclass:instanceVariableNames:classVariableNames:
poolDictionaries:category: it will work.

An alternative is to catch OCSemanticWarning or its subclass
OCUndeclaredVariableWarning while loading the new classes and execute
another code instead of the default action in the exception handling block


2013/12/3 Stéphane Ducasse stephane.duca...@inria.fr

  Well if the class does not exists it calls the method on UndefinedObject
 (UndeclaredBinding). And you have:

 I will check and see if I can set up a hook because having classes
 subclasses of protoobject is not a good idea
 when loading broken code.

  UndefinedObjectsubclass: nameOfClass
instanceVariableNames: instVarNames
classVariableNames: classVarNames
poolDictionaries: poolDictnames
category: category
Calling this method is now considered an accident.  If you really
 want to create a class with a nil superclass, then create the class and
 then set the superclass using #superclass:
self traceCr: ('Attempt to create ', nameOfClass, ' as a subclass
 of nil.  Possibly a class is being loaded before its superclass.').
^ProtoObject
subclass: nameOfClass
instanceVariableNames: instVarNames
classVariableNames: classVarNames
poolDictionaries: poolDictnames
category: category
 
  The best is to set manually the superclass after with #superclass:

 No because I have no idea what are the classes whose superclasses are not
 in the image.
 With a proper hook I could just say
 if the superclass is unknow please use the StubRootClass of my
 framework.
 else let the system handles it.

 Stef



Re: [Pharo-dev] transcript is plain bad

2013-12-03 Thread Stéphane Ducasse

On Dec 3, 2013, at 10:34 AM, p...@highoctane.be wrote:

 I am working on this one.
 
 Don't kill the transcript, it is useful when working without a console.

I will not kill it but it will just be dull outputer for my logger. In fact I'm 
missing a user interface (the idea was to build it with fernando) and right now
the transcript just displays the printstring of my log objects. So I can even 
control what I want to output. 
more important I can filter the log ojbjects. For example I need to know when 
my framework finish to deal with a class and now this is mix with the compiler 
logherea

 Now, adding the features you mention is not hard. And the top right triangle 
 menu of Transcript could get a clue from the Workspace one with a Save As 
 entry.

No i just DO NOT WANT STRINGS

 I once had an issue with things like (out of the top of my head) FileStream 
 stdout nextPutAll: 'hello'; cr; flush. when I went headless. The image worked 
 at one point and the froze/locked. Until this is sorted out in full, keep a 
 transcript handy.
 
 I gave the image to Guille who sent me back a version unlocked with Oz, but 
 it still dies on Windows for example. Weird.
 
 Phil
 
 
 
 ---
 Philippe Back
 Dramatic Performance Improvements
 Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
 Mail:p...@highoctane.be | Web: http://philippeback.eu
 Blog: http://philippeback.be | Twitter: @philippeback
 Youtube: http://www.youtube.com/user/philippeback/videos
 
 High Octane SPRL
 rue cour Boisacq 101 | 1301 Bierges | Belgium
 
 Pharo Consortium Member - http://consortium.pharo.org/
 Featured on the Software Process and Measurement Cast - 
 http://spamcast.libsyn.com
 Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added 
 Reseller
  
 
 
 
 On Tue, Dec 3, 2013 at 10:10 AM, Stéphane Ducasse stephane.duca...@inria.fr 
 wrote:
 
 On Dec 2, 2013, at 8:46 PM, p...@highoctane.be wrote:
 
 And missing a ton of methods.
 
 Teh StackInterpreterSimulator is agreeing with this statement.
 
 send us the ones that are missing.
 
 Please note that we should kill the transcript in the future because this is 
 a ^%$*((^%$* outdated way to manage 
 feedback: plain string, close the window data is lost, limited in length, no 
 filtering…..
 bad bad bad does not scale horrible and so frustrating. I will not send you 
 the current transcript I have because I deal with private code
 but this does not work. 
 
 Stef
 
 
 
 
 
 On Mon, Dec 2, 2013 at 8:05 PM, Esteban Lorenzano esteba...@gmail.com 
 wrote:
 yes, the transcript is ThreadSafeTranscript
 
 
 On Mon, Dec 2, 2013 at 8:00 PM, Yuriy Tymchuk yuriy.tymc...@me.com wrote:
 Buy the way, is absence of Transcript class - ok?
 
 I know how it all works now, but is it ok? :)
 
 uko
 
 
 On 02 Dec 2013, at 19:58, Esteban Lorenzano esteba...@gmail.com wrote:
 
 yes, please :)
 
 
 On Mon, Dec 2, 2013 at 7:56 PM, Stéphane Ducasse 
 stephane.duca...@inria.fr wrote:
 
  The return of the toothpick is near. o/
 
 No I will finish my logger :)
 
 Stef
 
 
 
 
 
 
 



Re: [Pharo-dev] Responsible development

2013-12-03 Thread Yuriy Tymchuk

On 03 Dec 2013, at 11:08, Benjamin benjamin.vanryseghem.ph...@gmail.com wrote:

 On 03 Dec 2013, at 10:01, Stéphane Ducasse stephane.duca...@inria.fr wrote:
 
 
 On Dec 2, 2013, at 8:37 PM, Benjamin benjamin.vanryseghem.ph...@gmail.com 
 wrote:
 
 On 02 Dec 2013, at 20:27, Stéphane Ducasse stephane.duca...@inria.fr 
 wrote:
 
 We try now to have responsive UIs in the sense the tools like Nautilus 
 try to 
 run things in a separate thread.
 
 I will do an experiment and fork each Nautilus opening to see if it can 
 save my ass :P
 :)
 
 personnally I would be really against because just forking is just a way 
 to have a lot more mess in the future.
 
 Why ?
 
 Because you do not know when you invariants should hold. Normally you 
 expect them to hold once the system is loaded.
 Because loading for example act as an atomic action when you modify the 
 system. Now if your thread can see and modify
 different versions of the state be prepared to have really strange and 
 difficult bugs to find. 
 
 I prefer to have cache than to have forked processes around. 
 
 Cache will not help you killing Nautilus when it freezes your image
 
 fork neither.
 
 It should not freeze your image anymore, only its own thread

Wow, that was fast

 
 Ben
 
 
 (why cache by the way ?)
 
 I thought the discussion was about speeding up nautilus when performing 
 start up actions.
 
 Ben
 
 
 Stef



Re: [Pharo-dev] Responsible development

2013-12-03 Thread kilon alios
looks like your post to the mailing list was not as pointless as you
thought ;)

Great work Benjamin


On Tue, Dec 3, 2013 at 12:38 PM, Yuriy Tymchuk yuriy.tymc...@me.com wrote:


 On 03 Dec 2013, at 11:08, Benjamin benjamin.vanryseghem.ph...@gmail.com
 wrote:

 On 03 Dec 2013, at 10:01, Stéphane Ducasse stephane.duca...@inria.fr
 wrote:


 On Dec 2, 2013, at 8:37 PM, Benjamin benjamin.vanryseghem.ph...@gmail.com
 wrote:

 On 02 Dec 2013, at 20:27, Stéphane Ducasse stephane.duca...@inria.fr
 wrote:

 We try now to have responsive UIs in the sense the tools like Nautilus try
 to
 run things in a separate thread.

 I will do an experiment and fork each Nautilus opening to see if it can
 save my ass :P

 :)

 personnally I would be really against because just forking is just a way
 to have a lot more mess in the future.


 Why ?


 Because you do not know when you invariants should hold. Normally you
 expect them to hold once the system is loaded.
 Because loading for example act as an atomic action when you modify the
 system. Now if your thread can see and modify
 different versions of the state be prepared to have really strange and
 difficult bugs to find.

 I prefer to have cache than to have forked processes around.


 Cache will not help you killing Nautilus when it freezes your image


 fork neither.


 It should not freeze your image anymore, only its own thread


 Wow, that was fast


 Ben


 (why cache by the way ?)


 I thought the discussion was about speeding up nautilus when performing
 start up actions.


 Ben


 Stef





Re: [Pharo-dev] Grease conflicts #packages with RPackage

2013-12-03 Thread Stéphane Ducasse
The real problem is that a CLASS now responds to the packages message.

Stef

On Dec 3, 2013, at 11:10 AM, Stephan Eggermont step...@stack.nl wrote:

 Mariano wrote:
 You will only have problems with class side #packages.
 Are all those 35 class side?
 
 5 out of 35. 4 of which are in Pharo 3
 
 Stephan
 




Re: [Pharo-dev] Opal hook?

2013-12-03 Thread Stéphane Ducasse

On Dec 3, 2013, at 11:20 AM, Clément Bera bera.clem...@gmail.com wrote:

 Then for your project replace ProtoObject by StubRootClass in 
 UndefinedObjectsubclass:instanceVariableNames:classVariableNames:poolDictionaries:category:
  it will work.

yes but this is ugly because I do not want override.
So I will introduce an exception so that we can do that in a clean way.


 An alternative is to catch OCSemanticWarning or its subclass 
 OCUndeclaredVariableWarning while loading the new classes and execute another 
 code instead of the default action in the exception handling block


do you know if the OCUndeclaredVariable is raised for unknown superclass?
How to undefined and OCUndeclaredVariableWarning relate?

Stef
 
 
 2013/12/3 Stéphane Ducasse stephane.duca...@inria.fr
  Well if the class does not exists it calls the method on UndefinedObject 
  (UndeclaredBinding). And you have:
 
 I will check and see if I can set up a hook because having classes subclasses 
 of protoobject is not a good idea
 when loading broken code.
 
  UndefinedObjectsubclass: nameOfClass
instanceVariableNames: instVarNames
classVariableNames: classVarNames
poolDictionaries: poolDictnames
category: category
Calling this method is now considered an accident.  If you really 
  want to create a class with a nil superclass, then create the class and 
  then set the superclass using #superclass:
self traceCr: ('Attempt to create ', nameOfClass, ' as a subclass of 
  nil.  Possibly a class is being loaded before its superclass.').
^ProtoObject
subclass: nameOfClass
instanceVariableNames: instVarNames
classVariableNames: classVarNames
poolDictionaries: poolDictnames
category: category
 
  The best is to set manually the superclass after with #superclass:
 
 No because I have no idea what are the classes whose superclasses are not in 
 the image.
 With a proper hook I could just say
 if the superclass is unknow please use the StubRootClass of my 
 framework.
 else let the system handles it.
 
 Stef
 



Re: [Pharo-dev] transcript is plain bad

2013-12-03 Thread p...@highoctane.be
What's wrong with Strings anyway? But yeah, I understand your point.

What I have done for my own stuff is to have a TLog aspect with info,
debug, error, warn and, well, Strings. But double dispatch could take care
of that, like printOn:, storeOn: etc.

Do you have some code that I can look at?

TLoginfo: anObject

 anObject logOn: Logger default info.


Phil



On Tue, Dec 3, 2013 at 11:27 AM, Stéphane Ducasse stephane.duca...@inria.fr
 wrote:


 On Dec 3, 2013, at 10:34 AM, p...@highoctane.be wrote:

 I am working on this one.

 Don't kill the transcript, it is useful when working without a console.


 I will not kill it but it will just be dull outputer for my logger. In
 fact I'm missing a user interface (the idea was to build it with fernando)
 and right now
 the transcript just displays the printstring of my log objects. So I can
 even control what I want to output.
 more important I can filter the log ojbjects. For example I need to know
 when my framework finish to deal with a class and now this is mix with the
 compiler
 logherea

 Now, adding the features you mention is not hard. And the top right
 triangle menu of Transcript could get a clue from the Workspace one with a
 Save As entry.


 No i just DO NOT WANT STRINGS

 I once had an issue with things like (out of the top of my head)
 FileStream stdout nextPutAll: 'hello'; cr; flush. when I went headless. The
 image worked at one point and the froze/locked. Until this is sorted out in
 full, keep a transcript handy.


 I gave the image to Guille who sent me back a version unlocked with Oz,
 but it still dies on Windows for example. Weird.

 Phil



 ---
 Philippe Back
 Dramatic Performance Improvements
 Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
 Mail:p...@highoctane.be | Web: http://philippeback.eu
 Blog: http://philippeback.be | Twitter: @philippeback
 Youtube: http://www.youtube.com/user/philippeback/videos

 High Octane SPRL
 rue cour Boisacq 101 | 1301 Bierges | Belgium

 Pharo Consortium Member - http://consortium.pharo.org/
 Featured on the Software Process and Measurement Cast -
 http://spamcast.libsyn.com
 Sparx Systems Enterprise Architect and Ability Engineering EADocX Value
 Added Reseller




 On Tue, Dec 3, 2013 at 10:10 AM, Stéphane Ducasse 
 stephane.duca...@inria.fr wrote:


 On Dec 2, 2013, at 8:46 PM, p...@highoctane.be wrote:

 And missing a ton of methods.

 Teh StackInterpreterSimulator is agreeing with this statement.


 send us the ones that are missing.

 Please note that we should kill the transcript in the future because this
 is a ^%$*((^%$* outdated way to manage
 feedback: plain string, close the window data is lost, limited in length,
 no filtering…..
 bad bad bad does not scale horrible and so frustrating. I will not send
 you the current transcript I have because I deal with private code
 but this does not work.

 Stef






 On Mon, Dec 2, 2013 at 8:05 PM, Esteban Lorenzano esteba...@gmail.comwrote:

 yes, the transcript is ThreadSafeTranscript


 On Mon, Dec 2, 2013 at 8:00 PM, Yuriy Tymchuk yuriy.tymc...@me.comwrote:

 Buy the way, is absence of Transcript class - ok?

 I know how it all works now, but is it ok? :)

 uko


 On 02 Dec 2013, at 19:58, Esteban Lorenzano esteba...@gmail.com
 wrote:

 yes, please :)


 On Mon, Dec 2, 2013 at 7:56 PM, Stéphane Ducasse 
 stephane.duca...@inria.fr wrote:


  The return of the toothpick is near. o/

 No I will finish my logger :)

 Stef











Re: [Pharo-dev] Responsible development

2013-12-03 Thread Benjamin
I did not say I did it :)
Sorry for the misunderstanding.

I was saying that theoretically it should not freeze the UI thread if you fork.
But then it also mean you should freeze the UI thread from time to time while 
doing critical operations

So it’s actually a bit tricky to implement

Ben

On 03 Dec 2013, at 11:40, kilon alios kilon.al...@gmail.com wrote:

 looks like your post to the mailing list was not as pointless as you thought 
 ;) 
 
 Great work Benjamin 
 
 
 On Tue, Dec 3, 2013 at 12:38 PM, Yuriy Tymchuk yuriy.tymc...@me.com wrote:
 
 On 03 Dec 2013, at 11:08, Benjamin benjamin.vanryseghem.ph...@gmail.com 
 wrote:
 
 On 03 Dec 2013, at 10:01, Stéphane Ducasse stephane.duca...@inria.fr wrote:
 
 
 On Dec 2, 2013, at 8:37 PM, Benjamin benjamin.vanryseghem.ph...@gmail.com 
 wrote:
 
 On 02 Dec 2013, at 20:27, Stéphane Ducasse stephane.duca...@inria.fr 
 wrote:
 
 We try now to have responsive UIs in the sense the tools like Nautilus 
 try to 
 run things in a separate thread.
 
 I will do an experiment and fork each Nautilus opening to see if it 
 can save my ass :P
 :)
 
 personnally I would be really against because just forking is just a 
 way to have a lot more mess in the future.
 
 Why ?
 
 Because you do not know when you invariants should hold. Normally you 
 expect them to hold once the system is loaded.
 Because loading for example act as an atomic action when you modify the 
 system. Now if your thread can see and modify
 different versions of the state be prepared to have really strange and 
 difficult bugs to find. 
 
 I prefer to have cache than to have forked processes around. 
 
 Cache will not help you killing Nautilus when it freezes your image
 
 fork neither.
 
 It should not freeze your image anymore, only its own thread
 
 Wow, that was fast
 
 
 Ben
 
 
 (why cache by the way ?)
 
 I thought the discussion was about speeding up nautilus when performing 
 start up actions.
 
 Ben
 
 
 Stef
 
 



Re: [Pharo-dev] NativeBoost String Handling Bug?

2013-12-03 Thread Igor Stasenko
i have no idea, but following is not related to what changes i did:

 ./pharo Pharo.image update --from-file=updates30.staged

VersionnerProjectToolBarupdate (update is Undeclared)

VersionnerProjectToolBarupdate (update is Undeclared)

VersionnerProjectToolBarupdate (update is Undeclared)

VersionnerProjectToolBarupdate (update is Undeclared)

VersionnerProjectToolBarupdate (MBUpdateDevCommand is Undeclared)

VersionnerProjectToolBarupdate (update is Undeclared)

MBAddDescriptionCommandTesttestExecute (MBAddDescriptionCommand is
Undeclared)

MBConfigurationInfoTesttestInitialization (ConfigurationOfVersionner
is Undeclared)

MBAbstractVersionInfocmdSetCurrentVersion
(MBSetCurrentVersionCommand is Undeclared)

MTProjectaddDependentProject:from:withVersion:loads:(repository is shadowed)




On 3 December 2013 10:17, Stéphane Ducasse stephane.duca...@inria.frwrote:

 You know what?
 It will not be integrated because apparently the monkey tagged it as
 invalid.

 I have no idea why. I hate this automatic down grading. May be we should
 have a different tags to make the difference
 between

 work needed = nothing was done or something but it was never in
 the state where we could think it should be integrated
 was integration ready = it was ready but something happen

 Stef



  Igor Stasenko wrote
  if yes then i think we can finally close the bug entry).
 
  I updated the issue and made your packages into a slice:
  https://pharo.fogbugz.com/default.asp?7542
  SLICE-Issue-7542-NB-system-example-SeanDeNigris.1
 
 
 
  -
  Cheers,
  Sean
  --
  View this message in context:
 http://forum.world.st/NativeBoost-String-Handling-Bug-tp4726860p4726895.html
  Sent from the Pharo Smalltalk Developers mailing list archive at
 Nabble.com.
 





-- 
Best regards,
Igor Stasenko.


Re: [Pharo-dev] transcript is plain bad

2013-12-03 Thread Norbert Hartl

Am 03.12.2013 um 11:47 schrieb p...@highoctane.be:

 What's wrong with Strings anyway? But yeah, I understand your point.
 
Strings are fine when you don’t need specific behavior oder structure of your 
log messages anymore. A conversion to string should in most cases happen as 
late as possible. A log entry can still serve other purposes than represent an 
custom formatted string thing. Think about making all the exception handling in 
away that it can only signal strings. The same you feel now you would lose here 
is similar to the gain you’ll get making log messages objects ;) It is just 
that you are used to objects when it comes to exceptions and you are used to 
strings when comes to log messages. The former being a good idea the latter not.

 
 What I have done for my own stuff is to have a TLog aspect with info, debug, 
 error, warn and, well, Strings. But double dispatch could take care of that, 
 like printOn:, storeOn: etc.
 
 Do you have some code that I can look at?
 
http://smalltalkhub.com/#!/~StephaneDucasse/SystemLogger

Norbert

 TLoginfo: anObject
 
  anObject logOn: Logger default info.
 
 
 Phil
 
 
 
 On Tue, Dec 3, 2013 at 11:27 AM, Stéphane Ducasse stephane.duca...@inria.fr 
 wrote:
 
 On Dec 3, 2013, at 10:34 AM, p...@highoctane.be wrote:
 
 I am working on this one.
 
 Don't kill the transcript, it is useful when working without a console.
 
 I will not kill it but it will just be dull outputer for my logger. In fact 
 I'm missing a user interface (the idea was to build it with fernando) and 
 right now
 the transcript just displays the printstring of my log objects. So I can even 
 control what I want to output. 
 more important I can filter the log ojbjects. For example I need to know when 
 my framework finish to deal with a class and now this is mix with the 
 compiler 
 logherea
 
 Now, adding the features you mention is not hard. And the top right triangle 
 menu of Transcript could get a clue from the Workspace one with a Save As 
 entry.
 
 No i just DO NOT WANT STRINGS
 
 I once had an issue with things like (out of the top of my head) FileStream 
 stdout nextPutAll: 'hello'; cr; flush. when I went headless. The image 
 worked at one point and the froze/locked. Until this is sorted out in full, 
 keep a transcript handy.
 
 I gave the image to Guille who sent me back a version unlocked with Oz, 
 but it still dies on Windows for example. Weird.
 
 Phil
 
 
 
 ---
 Philippe Back
 Dramatic Performance Improvements
 Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
 Mail:p...@highoctane.be | Web: http://philippeback.eu
 Blog: http://philippeback.be | Twitter: @philippeback
 Youtube: http://www.youtube.com/user/philippeback/videos
 
 High Octane SPRL
 rue cour Boisacq 101 | 1301 Bierges | Belgium
 
 Pharo Consortium Member - http://consortium.pharo.org/
 Featured on the Software Process and Measurement Cast - 
 http://spamcast.libsyn.com
 Sparx Systems Enterprise Architect and Ability Engineering EADocX Value 
 Added Reseller
  
 
 
 
 On Tue, Dec 3, 2013 at 10:10 AM, Stéphane Ducasse 
 stephane.duca...@inria.fr wrote:
 
 On Dec 2, 2013, at 8:46 PM, p...@highoctane.be wrote:
 
 And missing a ton of methods.
 
 Teh StackInterpreterSimulator is agreeing with this statement.
 
 send us the ones that are missing.
 
 Please note that we should kill the transcript in the future because this is 
 a ^%$*((^%$* outdated way to manage 
 feedback: plain string, close the window data is lost, limited in length, no 
 filtering…..
 bad bad bad does not scale horrible and so frustrating. I will not send you 
 the current transcript I have because I deal with private code
 but this does not work. 
 
 Stef
 
 
 
 
 
 On Mon, Dec 2, 2013 at 8:05 PM, Esteban Lorenzano esteba...@gmail.com 
 wrote:
 yes, the transcript is ThreadSafeTranscript
 
 
 On Mon, Dec 2, 2013 at 8:00 PM, Yuriy Tymchuk yuriy.tymc...@me.com wrote:
 Buy the way, is absence of Transcript class - ok?
 
 I know how it all works now, but is it ok? :)
 
 uko
 
 
 On 02 Dec 2013, at 19:58, Esteban Lorenzano esteba...@gmail.com wrote:
 
 yes, please :)
 
 
 On Mon, Dec 2, 2013 at 7:56 PM, Stéphane Ducasse 
 stephane.duca...@inria.fr wrote:
 
  The return of the toothpick is near. o/
 
 No I will finish my logger :)
 
 Stef
 
 
 
 
 
 
 
 
 



Re: [Pharo-dev] Responsible development

2013-12-03 Thread Stéphane Ducasse

 fork neither.
 
 It should not freeze your image anymore, only its own thread

I'm not convinced. Because if you get a thread per nautilus to me it just 
introduces potentially more problems.
Just forking a process in general does not solve problem. 
Also debugging can be harder when you have different threads executing the same 
code.
Not freezing is just that you do not damage the main ui thread. 

 
 Ben
 
 
 (why cache by the way ?)
 
 I thought the discussion was about speeding up nautilus when performing 
 start up actions.
 
 Ben
 
 
 Stef
 



Re: [Pharo-dev] transcript is plain bad

2013-12-03 Thread Stéphane Ducasse
Sure have a look at SystemLogger 

http://smalltalkhub.com/#!/~StephaneDucasse/SystemLogger

I did not check the changes made by norbert. I will work on it during xmas.

Stef


On Dec 3, 2013, at 11:47 AM, p...@highoctane.be p...@highoctane.be wrote:

 What's wrong with Strings anyway? But yeah, I understand your point.
 
 What I have done for my own stuff is to have a TLog aspect with info, debug, 
 error, warn and, well, Strings. But double dispatch could take care of that, 
 like printOn:, storeOn: etc.
 
 Do you have some code that I can look at?
 
 TLoginfo: anObject
 
  anObject logOn: Logger default info.
 
 
 Phil
 
 
 
 On Tue, Dec 3, 2013 at 11:27 AM, Stéphane Ducasse stephane.duca...@inria.fr 
 wrote:
 
 On Dec 3, 2013, at 10:34 AM, p...@highoctane.be wrote:
 
 I am working on this one.
 
 Don't kill the transcript, it is useful when working without a console.
 
 I will not kill it but it will just be dull outputer for my logger. In fact 
 I'm missing a user interface (the idea was to build it with fernando) and 
 right now
 the transcript just displays the printstring of my log objects. So I can even 
 control what I want to output. 
 more important I can filter the log ojbjects. For example I need to know when 
 my framework finish to deal with a class and now this is mix with the 
 compiler 
 logherea
 
 Now, adding the features you mention is not hard. And the top right triangle 
 menu of Transcript could get a clue from the Workspace one with a Save As 
 entry.
 
 No i just DO NOT WANT STRINGS
 
 I once had an issue with things like (out of the top of my head) FileStream 
 stdout nextPutAll: 'hello'; cr; flush. when I went headless. The image 
 worked at one point and the froze/locked. Until this is sorted out in full, 
 keep a transcript handy.
 
 I gave the image to Guille who sent me back a version unlocked with Oz, 
 but it still dies on Windows for example. Weird.
 
 Phil
 
 
 
 ---
 Philippe Back
 Dramatic Performance Improvements
 Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
 Mail:p...@highoctane.be | Web: http://philippeback.eu
 Blog: http://philippeback.be | Twitter: @philippeback
 Youtube: http://www.youtube.com/user/philippeback/videos
 
 High Octane SPRL
 rue cour Boisacq 101 | 1301 Bierges | Belgium
 
 Pharo Consortium Member - http://consortium.pharo.org/
 Featured on the Software Process and Measurement Cast - 
 http://spamcast.libsyn.com
 Sparx Systems Enterprise Architect and Ability Engineering EADocX Value 
 Added Reseller
  
 
 
 
 On Tue, Dec 3, 2013 at 10:10 AM, Stéphane Ducasse 
 stephane.duca...@inria.fr wrote:
 
 On Dec 2, 2013, at 8:46 PM, p...@highoctane.be wrote:
 
 And missing a ton of methods.
 
 Teh StackInterpreterSimulator is agreeing with this statement.
 
 send us the ones that are missing.
 
 Please note that we should kill the transcript in the future because this is 
 a ^%$*((^%$* outdated way to manage 
 feedback: plain string, close the window data is lost, limited in length, no 
 filtering…..
 bad bad bad does not scale horrible and so frustrating. I will not send you 
 the current transcript I have because I deal with private code
 but this does not work. 
 
 Stef
 
 
 
 
 
 On Mon, Dec 2, 2013 at 8:05 PM, Esteban Lorenzano esteba...@gmail.com 
 wrote:
 yes, the transcript is ThreadSafeTranscript
 
 
 On Mon, Dec 2, 2013 at 8:00 PM, Yuriy Tymchuk yuriy.tymc...@me.com wrote:
 Buy the way, is absence of Transcript class - ok?
 
 I know how it all works now, but is it ok? :)
 
 uko
 
 
 On 02 Dec 2013, at 19:58, Esteban Lorenzano esteba...@gmail.com wrote:
 
 yes, please :)
 
 
 On Mon, Dec 2, 2013 at 7:56 PM, Stéphane Ducasse 
 stephane.duca...@inria.fr wrote:
 
  The return of the toothpick is near. o/
 
 No I will finish my logger :)
 
 Stef
 
 
 
 
 
 
 
 
 



Re: [Pharo-dev] NativeBoost String Handling Bug?

2013-12-03 Thread Stéphane Ducasse
Igor 

where do you get this information?
Because I see 

https://ci.inria.fr/pharo/job/Pharo-3.0-Issue-Validator/3549//artifact/validationReport.html
and it is different.

stef
On Dec 3, 2013, at 11:59 AM, Igor Stasenko siguc...@gmail.com wrote:

 i have no idea, but following is not related to what changes i did:
 
  ./pharo Pharo.image update --from-file=updates30.staged
 
 VersionnerProjectToolBarupdate (update is Undeclared) 
 
 VersionnerProjectToolBarupdate (update is Undeclared) 
 
 VersionnerProjectToolBarupdate (update is Undeclared) 
 
 VersionnerProjectToolBarupdate (update is Undeclared) 
 
 VersionnerProjectToolBarupdate (MBUpdateDevCommand is Undeclared) 
 
 VersionnerProjectToolBarupdate (update is Undeclared) 
 
 MBAddDescriptionCommandTesttestExecute (MBAddDescriptionCommand is 
 Undeclared) 
 
 MBConfigurationInfoTesttestInitialization (ConfigurationOfVersionner is 
 Undeclared) 
 
 MBAbstractVersionInfocmdSetCurrentVersion (MBSetCurrentVersionCommand is 
 Undeclared) 
 
 MTProjectaddDependentProject:from:withVersion:loads:(repository is 
 shadowed)
 
 
 
 On 3 December 2013 10:17, Stéphane Ducasse stephane.duca...@inria.fr wrote:
 You know what?
 It will not be integrated because apparently the monkey tagged it as invalid.
 
 I have no idea why. I hate this automatic down grading. May be we should have 
 a different tags to make the difference
 between
 
 work needed = nothing was done or something but it was never in the 
 state where we could think it should be integrated
 was integration ready = it was ready but something happen
 
 Stef
 
 
 
  Igor Stasenko wrote
  if yes then i think we can finally close the bug entry).
 
  I updated the issue and made your packages into a slice:
  https://pharo.fogbugz.com/default.asp?7542
  SLICE-Issue-7542-NB-system-example-SeanDeNigris.1
 
 
 
  -
  Cheers,
  Sean
  --
  View this message in context: 
  http://forum.world.st/NativeBoost-String-Handling-Bug-tp4726860p4726895.html
  Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.
 
 
 
 
 
 
 -- 
 Best regards,
 Igor Stasenko.



Re: [Pharo-dev] NativeBoost String Handling Bug?

2013-12-03 Thread Igor Stasenko
apparently i was looking at wrong place, and according to report there's
merge conflict.
why? because i merged everything before commit.



On 3 December 2013 12:09, Stéphane Ducasse stephane.duca...@inria.frwrote:

 Igor

 where do you get this information?
 Because I see

 https://ci.inria.fr/pharo/job/Pharo-3.0-Issue-Validator/3549//artifact/validationReport.html
 and it is different.

 stef

 On Dec 3, 2013, at 11:59 AM, Igor Stasenko siguc...@gmail.com wrote:

 i have no idea, but following is not related to what changes i did:

  ./pharo Pharo.image update --from-file=updates30.staged

 VersionnerProjectToolBarupdate (update is Undeclared)

 VersionnerProjectToolBarupdate (update is Undeclared)

 VersionnerProjectToolBarupdate (update is Undeclared)

 VersionnerProjectToolBarupdate (update is Undeclared)

 VersionnerProjectToolBarupdate (MBUpdateDevCommand is Undeclared)

 VersionnerProjectToolBarupdate (update is Undeclared)

 MBAddDescriptionCommandTesttestExecute (MBAddDescriptionCommand is 
 Undeclared)

 MBConfigurationInfoTesttestInitialization (ConfigurationOfVersionner is 
 Undeclared)

 MBAbstractVersionInfocmdSetCurrentVersion (MBSetCurrentVersionCommand is 
 Undeclared)

 MTProjectaddDependentProject:from:withVersion:loads:(repository is shadowed)




 On 3 December 2013 10:17, Stéphane Ducasse stephane.duca...@inria.frwrote:

 You know what?
 It will not be integrated because apparently the monkey tagged it as
 invalid.

 I have no idea why. I hate this automatic down grading. May be we should
 have a different tags to make the difference
 between

 work needed = nothing was done or something but it was never in
 the state where we could think it should be integrated
 was integration ready = it was ready but something happen

 Stef



  Igor Stasenko wrote
  if yes then i think we can finally close the bug entry).
 
  I updated the issue and made your packages into a slice:
  https://pharo.fogbugz.com/default.asp?7542
  SLICE-Issue-7542-NB-system-example-SeanDeNigris.1
 
 
 
  -
  Cheers,
  Sean
  --
  View this message in context:
 http://forum.world.st/NativeBoost-String-Handling-Bug-tp4726860p4726895.html
  Sent from the Pharo Smalltalk Developers mailing list archive at
 Nabble.com.
 





 --
 Best regards,
 Igor Stasenko.





-- 
Best regards,
Igor Stasenko.


Re: [Pharo-dev] Versionner Impressions

2013-12-03 Thread Sean P. DeNigris
Yea, in 3.0



-
Cheers,
Sean
--
View this message in context: 
http://forum.world.st/Versionner-Impressions-tp4726902p4726960.html
Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.

Re: [Pharo-dev] Roassal 3d now support textures

2013-12-03 Thread Stéphane Ducasse
did you move some functionality (to the place they belong) to NBOpenGL? 
Because this should be done and JB has already spent time on that.

Stef

 hi!
 
 Just to keep you up to date with the Roassal 3d effort.
 https://www.facebook.com/photo.php?fbid=547995685287033set=a.529997903753478.1073741828.340543479365589type=3theater
 
 Cheers,
 Alexandre
 
 
 -- 
 _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
 Alexandre Bergel  http://www.bergel.eu
 ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
 
 
 



Re: [Pharo-dev] Grease conflicts #packages with RPackage

2013-12-03 Thread Stephan Eggermont
Stef wrote:
The real problem is that a CLASS now responds to the packages message. 

SUnitAPIDocumentation also implements packages class-side.
If I try to add a instance side method #bla I get a debugger 
(but the method is added). Searching for implementors then 
also returns a debugger. I assume this problem wasn’t seen
as the classes implementing packages class-side don’t have 
instance side behavior. 

The classes implementing packages class-side are
SUnitAPIDocumentation
AnnouncementsAPIDocumentation
HelpAPIDocumentation
ProfStefAPIHelp
They all return an array of package name strings

Stephan
  


Re: [Pharo-dev] NativeBoost String Handling Bug?

2013-12-03 Thread Igor Stasenko
Yes

protocol: private
anonymousSubclassInitElementType: aTypeName
create and initialize the anonymous subclass of me

| newSubclass |
newSubclass := self classBuilder anonymousSubclassOf: NBExternalArray.
newSubclass initElementType: aTypeName.
^ newSubclass


vs

protocol: private
anonymousSubclassInitElementType: aTypeName
create and initialize the anonymous subclass of me

| newSubclass |
newSubclass := AnonymousClassInstaller make: [ :builder |
we're not using 'self' to avoid wrong subclassing from anonymous
subclass
builder superclass: NBExternalArray ].
newSubclass initElementType: aTypeName.
^ newSubclass


And

protocol: class factory
getClassForType: aTypeName
Do not confuse.! This method answers an anonymous class,  a subclass
of NBExternalTypeValue,
which can be used for instantiation later i.e:

floatTypeClass := NBExternalTypeValue ofType: 'float'.

float  := floatTypeClass new.
float value: 1.5.
float value.



| newSubclass |
newSubclass := self classBuilder anonymousSubclassOf:
NBExternalTypeValue.
newSubclass valueType: aTypeName.
^ newSubclass

vs

protocol: class factory
getClassForType: aTypeName
Do not confuse.! This method answers an anonymous class,  a subclass
of NBExternalTypeValue,
which can be used for instantiation later i.e:

floatTypeClass := NBTypeValue ofType: 'float'.

float  := floatTypeClass new.
float value: 1.5.
float value.



| newSubclass |
newSubclass := AnonymousClassInstaller make: [ :builder |
we're not using 'self' to avoid wrong subclassing from anonymous
subclass 
builder superclass: NBExternalTypeValue ].
newSubclass initValueType: aTypeName.
^ newSubclass


To anyone who changed this, can i have some canonical protocol for creating
anonymous subclasses
without referring to fuzzy , vague and unknown (as to me)
AnonymousClassInstaller
or other strange globals?



On 3 December 2013 13:01, Benjamin benjamin.vanryseghem.ph...@gmail.comwrote:

 I testify, there are 2 conflicts

 Ben

 On 03 Dec 2013, at 12:44, Igor Stasenko siguc...@gmail.com wrote:

 apparently i was looking at wrong place, and according to report there's
 merge conflict.
 why? because i merged everything before commit.



 On 3 December 2013 12:09, Stéphane Ducasse stephane.duca...@inria.frwrote:

 Igor

 where do you get this information?
 Because I see

 https://ci.inria.fr/pharo/job/Pharo-3.0-Issue-Validator/3549//artifact/validationReport.html
 and it is different.

 stef

 On Dec 3, 2013, at 11:59 AM, Igor Stasenko siguc...@gmail.com wrote:

 i have no idea, but following is not related to what changes i did:

  ./pharo Pharo.image update --from-file=updates30.staged

 VersionnerProjectToolBarupdate (update is Undeclared)

 VersionnerProjectToolBarupdate (update is Undeclared)

 VersionnerProjectToolBarupdate (update is Undeclared)

 VersionnerProjectToolBarupdate (update is Undeclared)

 VersionnerProjectToolBarupdate (MBUpdateDevCommand is Undeclared)

 VersionnerProjectToolBarupdate (update is Undeclared)

 MBAddDescriptionCommandTesttestExecute (MBAddDescriptionCommand is 
 Undeclared)

 MBConfigurationInfoTesttestInitialization (ConfigurationOfVersionner is 
 Undeclared)

 MBAbstractVersionInfocmdSetCurrentVersion (MBSetCurrentVersionCommand is 
 Undeclared)

 MTProjectaddDependentProject:from:withVersion:loads:(repository is 
 shadowed)




 On 3 December 2013 10:17, Stéphane Ducasse stephane.duca...@inria.frwrote:

 You know what?
 It will not be integrated because apparently the monkey tagged it as
 invalid.

 I have no idea why. I hate this automatic down grading. May be we should
 have a different tags to make the difference
 between

 work needed = nothing was done or something but it was never in
 the state where we could think it should be integrated
 was integration ready = it was ready but something happen

 Stef



  Igor Stasenko wrote
  if yes then i think we can finally close the bug entry).
 
  I updated the issue and made your packages into a slice:
  https://pharo.fogbugz.com/default.asp?7542
  SLICE-Issue-7542-NB-system-example-SeanDeNigris.1
 
 
 
  -
  Cheers,
  Sean
  --
  View this message in context:
 http://forum.world.st/NativeBoost-String-Handling-Bug-tp4726860p4726895.html
  Sent from the Pharo Smalltalk Developers mailing list archive at
 Nabble.com http://nabble.com/.
 





 --
 Best regards,
 Igor Stasenko.





 --
 Best regards,
 Igor Stasenko.





-- 
Best regards,
Igor Stasenko.


Re: [Pharo-dev] NativeBoost String Handling Bug?

2013-12-03 Thread Esteban Lorenzano
I'm ok to add some convenient methods to class installers.
just that I do not have time to do it right now, so be my guest :)

Esteban




On Tue, Dec 3, 2013 at 1:10 PM, Igor Stasenko siguc...@gmail.com wrote:

 Yes

 protocol: private
 anonymousSubclassInitElementType: aTypeName
 create and initialize the anonymous subclass of me

 | newSubclass |
 newSubclass := self classBuilder anonymousSubclassOf: NBExternalArray.
 newSubclass initElementType: aTypeName.
 ^ newSubclass


 vs

 protocol: private
 anonymousSubclassInitElementType: aTypeName
 create and initialize the anonymous subclass of me

 | newSubclass |
 newSubclass := AnonymousClassInstaller make: [ :builder |
 we're not using 'self' to avoid wrong subclassing from anonymous
 subclass
 builder superclass: NBExternalArray ].
 newSubclass initElementType: aTypeName.
 ^ newSubclass


 And

 protocol: class factory
 getClassForType: aTypeName
 Do not confuse.! This method answers an anonymous class,  a subclass
 of NBExternalTypeValue,
 which can be used for instantiation later i.e:

 floatTypeClass := NBExternalTypeValue ofType: 'float'.

 float  := floatTypeClass new.
 float value: 1.5.
 float value.

 

 | newSubclass |
 newSubclass := self classBuilder anonymousSubclassOf:
 NBExternalTypeValue.
 newSubclass valueType: aTypeName.
 ^ newSubclass

 vs

 protocol: class factory
 getClassForType: aTypeName
 Do not confuse.! This method answers an anonymous class,  a subclass
 of NBExternalTypeValue,
 which can be used for instantiation later i.e:

 floatTypeClass := NBTypeValue ofType: 'float'.

 float  := floatTypeClass new.
 float value: 1.5.
 float value.

 

 | newSubclass |
 newSubclass := AnonymousClassInstaller make: [ :builder |
 we're not using 'self' to avoid wrong subclassing from anonymous
 subclass 
 builder superclass: NBExternalTypeValue ].
 newSubclass initValueType: aTypeName.
 ^ newSubclass


 To anyone who changed this, can i have some canonical protocol for
 creating anonymous subclasses
 without referring to fuzzy , vague and unknown (as to me)
 AnonymousClassInstaller
 or other strange globals?



 On 3 December 2013 13:01, Benjamin 
 benjamin.vanryseghem.ph...@gmail.comwrote:

 I testify, there are 2 conflicts

 Ben

 On 03 Dec 2013, at 12:44, Igor Stasenko siguc...@gmail.com wrote:

 apparently i was looking at wrong place, and according to report there's
 merge conflict.
 why? because i merged everything before commit.



 On 3 December 2013 12:09, Stéphane Ducasse stephane.duca...@inria.frwrote:

 Igor

 where do you get this information?
 Because I see

 https://ci.inria.fr/pharo/job/Pharo-3.0-Issue-Validator/3549//artifact/validationReport.html
 and it is different.

 stef

 On Dec 3, 2013, at 11:59 AM, Igor Stasenko siguc...@gmail.com wrote:

 i have no idea, but following is not related to what changes i did:

  ./pharo Pharo.image update --from-file=updates30.staged

 VersionnerProjectToolBarupdate (update is Undeclared)

 VersionnerProjectToolBarupdate (update is Undeclared)

 VersionnerProjectToolBarupdate (update is Undeclared)

 VersionnerProjectToolBarupdate (update is Undeclared)

 VersionnerProjectToolBarupdate (MBUpdateDevCommand is Undeclared)

 VersionnerProjectToolBarupdate (update is Undeclared)

 MBAddDescriptionCommandTesttestExecute (MBAddDescriptionCommand is 
 Undeclared)

 MBConfigurationInfoTesttestInitialization (ConfigurationOfVersionner is 
 Undeclared)

 MBAbstractVersionInfocmdSetCurrentVersion (MBSetCurrentVersionCommand is 
 Undeclared)

 MTProjectaddDependentProject:from:withVersion:loads:(repository is 
 shadowed)




 On 3 December 2013 10:17, Stéphane Ducasse stephane.duca...@inria.frwrote:

 You know what?
 It will not be integrated because apparently the monkey tagged it as
 invalid.

 I have no idea why. I hate this automatic down grading. May be we
 should have a different tags to make the difference
 between

 work needed = nothing was done or something but it was never in
 the state where we could think it should be integrated
 was integration ready = it was ready but something happen

 Stef



  Igor Stasenko wrote
  if yes then i think we can finally close the bug entry).
 
  I updated the issue and made your packages into a slice:
  https://pharo.fogbugz.com/default.asp?7542
  SLICE-Issue-7542-NB-system-example-SeanDeNigris.1
 
 
 
  -
  Cheers,
  Sean
  --
  View this message in context:
 http://forum.world.st/NativeBoost-String-Handling-Bug-tp4726860p4726895.html
  Sent from the Pharo Smalltalk Developers mailing list archive at
 Nabble.com http://nabble.com/.
 





 --
 Best regards,
 Igor Stasenko.





 --
 Best regards,
 Igor Stasenko.





 --
 Best regards,
 Igor Stasenko.



[Pharo-dev] Building Pharo using Interpreter Class

2013-12-03 Thread Kirstin Heidler
My freind Dimitri was not able to post his message. I am working with 
him on this.


___

Hello,

as part of a Seminar in the University im trying to build the PharoVM.
According to the README file here ([1]) I was able to generate and to
build the VM successfully.

Now I would like to build the VM without Cog or Stack-to-Register
optimizations... The problem here is, that I could not find any config
class (which is a subclass of CPlatformConfig), that provides the right
configurations and allows to build the VM without errors. I have tried
to modify PharoUnixConfig(because it was the default config class), but
unfortunately the build failes when the compiler tries to compile
gcc3x-interp.c.

Could somebody help me with this problem? How should I configure my own
Config class?

Basically our Group tries to implement an object table in Pharo and we
want to use (and modify) the basic Interpreter class.



[1] https://github.com/pharo-project/pharo-vm


Best regards,
Dimitri Korsch



Re: [Pharo-dev] NativeBoost String Handling Bug?

2013-12-03 Thread Igor Stasenko
Yes, when we discussed this with Martin (for a first time on that topic, i
guess)
all i wanted is a convenience method to _just_ make anonymous subclass..
how long this expression could be?

it should be as long as:

myClass createAnonymousSubclass.


and what we have instead?

First:

self classBuilder anonymousSubclassOf: NBExternalArray.

then

newSubclass := AnonymousClassInstaller make: [ :builder |
   builder superclass: NBExternalArray ].


this is unacceptable.
Because imagine one day you would want to port such code, (not necessary
NB, but code which creates and
uses anonymous subclasses), which code for porter, would be easier to
understand how to port it if another dialect will miss any
AnonymousClassInstaller?

-- 
Best regards,
Igor Stasenko.


[Pharo-dev] how i can browse the users of some trait?

2013-12-03 Thread Igor Stasenko
namely, TClass
cmd-shift-N doesn't helps

-- 
Best regards,
Igor Stasenko.


Re: [Pharo-dev] how i can browse the users of some trait?

2013-12-03 Thread Igor Stasenko
and as follow-up, why we need such trait if it has only one user???


On 3 December 2013 13:30, Igor Stasenko siguc...@gmail.com wrote:

 namely, TClass
 cmd-shift-N doesn't helps

 --
 Best regards,
 Igor Stasenko.




-- 
Best regards,
Igor Stasenko.


Re: [Pharo-dev] Building Pharo using Interpreter Class

2013-12-03 Thread p...@highoctane.be
There is working pure interpreter in the pharovm.

Phil
On Tuesday, December 3, 2013, Kirstin Heidler wrote:

 My freind Dimitri was not able to post his message. I am working with him
 on this.

 
 ___

 Hello,

 as part of a Seminar in the University im trying to build the PharoVM.
 According to the README file here ([1]) I was able to generate and to
 build the VM successfully.

 Now I would like to build the VM without Cog or Stack-to-Register
 optimizations... The problem here is, that I could not find any config
 class (which is a subclass of CPlatformConfig), that provides the right
 configurations and allows to build the VM without errors. I have tried
 to modify PharoUnixConfig(because it was the default config class), but
 unfortunately the build failes when the compiler tries to compile
 gcc3x-interp.c.

 Could somebody help me with this problem? How should I configure my own
 Config class?

 Basically our Group tries to implement an object table in Pharo and we
 want to use (and modify) the basic Interpreter class.



 [1] https://github.com/pharo-project/pharo-vm


 Best regards,
 Dimitri Korsch



-- 
---
Philippe Back
Dramatic Performance Improvements
Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
Mail:p...@highoctane.be | Web: http://philippeback.eu
Blog: http://philippeback.be | Twitter: @philippeback
Youtube: http://www.youtube.com/user/philippeback/videos

High Octane SPRL
rue cour Boisacq 101 | 1301 Bierges | Belgium

Pharo Consortium Member - http://consortium.pharo.org/
Featured on the Software Process and Measurement Cast -
http://spamcast.libsyn.com
Sparx Systems Enterprise Architect and Ability Engineering EADocX Value
Added Reseller


Re: [Pharo-dev] how i can browse the users of some trait?

2013-12-03 Thread Benjamin
Why creating a class if it has only one user ?

Ben

On 03 Dec 2013, at 13:32, Igor Stasenko siguc...@gmail.com wrote:

 and as follow-up, why we need such trait if it has only one user???
 
 
 On 3 December 2013 13:30, Igor Stasenko siguc...@gmail.com wrote:
 namely, TClass
 cmd-shift-N doesn't helps
 
 -- 
 Best regards,
 Igor Stasenko.
 
 
 
 -- 
 Best regards,
 Igor Stasenko.



Re: [Pharo-dev] how i can browse the users of some trait?

2013-12-03 Thread Esteban Lorenzano
is part of the making class and traits polymorphic effort.


On Tue, Dec 3, 2013 at 1:33 PM, Benjamin 
benjamin.vanryseghem.ph...@gmail.com wrote:

 Why creating a class if it has only one user ?

 Ben

 On 03 Dec 2013, at 13:32, Igor Stasenko siguc...@gmail.com wrote:

 and as follow-up, why we need such trait if it has only one user???


 On 3 December 2013 13:30, Igor Stasenko siguc...@gmail.com wrote:

 namely, TClass
 cmd-shift-N doesn't helps

 --
 Best regards,
 Igor Stasenko.




 --
 Best regards,
 Igor Stasenko.





Re: [Pharo-dev] NativeBoost String Handling Bug?

2013-12-03 Thread Igor Stasenko
so i added anotehr version of slice,
where i added 1 extra method to Class.
in inbox.
but there some missing methods in kernel.


On 3 December 2013 13:27, Igor Stasenko siguc...@gmail.com wrote:

 Yes, when we discussed this with Martin (for a first time on that topic, i
 guess)
 all i wanted is a convenience method to _just_ make anonymous subclass..
 how long this expression could be?

 it should be as long as:

 myClass createAnonymousSubclass.


 and what we have instead?

 First:

 self classBuilder anonymousSubclassOf: NBExternalArray.

 then

 newSubclass := AnonymousClassInstaller make: [ :builder |
builder superclass: NBExternalArray ].


 this is unacceptable.
 Because imagine one day you would want to port such code, (not necessary
 NB, but code which creates and
 uses anonymous subclasses), which code for porter, would be easier to
 understand how to port it if another dialect will miss any
 AnonymousClassInstaller?

 --
 Best regards,
 Igor Stasenko.




-- 
Best regards,
Igor Stasenko.


Re: [Pharo-dev] Building Pharo using Interpreter Class

2013-12-03 Thread Kirstin Heidler

But for some reason we have not been able to work with it correctly.
We may manange to build, as well as make it, but if not before it will 
fail when we try to open our image with the new VM.


What configuration do we need to adapt to correctly build everything 
with the Interpreter class, or at least the StackInterpreter Class(Not 
CoInterpreter, because we do not want to have JIT).


Kirstin

Am 03.12.2013 13:33, schrieb p...@highoctane.be:

There is working pure interpreter in the pharovm.

Phil
On Tuesday, December 3, 2013, Kirstin Heidler wrote:

My freind Dimitri was not able to post his message. I am working
with him on this.


___

Hello,

as part of a Seminar in the University im trying to build the PharoVM.
According to the README file here ([1]) I was able to generate and to
build the VM successfully.

Now I would like to build the VM without Cog or Stack-to-Register
optimizations... The problem here is, that I could not find any config
class (which is a subclass of CPlatformConfig), that provides the
right
configurations and allows to build the VM without errors. I have tried
to modify PharoUnixConfig(because it was the default config
class), but
unfortunately the build failes when the compiler tries to compile
gcc3x-interp.c.

Could somebody help me with this problem? How should I configure
my own
Config class?

Basically our Group tries to implement an object table in Pharo and we
want to use (and modify) the basic Interpreter class.



[1] https://github.com/pharo-project/pharo-vm


Best regards,
Dimitri Korsch



--
---
Philippe Back
Dramatic Performance Improvements
Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
Mail:p...@highoctane.be mailto:mail%3ap...@highoctane.be | Web: 
http://philippeback.eu

Blog: http://philippeback.be | Twitter: @philippeback
Youtube: http://www.youtube.com/user/philippeback/videos

High Octane SPRL
rue cour Boisacq 101 | 1301 Bierges | Belgium

Pharo Consortium Member - http://consortium.pharo.org/
Featured on the Software Process and Measurement Cast - 
http://spamcast.libsyn.com
Sparx Systems Enterprise Architect and Ability Engineering EADocX 
Value Added Reseller







Re: [Pharo-dev] language matrix

2013-12-03 Thread Yuriy Tymchuk
Feel free to do this :)

uko

On 03 Dec 2013, at 13:35, Sebastian Sastre sebast...@flowingconcept.com wrote:

 Lets add smalltalk there?
 
 http://langlangmatrix.com
 
 



Re: [Pharo-dev] how i can browse the users of some trait?

2013-12-03 Thread Igor Stasenko
On 3 December 2013 13:33, Benjamin benjamin.vanryseghem.ph...@gmail.comwrote:

 Why creating a class if it has only one user ?


'Class' has 35 uses in my image, don't know why yours only one.


 Ben

 On 03 Dec 2013, at 13:32, Igor Stasenko siguc...@gmail.com wrote:

 and as follow-up, why we need such trait if it has only one user???


 On 3 December 2013 13:30, Igor Stasenko siguc...@gmail.com wrote:

 namely, TClass
 cmd-shift-N doesn't helps

 --
 Best regards,
 Igor Stasenko.




 --
 Best regards,
 Igor Stasenko.





-- 
Best regards,
Igor Stasenko.


[Pharo-dev] [pharo-project/pharo-core] 0514ea: 30616

2013-12-03 Thread GitHub
  Branch: refs/heads/3.0
  Home:   https://github.com/pharo-project/pharo-core
  Commit: 0514eaa4413d40cd22ecf8d551e6b88d05ed2b90
  
https://github.com/pharo-project/pharo-core/commit/0514eaa4413d40cd22ecf8d551e6b88d05ed2b90
  Author: Jenkins Build Server bo...@pharo-project.org
  Date:   2013-12-03 (Tue, 03 Dec 2013)

  Changed paths:
M Manifest-Core.package/BuilderManifest.class/class/instance 
creation/ofPackageNamed_.st
M 
Manifest-CriticBrowser.package/SelectRuleBrowser.class/instance/protocol/addItems.st
M Polymorph-Tools-Diff.package/DiffJoinMorph.class/instance/event 
handling/mouseDown_.st
M 
Polymorph-Tools-Diff.package/PSMCClassChangeWrapper.class/instance/accessing/operation.st
A ScriptLoader30.package/ScriptLoader.class/instance/pharo - 
scripts/script271.st
A ScriptLoader30.package/ScriptLoader.class/instance/pharo - 
updates/update30616.st
M 
ScriptLoader30.package/ScriptLoader.class/instance/public/commentForCurrentUpdate.st
A Spec-Core.package/ComposableModel.class/instance/protocol/setModal_.st
R 
Spec-Core.package/DialogWindowModel.class/instance/protocol/modalRelativeTo_.st
M Spec-Core.package/TreeModel.class/instance/initialization/initialize.st
M Spec-Core.package/TreeModel.class/instance/protocol/iconFor_.st
M Spec-Core.package/TreeModel.class/instance/protocol/selectedItem.st
A Spec-Core.package/WindowModel.class/instance/protocol/modalRelativeTo_.st
A Spec-MorphicAdapters.package/AbstractMorphicAdapter.class/instance/spec 
protocol/setModal_.st
R 
Spec-MorphicAdapters.package/MorphicDialogWindowAdapter.class/instance/spec 
protocol/modalRelativeTo_.st
M 
Spec-MorphicAdapters.package/MorphicTreeNodeAdapter.class/class/specs/defaultSpec.st
M 
Spec-MorphicAdapters.package/MorphicTreeNodeAdapter.class/instance/private/deselect.st
M 
Spec-MorphicAdapters.package/MorphicTreeNodeAdapter.class/instance/private/select.st
A Spec-MorphicAdapters.package/MorphicTreeNodeAdapter.class/instance/widget 
API/itemBlock.st
A Spec-MorphicAdapters.package/MorphicWindowAdapter.class/instance/spec 
protocol/modalRelativeTo_.st
A 
Spec-MorphicAdapters.package/extension/ListItemWrapper/instance/setItemFromBlock_.st
A Spec-PolyWidgets.package/SearchableTree.class/instance/list 
protocol-events/whenSelectedItemChanged_.st
M 
Tools.package/AbstractTool.class/instance/category/removeEmptyUnclassifiedCategoryFrom_.st
M Tools.package/Browser.class/instance/message category 
list/categorizeAllUncategorizedMethods.st
M Tools.package/CodeHolder.class/instance/misc/refreshAnnotation.st
M Tools.package/FileList.class/instance/initialization/updateButtonRow.st
M Tools.package/FileList.class/instance/own 
services/servicesFromSelectorSpecs_.st
M Tools.package/FileList.class/instance/private/addPath_.st
M Tools.package/ProcessBrowser.class/class/process 
control/unregisterWellKnownProcess_.st

  Log Message:
  ---
  30616
12289 Komitter has improper repositories assigned
https://pharo.fogbugz.com/f/cases/12289

12311 Cleanup on some Tools related methods
https://pharo.fogbugz.com/f/cases/12311

12323 TreeModel example broken
https://pharo.fogbugz.com/f/cases/12323

12285 Critics browser broken
https://pharo.fogbugz.com/f/cases/12285

12313 Few enhancements in TreeModel and TreeNodeModel   
https://pharo.fogbugz.com/f/cases/12313

http://files.pharo.org/image/30/30616.zip




Re: [Pharo-dev] how i can browse the users of some trait?

2013-12-03 Thread Yuriy Tymchuk
Smalltalk allClasses select: [ :class |
class traitComposition traits includes: TClass]?

Uko


On 03 Dec 2013, at 13:30, Igor Stasenko siguc...@gmail.com wrote:

 namely, TClass
 cmd-shift-N doesn't helps
 
 -- 
 Best regards,
 Igor Stasenko.




Re: [Pharo-dev] how i can browse the users of some trait?

2013-12-03 Thread Igor Stasenko
On 3 December 2013 13:56, Yuriy Tymchuk yuriy.tymc...@me.com wrote:

 Smalltalk allClasses select: [ :class |
 class traitComposition traits includes: TClass]?

 this won't open browser. my question was 'how to browse...'
not how to inspect or print :)


 Uko


 On 03 Dec 2013, at 13:30, Igor Stasenko siguc...@gmail.com wrote:

  namely, TClass
  cmd-shift-N doesn't helps
 
  --
  Best regards,
  Igor Stasenko.





-- 
Best regards,
Igor Stasenko.


Re: [Pharo-dev] how i can browse the users of some trait?

2013-12-03 Thread Nicolai Hess
2013/12/3 Igor Stasenko siguc...@gmail.com

 namely, TClass
 cmd-shift-N doesn't helps

 --
 Best regards,
 Igor Stasenko.



TClass users
or
Menu
Browse users in System browser?


Re: [Pharo-dev] Building Pharo using Interpreter Class

2013-12-03 Thread p...@highoctane.be
Oops.  There is no pure interpreter.  Sorry. Word skipped on damn phone.

On Tuesday, December 3, 2013, Kirstin Heidler wrote:

  But for some reason we have not been able to work with it correctly.
 We may manange to build, as well as make it, but if not before it will
 fail when we try to open our image with the new VM.

 What configuration do we need to adapt to correctly build everything with
 the Interpreter class, or at least the StackInterpreter Class(Not
 CoInterpreter, because we do not want to have JIT).

 Kirstin

 Am 03.12.2013 13:33, schrieb p...@highoctane.be javascript:_e({},
 'cvml', 'p...@highoctane.be');:

 There is working pure interpreter in the pharovm.

  Phil
 On Tuesday, December 3, 2013, Kirstin Heidler wrote:

 My freind Dimitri was not able to post his message. I am working with him
 on this.


 ___

 Hello,

 as part of a Seminar in the University im trying to build the PharoVM.
 According to the README file here ([1]) I was able to generate and to
 build the VM successfully.

 Now I would like to build the VM without Cog or Stack-to-Register
 optimizations... The problem here is, that I could not find any config
 class (which is a subclass of CPlatformConfig), that provides the right
 configurations and allows to build the VM without errors. I have tried
 to modify PharoUnixConfig(because it was the default config class), but
 unfortunately the build failes when the compiler tries to compile
 gcc3x-interp.c.

 Could somebody help me with this problem? How should I configure my own
 Config class?

 Basically our Group tries to implement an object table in Pharo and we
 want to use (and modify) the basic Interpreter class.



 [1] https://github.com/pharo-project/pharo-vm


 Best regards,
 Dimitri Korsch



 --
  ---
 Philippe Back
 Dramatic Performance Improvements
 Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
 Mail:p...@highoctane.be javascript:_e({}, 'cvml',
 'mail%3ap...@highoctane.be'); | Web: http://philippeback.eu
 Blog: http://philippeback.be | Twitter: @philippeback
 Youtube: http://www.youtube.com/user/philippeback/videos

  High Octane SPRL
 rue cour Boisacq 101 | 1301 Bierges | Belgium

  Pharo Consortium Member - http://consortium.pharo.org/
 Featured on the Software Process and Measurement Cast -
 http://spamcast.libsyn.com
  Sparx Systems Enterprise Architect and Ability Engineering EADocX Value
 Added Reseller






-- 
---
Philippe Back
Dramatic Performance Improvements
Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
Mail:p...@highoctane.be | Web: http://philippeback.eu
Blog: http://philippeback.be | Twitter: @philippeback
Youtube: http://www.youtube.com/user/philippeback/videos

High Octane SPRL
rue cour Boisacq 101 | 1301 Bierges | Belgium

Pharo Consortium Member - http://consortium.pharo.org/
Featured on the Software Process and Measurement Cast -
http://spamcast.libsyn.com
Sparx Systems Enterprise Architect and Ability Engineering EADocX Value
Added Reseller


Re: [Pharo-dev] Roassal Bug related to Athens?

2013-12-03 Thread Igor Stasenko
On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote:

 Igor,

 I had a look at Athens demo to understand how to manage sessions and
 surfaces because Roassal uses AthensSurface and there is a defensive
 mechanism in place in Roassal to initialize the surface in case it is not
 done. In the meantime, I have discovered that the red rectangle bug is
 present in Athens demos as well.

 So, to reproduce.
 AthensFlakeDemo new openInWorld
 save image
 open image


 I tested in Moose 5.0.

 1. Should I open a bug entry in Pharo?

 only if you intend to fix it. because this demo was not intended to be
'fully featured, end-user compatible
and fool-proof demo'. it just a demo to show animation and discard it, but
if you insist this is a bug,
feel free to fix it.


 2. With my superficial knowledge of Athens, my guess is that the session
 management can be done in Athens so that Roassal (and other tools built on
 top of Athens) do not need to do it. May be it is the case already but the
 demos are not using it then.

 I disagree.
Because then, files can also open/close and delete themselves
automatically, so you will be left only to do reading and writing...
Resource management is an application-level responsibility, not framework
level.
I cannot predict in Athens, how often one wants to create/destroy or
(re)use surfaces, and therefore i cannot
create and dispose them when i see fit within framework.
Correct me if i wrong.


 Usman



 On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti usman.bha...@gmail.comwrote:

 Hello Igor,

 Moose 5.0 is using Athens as default canvas for Roassal and we have bug
 with Roassal that seems to be related to Athens.
 http://code.google.com/p/moose-technology/issues/detail?id=1019

 I think it is related to the fact that we create a surface in the OS with
 Athens and once we quit the image, the surface is destroyed as well. So,
 when image is restarted with the visualization trying to use the surface,
 we get the error.

 Could you point to what possibly can be done to avoid this error? Merely
 checking the existence of an appropriate drawing surface in Athens every
 time visualization is drawn, would it suffice?

 regards,

 Usman





-- 
Best regards,
Igor Stasenko.


Re: [Pharo-dev] Unifying Testing Ideas

2013-12-03 Thread Esteban A. Maringolo
2013/12/3 Dennis Schetinin chae...@gmail.com

 I see the only correct way to build a good testing environment: tests should 
 be basically objects, not methods.

They are objects. Instances of TestCase.

But for simplicity they're implemented in a single factory class,
the TestCase subclass...



Esteban A. Maringolo



Re: [Pharo-dev] Building Pharo using Interpreter Class

2013-12-03 Thread Kirstin Heidler

But the StackInterpreter and Stack VM should be working, right?

We just found out, that once an Image has been saved with a Cog-VM there 
can be issues with floating points because of the ordering of bits? LE 
vs. BE? At least it says so in this README [2].
May this be one of the problems we had when trying to start our image 
with the generated StackVM?
Also, which Pharo version do you reccomend to use? We downloaded the one 
from this [1] repository. I think it is a Pharo 2.0?


Thanks a lot for your help. Nice to know that the Interpreter class is 
not working. :)


Kirstin

[1] https://github.com/pharo-project/pharo-vm
[2] http://www.squeakvm.org/svn/squeak/branches/Cog/README

Am 03.12.2013 14:10, schrieb p...@highoctane.be:

Oops.  There is no pure interpreter.  Sorry. Word skipped on damn phone.

On Tuesday, December 3, 2013, Kirstin Heidler wrote:

But for some reason we have not been able to work with it correctly.
We may manange to build, as well as make it, but if not before it
will fail when we try to open our image with the new VM.

What configuration do we need to adapt to correctly build
everything with the Interpreter class, or at least the
StackInterpreter Class(Not CoInterpreter, because we do not want
to have JIT).

Kirstin

Am 03.12.2013 13:33, schrieb p...@highoctane.be javascript:_e({},
'cvml', 'p...@highoctane.be');:

There is working pure interpreter in the pharovm.

Phil
On Tuesday, December 3, 2013, Kirstin Heidler wrote:

My freind Dimitri was not able to post his message. I am
working with him on this.


___

Hello,

as part of a Seminar in the University im trying to build the
PharoVM.
According to the README file here ([1]) I was able to
generate and to
build the VM successfully.

Now I would like to build the VM without Cog or Stack-to-Register
optimizations... The problem here is, that I could not find
any config
class (which is a subclass of CPlatformConfig), that provides
the right
configurations and allows to build the VM without errors. I
have tried
to modify PharoUnixConfig(because it was the default config
class), but
unfortunately the build failes when the compiler tries to compile
gcc3x-interp.c.

Could somebody help me with this problem? How should I
configure my own
Config class?

Basically our Group tries to implement an object table in
Pharo and we
want to use (and modify) the basic Interpreter class.



[1] https://github.com/pharo-project/pharo-vm


Best regards,
Dimitri Korsch



-- 
---

Philippe Back
Dramatic Performance Improvements
Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
Mail:p...@highoctane.be javascript:_e({}, 'cvml',
'mail%3ap...@highoctane.be'); | Web: http://philippeback.eu
Blog: http://philippeback.be | Twitter: @philippeback
Youtube: http://www.youtube.com/user/philippeback/videos

High Octane SPRL
rue cour Boisacq 101 | 1301 Bierges | Belgium

Pharo Consortium Member - http://consortium.pharo.org/
Featured on the Software Process and Measurement Cast -
http://spamcast.libsyn.com
Sparx Systems Enterprise Architect and Ability Engineering EADocX
Value Added Reseller






--
---
Philippe Back
Dramatic Performance Improvements
Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
Mail:p...@highoctane.be mailto:mail%3ap...@highoctane.be | Web: 
http://philippeback.eu

Blog: http://philippeback.be | Twitter: @philippeback
Youtube: http://www.youtube.com/user/philippeback/videos

High Octane SPRL
rue cour Boisacq 101 | 1301 Bierges | Belgium

Pharo Consortium Member - http://consortium.pharo.org/
Featured on the Software Process and Measurement Cast - 
http://spamcast.libsyn.com
Sparx Systems Enterprise Architect and Ability Engineering EADocX 
Value Added Reseller







Re: [Pharo-dev] Building Pharo using Interpreter Class

2013-12-03 Thread p...@highoctane.be
But the StackInterpreter and Stack VM should be working, right?

Yes. Use PharoSVMBuilder class for building that one.

We just found out, that once an Image has been saved with a Cog-VM there
can be issues with floating points because of the ordering of bits? LE vs.
BE? At least it says so in this README [2].
May this be one of the problems we had when trying to start our image with
the generated StackVM?

Not sure about that.  The FloatingPoint plugin is the FloatingPoint plugin.
And it is used in both VMs.

I can open an image with both.

 Also, which Pharo version do you reccomend to use? We downloaded the one
from this
[1] repository. I think it is a Pharo 2.0?

Use Pharo2.0

Thanks a lot for your help. Nice to know that the Interpreter class is not
working. :)

Everyone would love to have those all toghether but the Interpreter is
David T. Lewis thing, where Cog and Stack are Eliot thing. And Pharo does
some of its own things to Cog/Stack. + Clement working on his own stuff as
well.

Not there yet but who knows.


Phil


---
Philippe Back
Dramatic Performance Improvements
Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
Mail:p...@highoctane.be | Web: http://philippeback.eu
Blog: http://philippeback.be | Twitter: @philippeback
Youtube: http://www.youtube.com/user/philippeback/videos

High Octane SPRL
rue cour Boisacq 101 | 1301 Bierges | Belgium

Pharo Consortium Member - http://consortium.pharo.org/
Featured on the Software Process and Measurement Cast -
http://spamcast.libsyn.com
Sparx Systems Enterprise Architect and Ability Engineering EADocX Value
Added Reseller




On Tue, Dec 3, 2013 at 2:34 PM, Kirstin Heidler 
kirstin.heid...@student.hpi.uni-potsdam.de wrote:

  But the StackInterpreter and Stack VM should be working, right?

 We just found out, that once an Image has been saved with a Cog-VM there
 can be issues with floating points because of the ordering of bits? LE vs.
 BE? At least it says so in this README [2].
 May this be one of the problems we had when trying to start our image with
 the generated StackVM?
 Also, which Pharo version do you reccomend to use? We downloaded the one
 from this [1] repository. I think it is a Pharo 2.0?

 Thanks a lot for your help. Nice to know that the Interpreter class is not
 working. :)

 Kirstin

 [1] https://github.com/pharo-project/pharo-vm
 [2] http://www.squeakvm.org/svn/squeak/branches/Cog/README

 Am 03.12.2013 14:10, schrieb p...@highoctane.be:

 Oops.  There is no pure interpreter.  Sorry. Word skipped on damn phone.

 On Tuesday, December 3, 2013, Kirstin Heidler wrote:

  But for some reason we have not been able to work with it correctly.
 We may manange to build, as well as make it, but if not before it will
 fail when we try to open our image with the new VM.

 What configuration do we need to adapt to correctly build everything with
 the Interpreter class, or at least the StackInterpreter Class(Not
 CoInterpreter, because we do not want to have JIT).

 Kirstin

 Am 03.12.2013 13:33, schrieb p...@highoctane.be:

 There is working pure interpreter in the pharovm.

  Phil
 On Tuesday, December 3, 2013, Kirstin Heidler wrote:

 My freind Dimitri was not able to post his message. I am working with
 him on this.


 ___

 Hello,

 as part of a Seminar in the University im trying to build the PharoVM.
 According to the README file here ([1]) I was able to generate and to
 build the VM successfully.

 Now I would like to build the VM without Cog or Stack-to-Register
 optimizations... The problem here is, that I could not find any config
 class (which is a subclass of CPlatformConfig), that provides the right
 configurations and allows to build the VM without errors. I have tried
 to modify PharoUnixConfig(because it was the default config class), but
 unfortunately the build failes when the compiler tries to compile
 gcc3x-interp.c.

 Could somebody help me with this problem? How should I configure my own
 Config class?

 Basically our Group tries to implement an object table in Pharo and we
 want to use (and modify) the basic Interpreter class.



 [1] https://github.com/pharo-project/pharo-vm


 Best regards,
 Dimitri Korsch



 --
  ---
 Philippe Back
 Dramatic Performance Improvements
 Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
 Mail:p...@highoctane.be | Web: http://philippeback.eu
 Blog: http://philippeback.be | Twitter: @philippeback
 Youtube: http://www.youtube.com/user/philippeback/videos

  High Octane SPRL
 rue cour Boisacq 101 | 1301 Bierges | Belgium

  Pharo Consortium Member - http://consortium.pharo.org/
 Featured on the Software Process and Measurement Cast -
 http://spamcast.libsyn.com
  Sparx Systems Enterprise Architect and Ability Engineering EADocX Value
 Added Reseller






 --
  ---
 Philippe Back
 Dramatic Performance Improvements
 Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
 Mail:p...@highoctane.be | Web: http://philippeback.eu
 

Re: [Pharo-dev] Building Pharo using Interpreter Class

2013-12-03 Thread Kirstin Heidler

Thanks phil,

works. :)
We were trying to do weird things but nevermind. We will get to the 
real work now.


Kirstin

Am 03.12.2013 14:41, schrieb p...@highoctane.be:

But the StackInterpreter and Stack VM should be working, right?

Yes. Use PharoSVMBuilder class for building that one.

We just found out, that once an Image has been saved with a Cog-VM 
there can be issues with floating points because of the ordering of 
bits? LE vs. BE? At least it says so in this README [2].
May this be one of the problems we had when trying to start our image 
with the generated StackVM?


Not sure about that.  The FloatingPoint plugin is the FloatingPoint 
plugin. And it is used in both VMs.


I can open an image with both.

 Also, which Pharo version do you reccomend to use? We downloaded the 
one from this

[1] repository. I think it is a Pharo 2.0?

Use Pharo2.0

Thanks a lot for your help. Nice to know that the Interpreter class 
is not working. :)


Everyone would love to have those all toghether but the Interpreter is 
David T. Lewis thing, where Cog and Stack are Eliot thing. And Pharo 
does some of its own things to Cog/Stack. + Clement working on his own 
stuff as well.


Not there yet but who knows.


Phil


---
Philippe Back
Dramatic Performance Improvements
Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027
Mail:p...@highoctane.be mailto:mail%3ap...@highoctane.be | Web: 
http://philippeback.eu

Blog: http://philippeback.be | Twitter: @philippeback
Youtube: http://www.youtube.com/user/philippeback/videos

High Octane SPRL
rue cour Boisacq 101 | 1301 Bierges | Belgium

Pharo Consortium Member - http://consortium.pharo.org/
Featured on the Software Process and Measurement Cast - 
http://spamcast.libsyn.com
Sparx Systems Enterprise Architect and Ability Engineering EADocX 
Value Added Reseller




On Tue, Dec 3, 2013 at 2:34 PM, Kirstin Heidler 
kirstin.heid...@student.hpi.uni-potsdam.de 
mailto:kirstin.heid...@student.hpi.uni-potsdam.de wrote:


But the StackInterpreter and Stack VM should be working, right?

We just found out, that once an Image has been saved with a Cog-VM
there can be issues with floating points because of the ordering
of bits? LE vs. BE? At least it says so in this README [2].
May this be one of the problems we had when trying to start our
image with the generated StackVM?
Also, which Pharo version do you reccomend to use? We downloaded
the one from this [1] repository. I think it is a Pharo 2.0?

Thanks a lot for your help. Nice to know that the Interpreter
class is not working. :)

Kirstin

[1] https://github.com/pharo-project/pharo-vm
[2] http://www.squeakvm.org/svn/squeak/branches/Cog/README

Am 03.12.2013 14:10, schrieb p...@highoctane.be
mailto:p...@highoctane.be:

Oops.  There is no pure interpreter.  Sorry. Word skipped on damn
phone.

On Tuesday, December 3, 2013, Kirstin Heidler wrote:

But for some reason we have not been able to work with it
correctly.
We may manange to build, as well as make it, but if not
before it will fail when we try to open our image with the
new VM.

What configuration do we need to adapt to correctly build
everything with the Interpreter class, or at least the
StackInterpreter Class(Not CoInterpreter, because we do not
want to have JIT).

Kirstin

Am 03.12.2013 13:33, schrieb p...@highoctane.be:

There is working pure interpreter in the pharovm.

Phil
On Tuesday, December 3, 2013, Kirstin Heidler wrote:

My freind Dimitri was not able to post his message. I am
working with him on this.


___

Hello,

as part of a Seminar in the University im trying to
build the PharoVM.
According to the README file here ([1]) I was able to
generate and to
build the VM successfully.

Now I would like to build the VM without Cog or
Stack-to-Register
optimizations... The problem here is, that I could not
find any config
class (which is a subclass of CPlatformConfig), that
provides the right
configurations and allows to build the VM without
errors. I have tried
to modify PharoUnixConfig(because it was the default
config class), but
unfortunately the build failes when the compiler tries
to compile
gcc3x-interp.c.

Could somebody help me with this problem? How should I
configure my own
Config class?

Basically our Group tries to implement an object table
in Pharo and we
want to use (and modify) the basic Interpreter class.



[1] https://github.com/pharo-project/pharo-vm


 

Re: [Pharo-dev] Unifying Testing Ideas

2013-12-03 Thread Dennis Schetinin
Sure, there are objects: it's Smalltalk, methods are obects too :) That's
really correct: SUnit is the simplest thing that (still) works. But is it
still enough? Isn't it a time to make more steps and improve?

I just mean it would be great to have test as distinct object that I can
explore, add certain behavior and properties to, relate to other objects in
system (other tests, test suites, groups and more), open in specific tools
(to be yet created), log all runs and results… and associate with
frameworks that it should be run within… In general, to create a
full-fledged and easy-to-use environment for TDD and controlling all the
development steps with tests, use them as documentation, etc. etc. etc.


--

Best regards,


Dennis Schetinin


2013/12/3 Esteban A. Maringolo emaring...@gmail.com

 2013/12/3 Dennis Schetinin chae...@gmail.com
 
  I see the only correct way to build a good testing environment: tests
 should be basically objects, not methods.

 They are objects. Instances of TestCase.

 But for simplicity they're implemented in a single factory class,
 the TestCase subclass...



 Esteban A. Maringolo




Re: [Pharo-dev] Opal hook?

2013-12-03 Thread Clément Bera
*do you know if the OCUndeclaredVariable is raised for unknown superclass?*

this code:

AnUnknownClass subclass: #Adaptor1Example
instanceVariableNames: 'customers accountID address name
phoneNumber'
classVariableNames: ''
poolDictionaries: ''
category: 'Examples-Cookbook'

is run as a Do It. In Do It, unknown variables (as here AnUnknownClass)
raise an OCUndeclaredVariableWarning.
For example, running:

AnUnknownClass subclass: #Adaptor1Example
instanceVariableNames: 'customers accountID address name
phoneNumber'
classVariableNames: ''
poolDictionaries: ''
category: 'Examples-Cookbook'

executes the default action for OCUndeclaredVariableWarning, which is
opening a pop-up titled: Unknown variable  Here the error is raised
at *compilation time, *therefore it would have* no effect to wrap this with
a #on:do: *

[ AnUnknownClass subclass: #Adaptor1Example
instanceVariableNames: 'customers accountID address name
phoneNumber'
classVariableNames: ''
poolDictionaries: ''
category: 'Examples-Cookbook' ] on: OCSemanticWarning do: [ ]

== same problem.

Now if you do:

[ OpalCompiler new evaluate: 'AnUnknownClass subclass: #Adaptor1Example
instanceVariableNames: ''customers accountID address name
phoneNumber''
classVariableNames: 
poolDictionaries: 
category: ''Examples-Cookbook''' ] on: OCSemanticWarning do: [ :e |
e halt ]

Here we catch the error, and you can handle it.
Now it is not easily possible to resume the error, because you want a
global instead and Opal expects a temp (there are way to resume but with
very deep stack manipulation that I do not want to show to young pharoers
present on this mailing list). So the best is to retry it. One solution is
therefore:

[ OpalCompiler new evaluate: 'AnUnknownClass subclass: #Adaptor1Example
instanceVariableNames: ''customers accountID address phoneNumber''
classVariableNames: 
poolDictionaries: 
category: ''Examples-Cookbook''' ]
on: OCSemanticWarning do: [ :e |
Smalltalk at: e node name put: StubRootClass.
 e retry ]

with e node name answering #AnUnknownClass here.
Now you need to make sure that the exception block is executed for the case
of a missing superclass and not something else or you will end up creating
loads of globals.

The exception block should be something similar to:

 [ :e |
e node name first isUppercase and: [ some condition ] ifTrue: [
Smalltalk at: e node name put: StubRootClass.
 ^ e retry ].
e pass ]

*How to undefined and OCUndeclaredVariableWarning relate?*

In your case, while loading from Monticello the code is compiled and
evaluated in non interactive mode. Therefore it cannot trigger the default
action of OCUndeclaredVariableWarning which is a UI event. So it sets by
default the unknown global to:

Undeclared at: varName asSymbol put: nil.
OCUndeclaredVariable new name: varName asSymbol

in: OCUndeclaredVariableWarning defaultAction

which then later triggers the code in UndefinedObject.



2013/12/3 Stéphane Ducasse stephane.duca...@inria.fr


 On Dec 3, 2013, at 11:20 AM, Clément Bera bera.clem...@gmail.com wrote:

 Then for your project replace ProtoObject by StubRootClass in
  UndefinedObjectsubclass:instanceVariableNames:classVariableNames:
 poolDictionaries:category: it will work.


 yes but this is ugly because I do not want override.
 So I will introduce an exception so that we can do that in a clean way.


 An alternative is to catch OCSemanticWarning or its subclass
 OCUndeclaredVariableWarning while loading the new classes and execute
 another code instead of the default action in the exception handling block



 do you know if the OCUndeclaredVariable is raised for unknown superclass?
 How to undefined and OCUndeclaredVariableWarning relate?

 Stef



 2013/12/3 Stéphane Ducasse stephane.duca...@inria.fr

  Well if the class does not exists it calls the method on
 UndefinedObject (UndeclaredBinding). And you have:

 I will check and see if I can set up a hook because having classes
 subclasses of protoobject is not a good idea
 when loading broken code.

  UndefinedObjectsubclass: nameOfClass
instanceVariableNames: instVarNames
classVariableNames: classVarNames
poolDictionaries: poolDictnames
category: category
Calling this method is now considered an accident.  If you
 really want to create a class with a nil superclass, then create the class
 and then set the superclass using #superclass:
self traceCr: ('Attempt to create ', nameOfClass, ' as a subclass
 of nil.  Possibly a class is being loaded before its superclass.').
^ProtoObject
subclass: nameOfClass
instanceVariableNames: instVarNames
classVariableNames: classVarNames
poolDictionaries: poolDictnames
category: category
 
  The best is to 

Re: [Pharo-dev] Roassal Bug related to Athens?

2013-12-03 Thread Usman Bhatti
On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.com wrote:




 On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote:

 Igor,

 I had a look at Athens demo to understand how to manage sessions and
 surfaces because Roassal uses AthensSurface and there is a defensive
 mechanism in place in Roassal to initialize the surface in case it is not
 done. In the meantime, I have discovered that the red rectangle bug is
 present in Athens demos as well.

 So, to reproduce.
 AthensFlakeDemo new openInWorld
 save image
 open image


 I tested in Moose 5.0.

 1. Should I open a bug entry in Pharo?

 only if you intend to fix it. because this demo was not intended to be
 'fully featured, end-user compatible
 and fool-proof demo'. it just a demo to show animation and discard it, but
 if you insist this is a bug,
 feel free to fix it.


Unfortunately, I wont have time for this. For me it would have been good,
had Athens provided an example of session management as a good client so
that example-oriented people like me could understand easily. Because,
otherwise, I'll have to look at the code of NativeBoost and that adds to
the level of complexity because I would do things with trial and error.




 2. With my superficial knowledge of Athens, my guess is that the session
 management can be done in Athens so that Roassal (and other tools built on
 top of Athens) do not need to do it. May be it is the case already but the
 demos are not using it then.

 I disagree.

Because then, files can also open/close and delete themselves
 automatically, so you will be left only to do reading and writing...
 Resource management is an application-level responsibility, not framework
 level.
 I cannot predict in Athens, how often one wants to create/destroy or
 (re)use surfaces, and therefore i cannot
 create and dispose them when i see fit within framework.
 Correct me if i wrong.


I think this doesn't compare to file handling because there are many types
of operations possible on files and that are application-specific. Here
resource management is actually exception-handling: I should not give to my
client a surface that does not exist any more. Now, of course, if there is
some application-level intelligence is involved, we cannot put that in the
framework.

But I would understand the absence of such a mechanism in the framework but
then a tutorial should explain to novices/first-timers how to do it.

Usman






 Usman



 On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti usman.bha...@gmail.comwrote:

 Hello Igor,

 Moose 5.0 is using Athens as default canvas for Roassal and we have bug
 with Roassal that seems to be related to Athens.
 http://code.google.com/p/moose-technology/issues/detail?id=1019

 I think it is related to the fact that we create a surface in the OS
 with Athens and once we quit the image, the surface is destroyed as well.
 So, when image is restarted with the visualization trying to use the
 surface, we get the error.

 Could you point to what possibly can be done to avoid this error? Merely
 checking the existence of an appropriate drawing surface in Athens every
 time visualization is drawn, would it suffice?

 regards,

 Usman





 --
 Best regards,
 Igor Stasenko.



Re: [Pharo-dev] Grease conflicts #packages with RPackage

2013-12-03 Thread Stephan Eggermont
I could copy the separate packages, but not the slice.

Please note that the added test is expected to fail on all builds containing 
Grease-Core.

Stephan




Re: [Pharo-dev] Versionner Impressions

2013-12-03 Thread Stephan Eggermont
Hi Sean,

Didi you compare it to Metaceller in Moose?

Stephan



Re: [Pharo-dev] Roassal Bug related to Athens?

2013-12-03 Thread kilon alios
You are correct but so is Igor. Managing external resources has to do with
VM and Nativeboost itself and not with Athens. This could happen with any
other library.

Session aware code is actually very easy to do and its explained
Athens-Tutorial package in AthensViewMorphcheckSession . Its just 2 lines
of code.

In step2 method there is a relevant comment

IMPORTANT NOTE:
the surface which we will create at this step will be used in later steps.
This means that if you resize the window (changing the view size), you may
need to recreate surface.
Also, since surface uses external resources, quitting an image and
restarting it, will also require to
create a new surface, because the one from previous session will be no
longer accessible.


but there is no mention to check the checkSession method for an example how
sessions can be handled. I think this deserves a separate step by itself
with a nice example. Igor you want me to give me commit rights to Athens
repo to add that myself ?


On Tue, Dec 3, 2013 at 4:21 PM, Usman Bhatti usman.bha...@gmail.com wrote:


 On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.com wrote:




 On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote:

 Igor,

 I had a look at Athens demo to understand how to manage sessions and
 surfaces because Roassal uses AthensSurface and there is a defensive
 mechanism in place in Roassal to initialize the surface in case it is not
 done. In the meantime, I have discovered that the red rectangle bug is
 present in Athens demos as well.

 So, to reproduce.
 AthensFlakeDemo new openInWorld
 save image
 open image


 I tested in Moose 5.0.

 1. Should I open a bug entry in Pharo?

 only if you intend to fix it. because this demo was not intended to be
 'fully featured, end-user compatible
 and fool-proof demo'. it just a demo to show animation and discard it,
 but if you insist this is a bug,
 feel free to fix it.


 Unfortunately, I wont have time for this. For me it would have been good,
 had Athens provided an example of session management as a good client so
 that example-oriented people like me could understand easily. Because,
 otherwise, I'll have to look at the code of NativeBoost and that adds to
 the level of complexity because I would do things with trial and error.




 2. With my superficial knowledge of Athens, my guess is that the session
 management can be done in Athens so that Roassal (and other tools built on
 top of Athens) do not need to do it. May be it is the case already but the
 demos are not using it then.

 I disagree.

 Because then, files can also open/close and delete themselves
 automatically, so you will be left only to do reading and writing...
 Resource management is an application-level responsibility, not framework
 level.
 I cannot predict in Athens, how often one wants to create/destroy or
 (re)use surfaces, and therefore i cannot
 create and dispose them when i see fit within framework.
 Correct me if i wrong.


 I think this doesn't compare to file handling because there are many types
 of operations possible on files and that are application-specific. Here
 resource management is actually exception-handling: I should not give to my
 client a surface that does not exist any more. Now, of course, if there is
 some application-level intelligence is involved, we cannot put that in the
 framework.

 But I would understand the absence of such a mechanism in the framework
 but then a tutorial should explain to novices/first-timers how to do it.

 Usman






 Usman



 On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti usman.bha...@gmail.comwrote:

 Hello Igor,

 Moose 5.0 is using Athens as default canvas for Roassal and we have bug
 with Roassal that seems to be related to Athens.
 http://code.google.com/p/moose-technology/issues/detail?id=1019

 I think it is related to the fact that we create a surface in the OS
 with Athens and once we quit the image, the surface is destroyed as well.
 So, when image is restarted with the visualization trying to use the
 surface, we get the error.

 Could you point to what possibly can be done to avoid this error?
 Merely checking the existence of an appropriate drawing surface in Athens
 every time visualization is drawn, would it suffice?

 regards,

 Usman





 --
 Best regards,
 Igor Stasenko.





Re: [Pharo-dev] Roassal Bug related to Athens?

2013-12-03 Thread Usman Bhatti
On Tue, Dec 3, 2013 at 3:46 PM, kilon alios kilon.al...@gmail.com wrote:

 You are correct but so is Igor. Managing external resources has to do with
 VM and Nativeboost itself and not with Athens. This could happen with any
 other library.

 Session aware code is actually very easy to do and its explained
 Athens-Tutorial package in AthensViewMorphcheckSession . Its just 2 lines
 of code.

 In step2 method there is a relevant comment

 IMPORTANT NOTE:
 the surface which we will create at this step will be used in later steps.
  This means that if you resize the window (changing the view size), you
 may need to recreate surface.
 Also, since surface uses external resources, quitting an image and
 restarting it, will also require to
  create a new surface, because the one from previous session will be no
 longer accessible.
 


Ok. Tx. That's very useful info. I'll have a look.



 but there is no mention to check the checkSession method for an example
 how sessions can be handled. I think this deserves a separate step by
 itself with a nice example. Igor you want me to give me commit rights to
 Athens repo to add that myself ?


And if you add the example to Athens, please let me know.




 On Tue, Dec 3, 2013 at 4:21 PM, Usman Bhatti usman.bha...@gmail.comwrote:


 On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.com wrote:




 On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote:

 Igor,

 I had a look at Athens demo to understand how to manage sessions and
 surfaces because Roassal uses AthensSurface and there is a defensive
 mechanism in place in Roassal to initialize the surface in case it is not
 done. In the meantime, I have discovered that the red rectangle bug is
 present in Athens demos as well.

 So, to reproduce.
 AthensFlakeDemo new openInWorld
 save image
 open image


 I tested in Moose 5.0.

 1. Should I open a bug entry in Pharo?

 only if you intend to fix it. because this demo was not intended to be
 'fully featured, end-user compatible
 and fool-proof demo'. it just a demo to show animation and discard it,
 but if you insist this is a bug,
 feel free to fix it.


 Unfortunately, I wont have time for this. For me it would have been good,
 had Athens provided an example of session management as a good client so
 that example-oriented people like me could understand easily. Because,
 otherwise, I'll have to look at the code of NativeBoost and that adds to
 the level of complexity because I would do things with trial and error.




 2. With my superficial knowledge of Athens, my guess is that the
 session management can be done in Athens so that Roassal (and other tools
 built on top of Athens) do not need to do it. May be it is the case already
 but the demos are not using it then.

 I disagree.

 Because then, files can also open/close and delete themselves
 automatically, so you will be left only to do reading and writing...
 Resource management is an application-level responsibility, not
 framework level.
 I cannot predict in Athens, how often one wants to create/destroy or
 (re)use surfaces, and therefore i cannot
 create and dispose them when i see fit within framework.
 Correct me if i wrong.


 I think this doesn't compare to file handling because there are many
 types of operations possible on files and that are application-specific.
 Here resource management is actually exception-handling: I should not give
 to my client a surface that does not exist any more. Now, of course, if
 there is some application-level intelligence is involved, we cannot put
 that in the framework.

 But I would understand the absence of such a mechanism in the framework
 but then a tutorial should explain to novices/first-timers how to do it.

 Usman






 Usman



 On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti usman.bha...@gmail.comwrote:

 Hello Igor,

 Moose 5.0 is using Athens as default canvas for Roassal and we have
 bug with Roassal that seems to be related to Athens.
 http://code.google.com/p/moose-technology/issues/detail?id=1019

 I think it is related to the fact that we create a surface in the OS
 with Athens and once we quit the image, the surface is destroyed as well.
 So, when image is restarted with the visualization trying to use the
 surface, we get the error.

 Could you point to what possibly can be done to avoid this error?
 Merely checking the existence of an appropriate drawing surface in Athens
 every time visualization is drawn, would it suffice?

 regards,

 Usman





 --
 Best regards,
 Igor Stasenko.






[Pharo-dev] Smalltalkhub ci image

2013-12-03 Thread Stephan Eggermont
The smalltalkhub build has been red for quite some time now. If I want to run a 
hub,
should I take the latest build? 

Stephan


Re: [Pharo-dev] Roassal Bug related to Athens?

2013-12-03 Thread kilon alios
you dont have to wait for my example as i said checkSession is already the
example

checkSession
session == Smalltalk session ifFalse: [
just reset the surface
surface := nil.
session := Smalltalk session.
]

as you can see here essentially we compare session if they differ then we
know we need to reinitialize all our external resources in this example
surface . Not that it assigns surfaces as nil but you will need to fully
reinitialize the surface cause otherwise you will have a non existent
surface still. In this class a nill surface is reinitialized by another
method.

Also I like to note here that Roassal Easel appear also not to check
sessions and exhibits the known problem if image is stored with Easel open.
Its something Roassal people would need to look at.


On Tue, Dec 3, 2013 at 4:51 PM, Usman Bhatti usman.bha...@gmail.com wrote:




 On Tue, Dec 3, 2013 at 3:46 PM, kilon alios kilon.al...@gmail.com wrote:

 You are correct but so is Igor. Managing external resources has to do
 with VM and Nativeboost itself and not with Athens. This could happen with
 any other library.

 Session aware code is actually very easy to do and its explained
 Athens-Tutorial package in AthensViewMorphcheckSession . Its just 2 lines
 of code.

 In step2 method there is a relevant comment

 IMPORTANT NOTE:
 the surface which we will create at this step will be used in later steps.
  This means that if you resize the window (changing the view size), you
 may need to recreate surface.
 Also, since surface uses external resources, quitting an image and
 restarting it, will also require to
  create a new surface, because the one from previous session will be no
 longer accessible.
 


 Ok. Tx. That's very useful info. I'll have a look.



 but there is no mention to check the checkSession method for an example
 how sessions can be handled. I think this deserves a separate step by
 itself with a nice example. Igor you want me to give me commit rights to
 Athens repo to add that myself ?


 And if you add the example to Athens, please let me know.




 On Tue, Dec 3, 2013 at 4:21 PM, Usman Bhatti usman.bha...@gmail.comwrote:


 On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.comwrote:




 On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote:

 Igor,

 I had a look at Athens demo to understand how to manage sessions and
 surfaces because Roassal uses AthensSurface and there is a defensive
 mechanism in place in Roassal to initialize the surface in case it is not
 done. In the meantime, I have discovered that the red rectangle bug is
 present in Athens demos as well.

 So, to reproduce.
 AthensFlakeDemo new openInWorld
 save image
 open image


 I tested in Moose 5.0.

 1. Should I open a bug entry in Pharo?

 only if you intend to fix it. because this demo was not intended to be
 'fully featured, end-user compatible
 and fool-proof demo'. it just a demo to show animation and discard it,
 but if you insist this is a bug,
 feel free to fix it.


 Unfortunately, I wont have time for this. For me it would have been
 good, had Athens provided an example of session management as a good client
 so that example-oriented people like me could understand easily. Because,
 otherwise, I'll have to look at the code of NativeBoost and that adds to
 the level of complexity because I would do things with trial and error.




 2. With my superficial knowledge of Athens, my guess is that the
 session management can be done in Athens so that Roassal (and other tools
 built on top of Athens) do not need to do it. May be it is the case 
 already
 but the demos are not using it then.

 I disagree.

  Because then, files can also open/close and delete themselves
 automatically, so you will be left only to do reading and writing...
 Resource management is an application-level responsibility, not
 framework level.
 I cannot predict in Athens, how often one wants to create/destroy or
 (re)use surfaces, and therefore i cannot
 create and dispose them when i see fit within framework.
 Correct me if i wrong.


 I think this doesn't compare to file handling because there are many
 types of operations possible on files and that are application-specific.
 Here resource management is actually exception-handling: I should not give
 to my client a surface that does not exist any more. Now, of course, if
 there is some application-level intelligence is involved, we cannot put
 that in the framework.

 But I would understand the absence of such a mechanism in the framework
 but then a tutorial should explain to novices/first-timers how to do it.

 Usman






 Usman



 On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti 
 usman.bha...@gmail.comwrote:

 Hello Igor,

 Moose 5.0 is using Athens as default canvas for Roassal and we have
 bug with Roassal that seems to be related to Athens.
 http://code.google.com/p/moose-technology/issues/detail?id=1019

 I think it is related to the fact that we create a surface in the OS
 with Athens and 

Re: [Pharo-dev] Smalltalkhub ci image

2013-12-03 Thread Yuriy Tymchuk
I was using a latest stable build and it works ok. 

Uko


On 03 Dec 2013, at 15:58, Stephan Eggermont step...@stack.nl wrote:

 The smalltalkhub build has been red for quite some time now. If I want to run 
 a hub,
 should I take the latest build? 
 
 Stephan




[Pharo-dev] explore is broken

2013-12-03 Thread Oscar Nierstrasz @ gmail

There is something wrong with the EyeTreeInspector in the latest Pharo image:

Smalltalk explore

brings up the debugger.

Ditto if you inspect and manually select the EyeTreeInspector.

I could not find any issue in the issue tracker about this. Does anyone know 
about it?

Oscar


Re: [Pharo-dev] explore is broken

2013-12-03 Thread Clément Bera
It works in 30615 but is broken in 30616.

No one knows about it yet I guess because 30616 is from today.

The bug is from the one of the 30616 change. Can someone with a good Spec
knowledge have a look at it ?


2013/12/3 Oscar Nierstrasz @ gmail oscar.nierstr...@gmail.com


 There is something wrong with the EyeTreeInspector in the latest Pharo
 image:

 Smalltalk explore

 brings up the debugger.

 Ditto if you inspect and manually select the EyeTreeInspector.

 I could not find any issue in the issue tracker about this. Does anyone
 know about it?

 Oscar



Re: [Pharo-dev] explore is broken

2013-12-03 Thread Marcus Denker

On 03 Dec 2013, at 16:31, Clément Bera bera.clem...@gmail.com wrote:

 It works in 30615 but is broken in 30616.
 
 No one knows about it yet I guess because 30616 is from today.
 
 The bug is from the one of the 30616 change. Can someone with a good Spec 
 knowledge have a look at it ?
 

It seems to work when removing the “contents” send in the displayBlock: block 
in the method #tree of EyeTreeInspector.

I will commit a fix…

Marcus


Re: [Pharo-dev] Versionner Impressions

2013-12-03 Thread Sean P. DeNigris
Christophe Demarey wrote
 Can you explain me your use case?

Sure... I installed Phexample via the Configuration Browser, by switching to
MetaRepoFor20. The config loaded Phexample from its home repository,
sthub/Phexample/Phexample. When I added it as a dependent project, my
choices IIRC were the package cache and MetaRepoFor20. I wanted to use the
home repo but the widget only allowed me to choose from those two options.

While we're on the subject, repo creation is complicated enough to warrant a
nice widget everywhere in Versionner (and maybe port it over to Monticello
Browser, whcih is not much better). IMHO, it needs to offer:
- likely repos, like was done above e.g. repos associated to the package in
question
- all repos known to image
- create new repo


Christophe Demarey wrote
 Do you mean for a new project? Yes, maybe the developer has already done
 some commits.
 I will add that.

Yes, FMOD was one package, so I didn't make a config. Then I wrote tests in
their own package...

Thanks again :)



-
Cheers,
Sean
--
View this message in context: 
http://forum.world.st/Versionner-Impressions-tp4726902p4727072.html
Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.



Re: [Pharo-dev] explore is broken

2013-12-03 Thread Marcus Denker

On 03 Dec 2013, at 16:37, Marcus Denker marcus.den...@inria.fr wrote:

 
 On 03 Dec 2013, at 16:31, Clément Bera bera.clem...@gmail.com wrote:
 
 It works in 30615 but is broken in 30616.
 
 No one knows about it yet I guess because 30616 is from today.
 
 The bug is from the one of the 30616 change. Can someone with a good Spec 
 knowledge have a look at it ?
 
 
 It seems to work when removing the “contents” send in the displayBlock: block 
 in the method #tree of EyeTreeInspector.
 
 I will commit a fix…
 

https://pharo.fogbugz.com/f/cases/12328/TreeInspector-DNU

will be in the next update.

Marcus




Re: [Pharo-dev] Unifying Testing Ideas

2013-12-03 Thread Sean P. DeNigris
Attila Magyar wrote
 did you want something like this?
 mock a: anyArgument b: exactArgument1 c: exactArgument2

Exactly.


Attila Magyar wrote
 I rarely use 
/
 does
/
 , as far as I remember it is not even documented. I don't know the code
 behind the test but based on the names it looks like an adapter like
 thing. (e.g. a thin wrapper above a 3rd party api with not too much logic
 inside). If this is the case, normally I would test it with integration
 tests, instead of mocks.

Yes it's a wrapper. It should be tested with integration/acceptance tests.
But, it wraps callouts to a C dynamic library via NB, so it's hard to test -
i.e. crashes the VM, etc. Interactions with it deserve to be tested via unit
tests (in general I drop down to unit tests inside a failing
integration/acceptance test anyway). 

Anyway, does: is very important. Stubbing (can  (does: | answers:)) and
mocking (should) seemed kind of like a nature-vs-nurture debate for a while,
but there is a lot of overlap. Sometimes you need one, sometimes the other,
and sometimes both (as shown in my example, although I kept thinking that in
practice I'd probably write a test double by hand to be reused in other
places).

In fact, #does: and #answers: could easily be merged, using double dispatch
to pass either a block or a value.

Unrelatedly, it would be slightly clearer to rename anything to
anyMessage. anything makes it seem like it could be passed as an
argument, which doesn't work. Or alternately, you could probably rename
AnyMessage to Anything and combine its API with that of AnyArgument if they
don't clash...



-
Cheers,
Sean
--
View this message in context: 
http://forum.world.st/Unifying-Testing-Ideas-tp4726787p4727086.html
Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.



[Pharo-dev] [pharo-project/pharo-core]

2013-12-03 Thread GitHub
  Branch: refs/tags/30617
  Home:   https://github.com/pharo-project/pharo-core


[Pharo-dev] [pharo-project/pharo-core] b6872a: 30617

2013-12-03 Thread GitHub
  Branch: refs/heads/3.0
  Home:   https://github.com/pharo-project/pharo-core
  Commit: b6872a02e80a33aef212716a623945b5c135687c
  
https://github.com/pharo-project/pharo-core/commit/b6872a02e80a33aef212716a623945b5c135687c
  Author: Jenkins Build Server bo...@pharo-project.org
  Date:   2013-12-03 (Tue, 03 Dec 2013)

  Changed paths:
A Komitter.package/KomitCacheRemote.class/README.md
A Komitter.package/KomitCacheRemote.class/definition.st
A Komitter.package/KomitHttpRemote.class/README.md
A Komitter.package/KomitHttpRemote.class/definition.st
R Komitter.package/KomitterUI.class/class/icons/historyIconData.st
A Komitter.package/KomitterUI.class/class/icons/manageRemotesIcon.st
A Komitter.package/KomitterUI.class/class/private-icons/historyIconData.st
A Komitter.package/KomitterUI.class/class/private-icons/manageRemotesData.st
M Komitter.package/KomitterUI.class/class/specs/defaultSpec.st
M Komitter.package/KomitterUI.class/definition.st
A Komitter.package/KomitterUI.class/instance/accessing/manageRemotes.st
M 
Komitter.package/KomitterUI.class/instance/initialization/initializeWidgets.st
A Komitter.package/KomitterUI.class/instance/private-icons/historyIcon.st
A 
Komitter.package/KomitterUI.class/instance/private-icons/manageRemotesIcon.st
A Komitter.package/KomitterUI.class/instance/private/openRemoteManager.st
A Komitter.package/RemotesManager.class/README.md
A Komitter.package/RemotesManager.class/class/icons/addRemoteIcon.st
A Komitter.package/RemotesManager.class/class/icons/removeRemoteIcon.st
A 
Komitter.package/RemotesManager.class/class/private-icons/addRemoteIconData.st
A 
Komitter.package/RemotesManager.class/class/private-icons/removeRemoteIconData.st
A Komitter.package/RemotesManager.class/class/specs/defaultSpec.st
A Komitter.package/RemotesManager.class/definition.st
A Komitter.package/RemotesManager.class/instance/accessing/addRemote.st
A Komitter.package/RemotesManager.class/instance/accessing/packages.st
A Komitter.package/RemotesManager.class/instance/accessing/remotes.st
A Komitter.package/RemotesManager.class/instance/accessing/removeRemote.st
A 
Komitter.package/RemotesManager.class/instance/initialization/buildRoots.st
A 
Komitter.package/RemotesManager.class/instance/initialization/initialize.st
A 
Komitter.package/RemotesManager.class/instance/initialization/initializePresenter.st
A 
Komitter.package/RemotesManager.class/instance/initialization/initializeWidgets.st
A 
Komitter.package/RemotesManager.class/instance/private-icons/addRemoteIcon.st
A 
Komitter.package/RemotesManager.class/instance/private-icons/removeRemoteIcon.st
A Komitter.package/RemotesManager.class/instance/private/addRepository.st
A 
Komitter.package/RemotesManager.class/instance/private/change_forRemote_.st
A Komitter.package/RemotesManager.class/instance/private/doIfNotSilent_.st
A Komitter.package/RemotesManager.class/instance/private/newRepository.st
A Komitter.package/RemotesManager.class/instance/private/removeRepository.st
A Komitter.package/RemotesManager.class/instance/private/silentWhile_.st
A 
Komitter.package/RemotesManager.class/instance/private/updateRemoteSelectionFrom_.st
A Komitter.package/RemotesManager.class/instance/protocol/packages_.st
A Komitter.package/RemotesManager.class/instance/protocol/title.st
A Komitter.package/extension/MCCacheRepository/instance/isCache.st
A Komitter.package/extension/MCCacheRepository/instance/koRemote.st
M Komitter.package/extension/MCHttpRepository/instance/koRemote.st
A Komitter.package/extension/MCRepository/instance/isCache.st
M 
Morphic-Base.package/HaloMorph.class/instance/geometry/worldBoundsForMorph_.st
R Morphic-Base.package/ListItemWrapper.class/instance/as yet 
unclassified/canBeDragged.st
R Morphic-Base.package/ListItemWrapper.class/instance/as yet 
unclassified/handlesMouseOver_.st
R Morphic-Base.package/ListItemWrapper.class/instance/as yet 
unclassified/hasEquivalentIn_.st
R Morphic-Base.package/ListItemWrapper.class/instance/as yet 
unclassified/wantsDroppedObject_.st
A 
Morphic-Base.package/ListItemWrapper.class/instance/testing/canBeDragged.st
A 
Morphic-Base.package/ListItemWrapper.class/instance/testing/handlesMouseOver_.st
A 
Morphic-Base.package/ListItemWrapper.class/instance/testing/hasEquivalentIn_.st
A 
Morphic-Base.package/ListItemWrapper.class/instance/testing/wantsDroppedObject_.st
M Morphic-Base.package/MenuMorph.class/instance/events/updateColor.st
M Morphic-Base.package/MenuMorph.class/instance/keyboard 
control/selectMoreItem_.st
M 
Morphic-Base.package/Paragraph.class/instance/editing/actionAttributesUnder_event_do_.st
M 
Morphic-Base.package/SimpleHierarchicalListMorph.class/instance/search/basicKeyPressed_.st
M Morphic-Base.package/SystemWindow.class/instance/menu 

[Pharo-dev] Slice 12324

2013-12-03 Thread Stephan Eggermont
Can anyone put it in place? Can’t seem to commit it


[Pharo-dev] CompiledMethod#= is broken

2013-12-03 Thread Oscar Nierstrasz

The following code breaks:

(SortedCollectionTest#testDo) = (SortedCollectionTest#testStoreOn).

because it makes use of AdditionalMethodState#analogousCodeTo: which tries to 
send #analogousCodeTo: to a property which is an Association.

It seems to me the solution is to implement Association#analogousCodeTo: with 
an equality test:

analogousCodeTo: anObject 
   ^self class == anObject class
 and: [ self = anObject ]

Does this make sense?

See:

https://pharo.fogbugz.com/f/cases/12077/MNU-in-AdditionalMethodState-analogousCodeTo

Oscar Nierstrasz




Re: [Pharo-dev] 12259: FileSystem memory reads writesusing a binary stream by default

2013-12-03 Thread Damien Cassou
Thanks Max for the report. Do you have an idea on how we could solve the
problem ? The previous behaviour was not acceptable either because the
streams that came out of a memory filesystem were the only ones with binary
content
On Dec 3, 2013 5:35 PM, Max Leske maxle...@gmail.com wrote:

 Damien, Marcus

 this change breaks a lot of things in FileSystem-Git. I don’t disagree
 with the idea that reading characters should be default (one could argue
 about it…) but your change makes it IMPOSSIBLE to read bytes because
 unprintable characters are discarded! So if my ByteArray is a NULL
 terminated string, for instance, I can not check for the NULL termination
 anymore.

 Cheers,
 Max



Re: [Pharo-dev] Unifying Testing Ideas

2013-12-03 Thread Denis Kudriashov
Problem with TestCase approach is mixing two separate concerns. First is
how we want to define system specifications. Another is how we can persist
such specifications. When we stay at test case level we lost freedom for
specification definition. We restricted with smalltalk language artifacts.
For example, how we can group our tests? With classic test case approach we
have four levels: packages, classes, protocols and methods. Now remember
how many times you put long names for test like
#shouldDoingSomethingWhenSomeSitiationHappensDuringAnotherSituationHappenButWhenSituation3NotHappen.
And most times you have tests for each separate situation with same long
test names.
In smalltalk only way to refactor test names duplication is extraction same
when condition to separate test case classes. But it means that you build
classes with very long names and most times your test names stay big (but
with reduced length). And do you know way how to group such classes? Only
way is put such classes to own class category. Nobody doing this.

Now imagine we don't care how to persist tests (specifications). We can
model specifications with explicit objects which present #when, #should and
other test artifacts, which can group specifications with arbitrary way.
With true objects we don't name our specifications with method name
convention. We can name tests with natural language, we can put names for
when and should expressions with natural language.
With objects we can build smalltalk vision of BDD framework. Really with
smalltalk live system testing environment can be very different from other
languages. BDD frameworks of other languages just changed names of TDD
dictionary. They all stay restricted with language syntax.

So it is my vision. I really want to build such system but I have no time
for this yet.
Maybe Sean doing something similar?



2013/12/3 Esteban A. Maringolo emaring...@gmail.com

 2013/12/3 Dennis Schetinin chae...@gmail.com
 
  I see the only correct way to build a good testing environment: tests
 should be basically objects, not methods.

 They are objects. Instances of TestCase.

 But for simplicity they're implemented in a single factory class,
 the TestCase subclass...



 Esteban A. Maringolo




Re: [Pharo-dev] CompiledMethod#= is broken

2013-12-03 Thread Eliot Miranda
On Tue, Dec 3, 2013 at 9:49 AM, Oscar Nierstrasz oscar.nierstr...@gmail.com
 wrote:


 The following code breaks:

 (SortedCollectionTest#testDo) = (SortedCollectionTest#testStoreOn).

 because it makes use of AdditionalMethodState#analogousCodeTo: which
 tries to send #analogousCodeTo: to a property which is an Association.

 It seems to me the solution is to implement Association#analogousCodeTo:
 with an equality test:

 analogousCodeTo: anObject
^self class == anObject class
  and: [ self = anObject ]

 Does this make sense?


Yes.  I should have written it this way in the first place.  Thanks.



 See:


 https://pharo.fogbugz.com/f/cases/12077/MNU-in-AdditionalMethodState-analogousCodeTo

 Oscar Nierstrasz





-- 
best,
Eliot


Re: [Pharo-dev] CompiledMethod#= is broken

2013-12-03 Thread Eliot Miranda
On Tue, Dec 3, 2013 at 11:27 AM, Eliot Miranda eliot.mira...@gmail.comwrote:




 On Tue, Dec 3, 2013 at 9:49 AM, Oscar Nierstrasz 
 oscar.nierstr...@gmail.com wrote:


 The following code breaks:

 (SortedCollectionTest#testDo) = (SortedCollectionTest#testStoreOn).

 because it makes use of AdditionalMethodState#analogousCodeTo: which
 tries to send #analogousCodeTo: to a property which is an Association.

 It seems to me the solution is to implement
 Association#analogousCodeTo: with an equality test:

 analogousCodeTo: anObject
^self class == anObject class
  and: [ self = anObject ]

 Does this make sense?


 Yes.  I should have written it this way in the first place.  Thanks.



 See:


 https://pharo.fogbugz.com/f/cases/12077/MNU-in-AdditionalMethodState-analogousCodeTo

 Oscar Nierstrasz





 --
 best,
 Eliot




-- 
best,
Eliot


AdditionalMethodState-analogousCodeTo.st
Description: Binary data


Re: [Pharo-dev] Unifying Testing Ideas

2013-12-03 Thread Attila Magyar
Sean P. DeNigris wrote
 In fact, #does: and #answers: could easily be merged, using double
 dispatch to pass either a block or a value.

It's true, but it would make difficult to return a block. E.g.

mock can receive: #msg; answers: [ [..] ]


Sean P. DeNigris wrote
 Unrelatedly, it would be slightly clearer to rename anything to
 anyMessage. anything makes it seem like it could be passed as an
 argument, which doesn't work. Or alternately, you could probably rename
 AnyMessage to Anything and combine its API with that of AnyArgument if
 they don't clash...

I agree, I'll try to combine them first, but anyMessage/anyArgument seems
fine too.

Anyways, I'm working on the next version with a slightly different api. My
plan is to fully separate the DSL from the main part. This will make
possible to play with different syntax without touching the core. Or even
the users will be able to define their own syntax.




--
View this message in context: 
http://forum.world.st/Unifying-Testing-Ideas-tp4726787p4727144.html
Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.



Re: [Pharo-dev] [Pharo-users] Building Pharo using Interpreter Class

2013-12-03 Thread Stéphane Ducasse
Hello kirstin

why dimitri is not able to post? can you tell us more?

Stef

On Dec 3, 2013, at 1:17 PM, Kirstin Heidler 
kirstin.heid...@student.hpi.uni-potsdam.de wrote:

 My freind Dimitri was not able to post his message. I am working with him on 
 this.
 
 ___
 
 Hello,
 
 as part of a Seminar in the University im trying to build the PharoVM.
 According to the README file here ([1]) I was able to generate and to
 build the VM successfully.
 
 Now I would like to build the VM without Cog or Stack-to-Register
 optimizations... The problem here is, that I could not find any config
 class (which is a subclass of CPlatformConfig), that provides the right
 configurations and allows to build the VM without errors. I have tried
 to modify PharoUnixConfig(because it was the default config class), but
 unfortunately the build failes when the compiler tries to compile
 gcc3x-interp.c.
 
 Could somebody help me with this problem? How should I configure my own
 Config class?
 
 Basically our Group tries to implement an object table in Pharo and we
 want to use (and modify) the basic Interpreter class.
 
 
 
 [1] https://github.com/pharo-project/pharo-vm
 
 
 Best regards,
 Dimitri Korsch
 




Re: [Pharo-dev] Opal hook?

2013-12-03 Thread Stéphane Ducasse
thanks for your analysis I will have a look at it.

I was thinking to check if I should redefine UndefinedObjectsubclass:
to raise an error 

Stef


On Dec 3, 2013, at 3:17 PM, Clément Bera bera.clem...@gmail.com wrote:

 do you know if the OCUndeclaredVariable is raised for unknown superclass?
 
 this code:
 
 AnUnknownClass subclass: #Adaptor1Example
 instanceVariableNames: 'customers accountID address name phoneNumber'
 classVariableNames: ''
 poolDictionaries: ''
 category: 'Examples-Cookbook'
 
 is run as a Do It. In Do It, unknown variables (as here AnUnknownClass) raise 
 an OCUndeclaredVariableWarning.
 For example, running:
 
 AnUnknownClass subclass: #Adaptor1Example
 instanceVariableNames: 'customers accountID address name phoneNumber'
 classVariableNames: ''
 poolDictionaries: ''
 category: 'Examples-Cookbook'
 
 executes the default action for OCUndeclaredVariableWarning, which is opening 
 a pop-up titled: Unknown variable  Here the error is raised at 
 compilation time, therefore it would have no effect to wrap this with a 
 #on:do: 
 
 [ AnUnknownClass subclass: #Adaptor1Example
 instanceVariableNames: 'customers accountID address name phoneNumber'
 classVariableNames: ''
 poolDictionaries: ''
 category: 'Examples-Cookbook' ] on: OCSemanticWarning do: [ ]
 
 == same problem.
 
 Now if you do: 
 
 [ OpalCompiler new evaluate: 'AnUnknownClass subclass: #Adaptor1Example
 instanceVariableNames: ''customers accountID address name 
 phoneNumber''
 classVariableNames: 
 poolDictionaries: 
 category: ''Examples-Cookbook''' ] on: OCSemanticWarning do: [ :e | e 
 halt ]
 
 Here we catch the error, and you can handle it. 
 Now it is not easily possible to resume the error, because you want a global 
 instead and Opal expects a temp (there are way to resume but with very deep 
 stack manipulation that I do not want to show to young pharoers present on 
 this mailing list). So the best is to retry it. One solution is therefore:
 
 [ OpalCompiler new evaluate: 'AnUnknownClass subclass: #Adaptor1Example
 instanceVariableNames: ''customers accountID address phoneNumber''
 classVariableNames: 
 poolDictionaries: 
 category: ''Examples-Cookbook''' ] 
 on: OCSemanticWarning do: [ :e | 
   Smalltalk at: e node name put: StubRootClass.
   e retry ] 
 
 with e node name answering #AnUnknownClass here.
 Now you need to make sure that the exception block is executed for the case 
 of a missing superclass and not something else or you will end up creating 
 loads of globals.
 
 The exception block should be something similar to:
 
  [ :e | 
 e node name first isUppercase and: [ some condition ] ifTrue: [
   Smalltalk at: e node name put: StubRootClass.
   ^ e retry ].
 e pass ] 
 
 How to undefined and OCUndeclaredVariableWarning relate?
 
 In your case, while loading from Monticello the code is compiled and 
 evaluated in non interactive mode. Therefore it cannot trigger the default 
 action of OCUndeclaredVariableWarning which is a UI event. So it sets by 
 default the unknown global to:
 
 Undeclared at: varName asSymbol put: nil.
 OCUndeclaredVariable new name: varName asSymbol
 
 in: OCUndeclaredVariableWarning defaultAction
 
 which then later triggers the code in UndefinedObject.
 
 
 
 2013/12/3 Stéphane Ducasse stephane.duca...@inria.fr
 
 On Dec 3, 2013, at 11:20 AM, Clément Bera bera.clem...@gmail.com wrote:
 
 Then for your project replace ProtoObject by StubRootClass in 
 UndefinedObjectsubclass:instanceVariableNames:classVariableNames:poolDictionaries:category:
  it will work.
 
 yes but this is ugly because I do not want override.
 So I will introduce an exception so that we can do that in a clean way.
 
 
 An alternative is to catch OCSemanticWarning or its subclass 
 OCUndeclaredVariableWarning while loading the new classes and execute 
 another code instead of the default action in the exception handling block
 
 
 do you know if the OCUndeclaredVariable is raised for unknown superclass?
 How to undefined and OCUndeclaredVariableWarning relate?
 
 Stef
 
 
 2013/12/3 Stéphane Ducasse stephane.duca...@inria.fr
  Well if the class does not exists it calls the method on UndefinedObject 
  (UndeclaredBinding). And you have:
 
 I will check and see if I can set up a hook because having classes 
 subclasses of protoobject is not a good idea
 when loading broken code.
 
  UndefinedObjectsubclass: nameOfClass
instanceVariableNames: instVarNames
classVariableNames: classVarNames
poolDictionaries: poolDictnames
category: category
Calling this method is now considered an accident.  If you really 
  want to create a class with a nil superclass, then create the class and 
  then set the superclass using #superclass:
self traceCr: 

Re: [Pharo-dev] Roassal Bug related to Athens?

2013-12-03 Thread Stéphane Ducasse


 you dont have to wait for my example as i said checkSession is already the 
 example 
 
 checkSession
   session == Smalltalk session ifFalse: [ 
   just reset the surface
   surface := nil.
   session := Smalltalk session.
   ]
 
 as you can see here essentially we compare session if they differ then we 
 know we need to reinitialize all our external resources in this example 
 surface . Not that it assigns surfaces as nil but you will need to fully 
 reinitialize the surface cause otherwise you will have a non existent surface 
 still. In this class a nill surface is reinitialized by another method. 
 
 Also I like to note here that Roassal Easel appear also not to check sessions 
 and exhibits the known problem if image is stored with Easel open. Its 
 something Roassal people would need to look at.  

Yes I do not understand why this is not already in Roassal.

Stef





[Pharo-dev] vm patch for issue-11293

2013-12-03 Thread Nicolai Hess
Hi,

can someone take a look at issue 11293?
There are actually two causes.
One on the image side. My solution is to catch DirectoryDoesNotExist in
FileList,
but maybe there is a better solution. (Don't try to access unreadable
directories?).
The other one is on the vm-side. This vm uses a windows function
(GetFileAttributesEx) that does not work properly for some special windows
files (c:\pagefile.sys).

My question is, where to put this patch? I attached it to this issue.
But there are different squeak/pharo/cog vm sources and I don't know which
one uses this function.

regards
Nicolai


Re: [Pharo-dev] Roassal 3d now support textures

2013-12-03 Thread Igor Stasenko
On 3 December 2013 12:48, Stéphane Ducasse stephane.duca...@inria.frwrote:

 did you move some functionality (to the place they belong) to NBOpenGL?
 Because this should be done and JB has already spent time on that.

 I am not sure it is good choice to expand NBOpenGL.
There's just API, and most of code is generated (imported from specs),
so changing something there makes little sense.
Accompanying package , however , would be much better (in same repo, if you
want).




 Stef

 hi!

 Just to keep you up to date with the Roassal 3d effort.

 https://www.facebook.com/photo.php?fbid=547995685287033set=a.529997903753478.1073741828.340543479365589type=3theater

 Cheers,
 Alexandre


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







-- 
Best regards,
Igor Stasenko.


Re: [Pharo-dev] Roassal Bug related to Athens?

2013-12-03 Thread Igor Stasenko
On 3 December 2013 15:21, Usman Bhatti usman.bha...@gmail.com wrote:


 On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.com wrote:




 On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote:

 Igor,

 I had a look at Athens demo to understand how to manage sessions and
 surfaces because Roassal uses AthensSurface and there is a defensive
 mechanism in place in Roassal to initialize the surface in case it is not
 done. In the meantime, I have discovered that the red rectangle bug is
 present in Athens demos as well.

 So, to reproduce.
 AthensFlakeDemo new openInWorld
 save image
 open image


 I tested in Moose 5.0.

 1. Should I open a bug entry in Pharo?

 only if you intend to fix it. because this demo was not intended to be
 'fully featured, end-user compatible
 and fool-proof demo'. it just a demo to show animation and discard it,
 but if you insist this is a bug,
 feel free to fix it.


 Unfortunately, I wont have time for this. For me it would have been good,
 had Athens provided an example of session management as a good client so
 that example-oriented people like me could understand easily. Because,
 otherwise, I'll have to look at the code of NativeBoost and that adds to
 the level of complexity because I would do things with trial and error.


No need. There is one example: look at AthensSceneView




 2. With my superficial knowledge of Athens, my guess is that the session
 management can be done in Athens so that Roassal (and other tools built on
 top of Athens) do not need to do it. May be it is the case already but the
 demos are not using it then.

 I disagree.

 Because then, files can also open/close and delete themselves
 automatically, so you will be left only to do reading and writing...
 Resource management is an application-level responsibility, not framework
 level.
 I cannot predict in Athens, how often one wants to create/destroy or
 (re)use surfaces, and therefore i cannot
 create and dispose them when i see fit within framework.
 Correct me if i wrong.


 I think this doesn't compare to file handling because there are many types
 of operations possible on files and that are application-specific. Here
 resource management is actually exception-handling: I should not give to my
 client a surface that does not exist any more. Now, of course, if there is
 some application-level intelligence is involved, we cannot put that in the
 framework.

 Surface is like file, you create it, delete it.. write to it..
the management of surfaces is absolutely out of scope of framework.
More than that, surfaces is not something which you operate with usually.
Because usually its just a canvas.

But I would understand the absence of such a mechanism in the framework but
 then a tutorial should explain to novices/first-timers how to do it.


this sort of things is tiniest (but of course necessary) parts of whole
application, and usually will belong to some service layers built around/on
top of athens.
in future, sure thing you won't need to care about it.


 Usman






 Usman



 On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti usman.bha...@gmail.comwrote:

 Hello Igor,

 Moose 5.0 is using Athens as default canvas for Roassal and we have bug
 with Roassal that seems to be related to Athens.
 http://code.google.com/p/moose-technology/issues/detail?id=1019

 I think it is related to the fact that we create a surface in the OS
 with Athens and once we quit the image, the surface is destroyed as well.
 So, when image is restarted with the visualization trying to use the
 surface, we get the error.

 Could you point to what possibly can be done to avoid this error?
 Merely checking the existence of an appropriate drawing surface in Athens
 every time visualization is drawn, would it suffice?

 regards,

 Usman





 --
 Best regards,
 Igor Stasenko.





-- 
Best regards,
Igor Stasenko.


Re: [Pharo-dev] Roassal Bug related to Athens?

2013-12-03 Thread Igor Stasenko
On 3 December 2013 15:58, kilon alios kilon.al...@gmail.com wrote:

 you dont have to wait for my example as i said checkSession is already the
 example

 checkSession
 session == Smalltalk session ifFalse: [
  just reset the surface
 surface := nil.
 session := Smalltalk session.
  ]

 as you can see here essentially we compare session if they differ then we
 know we need to reinitialize all our external resources in this example
 surface . Not that it assigns surfaces as nil but you will need to fully
 reinitialize the surface cause otherwise you will have a non existent
 surface still. In this class a nill surface is reinitialized by another
 method.


Right.
Another reason why Athens has nothing to do with it: if i don't want my
surfaces to
live longer than single session, the way to handle that will be completely
different than in given example.


 Also I like to note here that Roassal Easel appear also not to check
 sessions and exhibits the known problem if image is stored with Easel open.
 Its something Roassal people would need to look at.


 On Tue, Dec 3, 2013 at 4:51 PM, Usman Bhatti usman.bha...@gmail.comwrote:




 On Tue, Dec 3, 2013 at 3:46 PM, kilon alios kilon.al...@gmail.comwrote:

 You are correct but so is Igor. Managing external resources has to do
 with VM and Nativeboost itself and not with Athens. This could happen with
 any other library.

 Session aware code is actually very easy to do and its explained
 Athens-Tutorial package in AthensViewMorphcheckSession . Its just 2 lines
 of code.

 In step2 method there is a relevant comment

 IMPORTANT NOTE:
 the surface which we will create at this step will be used in later
 steps.
  This means that if you resize the window (changing the view size), you
 may need to recreate surface.
 Also, since surface uses external resources, quitting an image and
 restarting it, will also require to
  create a new surface, because the one from previous session will be no
 longer accessible.
 


 Ok. Tx. That's very useful info. I'll have a look.



 but there is no mention to check the checkSession method for an example
 how sessions can be handled. I think this deserves a separate step by
 itself with a nice example. Igor you want me to give me commit rights to
 Athens repo to add that myself ?


 And if you add the example to Athens, please let me know.




 On Tue, Dec 3, 2013 at 4:21 PM, Usman Bhatti usman.bha...@gmail.comwrote:


 On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.comwrote:




 On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote:

 Igor,

 I had a look at Athens demo to understand how to manage sessions and
 surfaces because Roassal uses AthensSurface and there is a defensive
 mechanism in place in Roassal to initialize the surface in case it is not
 done. In the meantime, I have discovered that the red rectangle bug is
 present in Athens demos as well.

 So, to reproduce.
 AthensFlakeDemo new openInWorld
 save image
 open image


 I tested in Moose 5.0.

 1. Should I open a bug entry in Pharo?

 only if you intend to fix it. because this demo was not intended to
 be 'fully featured, end-user compatible
 and fool-proof demo'. it just a demo to show animation and discard it,
 but if you insist this is a bug,
 feel free to fix it.


 Unfortunately, I wont have time for this. For me it would have been
 good, had Athens provided an example of session management as a good client
 so that example-oriented people like me could understand easily. Because,
 otherwise, I'll have to look at the code of NativeBoost and that adds to
 the level of complexity because I would do things with trial and error.




 2. With my superficial knowledge of Athens, my guess is that the
 session management can be done in Athens so that Roassal (and other tools
 built on top of Athens) do not need to do it. May be it is the case 
 already
 but the demos are not using it then.

 I disagree.

  Because then, files can also open/close and delete themselves
 automatically, so you will be left only to do reading and writing...
 Resource management is an application-level responsibility, not
 framework level.
 I cannot predict in Athens, how often one wants to create/destroy or
 (re)use surfaces, and therefore i cannot
 create and dispose them when i see fit within framework.
 Correct me if i wrong.


 I think this doesn't compare to file handling because there are many
 types of operations possible on files and that are application-specific.
 Here resource management is actually exception-handling: I should not give
 to my client a surface that does not exist any more. Now, of course, if
 there is some application-level intelligence is involved, we cannot put
 that in the framework.

 But I would understand the absence of such a mechanism in the framework
 but then a tutorial should explain to novices/first-timers how to do it.

 Usman






 Usman



 On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti 
 usman.bha...@gmail.comwrote:

 

Re: [Pharo-dev] Roassal 3d now support textures

2013-12-03 Thread Stéphane Ducasse

On Dec 3, 2013, at 10:07 PM, Igor Stasenko siguc...@gmail.com wrote:

 
 
 
 On 3 December 2013 12:48, Stéphane Ducasse stephane.duca...@inria.fr wrote:
 did you move some functionality (to the place they belong) to NBOpenGL? 
 Because this should be done and JB has already spent time on that.
 
 I am not sure it is good choice to expand NBOpenGL.
 There's just API, and most of code is generated (imported from specs),
 so changing something there makes little sense.
 Accompanying package , however , would be much better (in same repo, if you 
 want).

I was talking about shadder code 

Stef
 
 
  
 Stef
 
 hi!
 
 Just to keep you up to date with the Roassal 3d effort.
 https://www.facebook.com/photo.php?fbid=547995685287033set=a.529997903753478.1073741828.340543479365589type=3theater
 
 Cheers,
 Alexandre
 
 
 -- 
 _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
 Alexandre Bergel  http://www.bergel.eu
 ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
 
 
 
 
 
 
 
 -- 
 Best regards,
 Igor Stasenko.



Re: [Pharo-dev] vm patch for issue-11293

2013-12-03 Thread p...@highoctane.be
On Github, the pharo-vm has only one place for GetFileAttributesEx and
that's in

platforms/win32/vm/sqWin32Directory.c l366-368

It is GetFileAttributesExW by the way and inside:


int dir_EntryLookup(char *pathString, int pathLength, char* nameString, int
nameStringLength,
/* outputs: */ char *name, int *nameLength, int *creationDate, int
*modificationDate,
int *isDirectory, squeakFileOffsetType *sizeIfFile,
sqInt *posixPermissions, sqInt *isSymlink)
...



if(!GetFileAttributesExW(win32Path, 0, winAttrs)) {
return NO_MORE_ENTRIES;
   }

Don't know about the other flavors.

Phil


Re: [Pharo-dev] Roassal Bug related to Athens?

2013-12-03 Thread Usman Bhatti
On Tue, Dec 3, 2013 at 10:35 PM, Igor Stasenko siguc...@gmail.com wrote:




 On 3 December 2013 15:21, Usman Bhatti usman.bha...@gmail.com wrote:


 On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.com wrote:




 On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote:

 Igor,

 I had a look at Athens demo to understand how to manage sessions and
 surfaces because Roassal uses AthensSurface and there is a defensive
 mechanism in place in Roassal to initialize the surface in case it is not
 done. In the meantime, I have discovered that the red rectangle bug is
 present in Athens demos as well.

 So, to reproduce.
 AthensFlakeDemo new openInWorld
 save image
 open image


 I tested in Moose 5.0.

 1. Should I open a bug entry in Pharo?

 only if you intend to fix it. because this demo was not intended to be
 'fully featured, end-user compatible
 and fool-proof demo'. it just a demo to show animation and discard it,
 but if you insist this is a bug,
 feel free to fix it.


 Unfortunately, I wont have time for this. For me it would have been good,
 had Athens provided an example of session management as a good client so
 that example-oriented people like me could understand easily. Because,
 otherwise, I'll have to look at the code of NativeBoost and that adds to
 the level of complexity because I would do things with trial and error.


 No need. There is one example: look at AthensSceneView




 2. With my superficial knowledge of Athens, my guess is that the
 session management can be done in Athens so that Roassal (and other tools
 built on top of Athens) do not need to do it. May be it is the case already
 but the demos are not using it then.

 I disagree.

 Because then, files can also open/close and delete themselves
 automatically, so you will be left only to do reading and writing...
 Resource management is an application-level responsibility, not
 framework level.
 I cannot predict in Athens, how often one wants to create/destroy or
 (re)use surfaces, and therefore i cannot
 create and dispose them when i see fit within framework.
 Correct me if i wrong.


 I think this doesn't compare to file handling because there are many
 types of operations possible on files and that are application-specific.
 Here resource management is actually exception-handling: I should not give
 to my client a surface that does not exist any more. Now, of course, if
 there is some application-level intelligence is involved, we cannot put
 that in the framework.

 Surface is like file, you create it, delete it.. write to it..
 the management of surfaces is absolutely out of scope of framework.
 More than that, surfaces is not something which you operate with usually.
 Because usually its just a canvas.


Still, I will maintain that a minimalistic session logic should be built by
default in Athens. Because otherwise each application has to maintain a
session instance variable and a logic to test that session hasn't changed
in between to keep a surface alive, which is lowest common denominator for
all the applications using Athens.

regards,

Usman



 But I would understand the absence of such a mechanism in the framework
 but then a tutorial should explain to novices/first-timers how to do it.


 this sort of things is tiniest (but of course necessary) parts of whole
 application, and usually will belong to some service layers built around/on
 top of athens.
 in future, sure thing you won't need to care about it.


 Usman






 Usman



 On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti usman.bha...@gmail.comwrote:

 Hello Igor,

 Moose 5.0 is using Athens as default canvas for Roassal and we have
 bug with Roassal that seems to be related to Athens.
 http://code.google.com/p/moose-technology/issues/detail?id=1019

 I think it is related to the fact that we create a surface in the OS
 with Athens and once we quit the image, the surface is destroyed as well.
 So, when image is restarted with the visualization trying to use the
 surface, we get the error.

 Could you point to what possibly can be done to avoid this error?
 Merely checking the existence of an appropriate drawing surface in Athens
 every time visualization is drawn, would it suffice?

 regards,

 Usman





 --
 Best regards,
 Igor Stasenko.





 --
 Best regards,
 Igor Stasenko.



Re: [Pharo-dev] Roassal Bug related to Athens?

2013-12-03 Thread Usman Bhatti
I was able to resolve the problem in Roassal using session management.
Tx Kilon and Igor for your help.

Usman


On Tue, Dec 3, 2013 at 3:58 PM, kilon alios kilon.al...@gmail.com wrote:

 you dont have to wait for my example as i said checkSession is already the
 example

 checkSession
 session == Smalltalk session ifFalse: [
  just reset the surface
 surface := nil.
 session := Smalltalk session.
  ]

 as you can see here essentially we compare session if they differ then we
 know we need to reinitialize all our external resources in this example
 surface . Not that it assigns surfaces as nil but you will need to fully
 reinitialize the surface cause otherwise you will have a non existent
 surface still. In this class a nill surface is reinitialized by another
 method.

 Also I like to note here that Roassal Easel appear also not to check
 sessions and exhibits the known problem if image is stored with Easel open.
 Its something Roassal people would need to look at.


 On Tue, Dec 3, 2013 at 4:51 PM, Usman Bhatti usman.bha...@gmail.comwrote:




 On Tue, Dec 3, 2013 at 3:46 PM, kilon alios kilon.al...@gmail.comwrote:

 You are correct but so is Igor. Managing external resources has to do
 with VM and Nativeboost itself and not with Athens. This could happen with
 any other library.

 Session aware code is actually very easy to do and its explained
 Athens-Tutorial package in AthensViewMorphcheckSession . Its just 2 lines
 of code.

 In step2 method there is a relevant comment

 IMPORTANT NOTE:
 the surface which we will create at this step will be used in later
 steps.
  This means that if you resize the window (changing the view size), you
 may need to recreate surface.
 Also, since surface uses external resources, quitting an image and
 restarting it, will also require to
  create a new surface, because the one from previous session will be no
 longer accessible.
 


 Ok. Tx. That's very useful info. I'll have a look.



 but there is no mention to check the checkSession method for an example
 how sessions can be handled. I think this deserves a separate step by
 itself with a nice example. Igor you want me to give me commit rights to
 Athens repo to add that myself ?


 And if you add the example to Athens, please let me know.




 On Tue, Dec 3, 2013 at 4:21 PM, Usman Bhatti usman.bha...@gmail.comwrote:


 On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.comwrote:




 On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote:

 Igor,

 I had a look at Athens demo to understand how to manage sessions and
 surfaces because Roassal uses AthensSurface and there is a defensive
 mechanism in place in Roassal to initialize the surface in case it is not
 done. In the meantime, I have discovered that the red rectangle bug is
 present in Athens demos as well.

 So, to reproduce.
 AthensFlakeDemo new openInWorld
 save image
 open image


 I tested in Moose 5.0.

 1. Should I open a bug entry in Pharo?

 only if you intend to fix it. because this demo was not intended to
 be 'fully featured, end-user compatible
 and fool-proof demo'. it just a demo to show animation and discard it,
 but if you insist this is a bug,
 feel free to fix it.


 Unfortunately, I wont have time for this. For me it would have been
 good, had Athens provided an example of session management as a good client
 so that example-oriented people like me could understand easily. Because,
 otherwise, I'll have to look at the code of NativeBoost and that adds to
 the level of complexity because I would do things with trial and error.




 2. With my superficial knowledge of Athens, my guess is that the
 session management can be done in Athens so that Roassal (and other tools
 built on top of Athens) do not need to do it. May be it is the case 
 already
 but the demos are not using it then.

 I disagree.

  Because then, files can also open/close and delete themselves
 automatically, so you will be left only to do reading and writing...
 Resource management is an application-level responsibility, not
 framework level.
 I cannot predict in Athens, how often one wants to create/destroy or
 (re)use surfaces, and therefore i cannot
 create and dispose them when i see fit within framework.
 Correct me if i wrong.


 I think this doesn't compare to file handling because there are many
 types of operations possible on files and that are application-specific.
 Here resource management is actually exception-handling: I should not give
 to my client a surface that does not exist any more. Now, of course, if
 there is some application-level intelligence is involved, we cannot put
 that in the framework.

 But I would understand the absence of such a mechanism in the framework
 but then a tutorial should explain to novices/first-timers how to do it.

 Usman






 Usman



 On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti 
 usman.bha...@gmail.comwrote:

 Hello Igor,

 Moose 5.0 is using Athens as default canvas for Roassal and we have
 bug 

Re: [Pharo-dev] Roassal Bug related to Athens?

2013-12-03 Thread Igor Stasenko
On 3 December 2013 23:05, Usman Bhatti usman.bha...@gmail.com wrote:




 On Tue, Dec 3, 2013 at 10:35 PM, Igor Stasenko siguc...@gmail.com wrote:




 On 3 December 2013 15:21, Usman Bhatti usman.bha...@gmail.com wrote:


 On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.comwrote:




 On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote:

 Igor,

 I had a look at Athens demo to understand how to manage sessions and
 surfaces because Roassal uses AthensSurface and there is a defensive
 mechanism in place in Roassal to initialize the surface in case it is not
 done. In the meantime, I have discovered that the red rectangle bug is
 present in Athens demos as well.

 So, to reproduce.
 AthensFlakeDemo new openInWorld
 save image
 open image


 I tested in Moose 5.0.

 1. Should I open a bug entry in Pharo?

 only if you intend to fix it. because this demo was not intended to be
 'fully featured, end-user compatible
 and fool-proof demo'. it just a demo to show animation and discard it,
 but if you insist this is a bug,
 feel free to fix it.


 Unfortunately, I wont have time for this. For me it would have been
 good, had Athens provided an example of session management as a good client
 so that example-oriented people like me could understand easily. Because,
 otherwise, I'll have to look at the code of NativeBoost and that adds to
 the level of complexity because I would do things with trial and error.


 No need. There is one example: look at AthensSceneView




 2. With my superficial knowledge of Athens, my guess is that the
 session management can be done in Athens so that Roassal (and other tools
 built on top of Athens) do not need to do it. May be it is the case 
 already
 but the demos are not using it then.

 I disagree.

  Because then, files can also open/close and delete themselves
 automatically, so you will be left only to do reading and writing...
 Resource management is an application-level responsibility, not
 framework level.
 I cannot predict in Athens, how often one wants to create/destroy or
 (re)use surfaces, and therefore i cannot
 create and dispose them when i see fit within framework.
 Correct me if i wrong.


 I think this doesn't compare to file handling because there are many
 types of operations possible on files and that are application-specific.
 Here resource management is actually exception-handling: I should not give
 to my client a surface that does not exist any more. Now, of course, if
 there is some application-level intelligence is involved, we cannot put
 that in the framework.

 Surface is like file, you create it, delete it.. write to it..
 the management of surfaces is absolutely out of scope of framework.
 More than that, surfaces is not something which you operate with usually.
 Because usually its just a canvas.


 Still, I will maintain that a minimalistic session logic should be built
 by default in Athens. Because otherwise each application has to maintain a
 session instance variable and a logic to test that session hasn't changed
 in between to keep a surface alive, which is lowest common denominator for
 all the applications using Athens.

 Usman, i have impression that you didn't looked at code at all.

AthensSurface subclass: #AthensCairoSurface
uses: TCairoLibrary
instanceVariableNames: 'handle context builder id ftFontRenderer
session'
classVariableNames: ''
poolDictionaries: 'AthensCairoDefs'
category: 'Athens-Cairo'


what you think 'session' ivar and checkSession method does there?
You can make subclass if you want and redefine default behavior.

But my main problem that you still don't see that the code in example(s) is
NOT the lowest common denominator for all applications using Athens.
Lowest common denominator is Athens API.
Athens API defines and describes roles (surface, canvas, paints etc) and
their protocols, but NOT how to create/initialize and manage such objects.




 regards,

 Usman



 But I would understand the absence of such a mechanism in the framework
 but then a tutorial should explain to novices/first-timers how to do it.


 this sort of things is tiniest (but of course necessary) parts of whole
 application, and usually will belong to some service layers built around/on
 top of athens.
 in future, sure thing you won't need to care about it.


  Usman






 Usman



 On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti 
 usman.bha...@gmail.comwrote:

 Hello Igor,

 Moose 5.0 is using Athens as default canvas for Roassal and we have
 bug with Roassal that seems to be related to Athens.
 http://code.google.com/p/moose-technology/issues/detail?id=1019

 I think it is related to the fact that we create a surface in the OS
 with Athens and once we quit the image, the surface is destroyed as well.
 So, when image is restarted with the visualization trying to use the
 surface, we get the error.

 Could you point to what possibly can be done to avoid this error?
 Merely checking the existence of 

Re: [Pharo-dev] vm patch for issue-11293

2013-12-03 Thread Nicolai Hess
2013/12/3 p...@highoctane.be p...@highoctane.be

 On Github, the pharo-vm has only one place for GetFileAttributesEx and
 that's in

 platforms/win32/vm/sqWin32Directory.c l366-368

 It is GetFileAttributesExW by the way and inside:


 int dir_EntryLookup(char *pathString, int pathLength, char* nameString,
 int nameStringLength,
 /* outputs: */ char *name, int *nameLength, int *creationDate, int
 *modificationDate,
 int *isDirectory, squeakFileOffsetType *sizeIfFile,
 sqInt *posixPermissions, sqInt *isSymlink)
 ...



 if(!GetFileAttributesExW(win32Path, 0, winAttrs)) {
 return NO_MORE_ENTRIES;
}

 Don't know about the other flavors.

 Phil



Yes, that is the version I used and that I want to patch.
I think this is the source for all current pharo-vm.

Is pharo.fogbugz.com the right issue tracker for this?
Who would review / apply this patch?


Nicolai


Re: [Pharo-dev] CompiledMethod#= is broken

2013-12-03 Thread Clément Bera
Marcus/Esteban I opened the bug and it is ready to integrate.
https://pharo.fogbugz.com/f/cases/12331/Fixed-CompiledMethod


2013/12/3 Eliot Miranda eliot.mira...@gmail.com




 On Tue, Dec 3, 2013 at 11:27 AM, Eliot Miranda eliot.mira...@gmail.comwrote:




 On Tue, Dec 3, 2013 at 9:49 AM, Oscar Nierstrasz 
 oscar.nierstr...@gmail.com wrote:


 The following code breaks:

 (SortedCollectionTest#testDo) = (SortedCollectionTest#testStoreOn).

 because it makes use of AdditionalMethodState#analogousCodeTo: which
 tries to send #analogousCodeTo: to a property which is an Association.

 It seems to me the solution is to implement
 Association#analogousCodeTo: with an equality test:

 analogousCodeTo: anObject
^self class == anObject class
  and: [ self = anObject ]

 Does this make sense?


 Yes.  I should have written it this way in the first place.  Thanks.



 See:


 https://pharo.fogbugz.com/f/cases/12077/MNU-in-AdditionalMethodState-analogousCodeTo

 Oscar Nierstrasz





 --
 best,
 Eliot




 --
 best,
 Eliot



Re: [Pharo-dev] vm patch for issue-11293

2013-12-03 Thread p...@highoctane.be
Right tracker.

You can fork, do your changes, and issue a pull request if things look
right.
Phil


[Pharo-dev] AST-Semantic in Pharo 3.0???

2013-12-03 Thread Bernardo Ezequiel Contreras
Hi all,
 I see that ast-semantic is present in Pharo 2.0 but is not present in
Pharo 3.0,
so the question is
 How did you replace it? what do you use in Pharo 3.0?

Thanks.

-- 
Bernardo E.C.

Sent from a cheap desktop computer in South America.


Re: [Pharo-dev] [Moose-dev] Roassal 3d now support textures

2013-12-03 Thread Alexandre Bergel
Better is to wait I arrive in Lille.

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



On Dec 3, 2013, at 6:49 PM, Stéphane Ducasse stephane.duca...@inria.fr wrote:

 
 On Dec 3, 2013, at 10:07 PM, Igor Stasenko siguc...@gmail.com wrote:
 
 
 
 
 On 3 December 2013 12:48, Stéphane Ducasse stephane.duca...@inria.fr wrote:
 did you move some functionality (to the place they belong) to NBOpenGL? 
 Because this should be done and JB has already spent time on that.
 
 I am not sure it is good choice to expand NBOpenGL.
 There's just API, and most of code is generated (imported from specs),
 so changing something there makes little sense.
 Accompanying package , however , would be much better (in same repo, if you 
 want).
 
 I was talking about shadder code 
 
 Stef
 
 
  
 Stef
 
 hi!
 
 Just to keep you up to date with the Roassal 3d effort.
 https://www.facebook.com/photo.php?fbid=547995685287033set=a.529997903753478.1073741828.340543479365589type=3theater
 
 Cheers,
 Alexandre
 
 
 -- 
 _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
 Alexandre Bergel  http://www.bergel.eu
 ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
 
 
 
 
 
 
 
 -- 
 Best regards,
 Igor Stasenko.
 
 ___
 Moose-dev mailing list
 moose-...@iam.unibe.ch
 https://www.iam.unibe.ch/mailman/listinfo/moose-dev




Re: [Pharo-dev] Unifying Testing Ideas

2013-12-03 Thread Sean P. DeNigris
On Dec 3, 2013, at 2:43 PM, Attila Magyar [via Smalltalk] 
ml-node+s1294792n4727144...@n4.nabble.com wrote:
 It's true, but it would make difficult to return a block. E.g. 
 
 mock can receive: #msg; answers: [ [..] ] 
I'll trade an extra pair of brackets in a less common case for a simpler API 
any day ;)

 Anyways, I'm working on the next version with a slightly different api. My 
 plan is to fully separate the DSL from the main part. This will make possible 
 to play with different syntax without touching the core. Or even the users 
 will be able to define their own syntax. 
Are you interested in integrating my changes into the current API? If so, I'll 
refactor them and clean them up. I personally would find it difficult to use 
the library without them. Coming from Ruby, a proper test double framework is 
the thing I miss most. Rspec was amazing. BabyMock is close, and with these 
changes has the test double features I commonly relied on Rspec for...



-
Cheers,
Sean
--
View this message in context: 
http://forum.world.st/Unifying-Testing-Ideas-tp4726787p4727195.html
Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.

Re: [Pharo-dev] Unifying Testing Ideas

2013-12-03 Thread Dennis Schetinin
This is the task I would really like to participate in. Although, just as
you, I have no time at all, I still *will* find at least few hours a week :)


--

Best regards,


Dennis Schetinin


2013/12/3 Denis Kudriashov dionisi...@gmail.com

 Problem with TestCase approach is mixing two separate concerns. First is
 how we want to define system specifications. Another is how we can persist
 such specifications. When we stay at test case level we lost freedom for
 specification definition. We restricted with smalltalk language artifacts.
 For example, how we can group our tests? With classic test case approach
 we have four levels: packages, classes, protocols and methods. Now remember
 how many times you put long names for test like
 #shouldDoingSomethingWhenSomeSitiationHappensDuringAnotherSituationHappenButWhenSituation3NotHappen.
 And most times you have tests for each separate situation with same long
 test names.
 In smalltalk only way to refactor test names duplication is extraction
 same when condition to separate test case classes. But it means that you
 build classes with very long names and most times your test names stay big
 (but with reduced length). And do you know way how to group such classes?
 Only way is put such classes to own class category. Nobody doing this.

 Now imagine we don't care how to persist tests (specifications). We can
 model specifications with explicit objects which present #when, #should and
 other test artifacts, which can group specifications with arbitrary way.
 With true objects we don't name our specifications with method name
 convention. We can name tests with natural language, we can put names for
 when and should expressions with natural language.
 With objects we can build smalltalk vision of BDD framework. Really with
 smalltalk live system testing environment can be very different from other
 languages. BDD frameworks of other languages just changed names of TDD
 dictionary. They all stay restricted with language syntax.

 So it is my vision. I really want to build such system but I have no time
 for this yet.
 Maybe Sean doing something similar?



  2013/12/3 Esteban A. Maringolo emaring...@gmail.com

 2013/12/3 Dennis Schetinin chae...@gmail.com

 
  I see the only correct way to build a good testing environment: tests
 should be basically objects, not methods.

 They are objects. Instances of TestCase.

 But for simplicity they're implemented in a single factory class,
 the TestCase subclass...



 Esteban A. Maringolo





Re: [Pharo-dev] AST-Semantic in Pharo 3.0???

2013-12-03 Thread Marcus Denker

On 04 Dec 2013, at 00:53, Bernardo Ezequiel Contreras vonbecm...@gmail.com 
wrote:

 Hi all,
  I see that ast-semantic is present in Pharo 2.0 but is not present in Pharo 
 3.0,
 so the question is
  How did you replace it?
 what do you use in Pharo 3.0?
 

We use the Semantic analysis phase of Opal. It’s exactly the same thing, 
slightly different
implementation. It does a bit more as it needs to analyse correctly for 
optimised blocks and
needs to do the tempVector/copying temp analysis for the closure model of Cog).

The class that does the analysis is OCASTSemanticAnalyzer (together with 
OCASTClosureAnalyzer,
we visit a second time for tempVector vs. copying for escaping variables). 
Analysis is triggered with
#doSemanticAnalysis on the RBProgramNode.

- every method+block get a scope (see OCAbstractScope)
(this knows the defined vars and the hierarchy models ivar/class/global 
lookup)
- variables are represented as subclasses of OCAbstractVariable
- the Variables AST node has a property binding for such a semantic variable
- the semantic variable knows what kind of var it is, so it is easy to 
implement #isTemp as
isTemp
 ^self binding isTemp

There is some preliminary work to model temp vs. ivar as AST node subclasses, 
but Opal is
not using that and the implementation has some problems. This will see some 
work soon, I think.

Marcus





  1   2   >