-
Clarified that relative paths in
FileandDirectorydeclarations are resolved relative to the WDL document's parent directory outside theoutputsection, and relative to the task's execution directory inside theoutputsection. Also clarified that optional files evaluate toNonein both contexts if the path does not exist. (#735) -
Added
previousto thetaskvariable, enabling runtime access to the previous attempt's computed requirements (#734). -
Added
max_retriesto thetaskvariable (#733). -
Introduced the
splitstandard library function (#729). -
Documents may now load any document with the same major version and a minor version that is less than or equal to that document's version (#698).
-
Added enumeration types (
enum) that define closed sets of named variants with associated values. Enums support explicit and implicit typing, and variant values can be of any WDL type including primitives, compound types, and user-defined types. (#695) -
Added
value()standard library function to extract the inner value from an enum variant. (#695)
-
Clarified that
task.return_codeis only available in theoutputsection, where it has typeIntrather thanInt?(#742). -
Formalize replacement string syntax for
sub()function to specify backreference support (\1through\9). (#749). -
Clarify
FileandDirectorypath canonicalization, validation, and equality semantics. Clarify whenFiles andDirectoriesmust exist (at declaration evaluation time, not access time). AddDirectorycomparison operators to binary operators table (#748). -
Clarify that
Filevalues cannot refer to directories andDirectoryvalues cannot refer to files; attempting to assign the wrong type of path is an error (#748). -
Update
join_pathsfunction: change return type fromFiletoString(since the result can be either a file or directory path), and change first argument fromFiletoDirectoryfor the first two overloads (#748). -
Fix
change_extension_task.wdlexample to use string interpolation when passingFiletosub()function (#747). -
Clarified that when a
Directoryis converted to aString, the resulting string does not have a trailing slash (#745). -
Clarified symlink handling behavior in the
globfunction (#744). -
Clarified the restriction on multi-level optionals in the "Optional Types" section. (#743)
-
Clarified that relative paths in
FileandDirectorydeclarations are resolved relative to the WDL document's parent directory outside theoutputsection, and relative to the task's execution directory inside theoutputsection. Also clarified that optional files evaluate toNonein both contexts if the path does not exist. (#735) -
Clarify that
disksmount points ephemeral and should not already exist -
Deprecate the use of relative path literals in input and private variable declarations.
-
Include fixes to examples introduced in v1.1.3
-
Include fixes to examples that don't compile in
wdl-tests(#707, #708, #701, #738, #731, #740, #739). Thanks to @adamnovak and @claymcleod! -
Add in CI/CD for Miniwdl, Sprocket, Toil and Cromwell for spec compliance.
-
Remove Advanced Task Examples to clearly distinguish what is the testing is in scope. (#730)
-
Introduced the concept of "scoped types" to support the use of object-like values within the
hintssection while still keeping theObjecttype as deprecated. -
Added new task
requirementsandhintssections (#540 and #541), and deprecated theruntimesection -
Added new workflow
hintssection (#543), and movedallowNestedInputsfrom workflowmetatohints -
Deprecated the previously allowed behavior implied by setting
allowNestedInputs: truewhere 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 theallow_nested_inputshint istrue. -
Added the ability to access the actual values of
requirements,meta, andparameter_metaat runtime. -
Added
fpgarequirement and reserved hint for requesting FPGA resources. -
Added
disksandgpureserved hints for requesting specific resources. -
Added
contains_keyfunction to standard library. PR 603
-
Added exponentiation operator (
**). -
Added
find, andmatchesfunctions. -
Added
chunkfunction for chunking an array into sub-arrays. -
Add
parameter_metasection to struct definition. -
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.
-
Added
join_pathsfunction to join two or more paths. -
Added allowance for conversion between
Structtypes when certain criteria are met. -
Generalized
sizefunction to take any compound value. -
Added optional
defaultparameter toselect_first. -
Generalized
lengthfunction to also acceptMap,Object, andStringarguments. -
Added multi-line strings. PR 602
-
Added the
Array[String] keys(Struct|Object)function variant for getting the member names for a struct or object. -
Added
valuesfunction for getting the values from aMap. -
Added parameters to
read_tsvthat enable it to read field names from a header row or anArray[String]and return anArray[Object]. PR 627 -
Added
containsfunction for determining whether an array contains a specified value. -
Clarify how inputs with defaults are implicitly optional PR 464 by @mlin
-
Make
input:optional in call bodies. PR 524 by @mlin. -
Added
Directorytype. PR 641 -
Added clarification that input files and directories should be treated as read-only. PR 642
-
Added JSON extended file/directory input/output format. [PR 643] (#643)
-
Clarified that local paths are always used when evaluating input/private/command expressions.
-
Clarified the meaning of a remote parent folder for the purposes of localization.
-
Clarified that accessing a non-existent member of an object, struct, or call is an error.
- Fix issues with examples (#653, #654, #661, #662, #663, #664, #666, #667, #668). Thanks to @stxue1!
-
State that
Unionis also the type of someruntimeattributes. -
Remove some syntax sections that were missed in 1.1.1.
-
Clarify short-circuiting of boolean expressions (#199)
-
Added requirement for tests to the RFC
-
Clarifies number of sections allowed within
taskandworkflowblocks. PR 598 by @claymcleod -
Clarified that
read_boolis case-insensitive, and added an example.
-
Applied Errata to the 1.1.0 spec.
-
Updated most examples to adhere to the new specification for WDL tests.
-
Added missing
Fileandversionkeywords to the list of reserved words. -
Added new sections or materially expanded existing sections:
- "Limited exceptions" to type coercion rules
- "Static Analysis and Dynamic Evaluation"
- "Task Input Localization"
- "Expression Placeholders" under "Command Section"
- Hidden types
-
Reformatted all tables.
-
Reorganzied the standard library.
-
Provided codespell configuration and workflow to catch typos. PR 530 by @yarikoptic.
-
Fixed typos, thanks to @yarikoptic, @sejyoti, @mmterpstra, @j23414, @jdavcs, @beukueb, @notestaff, @alberto-mg, @mperf!
-
Added Errata.
-
Clarified that the
subfunction requires a POSIX Extended Regular Expression (ERE). PR 243 by @rhpvorderman -
Added syntax for struct literals. PR 297 by @patmagee
-
Added engine functions for
minandmax. PR 304 by @pshapiro -
Added section on file outputs including optional outputs. PR 310 by @jtratner
-
Added reserved keys, explicit formats, and default values for runtime attributes and hints. PR 315 by @patmagee
-
Namespacing has been clarified. PR 340 by @DavyCats
-
Abbreviated syntax for call inputs bound to workflow-scoped values by name:
{input: x, y=b, z}is shorthand for{input: x=x, y=b, z=z}PR 365 by @mlin -
Write a specification for unsatisfied task inputs and nested optional inputs. PR 359 by @rhpvorderman
-
Adds an engine function for joining arrays of strings. PR 229 and PR 368 by @EvanTheB and @illusional.
-
Added an engine function for adding a suffix to an array of primitives as well as well as
quoteandsquoteengine functions. PR 362 @patmagee -
Added a required input and output format for workflow engines. PR 357
-
The input specification has been clarified. PR 314 by @geoffjentry.
-
Added a list of keywords that can not be used as identifiers. PR 307 by @mlin.
-
Empty call blocks have been clarified. PR 302 by @aednichols.
-
Optional and non-empty type constraints have been clarified. PR 290 by @mlin.
-
The way comments work has been clarified. PR 277 by @patmagee.
-
Implement string escapes in the Hermes grammar. PR 272 by @cjllanwarne.
-
Added
Nonefor explicitly stating that an optional variable is not defined. PR 263 by @rhpvorderman. -
Backported to 1.0: Fix a bug in the grammar regarding unescaped strings. PR 253 and PR 255 by @aednichols.
-
WDL Files should be encoded in UTF-8 now. String definitions have been clarfied. PR 247 by @EvanTheB.
-
The version
statementcan now be the first non-comment statement. So it can be stated below a license header for example. PR 245 by @ffinfo. -
Added a
keysfunction to get an array of keys from a map. PR 244 by @ffinfo. -
Several bugs in the grammar have been fixed. PR 238 and PR 240 by @cjllanwarne.
-
Type conversions and meanings have been clarified. PR 235 by @EvanTheB.
-
Backported to 1.0: Imports are now relative to their current location. PR 220 by @geoffjentry.
-
Added conversion functions
as_pairsandas_mapto convert betweenArray[Pair[X,Y]]andMap[X,Y]. PR 219 by @DavyCats. -
Add an
afterkeyword to run a task after other tasks. PR 162 by @cjllanwarne.
- Rename lexer to
WdlV1Lexer - Rename parser to
WdlV1Parser - Rename
WdlCommentschannel toCOMMENTS - Remove
SkipChannel - Rename
COMMENT->LINE_COMMENT, emit comments toCOMMENTSchannel - Add
Metamode for parsing meta sections - Parse whitespace between
commandand opening{/<<<withinCommandmode, so that it is emitted to theHIDDENchannel - Ignore trailing commas
- Formatting -
- use two spaces always for indentation
- always wrap statements (i.e. always put opening ':' and closing ';' on newlines)
- always use PascalCase for tokens within lexer modes
- Added ANTLR4 grammar