Congrat!!!! Alexandre
On Mar 18, 2013, at 6:32 AM, stephane ducasse <stephane.duca...@free.fr> wrote: > 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/] > > -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.