Linux Kernel CXL Feature Tracker

Linux Kernel CXL Feature Tracker

I’m always watching the Linux Kernel for new and exciting features that are merged for Compute Express Link (CXL). There’s some great notes from the monthly developer meetup here , but the devil is always in the details, and not every commit is discussed in the meeting. So I wrote a simple Python script, called that looks in all commits to the Linus Torvalds Linux Kernel GitHub repository , and extracts any that mention “CXL” or “DAX”, or that make changes to the drivers/cxl or drivers/dax directories. The output is a very long list, but it has some gems amongst the list of fixes.


This Python script tracks changes related to Compute Express Link (CXL) in the Linux kernel. It fetches commit messages from the Linux GitHub repository that are pertinent to CXL, specifically focusing on the drivers/cxl and drivers/dax directories. Users can specify the range of kernel versions to check, control the verbosity of the output, and decide on the output format and destination.



  • Python 3.6 or higher
  • Python requests library
  • venv or conda Python Virtual Environment (Optional)


Here’s a quick setup guide if you want to run the script locally:

  1. Install Python 3.x.
  2. Create a Virtual Environment. It’s a good practice to use a virtual environment for Python projects to manage dependencies separately from the global Python environment. You can create a virtual environment using venv or conda:

Using venv

python -m venv env
source env/bin/activate  # On Windows use env\Scripts\activate

Using Conda

conda create --name myenv python=3.8
conda activate myenv
  1. Install the required dependencies:
pip install -r requirements.txt


Clone the repository

git clone

or download the script directly:

git clone


Command-Line Options

  • --ghtoken: Specifies the GitHub API token for authenticated requests (optional but recommended to avoid rate limits).
  • --start-version: Specifies the starting kernel version to track changes from.
  • --end-version: Specifies the ending kernel version to track changes to.
  • --output: Specifies the filename where the output should be written. If not provided, output is printed to the terminal.
  • --format: Specifies the format of the output file. Options include txt, md, json. Default is terminal output.
  • --verbose: When set, the script will display detailed commit messages. By default, only commit titles are shown.


Track Changes with Default Options:

./ --start-version v6.8 --end-version v6.9

Track Changes with Verbose Output:

./ --start-version v6.8 --end-version v6.9 --verbose

Track Changes and Write to a Text File:

./ --start-version v6.8 --end-version v6.9 --output changes.txt --format txt

Track Changes and Write to a Markdown File with Verbose Output:

./ --start-version v6.8 --end-version v6.9 --output --format md --verbose

Track Changes Using GitHub Token: GitHub API has a rate limit, especially for unauthenticated requests (default). For more frequent usage or large data, use authentication by adding a token in the request headers.

./ --ghtoken YOUR_GITHUB_TOKEN --start-version v6.8 --end-version v6.9

Track Changes and Write to a JSON File:

./ --start-version v6.8 --end-version v6.9 --output changes.json --format json


Contributions are welcome! Please fork the repository and submit a pull request with your improvements. See CONTRIBUTING for more information and instructions.


This project is open source and available under the MIT License.

Related Projects

From Pixelated Memories to Real Pixels: Building My Dream Arcade Machine

From Pixelated Memories to Real Pixels: Building My Dream Arcade Machine

There’s something undeniably special about classic arcade games. The vibrant lights, the thunderous bass of fighting games, the pure, unadulterated joy of a high score – it’s an experience that just can’t be replicated on a modern console.

Read More website website

Today, I’m diving into the process of designing and building PMem.

Read More