[Pharo-dev] Re: Serious NetNameResolver regression

2021-07-15 Thread Gabriel Cotelli
You're right Sven. The code in the image looks exactly the same betwen
Pharo 8 and 9 but the behavior is different.

On Thu, Jul 15, 2021 at 3:40 PM Sven Van Caekenberghe  wrote:

>
>
> > On 15 Jul 2021, at 16:42, Gabriel Cotelli  wrote:
> >
> > Just doing
> > NetNameResolver primStartLookupOfName:'unknown-stfx.eu
> ';primNameLookupResult
> > produces the bogus result. And both methods only call primitives in the
> SocketPlugin. So I think that no image code is responsible for the behavior
> change.
>
> I don't know, but your example is not good. You have to wait else the
> result is always 0.0.0.0
>
> Pharo 7
>
> NetNameResolver primStartLookupOfName:'unknown-stfx.eu';
> waitForCompletionUntil: 5
>
> false (signal exception)
>
> Pharo 9
>
> NetNameResolver primStartLookupOfName:'unknown-stfx.eu';
> waitForCompletionUntil: 5
>
> true (bogus 0.0.0.0 result)
>
> > On Thu, Jul 15, 2021 at 11:36 AM Sven Van Caekenberghe 
> wrote:
> > Hi,
> >
> > It seems that we have a serious NetNameResolver regression: instead of
> signalling an exception, a bogus value is returned.
> >
> > Pharo 7:
> >
> > [ NetNameResolver addressForName: 'unknown-stfx.eu' timeout: 10 ] on:
> NameLookupFailure do: [ :exception | exception ].
> >
> > "NameLookupFailure: cannot resolve 'unknown-stfx.eu'"
> >
> > Pharo 9:
> >
> > [ NetNameResolver addressForName: 'unknown-stfx.eu' timeout: 10 ] on:
> NameLookupFailure do: [ :exception | exception ].
> >
> > "0.0.0.0"
> >
> > This is bad. What is even worse is that the following kills your image
> without leaving any trace (on macOS):
> >
> > ZnClient new get: 'http://unknown-stfx.eu'.
> >
> > Because it tries to connect to 0.0.0.0
> >
> > On linux, at least there is a backtrace:
> >
> > sven@stfx-1:~/pharo$ rlwrap ./pharo reddit.image NeoConsole repl
> > NeoConsole
> Pharo-9.0.0+build.1528.sha.29269ecfac2cbf6a56dfee232b7d3355e5cb77bd (64 Bit)
> > pharo> NetNameResolver addressForName: 'unknown-stfx.eu' timeout: 10.
> >
> > 0.0.0.0
> > pharo> ZnClient new get: 'http://unknown-stfx.eu'.
> >
> > ConnectionTimedOut: Cannot connect to 0.0.0.0:80
> > [ConnectionTimedOut signal: 'Cannot connect to '
> > , (NetNameResolver
> stringFromAddress: hostAddress) , ':' , port asString] in
> Socket>>connectTo:port:waitForConnectionFor:
> > Receiver: a Socket[unconnected]
> > Arguments and temporary variables:
> > hostAddress:0.0.0.0
> > port:   80
> > timeout:30
> > Receiver's instance variables:
> > semaphore:  a Semaphore()
> > socketHandle:   #[198 113 243 96 0 0 0 0 240 65 61 2 0 0
> 0 0]
> > readSemaphore:  a Semaphore()
> > writeSemaphore: a Semaphore()
> >
> > Socket>>waitForConnectionFor:ifTimedOut:
> > Socket>>connectTo:port:waitForConnectionFor:
> > ZdcSocketStream(ZdcAbstractSocketStream)>>socketConnectTo:port:
> > ZdcSocketStream(ZdcSimpleSocketStream)>>connectTo:port:
> > ZdcSocketStream class(ZdcSimpleSocketStream
> class)>>openConnectionToHost:port:timeout:
> > ZnNetworkingUtils>>socketStreamToUrlDirectly:
> > ZnNetworkingUtils>>socketStreamToUrl:
> > ZnNetworkingUtils class>>socketStreamToUrl:
> >
> > I had a quick look at changes to Network-Kernel but had no luck yet.
> >
> > Because of this running Zinc HTTP Components tests on macOS Pharo 9 also
> kills the image (ZnClientTest>>#testIfFailNonExistingHost).
> >
> > Of course, NetNameResolverTest does not do enough.
> >
> > Sven
>


[Pharo-dev] Re: Serious NetNameResolver regression

2021-07-15 Thread Sven Van Caekenberghe



> On 15 Jul 2021, at 16:42, Gabriel Cotelli  wrote:
> 
> Just doing 
> NetNameResolver primStartLookupOfName:'unknown-stfx.eu';primNameLookupResult
> produces the bogus result. And both methods only call primitives in the 
> SocketPlugin. So I think that no image code is responsible for the behavior 
> change.

I don't know, but your example is not good. You have to wait else the result is 
always 0.0.0.0

Pharo 7

NetNameResolver primStartLookupOfName:'unknown-stfx.eu'; 
waitForCompletionUntil: 5 

false (signal exception)

Pharo 9

NetNameResolver primStartLookupOfName:'unknown-stfx.eu'; 
waitForCompletionUntil: 5

true (bogus 0.0.0.0 result)

> On Thu, Jul 15, 2021 at 11:36 AM Sven Van Caekenberghe  wrote:
> Hi,
> 
> It seems that we have a serious NetNameResolver regression: instead of 
> signalling an exception, a bogus value is returned.
> 
> Pharo 7:
> 
> [ NetNameResolver addressForName: 'unknown-stfx.eu' timeout: 10 ] on: 
> NameLookupFailure do: [ :exception | exception ]. 
> 
> "NameLookupFailure: cannot resolve 'unknown-stfx.eu'"
> 
> Pharo 9:
> 
> [ NetNameResolver addressForName: 'unknown-stfx.eu' timeout: 10 ] on: 
> NameLookupFailure do: [ :exception | exception ]. 
> 
> "0.0.0.0"
> 
> This is bad. What is even worse is that the following kills your image 
> without leaving any trace (on macOS):
> 
> ZnClient new get: 'http://unknown-stfx.eu'.
> 
> Because it tries to connect to 0.0.0.0
> 
> On linux, at least there is a backtrace:
> 
> sven@stfx-1:~/pharo$ rlwrap ./pharo reddit.image NeoConsole repl
> NeoConsole 
> Pharo-9.0.0+build.1528.sha.29269ecfac2cbf6a56dfee232b7d3355e5cb77bd (64 Bit)
> pharo> NetNameResolver addressForName: 'unknown-stfx.eu' timeout: 10.
> 
> 0.0.0.0
> pharo> ZnClient new get: 'http://unknown-stfx.eu'.
> 
> ConnectionTimedOut: Cannot connect to 0.0.0.0:80
> [ConnectionTimedOut signal: 'Cannot connect to '
> , (NetNameResolver stringFromAddress: 
> hostAddress) , ':' , port asString] in 
> Socket>>connectTo:port:waitForConnectionFor:
> Receiver: a Socket[unconnected]
> Arguments and temporary variables: 
> hostAddress:0.0.0.0
> port:   80
> timeout:30
> Receiver's instance variables: 
> semaphore:  a Semaphore()
> socketHandle:   #[198 113 243 96 0 0 0 0 240 65 61 2 0 0 0 0]
> readSemaphore:  a Semaphore()
> writeSemaphore: a Semaphore()
> 
> Socket>>waitForConnectionFor:ifTimedOut:
> Socket>>connectTo:port:waitForConnectionFor:
> ZdcSocketStream(ZdcAbstractSocketStream)>>socketConnectTo:port:
> ZdcSocketStream(ZdcSimpleSocketStream)>>connectTo:port:
> ZdcSocketStream class(ZdcSimpleSocketStream 
> class)>>openConnectionToHost:port:timeout:
> ZnNetworkingUtils>>socketStreamToUrlDirectly:
> ZnNetworkingUtils>>socketStreamToUrl:
> ZnNetworkingUtils class>>socketStreamToUrl:
> 
> I had a quick look at changes to Network-Kernel but had no luck yet. 
> 
> Because of this running Zinc HTTP Components tests on macOS Pharo 9 also 
> kills the image (ZnClientTest>>#testIfFailNonExistingHost).
> 
> Of course, NetNameResolverTest does not do enough.
> 
> Sven


[Pharo-dev] This week (28/2021) on the Pharo Issue Tracker

2021-07-15 Thread Marcus Denker
We merged 15 Pull Requests this week and closed 14 issue tracker entries.

And we released Phaoro9! https://pharo.org/news/pharo9-released


- Harvest latest changes from STON #9579
https://github.com/pharo-project/pharo/pull/9579

- fix getting help page #9585
https://github.com/pharo-project/pharo/pull/9585

- 9567-Traits-Super-sends-in-blocks-lead-to-VM-crash #9568
https://github.com/pharo-project/pharo/pull/9568

- Enable display empty slots by default #9581
https://github.com/pharo-project/pharo/pull/9581

- 9495-Color-selection-dialog-broken #9575
https://github.com/pharo-project/pharo/pull/9575

- 9571-Using-Clipboard-Tools-does-not-work-aka-Virtual-Paste #9572
https://github.com/pharo-project/pharo/pull/9572

- Fix #9577: Typing in the help browser DNU #9578
https://github.com/pharo-project/pharo/pull/9578

- 9555-Disable-deprecate-menuItem #9569
https://github.com/pharo-project/pharo/pull/9569

- Fixed the Undo and Redo in the RubTextEditor #9544
https://github.com/pharo-project/pharo/pull/9544

- Improve the workaround to not show the undeclared fix menu when in c… #9563
https://github.com/pharo-project/pharo/pull/9563

Cleanups


- deprecate glamour and gt tools #9589
https://github.com/pharo-project/pharo/pull/9589

- fixing versions of Spec and NewTools #9584
https://github.com/pharo-project/pharo/pull/9584

- Updating Iceberg version to a relesed one #9583
https://github.com/pharo-project/pharo/pull/9583

- updating-changelog-to-p9 #9559
https://github.com/pharo-project/pharo/pull/9559


Pharo10
===

- Fixes: #9552 and #9553 #9554
https://github.com/pharo-project/pharo/pull/9554


[Pharo-dev] Re: Serious NetNameResolver regression

2021-07-15 Thread Gabriel Cotelli
Just doing
NetNameResolver primStartLookupOfName:'unknown-stfx.eu';primNameLookupResult
produces the bogus result. And both methods only call primitives in the
SocketPlugin. So I think that no image code is responsible for the behavior
change.

On Thu, Jul 15, 2021 at 11:36 AM Sven Van Caekenberghe  wrote:

> Hi,
>
> It seems that we have a serious NetNameResolver regression: instead of
> signalling an exception, a bogus value is returned.
>
> Pharo 7:
>
> [ NetNameResolver addressForName: 'unknown-stfx.eu' timeout: 10 ] on:
> NameLookupFailure do: [ :exception | exception ].
>
> "NameLookupFailure: cannot resolve 'unknown-stfx.eu'"
>
> Pharo 9:
>
> [ NetNameResolver addressForName: 'unknown-stfx.eu' timeout: 10 ] on:
> NameLookupFailure do: [ :exception | exception ].
>
> "0.0.0.0"
>
> This is bad. What is even worse is that the following kills your image
> without leaving any trace (on macOS):
>
> ZnClient new get: 'http://unknown-stfx.eu'.
>
> Because it tries to connect to 0.0.0.0
>
> On linux, at least there is a backtrace:
>
> sven@stfx-1:~/pharo$ rlwrap ./pharo reddit.image NeoConsole repl
> NeoConsole
> Pharo-9.0.0+build.1528.sha.29269ecfac2cbf6a56dfee232b7d3355e5cb77bd (64 Bit)
> pharo> NetNameResolver addressForName: 'unknown-stfx.eu' timeout: 10.
>
> 0.0.0.0
> pharo> ZnClient new get: 'http://unknown-stfx.eu'.
>
> ConnectionTimedOut: Cannot connect to 0.0.0.0:80
> [ConnectionTimedOut signal: 'Cannot connect to '
> , (NetNameResolver
> stringFromAddress: hostAddress) , ':' , port asString] in
> Socket>>connectTo:port:waitForConnectionFor:
> Receiver: a Socket[unconnected]
> Arguments and temporary variables:
> hostAddress:0.0.0.0
> port:   80
> timeout:30
> Receiver's instance variables:
> semaphore:  a Semaphore()
> socketHandle:   #[198 113 243 96 0 0 0 0 240 65 61 2 0 0 0
> 0]
> readSemaphore:  a Semaphore()
> writeSemaphore: a Semaphore()
>
> Socket>>waitForConnectionFor:ifTimedOut:
> Socket>>connectTo:port:waitForConnectionFor:
> ZdcSocketStream(ZdcAbstractSocketStream)>>socketConnectTo:port:
> ZdcSocketStream(ZdcSimpleSocketStream)>>connectTo:port:
> ZdcSocketStream class(ZdcSimpleSocketStream
> class)>>openConnectionToHost:port:timeout:
> ZnNetworkingUtils>>socketStreamToUrlDirectly:
> ZnNetworkingUtils>>socketStreamToUrl:
> ZnNetworkingUtils class>>socketStreamToUrl:
>
> I had a quick look at changes to Network-Kernel but had no luck yet.
>
> Because of this running Zinc HTTP Components tests on macOS Pharo 9 also
> kills the image (ZnClientTest>>#testIfFailNonExistingHost).
>
> Of course, NetNameResolverTest does not do enough.
>
> Sven
>


[Pharo-dev] Re: [ANN] Pharo 9 released!

2021-07-15 Thread Noury Bouraqadi
Yey! Big thank you to the core team and all the community!

Noury
On Jul 15 2021, at 11:14 am, Esteban Lorenzano  wrote:
> Dear World and dynamic language lovers:
>
> The time has come for Pharo 9 (https://pharo.org/) !
> Pharo is a pure object-oriented programming language and a powerful 
> environment, focused on simplicity and immediate feedback.
>
> Here are the key features of Pharo 9:
> Full redesign of the Spec UI framework (new logic, application, style, GTK3 
> back-end)
> New tools:
>
> new playground,
>
> new object centric inspector,
>
> new object centric debugger.
>
> better and new Refactorings
>
> class comments are now written in Microdown format (Markdown compatible)
>
> classes now can be defined using a "fluid" api (Preview)
>
>
>
> New completion framework that adapts better to edition contexts and is 
> customizable
>
> Fast universal non-blocking FFI which now uses libFFI as backend.
>
> Pharo now supports Windows, OSX, Linux (Ubuntu, Debian, Fedora, openSUSE, 
> Arch, Raspbian) and multiple architectures (Intel/ARM 32/64bits).
>
> Virtual Machine
>
> Idle VM
>
> Support for ARM 64bits
>
> Support for Apple M1
>
> More than 3000 tests
>
> Built for Ubuntu 18.04, 19.04, 20.04, 21.04, 21.10; Debian 9, 10, Testing; 
> Fedora 32, 32, 34; openSUSE 15.1, 15.2, Tumbleweed; Manjaro; Arch
>
>
>
> Uses SDL 2.0 as back-end by default. It supports extended event handling, 
> including trackpad support.
>
> General speed up due to compiler optimisations and UI simplification.
>
> And many, many more tests.
>
>
>
> These are just the more prominent highlights, but the details are just as 
> important. We have closed a massive amount of issues: around 1400 issues and 
> 2150 pull requests.
> A more extended changelog can be found at 
> https://github.com/pharo-project/pharo-changelogs/blob/master/Pharo90ChangeLogs.md.
> While the technical improvements are significant, still the most impressive 
> fact is that the new code that got in the main Pharo 9 image was contributed 
> by more than 90 people.
> Pharo is more than code. It is an exciting project involving a great 
> community.
> We thank all the contributors to this release:
> Aaron Bieber, Ackerley Tng, Alban Benmouffek, Ale Cossio, Alexandre Bergel, 
> Alistair Grant, Allex Oliveira, Angela Chia-Ling, Arturo Zambrano, Asbathou 
> Biyalou-Sama, Ben Coman, Benoit Verhaegue, Carlo Teixeira, Carlos Lopez, 
> Carolina Hernandez, Charles A. Monteiro, Christoph Thiede, Christophe 
> Demarey, Clotilde Toullec, Cyril Ferlicot, Damien Pollet, Daniel Aparicio, 
> David Bajger, David Sánchez i Gregori, Denis Kudriashov, Ellis Harris, Eric 
> Brandwein, Eric Gade, Erik Stel, ErikOnBike, Esteban Lorenzano, Esteban 
> Villalobos, Evelyn Cusi Lopez, Evelyn Cusi Lopez, Ewan Dawson, Francis 
> Pineda, Francis Pineda, Gabriel Omar Cotelli, Geraldine Galindo, Giovanni 
> Corriga, Guille Polito, Himanshu jld, Johan Brichau, Jonathan van Alteren, 
> Jordan Montt, Julien Delplanque, Kamil Kukura, Kasper Østerbye, Kurt Kilpela, 
> Laurine Dargaud, Marco Rimoldi, Marcus Denker, Martin Dias, Martin McClure, 
> Massimo Nocentini, Max Leske, Maximilian Ignacio Willembrinck Santander, 
> Milton Mamani Torres, Moussa Saker, Myroslava Romaniuk, Nicolas Anquetil, 
> Norbert Hartl, Nour Djihan, Oleksandr Zaitsev, Pablo Sánchez Rodríguez, Pablo 
> Tesone, Pavel Krivanek, Philippe Lesueur, Pierre Misse, Rakshit P., Rob 
> Sayers, Roland Bernard, Ronie Salgado, Sean DeNigris, Sebastian Jordan 
> Montaño, Serge Stinckwich, Stephan Eggermont, Steven Costiou, Stéphane 
> Ducasse, Sven Van Caekenberghe, Thomas Dupriez, Théo Lanord, Théo Rogliano, 
> Todd Blanchard, Torsten Bergmann, Vincent Blondeau, Wéslleymberg Lisboa.
>
>
> (If you contributed with Pharo 9 development in any way and we missed your 
> name, please send us an email and we will add you).
> Enjoy!
> The Pharo Team
> Try Pharo: http://pharo.org/download (https://pharo.org/download)
> Learn Pharo: http://pharo.org/documentation (https://pharo.org/documentation)

[Pharo-dev] Serious NetNameResolver regression

2021-07-15 Thread Sven Van Caekenberghe
Hi,

It seems that we have a serious NetNameResolver regression: instead of 
signalling an exception, a bogus value is returned.

Pharo 7:

[ NetNameResolver addressForName: 'unknown-stfx.eu' timeout: 10 ] on: 
NameLookupFailure do: [ :exception | exception ]. 

"NameLookupFailure: cannot resolve 'unknown-stfx.eu'"

Pharo 9:

[ NetNameResolver addressForName: 'unknown-stfx.eu' timeout: 10 ] on: 
NameLookupFailure do: [ :exception | exception ]. 

"0.0.0.0"

This is bad. What is even worse is that the following kills your image without 
leaving any trace (on macOS):

ZnClient new get: 'http://unknown-stfx.eu'.

Because it tries to connect to 0.0.0.0

On linux, at least there is a backtrace:

sven@stfx-1:~/pharo$ rlwrap ./pharo reddit.image NeoConsole repl
NeoConsole Pharo-9.0.0+build.1528.sha.29269ecfac2cbf6a56dfee232b7d3355e5cb77bd 
(64 Bit)
pharo> NetNameResolver addressForName: 'unknown-stfx.eu' timeout: 10.

0.0.0.0
pharo> ZnClient new get: 'http://unknown-stfx.eu'.

ConnectionTimedOut: Cannot connect to 0.0.0.0:80
[ConnectionTimedOut signal: 'Cannot connect to '
, (NetNameResolver stringFromAddress: 
hostAddress) , ':' , port asString] in 
Socket>>connectTo:port:waitForConnectionFor:
Receiver: a Socket[unconnected]
Arguments and temporary variables: 
hostAddress:0.0.0.0
port:   80
timeout:30
Receiver's instance variables: 
semaphore:  a Semaphore()
socketHandle:   #[198 113 243 96 0 0 0 0 240 65 61 2 0 0 0 0]
readSemaphore:  a Semaphore()
writeSemaphore: a Semaphore()

Socket>>waitForConnectionFor:ifTimedOut:
Socket>>connectTo:port:waitForConnectionFor:
ZdcSocketStream(ZdcAbstractSocketStream)>>socketConnectTo:port:
ZdcSocketStream(ZdcSimpleSocketStream)>>connectTo:port:
ZdcSocketStream class(ZdcSimpleSocketStream 
class)>>openConnectionToHost:port:timeout:
ZnNetworkingUtils>>socketStreamToUrlDirectly:
ZnNetworkingUtils>>socketStreamToUrl:
ZnNetworkingUtils class>>socketStreamToUrl:

I had a quick look at changes to Network-Kernel but had no luck yet. 

Because of this running Zinc HTTP Components tests on macOS Pharo 9 also kills 
the image (ZnClientTest>>#testIfFailNonExistingHost).

Of course, NetNameResolverTest does not do enough.

Sven


[Pharo-dev] [ANN] Pharo 9 released!

2021-07-15 Thread Esteban Lorenzano
Dear World and dynamic language lovers:

The time has come for Pharo 9 (https://pharo.org/) !
Pharo is a pure object-oriented programming language and a powerful 
environment, focused on simplicity and immediate feedback.

Here are the key features of Pharo 9:
Full redesign of the Spec UI framework (new logic, application, style, GTK3 
back-end)
New tools:

new playground,

new object centric inspector,

new object centric debugger.

better and new Refactorings

class comments are now written in Microdown format (Markdown compatible)

classes now can be defined using a "fluid" api (Preview)

New completion framework that adapts better to edition contexts and is 
customizable

Fast universal non-blocking FFI which now uses libFFI as backend.

Pharo now supports Windows, OSX, Linux (Ubuntu, Debian, Fedora, openSUSE, Arch, 
Raspbian) and multiple architectures (Intel/ARM 32/64bits).

Virtual Machine

Idle VM

Support for ARM 64bits

Support for Apple M1

More than 3000 tests

Built for Ubuntu 18.04, 19.04, 20.04, 21.04, 21.10; Debian 9, 10, Testing; 
Fedora 32, 32, 34; openSUSE 15.1, 15.2, Tumbleweed; Manjaro; Arch

Uses SDL 2.0 as back-end by default. It supports extended event handling, 
including trackpad support.

General speed up due to compiler optimisations and UI simplification.

And many, many more tests.

These are just the more prominent highlights, but the details are just as 
important. We have closed a massive amount of issues: around 1400 issues and 
2150 pull requests.
A more extended changelog can be found at 
https://github.com/pharo-project/pharo-changelogs/blob/master/Pharo90ChangeLogs.md.
While the technical improvements are significant, still the most impressive 
fact is that the new code that got in the main Pharo 9 image was contributed by 
more than 90 people.
Pharo is more than code. It is an exciting project involving a great community.
We thank all the contributors to this release:
Aaron Bieber, Ackerley Tng, Alban Benmouffek, Ale Cossio, Alexandre Bergel, 
Alistair Grant, Allex Oliveira, Angela Chia-Ling, Arturo Zambrano, Asbathou 
Biyalou-Sama, Ben Coman, Benoit Verhaegue, Carlo Teixeira, Carlos Lopez, 
Carolina Hernandez, Charles A. Monteiro, Christoph Thiede, Christophe Demarey, 
Clotilde Toullec, Cyril Ferlicot, Damien Pollet, Daniel Aparicio, David Bajger, 
David Sánchez i Gregori, Denis Kudriashov, Ellis Harris, Eric Brandwein, Eric 
Gade, Erik Stel, ErikOnBike, Esteban Lorenzano, Esteban Villalobos, Evelyn Cusi 
Lopez, Evelyn Cusi Lopez, Ewan Dawson, Francis Pineda, Francis Pineda, Gabriel 
Omar Cotelli, Geraldine Galindo, Giovanni Corriga, Guille Polito, Himanshu jld, 
Johan Brichau, Jonathan van Alteren, Jordan Montt, Julien Delplanque, Kamil 
Kukura, Kasper Østerbye, Kurt Kilpela, Laurine Dargaud, Marco Rimoldi, Marcus 
Denker, Martin Dias, Martin McClure, Massimo Nocentini, Max Leske, Maximilian 
Ignacio Willembrinck Santander, Milton Mamani Torres, Moussa Saker, Myroslava 
Romaniuk, Nicolas Anquetil, Norbert Hartl, Nour Djihan, Oleksandr Zaitsev, 
Pablo Sánchez Rodríguez, Pablo Tesone, Pavel Krivanek, Philippe Lesueur, Pierre 
Misse, Rakshit P., Rob Sayers, Roland Bernard, Ronie Salgado, Sean DeNigris, 
Sebastian Jordan Montaño, Serge Stinckwich, Stephan Eggermont, Steven Costiou, 
Stéphane Ducasse, Sven Van Caekenberghe, Thomas Dupriez, Théo Lanord, Théo 
Rogliano, Todd Blanchard, Torsten Bergmann, Vincent Blondeau, Wéslleymberg 
Lisboa.

(If you contributed with Pharo 9 development in any way and we missed your 
name, please send us an email and we will add you).
Enjoy!
The Pharo Team
Try Pharo: http://pharo.org/download (https://pharo.org/download)
Learn Pharo: http://pharo.org/documentation (https://pharo.org/documentation)