New consortium member


We are happy to announce that CS department of University of Bretagne Occidental is now an academic member of the Pharo Consortium.


Pharodays draft website

Hi guys

Here is the draft of the pharo days 2017 conference

Full program and registration is coming.


Snaker&Ladder: A new book chapter


I just finished a new book chapter for “Learning Object-Oriented Programming, Design and TDD with Pharo”. I’m looking for a better name.

Available here: SnakesAndLadders

If you have feedback, you are welcome. Please use this email

The full draft of the book is available here.

If you have some ideas let me know.


Vector graphics Pharo poster


With the board and Inria graphists we designed this poster to present what is Pharo.

Feel free to use it.


More (old) Enhancements

19601 [Epicea] Epicea monitor is off by default

19600 [Epicea] OmNullReference shuld provide #globalName

19590 Integrate new Epicea release
19593 TClassDescription>>#isTestCase should be in SUnit-Core

19558 GtDebugger should not call #updateSelectionInterval in #updateBrowser

19596 move #outerMostContext to the KernelPackage

19597 move #definitionForNautilus &co. to the Kernel

19595 Protocol *GT-SpotterExtensions-Core-private in MCWorkingCopy should be moved to accessing

19594 isTestMethods &co. should be SUnit extensions, not part of Nautilus

19574 update BaselineOfIDE
19554 #~~ should be a primitive and a compile-time inlined selector to be consistent with #==

19573 more rigid ThemeIcons defaultUrl

19534 Unify Epicea UIs
19556 Glamour version 4.31

– fixes example GLMBasicExamples>>#morphWithCustomInteraction
– adds example GLMBasicExamples>>#changingTabsInComposite
– case 19505 Setting the selection using #initialize: does not work in a pharo script presentation.
– case 19504 Glamour should preserve the selection when updating a text presentation
– Put example browser into World / Help menu.
– better tests for the FT renderer in Glamour
– synchronize packages with Pharo
19570 QA 3.3.0

19557 GTDebugger should use FastTable in the object inspector for thisContext

19561 Drag&Drop FastTable Example Does Not Work

19536 “Instance variables not read and written” critique false positive on classes with certain slots

19559 GTMoldableDebugger>>updateBrowser should not call #update

19551 GLMPopper should accept cmd L shortcut to remote popup and cancel text changes

19552 Cancelling changes by cmd L should not request user confirmation

19565 QA v3.2.11
19548 Fix Spec Integration class comments and examples

19545 Add comment about OC translator subclasses (for effect / for value)

19555 Nautilus should sort all binary methods before non-binary methods

19550 Typo in settings: Popup notifaction –> Popup notification

19509 controling class assignment

19515 complileSilently:classified: method does not set properly the package

19217 Add printOn: method on WeakAnnouncementSubscription to improve readibility

19540 TabMorph should refresh content in background by defer message

19532 Improve TBehaviour >> lookupSelector:

19501 GlobalIdentifierTest leaves a file present in $data directory

19531 Latest GTTools integration broke the bootstrap
19521 localMethods should be moved to TBehavior where localSelectors methods are defined

19528 Split larger variable entries in the Variables menu into submenus

19529 Mouseover an empty submenu causes UI lockdown

19526 readString should check NULL condition

19520 Epicea: Tests lacking files cleanup

19514 ConfigurationOfFuel has no latest FuelTests version

19421 Failing test: WeakAnnouncerTest>>#testNoDeadWeakSubscriptions

19512 References to Tab -> should be TabMorph

18729 DNU on showing menu in CriticBrowser (code pane)

19491 ClassRemoved announced when it is not removed from superclass subclasses list

19490 ClassAdded should be announcer after notifying superclass about new subclass

19494 ClassModificationApplied is not announced when traitComposition of class or trait is changed
19493 Load new FastTable config

19488 STONWriterTests>>#testDictionaryWithComplexKeys is order dependent

19495 TabMorph should fork morph building in lesser priority than active process
19486 TabMorph helper method to prevent blinking when morph retrieval is too fast

19469 Debbuging Super call inside a debugger does not call the super method but the self one.

19306 taskbarIcon on class side should be defined only in Object class by using taskbarIconName redefined by subclasses

19479 Typo in name attribute of GRVariableAssignedLiteralRule

19478 Criticsbrowser shows a refactoring class name instead of the text diff

19438 Widen tolerance for DelayScheduler timing tests
19484 BaselineOfMorphic references unexisting class

19483 Add bootstrap specific code in Monticello

More enhancements before release…


19874 URL in ZnCharacterEncoderTests>>#testByteEncoderFromUrl must be changed

19868 RBMoveMethodToClassRefactoring not works with class side methods

19862 Evaluating code in a diff morph raise an error

19864 Add support for Server Name Indication (SNI) to Zodiac/SSLPlugin
19863 RBMoveMethodToClassRefactoring reset method protocol

19857 add option #argsAsArray

19809 Failing test: WeakAnnouncerTest>>#testNoDeadWeakSubscriptions

19856 FileReference { #spotterPreviewItemsIn: . #spotterPreviewZipItemsIn: } relies on #doesNotUnderstand:

19854 Rename refactoring from source code by cmd r should support all kind of ast nodes

19850 OrderedCollection Inspector indexes not right for similar items

19847 removeLink: needs to invalidate

19842 add simple api for testing if a link is installed in a node

19841 Format as you read can produce confusing “contents has been modified” questions

19843 add simple demo of logging self sends

19844 remove some trivial duplicated code from TabsExample>>#open

19845 add printOn: to ReflectiveMethod

19846 Make spotter work with ReflectiveMethods.
19839 add support for signedByteAt:signedByteAt:put:

19837 Epicea: integrate release 8.1.3


– Log browser:
* Display changes in a FastTableModel instead of a TreeModel, much faster for many changes.
* Remove “x filtered entries” display as well as “See 50 more” and “See all” buttons, to make the list of changes look more as a standard list (to the user eyes). Also, implementation was not nice.
* Big code clean up.
* Show number of active filters in tab (small visual improvement).
* Increase initial width.
– Fix case 19737: class removal annoucement now comes after class is renamed to AnObsolete (workaround).
– Fix case 19263: Catch all errors on redo and undo.
– Merge with fix to case 19819 by Denis. Thanks!
– Multiple code clean-ups
* Code Critic runs.
* Reduce direct explicit references to EpMonitor.
* Others.
– Add tests of apply and revert changes.
– Split EpLog into a new superclass to conform a hierarchy, which has now EpSorterLog.
– Ombu:
* Shutdown flush should be performed by all OmDeferrers, not only by all OmSessionStores.
* Workaround needed because can”t get real file stream position from ZnBufferedWriteStream (+ would need special care of WideStrings).
* Remove OmDirectoryStore and OmCompositeStore since they are not used anymore (continuous-style EpPriorView was the user).
* The Ston”s OmEntryReader should not receive the stream as parameter and then store it in the Ston reader. This produced was confussing and produced concurrency issues.
19838 ZnMonticelloServerDelegate>>#repositoryListing sends self self

19668 importIcons:fromFolder:inClass:category: sends unimplemented methods

19833 CairoLibrary unix module location assumptions too restrictive
19826 Off by one error in FTTableContainerMorph>>#calculateStartIndexWhenShowing:

19828 Class side methods + hierarchy selection eats the selected class.
19834 Error in horizontal scrollbar

19831 catalog refresh retrieves an empty collection

19823 exported source of the package MonticelloFileTree-Core in pharo-core repository contains strange extension
19822 ScriptingExtensions tests must be standalone

19809 Failing test: WeakAnnouncerTest>>#testNoDeadWeakSubscriptions

19786 MonticelloFileTree-Core package exported to Git contains a strange extension

19825 circular dependency between Renraku and Refactoring-Critics

19824 fix #scrollBarDownButtonBoundsFor: calculation

19819 Epicea browser doesnt refresh when tests produce code changes
19814 OSPlatform current needs to differentiate 32 and 64 bits

19821 loading of the BaselineOfIDE is broken

This brings changes to the inspector, debugger and fast table renderer for glamour.
Detailed changes:

– added support for refresh in the Inspector/Playground. The refresh uses the stepping mechanism from Morphic. There exists a setting to start/stop the refresh. Each presentation can decide if it wants refresh or not.

– the Glamour renderer for fast table uses now a LRUCache for storing the string representation returned by the #format: block. This is disabled by default and configureable per presentation. By default it is enabled for the Raw presentation and the collection presentations.

– the debugger now offers access to variables defined in the playground when debugging code from the playground

– the inspector uses GTInspectorVariableNode to model variables in the Raw view.

– fixed inspector issues with collections

Also fixes issues:
– case 18899 Raw presentation from the debugger inspector raises error when the rawSelection comes from another presentation
– case 17949 Missing evaluator presentation for the current context in debugger
– case 19753 Disappearing content in the context inspector from GTDebugger when tags are used
– case 19720 Add method scoped [Evaluator] tab to debugger
– case 14569 GTInspector should do live updates of objects and their slots
19816 Packages postfix must be removed

19815 BaselineOfBasicTools still loads Polymorph-TaskbarIcons

19807 Assert:equals: rule should target only tests

19801 Remove SublimishTheme

19809 Failing test: WeakAnnouncerTest>>#testNoDeadWeakSubscriptions

19799 Nautilus rebuilds the package view twice when adding a new protocol

19810 Non weak announcements in the SystemAnnouncer
19793 SHTextStylerST80 always parser code as method if workspace is nil

19797 Add access methods in PharoCommonTools instead of using DNU

19796 Remove duplicate code from SublimishTheme

18785 FileList: filter field does not show the actual filter

19795 Fix PackageTasksPlugin

PhD position at SCG

Applications are invited for PhD candidates at the Software Composition Group, University of Bern, Switzerland.

The Software Composition Group carries out research in software engineering and programming languages, with a view to enabling software evolution.  The SCG is led by Prof. Oscar Nierstrasz and is part of the Institute of Computer Science at the University of Bern.

Applicants will contribute to the ongoing SNSF project, “Agile Software Analysis”, and towards the planned successor project:

The candidate must have a MSc in Computer Science (equivalent to a Swiss MSc), should demonstrate strong programming skills, and have research interests in several of the following areas:

– software evolution
– program understanding
– dynamic analysis
– static analysis
– software modeling
– model-driven engineering
– secure software engineering
– programming language design
– domain specific languages
– virtual machine technology

Female candidates are especially welcome to apply. To apply, please send an email including your research statement and your CV, with at least two references, to Prof. Oscar Nierstrasz (, by June 1, 2017.

Kind regards,
Oscar Nierstrasz

Fossil and FileTree

Hi all,

I have written a simple integration of FileTree with Fossil to avoid the 2-step
Pharo- and shell-level work to add/delete/commit files.

At the operating system command prompt, init a new Fossil project:

os% mkdir ~/repo
os% cd ~/repo
os% fossil init myproject.fossil
project-id: 3c05c3016eeabf8e87816ee218c6a86d3c87b950
server-id: ff42bc86dba1a26b1d94b64685f7c09d02581617
admin-user: laptop-user (initial password is “1fe2ff”)

Open the repository:

os% mkdir ~/myproject
os% cd ~/myproject
os% fossil open ~/repo/myproject.fossil

In a fresh Pharo 6 image – I used v60411 – install FossilFileTree:

Metacello new
baseline: ‘FossilFileTree’;
repository: ‘github://PierceNg/FossilFileTree’;

Write code in Pharo. Open Monticello Browser. Add a “fossilfiletree”
repository, using ~/myproject as the directory. Save to said repository
from within Monticello Browser. Done.

Full blog post here:


Smalltalk jobs in Germany

Hi guys

Tomcat is looking for Smalltalkers in Germany.


2-3 Y. ST-experience (no matter which system) and wants to work for longer time in Germany, beginning in next 4-10 weeks.

Contact them not me 🙂


[Consortium] 20 – 26 march 2017


This is my weekly ChangeLog, from 20 March 2017 to 26 March 2017.
You can see it in a better format by going here:


23 March 2017:

*    Fixed (again!) build process for linux (libssh2 version was not correct).

22 March 2017:

*    I made another pass to some problems on *icebeg>* : added a new “branch browser” to compare sources from remote
branchs and added a couple of fixes to make the system a bit stronger… still working on this 🙂

*    I spent some time again on VM building, where a couple of issues arised:

=== Build windows VM with cygwin instead mingw
[Nico Cellier]( moved the [OSVM](
to cygwin as part of his effort to produce Win64 VMs (and to align PharoVM with the other VMs flavours built).

This was a cool work, but it requires some work for our side to properly build the [PharoVM](

=== Fix a problem with SDL2 and linux
SDL2 version was upgraded, but there was a remaining problem when building it, so I needed to track down the
problem and fix it.

Overall, the process are ok now… nevertheless I cannot merge the changes to make them available for users
because with latest VM sources there are some problems here and there (not all tests pass). So I’m waiting
for Eliot 🙂

20 March 2017:

*    I added edit of repositories to [Iceberg]( 🙂

This is usefull when you make a mistake and do not locate sources properly when cloning or when you want to
re-locate repository after moving it in your disk.