Re: [Pharo-dev] NativeBoost String Handling Bug?
Congrats Sean! and thanks Igor ;-) #Luc 2013/12/3 Igor Stasenko siguc...@gmail.com Yes, thank you. On 3 December 2013 05:57, Sean P. DeNigris s...@clipperadams.com wrote: Igor Stasenko wrote if yes then i think we can finally close the bug entry). I updated the issue and made your packages into a slice: https://pharo.fogbugz.com/default.asp?7542 SLICE-Issue-7542-NB-system-example-SeanDeNigris.1 - Cheers, Sean -- View this message in context: http://forum.world.st/NativeBoost-String-Handling-Bug-tp4726860p4726895.html Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com. -- Best regards, Igor Stasenko.
Re: [Pharo-dev] Versionner CI?
Hi Sean, Le 3 déc. 2013 à 06:15, Sean P. DeNigris a écrit : I was surprised there was no job on community contributions... There is one job on the rmod ci server. I should move it to the community server. Thanks for pointing that, Christophe smime.p7s Description: S/MIME cryptographic signature
Re: [Pharo-dev] Responsible development
On Dec 2, 2013, at 8:37 PM, Benjamin benjamin.vanryseghem.ph...@gmail.com wrote: On 02 Dec 2013, at 20:27, Stéphane Ducasse stephane.duca...@inria.fr wrote: We try now to have responsive UIs in the sense the tools like Nautilus try to run things in a separate thread. I will do an experiment and fork each Nautilus opening to see if it can save my ass :P :) personnally I would be really against because just forking is just a way to have a lot more mess in the future. Why ? Because you do not know when you invariants should hold. Normally you expect them to hold once the system is loaded. Because loading for example act as an atomic action when you modify the system. Now if your thread can see and modify different versions of the state be prepared to have really strange and difficult bugs to find. I prefer to have cache than to have forked processes around. Cache will not help you killing Nautilus when it freezes your image fork neither. (why cache by the way ?) I thought the discussion was about speeding up nautilus when performing start up actions. Ben Stef
Re: [Pharo-dev] Opal hook?
Well if the class does not exists it calls the method on UndefinedObject (UndeclaredBinding). And you have: UndefinedObjectsubclass: nameOfClass instanceVariableNames: instVarNames classVariableNames: classVarNames poolDictionaries: poolDictnames category: category Calling this method is now considered an accident. If you really want to create a class with a nil superclass, then create the class and then set the superclass using #superclass: self traceCr: ('Attempt to create ', nameOfClass, ' as a subclass of nil. Possibly a class is being loaded before its superclass.'). ^ProtoObject subclass: nameOfClass instanceVariableNames: instVarNames classVariableNames: classVarNames poolDictionaries: poolDictnames category: category The best is to set manually the superclass after with #superclass: 2013/12/2 Stéphane Ducasse stephane.duca...@inria.fr Hi when I load a class whose superclass is not in the image I have the impression that the system create a subclass from ProtoObject and I would like to be able to control the superclass. ProtoObject subclass: #Adaptor1Example instanceVariableNames: 'customers accountID address name phoneNumber' classVariableNames: '' poolDictionaries: '' category: 'Examples-Cookbook' Any idea where to look? Stef
Re: [Pharo-dev] Unifying Testing Ideas
Sean P. DeNigris wrote I understand the motivation. My question is how do we create appropriate hooks so that we don't get into these conflicts? I don't know yet, I'm open for discussion. Sean P. DeNigris wrote - anyArgument now inst var of BabyMockTestCase, similar to BmAnyMessage How do you use the anyArgument? The /with:/ is optional, so mock should receive: #a:b:c: accepts a:b:c: with any arguments by default, unless you restrict it with /with:and:and:/. Or did you want something like this? mock a: anyArgument b: exactArgument1 c: exactArgument2 This seems to be a valid need. Sean P. DeNigris wrote - #does: now optionally takes arguments I rarely use /does/, as far as I remember it is not even documented. I don't know the code behind the test but based on the names it looks like an adapter like thing. (e.g. a thin wrapper above a 3rd party api with not too much logic inside). If this is the case, normally I would test it with integration tests, instead of mocks. -- View this message in context: http://forum.world.st/Unifying-Testing-Ideas-tp4726787p4726915.html Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.
Re: [Pharo-dev] Roassal Bug related to Athens?
Igor I see that you are learning the pattern: Write a simple doc [point people to it point people to it point people to it point people to it point people to it point people to it point people to it point people to it point people to it point people to it point people to it point people to it point people to it point people to it point people to it point people to it point people to it ] until: [They got it] It is a massive amount of energy saving :) Stef On Dec 2, 2013, at 10:12 PM, Igor Stasenko siguc...@gmail.com wrote: http://code.google.com/p/nativeboost/wiki/SessionManagement On 2 December 2013 22:02, Igor Stasenko siguc...@gmail.com wrote: On 2 December 2013 17:14, Usman Bhatti usman.bha...@gmail.com wrote: Hello Igor, Moose 5.0 is using Athens as default canvas for Roassal and we have bug with Roassal that seems to be related to Athens. http://code.google.com/p/moose-technology/issues/detail?id=1019 I think it is related to the fact that we create a surface in the OS with Athens and once we quit the image, the surface is destroyed as well. So, when image is restarted with the visualization trying to use the surface, we get the error. right. Could you point to what possibly can be done to avoid this error? Merely checking the existence of an appropriate drawing surface in Athens every time visualization is drawn, would it suffice? yes.. i explained and given examples multiple times both for NB and Athens (and last time it was like couple weeks ago). http://lmgtfy.com/?q=nativeboost+session+awarel=1 regards, Usman -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko.
Re: [Pharo-dev] transcript is plain bad
On Dec 2, 2013, at 8:46 PM, p...@highoctane.be wrote: And missing a ton of methods. Teh StackInterpreterSimulator is agreeing with this statement. send us the ones that are missing. Please note that we should kill the transcript in the future because this is a ^%$*((^%$* outdated way to manage feedback: plain string, close the window data is lost, limited in length, no filtering….. bad bad bad does not scale horrible and so frustrating. I will not send you the current transcript I have because I deal with private code but this does not work. Stef On Mon, Dec 2, 2013 at 8:05 PM, Esteban Lorenzano esteba...@gmail.com wrote: yes, the transcript is ThreadSafeTranscript On Mon, Dec 2, 2013 at 8:00 PM, Yuriy Tymchuk yuriy.tymc...@me.com wrote: Buy the way, is absence of Transcript class - ok? I know how it all works now, but is it ok? :) uko On 02 Dec 2013, at 19:58, Esteban Lorenzano esteba...@gmail.com wrote: yes, please :) On Mon, Dec 2, 2013 at 7:56 PM, Stéphane Ducasse stephane.duca...@inria.fr wrote: The return of the toothpick is near. o/ No I will finish my logger :) Stef
Re: [Pharo-dev] transcript is plain bad
On Dec 3, 2013, at 2:59 AM, Esteban A. Maringolo emaring...@gmail.com wrote: 2013/12/2 Sean P. DeNigris s...@clipperadams.com: EstebanLM wrote yes, the transcript is ThreadSafeTranscript Does ThreadSafe mean I don't have to wrap all my debug logging in WorldState addDeferredUIMessage: [ Transcript... ]? That would save a lot of time :) According to the implementation it means there is a Mutex stopping multiple processes from doing operations (#nextPut:, #nextPutAll:) at the same time. It is... who sends the message first will be received happily, whoever is second will have to wait in a semaphore :D I did that because I was trying to write a chapter on concurrent programming and since the output could be in any order it was difficult to show anything reliably. Now the implementation can be bad and anybody willing to imporve it is more than welcome. Funny outputs might happen if two different senders use #nextPut: intertwined. (other frameworks only left complete line outputs to loggers What is is? In the new logger I'm writing we have log ***OBJECTS*** and not dead strings. , to avoid this kind of scenarios). Regards!
Re: [Pharo-dev] Versionner CI?
The jobs's on Rmod: https://ci.inria.fr/rmod/job/Versionner/ 2013/12/3 Sean P. DeNigris s...@clipperadams.com I was surprised there was no job on community contributions... - Cheers, Sean -- View this message in context: http://forum.world.st/Versionner-CI-tp4726899.html Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.
[Pharo-dev] Spec table problem
This example I used to have does not work any more in the latest Pharo 3: tree := TreeModel new. tree openWithSpec. tree columns: (Array with: (TreeColumnModel new displayBlock: [:node | node content first asString ]; headerLabel: 'Name'; yourself) with: (TreeColumnModel new displayBlock: [:node | node content second asString ]; headerLabel: 'Last Name'; yourself) with: (TreeColumnModel new displayBlock: [:node | node content third asString ]; headerLabel: 'Age'; yourself) with: (TreeColumnModel new displayBlock: [:node | node content fourth asString ]; headerLabel: 'Gender'; yourself)). tree roots: { {'Benjamin'.'Van Ryseghem'.'26'.'M'} . {'Pamela'.'Anderson'.'Far too much'.'F'} }. How can I have a similar behavior to what it used to do ? Thanks !
Re: [Pharo-dev] Responsible development
The main issue I do face when doing Pharo dev at the moment is that there is always this feeling of risking getting locked out of the image. It happens every once in a while for weird reasons. Now, with configurations, Monticello and some changes file drag and drops, it is tolerable. But there is that fear of getting the image to freeze. The Cmd + . not working at all times add to that impression. Things like Oz and a remote browser to an image may alleviate that at one point in the future. Now, Xcode also freezes at times, and good luck for finding what's wrong. The ability to regain control is really what could be a great plus to the platform. As far as I am concerned, as a developer, I hate not having control on what's going on when coding. That may be a psychological trait. And yes, OO isn't about understanding it all before doing anything. But facing a frozen image with no way to get it back is really deeply frustrating. Especially with no way to understand why it went dark. That's where Oz is very interesting (as is Spoon with the remote browser - no matter how unfinished that is). So, I end up saving my image like XXX_mmdd_hhmm with one workspace a day (workspaceProjectMMDD). This takes a lot of disk space, but that is cheap now. It all is rooted in the fear of getting a freeze. Phil --- Philippe Back Dramatic Performance Improvements Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:p...@highoctane.be | Web: http://philippeback.eu Blog: http://philippeback.be | Twitter: @philippeback Youtube: http://www.youtube.com/user/philippeback/videos High Octane SPRL rue cour Boisacq 101 | 1301 Bierges | Belgium Pharo Consortium Member - http://consortium.pharo.org/ Featured on the Software Process and Measurement Cast - http://spamcast.libsyn.com Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added Reseller On Tue, Dec 3, 2013 at 10:01 AM, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 2, 2013, at 8:37 PM, Benjamin benjamin.vanryseghem.ph...@gmail.com wrote: On 02 Dec 2013, at 20:27, Stéphane Ducasse stephane.duca...@inria.fr wrote: We try now to have responsive UIs in the sense the tools like Nautilus try to run things in a separate thread. I will do an experiment and fork each Nautilus opening to see if it can save my ass :P :) personnally I would be really against because just forking is just a way to have a lot more mess in the future. Why ? Because you do not know when you invariants should hold. Normally you expect them to hold once the system is loaded. Because loading for example act as an atomic action when you modify the system. Now if your thread can see and modify different versions of the state be prepared to have really strange and difficult bugs to find. I prefer to have cache than to have forked processes around. Cache will not help you killing Nautilus when it freezes your image fork neither. (why cache by the way ?) I thought the discussion was about speeding up nautilus when performing start up actions. Ben Stef
Re: [Pharo-dev] transcript is plain bad
I am working on this one. Don't kill the transcript, it is useful when working without a console. Now, adding the features you mention is not hard. And the top right triangle menu of Transcript could get a clue from the Workspace one with a Save As entry. I once had an issue with things like (out of the top of my head) FileStream stdout nextPutAll: 'hello'; cr; flush. when I went headless. The image worked at one point and the froze/locked. Until this is sorted out in full, keep a transcript handy. I gave the image to Guille who sent me back a version unlocked with Oz, but it still dies on Windows for example. Weird. Phil --- Philippe Back Dramatic Performance Improvements Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:p...@highoctane.be | Web: http://philippeback.eu Blog: http://philippeback.be | Twitter: @philippeback Youtube: http://www.youtube.com/user/philippeback/videos High Octane SPRL rue cour Boisacq 101 | 1301 Bierges | Belgium Pharo Consortium Member - http://consortium.pharo.org/ Featured on the Software Process and Measurement Cast - http://spamcast.libsyn.com Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added Reseller On Tue, Dec 3, 2013 at 10:10 AM, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 2, 2013, at 8:46 PM, p...@highoctane.be wrote: And missing a ton of methods. Teh StackInterpreterSimulator is agreeing with this statement. send us the ones that are missing. Please note that we should kill the transcript in the future because this is a ^%$*((^%$* outdated way to manage feedback: plain string, close the window data is lost, limited in length, no filtering….. bad bad bad does not scale horrible and so frustrating. I will not send you the current transcript I have because I deal with private code but this does not work. Stef On Mon, Dec 2, 2013 at 8:05 PM, Esteban Lorenzano esteba...@gmail.comwrote: yes, the transcript is ThreadSafeTranscript On Mon, Dec 2, 2013 at 8:00 PM, Yuriy Tymchuk yuriy.tymc...@me.comwrote: Buy the way, is absence of Transcript class - ok? I know how it all works now, but is it ok? :) uko On 02 Dec 2013, at 19:58, Esteban Lorenzano esteba...@gmail.com wrote: yes, please :) On Mon, Dec 2, 2013 at 7:56 PM, Stéphane Ducasse stephane.duca...@inria.fr wrote: The return of the toothpick is near. o/ No I will finish my logger :) Stef
Re: [Pharo-dev] Versionner CI?
I just moved the job to Pharo Contributions: https://ci.inria.fr/pharo-contribution/view/Versions%20and%20Dependencies/ I will also put Metacello job there. Le 3 déc. 2013 à 10:18, Clément Bera a écrit : The jobs's on Rmod: https://ci.inria.fr/rmod/job/Versionner/ 2013/12/3 Sean P. DeNigris s...@clipperadams.com I was surprised there was no job on community contributions... - Cheers, Sean -- View this message in context: http://forum.world.st/Versionner-CI-tp4726899.html Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com. smime.p7s Description: S/MIME cryptographic signature
Re: [Pharo-dev] Responsible development
On 03 Dec 2013, at 10:01, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 2, 2013, at 8:37 PM, Benjamin benjamin.vanryseghem.ph...@gmail.com wrote: On 02 Dec 2013, at 20:27, Stéphane Ducasse stephane.duca...@inria.fr wrote: We try now to have responsive UIs in the sense the tools like Nautilus try to run things in a separate thread. I will do an experiment and fork each Nautilus opening to see if it can save my ass :P :) personnally I would be really against because just forking is just a way to have a lot more mess in the future. Why ? Because you do not know when you invariants should hold. Normally you expect them to hold once the system is loaded. Because loading for example act as an atomic action when you modify the system. Now if your thread can see and modify different versions of the state be prepared to have really strange and difficult bugs to find. I prefer to have cache than to have forked processes around. Cache will not help you killing Nautilus when it freezes your image fork neither. It should not freeze your image anymore, only its own thread Ben (why cache by the way ?) I thought the discussion was about speeding up nautilus when performing start up actions. Ben Stef
Re: [Pharo-dev] Grease conflicts #packages with RPackage
Mariano wrote: You will only have problems with class side #packages. Are all those 35 class side? 5 out of 35. 4 of which are in Pharo 3 Stephan
Re: [Pharo-dev] Opal hook?
Then for your project replace ProtoObject by StubRootClass in UndefinedObjectsubclass:instanceVariableNames:classVariableNames: poolDictionaries:category: it will work. An alternative is to catch OCSemanticWarning or its subclass OCUndeclaredVariableWarning while loading the new classes and execute another code instead of the default action in the exception handling block 2013/12/3 Stéphane Ducasse stephane.duca...@inria.fr Well if the class does not exists it calls the method on UndefinedObject (UndeclaredBinding). And you have: I will check and see if I can set up a hook because having classes subclasses of protoobject is not a good idea when loading broken code. UndefinedObjectsubclass: nameOfClass instanceVariableNames: instVarNames classVariableNames: classVarNames poolDictionaries: poolDictnames category: category Calling this method is now considered an accident. If you really want to create a class with a nil superclass, then create the class and then set the superclass using #superclass: self traceCr: ('Attempt to create ', nameOfClass, ' as a subclass of nil. Possibly a class is being loaded before its superclass.'). ^ProtoObject subclass: nameOfClass instanceVariableNames: instVarNames classVariableNames: classVarNames poolDictionaries: poolDictnames category: category The best is to set manually the superclass after with #superclass: No because I have no idea what are the classes whose superclasses are not in the image. With a proper hook I could just say if the superclass is unknow please use the StubRootClass of my framework. else let the system handles it. Stef
Re: [Pharo-dev] transcript is plain bad
On Dec 3, 2013, at 10:34 AM, p...@highoctane.be wrote: I am working on this one. Don't kill the transcript, it is useful when working without a console. I will not kill it but it will just be dull outputer for my logger. In fact I'm missing a user interface (the idea was to build it with fernando) and right now the transcript just displays the printstring of my log objects. So I can even control what I want to output. more important I can filter the log ojbjects. For example I need to know when my framework finish to deal with a class and now this is mix with the compiler logherea Now, adding the features you mention is not hard. And the top right triangle menu of Transcript could get a clue from the Workspace one with a Save As entry. No i just DO NOT WANT STRINGS I once had an issue with things like (out of the top of my head) FileStream stdout nextPutAll: 'hello'; cr; flush. when I went headless. The image worked at one point and the froze/locked. Until this is sorted out in full, keep a transcript handy. I gave the image to Guille who sent me back a version unlocked with Oz, but it still dies on Windows for example. Weird. Phil --- Philippe Back Dramatic Performance Improvements Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:p...@highoctane.be | Web: http://philippeback.eu Blog: http://philippeback.be | Twitter: @philippeback Youtube: http://www.youtube.com/user/philippeback/videos High Octane SPRL rue cour Boisacq 101 | 1301 Bierges | Belgium Pharo Consortium Member - http://consortium.pharo.org/ Featured on the Software Process and Measurement Cast - http://spamcast.libsyn.com Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added Reseller On Tue, Dec 3, 2013 at 10:10 AM, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 2, 2013, at 8:46 PM, p...@highoctane.be wrote: And missing a ton of methods. Teh StackInterpreterSimulator is agreeing with this statement. send us the ones that are missing. Please note that we should kill the transcript in the future because this is a ^%$*((^%$* outdated way to manage feedback: plain string, close the window data is lost, limited in length, no filtering….. bad bad bad does not scale horrible and so frustrating. I will not send you the current transcript I have because I deal with private code but this does not work. Stef On Mon, Dec 2, 2013 at 8:05 PM, Esteban Lorenzano esteba...@gmail.com wrote: yes, the transcript is ThreadSafeTranscript On Mon, Dec 2, 2013 at 8:00 PM, Yuriy Tymchuk yuriy.tymc...@me.com wrote: Buy the way, is absence of Transcript class - ok? I know how it all works now, but is it ok? :) uko On 02 Dec 2013, at 19:58, Esteban Lorenzano esteba...@gmail.com wrote: yes, please :) On Mon, Dec 2, 2013 at 7:56 PM, Stéphane Ducasse stephane.duca...@inria.fr wrote: The return of the toothpick is near. o/ No I will finish my logger :) Stef
Re: [Pharo-dev] Responsible development
On 03 Dec 2013, at 11:08, Benjamin benjamin.vanryseghem.ph...@gmail.com wrote: On 03 Dec 2013, at 10:01, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 2, 2013, at 8:37 PM, Benjamin benjamin.vanryseghem.ph...@gmail.com wrote: On 02 Dec 2013, at 20:27, Stéphane Ducasse stephane.duca...@inria.fr wrote: We try now to have responsive UIs in the sense the tools like Nautilus try to run things in a separate thread. I will do an experiment and fork each Nautilus opening to see if it can save my ass :P :) personnally I would be really against because just forking is just a way to have a lot more mess in the future. Why ? Because you do not know when you invariants should hold. Normally you expect them to hold once the system is loaded. Because loading for example act as an atomic action when you modify the system. Now if your thread can see and modify different versions of the state be prepared to have really strange and difficult bugs to find. I prefer to have cache than to have forked processes around. Cache will not help you killing Nautilus when it freezes your image fork neither. It should not freeze your image anymore, only its own thread Wow, that was fast Ben (why cache by the way ?) I thought the discussion was about speeding up nautilus when performing start up actions. Ben Stef
Re: [Pharo-dev] Responsible development
looks like your post to the mailing list was not as pointless as you thought ;) Great work Benjamin On Tue, Dec 3, 2013 at 12:38 PM, Yuriy Tymchuk yuriy.tymc...@me.com wrote: On 03 Dec 2013, at 11:08, Benjamin benjamin.vanryseghem.ph...@gmail.com wrote: On 03 Dec 2013, at 10:01, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 2, 2013, at 8:37 PM, Benjamin benjamin.vanryseghem.ph...@gmail.com wrote: On 02 Dec 2013, at 20:27, Stéphane Ducasse stephane.duca...@inria.fr wrote: We try now to have responsive UIs in the sense the tools like Nautilus try to run things in a separate thread. I will do an experiment and fork each Nautilus opening to see if it can save my ass :P :) personnally I would be really against because just forking is just a way to have a lot more mess in the future. Why ? Because you do not know when you invariants should hold. Normally you expect them to hold once the system is loaded. Because loading for example act as an atomic action when you modify the system. Now if your thread can see and modify different versions of the state be prepared to have really strange and difficult bugs to find. I prefer to have cache than to have forked processes around. Cache will not help you killing Nautilus when it freezes your image fork neither. It should not freeze your image anymore, only its own thread Wow, that was fast Ben (why cache by the way ?) I thought the discussion was about speeding up nautilus when performing start up actions. Ben Stef
Re: [Pharo-dev] Grease conflicts #packages with RPackage
The real problem is that a CLASS now responds to the packages message. Stef On Dec 3, 2013, at 11:10 AM, Stephan Eggermont step...@stack.nl wrote: Mariano wrote: You will only have problems with class side #packages. Are all those 35 class side? 5 out of 35. 4 of which are in Pharo 3 Stephan
Re: [Pharo-dev] Opal hook?
On Dec 3, 2013, at 11:20 AM, Clément Bera bera.clem...@gmail.com wrote: Then for your project replace ProtoObject by StubRootClass in UndefinedObjectsubclass:instanceVariableNames:classVariableNames:poolDictionaries:category: it will work. yes but this is ugly because I do not want override. So I will introduce an exception so that we can do that in a clean way. An alternative is to catch OCSemanticWarning or its subclass OCUndeclaredVariableWarning while loading the new classes and execute another code instead of the default action in the exception handling block do you know if the OCUndeclaredVariable is raised for unknown superclass? How to undefined and OCUndeclaredVariableWarning relate? Stef 2013/12/3 Stéphane Ducasse stephane.duca...@inria.fr Well if the class does not exists it calls the method on UndefinedObject (UndeclaredBinding). And you have: I will check and see if I can set up a hook because having classes subclasses of protoobject is not a good idea when loading broken code. UndefinedObjectsubclass: nameOfClass instanceVariableNames: instVarNames classVariableNames: classVarNames poolDictionaries: poolDictnames category: category Calling this method is now considered an accident. If you really want to create a class with a nil superclass, then create the class and then set the superclass using #superclass: self traceCr: ('Attempt to create ', nameOfClass, ' as a subclass of nil. Possibly a class is being loaded before its superclass.'). ^ProtoObject subclass: nameOfClass instanceVariableNames: instVarNames classVariableNames: classVarNames poolDictionaries: poolDictnames category: category The best is to set manually the superclass after with #superclass: No because I have no idea what are the classes whose superclasses are not in the image. With a proper hook I could just say if the superclass is unknow please use the StubRootClass of my framework. else let the system handles it. Stef
Re: [Pharo-dev] transcript is plain bad
What's wrong with Strings anyway? But yeah, I understand your point. What I have done for my own stuff is to have a TLog aspect with info, debug, error, warn and, well, Strings. But double dispatch could take care of that, like printOn:, storeOn: etc. Do you have some code that I can look at? TLoginfo: anObject anObject logOn: Logger default info. Phil On Tue, Dec 3, 2013 at 11:27 AM, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 3, 2013, at 10:34 AM, p...@highoctane.be wrote: I am working on this one. Don't kill the transcript, it is useful when working without a console. I will not kill it but it will just be dull outputer for my logger. In fact I'm missing a user interface (the idea was to build it with fernando) and right now the transcript just displays the printstring of my log objects. So I can even control what I want to output. more important I can filter the log ojbjects. For example I need to know when my framework finish to deal with a class and now this is mix with the compiler logherea Now, adding the features you mention is not hard. And the top right triangle menu of Transcript could get a clue from the Workspace one with a Save As entry. No i just DO NOT WANT STRINGS I once had an issue with things like (out of the top of my head) FileStream stdout nextPutAll: 'hello'; cr; flush. when I went headless. The image worked at one point and the froze/locked. Until this is sorted out in full, keep a transcript handy. I gave the image to Guille who sent me back a version unlocked with Oz, but it still dies on Windows for example. Weird. Phil --- Philippe Back Dramatic Performance Improvements Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:p...@highoctane.be | Web: http://philippeback.eu Blog: http://philippeback.be | Twitter: @philippeback Youtube: http://www.youtube.com/user/philippeback/videos High Octane SPRL rue cour Boisacq 101 | 1301 Bierges | Belgium Pharo Consortium Member - http://consortium.pharo.org/ Featured on the Software Process and Measurement Cast - http://spamcast.libsyn.com Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added Reseller On Tue, Dec 3, 2013 at 10:10 AM, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 2, 2013, at 8:46 PM, p...@highoctane.be wrote: And missing a ton of methods. Teh StackInterpreterSimulator is agreeing with this statement. send us the ones that are missing. Please note that we should kill the transcript in the future because this is a ^%$*((^%$* outdated way to manage feedback: plain string, close the window data is lost, limited in length, no filtering….. bad bad bad does not scale horrible and so frustrating. I will not send you the current transcript I have because I deal with private code but this does not work. Stef On Mon, Dec 2, 2013 at 8:05 PM, Esteban Lorenzano esteba...@gmail.comwrote: yes, the transcript is ThreadSafeTranscript On Mon, Dec 2, 2013 at 8:00 PM, Yuriy Tymchuk yuriy.tymc...@me.comwrote: Buy the way, is absence of Transcript class - ok? I know how it all works now, but is it ok? :) uko On 02 Dec 2013, at 19:58, Esteban Lorenzano esteba...@gmail.com wrote: yes, please :) On Mon, Dec 2, 2013 at 7:56 PM, Stéphane Ducasse stephane.duca...@inria.fr wrote: The return of the toothpick is near. o/ No I will finish my logger :) Stef
Re: [Pharo-dev] Responsible development
I did not say I did it :) Sorry for the misunderstanding. I was saying that theoretically it should not freeze the UI thread if you fork. But then it also mean you should freeze the UI thread from time to time while doing critical operations So it’s actually a bit tricky to implement Ben On 03 Dec 2013, at 11:40, kilon alios kilon.al...@gmail.com wrote: looks like your post to the mailing list was not as pointless as you thought ;) Great work Benjamin On Tue, Dec 3, 2013 at 12:38 PM, Yuriy Tymchuk yuriy.tymc...@me.com wrote: On 03 Dec 2013, at 11:08, Benjamin benjamin.vanryseghem.ph...@gmail.com wrote: On 03 Dec 2013, at 10:01, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 2, 2013, at 8:37 PM, Benjamin benjamin.vanryseghem.ph...@gmail.com wrote: On 02 Dec 2013, at 20:27, Stéphane Ducasse stephane.duca...@inria.fr wrote: We try now to have responsive UIs in the sense the tools like Nautilus try to run things in a separate thread. I will do an experiment and fork each Nautilus opening to see if it can save my ass :P :) personnally I would be really against because just forking is just a way to have a lot more mess in the future. Why ? Because you do not know when you invariants should hold. Normally you expect them to hold once the system is loaded. Because loading for example act as an atomic action when you modify the system. Now if your thread can see and modify different versions of the state be prepared to have really strange and difficult bugs to find. I prefer to have cache than to have forked processes around. Cache will not help you killing Nautilus when it freezes your image fork neither. It should not freeze your image anymore, only its own thread Wow, that was fast Ben (why cache by the way ?) I thought the discussion was about speeding up nautilus when performing start up actions. Ben Stef
Re: [Pharo-dev] NativeBoost String Handling Bug?
i have no idea, but following is not related to what changes i did: ./pharo Pharo.image update --from-file=updates30.staged VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (MBUpdateDevCommand is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) MBAddDescriptionCommandTesttestExecute (MBAddDescriptionCommand is Undeclared) MBConfigurationInfoTesttestInitialization (ConfigurationOfVersionner is Undeclared) MBAbstractVersionInfocmdSetCurrentVersion (MBSetCurrentVersionCommand is Undeclared) MTProjectaddDependentProject:from:withVersion:loads:(repository is shadowed) On 3 December 2013 10:17, Stéphane Ducasse stephane.duca...@inria.frwrote: You know what? It will not be integrated because apparently the monkey tagged it as invalid. I have no idea why. I hate this automatic down grading. May be we should have a different tags to make the difference between work needed = nothing was done or something but it was never in the state where we could think it should be integrated was integration ready = it was ready but something happen Stef Igor Stasenko wrote if yes then i think we can finally close the bug entry). I updated the issue and made your packages into a slice: https://pharo.fogbugz.com/default.asp?7542 SLICE-Issue-7542-NB-system-example-SeanDeNigris.1 - Cheers, Sean -- View this message in context: http://forum.world.st/NativeBoost-String-Handling-Bug-tp4726860p4726895.html Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com. -- Best regards, Igor Stasenko.
Re: [Pharo-dev] transcript is plain bad
Am 03.12.2013 um 11:47 schrieb p...@highoctane.be: What's wrong with Strings anyway? But yeah, I understand your point. Strings are fine when you don’t need specific behavior oder structure of your log messages anymore. A conversion to string should in most cases happen as late as possible. A log entry can still serve other purposes than represent an custom formatted string thing. Think about making all the exception handling in away that it can only signal strings. The same you feel now you would lose here is similar to the gain you’ll get making log messages objects ;) It is just that you are used to objects when it comes to exceptions and you are used to strings when comes to log messages. The former being a good idea the latter not. What I have done for my own stuff is to have a TLog aspect with info, debug, error, warn and, well, Strings. But double dispatch could take care of that, like printOn:, storeOn: etc. Do you have some code that I can look at? http://smalltalkhub.com/#!/~StephaneDucasse/SystemLogger Norbert TLoginfo: anObject anObject logOn: Logger default info. Phil On Tue, Dec 3, 2013 at 11:27 AM, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 3, 2013, at 10:34 AM, p...@highoctane.be wrote: I am working on this one. Don't kill the transcript, it is useful when working without a console. I will not kill it but it will just be dull outputer for my logger. In fact I'm missing a user interface (the idea was to build it with fernando) and right now the transcript just displays the printstring of my log objects. So I can even control what I want to output. more important I can filter the log ojbjects. For example I need to know when my framework finish to deal with a class and now this is mix with the compiler logherea Now, adding the features you mention is not hard. And the top right triangle menu of Transcript could get a clue from the Workspace one with a Save As entry. No i just DO NOT WANT STRINGS I once had an issue with things like (out of the top of my head) FileStream stdout nextPutAll: 'hello'; cr; flush. when I went headless. The image worked at one point and the froze/locked. Until this is sorted out in full, keep a transcript handy. I gave the image to Guille who sent me back a version unlocked with Oz, but it still dies on Windows for example. Weird. Phil --- Philippe Back Dramatic Performance Improvements Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:p...@highoctane.be | Web: http://philippeback.eu Blog: http://philippeback.be | Twitter: @philippeback Youtube: http://www.youtube.com/user/philippeback/videos High Octane SPRL rue cour Boisacq 101 | 1301 Bierges | Belgium Pharo Consortium Member - http://consortium.pharo.org/ Featured on the Software Process and Measurement Cast - http://spamcast.libsyn.com Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added Reseller On Tue, Dec 3, 2013 at 10:10 AM, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 2, 2013, at 8:46 PM, p...@highoctane.be wrote: And missing a ton of methods. Teh StackInterpreterSimulator is agreeing with this statement. send us the ones that are missing. Please note that we should kill the transcript in the future because this is a ^%$*((^%$* outdated way to manage feedback: plain string, close the window data is lost, limited in length, no filtering….. bad bad bad does not scale horrible and so frustrating. I will not send you the current transcript I have because I deal with private code but this does not work. Stef On Mon, Dec 2, 2013 at 8:05 PM, Esteban Lorenzano esteba...@gmail.com wrote: yes, the transcript is ThreadSafeTranscript On Mon, Dec 2, 2013 at 8:00 PM, Yuriy Tymchuk yuriy.tymc...@me.com wrote: Buy the way, is absence of Transcript class - ok? I know how it all works now, but is it ok? :) uko On 02 Dec 2013, at 19:58, Esteban Lorenzano esteba...@gmail.com wrote: yes, please :) On Mon, Dec 2, 2013 at 7:56 PM, Stéphane Ducasse stephane.duca...@inria.fr wrote: The return of the toothpick is near. o/ No I will finish my logger :) Stef
Re: [Pharo-dev] Responsible development
fork neither. It should not freeze your image anymore, only its own thread I'm not convinced. Because if you get a thread per nautilus to me it just introduces potentially more problems. Just forking a process in general does not solve problem. Also debugging can be harder when you have different threads executing the same code. Not freezing is just that you do not damage the main ui thread. Ben (why cache by the way ?) I thought the discussion was about speeding up nautilus when performing start up actions. Ben Stef
Re: [Pharo-dev] transcript is plain bad
Sure have a look at SystemLogger http://smalltalkhub.com/#!/~StephaneDucasse/SystemLogger I did not check the changes made by norbert. I will work on it during xmas. Stef On Dec 3, 2013, at 11:47 AM, p...@highoctane.be p...@highoctane.be wrote: What's wrong with Strings anyway? But yeah, I understand your point. What I have done for my own stuff is to have a TLog aspect with info, debug, error, warn and, well, Strings. But double dispatch could take care of that, like printOn:, storeOn: etc. Do you have some code that I can look at? TLoginfo: anObject anObject logOn: Logger default info. Phil On Tue, Dec 3, 2013 at 11:27 AM, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 3, 2013, at 10:34 AM, p...@highoctane.be wrote: I am working on this one. Don't kill the transcript, it is useful when working without a console. I will not kill it but it will just be dull outputer for my logger. In fact I'm missing a user interface (the idea was to build it with fernando) and right now the transcript just displays the printstring of my log objects. So I can even control what I want to output. more important I can filter the log ojbjects. For example I need to know when my framework finish to deal with a class and now this is mix with the compiler logherea Now, adding the features you mention is not hard. And the top right triangle menu of Transcript could get a clue from the Workspace one with a Save As entry. No i just DO NOT WANT STRINGS I once had an issue with things like (out of the top of my head) FileStream stdout nextPutAll: 'hello'; cr; flush. when I went headless. The image worked at one point and the froze/locked. Until this is sorted out in full, keep a transcript handy. I gave the image to Guille who sent me back a version unlocked with Oz, but it still dies on Windows for example. Weird. Phil --- Philippe Back Dramatic Performance Improvements Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:p...@highoctane.be | Web: http://philippeback.eu Blog: http://philippeback.be | Twitter: @philippeback Youtube: http://www.youtube.com/user/philippeback/videos High Octane SPRL rue cour Boisacq 101 | 1301 Bierges | Belgium Pharo Consortium Member - http://consortium.pharo.org/ Featured on the Software Process and Measurement Cast - http://spamcast.libsyn.com Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added Reseller On Tue, Dec 3, 2013 at 10:10 AM, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 2, 2013, at 8:46 PM, p...@highoctane.be wrote: And missing a ton of methods. Teh StackInterpreterSimulator is agreeing with this statement. send us the ones that are missing. Please note that we should kill the transcript in the future because this is a ^%$*((^%$* outdated way to manage feedback: plain string, close the window data is lost, limited in length, no filtering….. bad bad bad does not scale horrible and so frustrating. I will not send you the current transcript I have because I deal with private code but this does not work. Stef On Mon, Dec 2, 2013 at 8:05 PM, Esteban Lorenzano esteba...@gmail.com wrote: yes, the transcript is ThreadSafeTranscript On Mon, Dec 2, 2013 at 8:00 PM, Yuriy Tymchuk yuriy.tymc...@me.com wrote: Buy the way, is absence of Transcript class - ok? I know how it all works now, but is it ok? :) uko On 02 Dec 2013, at 19:58, Esteban Lorenzano esteba...@gmail.com wrote: yes, please :) On Mon, Dec 2, 2013 at 7:56 PM, Stéphane Ducasse stephane.duca...@inria.fr wrote: The return of the toothpick is near. o/ No I will finish my logger :) Stef
Re: [Pharo-dev] NativeBoost String Handling Bug?
Igor where do you get this information? Because I see https://ci.inria.fr/pharo/job/Pharo-3.0-Issue-Validator/3549//artifact/validationReport.html and it is different. stef On Dec 3, 2013, at 11:59 AM, Igor Stasenko siguc...@gmail.com wrote: i have no idea, but following is not related to what changes i did: ./pharo Pharo.image update --from-file=updates30.staged VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (MBUpdateDevCommand is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) MBAddDescriptionCommandTesttestExecute (MBAddDescriptionCommand is Undeclared) MBConfigurationInfoTesttestInitialization (ConfigurationOfVersionner is Undeclared) MBAbstractVersionInfocmdSetCurrentVersion (MBSetCurrentVersionCommand is Undeclared) MTProjectaddDependentProject:from:withVersion:loads:(repository is shadowed) On 3 December 2013 10:17, Stéphane Ducasse stephane.duca...@inria.fr wrote: You know what? It will not be integrated because apparently the monkey tagged it as invalid. I have no idea why. I hate this automatic down grading. May be we should have a different tags to make the difference between work needed = nothing was done or something but it was never in the state where we could think it should be integrated was integration ready = it was ready but something happen Stef Igor Stasenko wrote if yes then i think we can finally close the bug entry). I updated the issue and made your packages into a slice: https://pharo.fogbugz.com/default.asp?7542 SLICE-Issue-7542-NB-system-example-SeanDeNigris.1 - Cheers, Sean -- View this message in context: http://forum.world.st/NativeBoost-String-Handling-Bug-tp4726860p4726895.html Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com. -- Best regards, Igor Stasenko.
Re: [Pharo-dev] NativeBoost String Handling Bug?
apparently i was looking at wrong place, and according to report there's merge conflict. why? because i merged everything before commit. On 3 December 2013 12:09, Stéphane Ducasse stephane.duca...@inria.frwrote: Igor where do you get this information? Because I see https://ci.inria.fr/pharo/job/Pharo-3.0-Issue-Validator/3549//artifact/validationReport.html and it is different. stef On Dec 3, 2013, at 11:59 AM, Igor Stasenko siguc...@gmail.com wrote: i have no idea, but following is not related to what changes i did: ./pharo Pharo.image update --from-file=updates30.staged VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (MBUpdateDevCommand is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) MBAddDescriptionCommandTesttestExecute (MBAddDescriptionCommand is Undeclared) MBConfigurationInfoTesttestInitialization (ConfigurationOfVersionner is Undeclared) MBAbstractVersionInfocmdSetCurrentVersion (MBSetCurrentVersionCommand is Undeclared) MTProjectaddDependentProject:from:withVersion:loads:(repository is shadowed) On 3 December 2013 10:17, Stéphane Ducasse stephane.duca...@inria.frwrote: You know what? It will not be integrated because apparently the monkey tagged it as invalid. I have no idea why. I hate this automatic down grading. May be we should have a different tags to make the difference between work needed = nothing was done or something but it was never in the state where we could think it should be integrated was integration ready = it was ready but something happen Stef Igor Stasenko wrote if yes then i think we can finally close the bug entry). I updated the issue and made your packages into a slice: https://pharo.fogbugz.com/default.asp?7542 SLICE-Issue-7542-NB-system-example-SeanDeNigris.1 - Cheers, Sean -- View this message in context: http://forum.world.st/NativeBoost-String-Handling-Bug-tp4726860p4726895.html Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com. -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko.
Re: [Pharo-dev] Versionner Impressions
Yea, in 3.0 - Cheers, Sean -- View this message in context: http://forum.world.st/Versionner-Impressions-tp4726902p4726960.html Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.
Re: [Pharo-dev] Roassal 3d now support textures
did you move some functionality (to the place they belong) to NBOpenGL? Because this should be done and JB has already spent time on that. Stef hi! Just to keep you up to date with the Roassal 3d effort. https://www.facebook.com/photo.php?fbid=547995685287033set=a.529997903753478.1073741828.340543479365589type=3theater Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Re: [Pharo-dev] Grease conflicts #packages with RPackage
Stef wrote: The real problem is that a CLASS now responds to the packages message. SUnitAPIDocumentation also implements packages class-side. If I try to add a instance side method #bla I get a debugger (but the method is added). Searching for implementors then also returns a debugger. I assume this problem wasn’t seen as the classes implementing packages class-side don’t have instance side behavior. The classes implementing packages class-side are SUnitAPIDocumentation AnnouncementsAPIDocumentation HelpAPIDocumentation ProfStefAPIHelp They all return an array of package name strings Stephan
Re: [Pharo-dev] NativeBoost String Handling Bug?
Yes protocol: private anonymousSubclassInitElementType: aTypeName create and initialize the anonymous subclass of me | newSubclass | newSubclass := self classBuilder anonymousSubclassOf: NBExternalArray. newSubclass initElementType: aTypeName. ^ newSubclass vs protocol: private anonymousSubclassInitElementType: aTypeName create and initialize the anonymous subclass of me | newSubclass | newSubclass := AnonymousClassInstaller make: [ :builder | we're not using 'self' to avoid wrong subclassing from anonymous subclass builder superclass: NBExternalArray ]. newSubclass initElementType: aTypeName. ^ newSubclass And protocol: class factory getClassForType: aTypeName Do not confuse.! This method answers an anonymous class, a subclass of NBExternalTypeValue, which can be used for instantiation later i.e: floatTypeClass := NBExternalTypeValue ofType: 'float'. float := floatTypeClass new. float value: 1.5. float value. | newSubclass | newSubclass := self classBuilder anonymousSubclassOf: NBExternalTypeValue. newSubclass valueType: aTypeName. ^ newSubclass vs protocol: class factory getClassForType: aTypeName Do not confuse.! This method answers an anonymous class, a subclass of NBExternalTypeValue, which can be used for instantiation later i.e: floatTypeClass := NBTypeValue ofType: 'float'. float := floatTypeClass new. float value: 1.5. float value. | newSubclass | newSubclass := AnonymousClassInstaller make: [ :builder | we're not using 'self' to avoid wrong subclassing from anonymous subclass builder superclass: NBExternalTypeValue ]. newSubclass initValueType: aTypeName. ^ newSubclass To anyone who changed this, can i have some canonical protocol for creating anonymous subclasses without referring to fuzzy , vague and unknown (as to me) AnonymousClassInstaller or other strange globals? On 3 December 2013 13:01, Benjamin benjamin.vanryseghem.ph...@gmail.comwrote: I testify, there are 2 conflicts Ben On 03 Dec 2013, at 12:44, Igor Stasenko siguc...@gmail.com wrote: apparently i was looking at wrong place, and according to report there's merge conflict. why? because i merged everything before commit. On 3 December 2013 12:09, Stéphane Ducasse stephane.duca...@inria.frwrote: Igor where do you get this information? Because I see https://ci.inria.fr/pharo/job/Pharo-3.0-Issue-Validator/3549//artifact/validationReport.html and it is different. stef On Dec 3, 2013, at 11:59 AM, Igor Stasenko siguc...@gmail.com wrote: i have no idea, but following is not related to what changes i did: ./pharo Pharo.image update --from-file=updates30.staged VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (MBUpdateDevCommand is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) MBAddDescriptionCommandTesttestExecute (MBAddDescriptionCommand is Undeclared) MBConfigurationInfoTesttestInitialization (ConfigurationOfVersionner is Undeclared) MBAbstractVersionInfocmdSetCurrentVersion (MBSetCurrentVersionCommand is Undeclared) MTProjectaddDependentProject:from:withVersion:loads:(repository is shadowed) On 3 December 2013 10:17, Stéphane Ducasse stephane.duca...@inria.frwrote: You know what? It will not be integrated because apparently the monkey tagged it as invalid. I have no idea why. I hate this automatic down grading. May be we should have a different tags to make the difference between work needed = nothing was done or something but it was never in the state where we could think it should be integrated was integration ready = it was ready but something happen Stef Igor Stasenko wrote if yes then i think we can finally close the bug entry). I updated the issue and made your packages into a slice: https://pharo.fogbugz.com/default.asp?7542 SLICE-Issue-7542-NB-system-example-SeanDeNigris.1 - Cheers, Sean -- View this message in context: http://forum.world.st/NativeBoost-String-Handling-Bug-tp4726860p4726895.html Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com http://nabble.com/. -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko.
Re: [Pharo-dev] NativeBoost String Handling Bug?
I'm ok to add some convenient methods to class installers. just that I do not have time to do it right now, so be my guest :) Esteban On Tue, Dec 3, 2013 at 1:10 PM, Igor Stasenko siguc...@gmail.com wrote: Yes protocol: private anonymousSubclassInitElementType: aTypeName create and initialize the anonymous subclass of me | newSubclass | newSubclass := self classBuilder anonymousSubclassOf: NBExternalArray. newSubclass initElementType: aTypeName. ^ newSubclass vs protocol: private anonymousSubclassInitElementType: aTypeName create and initialize the anonymous subclass of me | newSubclass | newSubclass := AnonymousClassInstaller make: [ :builder | we're not using 'self' to avoid wrong subclassing from anonymous subclass builder superclass: NBExternalArray ]. newSubclass initElementType: aTypeName. ^ newSubclass And protocol: class factory getClassForType: aTypeName Do not confuse.! This method answers an anonymous class, a subclass of NBExternalTypeValue, which can be used for instantiation later i.e: floatTypeClass := NBExternalTypeValue ofType: 'float'. float := floatTypeClass new. float value: 1.5. float value. | newSubclass | newSubclass := self classBuilder anonymousSubclassOf: NBExternalTypeValue. newSubclass valueType: aTypeName. ^ newSubclass vs protocol: class factory getClassForType: aTypeName Do not confuse.! This method answers an anonymous class, a subclass of NBExternalTypeValue, which can be used for instantiation later i.e: floatTypeClass := NBTypeValue ofType: 'float'. float := floatTypeClass new. float value: 1.5. float value. | newSubclass | newSubclass := AnonymousClassInstaller make: [ :builder | we're not using 'self' to avoid wrong subclassing from anonymous subclass builder superclass: NBExternalTypeValue ]. newSubclass initValueType: aTypeName. ^ newSubclass To anyone who changed this, can i have some canonical protocol for creating anonymous subclasses without referring to fuzzy , vague and unknown (as to me) AnonymousClassInstaller or other strange globals? On 3 December 2013 13:01, Benjamin benjamin.vanryseghem.ph...@gmail.comwrote: I testify, there are 2 conflicts Ben On 03 Dec 2013, at 12:44, Igor Stasenko siguc...@gmail.com wrote: apparently i was looking at wrong place, and according to report there's merge conflict. why? because i merged everything before commit. On 3 December 2013 12:09, Stéphane Ducasse stephane.duca...@inria.frwrote: Igor where do you get this information? Because I see https://ci.inria.fr/pharo/job/Pharo-3.0-Issue-Validator/3549//artifact/validationReport.html and it is different. stef On Dec 3, 2013, at 11:59 AM, Igor Stasenko siguc...@gmail.com wrote: i have no idea, but following is not related to what changes i did: ./pharo Pharo.image update --from-file=updates30.staged VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) VersionnerProjectToolBarupdate (MBUpdateDevCommand is Undeclared) VersionnerProjectToolBarupdate (update is Undeclared) MBAddDescriptionCommandTesttestExecute (MBAddDescriptionCommand is Undeclared) MBConfigurationInfoTesttestInitialization (ConfigurationOfVersionner is Undeclared) MBAbstractVersionInfocmdSetCurrentVersion (MBSetCurrentVersionCommand is Undeclared) MTProjectaddDependentProject:from:withVersion:loads:(repository is shadowed) On 3 December 2013 10:17, Stéphane Ducasse stephane.duca...@inria.frwrote: You know what? It will not be integrated because apparently the monkey tagged it as invalid. I have no idea why. I hate this automatic down grading. May be we should have a different tags to make the difference between work needed = nothing was done or something but it was never in the state where we could think it should be integrated was integration ready = it was ready but something happen Stef Igor Stasenko wrote if yes then i think we can finally close the bug entry). I updated the issue and made your packages into a slice: https://pharo.fogbugz.com/default.asp?7542 SLICE-Issue-7542-NB-system-example-SeanDeNigris.1 - Cheers, Sean -- View this message in context: http://forum.world.st/NativeBoost-String-Handling-Bug-tp4726860p4726895.html Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com http://nabble.com/. -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko.
[Pharo-dev] Building Pharo using Interpreter Class
My freind Dimitri was not able to post his message. I am working with him on this. ___ Hello, as part of a Seminar in the University im trying to build the PharoVM. According to the README file here ([1]) I was able to generate and to build the VM successfully. Now I would like to build the VM without Cog or Stack-to-Register optimizations... The problem here is, that I could not find any config class (which is a subclass of CPlatformConfig), that provides the right configurations and allows to build the VM without errors. I have tried to modify PharoUnixConfig(because it was the default config class), but unfortunately the build failes when the compiler tries to compile gcc3x-interp.c. Could somebody help me with this problem? How should I configure my own Config class? Basically our Group tries to implement an object table in Pharo and we want to use (and modify) the basic Interpreter class. [1] https://github.com/pharo-project/pharo-vm Best regards, Dimitri Korsch
Re: [Pharo-dev] NativeBoost String Handling Bug?
Yes, when we discussed this with Martin (for a first time on that topic, i guess) all i wanted is a convenience method to _just_ make anonymous subclass.. how long this expression could be? it should be as long as: myClass createAnonymousSubclass. and what we have instead? First: self classBuilder anonymousSubclassOf: NBExternalArray. then newSubclass := AnonymousClassInstaller make: [ :builder | builder superclass: NBExternalArray ]. this is unacceptable. Because imagine one day you would want to port such code, (not necessary NB, but code which creates and uses anonymous subclasses), which code for porter, would be easier to understand how to port it if another dialect will miss any AnonymousClassInstaller? -- Best regards, Igor Stasenko.
[Pharo-dev] how i can browse the users of some trait?
namely, TClass cmd-shift-N doesn't helps -- Best regards, Igor Stasenko.
Re: [Pharo-dev] how i can browse the users of some trait?
and as follow-up, why we need such trait if it has only one user??? On 3 December 2013 13:30, Igor Stasenko siguc...@gmail.com wrote: namely, TClass cmd-shift-N doesn't helps -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko.
Re: [Pharo-dev] Building Pharo using Interpreter Class
There is working pure interpreter in the pharovm. Phil On Tuesday, December 3, 2013, Kirstin Heidler wrote: My freind Dimitri was not able to post his message. I am working with him on this. ___ Hello, as part of a Seminar in the University im trying to build the PharoVM. According to the README file here ([1]) I was able to generate and to build the VM successfully. Now I would like to build the VM without Cog or Stack-to-Register optimizations... The problem here is, that I could not find any config class (which is a subclass of CPlatformConfig), that provides the right configurations and allows to build the VM without errors. I have tried to modify PharoUnixConfig(because it was the default config class), but unfortunately the build failes when the compiler tries to compile gcc3x-interp.c. Could somebody help me with this problem? How should I configure my own Config class? Basically our Group tries to implement an object table in Pharo and we want to use (and modify) the basic Interpreter class. [1] https://github.com/pharo-project/pharo-vm Best regards, Dimitri Korsch -- --- Philippe Back Dramatic Performance Improvements Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:p...@highoctane.be | Web: http://philippeback.eu Blog: http://philippeback.be | Twitter: @philippeback Youtube: http://www.youtube.com/user/philippeback/videos High Octane SPRL rue cour Boisacq 101 | 1301 Bierges | Belgium Pharo Consortium Member - http://consortium.pharo.org/ Featured on the Software Process and Measurement Cast - http://spamcast.libsyn.com Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added Reseller
Re: [Pharo-dev] how i can browse the users of some trait?
Why creating a class if it has only one user ? Ben On 03 Dec 2013, at 13:32, Igor Stasenko siguc...@gmail.com wrote: and as follow-up, why we need such trait if it has only one user??? On 3 December 2013 13:30, Igor Stasenko siguc...@gmail.com wrote: namely, TClass cmd-shift-N doesn't helps -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko.
Re: [Pharo-dev] how i can browse the users of some trait?
is part of the making class and traits polymorphic effort. On Tue, Dec 3, 2013 at 1:33 PM, Benjamin benjamin.vanryseghem.ph...@gmail.com wrote: Why creating a class if it has only one user ? Ben On 03 Dec 2013, at 13:32, Igor Stasenko siguc...@gmail.com wrote: and as follow-up, why we need such trait if it has only one user??? On 3 December 2013 13:30, Igor Stasenko siguc...@gmail.com wrote: namely, TClass cmd-shift-N doesn't helps -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko.
Re: [Pharo-dev] NativeBoost String Handling Bug?
so i added anotehr version of slice, where i added 1 extra method to Class. in inbox. but there some missing methods in kernel. On 3 December 2013 13:27, Igor Stasenko siguc...@gmail.com wrote: Yes, when we discussed this with Martin (for a first time on that topic, i guess) all i wanted is a convenience method to _just_ make anonymous subclass.. how long this expression could be? it should be as long as: myClass createAnonymousSubclass. and what we have instead? First: self classBuilder anonymousSubclassOf: NBExternalArray. then newSubclass := AnonymousClassInstaller make: [ :builder | builder superclass: NBExternalArray ]. this is unacceptable. Because imagine one day you would want to port such code, (not necessary NB, but code which creates and uses anonymous subclasses), which code for porter, would be easier to understand how to port it if another dialect will miss any AnonymousClassInstaller? -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko.
Re: [Pharo-dev] Building Pharo using Interpreter Class
But for some reason we have not been able to work with it correctly. We may manange to build, as well as make it, but if not before it will fail when we try to open our image with the new VM. What configuration do we need to adapt to correctly build everything with the Interpreter class, or at least the StackInterpreter Class(Not CoInterpreter, because we do not want to have JIT). Kirstin Am 03.12.2013 13:33, schrieb p...@highoctane.be: There is working pure interpreter in the pharovm. Phil On Tuesday, December 3, 2013, Kirstin Heidler wrote: My freind Dimitri was not able to post his message. I am working with him on this. ___ Hello, as part of a Seminar in the University im trying to build the PharoVM. According to the README file here ([1]) I was able to generate and to build the VM successfully. Now I would like to build the VM without Cog or Stack-to-Register optimizations... The problem here is, that I could not find any config class (which is a subclass of CPlatformConfig), that provides the right configurations and allows to build the VM without errors. I have tried to modify PharoUnixConfig(because it was the default config class), but unfortunately the build failes when the compiler tries to compile gcc3x-interp.c. Could somebody help me with this problem? How should I configure my own Config class? Basically our Group tries to implement an object table in Pharo and we want to use (and modify) the basic Interpreter class. [1] https://github.com/pharo-project/pharo-vm Best regards, Dimitri Korsch -- --- Philippe Back Dramatic Performance Improvements Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:p...@highoctane.be mailto:mail%3ap...@highoctane.be | Web: http://philippeback.eu Blog: http://philippeback.be | Twitter: @philippeback Youtube: http://www.youtube.com/user/philippeback/videos High Octane SPRL rue cour Boisacq 101 | 1301 Bierges | Belgium Pharo Consortium Member - http://consortium.pharo.org/ Featured on the Software Process and Measurement Cast - http://spamcast.libsyn.com Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added Reseller
Re: [Pharo-dev] language matrix
Feel free to do this :) uko On 03 Dec 2013, at 13:35, Sebastian Sastre sebast...@flowingconcept.com wrote: Lets add smalltalk there? http://langlangmatrix.com
Re: [Pharo-dev] how i can browse the users of some trait?
On 3 December 2013 13:33, Benjamin benjamin.vanryseghem.ph...@gmail.comwrote: Why creating a class if it has only one user ? 'Class' has 35 uses in my image, don't know why yours only one. Ben On 03 Dec 2013, at 13:32, Igor Stasenko siguc...@gmail.com wrote: and as follow-up, why we need such trait if it has only one user??? On 3 December 2013 13:30, Igor Stasenko siguc...@gmail.com wrote: namely, TClass cmd-shift-N doesn't helps -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko.
[Pharo-dev] [pharo-project/pharo-core] 0514ea: 30616
Branch: refs/heads/3.0 Home: https://github.com/pharo-project/pharo-core Commit: 0514eaa4413d40cd22ecf8d551e6b88d05ed2b90 https://github.com/pharo-project/pharo-core/commit/0514eaa4413d40cd22ecf8d551e6b88d05ed2b90 Author: Jenkins Build Server bo...@pharo-project.org Date: 2013-12-03 (Tue, 03 Dec 2013) Changed paths: M Manifest-Core.package/BuilderManifest.class/class/instance creation/ofPackageNamed_.st M Manifest-CriticBrowser.package/SelectRuleBrowser.class/instance/protocol/addItems.st M Polymorph-Tools-Diff.package/DiffJoinMorph.class/instance/event handling/mouseDown_.st M Polymorph-Tools-Diff.package/PSMCClassChangeWrapper.class/instance/accessing/operation.st A ScriptLoader30.package/ScriptLoader.class/instance/pharo - scripts/script271.st A ScriptLoader30.package/ScriptLoader.class/instance/pharo - updates/update30616.st M ScriptLoader30.package/ScriptLoader.class/instance/public/commentForCurrentUpdate.st A Spec-Core.package/ComposableModel.class/instance/protocol/setModal_.st R Spec-Core.package/DialogWindowModel.class/instance/protocol/modalRelativeTo_.st M Spec-Core.package/TreeModel.class/instance/initialization/initialize.st M Spec-Core.package/TreeModel.class/instance/protocol/iconFor_.st M Spec-Core.package/TreeModel.class/instance/protocol/selectedItem.st A Spec-Core.package/WindowModel.class/instance/protocol/modalRelativeTo_.st A Spec-MorphicAdapters.package/AbstractMorphicAdapter.class/instance/spec protocol/setModal_.st R Spec-MorphicAdapters.package/MorphicDialogWindowAdapter.class/instance/spec protocol/modalRelativeTo_.st M Spec-MorphicAdapters.package/MorphicTreeNodeAdapter.class/class/specs/defaultSpec.st M Spec-MorphicAdapters.package/MorphicTreeNodeAdapter.class/instance/private/deselect.st M Spec-MorphicAdapters.package/MorphicTreeNodeAdapter.class/instance/private/select.st A Spec-MorphicAdapters.package/MorphicTreeNodeAdapter.class/instance/widget API/itemBlock.st A Spec-MorphicAdapters.package/MorphicWindowAdapter.class/instance/spec protocol/modalRelativeTo_.st A Spec-MorphicAdapters.package/extension/ListItemWrapper/instance/setItemFromBlock_.st A Spec-PolyWidgets.package/SearchableTree.class/instance/list protocol-events/whenSelectedItemChanged_.st M Tools.package/AbstractTool.class/instance/category/removeEmptyUnclassifiedCategoryFrom_.st M Tools.package/Browser.class/instance/message category list/categorizeAllUncategorizedMethods.st M Tools.package/CodeHolder.class/instance/misc/refreshAnnotation.st M Tools.package/FileList.class/instance/initialization/updateButtonRow.st M Tools.package/FileList.class/instance/own services/servicesFromSelectorSpecs_.st M Tools.package/FileList.class/instance/private/addPath_.st M Tools.package/ProcessBrowser.class/class/process control/unregisterWellKnownProcess_.st Log Message: --- 30616 12289 Komitter has improper repositories assigned https://pharo.fogbugz.com/f/cases/12289 12311 Cleanup on some Tools related methods https://pharo.fogbugz.com/f/cases/12311 12323 TreeModel example broken https://pharo.fogbugz.com/f/cases/12323 12285 Critics browser broken https://pharo.fogbugz.com/f/cases/12285 12313 Few enhancements in TreeModel and TreeNodeModel https://pharo.fogbugz.com/f/cases/12313 http://files.pharo.org/image/30/30616.zip
Re: [Pharo-dev] how i can browse the users of some trait?
Smalltalk allClasses select: [ :class | class traitComposition traits includes: TClass]? Uko On 03 Dec 2013, at 13:30, Igor Stasenko siguc...@gmail.com wrote: namely, TClass cmd-shift-N doesn't helps -- Best regards, Igor Stasenko.
Re: [Pharo-dev] how i can browse the users of some trait?
On 3 December 2013 13:56, Yuriy Tymchuk yuriy.tymc...@me.com wrote: Smalltalk allClasses select: [ :class | class traitComposition traits includes: TClass]? this won't open browser. my question was 'how to browse...' not how to inspect or print :) Uko On 03 Dec 2013, at 13:30, Igor Stasenko siguc...@gmail.com wrote: namely, TClass cmd-shift-N doesn't helps -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko.
Re: [Pharo-dev] how i can browse the users of some trait?
2013/12/3 Igor Stasenko siguc...@gmail.com namely, TClass cmd-shift-N doesn't helps -- Best regards, Igor Stasenko. TClass users or Menu Browse users in System browser?
Re: [Pharo-dev] Building Pharo using Interpreter Class
Oops. There is no pure interpreter. Sorry. Word skipped on damn phone. On Tuesday, December 3, 2013, Kirstin Heidler wrote: But for some reason we have not been able to work with it correctly. We may manange to build, as well as make it, but if not before it will fail when we try to open our image with the new VM. What configuration do we need to adapt to correctly build everything with the Interpreter class, or at least the StackInterpreter Class(Not CoInterpreter, because we do not want to have JIT). Kirstin Am 03.12.2013 13:33, schrieb p...@highoctane.be javascript:_e({}, 'cvml', 'p...@highoctane.be');: There is working pure interpreter in the pharovm. Phil On Tuesday, December 3, 2013, Kirstin Heidler wrote: My freind Dimitri was not able to post his message. I am working with him on this. ___ Hello, as part of a Seminar in the University im trying to build the PharoVM. According to the README file here ([1]) I was able to generate and to build the VM successfully. Now I would like to build the VM without Cog or Stack-to-Register optimizations... The problem here is, that I could not find any config class (which is a subclass of CPlatformConfig), that provides the right configurations and allows to build the VM without errors. I have tried to modify PharoUnixConfig(because it was the default config class), but unfortunately the build failes when the compiler tries to compile gcc3x-interp.c. Could somebody help me with this problem? How should I configure my own Config class? Basically our Group tries to implement an object table in Pharo and we want to use (and modify) the basic Interpreter class. [1] https://github.com/pharo-project/pharo-vm Best regards, Dimitri Korsch -- --- Philippe Back Dramatic Performance Improvements Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:p...@highoctane.be javascript:_e({}, 'cvml', 'mail%3ap...@highoctane.be'); | Web: http://philippeback.eu Blog: http://philippeback.be | Twitter: @philippeback Youtube: http://www.youtube.com/user/philippeback/videos High Octane SPRL rue cour Boisacq 101 | 1301 Bierges | Belgium Pharo Consortium Member - http://consortium.pharo.org/ Featured on the Software Process and Measurement Cast - http://spamcast.libsyn.com Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added Reseller -- --- Philippe Back Dramatic Performance Improvements Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:p...@highoctane.be | Web: http://philippeback.eu Blog: http://philippeback.be | Twitter: @philippeback Youtube: http://www.youtube.com/user/philippeback/videos High Octane SPRL rue cour Boisacq 101 | 1301 Bierges | Belgium Pharo Consortium Member - http://consortium.pharo.org/ Featured on the Software Process and Measurement Cast - http://spamcast.libsyn.com Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added Reseller
Re: [Pharo-dev] Roassal Bug related to Athens?
On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote: Igor, I had a look at Athens demo to understand how to manage sessions and surfaces because Roassal uses AthensSurface and there is a defensive mechanism in place in Roassal to initialize the surface in case it is not done. In the meantime, I have discovered that the red rectangle bug is present in Athens demos as well. So, to reproduce. AthensFlakeDemo new openInWorld save image open image I tested in Moose 5.0. 1. Should I open a bug entry in Pharo? only if you intend to fix it. because this demo was not intended to be 'fully featured, end-user compatible and fool-proof demo'. it just a demo to show animation and discard it, but if you insist this is a bug, feel free to fix it. 2. With my superficial knowledge of Athens, my guess is that the session management can be done in Athens so that Roassal (and other tools built on top of Athens) do not need to do it. May be it is the case already but the demos are not using it then. I disagree. Because then, files can also open/close and delete themselves automatically, so you will be left only to do reading and writing... Resource management is an application-level responsibility, not framework level. I cannot predict in Athens, how often one wants to create/destroy or (re)use surfaces, and therefore i cannot create and dispose them when i see fit within framework. Correct me if i wrong. Usman On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti usman.bha...@gmail.comwrote: Hello Igor, Moose 5.0 is using Athens as default canvas for Roassal and we have bug with Roassal that seems to be related to Athens. http://code.google.com/p/moose-technology/issues/detail?id=1019 I think it is related to the fact that we create a surface in the OS with Athens and once we quit the image, the surface is destroyed as well. So, when image is restarted with the visualization trying to use the surface, we get the error. Could you point to what possibly can be done to avoid this error? Merely checking the existence of an appropriate drawing surface in Athens every time visualization is drawn, would it suffice? regards, Usman -- Best regards, Igor Stasenko.
Re: [Pharo-dev] Unifying Testing Ideas
2013/12/3 Dennis Schetinin chae...@gmail.com I see the only correct way to build a good testing environment: tests should be basically objects, not methods. They are objects. Instances of TestCase. But for simplicity they're implemented in a single factory class, the TestCase subclass... Esteban A. Maringolo
Re: [Pharo-dev] Building Pharo using Interpreter Class
But the StackInterpreter and Stack VM should be working, right? We just found out, that once an Image has been saved with a Cog-VM there can be issues with floating points because of the ordering of bits? LE vs. BE? At least it says so in this README [2]. May this be one of the problems we had when trying to start our image with the generated StackVM? Also, which Pharo version do you reccomend to use? We downloaded the one from this [1] repository. I think it is a Pharo 2.0? Thanks a lot for your help. Nice to know that the Interpreter class is not working. :) Kirstin [1] https://github.com/pharo-project/pharo-vm [2] http://www.squeakvm.org/svn/squeak/branches/Cog/README Am 03.12.2013 14:10, schrieb p...@highoctane.be: Oops. There is no pure interpreter. Sorry. Word skipped on damn phone. On Tuesday, December 3, 2013, Kirstin Heidler wrote: But for some reason we have not been able to work with it correctly. We may manange to build, as well as make it, but if not before it will fail when we try to open our image with the new VM. What configuration do we need to adapt to correctly build everything with the Interpreter class, or at least the StackInterpreter Class(Not CoInterpreter, because we do not want to have JIT). Kirstin Am 03.12.2013 13:33, schrieb p...@highoctane.be javascript:_e({}, 'cvml', 'p...@highoctane.be');: There is working pure interpreter in the pharovm. Phil On Tuesday, December 3, 2013, Kirstin Heidler wrote: My freind Dimitri was not able to post his message. I am working with him on this. ___ Hello, as part of a Seminar in the University im trying to build the PharoVM. According to the README file here ([1]) I was able to generate and to build the VM successfully. Now I would like to build the VM without Cog or Stack-to-Register optimizations... The problem here is, that I could not find any config class (which is a subclass of CPlatformConfig), that provides the right configurations and allows to build the VM without errors. I have tried to modify PharoUnixConfig(because it was the default config class), but unfortunately the build failes when the compiler tries to compile gcc3x-interp.c. Could somebody help me with this problem? How should I configure my own Config class? Basically our Group tries to implement an object table in Pharo and we want to use (and modify) the basic Interpreter class. [1] https://github.com/pharo-project/pharo-vm Best regards, Dimitri Korsch -- --- Philippe Back Dramatic Performance Improvements Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:p...@highoctane.be javascript:_e({}, 'cvml', 'mail%3ap...@highoctane.be'); | Web: http://philippeback.eu Blog: http://philippeback.be | Twitter: @philippeback Youtube: http://www.youtube.com/user/philippeback/videos High Octane SPRL rue cour Boisacq 101 | 1301 Bierges | Belgium Pharo Consortium Member - http://consortium.pharo.org/ Featured on the Software Process and Measurement Cast - http://spamcast.libsyn.com Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added Reseller -- --- Philippe Back Dramatic Performance Improvements Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:p...@highoctane.be mailto:mail%3ap...@highoctane.be | Web: http://philippeback.eu Blog: http://philippeback.be | Twitter: @philippeback Youtube: http://www.youtube.com/user/philippeback/videos High Octane SPRL rue cour Boisacq 101 | 1301 Bierges | Belgium Pharo Consortium Member - http://consortium.pharo.org/ Featured on the Software Process and Measurement Cast - http://spamcast.libsyn.com Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added Reseller
Re: [Pharo-dev] Building Pharo using Interpreter Class
But the StackInterpreter and Stack VM should be working, right? Yes. Use PharoSVMBuilder class for building that one. We just found out, that once an Image has been saved with a Cog-VM there can be issues with floating points because of the ordering of bits? LE vs. BE? At least it says so in this README [2]. May this be one of the problems we had when trying to start our image with the generated StackVM? Not sure about that. The FloatingPoint plugin is the FloatingPoint plugin. And it is used in both VMs. I can open an image with both. Also, which Pharo version do you reccomend to use? We downloaded the one from this [1] repository. I think it is a Pharo 2.0? Use Pharo2.0 Thanks a lot for your help. Nice to know that the Interpreter class is not working. :) Everyone would love to have those all toghether but the Interpreter is David T. Lewis thing, where Cog and Stack are Eliot thing. And Pharo does some of its own things to Cog/Stack. + Clement working on his own stuff as well. Not there yet but who knows. Phil --- Philippe Back Dramatic Performance Improvements Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:p...@highoctane.be | Web: http://philippeback.eu Blog: http://philippeback.be | Twitter: @philippeback Youtube: http://www.youtube.com/user/philippeback/videos High Octane SPRL rue cour Boisacq 101 | 1301 Bierges | Belgium Pharo Consortium Member - http://consortium.pharo.org/ Featured on the Software Process and Measurement Cast - http://spamcast.libsyn.com Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added Reseller On Tue, Dec 3, 2013 at 2:34 PM, Kirstin Heidler kirstin.heid...@student.hpi.uni-potsdam.de wrote: But the StackInterpreter and Stack VM should be working, right? We just found out, that once an Image has been saved with a Cog-VM there can be issues with floating points because of the ordering of bits? LE vs. BE? At least it says so in this README [2]. May this be one of the problems we had when trying to start our image with the generated StackVM? Also, which Pharo version do you reccomend to use? We downloaded the one from this [1] repository. I think it is a Pharo 2.0? Thanks a lot for your help. Nice to know that the Interpreter class is not working. :) Kirstin [1] https://github.com/pharo-project/pharo-vm [2] http://www.squeakvm.org/svn/squeak/branches/Cog/README Am 03.12.2013 14:10, schrieb p...@highoctane.be: Oops. There is no pure interpreter. Sorry. Word skipped on damn phone. On Tuesday, December 3, 2013, Kirstin Heidler wrote: But for some reason we have not been able to work with it correctly. We may manange to build, as well as make it, but if not before it will fail when we try to open our image with the new VM. What configuration do we need to adapt to correctly build everything with the Interpreter class, or at least the StackInterpreter Class(Not CoInterpreter, because we do not want to have JIT). Kirstin Am 03.12.2013 13:33, schrieb p...@highoctane.be: There is working pure interpreter in the pharovm. Phil On Tuesday, December 3, 2013, Kirstin Heidler wrote: My freind Dimitri was not able to post his message. I am working with him on this. ___ Hello, as part of a Seminar in the University im trying to build the PharoVM. According to the README file here ([1]) I was able to generate and to build the VM successfully. Now I would like to build the VM without Cog or Stack-to-Register optimizations... The problem here is, that I could not find any config class (which is a subclass of CPlatformConfig), that provides the right configurations and allows to build the VM without errors. I have tried to modify PharoUnixConfig(because it was the default config class), but unfortunately the build failes when the compiler tries to compile gcc3x-interp.c. Could somebody help me with this problem? How should I configure my own Config class? Basically our Group tries to implement an object table in Pharo and we want to use (and modify) the basic Interpreter class. [1] https://github.com/pharo-project/pharo-vm Best regards, Dimitri Korsch -- --- Philippe Back Dramatic Performance Improvements Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:p...@highoctane.be | Web: http://philippeback.eu Blog: http://philippeback.be | Twitter: @philippeback Youtube: http://www.youtube.com/user/philippeback/videos High Octane SPRL rue cour Boisacq 101 | 1301 Bierges | Belgium Pharo Consortium Member - http://consortium.pharo.org/ Featured on the Software Process and Measurement Cast - http://spamcast.libsyn.com Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added Reseller -- --- Philippe Back Dramatic Performance Improvements Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:p...@highoctane.be | Web: http://philippeback.eu
Re: [Pharo-dev] Building Pharo using Interpreter Class
Thanks phil, works. :) We were trying to do weird things but nevermind. We will get to the real work now. Kirstin Am 03.12.2013 14:41, schrieb p...@highoctane.be: But the StackInterpreter and Stack VM should be working, right? Yes. Use PharoSVMBuilder class for building that one. We just found out, that once an Image has been saved with a Cog-VM there can be issues with floating points because of the ordering of bits? LE vs. BE? At least it says so in this README [2]. May this be one of the problems we had when trying to start our image with the generated StackVM? Not sure about that. The FloatingPoint plugin is the FloatingPoint plugin. And it is used in both VMs. I can open an image with both. Also, which Pharo version do you reccomend to use? We downloaded the one from this [1] repository. I think it is a Pharo 2.0? Use Pharo2.0 Thanks a lot for your help. Nice to know that the Interpreter class is not working. :) Everyone would love to have those all toghether but the Interpreter is David T. Lewis thing, where Cog and Stack are Eliot thing. And Pharo does some of its own things to Cog/Stack. + Clement working on his own stuff as well. Not there yet but who knows. Phil --- Philippe Back Dramatic Performance Improvements Mob: +32(0) 478 650 140 | Fax: +32 (0) 70 408 027 Mail:p...@highoctane.be mailto:mail%3ap...@highoctane.be | Web: http://philippeback.eu Blog: http://philippeback.be | Twitter: @philippeback Youtube: http://www.youtube.com/user/philippeback/videos High Octane SPRL rue cour Boisacq 101 | 1301 Bierges | Belgium Pharo Consortium Member - http://consortium.pharo.org/ Featured on the Software Process and Measurement Cast - http://spamcast.libsyn.com Sparx Systems Enterprise Architect and Ability Engineering EADocX Value Added Reseller On Tue, Dec 3, 2013 at 2:34 PM, Kirstin Heidler kirstin.heid...@student.hpi.uni-potsdam.de mailto:kirstin.heid...@student.hpi.uni-potsdam.de wrote: But the StackInterpreter and Stack VM should be working, right? We just found out, that once an Image has been saved with a Cog-VM there can be issues with floating points because of the ordering of bits? LE vs. BE? At least it says so in this README [2]. May this be one of the problems we had when trying to start our image with the generated StackVM? Also, which Pharo version do you reccomend to use? We downloaded the one from this [1] repository. I think it is a Pharo 2.0? Thanks a lot for your help. Nice to know that the Interpreter class is not working. :) Kirstin [1] https://github.com/pharo-project/pharo-vm [2] http://www.squeakvm.org/svn/squeak/branches/Cog/README Am 03.12.2013 14:10, schrieb p...@highoctane.be mailto:p...@highoctane.be: Oops. There is no pure interpreter. Sorry. Word skipped on damn phone. On Tuesday, December 3, 2013, Kirstin Heidler wrote: But for some reason we have not been able to work with it correctly. We may manange to build, as well as make it, but if not before it will fail when we try to open our image with the new VM. What configuration do we need to adapt to correctly build everything with the Interpreter class, or at least the StackInterpreter Class(Not CoInterpreter, because we do not want to have JIT). Kirstin Am 03.12.2013 13:33, schrieb p...@highoctane.be: There is working pure interpreter in the pharovm. Phil On Tuesday, December 3, 2013, Kirstin Heidler wrote: My freind Dimitri was not able to post his message. I am working with him on this. ___ Hello, as part of a Seminar in the University im trying to build the PharoVM. According to the README file here ([1]) I was able to generate and to build the VM successfully. Now I would like to build the VM without Cog or Stack-to-Register optimizations... The problem here is, that I could not find any config class (which is a subclass of CPlatformConfig), that provides the right configurations and allows to build the VM without errors. I have tried to modify PharoUnixConfig(because it was the default config class), but unfortunately the build failes when the compiler tries to compile gcc3x-interp.c. Could somebody help me with this problem? How should I configure my own Config class? Basically our Group tries to implement an object table in Pharo and we want to use (and modify) the basic Interpreter class. [1] https://github.com/pharo-project/pharo-vm
Re: [Pharo-dev] Unifying Testing Ideas
Sure, there are objects: it's Smalltalk, methods are obects too :) That's really correct: SUnit is the simplest thing that (still) works. But is it still enough? Isn't it a time to make more steps and improve? I just mean it would be great to have test as distinct object that I can explore, add certain behavior and properties to, relate to other objects in system (other tests, test suites, groups and more), open in specific tools (to be yet created), log all runs and results… and associate with frameworks that it should be run within… In general, to create a full-fledged and easy-to-use environment for TDD and controlling all the development steps with tests, use them as documentation, etc. etc. etc. -- Best regards, Dennis Schetinin 2013/12/3 Esteban A. Maringolo emaring...@gmail.com 2013/12/3 Dennis Schetinin chae...@gmail.com I see the only correct way to build a good testing environment: tests should be basically objects, not methods. They are objects. Instances of TestCase. But for simplicity they're implemented in a single factory class, the TestCase subclass... Esteban A. Maringolo
Re: [Pharo-dev] Opal hook?
*do you know if the OCUndeclaredVariable is raised for unknown superclass?* this code: AnUnknownClass subclass: #Adaptor1Example instanceVariableNames: 'customers accountID address name phoneNumber' classVariableNames: '' poolDictionaries: '' category: 'Examples-Cookbook' is run as a Do It. In Do It, unknown variables (as here AnUnknownClass) raise an OCUndeclaredVariableWarning. For example, running: AnUnknownClass subclass: #Adaptor1Example instanceVariableNames: 'customers accountID address name phoneNumber' classVariableNames: '' poolDictionaries: '' category: 'Examples-Cookbook' executes the default action for OCUndeclaredVariableWarning, which is opening a pop-up titled: Unknown variable Here the error is raised at *compilation time, *therefore it would have* no effect to wrap this with a #on:do: * [ AnUnknownClass subclass: #Adaptor1Example instanceVariableNames: 'customers accountID address name phoneNumber' classVariableNames: '' poolDictionaries: '' category: 'Examples-Cookbook' ] on: OCSemanticWarning do: [ ] == same problem. Now if you do: [ OpalCompiler new evaluate: 'AnUnknownClass subclass: #Adaptor1Example instanceVariableNames: ''customers accountID address name phoneNumber'' classVariableNames: poolDictionaries: category: ''Examples-Cookbook''' ] on: OCSemanticWarning do: [ :e | e halt ] Here we catch the error, and you can handle it. Now it is not easily possible to resume the error, because you want a global instead and Opal expects a temp (there are way to resume but with very deep stack manipulation that I do not want to show to young pharoers present on this mailing list). So the best is to retry it. One solution is therefore: [ OpalCompiler new evaluate: 'AnUnknownClass subclass: #Adaptor1Example instanceVariableNames: ''customers accountID address phoneNumber'' classVariableNames: poolDictionaries: category: ''Examples-Cookbook''' ] on: OCSemanticWarning do: [ :e | Smalltalk at: e node name put: StubRootClass. e retry ] with e node name answering #AnUnknownClass here. Now you need to make sure that the exception block is executed for the case of a missing superclass and not something else or you will end up creating loads of globals. The exception block should be something similar to: [ :e | e node name first isUppercase and: [ some condition ] ifTrue: [ Smalltalk at: e node name put: StubRootClass. ^ e retry ]. e pass ] *How to undefined and OCUndeclaredVariableWarning relate?* In your case, while loading from Monticello the code is compiled and evaluated in non interactive mode. Therefore it cannot trigger the default action of OCUndeclaredVariableWarning which is a UI event. So it sets by default the unknown global to: Undeclared at: varName asSymbol put: nil. OCUndeclaredVariable new name: varName asSymbol in: OCUndeclaredVariableWarning defaultAction which then later triggers the code in UndefinedObject. 2013/12/3 Stéphane Ducasse stephane.duca...@inria.fr On Dec 3, 2013, at 11:20 AM, Clément Bera bera.clem...@gmail.com wrote: Then for your project replace ProtoObject by StubRootClass in UndefinedObjectsubclass:instanceVariableNames:classVariableNames: poolDictionaries:category: it will work. yes but this is ugly because I do not want override. So I will introduce an exception so that we can do that in a clean way. An alternative is to catch OCSemanticWarning or its subclass OCUndeclaredVariableWarning while loading the new classes and execute another code instead of the default action in the exception handling block do you know if the OCUndeclaredVariable is raised for unknown superclass? How to undefined and OCUndeclaredVariableWarning relate? Stef 2013/12/3 Stéphane Ducasse stephane.duca...@inria.fr Well if the class does not exists it calls the method on UndefinedObject (UndeclaredBinding). And you have: I will check and see if I can set up a hook because having classes subclasses of protoobject is not a good idea when loading broken code. UndefinedObjectsubclass: nameOfClass instanceVariableNames: instVarNames classVariableNames: classVarNames poolDictionaries: poolDictnames category: category Calling this method is now considered an accident. If you really want to create a class with a nil superclass, then create the class and then set the superclass using #superclass: self traceCr: ('Attempt to create ', nameOfClass, ' as a subclass of nil. Possibly a class is being loaded before its superclass.'). ^ProtoObject subclass: nameOfClass instanceVariableNames: instVarNames classVariableNames: classVarNames poolDictionaries: poolDictnames category: category The best is to
Re: [Pharo-dev] Roassal Bug related to Athens?
On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.com wrote: On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote: Igor, I had a look at Athens demo to understand how to manage sessions and surfaces because Roassal uses AthensSurface and there is a defensive mechanism in place in Roassal to initialize the surface in case it is not done. In the meantime, I have discovered that the red rectangle bug is present in Athens demos as well. So, to reproduce. AthensFlakeDemo new openInWorld save image open image I tested in Moose 5.0. 1. Should I open a bug entry in Pharo? only if you intend to fix it. because this demo was not intended to be 'fully featured, end-user compatible and fool-proof demo'. it just a demo to show animation and discard it, but if you insist this is a bug, feel free to fix it. Unfortunately, I wont have time for this. For me it would have been good, had Athens provided an example of session management as a good client so that example-oriented people like me could understand easily. Because, otherwise, I'll have to look at the code of NativeBoost and that adds to the level of complexity because I would do things with trial and error. 2. With my superficial knowledge of Athens, my guess is that the session management can be done in Athens so that Roassal (and other tools built on top of Athens) do not need to do it. May be it is the case already but the demos are not using it then. I disagree. Because then, files can also open/close and delete themselves automatically, so you will be left only to do reading and writing... Resource management is an application-level responsibility, not framework level. I cannot predict in Athens, how often one wants to create/destroy or (re)use surfaces, and therefore i cannot create and dispose them when i see fit within framework. Correct me if i wrong. I think this doesn't compare to file handling because there are many types of operations possible on files and that are application-specific. Here resource management is actually exception-handling: I should not give to my client a surface that does not exist any more. Now, of course, if there is some application-level intelligence is involved, we cannot put that in the framework. But I would understand the absence of such a mechanism in the framework but then a tutorial should explain to novices/first-timers how to do it. Usman Usman On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti usman.bha...@gmail.comwrote: Hello Igor, Moose 5.0 is using Athens as default canvas for Roassal and we have bug with Roassal that seems to be related to Athens. http://code.google.com/p/moose-technology/issues/detail?id=1019 I think it is related to the fact that we create a surface in the OS with Athens and once we quit the image, the surface is destroyed as well. So, when image is restarted with the visualization trying to use the surface, we get the error. Could you point to what possibly can be done to avoid this error? Merely checking the existence of an appropriate drawing surface in Athens every time visualization is drawn, would it suffice? regards, Usman -- Best regards, Igor Stasenko.
Re: [Pharo-dev] Grease conflicts #packages with RPackage
I could copy the separate packages, but not the slice. Please note that the added test is expected to fail on all builds containing Grease-Core. Stephan
Re: [Pharo-dev] Versionner Impressions
Hi Sean, Didi you compare it to Metaceller in Moose? Stephan
Re: [Pharo-dev] Roassal Bug related to Athens?
You are correct but so is Igor. Managing external resources has to do with VM and Nativeboost itself and not with Athens. This could happen with any other library. Session aware code is actually very easy to do and its explained Athens-Tutorial package in AthensViewMorphcheckSession . Its just 2 lines of code. In step2 method there is a relevant comment IMPORTANT NOTE: the surface which we will create at this step will be used in later steps. This means that if you resize the window (changing the view size), you may need to recreate surface. Also, since surface uses external resources, quitting an image and restarting it, will also require to create a new surface, because the one from previous session will be no longer accessible. but there is no mention to check the checkSession method for an example how sessions can be handled. I think this deserves a separate step by itself with a nice example. Igor you want me to give me commit rights to Athens repo to add that myself ? On Tue, Dec 3, 2013 at 4:21 PM, Usman Bhatti usman.bha...@gmail.com wrote: On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.com wrote: On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote: Igor, I had a look at Athens demo to understand how to manage sessions and surfaces because Roassal uses AthensSurface and there is a defensive mechanism in place in Roassal to initialize the surface in case it is not done. In the meantime, I have discovered that the red rectangle bug is present in Athens demos as well. So, to reproduce. AthensFlakeDemo new openInWorld save image open image I tested in Moose 5.0. 1. Should I open a bug entry in Pharo? only if you intend to fix it. because this demo was not intended to be 'fully featured, end-user compatible and fool-proof demo'. it just a demo to show animation and discard it, but if you insist this is a bug, feel free to fix it. Unfortunately, I wont have time for this. For me it would have been good, had Athens provided an example of session management as a good client so that example-oriented people like me could understand easily. Because, otherwise, I'll have to look at the code of NativeBoost and that adds to the level of complexity because I would do things with trial and error. 2. With my superficial knowledge of Athens, my guess is that the session management can be done in Athens so that Roassal (and other tools built on top of Athens) do not need to do it. May be it is the case already but the demos are not using it then. I disagree. Because then, files can also open/close and delete themselves automatically, so you will be left only to do reading and writing... Resource management is an application-level responsibility, not framework level. I cannot predict in Athens, how often one wants to create/destroy or (re)use surfaces, and therefore i cannot create and dispose them when i see fit within framework. Correct me if i wrong. I think this doesn't compare to file handling because there are many types of operations possible on files and that are application-specific. Here resource management is actually exception-handling: I should not give to my client a surface that does not exist any more. Now, of course, if there is some application-level intelligence is involved, we cannot put that in the framework. But I would understand the absence of such a mechanism in the framework but then a tutorial should explain to novices/first-timers how to do it. Usman Usman On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti usman.bha...@gmail.comwrote: Hello Igor, Moose 5.0 is using Athens as default canvas for Roassal and we have bug with Roassal that seems to be related to Athens. http://code.google.com/p/moose-technology/issues/detail?id=1019 I think it is related to the fact that we create a surface in the OS with Athens and once we quit the image, the surface is destroyed as well. So, when image is restarted with the visualization trying to use the surface, we get the error. Could you point to what possibly can be done to avoid this error? Merely checking the existence of an appropriate drawing surface in Athens every time visualization is drawn, would it suffice? regards, Usman -- Best regards, Igor Stasenko.
Re: [Pharo-dev] Roassal Bug related to Athens?
On Tue, Dec 3, 2013 at 3:46 PM, kilon alios kilon.al...@gmail.com wrote: You are correct but so is Igor. Managing external resources has to do with VM and Nativeboost itself and not with Athens. This could happen with any other library. Session aware code is actually very easy to do and its explained Athens-Tutorial package in AthensViewMorphcheckSession . Its just 2 lines of code. In step2 method there is a relevant comment IMPORTANT NOTE: the surface which we will create at this step will be used in later steps. This means that if you resize the window (changing the view size), you may need to recreate surface. Also, since surface uses external resources, quitting an image and restarting it, will also require to create a new surface, because the one from previous session will be no longer accessible. Ok. Tx. That's very useful info. I'll have a look. but there is no mention to check the checkSession method for an example how sessions can be handled. I think this deserves a separate step by itself with a nice example. Igor you want me to give me commit rights to Athens repo to add that myself ? And if you add the example to Athens, please let me know. On Tue, Dec 3, 2013 at 4:21 PM, Usman Bhatti usman.bha...@gmail.comwrote: On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.com wrote: On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote: Igor, I had a look at Athens demo to understand how to manage sessions and surfaces because Roassal uses AthensSurface and there is a defensive mechanism in place in Roassal to initialize the surface in case it is not done. In the meantime, I have discovered that the red rectangle bug is present in Athens demos as well. So, to reproduce. AthensFlakeDemo new openInWorld save image open image I tested in Moose 5.0. 1. Should I open a bug entry in Pharo? only if you intend to fix it. because this demo was not intended to be 'fully featured, end-user compatible and fool-proof demo'. it just a demo to show animation and discard it, but if you insist this is a bug, feel free to fix it. Unfortunately, I wont have time for this. For me it would have been good, had Athens provided an example of session management as a good client so that example-oriented people like me could understand easily. Because, otherwise, I'll have to look at the code of NativeBoost and that adds to the level of complexity because I would do things with trial and error. 2. With my superficial knowledge of Athens, my guess is that the session management can be done in Athens so that Roassal (and other tools built on top of Athens) do not need to do it. May be it is the case already but the demos are not using it then. I disagree. Because then, files can also open/close and delete themselves automatically, so you will be left only to do reading and writing... Resource management is an application-level responsibility, not framework level. I cannot predict in Athens, how often one wants to create/destroy or (re)use surfaces, and therefore i cannot create and dispose them when i see fit within framework. Correct me if i wrong. I think this doesn't compare to file handling because there are many types of operations possible on files and that are application-specific. Here resource management is actually exception-handling: I should not give to my client a surface that does not exist any more. Now, of course, if there is some application-level intelligence is involved, we cannot put that in the framework. But I would understand the absence of such a mechanism in the framework but then a tutorial should explain to novices/first-timers how to do it. Usman Usman On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti usman.bha...@gmail.comwrote: Hello Igor, Moose 5.0 is using Athens as default canvas for Roassal and we have bug with Roassal that seems to be related to Athens. http://code.google.com/p/moose-technology/issues/detail?id=1019 I think it is related to the fact that we create a surface in the OS with Athens and once we quit the image, the surface is destroyed as well. So, when image is restarted with the visualization trying to use the surface, we get the error. Could you point to what possibly can be done to avoid this error? Merely checking the existence of an appropriate drawing surface in Athens every time visualization is drawn, would it suffice? regards, Usman -- Best regards, Igor Stasenko.
[Pharo-dev] Smalltalkhub ci image
The smalltalkhub build has been red for quite some time now. If I want to run a hub, should I take the latest build? Stephan
Re: [Pharo-dev] Roassal Bug related to Athens?
you dont have to wait for my example as i said checkSession is already the example checkSession session == Smalltalk session ifFalse: [ just reset the surface surface := nil. session := Smalltalk session. ] as you can see here essentially we compare session if they differ then we know we need to reinitialize all our external resources in this example surface . Not that it assigns surfaces as nil but you will need to fully reinitialize the surface cause otherwise you will have a non existent surface still. In this class a nill surface is reinitialized by another method. Also I like to note here that Roassal Easel appear also not to check sessions and exhibits the known problem if image is stored with Easel open. Its something Roassal people would need to look at. On Tue, Dec 3, 2013 at 4:51 PM, Usman Bhatti usman.bha...@gmail.com wrote: On Tue, Dec 3, 2013 at 3:46 PM, kilon alios kilon.al...@gmail.com wrote: You are correct but so is Igor. Managing external resources has to do with VM and Nativeboost itself and not with Athens. This could happen with any other library. Session aware code is actually very easy to do and its explained Athens-Tutorial package in AthensViewMorphcheckSession . Its just 2 lines of code. In step2 method there is a relevant comment IMPORTANT NOTE: the surface which we will create at this step will be used in later steps. This means that if you resize the window (changing the view size), you may need to recreate surface. Also, since surface uses external resources, quitting an image and restarting it, will also require to create a new surface, because the one from previous session will be no longer accessible. Ok. Tx. That's very useful info. I'll have a look. but there is no mention to check the checkSession method for an example how sessions can be handled. I think this deserves a separate step by itself with a nice example. Igor you want me to give me commit rights to Athens repo to add that myself ? And if you add the example to Athens, please let me know. On Tue, Dec 3, 2013 at 4:21 PM, Usman Bhatti usman.bha...@gmail.comwrote: On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.comwrote: On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote: Igor, I had a look at Athens demo to understand how to manage sessions and surfaces because Roassal uses AthensSurface and there is a defensive mechanism in place in Roassal to initialize the surface in case it is not done. In the meantime, I have discovered that the red rectangle bug is present in Athens demos as well. So, to reproduce. AthensFlakeDemo new openInWorld save image open image I tested in Moose 5.0. 1. Should I open a bug entry in Pharo? only if you intend to fix it. because this demo was not intended to be 'fully featured, end-user compatible and fool-proof demo'. it just a demo to show animation and discard it, but if you insist this is a bug, feel free to fix it. Unfortunately, I wont have time for this. For me it would have been good, had Athens provided an example of session management as a good client so that example-oriented people like me could understand easily. Because, otherwise, I'll have to look at the code of NativeBoost and that adds to the level of complexity because I would do things with trial and error. 2. With my superficial knowledge of Athens, my guess is that the session management can be done in Athens so that Roassal (and other tools built on top of Athens) do not need to do it. May be it is the case already but the demos are not using it then. I disagree. Because then, files can also open/close and delete themselves automatically, so you will be left only to do reading and writing... Resource management is an application-level responsibility, not framework level. I cannot predict in Athens, how often one wants to create/destroy or (re)use surfaces, and therefore i cannot create and dispose them when i see fit within framework. Correct me if i wrong. I think this doesn't compare to file handling because there are many types of operations possible on files and that are application-specific. Here resource management is actually exception-handling: I should not give to my client a surface that does not exist any more. Now, of course, if there is some application-level intelligence is involved, we cannot put that in the framework. But I would understand the absence of such a mechanism in the framework but then a tutorial should explain to novices/first-timers how to do it. Usman Usman On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti usman.bha...@gmail.comwrote: Hello Igor, Moose 5.0 is using Athens as default canvas for Roassal and we have bug with Roassal that seems to be related to Athens. http://code.google.com/p/moose-technology/issues/detail?id=1019 I think it is related to the fact that we create a surface in the OS with Athens and
Re: [Pharo-dev] Smalltalkhub ci image
I was using a latest stable build and it works ok. Uko On 03 Dec 2013, at 15:58, Stephan Eggermont step...@stack.nl wrote: The smalltalkhub build has been red for quite some time now. If I want to run a hub, should I take the latest build? Stephan
[Pharo-dev] explore is broken
There is something wrong with the EyeTreeInspector in the latest Pharo image: Smalltalk explore brings up the debugger. Ditto if you inspect and manually select the EyeTreeInspector. I could not find any issue in the issue tracker about this. Does anyone know about it? Oscar
Re: [Pharo-dev] explore is broken
It works in 30615 but is broken in 30616. No one knows about it yet I guess because 30616 is from today. The bug is from the one of the 30616 change. Can someone with a good Spec knowledge have a look at it ? 2013/12/3 Oscar Nierstrasz @ gmail oscar.nierstr...@gmail.com There is something wrong with the EyeTreeInspector in the latest Pharo image: Smalltalk explore brings up the debugger. Ditto if you inspect and manually select the EyeTreeInspector. I could not find any issue in the issue tracker about this. Does anyone know about it? Oscar
Re: [Pharo-dev] explore is broken
On 03 Dec 2013, at 16:31, Clément Bera bera.clem...@gmail.com wrote: It works in 30615 but is broken in 30616. No one knows about it yet I guess because 30616 is from today. The bug is from the one of the 30616 change. Can someone with a good Spec knowledge have a look at it ? It seems to work when removing the “contents” send in the displayBlock: block in the method #tree of EyeTreeInspector. I will commit a fix… Marcus
Re: [Pharo-dev] Versionner Impressions
Christophe Demarey wrote Can you explain me your use case? Sure... I installed Phexample via the Configuration Browser, by switching to MetaRepoFor20. The config loaded Phexample from its home repository, sthub/Phexample/Phexample. When I added it as a dependent project, my choices IIRC were the package cache and MetaRepoFor20. I wanted to use the home repo but the widget only allowed me to choose from those two options. While we're on the subject, repo creation is complicated enough to warrant a nice widget everywhere in Versionner (and maybe port it over to Monticello Browser, whcih is not much better). IMHO, it needs to offer: - likely repos, like was done above e.g. repos associated to the package in question - all repos known to image - create new repo Christophe Demarey wrote Do you mean for a new project? Yes, maybe the developer has already done some commits. I will add that. Yes, FMOD was one package, so I didn't make a config. Then I wrote tests in their own package... Thanks again :) - Cheers, Sean -- View this message in context: http://forum.world.st/Versionner-Impressions-tp4726902p4727072.html Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.
Re: [Pharo-dev] explore is broken
On 03 Dec 2013, at 16:37, Marcus Denker marcus.den...@inria.fr wrote: On 03 Dec 2013, at 16:31, Clément Bera bera.clem...@gmail.com wrote: It works in 30615 but is broken in 30616. No one knows about it yet I guess because 30616 is from today. The bug is from the one of the 30616 change. Can someone with a good Spec knowledge have a look at it ? It seems to work when removing the “contents” send in the displayBlock: block in the method #tree of EyeTreeInspector. I will commit a fix… https://pharo.fogbugz.com/f/cases/12328/TreeInspector-DNU will be in the next update. Marcus
Re: [Pharo-dev] Unifying Testing Ideas
Attila Magyar wrote did you want something like this? mock a: anyArgument b: exactArgument1 c: exactArgument2 Exactly. Attila Magyar wrote I rarely use / does / , as far as I remember it is not even documented. I don't know the code behind the test but based on the names it looks like an adapter like thing. (e.g. a thin wrapper above a 3rd party api with not too much logic inside). If this is the case, normally I would test it with integration tests, instead of mocks. Yes it's a wrapper. It should be tested with integration/acceptance tests. But, it wraps callouts to a C dynamic library via NB, so it's hard to test - i.e. crashes the VM, etc. Interactions with it deserve to be tested via unit tests (in general I drop down to unit tests inside a failing integration/acceptance test anyway). Anyway, does: is very important. Stubbing (can (does: | answers:)) and mocking (should) seemed kind of like a nature-vs-nurture debate for a while, but there is a lot of overlap. Sometimes you need one, sometimes the other, and sometimes both (as shown in my example, although I kept thinking that in practice I'd probably write a test double by hand to be reused in other places). In fact, #does: and #answers: could easily be merged, using double dispatch to pass either a block or a value. Unrelatedly, it would be slightly clearer to rename anything to anyMessage. anything makes it seem like it could be passed as an argument, which doesn't work. Or alternately, you could probably rename AnyMessage to Anything and combine its API with that of AnyArgument if they don't clash... - Cheers, Sean -- View this message in context: http://forum.world.st/Unifying-Testing-Ideas-tp4726787p4727086.html Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.
[Pharo-dev] [pharo-project/pharo-core]
Branch: refs/tags/30617 Home: https://github.com/pharo-project/pharo-core
[Pharo-dev] [pharo-project/pharo-core] b6872a: 30617
Branch: refs/heads/3.0 Home: https://github.com/pharo-project/pharo-core Commit: b6872a02e80a33aef212716a623945b5c135687c https://github.com/pharo-project/pharo-core/commit/b6872a02e80a33aef212716a623945b5c135687c Author: Jenkins Build Server bo...@pharo-project.org Date: 2013-12-03 (Tue, 03 Dec 2013) Changed paths: A Komitter.package/KomitCacheRemote.class/README.md A Komitter.package/KomitCacheRemote.class/definition.st A Komitter.package/KomitHttpRemote.class/README.md A Komitter.package/KomitHttpRemote.class/definition.st R Komitter.package/KomitterUI.class/class/icons/historyIconData.st A Komitter.package/KomitterUI.class/class/icons/manageRemotesIcon.st A Komitter.package/KomitterUI.class/class/private-icons/historyIconData.st A Komitter.package/KomitterUI.class/class/private-icons/manageRemotesData.st M Komitter.package/KomitterUI.class/class/specs/defaultSpec.st M Komitter.package/KomitterUI.class/definition.st A Komitter.package/KomitterUI.class/instance/accessing/manageRemotes.st M Komitter.package/KomitterUI.class/instance/initialization/initializeWidgets.st A Komitter.package/KomitterUI.class/instance/private-icons/historyIcon.st A Komitter.package/KomitterUI.class/instance/private-icons/manageRemotesIcon.st A Komitter.package/KomitterUI.class/instance/private/openRemoteManager.st A Komitter.package/RemotesManager.class/README.md A Komitter.package/RemotesManager.class/class/icons/addRemoteIcon.st A Komitter.package/RemotesManager.class/class/icons/removeRemoteIcon.st A Komitter.package/RemotesManager.class/class/private-icons/addRemoteIconData.st A Komitter.package/RemotesManager.class/class/private-icons/removeRemoteIconData.st A Komitter.package/RemotesManager.class/class/specs/defaultSpec.st A Komitter.package/RemotesManager.class/definition.st A Komitter.package/RemotesManager.class/instance/accessing/addRemote.st A Komitter.package/RemotesManager.class/instance/accessing/packages.st A Komitter.package/RemotesManager.class/instance/accessing/remotes.st A Komitter.package/RemotesManager.class/instance/accessing/removeRemote.st A Komitter.package/RemotesManager.class/instance/initialization/buildRoots.st A Komitter.package/RemotesManager.class/instance/initialization/initialize.st A Komitter.package/RemotesManager.class/instance/initialization/initializePresenter.st A Komitter.package/RemotesManager.class/instance/initialization/initializeWidgets.st A Komitter.package/RemotesManager.class/instance/private-icons/addRemoteIcon.st A Komitter.package/RemotesManager.class/instance/private-icons/removeRemoteIcon.st A Komitter.package/RemotesManager.class/instance/private/addRepository.st A Komitter.package/RemotesManager.class/instance/private/change_forRemote_.st A Komitter.package/RemotesManager.class/instance/private/doIfNotSilent_.st A Komitter.package/RemotesManager.class/instance/private/newRepository.st A Komitter.package/RemotesManager.class/instance/private/removeRepository.st A Komitter.package/RemotesManager.class/instance/private/silentWhile_.st A Komitter.package/RemotesManager.class/instance/private/updateRemoteSelectionFrom_.st A Komitter.package/RemotesManager.class/instance/protocol/packages_.st A Komitter.package/RemotesManager.class/instance/protocol/title.st A Komitter.package/extension/MCCacheRepository/instance/isCache.st A Komitter.package/extension/MCCacheRepository/instance/koRemote.st M Komitter.package/extension/MCHttpRepository/instance/koRemote.st A Komitter.package/extension/MCRepository/instance/isCache.st M Morphic-Base.package/HaloMorph.class/instance/geometry/worldBoundsForMorph_.st R Morphic-Base.package/ListItemWrapper.class/instance/as yet unclassified/canBeDragged.st R Morphic-Base.package/ListItemWrapper.class/instance/as yet unclassified/handlesMouseOver_.st R Morphic-Base.package/ListItemWrapper.class/instance/as yet unclassified/hasEquivalentIn_.st R Morphic-Base.package/ListItemWrapper.class/instance/as yet unclassified/wantsDroppedObject_.st A Morphic-Base.package/ListItemWrapper.class/instance/testing/canBeDragged.st A Morphic-Base.package/ListItemWrapper.class/instance/testing/handlesMouseOver_.st A Morphic-Base.package/ListItemWrapper.class/instance/testing/hasEquivalentIn_.st A Morphic-Base.package/ListItemWrapper.class/instance/testing/wantsDroppedObject_.st M Morphic-Base.package/MenuMorph.class/instance/events/updateColor.st M Morphic-Base.package/MenuMorph.class/instance/keyboard control/selectMoreItem_.st M Morphic-Base.package/Paragraph.class/instance/editing/actionAttributesUnder_event_do_.st M Morphic-Base.package/SimpleHierarchicalListMorph.class/instance/search/basicKeyPressed_.st M Morphic-Base.package/SystemWindow.class/instance/menu
[Pharo-dev] Slice 12324
Can anyone put it in place? Can’t seem to commit it
[Pharo-dev] CompiledMethod#= is broken
The following code breaks: (SortedCollectionTest#testDo) = (SortedCollectionTest#testStoreOn). because it makes use of AdditionalMethodState#analogousCodeTo: which tries to send #analogousCodeTo: to a property which is an Association. It seems to me the solution is to implement Association#analogousCodeTo: with an equality test: analogousCodeTo: anObject ^self class == anObject class and: [ self = anObject ] Does this make sense? See: https://pharo.fogbugz.com/f/cases/12077/MNU-in-AdditionalMethodState-analogousCodeTo Oscar Nierstrasz
Re: [Pharo-dev] 12259: FileSystem memory reads writesusing a binary stream by default
Thanks Max for the report. Do you have an idea on how we could solve the problem ? The previous behaviour was not acceptable either because the streams that came out of a memory filesystem were the only ones with binary content On Dec 3, 2013 5:35 PM, Max Leske maxle...@gmail.com wrote: Damien, Marcus this change breaks a lot of things in FileSystem-Git. I don’t disagree with the idea that reading characters should be default (one could argue about it…) but your change makes it IMPOSSIBLE to read bytes because unprintable characters are discarded! So if my ByteArray is a NULL terminated string, for instance, I can not check for the NULL termination anymore. Cheers, Max
Re: [Pharo-dev] Unifying Testing Ideas
Problem with TestCase approach is mixing two separate concerns. First is how we want to define system specifications. Another is how we can persist such specifications. When we stay at test case level we lost freedom for specification definition. We restricted with smalltalk language artifacts. For example, how we can group our tests? With classic test case approach we have four levels: packages, classes, protocols and methods. Now remember how many times you put long names for test like #shouldDoingSomethingWhenSomeSitiationHappensDuringAnotherSituationHappenButWhenSituation3NotHappen. And most times you have tests for each separate situation with same long test names. In smalltalk only way to refactor test names duplication is extraction same when condition to separate test case classes. But it means that you build classes with very long names and most times your test names stay big (but with reduced length). And do you know way how to group such classes? Only way is put such classes to own class category. Nobody doing this. Now imagine we don't care how to persist tests (specifications). We can model specifications with explicit objects which present #when, #should and other test artifacts, which can group specifications with arbitrary way. With true objects we don't name our specifications with method name convention. We can name tests with natural language, we can put names for when and should expressions with natural language. With objects we can build smalltalk vision of BDD framework. Really with smalltalk live system testing environment can be very different from other languages. BDD frameworks of other languages just changed names of TDD dictionary. They all stay restricted with language syntax. So it is my vision. I really want to build such system but I have no time for this yet. Maybe Sean doing something similar? 2013/12/3 Esteban A. Maringolo emaring...@gmail.com 2013/12/3 Dennis Schetinin chae...@gmail.com I see the only correct way to build a good testing environment: tests should be basically objects, not methods. They are objects. Instances of TestCase. But for simplicity they're implemented in a single factory class, the TestCase subclass... Esteban A. Maringolo
Re: [Pharo-dev] CompiledMethod#= is broken
On Tue, Dec 3, 2013 at 9:49 AM, Oscar Nierstrasz oscar.nierstr...@gmail.com wrote: The following code breaks: (SortedCollectionTest#testDo) = (SortedCollectionTest#testStoreOn). because it makes use of AdditionalMethodState#analogousCodeTo: which tries to send #analogousCodeTo: to a property which is an Association. It seems to me the solution is to implement Association#analogousCodeTo: with an equality test: analogousCodeTo: anObject ^self class == anObject class and: [ self = anObject ] Does this make sense? Yes. I should have written it this way in the first place. Thanks. See: https://pharo.fogbugz.com/f/cases/12077/MNU-in-AdditionalMethodState-analogousCodeTo Oscar Nierstrasz -- best, Eliot
Re: [Pharo-dev] CompiledMethod#= is broken
On Tue, Dec 3, 2013 at 11:27 AM, Eliot Miranda eliot.mira...@gmail.comwrote: On Tue, Dec 3, 2013 at 9:49 AM, Oscar Nierstrasz oscar.nierstr...@gmail.com wrote: The following code breaks: (SortedCollectionTest#testDo) = (SortedCollectionTest#testStoreOn). because it makes use of AdditionalMethodState#analogousCodeTo: which tries to send #analogousCodeTo: to a property which is an Association. It seems to me the solution is to implement Association#analogousCodeTo: with an equality test: analogousCodeTo: anObject ^self class == anObject class and: [ self = anObject ] Does this make sense? Yes. I should have written it this way in the first place. Thanks. See: https://pharo.fogbugz.com/f/cases/12077/MNU-in-AdditionalMethodState-analogousCodeTo Oscar Nierstrasz -- best, Eliot -- best, Eliot AdditionalMethodState-analogousCodeTo.st Description: Binary data
Re: [Pharo-dev] Unifying Testing Ideas
Sean P. DeNigris wrote In fact, #does: and #answers: could easily be merged, using double dispatch to pass either a block or a value. It's true, but it would make difficult to return a block. E.g. mock can receive: #msg; answers: [ [..] ] Sean P. DeNigris wrote Unrelatedly, it would be slightly clearer to rename anything to anyMessage. anything makes it seem like it could be passed as an argument, which doesn't work. Or alternately, you could probably rename AnyMessage to Anything and combine its API with that of AnyArgument if they don't clash... I agree, I'll try to combine them first, but anyMessage/anyArgument seems fine too. Anyways, I'm working on the next version with a slightly different api. My plan is to fully separate the DSL from the main part. This will make possible to play with different syntax without touching the core. Or even the users will be able to define their own syntax. -- View this message in context: http://forum.world.st/Unifying-Testing-Ideas-tp4726787p4727144.html Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.
Re: [Pharo-dev] [Pharo-users] Building Pharo using Interpreter Class
Hello kirstin why dimitri is not able to post? can you tell us more? Stef On Dec 3, 2013, at 1:17 PM, Kirstin Heidler kirstin.heid...@student.hpi.uni-potsdam.de wrote: My freind Dimitri was not able to post his message. I am working with him on this. ___ Hello, as part of a Seminar in the University im trying to build the PharoVM. According to the README file here ([1]) I was able to generate and to build the VM successfully. Now I would like to build the VM without Cog or Stack-to-Register optimizations... The problem here is, that I could not find any config class (which is a subclass of CPlatformConfig), that provides the right configurations and allows to build the VM without errors. I have tried to modify PharoUnixConfig(because it was the default config class), but unfortunately the build failes when the compiler tries to compile gcc3x-interp.c. Could somebody help me with this problem? How should I configure my own Config class? Basically our Group tries to implement an object table in Pharo and we want to use (and modify) the basic Interpreter class. [1] https://github.com/pharo-project/pharo-vm Best regards, Dimitri Korsch
Re: [Pharo-dev] Opal hook?
thanks for your analysis I will have a look at it. I was thinking to check if I should redefine UndefinedObjectsubclass: to raise an error Stef On Dec 3, 2013, at 3:17 PM, Clément Bera bera.clem...@gmail.com wrote: do you know if the OCUndeclaredVariable is raised for unknown superclass? this code: AnUnknownClass subclass: #Adaptor1Example instanceVariableNames: 'customers accountID address name phoneNumber' classVariableNames: '' poolDictionaries: '' category: 'Examples-Cookbook' is run as a Do It. In Do It, unknown variables (as here AnUnknownClass) raise an OCUndeclaredVariableWarning. For example, running: AnUnknownClass subclass: #Adaptor1Example instanceVariableNames: 'customers accountID address name phoneNumber' classVariableNames: '' poolDictionaries: '' category: 'Examples-Cookbook' executes the default action for OCUndeclaredVariableWarning, which is opening a pop-up titled: Unknown variable Here the error is raised at compilation time, therefore it would have no effect to wrap this with a #on:do: [ AnUnknownClass subclass: #Adaptor1Example instanceVariableNames: 'customers accountID address name phoneNumber' classVariableNames: '' poolDictionaries: '' category: 'Examples-Cookbook' ] on: OCSemanticWarning do: [ ] == same problem. Now if you do: [ OpalCompiler new evaluate: 'AnUnknownClass subclass: #Adaptor1Example instanceVariableNames: ''customers accountID address name phoneNumber'' classVariableNames: poolDictionaries: category: ''Examples-Cookbook''' ] on: OCSemanticWarning do: [ :e | e halt ] Here we catch the error, and you can handle it. Now it is not easily possible to resume the error, because you want a global instead and Opal expects a temp (there are way to resume but with very deep stack manipulation that I do not want to show to young pharoers present on this mailing list). So the best is to retry it. One solution is therefore: [ OpalCompiler new evaluate: 'AnUnknownClass subclass: #Adaptor1Example instanceVariableNames: ''customers accountID address phoneNumber'' classVariableNames: poolDictionaries: category: ''Examples-Cookbook''' ] on: OCSemanticWarning do: [ :e | Smalltalk at: e node name put: StubRootClass. e retry ] with e node name answering #AnUnknownClass here. Now you need to make sure that the exception block is executed for the case of a missing superclass and not something else or you will end up creating loads of globals. The exception block should be something similar to: [ :e | e node name first isUppercase and: [ some condition ] ifTrue: [ Smalltalk at: e node name put: StubRootClass. ^ e retry ]. e pass ] How to undefined and OCUndeclaredVariableWarning relate? In your case, while loading from Monticello the code is compiled and evaluated in non interactive mode. Therefore it cannot trigger the default action of OCUndeclaredVariableWarning which is a UI event. So it sets by default the unknown global to: Undeclared at: varName asSymbol put: nil. OCUndeclaredVariable new name: varName asSymbol in: OCUndeclaredVariableWarning defaultAction which then later triggers the code in UndefinedObject. 2013/12/3 Stéphane Ducasse stephane.duca...@inria.fr On Dec 3, 2013, at 11:20 AM, Clément Bera bera.clem...@gmail.com wrote: Then for your project replace ProtoObject by StubRootClass in UndefinedObjectsubclass:instanceVariableNames:classVariableNames:poolDictionaries:category: it will work. yes but this is ugly because I do not want override. So I will introduce an exception so that we can do that in a clean way. An alternative is to catch OCSemanticWarning or its subclass OCUndeclaredVariableWarning while loading the new classes and execute another code instead of the default action in the exception handling block do you know if the OCUndeclaredVariable is raised for unknown superclass? How to undefined and OCUndeclaredVariableWarning relate? Stef 2013/12/3 Stéphane Ducasse stephane.duca...@inria.fr Well if the class does not exists it calls the method on UndefinedObject (UndeclaredBinding). And you have: I will check and see if I can set up a hook because having classes subclasses of protoobject is not a good idea when loading broken code. UndefinedObjectsubclass: nameOfClass instanceVariableNames: instVarNames classVariableNames: classVarNames poolDictionaries: poolDictnames category: category Calling this method is now considered an accident. If you really want to create a class with a nil superclass, then create the class and then set the superclass using #superclass: self traceCr:
Re: [Pharo-dev] Roassal Bug related to Athens?
you dont have to wait for my example as i said checkSession is already the example checkSession session == Smalltalk session ifFalse: [ just reset the surface surface := nil. session := Smalltalk session. ] as you can see here essentially we compare session if they differ then we know we need to reinitialize all our external resources in this example surface . Not that it assigns surfaces as nil but you will need to fully reinitialize the surface cause otherwise you will have a non existent surface still. In this class a nill surface is reinitialized by another method. Also I like to note here that Roassal Easel appear also not to check sessions and exhibits the known problem if image is stored with Easel open. Its something Roassal people would need to look at. Yes I do not understand why this is not already in Roassal. Stef
[Pharo-dev] vm patch for issue-11293
Hi, can someone take a look at issue 11293? There are actually two causes. One on the image side. My solution is to catch DirectoryDoesNotExist in FileList, but maybe there is a better solution. (Don't try to access unreadable directories?). The other one is on the vm-side. This vm uses a windows function (GetFileAttributesEx) that does not work properly for some special windows files (c:\pagefile.sys). My question is, where to put this patch? I attached it to this issue. But there are different squeak/pharo/cog vm sources and I don't know which one uses this function. regards Nicolai
Re: [Pharo-dev] Roassal 3d now support textures
On 3 December 2013 12:48, Stéphane Ducasse stephane.duca...@inria.frwrote: did you move some functionality (to the place they belong) to NBOpenGL? Because this should be done and JB has already spent time on that. I am not sure it is good choice to expand NBOpenGL. There's just API, and most of code is generated (imported from specs), so changing something there makes little sense. Accompanying package , however , would be much better (in same repo, if you want). Stef hi! Just to keep you up to date with the Roassal 3d effort. https://www.facebook.com/photo.php?fbid=547995685287033set=a.529997903753478.1073741828.340543479365589type=3theater Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. -- Best regards, Igor Stasenko.
Re: [Pharo-dev] Roassal Bug related to Athens?
On 3 December 2013 15:21, Usman Bhatti usman.bha...@gmail.com wrote: On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.com wrote: On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote: Igor, I had a look at Athens demo to understand how to manage sessions and surfaces because Roassal uses AthensSurface and there is a defensive mechanism in place in Roassal to initialize the surface in case it is not done. In the meantime, I have discovered that the red rectangle bug is present in Athens demos as well. So, to reproduce. AthensFlakeDemo new openInWorld save image open image I tested in Moose 5.0. 1. Should I open a bug entry in Pharo? only if you intend to fix it. because this demo was not intended to be 'fully featured, end-user compatible and fool-proof demo'. it just a demo to show animation and discard it, but if you insist this is a bug, feel free to fix it. Unfortunately, I wont have time for this. For me it would have been good, had Athens provided an example of session management as a good client so that example-oriented people like me could understand easily. Because, otherwise, I'll have to look at the code of NativeBoost and that adds to the level of complexity because I would do things with trial and error. No need. There is one example: look at AthensSceneView 2. With my superficial knowledge of Athens, my guess is that the session management can be done in Athens so that Roassal (and other tools built on top of Athens) do not need to do it. May be it is the case already but the demos are not using it then. I disagree. Because then, files can also open/close and delete themselves automatically, so you will be left only to do reading and writing... Resource management is an application-level responsibility, not framework level. I cannot predict in Athens, how often one wants to create/destroy or (re)use surfaces, and therefore i cannot create and dispose them when i see fit within framework. Correct me if i wrong. I think this doesn't compare to file handling because there are many types of operations possible on files and that are application-specific. Here resource management is actually exception-handling: I should not give to my client a surface that does not exist any more. Now, of course, if there is some application-level intelligence is involved, we cannot put that in the framework. Surface is like file, you create it, delete it.. write to it.. the management of surfaces is absolutely out of scope of framework. More than that, surfaces is not something which you operate with usually. Because usually its just a canvas. But I would understand the absence of such a mechanism in the framework but then a tutorial should explain to novices/first-timers how to do it. this sort of things is tiniest (but of course necessary) parts of whole application, and usually will belong to some service layers built around/on top of athens. in future, sure thing you won't need to care about it. Usman Usman On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti usman.bha...@gmail.comwrote: Hello Igor, Moose 5.0 is using Athens as default canvas for Roassal and we have bug with Roassal that seems to be related to Athens. http://code.google.com/p/moose-technology/issues/detail?id=1019 I think it is related to the fact that we create a surface in the OS with Athens and once we quit the image, the surface is destroyed as well. So, when image is restarted with the visualization trying to use the surface, we get the error. Could you point to what possibly can be done to avoid this error? Merely checking the existence of an appropriate drawing surface in Athens every time visualization is drawn, would it suffice? regards, Usman -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko.
Re: [Pharo-dev] Roassal Bug related to Athens?
On 3 December 2013 15:58, kilon alios kilon.al...@gmail.com wrote: you dont have to wait for my example as i said checkSession is already the example checkSession session == Smalltalk session ifFalse: [ just reset the surface surface := nil. session := Smalltalk session. ] as you can see here essentially we compare session if they differ then we know we need to reinitialize all our external resources in this example surface . Not that it assigns surfaces as nil but you will need to fully reinitialize the surface cause otherwise you will have a non existent surface still. In this class a nill surface is reinitialized by another method. Right. Another reason why Athens has nothing to do with it: if i don't want my surfaces to live longer than single session, the way to handle that will be completely different than in given example. Also I like to note here that Roassal Easel appear also not to check sessions and exhibits the known problem if image is stored with Easel open. Its something Roassal people would need to look at. On Tue, Dec 3, 2013 at 4:51 PM, Usman Bhatti usman.bha...@gmail.comwrote: On Tue, Dec 3, 2013 at 3:46 PM, kilon alios kilon.al...@gmail.comwrote: You are correct but so is Igor. Managing external resources has to do with VM and Nativeboost itself and not with Athens. This could happen with any other library. Session aware code is actually very easy to do and its explained Athens-Tutorial package in AthensViewMorphcheckSession . Its just 2 lines of code. In step2 method there is a relevant comment IMPORTANT NOTE: the surface which we will create at this step will be used in later steps. This means that if you resize the window (changing the view size), you may need to recreate surface. Also, since surface uses external resources, quitting an image and restarting it, will also require to create a new surface, because the one from previous session will be no longer accessible. Ok. Tx. That's very useful info. I'll have a look. but there is no mention to check the checkSession method for an example how sessions can be handled. I think this deserves a separate step by itself with a nice example. Igor you want me to give me commit rights to Athens repo to add that myself ? And if you add the example to Athens, please let me know. On Tue, Dec 3, 2013 at 4:21 PM, Usman Bhatti usman.bha...@gmail.comwrote: On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.comwrote: On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote: Igor, I had a look at Athens demo to understand how to manage sessions and surfaces because Roassal uses AthensSurface and there is a defensive mechanism in place in Roassal to initialize the surface in case it is not done. In the meantime, I have discovered that the red rectangle bug is present in Athens demos as well. So, to reproduce. AthensFlakeDemo new openInWorld save image open image I tested in Moose 5.0. 1. Should I open a bug entry in Pharo? only if you intend to fix it. because this demo was not intended to be 'fully featured, end-user compatible and fool-proof demo'. it just a demo to show animation and discard it, but if you insist this is a bug, feel free to fix it. Unfortunately, I wont have time for this. For me it would have been good, had Athens provided an example of session management as a good client so that example-oriented people like me could understand easily. Because, otherwise, I'll have to look at the code of NativeBoost and that adds to the level of complexity because I would do things with trial and error. 2. With my superficial knowledge of Athens, my guess is that the session management can be done in Athens so that Roassal (and other tools built on top of Athens) do not need to do it. May be it is the case already but the demos are not using it then. I disagree. Because then, files can also open/close and delete themselves automatically, so you will be left only to do reading and writing... Resource management is an application-level responsibility, not framework level. I cannot predict in Athens, how often one wants to create/destroy or (re)use surfaces, and therefore i cannot create and dispose them when i see fit within framework. Correct me if i wrong. I think this doesn't compare to file handling because there are many types of operations possible on files and that are application-specific. Here resource management is actually exception-handling: I should not give to my client a surface that does not exist any more. Now, of course, if there is some application-level intelligence is involved, we cannot put that in the framework. But I would understand the absence of such a mechanism in the framework but then a tutorial should explain to novices/first-timers how to do it. Usman Usman On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti usman.bha...@gmail.comwrote:
Re: [Pharo-dev] Roassal 3d now support textures
On Dec 3, 2013, at 10:07 PM, Igor Stasenko siguc...@gmail.com wrote: On 3 December 2013 12:48, Stéphane Ducasse stephane.duca...@inria.fr wrote: did you move some functionality (to the place they belong) to NBOpenGL? Because this should be done and JB has already spent time on that. I am not sure it is good choice to expand NBOpenGL. There's just API, and most of code is generated (imported from specs), so changing something there makes little sense. Accompanying package , however , would be much better (in same repo, if you want). I was talking about shadder code Stef Stef hi! Just to keep you up to date with the Roassal 3d effort. https://www.facebook.com/photo.php?fbid=547995685287033set=a.529997903753478.1073741828.340543479365589type=3theater Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. -- Best regards, Igor Stasenko.
Re: [Pharo-dev] vm patch for issue-11293
On Github, the pharo-vm has only one place for GetFileAttributesEx and that's in platforms/win32/vm/sqWin32Directory.c l366-368 It is GetFileAttributesExW by the way and inside: int dir_EntryLookup(char *pathString, int pathLength, char* nameString, int nameStringLength, /* outputs: */ char *name, int *nameLength, int *creationDate, int *modificationDate, int *isDirectory, squeakFileOffsetType *sizeIfFile, sqInt *posixPermissions, sqInt *isSymlink) ... if(!GetFileAttributesExW(win32Path, 0, winAttrs)) { return NO_MORE_ENTRIES; } Don't know about the other flavors. Phil
Re: [Pharo-dev] Roassal Bug related to Athens?
On Tue, Dec 3, 2013 at 10:35 PM, Igor Stasenko siguc...@gmail.com wrote: On 3 December 2013 15:21, Usman Bhatti usman.bha...@gmail.com wrote: On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.com wrote: On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote: Igor, I had a look at Athens demo to understand how to manage sessions and surfaces because Roassal uses AthensSurface and there is a defensive mechanism in place in Roassal to initialize the surface in case it is not done. In the meantime, I have discovered that the red rectangle bug is present in Athens demos as well. So, to reproduce. AthensFlakeDemo new openInWorld save image open image I tested in Moose 5.0. 1. Should I open a bug entry in Pharo? only if you intend to fix it. because this demo was not intended to be 'fully featured, end-user compatible and fool-proof demo'. it just a demo to show animation and discard it, but if you insist this is a bug, feel free to fix it. Unfortunately, I wont have time for this. For me it would have been good, had Athens provided an example of session management as a good client so that example-oriented people like me could understand easily. Because, otherwise, I'll have to look at the code of NativeBoost and that adds to the level of complexity because I would do things with trial and error. No need. There is one example: look at AthensSceneView 2. With my superficial knowledge of Athens, my guess is that the session management can be done in Athens so that Roassal (and other tools built on top of Athens) do not need to do it. May be it is the case already but the demos are not using it then. I disagree. Because then, files can also open/close and delete themselves automatically, so you will be left only to do reading and writing... Resource management is an application-level responsibility, not framework level. I cannot predict in Athens, how often one wants to create/destroy or (re)use surfaces, and therefore i cannot create and dispose them when i see fit within framework. Correct me if i wrong. I think this doesn't compare to file handling because there are many types of operations possible on files and that are application-specific. Here resource management is actually exception-handling: I should not give to my client a surface that does not exist any more. Now, of course, if there is some application-level intelligence is involved, we cannot put that in the framework. Surface is like file, you create it, delete it.. write to it.. the management of surfaces is absolutely out of scope of framework. More than that, surfaces is not something which you operate with usually. Because usually its just a canvas. Still, I will maintain that a minimalistic session logic should be built by default in Athens. Because otherwise each application has to maintain a session instance variable and a logic to test that session hasn't changed in between to keep a surface alive, which is lowest common denominator for all the applications using Athens. regards, Usman But I would understand the absence of such a mechanism in the framework but then a tutorial should explain to novices/first-timers how to do it. this sort of things is tiniest (but of course necessary) parts of whole application, and usually will belong to some service layers built around/on top of athens. in future, sure thing you won't need to care about it. Usman Usman On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti usman.bha...@gmail.comwrote: Hello Igor, Moose 5.0 is using Athens as default canvas for Roassal and we have bug with Roassal that seems to be related to Athens. http://code.google.com/p/moose-technology/issues/detail?id=1019 I think it is related to the fact that we create a surface in the OS with Athens and once we quit the image, the surface is destroyed as well. So, when image is restarted with the visualization trying to use the surface, we get the error. Could you point to what possibly can be done to avoid this error? Merely checking the existence of an appropriate drawing surface in Athens every time visualization is drawn, would it suffice? regards, Usman -- Best regards, Igor Stasenko. -- Best regards, Igor Stasenko.
Re: [Pharo-dev] Roassal Bug related to Athens?
I was able to resolve the problem in Roassal using session management. Tx Kilon and Igor for your help. Usman On Tue, Dec 3, 2013 at 3:58 PM, kilon alios kilon.al...@gmail.com wrote: you dont have to wait for my example as i said checkSession is already the example checkSession session == Smalltalk session ifFalse: [ just reset the surface surface := nil. session := Smalltalk session. ] as you can see here essentially we compare session if they differ then we know we need to reinitialize all our external resources in this example surface . Not that it assigns surfaces as nil but you will need to fully reinitialize the surface cause otherwise you will have a non existent surface still. In this class a nill surface is reinitialized by another method. Also I like to note here that Roassal Easel appear also not to check sessions and exhibits the known problem if image is stored with Easel open. Its something Roassal people would need to look at. On Tue, Dec 3, 2013 at 4:51 PM, Usman Bhatti usman.bha...@gmail.comwrote: On Tue, Dec 3, 2013 at 3:46 PM, kilon alios kilon.al...@gmail.comwrote: You are correct but so is Igor. Managing external resources has to do with VM and Nativeboost itself and not with Athens. This could happen with any other library. Session aware code is actually very easy to do and its explained Athens-Tutorial package in AthensViewMorphcheckSession . Its just 2 lines of code. In step2 method there is a relevant comment IMPORTANT NOTE: the surface which we will create at this step will be used in later steps. This means that if you resize the window (changing the view size), you may need to recreate surface. Also, since surface uses external resources, quitting an image and restarting it, will also require to create a new surface, because the one from previous session will be no longer accessible. Ok. Tx. That's very useful info. I'll have a look. but there is no mention to check the checkSession method for an example how sessions can be handled. I think this deserves a separate step by itself with a nice example. Igor you want me to give me commit rights to Athens repo to add that myself ? And if you add the example to Athens, please let me know. On Tue, Dec 3, 2013 at 4:21 PM, Usman Bhatti usman.bha...@gmail.comwrote: On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.comwrote: On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote: Igor, I had a look at Athens demo to understand how to manage sessions and surfaces because Roassal uses AthensSurface and there is a defensive mechanism in place in Roassal to initialize the surface in case it is not done. In the meantime, I have discovered that the red rectangle bug is present in Athens demos as well. So, to reproduce. AthensFlakeDemo new openInWorld save image open image I tested in Moose 5.0. 1. Should I open a bug entry in Pharo? only if you intend to fix it. because this demo was not intended to be 'fully featured, end-user compatible and fool-proof demo'. it just a demo to show animation and discard it, but if you insist this is a bug, feel free to fix it. Unfortunately, I wont have time for this. For me it would have been good, had Athens provided an example of session management as a good client so that example-oriented people like me could understand easily. Because, otherwise, I'll have to look at the code of NativeBoost and that adds to the level of complexity because I would do things with trial and error. 2. With my superficial knowledge of Athens, my guess is that the session management can be done in Athens so that Roassal (and other tools built on top of Athens) do not need to do it. May be it is the case already but the demos are not using it then. I disagree. Because then, files can also open/close and delete themselves automatically, so you will be left only to do reading and writing... Resource management is an application-level responsibility, not framework level. I cannot predict in Athens, how often one wants to create/destroy or (re)use surfaces, and therefore i cannot create and dispose them when i see fit within framework. Correct me if i wrong. I think this doesn't compare to file handling because there are many types of operations possible on files and that are application-specific. Here resource management is actually exception-handling: I should not give to my client a surface that does not exist any more. Now, of course, if there is some application-level intelligence is involved, we cannot put that in the framework. But I would understand the absence of such a mechanism in the framework but then a tutorial should explain to novices/first-timers how to do it. Usman Usman On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti usman.bha...@gmail.comwrote: Hello Igor, Moose 5.0 is using Athens as default canvas for Roassal and we have bug
Re: [Pharo-dev] Roassal Bug related to Athens?
On 3 December 2013 23:05, Usman Bhatti usman.bha...@gmail.com wrote: On Tue, Dec 3, 2013 at 10:35 PM, Igor Stasenko siguc...@gmail.com wrote: On 3 December 2013 15:21, Usman Bhatti usman.bha...@gmail.com wrote: On Tue, Dec 3, 2013 at 2:29 PM, Igor Stasenko siguc...@gmail.comwrote: On 3 December 2013 14:18, Usman Bhatti usman.bha...@gmail.com wrote: Igor, I had a look at Athens demo to understand how to manage sessions and surfaces because Roassal uses AthensSurface and there is a defensive mechanism in place in Roassal to initialize the surface in case it is not done. In the meantime, I have discovered that the red rectangle bug is present in Athens demos as well. So, to reproduce. AthensFlakeDemo new openInWorld save image open image I tested in Moose 5.0. 1. Should I open a bug entry in Pharo? only if you intend to fix it. because this demo was not intended to be 'fully featured, end-user compatible and fool-proof demo'. it just a demo to show animation and discard it, but if you insist this is a bug, feel free to fix it. Unfortunately, I wont have time for this. For me it would have been good, had Athens provided an example of session management as a good client so that example-oriented people like me could understand easily. Because, otherwise, I'll have to look at the code of NativeBoost and that adds to the level of complexity because I would do things with trial and error. No need. There is one example: look at AthensSceneView 2. With my superficial knowledge of Athens, my guess is that the session management can be done in Athens so that Roassal (and other tools built on top of Athens) do not need to do it. May be it is the case already but the demos are not using it then. I disagree. Because then, files can also open/close and delete themselves automatically, so you will be left only to do reading and writing... Resource management is an application-level responsibility, not framework level. I cannot predict in Athens, how often one wants to create/destroy or (re)use surfaces, and therefore i cannot create and dispose them when i see fit within framework. Correct me if i wrong. I think this doesn't compare to file handling because there are many types of operations possible on files and that are application-specific. Here resource management is actually exception-handling: I should not give to my client a surface that does not exist any more. Now, of course, if there is some application-level intelligence is involved, we cannot put that in the framework. Surface is like file, you create it, delete it.. write to it.. the management of surfaces is absolutely out of scope of framework. More than that, surfaces is not something which you operate with usually. Because usually its just a canvas. Still, I will maintain that a minimalistic session logic should be built by default in Athens. Because otherwise each application has to maintain a session instance variable and a logic to test that session hasn't changed in between to keep a surface alive, which is lowest common denominator for all the applications using Athens. Usman, i have impression that you didn't looked at code at all. AthensSurface subclass: #AthensCairoSurface uses: TCairoLibrary instanceVariableNames: 'handle context builder id ftFontRenderer session' classVariableNames: '' poolDictionaries: 'AthensCairoDefs' category: 'Athens-Cairo' what you think 'session' ivar and checkSession method does there? You can make subclass if you want and redefine default behavior. But my main problem that you still don't see that the code in example(s) is NOT the lowest common denominator for all applications using Athens. Lowest common denominator is Athens API. Athens API defines and describes roles (surface, canvas, paints etc) and their protocols, but NOT how to create/initialize and manage such objects. regards, Usman But I would understand the absence of such a mechanism in the framework but then a tutorial should explain to novices/first-timers how to do it. this sort of things is tiniest (but of course necessary) parts of whole application, and usually will belong to some service layers built around/on top of athens. in future, sure thing you won't need to care about it. Usman Usman On Mon, Dec 2, 2013 at 5:14 PM, Usman Bhatti usman.bha...@gmail.comwrote: Hello Igor, Moose 5.0 is using Athens as default canvas for Roassal and we have bug with Roassal that seems to be related to Athens. http://code.google.com/p/moose-technology/issues/detail?id=1019 I think it is related to the fact that we create a surface in the OS with Athens and once we quit the image, the surface is destroyed as well. So, when image is restarted with the visualization trying to use the surface, we get the error. Could you point to what possibly can be done to avoid this error? Merely checking the existence of
Re: [Pharo-dev] vm patch for issue-11293
2013/12/3 p...@highoctane.be p...@highoctane.be On Github, the pharo-vm has only one place for GetFileAttributesEx and that's in platforms/win32/vm/sqWin32Directory.c l366-368 It is GetFileAttributesExW by the way and inside: int dir_EntryLookup(char *pathString, int pathLength, char* nameString, int nameStringLength, /* outputs: */ char *name, int *nameLength, int *creationDate, int *modificationDate, int *isDirectory, squeakFileOffsetType *sizeIfFile, sqInt *posixPermissions, sqInt *isSymlink) ... if(!GetFileAttributesExW(win32Path, 0, winAttrs)) { return NO_MORE_ENTRIES; } Don't know about the other flavors. Phil Yes, that is the version I used and that I want to patch. I think this is the source for all current pharo-vm. Is pharo.fogbugz.com the right issue tracker for this? Who would review / apply this patch? Nicolai
Re: [Pharo-dev] CompiledMethod#= is broken
Marcus/Esteban I opened the bug and it is ready to integrate. https://pharo.fogbugz.com/f/cases/12331/Fixed-CompiledMethod 2013/12/3 Eliot Miranda eliot.mira...@gmail.com On Tue, Dec 3, 2013 at 11:27 AM, Eliot Miranda eliot.mira...@gmail.comwrote: On Tue, Dec 3, 2013 at 9:49 AM, Oscar Nierstrasz oscar.nierstr...@gmail.com wrote: The following code breaks: (SortedCollectionTest#testDo) = (SortedCollectionTest#testStoreOn). because it makes use of AdditionalMethodState#analogousCodeTo: which tries to send #analogousCodeTo: to a property which is an Association. It seems to me the solution is to implement Association#analogousCodeTo: with an equality test: analogousCodeTo: anObject ^self class == anObject class and: [ self = anObject ] Does this make sense? Yes. I should have written it this way in the first place. Thanks. See: https://pharo.fogbugz.com/f/cases/12077/MNU-in-AdditionalMethodState-analogousCodeTo Oscar Nierstrasz -- best, Eliot -- best, Eliot
Re: [Pharo-dev] vm patch for issue-11293
Right tracker. You can fork, do your changes, and issue a pull request if things look right. Phil
[Pharo-dev] AST-Semantic in Pharo 3.0???
Hi all, I see that ast-semantic is present in Pharo 2.0 but is not present in Pharo 3.0, so the question is How did you replace it? what do you use in Pharo 3.0? Thanks. -- Bernardo E.C. Sent from a cheap desktop computer in South America.
Re: [Pharo-dev] [Moose-dev] Roassal 3d now support textures
Better is to wait I arrive in Lille. Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. On Dec 3, 2013, at 6:49 PM, Stéphane Ducasse stephane.duca...@inria.fr wrote: On Dec 3, 2013, at 10:07 PM, Igor Stasenko siguc...@gmail.com wrote: On 3 December 2013 12:48, Stéphane Ducasse stephane.duca...@inria.fr wrote: did you move some functionality (to the place they belong) to NBOpenGL? Because this should be done and JB has already spent time on that. I am not sure it is good choice to expand NBOpenGL. There's just API, and most of code is generated (imported from specs), so changing something there makes little sense. Accompanying package , however , would be much better (in same repo, if you want). I was talking about shadder code Stef Stef hi! Just to keep you up to date with the Roassal 3d effort. https://www.facebook.com/photo.php?fbid=547995685287033set=a.529997903753478.1073741828.340543479365589type=3theater Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;. -- Best regards, Igor Stasenko. ___ Moose-dev mailing list moose-...@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Re: [Pharo-dev] Unifying Testing Ideas
On Dec 3, 2013, at 2:43 PM, Attila Magyar [via Smalltalk] ml-node+s1294792n4727144...@n4.nabble.com wrote: It's true, but it would make difficult to return a block. E.g. mock can receive: #msg; answers: [ [..] ] I'll trade an extra pair of brackets in a less common case for a simpler API any day ;) Anyways, I'm working on the next version with a slightly different api. My plan is to fully separate the DSL from the main part. This will make possible to play with different syntax without touching the core. Or even the users will be able to define their own syntax. Are you interested in integrating my changes into the current API? If so, I'll refactor them and clean them up. I personally would find it difficult to use the library without them. Coming from Ruby, a proper test double framework is the thing I miss most. Rspec was amazing. BabyMock is close, and with these changes has the test double features I commonly relied on Rspec for... - Cheers, Sean -- View this message in context: http://forum.world.st/Unifying-Testing-Ideas-tp4726787p4727195.html Sent from the Pharo Smalltalk Developers mailing list archive at Nabble.com.
Re: [Pharo-dev] Unifying Testing Ideas
This is the task I would really like to participate in. Although, just as you, I have no time at all, I still *will* find at least few hours a week :) -- Best regards, Dennis Schetinin 2013/12/3 Denis Kudriashov dionisi...@gmail.com Problem with TestCase approach is mixing two separate concerns. First is how we want to define system specifications. Another is how we can persist such specifications. When we stay at test case level we lost freedom for specification definition. We restricted with smalltalk language artifacts. For example, how we can group our tests? With classic test case approach we have four levels: packages, classes, protocols and methods. Now remember how many times you put long names for test like #shouldDoingSomethingWhenSomeSitiationHappensDuringAnotherSituationHappenButWhenSituation3NotHappen. And most times you have tests for each separate situation with same long test names. In smalltalk only way to refactor test names duplication is extraction same when condition to separate test case classes. But it means that you build classes with very long names and most times your test names stay big (but with reduced length). And do you know way how to group such classes? Only way is put such classes to own class category. Nobody doing this. Now imagine we don't care how to persist tests (specifications). We can model specifications with explicit objects which present #when, #should and other test artifacts, which can group specifications with arbitrary way. With true objects we don't name our specifications with method name convention. We can name tests with natural language, we can put names for when and should expressions with natural language. With objects we can build smalltalk vision of BDD framework. Really with smalltalk live system testing environment can be very different from other languages. BDD frameworks of other languages just changed names of TDD dictionary. They all stay restricted with language syntax. So it is my vision. I really want to build such system but I have no time for this yet. Maybe Sean doing something similar? 2013/12/3 Esteban A. Maringolo emaring...@gmail.com 2013/12/3 Dennis Schetinin chae...@gmail.com I see the only correct way to build a good testing environment: tests should be basically objects, not methods. They are objects. Instances of TestCase. But for simplicity they're implemented in a single factory class, the TestCase subclass... Esteban A. Maringolo
Re: [Pharo-dev] AST-Semantic in Pharo 3.0???
On 04 Dec 2013, at 00:53, Bernardo Ezequiel Contreras vonbecm...@gmail.com wrote: Hi all, I see that ast-semantic is present in Pharo 2.0 but is not present in Pharo 3.0, so the question is How did you replace it? what do you use in Pharo 3.0? We use the Semantic analysis phase of Opal. It’s exactly the same thing, slightly different implementation. It does a bit more as it needs to analyse correctly for optimised blocks and needs to do the tempVector/copying temp analysis for the closure model of Cog). The class that does the analysis is OCASTSemanticAnalyzer (together with OCASTClosureAnalyzer, we visit a second time for tempVector vs. copying for escaping variables). Analysis is triggered with #doSemanticAnalysis on the RBProgramNode. - every method+block get a scope (see OCAbstractScope) (this knows the defined vars and the hierarchy models ivar/class/global lookup) - variables are represented as subclasses of OCAbstractVariable - the Variables AST node has a property binding for such a semantic variable - the semantic variable knows what kind of var it is, so it is easy to implement #isTemp as isTemp ^self binding isTemp There is some preliminary work to model temp vs. ivar as AST node subclasses, but Opal is not using that and the implementation has some problems. This will see some work soon, I think. Marcus