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.