Apache Rivet Release Notes

Apache Rivet current stable version is 3.2.0

Rivet 3.2.0 release notes

Rivet 3.2.0

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 exit 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.

The previous policy of forcing all threads to terminate before a child process calls Tcl_Exit can be reestablished setting the SingleThreadExit boolean directive to Off . 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.

Even though Tcl's exit 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 exit command causes the deletion of a thread with its interpreters making possible to a bridge to replace it with a pristine one.

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

New commands

  • The new ::rivet::thread_id command has been introduced. ::rivet::thread_id returns the hexadecimal thread id printed in the very same format adopted by the ::thread::id command (package Thread). Therefore if you need this information for debugging or logging you don't need to require package Thread for that.

    [::rivet::thread_id -decimal] returns a decimal id that can be matched with the thread id printed in the apache logs

Fixed bugs

  • 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
  • The ::rivet::upload 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

Test suite extended

  • The server utility now handles the supplementary switches -mpm and -bridge
    • The first selects a specific MPM to run the tests
    • 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
    e.g.:
      ./runtests.tcl <path-to-httpd> -mpm worker

Internals

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

Rivet 3.1 release notes

Rivet 3.1.1

  • Rivet 3.1.1 attempts to solve various problems with the CMake scripts needed to build mod_rivet on Windows
  • Several broken links in the manual were fixed

Rivet 3.1.0

  • 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 ::rivet::var_ps and ::rivet::var_post
Rivet 3.0 release notes

Rivet 3.0.3

  • Packages in DIO are anymore assuming the rivet command set has been imported into the global namespace
  • A minor change to ::rivet::xml provides a new form to generate self closing elements

Rivet 3.0.2

  • Fixed a bug in the default error handler
  • Other minor changes only relevant to mod_rivet code and with no interest at the application level (see the Changelog file to know more)

Rivet 3.0.1

  • 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
  • A few details in the worker bridge have been fixed, including a thread root interpreter initialization
  • the lazy bridge has been extensively commented
  • documentation has been expanded and corrected in various sections
Rivet 2.4

Rivet 2.4.0

  • 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 ::rivet::var_post and ::rivet::var_qs are improperly used
Rivet 2.3

Rivet 2.3.5

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

  • Fixed server initialization procedure. ServerInitScript is now executed only once, the second time the server initialization callback is called
  • Fixed test suite problem with virtual host handling in certain installations
  • Mysql DIO connector now handles also the special value NULL for a column
  • Fixed buffer overflow bug in libWWW
  • Tcl environment now can be loaded also from outside mod_rivet
  • Command ::rivet::redirect now accepts integer status code to control redirection. This enables the command to emit status codes other than 301 and 302

Rivet 2.3.4

  • Fixed buffer allocation size in command ::rivet::escape_sgml_chars (fixes bug #61353)
  • Random number generator is re-seeded for each interpreter thus to guarantee they will output different sequences
  • package formbroker now handles also boolean type of data
  • invocation of rivet commands has been fully qualified with the ::rivet namespace

Rivet 2.3.3

  • DIO: String quoting of the Posgresql connector was incorrect and has been fixed (closes bug #60378)
  • New package formbroker : this package is a form response broker and validator, still experimental but usable
  • Fixed typo in manual page
  • 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 header of the request_rec (previosly was content_type )

Rivet 2.3.2

  • The test suite now requires Apache 2.4
  • Commands ::rivet::try and ::rivet::catch have been fixed. Under some circumstances they failed to properly evaluate the code they are supposed to guard and control
  • A new utility command ::rivet::url_query composes the query part of an URL from a list of parameter-value pairs

Rivet 2.3.1

Rivet 2.3.1 is a bug fix release for package rivet 2.3. Method 'file' which was to print an HTML5

<input type="file" name="...."/>
was actually printing an email form field. This problem was not serious but affected any serious development of forms using rivet's form package

Rivet 2.3.0

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.

Rivet 2.3.0 introduces the command ::rivet::try and ::rivet::catch as a wrappers of the Tcl core language try and catch commands. These commands are not exported to the global namespace even when mod_rivet is build with the --enable-rivet-commands-export and they should be used within Rivet scripts to protect any ::rivet::abort_page and ::rivet::exit 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 ::rivet::abort_code command

Execution of ::rivet::try fails if mod_rivet is not built with Tcl >= 8.6

Command ::rivet::exit was also introduced to give the command exit a more sensible behaviour within the context of the Apache HTTP Web Server. In fact the core command has become an alias of ::rivet::exit 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 Tcl_Exit

This command replaces the exit 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

Design downloaded from free website templates.