Skip to main content

Extending Ares 2

Simple Story

Ares 2 is built so that the next language, build tool or analysis technique can join without rewriting the parts that already work.

This section says where those seams are, so a new kind of examination can be run in the same school.

The five extension points

Each corresponds to one axis of the ProgrammingLanguageConfiguration enum or to one layer of the enforcement pipeline.

PageStatusIntended purpose
New programming languagesPlannedAdd a language beyond Java: reader, director, name rules, test-case factory
New build toolsPlannedAdd a build tool beyond Maven and Gradle: BuildMode, descriptor detection, generated wiring
New policy domainsPlannedAdd a permission domain beyond the current eight, end to end
New analysis technologyPlannedAdd a static analyser alongside ArchUnit and T. J. Watson Libraries for Analysis (WALA)
New enforcement mechanismPlannedAdd a weaving or sandboxing mechanism alongside AspectJ, instrumentation and Phobos

How to read this section

Every page follows the same shape: which enum or interface you extend, which files the change touches, which of the four continuous integration (CI) combinations must be re-run, and what a complete change looks like when it is finished. None of them is a substitute for reading the subsystem pages first.

Notes

  • Adding a domain or a mechanism means adding to a security boundary. A partial extension that is silently ignored by one enforcement layer is worse than no extension at all, because the policy then claims a guarantee the code does not deliver.