Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PyAV Release Schedule #1320

Open
WyattBlue opened this issue Mar 5, 2024 · 12 comments
Open

PyAV Release Schedule #1320

WyattBlue opened this issue Mar 5, 2024 · 12 comments
Labels
meta About the project itself.

Comments

@WyattBlue
Copy link
Member

WyattBlue commented Mar 5, 2024

Here are my thoughts on the current release schedule:


v13.0.0
Release date: September/October 2024

  • Supports FFmpeg 6 and FFmpeg 7
  • Build wheels with Python 3.13
  • Drop support for Python 3.8

vx.x.x
Release date: 2028

  • Drop support for x86 MacOS targets

v12.0.0
Released: March 21st, 2024

  • Supports FFmpeg 5 and FFmpeg 6
  • Builds binary wheels against FFmpeg 6.1.1 and updates internal libraries
  • Adds type stubs for type hinting/completion

v12.1.0
Released: May 30, 2024

  • Supports FFmpeg 5 and 6
@WyattBlue WyattBlue pinned this issue Mar 5, 2024
@PyAV-Org PyAV-Org locked and limited conversation to collaborators Mar 5, 2024
@WyattBlue WyattBlue added the meta About the project itself. label Mar 5, 2024
@PyAV-Org PyAV-Org unlocked this conversation Mar 13, 2024
@daveisfera
Copy link
Contributor

Any chance support for ffmpeg 7 could make it out before Oct?

@WyattBlue
Copy link
Member Author

@daveisfera

Any chance support for ffmpeg 7 could make it out before Oct?

FFmpeg 7 removes many deprecated APIs that PyAV still depends on. PyAV would have to changes its public API to match the new ffmpeg APIs, particularly for audio. It would take a lot of work to move the new APIs, then yet more work for figure out an upgrade path for PyAV users. Due to all the time required, I'm anticipating our release to match that for Python 3.13.

Our release dates are still tentative, it could be released in September if the work is done and their is a Python 3.13 release candidate available.

@daveisfera
Copy link
Contributor

Totally makes sense! Definitely appreciate all of the work and looking forward to the release!

@hmaarrfk
Copy link
Contributor

hmaarrfk commented May 7, 2024

The FFMPEG 6 documentation of FFMPEG 6 is useful in learning how to transition to FFMPEG7
I made a personal attempt in hmaarrfk#2 As @WyattBlue mentionned, the real question is what to do about the AudioLayout class of PyAv.

@h-vetinari
Copy link

Since I don't see it mentioned, numpy 2.0 is going to come out soon as is probably worth taking into account: #1401

@jlaine
Copy link
Member

jlaine commented May 27, 2024

I disagree with dropping Python 3.8 already, especially in a minor release. Python 3.8 only reaches end-of-life in another 5 months.

Dropping Python 3.8 before its end of life makes it impossible to adopt the latest versions of PyAV in projects which support all current Python releases. For instance, I am unable to update aiortc.. which was the reason I got involved in PyAV!

@WyattBlue
Copy link
Member Author

@jlaine Okay, we can build wheels for Python 3.8. It was slowing down CI, but now that smoke tests and publishing is split, it's no longer a big deal.

@WyattBlue
Copy link
Member Author

WyattBlue commented May 28, 2024

I don't see any reason to delay 12.1.0's release. If you don't see anything wrong, I could make the release in a day.

Final Checklist:

  • Fix tests CI / Build Python 3.8 again
  • Use new pyav-ffmpeg binaries
  • Bump version in about.py
  • Write changelog
  • Build and publish new docs
  • Publish to PyPI

@jlaine
Copy link
Member

jlaine commented May 28, 2024

@WyattBlue it looks like the binary FFmpeg builds for macOs are broken, they drag in X11 libraries for the wrong macOs version. This is something which should be fixed today, I explicitly addressed this in my updates to pyav-ffmpeg.

@jlaine
Copy link
Member

jlaine commented May 28, 2024

I also disagree with dropping FFmpeg 5, this is definitely not minor version stuff.

Moreover, FFmpeg 5 is going to be around for a while, for instance it's the version that ships with the Debian stable release.

@WyattBlue
Copy link
Member Author

WyattBlue commented May 29, 2024

I also disagree with dropping FFmpeg 5, this is definitely not minor version stuff.

@jlaine Re-adding support for FFmpeg 5 now is difficult because I've promised to remove it for this release since late April.

You could:

  • Call the June release 13.0.0, which is technically easy, however, I find this very unsatisfying.
  • Make a new branch for 12.1.0 starting from 12.0.0 then cherry pick commits that still work with FFmpeg 5.
  • Make a new branch for 12.1.0 starting from main then revert commits incompatible with FFmpeg 5.

Moreover, FFmpeg 5 is going to be around for a while, for instance it's the version that ships with the Debian stable release.

People using old versions of ffmpeg can use old versions of pyav. Debian right now only ships av 11.0.0 or lesser. Also, FFmpeg 7 is going to be around for a while and I would like pyav to support it sooner rather than later.

@jlaine
Copy link
Member

jlaine commented May 29, 2024

We're using semantic versioning, so this means no breaking changes within a major release. So, either:

  • You have already made the switch to the new audio channel layout. In this case, FFmpeg 7 is now supported, and FFmpeg 5 is indeed no longer supported. This means the next release is a 13.0.0.
  • Or you have not yet made this switch, in which case there is no reason to drop FFmpeg 5, and the next release is 12.x.

AFAICT, commit e884e6c just stopped testing against FFmpeg 5, so reverting it should be trivial.

EDIT: I just put together PR #1407 which restores tests against FFmpeg 5.x, and the tests do pass, so we are still compatible with FFmpeg 5. Let's merge it, and cut release 12.1.0 as is.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
meta About the project itself.
Projects
None yet
Development

No branches or pull requests

5 participants