<!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>Apache Rivet Release Notes</title>
    <link rel="stylesheet" href="../templates/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>Apache Rivet Release Notes</h2>
                <p>Apache Rivet current stable version is <span>3.2.4</span>
</p>

<dl>
    <dt>Rivet 3.2.4 release notes</dt>
    <dd>
        <p>
            <h4>Rivet 3.2.4</h4>
            <ul>
                <li>Fixed regression bug that failed to run ChildExitScripts
                        when running the prefork and worker bridges</li>
            </ul>
        </p>
    </dd>
    <dt>Rivet 3.2.3 release notes</dt>
    <dd>
        <p>
            <h4>Rivet 3.2.3</h4>
            <ul>
                <li>Replaced CONST84 definitions with CONST86 in C code</li>
                <li>Fixed [::rivet::raw_post] that failed when the POST request
      					had no sections defined (contribution provided by Scott Pitcher)</li>
                <li>Now virtual host interpreters log message into their log files also
      					during ChildInitScript stage</li>
            </ul>
        </p>
    </dd>
    <dt>Rivet 3.2.2 release notes</dt>
    <dd>
        <p>
            <h4>Rivet 3.2.2</h4>
            <ul>
                <li>A memory leak was fixed in Rivet_Var (src/mod_rivet_ng/rivetCore.c)</li>
                <li>Installation and TEA scripts were updated</li>
                <li>The form [::rivet::var all] accepts an optional flat list argument of 
      					key-value pairs which are defaults of query variables (yes, this argument 
      					is supposed to be a dictionary). This form generalizes the [::rivet::var get &lt;varname&gt; &lt;default&gt;] 
      					command form to [::rivet::var all]</li>
                <li>Tests for this new form were added. Also ::rivet::var related tests in general were improved</li>
                <li>Configuration directive HonorHeaderOnlyReqs, though still supported, was renamed as
      					HonorHeadRequests. Default for this directive is now 'On'.</li>
            </ul>
        </p>
    </dd>
    <dt>Rivet 3.2.1 release notes</dt>
    <dd>
        <p>
            <h4>Rivet 3.2.1</h4>
            <ul>
                <li>The array built by command ::rivet::inspect server now shows also the current log level</li>
                <li>Session package tables have larger columns for session data</li>
                <li>Code for environment variables access extensively rewritten to make substantially
      					convenient to call ::rivet::env instead of ::rivet::load_env (the manual for long time claimed
      					that was the case but actually low level code execution was almost the same)</li>
                <li>Introducing preprocessing macro RIVET_DEBUG_BUILD controlled by the --enable-rivet-debug-build
      					configure switch. This is meant to enable builds that include specific code for the module
      					development and debugging that can be excluded from common builds</li>
                <li>Various manual improvements and correction</li>
                <li>Fixed issues with the autotools build scripts</li>
            </ul>
        </p>
    </dd>
    <dt>Rivet 3.2.0 release notes</dt>
    <dd>
        <p>
            <h4>Rivet 3.2.0</h4>


	      			This version fully embraces threads as the fundamental agents that run Tcl interpreters and
	      			respond to HTTP requests as content generators. As such threads now by default individually 
	      			terminate and release their resources when the <b>exit</b>

 is called. 
	      			This policy change is relevant to the worker and lazy bridges which were
	      			developed to match the requirements imposed by the worker and event MPMs. The prefork bridge
	      			(which is bound to work with the prefork MPM) is unaffected.                    </p>
        <p>The previous policy of forcing all threads to terminate before a child process calls Tcl_Exit
	      			can be reestablished setting the <b>SingleThreadExit</b>

 boolean directive to <i>Off</i>

. This is
	      			demanded in cases where calling Tcl_DeleteInterp is not safe because,for instance, not properly
	      			designed third-party extensions fail to correctly release their resources and can cause process crashes. 
	      			<!--Nonetheless this setting is discouraged because in case of high workload the <b>exit</b> command 
	      			can cause 505 internal server errors. -->
        </p>
        <p>
		      		Even though Tcl's <b>exit</b>

 command regular usage should be avoided in the design of code,
		      		it can be useful in the development process as a tool to escape irreversible conditions 
		      		thay may occur. The <b>exit</b>

 command causes the deletion of a thread with its interpreters 
		      		making possible to a bridge to replace it with a pristine one. 
		      	                    </p>
        <p>If you need to use unsafe extensions that may cause crashes when Tcl_DeleteInterp is called 
		      	the recommended option is to select the prefork MPM in your server configuration</p>
        <h4>New commands</h4>
        <ul>
            <li>The new <b>::rivet::thread_id</b>

 command has been introduced. 
		      		<b>::rivet::thread_id</b>

 returns the hexadecimal thread id printed 
		      		in the very same format adopted by the <b>::thread::id</b>

 command (package Thread). 
		      		Therefore if you need this information for debugging or logging you don't need to
		      		require package Thread for that. <p>
                    <b>[::rivet::thread_id -decimal]</b>

 
		      		returns a decimal id that can be matched with the thread id printed in the
						apache logs                                    </p>
            </li>
        </ul>
        <h4>Fixed bugs</h4>
        <ul>
            <li>Fixed a rather sneaky bug that caused crashes when a rivet template existed but was not
               readable because of its file permissions. Still Rivet created an empty cache entry
               with an invalid object pointer</li>
            <li>The <b>::rivet::upload</b>

 command argument checking has been rewritten in order to have a terse
						code for handling the several sub-command/argument combinations and also with the purpose
						of fixing a bug that caused server crashes
					                            </li>
        </ul>
        <h4>Test suite extended</h4>
        <ul>
            <li>The server utility now handles the supplementary switches -mpm and -bridge
					<ul>
                    <li>The first selects a specific MPM to run the tests</li>
                    <li>The second selects a bridge different from the default. The only cases when the use of
							both of them is meaningful is to test the worker or lazy bridge with the prefork MPM or the
							lazy bridge with the worker MPM
						</li>
                </ul>


				e.g.:<pre>  ./runtests.tcl &lt;path-to-httpd&gt; -mpm worker</pre>
            </li>
        </ul>
        <h4>Internals</h4>
        <p>Modifications to the internal code that are transparent to the Tcl development include
					   an expansion of mod_rivet's global data structure that now contain all the server-wide configurable options
					   previously stored in the configuration records
				    </p>
    </dd>
</dl>

<dl>
    <dt>Rivet 3.1 release notes</dt>
    <dd>
        <h4>Rivet 3.1.1</h4>
        <ul>
            <li>Rivet 3.1.1 attempts to solve various problems with
        			the CMake scripts needed to build mod_rivet on Windows</li>
            <li>Several broken links in the manual were fixed</li>
        </ul>
        <h4>Rivet 3.1.0</h4>
        <ul>
            <li>Rivet 3.1.0 is a bug fix release of Rivet 3.0.3. The decision of
        			releasing a new point release has been suggested by the nature of the fix that,
        			even though unlikely, in principle might break existing code developed on 
        			wrong assumptions about the behavior of commands 
        			<b>::rivet::var_ps</b>

 and <b>::rivet::var_post</b>
            </li>
        </ul>
    </dd>
    <dt>Rivet 3.0 release notes</dt>
    <dd>
        <h4>Rivet 3.0.3</h4>
        <ul>
            <li>Packages in DIO are anymore assuming the rivet command set has been 
 							    imported into the global namespace</li>
            <li>A minor change to ::rivet::xml provides a new form to 
                         generate self closing elements</li>
        </ul>
        <h4>Rivet 3.0.2</h4>
        <ul>
            <li>Fixed a bug in the default error handler</li>
            <li>Other minor changes only relevant to mod_rivet code and with
 							no interest at the application level (see the Changelog file to know more)
 							</li>
        </ul>
        <h4>Rivet 3.0.1</h4>
        <ul>
            <li>rivet Namespace determination in librivet has been revised to
   							 avoid to check for the module globals and therefore avoiding
   							 the inclusion of mod_rivet.h
   						</li>
            <li>A few details in the worker bridge have been fixed, including
							a thread root interpreter initialization</li>
            <li>the lazy bridge has been extensively commented</li>
            <li>documentation has been expanded and corrected in various sections</li>
        </ul>
    </dd>
    <dt>Rivet 2.4</dt>
    <dd>
        <h4>Rivet 2.4.0</h4>
        <ul>
            <li>Rivet 2.4.0 is a bug fix release of Rivet 2.3.5. The new point
        				release was done on the same ground of 3.1.0: marking the fact that this version
        				could potentially (though unlikely) create regressions if commands <b>::rivet::var_post</b>


        				and <b>::rivet::var_qs</b>

 are improperly used
        				                            </li>
        </ul>
    </dd>
    <dt>Rivet 2.3</dt>
    <dd>
        <h4>Rivet 2.3.5</h4>
        <p>
						Rivet 2.3.5 is a bug fix release for rivet 2.3. Rivet 2.3.5 received contributions
						from Ronnie Brunner and Jeff Lawson 
						<ul>
                <li>Fixed server initialization procedure. ServerInitScript is now executed only once, the second time
							the server initialization callback is called</li>
                <li>Fixed test suite problem with virtual host handling in certain installations</li>
                <li>Mysql DIO connector now handles also the special value NULL for a column</li>
                <li>Fixed buffer overflow bug in libWWW</li>
                <li>Tcl environment now can be loaded also from outside mod_rivet</li>
                <li>Command <strong>::rivet::redirect</strong>

 now accepts integer status code
							to control redirection. This enables the command to emit status codes other than
							301 and 302                                    </li>
            </ul>
        </p>
        <h4>Rivet 2.3.4</h4>
        <p>
            <ul>
                <li>Fixed buffer allocation size in command <strong>::rivet::escape_sgml_chars</strong>


							(fixes bug #61353)                                    </li>
                <li>Random number generator is re-seeded for each interpreter thus to guarantee they
							will output different sequences</li>
                <li>package <strong>formbroker</strong>

 now handles also boolean type of data                                    </li>
                <li>invocation of rivet commands has been fully qualified with the <strong>::rivet</strong>

 namespace                                    </li>
            </ul>
        </p>
        <h4>Rivet 2.3.3</h4>
        <ul>
            <li>DIO: String quoting of the Posgresql connector was incorrect and has been fixed (closes bug #60378)</li>
            <li>
							New package <strong>formbroker</strong>

: this package is a form response broker and validator,
							still experimental but usable
						                            </li>
            <li>Fixed typo in manual page</li>
            <li>
							Change in mod_rivet internals: as a content generator mod_rivet has to figure out
							when a request has to be handled or passed on to other modules. 
							The request type is now determined more correctly from
							the field <q>header</q>

 of the <strong>request_rec</strong>

 (previosly was
							<q>content_type</q>

)
						                            </li>
        </ul>
        <h4>Rivet 2.3.2</h4>
        <p>
            <ul>
                <li>The test suite now requires Apache 2.4</li>
                <li>Commands <strong>::rivet::try</strong>

 and <strong>::rivet::catch</strong>


								have been fixed. Under some circumstances they failed to properly evaluate
								the code they are supposed to guard and control                                    </li>
                <li>A new utility command <strong>::rivet::url_query</strong>

 
								composes the query part of an URL from a list of parameter-value pairs                                    </li>
            </ul>
        </p>
        <h4>Rivet 2.3.1</h4>
        <p>
						Rivet 2.3.1 is a bug fix release for package rivet 2.3. Method 'file' which was
						to print an HTML5 <pre class="programlisting">&lt;input type="file" name="...."/&gt;</pre>

 
						was actually printing an email form field. This problem was not serious but affected any serious 
						development of forms using rivet's form package
					                    </p>
        <h4>Rivet 2.3.0</h4>
        <p>
               	Rivet 2.3.0 consolidates the 2.2.x module series with several improvements in the way 
                  the command export was handled. This will be the last 2.x version series in preparation
                  of the newly developed 3.0 module.
               </p>
        <p>
                  Rivet 2.3.0 introduces the command <b>::rivet::try</b>

 and <b>::rivet::catch</b>


                  as a wrappers of the Tcl core 
                  language <b>try</b>

 and <b>catch</b>

 commands. These commands are not exported to 
                  the global namespace even when
                  mod_rivet is build with the <i>--enable-rivet-commands-export</i>

 and they should be
                  used within Rivet scripts to protect any <b>::rivet::abort_page</b>

 and
                  <b>::rivet::exit</b>

 execution. These commands interrupt code execution by
                  raising a Tcl error with reserved error codes (respectively ABORTPAGE and EXITPAGE) to
                  signal the module to fire the AbortScript Tcl script with special codes accessible
                  through the <b>::rivet::abort_code</b>

 command
		   		                     </p>
        <p>
                  Execution of <b>::rivet::try</b>

 fails if mod_rivet is not built with Tcl &gt;= 8.6
                                    </p>
        <p>
                    Command <b>::rivet::exit</b>

 was also introduced to give the command
                    <b>exit</b>

 a more sensible behaviour within the context of the Apache HTTP Web Server. 
                    In fact the core command has become an alias of <b>::rivet::exit</b>

 which interrupts 
                    the script execution and hands control on to an AbortScript. Then it completes the 
                    request and just before returning to the web server framework it terminates the child
                    process by calling <b>Tcl_Exit</b>
        </p>
        <p>
                    This command replaces the <b>exit</b>

 core command and it's provided as a way
                    to give it a meaning within the Rivet and Apache context but the
                    programmer should avoid to use it and instead adopt proper software design
                    to bring about sudden process termination
                                    </p>
    </dd>
</dl>



                <div class="contentbottom">
                    <div id="last_modified">Last Modified: 18-02-2024 11:55:57 UTC</div>
                </div>
            </div>

            <div class="sidebar">
                <ul>
                     
                </ul> 
                <ul>
                    <li id="tclstuff">
    <h4>Rivet &amp; Tcl</h4>
    <ul class="blocklist">
        <li class="navitem">
            <a class="navitem" title="The Rivet development team" href="about.html">About Us - Contact</a>
        </li>
        <li class="navitem">
            <a class="navitem" title="Home of Apache Tcl related stuff" target="asf" href="http://tcl.apache.org/">Apache Tcl Home</a>
        </li>
        <li class="navitem">
            <a class="extern" title="The Tcl Developer Xchange" target="tclxchange" href="http://www.tcl.tk/">The Tcl/Tk Language</a>
        </li>
        <li class="navitem">
            <a class="extern" title="Tcl community wiki site" target="tclwiki" href="http://wiki.tcl.tk/">Tcl'ers Wiki</a>
        </li>
    </ul>
</li>
<li id="rivetstuff">
    <h4>Getting Rivet to Work</h4>
    <ul class="blocklist">
        <li class="navitem">
            <a class="navitem" title="Getting Rivet" href="download.html">Getting Rivet</a>
        </li>
        <li class="navitem">
            <a class="navitem" title="Release Notes" href="release%2dnotes.html">Release Notes</a>
        </li>
        <li class="navitem">
            <a class="extern" title="Apache Rivet Bugzilla" href="https://issues.apache.org/bugzilla/buglist.cgi?quicksearch=Rivet">Bug Reports</a>
        </li>
    </ul>
</li>
<li id="documentation">
    <h4>Documentation</h4>
    <ul class="blocklist">
        <li class="navitem">
            <a class="navitem" title="Examples" href="hello%5fworld.html">Examples</a>
        </li>
        <li class="navitem">
            <a class="navitem" title="Manuals" href="manuals.html">Manuals</a>
        </li>
    </ul>
</li>
 
                </ul> 
                <ul>
                    <li id="acknowledgments">
    <h4>Acknowledgments</h4>
    <ul class="blocklist">
        <li class="navitem">
            <a class="navitem" title="ASF Sponsorship" 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>

