`miniwdl run`
* Improved logging with tty colors and other enhancements
* New subcommand `miniwdl run_self_test` runs a little workflow to test the installation
* Library functions involving file I/O (e.g. `read_string()`, `write_lines()`) are now available in workflows as well as tasks (204)
* Prevent use of host files neither supplied in the workflow inputs nor generated by the workflow (e.g. `/etc/passwd`)
* Fix up type coercions in call inputs and struct instances
**Remaining limitations:**
* Calls run sequentially (202, 203)
* Task input files are mounted read-only; commands to rename or remove them will fail (210)
* Task output files must reside in or under the initial working directory (214)
* Namespace discrepancies may interfere with specifying optional inputs to sub-workflow calls (193)
Please vote on these and/or report other interoperability problems via [Issues](https://github.com/chanzuckerberg/miniwdl/issues)!
`WDL` package
**Breaking API changes:**
* `WDL.Env` rewritten with an easier, more-Pythonic interface
* Simplify compound `Value` constructors so that e.g. `Value.Array` needs to be told the array item type rather than the full `Type.Array(...)`
We now plan to minimize further breaking API changes to the WDL AST data structures, on the way to a 1.0 version.
**Other changes:**
* Add `__str__` to Expr classes (215 DavyCats)
* String-to-Int/Float coercions allowed, may fail at runtime (198)
* Statically reject use of `stdout()`, `stderr()`, and `glob()` outside of task output sections
* Set `pos : SourcePosition` attribute on the subset of `WDL.Type` objects instantiated by the syntax parser (e.g. `Decl.type` & `StructTypeDef` dinvlad)
* Fix `WDL.resolve_file_import()` pass-through call to `WDL.Tree.resolve_file_import()` (dinvlad)
* Tighten name collision rules for 1.0+ workflow outputs (196)
Housekeeping
* Parallelized unit test suite using pytest
* Cromwell 45, lark-parser 0.7.3