Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Version 1.1 Spec #428

Merged
merged 111 commits into from
Jan 29, 2021
Merged

Version 1.1 Spec #428

merged 111 commits into from
Jan 29, 2021

Conversation

jdidion
Copy link
Collaborator

@jdidion jdidion commented Dec 10, 2020

This is a draft of v1.1. I encourage and implore as many people as possible to review this document in as much detail as possible. I have tried to make it polished but I'm sure some things fell through the cracks.

My process for creating this specification was as follows:

  1. Start with the current development version of the spec.
  2. Merge in all accepted but unmerged PRs.
  3. Manually go through all PRs to the development spec from the very beginning to make sure no content was lost due to bad merges.
  4. Remove all reference to Directory type and hints section.
  5. Reorganize the document into three main sections and two appendecies, and reorganize within each section to put next to each other all the related information and to reduce redundancy.
  6. Review all of the text and revise where necessary to ensure consistent and correct use of terms. (Please flag any areas where my view of what is correct is wrong)
  7. Perform spell checking, check for broken links, etc.

With input from the group on Slack, I have tried to correctly resolve all the conflicts I found between different parts of the spec, and to add additional clarification where needed. I was also fairly aggressive about removing wrong, redundant, or unnecessarily verbose text. Anywhere I have been too aggressive, please let me know.

I also took the liberty of adding three new pieces of content that have not previously been PR'd:

  1. A section on equality and inequality of compound types. It is my understanding that this has previously been implicit, and is supported in Cromwell, so I wanted to make it explicit.
  2. Serialization to JSON is undefined for Pairs and for Maps with non-String keys. This make sense, because there is no unambiguous way to represent such types in JSON. Therefore, I added suggested conversions to serializable types (and back to WDL types after deserialization).
  3. To convert a Map with a non-String key, the best conversion is to a struct with two array members (keys and values). However, there is no way to write this conversion without an unzip function. Thus, I have added an unzip function to the spec.
struct IntStringMap {
  Array[Int] keys
  Array[String] values
}
Map[Int, String] m = {0: "a", 1: "b"}
Pair[Array[Int], Array[String]] u = unzip(m)
IntStringMap i = IntStringMap {
  keys: u.left,
  values: u.right
}
# after deserialization, we can convert back to Map
Map[Int, String] m2 = as_map(zip(i.keys, i.values))

I hope that items 1 and 2 are uncontroversial. For item 3, I realize we may not want to add another function to the standard library without going through the standard PR process. If that's the case, I'll remove unzip from this draft and I will update the serialization guide to state that serialization to/from JSON for Pairs and for Maps with non-String keys is not possible. I will then add a PR that we can review and decide whether to include in 1.1 or push it to development.

rhpvorderman and others added 30 commits August 10, 2018 09:14
- fix markdown typos in select_all, select_first
- specify type behavior when types are mixed
- update example to show mixed type behavior
Add `None` instead of `null`.

Specify `execution directory`
Co-Authored-By: DavyCats <davycats.dc@gmail.com>
versions/1.1/SPEC.md Outdated Show resolved Hide resolved
Co-authored-by: Davy Cats <davycats.dc@gmail.com>
@jdidion
Copy link
Collaborator Author

jdidion commented Jan 12, 2021

Voting is open. Obviously I'm +1.

@patmagee
Copy link
Member

Huge and enthusiastic +1 for me
👍

Copy link
Member

@mlin mlin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two trivial corrections noted, otherwise 👍 from me thanks!

versions/1.1/SPEC.md Outdated Show resolved Hide resolved
versions/1.1/SPEC.md Outdated Show resolved Hide resolved
jdidion and others added 2 commits January 12, 2021 13:47
Co-authored-by: Mike Lin <dna@mlin.net>
Co-authored-by: Mike Lin <dna@mlin.net>
@geoffjentry
Copy link
Member

👍

@rhpvorderman
Copy link
Contributor

👍 From me as well. Thanks for tackling this huge task!

@DavyCats
Copy link
Contributor

👍


It is recommended (but not required) that JSON outputs be "pretty printed" to be more human-readable.

## Specifying / Overriding Runtime Attributes

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is in! I'm happy 👍

@aednichols
Copy link
Contributor

👍

@cjllanwarne
Copy link
Contributor

👍 phenomenal work. Thanks so much to @jdidion in particular and to everyone else who has put in so much time and effort contributing and reviewing to get this WDL 1.1 SPEC to this state!

@vdauwera
Copy link

👍 Amazing! Huge props to @jdidion and everyone who participated, this is going to be so great for the community. 💯

@vortexing
Copy link

vortexing commented Jan 13, 2021

👍🏼
👏🏼👏🏼👏🏼👏🏼👏🏼 (just putting my 2 cents in again)

versions/1.1/SPEC.md Show resolved Hide resolved
versions/1.1/SPEC.md Outdated Show resolved Hide resolved
versions/1.1/SPEC.md Show resolved Hide resolved
@jdidion jdidion merged commit 4b99f16 into main Jan 29, 2021
@jdidion jdidion deleted the v1.1 branch December 8, 2023 14:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.