Monthly Archives: August 2014

New Pointer Explorer


Pharo4 #155 now contains a Pointer explorer build with the Eye Tree Inspector framework:

EyePointerExplorer openOn: #zot

EyePointerExplorer openStrongOn:  #zot

Why is this needed?

Currently we still use a sub lass of ObjectExplorer for the PointerExplorer, which means that we can remove the whole package
Tool-Explorer now that we have one based on the new inspector.

Next step?

- put the new tool as the default (and unify Smalltalk tools strongPointerExplorer with pointerExplorer)
- remove package Tool-Explorer (ca. 700 Loc, 6 classes)

Class comment:
A variant on the TreeInspector that works "backwards".

By default it shows both weak and strong references (#openOn:) but I can be configured to omit weak refs with #openStrongOn:

Like the TreeInspector, it shows a tree of objects, but expanding a node won't show the objects which that node references, but rather the objects that reference that node.  Its main use is to track down memory leaks: if you want to know why a particular object is still alive, open a PointerExplorer on it and drill down until you find the root object that's referencing it.  For example, find all the references to the symbol #zot with:

EyePointerExplorer openOn: #zot

For the "name" of the object, the PointerExplorer shows each object's identityHash, to allow the user to identify when two similar objects are identical and notice cycles.

Direct interaction based rewrite rule creation

Mark posted a nice update of his intern works at RMOD.

After working on refactorings, I started implementing Rewrite Tool, which provides GUI to create rewrite rools. At this point it's in early stage, but you can take a look at it now. Info on blog: Download:!/~MarkRizun/RewriteTool Simple example on YouTube: It's my first video, that I recorded, so don't judge me:) As always, feedback is welcome!

A systematic approach to progress: one by one

Doing systematic actions is great, because when you do them you do not think and what you make sure is that at the end of the day, even if everything else went wrong, you still have made progress. 


2489 Strange behavior of Rectangle

13758 use better package selector for (class/methods) move to

13765 Nautilus Refactoring 6: rename methods and fix hierarchy view

13751 OpalDecompiler missdecompile named primitives

13750 OpalDecompiler raises errors in rare cases when decompiling to:do: and to:by:do:

13747 EventHandlerPlus -> MouseOverEventHandler

13749 SimpleBallonMorph has just one initialize and one user 🙂

13744 Move to raises a DNU

13748 MoveFullScreenTo Morphi-Widgets-Windows since this is its only user

13737 Little MenuMorph cleaning up

13746 repackaging a simple problem with buttonToTriggerIn:

13745 Cleaning polymorph again

13743 tiny clean in AnnounceMentTests

13739 Nautilus Refactoring 5: intermediate code cleanup (remove unused methods)

13693 Monticello Settings –> move to Monticello

13741 Another small Ring refactoring

12853 Factor out common snippet to OCUnderclaredVariableWarning>>declaredVariable:

13663 when recompiling a Trait, the recompiled methods are not installed in the users

13735 Clean up SystemNavigation more

13736 Continue Ring Simplify

13712 tiny recategorization in Collections

13733 Nautilus Refaktoring 4: move class list loading to ClassWidget

13734 Move MethodClassifier to Tools-Base

13237 Pharo Zen values should be in the image

13724 MessageBrowser should be a bit wider…

13732 Enable mustBeBooleanInMagic:

13618 Recover from toolbar filling the screen from runaway window creation.

13730 Globals: fix Undeclared handling

13728 Decompiler and OCDecompiler cannot decompile returning loops

13731 RGFactory cleanup: Ring definition class method in RGFactory can be inlined

13729 3 menu item to generate inst var accessors


MC Browser: New Packages are never dirty in

13704 Nautilus Refactoring 3: recategorize methods / clean code critics

13727 MessageBrowser API Clean: Continue, start cleaning SystemNavigation

5193 MC Browser: New Packages are never dirty in

13723 Another Step in cleaning the MessageBrowser API

13722 Failing test: OCDecompilerTest #testExampleAndOr3 and #testExampleAndOr4

13717 testUndeclared failing

– recompile Image

13672 Failing test: RBSmalllintTest>>#testConsistencyCheck

13673 Failing test: ReleaseTest>>#testLocalMethodsOfTheClassShouldNotBeRepeatedInItsTraits

13716 #testIssue6406 failing

13715 Port to 4: 13626 SelectorException>>signalFor:In: does not understand object:

13707 Tiny critics clean in SpotLight package

13710 tiny cleanup in Collections-Streams

13713 tiny reformatting in EventManager

13709 RBShouldntRaiseErrorRule has wrong name

13708 Tiny Critic clean in FontInfrastructure

13711 tiny cleanup in Tool-FileList

13659 ReparseAfterSourceEditing needs to be moved to Opal

13706 #contentsChanged not needed on Object

13035 Ctrl-Shift-b causes DNU

13702 MessageList should not have direct references

13703 MCPackageManager>>#update: not needed

13699 Nautilus Refactoring 2: PackagePane widget