IPDL: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
(replace link with wayback machine link and add firefox-source-docs link)
 
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
IPDL is the "Inter-*-communication Protocol Definition Language", where "*" includes "process" and "thread."
IPDL is the "Inter-*-communication Protocol Definition Language", where "*" includes "process" and "thread". [https://firefox-source-docs.mozilla.org/ipc/ipdl.html Firefox-source-docs on IPDL].


== Status ==
WARNING: These wiki articles are extremely old, so they may not be accurate.
 
The IPDL compiler is being implemented in stages.
 
# Basic code generation (no protocol management)
# Type checking and protocol management
# Protocol state machines
# ('''IN PROGRESS''') Full dynamic safety checking
# <font color="gray">Static analysis of code implementing IPDL interfaces</font>
# <font color="gray">Model checking of inter-protocol interactions</font>


== Reference ==
== Reference ==
Line 18: Line 9:
The [[IPDL/Five minute example]] shows examples of what C++ code you need to implement to make IPDL "work."  Before reading this, you should be somewhat familiar with the IPDL (or good at learning by example.)
The [[IPDL/Five minute example]] shows examples of what C++ code you need to implement to make IPDL "work."  Before reading this, you should be somewhat familiar with the IPDL (or good at learning by example.)


[[The IPDL/Electrolysis Cookbook]] gives recipes for various common tasks in electrolysis development.
The [[IPDL/Low level setup]] walks you through setting up the support infrastructure (processes, threads, and sockets) that IPDL needs to send messages.  Few people should need to read this.
 
Another [https://web.archive.org/web/20210530025304/https://developer.mozilla.org/en-US/docs/Mozilla/IPDL/Tutorial IPDL tutorial] (MDN) that provides with some more information about IPDL protocols.


The [[IPDL/Low level setup]] walks you through setting up the support infrastructure (processes, threads, and sockets) that IPDL needs to send messages.  Few people should need to read this.
[[IPDL/Shmem]].
 
'''ON HOLD''' Proposal for [[IPDL/Proposal:Shmem_access_control|fine-grained shmem access control]]


== Other projects ==
== Other projects ==


* [[IPDL/Unit test generation]]: use IPDL specifications to generate unit tests that "extensively" explore the protocol-level interaction of two (or more) actors.  The unit tests are intended to check the C++ implementation(s) of the actor interfaces.
* [[IPDL/Unit test generation]]: use IPDL specifications to generate unit tests that "extensively" explore the protocol-level interaction of two (or more) actors.  The unit tests are intended to check the C++ implementation(s) of the actor interfaces.

Latest revision as of 10:30, 7 April 2022

IPDL is the "Inter-*-communication Protocol Definition Language", where "*" includes "process" and "thread". Firefox-source-docs on IPDL.

WARNING: These wiki articles are extremely old, so they may not be accurate.

Reference

The IPDL/Getting started guide intends to be somewhat verbose and gentle introduction to the IPDL.

The IPDL/Five minute example shows examples of what C++ code you need to implement to make IPDL "work." Before reading this, you should be somewhat familiar with the IPDL (or good at learning by example.)

The IPDL/Low level setup walks you through setting up the support infrastructure (processes, threads, and sockets) that IPDL needs to send messages. Few people should need to read this.

Another IPDL tutorial (MDN) that provides with some more information about IPDL protocols.

IPDL/Shmem.

ON HOLD Proposal for fine-grained shmem access control

Other projects

  • IPDL/Unit test generation: use IPDL specifications to generate unit tests that "extensively" explore the protocol-level interaction of two (or more) actors. The unit tests are intended to check the C++ implementation(s) of the actor interfaces.