<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://www.w3.org/Bugs/Public/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4"
          urlbase="https://www.w3.org/Bugs/Public/"
          
          maintainer="sysbot+bugzilla@w3.org"
>

    <bug>
          <bug_id>3096</bug_id>
          
          <creation_ts>2006-04-07 20:58:30 +0000</creation_ts>
          <short_desc>Are components side-effect free?</short_desc>
          <delta_ts>2011-02-23 20:27:04 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>XML Processing Model</product>
          <component>Pipeline language</component>
          <version>unspecified</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>decided</keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Norman Walsh">Norman.Walsh</reporter>
          <assigned_to name="Norman Walsh">ndw</assigned_to>
          <cc>avernet</cc>
    
    <cc>innovimax+w3c</cc>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>9085</commentid>
    <comment_count>0</comment_count>
    <who name="Norman Walsh">Norman.Walsh</who>
    <bug_when>2006-04-07 20:58:30 +0000</bug_when>
    <thetext>Can implementations cache the results of evaluating a component with a particular set of inputs and parameters?

Should this be something that can be declared about individual components?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9094</commentid>
    <comment_count>1</comment_count>
    <who name="Innovimax">innovimax+w3c</who>
    <bug_when>2006-04-08 17:23:43 +0000</bug_when>
    <thetext>A simple answer to the question &quot;Are components side-effect free?&quot; is &quot;Not always&quot;, so we should be able to mention it.
How and where is the point of discussion for me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9214</commentid>
    <comment_count>2</comment_count>
    <who name="Norman Walsh">Norman.Walsh</who>
    <bug_when>2006-04-13 15:29:24 +0000</bug_when>
    <thetext>Discussed (without resolution): http://www.w3.org/XML/XProc/2006/04/13-minutes.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9221</commentid>
    <comment_count>3</comment_count>
    <who name="Alessandro Vernet">avernet</who>
    <bug_when>2006-04-13 16:53:42 +0000</bug_when>
    <thetext>From our call today, my understanding of the question is:

Given a pipeline that contains among other things 2 steps, both executing the same component, with the same set of inputs, should a pipeline implementation guarantee that for a given execution of that pipeline, the output documents of those two steps are always the same?

My take on it:

Will people write pipelines with two invocations of XSLT on the same input document with the same stylesheet? I don&apos;t see this as a frequent enough use case that would warrants us burdening pipeline implementations with having to guarantee that the second invocation returns the same output as the first one.

Alex</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9306</commentid>
    <comment_count>4</comment_count>
    <who name="Innovimax">innovimax+w3c</who>
    <bug_when>2006-04-19 15:41:51 +0000</bug_when>
    <thetext>I&apos;m requiring a definition of what we call side effects, because it seems like some   usable side effects makes no problem in the pipeline (repeatable side effects) and that using information about date and time which aren&apos;t side effects could make some problems

In conclusion, it looks like side effects and caching are not so obviously tighted problems</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9317</commentid>
    <comment_count>5</comment_count>
    <who name="Alessandro Vernet">avernet</who>
    <bug_when>2006-04-20 01:33:34 +0000</bug_when>
    <thetext>Mohamed: My understanding is the question is stated in comment #3:

Given a pipeline that contains among other things 2 steps, both executing the
same component, with the same set of inputs, should a pipeline implementation
guarantee that for a given execution of that pipeline, the output documents of
those two steps are always the same?

Norm: is this a fair way to put it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9561</commentid>
    <comment_count>6</comment_count>
    <who name="Norman Walsh">Norman.Walsh</who>
    <bug_when>2006-05-02 20:42:43 +0000</bug_when>
    <thetext>27 Apr 2006: http://www.w3.org/XML/XProc/2006/04/27-minutes.html

The following proposal was accepted:

We say that all components are non-functional. That is,
a pipeline implementation must behave as if it evaluated a component
every time it occurs. &quot;Must behave as if&quot; is spec-ease for
&quot;implementations that are clever enough to determine with certainty
that a component is, in fact, functional are free to cache the
intermediate results because by golly if it is, no one will be able to
tell
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>9586</commentid>
    <comment_count>7</comment_count>
    <who name="Norman Walsh">Norman.Walsh</who>
    <bug_when>2006-05-03 20:45:13 +0000</bug_when>
    <thetext>Implemented in langspec.xml $1.7$.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>