Tags: oxalica/async-lsp
Tags
v0.0.5
Major changes:
- Decoupled `tokio`, which is now an optional dependency. `futures` utilities,
like channels, are used instead. `stdio` module still requires an async
executor to work. See its documentations for the the usage with `tokio` or
`async-io` driver, briefly `lock_tokio()` or `async_io::Async::new(lock())`.
- `Frontend` is renamed to `MainLoop`, and a `run_buffered` shortcut is
provided to auto-wrap non-`AsyncBufRead` arguments with a buffer.
- `LspService::{Error,Response}` type bounds are relaxed. (#5) Users are free
to implement different error and/or response types in their middlewares. But
they should still meet the bounds on `MainLoop` constructors.
Features:
- Separated `Error::Eof` from `Error::Io`.
- `{Server,Client}Socket::new_closed` constructor for testing.
- `AnyEvent::{is,downcast_{ref,mut}}` to in sync with `Box<dyn Any>`.
- More examples, tests and benchmarks.
- Complete documentations.
Internal changes:
- The platform related behavior of `ClientProcessMonitor` is moved into an
individual crate `waitpid-any`. It now has a blocking implementation and
spawns a thread. *NIX, Windows and *BSD are all supported now.
- Writing outgoing messages is now done concurrently and will not suspend
reading and request handling.