Up to now, we have been focusing on where memory management actually occurs, the heap. But this is not the only memory segment relevant to a program. Indeed, in all garbage collected techniques, there’re other players having a relevant role in the game: the mutator and the root set. In the reference counted garbage collection, […]
Computer Sciences
Resource Management in perspective: the Heap

How do you deal with memory in Assembly? Well, you basically tell the processor to access this field in memory, and don’t tell the processor to access this other one. As I mentioned last time, from a traditional perspective memory can be managed manually or automatically. The assembly idea is where C builds onto, with added […]
Everybody does Resource Management

«C programmers think memory management is too important to be left to the computer. Lisp programmers think memory management is too important to be left to the user.»
On Syntax and Semantics, or what Python didn’t get right

Some time ago, perhaps even as far as a year ago, I was just starting to watch conferences and lectures in my extensively useful youtube account, on topics like λ‑Calculus or Category Theory, when on a conference by Bartosz Milewski on Categories, he threw a brilliant sentence, that speaks something like this: «Humans shouldn’t downgrade […]
The life and death of a piece of code

How is code born? What do good developers look for when they write their code? The development of a system can be measured by its trade-offs. Some systems cannot be slow, some others cannot fail, some others cannot be too expensive. All systems want to have everything, obviously. But they cannot, obviously. Before we study […]
Processors, Part Three: the Future. New models.
If one big complex thread being executed too fast is risky as we saw, because there’s a physical limit to sheer clock speed and cheating optimisations are unsafe, then, we all know the other option: what about doing many simple and small things independently? To put it differently: if we cannot make the clock any […]
Processors, Part Two: the Present. Meltdown and Spectre

Imagine a restaurant. A professional chef, in charge of the best pizzas in town, and nobody knows how’re they done. It’s such a secret, those magic ingredients. And imagine a bunch of apprentices, supposed to help him. Imagine them following the chef’s orders. And then see, the chef going to the fridge to take some […]
Processors, Part One: the Past. The Architecture
How to widen the bottleneck of processing? If the solution were trivial, it wouldn’t merit a post – in fact the workarounds are of the kind that’s easy to invent but hard to formalise. Like the megapixels are not a true indicator of the quality of a camera, or the decibels are not a true […]
On so called low-level and performant languages
Last time, we dug into a new debate: are languages really decoupled from the hardware that runs them? Are the semantics of a language modelling mainstream hardware, and should they? Can we escape to new models of hardware, and new models of semantics? We saw that Backus made a good point arguing that languages have […]