blob: e64cca9cdbab0588b38214227b847bc89fcf92da [file] [log] [blame]
<!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 3.0: 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>Rivet 3.0: Release Notes</h2>
<div>
<div class="sez">
<h4>Download</h4>
<p>
Rivet 3.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. If you plan to run Rivet on Linux or Free-BSD and
you don't want to get bothered building the module yourself then usually,
after a few weeks from release, packages for the most popular
Linux distributions become available
</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>
<h3>Release Notes</h3>
<h4>Requirements</h4>
<p>
Rivet 3.0 is tested and works with the Apache Webserver version 2.4 (running any
MPM) and requires Tcl &gt;= 8.6.1. Rivet 3.0 now supports also the Apache Webserver when running on the
MS-Windows family of operative systems. The module has been built on MS-Windows
through the <a href="https://cmake.org/">CMake</a>
build system using the
<a href="https://www.visualstudio.com/downloads/#build-tools-for-visual-studio-2017">Visual Studio Community 2017</a>
compiler.
</p>
<h4>Apache MPM and Rivet Bridge Modules</h4>
<p>
Rivet 3.0 is a major rewriting of mod_rivet, the Apache HTTP Websever module
at the core of Rivet. Unlike in previous versions of mod_rivet which only supported
the <a href="https://httpd.apache.org/docs/2.4/mod/prefork.html">prefork MPM</a>
(<a href="https://httpd.apache.org/docs/2.4/mpm.html">Multiprocessing Module</a>
),
starting with 3.0 we attained full support of different MPM for the Apache framework.
Threaded MPM integration was achieved by making mod_rivet multithreaded and modular itself,
introducing the mod_rivet/MPM bridge concept. We developed a set of loadable modules which
are supposed not only to overcome the issues related to threading but also to offer
the best possible MPM mod_rivet integration.
As a side effect of this modular design, mod_rivet is not only able to
integrate with its environment, but also to work as a framework for writing more MPM bridges
designed along different multi-threading schemes and workload management models. See the
internals section of the <a href="http://tcl.apache.org/rivet/manual3.0/">rivet manual</a>
for further reading. MPM bridges are loaded accordingly
to a heuristics of rules based on the Apache introspection calls, but they can be determined
in the configuration. Only a bridge can be loaded at a time.
</p>
<p>
Version 3.0 is a drop-in replacement of any earlier version of Rivet but there are
new features that can deeply change the way you have so far developed your Rivet
based applications
</p>
<h4>New Request Processing Scheme</h4>
<p>
In Rivet 2.x request processing was performed by chaining together 3 scripts
<ul>
<li>
<strong>BeforeScript</strong>
, if defined in the configuration </li>
<li>The Tcl script or rvt template referenced by the URL and determined with respect to the
DocumentRoot and following other resource determination methods, such as the ones offered by
mod_alias and mod_rewrite.</li>
<li>
<strong>AfterScript</strong>
if defined in the configuration </li>
</ul>
Errors and exceptions (raised by the ::rivet::abort_page command) are handled by the
<strong>ErrorScript</strong>
and <strong>AbortScript</strong>
(<strong>ErrorScript</strong>
has a default implementation if left undefined)
</p>
<p>
Rivet 3.0 implements a new request processing scheme entirely based on Tcl.
By default rivet 3.0 provides compatibility with the version 2.x scheme
but this can be entirely overridden by the developer replacing the central request
handling procedure.
</p>
<h4>Packages</h4>
<p>
Rivet comes with the usual collection of packages. Some of the available packages are
</p>
<ul>
<li>
<strong>Asciiglyphs</strong>
: a ASCII-art character printer. Character typefaces were shamelessly taken from
the code of the <a href="https://www.fossil-scm.org/">Fossil DVCS</a>
under permission of Richard Hipp,
Fossil's mastermind </li>
<li>
<strong>Calendar</strong>
: a class to print text, HTML and XML based calendar tables like the ones printed
by the Unix '<a href="https://en.wikipedia.org/wiki/Cal_(Unix)">cal</a>
' command </li>
<li>
<strong>DIO</strong>
: a generic, object-oriented interface to SQL databases. Its main goal is
to be as generic as possible </li>
<li>
<strong>Entities</strong>
: The RivetEntities package was kindly provided by Harald Oehlmann
and is largely taken from a simple yet clever encoder/decoder of HTML entities starting from a utf-8
character string. The original code writted by Andy Goth is at http://wiki.tcl.tk/26403.
Package entities extends the functionality in the original code combining it with Tcl's 'encoding'
command to encode/decode from any supported encoding </li>
<li>
<strong>Form</strong>
: The form package is a utility for generating html forms.
A form object command saves the programmer from typing the cumbersome html code of input elements,
working out a solution for better standardization and readability of the code </li>
<li>
<strong>Formbroker</strong>
: The FormBroker package creates instances of objects representing a
form data description. These objects offer a simple interface of methods meant to validate and control
data as typically posted through an HTML form </li>
<li>
<strong>session</strong>
: This is session management code. It provides an interface to allow you to generate and track a
browser's visit as a "session", giving you a unique session ID and an interface for storing and
retrieving data for that session on the server. </li>
</ul>
</div>
<div class="sez">
<h4>Rivet 3.0.2 Release Notes</h4>
<p>
Rivet 3.0.2 is a bug fix release of rivet 3.0. This release includes
<ul>
<li>Fixed a bug in the default error handler</li>
<li>Other minor changes are relevant to the code and have
no interest at the application level</li>
</ul>
</p>
</div>
<div class="sez">
<h4>Rivet 3.0.1 Release Notes</h4>
<p>
Rivet 3.0.1 is a bug fix release of rivet 3.0. This release includes
<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>
</p>
</div>
</div>
<div class="contentbottom">
</div>
</div>
<div class="sidebar">
<ul>
<li id="news">
<h4>News</h4>
<ul class="blocklist">
<li class="navitem">
<a href="rn%2d2%2d3.html">11 Nov 2017: Rivet 2.3.5 released</a>
</li>
<li class="navitem">
<a href="rn%2d3%2d0.html">7 Jul 2018: Rivet 3.0.2 released</a>
</li>
</ul>
</li>
</ul>
<ul>
<li id="home">
<h4>Rivet</h4>
<ul class="blocklist">
<li class="navitem">
<a title="A home for Rivet" href="../index.html">Rivet Homepage</a>
</li>
<li class="navitem">
<a title="Home of Apache Tcl related stuff" target="asf" href="http://tcl.apache.org/">Apache Tcl Home</a>
</li>
<li class="navitem">
<a title="Getting Rivet" href="download.html">Getting Rivet</a>
</li>
<li class="navitem">
<a title="Hello World!" href="hello%5fworld.html">Examples</a>
</li>
<li class="navitem">
<a title="The Rivet development team" href="about.html">About Us - Contact</a>
</li>
</ul>
</li>
<li id="manual">
<h4>Documentation</h4>
<ul class="blocklist">
<li class="navitem">
<a title="Rivet 2.1 Manual" target="rivetman2.1" href="http://tcl.apache.org/rivet/manual2.1/">Rivet 2.1</a>
</li>
<li class="navitem">
<a title="Rivet 2.2 Manual" target="rivetman2.2" href="http://tcl.apache.org/rivet/manual2.2/">Rivet 2.2</a>
</li>
<li class="navitem">
<a title="Rivet 2.3 Manual" target="rivetman2.3" href="http://tcl.apache.org/rivet/manual2.3/">Rivet 2.3</a>
</li>
<li class="navitem">
<a title="Rivet 3.0 Manual" target="rivetman3.0" href="http://tcl.apache.org/rivet/manual3.0/">Rivet 3.0</a>
</li>
</ul>
</li>
<li id="rn">
<h4>Release Notes</h4>
<ul class="blocklist">
<li class="navitem">
<a href="rn%2d2%2d0.html">v2.0</a>
</li>
<li class="navitem">
<a href="rn%2d2%2d1.html">v2.1</a>
</li>
<li class="navitem">
<a href="rn%2d2%2d2.html">v2.2</a>
</li>
<li class="navitem">
<a href="rn%2d2%2d3.html">v2.3</a>
</li>
<li class="navitem">
<a href="rn%2d3%2d0.html">v3.0</a>
</li>
</ul>
</li>
</ul>
<ul>
</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>