Author Archives: Stéphane Ducasse

Pharo Smalltalk: Un Entorno de Programación Subversiva

Hi all,

It has been published the video of the Pharo introduction talk (titled “Pharo Smalltalk: Un Entorno de Programación Subversiva”) we organized from Osoco for the Madrid Software Crafters meetup.
Both, video and slides are in spanish:
Cheers,
Rafael Luque
Advertisements

Glorp on Github…

Hi Everyone,

I’ve migrated Glorp v130, including GlorpSQLite, from smalltalkhub to
github using Peter Uhnak’s excellent git-migration tool, see:
https://github.com/pharo-rdbms

To load Glorp:

Metacello new
repository: ‘github://pharo-rdbms/src’;
baseline: ‘Glorp’;
load.

To load Glorp with the UDBC SQLite drivers:

Metacello new
repository: ‘github://pharo-rdbms/src’;
baseline: ‘GlorpSQLite’;
load.

I’m not familiar with the other drivers, so I’m happy to help, but would
like some assistance before migrating the other drivers.

If I don’t hear any complaints in the next week I’ll eventually get
around to modifying the ConfigurationOfGlorp on smalltalkhub to use the
github version for Pharo 6.1 and 7.0.  Older versions of Pharo will
continue to load Glorp from smalltalkhub.

If there’s an official account that should own this project, I’m more
than happy to hand it over.

Cheers,
Alistair

Calypso tool suite new release

Hello.

I glad announce new Calypso version. It is a big refactoring on navigation model and browser pluggability.
Now I start document new design and will post progress on it.
Notice: this version is not adopted for TelePharo and Cargo. It will be done soon.
Best regards,
Denis

Nested JSON REST

> I guess part of what I’m interested in are patterns for hooking
> NeoJSON up to parse a REST response into objects to build a wrapper
> around a REST service. I see a chapter in Enterprise Pharo, which I’ll
> get to that soon.  Perhaps I was premature asking before reading that,
> but its good to have a few paths to explore.

Here is a recent example http://forum.world.st/Another-example-of-invoking-a-REST-JSON-web-service-resolving-User-Agent-strings-tt5017489.html

Thanks Sven.  That helped a lot.   I’d like to report success.
It may be useful to others to see how to progressively build up to parsing a Nested JSON REST
1. First parse the JSON into simple Dictionaries…
(ZnClient new
    enforceHttpSuccess: true;
    accept: ZnMimeType applicationJson;
    contentReader: [ :entity | NeoJSONReader fromString: entity contents ];
get) inspect.
==>Dictionary(
      ‘success’ ==> true
      ‘message’ ==> ”
      ‘result ‘ ==> an Array(a Dictionary(‘BaseCurrency’->’BTC’ ‘BaseCurrencyLong’->’Bitcoin’)
… a Dictionary(‘BaseCurrency’->’ETH’ ‘BaseCurrencyLong’->’Ethereum’)
2. Then parse the first level response into a real object…
Object subclass: #BittrexResponse
    instanceVariableNames: ‘success message result’
    classVariableNames: ”
    package: ‘Bittrex’
(ZnClient new
   enforceHttpSuccess: true;
   accept: ZnMimeType applicationJson;
   contentReader: [ :entity |
       (NeoJSONReader on: entity readStream)
mapInstVarsFor: BittrexResponse ;
         nextAs: BittrexResponse ];
      get) inspect.
==>BittrexResponse
      success => true
      message => ”
      result => an Array(a Dictionary(‘BaseCurrency’->’BTC’ ‘BaseCurrencyLong’->’Bitcoin’)
… a Dictionary(‘BaseCurrency’->’ETH’ ‘BaseCurrencyLong’->’Ethereum’)
Or alternatively…
(ZnClient new
   enforceHttpSuccess: true;
   accept: ZnMimeType applicationJson;
   contentReader: [ :entity | |reader|
   reader := (NeoJSONReader on: entity readStream).
   reader for: BittrexResponse do: [:m|
           m mapInstVar: #success.
           m mapInstVar: #message.
           m mapInstVar: #result ].
    reader nextAs: BittrexResponse ];
   get) inspect.
==>BittrexResponse
      success => true
      message => ”
      result => an Array(a Dictionary(‘BaseCurrency’->’BTC’ ‘BaseCurrencyLong’->’Bitcoin’)
… a Dictionary(‘BaseCurrency’->’ETH’ ‘BaseCurrencyLong’->’Ethereum’)
3. Finally parse into real objects the nested level holding the data you really want…
Object subclass: #Market
    instanceVariableNames: ‘MarketCurrency BaseCurrency MarketCurrencyLong BaseCurrencyLong MinTradeSize MarketName IsActive Created Notice IsSponsored LogoUrl’
   classVariableNames: ”
   package: ‘Bittrex’
(ZnClient new
   enforceHttpSuccess: true;
   accept: ZnMimeType applicationJson;
   contentReader: [ :entity | |reader|
   reader := (NeoJSONReader on: entity readStream).
   reader for: BittrexResponse do: [:m|
            m mapInstVar: #success.
            m mapInstVar: #message.
           (m mapInstVar: #result) valueSchema: #ArrayOfMarkets].
           reader for: #ArrayOfMarkets customDo: [ :mapping | mapping listOfElementSchema: Market ].
reader mapInstVarsFor: Market.
      reader nextAs: BittrexResponse ];
   get) inspect.

==>BittrexResponse
      success => true
      message => ”
      result => an Array(a Market(LTC) a Market(DOGE) a Market(VTC) a Market(PPC) a Market(FTC) a Market(RDD)
… Market(POWR) a Market(BTG) a Market(BTG) a Market(BTG) a Market(ADA) a Market(ENG) a Market(ENG))
WhooHoo!
A couple of things remaining:
* The instance variables of Market currently start with an upper-case to match the JSON fields.
  Lower-casing the first letter breaks things.
  What strategies can be used to conform here to Smalltalk conventions?
  Or is it easy enough to live with it?
* In various posts I’ve seen mention of a class-side method #neoJsonMapping:
   but there is no explanation of this in the Enterprise Book.
   How might #neoJsonMapping: come into the picture for my use case above?
cheers -ben

About REST clients

Hi Ben,

I’ve made a few REST Clients

http://smalltalkhub.com/#!/~pdebruic/Stripe
http://smalltalkhub.com/#!/~pdebruic/Tropo
http://smalltalkhub.com/#!/~pdebruic/SegmentIO

And the elasticsearch one but its been advanced mostly lately by Sho Yoshida
(https://github.com/newapplesho) here
https://github.com/newapplesho/elasticsearch-smalltalk

He has also made REST clients for Twilio, AWS, SendGrid, Salesforce, and
Mixpanel among others.

Norbert Hartl made one for Mandrill (Mailchimps transactional email service)
http://smalltalkhub.com/#!/~NorbertHartl/Mandrill

And Francois Stephany made one for Postmark (another transactional email
service) http://smalltalkhub.com/#!/~PharoExtras/Postmark

So those are some examples of different approaches.

I also started/made a cross platform web client wrapper (just wraps calls to
ZnClient or WebClient on Squeak)
http://smalltalkhub.com/#!/~pdebruic/HTTPAPIClient

But IIRC I only used it in the Stripe API client.

Hope this gives you some ideas about how to approach your own solution

Paul

GT Mondrian: Mondrian on top of Block

Hi,

We are happy to announce, a graph visualization engine built on top of Bloc.

It is similar to the original Mondrian and the Mondrian from Roassal, but it is different in that it is built directly out of Bloc elements. This is interesting because it allows us to combine typical widgets with visualizations. The other interesting thing about it is that it validates the design of Bloc: right now, the implementation has 509 lines of code (excluding graph-specific layouts). The goal is to make visualization a first class citizen and an integral part of the IDE.

The key ingredient that made this happen is that Bloc can now treat graph layouts, such as tree or force based, behave under the same rules as typical widget layouts, such as grid or flow. The challenge comes from the fact that a graph layout depends on the notion of edges between elements, and we did not want to have elements know about edges in the core of Bloc.
The solution was to split the mondrian-doctypical edge implementation in graph visualization libraries into two distinct concepts:
• Line is an element that draws the connections.
• Edge defines constraints imposed by connections between elements.


Thus, edges form constraints, and constraints are what layouts deal with. That is one reason why elements in bloc have the ability of defining layout-specific constraints. Using this, we can nicely define edges between elements as a plugin to Bloc, but still be able to connect arbitrary elements. What’s more, it turns out that we need constraints for other layouts as well. For example, an element in a grid layout might specify the span.

 
The API of GT Mondrian is similar to the one from Roassal, but there are a few differences as well. These are described in the Pillar documentation available in the GitHub repo.
The best way to experience GT Mondrian and its documentation is to load the GToolkit as described here:
If you download the GT code through Iceberg, the documentation can be experienced live by inspecting:
‘./pharo-local/iceberg/feenkcom/gtoolkit-visualizer/doc/mondrian/index.pillar’ asFileReference
The Feenk team

(the kernel of) a Framework for genetic algorithms

Hi,

I just implemented (the kernel of) a Framework for genetic algorithms (https://en.wikipedia.org/wiki/Genetic_algorithm) in Pharo.
Some of you could be dealing with optimisation problems. So maybe it could be useful for you.
I implemented some basic functionalities : monoobjecitve, multi objective, a crossover and mutation operators, uniform selection… I also implemented some basic exemples ( mono/multi knapsack and travelling salesman)
I still need to provide some documentation but there are lot of tests so it is easy to see how it works. I will add more operators from time to time.
The code is intended to be as easy to reuse as possible. It is on Smalltalkhub : http://smalltalkhub.com/#!/~Alidra/GeneticAlgorithmsFramework/
Please take a look and tell me what you think. I will be pleased to help if you think the Framework can apply to your problem. just let me know 🙂
Abdelghani

Report period: 24 November 2017 to 8 December 2017

* 20734-Nested-Structures-using-Platform-longs-fails
>> Adding implementation of platform dependent longs in FFIExternalStructureReferenceHandle.
>>
>> Fixes https://pharo.fogbugz.com/f/cases/20734/Nested-Structures-using-Platform-longs-fails

Issue URL: https://pharo.fogbugz.com/f/cases/20734
PR URL: https://github.com/pharo-project/pharo/pull/519
Diff URL: https://github.com/pharo-project/pharo/pull/519/files

Thanks to tesonep

* 20847 Super setUp need to be called in various test classes (Part 2)
>> – call super setUp in HiNodesAndLinksIteratorWithOneLinkModelTest
>> – call super setUp in GuideTest
>> – call super setUp in SMTPClientTest
>> – call super setUp in SocketStreamTest
>> – call super setUp in SocketTest
>> – call super setUp in ZipArchiveTest
>> – call super setUp in TonelRepositoryTest
>> – call super setUp in SlotMethodRecompilationTest
>> – call super setUp in SmalllintManifestCheckerTest
>> – call super setUp in OmSessionStoreNameStrategyTest
>> – call super setUp in PharoBootstrapRuleTest
>> – call super setUp in PharoIssueTest
>> – call super setUp in PharoTutorialTestGoOnMockTutorial
>> – call super setUp in PharoTutorialTestNavigation
>> – call super setUp in UUIDGeneratorTest
>> – call super setUp in TestObjectsAsMethods
>> – call super setUp in TutorialPlayerTestWithMockTutorial
>> – call super setUp in PNGReadWriterTest
>> – call super setUp in PragmaTest
>> – call super setUP in QuotedPrintableMimeConverterTest
>> – call super setUP in RandomTest
>> – call super setUP in RectangleTest
>> – call super setUP in RecursionStopperTest
>> – call super setUp in ResumableTestFailureTestCase
>> – call super setUp in MTDependencyTest
>> – call super setUp in MTDevelopmentWorkfowTestWithXMLParser
>> – call super setUp in NautilusTest
>> – call super setUp in NautilusUITest
>> – call super setUp in SimpleTestResourceTestCase
>> – call super setUp in SUnitTest
>> – call super setUp in SimpleTestResource
>> – call super setUp in GTDebuggerSmokeTest
>> – call super setUp in GTPlaygroundBasicTest
>> – call super setUp in GTSpotterCandidatesListTest
>> – call super setUp in ZdcPluginSSLSessionTest
>> – call super setUp in ZnStaticFileServerDelegateTests
>> – call super setUp in ZnStaticFileServerDelegateTests
>> – call super setUp in GLMAnnouncementPropagationTest
>> – call super setUp in GLMAnnouncerTest
>> – call super setUp in GLMExplicitBrowserCopyTest
>> – call super setUp in GLMPagerModelTest
>> – call super setUp in GLMUpdateMorphicTest
>> – call super setUp in GLMPagerMorphTest
>>
>> https://pharo.fogbugz.com/f/cases/20847/Super-setUp-need-to-be-called-in-various-test-classes-Part-2

Issue URL: https://pharo.fogbugz.com/f/cases/20847 Super setUp need to be called in various test classes (Part 2)
PR URL: https://github.com/pharo-project/pharo/pull/593
Diff URL: https://github.com/pharo-project/pharo/pull/593/files

Thanks to astares

* 20840 Super setUp need to be called in various test classes (Part 1)
>> – call super setUp in AbstractNautilusUITest
>> – call super setUp in AndreasSystemProfilerTest
>> – call super setUp in ArrayTest
>> – call super setUp in AssociationTest
>> – call super setUp in ASTCacheResetTest
>> – call super setUp in BagTest
>> – call super setUp in Base64MimeConverterTest
>> – call super setUp in BuilderManifestTest
>> – call super setUp in CairoUTF8ConverterTest
>> – call super setUp in ChangesBrowserTest
>> – call super setUp in ChangeSetClassChangesTest
>> – call super setUp in ClassRenameFixTest
>> – call super setUp in ClassTest
>> – call super setUp in TraitsResource
>> – call super setUp in CollectionValueHolderTest
>> – call super setUp in CommandLineArgumentsTest
>> – call super setUp in CopyVisitorTest
>> – call super setUp in FreeTypeCacheTest
>> – call super setUp in HashAndEqualsTestCase
>> – call super setUp in HeapTest
>> – call super setUp in SortedCollectionTest
>> – call super setUp in SortHierarchicallyTest
>> – call super setUp in SetTest
>> – call super setUp in StackTest
>> – call super setUp in StringTest
>> – call super setUp in SymbolTest
>> – call super setUp in FloatArrayTest
>> – call super setUp in SHStyleElementTest
>> – call super setUp in HistoryIteratorTest
>> – call super setUp in IntervalTest
>> – call super setUp in OrderedCollectionTest
>> – call super setUp in LazyTabGroupTest
>> – call super setUp in MatrixTest
>> – call super setUp in RPackageTestCase
>> – call super setUp in ScheduleTest
>> – call super setUp in SendsDeprecatedMethodToGlobalRuleTest
>> – call super setUp in MorphTest
>> – call super setUp in MorphicEventHandlerTest
>> – call super setUp in MorphicAdapterTest
>> – call super setUp in MorphicUIBugTest
>> – call super setUp in CircleMorphTest

Issue URL: https://pharo.fogbugz.com/f/cases/20840 Super setUp need to be called in various test classes (Part 1)
PR URL: https://github.com/pharo-project/pharo/pull/590
Diff URL: https://github.com/pharo-project/pharo/pull/590/files

Thanks to astares

* 20838 Super setUp need to be called in System-SessionManager package tests
>> – call super setUp in SessionErrorHandlingTest
>> – call super setUp in SessionManagerRegistrationTest
>> – call super setUp in SessionManagerUnregistrationTest
>>
>> https://pharo.fogbugz.com/f/cases/20838/Super-setUp-need-to-be-called-in-System-SessionManager-package-tests

Issue URL: https://pharo.fogbugz.com/f/cases/20838 Super setUp need to be called in System
PR URL: https://github.com/pharo-project/pharo/pull/588
Diff URL: https://github.com/pharo-project/pharo/pull/588/files

Thanks to astares

* 20839 Super setUp need to be called in NECompletion-Tests
>> – call super setUp in NECControllerTest
>> – call super setUp in NECOverrideModelTest
>> – call super setUp in NECUntypedModelTest
>>
>> https://pharo.fogbugz.com/f/cases/20839/

Issue URL: https://pharo.fogbugz.com/f/cases/20839 Super setUp need to be called in NECompletion
PR URL: https://github.com/pharo-project/pharo/pull/589
Diff URL: https://github.com/pharo-project/pharo/pull/589/files

Thanks to astares

* 20826 Super setup need to be called in DependencyAnalyser tests
>> – call super setUp in DADependencyCheckerTest
>> – call super setUp in DAMessageSendAnalyzerTest
>> – call super setUp in DAPackageCycleDetectorTest (with some formatting cleanups in setUp)
>> – call super setUp in DAPackageCycleTest
>> – call super setUp in DAPackageDependencyTest
>> – call super setUp in DAPackageDependencyWrapperTest
>> – call super setUp in DAPackageRelationGraphDiffTest
>> – call super setUp in DAPackageRelationGraphTest (with some formatting cleanups in setUp)
>> – call super setUp in DAPackageTest (with some formatting cleanups in setUp)
>> – call super setUp in DATarjanAlgorithmTest (with some formatting cleanups in setUp)
>> Also add some tags to to better categorize the test classes in package “Tool-Dependency-Analyse-Test”

Issue URL: https://pharo.fogbugz.com/f/cases/20826 Super setup need to be called in DependencyAnalyser tests
PR URL: https://github.com/pharo-project/pharo/pull/579
Diff URL: https://github.com/pharo-project/pharo/pull/579/files

Thanks to astares

* 20791-World-menu-help-not-shown-in-the-menu
>> Set balloonText after the spec’s help.

Issue URL: https://pharo.fogbugz.com/f/cases/20791
PR URL: https://github.com/pharo-project/pharo/pull/575
Diff URL: https://github.com/pharo-project/pharo/pull/575/files

Thanks to luque

* 20830 Super setup need to be called in Monticello tests and other cleanups (comments, tags)
>> – call super setUp in MCChangeNotificationTest
>> – call super setUp in MCClassDefinitionTest
>> – call super setUp in MCDictionaryRepositoryTest
>> – call super setUp in MCDirectoryRepositoryTest
>> – call super setUp in MCFileInTest
>> – call super setUp in MCMczInstallerTest
>> – call super setUp in MCMethodDefinitionTest
>> – call super setUp in MCPatchTest
>> – call super setUp in MCSnapshotBrowserTest
>> – call super setUp in MCSnapshotTest
>> – call super setUp in MCStWriterTest
>> – call super setUp in MCVersionTest
>> – call super setUp in MCSnapshotResource (test resource)
>>
>> – categorize the three test methods in MCPackageManagerTest
>> – Add a comment to uncommented MCTestCase
>> – Add a comment to uncommented MCRepositoryTest
>> – Add a comment to uncommented MCSnapshotResource
>> – Add a comment to uncommented MCMockDependency
>>
>> – add some tags to structure the many test classes in the package better
>>
>>
>> https://pharo.fogbugz.com/f/cases/20830/Super-setup-need-to-be-called-in-Monticello-tests-and-other-cleanups-comments-tags

Issue URL: https://pharo.fogbugz.com/f/cases/20830 Super setup need to be called in Monticello tests and other cleanups (comments, tags)
PR URL: https://github.com/pharo-project/pharo/pull/583
Diff URL: https://github.com/pharo-project/pharo/pull/583/files

Thanks to astares

* 20816 Typo in DateAndTimeEpochTest and DateAndTimeUnixEpochTest tearDown
>> fix typo
>>
>> https://pharo.fogbugz.com/f/cases/20816/Typo-in-DateAndTimeEpochTest-and-DateAndTimeUnixEpochTest-tearDown

Issue URL: https://pharo.fogbugz.com/f/cases/20816 Typo in DateAndTimeEpochTest and DateAndTimeUnixEpochTest tearDown
PR URL: https://github.com/pharo-project/pharo/pull/572
Diff URL: https://github.com/pharo-project/pharo/pull/572/files

Thanks to astares

* 20822 Cleanup AbstractKeymappingTest
>> – override #isAbstract as it is an abstract test superclass
>> – call super setUp
>> – call super tearDown
>> – set default to nil in tearDown to avoid further referencing

Issue URL: https://pharo.fogbugz.com/f/cases/20822 Cleanup AbstractKeymappingTest
PR URL: https://github.com/pharo-project/pharo/pull/577
Diff URL: https://github.com/pharo-project/pharo/pull/577/files

Thanks to astares

* 20820 Better formatting of TestSuite setUp
>> – one blank instead of two
>> – format to be more readable
>>
>> https://pharo.fogbugz.com/f/cases/20820/Better-formatting-of-TestSuite-setUp

Issue URL: https://pharo.fogbugz.com/f/cases/20820 Better formatting of TestSuite setUp
PR URL: https://github.com/pharo-project/pharo/pull/574
Diff URL: https://github.com/pharo-project/pharo/pull/574/files

Thanks to astares

* 20825 Super setUp need to be called in Opal Compiler tests
>> – call super setUp in OCBytecodeDecompilerTest
>> – call super setUp in OCClosureCompilerTest
>> – call super setUp in OCCompilerExceptionTest
>> – call super setUp in OCCompilerNotifyingTest
>> – call super setUp in OCCompilerTest

Issue URL: https://pharo.fogbugz.com/f/cases/20825 Super setUp need to be called in Opal Compiler tests
PR URL: https://github.com/pharo-project/pharo/pull/578
Diff URL: https://github.com/pharo-project/pharo/pull/578/files

Thanks to astares

* 20819 Fix variable assignment in RBScanner>>stripComment
>> https://pharo.fogbugz.com/f/cases/20819/Fix-variable-assignment-in-RBScanner-stripComment

Issue URL: https://pharo.fogbugz.com/f/cases/20819 Fix variable assignment in RBScanner>>stripComment
PR URL: https://github.com/pharo-project/pharo/pull/573
Diff URL: https://github.com/pharo-project/pharo/pull/573/files

Thanks to astares

* Fix potential dangling reference to a released FT_Face
>> This is issue https://pharo.fogbugz.com/f/cases/20776/Potential-dangling-ref-to-freed-FT_Face
>>
>> Technical details:
>>
>> A cairo_font_face could still be referenced from external heap and further used.
>> Thus we must NOT release the FT_Face until the external reference count drops to 1.
>>
>> Thus the CairoFontFace is not a good place for retaining a strong reference to the FT2Face, because the reference will vanish as soon as the Smalltalk object is garbage collected, while some external cairo_font_face still point on it.
>> It’s better to have the strong reference in the executor, and avoid garbageCollecting the executor while there are external references to the resource data…
>>
>> The solution is to use a specific CairoFontFaceExecutor.
>> If the resource is shared, then we have no other choice than regularly polling the ref count in a new Process.
>> This process must stop whenever the session change.
>>
>> Please review carefully and pass some tests.

Issue URL: https://pharo.fogbugz.com/f/cases/Fix potential dangling reference to a released FT_Face
PR URL: https://github.com/pharo-project/pharo/pull/565
Diff URL: https://github.com/pharo-project/pharo/pull/565/files

Thanks to nicolas-cellier-aka-nice

* 20821 Remove unused ivar from RBKeywordToken and RBIdentifierToken
>> Remove
>> – unused ivar stopPosition in RBIdentifierToken and
>> – unused ivar stopPosition in RBKeywordToken
>>
>> https://pharo.fogbugz.com/f/cases/20821/Remove-unused-ivar-from-RBKeywordToken-and-RBIdentifierToken

Issue URL: https://pharo.fogbugz.com/f/cases/20821 Remove unused ivar from RBKeywordToken and RBIdentifierToken
PR URL: https://github.com/pharo-project/pharo/pull/576
Diff URL: https://github.com/pharo-project/pharo/pull/576/files

Thanks to astares

* 20828 Super setup need to be called in Versionner tests
>> – call super setUp in MBAbstractTest
>> – call super setUp in MBPackageInfoTest
>>
>> https://pharo.fogbugz.com/f/cases/20828/Super-setup-need-to-be-called-in-Versionner

Issue URL: https://pharo.fogbugz.com/f/cases/20828 Super setup need to be called in Versionner tests
PR URL: https://github.com/pharo-project/pharo/pull/581
Diff URL: https://github.com/pharo-project/pharo/pull/581/files

Thanks to astares

* 20829 Super setup need to be called in Spec tests
>> – call super setUp in MorphicLabelAdapterTest
>> – call super setUp in MorphicTreeAdapterTest
>> – call super setUp in SpecInterpreterTest
>> – call super setUp in SpecTestCase
>>
>> https://pharo.fogbugz.com/f/cases/20829/Super-setup-need-to-be-called-in-Spec-tests

Issue URL: https://pharo.fogbugz.com/f/cases/20829 Super setup need to be called in Spec tests
PR URL: https://github.com/pharo-project/pharo/pull/582
Diff URL: https://github.com/pharo-project/pharo/pull/582/files

Thanks to astares

* 20827 Super setUp need to be called RBParseTreeRewriterTest and RBParseTreeSearcherTest
>> – call super setUp in RBParseTreeRewriterTest
>> – call super setUp in RBParseTreeSearcherTest

Issue URL: https://pharo.fogbugz.com/f/cases/20827 Super setUp need to be called RBParseTreeRewriterTest and RBParseTreeSearcherTest
PR URL: https://github.com/pharo-project/pharo/pull/580
Diff URL: https://github.com/pharo-project/pharo/pull/580/files

Thanks to astares

* 20814 Add release check that we have no protocols left without methods
>> Check that we have no protocols left without methods
>>
>> https://pharo.fogbugz.com/f/cases/20814/Add-release-check-that-we-have-no-protocols-left-without-methods

Issue URL: https://pharo.fogbugz.com/f/cases/20814 Add release check that we have no protocols left without methods
PR URL: https://github.com/pharo-project/pharo/pull/570
Diff URL: https://github.com/pharo-project/pharo/pull/570/files

Thanks to astares

* 20815 Add a release test ensuring that there are no empty packages in the i
>> Add a release test ensuring that there are no empty packages in the image left
>>
>> https://pharo.fogbugz.com/f/cases/20815/Release-check-so-that-we-have-no-empty-packages-left

Issue URL: https://pharo.fogbugz.com/f/cases/20815 Add a release test ensuring that there are no empty packages in the i
PR URL: https://github.com/pharo-project/pharo/pull/571
Diff URL: https://github.com/pharo-project/pharo/pull/571/files

Thanks to astares

* 20786-halt-messages-are-not-highlighted-in-red-as-the-other-flavours-of-halt-messages
>> Added haltIfNil to the selectors to be highlighted by HaltIconStyler.
>> Changed the structure of the shouldStyleNode method’s code to increase clarity.

Issue URL: https://pharo.fogbugz.com/f/cases/20786
PR URL: https://github.com/pharo-project/pharo/pull/569
Diff URL: https://github.com/pharo-project/pharo/pull/569/files

Thanks to dupriezt

* 20781-update-to-iceberg-064
>> closes issue #20781

Issue URL: https://pharo.fogbugz.com/f/cases/20781
PR URL: https://github.com/pharo-project/pharo/pull/560
Diff URL: https://github.com/pharo-project/pharo/pull/560/files

Thanks to estebanlm

* 20793-During-Bootstrap-if-a-baseline-installation-fails-it-should-cancel-the-process
>> This PR introduces two changes to handle the errors during the bootstrap:
>>
>> 1. The Whole process now has a timeout of 60 minutes.
>> 2. After initializing the world in BaselineOfMorphic the UIManager is restored to the correct UIManager depending the system state. If it is headless then the NonInteractiveManager is used, otherwise the MorphicUIManager.

Issue URL: https://pharo.fogbugz.com/f/cases/20793
PR URL: https://github.com/pharo-project/pharo/pull/567
Diff URL: https://github.com/pharo-project/pharo/pull/567/files

Thanks to tesonep

* 20800-do-not-open-welcome-window-for-now
>> https://pharo.fogbugz.com/f/cases/20800/do-not-open-welcome-window-for-now
>>
>> do not open the welcome window

Issue URL: https://pharo.fogbugz.com/f/cases/20800
PR URL: https://github.com/pharo-project/pharo/pull/568
Diff URL: https://github.com/pharo-project/pharo/pull/568/files

Thanks to pavel-krivanek

* 20786-halt-messages-are-not-highlighted-in-red-as-the-other-flavours-of-halt-messages
>> Created HaltColonIconStylerClass, to style `halt:` message nodes with red highlighting in code browsers.

Issue URL: https://pharo.fogbugz.com/f/cases/20786
PR URL: https://github.com/pharo-project/pharo/pull/564
Diff URL: https://github.com/pharo-project/pharo/pull/564/files

Thanks to dupriezt

* 20782-CompiledCode-misses-an-abstract-sourcePointer-method
>> introduced CompiledCode>>sourcePointer as an abstract method

Issue URL: https://pharo.fogbugz.com/f/cases/20782
PR URL: https://github.com/pharo-project/pharo/pull/561
Diff URL: https://github.com/pharo-project/pharo/pull/561/files

Thanks to LucFabresse

* -20785/Fix-the-names-of-uploaded-bootstrap-zip-files
>> https://pharo.fogbugz.com/f/cases/20785/Fix-the-names-of-uploaded-bootstrap-zip-files

Issue URL: https://pharo.fogbugz.com/f/cases/
PR URL: https://github.com/pharo-project/pharo/pull/563
Diff URL: https://github.com/pharo-project/pharo/pull/563/files

Thanks to pavel-krivanek

* 20783-upload-temporary-building-files-into-a-separate-repository
>> https://pharo.fogbugz.com/f/cases/20783/upload-temporary-building-files-into-a-separate-repository

Issue URL: https://pharo.fogbugz.com/f/cases/20783
PR URL: https://github.com/pharo-project/pharo/pull/562
Diff URL: https://github.com/pharo-project/pharo/pull/562/files

Thanks to pavel-krivanek

* 20777-Fix-instVarAt-instVarAt-put-comment
>> https://pharo.fogbugz.com/f/cases/20777/Fix-instVarAt-instVarAt-put-comment
>>
>> http://forum.world.st/Problem-with-primitive-instVarAt-instVarAt-put-what-should-we-do-td5036631.html

Issue URL: https://pharo.fogbugz.com/f/cases/20777
PR URL: https://github.com/pharo-project/pharo/pull/559
Diff URL: https://github.com/pharo-project/pharo/pull/559/files

Thanks to clementbera

* 20772 – Unused temps in MBConfigurationInfo, MethodDictionaryTest,…
>> Fix unused temps in
>>
>> MethodDictionaryTest>>#testIdentityKeyAtNonExistantValueReturnsFailBlock
>> MBConfigurationInfo>>#buildStringOrText
>> MBPackageInfo>>#versions
>> MCFileTreeRepository class>>#parseName:extension:
>> MCWorkingCopyBrowser>>#addRepositoryToPackage
>> MethodDictionaryTest>>#testGrowPreservesElements

Issue URL: https://pharo.fogbugz.com/f/cases/20772
PR URL: https://github.com/pharo-project/pharo/pull/557
Diff URL: https://github.com/pharo-project/pharo/pull/557/files

Thanks to astares

* 20745-cleanup-unused-methods-OCOptimizedBlockScope
>> cleanup unused methods OCOptimizedBlockScope
>>
>> https://pharo.fogbugz.com/f/cases/20745/cleanup-unused-methods-OCOptimizedBlockScope

Issue URL: https://pharo.fogbugz.com/f/cases/20745
PR URL: https://github.com/pharo-project/pharo/pull/556
Diff URL: https://github.com/pharo-project/pharo/pull/556/files

Thanks to MarcusDenker

* 20700-translateToUTC-does-not-work-on-Month-and-Year
>> 20700 translateToUTC does not work on Month and Year
>>
>> Update Year>>starting:duration: and Month>>starting:duration: to keep the supplied DateAndTime’s offset.
>>
>> Add automated tests to Year, Month and Week to confirm correct operation.

Issue URL: https://pharo.fogbugz.com/f/cases/20700
PR URL: https://github.com/pharo-project/pharo/pull/545
Diff URL: https://github.com/pharo-project/pharo/pull/545/files

Thanks to akgrant43

* 20770-Open-WelcomeHelp-window-at-startup
>> https://pharo.fogbugz.com/f/cases/20770/Open-WelcomeHelp-window-at-startup
>>
>> open WelcomeHelp on startup

Issue URL: https://pharo.fogbugz.com/f/cases/20770
PR URL: https://github.com/pharo-project/pharo/pull/555
Diff URL: https://github.com/pharo-project/pharo/pull/555/files

Thanks to pavel-krivanek

* 20769-DateAndTime-now-returns-summer-time-in-winter-France-time-zone
>> https://pharo.fogbugz.com/f/cases/20769/DateAndTime-now-returns-summer-time-in-winter-France-time-zone
>>
>> add missing startup list registrations

Issue URL: https://pharo.fogbugz.com/f/cases/20769
PR URL: https://github.com/pharo-project/pharo/pull/553
Diff URL: https://github.com/pharo-project/pharo/pull/553/files

Thanks to pavel-krivanek

* 19304-anyOne-comment-should-be-improved
>> https://pharo.fogbugz.com/f/cases/19304/
>>
>> improve #anyOne comment

Issue URL: https://pharo.fogbugz.com/f/cases/19304
PR URL: https://github.com/pharo-project/pharo/pull/552
Diff URL: https://github.com/pharo-project/pharo/pull/552/files

Thanks to pavel-krivanek

* 20768-remove-GLMWatcherMorphicTest
>> https://pharo.fogbugz.com/f/cases/20768/remove-GLMWatcherMorphicTest
>>
>> remove GLMWatcherMorphicTest

Issue URL: https://pharo.fogbugz.com/f/cases/20768
PR URL: https://github.com/pharo-project/pharo/pull/551
Diff URL: https://github.com/pharo-project/pharo/pull/551/files

Thanks to pavel-krivanek

* 20738 dictionarystore string generates incorrect source code when a negative number is in values

Issue URL: https://pharo.fogbugz.com/f/cases/20738 dictionarystore string generates incorrect source code when a negative number is in values
PR URL: https://github.com/pharo-project/pharo/pull/538
Diff URL: https://github.com/pharo-project/pharo/pull/538/files

Thanks to juliendelplanque

* 20767-Decrease-retry-times-for-failing-jobs
>> https://pharo.fogbugz.com/f/cases/20767/Decrease-retry-times-for-failing-jobs

Issue URL: https://pharo.fogbugz.com/f/cases/20767
PR URL: https://github.com/pharo-project/pharo/pull/550
Diff URL: https://github.com/pharo-project/pharo/pull/550/files

Thanks to pavel-krivanek

* 20758-Slot-should-have-explicit-property-definingClass2
>> definingClass is added to Slot.
>> It is initialized in ClassDescription>>superclass:layout:
>> SlotIntegrationTest>>testSlotsAreInitializedWithDefiningAnonimousClass covers that initialization is performed.
>>
>> https://pharo.fogbugz.com/f/cases/20758/Slot-should-have-explicit-property-definingClass

Issue URL: https://pharo.fogbugz.com/f/cases/20758
PR URL: https://github.com/pharo-project/pharo/pull/543
Diff URL: https://github.com/pharo-project/pharo/pull/543/files

Thanks to dionisiydk

* 20747-Date-comparisons-without-time-zone
>> 20747 Date comparisons without time zone
>>
>> Add time zone independent comparisons to Date.

Issue URL: https://pharo.fogbugz.com/f/cases/20747
PR URL: https://github.com/pharo-project/pharo/pull/544
Diff URL: https://github.com/pharo-project/pharo/pull/544/files

Thanks to akgrant43

* 20766-Increase-priority-of-FreeType-initialization
>> https://pharo.fogbugz.com/f/cases/20766/Increase-priority-of-FreeType-initialization
>>
>> increase priority of FreeType initialization

Issue URL: https://pharo.fogbugz.com/f/cases/20766
PR URL: https://github.com/pharo-project/pharo/pull/548
Diff URL: https://github.com/pharo-project/pharo/pull/548/files

Thanks to pavel-krivanek

* 20699-Convenience-method-for-creating-typed-buffers-to-pass-by-ref-through-FFI-
>> https://pharo.fogbugz.com/f/cases/20699/Convenience-method-for-creating-typed-buffers-to-pass-by-ref-through-FFI

Issue URL: https://pharo.fogbugz.com/f/cases/20699
PR URL: https://github.com/pharo-project/pharo/pull/508
Diff URL: https://github.com/pharo-project/pharo/pull/508/files

Thanks to estebanlm

* 20759 Unused temps in Metacello classes
>> Fix unused temps
>>
>> MetacelloMCProjectSpec>>#determineCurrentVersionForLoad
>> MetacelloToolBox class>>#defaultTopic:for:
>> MetacelloToolBox>>#commitBaselineOfMethod
>> MetacelloToolBox>>#commitMethod
>> MetacelloToolBox>>#updateVersionMethodForVersion:projectAttributes:updateProjects:updatePackages:versionSpecsDo:
>> MetacelloToolBoxConstructor>>#extractSymbolicVersionSpecsFor:
>> MetacelloVersionSpec>>#configMethodOn:last:indent:
>> MetacelloMCVersion>>#executeLoadFromArray:
>> MetacelloMCVersionValidator>>#validateProjectVersionLoad:loads:
>> MetacelloMemberListSpec>>#mergeSpec:
>> MetacelloPackageSpec>>#currentPackageLoaded:notLoaded:using:
>> MetacelloPackageSpec>>#mergeSpec:
>> MetacelloProject>>#version:
>> MetacelloScriptEngine>>#lookupProjectSpecFor:
>> MetacelloSemanticVersionNumber class>>#fromString:forPattern:

Issue URL: https://pharo.fogbugz.com/f/cases/20759 Unused temps in Metacello classes
PR URL: https://github.com/pharo-project/pharo/pull/546
Diff URL: https://github.com/pharo-project/pharo/pull/546/files

Thanks to astares

* 20763 ExternalAddress>>finalize should be in finalization protocol
>> Put finalize into finalization category to satisfy ProperMethodCategorizationTest
>>
>> https://pharo.fogbugz.com/f/cases/edit/20763/ExternalAddress-finalize-should-be-in-finalization-protocol

Issue URL: https://pharo.fogbugz.com/f/cases/20763 ExternalAddress>>finalize should be in finalization protocol
PR URL: https://github.com/pharo-project/pharo/pull/547
Diff URL: https://github.com/pharo-project/pharo/pull/547/files

Thanks to astares

* 20061-Explicit-isAbstract-is-needed-instead-of-using-hasAbstractMethods-in-tools2
>> https://pharo.fogbugz.com/f/cases/20061/Explicit-isAbstract-is-needed-instead-of-using-hasAbstractMethods-in-tools
>>
>> Few things are done:
>> – Behavior and friends define isAbstract method with optimized logic.
>> It gives 50 milliseconds for the test:
>> [50 timesRepeat: [ PluggableTextMorph isAbstract]] timeToRun.
>> 50 items is much more then we able to see in browser class list. So it should not affect browser speed.
>> – BehaviorTest>>testIsAbstract
>> – CompiledMethod>>isAbstract is now take into account traits explicit and implicit requirement.
>> – Nautilus uses #isAbstract instead of hasAbstractMethods to mark abstract classes

Issue URL: https://pharo.fogbugz.com/f/cases/20061
PR URL: https://github.com/pharo-project/pharo/pull/541
Diff URL: https://github.com/pharo-project/pharo/pull/541/files

Thanks to dionisiydk

* 20740-Work-Needed-isAbstract-not-working-correctly-on-64bit
>> Fixed markerOrNil to work on both bytecode sets for 64 bits and 32 bits.
>>
>> https://pharo.fogbugz.com/f/cases/20740

Issue URL: https://pharo.fogbugz.com/f/cases/20740
PR URL: https://github.com/pharo-project/pharo/pull/537
Diff URL: https://github.com/pharo-project/pharo/pull/537/files

Thanks to clementbera

* 20176-Error-in-ByteArraybooleanAt
>> Fix ByteArray>>#booleanAt: to actually return true when the byte at the querried position in the ByteArray is a non-zero integer

Issue URL: https://pharo.fogbugz.com/f/cases/20176
PR URL: https://github.com/pharo-project/pharo/pull/539
Diff URL: https://github.com/pharo-project/pharo/pull/539/files

Thanks to dupriezt

* 20756-Secondary-selections-are-dark-after-switch-to-the-white-theme-in-Pharo-7
>> https://pharo.fogbugz.com/f/cases/20756/Secondary-selections-are-dark-after-switch-to-the-white-theme-in-Pharo-7
>>
>> change default secondary selection color

Issue URL: https://pharo.fogbugz.com/f/cases/20756
PR URL: https://github.com/pharo-project/pharo/pull/540
Diff URL: https://github.com/pharo-project/pharo/pull/540/files

Thanks to pavel-krivanek

* 20690-assertequals
>> https://pharo.fogbugz.com/f/cases/20690/assert-equals
>>
>> – swap actual and experted sides in comparig inside assert:equals:
>> – deprecate assert:descriptionBlock:

Issue URL: https://pharo.fogbugz.com/f/cases/20690
PR URL: https://github.com/pharo-project/pharo/pull/533
Diff URL: https://github.com/pharo-project/pharo/pull/533/files

Thanks to pavel-krivanek

* 20729-Monticello-history-browser-should-enable-diffing-with-parent
>> This is issue https://pharo.fogbugz.com/f/cases/20729/Monticello-history-browser-should-enable-diffing-with-parent
>> Such option is really handy when cherry picking changes from other branches
>> Pick the implementation from Squeak (fbs, eem) and adapt to Pharo

Issue URL: https://pharo.fogbugz.com/f/cases/20729
PR URL: https://github.com/pharo-project/pharo/pull/513
Diff URL: https://github.com/pharo-project/pharo/pull/513/files

Thanks to nicolas-cellier-aka-nice

 

HaltManager: The friend of the debugger

Hello,

I have developed a package to assist developers managing their halts and breakpoints: HaltManager.

HaltManager provides a window showing all the breakpoints and halt messages of the system, and allows one to toggle them on/off with a simple click. Halt messages can also be toggled via source code rewriting. The deactivation/reactivation feature is available in all code browsers, not only in the HaltManager window.

Metacello new
  baseline: 'HaltManager';
  repository: 'github://dupriezt/HaltManager/src';
  load

It is available here, with installation instructions and pictures: https://github.com/dupriezt/HaltManager

Feedback welcome.

Cheers,
Thomas Dupriez

 

33613913-2e9b59de-d9d6-11e7-944a-7de40071eb67.jpg

http://newletter.pharo.org

Hi,

the newsletter archive is now available on

newsletter.pharo.org

which is more easy to remember.

Thanks Marcus for setting up the redirect!

Bye