Pharo
For geek souls
Esteban Lorenzano

Pharo “core team” since 1.5yr
(and lots of other stuff before, but this is the cool part :)
Remember our vision
•

Clean

•

Modern

•

Innovative

•

Maintained, but not (necessarily) backward
compatible
A “small” list of changes
•

System Cleanups

•

Morphic Cleanups

•

Widgets

•

Polymorph

•

Bootstrap

•

FileSystem

•

Announcements

•

Zinc/Zodiac

•

RPackage

•

Class organization

•

Command Line

•

Spec

•

Spec based tools

•

Class-Trait polymorphism

•

Fuel

•

Debugger/Inspector

•

Nautilus

•

Spec

•

VM Infrastructure

•

NativeBoost

•

VM including default plugins
and libraries

•

Athens

•

UI Improvements

•

Keybindings

•

Metacello2 / Filetree

•

Zeroconf

•

Community available
infrastructure

•
•
•
•

Opal
Class Layouts
Slots
Code Critics

•

Manifest

•

RB/AST

•

Refactors and more refactors

•

AST Smart Suggestions

•

…
“It is just a bunch of random changes.”

It is not!
It is all about evolution

There is no such thing as “a small change”.
Is through a stack of continuous changes that you
create one that is revolutionary.
“If it ain’t broke, don’t fix it.”

Yeah… just that it does not always works!
It is all about evolution!

“Patch stacking techniques” work fine for a while, but
at the end you have a poorly designed system.
Subsystem replacement
•

Not just for the joy of change.
-

Enhance design.

-

Allow further development.
RPackage
•

First class objects
-

Replacement of PackageInfo (and System
Categories)

-

Replacement also of Class Organizer
RPackage
✓

Better handling for packages and classes

✓

We can now include metadata there

•

We can think on different/orthogonal ways of
categorization
Game changers
✓

Native Boost

✓

RB/AST

✓

Opal

•

Object Spaces
Opal
•

Fully reified

•

Semantic analysis, IR translation, Byte code
generation, each stage visiting the AST.

•

Marcus wants to use PetitParser :)
Opal
✓

Many “small optimizations”

✓

Class Layouts/Slots

•

Reflectivity (allowing “details” like real breakpoints)
New debugger
✓

Fully reified

✓

Pluggable inspectors

•

Moldable debuggers
Object spaces
•

Experiment with other object formats

•

Ability to interact with other environments
✓

Image inspection & repair

-

Remote control (maybe with Seamless)

-

Dev environment vs. app environment
Native Boost
•

Dynamic code generation (ASMJIT)

•

Many applications
✓

FFI

✓

Athens

-

Mate

-

Move plugins/external code from C to Pharo
Athens
•

Better suited for modern screens

•

CPU usage improvements

•

Replace old BitBlt based morphs
Process
✓

Installation

✓

Automatization

•

Bootstrap
User eXperience

It is not enough to be the best environment around,
we also need to look like the best environment
around.
Brave new world

We want to create a cool environment for all people
interested in participate
“Ask not what Pharo can do for you,
but what you can do for Pharo”

(because it is yours)
Imagine…
… a world in which you modify and interact
nicely (and in runtime) with the outside world.
… a world with contained sources and
changes as transaction logs.
… a world in which you can deploy other
worlds, worlds that you can create by doing:
!

Pharo new fork.
… or doing:
!

Pharo new forkAt: 192.168.1.42
Inventing the future

Smalltalks13 pharo techoverview