First link fails.
2013/3/18 stephane ducasse <[email protected]>:
> For those of you that want to know a bit more:
> http://code.google.com/p/pharo/w/edit/ActionsInPharo20
>
>
> Here is a log of all the actions done in 2.0. The idea is not to replicate
> the bug tracker, as it is easy to get a complete list
> [http://code.google.com/p/pharo/issues/list?can=1&q=milestone%3D2.0 here].
> Instead, the idea is to have a list of the major improvements with some
> explanations.
>
> ==UI==
> We started a long term effort on the Pharo UI.
>
> * *Spec: a new way to build UI.* We started to rethink the way we build
> user interfaces in Pharo. Spec has been developed by Benjamin van Ryseghem
> under the guidance of Stéphane Ducasse. Spec is based on a declarative syntax
> to specify user interfaces and on valueHolder port composition. Spec supports
> widgets definition, reuse and composition. New widgets can be created by
> composing existing widgets. Many existing tools have been reimplemented using
> Spec. We wrote a tutorial for Spec. Spec will be used for the UIPainter that
> we will develop for Pharo 3.0. In Pharo 3.0 we will revisit and improve
> Spec. One of the idea is that Spec should be independent of Morphic so that
> we can use it to build native tools or with Amber.
>
> * *Widget enhancements.* Several important widgets were greatly enhanced.
> This effort was led by Benjamin van Ryseghem. For example, multiple selection
> and single selection lists were unified. A new widget list has been developed
> from scratch and it exhibits massive speed improvements.
>
> * *Layout improvements/cleanups.* We improved the protocol used for
> creating LayoutFrame. We cleaned its implementation and simplify clients
> code. Now instance of layoutFrame are systematically well initialized.
> Clients do not need to check against nil values and a new protocol avoids to
> be forced to specify rectangle when only one number is required.
>
> * *Keybindings.* Keybindings is a new library developed by Guillermo
> Polito to manage key bindings. We started to use it to define widgets
> keybinding as well as menu shortcut. In Pharo 3.0 we will systematically
> rewrite all the hard-coded bindings with it and write a documentation. It
> supports:
> * source code navigation
> * running tests
> * basic refactoring
> * creating classes
> * and many more shortcuts: see "Shortcuts Description" in the window menu
> (triangle on the top right) in Nautilus
>
> * *New icons (famfam).* Pharo now uses new icons. We are looking for
> designers that could help us to define the UI look of the future Pharo
> versions.
>
> * *"Growl" style notifications.* To avoid to get UI blocked by simple
> notifications, Pharo now uses a growl like notification systems.
>
> * *Revamp progress bar.* We started to rewrite the progress bar framework.
> We introduced the Job class and notification to specify progress bar.
>
> * *Rectangle intersection improvements.* Rectangle intersection is a
> central part for UI redrawing and invalidating screen regions. Rectangle
> intersection is then an important functionality. We started to address the
> problem of the non-specification of the intersection of non overlapping
> rectangles. We introduced the intersect:ifNone protocol. As a side effect
> this improves the damage recording mechanisms and provide a faster system.
>
> ==Developer tools==
>
> * *Nautilus browser.* Nautilus, a new code browser has been developed by
> B. van Ryseghem. It supports: in place hierarchy, groups, refactorings,
> multiple views, icon navigation and many other features. Nautilus has a
> plugin infrastructure so everybody can use existing plugin or write new ones.
> Nautilus is fully navigable using shortcut. In Pharo 3.0 we plan to rewrite
> Nautilus using Spec.
>
> * *Critics browser.* From Pharo 2.0 on we want to systematically run rule
> checking rules. We revisited the SmallLint rules to customize them to Pharo
> and we better documented them. We developed a new browser that will helps you
> to apply SmallLint rules. In particular it supports the notion of todos. We
> can mark an issue as a false positive or as todos and get the bar green. We
> wrote a complete chapter on the Critics Browser. We will start to work on an
> infrastructure to systematically evaluate SmallLint rules on the projects
> published in the Pharo distribution.
>
> * *Omnipresence of the Refactoring Engine.* We believe that Pharo itself
> should use the best tools it has to change itself. This is why we decided to
> introduce the Refactoring Engine and SmallLint rule checkers. Note that this
> move to integrate extra tool is not against our vision to produce a minimal
> core. Once we have fast fuel based package loading we will be able to remove
> Metacello from the core.
>
> * *Improved version diff browsing.* We improved the diff and merging tool.
>
> * *Spotlight.* Spotlight is a ubiquitous tool to find classes and methods.
> You can activate it just press shift+enter.
>
> * *Revamp E/O Completion and smart chars.* In the past, smart characters
> (automatically closing parenthesis, single quote...) did not play well with
> auto completeion. In addition, they were duplicated functionality between two
> automatic ecompletion algorithms. In Pharo 2.0 we unified the two algorithms
> under a single umbrella and integrate them smoothly with smart-characters.
>
> * *Interactive navigation using "ctrl/cmd+click" over classes/methods.* Now
> Pharo supports the interactive navigation of source code using cmd/ctrl-click
> on selectors and class names in the source-code [implementors, senders,
> users].
>
> * *Shout themes.* Several syntax highlighting themes have been defined.
>
> * *Andreas profiler.* As a tribute to Andreas Raab, we included an
> alternate profiler developed by Andreas.
>
> ==Networking==
>
> * *New version of Zinc.* Zinc is developed by Sven Van Caekenberghe. New
> versions of Zinc the http client/server library has been integrated.
>
> * *Zodiac (SSL).* Zodiac is an extension of Zinc to support SSL connections.
>
> ==System==
>
> * *System Announcer.* Pharo had a change notification system. A change
> notification system is important because tools can register to events to
> update or react without getting coupled with the system. The problem was that
> the previous change notification broadcasted only symbols and not plain
> objects. It was limiting the power that we can get about first class objects.
> In addition not all the events were raised and competing with Announcements
> (announcements raised plain objects). In Pharo 2.0, we redefined system
> events as Announcements, introduced a System Announcer whose responsibility
> is to raise announcement for all the events and removed the old
> SystemChangeNotifier. This sets up the basis for the future communication
> between tools.
>
> * *RPackage replacing PackageInfo.* PackageInfo is a way to identify if a
> method belongs to a package. The implementation is based on dynamic queries.
> Such queries it leads to problems to produce new generation browser and
> tools. We defined a new implementation of the package management of Pharo.
> The idea is to represent package as real objects. In Pharo3.0 we will
> continue to remove the dependency to PackageInfo.
>
> * *Manifest: Package metadata.* We introduce the notion of package
> metadata. Package metadata are used to manage all false positives or todos
> of SmallLint so that you do not have to check all the time rule results. Each
> package can now have a class named ManifestNameOfXPackageNameX. It will be
> the place to add documentation and other information.
>
> * *Command line tools / Headless mode.* We really want to make sure that
> Pharo can be used in non interactive mode and that we can pass scripts to it
> on the command-line. For this reason we continued to work on making sure that
> Pharo can be used headless. In particular we introduced a new way to handle
> command line parameters. See `pharoVM my.image --help` and `pharoVM my.image
> --list`
> * st Handle .st source files
> * Fuel Handle fuel files
> * config Install and inspect Metacello Configurations from the command
> line
> * save Rename the image and changes file
> * test Run tests from command line
> * update Load updates
> * printVersion Print image version
> * eval Evaluate directly passed-in one line script
>
> * *Native boost.* NativeBoost is a library that generates assembly code
> on the fly. It is used to generate FFI calls. By default
> [http://www.esug.org/wiki/pier/Conferences/2011/Schedule-And-Talks/Native-boost
> NativeBoost] is included mostly for future use. In Pharo3.0 vector graphics
> will be used and Nativeboost will be used to invoke the graphics primitives.
>
> * *Ring metamodel.* Ring is a new meta model introduced in Pharo 1.4. It is
> used to represent code that is not currently executed. Ring has an API that
> is polymorphic with a subpart of the core executing entities of Pharo (Class
> and CompiledMethod). This has the nice property that the tools that
> manipulate such entities can also manipulate ring objects. Hence Ring
> supports of image browsing. In Pharo 3.0 we will rewrite certain tools to use
> ring and deprecate some abstractions like pseudo-classes and file packages.
>
>
> * *Fuel.* Fuel is one of the fastest and versatile object serializer. In
> Pharo 2.0, we decided to use fuel as a default serializer. In particular, on
> error the execution stack is saved now in fuel format. Therefore it is
> possible to reopen a debugger on a similar image for debugging purpose.
>
> * *Freetype fonts.* We offer now a better handling of freetype fonts and
> their management.
>
> * *Metacello: a universal package map.* Metacello is a framework to
> describe is included in the default image. In the future Pharo will be
> managed by Metacello. The idea also is that once we have fast fuel based
> package loading we will be able to remove Metacello from the core.
>
>
> ==Kernel==
>
> * *New object-oriented and powerful filesystem.* The old library to
> support file was dated and cumbersome to use. This version of Pharo uses
> FileSystem a new framework developed by Colin Putney. We revisited and
> integrated deeply into Pharo core. A full chapter is available in the new
> book http://rmod.lille.inria.fr/pbe2/. The work includes a complete removal
> of FileDirectory. There is a compatibility package to support the transition.
> Enjoy the new and clean API.
>
> * *DateAndTime refactoring.* All the DateAndTime internals are now
> UTC-based. This prevents bugs in certain edge-cases where the image is moved
> through different time-zones, most prominently for daylight saving time.
>
> ==VM==
> * Latests cog builds
> * SSLPlugin
> * FilePlugin enhancements
> * SocketPlugin fixes
> * Included libraries: freetype2, cairo
>
> ==Large Cleanups==
> * *FileDirectory removal.* FileDirectory the old file system has been
> removed. It is packaged as a separate package to support migration to
> Pharo2.0.
>
> * *Deprecation of old serialization framework.* *ReferenceStream* and
> *SmartRefStream* are removed. In addition, *DataStream* is cleaned to be only
> used by Monticello. For a general purpose serializer, use
> *[http://rmod.lille.inria.fr/web/pier/software/Fuel Fuel]* instead.
>
> * *Large amount of bugs fixes.* You already guessed in addition we
> integrated *a lot* of small improvements, cleanups and bug fixes.
>
> ==Continuous Integration==
> * *Zeroconf scripts.* Weren't you fed up not be able to install Pharo from
> a single command line or to pass it arguments? Using a nice debugger and an
> interactive environment development does not mean that Pharo developers do
> not value automatic scripts and love command line. Yes we do and we want the
> best of both worlds! Since Pharo 2.0, Pharo supports a way to define and
> handle command line argument and offer zero conf scripts. We even wrote a
> chapter on them.
> Here is a nice start with a zero-conf bash scripts: `wget --quiet -O -
> http://files.pharo.org/script/ciPharo20PharoVM.sh | bash`
>
> * *CI for everything.* A new infrastructure to support continuous
> integration is now in place.
> * First new images and vms are mirrored under http://files.pharo.org/
> * Second the key parts of pharo are automatically built on
> [https://ci.inria.fr/pharo/]
> * Third community project can be hosted at
> [http://ci.inria.fr/pharo-contribution/]
>
>