Monthly Archives: November 2016

Doing one step at a time

19377 Pharo 6 Morph>>#showActions broken

19339 MethodAnnouncement should has methodPackage information and provide packagesAffected and protocolsAffected

19391 FuelPlatform-Core
19365 remove dependency of Catalog on Nautilus

19367 testClassRespectsPolymorphismWithTrait does suppose full image

19295 originAtCenter looks like deadCode

19372 MethodFinderTest is dependent>>#testSearchForAccessAtOne is dependent on result order

17771 Empty stderr/stdout files should be deleted on image shutdown
19361 Morph>>#showActions broken

18330 Fuel still has platform classes in Pharo6 like FLPharo11Platform.

19381 KMSingleKeyCombination should be not printed with forced uppercases

19382 #add:finalizing: in AlienWeakTable sends unexistent message #copyGrownBy

19364 We need to be able to read utf8 strings from ExternalData

19354 FFIExternalStructures allways recompile its accessors in their first use.

19331 ClassRepackaged and MethodRepackaged should be subclassed from ClassAnnouncement and MethodAnnouncement

19349 RPackageAnnouncement should be SystemAnnouncement subclass and work as other system changes

18881 ChangesBrowser executing refactoring changes in wrong order
19360 Deprecated #selector call in MetacelloVersionConstructor>>#verifyVersionImportPragmas:definedIn:

19352 Conflict on package renaming if tag exists

19362 Make OSWindow as optional and unloadable

18918 Typo on welcome screen
19378 Rendering text in athens is broken (still not fixed)

19363 remove dependency of Rubric on SmartSuggestions

19275 Installing / Uninstalling Metalinks clears method list selection

19358 solve Nautilus-Versionner dependency

19373 MethodFinder class>>#methodFor: should provide sorted result

19329 New SystemAnnouncement is needed to signal that class modification was completely installed

19303 Classes should define systemIconName instead of systemIcon

19359 ProtocolRemoved is not announced when Nautilus removes empty protocols
19350 SystemAnnouncer cannot be reset in minimal/bootstrapped Pharo

19328 Undeclared ShortRunArray again

19326 failing test: testClassRespectsPolymorphismWithTrait

19335 Syntax highlighting do not work on methods with primitives that uses “ec”

19340 Can not step over methods with meta links

19343 Spec is now dependent on FastTable

19351 ClassTagAnnouncement is needed to describe operations with class tags
19348 apply automatic deprecation rewrite because of 19347

19333 17 more tests failing due to MockSettings class(Object)>>doesNotUnderstand: #mocksystemsettings SettingTreeBuilder>>mocksystemse
19338 Revert 18233 (improving Pragma API)
19323 ClassRemoved should provide information about affected package

18233 improving Pragma API

19320 Improve MethodClassifier logic
19251 Interval with step=0 is possible to create but most operations raise non-obvious exceptions

19290 helpAtCenter morphic property is only set to true

19297 Scrollbar lastPaneColor can be turned into an instance variable

19318 Add new Colors package to the BaselineOfPharoBootstrap
19296 PluggableButtonMorph property lastState can be turned into an instance variable

19293 mouseOverBorderStyle property in IconicButton can be turned in instance variables

17456 use fasttable for the add to package MC repository

19313 Move Color to Kernel

19316 Integrate BaselineOfPharoBootstrap

19299 Missing border after dragging out of a window group

18286 Provide notice of missing package description in CatalogBrowser

19309 RBSourceRegexRefactoring calls not existing method on RBClass

Towards true headless


I am working on removing most of windowing code from the VM, and in trying to unify the platform specific code of the VM. In the MinimalistHeadless branch of I made the following changes:

– Unified standard CMake building scripts for Unixes. I hate autoconf. I want to use them in Windows too.
– Refactoring the Unix entry points. I am trying to remove a lot of code for simplfying stuff.
– Null window driver for true headless.
– Optional SDL2 based traditional display backend for compatibility reasons, and because the extra Morphic worlds using OSWindow are a bit unstable.

So far I managed to run a standard Pharo 6 image using this custom VM in Linux. Windows and Mac are coming next. Hopefully this is going to fix the problems with duplicated events when using OSWindow in Windows.

I am also planning on making a standard interface for embedding the VM in an application, at least as a static library. With this new building system, this seems to be easy to do.

BTW. When I tried the minimalistic Pharo image, in a completely headless VM, I got the following error:

[ “Ugh …. now this is a biggie – a system that does not support
any of the display depths at all.”
‘Fatal error: This system has no support for any display depth at all.’
inContext: thisContext.
Smalltalk quitPrimitive “There is no way to continue from here” ] in DisplayScreen>>findAnyDisplayDepth
DisplayScreen class>>startUp

As a workaround, I am doing the following for ioHasDisplayDepth with the null driver:

sqInt ioHasDisplayDepth(sqInt depth)
return true;

In DisplayScreen class >> startUp we have the following:
startUp “DisplayScreen startUp”
Display setExtent: self actualScreenSize depth: Display nativeDepth.
Display beDisplay

Does it make sense, to always trying to create a display in startup time?

Best regards,

New Animation Package


I am happy to release the Animation package at last!!/~ThibaultRaffaillac/Animation
This is a general animation system, which can turn any setter message into a smooth transition (provided the target value supports + and *Float).

AnimationProperty new at: morph set: #position: to: 100@100 during: 2 seconds easing: #backOut.
AnimationProperty new at: morph set: #color: to: Color red during: 2 seconds easing: #linear.
AnimationProperty new at: morph set: #title: to: ‘tutututu’ during: 2 seconds easing: #linear.

Or equivalently (don’t choke):
morph position: (100@100 during: 2 seconds easing: #backOut).
morph color: (Color red during: 2 seconds).
morph title: (‘tutututu’ during: 2 seconds).

It basically sends the setter message repeatedly during the target delay, each time with a slightly different value. It should also work with Bloc, although the update mechanism depends on Morphic’s deferredUIMessage at the moment.


ps: Thanks to anonymous contributor for the second syntax, it was a lot of fun – and evil laughs 🙂

Chip8 Emulator

Pharo is a great community. Thursday I asked if we got an emulator for Chip8 ( and I started to code it but got sick and Monday Henrik sent a little mail with a full implementation. Super cool 🙂!/~Latsabben/Chip8

Do not let your kids get close to your keyboard and have fun.

| program emulator |
“C8Programs downloadGamesPackZophar.”
program := C8Programs programNamed: ‘ZopharPack:PONG’.
emulator := C8Emulator new.
emulator loadProgram: program.
emulator asMorph
extent: 800@600;
primaryColor: Color gray;
secondaryColor: Color black;
disabledColor: (Color orange alpha: 0.3);
instructionsPerStep: 10;

Bloc and Brick on github

Hi all,
I am pleased to announce that Bloc and Brick successfully moved to GitHub.
This means that the versions on SmalltalkHub are no longer maintained.
You can find installation procedures on github.

– a single place for all graphics-related projects (Bloc, Brick and maybe Sparta and Roassal in the future, i hope)
– benefit from git possibilities
– benefit from github tools
– more visibility

Some news in Bloc:

  • End of Athens support
  • Support for MS Windows (libMoz2D binary)
  • Static linear and radial GradientPaints
  • BoxShadow effect based on Sparta filters
  • Improvement of BlAnimation
  • Drag & Drop basis

Not much news in Brick:

  • Now Brick is based on the latest version of Bloc
  • Now Brick includes Styles and Theme (moved from Bloc to Brick)
  • First attempt for ColorPalette api (to be confirmed)
  • Material stuff is moved on a separated package (Brick-Material)
  • No more dependencies to PetitCSS / PetitParser in Styles (full smalltalk api)
  • [Warning] TextInput-related widgets are broken, waiting for SpartaEditor api
  • [Warning] Brick has been updated and moved to Github yesterday so it is possible that there are some issues during installation (not yet well tested)

Thanks for your interest in Bloc & Brick,
Best regards,

NeoCSV at Work :)


I know a lot of people are interested in (public) datasets (to use as examples). The website contains a (small) number of interesting ones. Here is how to access them using NeoCSV.

(NeoCSVReader on:
 '' asUrl retrieveContents readStream) upToEnd.


ZnClient new
 url: '';
 contentReader: [ :entity | (NeoCSVReader on: entity readStream) upToEnd ];

Of course, they don't use UTF-8 and don't advertise it, so on some datasets you need to do something extra.

(NeoCSVReader on:
     value: ZnCharacterEncoder latin1
     during: [ '' asUrl retrieveContents ])
     readStream) upToEnd.

(Warning: this last example is quite large, 500K records).


WKHTML2PDF for Pharo 50/60


WKHTML2PDF is now available for Pharo 5/6. You can load it from Catalog in Pharo 5/6. So if you like to convert HTML or URLs to a 
PDF use 

        convert: ''
        toFile: 'pharo.pdf'

then check it out. Note that I only had the need to make it work on Windows. If someone
adopts to Linux/Mac tell me and we include the contribution.

Project is on STHub as before:!/~TorstenBergmann/WKHTML2PDF 


Scripting Unreal with Pharo

Annnddddd…. I DID IT !!!

I accomplished connecting Pharo with Unreal so I can script it with Pharo. It works from inside the editor and for the game as standalone. True live coding 🙂
I am amazed how fast it is, but then I guess it should be expected with shared memory.  You can watch a short demo here
When I first created the loop, nothing happened.
So naturally I expected that my CPPBridge was not working, my loop is basically going from 1 to 150 (z axis), 10 times. After inserting a delay of just 10 milliseconds I could see movement.
So apparently without the delay Pharo , Unreal and CPPBridge are so fast that do 10 times movement of 1 to 150 in under one frame !!!!! So now I will have to slow down thing to make them work as I want !!! LOL!!!! I expected to be fast but nowhere that fast.
Not that I am complaining.
But this is just the first step, now I will slowly and steadily start to wrap Unreal Engine 4.13 API for Pharo.
Its a dream to use Pharo professionally 🙂
Dimitris Chloupis

Sven’s Magic Touch

I wanted to get all the lines of

And ZnEasy get: ‘’

did not like to proceed…

Here is Sven trip and tricks at work!

This page returns text that is latin1 (iso-8859-1) encoded, but describes it as ‘text/plain’ without further qualification. Zn then assumes the encoding is utf8 (the most reasonable default today). Mime-types can specify the encoding as follows: ‘text/plain;charset=utf8’ or ‘text/plain;charset=latin1’.

Here is how to override the default in Zn

value: ZnCharacterEncoder latin1
during: [
ZnClient new
get: ‘’ ]) lines.

The above will give you an array of 336531 words (it is a bit slow because it is lot of data).

This is a common problem 😉 new back end


We have changed the backend of the Pharo Association.

If you ever joined the association in the past, please consider to re-subscribe.

We have added already all existing active members, in this case you should
have already received a new password.

For all questions, do not hesitate to contact