With my packaged app I'm using the latest version of Pollock from the dev
repository and I get the following stack dump when I try to use menus in my application window. The code that constructs the menus looks like this: Panda.Menu menuItems: (Array with: ((Panda.MenuItem label: '&Run') submenu: (Panda.Menu new addMenuItem: ((Panda.MenuItem label: '&Run') keystroke: (Panda.Keystroke shift: #F5); actionID: #run)))) The application works fine in the RTP test mode without discovering any dynamic references. I tried this with and without adding my own things to remove. Same either way. -Carl Gundel, author of Liberty BASIC http://www.libertybasic.com Initial Context Stack Arguments: [1] UndefinedObject(Object)>>doesNotUnderstand: Receiver: (id=1) nil Arg1: (id=11432) a Message with selector: #open and arguments: #() [4] BlockClosure(Object)>>ifNotNil: Receiver: (id=15672) BlockClosure [] in WindowManager class>>initializeNoWindowBlock Arg1: (id=387) BlockClosure [] in WindowManager>>rtpUnscheduleWindow: [5] WindowManager>>rtpUnscheduleWindow: Receiver: (id=10512) a WindowManager Arg1: (id=5726) a Panda.ActiveTransient 168 [6] WindowManager>>unscheduleWindow: Receiver: (id=10512) a WindowManager Arg1: (id=5726) a Panda.ActiveTransient 168 [7] Panda.ActiveTransient(Window)>>unscheduleWindow Receiver: (id=5726) a Panda.ActiveTransient 168 [8] Panda.ActiveTransient(Panda.TransientWindow)>>close Receiver: (id=5726) a Panda.ActiveTransient 168 [9] Panda.ActiveTransient>>close Receiver: (id=5726) a Panda.ActiveTransient 168 [10] Panda.ActiveTransient(Panda.TransientWindow)>>closeMenu Receiver: (id=5726) a Panda.ActiveTransient 168 [12] Panda.ActiveTransient(Object)>>ifNotNil: Receiver: (id=5726) a Panda.ActiveTransient 168 Arg1: (id=12616) BlockClosure [] in Panda.MenuPane>>closeMenu [13] Panda.MenuPane>>closeMenu Receiver: (id=10698) a Panda.MenuPane [15] Panda.MenuPane(Object)>>ifNotNil: Receiver: (id=10698) a Panda.MenuPane Arg1: (id=4636) BlockClosure [] in Panda.MenuPaneItem>>closeMenu [16] Panda.MenuPaneItem>>closeMenu Receiver: (id=7385) a Panda.MenuPaneItem "&Run" [18] Panda.MenuPaneItem(Object)>>ifNotNil: Receiver: (id=7385) a Panda.MenuPaneItem "&Run" Arg1: (id=11761) BlockClosure [] in Panda.MenuPaneItemAgent>>closeMenu [19] Panda.Win95MenuPaneItemAgent(Panda.MenuPaneItemAgent)>>closeMenu |
Carl,
> >rtpUnscheduleWindow: I don't know about this at all. I can only assume that this method doesn't know how to deal with Pollock windows. And So It Goes Sames ______________________________________________________________________ Samuel S. Shuster [|] VisualWorks Engineering, GUI Project Smalltalk Enables Success -- What Are YOU Using? |
> Carl,
> >> >rtpUnscheduleWindow: > > I don't know about this at all. I can only assume that this method > doesn't know how to deal with Pollock windows. Alright, but I need a fix for this pronto. I'm curious as to why there is an rtp-related method in there after the application is packaged. -Carl |
So, perhaps I should avoid using the runtime packager. I could write my own
script for stripping things out that doesn't leave any unpredictable gotchas in there. Has anyone else done this? -Carl ----- Original Message ----- From: "Carl Gundel" <[hidden email]> To: <[hidden email]> Sent: Friday, June 23, 2006 3:42 PM Subject: Re: [7.4][rtp][Pollock]Problem with menus and packaged app >> Carl, >> >>> >rtpUnscheduleWindow: >> >> I don't know about this at all. I can only assume that this method >> doesn't know how to deal with Pollock windows. > > Alright, but I need a fix for this pronto. > > I'm curious as to why there is an rtp-related method in there after the > application is packaged. > > -Carl > > > > |
In reply to this post by Carl Gundel
Is it possible to load Pollock into the base.im without loading Store?
-Carl Gundel, author of Liberty BASIC http://www.libertybasic.com |
Hi Carl:
There is a Pollock parcel in the preview/pollock directory of the VW tree. You could load that without StORE. If you want the latest and greatest, it is only in the StORE repository. You could get the code from the repository using StORE and create a parcel from that. You could then use it without StORE, assuming that StORE isn't a prereq. Cheers!! On Jun 24, 2006, at 8:57 AM, Carl Gundel wrote: > Is it possible to load Pollock into the base.im without loading Store? > > -Carl Gundel, author of Liberty BASIC > http://www.libertybasic.com > Joseph Bacanskas [|] --- I use Smalltalk. My amp goes to eleven. |
In reply to this post by Carl Gundel
Carl:
Don't strip. Just say no :) figure out a base image for yourself that has the necessary support you need for your app but not your app. You can strip that in the sense of getting rid of IDE stuff but I just start with the base.im provided by Cincom. Compress it , reshack it if on Windows etc. Then use this image as your SRE (Smalltalk Runtime Environment) and just load your app's parcels at runtime. Out of curiosity , when you are successful in stripping your app how big is your executable compressed? -- Charles A. Monteiro http://wiki.nycsmalltalk.org http://www.monteirosfusion.com http://monteirofusion.blogspot.com On Sat, 24 Jun 2006 11:55:36 -0400, Carl Gundel <[hidden email]> wrote: > So, perhaps I should avoid using the runtime packager. I could write my > own script for stripping things out that doesn't leave any unpredictable > gotchas in there. Has anyone else done this? > > -Carl > > ----- Original Message ----- From: "Carl Gundel" <[hidden email]> > To: <[hidden email]> > Sent: Friday, June 23, 2006 3:42 PM > Subject: Re: [7.4][rtp][Pollock]Problem with menus and packaged app > > >>> Carl, >>> >>>> >rtpUnscheduleWindow: >>> >>> I don't know about this at all. I can only assume that this method >>> doesn't know how to deal with Pollock windows. >> >> Alright, but I need a fix for this pronto. >> >> I'm curious as to why there is an rtp-related method in there after the >> application is packaged. >> >> -Carl >> >> >> >> > -- Charles A. Monteiro http://wiki.nycsmalltalk.org http://www.monteirosfusion.com http://monteirofusion.blogspot.com |
Charles,
Thanks for your interest in my problem. > Don't strip. Just say no :) Well, I took a short detour and ended up back using RTP. I did manage to figure out how to fix the bug I was seeing, along with a couple of other things (of course). I will post my workaround when I get a chance. > figure out a base image for yourself that has the necessary support you > need for your app but not your app. You can strip that in the sense of > getting rid of IDE stuff but I just start with the base.im provided by > Cincom. Compress it , reshack it if on Windows etc. Then use this image as > your SRE (Smalltalk Runtime Environment) and just load your app's parcels > at runtime. I would like to do that when I get a chance. On the other hand, I wish the runtime packager was simply more effective at stripping things out. > Out of curiosity , when you are successful in stripping your app how big > is your executable compressed? Well, so far I've managed to get things down to 11.5MB, but I know there is all kinds of stuff in there that can still come out. Some of it will be easy and will just need a little trial and error experimentation, but I know there's lots of tangled coupling in there that shouldn't be, and that's going to make it hard. I would like to get this down to around 5MB (or less). I wish the RTP didn't report it's progress with a GUI. That obviously makes stripping a complicated matter. Also, the removal of methods, classes and artifacts should be done using the most primitive methods so that unwanted development tool related stuff can come out without crashing the RTP. -Carl Gundel, author of Liberty BASIC http://www.libertybasic.com |
Carl,
The 11.5 MB size is it compressed or not? Im my application, after striping, I am getting down to about 15 MB size ant then after using imageCompress.exe I have an image of about 6.5 MB in size. The reason my image is so big that I use a lot of things -- networking, security, graphics, etc., etc. not to mention application code itself. My 2c. --Mark Carl Gundel wrote: <.....> > > Well, so far I've managed to get things down to 11.5MB, but I know there > is all kinds of stuff in there that can still come out. Some of it will > be easy and will just need a little trial and error experimentation, but > I know there's lots of tangled coupling in there that shouldn't be, and > that's going to make it hard. I would like to get this down to around > 5MB (or less). > <.....> > -Carl Gundel, author of Liberty BASIC > http://www.libertybasic.com > > > |
> Carl,
> The 11.5 MB size is it compressed or not? Im my application, after > striping, I am getting down to about 15 MB size ant then after using > imageCompress.exe I have an image of about 6.5 MB in size. The reason my > image is so big that I use a lot of things -- networking, security, > graphics, etc., etc. not to mention application code itself. This is uncompressed. For my application it doesn't make so much sense to consider the compressed size. My customers will care about how large their own Liberty BASIC applications will be and so my own VW-based BASIC runtime platform must be as small as possible. BASIC programmers expect things to be small (they complain if simple programs compile to more than 100K), and so I start at a position of weakness at least in that respect. In addition since my software is marketed as shareware I will lose sales if the download is too large. It is currently only 3.2MB and this includes two VisualSmalltalk images, some support libraries, a voluminous help file, and lots of example code. I'll be lucky if I can get it down to twice that size using VW and even if I manage that my download count will suffer. On the upside, Liberty BASIC on VW is faster, more flexible, and multiplatform. :-) -Carl Gundel, author of Liberty BASIC http://www.libertybasic.com |
In reply to this post by Carl Gundel
Carl,
>Is it possible to load Pollock into the base.im without loading Store? I don't know enough about what is or is not in base.im to say for sure. However, if there is the basic graphics system (GraphicsContext, Image, Pixmap, Fonts, etc.) then it should work. That's a guess though. And So It Goes Sames ______________________________________________________________________ Samuel S. Shuster [|] VisualWorks Engineering, GUI Project Smalltalk Enables Success -- What Are YOU Using? |
In reply to this post by Carl Gundel
Carl
I produced a stripper for VW 7.3.1 that produces a scripting image. The resuling image is about 2.2Mb. You can download the stripper from http://www.craftedsmalltalk.com/downloads/stripper731.zip. Examining my code may give you some ideas for what else can be stripped out. Terry =========================================================== Terry Raymond Smalltalk Professional Debug Package Crafted Smalltalk 80 Lazywood Ln. Tiverton, RI 02878 (401) 624-4517 [hidden email] <http://www.craftedsmalltalk.com> =========================================================== > -----Original Message----- > From: Carl Gundel [mailto:[hidden email]] > Sent: Monday, June 26, 2006 11:55 AM > To: [hidden email] > Subject: Re: Don't use RTP? Re: [7.4][rtp][Pollock]Problem with menus and > packaged app > > Charles, > > Thanks for your interest in my problem. > > > Don't strip. Just say no :) > > Well, I took a short detour and ended up back using RTP. I did manage to > figure out how to fix the bug I was seeing, along with a couple of other > things (of course). I will post my workaround when I get a chance. > > > figure out a base image for yourself that has the necessary support you > > need for your app but not your app. You can strip that in the sense of > > getting rid of IDE stuff but I just start with the base.im provided by > > Cincom. Compress it , reshack it if on Windows etc. Then use this image > as > > your SRE (Smalltalk Runtime Environment) and just load your app's > parcels > > at runtime. > > I would like to do that when I get a chance. On the other hand, I wish > the > runtime packager was simply more effective at stripping things out. > > > Out of curiosity , when you are successful in stripping your app how big > > is your executable compressed? > > Well, so far I've managed to get things down to 11.5MB, but I know there > is > all kinds of stuff in there that can still come out. Some of it will be > easy and will just need a little trial and error experimentation, but I > know > there's lots of tangled coupling in there that shouldn't be, and that's > going to make it hard. I would like to get this down to around 5MB (or > less). > > I wish the RTP didn't report it's progress with a GUI. That obviously > makes > stripping a complicated matter. Also, the removal of methods, classes and > artifacts should be done using the most primitive methods so that unwanted > development tool related stuff can come out without crashing the RTP. > > -Carl Gundel, author of Liberty BASIC > http://www.libertybasic.com |
In reply to this post by Carl Gundel
Carl:
Your image is 11mb compressed ? I at one time had the same need with RTP and created a silent RTP, lots of disconnecting, its notification was very coupled. In general I like for tools to have pluggable notification so that one can plug a visual notification or a logged to file for example at whim. The cost/benefit of RTP is not great. I really just wish everybody stops using it :) there were some decent effort level enhancements to it recently which could have been spent doing something else i.e. like finishing an SRE based packaging scheme. Charles A. Monteiro http://wiki.nycsmalltalk.org http://www.monteirosfusion.com http://monteirofusion.blogspot.com On Mon, 26 Jun 2006 11:54:36 -0400, Carl Gundel <[hidden email]> wrote: > Charles, > > Thanks for your interest in my problem. > >> Don't strip. Just say no :) > > Well, I took a short detour and ended up back using RTP. I did manage > to figure out how to fix the bug I was seeing, along with a couple of > other things (of course). I will post my workaround when I get a chance. > >> figure out a base image for yourself that has the necessary support you >> need for your app but not your app. You can strip that in the sense of >> getting rid of IDE stuff but I just start with the base.im provided by >> Cincom. Compress it , reshack it if on Windows etc. Then use this image >> as your SRE (Smalltalk Runtime Environment) and just load your app's >> parcels at runtime. > > I would like to do that when I get a chance. On the other hand, I wish > the runtime packager was simply more effective at stripping things out. > >> Out of curiosity , when you are successful in stripping your app how >> big is your executable compressed? > > Well, so far I've managed to get things down to 11.5MB, but I know there > is all kinds of stuff in there that can still come out. Some of it will > be easy and will just need a little trial and error experimentation, but > I know there's lots of tangled coupling in there that shouldn't be, and > that's going to make it hard. I would like to get this down to around > 5MB (or less). > > I wish the RTP didn't report it's progress with a GUI. That obviously > makes stripping a complicated matter. Also, the removal of methods, > classes and artifacts should be done using the most primitive methods so > that unwanted development tool related stuff can come out without > crashing the RTP. > > -Carl Gundel, author of Liberty BASIC > http://www.libertybasic.com -- Charles A. Monteiro http://wiki.nycsmalltalk.org http://www.monteirosfusion.com http://monteirofusion.blogspot.com |
In reply to this post by Carl Gundel
there will always be a mismatch there. VisualWorks applications rely, like
Java, on a runtime context. The apps are, if you think about it that way i.e. the runtime context and the app as being separate, relatively small. For example , our app which is a fairly decent size financial app, tons of UIs etc , is a little under 1 mb. My runtime environment is about 5.7mb. I don't have to deploy the runtime context but once and deploying the "libs" is just a breeze. The Smalltalk runtime environment is also fairly small if compared to typical installations of the JRE. Smalltalks like SmalltalkMT and Dolphin provide a Smalltalk IDE that targets a platform so the resulting apps are small and don't depend on anything but the target platform itself. Unfortunately, in the case of these two they are not cross-platform. Anyhow, this doesn't help you any :), we can do a much , much better job at runtime packaging. Hopefully it will become priority. The problem must be that most I guess don't share your pain. I'm okay for example with my SRE scheme although I totally sympathize :) - Charles A. Monteiro http://wiki.nycsmalltalk.org http://www.monteirosfusion.com http://monteirofusion.blogspot.com On Mon, 26 Jun 2006 12:49:44 -0400, Carl Gundel <[hidden email]> wrote: >> Carl, >> The 11.5 MB size is it compressed or not? Im my application, after >> striping, I am getting down to about 15 MB size ant then after using >> imageCompress.exe I have an image of about 6.5 MB in size. The reason >> my image is so big that I use a lot of things -- networking, security, >> graphics, etc., etc. not to mention application code itself. > > This is uncompressed. For my application it doesn't make so much sense > to consider the compressed size. My customers will care about how large > their own Liberty BASIC applications will be and so my own VW-based > BASIC runtime platform must be as small as possible. BASIC programmers > expect things to be small (they complain if simple programs compile to > more than 100K), and so I start at a position of weakness at least in > that respect. > > In addition since my software is marketed as shareware I will lose sales > if the download is too large. It is currently only 3.2MB and this > includes two VisualSmalltalk images, some support libraries, a > voluminous help file, and lots of example code. I'll be lucky if I can > get it down to twice that size using VW and even if I manage that my > download count will suffer. > > On the upside, Liberty BASIC on VW is faster, more flexible, and > multiplatform. :-) > > -Carl Gundel, author of Liberty BASIC > http://www.libertybasic.com -- Charles A. Monteiro http://wiki.nycsmalltalk.org http://www.monteirosfusion.com http://monteirofusion.blogspot.com |
In reply to this post by Carl Gundel
The methods that start with rtp... remaining in a runtime image tend to represent hooks that RTP installs. In this instance, rtpUnscheduleWindow: will be whatever WindowManager>>unscheduleWindow: was before packaging, and that method will have been replaced by RuntimeManager's unscheduleWindow: method. See #hookToWindowManager.
That particular method, as the stack also seems to show, deals with the case where the last window is closed. So, for some reason that might well be unawareness of Pollock, the system seems to believe that the Pollock menu is the last open window. That suggests that WindowManagers think that Pollock menus are windows, but Pollock windows aren't. Running the dynamic trace mode would be unlikely to discover this, since it keeps a window open. I would suggest running your app in non-packaged mode, but with all regular VW windows closed, and see if you see similar behaviour. Possibly with some breakpoint or tracing in the places that seem to be affected to see if they're being called, but behaving differently when not packaged. In general, if you need a response pronto, I'd suggest contacting support, which has people paid to look into the question until they find an answer, rather than relying entirely on mailing lists where people may or may not answer, and may or may not do so in a timely way. At 02:24 PM 23/06/2006, Carl Gundel wrote: >With my packaged app I'm using the latest version of Pollock from the dev repository and I get the following stack dump when I try to use menus in my application window. The code that constructs the menus looks like this: > >Panda.Menu > menuItems: (Array with: ((Panda.MenuItem label: '&Run') > submenu: (Panda.Menu new addMenuItem: ((Panda.MenuItem label: '&Run') > keystroke: (Panda.Keystroke shift: #F5); > actionID: #run)))) > >The application works fine in the RTP test mode without discovering any dynamic references. I tried this with and without adding my own things to remove. Same either way. > >-Carl Gundel, author of Liberty BASIC >http://www.libertybasic.com > >Initial Context Stack Arguments: >[1] UndefinedObject(Object)>>doesNotUnderstand: >Receiver: (id=1) nil >Arg1: (id=11432) a Message with selector: #open and arguments: #() >[4] BlockClosure(Object)>>ifNotNil: >Receiver: (id=15672) BlockClosure [] in WindowManager class>>initializeNoWindowBlock >Arg1: (id=387) BlockClosure [] in WindowManager>>rtpUnscheduleWindow: >[5] WindowManager>>rtpUnscheduleWindow: >Receiver: (id=10512) a WindowManager >Arg1: (id=5726) a Panda.ActiveTransient 168 >[6] WindowManager>>unscheduleWindow: >Receiver: (id=10512) a WindowManager >Arg1: (id=5726) a Panda.ActiveTransient 168 >[7] Panda.ActiveTransient(Window)>>unscheduleWindow >Receiver: (id=5726) a Panda.ActiveTransient 168 >[8] Panda.ActiveTransient(Panda.TransientWindow)>>close >Receiver: (id=5726) a Panda.ActiveTransient 168 >[9] Panda.ActiveTransient>>close >Receiver: (id=5726) a Panda.ActiveTransient 168 >[10] Panda.ActiveTransient(Panda.TransientWindow)>>closeMenu >Receiver: (id=5726) a Panda.ActiveTransient 168 >[12] Panda.ActiveTransient(Object)>>ifNotNil: >Receiver: (id=5726) a Panda.ActiveTransient 168 >Arg1: (id=12616) BlockClosure [] in Panda.MenuPane>>closeMenu >[13] Panda.MenuPane>>closeMenu >Receiver: (id=10698) a Panda.MenuPane >[15] Panda.MenuPane(Object)>>ifNotNil: >Receiver: (id=10698) a Panda.MenuPane >Arg1: (id=4636) BlockClosure [] in Panda.MenuPaneItem>>closeMenu >[16] Panda.MenuPaneItem>>closeMenu >Receiver: (id=7385) a Panda.MenuPaneItem "&Run" >[18] Panda.MenuPaneItem(Object)>>ifNotNil: >Receiver: (id=7385) a Panda.MenuPaneItem "&Run" >Arg1: (id=11761) BlockClosure [] in Panda.MenuPaneItemAgent>>closeMenu >[19] Panda.Win95MenuPaneItemAgent(Panda.MenuPaneItemAgent)>>closeMenu -- Alan Knight [|], Cincom Smalltalk Development [hidden email] [hidden email] http://www.cincom.com/smalltalk "The Static Typing Philosophy: Make it fast. Make it right. Make it run." - Niall Ross |
In reply to this post by Carl Gundel
At 11:54 AM 26/06/2006, Carl Gundel wrote:
>I wish the RTP didn't report it's progress with a GUI. That obviously makes stripping a complicated matter. Also, the removal of methods, classes and artifacts should be done using the most primitive methods so that unwanted development tool related stuff can come out without crashing the RTP. Me too, and that's on the agenda. If you could be more specific about the primitive methods that would be helpful. -- Alan Knight [|], Cincom Smalltalk Development [hidden email] [hidden email] http://www.cincom.com/smalltalk "The Static Typing Philosophy: Make it fast. Make it right. Make it run." - Niall Ross |
Free forum by Nabble | Edit this page |