Skip to content

WDL v1.2.0

Latest
Compare
Choose a tag to compare
@jdidion jdidion released this 23 Jan 23:29
· 10 commits to wdl-1.2 since this release

Overview

This release includes a new minor version of the WDL language, v1.2. This also introduces a new version of the specification, in this case, v1.2.0. Minor version releases include new, backwards compatible changes, such new types, new execution concepts, or the ability to better and more scalably run existing workflows.

What's New

Files and Directories

  • Added Directory type (#641).
  • Added JSON extended file/directory input/output format (#643).
  • Input files and directories should be treated as read-only (#642).
  • Local paths are always used when evaluating input/private/command expressions.
  • Clarified the meaning of a remote parent folder for the purposes of localization.

Requirements and Hints

  • The requirements and hints sections (#540 and #541, respectively) replace the runtime section.
  • Adds the workflow hints section (#543).
  • fpga requirement and reserved hint for requesting FPGA resources.
  • disks and gpu reserved hints for requesting specific resources.
  • Implicit task variable that provides access the actual values of requirements, meta, and parameter_meta at runtime.

Struct Improvements

  • Structs can now have meta and parameter_meta sections.
  • Relaxed the requirements on coercing object/map to struct - extra keys are allowed and ignored. Note that this may constitute a breaking change if you rely on a task to fail when coercing an object/map with extra keys.
  • Allow conversion between Struct types when certain criteria are met.

Standard Library Functions

New

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

Improved

  • Generalized size function to take any compound value.
  • Added optional default parameter to select_first.
  • Generalized length function to also accept Map, Object, and String arguments.
  • Added the Array[String] keys(Struct|Object) function variant for getting the member names for a struct or object.
  • Added parameters to read_tsv that enable it to read field names from a header row or an Array[String] and return an Array[Object] (#627).

Other

  • Exponentiation operator (**).
  • Multi-line strings (#602).
  • Clarify that accessing a non-existent member of an object, struct, or call is an error.
  • Inputs with defaults are implicitly optional (#464 by @mlin).
  • input: is optional in call bodies (#524 by @mlin).
  • The concept of "scoped types", to support the use of object-like values within the hints section while still keeping the Object type as deprecated.

What's Deprecated

  • runtime section (use requirements and hints instead).
  • Specifying allowNestedInputs in the workflow meta section (put it in workflow hints instead).
  • The previously allowed behavior implied by setting allowNestedInputs: true where required task/subworkflow inputs could be left unsatisfied. Now all inputs either need to have a default value or have their value specified in the call inputs. Only optional task/subworkflow inputs that are not explicitly set in the call inputs may have their value set at runtime if the allow_nested_inputs hint is true.

New Contributors

Full Changelog: v1.1.0...v1.2.0