0.15.0: TBD * updated to pd vanilla 0.55-2 * C: renamed ringbuffer to z_ringbuffer to match integration in upstream pure-data repo, this may require updating existing projects * C: added Emscripten support (via updates to pure-data) * C: define _DARWIN_UNLIMITED_SELECT to increased max number of file descriptors on macOS to > 1024 * C: portaudio sample now prints audio device info * ObjC: modernized xcode projects, min deployment target now iOS 12 * ObjC: fixed Swift UI PdAudioUnit crash due to input buffer being used when input is disabled (anvlkv) * ObjC: fixed warning by explictly synthesizing PdAudioController audioUnit property * ObjC: added PdAudioController overrideMutedMicrophoneInterruption option (robertesler) * C++: added PdBase setVerbose() and isVerbose() * Java: added PdBase set_verbose() function (anvlkv) * added Github CI workflow (Jean-Michaël Celerier) 0.14.1: 2023 Dec 24 * Makefile: fixed HAVE_ALLOCA_H and HAVE_ENDIAN_H being defined for Windows (reported by Davide Gagliardi) * Makefile: fixed libdl being linked on Windows, link winsock (Christof Ressi) * Makefile: do not define HAVE_ALLOCA_H or link libdl on BSD (Luc Hondareyte) * Python: updated setup.py to handle HAVE_ALLOCA_H, HAVE_ENDIAN_H, and libs conditionally based on platform in order to match Makefile behavior 0.14.0: 2023 Nov 10 * updated to pd vanilla 0.54-1 * C: define _DARWIN_C_SOURCE with HAVE_MACHINE_ENDIAN_H to fix endianness warning on macOS, for now (hopefully not needed in future pd versions) * C: added pdtest_portaudio example * C: added missing pdtest example gitignore * ObjC: modernized xcode projects, updated min deployment target to iOS 11 & macOS 10.13 * ObjC: enabled mac catalyst support (Seth Sandler) * ObjC: added auto io handling to iOS example * C++: fixed unused param, signed comparison, and ret type warnings (Mike Will) * C#: NuGet packaging updates (Thomas Mayer) * C#: MuliInstance -> MultiInstance example naming fix (Thomas Mayer) * Python: various updates and fixes to the pygame examples (Mike Will) * Java: updates for native arm64 support on macOS (funkyfourier) * Makefile: use JAVA_HOME on macOS instead of /System/... path, link JavaNativeFoundation framework instead of JavaVM (funkyfourier) * Makefile: now install m_imp.h and g_canvas.h for externals (Tiago Rezende) * added a Rust section to the main README.md (Ali Somay) 0.13.2: 2022 Dec 16 * updated to pd vanilla 0.53-1 0.13.1: 2022 Nov 13 * whoops forgot to update ObjC layer and Xcode project 0.13.0: 2022 Nov 05 * updated to pd vanilla 0.53-0 * fixed bad readme link to wiki * removed defunct libpd.cc link for now * C: print and midi hooks finally per-instance (!) * C: added double precision support: libpd_read_array_double(), libpd_write_array_double(), libpd_double(), libpd_add_double(), libpd_set_double(), t_libpd_doublehook, libpd_set_doublehook(), libpd_get_double() (IOhannes Zmoelnig) * C: added libpd_set_instancedata() & libpd_get_instancedata() for optional per-instance user data storage * C: added t_libpd_freehook type * C: fixed libpdinstance_new() memory issue * C: fixed ringbuffer mem barrier on Windows (Ali Somay) * C: call socket_init() during libpd_init() for Windows (reported by Ali Somay) * C++: added pd::PdBase per-instance support note: when compiled with PDINSTANCE defined, PdBase calls libpd_set_instance() internally so existing projects which use the libpd_*_instance() functions manually may need to be updated * C++: fixed pd::List.toString() trailing whitespace * C#: added per-instance support (Thomas Mayer) * Cocoapods: fixed clone unauthenticated git protocol error by moving to https submodule urls (reported by Ricardo de Amorim), run the following after updating a repo: git submodule sync --recursive && git submodule update --init * Cocoapods: updated podspec to exclude libpd files included with puredata source itself for now (Ricardo de Amorim) * Java: fixed build by filename typo fix and adding $(JAVA_HOME)/include to Linux search paths (funkyfourier) * Python: Makefile now builds with python3 (Shakeed Alireza) * CMake: fixed libm variable name (Jean-Michaël Celerier) * CMake: removed unnecessary BSymbolic flag on Windows (Jean-Michaël Celerier) * various readme updates and clarifications * added pdtest_double and pdtest_queued c samples * added pdtest_multi cpp sample 0.12.3: 2021 Jun 12 * libpd.xcodeproj macOS targets no longer install static lib or copy public headers to avoid creating generic archives instead of app archives * ObjC: added basic audio session mode handling to PdAudioController * ObjC: added note about setting videoRecording mode when using allowBluetoothA2DP option (suggested by lwinged) 0.12.2: 2021 May 31 * fixed pd~ core external sources not included in libpd.xcodeproj (reported by d01101010m) * CMake updates (Max Neupert, Clemens Wegener): - update CMakeLists.txt with vars for pthread paths - min version now 2.8.12 - fixed math library not found 0.12.1: 2021 Jan 08 * added pd~ core external to build * Cocoapods: fixed build error due pd~/binarymsg.c (reported by David Plans) * Cocoapods: added basic macOS platform support * ObjC: fixed conversion, unused variable, and format string warnings * C++: added resizeArray(), processRawShort(), & processRawDouble() wrappers * C++: general header formatting refresh 0.12.0: 2020 Dec 30 * updated to pd vanilla 0.51-4 * switched pure-data submodule to github * Makefile: added FAT_LIB option to build universal "fat" libs on macOS * Makefile: added STATIC option to build a static libpd.a (clwe), note: still requires updates to the pd core to work on all platforms * Makefile: fixed install when LIBPD_IMPLIB or LIBPD_DEF are empty (Sou Bunnbu) * Makefile: build libpd sources before pure-data (IOhannes Zmoelnig) * Makefile: use POSIX-compliant shell-syntax (IOhannes Zmoelnig) * CMake: fixed libm not found (André Schlinke) * CMake: write output into build directory instead of source tree (John Keeping) * Cocoapods: updated to requires_arc = true (amethystdeceiver) * C: fleshed out headers with full documentation comments * C: added libpd_resize_array() * C: added libpd_process_raw_short() & libpd_process_raw_double() (Thomas Mayer) * C: added pd core version post to libpd_init() * C: libpd_get_symbol() now returns a const char* * C: libpd_queued_init()/libpd_queued_free() are now safe to call multiple times * C: libpd_queued_init() now returns -2 on a ring buffer allocation error * C: added ring buffer write_value and clear functions * Java: fixed zip path traversal vulnerability which was causing a Google Play security alert (Ragu Pattabi) * ObjC overhaul: - updated min deployment target to iOS 9 - fixed sample rate handling on newer devices, now independent of hardware - added IO buffering when audio unit sample rate conversion is being performed - added new PdAudioController configure methods to specify separate number of input and output channels - added easy to use PdAudioController audio session category options properties, ie. Bluetooth, AirPlay, etc - added PdAudioController convenience support for configuring Record and MultiRoute categories - PdAudioUnit uses the basic AudioUnit v2 to v3 bridge (single instance only) - PdBase message queuing can now be overridden by new initializeWithQueue: class method - formatting improvements and documentation porting from z_libpd.h * ObjC: fix string corruption by using UTF8 instead of ASCII string encoding * ObjC: added virtual destructors to silence warning in Xcode (Jim Azur) * C#: added instance based API (Thomas Mayer) * C#: fixed conflicting .NET dll in NuGet package (Thomas Mayer) * Python: basic syntax updates for Python 3 * Python: added PYTHON makefile option to set python command * Python: pylibpd version now 0.12, should have tracked versions before... * pdtest C sample: now returns -1 if open file fails * pdtest_gui C sample: now uses libpd_*_instance functions * pdtest_gui C sample: Windows build fixed (reported by Diego Barrios Romero) * pdtest_rtaudio C++ sample: fixed build error & updated to rtaudio 5.1.0 * pdtest iOS ObjC sample now displays an AVRoutePicker button on iOS 11+ * various readme updates and clarifications 0.11.0: 2018 Sep 13 * updated to pd vanilla 0.48-2 * the libpd C core is now thread safe * support for multiple libpd instances is more or less working, see new libpd_*_instance() api and pdtest_multi/pdtest_thread C samples, note: language wrappers are not yet updated with the new APIs * libpd can now open a patch in the Pd vanilla GUI directly, see the new libpd_startgui()/libpd_stopgui() functions and the pdtest_gui C sample * enable/query verbose printing with new libpd_set_verbose()/libpd_get_verbose() functions (Pierre Guillot) * no longer build s_file.c as desktop settings have no real meaning for libpd, this also fixes iOS build error due to system calls being removed in Xcode 9 * libpd binaries built with MinGW now work in Visual Studio (see readme) * updated ringbuffer atomics macros to use C11 stdatomics.h if available, this fixes deprecation warning on macOS 10.12 * fixed possible crash due to stale printhook pointer (reported by Niall Moody) * fixed bug in libpd_sysex which masked 8 bit bytes, the MIDI spec allows 8 bit bytes except for realtime messages * fixed [declare -stdpath] crash (reported by Pierre Guillot) * Makefile: UTIL=true, EXTRA=true, LOCALE=false are now defaults * Makefile: added MULTI option to build libpd with multiple instance support * Makefile: installs libpd .def and .lib files on Windows * Makefile: builds working pd.dll needed by externals on Windows (Spacechild1) * Makefile: C++ headers are now conditionally installed if built with UTIL=true * Makefile: use default optimzations from pd: fast math, loop unrolling, etc * Makefile: DEBUG option now sets "-O0 -g" instead of "-Wall" * Makefile: "make install" now uses install command and sets permissions * Makefile: fixed install bug when libdir doesn't exist (Wim Muskee) * Makefile: added BSD build support (Luc Hondareyte) * Makefile: added ADDITIONAL_LDFLAGS (Pierre Guillot) * Makefile: added javadoc & javasrc targets (suggested by Pooya Moradi) * CMake: added CMakeLists.txt for cmake support (Diego Barrios Romero) * C: const int tick argument in libpd_process functions (Pierre Guillot) * C: const float src argument in libpd_write_array (Pierre Guillot) * C++: transitioned to all-header library and removed "cpplib" make target, you may need to add `libpd_wrapper/util` to you include paths, this also makes it possible to use libpd compiled by MinGW & C++ with Visual Studio * Java: added PortAudio support, build using PORTAUDIO=true makefile option * Java: allow custom natives loading by implementing PdBaseLoader class (MGSX) * Java: fixed Windows pthread naming in PdBaseLoader (reported by Pooya Moradi) * Java: moved javatest to samples/java * Java: removed out of date dist/libpd.jar * ObjC: iOS 8 is now the min-deployment target, now using ARC, modernized syntax * ObjC: macOS Xcode project universal build by default * ObjC: added PdAudioController default category option methods for subclassing * ObjC: PdAudioController should always restart on audio interruption * ObjC: PdFile now checks for file existence before opening * ObjC: fixed cocoapods swift build by only exposing obj folder (Cerupcat) * ObjC: fixed PdAudioController playback stopping when another app starts playing by setting MixWithOthers option for Playback category (Alexander Randon) * ObjC: general source commenting & formatting improvements * added pdtest_freeverb C sample (a project with a working external!) * added pdtest_thread C sample (Pierre Guillot) * updated Xcode projects for Xcode 9 * added Travis-CI support for C (Pierre Guillot) 0.10.0: 2016 Sep 24 * updated to pd vanilla 0.47-1 * fixed divide by 0 when opening a patch by calling sys_startgui() in libpd_init() (provided by Pierre Guillot) * added LIBPD_SETLOCALE define & makefile SETLOCALE option to explicitly set "C" numeric locale in libpd_init() (Thomas Mayer) * C#: major updates to build system to support 64bit (thanks to Thomas Mayer!) * mingw_build.bat -> mingw32_build_csharp.bat * mingw_build64.bat -> mingw64_build_csharp.bat * C#: added NuGet packages for .NET and Mono (Thomas Mayer) * C#: added NAudio example (Thomas Mayer) * C++: removed C++11 version check for mutex, better to simply honor use of the LIBPD_USE_STD_MUTEX define (Benjamin Porter) * Python: fixed duplicate symbol error by setting -fcommon when building (reported by David Glivar) 0.9.2: 2016 Aug 04 * ObjC: fixed bug where audio was not being routed to speaker when initing AVAudioSession, also fixes possible session setup fail where the PdAudioUnit will not run 0.9.1: 2016 Jun 06 * ObjC: fixed wrong selectors in PdMidiListener * ObjC: fixed AudioSessionSetProperty deprecations in PdAudioController * C++: simplified PdBase locking with _GUARD() macro * C++: added mutex lock()/unlock() functions, PdContext now protected, mutex now private * Podspec: fixed duplicate symbol link error by adding -fcommon * Podspec: C++ layer no longer added by default * added mingw_build64 batch script 0.9.0: 2016 May 31 * updated to pd vanilla 0.47-0 * new clone object * expr is now BSD licensed * HAVE_ALLOCA_H no longer required * ringbuffer now uses OS-specific atomics * build cpplib with UTIL files since it always uses the ringbuffer * ObjC: added access to PdFile t_pd pointer, deprecation warning fixes * ObjC: fixed AVAudioSession method call on iOS 5 and below (diglesia) * C++: allow re-init without clearing current subscribers * Android: print concatenation layer added to jni (tkirshboim) * added audio api libs to pdtest_rtaudio 0.8.3: 2015 Sep 29 * CocoaPods podspec now actually works (thanks Yair Szarf!) 0.8.2: 2015 Jul 23 * added CocoaPods podspec file * updated pure-data upstream branch which removes debug print * changed pure-data git submodule back to Pure Data sourceforge link 0.8.1: 2015 Jun 16 * ringbuffer bugfix to ensure compound messages do not cause a race condition * moved java tests back to root dir to match Java/Eclipse standard * updated Java tests 0.8.0: 2015 Apr 27 * tracking vanilla 0.46-6 (in 0.46 branch + multi instance bugfix) * pure-data source folder is now a submodule from the pd Sourceforge git * added LIBPD_EXTRA define to call pure-data/extra extern setup functions in libpd_init() * added UTIL and EXTRA Makefile vars to for conditional compilation of libpd_wrapper/utils and pure-data/extra extern sources into libpd * added DEBUG Makefile var to control build optimizations * added rudimentary install & uninstall makefile targets * added -DHAVE_ALLOCA_H, _DHAVE_LIBDL, and -ldl on OSX in libpd.xcodeproj * [netsend] & [netreceive] now working in libpd (thanks Chris!) * Android: fixed makefile for 0.45-4+ source changes * C++: added optional ringbuffer usage to init(), removed messaging queue * C++: added C++11 std::mutex locking, compile with LIBPD_USE_STD_MUTEX * C++: added "cpplib" Makefile target to build libpd + C++ wrapper * ObjC: PdAudioUnit can now be subclassed * ObjC: deprecation fix, use AVAudioSession IOBufferDuration if available * reorganized all samples & tests by language * updated C & C++ sample Makefiles so samples build and run on OSXi * added multi instance example 0.7.0: 2014 May 01 * merged with vanilla 0.45-4 * added upstream fix for iOS 64-bit function pointer crash * replaced exposed hook function pointers with setter functions * fixed iOS 6 deprecated AVAudioSession warnings * expr~ licensing now definitively LGPL * now using OpenSL for audio on Android * added isValid method to ObjC PdFile 0.6.0: 2013 Mar 13 * ObjC API refactoring: added midi message passing & manual polling * added z_queued ringbuffer message layer * added z_util concatenated print message layer * ring buffer now uses gcc atomics 0.5.0: 2013 Jan 08 * added C# wrapper & minigw build support * added support for including native libraries in libpd.jar * cross platform compilation improved * fixed backward compatibility with Android 1.5 * Processing support has moved to a separate repository * fixed midi port numbering inconsistency 0.4.0: 2012 Mar 22 * added C++ wrapper * refactored JavaSound sample for easier reuse * merge with vanilla 0.43-1 * revised Java PdListener 0.3.0: 2012 Jan 08 * major updates to the ObjC wrapper * ignoring SIGFPE to fix crash on Android 4 (ICS) * make sure the default audio routing is the speaker in iOS * 64 bit fix, added support for arbitrary length lists * removed mem allocation in ObjC audio thread * message buffer size now settable * added AudioUnit to ObjC wrapper 0.2.0: 2011 Apr 25 * added C++ compiler support * merge with vanilla 0.43 * added array access functions * added Python wrapper * added midi functions * iOS examples have moved to a separate repository 0.1.0: 2010 Nov 21 * initial libpd