`miniwdl run`
* Workflow-level plugin coroutine interface
* Fix errant behavior with multiple installed task plugins
* New [examples](https://github.com/chanzuckerberg/miniwdl/tree/master/examples) of plugins customizing the runner, logging task CPU/memory usage and uploading outputs to cloud storage. (Full plugin API documentation is still needed.)
* Ensure creation of empty `output_links/` folder in run directory, even if task outputs no files
* [Config option](https://github.com/chanzuckerberg/miniwdl/blob/master/WDL/runtime/config_templates/default.cfg) to generate `output_links/` with hardlinks instead of symbolic links (`[file_io] output_hardlinks`)
* Config option to delete task container working directory after completion (`[task_runtime] delete_work`)
* Ensure graceful abort on receipt of SIGPIPE
`WDL` package
* `read_json()` infers WDL types for nested lists/objects, so that WDL accessor expressions can navigate them (320 331 illusional)
* Add [`WDL.Type.unify()`](https://miniwdl.readthedocs.io/en/latest/WDL.html#WDL.Type.unify) supporting this
* Prevent confusion between names *beginning* with `runtime`, `meta`, and `parameter_meta` and actual keywords (363 DavyCats)
* bump [lark-parser](https://github.com/lark-parser/lark) version
`miniwdl localize`
Following last month's deprecation notice, this tool has been repurposed to provide a way to "prime" the [URI file download cache](https://miniwdl.readthedocs.io/en/latest/runner_reference.html#file-download-cache) based on given workflow inputs and/or specified URIs, before actually running the workflow. Doing so can prevent download effort duplication if it's planned to launch multiple concurrent workflows using common reference data URIs.
`miniwdl cromwell`
**Deprecation notice:** `miniwdl cromwell` may be retired in the medium-term future; see and comment on 351