Pharo-users
By thread
pharo-users@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
July 2017
- 93 participants
- 581 messages
Re: [Pharo-users] Can anyone answer this?
by jWarrior
JWARS has 1.2 million lines of code. The longest method did Object to
Relational database mapping.
--
View this message in context: http://forum.world.st/Can-anyone-answer-this-tp4955861p4955922.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
July 19, 2017
Re: [Pharo-users] Can anyone answer this?
by Stephane Ducasse
I do not see why live coding programming languages could not manage
their source code in versioning control system.
To me, people opposing live coding and released/versioned software are
just **PLAIN** idiots.
Period.
You can have a live reflective system and still want to have a fully
reproducible built system.
This is what we do with Pharo. We manage everything with a version
control system and still Pharo
is fully dynamic. And No not everybody can commit and change Pharo.
About large and complex systems, I heard that an insurance company has
30 Millions lines Smalltalk application.
and this system is live and also versioned! Hopefully.
So do not lose your energy with idiots.
Stef
On Wed, Jul 19, 2017 at 8:18 PM, jWarrior <dmacq(a)erols.com> wrote:
> Well .....
>
> I worked on JWARS for 13 years until the Navy killed it at the end of 2010,
> and I have never heard of Miles Fidelman. JWARS was run almost exclusively
> in SCIFs (secure facilities), and most of the users did not have access to
> the source code. So I do not know where Miles gets his information.
>
> JWARS had extensive version control. All new versions of the main config
> maps were tagged with extensive information about what was included.
>
> I agree with what Richard says below, "I suspect Miles doesn't really
> understand what a âlive coding environmentâ really means.", although I would
> phrase it less gently.
>
>
>
> --
> View this message in context: http://forum.world.st/Can-anyone-answer-this-tp4955861p4955916.html
> Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
>
July 19, 2017
Re: [Pharo-users] Why does debugger browse open on Object?
by Esteban Lorenzano
Hi,
> On 19 Jul 2017, at 19:56, Esteban A. Maringolo <emaringolo(a)gmail.com> wrote:
>
> Hi Tim, all
>
> 2017-07-19 14:34 GMT-03:00 Tim Mackinnon <tim(a)testit.works>:
>> Hi - I've always meant to ask this question as it often catches me out.
>>
>> When you get a typical debugger on doesNotUnderstood: I find that typically I've muddled up a method name - so I want to quickly browse the receiver of my mistake and understand what methods it actually has that I can use.
>>
>> It seems that the browse button is exactly that, and the debugger helpfully shows MyClass(Object) doesNotUnderstand....
>>
>> But browse actually opens on Object >>doesNotUnderstand: which while technically correct is not really that helpful.
>
> Yesterday I was going to ask about this behavior, which has been
> nagging me for some time. I feel better reading it isn't only me who's
> sensitive to this friction.
>
> I don't understand why it is like this, but I assume it is because of
> a common behavior of browsing the receiver object in the stack frame
> without considering particular cases like Object>>doesNotUnderstand:
>
> I'll be happy if you find a way to implement it, as a System Option or
> via a shortcut modifier.
In fact, some years ago Camillo Bruni implemented a solution for this (it was opening the debugger in the place where the DNU was originated) but I think it was deactivated because people was not so happy.
Maybe now is time to retry ;)
Esteban
>
> Regards!
>
> Esteban A. Maringolo
>
July 19, 2017
Re: [Pharo-users] Can anyone answer this?
by jWarrior
Well .....
I worked on JWARS for 13 years until the Navy killed it at the end of 2010,
and I have never heard of Miles Fidelman. JWARS was run almost exclusively
in SCIFs (secure facilities), and most of the users did not have access to
the source code. So I do not know where Miles gets his information.
JWARS had extensive version control. All new versions of the main config
maps were tagged with extensive information about what was included.
I agree with what Richard says below, "I suspect Miles doesn't really
understand what a âlive coding environmentâ really means.", although I would
phrase it less gently.
--
View this message in context: http://forum.world.st/Can-anyone-answer-this-tp4955861p4955916.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
July 19, 2017
Re: [Pharo-users] Why does debugger browse open on Object?
by Esteban A. Maringolo
Hi Tim, all
2017-07-19 14:34 GMT-03:00 Tim Mackinnon <tim(a)testit.works>:
> Hi - I've always meant to ask this question as it often catches me out.
>
> When you get a typical debugger on doesNotUnderstood: I find that typically I've muddled up a method name - so I want to quickly browse the receiver of my mistake and understand what methods it actually has that I can use.
>
> It seems that the browse button is exactly that, and the debugger helpfully shows MyClass(Object) doesNotUnderstand....
>
> But browse actually opens on Object >>doesNotUnderstand: which while technically correct is not really that helpful.
Yesterday I was going to ask about this behavior, which has been
nagging me for some time. I feel better reading it isn't only me who's
sensitive to this friction.
I don't understand why it is like this, but I assume it is because of
a common behavior of browsing the receiver object in the stack frame
without considering particular cases like Object>>doesNotUnderstand:
I'll be happy if you find a way to implement it, as a System Option or
via a shortcut modifier.
Regards!
Esteban A. Maringolo
July 19, 2017
Re: [Pharo-users] Creating the smallest server runtime footprint
by Stephane Ducasse
I'm really curious to see how these numbers will changes with Sista
because pharo will be to start hot from a Jit point of view. So you
will be able to run your app save it and ship it hot with the JIT
optimisation already there.
On Wed, Jul 19, 2017 at 6:20 PM, Tim Mackinnon <tim(a)testit.works> wrote:
> Hi - I neglected to mentioned âthe catchâ with Lambda, next to my results. So on a tiny EC2 instance you get those kinds of results (this is where I measured the numbers of 50ms) - however on Lambda you arenât entirely clear what hardware its running on - and there are 2 aspects to consider - a cold start (where you are allocated a new Lambda instance, and so it has to bring in your deployed package) and then there appears to be a cached start - where it seems that one of your old Lambda environments can be reused. On top of both of these states - there is an extra cost of spawning out to Pharo as its not supported natively.
>
> I mention this in the Readme on the gitlab page (itâs possibly a bit subtle) - but I was pointed to the Sparta GoLang project (who arenât supported natively either) where they have measured that that cost of spawning out to GoLang (and it looks fairly similar for Pharo) is 700ms. Essentially this spawning is the cost of loading up a NodeJS environment (presumably some Docker like image they have already prepared - although they donât reveal how this is done), ârequiringâ the âchild-processâ node module to get an exec method, and then your code to shell out. (In my repo - this is the PharoLambda.js file).
>
> Empirically I am seeing results from 500ms to 1200ms which are in line with Sparta (possibly better? I havenât loaded up a Go environment to understand what they need to package up to deploy an app that can be execâd and how that compares to our 10mb'ish footprint).
>
> If I look at a basic NodeJS hello world app - I see .5ms to 290ms responses - (the min billing unit is 100ms). I got the impression for a recent serverless meet-up that sub 500 is what people aim for. Which means we are at least in the running.
>
> I donât know how sensitive the âoverheadâ load time is due to the package size you deploy (I saw a big increase when I got my package below 10mb) or whether it truly is the NodeJS tax. I would love to get hold of the AWS team and suggest they provide another fixed solution that efficiently execâs in C, a named executable with configurable parameters and the âeventâ parameter serialised in JSON (on the surface it seems overkill to use NodeJS for just that simple operation).
>
> All this said the free tier gives you "1M free requests per month and 400,000 GB-seconds of compute time per monthâ - so assuming we can do interesting things in under a second (which Iâve shown), then you can process 400,000 of them a month for free (which isnât bad really).
>
> Tim
>
>> On 19 Jul 2017, at 13:59, Sven Van Caekenberghe <sven(a)stfx.eu> wrote:
>>
>>
>>> On 19 Jul 2017, at 14:55, Esteban A. Maringolo <emaringolo(a)gmail.com> wrote:
>>>
>>> I don't know how "mainstream" solutions perform on AWS Lambda or EC2,
>>> but this seems really fast to me. 50 ms is great, assuming it bills by
>>> every 100ms, you still have room to perform your computation.
>>
>> Yes, it seems incredibly fast. I'll have to try this myself to check, but I have no time now.
>>
>>> Thank you for pursuing this path, it could open a new territory for
>>> using Pharo at big scale.
>>>
>>> Esteban A. Maringolo
>>>
>>>
>>> 2017-07-17 8:32 GMT-03:00 Tim Mackinnon <tim(a)testit.works>:
>>>> Well Iâve been shooting in the dark a bit - but I also left out the sound
>>>> and display soâs (e.g. -x execlude the following and add back the null so's
>>>>
>>>> zip -r --symlinks ../deploy/$LAMBDA_NAME.zip * -x pharo-local/\* \*.sources
>>>> \*.changes \*.st \*.log
>>>> */libgit2.* */libSDL2* */B3DAccelerator* */JPEGRead* */vm-sound*
>>>> */vm-display* tmp/\* */__MACOSX\*
>>>> - zip -uR ../deploy/$LAMBDA_NAME.zip *-null.so
>>>>
>>>>
>>>> And everything seems to run clean. (Would be useful to get some feedback
>>>> from those in the know - does just leaving out soâs incurred a penalty if
>>>> you donât recompile the VM? Presumably something would get written to std
>>>> error or pharodebug if it was an issue).
>>>>
>>>> In fact my run times on EC2 are pretty impressive:
>>>>
>>>> PharoLambdaMin]$ time ./pharo Pharo.image exec "Lambda processJSON: '{}'"
>>>> {"outputSpeech":{"text":"Good Morning, it's eleven
>>>> twenty-six","type":"PlainText"},"shouldEndSession":true,"card":{"content":"Operation
>>>> Successful","title":"Pharo Lambda","type":"Simple"}}
>>>>
>>>> real 0m0.039s
>>>> user 0m0.028s
>>>> sys 0m0.000s
>>>> [ec2-user@ip-172-31-44-73 PharoLambdaMin]$ time ./pharo Pharo.image exec
>>>> "Lambda processJSON: '{}'"
>>>> {"outputSpeech":{"text":"Good Morning, it's eleven
>>>> twenty-six","type":"PlainText"},"shouldEndSession":true,"card":{"content":"Operation
>>>> Successful","title":"Pharo Lambda","type":"Simple"}}
>>>>
>>>> real 0m0.039s
>>>> user 0m0.020s
>>>> sys 0m0.008s
>>>>
>>>>
>>>> Not bad eh?
>>>>
>>>> Tim
>>>>
>>>> On 17 Jul 2017, at 07:00, Tim Mackinnon <tim(a)testit.works> wrote:
>>>>
>>>> Thanks again Pavel - I'll try the 6.0 step 4 or possibly step 5 with sunit
>>>> (as many libraries don't separate out their tests).
>>>>
>>>> I've also tried leaving out libgit and libsdl2 .so's on my server build and
>>>> that seems fine too - making me wonder what others I can safely leave out?
>>>> Sound is a candidate (but small fry in size but do you need the null
>>>> variant?).
>>>>
>>>> Libcrypto is big - but I wonder if https routines would use that (and it
>>>> sounds server processing'y so maybe best left).
>>>>
>>>> I was hoping to find a list explaining them somewhere - but it remains
>>>> rather mysterious.
>>>>
>>>> However, at this point, I think I may have hit the sweet spot in size where
>>>> AWS seems to load efficiently below a zip of 10mb?
>>>>
>>>> Tim
>>>>
>>>> Sent from my iPhone
>>>>
>>>> On 15 Jul 2017, at 09:35, Pavel Krivanek <pavel.krivanek(a)gmail.com> wrote:
>>>>
>>>> If you want to stay with Pharo 6 image, you can try the bootstrapped version
>>>> of the minimal image:
>>>> https://ci.inria.fr/pharo/view/6.0-SysConf/job/Pharo-6.0-Step-04-01-Configu…
>>>>
>>>> -- Pavel
>>>>
>>>> 2017-07-15 10:33 GMT+02:00 Pavel Krivanek <pavel.krivanek(a)gmail.com>:
>>>>>
>>>>> Try the Pharo 7 metacello image (=Pharo 7 minimal image that the CI is
>>>>> already converting to 64bit). There should be no problem with STON because
>>>>> whole Pharo is loaded into it using metacello and filetree. Pharo 6 minimal
>>>>> image is done differently (by shrinking) and not so well tested.
>>>>>
>>>>> For the conversion of 32-bit image to 64-bit image you need a VMMaker
>>>>> image:
>>>>>
>>>>> https://ci.inria.fr/pharo/job/Spur-Git-Tracker/lastSuccessfulBuild/artifact…
>>>>> and then evaluate:
>>>>> ./pharo generator.image eval "[Spur32to64BitBootstrap new bootstrapImage:
>>>>> 'conversion.image'] on: AssertionFailure do: [ :fail | fail resumeUnchecked:
>>>>> nil ]"
>>>>>
>>>>> -- Pavel
>>>>>
>>>>>
>>>>>
>>>>> 2017-07-15 10:19 GMT+02:00 Tim Mackinnon <tim(a)testit.works>:
>>>>>>
>>>>>> Hi Pavel - thanks for getting me to the point where I could even have a
>>>>>> minimal image. As Iâm on the edge of my Pharo knowledge here, Iâll try and
>>>>>> run with this as best I can.
>>>>>>
>>>>>> Iâd been using the 6.0 image you suggested to me - but maybe I could use
>>>>>> a 70 image with Pharo 6 for a while (until the VM diverges) right?
>>>>>>
>>>>>> The bit I havenât quite understood however, is how the 64bit image is
>>>>>> created - as your reference is to a 32bit version? Is the 64bit one
>>>>>> converted from 32 in a later stage? (For AWS Lambda I need 64bit) - am I
>>>>>> right in thinking the pipeline stage after this one is the one you sent me -
>>>>>> and the travis.yml file shows me what it does? But I canât see a trivis.yml
>>>>>> in the conversion stage so Iâm not sure how it does that. (Question - how do
>>>>>> I see what the pipelines do to answer my own questions?)
>>>>>>
>>>>>> I was hoping that there was a basic image that got me up to metacello
>>>>>> baseline level to load git file tree packages/baselines in my own repo as
>>>>>> well baselines on the internet. The one you sent me is fairly close to that
>>>>>> (its just missing STON in the image and seems to have an issue with
>>>>>> resolving undeclared classes that get loaded in - should do a fogbugz on
>>>>>> that?)
>>>>>>
>>>>>> The follow-on from a metacello image is how we can get people to create
>>>>>> better baselines that give you more minimal loading options (e.g.
>>>>>> conditionally leave out the test cases perhaps)
>>>>>>
>>>>>> Tim
>>>>>>
>>>>>> On 15 Jul 2017, at 08:24, Pavel Krivanek <pavel.krivanek(a)gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>> Hi Tim,
>>>>>>
>>>>>> you can base the your work on the bootstrapped image, see
>>>>>> https://ci.inria.fr/pharo/view/7.0/job/70-Bootstrap-32bit/, file
>>>>>> Pharo7.0-core-*.zip
>>>>>>
>>>>>> This image does not have a lot of basic components like Monticello or
>>>>>> network but it has a compiler so the code can be imported as *.st files.
>>>>>> Then we have Pharo7.0-monticello-*.zip which will be easier to use and
>>>>>> probably can fit your needs. Monticello and network support are included.
>>>>>> But you cannot use baselines nor configurations to load your code.
>>>>>>
>>>>>> -- Pavel
>>>>>>
>>>>>> 2017-07-14 9:59 GMT+02:00 Tim Mackinnon <tim(a)testit.works>:
>>>>>>>
>>>>>>> Hi - buoyed by the success of a minimal image (thanks Pavel), I'm
>>>>>>> wondering if I can get even smaller.
>>>>>>>
>>>>>>> There are lots of .so's in the vm which wouldn't make sense on a server
>>>>>>> once deployed - sound, maybe libgit ...
>>>>>>>
>>>>>>> Is there a list of the essential ones, or tips on what I can strip out
>>>>>>> of the Linux deployment? I also recall that i can leave out .sources and
>>>>>>> .changes as well right?
>>>>>>>
>>>>>>> Tim
>>>>>>>
>>>>>>> Sent from my iPhone
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>
>>
>
>
July 19, 2017
Why does debugger browse open on Object?
by Tim Mackinnon
Hi - I've always meant to ask this question as it often catches me out.
When you get a typical debugger on doesNotUnderstood: I find that typically I've muddled up a method name - so I want to quickly browse the receiver of my mistake and understand what methods it actually has that I can use.
It seems that the browse button is exactly that, and the debugger helpfully shows MyClass(Object) doesNotUnderstand....
But browse actually opens on Object >>doesNotUnderstand: which while technically correct is not really that helpful.
Why isn't there an easy way to open a browser on the real receiver of the message? Am I missing an obvious button, or is it really use Spotter and retype the name of the class?
Interestingly - Create does the useful thing to create a method where you want?
It seems so obvious, but most Smalltalks seem to adopt this approach?
I guess I can add it - but surprised I have to really.
Tim
Sent from my iPhone
July 19, 2017
Re: [Pharo-users] Creating the smallest server runtime footprint
by Tim Mackinnon
Hi - I neglected to mentioned âthe catchâ with Lambda, next to my results. So on a tiny EC2 instance you get those kinds of results (this is where I measured the numbers of 50ms) - however on Lambda you arenât entirely clear what hardware its running on - and there are 2 aspects to consider - a cold start (where you are allocated a new Lambda instance, and so it has to bring in your deployed package) and then there appears to be a cached start - where it seems that one of your old Lambda environments can be reused. On top of both of these states - there is an extra cost of spawning out to Pharo as its not supported natively.
I mention this in the Readme on the gitlab page (itâs possibly a bit subtle) - but I was pointed to the Sparta GoLang project (who arenât supported natively either) where they have measured that that cost of spawning out to GoLang (and it looks fairly similar for Pharo) is 700ms. Essentially this spawning is the cost of loading up a NodeJS environment (presumably some Docker like image they have already prepared - although they donât reveal how this is done), ârequiringâ the âchild-processâ node module to get an exec method, and then your code to shell out. (In my repo - this is the PharoLambda.js file).
Empirically I am seeing results from 500ms to 1200ms which are in line with Sparta (possibly better? I havenât loaded up a Go environment to understand what they need to package up to deploy an app that can be execâd and how that compares to our 10mb'ish footprint).
If I look at a basic NodeJS hello world app - I see .5ms to 290ms responses - (the min billing unit is 100ms). I got the impression for a recent serverless meet-up that sub 500 is what people aim for. Which means we are at least in the running.
I donât know how sensitive the âoverheadâ load time is due to the package size you deploy (I saw a big increase when I got my package below 10mb) or whether it truly is the NodeJS tax. I would love to get hold of the AWS team and suggest they provide another fixed solution that efficiently execâs in C, a named executable with configurable parameters and the âeventâ parameter serialised in JSON (on the surface it seems overkill to use NodeJS for just that simple operation).
All this said the free tier gives you "1M free requests per month and 400,000 GB-seconds of compute time per monthâ - so assuming we can do interesting things in under a second (which Iâve shown), then you can process 400,000 of them a month for free (which isnât bad really).
Tim
> On 19 Jul 2017, at 13:59, Sven Van Caekenberghe <sven(a)stfx.eu> wrote:
>
>
>> On 19 Jul 2017, at 14:55, Esteban A. Maringolo <emaringolo(a)gmail.com> wrote:
>>
>> I don't know how "mainstream" solutions perform on AWS Lambda or EC2,
>> but this seems really fast to me. 50 ms is great, assuming it bills by
>> every 100ms, you still have room to perform your computation.
>
> Yes, it seems incredibly fast. I'll have to try this myself to check, but I have no time now.
>
>> Thank you for pursuing this path, it could open a new territory for
>> using Pharo at big scale.
>>
>> Esteban A. Maringolo
>>
>>
>> 2017-07-17 8:32 GMT-03:00 Tim Mackinnon <tim(a)testit.works>:
>>> Well Iâve been shooting in the dark a bit - but I also left out the sound
>>> and display soâs (e.g. -x execlude the following and add back the null so's
>>>
>>> zip -r --symlinks ../deploy/$LAMBDA_NAME.zip * -x pharo-local/\* \*.sources
>>> \*.changes \*.st \*.log
>>> */libgit2.* */libSDL2* */B3DAccelerator* */JPEGRead* */vm-sound*
>>> */vm-display* tmp/\* */__MACOSX\*
>>> - zip -uR ../deploy/$LAMBDA_NAME.zip *-null.so
>>>
>>>
>>> And everything seems to run clean. (Would be useful to get some feedback
>>> from those in the know - does just leaving out soâs incurred a penalty if
>>> you donât recompile the VM? Presumably something would get written to std
>>> error or pharodebug if it was an issue).
>>>
>>> In fact my run times on EC2 are pretty impressive:
>>>
>>> PharoLambdaMin]$ time ./pharo Pharo.image exec "Lambda processJSON: '{}'"
>>> {"outputSpeech":{"text":"Good Morning, it's eleven
>>> twenty-six","type":"PlainText"},"shouldEndSession":true,"card":{"content":"Operation
>>> Successful","title":"Pharo Lambda","type":"Simple"}}
>>>
>>> real 0m0.039s
>>> user 0m0.028s
>>> sys 0m0.000s
>>> [ec2-user@ip-172-31-44-73 PharoLambdaMin]$ time ./pharo Pharo.image exec
>>> "Lambda processJSON: '{}'"
>>> {"outputSpeech":{"text":"Good Morning, it's eleven
>>> twenty-six","type":"PlainText"},"shouldEndSession":true,"card":{"content":"Operation
>>> Successful","title":"Pharo Lambda","type":"Simple"}}
>>>
>>> real 0m0.039s
>>> user 0m0.020s
>>> sys 0m0.008s
>>>
>>>
>>> Not bad eh?
>>>
>>> Tim
>>>
>>> On 17 Jul 2017, at 07:00, Tim Mackinnon <tim(a)testit.works> wrote:
>>>
>>> Thanks again Pavel - I'll try the 6.0 step 4 or possibly step 5 with sunit
>>> (as many libraries don't separate out their tests).
>>>
>>> I've also tried leaving out libgit and libsdl2 .so's on my server build and
>>> that seems fine too - making me wonder what others I can safely leave out?
>>> Sound is a candidate (but small fry in size but do you need the null
>>> variant?).
>>>
>>> Libcrypto is big - but I wonder if https routines would use that (and it
>>> sounds server processing'y so maybe best left).
>>>
>>> I was hoping to find a list explaining them somewhere - but it remains
>>> rather mysterious.
>>>
>>> However, at this point, I think I may have hit the sweet spot in size where
>>> AWS seems to load efficiently below a zip of 10mb?
>>>
>>> Tim
>>>
>>> Sent from my iPhone
>>>
>>> On 15 Jul 2017, at 09:35, Pavel Krivanek <pavel.krivanek(a)gmail.com> wrote:
>>>
>>> If you want to stay with Pharo 6 image, you can try the bootstrapped version
>>> of the minimal image:
>>> https://ci.inria.fr/pharo/view/6.0-SysConf/job/Pharo-6.0-Step-04-01-Configu…
>>>
>>> -- Pavel
>>>
>>> 2017-07-15 10:33 GMT+02:00 Pavel Krivanek <pavel.krivanek(a)gmail.com>:
>>>>
>>>> Try the Pharo 7 metacello image (=Pharo 7 minimal image that the CI is
>>>> already converting to 64bit). There should be no problem with STON because
>>>> whole Pharo is loaded into it using metacello and filetree. Pharo 6 minimal
>>>> image is done differently (by shrinking) and not so well tested.
>>>>
>>>> For the conversion of 32-bit image to 64-bit image you need a VMMaker
>>>> image:
>>>>
>>>> https://ci.inria.fr/pharo/job/Spur-Git-Tracker/lastSuccessfulBuild/artifact…
>>>> and then evaluate:
>>>> ./pharo generator.image eval "[Spur32to64BitBootstrap new bootstrapImage:
>>>> 'conversion.image'] on: AssertionFailure do: [ :fail | fail resumeUnchecked:
>>>> nil ]"
>>>>
>>>> -- Pavel
>>>>
>>>>
>>>>
>>>> 2017-07-15 10:19 GMT+02:00 Tim Mackinnon <tim(a)testit.works>:
>>>>>
>>>>> Hi Pavel - thanks for getting me to the point where I could even have a
>>>>> minimal image. As Iâm on the edge of my Pharo knowledge here, Iâll try and
>>>>> run with this as best I can.
>>>>>
>>>>> Iâd been using the 6.0 image you suggested to me - but maybe I could use
>>>>> a 70 image with Pharo 6 for a while (until the VM diverges) right?
>>>>>
>>>>> The bit I havenât quite understood however, is how the 64bit image is
>>>>> created - as your reference is to a 32bit version? Is the 64bit one
>>>>> converted from 32 in a later stage? (For AWS Lambda I need 64bit) - am I
>>>>> right in thinking the pipeline stage after this one is the one you sent me -
>>>>> and the travis.yml file shows me what it does? But I canât see a trivis.yml
>>>>> in the conversion stage so Iâm not sure how it does that. (Question - how do
>>>>> I see what the pipelines do to answer my own questions?)
>>>>>
>>>>> I was hoping that there was a basic image that got me up to metacello
>>>>> baseline level to load git file tree packages/baselines in my own repo as
>>>>> well baselines on the internet. The one you sent me is fairly close to that
>>>>> (its just missing STON in the image and seems to have an issue with
>>>>> resolving undeclared classes that get loaded in - should do a fogbugz on
>>>>> that?)
>>>>>
>>>>> The follow-on from a metacello image is how we can get people to create
>>>>> better baselines that give you more minimal loading options (e.g.
>>>>> conditionally leave out the test cases perhaps)
>>>>>
>>>>> Tim
>>>>>
>>>>> On 15 Jul 2017, at 08:24, Pavel Krivanek <pavel.krivanek(a)gmail.com>
>>>>> wrote:
>>>>>
>>>>> Hi Tim,
>>>>>
>>>>> you can base the your work on the bootstrapped image, see
>>>>> https://ci.inria.fr/pharo/view/7.0/job/70-Bootstrap-32bit/, file
>>>>> Pharo7.0-core-*.zip
>>>>>
>>>>> This image does not have a lot of basic components like Monticello or
>>>>> network but it has a compiler so the code can be imported as *.st files.
>>>>> Then we have Pharo7.0-monticello-*.zip which will be easier to use and
>>>>> probably can fit your needs. Monticello and network support are included.
>>>>> But you cannot use baselines nor configurations to load your code.
>>>>>
>>>>> -- Pavel
>>>>>
>>>>> 2017-07-14 9:59 GMT+02:00 Tim Mackinnon <tim(a)testit.works>:
>>>>>>
>>>>>> Hi - buoyed by the success of a minimal image (thanks Pavel), I'm
>>>>>> wondering if I can get even smaller.
>>>>>>
>>>>>> There are lots of .so's in the vm which wouldn't make sense on a server
>>>>>> once deployed - sound, maybe libgit ...
>>>>>>
>>>>>> Is there a list of the essential ones, or tips on what I can strip out
>>>>>> of the Linux deployment? I also recall that i can leave out .sources and
>>>>>> .changes as well right?
>>>>>>
>>>>>> Tim
>>>>>>
>>>>>> Sent from my iPhone
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>
>
>
July 19, 2017
Re: [Pharo-users] Creating the smallest server runtime footprint
by Stephane Ducasse
Hi tim
if you see libraries not separating their tests: you should report it
to their authors or to us if this is our mistakes.
You can also load the SUnit package.
Stef
On Mon, Jul 17, 2017 at 8:00 AM, Tim Mackinnon <tim(a)testit.works> wrote:
> Thanks again Pavel - I'll try the 6.0 step 4 or possibly step 5 with sunit
> (as many libraries don't separate out their tests).
>
> I've also tried leaving out libgit and libsdl2 .so's on my server build and
> that seems fine too - making me wonder what others I can safely leave out?
> Sound is a candidate (but small fry in size but do you need the null
> variant?).
>
> Libcrypto is big - but I wonder if https routines would use that (and it
> sounds server processing'y so maybe best left).
>
> I was hoping to find a list explaining them somewhere - but it remains
> rather mysterious.
>
> However, at this point, I think I may have hit the sweet spot in size where
> AWS seems to load efficiently below a zip of 10mb?
>
> Tim
>
> Sent from my iPhone
>
> On 15 Jul 2017, at 09:35, Pavel Krivanek <pavel.krivanek(a)gmail.com> wrote:
>
> If you want to stay with Pharo 6 image, you can try the bootstrapped version
> of the minimal image:
> https://ci.inria.fr/pharo/view/6.0-SysConf/job/Pharo-6.0-Step-04-01-Configu…
>
> -- Pavel
>
> 2017-07-15 10:33 GMT+02:00 Pavel Krivanek <pavel.krivanek(a)gmail.com>:
>>
>> Try the Pharo 7 metacello image (=Pharo 7 minimal image that the CI is
>> already converting to 64bit). There should be no problem with STON because
>> whole Pharo is loaded into it using metacello and filetree. Pharo 6 minimal
>> image is done differently (by shrinking) and not so well tested.
>>
>> For the conversion of 32-bit image to 64-bit image you need a VMMaker
>> image:
>>
>> https://ci.inria.fr/pharo/job/Spur-Git-Tracker/lastSuccessfulBuild/artifact…
>> and then evaluate:
>> ./pharo generator.image eval "[Spur32to64BitBootstrap new bootstrapImage:
>> 'conversion.image'] on: AssertionFailure do: [ :fail | fail resumeUnchecked:
>> nil ]"
>>
>> -- Pavel
>>
>>
>>
>> 2017-07-15 10:19 GMT+02:00 Tim Mackinnon <tim(a)testit.works>:
>>>
>>> Hi Pavel - thanks for getting me to the point where I could even have a
>>> minimal image. As Iâm on the edge of my Pharo knowledge here, Iâll try and
>>> run with this as best I can.
>>>
>>> Iâd been using the 6.0 image you suggested to me - but maybe I could use
>>> a 70 image with Pharo 6 for a while (until the VM diverges) right?
>>>
>>> The bit I havenât quite understood however, is how the 64bit image is
>>> created - as your reference is to a 32bit version? Is the 64bit one
>>> converted from 32 in a later stage? (For AWS Lambda I need 64bit) - am I
>>> right in thinking the pipeline stage after this one is the one you sent me -
>>> and the travis.yml file shows me what it does? But I canât see a trivis.yml
>>> in the conversion stage so Iâm not sure how it does that. (Question - how do
>>> I see what the pipelines do to answer my own questions?)
>>>
>>> I was hoping that there was a basic image that got me up to metacello
>>> baseline level to load git file tree packages/baselines in my own repo as
>>> well baselines on the internet. The one you sent me is fairly close to that
>>> (its just missing STON in the image and seems to have an issue with
>>> resolving undeclared classes that get loaded in - should do a fogbugz on
>>> that?)
>>>
>>> The follow-on from a metacello image is how we can get people to create
>>> better baselines that give you more minimal loading options (e.g.
>>> conditionally leave out the test cases perhaps)
>>>
>>> Tim
>>>
>>> On 15 Jul 2017, at 08:24, Pavel Krivanek <pavel.krivanek(a)gmail.com>
>>> wrote:
>>>
>>> Hi Tim,
>>>
>>> you can base the your work on the bootstrapped image, see
>>> https://ci.inria.fr/pharo/view/7.0/job/70-Bootstrap-32bit/, file
>>> Pharo7.0-core-*.zip
>>>
>>> This image does not have a lot of basic components like Monticello or
>>> network but it has a compiler so the code can be imported as *.st files.
>>> Then we have Pharo7.0-monticello-*.zip which will be easier to use and
>>> probably can fit your needs. Monticello and network support are included.
>>> But you cannot use baselines nor configurations to load your code.
>>>
>>> -- Pavel
>>>
>>> 2017-07-14 9:59 GMT+02:00 Tim Mackinnon <tim(a)testit.works>:
>>>>
>>>> Hi - buoyed by the success of a minimal image (thanks Pavel), I'm
>>>> wondering if I can get even smaller.
>>>>
>>>> There are lots of .so's in the vm which wouldn't make sense on a server
>>>> once deployed - sound, maybe libgit ...
>>>>
>>>> Is there a list of the essential ones, or tips on what I can strip out
>>>> of the Linux deployment? I also recall that i can leave out .sources and
>>>> .changes as well right?
>>>>
>>>> Tim
>>>>
>>>> Sent from my iPhone
>>>>
>>>
>>>
>>
>
July 19, 2017
Can anyone answer this?
by horrido
Miles Fidelman (at Quora) and I were having an argument about the suitability
of Smalltalk (Pharo) for large maintainable software projects. The problem
is, I've never used Smalltalk in a commercial setting, esp. with respect to
large projects. Without that experience, I am wholly unqualified to answer
his response, which follows...
*I just spent a little time looking at a couple of big projects that use(d)
Smalltalk - JWARS & the Seaside web server. And I discovered that both have
basically avoided the âlive coding environmentâ aspects of Smalltalk.
JWARS incorporates a lot of access & configuration controls that limit who
can change which parts of the system.
Seaside seems to follow standard development processes - with a version
control system, and formal releases.
Which kind of reinforces what I see as issues with Smalltalk from a system
building & maintenance point of view:
1) When everything is a work in progress, itâs impossible to manage a
project, maintain deployed code (âwhat version do you have, what did you
modify? clearly thatâs where the bug isâ), update things (interfaces change,
updates overwrite local mods), etc.
2) The typical deployment model is to deploy a completely new virtual
machine & environment. For some things (e.g., servers), that works - and
seems to be the way of the world with containerization - but for other
things (e.g., desktop applications), deploying an entire new environment for
every patch is just a bit match.
3) Gross violation of âprinciple of least privilege.â Live code,
particularly multi-user code, that can be modified by its users - now that
is a surefire recipe for disaster.*
--
View this message in context: http://forum.world.st/Can-anyone-answer-this-tp4955861.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.
July 19, 2017