Anklang 0.2.0.nightly2311052133
Pre-release
Pre-release
github-actions
released this
05 Nov 21:48
·
819 commits
to trunk
since this release
Anklang 0.2.0.nightly2311052133
Development version - may contain bugs or compatibility issues.
Merge branch 'release-fixes' # 2023-09-08 Tim Janik d8465fd
* release-fixes:
MISC: mknews.sh: print latest NEWS.md version with `misc/mknews.sh --version`
GITHUB: workflows/release.yml: set prerelease:false for annotated tags
Fix actions/checkout@v3 and actions/checkout@v4 messing up the annotation of
the currently fetched tag, even with fetch-depth:0, see: actions/checkout#290
MISC: mknews.sh: for release tags, copy news section from NEWS.md
Merge branch 'ci-fixes' # 2023-09-10 Tim Janik 9a7e628
* ci-fixes:
MISC: mkassets.sh: remove unused file generations
MISC: dbuild.sh: delete, now unused
MISC: cirun.sh: add missing arg to help
MISC: publish.sh: remove --draft
MISC: publish.sh: determine version from tarball, show progress
MISC: publish.sh: use assets/ directory contents if present
GITHUB: workflows/testing.yml: use download-artifact@v3 to fetch release assets
GITHUB: workflows/testing.yml: make sure to generate PDF docs early on
GITHUB: workflows/testing.yml: provide GH_TOKEN for gh in publish.sh
GITHUB: workflows/testing.yml: first build docs, then upload docs/ artifact
GITHUB: workflows/testing.yml: fix Release-Upload deps, avoid skipped jobs
GITHUB: workflows/testing.yml: allow skipped jobs in Ping-IRC
GITHUB: workflows/testing.yml: use github expression for negating if
GITHUB: workflows/testing.yml: escape exclamation mark for yaml
GITHUB: workflows/testing.yml: skip Focal-Clang-Tidy for release tags
GITHUB: workflows/testing.yml: uplaod releases via misc/publish.sh
GITHUB: workflows/release.yml: remove, releases moved into testing.yml
MISC: publish.sh: download artifacts and create a release
MISC: cirun.sh: properly dockerize clang-tidy
MISC: cirun.sh: support V=1
GITHUB: workflows/testing.yml: run clang-tidy on focal
MISC: cirun.sh: use 1000:1000 to chown files for docker containers
MISC: mkassets.sh: add missing auto to cp --reflink=auto
GITHUB: workflows/testing.yml: fix env syntax for gha
GITHUB: workflows/testing.yml: use cirun.sh for all CI jobs
GITHUB: workflows/testing.yml: use cirun.sh on Focal for docs
MISC: cirun.sh: support $CITAG to determine docker run image
MISC: Dockerfile.lunar: install missing clang aliases
MISC: cirun.sh: add script that runs all CI stages via docker
MISC: Dockerfile.focal: install poxy==0.13.0
Versions poxy>=0.13.1 have problems with python-3.8 on focal.
MISC: Dockerfile.focal: install pandoc-3.1.6.2
Using pandoc-3.1.7 seems to have issues with PDF generation, anchors
in section titles cause an error and SVG images are not found.
.gitignore: minor addition
MISC: Dockerfile.focal: add clang-17 aliases
MISC: Dockerfile.focal: provide xetex, poxy and clang++-17
GITHUB: workflows/release.yml: upload draft releases for CI tests
GITHUB: workflows/release.yml: cache focal docker builds with buildx
GITHUB: workflows/testing.yml: fix comment
GITHUB: workflows/testing.yml: cache arch docker builds with buildx
GITHUB: workflows/testing.yml: cache lunar and jammy docker builds with buildx
Merge branch 'cirun-docker-caching' - let cirun handle image build and caching # 2023-09-17 Tim Janik 00c0537
* cirun-docker-caching:
GITHUB: workflows/testing.yml: use separate steps for docker image builds
GITHUB: workflows/testing.yml: make use of cirun which handles docker builds
* workflows/testing.yml: use misc/cirun -u 1000 to fix ownership
* workflows/testing.yml: fix CIMAKE for Focal-Clang-Tidy
* workflows/testing.yml: move nproc out of env variables
MISC: cirun.sh: remove, use simpler cirun
MISC: gh_delete_assets.sh: remove old helper
MISC: Dockerfile.lunar: remove old file
MISC: docker_*: remove old helpers
MISC: cirun: add docker build, run, chown and caching
MISC: cirun: add script to run commands in dockerized environments
GITHUB: workflows/testing.yml: use buildx with selective caching
GITHUB: workflows/testing.yml: configure and use buildx with selective caching
GITHUB: workflows/testing.yml: remove unused actions/upload-artifact
GITHUB: workflows/testing.yml: split asset builds into separate job
MISC: cirun.sh: add --build, note that --check includes --build
MISC: mkassets.sh: fix outdated globs
Merge branch 'thin-lto' - improve LTO builds # 2023-09-17 Tim Janik 0e21fc8
* thin-lto:
ASE: main.cc: add missing formats to WAV output help
MISC: config-uname.mk: when using LTO, enable Thin LTO with clang
Thin LTO can result in smaller binaries and better performance.
Merge branch 'use-git-submodule' # 2023-09-21 Tim Janik 22cf347
* use-git-submodule:
DOC: copyright.ini: apply MPL-2.0 to .gitmodules
MISC: Makefile.mk: directly create and reference .dlcache/ for mkassets.sh
MISC: Makefile.mk: mkassets: download builds tools before misc/mkassets.sh
GITHUB: workflows/testing.yml: use `make mkassets` for release builds
.gitignore: ignore .submodule-stamp
UI: global.scss, index.html: move AnklangIcons to assets/
UI: Makefile.mk: copy anklangicons-*.tgz files to assets, remove download
EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 21:04:16
git -C external/blobs4anklang/ checkout 7b0a4a68a1e9efbe68fc9761bef080995f4b4d6b
UI: global.scss, index.html: move fork-awesome to assets/
UI: Makefile.mk: copy node_modules/fork-awesome to assets, remove download
MISC: package.json.in: install [email protected]
UI: Makefile.mk: use blobs4anklang/fonts/InterVariable.woff2, remove download
EXTERNAL: blobs4anklang: add tim-janik/blobs4anklang commit from 2023-09-21 18:23:36
git submodule add --name blobs4anklang https://github.com/tim-janik/blobs4anklang.git external/blobs4anklang
git -C external/blobs4anklang/ checkout 8da35f3914b9668bacc6755a8051a17051b07c3a
Makefile.mk: skip `git submodule` in tarball builds
Makefile.mk: dist: exclude unused external subdirs from tarball
Makefile.mk: include submodule archives in dist tarball
ASE: Makefile.mk: use blake3 submodule, remove download rule
ASE: compress.cc: use external/blake3/c/blake3.h
EXTERNAL: blake3: add BLAKE3-team/BLAKE3 version 1.3.1
git submodule add --name blake3 https://github.com/BLAKE3-team/BLAKE3.git external/blake3
git -C external/blake3/ checkout 1.3.1
ASE: Makefile.mk: use websocketpp submodule, remove download rule
EXTERNAL: websocketpp: add zaphoyd/websocketpp version 0.8.2
git submodule add --name websocketpp https://github.com/zaphoyd/websocketpp.git external/websocketpp
git -C external/websocketpp/ checkout 0.8.2
ASE: Makefile.mk: use clap submodule, remove download rule
EXTERNAL: clap: add free-audio/clap version 1.1.1
git submodule add --name clap https://github.com/free-audio/clap.git external/clap
git -C external/clap/ checkout 1.1.1
ASE: Makefile.mk: use rapidjson submodule, remove download rule
EXTERNAL: rapidjson: add Tencent/rapidjson commit from 2022-05-24 10:03:13
git submodule add --name rapidjson https://github.com/Tencent/rapidjson.git external/rapidjson
git checkout 232389d4f1012dddec4ef84861face2d2ba85709
Makefile.mk: update all submodules before building sources
Makefile.mk: remove external/ subdir from ls-tree.lst
MISC: mkcopyright.py: ignore dirs passed from `git ls-tree` on the CLI
ASE: storage.cc: adjust old link to zlib-ng/minizip-ng/issues/433
ASE: minizip: build against external/minizip-ng/
ASE: Makefile.mk: use minizip-ng submodule, remove download rule
EXTERNAL: minizip-ng: add zlib-ng/minizip-ng version 2.9.0
git submodule add --name minizip-ng https://github.com/zlib-ng/minizip-ng.git external/minizip-ng
.gitignore: remove entries of files the build is not generating
Merge branch 'bug-fixes' # 2023-09-23 Tim Janik e9015b9
* bug-fixes:
GITHUB: workflows/testing.yml: upload dist tarball as isolated smaller artefact
GITHUB: workflows/testing.yml: upgrade to actions/[email protected]
MISC: *.sh: use '#!/usr/bin/env bash' for bash scripts, fixes #17
Merge branch 'fix-warnings' # 2023-09-29 Tim Janik 9c1a062
* fix-warnings:
ASE: track.cc: fix signedness
ASE: utils.cc: cosmetic change
ASE: project.cc: cosmetic change
ASE: nativedevice.cc: fix signedness
ASE: midilib.cc: fix signedness
ASE: midievent.cc: cosmetic change
ASE: internal.hh: cosmetic change
ASE: inifile.cc: fix signedness
ASE: engine.cc: cosmetic change
ASE: compress.cc: fix write check signedness
ASE: combo: fix insert position signedness
ASE: clapplugin.cc: cosmetic change
ASE: device.cc: remove unused code
ASE: blob.cc: cosmetic fix
MISC: Makefile.mk: clang-tidy: fix missing includes
ASE: clapplugin.cc: cosmetic fix
ASE: loop.cc: fix typo
Merge branch 'main-rt-jobs' # 2023-09-30 Tim Janik a3f8f29
* main-rt-jobs:
ASE: main.cc: fit one RtCallJob into a cache line
This becomes possible with RtCall allocating just 4 pointer sizes.
Since Loft allocates at cache line boundaries only, this essentially
halves the size of an RtCallJob allocation.
ASE: callback: shrink struct RtCall by a pointer
ASE: loft: fix and test LoftPtr<T> actually running ~T
ASE: engine.hh: add comment about main_rt_jobs
ASE: main.cc: turn debugging code into real job_queue_tests
ASE: main: main_rt_jobs: add main_loop callback queue without invoking malloc()
ASE: callback: RtCall: wrap simple callback pointers, without using malloc
ASE: cxxaux.hh: add unalias_ptr<> helper
ASE: callback.cc: add a small callback list test
ASE: callback: add CallbackList - reentrant cb list with configurable arguments
ASE: callback: move JobQueue implementation here
Merge branch 'websocket-fix' # 2023-10-01 Tim Janik a5f9ca9
* websocket-fix:
ASE: jsonapi.cc: cache socket nickname for use during errors
ASE: websocket.cc: avoid exceptions in boost::asio socket.remote_endpoint()
ASE: callback.hh: remove (sync) return value handling in JobQueue
ASE: jsonapi.cc: wait for main loop callback completion via semaphore
Merge branch 'audio-engine-job-cleanups' # 2023-10-01 Tim Janik 8067acc
* audio-engine-job-cleanups:
ASE: engine.hh: document engine lifetime
ASE: engine: remove BorrowedPtr, simplify EngineJobImpl
ASE: clapplugin.cc: use main_rt_jobs queue to delete events from audio_thread
ASE: clapplugin.cc: rename ClapAudioProcessor
ASE: project.cc: do not (auto) destroy all projects during atexit
ASE: main.cc: shutdown: unset engine project and handle main loop callbacks
ASE: engine: make transport a reference, move job queues into AudioEngine
ASE: engine: rename AudioEngineThread
Merge branch 'c++20' # 2023-10-10 Tim Janik 3a7c2d3
* c++20:
MISC: mkAppImage.sh: fix $ORIGIN in AnklangSynthEngine-fma, add jackdriver.so
MISC: Dockerfile.focal: install latest poxy (again)
MISC: Dockerfile.focal: provide libstdc++-10-dev and a recent castxml
MISC: config-uname.mk: optimize with clang -march=x86-64-v3 on modern platforms
Clang chokes on '-march=haswell -mno-hle', so we use '-march=x86-64-v3' which
is close to Haswell, the clang docs say:
-march=x86-64: CMOV, CMPXCHG8B, FPU, FXSR, MMX, FXSR, SCE, SSE, SSE2
-march=x86-64-v2: (close to Nehalem) CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3
-march=x86-64-v3: (close to Haswell) AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE
-march=x86-64-v4: AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL
MISC: mkassets.sh: adopt compiler config and fix make V=1
* Support make with V=1 during asset builds
* Copy compiler config from config-defaults.mk for mkassets
Makefile.mk: ignore leading spaces in config-defaults.mk
ASE: properties.hh, processor.hh: remove unused (and conflicting) GroupId
ASE: memory.cc: test CString operators
ASE: memory.hh: CString: provide operator== and operator<=> to disambiguate
JSONIPC: cxxjip.py: switch from C++17 to C++20
README.md, *.mk: switch from C++17 to C++20
ASE: memory.hh: always provide ctor for Block initialization
Merge branch 'preferences' and live PCM driver updates # 2023-10-16 Tim Janik c7ece44
* preferences:
UI: util.js: call prop->ident()
ASE: shorten Parameter method ident()
ASE: strings: add fallback to string_option_find(), remove string_option_get()
ASE: testing.cc: use string_option_find_value()
ASE: processor.cc: use string_option_find()
ASE: cxxaux.cc: use ase_fatal_warnings
ASE: main: remove feature toggles, use ase_fatal_warnings
ASE: utils: export ase_fatal_warnings
ASE: utils.cc: base debug key checks on string_option_find_value()
ASE: strings: base option search on string_option_find_value() (without malloc)
ASE: project: create_properties: use property_bag() and Prop
ASE: clapdevice.cc: use parameter_guess_nick()
ASE: gadget: add property_bag() and create_properties()
UI: b/preferencesdialog.vue: edit everything with Shift+Ctrl+Alt+Click [Close]
UI: b/preferencesdialog.vue: fetch + edit only selected PCM + MIDI preferences
UI: b/objecteditor.js: fix blurb and descr bubbles
UI: index.html, eslintrc.js: allow _("for translation") markup
UI: util.js: rename extended Property descr() (abbreviate)
UI: b/choiceinput.js: treat choice property as string
UI: b/preferencesdialog.vue: special case driver.pcm.devid
UI: b/objecteditor.js: rename internal function on xprop
UI: b/contextmenu.js: support focus_uri
ASE: engine.cc: add preferences for up to 4 MIDI controllers
ASE: engine.cc: cache PCM driver live listing for ca half a second
ASE: engine: change PCM driver when preferences change
ASE: engine.cc: add audio.synth_latency Preference
ASE: driver*: allow to query all PcmConfig values from drivers
ASE: api.hh, server: remove all old preference handling
ASE: api.hh, server: add Server.list_preferences()
ASE: properties: add Preference classes and majorly simplify Property impls
* Remove obsolete structures and aux constructors
* Add getter/setter lister for enumeration types
* Add PropertyBag - a helper to simplify property registrations
* Add small PropertyImpl based on ParameterProperty
* Add generic Preference class, useful for static initialization
* Remove property nick guessing
* Add global Preference setting list based on Parameter
* Implement saving/loading preferences from anklangrc
* Auto save preference changes after maybe half a second
* Ensure that Preference names follow NCName syntax
ASE: defs.hh: add PropertyImpl
ASE: api.hh: rename Property.descr() (abbreviate)
ASE: api.hh, server: provide access_preference() instead of access_prefs()
ASE: api.hh: add constexpr GUIONLY, STORAGE, STANDARD to avoid C++ SIOF
ASE: main.cc: save/load preferences unless --norc is given
ASE: processor: use Parameter instead of the old ParamInfo
ASE: parameter: add Parameter, ParameterProperty and parameter_guess_nick()
* Implement Parameter{} with Param{} as initializer
* Add constrain, normalize and text conversions
* Implement simple ParameterProperty abstract base class
* Support callback function to query parameter choices
* In set_value: constrain Value according to parameter range
* Use variants for flexible initilizers
* Treat choice parameters as text
* Match choices via normalized Damerau-Levenshtein distance
* Add parameter_guess_nick() (former on property_guess_nick).
ASE: value.hh: add Value::is_string()
ASE: object.cc: allow NCName as event detail, to support preference identifiers
ASE: defs.hh: declare Preference
ASE: strings: add kvpairs_search()
ASE: strings: define and use ASE_STRING_SET_ASCII_ALNUM and _LOWER_ALNUM
ASE: unicode.cc: add missing docs
ASE: unicode: add string_to_ncname() and string_is_ncname()
ASE: levenshtein: compute (un)restricted Damerau-Levenshtein string distances
ASE: defs.hh: add F32EPS and F32MAX
ASE: memory.hh: declare CStringS
ASE: loop: add exec_once()
ASE: cxxaux.hh: add ASE_ASSERT_ALWAYS()
MISC: package.json.in: reduce wait delay for rebuilds
Merge branch 'package-updates' # 2023-10-24 Tim Janik 1c7da51
* package-updates:
MISC: package.json.in: update babel, eslint, rollup, electron, postcss, lit
Major version updates:
- electron-27.0.2
- icon-gen-4.0.0
- lit-3.0.0
- rollup-4.1.4
- postcss-lab-function-6.0.7
- puppeteer-core-21.4.0
MISC: package.json.in: update to vue-3.3.6
Merge branch 'pnpm' # 2023-10-24 Tim Janik f1b37e4
* pnpm:
MISC: config-checks.mk: remove unused NPM_INSTALL
Makefile.mk: save XNPM to defaults and use it to install node_modules/
MISC: config-checks.mk: check for pnpn, provide as $(XNPM)
UI: Makefile.mk: fetch Lit version directly from node_modules/lit/package.json
X11TEST: ereplay.cjs: set timeout to 2500 to allow click durations of 2200ms
Merge branch 'bun' # 2023-10-24 Tim Janik 63e4292
* bun:
Makefile.mk: fix up sharp and electron installations with bun
At the moment, we need to call the postinstall scripts manually, see:
https://github.com/oven-sh/bun/pull/5077
MISC: config-checks.mk: support bun 1.0.0 as package manager
Merge branch 'g++-bun-pnpm-ci' # 2023-10-27 Tim Janik 042fd7a
* g++-bun-pnpm-ci:
GITHUB: workflows/testing.yml: test Arch builds with g++
MISC: Dockerfile.arch: provide pnpm as JS package manager
MISC: Dockerfile.arch: update build comments
MISC: Dockerfile.focal: provide bun as JS package manager
MISC: cirun: defer check for docker-buildx-plugin until we actually need it
Makefile.mk: guard against `prefix := / / ` etc which will confuse `rm -rf`
EXTERNAL: websocketpp: update zaphoyd/websocketpp to 2022-05-24 18:42:50 2022 -0500
git -C external/websocketpp/ checkout b9aeec6eaf3d5610503439b4fae3581d9aff08e8
This includes fixes applied after version 0.8.2, in particular it allows g++ to build
the sources with C++20 enabled. See:
https://github.com/zaphoyd/websocketpp/issues/991
Merge branch 'npm-updates' # 2023-11-01 Tim Janik 8d56822
* npm-updates:
MISC: package.json.in: update various minor versions
Makefile.mk: allow $NPM_INSTALL overrides via config-defaults.mk
This allowes e.g.:
NPM_INSTALL = pnpm install --prefer-offline
Merge branch 'constrain-parameters' # 2023-11-01 Tim Janik fff51b9
* constrain-parameters:
UI: b/databubble.js: fix assertion
ASE: processor.cc: use parameter->dconstrain()
ASE: parameter: add dconstrain() to convert to double and constrain
ASE: processor.cc: use Parameter::construct_hints()
ASE: parameter: export construct_hints(), always use "stepped" hint for bools
UI: b/propinput.js: give toggles preference over choices
ASE: processor.cc: remove unused choices from boolean param
ASE: serialize.cc: call jsonvalue_to_string() directly
ASE: jsonapi.cc: call jsonobject_to_string() directly
JSONIPC: jsonipc.hh: always write null instead of NAN, ±Inf
Remove JsonWriteFlags from the (template) API.
JSONIPC: Makefile: fix include path to external/rapidjson/
EXTERNAL: rapidjson: update Tencent/rapidjson to 2023-09-28 11:36:59 +0200
git -C external/rapidjson checkout f9d53419e912910fd8fa57d5705fa41425428c35
Among other changes, this provides kWriteNanAndInfNullFlag.
ASE: parameter: value_from_text(): yield integers for text inputs of choices
Merge branch 'swesterfeld-blepsynth-sallen-key-filter', closes #10 # 2023-11-01 Tim Janik 441cbca
* swesterfeld-blepsynth-sallen-key-filter:
ASE: resampler2: remove, superseded by pandaresampler
DEVICES: blepsynth/blepsynth.cc: reorder parameter groups
DEVICES: blepsynth/Makefile.mk: include external/pandaresampler/lib
EXTERNAL: pandaresampler: add swesterfeld/pandaresampler commit from 2023-02-14 10:18:45
git submodule add --name pandaresampler https://github.com/swesterfeld/pandaresampler.git external/pandaresampler
git -C external/pandaresampler checkout 29097dc786b6d75a9deb12e70ec8960a78f7f8f5
DEVICES: blepsynth: update LadderVCF with drive/reso boost
DEVICES: blepsynth: optimize filter code if freq/reso/drive are constant
DEVICES: blepsynth: update LadderVCF, setup cutoff frequency range
DEVICES: blepsynth: add latency compensation for LadderVCF
DEVICES: blepsynth: update LadderVCF to version from dsp-research
- oversample LadderVCF with factor 4, too
DEVICES: blepsynth: compensate for SKFilter FIR oversampling delay
DEVICES: blepsynth: reset filter state on filter type change
DEVICES: blepsynth: reset SKFilter state if filter mode changes
DEVICES: blepsynth: make cutoff parameter log-scaled
DEVICES: blepsynth: rename vcf_ to ladder_filter_; minor cleanups
DEVICES: blepsynth: implement midi velocity handling and add master gain
DEVICES: blepsynth: smooth drive / reso input for Sallen-Key Filter
DEVICES: blepsynth: add Sallen-Key Filter