paraslash Paraslash Audio Streaming
About   News   Download   Documentation   Development

Development


Development happens in topic branches where each topic corresponds to one branch. Each topic branch is merged into either of two integration branches named next and pu ("proposed updates"). The integration branches are pushed to the public repository but the topic branches are not.

Topics in early development are only merged into the pu integration branch. When the topic is feature-complete, has been tested, has no known bugs, and is fully documented, it graduates to next. Thus, topics in next are expected to be of higher quality than those in pu.

When a topic is ready for mainline, it is merged into the master integration branch and vanishes from here, since it is no longer considered as being in development. Since releases are cut from master, the commits of the topic will become part of the next release. Maintenance releases are drawn from the maint integration branch in a similar vein.

No development takes place on master and maint but the two special topic branches misc and for-maint collect small commits aiming for master and maint, respectively. The for-maint branch only receives important fixes.

The table below shows the current development topics. Run git checkout pu to get all topics or git checkout next to enable only the mature topics.

Topic IB #C Description
btr pu 5 buffer tree subsystem speedups
build next 19 Improvements to the build system
for-maint pu 1 Urgent fixes for old bugs
misc pu 3 Smallish changes for master
openssl-3 pu 10 Convert openssl code to EVP
play pu 5 Improvements to para_play
sf_float pu 1 Support 32 bit float sample format

Topic branch details

The SHA1 number shown as tip can be used to checkout a commit which only contains the changes introduced in this topic.

btr

Some helpers such as btr_get_input_queue_size() are very expensive if the buffer tree contains many buffers, which is the case for mp3 and aac streams. This is noticeable in particular with para_play, which spends more time in the btr subsystem than in the mp3 decoder if the file is large enough. This branch contains a few patches to improve that.

     aacdec_filter.c   |   3 +-
     afh_recv.c        |   2 +-
     buffer_tree.c     | 118 ++++++++++++++++++++++++++++++++++++------------------
     buffer_tree.h     |  80 ++++++++++++++++++------------------
     check_wav.c       |   2 +-
     flacdec_filter.c  |   2 +-
     list.h            |   2 +
     mp3dec_filter.c   |  10 ++---
     oggdec_filter.c   |   3 +-
     opusdec_filter.c  |   2 +-
     resample_filter.c |   3 +-
     spxdec_filter.c   |   2 +-
     wmadec_filter.c   |   3 +-
     13 files changed, 138 insertions(+), 94 deletions(-)

build

Started on 2023-06-21, cooking since 2024-03-19

This series simplifies the build system quite a bit. The bulk of the series consists of the commits which move the logic to construct the object list of the paraslash executables from configure.ac to Makefile.real.

     Makefile.in     |  31 ++--
     Makefile.real   | 266 ++++++++++++++++++++++++++-
     audiod.c        |   5 +-
     audiod.h        |   7 -
     configure.ac    | 547 +++-----------------------------------------------------
     openssl.c       |   3 -
     t/makefile.test |   2 +-
     7 files changed, 302 insertions(+), 559 deletions(-)

for-maint

This branch accumulates small but significant hotfixes for known bugs in the most stable integration branch, “maint”. Only serious issues are fixed here, and no development takes place on this branch.

The purpose of the branch is to give such urgent fixes at least a small amount of testing in pu before they are incorporated into maint. During this time the patch can be tweaked, and the documentation can be improved. Usually the commits of this branch are merged quickly, however, and it it perfectly normal if this branch is empty. play.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)

misc

The stuff in here is too small to get its own topic branch. The commits are generally regarded as safe enough to be applied directly to “master” without cooking in “next” first. However, if a commit induces a merge conflict or is important enough to get mentioned in an item of the NEWS file, the commit should get a dedicated topic branch.

Unlike most other topic branches, this branch never promotes to “next”. When a set of commits is ready to graduate to “master”, the branch is rebased onto “master” and its commits are re-ordered so that the graduating commits appear at the beginning. The last such commit is merged to “master”. This always results in a fast-forward merge, so no merge message needs to be supplied. client.c | 1 + interactive.c | 1 + ipc.c | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-)

openssl-3

Started on 2023-04-29.

The series starts with a few cleanups and crypto-backend tweaks to beat the openssl specific code into shape for the main objective: the switch of the RSA encryption and decryption routines to the high-level EVP API. This has become necessary because the old RSA API functions have been deprecated in openssl-3.

     Makefile.real   |   1 -
     client_common.c |  10 +-
     command.c       |  15 ++-
     configure.ac    |   5 +
     crypt.h         |   8 +-
     error.h         |   2 +-
     gcrypt.c        |  25 +++-
     openssl.c       | 393 +++++++++++++++++++++++++++++++++++++-------------------
     8 files changed, 303 insertions(+), 156 deletions(-)

play

This small series contains a few minor tweaks for para_play. The most obvious change is that para_play is no longer built on systems which lack libreadline.

     audiod.c        |   7 ++-
     configure.ac    | 149 +++++++++++++++++++++++++++++---------------------------
     filter.c        |   6 ++-
     filter_common.c |  17 +++----
     play.c          | 120 ++++++++++++---------------------------------
     t/t0005-man.sh  |  11 +++--
     web/manual.md   |   7 +--
     7 files changed, 139 insertions(+), 178 deletions(-)

sf_float

A single patch which adds two new sample formats for 32 bit IEEE float waveform data.

     alsa_write.c                    |  2 ++
     ao_write.c                      |  2 ++
     check_wav.c                     | 20 +++++++++++++++++---
     m4/lls/include/sample-format.m4 |  4 +++-
     para.h                          |  2 ++
     5 files changed, 26 insertions(+), 4 deletions(-)