Re: [Pharo-dev] Strange behavior of blocks
On 03 Aug 2014, at 5:55 , Clément Bera wrote: > > > Right, current hash is bad and long to compute. > > I think we should use instead > BasicIndexedEyeElement >> hash > ^ index hashMultiply > > host identityHash and index hash may lead to many collisions... > What do you think ? > I agree there’s not much value in including host in the hash for the use case of the icon lookup cache, since those were per host anyways (iirc). Index hash will be a sequential number, I haven’t checked the usage closely to see if it’ll be a problem wrt. collisions, but removal at least might be slow (if that’s ever done) due to lots of scanning needed to find the nil slot. Using hashMultiply seems a good precaution. Cheers, Henry signature.asc Description: Message signed with OpenPGP using GPGMail
[Pharo-dev] WhatsUp from: 2014-08-04 until: 2014-08-17
Hi! We're sending this automatic email twice a month, to give the community an opportunity to easily know what's happening and to coordinate efforts. Just answer informally, and feel free to spawn discussions thereafter! ### Here's what I've been up to since the last WhatsUp: - $HEROIC_ACHIEVEMENTS_OR_DISMAL_FAILURES_OR_SIMPLE_BORING_NECESSARY_TASKS ### What's next, until 2014-08-17 (*): - $NEXT_STEPS_TOWARDS_WORLD_DOMINATION (*) we'll be expecting results by then ;)
Re: [Pharo-dev] rethinking compilation notifications
Yes, we need this really a lot. Thanks Uko On 03 Aug 2014, at 22:09, Tudor Girba wrote: > Hi, > > The next stop in our little tour around code actions was the compilation > notifications. Again, we used a popper interface to show the error without > affecting the underlying text editor: > > > > You can find more details here: > http://www.humane-assessment.com/blog/rethinking-compilation-notifications-in-pharo/ > > Please let us know what you think. > > Cheers, > Doru > > > -- > www.tudorgirba.com > > "Every thing has its own flow"
[Pharo-dev] rethinking compilation notifications
Hi, The next stop in our little tour around code actions was the compilation notifications. Again, we used a popper interface to show the error without affecting the underlying text editor: [image: Inline image 2] You can find more details here: http://www.humane-assessment.com/blog/rethinking-compilation-notifications-in-pharo/ Please let us know what you think. Cheers, Doru -- www.tudorgirba.com "Every thing has its own flow"
Re: [Pharo-dev] About https://pharo.fogbugz.com/f/cases/2489
Pharo 40150 after typing two characters in a Workspace: setOrigin:corner: referese to the undefined Object: "DegeneratedRectangle" UndefinedObject(Object)>>doesNotUnderstand: #signal CharacterBlock(Rectangle)>>setOrigin:corner: CharacterBlock>>stringIndex:text:topLeft:extent: CharacterBlockScanner>>characterBlockAtPoint:index:in: Paragraph>>characterBlockAtPoint: Paragraph>>buildSelectionBlocksFrom:to: Paragraph>>displayExtraSelectionOn: TextMorphForEditView>>drawOn: FormCanvas(Canvas)>>draw: FormCanvas(Canvas)>>drawMorph: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] in [ "Note: At some point we should generalize this into some sort of multi-canvas so that we can cross-optimize some drawing operations." "Pass 1: Draw eventual drop-shadow" self hasDropShadow ifTrue: [ self drawDropShadowOn: aCanvas ]."Pass 2: Draw receiver itself" aCanvas roundCornersOf: self during: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] ] in TextMorphForEditView(Morph)>>fullDrawOn: in Block: [ ... FormCanvas>>roundCornersOf:in:during: FormCanvas(Canvas)>>roundCornersOf:during: [ "Note: At some point we should generalize this into some sort of multi-canvas so that we can cross-optimize some drawing operations." "Pass 1: Draw eventual drop-shadow" self hasDropShadow ifTrue: [ self drawDropShadowOn: aCanvas ]."Pass 2: Draw receiver itself" aCanvas roundCornersOf: self during: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] ] in TextMorphForEditView(Morph)>>fullDrawOn: in Block: [ ... BlockClosure>>on:do: TextMorphForEditView(Morph)>>fullDrawOn: FormCanvas(Canvas)>>fullDraw: FormCanvas(Canvas)>>fullDrawMorph: [ :m | myCanvas fullDrawMorph: m ] in [ :myCanvas | (self angle ~= 0.0 or: [ self scale ~= 1.0 ]) ifTrue: [ FreeTypeSettings current forceNonSubPixelDuring: [ submorphs reverseDo: [ :m | myCanvas fullDrawMorph: m ] ] ] ifFalse: [ submorphs reverseDo: [ :m | myCanvas fullDrawMorph: m ] ] ] in TransformMorph>>drawSubmorphsOn: in Block: [ :m | myCanvas fullDrawMorph: m ] Array(SequenceableCollection)>>reverseDo: [ :myCanvas | (self angle ~= 0.0 or: [ self scale ~= 1.0 ]) ifTrue: [ FreeTypeSettings current forceNonSubPixelDuring: [ submorphs reverseDo: [ :m | myCanvas fullDrawMorph: m ] ] ] ifFalse: [ submorphs reverseDo: [ :m | myCanvas fullDrawMorph: m ] ] ] in TransformMorph>>drawSubmorphsOn: in Block: [ :myCanvas | ... FormCanvas>>transformBy:clippingTo:during:smoothing: TransformMorph>>drawSubmorphsOn: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] in [ "Note: At some point we should generalize this into some sort of multi-canvas so that we can cross-optimize some drawing operations." "Pass 1: Draw eventual drop-shadow" self hasDropShadow ifTrue: [ self drawDropShadowOn: aCanvas ]."Pass 2: Draw receiver itself" aCanvas roundCornersOf: self during: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] ] in TransformMorph(Morph)>>fullDrawOn: in Block: [ ... FormCanvas>>roundCornersOf:in:during: FormCanvas(Canvas)>>roundCornersOf:during: [ "Note: At some point we should generalize this into some sort of multi-canvas so that we can cross-optimize some drawing operations." "Pass 1: Draw eventual drop-shadow" self hasDropShadow ifTrue: [ self drawDropShadowOn: aCanvas ]."Pass 2: Draw receiver itself" aCanvas roundCornersOf: self during: [ (aCanvas isVisible: self bounds) ifTrue: [ aCanvas drawMorph: self ]. self drawSubmorphsOn: aCanvas. self drawDropHighlightOn: aCanvas. self drawMouseDownHighlightOn: aCanvas ] ] in TransformMorph(Morph)>>fullDrawOn: in Block: [ ... BlockClosure>>on:do: TransformMorph(Morph)>>fullDrawOn: FormCanvas(Canvas)>>fullDraw: 2014-08-03 18:12 GMT+02:00 stepharo : > Hi guys > > We finished (we hope) a really long effort to be such that we cannot have > "negative" rectangles. > It implied fixing around 250 users of layoutFrame and a lot more. > > We introduced point:point: to create rectangles. > We improved many little points. > > We deeply tested the image but we never know it may happen that a layout > policy produce strange rectangles again. > If you find some glitches
[Pharo-dev] About https://pharo.fogbugz.com/f/cases/2489
Hi guys We finished (we hope) a really long effort to be such that we cannot have "negative" rectangles. It implied fixing around 250 users of layoutFrame and a lot more. We introduced point:point: to create rectangles. We improved many little points. We deeply tested the image but we never know it may happen that a layout policy produce strange rectangles again. If you find some glitches we will fix them. Stef and Igor
[Pharo-dev] [pharo-project/pharo-core]
Branch: refs/tags/40150 Home: https://github.com/pharo-project/pharo-core
[Pharo-dev] [pharo-project/pharo-core] 2a7e47: 40150
Branch: refs/heads/4.0 Home: https://github.com/pharo-project/pharo-core Commit: 2a7e47f659ae035ca9d52433cab13efe82e9f228 https://github.com/pharo-project/pharo-core/commit/2a7e47f659ae035ca9d52433cab13efe82e9f228 Author: Jenkins Build Server Date: 2014-08-03 (Sun, 03 Aug 2014) Changed paths: M Graphics-Tests.package/RectangleTest.class/instance/tests/testInsettingByRectangleShouldNotProduceNegativeRectangle.st A Graphics-Tests.package/RectangleTest.class/instance/tests/testPointPointConstructorIsSymmetrical.st M Graphics-Tests.package/RectangleTest.class/instance/tests/testRectangleWithNegativeExtentShouldHaveZeroExtent.st A Graphics-Tests.package/RectangleTest.class/instance/tests/testSettingLeftDoesNotProduceInvalidRectangle.st M Kernel.package/Point.class/instance/converting/rectangle_.st M Kernel.package/Rectangle.class/class/instance creation/left_right_top_bottom_.st M Kernel.package/Rectangle.class/class/instance creation/origin_corner_.st M Kernel.package/Rectangle.class/class/instance creation/origin_extent_.st A Kernel.package/Rectangle.class/class/instance creation/point_point_.st A Kernel.package/Rectangle.class/instance/private/setLeft_right_top_bottom_.st M Kernel.package/Rectangle.class/instance/private/setOrigin_corner_.st A Kernel.package/Rectangle.class/instance/private/setPoint_point_.st M Morphic-Base.package/LayoutFrame.class/instance/transforming/transform_.st M Morphic-Core.package/Morph.class/instance/layout/adjustLayoutBounds.st M Morphic-Widgets-Tree.package/MorphTreeNodeMorph.class/instance/layout/layoutBounds.st A MorphicTests.package/LayoutFrameTest.class/instance/tests/testTransform.st A MorphicTests.package/LayoutFrameTest.class/instance/tests/testTransformReturnASubArea.st A MorphicTests.package/LayoutFrameTest.class/instance/tests/testTransformReturnEmptyRectangleWhenNotPossibleToPlace.st A ScriptLoader40.package/ScriptLoader.class/instance/pharo - scripts/script150.st A ScriptLoader40.package/ScriptLoader.class/instance/pharo - updates/update40150.st M ScriptLoader40.package/ScriptLoader.class/instance/public/commentForCurrentUpdate.st Log Message: --- 40150 2489 Strange behavior of Rectangle https://pharo.fogbugz.com/f/cases/2489 http://files.pharo.org/image/40/40150.zip
Re: [Pharo-dev] Strange behavior of blocks
2014-08-01 16:11 GMT+02:00 Henrik Johansen : > > On 01 Aug 2014, at 3:20 , Serge Stinckwich > wrote: > > Dear all, > > using Sci-Smalltalk, we found with Natalia that sometimes blocks have > strange behavior : > https://groups.google.com/forum/#!topic/scismalltalk/HmGpTkzLOdQ > > I was able to create a more simpler example using only Pharo. > If you try, the following expression, there is no problem: > > |state values | > values := (1 to: 1) collect: [ : t| state := { t. t+1. t+2.}]. > (1 to: 1) do:[:i | (values at:i) at:2]. > > and you do more iterations, an error appears (Instances of > SmallInteger are not indexable), > because from time to time, an array is replaced by an integer: > > |state values | > values := (1 to: 10) collect: [ : t| state := { t. t+1. t+2.}]. > (1 to: 10) do:[:i | (values at:i) at:2]. > > and if you move the state variable inside the block, it works again : > > | values | > values := (1 to: 10) collect: [ : t| |state| state := { t. t+1. t+2.}]. > (1 to: 10) do:[:i | (values at:i) at:2]. > > Same problem in Pharo 3.0 or Pharo 4.0 > > Regards, > > > Speaking of which, when trying to inspect the array, it’s incredibly slow… > The main reason for this? > BasicIndexedEyeElement >> hash > ^*super* hash bitXor: index hash > > The super implementation? > AbstractEyeElement >> hash > ^host hash > > Guess what the host of an indexedEyeElement is? That’s right, the > collection… > So every time it tries to find the cached icon of a line (which is, 10-20 > times per refresh cycle depending on the view), it iterates through the > 10 element array to calculate its hash… > > I’d recommend either removing the super call from BasicIndexedEyeElement, > or tell the AbstractEyeElement to use the identityHash of its host instead. > Right, current hash is bad and long to compute. I think we should use instead BasicIndexedEyeElement >> hash ^ index hashMultiply host identityHash and index hash may lead to many collisions... What do you think ? > > Bonus: It also invokes a #DNU hander every time, since > DictionaryValueHolder >> at:ifAbsentPut: is implemented > *self* at: key ifAbsent: []. > instead of > *value* at: key ifAbsent: []. > > Your code looks obviously better. I'm making a slice for that. > Code quality progress. Yay. > Thanks for your contribution. Clement. > > Cheers, > Henry >
Re: [Pharo-dev] fresh image with dirty packages
2014-08-02 10:18 GMT+02:00 Marcus Denker : > > On 02 Aug 2014, at 08:54, stepharo wrote: > > > Yes I saw that too when we worked with Damien yesterday. > > May the last integration of clement was shaking some extensions and we > get from time to time > > dirty packages that are not dirty in fact. It never occurred to me or > marcus fixed them. > > > > I think it is a side effect of the “recompile class” fix that now forced > the trains to be re-installed. > This seems to emit notifications that it should not. > I added a OpalCompiler recompileAll as a postLoadDoIt in the last integration. I think this is what makes some packages dirty. This is because we recently patched recompileAll because it was not recompiling some methods in Traits. > > > Stef > > > > > >> Loading and starting a fresh image > >> (Pharo 40148) shows some dirty package in monticello. > >> (KernelTests, CollectionsTests, ...) > >> Comparing those packages with pharo40inbox shows no > >> changes except for > >> NativeBoost-Core > >> Athens-Cairo > >> and AST-Core > >> > >> what happened? > > > > > > >
[Pharo-dev] [pharo-project/pharo-core] 9e4196: 40149
Branch: refs/heads/4.0 Home: https://github.com/pharo-project/pharo-core Commit: 9e4196c43074f26c045b8f8051b45269fd819db6 https://github.com/pharo-project/pharo-core/commit/9e4196c43074f26c045b8f8051b45269fd819db6 Author: Jenkins Build Server Date: 2014-08-03 (Sun, 03 Aug 2014) Changed paths: M Nautilus.package/AbstractNautilusUI.class/class/menu/classesMenu_.st M Nautilus.package/AbstractNautilusUI.class/class/shortcuts/buildRecategorizeShortcutsOn_.st M Nautilus.package/AbstractNautilusUI.class/instance/accessing/selectedClass_.st M Nautilus.package/AbstractNautilusUI.class/instance/accessing/selectedPackageWithoutChangingSelectionInternally_.st M Nautilus.package/AbstractNautilusUI.class/instance/accessing/selectedPackageWithoutChangingSelection_.st M Nautilus.package/AbstractNautilusUI.class/instance/accessing/showGroups_.st M Nautilus.package/AbstractNautilusUI.class/instance/accessing/showInstance_.st M Nautilus.package/AbstractNautilusUI.class/instance/accessing/showPackages_.st M Nautilus.package/AbstractNautilusUI.class/instance/drag and drop/dropInAPackage_into_.st M Nautilus.package/AbstractNautilusUI.class/instance/group announcements/aGroupHasBeenRemoved_.st M Nautilus.package/AbstractNautilusUI.class/instance/menus behavior/findClass_.st M Nautilus.package/AbstractNautilusUI.class/instance/menus behavior/findPackage.st M Nautilus.package/AbstractNautilusUI.class/instance/menus behavior/forceGenerateInitialize.st M Nautilus.package/AbstractNautilusUI.class/instance/menus behavior/generateInitialize.st M Nautilus.package/AbstractNautilusUI.class/instance/menus behavior/mergeGroups.st R Nautilus.package/AbstractNautilusUI.class/instance/menus behavior/moveInNewPackage.st A Nautilus.package/AbstractNautilusUI.class/instance/menus behavior/moveInPackage.st M Nautilus.package/AbstractNautilusUI.class/instance/menus behavior/removeEmptyCategories.st M Nautilus.package/AbstractNautilusUI.class/instance/menus behavior/renameGroup.st M Nautilus.package/AbstractNautilusUI.class/instance/plugins announcements/browseClass_.st R Nautilus.package/AbstractNautilusUI.class/instance/private/updateBothView.st A Nautilus.package/AbstractNautilusUI.class/instance/private/updatePackageGroupAndClassList.st M Nautilus.package/AbstractNautilusUI.class/instance/source code area/compileAClassFrom_notifying_.st R Nautilus.package/AbstractNautilusUI.class/instance/source code area/okToChangeBoth.st A Nautilus.package/AbstractNautilusUI.class/instance/source code area/okToChangeSourceAndComment.st M Nautilus.package/AbstractNautilusUI.class/instance/system announcements/classRecategorized_.st M Nautilus.package/AbstractNautilusUI.class/instance/system announcements/classRemoved_.st M Nautilus.package/AbstractNautilusUI.class/instance/system announcements/classReorganized_.st M Nautilus.package/AbstractNautilusUI.class/instance/system announcements/testRunned_.st M Nautilus.package/AbstractNautilusUI.class/instance/test creation/createTestForClass_.st R Nautilus.package/AbstractNautilusUI.class/instance/updating/update.st M Nautilus.package/NautilusUI.class/instance/accessing/selectedClassWithoutChangingSelectionInternally_.st M Nautilus.package/NautilusUI.class/instance/accessing/selectedClassWithoutChangingSelection_.st M Nautilus.package/NautilusUI.class/instance/menus behavior/addCategory.st M Nautilus.package/NautilusUI.class/instance/menus behavior/categorizeMethod.st M Nautilus.package/NautilusUI.class/instance/menus behavior/findAllMethod.st M Nautilus.package/NautilusUI.class/instance/menus behavior/findMethod.st M Nautilus.package/NautilusUI.class/instance/menus behavior/findProtocol.st M Nautilus.package/NautilusUI.class/instance/menus behavior/generateTestMethodsAndFocus_.st M Nautilus.package/NautilusUI.class/instance/menus behavior/implementSelector_.st M Nautilus.package/NautilusUI.class/instance/menus behavior/moveMethodToPackage.st M Nautilus.package/NautilusUI.class/instance/menus behavior/removeCategories.st M Nautilus.package/NautilusUI.class/instance/menus behavior/removeMethod_inClass_.st M Nautilus.package/NautilusUI.class/instance/menus behavior/renameCategory.st M Nautilus.package/NautilusUI.class/instance/private/selectedClass_withSelection_.st M Nautilus.package/NautilusUI.class/instance/private/updateOnClassSelection.st M Nautilus.package/NautilusUI.class/instance/source code area/compileAMethodFromCategory_withSource_notifying_.st M Nautilus.package/NautilusUI.class/instance/system announcements/methodAdded_.st M Nautilus.package/NautilusUI.class/instance/system announcements/methodModified_.st M Nautilus.package/NautilusUI.class/instance/system announcements/methodRecategorized_.st M Nautilus.package/NautilusUI.class/instance
[Pharo-dev] [pharo-project/pharo-core]
Branch: refs/tags/40149 Home: https://github.com/pharo-project/pharo-core
Re: [Pharo-dev] Pharo image corruption and fatal VM error with Roassal
... and on Debian 14.04 x64. BW, Volkert Am 02.08.2014 um 02:09 schrieb volk...@nivoba.de: I had the same problem today on W8.1 x64 :-( BW, Volkert Am 31.07.2014 um 10:50 schrieb Blondeau Vincent: Hi, Yesterday, I was using GraphET (a part of Roassal) to do some charts and, today, when I wanted to reopen the image. And I got that : It is **very** unpleasant… To reproduce the bug: 1 - You can do either: | builder | builder := GET2Line data: (0 to: 100) . builder y: [ :x | x*x ]. builder open. Or WorldMenu -> Roassal examples -> choose an item -> click on a graph . A TRMorph should be opened. 2 - don’t close the graph and save the pharo image. 3 – Close the pharo image 4 - Reopen it I am under W7 x64 with the latest moose image and the VM available on the pharo.org website (http://files.pharo.org/platform/Pharo3.0-win.zip) from the 10 july. You will find the crash dump attached. Thankfully, I managed to open the image with a latest VM (http://www.mirandabanda.org/files/Cog/VM/VM.r3056/cogwin-14.29.3056.zip). Thanks a lot Eliot ! :) And I got this: Thanks in advance Cheers, Vincent BLONDEAU Ce message et les pièces jointes sont confidentiels et réservés à l'usage exclusif de ses destinataires. Il peut également être protégé par le secret professionnel. Si vous recevez ce message par erreur, merci d'en avertir immédiatement l'expéditeur et de le détruire. L'intégrité du message ne pouvant être assurée sur Internet, la responsabilité de Worldline ne pourra être recherchée quant au contenu de ce message. Bien que les meilleurs efforts soient faits pour maintenir cette transmission exempte de tout virus, l'expéditeur ne donne aucune garantie à cet égard et sa responsabilité ne saurait être recherchée pour tout dommage résultant d'un virus transmis. This e-mail and the documents attached are confidential and intended solely for the addressee; it may also be privileged. If you receive this e-mail in error, please notify the sender immediately and destroy it. As its integrity cannot be secured on the Internet, the Worldline liability cannot be triggered for the message content. Although the sender endeavours to maintain a computer virus-free network, the sender does not warrant that this transmission is virus-free and will not be liable for any damages resulting from any virus transmitted. -- www.nivoba.de "The more complex an object, the larger the investment in learning to use it, and the greater the resistance to abandon it.", NW -- www.nivoba.de "The more complex an object, the larger the investment in learning to use it, and the greater the resistance to abandon it.", NW
Re: [Pharo-dev] where the...
Thanks, Marcus. Doru On Sat, Aug 2, 2014 at 10:19 AM, Marcus Denker wrote: > > On 01 Aug 2014, at 20:50, Clément Bera wrote: > > > > > 2014-08-01 18:23 GMT+02:00 Eliot Miranda : > >> >> >> >> On Thu, Jul 31, 2014 at 11:52 PM, Ben Coman wrote: >> >>> Eliot Miranda wrote: >>> >>> >>> >>> >>> On Thu, Jul 31, 2014 at 9:48 PM, stepharo wrote: >>> I can tell you that I do not like jenkins but we have it, it works and it is maintained. So I lobotomize myself when I use it and it looks ok :) >>> >>> I like it very much. But there's a lot of freedom to design the >>> server and make it easier to find results, etc. For example at Cadence Bob >>> Westergaard has put a lot of effort into our Jenkins server with tabs >>> grouping different build tasks by VM, Newspeak, Spur, etc. So I find it >>> easier to navigate than the Pharo one. In particular it would be great if >>> thee were pointers to the latest build artifacts on >>> https://ci.inria.fr/pharo/job/Pharo-4.0/. Is that possible? >>> >>> >>> I think the philosophy was to avoid the CI server also being a file >>> sever - but perhaps the job result could provide a link to the associated >>> uploaded http://files.pharo.org/image/40/x.zip >>> >> >> Ok, if one should go to files.pharo.org then there should be as many >> links to files.pharo.org in obvious places as possible. But if I, as an >> outside, think to myself "nbow where would I find the most recent build of >> Pharo 4?", I would go to the CI server. >> >> For me, philosophically, a CI server /is/ a server, of build artifacts, >> test results and benchmarks. >> >> > I keep that link in my bookmarks to download the latest Pharo 4: > https://ci.inria.fr/pharo/job/Pharo-4.0-Update-Step-4-Publish/ > > However, to avoid the server to be overloaded (because there are many > people downloading Pharo every day), it is better to use files.pharo.org . > > > We should add links to the CI server page. I put it on my TODO. (to be > done *after* Holidays and ESUG). > > Marcus > > -- www.tudorgirba.com "Every thing has its own flow"