Skip to content

NextReleasePlan

Ross Bencina edited this page Sep 25, 2016 · 31 revisions

h1. Planning for the Next Release

This page describes the changes that we are planning to include in the next release.

h2. Proposed Schedule

  • Friday, September 16, deadline for new merge requests (including e.g. ALSA fix)
  • Friday week, September 23, deadline for approval of merge requests. ** Anything that's still in review on Sept 23 will not be merged for the release. Then we take the RC snapshot. ** Freeze master branch. (Or make a release branch?) ** Run all tests release candidate.
  • Friday September 30 - Release

h2. YES - include these

(No more changes planned at this stage)

h2. MAYBE

(No more changes planned at this stage)

h2. NO - include in a future release

Hotplug feature.

url:https://app.assembla.com/spaces/portaudio/git/merge_requests/3719213 This is a very useful new feature. But it has not been tested much. Ross says it could have a big impact if it gets rushed into Linux distros. So let's test it awhile in the nightly snapshot before releasing it as "stable".

Ross says there are some internal changes and refactoring for HotPlug that could go in now without making any API changes.

h2. Already Merged

The release is made directly from master So any changes that are already merged into master will be included.

h2. API/ABI Changes in This Release

h3. Changes to portaudio.h

There were no changes to existing portaudio.h API/ABI in this release. The API was extended as follows:

Prior to March 3, 2015, Pa_GetVersion() always returned 1899 in the V19 version of PortAudio.

On March 3, 2015, enhanced version retrieval APIs were added to portaudio.h:

  • Pa_GetVersion() now returns a useful number, e.g. 0x00130501 for 19.5.1
  • added paMakeVersionNumber macro for comparing to int version returned by Pa_GetVersion()
  • added PaVersionInfo struct with version major, minor, subminor, versionControlRevision, versionText
  • added Pa_GetVersionInfo() gets PaVersionInfo struct
  • Pa_GetVersionText() is deprecated; use Pa_GetVersionInfo()->versionText

On March 3, 2015, the version number was set to 19.5.0. (5 was chosen to reflect that there were 4 prior V19 stable snapshots.)

This new release has version number 19.6.0.

The Host-API-specific structures for WDM/KS and WASAPI were altered in this release. This is an ABI change. Client code depending on these particular host-API-specific APIs will need to be recompiled and linked against a compatible PortAudio version. See below.

h3. Changes to WDM/KS Host-API-specific Struct in pa_win_wdmks.h

These changes were made on April 9, 2014. At that time Pa_GetVersion() returned 1899. The changes are present when the version number is 19.5.0 or greater.

Forward/backward compatibility: The implementation checks the size field of PaWinWDMKSInfo. The old version will reject new structs, and the new version will reject old structs. In both cases paIncompatibleHostApiSpecificStreamInfo is the error returned.

h3. Changes to WASAPI Host-API-specific Struct pa_win_wasapi.h

These changes were made on October 19, 2015. At that time Pa_GetVersion() returned 19.5.0. The changes are present when the version number is 19.6.0 or greater.

Forward/backward compatibility: The implementation checks the size field of PaWasapiStreamInfo. The old version will reject new structs, and the new version will reject old structs. In both cases paIncompatibleHostApiSpecificStreamInfo is the error returned.

h2. Full List of Changes

Here's the full list of commits since the last stable snapshot:

url:https://app.assembla.com/spaces/portaudio/git/compare/portaudio:master%2e..portaudio:pa_stable_v19_20140130_r1919

In summary:

  • Add new version number API (see above)
  • Updated version number to 19.6.0
  • Various documentation improvements, including:
  • Update docs for building on Linux
  • Clarified safety of operations in callback
  • CMake support for Unix platforms (thanks to Nick Appleton) MR: https://app.assembla.com/spaces/portaudio/git/merge_requests/3751483 commit 3765e908c24b8163e86c450924655237b010030c
  • Moved repository to Git
  • pa_process: Fix output channel adaption by not skipping the conversion when the host and user number-of-channels are not equal. Reported by Leif Asbrink. commit c0c0cb1414bb75efe90b0a0d4cc2f855afe9d3d3
  • C++ binding: make operator == and != const. thanks to Riot for patch. ticket #230

h3. Linux

h3. Mac

h3. Windows

  • win: Removed Microsoft copyright include files from src/hostapi/wasapi/mingw-include (may affect MinGW builds)
  • win: Removed MSVC dependence on ksguid.lib from src/os/win/pa_win_wdmks_utils.c (ksguid.lib is no longer in Platform SDK 8.0, always use static instances of GUID.)
  • win mingw: Issue #234 fixed typo in configure and configure.in affecting mingw builds.

h3. WASAPI

  • pa_win_wasapi: ported to WinRT (UWP) platform, compatibility fixes to compile PortAudio as Windows Store library (only WASAPI hostapi is compatible with Windows Store APIs) MR https://assembla.com/code/portaudio/git/merge_requests/3643753 MR https://assembla.com/code/portaudio/git/merge_requests/3772573
  • pa_win_wasapi: use InterlockedXXX APIs to secure inter-thread r/w access to variables to avoid possible deadlocks or logic corruption
  • pa_win_wasapi: workaround to avoid PaWasapi_Initialize() failure when enumerating devices and device fails to report min/default periods
  • pa_win_wasapi: support for setting the WASAPI's AudioClientProperties options via PaWasapiStreamInfo

h3. WDM/KS

h3. WMME

  • pa_win_wmme: avoid potential (but highly unlikely) overflow in buffer size in call to WideCharToMultiByte if a device name length exceeds INT_MAX.
  • pa_win_wmme: correctly convert device names to UTF-8, see ticket #224. Thanks to Tobias Erichsen for the patch.

h3. DirectSound

  • pa_win_ds: correctly output device names as UTF-8 when compiled with UNICODE defined. Note that this patch may not be correct if UNICODE is not defined.
Clone this wiki locally