Skip to content

Commit cf321a6

Browse files
committed
Update changelog for event loop isolation and Python 3.14 fixes
1 parent 1b87ea2 commit cf321a6

1 file changed

Lines changed: 15 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,21 @@
44

55
### Fixed
66

7+
- **Event Loop Isolation and Resource Safety** - Three fixes for event loop and atom handling
8+
- **Single-loop-per-interpreter enforcement** - Prevents multiple `ErlangEventLoop` instances
9+
from causing event confusion. Added `_has_loop_ref()` check that detects running loops;
10+
attempting to create a second loop while one is running raises `RuntimeError`
11+
- **Atom creation safety** - Added Python-level caching with configurable limit (10000 default,
12+
`ERLANG_PYTHON_MAX_ATOMS` env var) to prevent BEAM atom table exhaustion from untrusted code.
13+
The `erlang.atom()` API now goes through the cached wrapper; internal `_atom()` NIF still available
14+
- **Global capsule resource leak** - Added `global_loop_capsule_destructor` that properly calls
15+
`enif_release_resource()` when capsule is garbage collected. Previously NULL destructor caused
16+
reference leaks on each `ErlangEventLoop` creation
17+
18+
- **Python 3.14 venv activation** - Fixed `.pth` file processing in subinterpreters. Python 3.14
19+
stricter module isolation prevented `sys._venv_site_packages` from persisting across eval/exec calls.
20+
Now embeds site-packages path directly in the exec code string
21+
722
- **OWN_GIL Safety Fixes** - Critical fixes for OWN_GIL subinterpreter mode
823
- **Mutex leak in erlang module** - `async_futures_mutex` now always destroyed in
924
`erlang_module_free()` regardless of `pipe_initialized` flag

0 commit comments

Comments
 (0)