Monthly Archives: August 2015

Steady updates: pharo heartbeat development

16392 Should register WideString reader/writer to MCDataStream

16408 Clean up around changes files
16347 ComposableModel announcer should not be a valueHolder

16401 opening monticello window does not respect world size
16409 MNU: receiver of sourceInterval is nil

16249 change all senders of #instanceVariables to use #instVarNames

16391 Switching hierarchy visually removes selection of a protocol

16331 MergeDiffMorph – Wrong scrollbars

16406 RBkeysDoRule has the same #uniqueIdentifierName as RBEqualNilRule

16372 undeclared reference to searchList in FileList

15102 lost worldmenu

16405 Failign test: RBSmalllintTest.testConsistencyCheck

16404 Two tests failing OSWindowTest
16294 get rid of System-VMEvents dependency in the bootstrap

16203 Wrong diff when changing the package of an extension method

16394 Kernel should not depend on System-CommandLine. Check the Exit class

16403 make two icon names more uniform
16377 Formater bug on FileReference with cascade

16398 System-FileRegistry depends on Morphic

16401 opening monticello window does not respect world size

16397 DummyUIManager depends on System-VMEvents

16396 Timezone>>local should use LocalTimeZone

16400 remaining haltOnce (and copy method)

16333 no syntax highlighting in TextModel beForCode

16371 Integrate new stable version of OSWindow
16399 Improve RBSentNotImplementedRule for Traits

16395 remove some duplicated tests in RBConsistencyCheckRule and RBEqualNilRule

16387 remove Cursor read showWhile: from ImageReadWriter>>#formFromStream:

16335 test command line handler should exit with failure if tests fails

16289 Get rid of System-Localization dependency from the bootstrap

16188 System-Changes has low-level dependents

16379 Cleanup Locale API

16282 Bootstrap should not depend on Graphics

16337 The cleaning of File servicies broke some applications
15820 Better File API

16256 Evaluating a class which is not implemented does not show the “Unknown variable” dialog

16393 Mouse Button on Mac to get the menu is now wrong!!

16074 Is RBClassNotReferencedRule ~200x slower in Pharo 4 vs Pharo 3 ?

16384 populateMethodList Nautilus

16265 World Menu should be invoked by right-click not left-click

16277 Unselect the hierarchie button show the class definission

16290 Get rid of System-CommandLine dependency from the bootstrap

16369 do not use IdentitySet in whichSelectorsReferTo: and friends
16367 #hasLiteralThorough: should not check for names of Binding

16189 System-Sources has low-level dependents

16375 More tests for instead links

16131 RBModifiesCollectionRule breaks methods AST when checking

16363 Context menu in Recent Messages broken when empty

16365 Make properties on TemporaryVariable persistent

16364 Typo in Recent message browser title

16358 Can not commit three changed method to class TemporaryVariable
16358 Can not commit three changed method to class TemporaryVariable
16119 Monticello doent ask for user credidentials

16219 BIConfigurableFormatter>>#needsMethodSignatureOnMultipleLinesFor: uses to:do: instead of with:do:

16358 Can not commit three changed method to class TemporaryVariable

16175 WorldMorph ctrl+shift+click menu allows for some bad choices

16356 Persistent properties on Temps

16346 Add Object>>displayString
16352 some RubExamples dont work anymore

16285 Files should not depend on Graphics-Primitives

16353 TemporyVariable: pointer to method and block startpc
16294 get rid of System-VMEvents dependency in the bootstrap

16349 Lowercase button should be uppercase (when selecting an st file)

16350 Default HelpIcon in CustomHelp has to be book instead of page

16299 Monticello should not depend on Text-Diff
16348 Deprecate HelpIcon and HelpIconTest

16351 skip testTestInterferenceWithSystemTimingSemaphore for now

16345 Improve the feedback system of QualityAssistant

16338 Property API for TemporaryVariable

16344 add basis for links to Temps and Slots

16269 separatorBlock is not read and written in BISimpleFormatter>>#formatSelectorAndArguments:firstSeparator:restSeparator:

16343 add isEmpty not to RBNotEliminationRule

16342 deprecated #whichSelectorsReferTo:special:byte: and friends

16341 Update key text for browse version since the shortcut changed
16266 Nautilus no longer highlights protocol when method is selected

16301 Monticello should not depend on Tool-ExternalBrowser

16336 reduce senders of #hasSpecialSelector:ifTrueSetByte:

16298 get rid of Tool-Base in the bootstrap

15861 Create test package for Jobs

16283 Collections-Abstract should not depend on Graphics-Primitive

16208 System-Support should have a System-Support-Tests

16293 get rid of NativeBoost dependency in the bootstrap
16324 Clean FileServices and FileList by using pragmas

16328 Fix senders of ifNotEmptyDo: in image

16300 Monticello should not depend on Tool-Diff
16275 You cant use ctrl + shift + f anymore on the debuggeur

16322 Move navigation arrows close to navigation drop list in Nautilus

16323 add the concepts of a first class TemporaryVariable

16321 started a RBSmalltalkGlobalsRule

16307 Fix adding Slots to anonymous classes

16320 Update configuration of Rubric

16313 fix tests failing when unloading old compiler

16315 SimpleServerEntry should use a pragma and use them to declare them

16316 Form should not rgisterFileReader inside the Graphics package

16312 Fix some references to the old compiler

16080 RBImplementedButNotSent always true

16306 Clear undo cache in Nautilus when changing source code
16268 SyntaxErrorNotification from styler for single double quotes

16284 Compression should not depend on Graphics-Primtives

16281 Collections should not depend on Multilingual-OtherLanguages

16287 Transcript should not depend on Graphics-Primitives

16292 Make TreeNode of Komitter user friendly

16296 Default group with configurations in Nautilus

16297 Add shortcut to open variables menu

16288 Remove parallel diff calculation

16305 Update configuration of Rubric

16273 RubSmalltalkEditor(Object)>>doesNotUnderstand: #shiftedTextPaneMenuRequest

16250 Activate new Encoders

16295 Update NautilusGroupAutoBuilder

16270 Rewrite ifTrue:ifFalse: using min: in Date>>#addMonths:

14789 Nautilus can not browse anonymous classes

16302 Move variable assignment outside of blocks and Rewrite ifTrue:ifFalse: using min:/max: in Rectangle>>#intersect:ifNone:

16261 Monticello window is ridiculously small when opened from the world menu

16291 Remove scary weel of the Komitter

16150 make OSWindow events work with morphic

16276 thoroughWhichSelectorsReferTo:special:byte: does not need to use isTrait
16239 hasReportTableSlip is not packaged well and more

16264 update ring-core-kernel dependencies

16272 Reflectivity: start of code gen for Globals

16192 Cut Text-Core dependencies

16099 Failing tests in MCSnapshotBrowserTest

16257 Use Rubric in description area of Nautilus Plugin Manager

16260 Compression should not depend on Tool-Base

16253 Failing Test: RBSmalllintTest>>#testMissingYourself

16251 Dictionary tests are failing

16204 Traits package should not depend in System-Changes: fix two obvious causes

16248 Remove unused ClassCategoryReader and ClassCommentReader

16173 ASTCache depends on Reflectivity

16199 Introduce OpalEncoders

16247 Move fileOut* methods to a separate package

16237 Values in the class init of NECPreferences are not what we expect

14428 CollectionsTests package should be Collections-Tests

16233 Add balloon-text to the various buttons used by Nautilus browser

16210 Multilinguage-OtherLinguage should not have the tests inside his packages.

15020 remove “missing yourself” rule

16241 RBFutureDeprecationWarningRule not needed

16240 Rename loop variable to avoid conflicts in NautilusGroupAutoBuilder

16227 Nautilus wrong buttonstate (hierarchy/class)

16243 add property API to RPackage
16229 NEC is disabled and prior default values are unset
16235 New method in UITheme for saving files

16230 Use Property API to set a MetaLink on Slots
16214 Reput the shortcuts for browsing etc in Monticello

16212 ChunkWriteStream doesnt understand many messages…

16225 Adding facilities to define repositories to publish in the catalog browser

16234 Add a button to load and create a group in Catalog Browser

16221 ReEngine needs a #reset and #cleanUp method

16224 Property API for Slots

16226 Use the new property API on Globals when setting a link:
16220 Two new rules: RBRuleIfNotEmptyDo and RBRuleIfNotNilDo

16223 Property API for Globals

16215 Can not get menu for list panes anymore when not using a mouse

15861 Create test package for Jobs
16217 zombie instances of Spec Tools: revert case 11115

16187 Create a group automatically when you load a project

16133 repackage blue ink in blue project

16213 Update Configuration of Rubric

15279 Nautilus: Rename Package needs to copy over defined Monticello repositories
16208 System-Support should have a System-Support-Tests

16179 Reflectivity: Set Links on Globals

16216 Default values in NECPreferences are not initilized right

16200 Error in #selectNextMethod when removing the only method

16185 Kernel should not depend on NewValueHolder

16202 System-FileRegistry should not depend on System-Changes


15290 Remove UserManager

Update GTools to version 3.0.5

16197 update and merge Rubric

16198 Add users button in message browser

16201 Remove unsent extension methods in System-Changes

16194 Remove refresh button from QualityAssistant, improve UI a bit

16193 Typo: generation -> generation

15697 Speed up the autocompletion pop-up appearance delay

16184 Update ConfigurationOfCatalog

16183 Clean up class comment implementation

16181 Better unifying of the columns width in Nautilus

16182 Add Manifests for the bootstrap (part 2)

16178 new nautilus icons (for class side, hierarchy, etc) are defined in wrong class
16167 remove useless methods

16170 Add Manifests for the bootstrap (part 1)

16172 Kernel and Ring should not depend on Nautilus

16089 Nautilus buttons

15150 SpecTableLayout not included in Pharos Spec fork

16174 Allow links to be put on ClassVars
16168 Context>>#directedSuperSend:numArgs: is broken

15198 Cleaning Nautilus (browser compatibility)

16164 Reflectivity: Allow a Links to be put on a Slot

16169 komitter slice commit may break
16158 Do not announce ClassCommented when its the same string

16145 CTRL + S doesnt work anymore to commit after written a message

16162 echo is not used in VTermOutputDriver

16165 Array>>#storeOnStream: not used and broken
16148 Select next method when remove one in Nautilus

16146 unify hasComplexVariables vs usesSpecialVariables

16141 Use themed help icons when issue 15079 was integrated (for Help-Core)

16160 ProfStef context menu broken

15079 Move HelpIcons into icons package

16149 Remove PluggableTextMorph from StandardWindow

16144 FFI is not loading on Pharo 5
16138 WorldMenu->System->Settings throws DNU – Image 50217

16140 Monticiellos save popup should should wrap the text.

16137 PluggableButtonMorph needs #on:getState:action:label:menu: for backwards compatibility

16128 Better handling when the Pharo-window is re-sized

16106 Image grows by 3.5MB for every save

16135 Remove RBModifiesCollectionRule from rules run by Renraku (QualityAssistant)

16120 Remove unused #importFrom: in ClassOrganization and ProtocolOrganizer

16116 introduce PluggableButtonMorph with icons and PluggableToggleButtonMorph
15305 LabelModel emphasis: is bad

15489 Switching to class side with modified class comment

15365 Spec TreeModel support for odd/even row color

16113 SimpleFormatter

16127 Remove PluggableTextMorph from edit:label:action:
15754 New Code Critic for unary “accessing” methods without explicit returns

16113 SimpleFormatter

MultiWindow Desktop

Julien Delplanque provided this week a goodie to switch between 
"desktops" - but his initial solution was more or less hiding windows
and not really switching between real Pharo worlds/desktops.

I gave him some tips what could be done on the pharo-user list. Havent heard
from him afterwards.

Now I was able to spend a few hours on this topic myself and implemented 
a full multiple desktop solution myself.

This works in Pharo 5 only (currently) and requires latest VM (at least on Windows)
from to get the keyboard shortcuts right.

To try:

  Gofer new
    smalltalkhubUser: 'TorstenBergmann' project: 'DesktopManager';

The goodie has some nice features like keyboard navigation, world menu
integration and even a custom spotter with preview of the desktops.

Quick start:
 - evaluate the above expression in a Pharo 5 image
 - check the world menu "Desktop"
 - you can press CTRL + D and then CTRL + A (= Desktop Add) to add a new desktop 
 - you can press CTRL + D and then CTRL + D (= Desktop Desktop) to open the overview
 - you can press CTRL + D and then CTRL + P (= Desktop Previous) to navigate to the previous desktop
 - you can press CTRL + D and then CTRL + N (= Desktop Next) to navigate to the next desktop

The code is hopefully a good example on how to build a custom spotter, shortcuts, inspector extensions, ...
Additionally all this is described in a new article including screenshots
and a guide on how to use this new goodie:

Actually the article took more time to write than coding but I hope 
it helps explaining Pharo and why it is a power tool. 

Project is on!/~TorstenBergmann/DesktopManager
Article and code is still subject to change.

Have fun

Brick Preview

We are happy to announce the first preview version of Brick, a new widget set created from scratch on top of Bloc.
Brick is being developed primarily by Alex Syrel (together with Alain Plantec, Andrei Chis and myself), and the work is sponsored by ESUG. Brick is part of the Glamorous Toolkit effort and will provide the basis for the new versions of the development tools.
Brick’s goal is to provide a beautiful looking widget set, and the default look is based on material design. The widgets are theme-able.
Right now, there exists:
– Label
– Simple button
– Toggle button
– Checkbox
– Radio button
– Window with or without an active title bar that can include various visual actions and info
– Menu
– Beautiful scrollbars that are thin by default and enlarge when the mouse hovers over it
– Scalable list for huge amounts of items with various heights
(The list also allows one for embedding text widgets with in place editing)
The next immediate target is the creation of a new Pager widget (the widget that is behind the current GTInspector).
You can see some screenshots on the official site:
To play with it, you can download a ready-made image:
and, in a Bloc space, you can browse the examples:
BrExampleBrowser exampleOpen
We would be happy to hear your feedback.

Projector as Golden consortium member

The Pharo Consortium is very happy to announce that Projector Software GmbH
has joined the Consortium as an Gold Member.

 - Projector Software GmbH:
 - Pharo Consortium:

The goal of the Pharo Consortium is to allow companies and institutions to
support the ongoing development and future of Pharo.

Individuals can support Pharo via the Pharo Association:

WAV parser available


I made a WAV parser, so now we can play music in Pharo 🙂

I made an example using OpenAL’s binding from Ronnie.

You can try it with this piece of code :

Gofer new
smalltalkhubUser: ‘MerwanOuddane’ project: ‘WAVParser’;
package: ‘ConfigurationOfWAVParser’;
(Smalltalk at: #ConfigurationOfWAVParser) loadBleedingEdge.
(Smalltalk at: #ALExamplesWAV) exampleBirdChirping


1,2 Million of Scientific Names

Hello there,
This might be useful to others, I wrote a small blog post of FastTable usage with more than 1,2 million of scientific names in one of the most useful bioinformatics curated databases, the NCBI Taxonomy Database.



New Smacc version

Hi All,

I have released SmaCC 2.0.5, aligned on the main SmaCC[1] with a small fix on the Java parser, a few additional parsers (Cucumber), the addition of the Javascript parser, and continuous improvements on the performance and source code coverage of SmaCC generated parsers (with many thanks to John Brant and Don Roberts). The project is available on github[2]
This release is targeted at Pharo4. All parsers should work on Pharo 5, but the GUI doesn’t work. Most parsers come with full AST generation and a dedicated visitor for each, and support for native language refactoring.
To retrieve a specific parser, please use Metacello with the following script:
Metacello new
  baseline: ‘SmaCC’;
  repository: ‘github://ThierryGoubier/SmaCC:v2.0.5’;
  load: ‘SmaCC-Javascript’
(SmaCC-Python, SmaCC-Java, SmaCC-Cucumber, etc…)
On Pharo4 only, to retrieve the full set (gui and tests), please use Metacello with the following expressions:
Metacello new
  baseline: ‘SmaCC’;
  repository: ‘github://ThierryGoubier/SmaCC:v2.0.5’;

ISO 3166-1

Dear all,
I developed a Pharo ISO 3166-1 wrapper to access objects into a ISO3166-1 model. See the following post for details on installation and usage:

I also wrote some documentation about it:

Hope you find it useful.



No holidays for Pharo Improvements

16117 Cleaning Nautilus RotatingString and Friends

16118 flatCollect:as: does not return the good collection type if the receiver is empty

16105 DNU: receiver of “compilationContext” is nil – AST
16097 introduce RBNullFormatter

16100 #testCanCreateFiletreeRepositoryFromUrl is failing

16110 Specify Window Menu Order

16107 Merge of Rubric with repository needed

16078 load new TxText version

15651 Fix Gofer>>upgrade

16072 QualityAssistant should depend on a configuration of Renraku and not use deprecated methods

16095 #browseScropedMorph and #browseVariablesMorph are Undeclared

16094 SHRBTextStyler can not style incomplete literal arrays

16102 wrong coloring for nested parentheses (SHRBTextStlyer)

16103 Allow ManifestBuilder to update methods in different protocols

16079 Nautilus window moves randomly and does something that takes time

16104 Fast Table has infinite loop when drawing then consuming a lot of CPU
16093 Remove a forgotten PluggableTextMorph in groups

15633 FT2Handle needs to cleanUp on exit, not on startup

16087 Package BlueInk-Core is empty

16085 Removing PluugableTextMorph from MC tools

16092 Change package group icon

15817 Clean up Nautilus groups

15773 Shout is using the wrong class to perform its semantics analysis

16046 Integrate BlueInk Inspector to preview the effect of an option in the settings of the pretty printer

15990 Failing tests testCanCreateFiletreeRepositoryFromUrl (on windows)

16088 Fix DiffMorph when called from Komitter

14986 Additions to tests for MultiByteFileStream

16049 support differnt colors for nested parentheses / blocks in SHRBTextStyler

16053 less pluggableTextMorph references

16086 reflectivity: testAfterSequence

16077 removing BooleanSlot with instance

16082 load new athens version 3.7

15773 Shout is using the wrong class to perform its semantics analysis

16075 DiskStore>>basicEntry:path:nodesDo: should return on DirectoryDoesNotExist error

12883 Critics browser rules categories selection
16073 TextEditor initialization

16071 Remove groups button and clean up a lot of useless tests related to it in Nautilus

15517 Breakpoint AST suggestions should be not shown when the editor is dirty

15512 Method deprecated but not in Deprecated50

16041 Rubric is not using source code font anymore since update 50192

16070 RBPatternBlockNode should implement #isPatternBlockNode and return true

16062 WorkspaceTest>>#testStyling is failing

16060 remove empty packages GroupManager and GroupManagerUI

16011 Remove old Pretty Printer

16067 remove #prepareDebuggerExample

16066 Update Rubric

16006 Make new Pretty Printer the default
16063 Byte code generation UnlimitedInstanceVariableSlot

16061 DNU when running ProfStef tests

16058 Clean ProfStef

16055 Color HSL accessors

16056 Cleaning ProcessBrowser

15948 Removing PluggableTextMorph from FileList

15903 Use Rubric in DiffMorph
16051 Incorrectly structured tab window can make VM spinlock

16052 BooleanSlot: implement code generation

16054 Update Rubric configuration

16044 remove empty package remove ShoutTests

16048 Unify capitalization of Browser in our tools

15951 remove all direct references to Workspace

16042 TxTxt: load latest in image
16041 Rubric is not using source code font anymore since update 50192

16036 Method list gives an error after removing an overriding method

16040 CodeSearchingRule should not be visible in CriticsBrowser

16027 add special RB nodes for Globals and Ivars

16029 Changing the font globally (Force all) does not affect the font in the right side of the Help window

16026 remove RBExplicitVariableParser

16024 QualityAssitances uses deprecate method #category

16021 Support creation of colors from HSL coordinates

16025 clean up: shouldGetStepsFrom:

10916 RBParser missparse some temporary variables

16023 RBClassReference can be removed
11115 Trying to remove shouldGetStepsFrom:

15769 Suggestions work in Nautilus but not in “Implementors” menu.

12491 Finder menus for pragma search results partly broken/sensless

16019 BreakPoints should install links that compile directly on installation

16017 RBScanner>>#flush not needed

16016 Replace with #allSatisfy:, #anySatisfy:

15957 QualityAssistant integration

16008 simplify AbstractTool>>renamePackages:

16012 parse link option from method pragma

Lightning JSON-RPC

LtJsonRpc is a lightweight JSON-RPC implementation. It only depends on Zinc and JSON packages.

You can quickly create JSON-RPC services in a few lines of code.

LtJsonRpc provides a handy way for controlling your pharo.image from a command-line tool (curl).

More information at!/~MasashiUmezawa/LtJsonRpc