blob: 25e8758f5fc6dc863994e655e10616e632824b6d [file] [log] [blame] [view]
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.
![Diagram showing how Fuchsia Interface Definition Language (FIDL) facilitates
inter-process communication (IPC) through a common interface; regardless of the
programming language used.](/docs/get-started/images/fidl/fuchsia-interface.png){: width="870"}