paraslash Paraslash Audio Streaming
About   News   Download   Documentation   Development

Development


Most of the development happens in topic branches where each development topic corresponds to one git 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.

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
completion next 6 Improved tab completion
deprecate_setatt next 1 Add options to com_touch() to supersede com_setatt()
doxygen pu 9 Improve the API reference web page
misc pu 1 Smallish changes for master
rm_sha1 next 4 Remove all traces of sha1
wmadec next 6 Improvements to the wma decoder

Topic branch details

Pass the hash value shown as sha1 below to git checkout to check out one particular topic branch.

completion

The completers for para_client and para_audioc handle some cases incorrectly or not at all. This series improves on that.

Started on 2025-04-07.

     audioc.c        |  33 +++++++++----
     bash_completion | 127 +++++++++++++++++++++++++------------------------
     client.c        | 143 +++++++++++++++++++++++++++++++++++++-------------------
     interactive.c   | 120 ++++++++++++++++++++++++++++++++++++++++++++---
     interactive.h   |   9 ++--
     play.c          |   2 +-
     6 files changed, 304 insertions(+), 130 deletions(-)

deprecate_setatt

A single patch which deprecates the setatt server subcommand. This subcommand fails, for example, if the name of an audio file happens to end in ‘+’ or ‘-’. The replacement for setatt are the two new options to the touch subcommand to set or unset attributes.

     aft.c                      | 77 +++++++++++++++++++++++++++++++++++++---------
     client.c                   | 54 +++++++++++++++++++++++++-------
     m4/lls/server_cmd.suite.m4 | 43 +++++++++++++++++++-------
     t/t0004-server.sh          |  4 +--
     web/manual.md              | 10 +++---
     5 files changed, 144 insertions(+), 44 deletions(-)

doxygen

Started on 2025-05-28

     Doxyfile                  |   4 +-
     audiod.c                  | 110 +++++++++++----------
     filter.c                  |  43 ++++----
     play.c                    |  55 +++++++----
     recv.c                    |  34 +++++--
     server.c                  |  36 +++++--
     web/documentation.in.html |  30 +++++-
     web/para.css              | 244 ----------------------------------------------
     8 files changed, 203 insertions(+), 353 deletions(-)

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.

     aft.c | 17 -----------------
     1 file changed, 17 deletions(-)

rm_sha1

The series first drops the para_upgrade_db executable because it is no longer needed. This removes the penultimate user of the sha1 infrastructure. The remaining user is the handshake between para_client and para_server.

Since paraslash-0.7.0, client and server employ sha256 by default, but fall back to sha1 in order to stay compatible to old 0.6.x versions. This series instructs server and client to always employ sha256 as the hash algorithm, breaking compatibility with 0.6.x clients. As a result, the sha1 hash algorithm is no longer used anywhere, so the corresponding infrastructure is no longer needed. This gets rid of a fair amount of code.

     Makefile.real              |   9 +-
     aft.c                      |  44 +++---
     client_common.c            |  43 ++---
     command.c                  |  36 ++---
     crypt.h                    |  49 +-----
     crypt_common.c             |  25 ---
     gcrypt.c                   |  18 +--
     m4/lls/upgrade_db.suite.m4 |  33 ----
     openssl.c                  |  15 --
     upgrade_db.c               | 384 ---------------------------------------------
     web/documentation.in.html  |   1 -
     11 files changed, 48 insertions(+), 609 deletions(-)

wmadec

Started on 2025-01-22

A few patches which remove unused code from the wma decoder and audio format handler. Notably, noise coding was removed completely since it was only used for unusual bit rates. Most likely, it never worked in the first place.

     imdct.c         |  17 +----
     wmadata.h       |  16 ----
     wmadec_filter.c | 228 ++++++--------------------------------------------------
     3 files changed, 26 insertions(+), 235 deletions(-)