Language projects

Allow compile time constants into expressions

Github issues: 294, 331.

Initialization of header stacks and structs

Github issues: 198, 341.

P416 formal semantics

Compiler projects


Streamline preprocessing of P4. Currently the compiler needs to invoke cpp even when invoked with –no-cpp because it needs the preprocessor to inline #include files. And moreover, it is using a hardcoded system include path because the compiler options are not passed to the method invoking the preprocessor. This can turn into a significant improvement in execution time if cpp is not spawned as a process for every include directive.

p4c compiler driver

Streamline the mechanism of the compiler driver to pass options to the backend. Even though we have the -Xp4c option, developers expect that the driver supports all the backend options natively. We have been adding a number of these directly into the driver, however, that is not a scalable solution.

Compiler error reporting

Improve compiler error reporting

IR Tools

Implemente the analog of P414 p4-graphs that works with the p4c IR.


Fully document the classes for both IR and compiler passes and organize the documentation into chapters. There is also significant material captured in a Powerpoint presentation that would be good to integrate into the generated HTML documentation.

Modeling projects

Implement PSA on the behavioral model. Details soon.

Infrastructure projects

Details to follow.