wingolog

https://wingolog.org/ (RSS)
visit blog
preliminary notes on a nofl field-logging barrier
3 Oct 2024 | original ↗

When you have a generational collector, you aim to trace only the part of the object graph that has been allocated recently. To do so, you need to keep a remembered set: a set of old-to-new edges, used as roots when performing a minor collection. A language run-time maintains this set by adding write barriers: little bits of collector code that run when a mutator writes to a field.Whippet’s

needed-bits optimizations in guile
26 Sept 2024 | original ↗

Hey all, I had a fun bug this week and want to share it with you.numbers and representationsFirst, though, some background. Guile’s numeric operations are defined over the complex numbers, not over e.g. a finite field of integers. This is generally great when writing an algorithm, because you don’t have to think about how the computer will actually represent the numbers you are working on.In practice, Guile will represent a small exact integer as a

fedi is for losers
24 Sept 2024 | original ↗

Does the fediverse have a vibe? I think that yes, there’s a flave, and with reason: we have things in common. We all left Twitter, or refused to join in the first place. Many of us are technologists or tech-adjacent, but generally not startuppy. There is a pervasive do-it-yourself ethos. This last point often expresses itself as a reaction: if you don’t like it, then do it yourself, a different way. Make your...

whippet progress update: feature-complete!
18 Sept 2024 | original ↗

Greetings, gentle readers. Today, an update on recent progress in the Whippet embeddable garbage collection library.feature-completenessWhen I started working on Whippet, two and a half years ago already, I was aiming to make a new garbage collector for Guile. In the beginning I was just focussing on proving that it would be advantageous to switch,...

conservative gc can be faster than precise gc
7 Sept 2024 | original ↗

Should your garbage collector be precise or conservative? The prevailing wisdom is that precise is always better. Conservative GC can retain more objects than strictly necessary, making GC slow: GC has to more frequently, and it has to trace a larger heap on each collection. However the calculus is not as straightforward as most people think, and indeed there are some reasons to expect that conservative root-finding can result in faster systems.(I have made / relayed some of...

on taking advantage of ragged stops
6 Sept 2024 | original ↗

Many years ago I read one of those Cliff Click “here’s what I learned” articles in which he was giving advice about garbage collector design, and one of the recommendations was that at a GC pause, running mutator threads should cooperate with the collector by identifying roots from their own stacks. You can read a similar assertion in their VEE2005 paper, The Pauseless...

whippet update: faster evacuation, eager sweeping of empty blocks
25 Aug 2024 | original ↗

Good evening. Tonight, notes on things I have learned recently while hacking on the Whippet GC library.service updateFor some time now, the name Whippet has referred to three things. Firstly, it is the project as a whole, consisting of an include-only garbage collection library containing a compile-time configurable choice of specific collector...

javascript weakmaps should be iterable
19 Aug 2024 | original ↗

Good evening. Tonight, a brief position statement: it is a mistake for JavaScript’s WeakMap to not be iterable, and we should fix it.story timeA WeakMap associates a key with a value, as long as the key is otherwise reachable in a program. (It is an ephemeron table.)When WeakMap was added to JavaScript, back in the ES6 times, some implementors thought that it could...

whippet progress update: funding, features, future
24 Jul 2024 | original ↗

Greets greets! Today, an update on recent progress in Whippet, including sponsorship, a new collector, and a new feature.the lob, the pitchBut first, a reminder of what the haps: Whippet is a garbage collector library. The target audience is language run-time authors, particularly “small” run-times: wasm2c,

finalizers, guardians, phantom references, et cetera
22 Jul 2024 | original ↗

Consider guardians. Compared to finalizers, in which the cleanup procedures are run concurrently with the mutator, by the garbage collector, guardians allow the mutator to control concurrency. See

copying collectors with block-structured heaps are unreliable
10 Jul 2024 | original ↗

Good day, garbage pals! This morning, a quick note on “reliability” and garbage collectors, how a common GC construction is unreliable, and why we choose it anyway.on reliabilityFor context, I’m easing back in to Whippet development. One of Whippet’s collectors is a semi-space collector. Semi-space...

enable persistent history in gdb
4 Jul 2024 | original ↗

Friends. I have been using GDB for more than two decades and have been annoyed by the fact that, unlike the shell, it doesn’t keep a persistent history.Of course, it has always been able to do that, but history saving is just not on by default. So do yourself a favor and turn it on by pasting this into your terminal:mkdir -p ~/.config/gdb mkdir -p ~/.cache/gdb echo 'set history filename ~/.cache/gdb/history' >> ~/.config/gdb/gdbinit echo 'set...

cps in hoot
27 May 2024 | original ↗

Good morning good morning! Today I have another article on the Hoot Scheme-to-Wasm compiler, this time on Hoot’s use of the continuation-passing-style (CPS) transformation.calls calls callsSo, just a bit of context to start out: Hoot is a Guile, Guile is a Scheme, Scheme is a Lisp, one with “proper...

hoot's wasm toolkit
24 May 2024 | original ↗

Good morning! Today we continue our dive into the Hoot Scheme-to-WebAssembly compiler. Instead of talking about Scheme, let’s focus on WebAssembly, specifically the set of tools that we have built in Hoot to wrangle Wasm. I am peddling a thesis: if you compile to Wasm, probably you should write a low-level Wasm toolchain as well.(Incidentally, some of this material was taken from a

↑ these items are from RSS. Visit the blog itself at https://wingolog.org/ to find other articles and to appreciate the author's digital home.