Release notes

Guillaume Piolat edited this page Oct 18, 2018 · 38 revisions

Release notes

  • v8.0 (7 Oct 2018)

    • New rendering architecture: Raw and PBR layers, the Raw layer is drawn on top of a cached PBR layer. Practically this change means about 2x less CPU usage from GUI.

      Conceptually the updates flow this way: UIElement.onDrawPBR => mipmapping => ICompositor => UIElement.onDrawRaw => channel swap

    • BREAKING if you have custom widgets:

      • UIElement.onDraw is now replaced by onDrawPBR and onDrawRaw depending on which layer you want to draw. Note: that if the PBR layer changes, both onDrawPBR and onDrawRaw will be called since the Raw layer is always on top of the PBR Layer.
      • UIElement now has UIFlags in its constructor to say whether a widget can be animated and where it renders.
    • BREAKING if you previously used 0-physical AND pbr-widgets with manual caching:

      • setDirty now exists in two versions: setDirty(UILayer.guessFromFlags)(default) or setDirty(UILayer.onlyRaw). The latter only exists for PBR widgets that render to both layers, and need a fast render path to the composited RGBA buffer. Most of the time you can still keep using setDirty()
      • removal of the now-useless Physical channel. You can have fast behaviour using setDirty(UILayer.onlyRaw) or using widgets without flagPBR
    • BREAKING if you used color correction from PBRCompositor:

      • Color correction is now a regular UIElement operating on the Raw layer (see examples/distort to implement) Any kind of post-processing effect can be implemented likewise, provided it works on RGBA8 pixels.
    • BREAKING if you used UIBufferedElement

      • UIBufferedElement has been split in UIBufferedElementRaw and UIBufferedElementPBR depending on which layer you want to bufferize. These widgets allows you to simplify redraw logic and avoid the dirtyRects rule.
    • Note that widgets in dplug:flat-widgets and dplug:pbr-widgets have been updated.

    • Less thread launching for graphics, no PBR or Mipmap thread is launched at all if there is nothing to do. Many other graphics optimizations: #270

  • v7.0 (5 Jul 2018)

    • Starting with v7.1.y, the D runtime can be enabled back in so-called "runtime sections" (see tests/using-runtime, dangerous feature). Still buggy on Linux.

    • BREAKING Dropping compatibility of old compilers. New requirements: LDC >= 1.8 and DMD >= 2.078

    • BREAKING VST2 plugin building now depends on the VST SDK being present on the system. Point a VST2_SDK environment variable to the corresponding VST2_SDK directory in the VST SDK. This requirement trickles down to building dplug:host and related tools.

      Example: export VST2_SDK=/Users/MyName/vstsdk3610_11_06_2018_build_37/VST_SDK/VST2_SDK

    In order to distribute VST2 plug-ins, you MUST sign an agreement with Steinberg.

    • BREAKING Removed deprecated modules dplug.core.alignedbuffer, dplug.pbrwidgets.panel, dplug.dsp.envelope and all symbols marked deprecated in v6. This shouldn't break anything if your plug-in was building without warning in v6.
  • v6.0 (5 Dec 2017)

    • AAX Native support for Windows and macOS, 32-bit and 64-bit.
    • plugin.json needs an additional category key. See the accepted values in dplug.client.daw. The key CFBundleIdentifierPrefix is now mandatory.
    • plugin.json now has a JSON Schema. Use eg. VSCode to have auto-completion on it.
    • Minimum required Mac OS X version is now 10.8 or later.
    • Minimum required LDC version is now 1.2 or later.
    • The release tool has been renamed to dplug-build. For the architecture switch (-a), it now only accepts -a x86 and -a x86_64 to match what DUB does. -a x32, -a x64 and -a x86-64 are now disallowed options.
    • Much improved Linux stability, with many fixes to x11window.d.
    • New: list of compatible hosts in the Wiki.
  • v5.0 (22 Aug 2017)

    • Linux VST support (64-bit) with X11 windowing.
    • No more need for module.def (need LDC >= 1.1 on Windows).
    • plugin.json now optionally parsed at compile-time (recommended).
    • PBR widgets seggregated in the new dplug:pbr-widgets subpackage.

    Known bugs: no MIDI input in Cubase and Bitwig, X11 window backend rarely works. Using v6 recommended.

  • v4.0 (2nd Nov 2016)

    • macOS Sierra support fixed (also works in macOS High Sierra).
    • To allow that, the D runtime is now linked with but disabled. No GC, no TLS, no global ctor/dtor.
  • v3.0 (9th May 2016):

    • Audio Unit compatibility added, with both Cocoa and Carbon UI. What is still missing from AU: Audio Component API, sandboxing, v3. In other words it's on parity with IPlug but not JUCE.
    • The release tool is now much more friendly to use.
    • Special keys in dub.json are now expected in a plugin.json file next to dub.json. In the future it will be the place of autority for information about a plugin, for now this has to be duplicated in buildPluginInfo() override. An empty plugin.json is OK, defaults are in place. This file is consumed by the release tool.
    • The Wiki became a place to visit.
  • v2.0: (6th January 2016)

    • release tool now expects a VST or AU configuration, see the distort example for details
    • special dub.json key CFBundleIdentifier became CFBundleIdentifierPrefix, see how distort works to update your plugins dub.json
    • 10.6 compatibility dropped.
  • v1.0: (26th May 2015)

    • initial release, VST support for 32-bit and 64-bit, Windows and Mac
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.