[ANN][Squeak-dev Image] Version 07.6

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

[ANN][Squeak-dev Image] Version 07.6

Damien Cassou-3
Squeak-dev image is an image made for squeak developers.


*Important notice:* This version is based on Squeak 3.9 7067.


You can download it here:
http://damien.cassou.free.fr/squeak-dev/

Changes in this version:
------------------------------

- Change the version naming scheme; now, I use the last two digits of
the year + the number of the current month. Version 07.6 is for June
2007.
- Documentation for SqueakSource and Monticello
- Adds a preference for the mercury panel

Updated packages:
-------------------------

- DynamicProtocols
- eCompletion
- Installer
- OmniBrower
   - Pretty print is available through CTRL+r
   - The list of keystrokes is available in the contextual menu
   - Refactorings are becoming environment aware
   - An annoying bug with required method has been corrected
   - ...
- RoelTyper
- Universes

Updating the image:
-------------------------

You are not obliged to download a new image if you don't want. You can
always update your image.

To upgrade your already existing squeak-dev image:

1) World menu->open...->Package Universe Browser
2) Update list from network
3) Select all upgrades
4) Install selection
5) Execute: 'DEVImageCreator default install' (all windows will be closed)


Prepared packages:
--------------------------

There are a lot of packages prepared for you in this image. They are
not loaded in the image, but they can be easily.

- Open Package Universe Browser (world->open...->Package Universe Browser).
- Click on "Update list from network"
- Wait a few seconds
- Select your packages
- Install them

Contained packages:
------------------------

This image contains the following packages:

AST version 140
AutomaticMethodCategorizer version 0.24
AutomaticMethodCategorizerServices version 0.2
ClassSelectorSets version 1
DynamicProtocols version 0.53
eCompletion version 0.87
eCompletion-Traits version 0.1
eCompletionOmniBrowser version 0.2
Installer version 1.0.92
OmniBrowser version 0.357
OmniBrowser-Full version 0.10
OmniBrowser-Morphic version 0.13
OmniBrowser-Refactory version 0.23
OmniBrowser-Standard version 0.205
Refactoring Engine version 37
RoelTyper version 0.60
ScriptManager version 0.6
Shout version 3.15-tween.70
ShoutWorkspace version 1-tween.1
SmaCC runtime version 13
Squeak dev packages version 0.13
Universes version 28
Universes OmniBrowser version 0.27
YAXO version 9

Future work:
----------------

- Wait for feedback.
- Follow Squeak 3.10 beta releases.

Please tell me what is your experience with this version. Please tell me
what you want for this image, this is for you.

--
Damien Cassou

Reply | Threaded
Open this post in threaded view
|

Re: [ANN][Squeak-dev Image] Version 07.6

Blake-5
OK, the graphic system in Squeak is called MORPHIC. Whereas before you  
descended your new classes from "Object", now you descend them from  
"Morphic":

Morph subclass: #TestMorph
        instanceVariableNames: ''
        classVariableNames: ''
        poolDictionaries: ''
        category: 'Max-Morphic'

When a morph wants to draw itself, it calls the drawOn: method. You would  
override this method to make the morphic look like something. For now, our  
morphic will just look like a blue square (the default drawOn does that),  
so we won't have a drawOn method.

OK, now that we have a new morph, let's create an instance. But morphs  
don't exist in a vacuum, they have to exist in a morphic world. Try this  
in a transcript:

TestMorph new openInWorld.

When you "do it", you should see a blue square in the upper left of the  
screen. The morphic world controls when the morphs that are in it (the  
morphs that it "owns") move. A morphic that responds to the passage of  
time is said to be "stepping". If a morphic is stepping, the world calls  
its "step" method.

So, create a step method:

step
                self position: self position+(1@1).

A morphic has a position (or "point") on the screen. Whaat this line of  
code does is say "take the current position and add one to its x position  
and one to its y position". This will move it diagonally. So, if you save  
this, the morphic should start moving, slowly, diagonally toward the lower  
right.

We want to be able to control how the movement starts and stops, so we'll  
make the morphic handle mouse events. We do this by overriding the  
handlesMouseDown:

handlesMouseDown: evt
        ^ true

then having a mouseDown event:

mouseDown: evt
          (self isStepping) ifTrue: [self stop] ifFalse: [self start].

"isStepping" is a Morphic event that retruns true if the morphic is  
stepping (responding to time events, remember?), start causes a morphic to  
start stepping, and stop causes it to stop.

So, if you click on the morphic now, it'll start moving unless it is  
moving already, in which case clicking on it will cause it to stop.

The morphic will probalby be moving slowly. I think, by default, a morphic  
world sends one message per second to a morph. But you can request more  
frequent updates with the stepTime method:

stepTime
        ^100

The amount returned in stepTime is the number of milliseconds between  
calls to step. So, if yous et it to 1000, our morph will momve about once  
a second (slow). The above is 100 milliseconds, or ten moves a second. On  
my machine, returning a value of 15 is about as fast as it will go. (Less  
than 15 shows no change.) I think "0" means "Go as fast as you can".

In game programming, the timing of steps is critical, so you'll figure out  
how fast the fastest thing can go, and base everything around that.

        This should get you started.

Reply | Threaded
Open this post in threaded view
|

Re: [ANN][Squeak-dev Image] Version 07.6

Derek O'Connell-2
Damien does a new release and gets a MORHPIC lesson in return, fair swap? :-)))

Thanks for the new release Damien!

Reply | Threaded
Open this post in threaded view
|

Re: [ANN][Squeak-dev Image] Version 07.6

Damien Cassou-3
In reply to this post by Blake-5
I think it's the wrong thread. Please post again somewhere else :-)

2007/6/19, Blake <[hidden email]>:

> OK, the graphic system in Squeak is called MORPHIC. Whereas before you
> descended your new classes from "Object", now you descend them from
> "Morphic":
>
> Morph subclass: #TestMorph
>         instanceVariableNames: ''
>         classVariableNames: ''
>         poolDictionaries: ''
>         category: 'Max-Morphic'
>
> When a morph wants to draw itself, it calls the drawOn: method. You would
> override this method to make the morphic look like something. For now, our
> morphic will just look like a blue square (the default drawOn does that),
> so we won't have a drawOn method.
>
> OK, now that we have a new morph, let's create an instance. But morphs
> don't exist in a vacuum, they have to exist in a morphic world. Try this
> in a transcript:
>
> TestMorph new openInWorld.
>
> When you "do it", you should see a blue square in the upper left of the
> screen. The morphic world controls when the morphs that are in it (the
> morphs that it "owns") move. A morphic that responds to the passage of
> time is said to be "stepping". If a morphic is stepping, the world calls
> its "step" method.
>
> So, create a step method:
>
> step
>                 self position: self position+(1@1).
>
> A morphic has a position (or "point") on the screen. Whaat this line of
> code does is say "take the current position and add one to its x position
> and one to its y position". This will move it diagonally. So, if you save
> this, the morphic should start moving, slowly, diagonally toward the lower
> right.
>
> We want to be able to control how the movement starts and stops, so we'll
> make the morphic handle mouse events. We do this by overriding the
> handlesMouseDown:
>
> handlesMouseDown: evt
>         ^ true
>
> then having a mouseDown event:
>
> mouseDown: evt
>                 (self isStepping) ifTrue: [self stop] ifFalse: [self start].
>
> "isStepping" is a Morphic event that retruns true if the morphic is
> stepping (responding to time events, remember?), start causes a morphic to
> start stepping, and stop causes it to stop.
>
> So, if you click on the morphic now, it'll start moving unless it is
> moving already, in which case clicking on it will cause it to stop.
>
> The morphic will probalby be moving slowly. I think, by default, a morphic
> world sends one message per second to a morph. But you can request more
> frequent updates with the stepTime method:
>
> stepTime
>         ^100
>
> The amount returned in stepTime is the number of milliseconds between
> calls to step. So, if yous et it to 1000, our morph will momve about once
> a second (slow). The above is 100 milliseconds, or ten moves a second. On
> my machine, returning a value of 15 is about as fast as it will go. (Less
> than 15 shows no change.) I think "0" means "Go as fast as you can".
>
> In game programming, the timing of steps is critical, so you'll figure out
> how fast the fastest thing can go, and base everything around that.
>
>         This should get you started.
>
>


--
Damien Cassou

Reply | Threaded
Open this post in threaded view
|

Re: [ANN][Squeak-dev Image] Version 07.6

Blake-5
In reply to this post by Derek O'Connell-2
On Tue, 19 Jun 2007 02:17:01 -0700, Derek O'Connell <[hidden email]>  
wrote:

> Damien does a new release and gets a MORHPIC lesson in return, fair  
> swap? :-)))
>
> Thanks for the new release Damien!
>


lol, sorry about that.

Reply | Threaded
Open this post in threaded view
|

Re: [ANN][Squeak-dev Image] Version 07.6

Piers Cawley
In reply to this post by Damien Cassou-3
On 18/06/07, Damien Cassou <[hidden email]> wrote:

> Squeak-dev image is an image made for squeak developers.
>
>
> *Important notice:* This version is based on Squeak 3.9 7067.
>
>
> You can download it here:
> http://damien.cassou.free.fr/squeak-dev/
>
> Changes in this version:
> ------------------------------
>
> - Change the version naming scheme; now, I use the last two digits of
> the year + the number of the current month. Version 07.6 is for June
> 2007.
> - Documentation for SqueakSource and Monticello
> - Adds a preference for the mercury panel
>
> Updated packages:
> -------------------------
>
> - DynamicProtocols
> - eCompletion
> - Installer
> - OmniBrower
>    - Pretty print is available through CTRL+r
>    - The list of keystrokes is available in the contextual menu
>    - Refactorings are becoming environment aware

Is it just me or are refactorings not being applied in the OmniBrowser
views? It's rather annoying because the OmniBrowser based browsers are
generally a nice place to be.

Reply | Threaded
Open this post in threaded view
|

Re: [ANN][Squeak-dev Image] Version 07.6

Damien Cassou-3
2007/6/21, Piers Cawley <[hidden email]>:
> Is it just me or are refactorings not being applied in the OmniBrowser
> views? It's rather annoying because the OmniBrowser based browsers are
> generally a nice place to be.

I confirm refactorings does not seem to work any more on OB. To make
it work again, comment the line 'refactoring model: (RBNamespace
onEnvironment: self environment).' in ORCmdRefactoring>>execute.

Lukas, do you know where is the problem?

--
Damien Cassou

Reply | Threaded
Open this post in threaded view
|

Re: [ANN][Squeak-dev Image] Version 07.6

Lukas Renggli
> Lukas, do you know where is the problem?

Name: OB-Refactory-lr.24
Author: lr
Time: 21 June 2007, 8:58:08 pm
UUID: 105e7896-c0d0-46e8-a8b8-6cd60990fce4
Ancestors: OB-Refactory-lr.23

- fixed a bug introduced with scoped refactoring environments that
made it impossible to use any of the refactorings

--
Lukas Renggli
http://www.lukas-renggli.ch

Reply | Threaded
Open this post in threaded view
|

Re: [ANN][Squeak-dev Image] Version 07.6

David Mitchell-10
Great!

I've been trying to learn how to use Mantis so I could report this
problem. (Or see if someone had already reported.)

I'll get the fresh stuff this evening.

And don't worry, I'm sure I'll find another bug to report/fix. ;-)

On 6/21/07, Lukas Renggli <[hidden email]> wrote:

> > Lukas, do you know where is the problem?
>
> Name: OB-Refactory-lr.24
> Author: lr
> Time: 21 June 2007, 8:58:08 pm
> UUID: 105e7896-c0d0-46e8-a8b8-6cd60990fce4
> Ancestors: OB-Refactory-lr.23
>
> - fixed a bug introduced with scoped refactoring environments that
> made it impossible to use any of the refactorings
>
> --
> Lukas Renggli
> http://www.lukas-renggli.ch
>
>

Reply | Threaded
Open this post in threaded view
|

Re: [ANN][Squeak-dev Image] Version 07.6

Damien Cassou-3
2007/6/21, David Mitchell <[hidden email]>:
> And don't worry, I'm sure I'll find another bug to report/fix. ;-)

If you have a fix, submit it directly to the repository instead of
opening a mantis report. All OmniBrower's repositories are opened.

--
Damien Cassou

Reply | Threaded
Open this post in threaded view
|

Re: [ANN][Squeak-dev Image] Version 07.6

Lukas Renggli
In reply to this post by David Mitchell-10
> And don't worry, I'm sure I'll find another bug to report/fix. ;-)

The refactoring engine is in a very bad state in 3.9. It has many bugs
and a lot of things just don't work. Having documented these bugs
would already help.

Lukas

--
Lukas Renggli
http://www.lukas-renggli.ch

Reply | Threaded
Open this post in threaded view
|

Re: [ANN][Squeak-dev Image] Version 07.6

Piers Cawley
In reply to this post by Damien Cassou-3
On 21/06/07, Damien Cassou <[hidden email]> wrote:
2007/6/21, David Mitchell <[hidden email]>:
> And don't worry, I'm sure I'll find another bug to report/fix. ;-)

If you have a fix, submit it directly to the repository instead of
opening a mantis report. All OmniBrower's repositories are opened.

I've been getting my head around the Squeak environment by running SLint over the OmniBrowser codebase and attacking the 'long methods' it throws up. Would you be interested in getting these changesets? I can't say I'm confident about just sticking them in the repository without some vetting from a more experienced squeaker though.


Reply | Threaded
Open this post in threaded view
|

Re: [ANN][Squeak-dev Image] Version 07.6

stephane ducasse
it would be good but
        - the harvesting team should harvest them
        - you should pay attention that the speed is not dropping
        - I would focus a set of clearly identified packages and see how it  
goes.

Stef

On 22 juin 07, at 00:15, Piers Cawley wrote:

> On 21/06/07, Damien Cassou <[hidden email]> wrote:  
> 2007/6/21, David Mitchell <[hidden email]>:
> > And don't worry, I'm sure I'll find another bug to report/fix. ;-)
>
> If you have a fix, submit it directly to the repository instead of
> opening a mantis report. All OmniBrower's repositories are opened.
>
> I've been getting my head around the Squeak environment by running  
> SLint over the OmniBrowser codebase and attacking the 'long  
> methods' it throws up. Would you be interested in getting these  
> changesets? I can't say I'm confident about just sticking them in  
> the repository without some vetting from a more experienced  
> squeaker though.
>


Reply | Threaded
Open this post in threaded view
|

Re: [ANN][Squeak-dev Image] Version 07.6

Piers Cawley
On 22/06/07, stephane ducasse <[hidden email]> wrote:
it would be good but
        - the harvesting team should harvest them

 
Harvesting team?

        - you should pay attention that the speed is not dropping

Is there a test suite or something I can keep running to check that sort of thing? My gut feeling is to go for clarity first, then (ideally) worry about optimization once I can run stuff against a profiler.

        - I would focus a set of clearly identified packages and see how it
goes.

 
I just opened a new project, ran SLint against OmniBrowser-*, OB* and OR* and started in on the long methods (the usual suspect is turning out to be O[BR]Cmd*#execute).

SLint also throws up a whole host of dubious uses of isKindOf, which I'd like to replace with testing methods on the various nodes, but I'm scratching my head to come up with names. An 'isBehaviorOrTrait' test wrote itself though.

Incidentally, I'm finding the CodeFinder to be an absolutely indispensable tool for deciding when to pull out a method: Just write a CodeFinder query matching the potential method fragment and run it to find out if multiple methods are doing the same thing.


Reply | Threaded
Open this post in threaded view
|

Re: [ANN][Squeak-dev Image] Version 07.6

David Mitchell-10
In reply to this post by Damien Cassou-3
OK, I'll give that a try.

If I submit to the repository, you still have to merge it, right?

I'm only a Monticello beginner.

On 6/21/07, Damien Cassou <[hidden email]> wrote:

> 2007/6/21, David Mitchell <[hidden email]>:
> > And don't worry, I'm sure I'll find another bug to report/fix. ;-)
>
> If you have a fix, submit it directly to the repository instead of
> opening a mantis report. All OmniBrower's repositories are opened.
>
> --
> Damien Cassou
>
>

Reply | Threaded
Open this post in threaded view
|

Re: [ANN][Squeak-dev Image] Version 07.6

Damien Cassou-3
2007/6/23, David Mitchell <[hidden email]>:
> OK, I'll give that a try.
>
> If I submit to the repository, you still have to merge it, right?

merging is only useful when there is multiple branches. For example,
you haver version 1 in your image and you commit your fix; at the same
time, I have version 1 too in my image and I commit another fix. Then,
there is 2 versions on the repository with 2 different fixes. How do
we get both fixes in one image? Just merge the two version in one
version and commit this version.

But don't be afraid, if people don't like your fix, they won't use it
and that's all. If you commit to one of my repositories, I will send
you a mail about what I think of your fix so that you can improve it
and commit again. I'm sure Lukas will do the same.

The best way to learn is to try and do mistakes :-)

Bye

--
Damien Cassou