blob: e78fc0303282422371577709fe332a76fb763f79 [file] [log] [blame] [view] [edit]
# Dart Runtime Services
Implementations of various Dart developer services based on `package:dart_runtime_service`.
## Shared frontend, pluggable backend
`package:dart_runtime_service` provides a simple interface to create Dart services with common platform-agnostic features and behaviors, while also allowing for configuration of custom service backends. This removes the need for individual services to implement functionality common to most services, including:
- Launching and advertising a server
- Handling connections via various protocols (web sockets, SSE, HTTP)
- Authentication code verification
- Notification routing via stream subscriptions
- Client-registered service extension routing
- DevTools hosting
## Roadmap
There are currently two planned runtime service implementations, with a focus on replacing `dart:_vmservice` and `package:dwds`:
- `package:dart_runtime_service_vm`: an implementation of the Dart VM service protocol which can interact with the native runtimes. To be launched directly as an isolate by `dart` and `dartaotruntime`.
- `package:dart_runtime_service_web`: an implementation of the Dart VM service protocol which serves as a proxy to interact with a running web application. To eventually be launched using `dart web-development-service` by developer tooling responsible for launching and managing DDC-based applications.
Future candidates for migration include:
- `package:dtd_impl`: the implementation of the Dart Tooling Daemon (DTD), which implements a similar protocol to the VM service protocol.
- `package:dds`: the implementation of the Dart Development Service (DDS), which provides extensions to the VM service protocol. DDS reimplements much of the common functionality provided by `package:dart_runtime_service`, particularly around client management, stream subscriptions, and service extension routing.