Skip to main content

v1.2

Upgrading from WDL v1.1 to WDL v1.2.

WDL v1.2 introduces a great deal of new syntax and changes to the specification. Notably, changes were backwards compatible with all previous v1.x releases. This sections only covers the high points related to upgrading—the full release notes can be found here.

Checklist

Use this checklist to ensure you hit all of the sections.

Moderate impact changes

  • New Directory type (link).
  • Deprecation of runtime section and replacement with requirements/hints (link).
  • New standard library functions (link).
  • Multi-line strings (link).
  • Optional input: statement (link).

Low impact changes

  • Addition of workflow hints (link).
  • New requirements and hints keys (link).
  • Metadata sections for structs (link).
  • Exponentiation operator (link).

Moderate impact changes

New Directory type

The Directory type was introduced in #641 to better semantically indicate the use of a directory. If the intention of any of your arguments is to be used to refer to a directory on the filesystem, you are encouraged to update the parameters to a Directory type.

Deprecation of runtime section

The runtime section, which previously held both requirement constraints and hints to the execution engine, has now been split into the requirements (#540) section and hints (#541) section respectively. You should split out these keys based on the definitions in the specification (requirements, hints).

🗑️ This change deprecates the runtime section, which will be removed in WDL v2.0. That being said, if desired, you can continue to use the runtime section in your WDL documents—it's just not recommended.

New standard library functions

The following are new standard library functions and their definitions. You are encouraged to read through them and replace any custom functionality that would now be duplicated in favor of these functions.

  • contains_key: whether or not a Map or Object contain a specific member (link).
  • values: get the values from a Map (link).
  • find: search for a regular expression in a string (link).
  • matches: whether a string match a regular expression (link).
  • chunk: split an array into sub-arrays (link).
  • join_paths: join two or more paths (link).
  • contains: whether an array contains a specified value (link).

Multi-line strings

Multi-line strings were introduced with the following syntax.

wdl
String foo = <<<
  my
  multi-line
  string
>>>

Optional input: statement

As noted in #524, the input: statement that precedes call bodies is unnecessary historical boilerplate. This statement is now optional in call bodies. You are encouraged to remove these from your call bodies.

Low impact changes

Addition of workflow hints

Workflows gained a hints section in #543. You are encouraged to go read the supported workflow hints (spec) and apply them to your workflow if any are relevant.

New requirements and hints keys

  • The following keys were added to the task requirements section: fpga (spec).
  • The following keys were added to the task hints section: disks (spec), gpu (spec), and fpga (spec).

You are encouraged to examine these keys are determine if any of these should be specified for your tasks.

Metadata sections for structs

Similarly to tasks and workflows, structs now have meta and parameter_meta sections. You are encouraged to use these fields according to the definition in the specification (spec).

Exponentiation operator

The exponentiation operator (**) was added in this release. You are encouraged to go and update any manual exponentiation to use this operator instead.

You are encouraged to go read the specification section on this concept (link) and use them where appropriate.