# Bengal 0.4.3

URL: /bengal/releases/0.4.3/
Section: releases
Description: Free-threading hardening — build error reporting is now race-free on free-threaded Python, so parallel builds no longer crash or report wrong error counts in their summaries.

---

> For a complete page index, fetch /bengal/llms.txt.

**Key theme:** Free-threading hardening. 0.4.3 closes a free-threading correctness gap in how Bengal reports build errors. On free-threaded CPython (3.14t) Bengal runs your build across cores — and the session that tracks errors across that build recorded them safely but *read* them without the same protection. This patch makes the reads safe too. No new features, no breaking changes.

## What's fixed

### Build error reporting is race-free under free-threading

- **Error summaries no longer crash or miscount on free-threaded Python.** The build-error session indexed errors under a lock when recording them, but its readers — the end-of-build summary, the investigation hints, and the systemic-issue / most-common-error views — walked those shared indexes without one. On free-threaded CPython (`python3.14t`), a reader iterating an index while another thread recorded an error could raise `RuntimeError: dictionary changed size during iteration` or report wrong counts. Every reader now takes the session's re-entrant lock, and the per-file / per-code lookups return copies, so concurrent builds produce correct, stable error summaries (`#439`).

## Changes at a glance

**Fixed**

- Race-free error tracking: build error summaries and investigation hints no longer crash or report wrong counts during parallel builds on free-threaded Python (`#439`).

## Upgrading

```bash
pip install --upgrade bengal-ssg
```

0.4.3 is a drop-in patch: no breaking changes and no config migration. The fix only affects builds running on free-threaded CPython (`python3.14t`); on the standard GIL build the behavior is unchanged.
