[Zeek-Dev] support for event handlers using a subset of parameters
vern at corelight.com
Mon Feb 18 16:32:29 PST 2019
This thread got backburnered for me due to other $dayjob stuff, but returning
to it now, one thing I wondered would be what if instead of just allowing
missing parameters as a way to support changing event interfaces, we
introduced an explicit notion of deprecation, as follows.
Suppose "event foo(a: string)" is an event to which we want to add
a second parameter, b: string. We could express this in event.bif as:
event foo%(a: string%) &deprecated;
event foo%(a: string, b: string%);
This would (1) allow the developer who's changing the API to decide up
front whether the change can be backward-compatible by leaving out parameters,
(2) put the maintenance burden just on the developer, (3) allow users to
(automatically) look for the uses of the deprecated API if they wish,
(4) avoid certain forms of user errors, and (5) allow us to consider other
API changes such as removing parameters.
It's not as easy to implement ... but strikes me as cleaner than where
this discussion has wound up going.
More information about the zeek-dev