IPDL: Difference between revisions

10 bytes removed ,  7 April 2022
replace link with wayback machine link and add firefox-source-docs link
(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.
Confirmed users
441

edits