Monthly Archives: January 2019

[ANN] Pharo open documentation

Hi everyone!

With some other members of the community we are proud to announce a new effort on Pharo documentation:

We launched an organization pharo-open-documentation which is a
user-maintained documentation related to Pharo environment, language,
and libraries.

Currently it has three main projects:
– pharo-wiki : Wiki related to the Pharo programming language and environment.
– awesome-pharo : A collection of awesome Pharo libraries, tools,
frameworks and software.
– awesome-pharo-ml : List of projects, books, booklets, papers, and
applications related to machine learning, AI, data science in Pharo.

Contributions are welcomed!

If you own a cool project in Pharo others could use in their own
projects, send us a PR to awesome-pharo!
If you have knowledge on Pharo or projects of Pharo, we would be glad
if you could contribute to the pharo-wiki! Don’t forget to read the
contribution guidelines. 😉

We opened a Twitter to announce new entries on the pharo-wiki.

Have a nice day!

[Ann] Pharo 7.0 released!

Dear World and dynamic language lovers: 

The time has come for Pharo 7.0!

Pharo is a pure object-oriented programming language and a powerful environment, focused on simplicity and immediate feedback.

This is our most significant release yet. Here are the key highlights of this release:

	• Pharo is now provided in 64-bit version in Linux and OSX and brings even better performance and stability. The 64-bit version is now recommended for Linux and Mac, and is provided as technical preview for Windows.
	• Pharo comes with a new version of the PharoLauncher ( THE tool to manage your distributions (access to regular versions, jenkins builds, and older versions). 
	• Pharo build has a fully new build process that supports its full bootstrap from sources. This will enable the production to specific (micro) images. 
	• Iceberg, the git client for Pharo has been significantly improved, and is the default CMS.
	• Calypso, the angular stone of PharoThings, is the new system Pharo browser. It replaces Nautilus and brings better remote working and more advanced browsing capabilities. 
	• IoT is now an important part of Pharo. Installing PharoThings ( provides an impressive amount of tools to develop applications in small devices.
	• The unified foreign function interface (UnifiedFFI) for interfacing with the outside world is significantly improved to work properly on Windows 64-bit. 

Pharo 70’s new infrastructure and process set the stage for a new generation of version. 
The visibility of GitHub combined with the powerful tools that have been validated with more than one year of beta testing is massively pay off.

These are just the more prominent highlights, but the details are just as important. 

We have closed a massive amount of issues: 2142 issues! (A comprehensive changelog can be found at:

While the technical improvements are significant, still the most impressive fact is that the new code that got in the main Pharo 7.0 image was contributed by more than 75 people.

Pharo is more than code. It is an exciting project involving energetic people. We thank all the contributors of this release:

Gabriel Omar Cotelli, Gustavo Santos, Marcus Denker, Torsten Bergmann, Esteban Lorenzano, Bernardo Ezequiel Contreras, Guille Polito, Pablo Tesone, Yoan Geran, Stéphane Ducasse, Cyril Ferlicot, Vincent Blondeau, Denis Kudriashov, Julien Delplanque, Tim Mackinnon, Max Leske, Andrew P. Black, Tomohiro Oda, Clément Béra, Ben Coman, Eric Gade, Yuriy Tymchuk, Nicolas Cellier, Biyalou-Sama Asbath, Myroslava, Sean DeNigris, Juraj Kubelka, Noury Bouraqadi, Holger Freyther, Geoff Reedy, Norbert Hartl, Paul DeBruicker, Alain Plantec, Martín Dias, Peter Uhnak, Tomohiro Oda, Benoît Verhaeghe, Santiago Bragagnolo, Wouter van Zuilen, Bernhard Pieber, Damien Pollet, Geoff Hill, Hans-Martin Mosner, Ronie Salgado, Philippe Back, Aliaksei Syrel, Dayne Guerra, Rafael Luque, Serge Stinckwich, Vincent Aranega, Hernán Morales Durand, Petr Fischer, Rajula Vineet Reddy, Alexandre Bergel, Esteban A. Maringolo, Jan Blizničenko, Johan Brichau, Luc Fabresse, Quentin Ducasse, Sébastien Roccaserra, Stephan Eggermont, Sven Van Caekenberghe, Takano Mitsuhiro, Pavel Krivanek, Allex Oliveira, Christophe Demarey, Lionel Akue, Nicolai Hess, Martin McClure, Alistair Grant, Pierre Tsapliayev, Milton Mamani, Matteo Marra, Thomas Dupriez, Asbathou Biyalou-Sama.
(If you contributed with Pharo 7.0 development in any way and we missed your name, please send us a mail and we will add you).

The Pharo Team

Try Pharo:
Learn Pharo:

[ANN] SETT (Store Export to Tonel Tools) for Pharo6.1

GemTalkSystems is pleased to announce SETT (Store Export to Tonel 
Tools)[1]. SETT is open source project with an MIT license.

SETT (Store Export to Tonel Tools) is a set of tools to export Smalltalk 
code from Store and
write into the Tonel file format managed using Git.

SETT is:

  * a Pharo 6.1 application, that
  * connects to a Postgres Database
  * containing source code history in VisualWorks Store format; and
  * writes to a Git repository
  * in Tonel format
  * maintaining all version history, source code and SCM metadata.

SETT was developed last year to support one of our commercial customers 
in their conversion From Store to Rowan[2]. Rowan artifacts are produced 
as part of the output of SETT, but the Rowan artifacts can be ignored. 
The important bit is that SETT converts from Store to Tonel and 
maintains version history in git.

Please see the project ReadMe[3] and Wiki[4] for additional details.



[ Save The Date ] Pharo Days 2019: Thursday April 4 & Friday April 5 @ Lille, FR

Dear members of the Pharo community,

We are happy to announce that we will be organising Pharo Days this year, in Lille, France. This will be a two day event: Thursday April 4 & Friday April 5. The main venue will be the Amphitheatre of INRIA Lille – Nord Europe.

Each day will consist of a number of short 20 to 30 minutes tech talks in the morning, with a more free format in the afternoon: general hacking space, pair programming, demos, side meetings, tutorials, coding sprints, Q&A’s, shows us your projects – real life human interaction. Of course, there will be social events as well.

Please join us to make this another successful edition, after Annecy (FR) 2011, Lille 2012, Bern (CH) & Lille 2013, Lille 2015, Namur (BE) 2016 and Lille 2017.

Mark your calendars, we will provide more details when they become available.

The Pharo Board, Association & Consortium

Rewriting 900 methods in a couple of lines

I got 900 methods that I wanted to rewrite so I hacked the ParseRewriter to do it for me 🙂
| rewriter node method testsels |
testsels := ReTest selectors select: [ :e | e beginsWith: ‘test’ ].
    do: [ :s | rewriter := RBParseTreeRewriter new.
                        replace: ‘self shouldnt: [re compile] raise: Error’
                        with: ‘self compileIsOK’.
                   method := ReTest compiledMethodAt: s.
                   node := method parseTree.
                   (rewriter executeTree: node)
                   ifTrue: [
                       method origin
                           compile: node formattedCode
                           classified: method protocol ]]

[ann] Smallapack in Pharo6

I announce the availability of Smallapack in Pharo6.

The ConfigurationOfSmallapack is in and there is a copy in metarepo for Pharo 3/4/5/6.

Currently, the ported version uses a derivative of OpalCompiler patched to handle method with 16+ arguments.
External function calls have not been converted yet to UnifiedFFI, but the patched compiler rather has hook to compile legacy FFI.
Though I did not install the hook to call FFI with more than 15 arguments, so there is at least 1 unit test failing (but not crashing).

I have auto-re-generated all the source code for using UnifiedFFI formats, so the dependency on legacy FFI is not a necessity (apart for simplifying cross dialect maintenance).

But I want to review the generated code method by method rather than filing it in blindly (the wrapper functions are also generated, and I might loose comments or improvments if I'm careless). Unfortunately, the state of diff tools in Pharo6, be it thru MC or worse than all, thru legacy change lists, does not enable such a large scale review, so I think that I will edit in Squeak and run in Pharo...

Now that Smallapack supports Opal, there should be no major problem for porting to Pharo7, but I did not have time to try yet. A few more MC regressions, and the fact to forbid protocol beginning with a * was too serious a cross compatibility hurdle for me. But I'll come back to it, tools are generally better in ph7 than ph6. Stay tuned.

Nicolas Cellier

Visual Studio code Configuration for the VM

Hi guys,

We have been using this week with Pablo a combination of Visual Studio Code, cygwin, and gdb to build and debug the VM to chase some issues during ffi calls in win64.

It was overall simple to setup, and though I thought it was going to be just a text editor with vitamines, it ended up being a really light but versatile IDE with code navigation, compilation and debugging integration.

But, since there were some little things over here and there like gdb
source code mapping that was not so straight forward to find in the
documentation, we thought it would be good to share it.

If somebody is interested in using a similar setup to work with the VM, I've left my configuration files in the following gist, including:

 - cygwin bash terminal integration (also with zsh, but that's pure cygwin)
 - task actions to build cog and stack vms on debug mode
 - launch configs to run both in debug mode with gdb attached

Guille & Pablo

[Ann] Discord Pharo news channel

I am happy to annoyance a new channel in our Discord Server , #news

News is a read only channel (members cannot post there only admins) that I
intended to act as a newspaper of short that you can read with your morning
coffee to get all the latest news in the Pharo land.

The rules of the channel are very simple,
1) Only admins can post there. Its not a dicussion channel, all other
relevant channels can be used for discussing the Pharo news. We already
have tons of them.
2) every post must be no more than 2 lines, similarly to twitter, this is
for headlines not for entire articles
3) every post must contain a link for more info
4) every post must mention the author that the news concern
5)  least news must always be related to Pharo, it can be anything
(article, project, update etc)
6) last but not least I am always open to suggestions in case something
escapes my attention

If you have not done so make sure you join our Discord server following
this link

You wont be getting only news but a very active community always willing to
help you with any questions and problems you may have, real time.

All people are welcomed :)


New Pharo Discord channel

Since we got some bots attacks we use now the following discord link to get into discord:




[ann] MaterialDesignLite v2.0.0


Today I released the version v2.0.0 of MaterialDesignLite for Seaside.

This release does not brings much new features but it contains all
breaking changes that accumulated in the issue tracker. (That's why it's
a major release).

The main changes are:
- Migration to Tonel (People using Gemstone might need to stick to v1.x.x)
- Removal of all deprecated classes and methods
- I added named URLs in the demo to be able to send links of pages or
- Addition of a Pagination widget as extension of MDL

A migration guide can be found here:

This release is tagged with v2.0.0 and I also introduced tags v2.x.x and
v2.0.x which are moving tags following patch and minor versions.

Here is the full changelog of the release:

If you have issues, need a new feature or have a comment on the project
feel free to open a issue:

I also updated the demo:

Have a nice day!

Cyril Ferlicot