<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Rivet 2.0: Release Notes and Known Problems</title>
    <link rel="stylesheet" href="../css/wondrous/styles.css" type="text/css" />
</head>

<body>
    <div id="container">
        <div id="header">
            <h1><a href="../index.html">Rivet</a></h1>
            <h2 id="slogan">Webscripting for Tcl'ers</h2>
            <div class="clear"></div>
        </div>
        <div id="body">
            <div id="content">
                <h2><headline>Rivet 2.0: Release Notes and Known Problems</headline>
</h2>
                <div>
 <div class="sez">
  <h4>Download</h4>
  <p>
				Rivet 2.0 is available for download from ASF mirror sites. Check the 
				<a href="download.html">download page</a>
 for information about 
				downloading the source code, rpm files or packages for SuSE, 
				Redhat, Debian and Ubuntu (packages for SuSE and Redhat are available thanks to 
				Harald Oehlmann).
			      </p>
  <p>
				Code integrity for this release can be checked using the 
				public keys in the <a href="http://www.apache.org/dist/tcl/KEYS">KEYS</a>
 file.
			      </p>
  <p>
				Rivet 2.0 has been tested on Apache 1.3 , 2.2 and 2.4 servers.
				<strong>Apache 2.2/2.4 servers must be running 
				<tt>prefork</tt>
 as multiprocess module   </strong>
 though. Rivet is incompatible with the 
				'worker' and 'event' MPMs.
			      </p>
 </div>
 <div class="sez">
  <h4>Release Notes for Rivet 2.0.5 <span class="timestamp">(26-Jun-2012)</span>
  </h4>
  <h5>Fixed Bugs</h5>
  <ul>
   <li>	
					    DIO: Mysql connection is now checked when connection reference is reused 
					    because it could have dropped (contributed by Cyril Shtumf, fixes #53221)
					</li>
   <li>
					    Fixed SQL syntax generated in delete method when multiple fields are
					    used in the selection clause (contributed by Cyril Shtumf, fixes bug #53222)
					</li>
  </ul>
  <h5>New Features</h5>
  <ul>
   <li>
					    New shorthand expression <pre class="programlisting">&lt;?= ... ?&gt;</pre>
 is
					    transformed into <pre class="programlisting">&lt;? puts -nonewline "..." ?&gt;</pre>

					    (contributed by Jeff Lawson, addresses #53217)
					   </li>
   <li>
					    http_accept.tcl: new command parsing of Accept HTTP header lines (contributed by 
					    Harald Oehlmann)
					</li>
   <li>
					    rivet/packages/entities/entities.tcl: package RivetEntities
					    (contributed by Harald Oehlmann)
					</li>
   <li>
					    tclconfig/ltmain.sh: updated from recent autotools installation
					</li>
   <li>
					    Support for HttpOnly flag improves security and reduces the risk of
					    cross-site scripting attacks (contributed by Cyril Shtumf, fixes #53224)
					</li>
   <li>
    <b>form</b>
 class objects create now automatic field ids if left undefined
					    by the programmer 
					   </li>
  </ul>
  <h5>Manual Pages Expanded</h5>
  <ul>
   <li>New pages for package <b>entities</b>
 and for command <b>http_accept</b>
   </li>
   <li>Improved manual entry for 'var list' (Fixes bug #52911)</li>
  </ul>
 </div>
 <div class="sez">
  <h4>Release Notes for Rivet 2.0.4 <span class="timestamp">(23-Sep-2011)</span>
  </h4>
  <h5>Bugs fixed</h5>
  <p>
						An Tcl error in an AbortScript would trigger a message that
						erroneously printed that an ErrorScript was running.
					</p>
  <h5>Manual Pages Expanded</h5>
  <p>
						Manual pages have been expanded to include documentation for more
						commands implemented but not yet documented. Section documenting 
						single commands has been reorganized to list commands in alphabetical
						order.
					</p>
  <h5>New Features</h5>
  <p>
						Commands <strong>load_env</strong>
 and <strong>load_headers</strong>

						accept an array name as argument. If not fully qualified the array
						was created in either the <tt>::request</tt>
 namespace (.rvt templates)
						or the global namespace (.tcl scripts). Starting with 2.0.4 
						these commands, when invoked from within a procedure, create
						the array in the proc's local scope, unless the argument is a
						fully qualifed name scoping the array in a user defined namespace.
					  </p>
  <p>
						Command <strong>makeurl</strong>
 has been extended to be used in three forms
						<ul>
    <li>without argument
								<pre class="programlisting">makeurl
==&gt; Current script's url</pre>
    </li>
    <li>with an absolute path
								<pre class="programlisting">makeurl /a/b/c
==&gt; http://&lt;host&gt;:&lt;port&gt;/a/b/c </pre>
    </li>
    <li>with a relative path
								<pre class="programlisting">makeurl a/b/c
==&gt; http://&lt;host&gt;:&lt;port&gt;/&lt;current script&gt;/a/b/c</pre>
    </li>
   </ul>
  </p>
 </div>
 <div class="sez">
  <h4>Release Notes for Rivet 2.0.3 <span class="timestamp">(19-Mar-2011)</span>
  </h4>
  <h5>New Features</h5>
  <p>
				        Rivet 2.0.3 introduces 2 new configuration directives
				        <ul>
    <li>
				                New configuration directive <strong>AbortScript</strong>
: 
				                Tcl script to be run if an <b>abort_page</b>
 is called 
				                in a request processing
				                </li>
    <li>
						New configuration directive 
				                <strong>AfterEveryScript</strong>
: An <b>abort_page</b>
 command stops the
				                page generation and skips also a configured <strong>AfterScript</strong>
 to
						run an <strong>AbortScript</strong>
. This new configuration script is to 
						be run anyway, as last script of a single request processing, 
						whether an abort condition took place during the page
						generation or the procedure completed successfully.
				                </li>
    <li>
				                Enhanced form for <strong>abort_page</strong>
: page generation can
				                be interrupted by calling <strong>abort_page</strong>
. The new command 
				                accepts now an argument whose value can be checked to determine which
				                condition forced to call the page generation off.
				                </li>
    <li>
				                New command <strong>abort_code</strong>
 returns the value of the
				                argument passed to <strong>abort_page</strong>
. Useful in <b>AbortScript</b>

				                or <b>AfterEveryScript</b>
 code.
				                </li>
   </ul>
  </p>
  <h5>Problems fixed</h5>
  <p>
				        Code for command <strong>apache_table</strong>
 was ported to Rivet for Apache 1.3
				      </p>
 </div>
 <div class="sez">
  <h4>Release Notes for Rivet 2.0.2 <span class="timestamp">(25-Oct-2010)</span>
  </h4>
  <p>
					   Rivet 2.0.2 is a maintainance release with the main purpose to adjust the 
					   build process in a way that makes straightforward the generation of a Debian package.
				    </p>
  <p>
					   Rivet (named 
					   <a href="http://packages.qa.debian.org/liba/libapache2-mod-rivet.html">libapache2-mod-rivet</a>
 
					   to follow the Debian Apache policy) is now in Debian.
					   The package is sponsored by Sven Hoexter (Debian Developer). 
				      </p>
 </div>
 <div class="sez">
  <h4>Relase Notes for Rivet 2.0.1 <span class="timestamp">(12-Jul-2010)</span>
  </h4>
  <h5>Fixed Bugs in Rivet 2.0.1</h5>
  <ul>
   <li>
						Several error messages printed during the installation phase have been
						fixed. The problems were harmless, but nonetheless annoying.
					    </li>
   <li>
						Fixed bug in installation of the rivetparser library.
					    </li>
   <li>
						Fixed tables creation for Postgres backend. The SQL script that 
						creates the rivet_session_cache table misnamed 2 columns.
						<b>Current DIO Postgres backend breaks Session package if the database
						was created with an old Rivet version</b>
. To fix the problem one has to
						rename the 'key' and 'package' columns as 'key_' and 'package_'
<pre class="programlisting">
ALTER TABLE rivet_session_cache RENAME COLUMN key to key_
ALTER TABLE rivet_session_cache RENAME COLUMN package to package_</pre>
   </li>
   <li>
						Fixed dio_Postgres.tcl method. A mistyped variable caused at least method 
						'store' to fail.	
					    </li>
  </ul>
  <h5>New Features</h5>
  <ul>
   <li>
    <p>
                                A new package <b>Calendar</b>
 has been added. Calendar provides 3 Itcl classes that 
                                print Calendar tables in ASCII, XML and XHTML forms (see examples and related 
                                manual page).
                                </p>
    <p>
     <em>
      <b>Calendar</b>
 requires Tcl8.5 or Tcl8.4 with package 'dict'     </em>
    </p>
   </li>
   <li>
                            New page for package 'form' added to the manual							
                        </li>
  </ul>
 </div>
 <div class="sez">
  <h4>Installation Issues</h4>
  <p>
					    Rivet is widely configurable to select custom directories where the module and
					    its associated libraries have to reside.
			    </p>
  <ul>
   <li>
				    Even though you can install Rivet to run pure Tcl scripts, some associated packages
				    (namely 'Session' and 'DIO') are written in Itcl, an OO extension of the base 
				    language.In order to safely run those package, you have to check yourself if 
				    the Itcl extension installed on your system is compatible with the Tcl version
				    for which you're building Rivet.
				</li>
  </ul>
 </div>
 <div class="sez">
  <h4>Known Problems</h4>
  <ul>
   <li>
						    Rivet is reported to conflict with cgi scripts on some Linux machines.
						    Symptom of the problem is when cgi scripts hang forever and don't send 
						    any content to the client
					    </li>
  </ul>
 </div>
</div>



                <div class="contentbottom">
                    <div id="last_modified">Last Modified: 26-06-2012 11:00:43 UTC</div>
                </div>
            </div>

            <div class="sidebar">
                <ul>
                    <li>
                        <h4>News</h4>
                        <ul>
			    <li><span class="newsheader">26 June 2012</span>: <a href="rn-2-0.html">Rivet 2.0.5 released</a></li>
			    <li><span class="newsheader">6 July 2012</span>: <a href="http://www.eurotcl.tcl3d.org/">10th European Tcl/Tk User Meeting</a></li>
			</ul>
                    </li>
                    <li id="main">
    <h4 class="">Rivet</h4>
    <ul class="blocklist">
        <li class="navitem">
            <a href="../index.html" class="">Rivet Homepage</a>
        </li>
        <li class="navitem">
            <a href="http://tcl.apache.org/" target="asf">Apache Tcl Home</a>
        </li>
        <li class="navitem">
            <a href="download.html" class="">Getting Rivet</a>
        </li>
        <li class="navitem">
            <a href="http://tcl.apache.org/rivet/manual/" target="rivetman">Documentation</a>
        </li>
        <li class="navitem">
            <a href="hello_world.html" class="">Examples</a>
        </li>
        <li class="navitem">
            <a href="about.html" class="">About Us - Contact</a>
        </li>
    </ul>
</li>
<li id="tcl">
    <h4 class="">Tcl/Tk</h4>
    <ul class="blocklist">
        <li class="navitem">
            <a href="http://www.tcl.tk/" target="tclxchange">The Tcl Language
		    </a>
        </li>
        <li class="navitem">
            <a href="http://wiki.tcl.tk/" target="tclxchange">Tcl'ers Wiki</a>
        </li>
    </ul>
</li>
<li id="release">
    <h4 class="">Downloads</h4>
    <ul class="blocklist">
        <li class="navitem">
            <a href="rn-2-0.html" class="">Rivet 2.0</a>
        </li>
    </ul>
</li>
<li id="acknowledgments">
    <h4 class="">Acknowledgments</h4>
    <ul class="blocklist">
        <li class="navitem">
            <a href="http://www.apache.org/foundation/thanks.html">ASF Sponsorship</a>
        </li>
    </ul>
</li>

 
                </ul> 
            </div>
            <div class="clear"></div>
        </div>
    </div>
    <div id="footer">
        <div class="footer-content">
            <p><a href="http://www.apache.org/">Apache Software Foundation</a> | Design by <a href="http://www.spyka.net">Free CSS Templates</a> | <a href="http://www.justfreetemplates.com">Free Web Templates</a></p>
        </div>
    </div>
    <div style="text-align: center; font-size: 0.75em;">Design downloaded from <a href="http://www.freewebtemplates.com/">free website templates</a>.</div></body>
</html>

