Skip to content

Commit 1ce7236

Browse files
committed
changelog for 7b4b85...350f0b
1 parent 1612321 commit 1ce7236

File tree

4 files changed

+222
-2
lines changed

4 files changed

+222
-2
lines changed

CommandLineTool.yml

Lines changed: 148 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,156 @@ $graph:
3737
- {$include: intro.md}
3838

3939
- |
40+
## Introduction to the CWL Command Line Tool draft standard v1.2.1
41+
42+
This specification represents the latest development draft from the
43+
CWL project. There are no new features nor behavior changes in CWL v1.2.1
44+
as compared to CWL v1.2. v1.2.1 fixes only typos, adds clarifications,
45+
and adds additional conformance tests. Some changes to the schema defining
46+
CWL have been changed to aid the auto-generation of libraries for the reading
47+
and writing of CWL documents.
48+
49+
Do not write `cwlVersion: v1.2.1`, that is not a valid version of the CWL
50+
syntax.
51+
52+
See also the [Schema-Salad v1.2.1 changelog](SchemaSalad.html#Changelog_for_v1.2.1)
53+
54+
## Changelog for v1.2.1
55+
56+
* The schema for `Requirement`s has changed to enable faster parsing by
57+
autogenerated libraries. The `class` field is now a static enum with a
58+
single permissible value instead of a generic string (for example:
59+
`class: DockerRequirement` for a `DockerRequirement` hint or requirement.)
60+
This allows for autogenerated CWL parsers to recognize any requirement
61+
immediatelly instead of having to check for matching field names and
62+
valid values, as was done previously.
63+
* Likewise, the schema for `CommandLineTool` has changed to enable faster parsing by
64+
autogenerated libraries. The `class` field is now a static enum with a
65+
single permissible value (`class: CommandLineTool`) instead of a generic
66+
string.
67+
This allows for autogenerated CWL parsers to recognize any `CommandLineTool`
68+
immediatelly instead of having to check for matching field names and
69+
valid values, as was done previously.
70+
* The schema for the `CommandLineBinding.position` field now has an explicit
71+
default value of `0`. Previously this was only expression textually in
72+
the description of that field.
73+
* The schema for the `File.streamable` field now has an explicit default
74+
value of `false` to match the textual description.
75+
76+
Note: Other fields like `ResourceRequirement.coresMin`, `.coresMax`,
77+
`.ramMin`, `.ramMax`, `.tmpdirMin`, `.tmpdirMax` have not had defaults
78+
set in the schema so that parsers can discriminate easily between a
79+
value not provided and the default value (`0`).
80+
* Everywhere the schema allows a value of type `long` we also explictly
81+
allow a value of type `int`. By JSON rules this is implicit, but by
82+
making it explicit we aid autogenerated CWL libraries especially in
83+
languages such as Java.
84+
* The [difference between `$()` and `${}`](#Expressions_(Optional)) were
85+
clarified. We now make more explicit that `${...}` evaluates to
86+
`(function() { ... })()`.
87+
* The publisher of this document is now explictly named; it is the
88+
[Common Workflow Language project](https://www.commonwl.org), a member
89+
project of [Software Freedom Conservancy](https://sfconservancy.org/).
90+
* The [Parameter References](#Parameter_references) section has been updated
91+
to clarify ambiguity on `null` and array `.length`. Three conformance tests to
92+
verify this were added as well (`params_broken_null`, `length_for_non_array`,
93+
`user_defined_length_in_parameter_reference`).
94+
* It is now explicit in the description of the `size` field of a
95+
[`File`](#File) object that `size` is measured in bytes, as was already
96+
stated in the introduction to the `File` object description.
97+
* The concept of "opaque identifier(s)"/"opaque strings" as mentioned in the
98+
[`SecondaryFileSchema`](#SecondaryFileSchema), [Parameter References](#Parameter_references),
99+
and [Runtime Environment](#Runtime_environment) sections is now defined
100+
in the newly added [glossary](#Glossary): they are nonsensical values
101+
that are swapped out with a real value later in the evaluation process.
102+
Workflow and tool expressions **should not** rely on it nor try to parse it.
103+
104+
### Updated Conformance Tests for v1.2.1
105+
* Conformance tests are now refered to by their textual identifiers (`id`). Previously
106+
this was the `label` field. Tests without a `label`/`id` have been give
107+
one.
108+
* `tests/loadContents/cwloutput-nolimit.cwl`: Made explicit that
109+
`bigstring` is an additional output as generated by the existing
110+
`mkfilelist.py` script's use of [`cwl.output.json`](#Output_binding).
111+
* The number of different software containers used in the conformance tests
112+
has been reduced to four. See [the list in the CONFORMANCE_TESTS.md instructions](https://github.com/common-workflow-language/cwl-v1.2/blob/1.2.1_proposed/CONFORMANCE_TESTS.md#writing-a-new-conformance-test).
113+
* `tests/secondaryfiles/rename-inputs.cwl` has been simplified by changing
114+
it to reference another input parameter instead of using `self`. The
115+
behavior of processing secondary files patterns in order and being able
116+
to reference earlier ones later is not part of CWL v1.2.
117+
118+
This doesn't exactly replicate the previous behavior, because it introduces
119+
a new input parameter, however it does demonstrate the ability to rename
120+
a file and have it staged as a secondary file without having to use
121+
`InitialWorkDirRequirement`.
122+
* `tests/conditionals/cond-wf-002.cwl`, `tests/conditionals/cond-wf-002_nojs.cwl`,
123+
`tests/conditionals/cond-wf-002_nojs.cwl`, `tests/conditionals/cond-wf-011_nojs.cwl`:
124+
Marked the outputs as optional to remove ambiguity for these conditional
125+
`when` tests; allowing conformant CWL runners to be more strict in their
126+
interpretation of the typing rules, if they choose so.
127+
* `directory_input_docker` was incorrectly marked as required, it is optional
128+
unless the feature `ShellCommandRequirement` is stated as being supported.
129+
* `glob_outside_outputs_fails` was incorrectly marked as required, it is
130+
optional unlewss the feature `DockerRequirement` is stated as being supported.
131+
* `stage_file_array` was incorrectly marked as required, it is optional
132+
unless both the features `InlineJavascriptRequirement` and `DockerRequirement`
133+
are stated as being supported.
134+
* `stage_file_array_basename` and `stage_file_array_entryname_overrides` were
135+
both incorrectly marked as required, they are optional unless the feature
136+
`InitialWorkDirRequirement` and `InlineJavascriptRequirement` are both
137+
stated as being supported.
138+
* `optional_numerical_output_returns_0_not_null` was incorrectly marked as
139+
required, it is optional unless `InlineJavascriptRequirement` is stated
140+
as being supported.
141+
* Made it explicit that if a `CommandLineTool` contains logically chained
142+
commands (e.g. `echo a && echo b`) then the `stdout` File/object must
143+
include the output of every command. The `stdout_chained_commands` mandatory
144+
conformance test was added to verify this.
145+
* `metadata`: The description and content of this test has been updated to
146+
be more focused on the metadata present in the CWL file.
147+
148+
### New Mandatory Conformance Tests for v1.2.1
149+
* `params_broken_null`: Test parameter reference that refers to
150+
`null.something`.
151+
* `length_for_non_array`: Test parameter reference that refers to length
152+
of non-array input.
153+
* `user_defined_length_in_parameter_reference`: Test 'length' in a parameter
154+
reference where it does not refer to length of an array input.
155+
* `directory_literal_with_literal_file_in_subdir_nostdin`: Test non-`stdin`
156+
reference to literal `File` via a nested `Directory` literal.
157+
* `colon_in_paths`: Confirm that colons are tolerated in input paths,
158+
string values, stdout shortcut, and output file & directory names.
159+
* `colon_in_output_path`: Confirm that colons are tolerated in output
160+
directory names.
161+
* `record_with_default`: Confirm that records with defaults are accepted.
162+
* `record_outputeval_nojs`: Use of `outputEval` on a record itself, not
163+
the fields of the record (without javascript). An equivalent test with
164+
`InlineJavascriptRequirement` was added as well: `record_outputeval`.
165+
* `runtime-outdir`: Test use of `$(runtime.outdir)` for `outputBinding.glob`.
166+
* `stdout_chained_commands`: Test that chaining two `echo` calls causes
167+
the workflow runner to emit the combined output to `stdout`. This is to
168+
confirm that the workflow runner will **not** create an expression such as
169+
`echo a && echo b > out.txt`, but instead will produce the correct
170+
`echo a && echo b`, and capture the output correctly.
171+
* `record_order_with_input_bindings`: Test sorting arguments at each level
172+
(`inputBinding` for all levels).
173+
174+
### New Optional Conformance Tests for v1.2.1
175+
176+
#### `InlineJavaScriptRequirement`
177+
* `record_outputeval`: Use of `outputEval` on a record itself, not
178+
the fields of the record.
179+
* `staging-basename`: Use of an `ExpressionTool` to change `basename` of
180+
file, then correctly staging the file using the new name.
181+
* `js-input-record`: A test case for JavaScript with an input record.
182+
183+
#### `MultipleInputFeatureRequirement`
184+
* `multiple-input-feature-requirement`: MultipleInputFeatureRequirement on
185+
workflow outputs.
186+
40187
## Introduction to the CWL Command Line Tool standard v1.2
41188

42-
This specification represents the latest development release from the
43-
CWL group. Since the v1.1 release, v1.2 introduces the
189+
Since the v1.1 release, v1.2 introduces the
44190
following updates to the CWL Command Line Tool standard.
45191
Documents should use `cwlVersion: v1.2` to make use of new
46192
syntax and features introduced in v1.2. Existing v1.1 documents

Workflow.yml

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,62 @@ $graph:
3434
- {$include: intro.md}
3535

3636
- |
37+
## Introduction to the CWL Workflow draft standard v1.2.1
38+
39+
This specification represents the latest development draft from the
40+
CWL project. There are no new features nor behavior changes in CWL v1.2.1
41+
as compared to CWL v1.2. v1.2.1 fixes only typos, adds clarifications,
42+
and adds additional conformance tests. Some changes to the schema defining
43+
CWL have been changed to aid the auto-generation of libraries for the reading
44+
and writing of CWL documents.
45+
46+
Do not write `cwlVersion: v1.2.1`, that is not a valid version of the CWL
47+
syntax.
48+
49+
See also the [CommandLineTool v1.2.1 changelog](CommandLineTool.html#Changelog_for_v1.2.1)
50+
and the [Schema-Salad v1.2.1 changelog](SchemaSalad.html#Changelog_for_v1.2.1).
51+
52+
## Changelog for v1.2.1
53+
54+
* The `Workflow.run` field description now explicitly states that it can
55+
be either a string referencing an external document or an embedded Process.
56+
This was previously only stated indirectly.
57+
* The `outputSource` field of [`WorkflowOutputParameter`](#WorkflowOutputParameter)
58+
now explictly states that workflow inputs can be referenced. The
59+
mandatory conformance test `output_reference_workflow_input` has been
60+
added to confirm this.
61+
62+
### New Mandatory Conformance tests for v1.2.1
63+
* `output_reference_workflow_input`: Test direct use of `Workflow` level
64+
input fields in the outputs.
65+
66+
### New Optional Conformance Tests for v1.2.1
67+
68+
#### SchemaDefRequirement
69+
* `schemadef_types_with_import`: Test `SchemaDefRequirement` with a
70+
workflow, with the `$import` under types. It is similar to `schemadef-wf`,
71+
but the `$import` is different.
72+
73+
#### ScatterFeatureRequirement
74+
* `simple_simple_scatter`: Two level nested scatter.
75+
* `dotproduct_simple_scatter`: Two level nested scatter: external
76+
dotproduct and internal simple.
77+
* `simple_dotproduct_scatter`: Two level nested scatter: external simple
78+
and internal dotproduct.
79+
* `dotproduct_dotproduct_scatter`: Two level nested scatter: external
80+
dotproduct and internal dotproduct.
81+
* `flat_crossproduct_simple_scatter`: Two level nested scatter: external
82+
flat_crossproduct and internal simple.
83+
* `simple_flat_crossproduct_scatter`: Two level nested scatter: external
84+
simple and internal flat_crossproduct.
85+
* `flat_crossproduct_flat_crossproduct_scatter`: Two level nested scatter:
86+
external flat_crossproduct and internal flat_crossproduct.
87+
* `nested_crossproduct_simple_scatter`: Two level nested scatter: external
88+
nested_crossproduct and internal simple.
89+
* `simple_nested_crossproduct_scatter`: Two level nested scatter: external
90+
simple and internal nested_crossproduct.
91+
* `nested_crossproduct_nested_crossproduct_scatter`: Two level nested scatter:
92+
external nested_crossproduct and internal nested_crossproduct.
3793
3894
## Introduction to CWL Workflow standard v1.2
3995

salad/schema_salad/metaschema/import_include.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ replaced by only the object with the appropriate fragment identifier.
2727
It is a fatal error if an import directive refers to an external resource
2828
or resource fragment which does not exist or is not accessible.
2929

30+
<a name="import_example" />
3031
### Import example: replacing the `$import` node
3132

3233
import.json:

salad/schema_salad/metaschema/salad.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,23 @@ ease the development of extensions to CWL v1.2. The only change is that
9494
inherited records can narrow the types of fields if those fields are re-specified
9595
with a matching jsonldPredicate.
9696

97+
### Changelog for v1.2.1
98+
99+
There are no new features nor behavior changes in Schema Salad v1.2.1
100+
as compared to Schema-Salad v1.2. Schema Sald v1.2.1 only fixes typos and adds
101+
clarifications.
102+
103+
* The `salad` directory's contents have been trimmed to the bare necessities.
104+
The `salad/README.rst` has been refreshed from the [upstream repository](https://github.com/common-workflow-language/schema_salad/).
105+
* The [existing behviour of `$import`](#Import) has been clarified.
106+
If the `$import` node is in an array and the import operation yields an
107+
array, it is flattened to the parent array. Otherwise the `$import`
108+
node is replaced in the document structure by the object or array yielded
109+
from the import operation. An [example](#import_example)
110+
has been added to illustrate this better.
111+
* A pair of missing brackets was added to the [Type DSL Example](#Type_DSL_example)'s
112+
example input.
113+
97114
## References to Other Specifications
98115

99116
**Javascript Object Notation (JSON)**: http://json.org

0 commit comments

Comments
 (0)