Pharo-dev
By thread
pharo-dev@lists.pharo.org
By month
Messages by month
- ----- 2026 -----
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
June 2016
- 812 messages
Multiple strong selections?
by Nicolas Passerini
Hi, how is the best way to add a "double click" action to a glamour (fast)
table?
I tried usin onChangeOfPort: #strongSelection, but the event is gathered
multiple times... which in my case opens four times the same window. Is
this a bug that I could try to solve or is it that I am using it wrong?
A little portion of code to depict my problem:
browser transmit to: #repositories; andShow: [ :a | a fastTable
...
onChangeOfPort: #strongSelection act: [ :table | IceGlamourSynchronizer
synchronize: table selection ]
].
Thanks,
Nico
June 21, 2016
Re: [Pharo-dev] Better #haltOnce: per haltOnce state, auto-enable
by stepharo
marcus
do you expect to have object centric debugging features in the near future?
Stef
Le 21/6/16 à 11:19, Marcus Denker a écrit :
> Hi,
>
> Another small iteration: now you can mouse over the Icon of #halOnce and #haltOnCount: and the
> current state is displayed (if the haltOnce is active, the count of the #haltOnCount:).
>
> this is in 60 update 101
>
> Marcus
>
June 21, 2016
Re: [Pharo-dev] Pharo vs. Squeak performance
by Clément Bera
On Tue, Jun 21, 2016 at 3:13 PM, Sven Van Caekenberghe <sven(a)stfx.eu> wrote:
>
> > On 21 Jun 2016, at 11:58, Ben Coman <btc(a)openinworld.com> wrote:
> >
> > On Tue, Jun 21, 2016 at 3:29 PM, Clément Bera <bera.clement(a)gmail.com>
> wrote:
> >> Hello John.
> >>
> >> I'm just guessing here. Lacking information. It could be:
> >>
> >> Guess 3) the UI is known to be much slower in Pharo. Can you try
> headless or
> >> after ticking "Server mode" In the Pharo settings in System.
> >
> > Or try something like...
> > [ Transcript cr; show: (Time millisecondsToRun: [1 to: 100000000 do:
> > [:i | Object new]] ) ] forkAt: 75.
>
> BTW, this is essentially a garbage collection benchmark: you create
> 100,000,000 empty objects. It stresses the GC, especially the ephemeral
> phase of it. Since the GC is part of the VM, you are testing the VM more
> than any image code.
>
Right, it could be related to the new finalization ...
We can't guess properly we have no VM versions.
>
> > cheers -ben
> >
> >>
> >>
> >>
> >>
> >>
> >> On Tue, Jun 21, 2016 at 1:28 AM, John Brant <brant(a)refactoryworkers.com
> >
> >> wrote:
> >>>
> >>> I have some code that creates a several hundred MB model. When I run
> the
> >>> code under Pharo it takes ~2.5 minutes to run. However, if I run the
> same
> >>> code in Squeak, it takes ~2 minutes. Since my code just uses base
> >>> collections and streams, I thought the times should be very similar
> between
> >>> the two. After a little investigation, I noticed that even simple
> things
> >>> like âObject newâ can take much more time in Pharo. Hereâs an example
> that I
> >>> executed in Squeak and Pharo:
> >>>
> >>> Time millisecondsToRun: [1 to: 100000000 do: [:i | Object new]]
> >>>
> >>> Squeak times:
> >>> 1255 1257 1261 1265 1280 1294 1314 1337 1350 1360
> >>>
> >>> Pharo times:
> >>> 1815 1818 1870 1879 1900 1922 1944 1952 1958 2170
> >>>
> >>> The results are the first 10 executions sorted by time after opening an
> >>> image. Pharo doesnât always give these poor results. Occasionally I
> can get
> >>> times as good a Squeak. For example, I was able to get these times in
> Pharo:
> >>> 1253, 1284, 1297, 1314, 1317. However, it generally takes ~1.8 seconds
> in
> >>> Pharo vs. the ~1.3 seconds for Squeak. The worst time I got for Squeak
> was
> >>> in the 1.6 second range. The worst for Pharo was in the 4.3 second
> range.
> >>>
> >>> Does anyone know why Pharo is slower? Is there some memory setting
> that I
> >>> need to change?
> >>>
> >>>
> >>> John Brant
> >>
> >>
> >
>
>
>
June 21, 2016
Re: [Pharo-dev] Did we change something in Sunit handling?
by stepharo
apparently it was an expected failure.
Le 21/6/16 à 11:37, stepharo a écrit :
> Hi
>
> When running
>
> RPackageReadOnlyCompleteSetupTest after loading the slice 7241
>
> I get this method testClassesAndExtensionMethodsDo failing and I do
> not understand
>
>
> - why when I press on the nautilus icon I do not get a debugger.
>
> - I do not get why execution self debug:
> #testClassesAndExtensionMethodsDo does not raise a debugger
>
> Now putting a halt in the method I can step and the result is
> correct. But Sunit still report it as a failure.
>
> So I do not get anything.
>
>
> Stef
>
>
>
June 21, 2016
endlessloop interruption
by stepharo
Hi
I asked eliot and clement if a better management of endlessloop was on the
agenda of Cog and eliot told me that normally it is already the case.
Do you have endless loops that cannot be interrupted?
Stef
June 21, 2016
Re: [Pharo-dev] bloc status update: june 2016
by Glenn Cavarlé
Hi,
Please, pay attention that the design may/will change quickly.
As Doru said, it is the current status, not the final status and many
changes may/will appear.
I say that because we are working on it (revisiting the core model), so it
would be different.
Cheers,
Glenn.
-----
Glenn Cavarlé
--
View this message in context: http://forum.world.st/bloc-status-update-june-2016-tp4901988p4902208.html
Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.
June 21, 2016
Re: [Pharo-dev] bloc status update: june 2016
by Esteban Lorenzano
yes, and I always said this is plain bad.
how it is now it is not a contextual menu, is NextStep style and is the correct behaviour (after we can discuss if we want to keep a menu as it is now or not, but thatâs another discussion) :)
Esteban
> On 21 Jun 2016, at 15:54, Aliaksei Syrel <alex.syrel(a)gmail.com> wrote:
>
> In Pharo the World menu is accessed through left-click and right-click provides the world contents. In Bloc, right-click displays the world menu and left-click does nothing. Is it expected / some design choice or just convenience for debugging ? At first glance I thought Bloc didn't work because I was left-clicking like in Pharo.
>
> It was like that from the very begging of Bloc development. Main developers of Bloc prefer right click to open menu (like almost everywhere except Pharo).
>
> Cheers,
> Alex
>
> On Tue, Jun 21, 2016 at 3:52 PM, Aliaksei Syrel <alex.syrel(a)gmail.com <mailto:alex.syrel@gmail.com>> wrote:
> What is Cairo-Sparta ? What is the difference with Athens ?
> Sparta-Canvas is just an implementation of Athens API that uses Cairo as backend. It is the same as Athens-Cairo, with a few small differences.
>
> - Sparta has different meaning of clipBy: during: In Athens clipBy: only accepts a Rectangle, in Sparta it is an arbitrary Path.
> - Sparta has some experimental api just for fun and to find out if there is a way to render faster.
>
> Since Athens is used in (many?) external packages it is not possible to redefine clipBy: . Also having a separate implementation of Athens API (Sparta-Cairo) allows developers of Bloc to iterate faster and save time on integration process.
>
> Cheers,
> Alex
>
> On Tue, Jun 21, 2016 at 3:46 PM, Aliaksei Syrel <alex.syrel(a)gmail.com <mailto:alex.syrel@gmail.com>> wrote:
> Can we change the fonts in Bloc ?
>
> Bloc is not new Pharo :) It is also not Morphic. Bloc is very low level engine that does not have theme and widgets.
> Morphic apps (like Nautilus) are just running in compatibility mode and are rendered on Athens canvas. Existing Pharo applications use fonts provided by StandardFonts that can be changed from Menu > Settings.
>
> Cheers,
> Alex
>
> On Tue, Jun 21, 2016 at 3:42 PM, Aliaksei Syrel <alex.syrel(a)gmail.com <mailto:alex.syrel@gmail.com>> wrote:
> When (in Bloc) I go to World menu>>help>>Help browser>>Bloc>>Grid Layout, I find the following license:
>
> It is important to mention that Grid is more general than Table layout. It allows developers to create complex UI with less nested elements compared to the case when Table layout would be used instead. Reducing amount of nested/composed elements leads to performance boost (we have less elements in the tree) and reduces overall complexity - no need to use "hack" elements that have no intent and not part of real UI.
>
> Since Grid requires more complex (compared to table) computations we should take care about performance. General complexity of algorithm to compute distribution of cell sizes is O(n^2) - too much. Google already invested time (money) in this problem and developed a special case algorithm with linear complexity. It is used in Grid layout in bloc which means that we have a derivative work and need to ship original licence.
>
> Here is google's documentation:
>
> Bellman-Ford variant - modified to reduce typical running time from O(N^2) to O(N)
> GridLayout converts its requirements into a system of linear constraints of the
> form:
> x[i] - x[j] < a[k]
>
> Where the x[i] are variables and the a[k] are constants.
> For example, if the variables were instead labeled x, y, z we might have:
> x - y < 17
> y - z < 23
> z - x < 42
>
> This is a special case of the Linear Programming problem that is, in turn,
> equivalent to the single-source shortest paths problem on a digraph, for
> which the O(n^2) Bellman-Ford algorithm the most commonly used general solution.
>
> Apache 2.0 is compatible/can be used with MIT - as far as I can tell according to answers on Internet. Maybe a layer can answer more correctly.
>
> Cheers,
> Alex
>
>
> On Tue, Jun 21, 2016 at 3:06 PM, Aliaksei Syrel <alex.syrel(a)gmail.com <mailto:alex.syrel@gmail.com>> wrote:
> >
> > Hello Clement
> >
> > restoreAfter: is not only for transformation. It also restores clipping - that is why we need restoreAfter. (uses push and pop state). Having that clipping region is an arbitrary path there is no way to avoid pop and push state - which costs a lot in Cairo. It is slow because Cairo and Athens are statefull - which is bad for rendering a composition of arbitrary elements.
> >
> > Right now there is a huge work going on new Sparta - it will be almost stateless and will support a wide variety of backends (Cairo, Skia, CoreGraphics and so on).
> > Current Sparta-Cairo is an experiment which goal was to support clipping by arbitrary path. We learned that it is slow because of statefullness.
> >
> > In order to fill a square with color we have to perform the following ffi native calls:
> > - set color
> > - set shape
> > - fill
> >
> > Even in the most simple case we need 3 calls. When it gets more complicated there are even more calls. Preparing drawing context with multiple calls to perform an operation is a consequence of statefullness.
> >
> > Modern browsers use stateless canvases to render content. Idea is simple: one call per drawing operation. Example above would look like:
> > - fillPath(aPath, aPattern, drawOptions).
> > That is it.
> > Second benefit is that we don't need to care about shared state between drawing operations, no more push/pop state and as result huge performance boost.
> >
> > Cheers
> > Alex
> >
> > On Jun 21, 2016 1:34 PM, "Clément Bera" <bera.clement(a)gmail.com <mailto:bera.clement@gmail.com>> wrote:
> >>
> >> Hi,
> >>
> >> Thanks Doru it now works for me ! Very exciting indeed.
> >>
> >> I have a few questions:
> >>
> >> 1. In Pharo the World menu is accessed through left-click and right-click provides the world contents. In Bloc, right-click displays the world menu and left-click does nothing. Is it expected / some design choice or just convenience for debugging ? At first glance I thought Bloc didn't work because I was left-clicking like in Pharo.
> >>
> >> 2. Can we change the fonts in Bloc ?
> >>
> >> 3. When (in Bloc) I go to World menu>>help>>Help browser>>Bloc>>Grid Layout, I find the following license:
> >>
> >> Copyright (C) 2011 The Android Open Source Project
> >>
> >> Licensed under the Apache License, Version 2.0 (the "License");
> >> you may not use this file except in compliance with the License.
> >> You may obtain a copy of the License at
> >>
> >> http://www.apache.org/licenses/LICENSE-2.0 <http://www.apache.org/licenses/LICENSE-2.0>
> >>
> >> Unless required by applicable law or agreed to in writing, software
> >> distributed under the License is distributed on an "AS IS" BASIS,
> >> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> >> See the License for the specific language governing permissions and
> >> limitations under the License.
> >>
> >> Does it mean Bloc is not under MIT ? Or is it completely unrelated ?
> >>
> >> 4. What is Cairo-Sparta ? What is the difference with Athens ?
> >>
> >> 5. It seems that the normal Pharo image in idle spends between 4 and 5% of execution time in the Morphic process, while in Bloc it seems that between 17 and 23% of execution time is in the main bloc loop (BlBoostedMainLoopManager). Isn't that a lot ?
> >> - It's interesting to see that 28% of execution time spent in Bloc is in BlSpartaCanvas>>#restoreAfter:. In the 2D video games I wrote (both using Cairo and Javascript canvas) I avoided using #restoreAfter: and instead in method such as BlSpartaCanvas >>#transform:during: I used a reverse transformation to restore the state. I am wondering if that's possible in large graphic framework like Bloc, that would save a quarter of the time. Maybe it's possible only in simple 2D video games.
> >> - Aside from restoreAfter, there is no obvious ways on how to save time...
> >>
> >> Well keep up the good work.
> >>
> >>
> >>
> >> On Tue, Jun 21, 2016 at 11:36 AM, Tudor Girba <tudor(a)tudorgirba.com <mailto:tudor@tudorgirba.com>> wrote:
> >>>
> >>> Hi,
> >>>
> >>> Thanks for looking at it.
> >>>
> >>> You have to first switch to the Bloc space:
> >>>
> >>> World Menu / Bloc / Switch to Bloc
> >>> (I think there is a problem right now with OS-Window)
> >>>
> >>> Then, from Nautilus, you can pick an example and Inspect Return-Values to get the object.
> >>>
> >>> Cheers,
> >>> Doru
> >>>
> >>>
> >>>
> >>> On Jun 21, 2016, at 10:42 AM, Clément Bera <bera.clement(a)gmail.com <mailto:bera.clement@gmail.com>> wrote:
> >>>
> >>> Hi Doru,
> >>>
> >>> Ok I understand I have issues keeping comments updated in my projects too :-). Do your best.
> >>>
> >>> I tried to run the examples from Bloc-Core-Examples but they didn't work. I downloaded the latest Pharo-Spur32 VM from files.pharo.org <http://files.pharo.org/> and retried and it still didn't work.
> >>>
> >>> How can I have the examples running ?
> >>>
> >>> Here is the errors I have for the first two examples of BlExampleElementWithBorderAndFill.
> >>>
> >>> <Screen Shot 2016-06-21 at 10.40.39 AM.png>
> >>>
> >>> Here are the examples:
> >>>
> >>> <Screen Shot 2016-06-21 at 10.37.49 AM.png>
> >>>
> >>>
> >>> Best,
> >>>
> >>> Clement
> >>>
> >>> On Tue, Jun 21, 2016 at 10:09 AM, Tudor Girba <tudor(a)tudorgirba.com <mailto:tudor@tudorgirba.com>> wrote:
> >>> Hi Clement,
> >>>
> >>> Thanks for looking at it.
> >>>
> >>> Indeed, there arenât many comments. A large part of the engine got rewritten twice over the last months, and many of the previous comments were no longer up to date.
> >>>
> >>> And no, the policy is not to not write comments :), but right now the priority is on building examples. which you will find in the Bloc-Core-Examples classes and their subclasses.
> >>>
> >>> Cheers,
> >>> Doru
> >>>
> >>>
> >>>
> >>> > On Jun 21, 2016, at 9:39 AM, Clément Bera <bera.clement(a)gmail.com <mailto:bera.clement@gmail.com>> wrote:
> >>> >
> >>> > Hi Doru,
> >>> >
> >>> > I downloaded the image, opened Nautilus, clicked on the package named 'Bloc-Core' and all the classes I can see have no class comments (See screenshot below). Is there a 'No class comment' policy in Bloc ? Or maybe the top classes shown are just non representative of the class comments of the overall framework.
> >>> >
> >>> > <Screen Shot 2016-06-21 at 9.33.31 AM.png>
> >>> >
> >>> > On Tue, Jun 21, 2016 at 7:42 AM, Tudor Girba <tudor(a)tudorgirba.com <mailto:tudor@tudorgirba.com>> wrote:
> >>> > Hi,
> >>> >
> >>> > Here is a brief update on the status of Bloc.
> >>> >
> >>> > Several of us came together to form a team and work to see Bloc in Pharo 6 at least as a preview. The team communication happens via Slack in a dedicated team, and the goal is to have regular progress/feedback communication on this mailing list.
> >>> >
> >>> > Just because we have a dedicated team does not mean that your feedback is important. In fact, over the last months, Bloc was redesigned again to include the feedback we got here. So, now we have:
> >>> > - Element is responsible for drawing (no more shape)
> >>> > - Interaction area and clipping area are now distinct
> >>> >
> >>> > You can find the current build on top of Pharo 6 here:
> >>> > https://ci.inria.fr/moose/job/bloc/PHARO=alpha,VERSION=development,VM=vmLat… <https://ci.inria.fr/moose/job/bloc/PHARO=alpha,VERSION=development,VM=vmLat…>
> >>> >
> >>> > The current team focus goes like this:
> >>> > - Alain is looking at events,
> >>> > - Glenn is playing with creating new elements in Bloc and refactoring the way we can manage ,
> >>> > - Alex (Syrel) and Esteban are working on the backend to make rendering faster,
> >>> > - Doru is pretending to do something useful.
> >>> >
> >>> > Cheers,
> >>> > Doru
> >>> >
> >>> >
> >>> > --
> >>> > www.tudorgirba.com <http://www.tudorgirba.com/>
> >>> > www.feenk.com <http://www.feenk.com/>
> >>> >
> >>> > "What we can governs what we wish."
> >>> >
> >>> >
> >>> >
> >>> >
> >>> >
> >>> >
> >>>
> >>> --
> >>> www.tudorgirba.com <http://www.tudorgirba.com/>
> >>> www.feenk.com <http://www.feenk.com/>
> >>>
> >>> "Presenting is storytelling."
> >>>
> >>>
> >>>
> >>>
> >>> --
> >>> www.tudorgirba.com <http://www.tudorgirba.com/>
> >>> www.feenk.com <http://www.feenk.com/>
> >>>
> >>> "Problem solving should be focused on describing
> >>> the problem in a way that makes the solution obvious."
> >>>
> >>>
> >>>
> >>>
> >>>
> >>
>
>
>
June 21, 2016
Re: [Pharo-dev] bloc status update: june 2016
by Aliaksei Syrel
>
> In Pharo the World menu is accessed through left-click and right-click
> provides the world contents. In Bloc, right-click displays the world menu
> and left-click does nothing. Is it expected / some design choice or just
> convenience for debugging ? At first glance I thought Bloc didn't work
> because I was left-clicking like in Pharo.
It was like that from the very begging of Bloc development. Main developers
of Bloc prefer right click to open menu (like almost everywhere except
Pharo).
Cheers,
Alex
On Tue, Jun 21, 2016 at 3:52 PM, Aliaksei Syrel <alex.syrel(a)gmail.com>
wrote:
> What is Cairo-Sparta ? What is the difference with Athens ?
>
> Sparta-Canvas is just an implementation of Athens API that uses Cairo as
> backend. It is the same as Athens-Cairo, with a few small differences.
>
> - Sparta has different meaning of clipBy: during: In Athens clipBy: only
> accepts a Rectangle, in Sparta it is an arbitrary Path.
> - Sparta has some experimental api just for fun and to find out if there
> is a way to render faster.
>
> Since Athens is used in (many?) external packages it is not possible to
> redefine clipBy: . Also having a separate implementation of Athens API
> (Sparta-Cairo) allows developers of Bloc to iterate faster and save time on
> integration process.
>
> Cheers,
> Alex
>
> On Tue, Jun 21, 2016 at 3:46 PM, Aliaksei Syrel <alex.syrel(a)gmail.com>
> wrote:
>
>> Can we change the fonts in Bloc ?
>>
>>
>> Bloc is not new Pharo :) It is also not Morphic. Bloc is very low level
>> engine that does not have theme and widgets.
>> Morphic apps (like Nautilus) are just running in compatibility mode and
>> are rendered on Athens canvas. Existing Pharo applications use fonts
>> provided by StandardFonts that can be changed from Menu > Settings.
>>
>> Cheers,
>> Alex
>>
>> On Tue, Jun 21, 2016 at 3:42 PM, Aliaksei Syrel <alex.syrel(a)gmail.com>
>> wrote:
>>
>>> When (in Bloc) I go to World menu>>help>>Help browser>>Bloc>>Grid
>>>> Layout, I find the following license:
>>>
>>>
>>> It is important to mention that Grid is more general than Table layout.
>>> It allows developers to create complex UI with less nested elements
>>> compared to the case when Table layout would be used instead. Reducing
>>> amount of nested/composed elements leads to performance boost (we have less
>>> elements in the tree) and reduces overall complexity - no need to use
>>> "hack" elements that have no intent and not part of real UI.
>>>
>>> Since Grid requires more complex (compared to table) computations we
>>> should take care about performance. General complexity of algorithm to
>>> compute distribution of cell sizes is O(n^2) - too much. Google already
>>> invested time (money) in this problem and developed a special case
>>> algorithm with linear complexity. It is used in Grid layout in bloc which
>>> means that we have a derivative work and need to ship original licence.
>>>
>>> Here is google's documentation:
>>>
>>>
>>>> Bellman-Ford variant - modified to reduce typical running time from
>>>> O(N^2) to O(N)
>>>> GridLayout converts its requirements into a system of linear
>>>> constraints of the
>>>> form:
>>>> x[i] - x[j] < a[k]
>>>>
>>>
>>>
>>>> Where the x[i] are variables and the a[k] are constants.
>>>> For example, if the variables were instead labeled x, y, z we might
>>>> have:
>>>> x - y < 17
>>>> y - z < 23
>>>> z - x < 42
>>>>
>>>
>>>
>>>> This is a special case of the Linear Programming problem that is, in
>>>> turn,
>>>> equivalent to the single-source shortest paths problem on a digraph, for
>>>> which the O(n^2) Bellman-Ford algorithm the most commonly used general
>>>> solution.
>>>
>>>
>>> Apache 2.0 is compatible/can be used with MIT - as far as I can tell
>>> according to answers on Internet. Maybe a layer can answer more correctly.
>>>
>>> Cheers,
>>> Alex
>>>
>>>
>>> On Tue, Jun 21, 2016 at 3:06 PM, Aliaksei Syrel <alex.syrel(a)gmail.com>
>>> wrote:
>>> >
>>> > Hello Clement
>>> >
>>> > restoreAfter: is not only for transformation. It also restores
>>> clipping - that is why we need restoreAfter. (uses push and pop state).
>>> Having that clipping region is an arbitrary path there is no way to avoid
>>> pop and push state - which costs a lot in Cairo. It is slow because Cairo
>>> and Athens are statefull - which is bad for rendering a composition of
>>> arbitrary elements.
>>> >
>>> > Right now there is a huge work going on new Sparta - it will be almost
>>> stateless and will support a wide variety of backends (Cairo, Skia,
>>> CoreGraphics and so on).
>>> > Current Sparta-Cairo is an experiment which goal was to support
>>> clipping by arbitrary path. We learned that it is slow because of
>>> statefullness.
>>> >
>>> > In order to fill a square with color we have to perform the following
>>> ffi native calls:
>>> > - set color
>>> > - set shape
>>> > - fill
>>> >
>>> > Even in the most simple case we need 3 calls. When it gets more
>>> complicated there are even more calls. Preparing drawing context with
>>> multiple calls to perform an operation is a consequence of statefullness.
>>> >
>>> > Modern browsers use stateless canvases to render content. Idea is
>>> simple: one call per drawing operation. Example above would look like:
>>> > - fillPath(aPath, aPattern, drawOptions).
>>> > That is it.
>>> > Second benefit is that we don't need to care about shared state
>>> between drawing operations, no more push/pop state and as result huge
>>> performance boost.
>>> >
>>> > Cheers
>>> > Alex
>>> >
>>> > On Jun 21, 2016 1:34 PM, "Clément Bera" <bera.clement(a)gmail.com>
>>> wrote:
>>> >>
>>> >> Hi,
>>> >>
>>> >> Thanks Doru it now works for me ! Very exciting indeed.
>>> >>
>>> >> I have a few questions:
>>> >>
>>> >> 1. In Pharo the World menu is accessed through left-click and
>>> right-click provides the world contents. In Bloc, right-click displays the
>>> world menu and left-click does nothing. Is it expected / some design choice
>>> or just convenience for debugging ? At first glance I thought Bloc didn't
>>> work because I was left-clicking like in Pharo.
>>> >>
>>> >> 2. Can we change the fonts in Bloc ?
>>> >>
>>> >> 3. When (in Bloc) I go to World menu>>help>>Help browser>>Bloc>>Grid
>>> Layout, I find the following license:
>>> >>
>>> >> Copyright (C) 2011 The Android Open Source Project
>>> >>
>>> >> Licensed under the Apache License, Version 2.0 (the "License");
>>> >> you may not use this file except in compliance with the License.
>>> >> You may obtain a copy of the License at
>>> >>
>>> >> http://www.apache.org/licenses/LICENSE-2.0
>>> >>
>>> >> Unless required by applicable law or agreed to in writing, software
>>> >> distributed under the License is distributed on an "AS IS" BASIS,
>>> >> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>>> implied.
>>> >> See the License for the specific language governing permissions and
>>> >> limitations under the License.
>>> >>
>>> >> Does it mean Bloc is not under MIT ? Or is it completely unrelated ?
>>> >>
>>> >> 4. What is Cairo-Sparta ? What is the difference with Athens ?
>>> >>
>>> >> 5. It seems that the normal Pharo image in idle spends between 4 and
>>> 5% of execution time in the Morphic process, while in Bloc it seems that
>>> between 17 and 23% of execution time is in the main bloc loop
>>> (BlBoostedMainLoopManager). Isn't that a lot ?
>>> >> - It's interesting to see that 28% of execution time spent in Bloc is
>>> in BlSpartaCanvas>>#restoreAfter:. In the 2D video games I wrote (both
>>> using Cairo and Javascript canvas) I avoided using #restoreAfter: and
>>> instead in method such as BlSpartaCanvas >>#transform:during: I used a
>>> reverse transformation to restore the state. I am wondering if that's
>>> possible in large graphic framework like Bloc, that would save a quarter of
>>> the time. Maybe it's possible only in simple 2D video games.
>>> >> - Aside from restoreAfter, there is no obvious ways on how to save
>>> time...
>>> >>
>>> >> Well keep up the good work.
>>> >>
>>> >>
>>> >>
>>> >> On Tue, Jun 21, 2016 at 11:36 AM, Tudor Girba <tudor(a)tudorgirba.com>
>>> wrote:
>>> >>>
>>> >>> Hi,
>>> >>>
>>> >>> Thanks for looking at it.
>>> >>>
>>> >>> You have to first switch to the Bloc space:
>>> >>>
>>> >>> World Menu / Bloc / Switch to Bloc
>>> >>> (I think there is a problem right now with OS-Window)
>>> >>>
>>> >>> Then, from Nautilus, you can pick an example and Inspect
>>> Return-Values to get the object.
>>> >>>
>>> >>> Cheers,
>>> >>> Doru
>>> >>>
>>> >>>
>>> >>>
>>> >>> On Jun 21, 2016, at 10:42 AM, Clément Bera <bera.clement(a)gmail.com>
>>> wrote:
>>> >>>
>>> >>> Hi Doru,
>>> >>>
>>> >>> Ok I understand I have issues keeping comments updated in my
>>> projects too :-). Do your best.
>>> >>>
>>> >>> I tried to run the examples from Bloc-Core-Examples but they didn't
>>> work. I downloaded the latest Pharo-Spur32 VM from files.pharo.org and
>>> retried and it still didn't work.
>>> >>>
>>> >>> How can I have the examples running ?
>>> >>>
>>> >>> Here is the errors I have for the first two examples of
>>> BlExampleElementWithBorderAndFill.
>>> >>>
>>> >>> <Screen Shot 2016-06-21 at 10.40.39 AM.png>
>>> >>>
>>> >>> Here are the examples:
>>> >>>
>>> >>> <Screen Shot 2016-06-21 at 10.37.49 AM.png>
>>> >>>
>>> >>>
>>> >>> Best,
>>> >>>
>>> >>> Clement
>>> >>>
>>> >>> On Tue, Jun 21, 2016 at 10:09 AM, Tudor Girba <tudor(a)tudorgirba.com>
>>> wrote:
>>> >>> Hi Clement,
>>> >>>
>>> >>> Thanks for looking at it.
>>> >>>
>>> >>> Indeed, there arenât many comments. A large part of the engine got
>>> rewritten twice over the last months, and many of the previous comments
>>> were no longer up to date.
>>> >>>
>>> >>> And no, the policy is not to not write comments :), but right now
>>> the priority is on building examples. which you will find in the
>>> Bloc-Core-Examples classes and their subclasses.
>>> >>>
>>> >>> Cheers,
>>> >>> Doru
>>> >>>
>>> >>>
>>> >>>
>>> >>> > On Jun 21, 2016, at 9:39 AM, Clément Bera <bera.clement(a)gmail.com>
>>> wrote:
>>> >>> >
>>> >>> > Hi Doru,
>>> >>> >
>>> >>> > I downloaded the image, opened Nautilus, clicked on the package
>>> named 'Bloc-Core' and all the classes I can see have no class comments (See
>>> screenshot below). Is there a 'No class comment' policy in Bloc ? Or maybe
>>> the top classes shown are just non representative of the class comments of
>>> the overall framework.
>>> >>> >
>>> >>> > <Screen Shot 2016-06-21 at 9.33.31 AM.png>
>>> >>> >
>>> >>> > On Tue, Jun 21, 2016 at 7:42 AM, Tudor Girba <tudor(a)tudorgirba.com>
>>> wrote:
>>> >>> > Hi,
>>> >>> >
>>> >>> > Here is a brief update on the status of Bloc.
>>> >>> >
>>> >>> > Several of us came together to form a team and work to see Bloc in
>>> Pharo 6 at least as a preview. The team communication happens via Slack in
>>> a dedicated team, and the goal is to have regular progress/feedback
>>> communication on this mailing list.
>>> >>> >
>>> >>> > Just because we have a dedicated team does not mean that your
>>> feedback is important. In fact, over the last months, Bloc was redesigned
>>> again to include the feedback we got here. So, now we have:
>>> >>> > - Element is responsible for drawing (no more shape)
>>> >>> > - Interaction area and clipping area are now distinct
>>> >>> >
>>> >>> > You can find the current build on top of Pharo 6 here:
>>> >>> >
>>> https://ci.inria.fr/moose/job/bloc/PHARO=alpha,VERSION=development,VM=vmLat…
>>> >>> >
>>> >>> > The current team focus goes like this:
>>> >>> > - Alain is looking at events,
>>> >>> > - Glenn is playing with creating new elements in Bloc and
>>> refactoring the way we can manage ,
>>> >>> > - Alex (Syrel) and Esteban are working on the backend to make
>>> rendering faster,
>>> >>> > - Doru is pretending to do something useful.
>>> >>> >
>>> >>> > Cheers,
>>> >>> > Doru
>>> >>> >
>>> >>> >
>>> >>> > --
>>> >>> > www.tudorgirba.com
>>> >>> > www.feenk.com
>>> >>> >
>>> >>> > "What we can governs what we wish."
>>> >>> >
>>> >>> >
>>> >>> >
>>> >>> >
>>> >>> >
>>> >>> >
>>> >>>
>>> >>> --
>>> >>> www.tudorgirba.com
>>> >>> www.feenk.com
>>> >>>
>>> >>> "Presenting is storytelling."
>>> >>>
>>> >>>
>>> >>>
>>> >>>
>>> >>> --
>>> >>> www.tudorgirba.com
>>> >>> www.feenk.com
>>> >>>
>>> >>> "Problem solving should be focused on describing
>>> >>> the problem in a way that makes the solution obvious."
>>> >>>
>>> >>>
>>> >>>
>>> >>>
>>> >>>
>>> >>
>>>
>>
>>
>
June 21, 2016
Re: [Pharo-dev] bloc status update: june 2016
by Aliaksei Syrel
>
> What is Cairo-Sparta ? What is the difference with Athens ?
Sparta-Canvas is just an implementation of Athens API that uses Cairo as
backend. It is the same as Athens-Cairo, with a few small differences.
- Sparta has different meaning of clipBy: during: In Athens clipBy: only
accepts a Rectangle, in Sparta it is an arbitrary Path.
- Sparta has some experimental api just for fun and to find out if there
is a way to render faster.
Since Athens is used in (many?) external packages it is not possible to
redefine clipBy: . Also having a separate implementation of Athens API
(Sparta-Cairo) allows developers of Bloc to iterate faster and save time on
integration process.
Cheers,
Alex
On Tue, Jun 21, 2016 at 3:46 PM, Aliaksei Syrel <alex.syrel(a)gmail.com>
wrote:
> Can we change the fonts in Bloc ?
>
>
> Bloc is not new Pharo :) It is also not Morphic. Bloc is very low level
> engine that does not have theme and widgets.
> Morphic apps (like Nautilus) are just running in compatibility mode and
> are rendered on Athens canvas. Existing Pharo applications use fonts
> provided by StandardFonts that can be changed from Menu > Settings.
>
> Cheers,
> Alex
>
> On Tue, Jun 21, 2016 at 3:42 PM, Aliaksei Syrel <alex.syrel(a)gmail.com>
> wrote:
>
>> When (in Bloc) I go to World menu>>help>>Help browser>>Bloc>>Grid Layout,
>>> I find the following license:
>>
>>
>> It is important to mention that Grid is more general than Table layout.
>> It allows developers to create complex UI with less nested elements
>> compared to the case when Table layout would be used instead. Reducing
>> amount of nested/composed elements leads to performance boost (we have less
>> elements in the tree) and reduces overall complexity - no need to use
>> "hack" elements that have no intent and not part of real UI.
>>
>> Since Grid requires more complex (compared to table) computations we
>> should take care about performance. General complexity of algorithm to
>> compute distribution of cell sizes is O(n^2) - too much. Google already
>> invested time (money) in this problem and developed a special case
>> algorithm with linear complexity. It is used in Grid layout in bloc which
>> means that we have a derivative work and need to ship original licence.
>>
>> Here is google's documentation:
>>
>>
>>> Bellman-Ford variant - modified to reduce typical running time from
>>> O(N^2) to O(N)
>>> GridLayout converts its requirements into a system of linear constraints
>>> of the
>>> form:
>>> x[i] - x[j] < a[k]
>>>
>>
>>
>>> Where the x[i] are variables and the a[k] are constants.
>>> For example, if the variables were instead labeled x, y, z we might have:
>>> x - y < 17
>>> y - z < 23
>>> z - x < 42
>>>
>>
>>
>>> This is a special case of the Linear Programming problem that is, in
>>> turn,
>>> equivalent to the single-source shortest paths problem on a digraph, for
>>> which the O(n^2) Bellman-Ford algorithm the most commonly used general
>>> solution.
>>
>>
>> Apache 2.0 is compatible/can be used with MIT - as far as I can tell
>> according to answers on Internet. Maybe a layer can answer more correctly.
>>
>> Cheers,
>> Alex
>>
>>
>> On Tue, Jun 21, 2016 at 3:06 PM, Aliaksei Syrel <alex.syrel(a)gmail.com>
>> wrote:
>> >
>> > Hello Clement
>> >
>> > restoreAfter: is not only for transformation. It also restores clipping
>> - that is why we need restoreAfter. (uses push and pop state). Having that
>> clipping region is an arbitrary path there is no way to avoid pop and push
>> state - which costs a lot in Cairo. It is slow because Cairo and Athens are
>> statefull - which is bad for rendering a composition of arbitrary elements.
>> >
>> > Right now there is a huge work going on new Sparta - it will be almost
>> stateless and will support a wide variety of backends (Cairo, Skia,
>> CoreGraphics and so on).
>> > Current Sparta-Cairo is an experiment which goal was to support
>> clipping by arbitrary path. We learned that it is slow because of
>> statefullness.
>> >
>> > In order to fill a square with color we have to perform the following
>> ffi native calls:
>> > - set color
>> > - set shape
>> > - fill
>> >
>> > Even in the most simple case we need 3 calls. When it gets more
>> complicated there are even more calls. Preparing drawing context with
>> multiple calls to perform an operation is a consequence of statefullness.
>> >
>> > Modern browsers use stateless canvases to render content. Idea is
>> simple: one call per drawing operation. Example above would look like:
>> > - fillPath(aPath, aPattern, drawOptions).
>> > That is it.
>> > Second benefit is that we don't need to care about shared state between
>> drawing operations, no more push/pop state and as result huge performance
>> boost.
>> >
>> > Cheers
>> > Alex
>> >
>> > On Jun 21, 2016 1:34 PM, "Clément Bera" <bera.clement(a)gmail.com> wrote:
>> >>
>> >> Hi,
>> >>
>> >> Thanks Doru it now works for me ! Very exciting indeed.
>> >>
>> >> I have a few questions:
>> >>
>> >> 1. In Pharo the World menu is accessed through left-click and
>> right-click provides the world contents. In Bloc, right-click displays the
>> world menu and left-click does nothing. Is it expected / some design choice
>> or just convenience for debugging ? At first glance I thought Bloc didn't
>> work because I was left-clicking like in Pharo.
>> >>
>> >> 2. Can we change the fonts in Bloc ?
>> >>
>> >> 3. When (in Bloc) I go to World menu>>help>>Help browser>>Bloc>>Grid
>> Layout, I find the following license:
>> >>
>> >> Copyright (C) 2011 The Android Open Source Project
>> >>
>> >> Licensed under the Apache License, Version 2.0 (the "License");
>> >> you may not use this file except in compliance with the License.
>> >> You may obtain a copy of the License at
>> >>
>> >> http://www.apache.org/licenses/LICENSE-2.0
>> >>
>> >> Unless required by applicable law or agreed to in writing, software
>> >> distributed under the License is distributed on an "AS IS" BASIS,
>> >> WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
>> implied.
>> >> See the License for the specific language governing permissions and
>> >> limitations under the License.
>> >>
>> >> Does it mean Bloc is not under MIT ? Or is it completely unrelated ?
>> >>
>> >> 4. What is Cairo-Sparta ? What is the difference with Athens ?
>> >>
>> >> 5. It seems that the normal Pharo image in idle spends between 4 and
>> 5% of execution time in the Morphic process, while in Bloc it seems that
>> between 17 and 23% of execution time is in the main bloc loop
>> (BlBoostedMainLoopManager). Isn't that a lot ?
>> >> - It's interesting to see that 28% of execution time spent in Bloc is
>> in BlSpartaCanvas>>#restoreAfter:. In the 2D video games I wrote (both
>> using Cairo and Javascript canvas) I avoided using #restoreAfter: and
>> instead in method such as BlSpartaCanvas >>#transform:during: I used a
>> reverse transformation to restore the state. I am wondering if that's
>> possible in large graphic framework like Bloc, that would save a quarter of
>> the time. Maybe it's possible only in simple 2D video games.
>> >> - Aside from restoreAfter, there is no obvious ways on how to save
>> time...
>> >>
>> >> Well keep up the good work.
>> >>
>> >>
>> >>
>> >> On Tue, Jun 21, 2016 at 11:36 AM, Tudor Girba <tudor(a)tudorgirba.com>
>> wrote:
>> >>>
>> >>> Hi,
>> >>>
>> >>> Thanks for looking at it.
>> >>>
>> >>> You have to first switch to the Bloc space:
>> >>>
>> >>> World Menu / Bloc / Switch to Bloc
>> >>> (I think there is a problem right now with OS-Window)
>> >>>
>> >>> Then, from Nautilus, you can pick an example and Inspect
>> Return-Values to get the object.
>> >>>
>> >>> Cheers,
>> >>> Doru
>> >>>
>> >>>
>> >>>
>> >>> On Jun 21, 2016, at 10:42 AM, Clément Bera <bera.clement(a)gmail.com>
>> wrote:
>> >>>
>> >>> Hi Doru,
>> >>>
>> >>> Ok I understand I have issues keeping comments updated in my projects
>> too :-). Do your best.
>> >>>
>> >>> I tried to run the examples from Bloc-Core-Examples but they didn't
>> work. I downloaded the latest Pharo-Spur32 VM from files.pharo.org and
>> retried and it still didn't work.
>> >>>
>> >>> How can I have the examples running ?
>> >>>
>> >>> Here is the errors I have for the first two examples of
>> BlExampleElementWithBorderAndFill.
>> >>>
>> >>> <Screen Shot 2016-06-21 at 10.40.39 AM.png>
>> >>>
>> >>> Here are the examples:
>> >>>
>> >>> <Screen Shot 2016-06-21 at 10.37.49 AM.png>
>> >>>
>> >>>
>> >>> Best,
>> >>>
>> >>> Clement
>> >>>
>> >>> On Tue, Jun 21, 2016 at 10:09 AM, Tudor Girba <tudor(a)tudorgirba.com>
>> wrote:
>> >>> Hi Clement,
>> >>>
>> >>> Thanks for looking at it.
>> >>>
>> >>> Indeed, there arenât many comments. A large part of the engine got
>> rewritten twice over the last months, and many of the previous comments
>> were no longer up to date.
>> >>>
>> >>> And no, the policy is not to not write comments :), but right now the
>> priority is on building examples. which you will find in the
>> Bloc-Core-Examples classes and their subclasses.
>> >>>
>> >>> Cheers,
>> >>> Doru
>> >>>
>> >>>
>> >>>
>> >>> > On Jun 21, 2016, at 9:39 AM, Clément Bera <bera.clement(a)gmail.com>
>> wrote:
>> >>> >
>> >>> > Hi Doru,
>> >>> >
>> >>> > I downloaded the image, opened Nautilus, clicked on the package
>> named 'Bloc-Core' and all the classes I can see have no class comments (See
>> screenshot below). Is there a 'No class comment' policy in Bloc ? Or maybe
>> the top classes shown are just non representative of the class comments of
>> the overall framework.
>> >>> >
>> >>> > <Screen Shot 2016-06-21 at 9.33.31 AM.png>
>> >>> >
>> >>> > On Tue, Jun 21, 2016 at 7:42 AM, Tudor Girba <tudor(a)tudorgirba.com>
>> wrote:
>> >>> > Hi,
>> >>> >
>> >>> > Here is a brief update on the status of Bloc.
>> >>> >
>> >>> > Several of us came together to form a team and work to see Bloc in
>> Pharo 6 at least as a preview. The team communication happens via Slack in
>> a dedicated team, and the goal is to have regular progress/feedback
>> communication on this mailing list.
>> >>> >
>> >>> > Just because we have a dedicated team does not mean that your
>> feedback is important. In fact, over the last months, Bloc was redesigned
>> again to include the feedback we got here. So, now we have:
>> >>> > - Element is responsible for drawing (no more shape)
>> >>> > - Interaction area and clipping area are now distinct
>> >>> >
>> >>> > You can find the current build on top of Pharo 6 here:
>> >>> >
>> https://ci.inria.fr/moose/job/bloc/PHARO=alpha,VERSION=development,VM=vmLat…
>> >>> >
>> >>> > The current team focus goes like this:
>> >>> > - Alain is looking at events,
>> >>> > - Glenn is playing with creating new elements in Bloc and
>> refactoring the way we can manage ,
>> >>> > - Alex (Syrel) and Esteban are working on the backend to make
>> rendering faster,
>> >>> > - Doru is pretending to do something useful.
>> >>> >
>> >>> > Cheers,
>> >>> > Doru
>> >>> >
>> >>> >
>> >>> > --
>> >>> > www.tudorgirba.com
>> >>> > www.feenk.com
>> >>> >
>> >>> > "What we can governs what we wish."
>> >>> >
>> >>> >
>> >>> >
>> >>> >
>> >>> >
>> >>> >
>> >>>
>> >>> --
>> >>> www.tudorgirba.com
>> >>> www.feenk.com
>> >>>
>> >>> "Presenting is storytelling."
>> >>>
>> >>>
>> >>>
>> >>>
>> >>> --
>> >>> www.tudorgirba.com
>> >>> www.feenk.com
>> >>>
>> >>> "Problem solving should be focused on describing
>> >>> the problem in a way that makes the solution obvious."
>> >>>
>> >>>
>> >>>
>> >>>
>> >>>
>> >>
>>
>
>
June 21, 2016
Re: [Pharo-dev] System and user processe
by Max Leske
>> Message: 17
>> Date: Tue, 21 Jun 2016 00:33:17 -0700 (PDT)
>> From: "marcel.taeumel" <Marcel.Taeumel(a)hpi.de>
>> Subject: [squeak-dev] Re: [Vm-dev] System and user processes
>> To: squeak-dev(a)lists.squeakfoundation.org
>> Message-ID: <1466494397918-4902025.post(a)n4.nabble.com>
>> Content-Type: text/plain; charset=UTF-8
>>
>> Chris Muller-3 wrote
>> Hi Max, I had a similar idea, and made a ClientProcess class. Its
>> primary purpose is to provide a nice wrapping API for *users* to
>> manage their "background running tasks" (i.e., #start, #stop, #pause,
>> #resume, #progress, #priority adjustment), as well as a nice API for
>> *developers* to report its progress via a simple signaling mechanism,
>> which also gives the user all the performance stats for "free" too
>> like #unitsCompleted, #runningTime, #ratePerSecond, #remainingTime,
>> etc.
>>
>> On Sun, Jun 19, 2016 at 4:03 AM, Max Leske <
>>
>> maxleske@
>>
>> > wrote:
>>
>> Hi,
>>
>> In Pharo and Squeak we have no separation between processes that belong
>> to the IDE, tools etc. and processes that are spawned as part of an
>> application. Iâd like to know your opinion on the following (rough) idea:
>>
>> 1. We introduce two subclasses of Process: SystemProcess and UserProcess
>> 2. We define #isSystemProcess and #isUserProcess
>> 3. We introduce #newSystemProcess and #newUserProcess
>> 4. We deprecate #newProcess and delegate to #newUserProcess (thereby
>> modifying all users of #forkXXX to yield instances of UserProcess)
>>
>> Of the following Iâm less sure:
>> 5. We introduce #forkSystemProcess et. al
>>
>> Iâve tried this out in Pharo 6 and there seem to be no problems with the
>> VM. The benefit would be improved separation between system and user
>> space. It would allow us to implement stuff for processes in general
>> (e.g. for the debugger) which we do not want to affect system processes
>> like the UI process or the background process. One concrete example: the
>> process browser could hide all system processes and make them visible on
>> demand (that would greatly improve the view because you can now better
>> find your own processes).
>>
>>
>> Iâm looking forward to your comments.
>>
>> Cheers,
>> Max
>
> Hi Chris,
>
> Hmm... I would implement such an API rather via composition than
> inheritance. Such a task does not necessarily have to run in the same image
> but could also be accomplished on another machine. OSProcess has RemoteTask
> for this. Inheritance would make things complicated once one would decide to
> not carry out the computation as a Squeak process.
>
> I do like Tony's idea of process groups. We could think this one step
> further an add multiple tags (symbols?) to processes to support
> fine-granular or cross-cutting classifications. Tools like the process
> browser could show these tags, group by them, etc. There could be tags to
> identify processes that would stop working once you close the Squeak image
> (e.g. "not resumable")... Hmmm... Application developers could use tags to
> provide hints for other developers and users.
>
> Best,
> Marcel
Good point. Inheritance is nice but as for our infamous stream hierarchy processes would probably need to be grouped by different traits. But I think that groups and tags may be two different things. Tonyâs âcurrent process groupâ for instance would have to implemented as a special tag already, unless a new process simply inherited all tags.
In Pharo (I donât know about Squeak) we now have a session manager that can be asked if the current session has changed, i.e. whether the image has been restarted. Now, instead of checking in with the session manager explicitly I could use a âsession dependantâ process, which terminates when the session changes.
Cheers,
Max
June 21, 2016