Migrating to 25.04 (preview)

This page summarizes the upcoming changes in Nextflow 25.04, which will be released in May 2025.

Note

This page is a work in progress and will be updated as features are finalized. It should not be considered complete until the 25.04 release.

New features

Strict syntax

The strict syntax is a strict parser for Nextflow DSL2 that implements the Nextflow language specification. Originally introduced by the Nextflow language server alongside Nextflow 24.10, the strict syntax is now available in the Nextflow CLI.

The strict syntax is disabled by default. It can be enabled by setting the environment variable NXF_SYNTAX_PARSER=v2. See Preparing for strict syntax for details.

Linting and formatting

The nextflow lint command checks Nextflow scripts and config files for errors using the strict syntax. It can also format Nextflow files using the same formatter as the Nextflow language server. See lint for details.

Workflow outputs (third preview)

The third preview of workflow outputs introduces the following breaking changes from the previous version:

  • The publish: section can only be specified in the entry workflow.

  • Workflow outputs in the publish: section are assigned instead of using the >> operator. Output names must be valid identifiers.

  • By default, output files are published to the base output directory, rather than a subdirectory corresponding to the output name.

  • The syntax for dynamic publish paths has changed. Instead of defining a closure that returns a closure with the path directive, the outer closure should use the >> operator to publish individual files. See Publishing files for details.

  • The mapper index directive has been removed. Use a map operator in the workflwo body instead.

See Workflow outputs to learn more about the workflow output definition.

Enhancements

Improved inspect command

Previously, the nextflow inspect command included all processes that were invoked in a preview run. Now, the inspect command includes all processes that are included by the entry workflow (directly or indirectly), which has several benefits:

  • It includes all processes that could potentially be invoked by the workflow, not just the processes that are invoked for a particular run configuration.

  • It’s faster, as it doesn’t need to evaluate the entry workflow – only the includes.

  • It can be run as nextflow inspect <PIPELINE>, without specifying any parameters or config profiles.

See inspect to learn more about the inspect command.

Plugin version ranges

When specifying a plugin, the plugin version can now be prefixed with ~ to pin the major and minor version while allowing the latest patch release. This syntax makes it possible to pin the plugin version while automatically using new patch releases.

See Plugins for details.

Improved publish error handling

Nextflow will terminate the run if the thread pool responsible for publishing files takes too long. Previously, this timeout was reported as a warning. Now, it is reported as an error.

The previous behavior can be restored with the following config setting:

workflow.output.ignoreErrors = true

Breaking changes

  • Nextflow now requires Java 17 or newer. See Requirements for instructions to install Java 17.

  • The HyperQueue executor now requires HyperQueue 0.20.0 or later.

Deprecations

  • The process shell section has been deprecated. See Shell for details.

  • Nextflow will report a warning if it encounters a process shell directive that contains newlines. This warning will become an error in a future release.

  • The -with-weblog CLI option has been deprecated. See nextflow-io/nf-weblog to learn how to use the nf-weblog plugin.

Miscellaneous

  • New config option: workflow.output.copyAttributes

  • New standard library function env()

  • Support disk directive for Azure Batch