
﻿== Major JUCE features and updates ==

This file just lists the more notable headline features. For more detailed info
about minor changes and bugfixes, please see the git log!

Version 4.2.1
  - New class CachedValue, for providing easy and efficient access to ValueTree properties
  - Reduced audio plug-in binary sizes on OS X and added symbol-stripping option
  - Miscellaneous fixes and improvements

Version 4.2
  - Added support for AudioUnit v3 on OS X and iOS
  - Simplified the JUCE module format. Removed the json module definition files, and made
    it easier to manually add modules to projects. The format is fully described in the
    document juce/modules/JUCE Module Format.txt
  - iOS project support: added custom resource folders, custom xcassets, app capabilities,
    and screen orientation settings.
  - Deleted the Introjucer.. But don't panic! All of its functionality is now supplied by a
    more open-source version of the Projucer. By refactoring the closed-source LLVM compilation
    code into a DLL, we've been able to unify the Introjucer and Projucer into a single
    open-source project. This will allow everyone to compile the Projucer's IDE themselves, and
    having just one app instead of two will make things a lot less confusing!

Version  4.1
  - Added multi-bus support for audio plug-in clients
  - Added support for MIDI effect plug-ins (AU and AAX).
  - Added new example: Network Graphics Demo

Version 4.0.3
  - Added MPE (Multidimensional Polyphonic Expression) classes
  - Added full support for generating and parsing Midi RPN/NRPN messages
  - Made the LinearSmoothedValue class public
  - Miscellaneous fixes and minor improvements

Version 4.0.2
  - Miscellaneous fixes and house-keeping

Version 4.0.1
  - Initial release of the Projucer!
  - Full OSC support!
  - Android Studio exporting from the Introjucer
  - Android-M pro-audio low-latency i/o support
  - Bluetooth MIDI device support on iOS and Android
  - AudioSampleBuffer refactored into a templated class AudioBuffer, to allow
    32 or 64 bit float support
  - Audio plugin and hosting now supports 64-bit data
  - Support for force-touch and pen pressure on iOS and Windows
  - Added easy sound-file playing methods to AudioDeviceManager
  - Many updates to Introjucer
  - Many new tutorials and examples

Version 3.3.0
  - New functions for Base64 conversion
  - New command-line options in the introjucer for trimming whitespace and
    replacing tabs in source files

Version 3.2.0
  - Major OpenGL performance/stability improvements
  - Performance improvements to FloatVectorOperations math functions
  - New FloatVectorOperations: abs, min, max, addWithMultiply, clip
  - Midi channel pressure support
  - New example projects ComponentTutorialExample, SimpleFFTExample,
    PluckedStringsDemo
  - New class ValueTreeSynchroniser, for remote-syncing multiple
    ValueTrees
  - HTTPS/SSL support on Linux
  - Added methods for degrees to radians conversions
  - Added Neon instruction set support for Android targets
  - JUCE ValueTree performance improvements
  - Linux and Android multi-monitor HiDPI support
  - Support the “display=none” attribute in SVG files
  - Support for text elements in SVG files
  - Added Whirlpool hash class to the cryptography module
  - Various improvements for parameter automation in VST, VST-3,
    AudioUnits and AAX
  - Various improvements to JUCE Synthesiser
  - Linux Code::Blocks project support
  - Multicast support
  - Add support to generate project version numbers from project git tags
  - Various updates to example projects
  - Stability improvements to re-order and resize code of plug-in windows
  - Support for external third-party native libraries on Android
  - Introjucer’s auto-update now displays release notes
  - Various Introjucer usability improvements
  - Support for in-memory fonts on Android
  - New FFT class
  - WASAPI exclusive mode support
  - More C++11 feature support macros
  - Performance improvements to XML parsing
  - Add compatibility for AAX SDK 2.2.0
  - Added parameters to the ValueTree::Listener::valueTreeChildRemoved()
    and valueTreeChildOrderChanged() methods to include more info about
    exactly what changed
  - Over 400 minor changes, bug-fixes, documentation improvements, etc.

