# CommonWL
[](https://github.com/fairagro/commonwl/actions/workflows/ci.yaml)
A Rust-framework for the Common Workflow Language (CWL) that supports parsing and execution.
## Overview
`commonwl` is a Rust-based library crate supporting parsing and executing CWL Workflows and Tools. It is based on the headless task execution framework [crankshaft](https://github.com/stjude-rust-labs/crankshaft). It is developed to being used in the Scientific Workflow Infrastructure ([SciWIn](https://github.com/fairagro/sciwin)).
There is a `conformance` CLI which is being used to evaluate CWL Conformance.
## Getting Started
### Installation
To use `commonwl`, you need to install and setup a Rust environment.
Once Rust is installed, you can add the latest version of `commonwl` be using the following command
```bash
cargo add commonwl
```
To use the execution engine, the `engine` feature needs to be enabled!
```toml
commonwl = { version = "0.1", features = ["engine"] }
```
## CWL Engine
The CWL Engine features high conformance to the specification, passing all Tests for `Workflow` and `ExpressionTool` and nearly all tests for `CommandLineTool`. The conformance is dependent on the used `TaskBackend`. Currently there are the following existing and planned backends:
| Local | โ๏ธ |     |
| Docker* | โ๏ธ |    |
| TES | ๐๏ธ | - |
| Slurm | ๐งพ | - |
โ๏ธ: Fully operational - ๐๏ธ: Under Construction - ๐งพ: Planned
*=Uses Docker even if DockerRequirement is not specified.
Two tests fail due to f64 overflow outputting 1e42 instead of one with 42 zeros. `serde_json` stores all numbers as f64.
## License
This work is dual-licensed under Apache 2.0 and MIT . You can choose between one of them if you use this work.
SPDX-License-Identifier: `Apache-2.0 OR MIT`
**Funded by**

DFG project number 501899475