Re: [Pharo-project] Issue 1328 in pharo: Remove old input sensor classes

2011-04-03 Thread pharo

Updates:
Status: Closed

Comment #7 on issue 1328 by marcus.d...@gmail.com: Remove old input sensor  
classes

http://code.google.com/p/pharo/issues/detail?id=1328

It seems the old classes are already removed




Re: [Pharo-project] Issue 3741 in pharo: Decompiler hangs

2011-04-03 Thread pharo

Updates:
Status: Closed

Comment #2 on issue 3741 by marcus.d...@gmail.com: Decompiler hangs
http://code.google.com/p/pharo/issues/detail?id=3741

Hello,

Can you check in the latest 1.3? I can not as there is not enough  
information to re-create the bug.





Re: [Pharo-project] Issue 3005 in pharo: Support for SCIM on Linux

2011-04-03 Thread pharo

Updates:
Status: Duplicate
Mergedinto: 1405

Comment #2 on issue 3005 by marcus.d...@gmail.com: Support for SCIM on Linux
http://code.google.com/p/pharo/issues/detail?id=3005

(No comment was entered for this change.)




Re: [Pharo-project] Issue 1405 in pharo: Ubuntu vm : inputting return character on belgian keyboard layout is different in pharo than in other programs

2011-04-03 Thread pharo


Comment #5 on issue 1405 by marcus.d...@gmail.com: Ubuntu vm : inputting  
return character on belgian keyboard layout is different in pharo than in  
other programs

http://code.google.com/p/pharo/issues/detail?id=1405

Issue 3005 has been merged into this issue.




[Pharo-project] [ANN 1.2] 1.2.1 Full Release Image

2011-04-03 Thread Marcus Denker

https://gforge.inria.fr/frs/download.php/28435/Pharo-1.2.1-11.04.03.zip


Marcus

--
Marcus Denker  -- http://www.marcusdenker.de
INRIA Lille -- Nord Europe. Team RMoD.




Re: [Pharo-project] [ANN 1.2] 1.2.1 Full Release Image

2011-04-03 Thread Marcus Denker

On Apr 3, 2011, at 9:35 AM, Marcus Denker wrote:

 
   https://gforge.inria.fr/frs/download.php/28435/Pharo-1.2.1-11.04.03.zip
 


.. the all green image of today from Hudson. Yes, this is not repeatable and 
tomorrow
the hudson one might be different. But we need to move on. 1.1 was build just 
once, too.
So we can continue to build the perfect fully automatic process for 1.3...

Next:
- Make a one-click.
- Make a cog one-click.
- push all open reports in the tracker to 1.2.2 


--
Marcus Denker  -- http://www.marcusdenker.de
INRIA Lille -- Nord Europe. Team RMoD.




Re: [Pharo-project] Issue 3911 in pharo: Change updater to allow updating a release image

2011-04-03 Thread pharo

Updates:
Labels: -Milestone-1.2 Milestone-1.2.2

Comment #4 on issue 3911 by marcus.d...@gmail.com: Change updater to allow  
updating a release image

http://code.google.com/p/pharo/issues/detail?id=3911

(No comment was entered for this change.)




Re: [Pharo-project] [ANN 1.2] 1.2.1 Full Release Image

2011-04-03 Thread Tudor Girba
Excellent!

  https://gforge.inria.fr/frs/download.php/28435/Pharo-1.2.1-11.04.03.zip
 
 
 
 .. the all green image of today from Hudson. Yes, this is not repeatable and 
 tomorrow
 the hudson one might be different. But we need to move on. 1.1 was build just 
 once, too.

Exactly.

 So we can continue to build the perfect fully automatic process for 1.3...
 
 Next:
   - Make a one-click.
   - Make a cog one-click.
   - push all open reports in the tracker to 1.2.2 

Why still work on 1.2.2. Why not moving them to 1.3?

Cheers,
Doru


--
www.tudorgirba.com

No matter how many recipes we know, we still value a chef.









Re: [Pharo-project] [ANN 1.2] 1.2.1 Full Release Image

2011-04-03 Thread Hilaire Fernandes
Thanks Markus

Hil

Le 03/04/2011 09:35, Marcus Denker a écrit :
 
   https://gforge.inria.fr/frs/download.php/28435/Pharo-1.2.1-11.04.03.zip
 
 
   Marcus
 
 --
 Marcus Denker  -- http://www.marcusdenker.de
 INRIA Lille -- Nord Europe. Team RMoD.
 
 
 


-- 
Education 0.2 -- http://blog.ofset.org/hilaire




Re: [Pharo-project] Issue 3912 in pharo: Circular dependency with GLMOrangeUITheme

2011-04-03 Thread pharo

Updates:
Labels: -Milestone-1.2 Milestone-1.2.2 Milestone-1.3

Comment #1 on issue 3912 by marcus.d...@gmail.com: Circular dependency with  
GLMOrangeUITheme

http://code.google.com/p/pharo/issues/detail?id=3912

(No comment was entered for this change.)




Re: [Pharo-project] Issue 3754 in pharo: Omnibrowser's an extra horizontal scrollbar

2011-04-03 Thread pharo

Updates:
	Labels: -Milestone-1.2-DevImage Milestone-1.2.2-DevImage  
Milestone-1.3-DevImage


Comment #7 on issue 3754 by marcus.d...@gmail.com: Omnibrowser's an extra  
horizontal scrollbar

http://code.google.com/p/pharo/issues/detail?id=3754

(No comment was entered for this change.)




Re: [Pharo-project] Issue 3706 in pharo: In OB: Text in comment pane of Browser uses syntax highlighting

2011-04-03 Thread pharo

Updates:
Labels: -Milestone-1.2-DevImage Milestone-1.2.2-DevImage

Comment #23 on issue 3706 by marcus.d...@gmail.com: In OB: Text in comment  
pane of Browser uses syntax highlighting

http://code.google.com/p/pharo/issues/detail?id=3706

(No comment was entered for this change.)




Re: [Pharo-project] Issue 3842 in pharo: 1.2 Config needs to load latest code from OB Repository

2011-04-03 Thread pharo

Updates:
Labels: -Milestone-1.2-DevImage Milestone-1.2.2-DevImage

Comment #1 on issue 3842 by marcus.d...@gmail.com: 1.2 Config needs to load  
latest code from OB Repository

http://code.google.com/p/pharo/issues/detail?id=3842

(No comment was entered for this change.)




Re: [Pharo-project] [ANN 1.2] 1.2.1 Full Release Image

2011-04-03 Thread Marcus Denker

On Apr 3, 2011, at 9:41 AM, Tudor Girba wrote:

 Excellent!
 
 https://gforge.inria.fr/frs/download.php/28435/Pharo-1.2.1-11.04.03.zip
 
 
 
 .. the all green image of today from Hudson. Yes, this is not repeatable and 
 tomorrow
 the hudson one might be different. But we need to move on. 1.1 was build 
 just once, too.
 
 Exactly.
 
 So we can continue to build the perfect fully automatic process for 1.3...
 
 Next:
  - Make a one-click.
  - Make a cog one-click.
  - push all open reports in the tracker to 1.2.2 
 
 Why still work on 1.2.2. Why not moving them to 1.3?
 
Yes, you are right... 



--
Marcus Denker  -- http://www.marcusdenker.de
INRIA Lille -- Nord Europe. Team RMoD.




Re: [Pharo-project] Issue 3754 in pharo: Omnibrowser's an extra horizontal scrollbar

2011-04-03 Thread pharo


Comment #8 on issue 3754 by renggli: Omnibrowser's an extra horizontal  
scrollbar

http://code.google.com/p/pharo/issues/detail?id=3754

FYI: I cannot reproduce this problem in Pharo 1.2




Re: [Pharo-project] [ANN 1.2] 1.2.1 Full Release Image

2011-04-03 Thread Lukas Renggli
A pity that broken OB code is used, nevertheless it is quite usable.

Lukas

On 3 April 2011 09:58, Marcus Denker marcus.den...@inria.fr wrote:

 On Apr 3, 2011, at 9:41 AM, Tudor Girba wrote:

 Excellent!

     https://gforge.inria.fr/frs/download.php/28435/Pharo-1.2.1-11.04.03.zip



 .. the all green image of today from Hudson. Yes, this is not repeatable 
 and tomorrow
 the hudson one might be different. But we need to move on. 1.1 was build 
 just once, too.

 Exactly.

 So we can continue to build the perfect fully automatic process for 1.3...

 Next:
      - Make a one-click.
      - Make a cog one-click.
      - push all open reports in the tracker to 1.2.2

 Why still work on 1.2.2. Why not moving them to 1.3?

 Yes, you are right...



 --
 Marcus Denker  -- http://www.marcusdenker.de
 INRIA Lille -- Nord Europe. Team RMoD.






-- 
Lukas Renggli
www.lukas-renggli.ch



Re: [Pharo-project] [ANN 1.2] 1.2.1 Full Release Image

2011-04-03 Thread Marcus Denker

On Apr 3, 2011, at 10:22 AM, Lukas Renggli wrote:

 A pity that broken OB code is used, nevertheless it is quite usable.
 

Yes, and I added a bug report on March 22:

http://code.google.com/p/pharo/issues/detail?id=3842

But nobody cared to react. So how important can it be?

There are two possibilities:

- Postponing the release because it's not perfect.
(We are doing this for *3 Months* already)

- Not release and wait another 3 Months.


Marcus 


--
Marcus Denker  -- http://www.marcusdenker.de
INRIA Lille -- Nord Europe. Team RMoD.




Re: [Pharo-project] Announcement real problems - please read and comment.

2011-04-03 Thread Stéphane Ducasse

On Apr 2, 2011, at 5:14 PM, Henrik Sperre Johansen wrote:

 On 02.04.2011 09:16, Stéphane Ducasse wrote:
 Henrik what is your answer to problem 1
 
 Problem 1
  - the second announcement was never sent, because the first one broke 
 the second was blocked.
we should make sure that if an announcement leads to an error, 
 other annoucements on the same emit should pass
 
 Because we can get the system down just because one guy can register a bug.
 http://forum.world.st/Another-finalization-concern-error-handling-td2989615.html
 
 It's basically the same.

??

 
 Cheers,
 Henry
 




Re: [Pharo-project] Issue 3709 in pharo: Clean OB**WithShout in omnibrowser

2011-04-03 Thread pharo


Comment #1 on issue 3709 by renggli: Clean OB**WithShout in omnibrowser
http://code.google.com/p/pharo/issues/detail?id=3709

This is pretty much cleaned up in  
http://source.lukas-renggli.ch/omnibrowser/ and  
http://source.lukas-renggli.ch/unsorted/.





Re: [Pharo-project] Announcement real problems - please read and comment.

2011-04-03 Thread Stéphane Ducasse
 
 PPS. There's a neat method called #on:send:to:,  which would be perfect for 
 the different actions in RPackage-SystemIntegration.
 I'm trying to understand how this on:send:to: would help us.
 Because
  Nautilus registered to system announcer
 Now I do not understand why RPackageOrganizer should not register to 
 systemAnnouncer too.
 And even if we use on:send:to: who can garantee that the on:send:to: will 
 notify first the RPackageOrganizer and
 not that an announcement will reach the browser before.
 
 What was your idea?
 
 Stef
 It has nothing to do with registration ordering, but using the proper API.
 If you look at the RPackageOrganizer registrations in 
 RPackage-SystemIntegration, all they do in the action block is send self a 
 message.
 Instead of:
 anAnnouncer
when: SystemCategoryAddedAnnouncement do: [ :ann | self 
 systemCategoryAddedActionFrom: ann ];
 you write:
 announcer on: SystemCategoryAddedAnnouncement send: 
 #systemCategoryAddedActionFrom: to: self

I do not get what is the difference. Can you explain how this would solve my 
problem?


I was discussing with luc and noury yesterday and we thought about the 
following:
The system should be layered in two layers

system (Rename) should emit annoucement to system objects (like 
RPakcageOrganizer)

UI tools should register not to system but to RPackageOrganizer.

So this is probably the solution but I'm thinking that in the long turn may be 
pushing packages inside the system wiuthout annoucement
would be better.

 It also has the added benefit you can make them weak if you want :)
 
 Cheers,
 Henry
 
 And ugh, why the Announcement at the end of the Announcement names? :/

Who cares for now we have a system on its knees if one annoucnement breaks so 
to me this is totally useless.

Stef


Re: [Pharo-project] Participating to a cool project

2011-04-03 Thread Stéphane Ducasse
tx hilaire
keep pushing.

stef

On Apr 2, 2011, at 8:55 PM, Hilaire Fernandes wrote:

 Dr. Geo (http://www.ofset.org/drgeo) is becoming better release after
 release. It is proposed for all three major systems and the XO OLPC
 laptop for kid.
 
 It has been downloaded several thousand of times, it is used in several
 place in the world, we even get a TV show only for DrGeo
 http://www.youtube.com/watch?v=wdx7vJwPmcA
 
 Yet it is a neat way to promote Smalltalk as DrGeo scripting feature
 expose the user to the Smalltalk language and environment.
 Far beyond my expectation, teachers are exploring DrGeo to use it as an
 environment to teach programming, see this nice French article:
 http://revue.sesamath.net/spip.php?article330
 
 I hope more will come.
 
 If you are interested to participate to a cool project, for coding,
 documenting, testing, promoting; come and join, there are many stuff to do:
 
* test
* report defects
* translate the user interface of the software
* document and translate the documentation
* design DrGeo courses
* design graphics
* learn from DrGeo design and fix bugs
* learn from DrGeo design and implement new features
 
 More to read at
 http://community.ofset.org/index.php/Community_DrGeo#Participating_to_the_Project
 
 -- 
 Education 0.2 -- http://blog.ofset.org/hilaire
 
 




Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Stéphane Ducasse

On Apr 2, 2011, at 9:10 PM, Toon Verwaest wrote:

 Hi all,
 
 as you know I'm working on stateful traits using my new classbuilder

no 
Are you?


 etc... Now I noticed that methods are highlighted always inside of the 
 context of the class that's active in the class browser. How can I change 
 this? There is already a useful method around to figure out which object it 
 belongs to:
 
 SomeClass traitOrClassOfSelector: #aMethod
 
 This actually will tell me which trait it comes from. So now I could apply 
 syntax coloring in the context of the trait rather than the class. Since in 
 my implementation state is all private to the trait / class, they should be 
 able to access their own state but not see the state of the other class. This 
 obviously also means that coloring should happen in the correct scope, rather 
 than always in the scope of the class.
 
 At the moment the coloring doesn't really make sense ... but then it didn't 
 really matter that much until now. Although if you try to access state in a 
 method coming from a trait, while coding in your IDE you'll probably have the 
 impression you can access your local instvars. I don't really know what the 
 semantics are there... but it seems a bit broken :)
 
 cheers,
 Toon
 




Re: [Pharo-project] [ANN 1.2] 1.2.1 Full Release Image

2011-04-03 Thread Stéphane Ducasse
tx!
and yes we should continue

On Apr 3, 2011, at 9:36 AM, Marcus Denker wrote:

 
 On Apr 3, 2011, at 9:35 AM, Marcus Denker wrote:
 
 
  https://gforge.inria.fr/frs/download.php/28435/Pharo-1.2.1-11.04.03.zip
 
 
 
 .. the all green image of today from Hudson. Yes, this is not repeatable and 
 tomorrow
 the hudson one might be different. But we need to move on. 1.1 was build just 
 once, too.
 So we can continue to build the perfect fully automatic process for 1.3...
 
 Next:
   - Make a one-click.
   - Make a cog one-click.
   - push all open reports in the tracker to 1.2.2 
 
 
 --
 Marcus Denker  -- http://www.marcusdenker.de
 INRIA Lille -- Nord Europe. Team RMoD.
 
 




Re: [Pharo-project] Issue 3786 in pharo: Debug test .. (d) menu option in OBSystenBrowser gives SystemGuardException in Pharo 1.2

2011-04-03 Thread pharo


Comment #3 on issue 3786 by jvdsa...@gmail.com: Debug test .. (d) menu  
option in OBSystenBrowser gives SystemGuardException in Pharo 1.2

http://code.google.com/p/pharo/issues/detail?id=3786

This bug is still present in the 1.2.1 development image.




Re: [Pharo-project] Issue 3709 in pharo: Clean OB**WithShout in omnibrowser

2011-04-03 Thread pharo

Updates:
Status: Duplicate
Mergedinto: 3842

Comment #2 on issue 3709 by marcus.d...@gmail.com: Clean OB**WithShout in  
omnibrowser

http://code.google.com/p/pharo/issues/detail?id=3709

So this will be fixed with  a merge




Re: [Pharo-project] Issue 3842 in pharo: 1.2 Config needs to load latest code from OB Repository

2011-04-03 Thread pharo


Comment #2 on issue 3842 by marcus.d...@gmail.com: 1.2 Config needs to load  
latest code from OB Repository

http://code.google.com/p/pharo/issues/detail?id=3842

Issue 3709 has been merged into this issue.




Re: [Pharo-project] Issue 3842 in pharo: 1.2 Config needs to load latest code from OB Repository

2011-04-03 Thread pharo


Comment #3 on issue 3842 by marcus.d...@gmail.com: 1.2 Config needs to load  
latest code from OB Repository

http://code.google.com/p/pharo/issues/detail?id=3842

Issue 3786 has been merged into this issue.




Re: [Pharo-project] Issue 3786 in pharo: Debug test .. (d) menu option in OBSystenBrowser gives SystemGuardException in Pharo 1.2

2011-04-03 Thread pharo

Updates:
Status: Duplicate
Mergedinto: 3842

Comment #4 on issue 3786 by marcus.d...@gmail.com: Debug test .. (d) menu  
option in OBSystenBrowser gives SystemGuardException in Pharo 1.2

http://code.google.com/p/pharo/issues/detail?id=3786

So then this code is in the other branch... will be fixed with a merge




Re: [Pharo-project] Issue 3754 in pharo: Omnibrowser's an extra horizontal scrollbar

2011-04-03 Thread pharo

Updates:
Status: Closed

Comment #9 on issue 3754 by marcus.d...@gmail.com: Omnibrowser's an extra  
horizontal scrollbar

http://code.google.com/p/pharo/issues/detail?id=3754

(No comment was entered for this change.)




[Pharo-project] Issue 3943 in pharo: remove ExternalSettings from MC

2011-04-03 Thread pharo

Status: FixProposed
Owner: marcus.d...@gmail.com
Labels: Milestone-1.3

New issue 3943 by marcus.d...@gmail.com: remove ExternalSettings from MC
http://code.google.com/p/pharo/issues/detail?id=3943

ExternalSettings... this changeset removes ExternalSettings from it's last  
client.


In the preamble, this code needs to be called:

   ExternalSettings registeredClients remove: MCRepository.

removal changeset attached.

Attachments:
MCRemoveExternalSettings.1.cs  1.3 KB




[Pharo-project] Issue 3944 in pharo: ClassHierarchyTest needs to be moved to KernelTests package

2011-04-03 Thread pharo

Status: Accepted
Owner: marcus.d...@gmail.com
Labels: Milestone-1.3

New issue 3944 by marcus.d...@gmail.com: ClassHierarchyTest needs to be  
moved to KernelTests package

http://code.google.com/p/pharo/issues/detail?id=3944

ClassHierarchyTest needs to be moved to KernelTests package




[Pharo-project] Issue 3945 in pharo: Remove squeakland plugin methods from SystemVersion

2011-04-03 Thread pharo

Status: FixProposed
Owner: marcus.d...@gmail.com
Labels: Milestone-1.3

New issue 3945 by marcus.d...@gmail.com: Remove squeakland  plugin methods  
from SystemVersion

http://code.google.com/p/pharo/issues/detail?id=3945

Remove squeakland  plugin methods from SystemVersion



Attachments:
CleanPlugin.1.cs  507 bytes




Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Toon Verwaest

Oh yes.. I am :)

http://pinocchio.unibe.ch/~tverwaes/slots.tar.gz gives you an image with 
an example of a stateful trait open. The state is always private to the 
class / trait at the moment and it already seems to work pretty well. I 
modified the NewInspector slightly to show you the proper data (although 
this needs to be cleaned up, and state should be sorted per trait), and 
the OB to compile and syntax highlight in the right context.


I didn't test more complex examples yet than what's open, but it's 
designed generically enough that I'm confident it does ... euhm ... ;)


cheers,
Toon

On 04/03/2011 10:44 AM, Stéphane Ducasse wrote:

On Apr 2, 2011, at 9:10 PM, Toon Verwaest wrote:


Hi all,

as you know I'm working on stateful traits using my new classbuilder

no
Are you?



etc... Now I noticed that methods are highlighted always inside of the context 
of the class that's active in the class browser. How can I change this? There 
is already a useful method around to figure out which object it belongs to:

SomeClass traitOrClassOfSelector: #aMethod

This actually will tell me which trait it comes from. So now I could apply 
syntax coloring in the context of the trait rather than the class. Since in my 
implementation state is all private to the trait / class, they should be able 
to access their own state but not see the state of the other class. This 
obviously also means that coloring should happen in the correct scope, rather 
than always in the scope of the class.

At the moment the coloring doesn't really make sense ... but then it didn't 
really matter that much until now. Although if you try to access state in a 
method coming from a trait, while coding in your IDE you'll probably have the 
impression you can access your local instvars. I don't really know what the 
semantics are there... but it seems a bit broken :)

cheers,
Toon








[Pharo-project] Issue 3946 in pharo: remove some more uniclasses/player related code

2011-04-03 Thread pharo

Status: FixProposed
Owner: marcus.d...@gmail.com
Labels: Milestone-1.3

New issue 3946 by marcus.d...@gmail.com: remove some more uniclasses/player  
related code

http://code.google.com/p/pharo/issues/detail?id=3946

remove some more uniclasses/player related dead code

Attachments:
Clean.1.cs  615 bytes




[Pharo-project] Issue 3947 in pharo: remove #floodFill:

2011-04-03 Thread pharo

Status: FixProposed
Owner: marcus.d...@gmail.com
Labels: Milestone-1.3

New issue 3947 by marcus.d...@gmail.com: remove #floodFill:
http://code.google.com/p/pharo/issues/detail?id=3947

Form removeSelector: #floodFill:at:!
Form removeSelector: #floodFill:at:tolerance:!

... references non-existing class. Not called.

Attachments:
FloodFill.1.cs  180 bytes




Re: [Pharo-project] Issue 3944 in pharo: ClassHierarchyTest needs to be moved to KernelTests package

2011-04-03 Thread pharo

Updates:
Status: FixProposed

Comment #1 on issue 3944 by marcus.d...@gmail.com: ClassHierarchyTest needs  
to be moved to KernelTests package

http://code.google.com/p/pharo/issues/detail?id=3944

fix attached

Attachments:
ClassHierarchyTest.1.cs  242 bytes




Re: [Pharo-project] Issue 3942 in pharo: Transcript missing compatibility method ensureCr

2011-04-03 Thread pharo

Updates:
Status: FixProposed

Comment #1 on issue 3942 by marcus.d...@gmail.com: Transcript missing  
compatibility method ensureCr

http://code.google.com/p/pharo/issues/detail?id=3942

fix attached

Attachments:
EnsureCr.1.cs  360 bytes




[Pharo-project] Issue 3948 in pharo: Transcript and ThreadedTranscript needs to be merged

2011-04-03 Thread pharo

Status: Accepted
Owner: marcus.d...@gmail.com
Labels: Milestone-1.3

New issue 3948 by marcus.d...@gmail.com: Transcript and ThreadedTranscript  
needs to be merged

http://code.google.com/p/pharo/issues/detail?id=3948

Transcript is now not a Stream subclass anymore.

ThreadedTranscript's install method now destroys the Transcript class.

Transcript now has a semaphore, so maybe it is thread safe?

merge needed.




Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Stéphane Ducasse

 Oh yes.. I am :)

cool

How are you dealing with the fact that the application of trait with state may 
change the layout of the class user and that you should recompile
all the class method to deal with that. And if you have two traits having state 
you should do the same but for the traits themselves.
So this means that the method in the traits cannot be reused (ok now we do not 
reuse them anymore sniff it was a nice model - reuse without cost of 
duplication).

How your layout object helps you for that?
This is why I want first class slot :)

Stef

 
 http://pinocchio.unibe.ch/~tverwaes/slots.tar.gz gives you an image with an 
 example of a stateful trait open. The state is always private to the class / 
 trait at the moment and it already seems to work pretty well. I modified the 
 NewInspector slightly to show you the proper data (although this needs to be 
 cleaned up, and state should be sorted per trait), and the OB to compile and 
 syntax highlight in the right context.
 
 I didn't test more complex examples yet than what's open, but it's designed 
 generically enough that I'm confident it does ... euhm ... ;)
 
 cheers,
 Toon
 
 On 04/03/2011 10:44 AM, Stéphane Ducasse wrote:
 On Apr 2, 2011, at 9:10 PM, Toon Verwaest wrote:
 
 Hi all,
 
 as you know I'm working on stateful traits using my new classbuilder
 no
 Are you?
 
 
 etc... Now I noticed that methods are highlighted always inside of the 
 context of the class that's active in the class browser. How can I change 
 this? There is already a useful method around to figure out which object it 
 belongs to:
 
 SomeClass traitOrClassOfSelector: #aMethod
 
 This actually will tell me which trait it comes from. So now I could apply 
 syntax coloring in the context of the trait rather than the class. Since in 
 my implementation state is all private to the trait / class, they should be 
 able to access their own state but not see the state of the other class. 
 This obviously also means that coloring should happen in the correct scope, 
 rather than always in the scope of the class.
 
 At the moment the coloring doesn't really make sense ... but then it didn't 
 really matter that much until now. Although if you try to access state in a 
 method coming from a trait, while coding in your IDE you'll probably have 
 the impression you can access your local instvars. I don't really know what 
 the semantics are there... but it seems a bit broken :)
 
 cheers,
 Toon
 
 
 
 




Re: [Pharo-project] [ANN 1.2] 1.2.1 Full Release Image

2011-04-03 Thread Tudor Girba
Hi,

The Moose build uses 1.2.1 now:
http://hudson.moosetechnology.org/job/moose-latest-dev/

Cheers,
Doru


On 3 Apr 2011, at 10:45, Stéphane Ducasse wrote:

 tx!
 and yes we should continue
 
 On Apr 3, 2011, at 9:36 AM, Marcus Denker wrote:
 
 
 On Apr 3, 2011, at 9:35 AM, Marcus Denker wrote:
 
 
 https://gforge.inria.fr/frs/download.php/28435/Pharo-1.2.1-11.04.03.zip
 
 
 
 .. the all green image of today from Hudson. Yes, this is not repeatable and 
 tomorrow
 the hudson one might be different. But we need to move on. 1.1 was build 
 just once, too.
 So we can continue to build the perfect fully automatic process for 1.3...
 
 Next:
  - Make a one-click.
  - Make a cog one-click.
  - push all open reports in the tracker to 1.2.2 
 
 
 --
 Marcus Denker  -- http://www.marcusdenker.de
 INRIA Lille -- Nord Europe. Team RMoD.
 
 
 
 

--
www.tudorgirba.com

Problem solving should be focused on describing
the problem in a way that makes the solution obvious.







Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Toon Verwaest



How are you dealing with the fact that the application of trait with state may 
change the layout of the class user and that you should recompile
all the class method to deal with that. And if you have two traits having state 
you should do the same but for the traits themselves.
So this means that the method in the traits cannot be reused (ok now we do not 
reuse them anymore sniff it was a nice model - reuse without cost of 
duplication).

How your layout object helps you for that?
This is why I want first class slot :)

Stef

I don't think I fully understand what you are saying...

The model is like this at the moment:

Every class has a layout attached to it. Layouts that have slots have 
LayoutScopes. For example, if you have


Class A super: Object slots: #(a b c)
Class B super: A slots: #(d e)

Then you get

Class A - PointerLayout - LayoutClassScope #(a b c) - 
LayoutClassScope #() - LayoutEmptyScope
Class B - PointerLayout - LayoutClassScope #(d e) - LayoutClassScope 
#(a b c) - LayoutClassScope #() - LayoutEmptyScope


where LayoutClassScope #(a b c) is shared between the scope of B and the 
layout of A. The empty LayoutClassScope comes from Object and is shared 
as well.


Now if you get a stateful trait, a stateful trait C with slots #(f) 
looks like this:


StatefulTrait C - PointerLayout - LayoutTraitScope #(f) - 
LayoutEmptyScope


If you were to install the trait C on B, it would become:

Class B - PointerLayout - LayoutClassScope #(d e) - LayoutForkScope 
- LayoutClassScope #(a b c) - LayoutClassScope #() - LayoutEmptyScope


where the LayoutForkScope would have sidescopes:
LayoutForkScope sideScopes: { LayoutTraitScope #(f) - LayoutEmptyScope }

Then the classbuilder will build classes by always following the public 
path. Sidescopes aren't public. When you compile methods on the trait, 
its scopes are public; but when they are installed, they aren't public 
since they are sidescopes.


However, every method is compiled on the trait or class that provided 
the selector, so when you install the trait-related method, it will see 
the state related to the trait. And when the trait is installed, the 
sidescopes are actually copies of the original traitscope, so the actual 
fieldindices are updated in the LayoutTraitScope when it's installed.


Then how methods get updated based on state changes is at the moment 
completely unrelated to the trait implementation, since methods are 
already updated in my class builder based on a MethodModificationModel 
that knows how the fields have changed. This will use the 
decompiler/bytecode modification/recompiler to update the methods in place.


The only thing that I forgot to do until now is to actually modify all 
the classes that use a trait, every time the state of a trait changes... 
But that's straightforward. We just have to ask for the users of the 
stateful trait and reapply their class modification. That's all nicely 
modeled already.


As for overlapping state from multiple stateful traits there is no 
overlapping state since all state is private to the trait! You can use 2 
traits with same slot names. This is no problem at all since the state 
is only seen by that trait. And their methods are only compiled on that 
trait, so the methods will always know exactly which of the slots you 
are referring to.


I hope this helps somehow :) Otherwise ... wait for the paper ;)

cheers,
Toon



Re: [Pharo-project] Announcement real problems - please read and comment.

2011-04-03 Thread Tudor Girba
Hi,

I think that this dialogue goes in too many directions, so I will try to 
provide a summary. Maybe this helps.

As I understand, Stef has the following problem:
- there is one announcer with two listeners
- the problem is that if the first listener raises an error, the second 
listener is not announced anymore
- thus, the base system can be broken simply by creating an extra listener that 
raises an error

As a solution, he proposed the idea of introducing the order of announcements.

Igor and Henrik had strong arguments against this solution. I agree with them. 
They suggested to either decompose the announcements more fine grained, or as 
you are pointing out now to layer them. I think this is the best solution, and 
like that we can have the basic announcements to be private.

However, the original question still remains valid. I am not quite sure what 
the solution is, but the idea of Denis of using asynchronous announcements 
sounds interesting. On the other hand, if I mess up something in the private 
workings of the kernel, my image will be broken, and that is expected.

More inside
 

On 3 Apr 2011, at 10:40, Stéphane Ducasse wrote:

 
 PPS. There's a neat method called #on:send:to:,  which would be perfect 
 for the different actions in RPackage-SystemIntegration.
 I'm trying to understand how this on:send:to: would help us.
 Because
 Nautilus registered to system announcer
 Now I do not understand why RPackageOrganizer should not register to 
 systemAnnouncer too.
 And even if we use on:send:to: who can garantee that the on:send:to: will 
 notify first the RPackageOrganizer and
 not that an announcement will reach the browser before.
 
 What was your idea?
 
 Stef
 It has nothing to do with registration ordering, but using the proper API.
 If you look at the RPackageOrganizer registrations in 
 RPackage-SystemIntegration, all they do in the action block is send self a 
 message.
 Instead of:
 anAnnouncer
   when: SystemCategoryAddedAnnouncement do: [ :ann | self 
 systemCategoryAddedActionFrom: ann ];
 you write:
 announcer on: SystemCategoryAddedAnnouncement send: 
 #systemCategoryAddedActionFrom: to: self
 
 I do not get what is the difference. Can you explain how this would solve my 
 problem?

This does not fix your problem. Henrik simply looked at the code and he saw 
that it would be better to use the message passing instead of the block.

 I was discussing with luc and noury yesterday and we thought about the 
 following:
   The system should be layered in two layers
 
   system (Rename) should emit annoucement to system objects (like 
 RPakcageOrganizer)
   
   UI tools should register not to system but to RPackageOrganizer.

Exactly!

 So this is probably the solution but I'm thinking that in the long turn may 
 be pushing packages inside the system wiuthout annoucement
 would be better.

That could be the case, but I think the solution we have now is Ok to bootstrap.

Cheers,
Doru



 It also has the added benefit you can make them weak if you want :)
 
 Cheers,
 Henry
 
 And ugh, why the Announcement at the end of the Announcement names? :/
 
 Who cares for now we have a system on its knees if one annoucnement breaks so 
 to me this is totally useless.
 
 Stef

--
www.tudorgirba.com

Problem solving efficiency grows with the abstractness level of problem 
understanding.






[Pharo-project] Issue 3949 in pharo: Coverage for Cog

2011-04-03 Thread pharo

Status: FixProposed
Owner: renggli
Labels: Milestone-1.1.2

New issue 3949 by renggli: Coverage for Cog
http://code.google.com/p/pharo/issues/detail?id=3949

The fix below makes sure that the coverage method is properly flushed from  
the method cache. It doesn't seem to yet fix all problems of the coverage  
tool on Cog but it definitely works better:


Name: SUnitGUI-lr.71
Author: lr
Time: 3 April 2011, 11:02:41 am
UUID: 8098bb1d-fd66-49a3-810c-7e536fff05c7
Ancestors: SUnitGUI-StephaneDucasse.70

- make sure that the coverage tools properly flushes the method cache




Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Toon Verwaest


Then the classbuilder will build classes by always following the 
public path. Sidescopes aren't public. When you compile methods on the 
trait, its scopes are public; but when they are installed, they aren't 
public since they are sidescopes.
I obviously meant, the compiler will compile methods by following the 
public path.




Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Alexandre Bergel
 So now I could apply syntax coloring in the context of the trait rather than 
 the class.

Do you mean coloring message sends in a trait's method? For self call that is 
not specified in the requirement?

 Since in my implementation state is all private to the trait / class, they 
 should be able to access their own state but not see the state of the other 
 class. This obviously also means that coloring should happen in the correct 
 scope, rather than always in the scope of the class.

Can you merge state? What happens with C.x uses T.x ? Methods of T will use T.x 
and methods of C will use C.x?

Alexandre

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








Re: [Pharo-project] Announcement real problems - please read and comment.

2011-04-03 Thread Stéphane Ducasse

On Apr 3, 2011, at 12:30 PM, Tudor Girba wrote:

 Hi,
 
 I think that this dialogue goes in too many directions, so I will try to 
 provide a summary. Maybe this helps.
 
 As I understand, Stef has the following problem:
 - there is one announcer with two listeners
 - the problem is that if the first listener raises an error, the second 
 listener is not announced anymore
 - thus, the base system can be broken simply by creating an extra listener 
 that raises an error

Yes this was the problem number 1 of my original mail. 
What I do not understand is why a 
ifCurtailed: [ emit and process next announcement does not solve the 
problem]



Now we also have the problem number 2.

 As a solution, he proposed the idea of introducing the order of announcements.
 
 Igor and Henrik had strong arguments against this solution. I agree with 
 them. They suggested to either decompose the announcements more fine grained, 
 or as you are pointing out now to layer them. I think this is the best 
 solution, and like that we can have the basic announcements to be private.

Yes this is what I think. 

 However, the original question still remains valid. I am not quite sure what 
 the solution is, but the idea of Denis of using asynchronous announcements 
 sounds interesting. On the other hand, if I mess up something in the private 
 workings of the kernel, my image will be broken, and that is expected.
 
 More inside
 
 
 On 3 Apr 2011, at 10:40, Stéphane Ducasse wrote:
 
 
 PPS. There's a neat method called #on:send:to:,  which would be perfect 
 for the different actions in RPackage-SystemIntegration.
 I'm trying to understand how this on:send:to: would help us.
 Because
Nautilus registered to system announcer
 Now I do not understand why RPackageOrganizer should not register to 
 systemAnnouncer too.
 And even if we use on:send:to: who can garantee that the on:send:to: will 
 notify first the RPackageOrganizer and
 not that an announcement will reach the browser before.
 
 What was your idea?
 
 Stef
 It has nothing to do with registration ordering, but using the proper API.
 If you look at the RPackageOrganizer registrations in 
 RPackage-SystemIntegration, all they do in the action block is send self a 
 message.
 Instead of:
 anAnnouncer
  when: SystemCategoryAddedAnnouncement do: [ :ann | self 
 systemCategoryAddedActionFrom: ann ];
 you write:
 announcer on: SystemCategoryAddedAnnouncement send: 
 #systemCategoryAddedActionFrom: to: self
 
 I do not get what is the difference. Can you explain how this would solve my 
 problem?
 
 This does not fix your problem. Henrik simply looked at the code and he saw 
 that it would be better to use the message passing instead of the block.

ok

 
 I was discussing with luc and noury yesterday and we thought about the 
 following:
  The system should be layered in two layers
 
  system (Rename) should emit annoucement to system objects (like 
 RPakcageOrganizer)
  
  UI tools should register not to system but to RPackageOrganizer.
 
 Exactly!
 
 So this is probably the solution but I'm thinking that in the long turn may 
 be pushing packages inside the system wiuthout annoucement
 would be better.
 
 That could be the case, but I think the solution we have now is Ok to 
 bootstrap.

Yes I thought about that too.
So I will try to see with ben that nautilus register to RPackageOrganizer 
instaed of SystemAnnouncer.

 
 Cheers,
 Doru
 
 
 
 It also has the added benefit you can make them weak if you want :)
 
 Cheers,
 Henry
 
 And ugh, why the Announcement at the end of the Announcement names? :/
 
 Who cares for now we have a system on its knees if one annoucnement breaks 
 so to me this is totally useless.
 
 Stef
 
 --
 www.tudorgirba.com
 
 Problem solving efficiency grows with the abstractness level of problem 
 understanding.
 
 
 
 




Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Toon Verwaest



Do you mean coloring message sends in a trait's method? For self call that is 
not specified in the requirement?
I meant that if you look at a method coming from a trait inside of the 
class browser; while your browser is pointing at a class. Instance 
variables were colored red since they weren't found on the class. 
However, they came from the trait, so should have been colored in the 
scope of the trait. Now that's fixed. All methods are being colored in 
the scope where they are defined.

Can you merge state? What happens with C.x uses T.x ? Methods of T will use T.x 
and methods of C will use C.x?

Alexandre

At the moment you can't, but in our slot library we have alias slots. So 
that we could use to do the same tricks as with methods: required slots, 
provided slots, defrosted slots, ...


So yes, at the moment C.x using T.x will have completely separate uses 
in methods, only dependent on where they are compiled. Traits related 
methods see the trait state, class related methods see the class state. 
I think it's more important to get that part working first; and to then 
start providing access, which is why I did it in this order.


cheers,
Toon



Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Alexandre Bergel
I tried the image. I hadn't seen such a look for years :-)

StatefulTrait named: #TStatefulTest
layout: PointerLayout
slots: {
#tfirst = Slot.
#tsecond = Slot.
}
uses: {}
category: #'Slot-Traits-Test'

I checked what layout: is about. StatefulTrait is a dry in terms of comments :-)
Why do you have = Slot ? What can tfirst be else, if not a slot? Can you 
specialize the slots to use a particular layout?

I played a bit with your image. I cannot access tfirst in MyFirstTest. Your 
implementation is conform to the policy you defined above. 

Your image is a bit unstable. I tried to press the tab key for autocompletion, 
and got some debuggers that I couldn't close. I misspelled aMethod with 
aMethdo, and got plenty of debuggers related to QQParser 

Cheers,
Alexandre

On 3 Apr 2011, at 05:34, Toon Verwaest wrote:

 Oh yes.. I am :)
 
 http://pinocchio.unibe.ch/~tverwaes/slots.tar.gz gives you an image with an 
 example of a stateful trait open. The state is always private to the class / 
 trait at the moment and it already seems to work pretty well. I modified the 
 NewInspector slightly to show you the proper data (although this needs to be 
 cleaned up, and state should be sorted per trait), and the OB to compile and 
 syntax highlight in the right context.
 
 I didn't test more complex examples yet than what's open, but it's designed 
 generically enough that I'm confident it does ... euhm ... ;)
 
 cheers,
 Toon
 
 On 04/03/2011 10:44 AM, Stéphane Ducasse wrote:
 On Apr 2, 2011, at 9:10 PM, Toon Verwaest wrote:
 
 Hi all,
 
 as you know I'm working on stateful traits using my new classbuilder
 no
 Are you?
 
 
 etc... Now I noticed that methods are highlighted always inside of the 
 context of the class that's active in the class browser. How can I change 
 this? There is already a useful method around to figure out which object it 
 belongs to:
 
 SomeClass traitOrClassOfSelector: #aMethod
 
 This actually will tell me which trait it comes from. So now I could apply 
 syntax coloring in the context of the trait rather than the class. Since in 
 my implementation state is all private to the trait / class, they should be 
 able to access their own state but not see the state of the other class. 
 This obviously also means that coloring should happen in the correct scope, 
 rather than always in the scope of the class.
 
 At the moment the coloring doesn't really make sense ... but then it didn't 
 really matter that much until now. Although if you try to access state in a 
 method coming from a trait, while coding in your IDE you'll probably have 
 the impression you can access your local instvars. I don't really know what 
 the semantics are there... but it seems a bit broken :)
 
 cheers,
 Toon
 
 
 
 

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








Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Toon Verwaest

I just finished building a new image based on the helvetia image.

http://pinocchio.unibe.ch/~tverwaes/PlayOut.tar.gz

The previous image is what I've been developing in, and yes, it's pretty 
annoying... I hope that the new image will perform better. But since I 
already noticed that the new inspector isn't loaded, you don't get a 
proper view on the trait-related objects.


Coloring is still done properly though.

Yes I see, I did forget to implement all the tools to make it work. You 
know... I started the stateful traits implementation on Friday... I'm 
glad that I'm as far as I am ;) However, in the new image I can close 
it. Exceptions are just very slow for some reason.


There are not many comments around, and not enough tests. After I finish 
my paperwriting I'll go over it and document everything! It's a sneak 
preview ... did I mention that? ;)


For the slots, yes there are subclasses of the standard Slot class; and 
they can provide non-standard access.


You might notice that changing a class' layout is a lot faster thanks to 
bytecode level method updates :) Or not, hence I mention it again. 
That's all part of this particular image.


cheers,
Toon

On 04/03/2011 02:19 PM, Alexandre Bergel wrote:

I tried the image. I hadn't seen such a look for years :-)

StatefulTrait named: #TStatefulTest
layout: PointerLayout
slots: {
#tfirst =  Slot.
#tsecond =  Slot.
}
uses: {}
category: #'Slot-Traits-Test'

I checked what layout: is about. StatefulTrait is a dry in terms of comments :-)
Why do you have =  Slot ? What can tfirst be else, if not a slot? Can you 
specialize the slots to use a particular layout?

I played a bit with your image. I cannot access tfirst in MyFirstTest. Your 
implementation is conform to the policy you defined above.

Your image is a bit unstable. I tried to press the tab key for autocompletion, 
and got some debuggers that I couldn't close. I misspelled aMethod with 
aMethdo, and got plenty of debuggers related to QQParser

Cheers,
Alexandre

On 3 Apr 2011, at 05:34, Toon Verwaest wrote:


Oh yes.. I am :)

http://pinocchio.unibe.ch/~tverwaes/slots.tar.gz gives you an image with an 
example of a stateful trait open. The state is always private to the class / 
trait at the moment and it already seems to work pretty well. I modified the 
NewInspector slightly to show you the proper data (although this needs to be 
cleaned up, and state should be sorted per trait), and the OB to compile and 
syntax highlight in the right context.

I didn't test more complex examples yet than what's open, but it's designed 
generically enough that I'm confident it does ... euhm ... ;)

cheers,
Toon

On 04/03/2011 10:44 AM, Stéphane Ducasse wrote:

On Apr 2, 2011, at 9:10 PM, Toon Verwaest wrote:


Hi all,

as you know I'm working on stateful traits using my new classbuilder

no
Are you?



etc... Now I noticed that methods are highlighted always inside of the context 
of the class that's active in the class browser. How can I change this? There 
is already a useful method around to figure out which object it belongs to:

SomeClass traitOrClassOfSelector: #aMethod

This actually will tell me which trait it comes from. So now I could apply 
syntax coloring in the context of the trait rather than the class. Since in my 
implementation state is all private to the trait / class, they should be able 
to access their own state but not see the state of the other class. This 
obviously also means that coloring should happen in the correct scope, rather 
than always in the scope of the class.

At the moment the coloring doesn't really make sense ... but then it didn't 
really matter that much until now. Although if you try to access state in a 
method coming from a trait, while coding in your IDE you'll probably have the 
impression you can access your local instvars. I don't really know what the 
semantics are there... but it seems a bit broken :)

cheers,
Toon








Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Alexandre Bergel
I guess that what Stef meant is the following:
One of the problems when sharing code among mixin and stateful-trait 
application is that the physical layout of instances varies between mixin 
applications. (Section 6.5 of 
http://bergel.eu/download/papers/Berg07e-StatefulTraits.pdf)

We have T.y and C.x
T has a method #getY, for which its bytecode returns the first slot (i.e., y). 
If C uses T, the #getY needs to be adapted to return the second slot right?

Cheers,
Alexandre

On 3 Apr 2011, at 06:23, Toon Verwaest wrote:

 
 How are you dealing with the fact that the application of trait with state 
 may change the layout of the class user and that you should recompile
 all the class method to deal with that. And if you have two traits having 
 state you should do the same but for the traits themselves.
 So this means that the method in the traits cannot be reused (ok now we do 
 not reuse them anymore sniff it was a nice model - reuse without cost of 
 duplication).
 
 How your layout object helps you for that?
 This is why I want first class slot :)
 
 Stef
 I don't think I fully understand what you are saying...
 
 The model is like this at the moment:
 
 Every class has a layout attached to it. Layouts that have slots have 
 LayoutScopes. For example, if you have
 
 Class A super: Object slots: #(a b c)
 Class B super: A slots: #(d e)
 
 Then you get
 
 Class A - PointerLayout - LayoutClassScope #(a b c) - LayoutClassScope 
 #() - LayoutEmptyScope
 Class B - PointerLayout - LayoutClassScope #(d e) - LayoutClassScope #(a 
 b c) - LayoutClassScope #() - LayoutEmptyScope
 
 where LayoutClassScope #(a b c) is shared between the scope of B and the 
 layout of A. The empty LayoutClassScope comes from Object and is shared as 
 well.
 
 Now if you get a stateful trait, a stateful trait C with slots #(f) looks 
 like this:
 
 StatefulTrait C - PointerLayout - LayoutTraitScope #(f) - LayoutEmptyScope
 
 If you were to install the trait C on B, it would become:
 
 Class B - PointerLayout - LayoutClassScope #(d e) - LayoutForkScope - 
 LayoutClassScope #(a b c) - LayoutClassScope #() - LayoutEmptyScope
 
 where the LayoutForkScope would have sidescopes:
 LayoutForkScope sideScopes: { LayoutTraitScope #(f) - LayoutEmptyScope }
 
 Then the classbuilder will build classes by always following the public path. 
 Sidescopes aren't public. When you compile methods on the trait, its scopes 
 are public; but when they are installed, they aren't public since they are 
 sidescopes.
 
 However, every method is compiled on the trait or class that provided the 
 selector, so when you install the trait-related method, it will see the state 
 related to the trait. And when the trait is installed, the sidescopes are 
 actually copies of the original traitscope, so the actual fieldindices are 
 updated in the LayoutTraitScope when it's installed.
 
 Then how methods get updated based on state changes is at the moment 
 completely unrelated to the trait implementation, since methods are already 
 updated in my class builder based on a MethodModificationModel that knows how 
 the fields have changed. This will use the decompiler/bytecode 
 modification/recompiler to update the methods in place.
 
 The only thing that I forgot to do until now is to actually modify all the 
 classes that use a trait, every time the state of a trait changes... But 
 that's straightforward. We just have to ask for the users of the stateful 
 trait and reapply their class modification. That's all nicely modeled already.
 
 As for overlapping state from multiple stateful traits there is no 
 overlapping state since all state is private to the trait! You can use 2 
 traits with same slot names. This is no problem at all since the state is 
 only seen by that trait. And their methods are only compiled on that trait, 
 so the methods will always know exactly which of the slots you are referring 
 to.
 
 I hope this helps somehow :) Otherwise ... wait for the paper ;)
 
 cheers,
 Toon
 

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








Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Alexandre Bergel
 Can you merge state? What happens with C.x uses T.x ? Methods of T will use 
 T.x and methods of C will use C.x?
 
 At the moment you can't, but in our slot library we have alias slots. So that 
 we could use to do the same tricks as with methods: required slots, provided 
 slots, defrosted slots, ...

I am lost. I understand that a trait have a class have a different scope of 
slots. But you cannot define C.x and T.x? Why? 

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








Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Toon Verwaest

On 04/03/2011 02:29 PM, Alexandre Bergel wrote:

I guess that what Stef meant is the following:
One of the problems when sharing code among mixin and stateful-trait 
application is that the physical layout of instances varies between mixin 
applications. (Section 6.5 of 
http://bergel.eu/download/papers/Berg07e-StatefulTraits.pdf)

We have T.y and C.x
T has a method #getY, for which its bytecode returns the first slot (i.e., y). 
If C uses T, the #getY needs to be adapted to return the second slot right?

Cheers,
Alexandre
Indeed. And this is not different from changing a layout of a class 
having as impact that you have to update the methods.
The default traits implementation already recompiles all methods anyway 
whenever it installs the trait. What I do is, I just let the trait 
compile itself on the subpart of the class that originally defined the 
trait.
Since this subpart is a copy of the original trait (just like the 
default traits does), it also has a COPY of the original layout. In this 
copy, the indices of the slots are updated when they are mixed with the 
class that is going to use the trait. So it's being compiled in the 
scope of the installed version of the trait-layout. So that easily works.


cheers

On 3 Apr 2011, at 06:23, Toon Verwaest wrote:


How are you dealing with the fact that the application of trait with state may 
change the layout of the class user and that you should recompile
all the class method to deal with that. And if you have two traits having state 
you should do the same but for the traits themselves.
So this means that the method in the traits cannot be reused (ok now we do not 
reuse them anymore sniff it was a nice model - reuse without cost of 
duplication).

How your layout object helps you for that?
This is why I want first class slot :)

Stef

I don't think I fully understand what you are saying...

The model is like this at the moment:

Every class has a layout attached to it. Layouts that have slots have 
LayoutScopes. For example, if you have

Class A super: Object slots: #(a b c)
Class B super: A slots: #(d e)

Then you get

Class A-  PointerLayout -  LayoutClassScope #(a b c) -  LayoutClassScope #() 
-  LayoutEmptyScope
Class B-  PointerLayout -  LayoutClassScope #(d e) -  LayoutClassScope #(a b c) 
-  LayoutClassScope #() -  LayoutEmptyScope

where LayoutClassScope #(a b c) is shared between the scope of B and the layout 
of A. The empty LayoutClassScope comes from Object and is shared as well.

Now if you get a stateful trait, a stateful trait C with slots #(f) looks like 
this:

StatefulTrait C-  PointerLayout -  LayoutTraitScope #(f) -  LayoutEmptyScope

If you were to install the trait C on B, it would become:

Class B-  PointerLayout -  LayoutClassScope #(d e) -  LayoutForkScope -  
LayoutClassScope #(a b c) -  LayoutClassScope #() -  LayoutEmptyScope

where the LayoutForkScope would have sidescopes:
LayoutForkScope sideScopes: { LayoutTraitScope #(f) -  LayoutEmptyScope }

Then the classbuilder will build classes by always following the public path. 
Sidescopes aren't public. When you compile methods on the trait, its scopes are 
public; but when they are installed, they aren't public since they are 
sidescopes.

However, every method is compiled on the trait or class that provided the 
selector, so when you install the trait-related method, it will see the state 
related to the trait. And when the trait is installed, the sidescopes are 
actually copies of the original traitscope, so the actual fieldindices are 
updated in the LayoutTraitScope when it's installed.

Then how methods get updated based on state changes is at the moment completely 
unrelated to the trait implementation, since methods are already updated in my 
class builder based on a MethodModificationModel that knows how the fields have 
changed. This will use the decompiler/bytecode modification/recompiler to 
update the methods in place.

The only thing that I forgot to do until now is to actually modify all the 
classes that use a trait, every time the state of a trait changes... But that's 
straightforward. We just have to ask for the users of the stateful trait and 
reapply their class modification. That's all nicely modeled already.

As for overlapping state from multiple stateful traits there is no 
overlapping state since all state is private to the trait! You can use 2 traits 
with same slot names. This is no problem at all since the state is only seen by 
that trait. And their methods are only compiled on that trait, so the methods 
will always know exactly which of the slots you are referring to.

I hope this helps somehow :) Otherwise ... wait for the paper ;)

cheers,
Toon






Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Toon Verwaest

On 04/03/2011 02:31 PM, Alexandre Bergel wrote:

Can you merge state? What happens with C.x uses T.x ? Methods of T will use T.x 
and methods of C will use C.x?


At the moment you can't, but in our slot library we have alias slots. So that we could 
use to do the same tricks as with methods: required slots, provided slots, 
defrosted slots, ...

I am lost. I understand that a trait have a class have a different scope of 
slots. But you cannot define C.x and T.x? Why?

Cheers,
Alexandre
T.x and C.x will be different slots. That's all. Go ahead and try it out 
;) Install some uniquely named accessor methods on the trait and class 
that use the same instance variable.


cheers



Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Alexandre Bergel
 Yes I see, I did forget to implement all the tools to make it work. You 
 know... I started the stateful traits implementation on Friday... I'm glad 
 that I'm as far as I am ;) However, in the new image I can close it. 
 Exceptions are just very slow for some reason.

This is cool that you're working on this topic.

 There are not many comments around, and not enough tests. After I finish my 
 paperwriting I'll go over it and document everything! It's a sneak preview 
 ... did I mention that? ;)

Yes, papers are important. Papers are often more used than implementations.

Cheers,
Alexandre


 
 For the slots, yes there are subclasses of the standard Slot class; and they 
 can provide non-standard access.
 
 You might notice that changing a class' layout is a lot faster thanks to 
 bytecode level method updates :) Or not, hence I mention it again. That's all 
 part of this particular image.
 
 cheers,
 Toon
 
 On 04/03/2011 02:19 PM, Alexandre Bergel wrote:
 I tried the image. I hadn't seen such a look for years :-)
 
 StatefulTrait named: #TStatefulTest
  layout: PointerLayout
  slots: {
  #tfirst =  Slot.
  #tsecond =  Slot.
  }
  uses: {}
  category: #'Slot-Traits-Test'
 
 I checked what layout: is about. StatefulTrait is a dry in terms of comments 
 :-)
 Why do you have =  Slot ? What can tfirst be else, if not a slot? Can you 
 specialize the slots to use a particular layout?
 
 I played a bit with your image. I cannot access tfirst in MyFirstTest. Your 
 implementation is conform to the policy you defined above.
 
 Your image is a bit unstable. I tried to press the tab key for 
 autocompletion, and got some debuggers that I couldn't close. I misspelled 
 aMethod with aMethdo, and got plenty of debuggers related to QQParser
 
 Cheers,
 Alexandre
 
 On 3 Apr 2011, at 05:34, Toon Verwaest wrote:
 
 Oh yes.. I am :)
 
 http://pinocchio.unibe.ch/~tverwaes/slots.tar.gz gives you an image with an 
 example of a stateful trait open. The state is always private to the class 
 / trait at the moment and it already seems to work pretty well. I modified 
 the NewInspector slightly to show you the proper data (although this needs 
 to be cleaned up, and state should be sorted per trait), and the OB to 
 compile and syntax highlight in the right context.
 
 I didn't test more complex examples yet than what's open, but it's designed 
 generically enough that I'm confident it does ... euhm ... ;)
 
 cheers,
 Toon
 
 On 04/03/2011 10:44 AM, Stéphane Ducasse wrote:
 On Apr 2, 2011, at 9:10 PM, Toon Verwaest wrote:
 
 Hi all,
 
 as you know I'm working on stateful traits using my new classbuilder
 no
 Are you?
 
 
 etc... Now I noticed that methods are highlighted always inside of the 
 context of the class that's active in the class browser. How can I change 
 this? There is already a useful method around to figure out which object 
 it belongs to:
 
 SomeClass traitOrClassOfSelector: #aMethod
 
 This actually will tell me which trait it comes from. So now I could 
 apply syntax coloring in the context of the trait rather than the class. 
 Since in my implementation state is all private to the trait / class, 
 they should be able to access their own state but not see the state of 
 the other class. This obviously also means that coloring should happen in 
 the correct scope, rather than always in the scope of the class.
 
 At the moment the coloring doesn't really make sense ... but then it 
 didn't really matter that much until now. Although if you try to access 
 state in a method coming from a trait, while coding in your IDE you'll 
 probably have the impression you can access your local instvars. I don't 
 really know what the semantics are there... but it seems a bit broken :)
 
 cheers,
 Toon
 
 
 
 

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








Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Toon Verwaest

On 04/03/2011 02:31 PM, Alexandre Bergel wrote:

Can you merge state? What happens with C.x uses T.x ? Methods of T will use T.x 
and methods of C will use C.x?


At the moment you can't, but in our slot library we have alias slots. So that we could 
use to do the same tricks as with methods: required slots, provided slots, 
defrosted slots, ...

I am lost. I understand that a trait have a class have a different scope of 
slots. But you cannot define C.x and T.x? Why?

Cheers,
Alexandre
Doh, I see. There's a stupid test that raises a conflict cause it finds 
slots that are conflicting. While actually they are not conflicting. Let 
me fix that ;)


cheers,
Toon



Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Alexandre Bergel
 Indeed. And this is not different from changing a layout of a class having as 
 impact that you have to update the methods.
 The default traits implementation already recompiles all methods anyway 
 whenever it installs the trait. What I do is, I just let the trait compile 
 itself on the subpart of the class that originally defined the trait.

allMethods from where?

 Since this subpart is a copy of the original trait (just like the default 
 traits does), it also has a COPY of the original layout. In this copy, the 
 indices of the slots are updated when they are mixed with the class that is 
 going to use the trait. So it's being compiled in the scope of the installed 
 version of the trait-layout. So that easily works.

Yes, no big challenge to make it work. I agree.
Put a ref to copydown, from strongtalk.

Cheers,
Alexandre

 
 cheers
 On 3 Apr 2011, at 06:23, Toon Verwaest wrote:
 
 How are you dealing with the fact that the application of trait with state 
 may change the layout of the class user and that you should recompile
 all the class method to deal with that. And if you have two traits having 
 state you should do the same but for the traits themselves.
 So this means that the method in the traits cannot be reused (ok now we do 
 not reuse them anymore sniff it was a nice model - reuse without cost of 
 duplication).
 
 How your layout object helps you for that?
 This is why I want first class slot :)
 
 Stef
 I don't think I fully understand what you are saying...
 
 The model is like this at the moment:
 
 Every class has a layout attached to it. Layouts that have slots have 
 LayoutScopes. For example, if you have
 
 Class A super: Object slots: #(a b c)
 Class B super: A slots: #(d e)
 
 Then you get
 
 Class A-  PointerLayout -  LayoutClassScope #(a b c) -  
 LayoutClassScope #() -  LayoutEmptyScope
 Class B-  PointerLayout -  LayoutClassScope #(d e) -  LayoutClassScope 
 #(a b c) -  LayoutClassScope #() -  LayoutEmptyScope
 
 where LayoutClassScope #(a b c) is shared between the scope of B and the 
 layout of A. The empty LayoutClassScope comes from Object and is shared as 
 well.
 
 Now if you get a stateful trait, a stateful trait C with slots #(f) looks 
 like this:
 
 StatefulTrait C-  PointerLayout -  LayoutTraitScope #(f) -  
 LayoutEmptyScope
 
 If you were to install the trait C on B, it would become:
 
 Class B-  PointerLayout -  LayoutClassScope #(d e) -  LayoutForkScope 
 -  LayoutClassScope #(a b c) -  LayoutClassScope #() -  LayoutEmptyScope
 
 where the LayoutForkScope would have sidescopes:
 LayoutForkScope sideScopes: { LayoutTraitScope #(f) -  LayoutEmptyScope }
 
 Then the classbuilder will build classes by always following the public 
 path. Sidescopes aren't public. When you compile methods on the trait, its 
 scopes are public; but when they are installed, they aren't public since 
 they are sidescopes.
 
 However, every method is compiled on the trait or class that provided the 
 selector, so when you install the trait-related method, it will see the 
 state related to the trait. And when the trait is installed, the sidescopes 
 are actually copies of the original traitscope, so the actual fieldindices 
 are updated in the LayoutTraitScope when it's installed.
 
 Then how methods get updated based on state changes is at the moment 
 completely unrelated to the trait implementation, since methods are already 
 updated in my class builder based on a MethodModificationModel that knows 
 how the fields have changed. This will use the decompiler/bytecode 
 modification/recompiler to update the methods in place.
 
 The only thing that I forgot to do until now is to actually modify all the 
 classes that use a trait, every time the state of a trait changes... But 
 that's straightforward. We just have to ask for the users of the stateful 
 trait and reapply their class modification. That's all nicely modeled 
 already.
 
 As for overlapping state from multiple stateful traits there is no 
 overlapping state since all state is private to the trait! You can use 2 
 traits with same slot names. This is no problem at all since the state is 
 only seen by that trait. And their methods are only compiled on that trait, 
 so the methods will always know exactly which of the slots you are 
 referring to.
 
 I hope this helps somehow :) Otherwise ... wait for the paper ;)
 
 cheers,
 Toon
 
 
 

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








Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Marcus Denker

On Apr 3, 2011, at 1:29 PM, Alexandre Bergel wrote:

 I guess that what Stef meant is the following:
 One of the problems when sharing code among mixin and stateful-trait 
 application is that the physical layout of instances varies between mixin 
 applications. (Section 6.5 of 

Yes, and the physical layout is now modeled as objects. (See Hierarchy of 
AbstractLayout). 

 
 We have T.y and C.x
 T has a method #getY, for which its bytecode returns the first slot (i.e., 
 y). If C uses T, the #getY needs to be adapted to return the second slot 
 right?
 

Yes.

Marcus


--
Marcus Denker  -- http://www.marcusdenker.de
INRIA Lille -- Nord Europe. Team RMoD.




Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Toon Verwaest

On 04/03/2011 02:37 PM, Alexandre Bergel wrote:

Indeed. And this is not different from changing a layout of a class having as 
impact that you have to update the methods.
The default traits implementation already recompiles all methods anyway 
whenever it installs the trait. What I do is, I just let the trait compile 
itself on the subpart of the class that originally defined the trait.

allMethods from where?
The methods coming from the trait are recompiled on the class when they 
are installed. Actually this should just do bytecode rewriting... but I 
don't have time to completely rewrite the traits just yet. I'll do that 
in May I guess ;)

Put a ref to copydown, from strongtalk.

Will do ;)

Now I fixed the bug in MC, the PlayOut project. Now it works; you can 
define an instance variable from a trait also on the class and they will 
not overlap.


cheers,
Toon



Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Toon Verwaest

On 04/03/2011 02:29 PM, Alexandre Bergel wrote:

I guess that what Stef meant is the following:
One of the problems when sharing code among mixin and stateful-trait 
application is that the physical layout of instances varies between mixin 
applications. (Section 6.5 of 
http://bergel.eu/download/papers/Berg07e-StatefulTraits.pdf)
So as your paper states ... methods may have to be copied down if the 
layout is different. In the case of traits you always flatten out 
methods; and the default traits implementation for Pharo ALWAYS 
recompiles the methods when copying them. I just make sure they get 
recompiled in the installed trait's scope.


Of course in our case there is no such thing as copying down, since 
traits are flattened, and not part of the hierarchy, such as is the case 
for mixins. So no difficult transformations are required, recompiling is 
good enough.


It would be faster to just update the bytecode indices by decompiling 
and recompiling; but as said before ... that's just work I can't really 
afford at this very moment.


cheers,
Toon



Re: [Pharo-project] Issue 3911 in pharo: Change updater to allow updating a release image

2011-04-03 Thread pharo

Updates:
Status: Closed

Comment #5 on issue 3911 by marcus.d...@gmail.com: Change updater to allow  
updating a release image

http://code.google.com/p/pharo/issues/detail?id=3911

in 12346




Re: [Pharo-project] Issue 3949 in pharo: Coverage for Cog

2011-04-03 Thread pharo

Updates:
Labels: -Milestone-1.1.2 Milestone-1.2.2 Milestone-1.3

Comment #1 on issue 3949 by marcus.d...@gmail.com: Coverage for Cog
http://code.google.com/p/pharo/issues/detail?id=3949

in 1.2.2a

TODO: 1.3




Re: [Pharo-project] Issue 3912 in pharo: Circular dependency with GLMOrangeUITheme

2011-04-03 Thread pharo

Updates:
Labels: -Milestone-1.2.2

Comment #2 on issue 3912 by marcus.d...@gmail.com: Circular dependency with  
GLMOrangeUITheme

http://code.google.com/p/pharo/issues/detail?id=3912

This is the same in 1.3

I propose, as this is a purely cosmetic problem, to postpone this to 1.3  
and keep 1.2 as it is.





Re: [Pharo-project] Issue 3754 in pharo: Omnibrowser's an extra horizontal scrollbar

2011-04-03 Thread pharo


Comment #10 on issue 3754 by thereluc...@fastmail.fm: Omnibrowser's an  
extra horizontal scrollbar

http://code.google.com/p/pharo/issues/detail?id=3754

I just tried it with:
 'Croquet Closure Cog VM [CoInterpreter VMMaker-oscog.52] 21.0‘ and with
 'Squeak4.1 of 17 April 2010 [latest update: #9957] Squeak VM 4.2.5b1‘
with a fresh Pharo1.2.2a Latest update: #12345 image on MacOS 10.6.6

- Start the image.
- Open a Browser via the World Menu.
- A browser with an ‚extra scrollbar‘ appears.
- See the screenshot at comment 2.
- the extra scrollbar disappears when it is single clicked.

it happens every single time.



Re: [Pharo-project] who is using softSqueak and standard Squeak

2011-04-03 Thread Patrick Barroca
On Sat, Apr 2, 2011 at 10:38 AM, laurent laffont
laurent.laff...@gmail.comwrote:


 On Sat, Apr 2, 2011 at 10:14 AM, Marcus Denker marcus.den...@inria.frwrote:


 On Apr 2, 2011, at 9:55 AM, laurent laffont wrote:

 Patrick,

 I think we should have a ConfigurationOfPharoThemes with all the themes
 you have made + current ones. I can help (may be a good subject for a our
 weekly coding-dojo)

 PharoCore should have only one theme I think.


 And in turn this means that pharo full has *all* of them? Nonono... it has
 already *far* too much stuff nobody cares about.


 I'm not saying that Pharo should have all of them.   We can have:
 - ConfigurationOfPharoThemes project latestVersion load:#default   =  load
 the most used themes (ex: Glamour + Watery2) - for Pharo Full
 - ConfigurationOfPharoThemes project latestVersion load:#softSqueak  for
 the few (?) people who want to use softSqueak for example.

 So ConfigurationOfPharoThemes will be an easy way to reference all working
 themes

 Laurent.



 Marcus


  --
 Marcus Denker  -- http://www.marcusdenker.de
 INRIA Lille -- Nord Europe. Team RMoD.



Marcus, I totally agree with you, my target is to find a mean to have a
default theme in Pharo core and other easy to load themes in Pharo full.

A theme in itself should be self contained and should only depend on
UITheme/UIThemeIcons.
Thus a simple repository called PharoTheme could suffice for officially
supported ones.

What is loaded by default in Pharo full is up to the Pharo team, IMHO there
is currently to many themes by default.

-- 
Patrick Barroca


Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Stéphane Ducasse
Thanks I should digest it.
Now what I did not like in our stateful model was that 
- in introduced too many operators
- I'm not sure I like trait state to be private because it changes a 
lot the smalltalk model
- the initialization is not modular so you end up write a lot of 
pattern initializeTrait and calling it.

How you model deal with initialization beside using initform a la clos (because 
you have first class slots ... that I want in pharo -- see the subliminal 
message).
Stef

On Apr 3, 2011, at 12:23 PM, Toon Verwaest wrote:

 
 How are you dealing with the fact that the application of trait with state 
 may change the layout of the class user and that you should recompile
 all the class method to deal with that. And if you have two traits having 
 state you should do the same but for the traits themselves.
 So this means that the method in the traits cannot be reused (ok now we do 
 not reuse them anymore sniff it was a nice model - reuse without cost of 
 duplication).
 
 How your layout object helps you for that?
 This is why I want first class slot :)
 
 Stef
 I don't think I fully understand what you are saying...
 
 The model is like this at the moment:
 
 Every class has a layout attached to it. Layouts that have slots have 
 LayoutScopes. For example, if you have
 
 Class A super: Object slots: #(a b c)
 Class B super: A slots: #(d e)
 
 Then you get
 
 Class A - PointerLayout - LayoutClassScope #(a b c) - LayoutClassScope 
 #() - LayoutEmptyScope
 Class B - PointerLayout - LayoutClassScope #(d e) - LayoutClassScope #(a 
 b c) - LayoutClassScope #() - LayoutEmptyScope
 
 where LayoutClassScope #(a b c) is shared between the scope of B and the 
 layout of A. The empty LayoutClassScope comes from Object and is shared as 
 well.
 
 Now if you get a stateful trait, a stateful trait C with slots #(f) looks 
 like this:
 
 StatefulTrait C - PointerLayout - LayoutTraitScope #(f) - LayoutEmptyScope
 
 If you were to install the trait C on B, it would become:
 
 Class B - PointerLayout - LayoutClassScope #(d e) - LayoutForkScope - 
 LayoutClassScope #(a b c) - LayoutClassScope #() - LayoutEmptyScope
 
 where the LayoutForkScope would have sidescopes:
 LayoutForkScope sideScopes: { LayoutTraitScope #(f) - LayoutEmptyScope }
 
 Then the classbuilder will build classes by always following the public path. 
 Sidescopes aren't public. When you compile methods on the trait, its scopes 
 are public; but when they are installed, they aren't public since they are 
 sidescopes.
 
 However, every method is compiled on the trait or class that provided the 
 selector, so when you install the trait-related method, it will see the state 
 related to the trait. And when the trait is installed, the sidescopes are 
 actually copies of the original traitscope, so the actual fieldindices are 
 updated in the LayoutTraitScope when it's installed.
 
 Then how methods get updated based on state changes is at the moment 
 completely unrelated to the trait implementation, since methods are already 
 updated in my class builder based on a MethodModificationModel that knows how 
 the fields have changed. This will use the decompiler/bytecode 
 modification/recompiler to update the methods in place.
 
 The only thing that I forgot to do until now is to actually modify all the 
 classes that use a trait, every time the state of a trait changes... But 
 that's straightforward. We just have to ask for the users of the stateful 
 trait and reapply their class modification. That's all nicely modeled already.
 
 As for overlapping state from multiple stateful traits there is no 
 overlapping state since all state is private to the trait! You can use 2 
 traits with same slot names. This is no problem at all since the state is 
 only seen by that trait. And their methods are only compiled on that trait, 
 so the methods will always know exactly which of the slots you are referring 
 to.
 
 I hope this helps somehow :) Otherwise ... wait for the paper ;)
 
 cheers,
 Toon
 




Re: [Pharo-project] Issue 3754 in pharo: Omnibrowser's an extra horizontal scrollbar

2011-04-03 Thread pharo

Updates:
Status: Started

Comment #11 on issue 3754 by marcus.d...@gmail.com: Omnibrowser's an extra  
horizontal scrollbar

http://code.google.com/p/pharo/issues/detail?id=3754

(No comment was entered for this change.)




[Pharo-project] [ANN] For testing: 1.2.1 One-Click

2011-04-03 Thread Marcus Denker

As with 1.2 in general, I gave up on auto build... as we will move to the VMs 
we build ourselfes in 1.3,
the idea is to keep 1.2 as simple as possible.

- I added the windows vm that  Torsten send me
- I did not update the mac or unix vm from 1.1.1... 


https://gforge.inria.fr/frs/download.php/28437/Pharo-1.2.1-OneClick.zip



--
Marcus Denker  -- http://www.marcusdenker.de
INRIA Lille -- Nord Europe. Team RMoD.




Re: [Pharo-project] Issue 3645 in pharo: Update Hudson One-Click build files for 1.2

2011-04-03 Thread pharo

Updates:
Status: Closed

Comment #5 on issue 3645 by marcus.d...@gmail.com: Update Hudson One-Click  
build files for 1.2

http://code.google.com/p/pharo/issues/detail?id=3645

I did a 1.2 oneclick.

We will use our own builds for 1.3 soon, for 1.2 we don't bother to  
configure hudson as everything would

change for 1.3 again.




Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Toon Verwaest

On 04/03/2011 04:58 PM, Stéphane Ducasse wrote:

Thanks I should digest it.
Now what I did not like in our stateful model was that
- in introduced too many operators
- I'm not sure I like trait state to be private because it changes a 
lot the smalltalk model
I'm not sure if it changes smalltalk too much! I'd rather say that it 
stays very much the same. When you weave in a stateful trait it's like 
weaving in a stateless trait, only behavior is added (from the point of 
view of the class). As for the extra operators, I'm not sure how weighty 
the aliasing of state from traits will be... I hope we can limit it.

- the initialization is not modular so you end up write a lot of 
pattern initializeTrait and calling it.

How you model deal with initialization beside using initform a la clos (because 
you have first class slots ... that I want in pharo -- see the subliminal 
message).
Stef
The idea is that slots define how they should be initialized. This could 
be just a value like in CLOS, but is preferably something a lot more 
elaborate.


Another very cool thing that we can do now (which would require 3 lines 
of change in my system though), is that the slot can also be responsible 
for instance migration. There are four cases:

1- the instance variable didn't exist and now it does
2- the instance variable existed but disappeared
3- the metaobject changed (new semantics)
4- the metaobject stayed the same

Basically the only case that is handled by standard Pharo is case 1; 
and what you do there is putting nil in the field. In our model the slot 
could do something more interesting when it's migrating the instances. 
And we could tackle the other cases too. I think it's starting to get 
ideal to implement an active context on top ;-)


cheers,
Toon


On Apr 3, 2011, at 12:23 PM, Toon Verwaest wrote:


How are you dealing with the fact that the application of trait with state may 
change the layout of the class user and that you should recompile
all the class method to deal with that. And if you have two traits having state 
you should do the same but for the traits themselves.
So this means that the method in the traits cannot be reused (ok now we do not 
reuse them anymore sniff it was a nice model - reuse without cost of 
duplication).

How your layout object helps you for that?
This is why I want first class slot :)

Stef

I don't think I fully understand what you are saying...

The model is like this at the moment:

Every class has a layout attached to it. Layouts that have slots have 
LayoutScopes. For example, if you have

Class A super: Object slots: #(a b c)
Class B super: A slots: #(d e)

Then you get

Class A-  PointerLayout -  LayoutClassScope #(a b c) -  LayoutClassScope #() 
-  LayoutEmptyScope
Class B-  PointerLayout -  LayoutClassScope #(d e) -  LayoutClassScope #(a b c) 
-  LayoutClassScope #() -  LayoutEmptyScope

where LayoutClassScope #(a b c) is shared between the scope of B and the layout 
of A. The empty LayoutClassScope comes from Object and is shared as well.

Now if you get a stateful trait, a stateful trait C with slots #(f) looks like 
this:

StatefulTrait C-  PointerLayout -  LayoutTraitScope #(f) -  LayoutEmptyScope

If you were to install the trait C on B, it would become:

Class B-  PointerLayout -  LayoutClassScope #(d e) -  LayoutForkScope -  
LayoutClassScope #(a b c) -  LayoutClassScope #() -  LayoutEmptyScope

where the LayoutForkScope would have sidescopes:
LayoutForkScope sideScopes: { LayoutTraitScope #(f) -  LayoutEmptyScope }

Then the classbuilder will build classes by always following the public path. 
Sidescopes aren't public. When you compile methods on the trait, its scopes are 
public; but when they are installed, they aren't public since they are 
sidescopes.

However, every method is compiled on the trait or class that provided the 
selector, so when you install the trait-related method, it will see the state 
related to the trait. And when the trait is installed, the sidescopes are 
actually copies of the original traitscope, so the actual fieldindices are 
updated in the LayoutTraitScope when it's installed.

Then how methods get updated based on state changes is at the moment completely 
unrelated to the trait implementation, since methods are already updated in my 
class builder based on a MethodModificationModel that knows how the fields have 
changed. This will use the decompiler/bytecode modification/recompiler to 
update the methods in place.

The only thing that I forgot to do until now is to actually modify all the 
classes that use a trait, every time the state of a trait changes... But that's 
straightforward. We just have to ask for the users of the stateful trait and 
reapply their class modification. That's all nicely modeled already.

As for overlapping state from multiple stateful traits there is no 
overlapping state since all state is private to the trait! You can use 2 traits 
with same slot names. This is no 

Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Alexandre Bergel
 Thanks I should digest it.
 Now what I did not like in our stateful model was that
  - in introduced too many operators
  - I'm not sure I like trait state to be private because it changes a 
 lot the smalltalk model

At least, Toon will avoid all the problems we had with the renaming and 
unwanted name clashed. Trait's accessors and mutators should then do their job.

Alexandre



 I'm not sure if it changes smalltalk too much! I'd rather say that it stays 
 very much the same. When you weave in a stateful trait it's like weaving in a 
 stateless trait, only behavior is added (from the point of view of the 
 class). As for the extra operators, I'm not sure how weighty the aliasing of 
 state from traits will be... I hope we can limit it.
  - the initialization is not modular so you end up write a lot of 
 pattern initializeTrait and calling it.
 
 How you model deal with initialization beside using initform a la clos 
 (because you have first class slots ... that I want in pharo -- see the 
 subliminal message).
 Stef
 The idea is that slots define how they should be initialized. This could be 
 just a value like in CLOS, but is preferably something a lot more elaborate.
 
 Another very cool thing that we can do now (which would require 3 lines of 
 change in my system though), is that the slot can also be responsible for 
 instance migration. There are four cases:
 1- the instance variable didn't exist and now it does
 2- the instance variable existed but disappeared
 3- the metaobject changed (new semantics)
 4- the metaobject stayed the same
 
 Basically the only case that is handled by standard Pharo is case 1; and 
 what you do there is putting nil in the field. In our model the slot could do 
 something more interesting when it's migrating the instances. And we could 
 tackle the other cases too. I think it's starting to get ideal to implement 
 an active context on top ;-)
 
 cheers,
 Toon
 
 On Apr 3, 2011, at 12:23 PM, Toon Verwaest wrote:
 
 How are you dealing with the fact that the application of trait with state 
 may change the layout of the class user and that you should recompile
 all the class method to deal with that. And if you have two traits having 
 state you should do the same but for the traits themselves.
 So this means that the method in the traits cannot be reused (ok now we do 
 not reuse them anymore sniff it was a nice model - reuse without cost of 
 duplication).
 
 How your layout object helps you for that?
 This is why I want first class slot :)
 
 Stef
 I don't think I fully understand what you are saying...
 
 The model is like this at the moment:
 
 Every class has a layout attached to it. Layouts that have slots have 
 LayoutScopes. For example, if you have
 
 Class A super: Object slots: #(a b c)
 Class B super: A slots: #(d e)
 
 Then you get
 
 Class A-  PointerLayout -  LayoutClassScope #(a b c) -  
 LayoutClassScope #() -  LayoutEmptyScope
 Class B-  PointerLayout -  LayoutClassScope #(d e) -  LayoutClassScope 
 #(a b c) -  LayoutClassScope #() -  LayoutEmptyScope
 
 where LayoutClassScope #(a b c) is shared between the scope of B and the 
 layout of A. The empty LayoutClassScope comes from Object and is shared as 
 well.
 
 Now if you get a stateful trait, a stateful trait C with slots #(f) looks 
 like this:
 
 StatefulTrait C-  PointerLayout -  LayoutTraitScope #(f) -  
 LayoutEmptyScope
 
 If you were to install the trait C on B, it would become:
 
 Class B-  PointerLayout -  LayoutClassScope #(d e) -  LayoutForkScope 
 -  LayoutClassScope #(a b c) -  LayoutClassScope #() -  LayoutEmptyScope
 
 where the LayoutForkScope would have sidescopes:
 LayoutForkScope sideScopes: { LayoutTraitScope #(f) -  LayoutEmptyScope }
 
 Then the classbuilder will build classes by always following the public 
 path. Sidescopes aren't public. When you compile methods on the trait, its 
 scopes are public; but when they are installed, they aren't public since 
 they are sidescopes.
 
 However, every method is compiled on the trait or class that provided the 
 selector, so when you install the trait-related method, it will see the 
 state related to the trait. And when the trait is installed, the sidescopes 
 are actually copies of the original traitscope, so the actual fieldindices 
 are updated in the LayoutTraitScope when it's installed.
 
 Then how methods get updated based on state changes is at the moment 
 completely unrelated to the trait implementation, since methods are already 
 updated in my class builder based on a MethodModificationModel that knows 
 how the fields have changed. This will use the decompiler/bytecode 
 modification/recompiler to update the methods in place.
 
 The only thing that I forgot to do until now is to actually modify all the 
 classes that use a trait, every time the state of a trait changes... But 
 that's straightforward. We just have to ask for the users of the stateful 
 trait and reapply their class modification. That's all 

Re: [Pharo-project] syntax highlighting for (stateful) traits (non-local methods)

2011-04-03 Thread Toon Verwaest

On 04/03/2011 06:46 PM, Alexandre Bergel wrote:

Thanks I should digest it.
Now what I did not like in our stateful model was that
- in introduced too many operators
- I'm not sure I like trait state to be private because it changes a 
lot the smalltalk model

At least, Toon will avoid all the problems we had with the renaming and 
unwanted name clashed. Trait's accessors and mutators should then do their job.

Alexandre
And since we would apply slot aliasing, we only need to provide the 
alias to the users. It's an extra way of weaving traits, not just 
getter+setter anymore. This means that they don't become public 
accessors! The slots are used for private access.


Toon



Re: [Pharo-project] [ANN] For testing: 1.2.1 One-Click

2011-04-03 Thread Schwab,Wilhelm K
Out of the box, system browsers are opening with a scroll bar between the lists 
and code pane.  Click on it, and the bar disappears.

Curious which vm was in use, I tried:

SmalltalkImage current vmVersion  'Squeak3.10.2 of ''5 June 2008'' [latest 
update: #7179]'

Looks weird??  Ask the vm itself.  In a terminal (I think in the correct place):

./squeakvm -version
4.0.3-2202 #1 XShm Tue Apr 13 11:56:47 PDT 2010 gcc 4.3.2
Linux vps2.piumarta.com 2.6.18-028stab053.10-ent #1 SMP Thu Feb 28 20:34:08 MSK 
2008 i686 GNU/Linux
plugin path: /somewhere/Contents/Linux/ [default: 
/somewhere/Pharo-1.2.1/Contents/Linux/]

Ubuntu Lucid.

oCompletion is not going away easily.  No denigration of the hard work that 
went into it, I want to simply turn it off, read what it otherwise can't help 
covering, and type myself.

Bill




From: pharo-project-boun...@lists.gforge.inria.fr 
[pharo-project-boun...@lists.gforge.inria.fr] On Behalf Of Marcus Denker 
[marcus.den...@inria.fr]
Sent: Sunday, April 03, 2011 11:31 AM
To: Pharo Development
Subject: [Pharo-project] [ANN] For testing: 1.2.1 One-Click

As with 1.2 in general, I gave up on auto build... as we will move to the VMs 
we build ourselfes in 1.3,
the idea is to keep 1.2 as simple as possible.

- I added the windows vm that  Torsten send me
- I did not update the mac or unix vm from 1.1.1...


https://gforge.inria.fr/frs/download.php/28437/Pharo-1.2.1-OneClick.zip



--
Marcus Denker  -- http://www.marcusdenker.de
INRIA Lille -- Nord Europe. Team RMoD.





Re: [Pharo-project] [ANN] For testing: 1.2.1 One-Click

2011-04-03 Thread Toon Verwaest



The thing is that all things, even the smallest tiniest triviality, happens if 
someone *does* it. Nothing happens by itself.
I'm probably very naive here; and also a bit lazy and so on... So: could 
you point me at a short text that describes exactly what I have to do to 
get any line of code into a new Pharo?


Like I figured out that these syntax coloring and compiling of traits 
happens in a strange scope... how can I push this immediately back? I 
just got used to always including these changes in my own repos since I 
didn't know how to get access to such changes immediately; nor how to 
properly publish them.


My own main goal isn't Pharo, although I really like Pharo and would 
like to contribute whatever I do back to Pharo. So knowing about the 
streamlined process will help me push the small changes I do back. And 
yes, sorry, I'm lazy ;-)


cheers,
Toon



Re: [Pharo-project] [ANN] For testing: 1.2.1 One-Click

2011-04-03 Thread Mariano Martinez Peck
On Sun, Apr 3, 2011 at 6:31 PM, Toon Verwaest toon.verwa...@gmail.comwrote:


  The thing is that all things, even the smallest tiniest triviality,
 happens if someone *does* it. Nothing happens by itself.

 I'm probably very naive here; and also a bit lazy and so on... So: could
 you point me at a short text that describes exactly what I have to do to get
 any line of code into a new Pharo?


It is explained in the Pharo FAQ
http://www.pharo-project.org/documentation/faq

How can I contribute to Pharo?

Check out the wiki page
HowToContributehttp://code.google.com/p/pharo/wiki/HowToContributefor
a detailed description of how to submit code. There is also a
screencasthttp://pharocasts.blogspot.com/2010/03/how-to-contribute-to-pharo.htmldemonstrating
the process.




 Like I figured out that these syntax coloring and compiling of traits
 happens in a strange scope... how can I push this immediately back? I just
 got used to always including these changes in my own repos since I didn't
 know how to get access to such changes immediately; nor how to properly
 publish them.

 My own main goal isn't Pharo, although I really like Pharo and would like
 to contribute whatever I do back to Pharo. So knowing about the streamlined
 process will help me push the small changes I do back. And yes, sorry, I'm
 lazy ;-)

 cheers,
 Toon




Re: [Pharo-project] [ANN] For testing: 1.2.1 One-Click

2011-04-03 Thread Marcus Denker

On Apr 3, 2011, at 5:31 PM, Marcus Denker wrote:

 
 As with 1.2 in general, I gave up on auto build... as we will move to the VMs 
 we build ourselfes in 1.3,
 the idea is to keep 1.2 as simple as possible.
 
   - I added the windows vm that  Torsten send me
   - I did not update the mac or unix vm from 1.1.1... 
 
 
   https://gforge.inria.fr/frs/download.php/28437/Pharo-1.2.1-OneClick.zip
 


And a Cog version:


https://gforge.inria.fr/frs/download.php/28439/Pharo-1.2.1-CogOneClick.zip

This is the 1.1.1 OneClick where I replaced the image and moved in all the files
of Eliot's latest Cog release (sometimes renamed).
Tested just for MacOS.

Marcus


--
Marcus Denker  -- http://www.marcusdenker.de
INRIA Lille -- Nord Europe. Team RMoD.




[Pharo-project] Pharo 1.3 process

2011-04-03 Thread laurent laffont
Hi,

as I'm a little lost on Pharo 1.2 (1.2.1 full was announced but I haven't
seen 1.2.0, no big party, no 1 million download contest, BBC announcement...
:) I wonder how we can improve the process for 1.3.

I'm thinking about:
- not starting Pharo 1.4 too soon as I feel it will steal energy from Pharo
1.3.
- freezing early to have shorter release and have less stuff to fix with
maximum energy (it seems energy go down quickly in the fixing period)
- a failing test should be highest priority: it's easier to fix a broken
feature/test as soon as it appears
- one guy should drive the release (I feel that Mariano did this for Pharo
1.1 and we know who we should talk to).

Any idea ?

Laurent.


Re: [Pharo-project] Pharo 1.3 process

2011-04-03 Thread Marcus Denker

On Apr 3, 2011, at 7:13 PM, laurent laffont wrote:

 Hi,
 
 as I'm a little lost on Pharo 1.2 (1.2.1 full was announced but I haven't 
 seen 1.2.0, no big party, no 1 million download contest, BBC announcement... 
 :) I wonder how we can improve the process for 1.3. 
 
Yes, that is why I did not want to decouple the release of Core from Full. 
Because is drags out the release so far that we can not announce it

But we could not, as people (inkluding those maintaining packages of Full) only 
look at released core images...
And so I did a Core 1.2. And people looked at it. Finally. So I did a 1.2.1, 
and only after releasing that, people looked at it, so I even started
a 1.2.2 today.. and now I am dead.

 I'm thinking about:
 - not starting Pharo 1.4 too soon as I feel it will steal energy from Pharo 
 1.3. 
 - freezing early to have shorter release and have less stuff to fix with 
 maximum energy (it seems energy go down quickly in the fixing period)
 - a failing test should be highest priority: it's easier to fix a broken 
 feature/test as soon as it appears
 - one guy should drive the release (I feel that Mariano did this for Pharo 
 1.1 and we know who we should talk to). 
 

- Get rid of the Core/Full image destinction. This does not work. And I will 
not do a release with having two images again... it never worked, and it will 
never work.

Marcus


--
Marcus Denker  -- http://www.marcusdenker.de
INRIA Lille -- Nord Europe. Team RMoD.



[Pharo-project] Let's get rid of Core vs. Full

2011-04-03 Thread Marcus Denker
Hi,

So finally I have to admit that I am defeated: The way we do the Core vs. Full 
release does not work.

1) We don't develop the system using the tools that we tell people to use.
- bugs don't get fixed
- there is no pressure on improving the tools
- we can't use the advanced tools while developing the Core.

2) We integrate *far* too late. 
- merging in the tools of Dev a week before the big release 
*will* fail, as they are not tested.

3) As we use Core for Development of Core, it's not a Core. It contains all 
needed tools, just simplified versions.
- People even expect to be able to shrink it more, which in 
turn we do not test.

4) Refactoring are only applied to the Core, not to the whole code base. Look 
at the Sound or Morph Examples...
 getting them fixed for the release if they are not touched for a year is 
nearly impossible.

5) Fixing something in the Core is fast. We move *extremely* fast. Getting 
something fixed for Full can be very difficult.
 e.g. repositories need to be changed (for a temporary fork), build scripts 
edited.. it's so hard that it is done far too late.

6) We can not do a release and be done. Release drag over weeks, making 
announcments (and publicity) impossible.

The build server helps a little bitwith some of the problems, but not much... 
especially as the full build of unstable is mostly
not working.

So I vote for abandoning Core vs. Dev for 1.3.

Marcus



--
Marcus Denker  -- http://www.marcusdenker.de
INRIA Lille -- Nord Europe. Team RMoD.




Re: [Pharo-project] Pharo 1.3 process

2011-04-03 Thread laurent laffont
On Sun, Apr 3, 2011 at 7:18 PM, Marcus Denker marcus.den...@inria.frwrote:


 On Apr 3, 2011, at 7:13 PM, laurent laffont wrote:

 Hi,

 as I'm a little lost on Pharo 1.2 (1.2.1 full was announced but I haven't
 seen 1.2.0, no big party, no 1 million download contest, BBC announcement...
 :) I wonder how we can improve the process for 1.3.

 Yes, that is why I did not want to decouple the release of Core from Full.
 Because is drags out the release so far that we can not announce it

 But we could not, as people (inkluding those maintaining packages of Full)
 only look at released core images...
 And so I did a Core 1.2. And people looked at it. Finally. So I did a
 1.2.1, and only after releasing that, people looked at it, so I even started
 a 1.2.2 today.. and now I am dead.


Time for a big real good fresh beer ;)

I'm thinking about:
 - not starting Pharo 1.4 too soon as I feel it will steal energy from Pharo
 1.3.
 - freezing early to have shorter release and have less stuff to fix with
 maximum energy (it seems energy go down quickly in the fixing period)
 - a failing test should be highest priority: it's easier to fix a broken
 feature/test as soon as it appears
 - one guy should drive the release (I feel that Mariano did this for Pharo
 1.1 and we know who we should talk to).


 - Get rid of the Core/Full image destinction. This does not work. And I
 will not do a release with having two images again... it never worked, and
 it will never work.


Yes, 2 images seems hard to maintain  and hard to understand for newcomers.

May be we can have:
- Metacello configurations tested separately in Pharo-Clients in Hudson
(like PetitParser, Seaside, ...) - drop the ones that don't have tests
- drop actual Pharo, rename PharoCore = Pharo.
- GUI tool in Pharo to easy load Metacello configurations (some stuff must
be easy to load for newbies, especially help)

Laurent.

Marcus


  --
 Marcus Denker  -- http://www.marcusdenker.de
 INRIA Lille -- Nord Europe. Team RMoD.




Re: [Pharo-project] Let's get rid of Core vs. Full

2011-04-03 Thread Dale Henrichs
Rather than abandon core vs full, here's a thought on a slightly different 
approach...

Do development in the FULL version. That way the tools are used and bugs in the 
tools are fixed as the changes are made in the CORE...you are keeping the FULL 
alive, not adding new features, etc, since that kind of work is the 
responsibility of the maintainers ... 

Use the build server to run tests against the CORE and the set of CORE tools...

You'll be dragging along more code as you do new development on the CORE, but 
at least the work of keeping the FULL version in synch will be spread across 
the whole CORE development cycle rather than concentrated at the end ...

Just some ideas:)

Dale

On Apr 3, 2011, at 10:31 AM, Marcus Denker wrote:

 Hi,
 
 So finally I have to admit that I am defeated: The way we do the Core vs. 
 Full release does not work.
 
 1) We don't develop the system using the tools that we tell people to use.
   - bugs don't get fixed
   - there is no pressure on improving the tools
   - we can't use the advanced tools while developing the Core.
 
 2) We integrate *far* too late. 
   - merging in the tools of Dev a week before the big release 
 *will* fail, as they are not tested.
 
 3) As we use Core for Development of Core, it's not a Core. It contains all 
 needed tools, just simplified versions.
   - People even expect to be able to shrink it more, which in 
 turn we do not test.
 
 4) Refactoring are only applied to the Core, not to the whole code base. Look 
 at the Sound or Morph Examples...
 getting them fixed for the release if they are not touched for a year is 
 nearly impossible.
 
 5) Fixing something in the Core is fast. We move *extremely* fast. Getting 
 something fixed for Full can be very difficult.
 e.g. repositories need to be changed (for a temporary fork), build 
 scripts edited.. it's so hard that it is done far too late.
 
 6) We can not do a release and be done. Release drag over weeks, making 
 announcments (and publicity) impossible.
 
 The build server helps a little bitwith some of the problems, but not much... 
 especially as the full build of unstable is mostly
 not working.
 
 So I vote for abandoning Core vs. Dev for 1.3.
 
   Marcus
 
 
 
 --
 Marcus Denker  -- http://www.marcusdenker.de
 INRIA Lille -- Nord Europe. Team RMoD.
 
 




Re: [Pharo-project] Pharo 1.3 process

2011-04-03 Thread Stéphane Ducasse

On Apr 3, 2011, at 7:12 PM, laurent laffont wrote:

 Hi,
 
 as I'm a little lost on Pharo 1.2 (1.2.1 full was announced but I haven't 
 seen 1.2.0, no big party, no 1 million download contest, BBC announcement... 
 :) I wonder how we can improve the process for 1.3. 
 
 I'm thinking about:
 - not starting Pharo 1.4 too soon as I feel it will steal energy from Pharo 
 1.3. 

we will not start 1.4 before 1.3 is at least one month in beta.

 - freezing early to have shorter release and have less stuff to fix with 
 maximum energy (it seems energy go down quickly in the fixing period)

this is what we did. We got now 3 months of beta and result: nobody look at it

 - a failing test should be highest priority: it's easier to fix a broken 
 feature/test as soon as it appears

yes but if nobody look at them, does it make a difference?

 - one guy should drive the release (I feel that Mariano did this for Pharo 
 1.1 and we know who we should talk to). 

marcus did that and this is not the problem.
 
 Any idea ?

We should no have pharo-dev just pharo-core + RB + oCompletion + shout in the 
core. 
 
 Laurent.




Re: [Pharo-project] Pharo 1.3 process

2011-04-03 Thread Stéphane Ducasse
 
 
 as I'm a little lost on Pharo 1.2 (1.2.1 full was announced but I haven't 
 seen 1.2.0, no big party, no 1 million download contest, BBC announcement... 
 :) I wonder how we can improve the process for 1.3. 
 
 Yes, that is why I did not want to decouple the release of Core from Full. 
 Because is drags out the release so far that we can not announce it
 
 But we could not, as people (inkluding those maintaining packages of Full) 
 only look at released core images...
 And so I did a Core 1.2. And people looked at it. Finally. So I did a 1.2.1, 
 and only after releasing that, people looked at it,

This is not your fault.


 so I even started
 a 1.2.2 today.. and now I am dead.


Let 1.2.2 for in a couple of months. 


 I'm thinking about:
 - not starting Pharo 1.4 too soon as I feel it will steal energy from Pharo 
 1.3. 
 - freezing early to have shorter release and have less stuff to fix with 
 maximum energy (it seems energy go down quickly in the fixing period)
 - a failing test should be highest priority: it's easier to fix a broken 
 feature/test as soon as it appears
 - one guy should drive the release (I feel that Mariano did this for Pharo 
 1.1 and we know who we should talk to). 
 
 
 - Get rid of the Core/Full image destinction. This does not work. And I will 
 not do a release with having two images again... it never worked, and it will 
 never work.

Yes we are working on that.
The missing pieces of the puzzle are coming along.

Stef


Re: [Pharo-project] Pharo 1.3 process

2011-04-03 Thread Stéphane Ducasse
 
 - Get rid of the Core/Full image destinction. This does not work. And I will 
 not do a release with having two images again... it never worked, and it will 
 never work.

Yes but for that we need a good browser that we can maintain. 

 Yes, 2 images seems hard to maintain  and hard to understand for newcomers.
 
 May be we can have:
 - Metacello configurations tested separately in Pharo-Clients in Hudson (like 
 PetitParser, Seaside, ...) - drop the ones that don't have tests
 - drop actual Pharo, rename PharoCore = Pharo.
 - GUI tool in Pharo to easy load Metacello configurations (some stuff must be 
 easy to load for newbies, especially help

This is the idea. This is why I asked people (mariano in particular) to focus 
on helping metacello taking off the ground
and to focus on metacello distributions. Once this is up and running. we can 
have Pharo and hudson loads and certifies the distributions.

Stef


Re: [Pharo-project] Let's get rid of Core vs. Full

2011-04-03 Thread Stéphane Ducasse

On Apr 3, 2011, at 7:31 PM, Marcus Denker wrote:

 Hi,
 
 So finally I have to admit that I am defeated: The way we do the Core vs. 
 Full release does not work.
 
 1) We don't develop the system using the tools that we tell people to use.
   - bugs don't get fixed
   - there is no pressure on improving the tools
   - we can't use the advanced tools while developing the Core.

Yes

 2) We integrate *far* too late. 
   - merging in the tools of Dev a week before the big release 
 *will* fail, as they are not tested.

yes but this is not our fault

 3) As we use Core for Development of Core, it's not a Core. It contains all 
 needed tools, just simplified versions.
   - People even expect to be able to shrink it more, which in 
 turn we do not test.
 
 4) Refactoring are only applied to the Core, not to the whole code base. Look 
 at the Sound or Morph Examples...
 getting them fixed for the release if they are not touched for a year is 
 nearly impossible.
 
 5) Fixing something in the Core is fast. We move *extremely* fast. Getting 
 something fixed for Full can be very difficult.
 e.g. repositories need to be changed (for a temporary fork), build 
 scripts edited.. it's so hard that it is done far too late.


But marcus you should also read the metacello chapter. Did you read it?

 6) We can not do a release and be done. Release drag over weeks, making 
 announcments (and publicity) impossible.
 
 The build server helps a little bitwith some of the problems, but not much... 
 especially as the full build of unstable is mostly
 not working.
 
 So I vote for abandoning Core vs. Dev for 1.3.

Yes but we need good tool.

Stef


Re: [Pharo-project] Let's get rid of Core vs. Full

2011-04-03 Thread Hernán Morales Durand
I really agree with you Marcus. It sounds to me that core/dev is a
black and white approach.

I know there are no resources, but what do you think of starting with
a minimum image and the build over more sophisticated images?

-Kernel image
-Core image
-Image with really basic browsing/scm tools (OB, Script Manager,
Shout, etc) - or developer basic
-developer standard (the current dev)
-developer scientific
-developer web
...
etc.

that wouldn't result in more easier integrations?

Cheers,

2011/4/3 Marcus Denker marcus.den...@inria.fr:
 Hi,

 So finally I have to admit that I am defeated: The way we do the Core vs. 
 Full release does not work.

 1) We don't develop the system using the tools that we tell people to use.
                - bugs don't get fixed
                - there is no pressure on improving the tools
                - we can't use the advanced tools while developing the Core.

 2) We integrate *far* too late.
                - merging in the tools of Dev a week before the big release 
 *will* fail, as they are not tested.

 3) As we use Core for Development of Core, it's not a Core. It contains all 
 needed tools, just simplified versions.
                - People even expect to be able to shrink it more, which in 
 turn we do not test.

 4) Refactoring are only applied to the Core, not to the whole code base. Look 
 at the Sound or Morph Examples...
     getting them fixed for the release if they are not touched for a year is 
 nearly impossible.

 5) Fixing something in the Core is fast. We move *extremely* fast. Getting 
 something fixed for Full can be very difficult.
     e.g. repositories need to be changed (for a temporary fork), build 
 scripts edited.. it's so hard that it is done far too late.

 6) We can not do a release and be done. Release drag over weeks, making 
 announcments (and publicity) impossible.

 The build server helps a little bitwith some of the problems, but not much... 
 especially as the full build of unstable is mostly
 not working.

 So I vote for abandoning Core vs. Dev for 1.3.

        Marcus



 --
 Marcus Denker  -- http://www.marcusdenker.de
 INRIA Lille -- Nord Europe. Team RMoD.






-- 
Hernán Morales
Information Technology Manager,
Institute of Veterinary Genetics.
National Scientific and Technical Research Council (CONICET).
La Plata (1900), Buenos Aires, Argentina.
Telephone: +54 (0221) 421-1799.
Internal: 422
Fax: 425-7980 or 421-1799.



[Pharo-project] Odd FFI problms with Mac vms...

2011-04-03 Thread Dale Henrichs
Norbert,

Today I have found that I can get GemTools to work on the mac using Squeak 
4.2.4beta1U.

Squeak 4.2.5beta1U fails when an FFI call returns an incorrect value (get a 
Space is low error, because the size comes back as 1330942246849085449, instead 
of a reasonable number).

The image is identical and the gci library file is identical in both cases, 
I've just switched the vm that I'm using.

Squeak 5.7.4.1 gives an 'unsupported calling convention' with the first FFI 
call into the library.

Cog-VM.r2378 gives a 'Could not coerce arguments' error for the FFI call that 
returns the unreasonable number in 4.2.5beta1U...the argument to the function 
is a SmallInteger (343552513) ... at least this error gives me hope that I can 
figure out what's wrong with this call sooner or later ...

Anyway, the upshot is that Squeak 4.2.4beta1U is the best bet at the moment on 
the Mac for running GemTools ... 

Oh, the image was a PharoCore-1.1.1...Finding _a_ Mac vm, that works gives me 
an incentive to try getting GemTools running on PharoCore.1.2...

If any of the vm or FFI guys have some insight to these problems I'd appreciate 
some pointers to what may be going on...

Dale

On Mar 30, 2011, at 10:09 AM, Norbert Hartl wrote:

 
 Am 30.03.2011 um 19:02 schrieb Johan Brichau:
 
 well... it only works with a VM up to version 4.2.2
 
 well, right! Something I forgot to tell. That is the reason I start it from 
 the command line :)
 
 Norbert
 
 everything beyond that ended up in a strange login error, indeed
 
 On 30 Mar 2011, at 18:19, Dale Henrichs wrote:
 
 Yes I am suspicious that there are some os library mismatches involved as I 
 get an odd error during the login sequence and I haven't successfully 
 characterized the specific problem...
 
 I am glad to hear that some folks are not having trouble ... which only 
 deepens the mystery:)
 
 Dale
 
 
 
 




Re: [Pharo-project] Odd FFI problms with Mac vms...

2011-04-03 Thread Dale Henrichs

On Apr 3, 2011, at 12:36 PM, Dale Henrichs wrote:

 Norbert,
 
 Today I have found that I can get GemTools to work on the mac using Squeak 
 4.2.4beta1U.
 
 Squeak 4.2.5beta1U fails when an FFI call returns an incorrect value (get a 
 Space is low error, because the size comes back as 1330942246849085449, 
 instead of a reasonable number).
 
 The image is identical and the gci library file is identical in both cases, 
 I've just switched the vm that I'm using.
 
 Squeak 5.7.4.1 gives an 'unsupported calling convention' with the first FFI 
 call into the library.
 
 Cog-VM.r2378 gives a 'Could not coerce arguments' error for the FFI call that 
 returns the unreasonable number in 4.2.5beta1U...the argument to the function 
 is a SmallInteger (343552513) ... at least this error gives me hope that I 
 can figure out what's wrong with this call sooner or later ...
 
 Anyway, the upshot is that Squeak 4.2.4beta1U is the best bet at the moment 
 on the Mac for running GemTools ... 
 
 Oh, the image was a PharoCore-1.1.1...Finding _a_ Mac vm, that works gives me 
 an incentive to try getting GemTools running on PharoCore.1.2...
 
 If any of the vm or FFI guys have some insight to these problems I'd 
 appreciate some pointers to what may be going on...

Here's the FFI call:

  apiGciFetchObjImpl: anOopType

apicall: ulong 'GciFetchObjImpl' (OopType64) 
^self externalCallFailed

and OopType64 is a subclass of ExternalStructure with the following fields 
declaration:

  fields

(OopType64 defineFields)


^#(asOop 'ulonglong').

and the function declaration from the header file:

  int GciFetchObjImpl(OopType theObject); 

Dale


Re: [Pharo-project] Odd FFI problms with Mac vms...

2011-04-03 Thread Dale Henrichs

On Apr 3, 2011, at 12:48 PM, Dale Henrichs wrote:

 
 On Apr 3, 2011, at 12:36 PM, Dale Henrichs wrote:
 
 Norbert,
 
 Today I have found that I can get GemTools to work on the mac using Squeak 
 4.2.4beta1U.
 
 Squeak 4.2.5beta1U fails when an FFI call returns an incorrect value (get a 
 Space is low error, because the size comes back as 1330942246849085449, 
 instead of a reasonable number).
 
 The image is identical and the gci library file is identical in both cases, 
 I've just switched the vm that I'm using.
 
 Squeak 5.7.4.1 gives an 'unsupported calling convention' with the first FFI 
 call into the library.
 
 Cog-VM.r2378 gives a 'Could not coerce arguments' error for the FFI call 
 that returns the unreasonable number in 4.2.5beta1U...the argument to the 
 function is a SmallInteger (343552513) ... at least this error gives me hope 
 that I can figure out what's wrong with this call sooner or later ...
 
 Anyway, the upshot is that Squeak 4.2.4beta1U is the best bet at the moment 
 on the Mac for running GemTools ... 
 
 Oh, the image was a PharoCore-1.1.1...Finding _a_ Mac vm, that works gives 
 me an incentive to try getting GemTools running on PharoCore.1.2...
 
 If any of the vm or FFI guys have some insight to these problems I'd 
 appreciate some pointers to what may be going on...
 
 Here's the FFI call:
 
  apiGciFetchObjImpl: anOopType
 
   apicall: ulong 'GciFetchObjImpl' (OopType64) 
   ^self externalCallFailed
 
 and OopType64 is a subclass of ExternalStructure with the following fields 
 declaration:
 
  fields
 
   (OopType64 defineFields)
 
 
   ^#(asOop 'ulonglong').
 
 and the function declaration from the header file:
 
  int GciFetchObjImpl(OopType theObject); 

I thought it might be suspicious that a SmallInteger was being passed in when 
the argument type should have been OopType, so in the Cog vm, I traced the 
source of the argument back to the _result_ another FFI call:

apicall: OopType64 'GciNbPerform' (OopType64 char* ulong long) 

The result is declared as OopType64 so it looks like the result was not 
converted to the correct type on return...which ends up with the incorrect 
argument coming in ..

When the Squeak 4.2.5beta1U runs through the same sequence of calls, the  
result of GciNbPerform gets correctly converted to OopType64, so that seems to 
be the ulitmate source of the error ...

Not sure whether this is a VM issue or an FFI issue, in either case I assume 
that the bug exists in some C code floating around somewhere..

Dale




Re: [Pharo-project] Announcement real problems - please read and comment.

2011-04-03 Thread Henrik Sperre Johansen

On 03.04.2011 10:35, Stéphane Ducasse wrote:

On Apr 2, 2011, at 5:14 PM, Henrik Sperre Johansen wrote:


On 02.04.2011 09:16, Stéphane Ducasse wrote:

Henrik what is your answer to problem 1

Problem 1
- the second announcement was never sent, because the first one broke 
the second was blocked.
   we should make sure that if an announcement leads to an error, 
other annoucements on the same emit should pass

Because we can get the system down just because one guy can register a bug.

http://forum.world.st/Another-finalization-concern-error-handling-td2989615.html

It's basically the same.

??

Same basic problem, same solutions apply.
I'd rather not repeat the exact same discussion.
Just exchange finalization with announcement delivery when reading 
the thread.


Cheers,
Henry



Re: [Pharo-project] Let's get rid of Core vs. Full

2011-04-03 Thread Stéphane Ducasse

On Apr 3, 2011, at 9:34 PM, Hernán Morales Durand wrote:

 I really agree with you Marcus. It sounds to me that core/dev is a
 black and white approach.
 
 I know there are no resources, but what do you think of starting with
 a minimum image and the build over more sophisticated images?
 
 -Kernel image
 -Core image
 -Image with really basic browsing/scm tools (OB, Script Manager,
 Shout, etc) - or developer basic
 -developer standard (the current dev)
 -developer scientific
 -developer web
 ...
 etc.
 
 that wouldn't result in more easier integrations?

I'm not sure that you want a lot of different setups because it means checking 
problems due to interactions.
So far we cannot maintain 2 so I do not see why more would help.
a core + packages + a dsitribution browser to load certified 
distributions


we want a mini-core + a set of maintained pharo packages + a configuration files

When we work on them
- new mini core +  automatic publication of new packages + new 
configuration files

Right now this process does not work so this is a ***pain*** I spent 2 hours
one sunday to fix some stupid problem with shout in OB just because we do not 
have 
good tools on top of metacello and because loading packages is slow.

Stef





Re: [Pharo-project] Issue 3949 in pharo: Coverage for Cog

2011-04-03 Thread pharo

Updates:
Status: Closed

Comment #2 on issue 3949 by stephane...@gmail.com: Coverage for Cog
http://code.google.com/p/pharo/issues/detail?id=3949

Tx lukas
in 12131




Re: [Pharo-project] Issue 3947 in pharo: remove #floodFill:

2011-04-03 Thread pharo

Updates:
Status: Closed

Comment #1 on issue 3947 by stephane...@gmail.com: remove #floodFill:
http://code.google.com/p/pharo/issues/detail?id=3947

in 13131




Re: [Pharo-project] Issue 3946 in pharo: remove some more uniclasses/player related code

2011-04-03 Thread pharo


Comment #1 on issue 3946 by stephane...@gmail.com: remove some more  
uniclasses/player related code

http://code.google.com/p/pharo/issues/detail?id=3946

Argh! Terrible design add yours to the list no comment.




Re: [Pharo-project] Issue 3946 in pharo: remove some more uniclasses/player related code

2011-04-03 Thread pharo


Comment #2 on issue 3946 by stephane...@gmail.com: remove some more  
uniclasses/player related code

http://code.google.com/p/pharo/issues/detail?id=3946

in 13131




Re: [Pharo-project] Issue 3946 in pharo: remove some more uniclasses/player related code

2011-04-03 Thread pharo

Updates:
Status: closed

Comment #3 on issue 3946 by stephane...@gmail.com: remove some more  
uniclasses/player related code

http://code.google.com/p/pharo/issues/detail?id=3946

(No comment was entered for this change.)




Re: [Pharo-project] Issue 3945 in pharo: Remove squeakland plugin methods from SystemVersion

2011-04-03 Thread pharo

Updates:
Status: Closed

Comment #1 on issue 3945 by stephane...@gmail.com: Remove squeakland   
plugin methods from SystemVersion

http://code.google.com/p/pharo/issues/detail?id=3945

in 13131




Re: [Pharo-project] Issue 3944 in pharo: ClassHierarchyTest needs to be moved to KernelTests package

2011-04-03 Thread pharo

Updates:
Status: Closed

Comment #2 on issue 3944 by stephane...@gmail.com: ClassHierarchyTest needs  
to be moved to KernelTests package

http://code.google.com/p/pharo/issues/detail?id=3944

in 13131




[Pharo-project] [update 1.3] #13131

2011-04-03 Thread Stéphane Ducasse
13131
-

- Issue 3949:   Coverage for Cog. Thanks Lukas Renggli.
- Issue 3947:   remove #floodFill:. Thanks Marcus Denker.
- Issue 3946:   remove some more uniclasses/player related code. Thanks Marcus 
Denker.
- Issue 3945:   Remove squeakland plugin methods from SystemVersion. Thanks 
Marcus Denker.
-  Issue 3944:  ClassHierarchyTest needs to be moved to KernelTests package. 
Thanks Marcus Denker.
- Removed SoftSqueak Theme. Repackage GLMTheme - Rename them.

Stef


Re: [Pharo-project] Issue 3877 in pharo: Check reduced complexity for UI themes

2011-04-03 Thread pharo


Comment #2 on issue 3877 by stephane...@gmail.com: Check reduced complexity  
for UI themes

http://code.google.com/p/pharo/issues/detail?id=3877

first step in that direction done: repackaged theme, rename Glamour ones,  
removed soft squeak





Re: [Pharo-project] Issue 3912 in pharo: Circular dependency with GLMOrangeUITheme

2011-04-03 Thread pharo

Updates:
Status: Closed

Comment #3 on issue 3912 by stephane...@gmail.com: Circular dependency with  
GLMOrangeUITheme

http://code.google.com/p/pharo/issues/detail?id=3912

So far I move all the themes into Polymorph. Removed SoftSqueak, started to  
rename Glamour (should rename the classes). So I will close this issue  
since the circular dependency should be over now.

In 13131




  1   2   >