Monthly Archives: May 2016

Pharo 50 Released

Dear World,
The time has come for Pharo 5.0
Sent-4523.png
This is our most significant release yet. Here are some highlights:
– The PharoVM is now based on Spur, the new memory management, and it brings with it a 35% speedup!
– A new unified foreign function interface (UFFI) replaced NativeBoost to provide a strong Spur-compatible framework for interfacing with the outside world.
– The Glamorous Toolkit now includes the GTDebugger to offer a moldable infrastructure that allows the developer to customize the debugger deeply.
– The underlying Reflectivity mechanism has reached maturity with multiple pieces coming together to empower developers to instrument their own systems. For example, we now have breakpoints implemented as just a simple extension of this mechanism.
– QualityAssistant is now part of the image to provide live feedback during development.
These are just the more prominent highlights, but the details are just as important. We have closed 2446 issues in Pharo 5. Take a moment to go through a more detailed recount of the progress: https://github.com/pharo-project/pharo-changelogs/blob/master/Pharo50ChangeLogs.md.
Sent-4523-1.png
While the technical improvements are significant, just think of getting 30% faster out-of-the-box, still the most impressive fact is that the new code that got in the main Pharo 5.0 image was contributed by 100 people. Together we have touched 43% of the classes, and 20% of the methods. The following visualization rendered with Roassal in Pharo 5.0 is dedicated to this effort. The picture shows the touched classes and packages in gray, the authors and the links to the changed classes in red, and,  using an automatically generated visual id, you can spot authors that have worked on similar projects.
Pharo is more than code. It is an exciting project involving energetic people. We thank all the contributors of this release:
Abdelghani Alidra,  Clara Allende,  David Allouche,  Nicolas Anquetil,  Thibault Arloing,  Jean Baptiste Arnaud,  Mangesh Bendre,  Clement Bera,  Alexandre Bergel,  Torsten Bergmann,  Usman Bhatti,  Vincent Blondeau,  Johan Brichau,  Camillo Bruni,  Miguel Campusano, Damien Cassou,  Nicolas Cellier,  Danny Chan,  Andrei Chis,  Christopher Coat,  Ben Coman,  Bernardo Contreras,  Gabriel Omar Cotelli,  Tommaso Dal Sasso,  Paul De Bruicker,  Sean De Nigris,  Christophe Demarey,  Simon Denier,  Marcus Denker,  Martin Dias,  John Dougan,  Stephane Ducasse,  Stephan Eggermont,  Johan Fabry,  Sergio Fedi,  Cyril Ferlicot,  Holger Hans Peter Freyther,  Joshua Gargus,  Tudor Girba,  Thierry Goubier,  Kris Gybels,  Norbert Hartl,  Thomas Heniart,  Dale Henrichs,  Nicolai Hess,  Alejandro Infante,  Henrik Johansen, Goran Krampe,  Pavel Krivanek,  Juraj Kubelka,  Denis Kudriashov,  Matthieu Lacaton, Laurent Laffont,  Kevin Lanvin,  Jannik Laval,  Alexander Lazarević, Skip Lentz,  Max Leske,  Dave Lewis, Esteban Lorenzano,  Sheridan Mahoney,  Mariano Martinez Peck, Max Mattone,  John McIntosh,  Rene Meusel,  Eliot Miranda,  Henrik Nergaard,  Marion Noirbent,  Merwan Ouddane,  Nick Papoulias,  Nicolas Passerini,  Alain Plantec,  Guillermo Polito,  Damien Pollet,  Baptiste Quide,  Andreas Raab (RIP),  Alain Rastoul,  Stefan Reichhart,  Lukas Renggli,  Mark Rizun,  Michael Rueger,  Valentin Ryckewaert,  Ronie Salgado,  Udo Schneider,  Boris Spasojevic,  Igor Stasenko,  Roger Stebler,  Serge Stinckwich,  Aliaksei Syrel,  Camille Teruel,  Pablo Tesone,  Yuriy Tymchuk,  Peter Uhnak,  Masashi Umezawa,  Dion Stewart, Sven Van Caekenberghe,  Jan Van De Sandt,  Benjamin Van Ryseghem,  Toon Verwaest,  Franck Warlouzet.
(If you contributed with Pharo 5.0 development in any way and we missed your name, please send us a mail and we will add you).
Enjoy!
The Pharo Team

More Enhancements (two)

50755
18023 add a WelcomeHelp page to open a Help Browser on it when starting
https://pharo.fogbugz.com/f/cases/18023

50754
18153 Failing on CI on Windows: SocketTest.testUDPBroadcastError (from Network-Tests)
https://pharo.fogbugz.com/f/cases/18153

50753
18188 localHostName is not guarded against uninitialized network
https://pharo.fogbugz.com/f/cases/18188
50752
18178 Some methods comments in FileReference
https://pharo.fogbugz.com/f/cases/18178

18174 Delete the second ” of the template method break the image
https://pharo.fogbugz.com/f/cases/18174

18168 Add Tooltip to describe Rubric options
https://pharo.fogbugz.com/f/cases/18168
50750
18161 Skip the two failing test for Pharo5
https://pharo.fogbugz.com/f/cases/18161

50749
18159 put on Shortcut reminder
https://pharo.fogbugz.com/f/cases/18159
50748
18156 restore all notifications for SystemAnnouncer
https://pharo.fogbugz.com/f/cases/18156

18076 Locale broken
https://pharo.fogbugz.com/f/cases/18076
50747
18139 getenv() call on Ubuntu 14.04 (32 bit) fails in one-click image
https://pharo.fogbugz.com/f/cases/18139
50746
18150 AST-FFI-Pharo50Compatibility-EstebanLorenzano.1.mcz missing
https://pharo.fogbugz.com/f/cases/18150/
50745
18152 Failing on CI on Windows only: ZnHTTPSTests.testGetPharoVersion (from Zinc-Zodiac)
https://pharo.fogbugz.com/f/cases/18152

50744
18154 revert change done in 18137
https://pharo.fogbugz.com/f/cases/18154

17478 Update pharo kernel dependency descriptions
https://pharo.fogbugz.com/f/cases/17478

50743
18136 Network related tests failing only on Windows on CI
https://pharo.fogbugz.com/f/cases/18136
50742
18139 getenv() call on Ubuntu 14.04 (32 bit) fails in one-click image
https://pharo.fogbugz.com/f/cases/18139
50741
18133 GTInspector subscript out of bounds in raw tab
https://pharo.fogbugz.com/f/cases/18133

18147 pvtDestroyHandle still presenting problems
https://pharo.fogbugz.com/f/cases/18147

50740
18140 StartupPreferencesLoader does not guard enough against errors
https://pharo.fogbugz.com/f/cases/18140

50739
18142 AbstracBinaryFileStream DNU #fuelNextInto:
https://pharo.fogbugz.com/f/cases/18142
50738
18137 Network test failing only on MAC on CI: UDPSocketEchoTest.testEcho
https://pharo.fogbugz.com/f/cases/18137

18139 getenv() call on Ubuntu 14.04 (32 bit) fails in one-click image
https://pharo.fogbugz.com/f/cases/18139

50737
18125 Icon display problem in versioner remotes manager UI
https://pharo.fogbugz.com/f/cases/18125
50736
18138 Skip test #testErrorCodeNotFound
https://pharo.fogbugz.com/f/cases/18138

18068 Error: aContext not in proccess chain
https://pharo.fogbugz.com/f/cases/18068

50735
18135 On issue tracker: GlobalIdentifierWithFuel failing now
https://pharo.fogbugz.com/f/cases/18135

18134 BIConfigurableFormatterTest is empty and useless
https://pharo.fogbugz.com/f/cases/18134
50734
18107 Failing on windows: GlobalIdentifierWithFuel>>#testBackwardCompatibility4
https://pharo.fogbugz.com/f/cases/18107

18119 Failing again: BehaviorTest>>>#testBehaviorRespectsPolymorphismWithTraitBehavior
https://pharo.fogbugz.com/f/cases/18119

18131 File>>readStreamDo: and #writeStreamDo: should answer block value
https://pharo.fogbugz.com/f/cases/18131

50732
18121 Hundreds of references to undeclared variables in Fuel
https://pharo.fogbugz.com/f/cases/18121
50730
18081 Added a comment in File primitives so the user can know what the primitive does.
https://pharo.fogbugz.com/f/cases/18081

18124 can not add instance variables in nautilus class definition pane
https://pharo.fogbugz.com/f/cases/18124
50729
18118 Author reset should not create new instance
https://pharo.fogbugz.com/f/cases/18118

18122 QA accessing undeclared var
https://pharo.fogbugz.com/f/cases/18122
50728
18108 reloading of Author settings rises prompt window
https://pharo.fogbugz.com/f/cases/18108
50727
18114 Incorrect handling of events when raising windows to the front
https://pharo.fogbugz.com/f/cases/18114

18117 Fuel fix for class substitutions
https://pharo.fogbugz.com/f/cases/18117

50726
18115 QA v2.6.6
https://pharo.fogbugz.com/f/cases/18115
50725
Moose
50724
18061 Komitter is referring to old versions
https://pharo.fogbugz.com/f/cases/18061

17963 FFICalloutAPI class ignores context instance variable
https://pharo.fogbugz.com/f/cases/17963

50723
16961 Unable to accept changes in SyntaxErrorDebugger -> DNU: receiver of asSymbol is nil
https://pharo.fogbugz.com/f/cases/16961

18111 SortHierarchically >> buildHierarchyForClasses: speedup
https://pharo.fogbugz.com/f/cases/18111

18107 Failing on windows: GlobalIdentifierWithFuel>>#testBackwardCompatibility4
https://pharo.fogbugz.com/f/cases/18107

50722
18109 EyeInspector has correct syntax highlighting
https://pharo.fogbugz.com/f/cases/18109

18110 Support added for using an OpenGL context with multiples windows.
https://pharo.fogbugz.com/f/cases/18110

50721
18025 Trait Polymorphism test failing again…
https://pharo.fogbugz.com/f/cases/18025

More enhancements

50720
18103 Update UFFI to 0.19.1
https://pharo.fogbugz.com/f/cases/18103
50719
18098 ShoreLine Reporter version 0.2.3
https://pharo.fogbugz.com/f/cases/18098
50717
18088 Update GTInspector 3.10
https://pharo.fogbugz.com/f/cases/18088

17618 Failing test: ReleaseTest>>#testInstalledMethodsWithIncorrectTrailerKind
https://pharo.fogbugz.com/f/cases/17618

50716
18087 Update Catalog 0.13
https://pharo.fogbugz.com/f/cases/18087

18096 haltonce in formatter
https://pharo.fogbugz.com/f/cases/18096

50715
18080 New Help about adding World Menu Items
https://pharo.fogbugz.com/f/cases/18080

18091 Comment some existing settings
https://pharo.fogbugz.com/f/cases/18091

18089 Update Rubric 2.19.3
https://pharo.fogbugz.com/f/cases/18089

18090 Update Versionner 2.13.12
https://pharo.fogbugz.com/f/cases/18090

50714
18070 Syntax error: Cannot store into
https://pharo.fogbugz.com/f/cases/18070

18082 Shorter help items
https://pharo.fogbugz.com/f/cases/18082

18065 BIPrettyPrinterContext undeclared var in #initialize
https://pharo.fogbugz.com/f/cases/18065

50713
18062 Infinite cycle when saving a method with a pragma
https://pharo.fogbugz.com/f/cases/18062

18058 fix icons in Versionner and sort dependencies
https://pharo.fogbugz.com/f/cases/18058

18075 SHRBTextStyler workspace mode doesnt work
https://pharo.fogbugz.com/f/cases/18075

50712
18063 update to UnifiedFFI 0.19
https://pharo.fogbugz.com/f/cases/18063
50711
18067 NEC raises DNU when trying to guess “super” in TextAreas not bound to a class/Method
https://pharo.fogbugz.com/f/cases/18067

18040 If the FreeType plugin is not in the VM, latest Pharo 5 crashes at start-up.
https://pharo.fogbugz.com/f/cases/18040
50710
18057 Two tests for OSWindow now failing on Linux and Win
https://pharo.fogbugz.com/f/cases/18057
50709
18052 Reformatting a method should never break the code
https://pharo.fogbugz.com/f/cases/18052

50708
18057 Two tests for OSWindow now failing on Linux and Win
https://pharo.fogbugz.com/f/cases/18057

50707
17618 Failing test: ReleaseTest>>#testInstalledMethodsWithIncorrectTrailerKind
https://pharo.fogbugz.com/f/cases/17618

18060 broken context menu in the Spotter text edit box
https://pharo.fogbugz.com/f/cases/18060
50706
18051 fix bug in depedency analyzer reverse analysis
https://pharo.fogbugz.com/f/cases/18051

18038 Missing allIconNames
https://pharo.fogbugz.com/f/cases/18038

50705
18056 Sync OSWindow with upstream for Pharo5
https://pharo.fogbugz.com/f/cases/18056
50704
16126 Removing class from Nautilus with a shortcut doesnt check for references (has conflicting shortcuts definitions)
https://pharo.fogbugz.com/f/cases/16126

18041 “Do it” needs to be the first option on the code context menu
https://pharo.fogbugz.com/f/cases/18041

18034 testIsPrime is broken with modern VM made with LargeIntegersPlugin v2.0
https://pharo.fogbugz.com/f/cases/18034

18050 DNU NautilusUI >>#upArrow:
https://pharo.fogbugz.com/f/cases/18050

18035 GZipReadStream>>unzip:to:
https://pharo.fogbugz.com/f/cases/18035
50703
18027 add reset message to MCCacheRepository
https://pharo.fogbugz.com/f/cases/18027

18034 testIsPrime is broken with modern VM made with LargeIntegersPlugin v2.0
https://pharo.fogbugz.com/f/cases/18034

Pharo Consortium New Bronze Member: feenk

The Pharo Consortium is very happy to announce that feenk 
has joined the Consortium as a Bronze Member.

About
- feenk: http://www.feenk.com
- Pharo Consortium: http://consortium.pharo.org

The goal of the Pharo Consortium is to allow companies and institutions to
support the ongoing development and future of Pharo.

Individuals can support Pharo via the Pharo Association:

- http://association.pharo.org
- https://salt.bountysource.com/teams/pharo



Remember that due to the 2016 campaign for extending the reach of the consortium, the Pharo Consortium receives from a generous external fund an extra amount corresponding to one year fee for any new members or the difference for any upgrading members.

More details about the campaign can be found at:
http://consortium.pharo.org/web/membership

Astares Distribution :)

Hi,

I summarized some of the goodies that I wrote like
 - DesktopManager
 - QuickAccess
 - HubCap
 - WebBrowser
 - MessageFlowBrowser
 - ...

into an own kind of Pharo distribution that I call AstaresDistribution.
So if you already use these goodies it is easier to load quickly into a fresh image.

You can load directly from Catalog or by opening Spooter, enter "Astares" 
and hit ENTER to load.

Alternatively you can download a prebuilt image using PharoLauncher from
"Pharo Contributions Jenkins" -> "AstaresDistribution" or directly from [1].

Screenshot attached.

Have fun
T.
 
[1] https://ci.inria.fr/pharo-contribution/job/AstaresDistribution

distro.png

From Configs to Baselines

I got tired of manually converting Configs into Baselines, so I wrote a
little script. You pass it the selector of a #baselineXyz: method, and it
converts it (i.e. changes the pragma, removes the blessing and repo, etc)
Hopefully you will find it useful. Cross posting to Metcello list...

ConfigurationOf>>#createBaselineFrom: selector

	| projectName baselineName baseline methodTree commonBlockBody repoSetter |
	
	"Create new class"
	projectName := self name allButFirst: self superclass name size.
	baselineName := 'BaselineOf', projectName.
	baseline := BaselineOf subclass: baselineName asSymbol
	instanceVariableNames: ''
	classVariableNames: ''
	category: baselineName.
	
	"Convert baseline##: method"
	methodTree := (self methodNamed: selector) parseTree.
	methodTree selector: #baseline:.
	methodTree pragmas at: 1 put: (RBPragmaNode selector: #baseline arguments:
#()).
	commonBlockBody := methodTree statements first arguments last body.
	repoSetter := commonBlockBody statements detect: [ :e | e selector =
#repository: ].
	commonBlockBody removeNode: repoSetter.
	
	"Compile baseline method"
	baseline compile: methodTree newSource classified: 'baseline'



-----
Cheers,
Sean
--