Pharo
Pharo is an open source dynamic and reflective language which is inspired by the programming language Smalltalk. Pharo offers several live programming features such as immediate object manipulation, live update and hot recompiling.
Introduction
Pharo is a pure object-oriented dynamically typed and reflective language. The stated goal of Pharo is to revisit Smalltalk design and enhance it.The name Pharo comes from the French word "phare" which means lighthouse. This is why the Pharo logo shows a drawing of a lighthouse inside the final letter O of the name.
Key features
- Optional fusion of developed program and development environment
- A pure object-oriented approach
- Simple syntax
- Immediate object identity swapping
- Resumable exceptions
- Live object inspection
- Dynamic inheritance
- Multiplatform virtual machine with JIT, combined generational garbage collector, ephemerons, forwarders
- Easy call stack manipulation
- Fast object enumeration
- Objects as methods
- Optional Green threads
- AST metalinks
- Customizable metaclasses
- Relatively low memory consumption
- Customizable compiler
- Optional complete object memory persistence
- Fast object serialization
- Easy use of proxy objects
Relation to Smalltalk
Language syntax
The Pharo syntax is based on Smalltalk-80 language syntax with several extensions. Some of these are common among modern Smalltalk dialects.- literals for dynamic arrays. The expressions that specify the array content are evaluated in time of the program execution
- literals for byte arrays that can be composed only of integer numbers in the range from 0 to 255
- literals for scaled decimals, a representation of fixed point decimal numbers able to accurately represent decimal fractions
- pragmas. In Smalltalk-80 the pragmas are used only for primitive methods. In Pharo they are fully capable method annotations
- two double quotes inside a comment are interpreted as a single double quotes character that is part of the content of the comment
The language grammar does not specify directly how the code should be stored in files. Pharo uses as the preferred code serialization format.
History
Pharo emerged as a fork of Squeak, an open-source Smalltalk environment created by the Smalltalk-80 team. Pharo was created by S. Ducasse and M. Denker in March 2008. It focuses on modern software engineering and development techniques. Pharo is supported by the Pharo consortium and the Pharo association for physical persons .Version | Release date | Major features |
March 16, 2008 | Fork of Squeak environment | |
Pharo 1.0 | April 15, 2010 | real closures, EToys and MVC removed |
Pharo 1.1 | July 26, 2010 | Cog JIT VM, Settings framework |
Pharo 1.2 | March 29, 2011 | new Finder, Recent changes tool, improved Help, better themes |
Pharo 1.3 | August 2011 | Zinc, headless images |
Pharo 1.4 | April 2012 | Ring metamodel, better code simulator |
Pharo 2.0 | March 18, 2013. | browser improvements, QA tools, Fuel serializer, better files API |
Pharo 3.0 | April 2014. | new modular compiler and debugger, continuations |
Pharo 4.0 | April 2015. | GTools, slots |
Pharo 5.0 | May 2016. | Spur VM, UFFI, improved reflectivity |
Pharo 6.0 | 6 June, 2017. | 64-bit and Git support |
Pharo 6.1 | 24 July, 2017. | improved Git support |
Pharo 7.0 | 22 January, 2019. | bootstrapping, new code browser, stateful traits |
20 January, 2020. | improved support of Git, testing, refactoring and Windows |
Use of Pharo
Companies and consultants
Some 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