1
Requirements and Python Versions
anti edited this page 2026-04-18 06:03:27 -04:00

Requirements and Python Versions

The hard requirements for running DECNET, and why the Python ceiling is pinned where it is.

Supported Python versions

Version Status
3.10 and below Not supported. pyproject.toml sets requires-python = ">=3.11".
3.11 Supported. Minimum version.
3.12 Supported. Recommended.
3.13 Supported.
3.14 Not supported. See warning below.

Warning: Python 3.14 breaks DECNET under load

Python 3.14's redesigned garbage collector changes finalizer and weakref ordering in ways that destabilise DECNET's concurrency model. Under sustained ingest load (multiple service containers streaming RFC 5424 syslog, the FastAPI dashboard polling the repository, the correlator running background tasks) we observed:

  • Deadlocks in the ingest pipeline between the syslog UDP listener and the SQLite repository writer.
  • Intermittent loss of weakref'd plugin instances registered by decnet/services/registry.py.
  • Unbounded memory growth in long-running decnet web processes.

Until upstream stabilises or we ship a compat shim, DECNET keeps the ceiling below 3.14. If you manually lift requires-python and run under 3.14, do not open a bug report — it is expected to break.

System packages

Package Minimum Notes
Linux kernel 5.x Needs MACVLAN/IPvlan drivers. WSL has known MACVLAN limitations — prefer bare metal or a VM.
Docker Engine 24.0 Compose v2 plugin, BuildKit, stable MACVLAN driver.
iproute2 any recent ip link, ip addr, ip route — used for interface/subnet detection.
Root / sudo Network namespace + MACVLAN setup require privilege.

On Debian/Ubuntu:

sudo apt install docker.io docker-compose-plugin iproute2 python3.12 python3.12-venv

On Fedora/Rocky:

sudo dnf install docker docker-compose-plugin iproute python3.12

NIC requirements

MACVLAN needs the host NIC to accept frames for MAC addresses it does not own (effectively: promiscuous-capable and not behind a MAC-filtering upstream). WiFi access points typically filter unknown MACs, so use IPvlan L2 there:

sudo decnet deploy --interface wlp6s0 --ipvlan --deckies 3 --randomize-services

See Networking for driver selection guidance and troubleshooting.

Verifying your environment

python --version                  # 3.11, 3.12, or 3.13
docker --version                  # 24+
docker compose version            # v2 plugin
ip link                           # ensure target NIC is listed

If any of these fail, fix them before running decnet deploy — the CLI will refuse or error confusingly on a missing prerequisite.

Next