CWL 1.2 released

Hello everyone,

The Common Workflow Language team is pleased to announce a new stable release of the CWL standards, version 1.2.

Some highlights of this version:

Conditional execution of workflow steps

A workflow step can now have a “when” field with an expression that determines whether the workflow step is executed or not. Skipped workflow steps produce “null” outputs.

A workflow step input parameter may be connected to multiple sources. When those sources are conditional steps, some results may be “null”. The “pickValue” field on a workflow input parameter lets you specify how to select which value to use among multiple sources.

Abstract Operations

To facilitate the use of CWL to describe abstract workflows that are not necessarily ready to execute, there is a new “Operation” process type. A process can now declare an “intent” that identifies its conceptual purpose (for example, using an “Operation” identifier from the EDAM ontology

Absolute paths for container inputs

It is now possible to have an absolute path in the entryname field in InitialWorkDirRequirement when running in a mandatory container. Together with DockerRequirement.dockerOutputDirectory this makes it possible to control the locations of both input and output files when running in containers.

Other improvements

Clarified there should be no hard coded size limit for files that are created on the fly from expressions. This makes it more reliable to create configuration or input files on the fly based on CWL input parameters. Also clarified that non-File objects, arrays and numbers returned by parameter references or expressions in Dirent.entry are JSON serialized to produce file contents.

The “coresMin” and “coresMax” fields of ResourceRequirement may now request fractional CPUs. Other fields of ResourceRequirement now accept floating point values as well.

Escaping in string interpolation is now specified. The new standard is an improvement over the previous de-facto “cwltool” behavior; common cases such as pasting bash scripts into CWL no longer need extra backslash escapes.


Support for v1.2 is available immediately in the reference runner, cwltool 3.0.20200807132242. Support for CWL v1.2 on other CWL platforms is in the works, check with your vendor to find out their plans.


Authors and contributors to v1.2:

Peter Amstutz, Curii Inc. / Arvados;

Michael R. Crusoe, CWL Project Lead;

Kaushik Ghose, Seven Bridges Genomics, Inc;

John Chilton, Galaxy Project, Pennsylvania State University;

Michael Franklin, Peter MacCallum Cancer Centre and University of Melbourne;

Bogdan Gavrilovic, Seven Bridges Genomics;

Stian Soiland-Reyes, University of Manchester;

The CWL team would also like to thank the Chan-Zuckerberg Initiative Essential Open Source for Science program for supporting a portion of this work via their award to Curii Inc.

Thank you for your support,

The CWL leadership team.