Category Archives: Unsorted

[ann] MessageFlowBrowser


I updated my MessageFlowBrowser today to work on Pharo 7 and 8, see attached screenshot
or youtube video on

It now also works in Calypso and you just need to right click on a method in the method
pane or code pane and select “Message Flow” close to Senders, Implementors and other.

You can load the tool using

Metacello new
repository: ‘github://astares/Pharo-MessageFlowBrowser/src‘;
baseline: ‘MessageFlowBrowser’;

I also now moved repo from!/~TorstenBergmann/MessageFlowBrowser

to the new location

on GitHub for future development.

Have fun,


[ANN] Pharo Launcher 1.9.1 released

Hi all,

We are pleased to announce Pharo Launcher 1.9.1 release!
The goal of this release is to have a better Windows support. Indeed Pharo Launcher now uses a new library OSWinSubprocess ( created for Pharo Launcher needs. This library allows to create Windows processes through ffi calls to the Windows API. It uses the unicode api, allowing paths with non-ascii characters.
In the same time, we switched from OSProcess to  OSSubprocess (Linux and OS X) that is now the preferred library to use to fork processes on Linux-based systems.
This release is not yet the default download of Pharo Launcher on Pharo web site because we want more feedback before promoting it.
Please use this link to install it: and let us know if this version works fine/better for you.
ps: For now, the binary is not signed but it will come soon.
ps2: Thanks to Keldon Alleyne for his PR on Pharo Launcher offering the first FFI binding to Windows process API
The Pharo team.

[ANN] OSWinSubprocess a library to spawn Windows System processes

Pharo Launcher had stability problems to spawn new processes (launch Pharo images) on Windows as well as limitations (paths could only contain ASCII characters).
To solve this problem, we developed a new library: OSWinSubprocess ( and decided to make it a standalone library so that people can use it if they need to.
We tried to use the same API as OSSubprocess when possible. This library uses the Windows API to create process from both 32-bit and 64-bit Pharo images. It also supports Unicode characters.
Here are some examples on how to use it:
process := OSWSWinProcess new 
		command: 'C:\Windows\notepad.exe';
process terminate.
OSWSWinProcess new 
		command: 'C:\Windows\notepad.exe';
		arguments: #('notepad.exe' 'C:\foo.txt');
Important note: As of now, this library does not yet support standard streams (stdin, stdout and stderr). It could be done by setting the appropriate information in the STARTUPINFO structutre.
You can check the README for more information.

Call for improving Pharo together


it was in 2017 when I asked people here on this list to help cleaning and raise the quality level of our Pharo system:

I not only talked. I took action – meanwhile with around 658 (!) sometimes very trivial changes to
get Pharo 7 and 8 into a cleaner state (

One step at a time … evening per evening, week per week. Sometimes there was a minute – sometimes not.

And yes: Pharo already became cleaner with small contributions from my and many others contributors side. Pharo now
already feels a little bit better – has class and test comments, more aligned packages, fixed categories,
less typos, cleaner and more understandable code and more rules to hopefully keep that quality level.

What if YOU, YES YOU would also step in and also apply simple or complex fixes and cleanups on internal
and also external packages? You could also help with documentation or feedback on what is working and what not.

If we all clean the house TOGETHER the next guest would feel already more comfortable and also try not to
wear his dirty shoes…

I also intentionally opened one single trivial issue without fixing it myself. Now today this issue got somehow
“famous” on Twitter:

and YOU can get famous for FIXING or REVIEWING this single issue too.

Or you can help with many others that are left either here:
or here:

Jump in – the water is just fine!

Torsten (aka “astares” on Discord)

Compiler enhancements


We added support for setting a “production environment” for the compiler:

When compiling, there might be the case that the result of the compiler (the compiledMethod) should not be an instance of the class CompiledMethod from the environment
in which we compile, but from some other environment.

(e.g. imagine you have multiple environments and want to cross cross compile)

This PR adds the concept of a productionEnvironment and enables it for CompiledMethod.
(other use cases might make sense, too, for example all the literals in the CompiledMethod, this is future work but can be done similarly by handing the context into the Scanner)

This is our test for CompiledMethod:

| environment method return |
environment := {#CompiledMethod -> MyCompiledMethodForTesting} asDictionary.
method := Smalltalk compiler
productionEnvironment: environment;
compile: ‘tt ^1+2’.

self assert: method class equals: MyCompiledMethodForTesting.
return := method valueWithReceiver: nil arguments: #().
self assert: return equals: 3.

As one can see, the produces compiled method of the Compiler is an instance of our class.

PR needs a Review:

Talk at the Smalltalk Users Group Japan


Just a little note, I published a version of the presentation that I will give tomorrow during the monthly meeting of Japanese Smalltalkers.


Domain and tools hand in hand


What I REALLY like in Pharo is that people can build domain AND tools to go faster understanding and developing their domain.

Here is an example developed by Osoco a company in Spain. They developed Bloom Filter Sets but also the tools to understand if their implementation is good. Amazing experience.

It is so well done!


[ann ] Dr. Geo release 19.06

I am pleased to announce the Dr. Geo release 19.06, the GNU interactive
geometry software. It follows the release 19.03 in March 2019.

– New features
– Bugs fix
– Updated French user guide <>
– New book “Programmer des math avec Dr. Geo” <>. WIP – Feedback appreciated!

See details in the change log file in the software or read the bugs fix
list <>.

Download <>.


Dr. Geo

[ann] IPFS for Pharo

Hi everyone,

Over the last weeks I have started to explore IPFS more seriously.
IPFS, the Inter-Planetary File System, is supposed to be the
next-generation Web: a decentralized content-addressed database.

Since there is nothing better then Pharo for exploring databases,
I have started to write an IPFS interface to Pharo:

It connects to a local IPFS server, so you have to have one
running. It’s surprisingly straightforward to install and configure,
unless you have to fight with firewalls that block IPFS traffic.

Feedback of any kind is welcome!