Monthly Archives: March 2015

Quality Assistant

Dear Pharo users,

As you already know I am working on providing better code quality support in Pharo. You can use Code Critics in Pharo to detect bad practices and potential bugs. But launching the Critics Browser and running it on your code every now and then requires additional effort which demotivates many people in doing it.

I want to present you a compact tool called Quality Assistant𝑏𝑒𝑡𝑎-

It runs SmallLint rules on the code that you save and provides you with a critic feedback directly in the place where you code: the Nautilus Browser.

Quality Assistant is available for Pharo 4 from the Configuration browser. Please read about how to set it up here:

I plan to introduce more features in the future and your feedback is much appreciated.


Changing the wheels on the car at 100km/h

Ben Coman refactored a core part of Delay and Delay are really central to a system like Pharo. His testimony highlights how we can be close to the system heart and improve it.

“One of the things that drew me to do the Delay refactoring, is simply that I could. That is, I was amazed that I could dig so deep so easily, see a path to improvement and effect change at a fundamental level. Excepting complexities with the Continuous Integration due to “changing the wheels on the car at 100km/h” (and one slip), it seems to have gone reasonably smoothly.  That sense of mastery is seductive.”

Pharo 40 beta is out

Try it to help us to deliver a great Pharo 40 release.

#before and #after links!


After loading this:
Simple after and before MetaLinks are taken into account, with just one check in #visitNode of the ASTTranslator that is
false when no links are there. (which means this slice should not impact anything)
For now this is for very simple MetaLinks: no parameters, no condition, no reification, no #instead/around,
no meta-level modelling.
Here is a trivial example:
1) get a AST node from our example method:
sendNode := (ReflectivityExamples>>#exampleMethod) ast body statements first value.
2) then we define a link that is just #halt:
link := MetaLink new
metaObject: Halt;
 selector: #now.
3) we set it:
sendNode link: link.
4) when we now execute the method, we get a halt:
ReflectivityExamples new exampleMethod
5) to get rid of it, uninstall the link:
link uninstall.
If you look at the byte code, you see that it compiles the link to the code:
25 <20> pushConstant: Halt
26 <D1> send: now

Using Google service discovery API’s with Pharo Smalltalk

Richard Prinz released a library to script Google services.

He wrote a tutorial on how to use it at:


Help releasing Pharo 40


As every year: We can only fix what we know.

And this means that no, just because *you* think that X and Y obviously needs to be fixed, 
it will only be fixed if 
	a) there is an issue on the issue tracker
	b) someone fixes it.

We need help.

ExtendedNumberParser secured


I did not want to lose the work of Nicolas Cellier around alternate number parsers so I went
back in Pharo 30 and packaged them as a separate package (may be it was already done but I could not find it).

All the tests are green in Pharo 40. So I hope that everything is ok 🙂

location: ‘;
user: ”
password: ”

I did a configuration and published the code in the meta repository for Pharo 40.

Thanks Nicolas Cellier for the original code.


I believe that we should pay attention that doing is difficult and we should not lose good assets

Viva: a minimal framework for animation


Viva is a small framework to define animation developed by igor Stasenko.
It is used by Roassal2 for its animation.
Now Viva is published in its own repository

location: ‘;
user: ”
password: ”

and published in the configuration repository for Pharo 40.


MongoTalk getting ready for Pharo 4.0


cleaned up MongoTalk a little bit:

- added a new baseline 1.7 with separate test packages for "BSON" and "Core", so tests are now separately loadable
- more comments and more/better categorizations
- printOn: in database and collections to print the name
- MongoQueries is now "Mongo-Queries" and "Mongo-Tests-Queries" (hence the name of the first to be in 
  alignment with other packages)
- make Config aware/loadable for upcoming Pharo 4
- the Config now is working and saved with Versionner
- the Config also includes groups (Core, Tests and default)
- it is now available in MetaRepoForPharo40 so it is in the config browser of Pharo4
- all 55 tests are green in latest Pharo 4.0 #40534 

Just cleanups, no behavior changes



Pharo continuous improvements

15070 failing test ClassHierarchyTest

15060 testSlotScopeParallelism is failing

15118 remove #gtInspectorSymbolicBytecodeIn: from CompiledMethod

15116 last reflectivity related code for pharo4: MetaContext

15113 The MorphTreeMorph header is too dark in the default theme

15109 newerPackagesAvailableIcon can be done with an overlay

15112 add ClassVariableTest and a fix: copy over value when changing a Class Var definition

15111 defer: comments

15107 Failing test testBehaviorRespectsPolymorphismWithTraitBehavior

15106 Test, typo fix (and tiny cleanup) for Slots

15108 prevent a potential error in PlatformResolver

14353 Delay refactoring (part 2) – change from milliseconds to microseconds

14545 Replace users by traitUsers in senders

15066 InputWidget and DateModel should use #label: instead of deprecated #text:

15078 SearchableTree>>initializeWidgets use LabelModel>>text: which is deprecated

15096 when choosing a directory default should be current

15014 Kommitter default size and layout not appropriate

12330 Rendering artifacts with scaled ImageMorph

15080 ProgressBar completion should resize when widget is resized

15009 allow to set title in RemotesManager

15049 Move endianess methods from collections to graphics package

15051 Remove Spec extension methods from String

15059 Cleaning up System-Support

15052 Remove dependency String -> LanguageConverter

15103 return unchanged argument in asMutator if argument is a mutator


15091 Improve backwards compatibility for AST-Core Nodes

15094 Fix link invalidation + hook generation on MetaLink

15081 nil in RecentTools

15101 Replace senders of String>>#subStrings: in Monticello

15100 Replace senders of String>>#subStrings: in Traits

15099 Replace senders of String>>#subStrings: in CollectionTests

15095 add #removeSlot: to ClassDescription

15089 Replace senders of String>>#subStrings: in Tool-Base

15092 Replace senders of String>>#subStrings: in Nautilus

15088 Replace senders of String>>#subStrings: in ConfigurationCommandLineHandler-Core

15087 Replace senders of String>>#subStrings: in Slot

15074 Monticello Browser does not highlight packages with newer versions

15075 Better icon for help book

15012 MCWorkingCopy>>currentVersionInfo may raises DNU

15054 Move Finalization Classes in Collections Weak to System-Finalization

15073 Merge ClassInstaller>>updateInstancesFrom:to: and TClassDescription>>updateInstances:from:

15056 Moving dependency Slot -> Reflectivity

15050 Move Text conversion methods to Text Converter package

15069 endless recursion in DockingBarMorph add:icon:subMenu:

15053 Moved dependency Dictionary -> Slot to slot package

15065 Versionner should use #label: instead of deprecated #text:

15063 Replace senders of String>>#subStrings in SUnit-Tests

15062 remove writeToGlobal:

15042 Add TCPSocketEchoTest test/example

15010 Slots: Example Association Slot

15039 Move Reflectivity related methods and classes to Reflectivity

15037 When loading Slots classes initials are asked

15041 Deprecated ShadowLabelMorph

15036 LabelModel>>initialize contains undeclared reference to textHolder

15032 ScriptLoader does not need to log the change description

15047 AthensSurface removeCacheAt: DNU

15046 addInstVarNamed: fix for adding multiple vars

15040 Remove Vistary Theme

15038 Typo: Rename AbtractCache to AbstractCache

15029 remove empty package Polymorph-Geometry

13042 GSoC flags in Morph still necessary?

15009 allow to set title in RemotesManager

12970 16 steps to get through #halt

15028 MorphTreeChangeRequest>>change: does not need the respondTo:

15016 clean Spec: ValueHolder exposition

14956 Properties on Behaviour: “self properties” creates empty dict for keys

15035 allSlotsEverywhere

15031 #cleanUpForProduction does not need to reset MCVersionInfo instances

14997 Lazy MCVersionInfo to reduce MC memory use

15021 LinkedList>>#collect:thenSelect: is slow

15022 ZdcSecureSocketStream trouble reading response with no content-length and connection close

15008 Regression: ZnClient HTTPS request through HTTP proxy failing

15025 privateRenameMethodFor: calls #token

15027 Flesh out MetaLink

15017 remove OCUnknownSelectorWarning

15019 Compiler AST transformation Plugins

15026 Link installation infrastructure for the AST

14420 What to do with Polymorph-Geometry

14950 Spec help added to the Help Browser

15013 enable recompile on run:with:in:

15015 GradientFillStyle color selection broken

14993 Integrate GTools

15006 RBPatternVariableNode>>initializePatternVariables(name is shadowed)

15001 Update Zinc-Resource-Meta-FileSystem

10741 Can not upload slice dependency already in repo

11992 Remove tokens from the AST-Core-Node classes

14990 MonitorDelay>>#signalLock:afterMSecs:inMonitor:queue: should return MonitorDelay object

15003 Bytecode Gen for Property Slot + small fixes reflectivity

15004 Add ProcessLocalSlot

14999 Twin: add base for Reflectivity

14033 Failing test: AJx64AssemblerTests>#testStringOps64Mnemonics

14998 Add WeakSlot

14870 Update Zn Februari 2015