blob: d6b9814be172413889d1d8072007df8c5540f06a [file] [log] [blame] [view]
FIDL (or "**F**uchsia **I**nterface **D**efinition **L**anguage") is the IPC system for Fuchsia.
## Start here
The [tutorial](tutorial/ presents a simple "*Hello, world*" client
and server, showing the FIDL language definitions and continuing with sections
specific to each supported target language (e.g., C++, Dart).
Read the [Introduction](intro/ section to get a brief overview of what FIDL is,
including some of its design goals, requirements, and workflow.
## Language support
The FIDL code generator creates code in a multitude of target languages.
The following table gives you a reference to the details of the language implementaion,
as well as pointers to the code generated from the [tutorial's](tutorial/
"*Hello, world*" client and server examples.
Language | Examples
[C][c-lang] | [server][csrv-ex]
[Low-Level C++][llcpp-lang] | [client][llcppcli-ex], [server][llcppsrv-ex]
[High-Level C++][hlcpp-lang] | [client][hlcppcli-ex], [server][hlcppsrv-ex]
[Dart][dart-lang] | [client][dartcli-ex], [server][dartsrv-ex]
[Rust][rust-lang] | [client][rustcli-ex], [server][rustsrv-ex]
# Contributing
Please read the [CONTRIBUTING]( chapter for more information.
# References
* [ABI and Source Compatibility Guide](reference/ — how to evolve FIDL APIs
* [API Rubric][fidl-api] — design patterns and best practices
* [Style Rubric][fidl-style] — style guide
* [Attributes](reference/ — describes the available FIDL attributes
* [Bindings](reference/ — requirements for FIDL language bindings
* [Compiler](reference/ — describes the organization of the compiler
* [Linter](reference/ — describes how to check API readability with the FIDL linter
* [Editors](reference/ — discusses support for FIDL in IDEs and stand-alone editors
* [FIDL Tuning Proposals](reference/ftp/ — accepted and rejected changes for FIDL
* [Grammar](reference/ — the FIDL grammar
* [Host](reference/ — summary of the parts of FIDL that are allowed on host
* [JSON IR](reference/ — a tour of the JSON Intermediate Representation
(**JSON IR**) generator
* [Language](reference/ — defines the syntax of the FIDL language
* [`library zx`](reference/ — the Zircon system library
* [Wire Format](reference/wire-format/ — details the byte-by-byte organization
of data
<!-- xrefs -->
[fidl-style]: /docs/development/languages/fidl/
[fidl-api]: /docs/development/api/
<!-- these in particular make the table manageable, and have the form:
<language>-lang (the language part)
<language>cli-ex (the client example)
<language>srv-ex (the server example)
[c-lang]: tutorial/
[csrv-ex]: /garnet/examples/fidl/echo_server_c/
[llcpp-lang]: tutorial/
[llcppcli-ex]: /garnet/examples/fidl/echo_client_llcpp/
[llcppsrv-ex]: /garnet/examples/fidl/echo_server_llcpp/
[hlcpp-lang]: tutorial/
[hlcppcli-ex]: /garnet/examples/fidl/echo_client_cpp/
[hlcppsrv-ex]: /garnet/examples/fidl/echo_server_cpp/
[dart-lang]: /docs/development/languages/fidl/tutorial/
[rust-lang]: /docs/development/languages/fidl/tutorial/
[rustcli-ex]: /garnet/examples/fidl/echo_client_rust/
[rustsrv-ex]: /garnet/examples/fidl/echo_server_rust/