From 06d91a6280de974b752559e91e6c9e935d45600d Mon Sep 17 00:00:00 2001
From: Richard Smith
Date: Wed, 21 Oct 2026 16:17:02 +0100
Subject: [PATCH 1/9] python 3.15 and pypy 3.12 build
---
.github/workflows/build.yml | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 572fc91..2775fca 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -30,7 +30,9 @@ jobs:
"3.12",
"3.13",
"3.14",
+ "3.15",
"pypy-3.11",
+ "pypy-3.12",
]
raylib-platform: ["Desktop", "SDL"]
env:
@@ -142,7 +144,7 @@ jobs:
runs-on: macos-14
strategy:
matrix:
- python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15", "pypy-3.11", "pypy-3.12"]
raylib-platform: ["Desktop", "SDL"]
env:
MACOSX_DEPLOYMENT_TARGET: "11"
@@ -259,7 +261,7 @@ jobs:
- /tmp:/__e/node20
env:
# Github Actions Checkout now wants Node 24. Maybe easier just to stop using Checkout than keep messing around with Node.
- ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
+ ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
strategy:
# You can use PyPy versions in python-version.
# For example, pypy2 and pypy3
@@ -274,7 +276,9 @@ jobs:
"python3.12",
"python3.13",
"python3.14",
+ "python3.15",
"pypy3.11",
+ "pypy3.12"
]
raylib-platform: ["Desktop", "SDL", "DRM", "SDL_SOFT"]
steps:
@@ -406,7 +410,7 @@ jobs:
- /tmp:/__e/node20
env:
# Github Actions Checkout now wants Node 24. Maybe easier just to stop using Checkout than keep messing around with Node.
- ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
+ ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
strategy:
# You can use PyPy versions in python-version.
# For example, pypy2 and pypy3
@@ -421,6 +425,7 @@ jobs:
"python3.12",
"python3.13",
"python3.14",
+ "python3.15"
]
raylib-platform: ["Desktop", "SDL", "DRM", "SDL_SOFT"]
steps:
@@ -540,7 +545,7 @@ jobs:
runs-on: ubuntu-22.04-arm
strategy:
matrix:
- python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
+ python-version: ["3.10", "3.11", "3.12", "3.13", "3.14", "3.15"]
raylib-platform: ["Desktop", "SDL", "SDL_SOFT"]
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
@@ -676,6 +681,8 @@ jobs:
docker-tag: "python3.13-bullseye"
- python-version: "3.14"
docker-tag: "python3.14-bookworm"
+ - python-version: "3.15"
+ docker-tag: "python3.15-bookworm"
steps:
- name: update cmake
run: |
@@ -778,7 +785,9 @@ jobs:
"3.12",
"3.13",
"3.14",
+ "3.15",
"pypy-3.11",
+ "pypy-3.12"
]
raylib-platform: ["Desktop", "SDL", "SDL_SOFT"]
steps:
@@ -893,7 +902,7 @@ jobs:
# For example, pypy2 and pypy3
matrix:
python-version:
- ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
+ ["3.7", "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14", "3.15"]
raylib-platform: ["Desktop", "SDL", "SDL_SOFT"]
steps:
- uses: actions/checkout@v4
From dbf0d29713ffede18b7a47bfb10d66aab03fa2fa Mon Sep 17 00:00:00 2001
From: Richard Smith
Date: Wed, 21 Oct 2026 17:10:32 +0100
Subject: [PATCH 2/9] update docs
---
AGENTS.md | 2 +-
README.md | 6 +++---
create_stub_static.py | 15 ++++++++++++---
docs/.buildinfo | 2 +-
docs/README.html | 22 +++++++++++-----------
docs/RPI.html | 4 ++--
docs/_sources/README.md.txt | 6 +++---
docs/objects.inv | Bin 26468 -> 26595 bytes
docs/pyray.html | 6 +++---
docs/raylib.html | 8 ++++----
10 files changed, 40 insertions(+), 31 deletions(-)
diff --git a/AGENTS.md b/AGENTS.md
index ea41560..66cb02c 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
## Project Overview
-This is **raylib-python-cffi** (version 6.0.1.0), Python CFFI bindings for Raylib 6.0 game development library. It provides two main Python modules:
+This is **raylib-python-cffi** (version 6.0.1.1), Python CFFI bindings for Raylib 6.0 game development library. It provides two main Python modules:
- `raylib`: Direct C API bindings (exact copy of C functions)
- `pyray`: More Pythonic API wrapper
diff --git a/README.md b/README.md
index 194fef5..7e8071b 100644
--- a/README.md
+++ b/README.md
@@ -21,7 +21,7 @@ original Raylib.
# Quickstart
-`pip3 install raylib==6.0.1.0 --break-system-packages`
+`pip3 install raylib==6.0.1.1 --break-system-packages`
```python
from pyray import *
init_window(800, 450, "Hello")
@@ -73,7 +73,7 @@ Then make sure you have the latest pip installed:
Then install
python3 -m pip install setuptools
- python3 -m pip install raylib==6.0.1.0
+ python3 -m pip install raylib==6.0.1.1
On most platforms it should install a binary wheel. If yours isn't available then pip will attempt to build from
source, in which case you will need to have Raylib development libs installed, e.g.
@@ -95,7 +95,7 @@ Older MacOS requires building from source but this is usually simple:
brew install pkg-config
brew install raylib
- python3 -m pip install raylib==6.0.1.0
+ python3 -m pip install raylib==6.0.1.1
## Linux
diff --git a/create_stub_static.py b/create_stub_static.py
index a192262..1a5b8f5 100644
--- a/create_stub_static.py
+++ b/create_stub_static.py
@@ -137,17 +137,26 @@ class struct: ...
# continue
print(f"class {struct}:")
# sig = ""
- fields = ffi.typeof(struct).fields
+ # Opaque structs (e.g. GLFWcursor, GLFWmonitor, GLFWwindow, rAudioBuffer,
+ # rAudioProcessor) are never defined in the parsed headers. cffi >= 2.0.0
+ # hard-aborts the process (C assert) when accessing .fields on an opaque
+ # struct, instead of returning None like cffi 1.x did. ffi.sizeof() raises
+ # a normal Python exception for opaque structs, so use it to test first.
+ fields = None
+ try:
+ ffi.sizeof(ffi.typeof(struct))
+ fields = ffi.typeof(struct).fields
+ except Exception:
+ pass
if fields is not None:
#print(ffi.typeof(struct).fields)
#print(f" {arg}: {arg}")
# print(f" def __init__(self{sig}):")
#
- for arg in ffi.typeof(struct).fields:
+ for arg in fields:
print(f" {arg[0]}: {ctype_to_python_type(arg[1].type.cname)}")
else:
print(" ...")
- # print(f" self.{arg[0]}={arg[0]}")
elif ffi.typeof(struct).kind == "enum":
print(f"{struct} = int")
diff --git a/docs/.buildinfo b/docs/.buildinfo
index aea702f..b7ba68d 100644
--- a/docs/.buildinfo
+++ b/docs/.buildinfo
@@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: d2e698b9576bffb5afca021582567e2a
+config: 2370c1c0c28e9a086ad498bde8b78861
tags: 645f666f9bcd5a90fca523b33c5a78b7
diff --git a/docs/README.html b/docs/README.html
index 0c60141..2e0e70d 100644
--- a/docs/README.html
+++ b/docs/README.html
@@ -145,13 +145,13 @@ Platforms: Windows, Mac, Linux, Raspberry Pi, Web
brew install pkg-config
brew install raylib
-python3 -m pip install raylib==6.0.1.0
+python3 -m pip install raylib==6.0.1.1
@@ -288,8 +288,8 @@ Running in a web browser