Next Pharo Sprints @ Lille

For those interested, we are organizing monthly Pharo sprints in Lille, in the Inria Research Center every last friday of the month! Tell us if you would like to come! What’s a Pharo Sprint? Imagine coding in something fun. And having cookies. Pair-programming with a guy that does something completely different than you in yourContinue reading “Next Pharo Sprints @ Lille”

Pharo @ ESUG’23

The yearly European Smalltalk User Group conference happened last week in Lyon, France.Unofficial numbers tells it had more than 80 participants, and we had met with lots of people we hadn’t seen for years!We are slowly recovering from COVID 🙂 Of course, you can find the full conference info and schedule in here: https://esug.github.io/2023-Conference/agenda/agenda.html.However, theContinue reading “Pharo @ ESUG’23”

Debugging the JIT compiler Hotspot detection for ARM64

The other day we were working on the compiler detection of hotspots, originally implemented by Clément Béra during his PhD thesis. In Sista, hotspot detection is implemented as a countdown that looks like the following: the counter is loaded in a register, decremented and then a jump if carry detects if the substraction underflowed. WeContinue reading “Debugging the JIT compiler Hotspot detection for ARM64”

A Taste of Ephemerons

For a couple of years now, Pharo includes support for Ephemerons, originally introduced with the Spur memory manager written by Eliot Miranda. For the upcoming Pharo 9.0 release, we have stressed the implementation (with several hundred thousands Ephemerons), make it compatible with latest changes done in the old space compaction algorithm, and made it aContinue reading “A Taste of Ephemerons”

Debugging CMake project on Windows ARM64 with Visual Studio

If you have a Windows ARM64 machine such as the Surface Pro X, chances are you may want to debug native ARM64 applications with it. However, as of today 2/12/2020, Windows does not support local debugging of ARM64 applications, but only remote debugging. Moreover, CMake projects cannot be configured to use remote debugging, or IContinue reading “Debugging CMake project on Windows ARM64 with Visual Studio”

Bisecting Pharo versions to find regressions

From time to time it happens that a bug is accidentally introduced and we realize it several versions later. If the cause of the bug is not clear, one good strategy is to find the piece of code change that introduced the bug, and engineer a test and fix from that change. If we haveContinue reading “Bisecting Pharo versions to find regressions”

Getting a handle on names

There are only two hard things in Computer Science: cache invalidation and naming things. Phil Karlton Two hard things, but they are not the same kind of hard. Naming things we do it every day. And we read and re-read the things we name all day long. This is a post about names. And ambiguity.Continue reading “Getting a handle on names”

Complishon: efficient heuristics for code completion

A couple of weeks ago I started prototyping a new code completion backend. The one available in Pharo 8.0 is good-enough to complete variables and messages to literal objects. However, the accuracy of the completion was pretty low because auto completion candidates were sorted alphabetically, and this was even producing completion pauses for large images.Continue reading “Complishon: efficient heuristics for code completion”

How a modal window could break the event cycle: A debugging story

A couple of weeks ago I started an aggressive cleaning on Morphic, the graphics framework we currently use in Pharo, searching for a cheap and simple path to move the Pharo IDE to HiDPI screens. The cleanups involved mostly the removal of global state. For example, I transformed code like the following: into something like:Continue reading “How a modal window could break the event cycle: A debugging story”

Why can’t Pharo have constructors?

The other day we were talking about Pablo about pre-tenuring objects when discussing about a couple of papers like this one and this other one. These papers describe the idea of pre-tenuring objects for Java. The main idea being to identify allocation sites in the code (e.g., new MyClass(17, true,someObject)), take statistics about the averageContinue reading “Why can’t Pharo have constructors?”