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
August 2017
- 787 messages
Re: [Pharo-dev] [CfP Deadline Extension] Workshop on Meta-Programming Techniques and Reflection, Deadline August 20
by henry
Here would be my abstract. Perhaps I will continue, though the running system is incomplete, at least the rational and design could be discussed.
- HH
> -------- Original Message --------
> Subject: Re: [Pharo-dev] [CfP Deadline Extension] Workshop on Meta-Programming Techniques and Reflection, Deadline August 20
> Local Time: August 16, 2017 6:48 AM
> UTC Time: August 16, 2017 10:48 AM
> From: henry(a)callistohouse.club
> To: Pharo Development List <pharo-dev(a)lists.pharo.org>
> The general-purpose Squeak developers list <squeak-dev(a)lists.squeakfoundation.org>
>
> I was thinking of possibly submitting, yet having never done so before, I find the amount of documentation learning just to submit in acceptable format has put me off. I just want to focus on building not talking about building. That that limits the degree of spread of my work, so be it.
>
> Thank you anyways, good luck with the conference,
> - HH
>
>> -------- Original Message --------
>> Subject: [Pharo-dev] [CfP Deadline Extension] Workshop on Meta-Programming Techniques and Reflection, Deadline August 20
>> Local Time: August 16, 2017 5:08 AM
>> UTC Time: August 16, 2017 9:08 AM
>> From: smalltalk(a)stefan-marr.de
>> To: Pharo Development List <pharo-dev(a)lists.pharo.org>, The general-purpose Squeak developers list <squeak-dev(a)lists.squeakfoundation.org>
>>
>> Call for Papers: Metaâ17
>> ========================
>>
>> Workshop on Meta-Programming Techniques and Reflection
>>
>> Co-located with SPLASH 2017
>> October 22, 2017, Vancouver, Canada
>>
>> Twitter @MetaAtSPLASH
>> http://2017.splashcon.org/track/meta-2017
>>
>> The heterogeneity of mobile computing, cloud applications, multicore
>> architectures, and other systems leads to increasing complexity of software and
>> requires new approaches to programming languages and software engineering
>> tools. To manage the complexity, we require generic solutions that can be
>> adapted to specific application domains or use cases, making metaprogramming an
>> important topic of research once more. However, the challenges with
>> metaprogramming are still manifold. They start with fundamental issues such as
>> typing of reflective programs, continue with practical concerns such as
>> performance and tooling, and reach into the empirical field to understand how
>> metaprogramming is used and how it affects software maintainability. Thus,
>> while industry accepted metaprogramming on a wide scale with Ruby, Scala,
>> JavaScript and others, academia still needs to answer a wide range of questions
>> to bring it to the same level of convenience, tooling, and programming styles
>> to cope with the increasing complexity of software systems.
>>
>> This workshop aims to explore meta-level technologies that help tackling the
>> heterogeneity, scalability and openness requirements of emerging computations
>> platforms.
>>
>> ### Topics of Interest
>>
>> The workshop is a venue for all approaches that embrace metaprogramming:
>>
>> - from static to dynamic techniques
>> - reflection, meta-level architectures, staging, open language runtimes
>> applications to middleware, frameworks, and DSLs
>> - optimization techniques to minimize runtime overhead
>> - contract systems, or typing of reflective programs
>> reflection and metaobject protocols to enable tooling
>> - case studies and evaluation of such techniques, e.g., to build applications,
>> language extensions, or tools
>> - empirical evaluation of metaprogramming solutions
>> - security in reflective systems and capability-based designs
>> - meta-level architectures and reflective middleware for modern runtime
>> platforms (e.g. IoT, cyber-physical systems, mobile/cloud/grid computing, etc)
>> - surveys, conceptualization, and taxonomization of existing approaches
>>
>> In short, we invite contributions to the workshop on a wide range of topics
>> related to design, implementation, and application of reflective APIs and
>> meta-programming techniques, as well as empirical studies and typing for such
>> systems and languages.
>>
>> ### Workshop Format and Submissions
>>
>> This workshop welcomes the presentation of new ideas and emerging problems as well as mature work as part of a mini-conference format. Furthermore, we plan interactive brainstorming and demonstration sessions between the formal presentations to enable an active exchange of ideas. Therefore, we seek the following kinds of publications:
>>
>> ⢠technical paper: max. 8 pages, excluding references
>> ⢠position and work-in-progress paper: 1-4 pages, excluding references
>> ⢠technology demos or a posters: 1-page abstract
>>
>> All papers are to be submitted using the SIGPLAN acmart style. Please use the provided double-column Latex or Word templates.
>>
>> For the submission, please use the submission system at: https://meta17.hotcrp.com/
>>
>> The workshop technical papers will be published in the ACM DL, if not requested otherwise by the authors. Thus, they will be part of SPLASH workshop proceedings. Demos, posters, position and work-in-progress papers can be submitted on a second, later deadline to discuss the latest results and current work and wonât be included in the ACM DL proceedings.
>>
>> ### Important Dates
>>
>> Abstract Submission: 07 August 2017
>> Paper Submission: 20 August 2017
>> Author Notification: 06 September 2017
>> Position/WIP Paper Deadline: 08 September 2017
>> Camera Ready Deadline: 18 September 2017
>> Position/WIP Notification: 21 September 2017
>>
>> ### Program Committee
>>
>> The program committee consists of the organizers and the following reviewers:
>>
>> Anya Helen Bagge, University of Bergen, Norway
>> Daniele Bonetta, Oracle Labs, Austria
>> Nicolas Cardozo, Universidad de los Andes, Colombia
>> Sebastian Erdweg, TU Delf, The Nederlands
>> Robert Hirschfeld, HPI, Germany
>> Roberto Ierusalimschy, PUC-Rio, Brazil
>> Pablo Inostroza, CWI, The Nederlands
>> Kim Mens, Universite Catholique de Louvain, Belgium
>> Cyrus Omar, Carnegie Mellon University, USA
>> Guillermo Polito, CNRS, France
>> Tiark Rompf, Purdue University, USA
>> Tom Van Cutsem, Nokia Bell Labs, Belgium
>> Takuo Watanabe, Tokyo Institute of Technology, Japan
>>
>> ### Workshop Organizers
>>
>> Shigeru Chiba, University of Tokyo
>> Elisa Gonzalez Boix, Vrije Universiteit Brussel
>> Stefan Marr, Johannes Kepler University Linz
>>
>> ### Contact information
>>
>> For further inquires, do not hesitate to contact the organizers via meta AT soft.vub.ac.be
>>
>> http://2017.splashcon.org/track/meta-2017
>>
>> --
>> Stefan Marr
>> Johannes Kepler Universität Linz
>> http://stefan-marr.de/research/
Aug. 16, 2017
Re: [Pharo-dev] FileSystem fix integration
by Alistair Grant
Hi Stef,
On Wed, Aug 16, 2017 at 12:16:52PM +0200, Stephane Ducasse wrote:
> I'm integrating 20307 and I would like to really thank you for
> - the bug entry description
> - all the comments
> - and tests in the PR.
>
> Tx!!!
Thanks for your kind words.
And for integrating the PR :-)
I've re-submitted 20165 Support segment path printing.
So the open list is:
- https://pharo.fogbugz.com/f/cases/20165/Support-segment-path-printing
- https://github.com/pharo-project/pharo/pull/210
Note that this is a different PR from before, see the comments in
the issue.
- https://pharo.fogbugz.com/f/cases/18084/FileReference-EnsureCreateFile
https://github.com/pharo-project/pharo/pull/133
- https://pharo.fogbugz.com/f/cases/19609/FileReference-base-should-be-before…
https://github.com/pharo-project/pharo/pull/137
- https://pharo.fogbugz.com/f/cases/20294/Add-FileAttributesPlugin-to-the-lin…
This is the first step in fixing FileReference>>isSymlink and
extending support for all file attributes returned by stat() and
lstat().
The parent issue is:
https://pharo.fogbugz.com/f/cases/18279/isSymlink-seems-to-be-broken-on-Lin…
Still to be closed (won't fix):
- https://pharo.fogbugz.com/f/cases/18042
- https://github.com/pharo-project/pharo/pull/75
And waiting on FFI / kernel resolution:
- https://pharo.fogbugz.com/f/cases/5723/
- https://github.com/pharo-project/pharo/pull/92
Cheers,
Alistair
Aug. 16, 2017
Re: [Pharo-dev] Issue 20309 - Startup should run always in a fresh process
by Ben Coman
On Wed, Aug 16, 2017 at 7:46 AM, Guillermo Polito <guillermopolito(a)gmail.com
> wrote:
>
> On Tue, Aug 15, 2017 at 3:25 PM, Ben Coman <btc(a)openinworld.com> wrote:
>
>> In case any of the shutdown/startup scripts use a delay, now or in the
>> future,
>> I'd first try at highestPriority-1 to avoid influence on the
>> DelayScheduler.
>> but then Eliot's suggestion to valueUnpreemptively may avoid that anyway.
>>
>
> Why should a shutdown/startup use a delay?
>
> startup and shutdown should be fast and not be blocked...
>
okay. My response was a just reflex to not assume what some third-party
developer might do. I'm not familiar with the startup/shutdown and had not
considered it deeply.
> If there is a delay on client code, it should block a client thread, not a
> system thread...
>
> Moreover, I see a series of issues in having the delay process running in
> higher priority than the startup. If I'm wrong, please correct me because
> otherwise that means there is something I'm not getting.
>
> First, today the Delay scheduling process is being terminated on shutdown
> and being re-initialized on startup. This means that even if a
> shutdown/startup action tries to use a delay that will fail/block
> indefinitely?
>
That is not how I understand it works. The DelayScheduler process is not
terminated, just suspended by DelayMicrosecondScheduler>>shutdown.
#stopTimerEventLoop is not called during shutdown.
>
> Second, what happens with race conditions between the startup and the
> delay process? If the shutdown is in the middle of terminating the delay
> process and the delay process gets suddenly activated?
>
> stopTimerEventLoop
> "Stop the timer event loop"
>
> timerEventLoop ifNotNil: [ timerEventLoop terminate ].
> timerEventLoop := nil.
>
That is effectively only called when changing which between different
DelayScheduler-implementations.
> Maybe before terminating the timerEventLoop we need to suspend it? That
> will at least atomically (primitive) remove the process from the ready list
> and avoid it from being activated again, no?
>
I'm not completely happy with how the DelayScheduler shutdown happens now,
whether some case might cause timingSemaphore to be triggered to run, and
how #save/#restoreResumptionTimes are called from low-priority code which
feels susceptible to race conditions (although I've not identified any). A
while a go I was playing with the idea that to **ensure** the
timerEventLoop doesn't run, you add another semaphore in middle activated
by #shutDown, - but it was near a Pharo 5 release so I didn't push it in,
and then failed to get back to it. From memory something like...
DelayScheduler>>handleTimerEventLoop: microsecondNowTick
....
suspendDelaysSemaphore ifNotNil: [
self saveResumptionTimes.
suspendDelaysSemaphore wait.
suspendDelaysSemaphore := nil.
self restoreResumptionTimes.
].
DelayScheduler>>shutDown
suspendDelaysSemaphore := Semaphore new.
DelayScheduler>>startUp
suspendDelaysSemaphore signal.
I feel a dedicated sempahore would be more robust to control of the
suspension of the DelayScehduler during shutdown/start, rather than leaving
it waiting on the timingSemaphore that several things interact with and
hoping none signal it.
Maybe it time for me to try for my first Pharo 7 contribution.
cheers -ben
> In any case, I see no good in letting a delay work on startup. That is far
> too low level and the system would be in a far too unstable state to run
> any code other than the startup itself.
>
>
>> btw, what happens if an error occurs inside valueUnpreemptively?
>> Does the normal priority debugger still get to run?
>>
>> cheers -ben
>>
>> On Mon, Aug 14, 2017 at 6:42 PM, Guillermo Polito <
>> guillermopolito(a)gmail.com> wrote:
>>
>>> Hi all,
>>>
>>> I'm proposing a kind-of critical change that I believe is very good for
>>> the health of the system: I want that the startup of the system runs in
>>> maximum priority and becomes non-interruptable.
>>>
>>> Right now, when you save your image, the shutdown and startup are run in
>>> the same priority than the process that triggered the save (usually the ui
>>> or the command line, priority 40). This can cause lots of problems and race
>>> conditions: processes with higher priorities can interrupt the
>>> shutdown/startup and try to do something while the system is unstable. As a
>>> side effect also, when you use extensively the command line, you start
>>> stacking startup contexts from old sessions:
>>>
>>> ...
>>> session 3 ctxt 4 <- This guy makes a save and a new session starts
>>> session 3 ctxt 3
>>> session 3 ctxt 2
>>> session 3 ctxt 1
>>> session 2 ctxt 4 <- This guy makes a save and a new session starts
>>> session 2 ctxt 3
>>> session 2 ctxt 2
>>> session 2 ctxt 1
>>> session 1 ctxt 4 <- This guy makes a save and a new session starts
>>> session 1 ctxt 3
>>> session 1 ctxt 2
>>> session 1 ctxt 1
>>>
>>> Old contexts are never collected, and the objects they referenced
>>> neither.
>>>
>>> To fix these two problems I propose to do every image save/session start
>>> in a new process in maximum priority. That way, other process should not be
>>> able to interrupt the startup process. Moreover, every session
>>> shutdown/startup should happen in a new clean process, to avoid the session
>>> stacking.
>>>
>>> For normal users, this should have no side effect at all. This change
>>> will have a good impact on people working on the debugger and the stack
>>> such as fueling-out the stack because they will have a cleaner stack.
>>>
>>> There is however a side-effect/design point to consider: startup actions
>>> should be quick to run. If a startup action requires to run a long-running
>>> action such as starting a server or managing a command line action, that
>>> should run in a separate process with lower priority (usually
>>> userPriority). In other words, the startup action should create a new
>>> process managing its action.
>>>
>>> If you want to review (and I'd be glad)
>>>
>>> Pull request: https://github.com/pharo-project/pharo/pull/198
>>> Fogbugz issue: https://pharo.fogbugz.com/f/cases/20309
>>> Current validation going on: https://ci.inria.fr/pharo-ci-j
>>> enkins2/job/Test%20pending%20pull%20request%20and%20branch%2
>>> 0Pipeline/view/change-requests/job/PR-198/
>>>
>>> Guille
>>>
>>> --
>>>
>>>
>>>
>>> Guille Polito
>>>
>>>
>>> Research Engineer
>>>
>>> French National Center for Scientific Research - *http://www.cnrs.fr*
>>> <http://www.cnrs.fr>
>>>
>>>
>>>
>>> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>>>
>>> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>>>
>>
>>
>
>
> --
>
>
>
> Guille Polito
>
>
> Research Engineer
>
> French National Center for Scientific Research - *http://www.cnrs.fr*
> <http://www.cnrs.fr>
>
>
>
> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>
> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>
Aug. 16, 2017
Re: [Pharo-dev] @About posting here
by Dimitris Chloupis
calling the system idiotic , you basically say that the people behind this
are idiots. Problem is that you have not much proof to provide any basis
for your arguments and thats plain rude.
World.st forums works, I have used it a lot, before realising that mail was
just more convenient for me.
First of all when I was using it , I did get an email, this is one of the
reason I stopped using it because I got an email for a reply on forum and
another by the mailing list.
In order to subscribe to a thread you have to actually reply on it , maybe
there is also a subscription option I do not remember, but all this is very
standard forum practice.
If a message from the mailing list does not appear in the forum it may
because in some cases the mailing list withholds the message because it
considers it a spam and it awaits approval by the mailing list moderators.
Threads are like on the mailing list based on the title of the email,
usually we do take care to keep the titles consistent , when a discussion
forks the title changes slightly and the forums displays it as separate
thread. However sometimes people do not respect the titles and that can
create a mess but this is not the forum's fault.
"I just ask myself: Why are Smalltalk people with the "best" IDE of all
using
such a crappy system!?"
I never heard or read any pharoer to refer to Pharo as the best IDE. Maybe
you read it somewhere else, but this is not a popular claim here and
frankly its a silly claim when the problems of Pharo are well known and
documented.
Plus what is the best IDE will be based on personal taste, my opinion is
that by very very very far the best IDE is Delphi. But I never liked the
language (Object Pascal) as much as I like Pharo. Lazarus people have done
an amazing job in making a open source fork of it.
Now: Hunt me, shout at me, call me whatever you want! That's fine by me. It
> would be the normal reaction of a crowd if a new sheep dares to criticise
> what the crowd has been doing for long. I don't care!
>
I have criticised Pharo , many , many times. Pharo devs are not shy to
offer their opinion and we had plenty of heated discussions. We do manage
however to keep this polite and civilised most of the time.
I would hunt you but I don't like sheep meat, its too fat for my taste.
Keep criticising but please keep the name calling to a minimum , Pharo like
the vast majority of open source software depends on the good will of its
contributors and we try to keep them around and tempt new ones by making
the community polite and civilised.
Also I should have started with this in the first place, this mailing list
is strictly for the improvement , bug fixing of Pharo and World.st is not
part of it.
Aug. 16, 2017
Re: [Pharo-dev] Ugly smell: really long symbols/selectors
by Guillermo Polito
but wait, I've just shown that more than 2/3s of them are not test
selectors...
On Wed, Aug 16, 2017 at 2:21 PM, Denis Kudriashov <dionisiydk(a)gmail.com>
wrote:
> Which is actually shows that tests as methods are not really good idea.
> Tests are supposed to be documentation but with classic SUnit we have only
> two ways (classes and methods) to decompose them which is definitely not
> enough for docs.
> But ignore it. I am just thinking aloud :)
>
> 2017-08-16 13:47 GMT+02:00 Stephane Ducasse <stepharo.self(a)gmail.com>:
>
>> I often use long selectors for tests :)
>>
>>
>> On Wed, Aug 16, 2017 at 9:49 AM, Guillermo Polito <
>> guillermopolito(a)gmail.com> wrote:
>>
>>> (ByteSymbol allInstances select: [ :e | e size > 50 ]) size
>>> "638"
>>> (ByteSymbol allInstances select: [ :e | e size > 50 and: [ e beginsWith:
>>> 'test' ] ]) size
>>> "200"
>>>
>>> Still 438 non test selectors. Some of them are class creation methods
>>> (#subclass:instanceVariables:...)
>>>
>>> I'm just saying this is a smell, wanted to share some of my catarsis :).
>>>
>>> Guille
>>>
>>> On Wed, Aug 16, 2017 at 9:35 AM, Nicolas Cellier <
>>> nicolas.cellier.aka.nice(a)gmail.com> wrote:
>>>
>>>> Hi Guile,
>>>> have you inspect-ed the list?
>>>> I wouldn't be surprise that these are whole sentence acting as
>>>> specification in unit TestCase,
>>>> like whenBrowserReceiveOpenItShouldReturnTheWindowMorph...
>>>>
>>>> 2017-08-16 3:51 GMT+02:00 Guillermo Polito <guillermopolito(a)gmail.com>:
>>>>
>>>>> #'thisIsAVeryLongSelectorAndIfYoureHereWeHaveOnly49ImagineIH
>>>>> aveToWriteAllThisToArriveTo87ThenThisTo100'
>>>>>
>>>>> (ByteSymbol allInstances select: [ :e | e size > 100 ]) size
>>>>> => 36
>>>>>
>>>>> (ByteSymbol allInstances select: [ :e | e size between: 50 and: 100 ])
>>>>> size
>>>>> => 653
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>>
>>>>>
>>>>> Guille Polito
>>>>>
>>>>>
>>>>> Research Engineer
>>>>>
>>>>> French National Center for Scientific Research - *http://www.cnrs.fr*
>>>>> <http://www.cnrs.fr>
>>>>>
>>>>>
>>>>>
>>>>> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>>>>>
>>>>> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>>
>>>
>>>
>>> Guille Polito
>>>
>>>
>>> Research Engineer
>>>
>>> French National Center for Scientific Research - *http://www.cnrs.fr*
>>> <http://www.cnrs.fr>
>>>
>>>
>>>
>>> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>>>
>>> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>>>
>>
>>
>
--
Guille Polito
Research Engineer
French National Center for Scientific Research - *http://www.cnrs.fr*
<http://www.cnrs.fr>
*Web:* *http://guillep.github.io* <http://guillep.github.io>
*Phone: *+33 06 52 70 66 13
Aug. 16, 2017
Re: [Pharo-dev] @About posting here
by Frank-B
Dear @all three above,
I won't step into such off-topic discussions in a technical forum,
especially not if postings contain such stereotype and almost rassist
propaganda arguments as above.
I hold it avec le grand Voltaire - and I am expecting the same from
everybody I communicate with:
L'original:
"Je hais vos idées, mais je me ferai tuer pour que vous ayez le droit de les
exprimer"
Il existes plusieurs versions et je ne sais pas laquelle est la juste.
That is NOT a Google translation. I went to school in France.
In Deutsch:
"Mein Herr, ich teile Ihre Meinung nicht, aber ich würde mein Leben dafür
einsetzen, daà Sie sie äuÃern dürfen."
My translation to English:
"Monsieur, I do not share your opinion, but I would give my life to defend
that you may express it."
*Tempi passati!*
Today, truth and divergent opinions are the new hate crimes as we see here!
I think it would be far more intelligent and useful to welcome what in
German is called a "Querdenker" literally translated a "cross thinker" (or
lateral thinker?) who in my case does not even expect others to agree.
Très sincèrement - most sincerely - Habe die Ehre!
Frank
>From my side: Case closed!
--
View this message in context: http://forum.world.st/Anybody-using-Orca-Smalltalk-to-JavaScript-tp4960519p…
Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.
Aug. 16, 2017
Re: [Pharo-dev] Ugly smell: really long symbols/selectors
by Denis Kudriashov
Which is actually shows that tests as methods are not really good idea.
Tests are supposed to be documentation but with classic SUnit we have only
two ways (classes and methods) to decompose them which is definitely not
enough for docs.
But ignore it. I am just thinking aloud :)
2017-08-16 13:47 GMT+02:00 Stephane Ducasse <stepharo.self(a)gmail.com>:
> I often use long selectors for tests :)
>
>
> On Wed, Aug 16, 2017 at 9:49 AM, Guillermo Polito <
> guillermopolito(a)gmail.com> wrote:
>
>> (ByteSymbol allInstances select: [ :e | e size > 50 ]) size
>> "638"
>> (ByteSymbol allInstances select: [ :e | e size > 50 and: [ e beginsWith:
>> 'test' ] ]) size
>> "200"
>>
>> Still 438 non test selectors. Some of them are class creation methods
>> (#subclass:instanceVariables:...)
>>
>> I'm just saying this is a smell, wanted to share some of my catarsis :).
>>
>> Guille
>>
>> On Wed, Aug 16, 2017 at 9:35 AM, Nicolas Cellier <
>> nicolas.cellier.aka.nice(a)gmail.com> wrote:
>>
>>> Hi Guile,
>>> have you inspect-ed the list?
>>> I wouldn't be surprise that these are whole sentence acting as
>>> specification in unit TestCase,
>>> like whenBrowserReceiveOpenItShouldReturnTheWindowMorph...
>>>
>>> 2017-08-16 3:51 GMT+02:00 Guillermo Polito <guillermopolito(a)gmail.com>:
>>>
>>>> #'thisIsAVeryLongSelectorAndIfYoureHereWeHaveOnly49ImagineIH
>>>> aveToWriteAllThisToArriveTo87ThenThisTo100'
>>>>
>>>> (ByteSymbol allInstances select: [ :e | e size > 100 ]) size
>>>> => 36
>>>>
>>>> (ByteSymbol allInstances select: [ :e | e size between: 50 and: 100 ])
>>>> size
>>>> => 653
>>>>
>>>>
>>>> --
>>>>
>>>>
>>>>
>>>> Guille Polito
>>>>
>>>>
>>>> Research Engineer
>>>>
>>>> French National Center for Scientific Research - *http://www.cnrs.fr*
>>>> <http://www.cnrs.fr>
>>>>
>>>>
>>>>
>>>> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>>>>
>>>> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>>>>
>>>
>>>
>>
>>
>> --
>>
>>
>>
>> Guille Polito
>>
>>
>> Research Engineer
>>
>> French National Center for Scientific Research - *http://www.cnrs.fr*
>> <http://www.cnrs.fr>
>>
>>
>>
>> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>>
>> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>>
>
>
Aug. 16, 2017
Re: [Pharo-dev] Issue 20309 - Startup should run always in a fresh process
by Denis Kudriashov
>
> From the other side I am not sure why connections should be closed when
>> image is saved. In case of Seamless pool is constructed in the way that it
>> checks if socket is valid before borrow it to user.
>
>
Well, that's a seamless issue, isn't it? Did you try not subscribing
> seamless to the startup to see if it still behaves well?
It is example to show that delay can be used during snapshot logic. And it
can be hidden inside libraries. In my case it is hidden inside ObjectPool.
And I of course not thought about #clear method when setup timeout.
I think implementations of database connection pool can be affected too.
What we have? Voyage?
(I tested Seamless scenario: it works fine without cleanup)
2017-08-16 13:28 GMT+02:00 Guillermo Polito <guillermopolito(a)gmail.com>:
>
>
> On Wed, Aug 16, 2017 at 1:21 PM, Denis Kudriashov <dionisiydk(a)gmail.com>
> wrote:
>
>> 2017-08-16 12:28 GMT+02:00 Guillermo Polito <guillermopolito(a)gmail.com>:
>>
>>>
>>>
>>> On Wed, Aug 16, 2017 at 12:13 PM, Denis Kudriashov <dionisiydk(a)gmail.com
>>> > wrote:
>>>
>>>>
>>>>
>>>> 2017-08-16 12:02 GMT+02:00 Guillermo Polito <guillermopolito(a)gmail.com>
>>>> :
>>>>
>>>>>
>>>>>
>>>>> On Wed, Aug 16, 2017 at 10:50 AM, Denis Kudriashov <
>>>>> dionisiydk(a)gmail.com> wrote:
>>>>>
>>>>>> There is possibility where delay can be used during startup/shutdown.
>>>>>> Library can clean resources which are managed by kind of pool which
>>>>>> organizes timeout logic to enter synchronization monitor.
>>>>>>
>>>>>> I checked Seamless which manages connections this way. But I not
>>>>>> found any issue there.
>>>>>>
>>>>>
>>>>> Can you explain this in more detail? I want to know exactly what
>>>>> "clean resources", "kind of pool" and "timeout logic to enter
>>>>> synchronization monitor" mean concretely.
>>>>>
>>>>> Also, how are you subscribing seamless to the startup list?
>>>>>
>>>>
>>>> Seamless server cleans all opened connections on image save. It
>>>> registers using:
>>>>
>>>> SessionManager default registerNetworkClassNamed: self name
>>>>
>>>> I copied this logic from ZnServer.
>>>> But Seamless manages connections using ObjectPool. So when image save
>>>> is performed "connectionPool clear" is evaluated. It closes connections and
>>>> reset all caches. Problem that ObjectPool is protected by Monitor with
>>>> timeout option. And #clear method enters this monitor. It is possible that
>>>> at the time of image save monitor will be busy and #clear method will wait
>>>> for delay to enter critical section.
>>>>
>>>>
>>> Does this means that there may be a timeout while closing connections
>>> during shutdown?
>>> Because in that case the session manager will continue shutting down
>>> things and seamless may be not fully cleaned up upon next startup.
>>>
>>
>> Yes. It is possible. But it looks like very rare case. Interesting if
>> there is real solution to this.
>>
>
> Well... maybe we need some actions that can "cancel" the shutdown? Like in
> the operating system, when there is an app that cannot be closed, it asks
> you to force close or not...
>
> Otherwise, I'd advice that at shutdown seamless should be in any case
> safer and avoid that case. Maybe you want to clear the pool without a
> timeout? Maybe you want to force kill connections without waiting for them
> (because they may never end)?
>
>
>> From the other side I am not sure why connections should be closed when
>> image is saved. In case of Seamless pool is constructed in the way that it
>> checks if socket is valid before borrow it to user.
>>
>
> Well, that's a seamless issue, isn't it? Did you try not subscribing
> seamless to the startup to see if it still behaves well?
>
>
>>
>>
>>>
>>>
>>>>
>>>>
>>>>>
>>>>>>
>>>>>>
>>>>>> 2017-08-16 1:46 GMT+02:00 Guillermo Polito <guillermopolito(a)gmail.com
>>>>>> >:
>>>>>>
>>>>>>>
>>>>>>> On Tue, Aug 15, 2017 at 3:25 PM, Ben Coman <btc(a)openinworld.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> In case any of the shutdown/startup scripts use a delay, now or in
>>>>>>>> the future,
>>>>>>>> I'd first try at highestPriority-1 to avoid influence on the
>>>>>>>> DelayScheduler.
>>>>>>>> but then Eliot's suggestion to valueUnpreemptively may avoid that
>>>>>>>> anyway.
>>>>>>>>
>>>>>>>
>>>>>>> Why should a shutdown/startup use a delay? startup and shutdown
>>>>>>> should be fast and not be blocked... If there is a delay on client code, it
>>>>>>> should block a client thread, not a system thread...
>>>>>>>
>>>>>>> Moreover, I see a series of issues in having the delay process
>>>>>>> running in higher priority than the startup. If I'm wrong, please correct
>>>>>>> me because otherwise that means there is something I'm not getting.
>>>>>>>
>>>>>>> First, today the Delay scheduling process is being terminated on
>>>>>>> shutdown and being re-initialized on startup. This means that even if a
>>>>>>> shutdown/startup action tries to use a delay that will fail/block
>>>>>>> indefinitely?
>>>>>>>
>>>>>>> Second, what happens with race conditions between the startup and
>>>>>>> the delay process? If the shutdown is in the middle of terminating the
>>>>>>> delay process and the delay process gets suddenly activated?
>>>>>>>
>>>>>>> stopTimerEventLoop
>>>>>>> "Stop the timer event loop"
>>>>>>>
>>>>>>> timerEventLoop ifNotNil: [ timerEventLoop terminate ].
>>>>>>> timerEventLoop := nil.
>>>>>>>
>>>>>>> Maybe before terminating the timerEventLoop we need to suspend it?
>>>>>>> That will at least atomically (primitive) remove the process from the ready
>>>>>>> list and avoid it from being activated again, no?
>>>>>>>
>>>>>>> In any case, I see no good in letting a delay work on startup. That
>>>>>>> is far too low level and the system would be in a far too unstable state to
>>>>>>> run any code other than the startup itself.
>>>>>>>
>>>>>>>
>>>>>>>> btw, what happens if an error occurs inside valueUnpreemptively?
>>>>>>>> Does the normal priority debugger still get to run?
>>>>>>>>
>>>>>>>> cheers -ben
>>>>>>>>
>>>>>>>> On Mon, Aug 14, 2017 at 6:42 PM, Guillermo Polito <
>>>>>>>> guillermopolito(a)gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Hi all,
>>>>>>>>>
>>>>>>>>> I'm proposing a kind-of critical change that I believe is very
>>>>>>>>> good for the health of the system: I want that the startup of the system
>>>>>>>>> runs in maximum priority and becomes non-interruptable.
>>>>>>>>>
>>>>>>>>> Right now, when you save your image, the shutdown and startup are
>>>>>>>>> run in the same priority than the process that triggered the save (usually
>>>>>>>>> the ui or the command line, priority 40). This can cause lots of problems
>>>>>>>>> and race conditions: processes with higher priorities can interrupt the
>>>>>>>>> shutdown/startup and try to do something while the system is unstable. As a
>>>>>>>>> side effect also, when you use extensively the command line, you start
>>>>>>>>> stacking startup contexts from old sessions:
>>>>>>>>>
>>>>>>>>> ...
>>>>>>>>> session 3 ctxt 4 <- This guy makes a save and a new session starts
>>>>>>>>> session 3 ctxt 3
>>>>>>>>> session 3 ctxt 2
>>>>>>>>> session 3 ctxt 1
>>>>>>>>> session 2 ctxt 4 <- This guy makes a save and a new session starts
>>>>>>>>> session 2 ctxt 3
>>>>>>>>> session 2 ctxt 2
>>>>>>>>> session 2 ctxt 1
>>>>>>>>> session 1 ctxt 4 <- This guy makes a save and a new session starts
>>>>>>>>> session 1 ctxt 3
>>>>>>>>> session 1 ctxt 2
>>>>>>>>> session 1 ctxt 1
>>>>>>>>>
>>>>>>>>> Old contexts are never collected, and the objects they referenced
>>>>>>>>> neither.
>>>>>>>>>
>>>>>>>>> To fix these two problems I propose to do every image save/session
>>>>>>>>> start in a new process in maximum priority. That way, other process should
>>>>>>>>> not be able to interrupt the startup process. Moreover, every session
>>>>>>>>> shutdown/startup should happen in a new clean process, to avoid the session
>>>>>>>>> stacking.
>>>>>>>>>
>>>>>>>>> For normal users, this should have no side effect at all. This
>>>>>>>>> change will have a good impact on people working on the debugger and the
>>>>>>>>> stack such as fueling-out the stack because they will have a cleaner stack.
>>>>>>>>>
>>>>>>>>> There is however a side-effect/design point to consider: startup
>>>>>>>>> actions should be quick to run. If a startup action requires to run a
>>>>>>>>> long-running action such as starting a server or managing a command line
>>>>>>>>> action, that should run in a separate process with lower priority (usually
>>>>>>>>> userPriority). In other words, the startup action should create a new
>>>>>>>>> process managing its action.
>>>>>>>>>
>>>>>>>>> If you want to review (and I'd be glad)
>>>>>>>>>
>>>>>>>>> Pull request: https://github.com/pharo-project/pharo/pull/198
>>>>>>>>> Fogbugz issue: https://pharo.fogbugz.com/f/cases/20309
>>>>>>>>> Current validation going on: https://ci.inria.fr/pharo-ci-j
>>>>>>>>> enkins2/job/Test%20pending%20pull%20request%20and%20branch%2
>>>>>>>>> 0Pipeline/view/change-requests/job/PR-198/
>>>>>>>>>
>>>>>>>>> Guille
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Guille Polito
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Research Engineer
>>>>>>>>>
>>>>>>>>> French National Center for Scientific Research -
>>>>>>>>> *http://www.cnrs.fr* <http://www.cnrs.fr>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>>>>>>>>>
>>>>>>>>> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Guille Polito
>>>>>>>
>>>>>>>
>>>>>>> Research Engineer
>>>>>>>
>>>>>>> French National Center for Scientific Research -
>>>>>>> *http://www.cnrs.fr* <http://www.cnrs.fr>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>>>>>>>
>>>>>>> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>>
>>>>>
>>>>> Guille Polito
>>>>>
>>>>>
>>>>> Research Engineer
>>>>>
>>>>> French National Center for Scientific Research - *http://www.cnrs.fr*
>>>>> <http://www.cnrs.fr>
>>>>>
>>>>>
>>>>>
>>>>> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>>>>>
>>>>> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>>
>>>
>>>
>>> Guille Polito
>>>
>>>
>>> Research Engineer
>>>
>>> French National Center for Scientific Research - *http://www.cnrs.fr*
>>> <http://www.cnrs.fr>
>>>
>>>
>>>
>>> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>>>
>>> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>>>
>>
>>
>
>
> --
>
>
>
> Guille Polito
>
>
> Research Engineer
>
> French National Center for Scientific Research - *http://www.cnrs.fr*
> <http://www.cnrs.fr>
>
>
>
> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>
> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>
Aug. 16, 2017
Re: [Pharo-dev] @About posting here
by henry
- HH
> -------- Original Message --------
> Subject: Re: [Pharo-dev] @About posting here
> Local Time: August 16, 2017 7:40 AM
> UTC Time: August 16, 2017 11:40 AM
> From: norbert(a)hartl.name
> To: Pharo Dev <pharo-dev(a)lists.pharo.org>
>
>> Am 16.08.2017 um 13:21 schrieb Guillermo Polito <guillermopolito(a)gmail.com>:
>>
>> Hi Frank,
>>
>> I'll just repeat Stef's message: It's not about being straight or having unpopular opinions. It's about being rude and on the limit of the insult. I feel myself some harshness in your messages, it's like you're saying that everybody but you is stupid. I know that you did not say that "explicitly" but that's the way it feels. And I'm sure I'm not the only one feeling like it.
>>
>> Of course, that did not prevent me to answer you politely, but at the end what will happen is that people will not answer you anymore. Just take into account that if many people think already that your mails are aggressive, there may be some fault on your side too.
>>
>> That said, this does not mean that I want to "censor" you. Just choose better your words but keep the same content.
>
> +1 to all you said.
>
> And I would like to know why every smalltalk troll is german? That's so sad!
I think it is a subset of trolls. Not just smalltalk trolls are German, all trolls are German. Same mentat, from any other LandStuhl, is properly a ghoul, not a troll. I personally think it is because Germans' are taught to never hold their tongue, after WW 1 and 2. I would ask you, have you ever seen a German holding their tonguie? So, I ramble on in hopes you are not so sad.
> Norbert
>
>> On Wed, Aug 16, 2017 at 12:52 PM, Frank-B <frank.berger.software(a)web.de> wrote:
>>
>>> Phil,
>>>
>>> nice attempt to drill and silence me! My advise: They all failed!
>>>
>>> If somebody can't cope with straight critics or unpopular opinions that aint
>>> my fault.
>>>
>>> Frank
>>> who never worried about being labeled and
>>> from a country where free speech is still welcome
>>>
>>> --
>>> View this message in context: http://forum.world.st/Anybody-using-Orca-Smalltalk-to-JavaScript-tp4960519p…
>>> Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.
>>
>> --
>>
>> Guille Polito
>>
>> Research Engineer
>> French National Center for Scientific Research - [http://www.cnrs.fr](http://www.cnrs.fr/)
>>
>> Web: [http://guillep.github.io](http://guillep.github.io/)
>> Phone: +33 06 52 70 66 13
Aug. 16, 2017
Re: [Pharo-dev] Ugly smell: really long symbols/selectors
by Stephane Ducasse
I often use long selectors for tests :)
On Wed, Aug 16, 2017 at 9:49 AM, Guillermo Polito <guillermopolito(a)gmail.com
> wrote:
> (ByteSymbol allInstances select: [ :e | e size > 50 ]) size
> "638"
> (ByteSymbol allInstances select: [ :e | e size > 50 and: [ e beginsWith:
> 'test' ] ]) size
> "200"
>
> Still 438 non test selectors. Some of them are class creation methods
> (#subclass:instanceVariables:...)
>
> I'm just saying this is a smell, wanted to share some of my catarsis :).
>
> Guille
>
> On Wed, Aug 16, 2017 at 9:35 AM, Nicolas Cellier <
> nicolas.cellier.aka.nice(a)gmail.com> wrote:
>
>> Hi Guile,
>> have you inspect-ed the list?
>> I wouldn't be surprise that these are whole sentence acting as
>> specification in unit TestCase,
>> like whenBrowserReceiveOpenItShouldReturnTheWindowMorph...
>>
>> 2017-08-16 3:51 GMT+02:00 Guillermo Polito <guillermopolito(a)gmail.com>:
>>
>>> #'thisIsAVeryLongSelectorAndIfYoureHereWeHaveOnly49ImagineIH
>>> aveToWriteAllThisToArriveTo87ThenThisTo100'
>>>
>>> (ByteSymbol allInstances select: [ :e | e size > 100 ]) size
>>> => 36
>>>
>>> (ByteSymbol allInstances select: [ :e | e size between: 50 and: 100 ])
>>> size
>>> => 653
>>>
>>>
>>> --
>>>
>>>
>>>
>>> Guille Polito
>>>
>>>
>>> Research Engineer
>>>
>>> French National Center for Scientific Research - *http://www.cnrs.fr*
>>> <http://www.cnrs.fr>
>>>
>>>
>>>
>>> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>>>
>>> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>>>
>>
>>
>
>
> --
>
>
>
> Guille Polito
>
>
> Research Engineer
>
> French National Center for Scientific Research - *http://www.cnrs.fr*
> <http://www.cnrs.fr>
>
>
>
> *Web:* *http://guillep.github.io* <http://guillep.github.io>
>
> *Phone: *+33 06 52 70 66 13 <+33%206%2052%2070%2066%2013>
>
Aug. 16, 2017