Pharo Mooc in Numbers

[Infographie] Le MOOC Pharo en quelques chiffres

Pharo libclang FFI

hi all,

Just announcing that I'm writing a series of posts on using FFI in
Pharo 5 to interface to libclang, the interface library for the LLVM C
compiler.

http://blog.openinworld.com/2016/09/pharo-libclang-ffi-part-1-preamble/

I'm writing this from the perspective of a FFI newbie progressively
learning the system.  I've left in a few mis-steps since I think it
can be useful seeing what didn't work.

cheers -ben

Continuous improvements

60238
18987 Extract asClass and friends in a separate package and deprecate
https://pharo.fogbugz.com/f/cases/18987

19128 Deprecation: The method Object>>name called from KMRepository>>#addCategory: has been deprecated.
https://pharo.fogbugz.com/f/cases/19128

19117 Another stab at iconNamed: cleaning…
https://pharo.fogbugz.com/f/cases/19117

60237

This is:

– case 19032
– testLocalMethodsOfTheClassShouldNotBeRepeatedInItsTraits was failing due to #isLastInOwner
– add manifest wit preUnload action in GTDebugger

But:

=> 19032 seems to be not fixed. (there is still a sender if #ifNotNilDo:)

=> the gt problem with testLocalMethodsOfTheClassShouldNotBeRepeatedInItsTraits was fixed, but in the meantime
we got more problems (from epicea). This is a nice example how not fixing a trivial bug leads to more decay fast
that we do not even know about. “yes, that test fails and I know why. Will be fixed when we merge”.
What happens instead is that this “known failure” will fail soon due to many more other reasons… that nobody is
even aware of.

Trivial is not trivial.. that is why one needs to fix them as soon as possible and *never* think that batching trivialities is
a good idea…

60236
19039 Optional source code annotation pane Nautilus
https://pharo.fogbugz.com/f/cases/19039

18482 Typing a large number into a playground freezes the image
https://pharo.fogbugz.com/f/cases/18482

19124 enhance Deprecation to log sending method
https://pharo.fogbugz.com/f/cases/19124

19122 Remove category from Opal
https://pharo.fogbugz.com/f/cases/19122

18788 TxTextStyler do not work
https://pharo.fogbugz.com/f/cases/18788

60235
19023 debug menu in GTDebugger
https://pharo.fogbugz.com/f/cases/19023

19101 Unload CubeHelix
https://pharo.fogbugz.com/f/cases/19101

19116 FTRootItem>>expandAll sends deprecated #name message
https://pharo.fogbugz.com/f/cases/19116

60234
19115 formatter should not modify symbol formatting in literal arrays
https://pharo.fogbugz.com/f/cases/19115

19119 Integrate Epicea 8.0.2
https://pharo.fogbugz.com/f/cases/19119

60233
18327 SystemWindow reset his borderWidth on #themeChanged
https://pharo.fogbugz.com/f/cases/18327

18825 The current Pharo Fuel platform is still FLPharo5Platform and cannot be reset
https://pharo.fogbugz.com/f/cases/18825

18731 NeoUUIDGenerator should not rely on Network-Kernel package
https://pharo.fogbugz.com/f/cases/18731

18933 unload Collections-Grid and Collections-Grid-Test
https://pharo.fogbugz.com/f/cases/18933

60232
18963 DANode>>#browseClass: sends unimplemented fullOnClass:
https://pharo.fogbugz.com/f/cases/18963

19113 Problem with selection in rubric (select from line beginning)
https://pharo.fogbugz.com/f/cases/19113

18594 Remove references to Smalltalk evaluate: from Fuel
https://pharo.fogbugz.com/f/cases/18594
60231
19110 DNU on menu counter
https://pharo.fogbugz.com/f/cases/19110

19091 Problem adding breakpoint through suggestions
https://pharo.fogbugz.com/f/cases/19091

19108 Logging error stack should not hang image and prevent opening debugger
https://pharo.fogbugz.com/f/cases/19108
60230
19104 Typo in SizeMismatch error message
https://pharo.fogbugz.com/f/cases/19104

19051 Do not reinit selector table on startup (takes too long)
https://pharo.fogbugz.com/f/cases/19051
60229
19096 String selection behaviour in code editor is not logical
https://pharo.fogbugz.com/f/cases/19096

19035 Default time limit for tests should be small
https://pharo.fogbugz.com/f/cases/19035

60228
19102 Another clean iconNamed: phase…
https://pharo.fogbugz.com/f/cases/19102
60227
16877 another endless debugger loop
https://pharo.fogbugz.com/f/cases/16877

19097 Move to instance side refactoring of class method in the sender list is mispelled
https://pharo.fogbugz.com/f/cases/19097

19098 FuelOutStackDebugAction uses incorrect debugger API
https://pharo.fogbugz.com/f/cases/19098

60226
19094 cleaning iconNamed:
https://pharo.fogbugz.com/f/cases/19094

60225
19093 WeakSet anyOne is not work correctly when only nil there
https://pharo.fogbugz.com/f/cases/19093

19089 About dialog: add a space to Pharo6.0…
https://pharo.fogbugz.com/f/cases/19089

17881 loading package which add extension method to trait from external package makes loadable package dirty
https://pharo.fogbugz.com/f/cases/17881

19077 extend ClassDescription>>printSubclassesOn:level: to have a filter
https://pharo.fogbugz.com/f/cases/19077
60224
19092 TestExecutionEnvironment should clean all intercepted processes collections when test completes
https://pharo.fogbugz.com/f/cases/19092

19088 simplify newAnonymousSubclass in MetaClass
https://pharo.fogbugz.com/f/cases/19088

60223
19083 Introduction of FullBlockClosures (as an option)
https://pharo.fogbugz.com/f/cases/19083

60222
19085 Integrate Epicea 8
https://pharo.fogbugz.com/f/cases/19085

Change log:

– Pass on UI + search more consistent names (e.g. session -> log).

– Replace “Session Browser” by “Log Set” from EpiceaHiedra experimental package.

– Add EpMonitorModel, to manipulate EpMonitor via UI.

– Rename: apply/revert instead of redo/undo.

– Fix 18946: package does not exist when a category removal is announced.

– Fixes for Dark theme.

– Avoid using #name in some cases.

– Make EpLogBrowser composable (it needs to be correctly initialized when created with #new).

– Optimization: reuse entryReader with an instance variable.

– Encapsulate morph creation to a new class: EpMorphFactory.

– Delete Trait issue (case 19045): Avoid sending #name to nil.

– Add EpMonitor>>debug setting

– Ombu writing entries: Do not catch all Error but FileException.

– Ombu: Move writing error handling to EpMonitor.
60221
19087 Tracking of processes during test run should not keep processes strongly.
https://pharo.fogbugz.com/f/cases/19087

18755 Variable-button raises “SubscriptOutOfBounds: 1” when a Trait is selected
https://pharo.fogbugz.com/f/cases/18755

17543 VM crash in Windows when compiling many symbols
https://pharo.fogbugz.com/f/cases/17543
60220
19086 do not allow expressions as pragma arguments
https://pharo.fogbugz.com/f/cases/19086
60219
17857 newAnonymousSubclass should works for Metaclass
https://pharo.fogbugz.com/f/cases/17857

19082 The tool to do updates is broken due to space in SystemVersion
https://pharo.fogbugz.com/f/cases/19082
60218
19079 CriticBrowser can not show result for transformation rules anymore (DNU)
https://pharo.fogbugz.com/f/cases/19079

19071 FuelOutStackDebugAction should not hide error
https://pharo.fogbugz.com/f/cases/19071

60217
18463 ReleaseTest>>#testMethodsWithUnboundGlobals is failing
https://pharo.fogbugz.com/f/cases/18463

19057 Failing test: SHParserST80Test.testNumberHierarchy
https://pharo.fogbugz.com/f/cases/19057
60216
19049 Unify Dictionary APIs
https://pharo.fogbugz.com/f/cases/19049

60215
19074 comment all RBRefactoryChange classes
https://pharo.fogbugz.com/f/cases/19074

19069 SUnit test suites should be run on singe TestExecutionEnvironment
https://pharo.fogbugz.com/f/cases/19069

60214
19073 Image snapshot should be forcible executed un DefaultExecutionEnvironment
https://pharo.fogbugz.com/f/cases/19073

60213
19076 New assert extension to compare floats by closeTo
https://pharo.fogbugz.com/f/cases/19076

19068 SUnit failed tests during command line or monkey run
https://pharo.fogbugz.com/f/cases/19068

Material Design Lite for Seaside

Hi everyone!

I am happy to announce the version 1 of Material Design Lite for seaside.

This version contains all components from V1.2.1 of Google's Material
Design Lite (https://github.com/google/material-design-lite,
http://getmdl.io)

This version also contains some widget build in top of MDL as:

    Pagination widget
    Sorted Paginated Table
    Select Widget
    Poll Widget
    Calendar Widget
    Nested List with dynamic loading and search function

Thanks to Kévin Lanvin, Olivier Auverlot, Thomas Heniart, Merwan Ouddane
and Guillaume Larcheveque who helped to release this version.

Thanks to Sabine Mana for the feedback she gave.

You can find the project on:

https://github.com/DuneSt/MaterialDesignLite

There is some documentation of the README.

If you find a bug you can open an issue on the repository.
If you have some question I will be happy to answer.

Trie and Grid…

We get now a trie implementation (developed by Benoit St-Jean) and Grid as part of a slow growing project called Container for collection outside of the image.

MCHttpRepository
location: ‘http://smalltalkhub.com/mc/StephaneDucasse/Containers/main’
user: ”
password: ”

There are now available in the catalog browser for Pharo 60.

If you have new collections that you want to add to the project just ask.

More to (slowly) come….

S.

Synectique is recruiting

Synectique http://www.synectique.eu provides comprehensive and sophisticated analysis tools to improve the quality of software, reduce maintenance costs, and thus enable
easier software evolution.

The company was created in 2013 and already got some renowned customers.
To sustain our growth we are looking for a full-time Smalltalk (Pharo)
developer with some additional non Smalltalk skills.
2+ years OO programming experience or equivalent, with strong skills in OO
design, front-end JavaScript and back-end Seaside/Pharo.

The ideal candidate should be comfortable with meta-model approaches,
client-side web technologies (HTML, CSS, JavaScript), be familiar with
code parsing and master different languages (Java, C++, C#, ADA,
Smalltalk).

The job is based in Lille, which is centrally located with good connections by train to everywhere (one hour from Paris, 1h20 from London, 35 min from Brussels).

Duration: Permanent (CDI)
Starting date: September 2016
Salary: depending on skill set/experience
Ready to travel if needed.

Additional Skills:
Object-oriented design/programming
Agile Methodologies
Fluent in French and/or English
Please send your applications to philippe.valenza@synectique.eu

Pharo 50 Little Testimony

Hello all,

Thanks thanks thanks for Pharo 5.

Each year, from September to November, my students are learning Pharo with the last release.
And as you know, beginners and naive users are very good at stressing a software🙂
Previous years I faced issues due to Pharo bugs (especially because of Nautilus but not only).
Since 2 weeks, no issue at all regarding Pharo, a real pleasure.
So this mail is just to thank all of you who made this cool release.

Cheers
Alain

Metronomic attitude… systematic enh

60212
19075 SmallLint tests failing after update
https://pharo.fogbugz.com/f/cases/19075
60211
19055 More iconNamed: cleaning
https://pharo.fogbugz.com/f/cases/19055
60210
19067 Wrong emphasis code for struck and narrow
https://pharo.fogbugz.com/f/cases/19067

19061 Move some of rules to new architecture & improve
https://pharo.fogbugz.com/f/cases/19061

19066 subclassDefinerClass needs to return Smalltalk compilerClass
https://pharo.fogbugz.com/f/cases/19066
60209
19065 Symbol>>#asMethodPreamble isBroken
https://pharo.fogbugz.com/f/cases/19065

17879 Wrong example or code in Generator class comment
https://pharo.fogbugz.com/f/cases/17879

19063 Factory for RBModel classes
https://pharo.fogbugz.com/f/cases/19063

19047 fix vmstats report for spur
https://pharo.fogbugz.com/f/cases/19047

19056 Trait Polymorphism tests fail again
https://pharo.fogbugz.com/f/cases/19056

60208
19052 rub shoutdecorator should not raise a debugger
https://pharo.fogbugz.com/f/cases/19052

19054 QA 3.2.7
https://pharo.fogbugz.com/f/cases/19054
60207
19054 QA 3.2.7
https://pharo.fogbugz.com/f/cases/19054

19050 Copying a class doesnt replicate the pool dictionary definitions
https://pharo.fogbugz.com/f/cases/19050

19044 DebugAction should use key-mappings and not characters to indicate shortcuts
https://pharo.fogbugz.com/f/cases/19044

60206
19048 move testZipped to Compression-Tests
https://pharo.fogbugz.com/f/cases/19048

19046 SUnit watch dog should not signal error when test environment is not active like during debugger
https://pharo.fogbugz.com/f/cases/19046

19028 Process ondo method to inject default exception handlers
https://pharo.fogbugz.com/f/cases/19028

18974 A Nautilus fix to support class method tests
https://pharo.fogbugz.com/f/cases/18974
60205
19042 QA 3.2.6
https://pharo.fogbugz.com/f/cases/19042

19043 UnlimtedIvar slot: fix a #name deprecation side effect
https://pharo.fogbugz.com/f/cases/19043
60204
18983 Kommitter is not working when invoked from Versionner
https://pharo.fogbugz.com/f/cases/18983

18859 Loading a package break word selection on Windows
https://pharo.fogbugz.com/f/cases/18859
60203
19030 SystemAnnouncer restoreAllNotifications produces memory leak
https://pharo.fogbugz.com/f/cases/19030

19006 Add support for the file sync primitive to the FileSystem API
https://pharo.fogbugz.com/f/cases/19006

60202
19001 Another pass to introduce iconNamed: and avoid Smalltalk ui icons
https://pharo.fogbugz.com/f/cases/19001

19002 iconNamed: in Catalog Browser
https://pharo.fogbugz.com/f/cases/19002

60201
19015 Tests should never hang and leave forked processes live
https://pharo.fogbugz.com/f/cases/19015

18606 MessageBrowser should use fast table and provide filter field
https://pharo.fogbugz.com/f/cases/18606

19034 Improve comment of round:
https://pharo.fogbugz.com/f/cases/19034
60200
19014 Autodeprecation creates a DoIt method on UndefinedObject
https://pharo.fogbugz.com/f/cases/19014

19029 SystemAnnouncer allInstances size = 2
https://pharo.fogbugz.com/f/cases/19029

19027 minimal Pharo build failing
https://pharo.fogbugz.com/f/cases/19027
60199
19021 RB forgets to unmark removedClasses
https://pharo.fogbugz.com/f/cases/19021

10025 MethodDictionary at:put: and #flushCache
https://pharo.fogbugz.com/f/cases/10025
60198
18859 Loading a package break word selection on Windows
https://pharo.fogbugz.com/f/cases/18859

18930 Regression: Time to show big methods is too high
https://pharo.fogbugz.com/f/cases/18930

19020 add preUnload message to Manifest
https://pharo.fogbugz.com/f/cases/19020

19022 asClass rules
https://pharo.fogbugz.com/f/cases/19022

18827 Mirror primitives should be easy to use
https://pharo.fogbugz.com/f/cases/18827

60197
19019 Inexactitude in Dictionary class>> newFromPairs: comment
https://pharo.fogbugz.com/f/cases/19019

18950 CritiqueBrowser: Compiler error when accepting a method with argument
https://pharo.fogbugz.com/f/cases/18950

18992 asClass in font related package
https://pharo.fogbugz.com/f/cases/18992

18988 FreeTypeFontProvider should calculate correctly the directories where to look for fonts.
https://pharo.fogbugz.com/f/cases/18988

60196
18974 A Nautilus fix to support class method tests
https://pharo.fogbugz.com/f/cases/18974

18991 asClass in RPackageTest
https://pharo.fogbugz.com/f/cases/18991

18989 asClass in BlueInk
https://pharo.fogbugz.com/f/cases/18989

19011 Integrate two double quotes inside comments
https://pharo.fogbugz.com/f/cases/19011

60195
18033 Fraction isPowerOfTwo does too much work
https://pharo.fogbugz.com/f/cases/18033

19012 Added rules for icons
https://pharo.fogbugz.com/f/cases/19012

19013 Semaphore wait protocol based on duration
https://pharo.fogbugz.com/f/cases/19013

19005 Collection>>#ifEmpty: has useless return and wrong comment
https://pharo.fogbugz.com/f/cases/19005

18990 Text missing #includesSubstring: and includesSubstring:caseSensitive:
https://pharo.fogbugz.com/f/cases/18990
60194

– case 18965 (removed GTExample)

– case 18596
Remove references from Glamour to Smalltalk evaluate:

– case 18948
remove a direct reference to Compiler from GT tests

– case 18923
inspector: improve “list methods using this variable”

– case 18905
cleanup #withThorougMethodsReferTo:do:

Integrations in Pharo for next generation VMs

Hi everyone,

With the help of multiple people (Marcus Denker, Eliot Miranda and some more), I introduced over the past year multiple changes in the Pharo image to support the next generation VMs. It’s still a work in progress, but once issue 19083 will be introduced the bulk of the changes will be in the Pharo image.
These changes have no impact on developers only reading/writing source code and analysing/working with the ASTs, but may have impact with people working with Opal’s IR, the bytecode or directly with the BlockClosure and CompiledMethod instances (People building frameworks like Reflectivity, using OpalCompiler extensions or people working on object serializers).
Three main changes were introduced:
– Secondary bytecode set support
– Read-only objects
– FullBlockClosure
The secondary bytecode set support allows the image to run on a VM supporting 2 bytecode sets. Each compiled method has a flag precising which set it uses. This change allows the image to convert all the methods from one bytecode set to another one without any bootstrap (only in-image do-its). The SistaV1 bytecode set was introduced as the second bytecode set. This bytecode set removes many encoding limitations of the existing bytecode set, simplifies bytecode decoding and features new instructions (such as full block closure instructions).
Read-only objects allows one to mark any object as read-only. Any attempt to mutate a read-only object (primitive operations, instance variable store) fails, and the programmer can handle the failures with Smalltalk code. This feature is present with less than 1% overhead in all of our benchmark suite. In the near future, we plan to have all literals read-only to allow more aggressive compiler optimizations and avoid literal mutation inconsistency bugs. This feature can also be used to build efficient object modification trackers and could be used to improve the performance of part of the Reflectivity framework. It may break your code if you mutate literals (Normally you don’t).
FullBlockClosures are a new implementation of BlockClosures. They allow efficient implementation of Blocks, with the Copying block and Clean block optimizations present in other Smalltalks. They simplify part of the VM, making Blocks more similar to methods. They also remove many dependencies between BlockClosure, compiled method and contexts, which will allow us to implement more aggressive optimizations in the VM in the future. With FullBlockClosures, the closure’s bytecode is present in a separate object (an instance of compiled block) instead of being inlined in the enclosing method. This is still confusing some tools. The debugging support of FullBlockClosure seems however to be complete.
With the issue 19083 integrated and the latest VM compiled with different settings than the current Pharo VM (MULTIPLEBYTECODESETS true bytecodeTableInitializer initializeBytecodeTableForSqueakV3PlusClosuresAndSistaV1 -DIMMUTABILITY 1), all these features seems to be working in the Pharo image. The goal is to get all of these features used by default before the Pharo 6 feature freeze in November. Alternatively I will need to wait many more months (or Pharo will get unstable and Esteban will scream at me ‘No do not integrate that’).
If you worry how any of these changes can impact your frameworks, please answer this thread so we can analyse the potential problems.
Regards,

Dr. Geo 16.10 is out

Dear Pharo fellows,

I am proud to announce release 16.10a of Dr. Geo.
It comes with the usual bug fixes and a new French programming API for
French speaking kids: programmed sketch can be written in French Smalltalk!

Read more at http://www.drgeo.eu/news/drgeo1610release

Hilaire
— Dr. Geo http://drgeo.eu