**New**
- We are now more permissive when specifying configuration schema in order make constructing
configuration schema more concise.
- When specifying the value of scalar inputs in config, one can now specify that value directly as
the key of the input, rather than having to embed it within a `value` key.
**Breaking**
- The implementation of SQL-based event log storages has been consolidated,
which has entailed a schema change. If you have event logs stored in a
Postgres- or SQLite-backed event log storage, and you would like to maintain
access to these logs, you should run `dagster instance migrate`. To check
what event log storages you are using, run `dagster instance info`.
- Type matches on both sides of an `InputMapping` or `OutputMapping` are now enforced.
**New**
- Dagster is now tested on Python 3.8
- Added the dagster-celery library, which implements a Celery-based engine for parallel pipeline
execution.
- Added the dagster-k8s library, which includes a Helm chart for a simple Dagit installation on a
Kubernetes cluster.
**Dagit**
- The Explore UI now allows you to render a subset of a large DAG via a new solid
query bar that accepts terms like `solid_name+*` and `+solid_name+`. When viewing
very large DAGs, nothing is displayed by default and `*` produces the original behavior.
- Performance improvements in the Explore UI and config editor for large pipelines.
- The Explore UI now includes a zoom slider that makes it easier to navigate large DAGs.
- Dagit pages now render more gracefully in the presence of inconsistent run storage and event logs.
- Improved handling of GraphQL errors and backend programming errors.
- Minor display improvements.
**dagster-aws**
- A default prefix is now configurable on APIs that use S3.
- S3 APIs now parametrize `region_name` and `endpoint_url`.
**dagster-gcp**
- A default prefix is now configurable on APIs that use GCS.
**dagster-postgres**
- Performance improvements for Postgres-backed storages.
**dagster-pyspark**
- Pyspark sessions may now be configured to be held open after pipeline execution completes, to
enable extended test cases.
**dagster-spark**
- `spark_outputs` must now be specified when initializing a `SparkSolidDefinition`, rather than in
config.
- Added new `create_spark_solid` helper and new `spark_resource`.
- Improved EMR implementation.
**Bugfix**
- Fixed an issue retrieving output values using `SolidExecutionResult` (e.g., in test) for
dagster-pyspark solids.
- Fixes an issue when expanding composite solids in Dagit.
- Better errors when solid names collide.
- Config mapping in composite solids now works as expected when the composite solid has no top
level config.
- Compute log filenames are now guaranteed not to exceed the POSIX limit of 255 chars.
- Fixes an issue when copying and pasting solid names from Dagit.
- Termination now works as expected in the multiprocessing executor.
- The multiprocessing executor now executes parallel steps in the expected order.
- The multiprocessing executor now correctly handles solid subsets.
- Fixed a bad error condition in `dagster_ssh.sftp_solid`.
- Fixed a bad error message giving incorrect log level suggestions.
**Documentation**
- Minor fixes and improvements.
**Thank you**
Thank you to all of the community contributors to this release!! In alphabetical order: cclauss,
deem0n, irabinovitch, pseudoPixels, Ramshackle-Jamathon, rparrapy, yamrzou.