| You learned in the **Introduction to Fuchsia** that Zircon provides kernel object |
| types to support inter-process communication (IPC) on Fuchsia. These object types |
| define specific mechanisms that processes use to exchange data. Within this |
| framework, **Zircon channels** provide an asynchronous message-based transport |
| capable of passing both data and a set of handles to grant access rights. |
| |
| Zircon channels are the basis for higher-level interactions described by the |
| **Fuchsia Interface Definition Language** (FIDL) — the language used to describe |
| IPC protocols used by Fuchsia programs. FIDL allows diverse clients and servers |
| to interoperate by enforcing a set of semantic behavior and persistence formats |
| operating over the channel. |
| |
| Programs interact with FIDL protocols through language-specific bindings and |
| libraries generated by the **FIDL compiler** as an abstraction layer to the |
| complexity of Zircon IPC. This enables the introduction of familiar programming |
| idioms such as structured types and synchronous execution. The compiler generates |
| bindings for each supported language so providers do not need to maintain client |
| libraries. |
| |
| {: width="870"} |