- Executed commands now return a unicode string by default
- Removed magical module-like execution contexts [636](https://github.com/amoffat/sh/issues/636)
- Added basic asyncio support via `_async`
- Dropped support for Python < 3.8
- Bumped default tty size to more standard (24, 80)
- First argument being a RunningCommand no longer automatically passes it as stdin
- `RunningCommand.__eq__` no longer has the side effect of executing the command [518](https://github.com/amoffat/sh/pull/531)
- `_tee` now supports both "err" and "out" [215](https://github.com/amoffat/sh/issues/215)
- Removed the builtin override `cd` [link](https://github.com/amoffat/sh/pull/584#discussion_r698055681)
- Altered process launching model to behave more expectedly [495](https://github.com/amoffat/sh/issues/495)
- Bugfix where `_no_out` isn't allowed with `_iter="err"` [638](https://github.com/amoffat/sh/issues/638)
- Allow keyword arguments to have a list of values [529](https://github.com/amoffat/sh/issues/529)