Monthly Archives: May 2022

This week (21/2022) on the Pharo Issue Tracker

This week we merged 27 PRs and fixed  23 Issues.

Symbol/SelectorTable Improvements
================================

– Symbol-simpler-findInternedSelector #11281
https://github.com/pharo-project/pharo/pull/11281

– 11243-Symbol-classrebuildSelectorTable-hould-not-use-allInstancesDo #11244
https://github.com/pharo-project/pharo/pull/11244

– remove OneCharacterSymbols from Symbol #11247
https://github.com/pharo-project/pharo/pull/11247

Features
========

– Add rules for simplification of isNotNil ifTrue:, notNil ifTrue:ifFalse #11261
https://github.com/pharo-project/pharo/pull/11261

Fixes
======

– Pharo11-UFT8-Monticello #11239
fixes: Commits with … (introduced by GH) in summary cannot be loaded back in Pharo #11226
https://github.com/pharo-project/pharo/pull/11239

Debugger
========

– Adding debuggerLayout in TStDebuggerExtensionLayout` to be able to choose the layout the debugger extension should have #376
https://github.com/pharo-spec/NewTools/pull/376

– Fixing odd behaviour in debugger inspector filters #359
https://github.com/pharo-spec/NewTools/pull/359

– Fixes context menu commands of the StDebugger stack. #373
https://github.com/pharo-spec/NewTools/pull/373

– [cleanup] fix selector name: initalizeSelectedList #369
https://github.com/pharo-spec/NewTools/pull/369

Cleanups
========

– 11245-Trivial-FinderUI-classsearchedTextListMaxSize-can-be-removed #11249
https://github.com/pharo-project/pharo/pull/11249

– 11255-OrderedCollection-adding-methods-remove-a-poppushTemp #11256
https://github.com/pharo-project/pharo/pull/11256

– [clean up] isLiteral and TestRunner method never call #11257
https://github.com/pharo-project/pharo/pull/11257

– Fixed issue 11210: Do not skip NativeArrayTest>>#testDoubleArraysHaveCorrectLayout #11260
https://github.com/pharo-project/pharo/pull/11260

– 10185-merge-ReSmalllintChecker-into-SmalllintManifestChecker #11219
https://github.com/pharo-project/pharo/pull/11219

Trivial Cleanups
================

– Cleanup IdentityTransform class>>#initialize #11289
https://github.com/pharo-project/pharo/pull/11289

– Cleanup: categorize ProcessLocalSlotTest #11288
https://github.com/pharo-project/pharo/pull/11288

– Cleanup: align #isTransparent and other #isXXX methods #11280
https://github.com/pharo-project/pharo/pull/11280

– Cleanup: #isCharacter should be in same “testing” category (not “acce… #11278
https://github.com/pharo-project/pharo/pull/11278

– Cleanup: small improvements for Webbrowser package #11283
https://github.com/pharo-project/pharo/pull/11283

– Cleanup Delay>>#isExpired #11269
https://github.com/pharo-project/pharo/pull/11269

– Cleanup: lint for ComputedSlotTest>>#testReadComputedSlotCompiled #11285
https://github.com/pharo-project/pharo/pull/11285

– Cleanup: remove unnecessary class #initialize comment #11292
https://github.com/pharo-project/pharo/pull/11292

– Cleanup: #isBlock should be in same “testing” category (not “accessing”) #11277
https://github.com/pharo-project/pharo/pull/11277

– Properly categorize “is…” methods #11267
https://github.com/pharo-project/pharo/pull/11267

– Cleanup: small category cleanup in Path #11274
https://github.com/pharo-project/pharo/pull/11274

– #isResumable shoud be in “testing” or “private – testing” #11271
https://github.com/pharo-project/pharo/pull/11271

– Cleanup-DeadCode-05-20 #11250
https://github.com/pharo-project/pharo/pull/11250

Pharo By Example 9 converted to Microdown

Just a little note to share with you that with Gaylord we are validating the Pillar to Microdown format conversion. It works! We can now produce a PDF nearly the same as the one based on Pillar trees but on microdown trees. We will have to fix some little glitches but this is super encouraging.

It means that soon we will be able to have all the Pharo books in Microdown and available within Pharo.

S.

Dev continues…

We merged 14 Pull Requests and fixed 17 Issues.

There are always more issues ready to be reviewed
https://github.com/pharo-project/pharo/pulls

Feature
=======

– 6720-Dictionary–newFrom-logic-can-be-improved- #11176
https://github.com/pharo-project/pharo/pull/11176

– Fixes #11165 begins with and ends with should return true on empty string #11173
https://github.com/pharo-project/pharo/pull/11173

Clean Blocks
============

– Fix-messagetally-tests-Cleanblocks #11209
https://github.com/pharo-project/pharo/pull/11209

Bugs
====

– 6323-RubSmalltalkEditor-meta-j-shortcut-not-working #11205
https://github.com/pharo-project/pharo/pull/11205

– FIX issue #10933: Scaled decimals comparison result depends on the number creation method #10951
https://github.com/pharo-project/pharo/pull/10951

– Implement EpInverseVisitor>>#visitTraitModification: #11208
https://github.com/pharo-project/pharo/pull/11208

– 11198-Pharo11-Reflectivity-do-not-add-temp-for-value-if-not-generating-the-primtive-Wrapper #11199
https://github.com/pharo-project/pharo/pull/11199

Cleanup
=======

– 11216-categorize-ZnStaticFileDecoratorDelegate-classdecorateservingFilesFrom #11224
https://github.com/pharo-project/pharo/pull/11224

– 11162-Check-ReToDoRule #11164
https://github.com/pharo-project/pharo/pull/11164

– Fix for the issue #11115: Feature Envy clipRect on AthensCairoCanvas #11117
https://github.com/pharo-project/pharo/pull/11117

– 11144-LocaleAnnouncementTest-seems-to-be-unused #11189
https://github.com/pharo-project/pharo/pull/11189

Pharo10
=======

– Remembering scroll position when collapsing and expanding tree table items #11202
https://github.com/pharo-project/pharo/pull/11202

– Making completion support $_ in class and method names #11197
https://github.com/pharo-project/pharo/pull/11197

– 11198-Pharo10-Reflectivity-do-not-add-temp-for-value-if-not-generating-the-primtive-Wrapper #11200
https://github.com/pharo-project/pharo/pull/11200

Little tutorial on edit distance

Hi Abir

one of the interns at RMOD wrote a nice little blog post on her work on edit distances.

Thanks Abir

https://github.com/pharo-ai/wiki/blob/master/wiki/Tutorials/edit-distances-tutorial.md

About image size…

Pharo9: 65,8 MB
Pharo10: 57,4 MB
Pharo11: 56,5 MB

The space saving come from three things:

1) Code cleanup Pharo9-Pharo10
=========================

e.g. removal of support in Kernel and Compiler of old style blocks and bytecodes, 
to mention one smaller (in term of image size) but deep cleanup.

Of course, we can do more here. There is still a lot of dead code (and duplicated
things) in the image!

2) Global Literal Sharing
===================

Literals are now, when the method is compiled, set to be read-only, recursively in the case of arrays.

This allows us to unify (share one instance) not only in the same method, but globally over all methods.

As the compiler can not do a global literal table when compiling a single method (too slow), this is implemented 
as an additional pass, called as part of the build process.

If you load a lot of code, it might be an idea to do that as part of your build again:

ImageCleaner shareLiterals


3) Improvement of code structure objects
===============================

e.g, in Pharo10 we found two empty OrderedCollections per class that where not needed. 

Further work on this idea is where the improvement in Pharo11 comes from, we merged these three changes:

– Class>>#classPool: empty dictionary for all classes, but not many define class vars #11172
https://github.com/pharo-project/pharo/issues/11172

– [Memory] sharedPools OrderedCollections waste memory #10957
https://github.com/pharo-project/pharo/issues/10957

– [Memory] AllProtocol uses a lot of memory #10963
https://github.com/pharo-project/pharo/issues/10963

The classPools/sharedPool improves the size of the bootstrapped image not to0 much as the boostrap creates
classes with nil there, but for newly loaded code this will be more visible.

This direction has some more fairly simple next steps:

– [Memory] commentSourcePointer is not needed for MetaClasses
https://github.com/pharo-project/pharo/issues/10958

– [Memory] Every class and meta class has both a ProtocolOrganizer and a ClassOrganization #10959
https://github.com/pharo-project/pharo/issues/10959

… and of course there are many more things to find with just looking a bit. 

(And it is interesting starting point to think about better language support for making long living but rarely changed
data structures more memory efficient)

If you want to get an impression of which classes use image space, “SpaceTally printSpaceAnalysis”
prints a per-class analysis.

Marcus

[Ann] Welcome SRA as a new consortium member

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

About

– SRA: https://www.sra.co.jp/en/
– 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 https://association.pharo.org