Terminators

A Terminator is an EXA which deliberately kills other EXAs of your own.

The KILL instruction by default will kill another EXA owned by you if one exists in the current host. At first glance this appears to be a penalty for using KILL incorrectly, but it is much more important than that.

It means that every EXA has a built in mechanism for receiving a message from another EXA telling it to halt.

In most levels you are required to "leave no trace". This can be done by having EXAs configured to detect when the mission is complete and halt themselves, but this may require a lot of code: it can be much more efficient to have just one EXA (the Terminator) detect when the mission is complete, then KILL all the others.

The other benefit of using a Terminator is that a KILL signal can halt an EXA even if it is in a blocking condition. This can allow blocking commands to be used in situations where they otherwise might not be able to, and can be combined with Canaries to detect blocking conditions.

For example, if you have a linked host which you know to exist, but do not know if it has room for the EXA, you can test this by REPLing a canary that follows the link, running KILL, then doing TEST MRD. If there was space in the linked host, the canary will have moved into it, survived the KILL because it was not in the same host, and can then send a message on M; if it failed to move out, it would have been KILLed.