Screenshot of the Pharo IDE
|Original author(s)||Pharo Board |
|Stable release||4.0 / April 16, 2015|
|Operating system||Windows, Linux, Mac OS X, others|
|Type||Object-oriented programming language, IDE|
|License||MIT license, partially Apache License 2.0|
Pharo is an open source implementation of the programming language and environment Smalltalk. Pharo offers strong live programming features such as immediate object manipulation, live update, hot recompilation. Live programming environment is in the heart of the system. Pharo also supports advanced web development with frameworks such as Seaside and more recently Tide.
Pharo has a policy that enforces contributors to agree to publishing their code under the MIT License.
As a Smalltalk environment, Pharo has the main Smalltalk characteristics :
- Everything is an object, in the sense of object oriented programming
- Pharo is reflexive: a program can modify its internal properties and behaviors at runtime
- Pharo is dynamically typed, in contrast to statically typed languages
- Inheritance is simple
- Memory management is automatic: as is the case with most modern languages, Pharo uses a garbage collector
One of the main advantages of Pharo, as of any Smalltalk implementation, is that it is not mandatory to compile the whole code in the event of a method modification. For example, it is possible to edit or create a new method inside the debugger without restarting the process. Some people call this the 'Edit and continue' approach, opposed to the 'edit, compile and run' approach.
People may think that the name Pharo is a reference to the famous Pharos lighthouse in ancient Alexandria. Pharos is a Greek word (Φάρος) which means lighthouse. The Pharo logo shows a drawing of a lighthouse inside the final letter O of the name.
Pharo emerged as a fork of Squeak, an open source Smalltalk environment created by the Smalltalk-80 team (Dan Ingalls and Alan Kay). It focuses on modern software engineering and development techniques. Pharo wants to develop a modern Smalltalk for companies and software engineering research. Pharo also serves as the reference platform of Seaside, a web application framework for developing web applications in Smalltalk. Today, Pharo is supported by the Pharo consortium (for companies) and the Pharo association (for users).
- Fork in 2008.
- Pharo 1.0 was released April 15, 2010.
- Pharo 1.1 was released July 26, 2010.
- Pharo 1.2 was released March 29, 2011.
- Pharo 1.3 was released in August 2011.
- Pharo 1.4 was released in April 2012.
- Pharo 2.0 was released March 18, 2013.
- Pharo 3.0 was released in April 2014.
- Pharo 4.0 was released in April 2015.
With a MIT license and an active community, Pharo is a nice IDE to learn the Smalltalk programming language.
To newcomers, the best way to discover Pharo is to download the one-click version.
Use of Pharo
Companies and Consultants
Today, more and more companies use Pharo for their development projects. In particular, they use:
- Seaside for dynamic web development 
- Zinc for server architectures 
- Moose to analyse data and software from all programming languages
- Graphic libraries for evolved user interfaces
- Roassal to visualize data
Most companies presently using Pharo are small or medium-sized companies. The Pharo project is supported by big companies such as Inria or VMWare.
The Pharo consortium  was recently created for companies wishing to support the Pharo project.
Teaching and Research
Pharo is becoming more and more used for teaching. Pharo is used in the following Universities:
- Uni. of Buenos Aires
- Uni. of Bern
- Uni. of Brussels
- Uni. de Bretagne Occidentale
- Ecole des Mines de Douai
- Uni. de Savoie
- Ivan Franko Nat. Uni. of Lviv
- Czech Technical Uni.
- CULS Prague
- Uni. de Maroua, Cameron
- Northern Michigan Uni.
- Uni. Catholic of Argentina
- Uni. of Santiago
- Uni. Policnica de Catalunya
- Uni. of Saarland
- Uni. of Quilmes
- Uni. of La Plata
- Uni. Technologica Nacional
- Uni. Nacional de San Martin
- Uni. of Tomsk
- Uni. of Chile
Several research teams use Pharo, for example in Lille (France) and Bern (Switzerland).
- LAFHIS, AR
- SCG, CH
- CEA-List, FR
- CAR-EMD, FR
- RMOD-Inria, FR
- UMMISCO-IRD, FR
- Reveal, CH
- LYSIC, FR
- IGEVET, AR
- Pleiad, CL
- Uqbar, AR
The Pharo association was recently created for users wishing to support the project.
Performance and Virtual Machine
Pharo relies on a virtual machine that is written almost entirely in Smalltalk itself. Beginning in 2008, a new virtual machine (Cog) has been developed that has a level of performance close to the fastest Smalltalk virtual machine. In 2014/2015 the community is working on Spur, a new Memory Manager for this Cog VM that should again increase performance and provide better 64-bit VM support.
- The Pharo board
- Pharo license information
- "Pharo Open Source Smalltalk — Release 1.4". Pharo-project.org. April 17, 2012. Retrieved April 5, 2013.
- "Pharo Open Source Smalltalk — Release 2.0". Pharo-project.org. March 18, 2013. Retrieved April 5, 2013.
- "Pharo Open Source Smalltalk — Release 3.0". pharo.org. April 30, 2014.
- "Pharo Open Source Smalltalk — Release 4.0". pharo.org. April 15, 2015.
- "Pharo by Example". Pharo by Example. Retrieved April 5, 2013.
- "Deep into Pharo". Deep into Pharo. Retrieved September 1, 2013.
- "Pharo Open Source Smalltalk — Success stories". Pharo-project.org. Retrieved April 5, 2013.
- "Home". seaside.st. March 18, 2007. Retrieved April 5, 2013.
- "Zinc HTTP Components". Zn.stfx.eu. Retrieved April 5, 2013.
- Girba, Tudor. "Home". Moose technology. Retrieved April 5, 2013.
- "web: Pharo Consortium". Consortium.pharo.org. March 31, 2013. Retrieved April 5, 2013.
- Ducasse, Stephane. "association: Pharo Association". Association.pharo.org. Retrieved April 5, 2013.
- "Cog Blog". Mirandabanda.org. Retrieved April 5, 2013.
- "7-point summary of the Spur memory manager". Clément Béra. Retrieved April 17, 2015.
- Pharo Homepage
- Pharo File Server
- Pharo on SmalltalkHub
- Pharo on GitHub
- educational books, presentation slides and screencasts