Re: Another take on versioning

On 9 Oct 2009, at 21:44, Jeni Tennison wrote:
> As I understand it, the reason for requiring the <p:import> is to  
> enable processors to work out the signature of steps that they don't  
> know about, so that they can connect up the steps correctly. So  
> here's my dumb question: the only outputs that you need to care  
> about are the ones that are connected, so couldn't a processor work  
> out what outputs a step is supposed to have based on the connections  
> to those outputs? And couldn't it just assume an empty sequence on  
> those ports without needing to know the declaration?


Put another way, what I'm suggesting is:

"Forwards-compatible mode is triggered in libraries/pipelines in which  
the XProc version is greater than the version recognised by the  
processor. In forwards-compatible mode:

   * Unrecognised attributes on elements in the XProc namespace are  
ignored.

   * Unrecognised steps in the XProc namespace are marked as invalid.

   * Unrecognised options on XProc steps are ignored.

   * If an XProc step contains inputs that are not part of its  
signature, those inputs are ignored.

   * If a step contains an input that contains a <p:pipe> that  
connects to an unrecognised output on an XProc step (which would  
normally cause err:XS0022), these inputs are replaced by:

     <p:input port="...">
       <p:empty />
     </p:input>
   * Any step which has a type that the processor does not implement  
is marked as invalid.

In forwards-compatible mode, it is a dynamic error (err:XD0032) to  
attempt to evaluate a step that is marked “invalid”."

Cheers,

Jeni
-- 
Jeni Tennison
http://www.jenitennison.com

Received on Saturday, 10 October 2009 12:19:00 UTC