Releases: praxis-live/praxis-live
PraxisLIVE v6.6.0
This is the seventh release of PraxisLIVE and PraxisCORE v6.x. It brings a few new features, includes third-party updates, and fixes some issues.
The cross-platform zip is downloadable below. Installers built from this zip are now distributed at https://github.com/codelerity/praxislive-installers/releases
Changes
PraxisCORE runtime
- Added
ValueMapperforrecordtypes. Any record made of mappable types (including other records) can be used as property values and function arguments. Records are mapped toPMap, which now supports a limited schema in argument info. - Added validating mappers, and enhanced functions to support use of
@Type.*annotations on parameters. - Improved threading control when using
@Driverto control custom roots. This includes ability to disable background polling or provide custom on-receipt handling (eg. map toEventQueue). AddedmarkForStopto shut down the root, handling all clean-up before handing control back to the calling library. - Added
Async.MapQueuefor handlingAsynccompletion where a reference to another object, including anotherAsync, is necessary. - Fixed issue with
Data.Sinkpackets not being correctly disposed, and added manual control to flush all caches. - The default task service now uses virtual threads.
- Allow
@command to continue when component exists when running under--trap-errors. The component type is checked for a match. This will allow for future reapplication of scripts, better undo functionality, etc. - Added support for
libraries.mapfiles for embedding libraries inside projects while keeping a record of their dependencies. Pcl commands and UI support for this will come in a later release. - Added
Hub::evalmethod to run scripts in a hub from outside. - Added version output support (
--version) and brandable messages inLauncher. - Updated LWJGL, JLine, Netty, MIMA, Picocli and various build plugins.
PraxisLIVE IDE
- Updated to Apache NetBeans 29 platform and various other dependency updates.
PraxisLIVE v6.5.0
This is the sixth release of PraxisLIVE and PraxisCORE v6.x. It enhances a few features, includes third-party updates, and fixes some issues.
The cross-platform zip is downloadable below. Installers built from this zip are now distributed at https://github.com/codelerity/praxislive-installers/releases
Changes
PraxisCORE runtime
- Add optional support for reordering children in a container.
ContainerProtocoladds optionalchildren-ordercontrol. Code containers and roots can added the@Reorderableannotation to opt in. - Add pretty-printing support to
Valueto format values in a more human-friendly way, while remaining parsable. Also added Pcl command - eg.print [/root/component.info]. - Add methods to control property syncing in
Property.Sync, includingpoll(boolean ..)andpollNow()trigger. Added plainvalues()method toPropertyreturningLinkable<Value>. - Fix issues with running projects using embedded runtime, including disabling autorun for children and IDE usage.
- Fix
@OnChangeand@OnErrorannotations not working within shared code bases. - Fix issue with closed always-on-top video windows interfering with IDE usage on macOS.
- Update Netty, Ion, MIMA and build plugins.
PraxisLIVE IDE
- Various improvements to table editor, including basic support for reordering components via popup menu action on containers.
- Update libraries editor in project properties to use a text area for easier editing, and fix issue with
relative paths. - Update project launcher to use embedded runtime if available. Can be disabled in project properties. Also set working directory, and output path and launcher information on execution.
- Updated to Apache NetBeans 28 platform and various other dependency updates.
PraxisLIVE v6.4.0
This is the fifth release of PraxisLIVE and PraxisCORE v6.x. It adds various useful new APIs, third-party updates, as well as improved support for and bundling Java 25.
Changes
PraxisLIVE IDE
- Updated to Apache NetBeans 27 platform and Java 25.
- Fix issue with bundling CORE in projects.
- Fix issue with mode detection during editor opening.
PraxisCORE runtime
- Add
Property.SyncAPI for binding property values to another property. - Add
Trigger.TimerAPI for triggering a timer with one-shot or periodic timers. Also updatesTriggerto support@Inject. - Add
childrenChanged()hook in codeable roots and containers to track changes. - Add
eval()for executing Pcl scripts from components. - Various other minor updates.
- Update Netty, JNA, MIMA, and various build tools.
Known Issues
- An issue with OpenGL windows on latest macOS Tahoe makes some IDE dialogs unfocusable after running video projects. Save the project and force quit the Java process in the dock to return control to the IDE. Or click on the main window bar, then tab / space in the dialog. The issue is being investigated.
PraxisLIVE v6.3.0
This is the fourth release of PraxisLIVE and PraxisCORE v6.x. It mainly addresses bug fixes and third-party updates, as well as improved support for and bundling Java 24.
Changes
PraxisLIVE IDE
- Updated to Apache NetBeans 26 platform and Java 24.
- Fix issue with occasional orphaned processes left after application exit.
PraxisCORE runtime
- Update to libP5X v4.43.0.2 - fix support for fullscreen video windows in some setups, and add back support for undecorated windows.
- Allow video output windows to be resized (scaled down), and improve mapping of mouse position for scaled and rotated outputs.
- A known issue in GLFW on macOS might lead to a crash if resizing.
- Fix support for
@Proxyand@Driverto reference types in added libraries. - Update Netty and JLine.
- Fix MIMA integration to ignore optional dependencies.
- Add a JVM args file to CORE runtime, and suppress warnings about native library usage on JDK 24.
PraxisLIVE v6.2.0
This is the third release of PraxisLIVE and PraxisCORE v6.x. Watch function displays now support SVG; the Data pipes API has seen enhancement; component and root template support has been improved; and various third-party dependencies have been updated.
Changes
PraxisLIVE IDE
- Added support for SVG displays in exposed watches in graph editor.
- Added support for container watches and properties to be exposed on graph.
- Updated standard colours, and added different colours for custom components registered outside
core:(magenta), as well as colours for Data (magenta) and Ref (cyan) ports. - Improved template export for root and components. Both support inclusion of project libraries. Component templates can also include shared code. Import of shared code does not override existing shared types.
- Updated to Apache NetBeans 25 platform.
- Various bug fixes.
PraxisCORE runtime
- Enhanced Data Pipes API.
- Added
Data::combineandData::combineWithfor easier creation of pipes that combine sources via custom function. - Added
Data::identityto create a placeholder. - Added
Data.Pipe::withSourcesandData.Pipe::linkTofor more fluent graph definitions. - Fixed various issues with processing and caching. NB. pipes are now called with an always increasing pass index and not the time.
- Added
- Updates to support shared code in custom component import and export.
- Added shared code protocol, and support for merge and add (merge if empty) controls.
- Added try/catch and shared code commands to Pcl.
- Add ability to provide a template when registering custom container types via
@CustomTypeannotation. - Updates to third-party libraries, including JNA, MIMA, LWJGL, Ion and Netty.
PraxisLIVE v6.1.0
This is the second release of PraxisLIVE and PraxisCORE v6.x. The concept of watch functions has been added to PraxisCORE, and initial support added to a few built-in components - eg. for displaying the inputs of a video mixer. The graph editor of the IDE has been improved, and the overall UI enhanced, including support for light themes.
Changes
PraxisLIVE IDE
- Enhanced graph editor
- New UI for showing exposed controls and watches underneath components. Which features are exposed can be controlled by the
Exposeoption in the popup menu. The default exposed features is controlled by@Config.Exposein component code. - Updated minimize function to keep visible only connected ports. The minimize toggle now controls all selected components.
- Added
Select AllandSelect Noneactions with keyboard control. - Improved zoom function to snap to 100%, and added keyboard control (
CTRL-PLUSandCTRL-MINUSor equivalents) - Removed legacy exposed properties support.
- Various other graph enhancements and performance improvements.
- New UI for showing exposed controls and watches underneath components. Which features are exposed can be controlled by the
- Added tab grouping to keep code editors and root editors in separate tab groups where appropriate. Added support for opening a new tab group automatically when the first code editor tab is opened. Behaviour can be controlled via
Tools / Options / Editors. - Added support for changing to other FlatLaf look and feels, including light (as seen below), as well as customizing and accent colours. Support for light look and feels is mostly there but there are still a few issues to address.
- Improved consistency of various icons and displays.
- Updated to Apache NetBeans 24 platform.
- Various bug fixes.
PraxisCORE runtime
- Added support for watch functions. A watch function is a function control for accessing data about a component. They are somewhat similar to read-only properties, but for data that should only be calculated on demand, and perhaps asynchronously. Watch functions have a mime type and other metadata, and may support an optional query map as input to control the returned data. They are defined in code using the
@FN.Watchannotation. - Added support for defining image watches in video components, and added watch implementations to
video:composite,video:stillandvideo:xfader. - Enhanced
AsyncAPI and allowed it as a return for standard functions (@FN), as well as for watch functions.Asyncshould be used where the response relies on a call to another component, relies on data that has not yet been received by the component, or data needs to be calculated using anAsync.Task. - Added
@Config.Exposeto control the default list of controls, watches and other features to expose in any UI. Replaces deprecated@Config.Preferred. - Various bug fixes to
Ref,Asynchandling, root lifecycles and component state changes.
Running PraxisLIVE with light theme and orange accent colour.
PraxisLIVE v6.0.0
This is the first release of PraxisCORE and PraxisLIVE v6.
Version 6 is a substantial rewrite of some key aspects of how PraxisCORE works. Expect some rough edges! Many deprecated and legacy features have been removed. The IDE and core now require minimum Java 21. Networked hubs now use Netty and Ion to provide a more robust and structured communication protocol than was possible with OSC. Key libraries have been updated, including libP5X now based on Processing 4. Runtime dependency management is now based on MiMa rather than Ivy. Much of the project saving and execution has been moved directly into PraxisCORE.
There are a bunch of other useful changes - custom roots can now specify use of table editing rather than the graph editor; containers can filter allowed child types and even specify custom types; annotations no longer require a weight / index parameter - eg. @P int x,y,z; is now legal syntax! Examples and custom components are being updated and added showing the new features.
The most obvious change is the new vector logo, window background actions, and revamped dashboard.
The IDE build system has been moved to Maven, and various IDE modules are also published, allowing use of PraxisCORE and PraxisLIVE as a platform for other projects. More news on that soon!
Breaking changes
- Built in non-recodeable roots for MIDI, OSC and TinkerForge have been removed. These can now be replicated using custom roots. Basic implementations will be added as custom root templates when installing custom components. A migration path might be looked at for a later (post 6.0) release of the IDE.
- Most deprecated functions and types have been removed. eg. lower case casting functions like
d(..)must useD(..); Propertyvalues()linking must now usedoubles();PVectoris only available fromvideo:gl:p2dandvideo:gl:p3dcomponents, etc. Make sure to migrate all deprecated functionality from inside the latest PraxisLIVE v5 before attempting to migrate a project to PraxisLIVE v6.
Known issues
- Reset code to last saved isn't available, and component code that fails to compile (eg. removed deprecated features) will not show in editor. These two issues have the same cause, and a fix is being worked on.
- Minor display glitch due to graph position not being available on first sync.
PraxisLIVE v6.0.0-beta2
The second beta release of PraxisLIVE v6 brings a few updates and bug fixes as we proceed towards a final release.
PraxisLIVE IDE changes
- Extend property wrappers to support all function controls eg. this function on a component can be called, and the result (or error) displayed, using the property tab or the component editor dialog -
@FN String upper(String in) { return in.toUpperCase(Locale.ROOT); }
- Add a stop / clean button to the output tab for each project.
- Update NetBeans platform to v23
- Support Java 23.
- Switch to upstream Project dashboard widget with history display.
- Update bundled JDK in installers to JDK 23, and add macOS aarch64 installer.
- Fix exception shown when displaying scene comments.
- Various tweaks to allow branding of CORE location and graph colours.
PraxisCORE changes
- Add LWJGL natives for running on Apple Silicon, and also suppress warning caused by resigning of binaries on both macOS architectures.
- Update to libP5X 4.430.1 - fix display issues on Linux Wayland by reverting to use GLFW X11 backend (via XWayland) by default.
- Allow access to all JDK modules in user code (eg. HTTPClient) by using
--add-modules=ALL-DEFAULTin launcher and child launcher. - Update the default network timeout for hub messages to 60s, and make configurable by system property
praxis.hub.network.timeout. In particular works around initial startup timeouts on slower systems. - Increased the maximum message size supported via network hub.
PraxisLIVE v6.0.0-beta1
This is the first beta release of PraxisCORE and PraxisLIVE v6.
Version 6 is a substantial rewrite of some key aspects of how PraxisCORE works. Expect some rough edges! Many deprecated and legacy features have been removed. The IDE and core now require minimum Java 21. Networked hubs now use Netty and Ion to provide a more robust and structured communication protocol than was possible with OSC. Key libraries have been updated, including libP5X now based on Processing 4. Runtime dependency management is now based on MiMa rather than Ivy. Much of the project saving and execution has been moved directly into PraxisCORE.
There are a bunch of other useful changes - custom roots can now specify use of table editing rather than the graph editor; containers can filter allowed child types and even specify custom types; annotations no longer require a weight / index parameter - eg. @P int x,y,z; is now legal syntax! Examples and custom components are being updated and added to showing the new features.
The most obvious change is the new vector logo, window background actions, and revamped dashboard.
The IDE build system has been moved to Maven, and various IDE modules are also published, allowing use of PraxisCORE and PraxisLIVE as a platform for other projects.
Breaking changes
- Built in non-recodeable roots for MIDI, OSC and TinkerForge have been removed. These can now be replicated using custom roots. Examples showing this will follow. A migration path might be looked at for a later (post 6.0) release of the IDE.
- Most deprecated functions and types have been removed. eg. lower case casting functions like
d(..)must useD(..); Propertyvalues()linking must now usedoubles();PVectoris only available fromvideo:gl:p2dandvideo:gl:p3dcomponents, etc. Make sure to migrate all deprecated functionality from inside the latest PraxisLIVE v5 before attempting to migrate a project to PraxisLIVE v6.
Known issues
- OpenGL output windows on Linux with Wayland are wrongly sized. A late update to LWJGL changed the default behaviour. Use an X11 session until beta 2. Possibly related LWJGL/lwjgl3#998
- macOS incorrectly reports incorrect OpenGL binaries. This is due to them being re-signed in packaging. Will be fixed in beta 2.
- Some settings windows (eg. GStreamer) are currently inactive.
- Minor display glitch due to graph position not being available on first sync.
PraxisLIVE v5.7.0
This is the last scheduled release in the v5 series of PraxisCORE and PraxisLIVE as we concentrate on v6 for release later this year. There are some major updates to Ref types and handling, an Async.Queue for handling async calls, and various deprecations for things that will no longer be supported in v6.
PraxisCORE
- Major updates to
Ref, including reference ports and a publish / subscribe mechanism for sharing references from containers to child components.- Added
Ref::set,Ref::setAsync,Ref::orElseandRef::onChangemethods. The existing async support inRefis deprecated and rewritten to use the new method. - Added
@Ref.Publishand@Ref.Subscribeto be used on injectedReffields in parent and children respectively. References are automatically updated, and changes can be listened to usingRef::onChange. - Added support for reference ports -
@In(1) Ref.In<T> inand@Out(1) Ref<T> out. The input type allows to access the list of connected values, and automatically updates on connections or changes to the output reference. - Updated semantics for
Ref::bindwhich can now be configured prior to initialization, and will update on reference changes.
- Added
- Added an injectable queue for
Asyncvalues -@Inject Async.Queue<T> queue. Supports binding actions to happen on completion and limiting the queue size. For use with async returns fromask()andasync(). - Improvements to library support with a PackageURL parsing utility and better support for transient dependencies provided by the runtime itself.
- Added a
.supported-typesproperty to containers. This has minimal use in v5, but is important in development if some features in v6. - Various deprecations, including serializable properties,
Property::valuesandInput::valuesmethods, andPVector(from core types, but some supported will remain in video types).
PraxisLIVE
- No changes in the IDE in this release.




