# Where to Find the iroh Changelog: Complete Guide to Release Notes

> Find the iroh changelog in CHANGELOG.md at the repo root. Access historical release notes in CHANGELOG_old.md. Your complete guide to iroh updates.

- Repository: [number zero/iroh](https://github.com/n0-computer/iroh)
- Tags: how-to-guide
- Published: 2026-07-03

---

**The iroh changelog is maintained in [`CHANGELOG.md`](https://github.com/n0-computer/iroh/blob/main/CHANGELOG.md) at the repository root, with historical entries archived in [`CHANGELOG_old.md`](https://github.com/n0-computer/iroh/blob/main/CHANGELOG_old.md), both following the Keep a Changelog format.**

The iroh project by n0-computer tracks all feature updates, bug fixes, and breaking changes through a structured changelog system. Knowing where to find the iroh changelog and how to parse its contents helps developers manage dependencies and plan migrations. This guide details the exact file locations, format conventions, and methods for programmatically extracting version information.

## Primary Changelog Location

The current iroh changelog lives at **[`CHANGELOG.md`](https://github.com/n0-computer/iroh/blob/main/CHANGELOG.md)** in the repository root. This file contains the most recent release notes and documents changes for the current development cycle.

According to the n0-computer/iroh source code, the changelog follows the Keep a Changelog convention, organizing entries by semantic version with categorized sections for new features, fixes, and breaking changes.

## Historical Changelog Archives

For legacy releases, the project maintains **[`CHANGELOG_old.md`](https://github.com/n0-computer/iroh/blob/main/CHANGELOG_old.md)** in the same root directory. This file preserves historical context while keeping the primary changelog focused on recent versions.

Developers auditing long-term changes or planning major version upgrades should reference both files to understand the complete API evolution.

## Changelog Format and Structure

The iroh changelog uses ATX-style markdown headers with version entries formatted as `## [version] - date`. Each release section documents:

- **Added**: New APIs and capabilities
- **Changed**: Modifications to existing functionality
- **Deprecated**: Features scheduled for removal
- **Removed**: Deleted APIs and breaking changes
- **Fixed**: Bug resolutions and patches
- **Security**: Vulnerability disclosures

## Programmatically Extracting Version Information

While designed for human readability, you can parse [`CHANGELOG.md`](https://github.com/n0-computer/iroh/blob/main/CHANGELOG.md) to extract the latest version number for automated tooling. This approach relies on the consistent header format used throughout the iroh changelog files.

The following Rust example reads the first version header from the changelog:

```rust
use std::fs;

fn main() -> std::io::Result<()> {
    // Load the changelog file from the repository root
    let changelog = fs::read_to_string("CHANGELOG.md")?;

    // Find the first line that starts with "## [" (the version header)

    if let Some(line) = changelog.lines().find(|l| l.starts_with("## [")) {

        // Extract the version string between the brackets
        let version = &line[4..].split(']').next().unwrap_or("unknown");
        println!("Latest iroh version: {}", version);
    } else {
        println!("No version header found in CHANGELOG.md");
    }
    Ok(())
}

```

This script leverages the standard header pattern `## [` to locate and extract the semantic version string without external dependencies.

## Related Release Metadata Files

Beyond the markdown changelogs, the repository includes machine-readable release data:

- **[`RELEASE.toml`](https://github.com/n0-computer/iroh/blob/main/RELEASE.toml)**: Contains structured release metadata that mirrors the changelog entries in TOML format
- **[`README.md`](https://github.com/n0-computer/iroh/blob/main/README.md)**: Provides project overview and typically links to the current changelog

These files work together to support both human readers and automated release management systems.

## Summary

- The primary iroh changelog is located at **[`CHANGELOG.md`](https://github.com/n0-computer/iroh/blob/main/CHANGELOG.md)** in the repository root
- Historical entries are preserved in **[`CHANGELOG_old.md`](https://github.com/n0-computer/iroh/blob/main/CHANGELOG_old.md)** for reference
- Both files follow the Keep a Changelog format with standardized categories (Added, Changed, Fixed, etc.)
- Version headers use the pattern `## [version] - date` for consistent parsing

- **[`RELEASE.toml`](https://github.com/n0-computer/iroh/blob/main/RELEASE.toml)** provides machine-readable release metadata alongside the human-readable markdown files
- You can programmatically extract version data using simple string parsing on the markdown headers

## Frequently Asked Questions

### Where is the iroh changelog located in the repository?

The main changelog is located at **[`CHANGELOG.md`](https://github.com/n0-computer/iroh/blob/main/CHANGELOG.md)** in the root of the n0-computer/iroh repository. An archived version containing older entries is also available at **[`CHANGELOG_old.md`](https://github.com/n0-computer/iroh/blob/main/CHANGELOG_old.md)** in the same directory.

### What format does the iroh changelog use?

The changelog follows the **Keep a Changelog** standard, using markdown headers for each version release (formatted as `## [0.5.0] - 2024-01-15`) and categorizing changes into specific sections including Added, Changed, Deprecated, Removed, Fixed, and Security.

### Does iroh maintain a machine-readable version of release notes?

Yes, alongside the markdown changelogs, the repository includes **[`RELEASE.toml`](https://github.com/n0-computer/iroh/blob/main/RELEASE.toml)** which contains machine-readable release metadata. This file mirrors the changelog information in a structured format suitable for automated tooling and CI/CD pipelines.

### How can I programmatically check the latest iroh version from the changelog?

You can parse the first line starting with `## [` in [`CHANGELOG.md`](https://github.com/n0-computer/iroh/blob/main/CHANGELOG.md) to extract the version string between the brackets. The Rust example provided above demonstrates reading the file and extracting the semantic version number using standard string operations and the `fs` module.