Whitebeam XML engine

Site Map
 
Home
 
Application Guide
Reference
Community
Contact Whitebeam
To-Do
Download
Installation
Credits
Licence
Whitebeam Users
 
 
 

Whitebeam - Release History

18th October 2007: Release 1.1.5

Build Environment

  • Add a build target, RC script and config file for Debian packages
  • Add a configure option --with-pgsql_server, in case the Postgres server headers are not in an obvious or guessable place.
  • Look for APR headers in more places, and tidy up some build dependencies which occur in some distributions.

New Templates

  • New 'template/contrib' directory to hold useful but non-core templates.
  • First contributed template provides a service to map IPv4 addresses to country for geographically aware applications.

Graphic Library

  • Whitebeam can now link with the 'libgd' graphics library, adding a class 'GraphicImage'. GraphicImage provides for on-the-fly generation of bitmaps (JPEG, GIF, PNG) from JavaScript.

2nd April 2007: Release 1.1.4

This was to be the major Whitebeam release. Due to various external work pressures this became an internal release.

FROM THIS RELEASE WHITEBEAM HAS ADOPTED THE BSD LICENSE

License change

  • Licence change to BSD from a combination of Redbourne Public License (RPL) and Gnu GPL. This opens Whitebeam up to a wider audience.

New templates

  • Add 'chat' template. Provides efficient central co-ordination for building an interactive 'chat' application based on Whitebeam.
  • Add 'audit' template. Place for applications to store and retrieve 'audit' information. Records are associated with either a contact, catalogue item or catalogue node.
  • Add the 'collection' template allowing arbitary collections of contacts, items and nodes to be easily maintained.

Template changes

  • Add numeric 'value' attribute to contact template to provide a way of ordering contact records according to priority, weight or other application specific requirement.
  • A separate 'keywords' field added to the contact template to allow text seaching of contact records without having to search all other fields.
  • Catalogue : Allow sort order to include 'number of nodes linking to this item' - and ability to return the number of links. Alows nodes to be used as flags - and searching based on maximum matching flags.
  • Change processing of 'sort' in contact iterator to allow ordering of results according to multiple fields (importance then by name for example).
  • Improve contact and catalogue search methods by including a 'searchMethod="rank"'. Rank depends on a pl/pgsql function which counts the number of keyword matches database records ordering by most matches first.
  • Allow item searches to be restricted to items under categories (nodes) that are attached to at least one of a set of contact communities. This allows automated access restrictions to be place on branches of a category tree.
  • Add 'containers' field to contact iterator flags to query which elements are containers of another (or a set of others).
  • Add 'maxRows' search attribute for contact and cat items. Allows application to 'hint' at number of rows expected to be processed allowing the templates to much better optimise large bulk requests such as reports.
  • Add pl/pgsql search function and integrate with other templates. Allows 'best match' searching rather than any keyword.
  • Postgres Templates are more likely to reopen a lost DB connection.
  • Include support for strong encryption of passwords in the contact template by default.

Core application engine enhancements

  • Enhance 'HttpRequest' to allow a specific target IP/name to be provided for each request. This allows HTTP requests when the server can't be correctly resolved with DNS.
  • Enhance 'HttpRequest' to allow response to be returned as a Binary object.
  • Support hierarchical mime-encoding in SmtpRequest to support embedded images within email messages
  • Add toBase64() and fromBase64() methods to Binary object.
  • Incorporate the latest SpiderMonkey JavaScript engine release (JS 1.5 Final)
  • Subsequently update the SpiderMonkey JavaScript engine release (JS 1.7) to match latest Thunderbird/Firefox releases.
  • Improve error reporting and add a stack-trace to error page.

Build environment

  • Add OpenBSD 3.8 to working build targets.
  • Add Fedora Core 4 thru 7 to working build targets.
  • SF bug 1355392 fixed : invalid SMTP encoding for 'quoted-printable' encoding.

Reported bugs fixed

  • SF bug 1355386 fixed : Site template fails to build against versions of Postgres earlier than 8.0.
  • SF bug 1385551 fixed : Root of the Whitebeam ROM (rb) is now sealed to prevent side-effects from one page execution leaking to another page.
  • SF bug 1385596 fixed : Replace global variable used to measure page execution time with attribute in the page context object.

5th October 2005 : Release 0.9.37

  • SF bug 1312930 : 'replicate' now builds on Fedora
  • SF bug 1281522 : Fix bug in XML parser/JavaScript interface whereby a pointer is referenced after being released.
  • SF bug 1243361 : Fixes to use of INT32 to hold catalogue item/node IDs. Database representation is 'int8' and must be represented in the engine as 64 bit integers in order to avoid trucation in large databases.
  • SF bug 1243478 : representing contact/node/item IDs are 32 bits rather than 64 bit - IDs were effectively truncated in very large or long-lived databases.
  • New 'SITE' template contributed by YELLOWHAWK, and released under the GNU GPL. This is used to store application global data in an efficient manner. This removes the need to store global information in catalogue items. Typical uses are for storing configurable parameters and 'caching' commonly used, infrequently changing data.
  • Addition of a 'name' and 'type' field to catalogue items. The 'name' field is an important addition to 'code'. Type recognises the fact that the catalogue is not restricted in what it holds. The 'type' field can be used to restrict searches to specific types of entity stored in the catalogue.
  • Change page processing for Postgres so that any non-terminated transactions are automatically closed (rollback)
  • Price range searching in the catalogue template (find all products with prices in the rance x<=price<=y.
  • Contact interator can now optionally return contact membership as well as raw contact information - removing the need to make multiple calls when generating tabular output.
  • Improved catalogue template SQL for recursive decent through branch of the tree.
  • Improved iterator performance in the contact template for large membership databases.
  • Additional contact template methods for removing all nodes, items or contacts from parent contact records.
  • Increase item description field size to 1000 characters to be consistent with the node description field.
  • Updated documentation syntax for templates so that fields can be ordered for display in a different (more logical) order from the protocol.

15th April 2005 : Release 0.9.35 *MAJOR RELEASE*

  • Add 'last_modified_field' in the catalogue template 'items' table to the Presentation Engine interface. This field has always been present, but unused. Field is changed from DATE to TIMESTAMP to make it more useful.
  • General purpose 'C' implementation of the DBmirror Perl script DBmirror.pl. The Perl implementation was pretty inefficient taking 10s of seconds to copy a single large field (not good for the file template!). The C implementation can be used outside of Whitebeam - it's not Whitebeam specific. Works with both the 7.x and 8.x versions of DBmirror (which did some significant tweaks to the schema!)
  • Update to the catalogue template iterator code to make more efficient use of the database during searches. Remove some table joins for the restul set *unless* they are required.
  • Consistency on PDU sizes for templates.
  • Modify the catalogue iterator code to correctly cap message size if the amount of data in the response reaches a specific threshold (rather than causing a protocol error)
  • Support for Postgres Database replication using DBmirror. This includes scripts to configure the standard Whitebeam database along with necessary documentation. Allows a Master version of the Whitebeam database to be replicated to any number of other postgres servers.
  • New implementation of the File template that uses BYTEA to store data rather than large objects. This allows most existing database replication systems to work (in theory!)
  • Increase field size for catalogue. code, name, description and keywords are now all 250 characters.
  • Work around for problem with the JavaScript engine whereby calling JS_ValueToString on a native object that does not have an explicit 'toString' method causes a exception. This affects SmtpRequest and PgsqlConnection (and poss PgsqlResult)
  • Add PgsqlConnection.removeLargeObj to remove a Postgres large object by OID.
  • Added mapping of OIDOID to JavaScript number (was defaulting to a string).
  • Fix PgsqlConnection.connect return result to correctly return true/false depending on whether a connection request succeeds. Previous versions always return 'true'.
  • Add PgsqlConnection.prototype.connected property that returns true (connected) or false to reflect the connection status of this object.
  • Fix native Postgres Large Object interface. Incorrect parameter checking on openLargeObject method.
  • Add new directories for modular builds of mod_whitebeam for Apache 1.x and Apache 2.x
  • Relocate Apache Interface files (ApIf) and stubs for tidiness and ease of re-use. Also sorts out the slightly circular references when building tgen.
  • Update autoconf files for autoconf 2.5x - These do not seem to be backward compatible with older autoconf versions.
  • Make autoconf search harder for Postgres files on OpenBSD and Fedora. This should reduce or eliminate the need for --with-pgsql configure options.
  • Fairly large overhaul of how apache is detected. Assumes that modular builds are the way forward, and tries to find Apache headers on your system instread of requiring an apache source tree present.
  • Update message template to survive if there is no NNTP server present. Previously it would SEGV.
  • Include new file2-pgsql template - This uses a modified schema which makes Postgres replication possible.
  • Fix a compile-time error in file2-pgsql.

31st December 2004 : Release 0.9.32

  • Fix lockup problem with memory based context server, semaphore and counter templates
  • Add support for <rb:insertblock..> tag. A macro version of this has beem around for a long time. This native version means applications can reduce the include size of an application and gain some additional performance. The inserted block doesn't have to be represented in the JavaScript engine.
  • Updates to the contact and catalogue templates to provide more sophisticated searches.
  • Improve Postgres interface by using pgsql type information allowing us to create 'numeric' values rather than string values for all fields. Requires access to Postgres server header files (pg_type.h). This requires a separate make target when building Postgres from source (gmake install-all-headers in the Postres build directory)
  • This version has been tested against Postgres version 8.

29th September 2004 : Release 0.9.30 *MAJOR RELEASE*

  • MAJOR : New rich Postgres API allowing direct manipulation of a Postgres database from JavaScript within web pages.
  • MAJOR : Add the ability to write to the local file system. Write access requires the Apache process to have write access to the virtual servers file space. This is an extension of the existing Binary object interface. Files can only exist within the current virtual server for this object.
  • rb:test *attribute*. Allows any tag in a Presentation Page to be dynamically included or excluded from the document being constructed.

5th August 2004 : Release 0.9.28

  • Renovate the build system so that it now builds on RedHat 9, Fedora and other recent OS releases using the latest Apache and openSSL versions.
  • Update build to work with 7.4.* releases of PostgreSQL.
  • Add 'counter' template - mechanism for storing global counters with atomic set/inc/dec operations. Can be safely modified and read by multiple PE instances.
  • Add <if... tag. Simple conditionals that reduce the tag count for tests that do not require an 'else' component.
  • Add 'test' attribute to <include which, if present is evaluated. A result of 'false' means to file is not loaded into the Presentation Engine.
  • New 'log' template. This provides an interface to the log analysis programme 'Analog' and provides a fairly simple way to provide sites with online log reports without the client having access to the raw log files, or having to install an analysis program themselves.
  • Add rb.debug.time - which returns the amount of time since the presentation engine started to process this page. This is useful for profiling and optimisation.
  • ContextMem (memory based session tracking) has additional method 'fastGet'. This allows the presentation engine to get the context ID *and* context information in a single call. Given almost all pages now use the session data to cache information this removes one template call per page generated.
  • Add a memory only implementation of the Context server - templates/redbourne/ContextMem. This should be faster for environments that do not require thousands of simultaneous sessions.
  • Modify PostgreSQL template common library to use embedded SQL calls to connect with the database rather than calls to the underlying ECPG library.

2nd January 2004 : Release 0.9.27

  • Fix XPath relational expressions involving scalars.
  • Fix 'marksession' in the case where there is only a fragment identifier (don't modify).
  • provide option on rb.page.session.url to skip ampersand escape (rare situation where this is required is to generate a URL for a meta-tag redirect. In this case the ampersand must *not* be escaped).

1st November 2003 : Release 0.9.26

  • Major upgrade to the contact and catalogue templates to support more flexible/functional searching and sorting of information help within the database.
  • Fixed rendering issue for XML parser. When switched from HTML to XML mode should render <BR> as <BR/>. Only an issue when switching mode from HTML/Hybrid to XML.
  • Update to contact template data sorting options to bring in line with both the documentation and the modifications made to the catalogue template in this area.

21st August 2003 : Release 0.9.25

  • First release of the new Semaphore template. Accessible within Presentation Pages via rb.semaphore requests. Documentation is on the Whitebeam site (www.whitebeam.org)

24th July 2003 : Release 0.9.24

  • Generalised catalogue 'hasNodeID' to allow querries for items that are effectively joined to two specified nodes.
  • Fixed bug in XPath when comparing a node-set with a string for <, <=, > and >= operators. Should first convert to a number.

7th February 2003 : Release 0.9.23

  • Added 'hasNodeID', 'hasContactID' and 'sortBy' to the rb.catalogue.item.get search parameters. Added 'hasContactID' and 'sortBy' to rb.catalogue.category.get search parameters.
  • Increased contact communication size limit from 64K to 128K (RP)
  • Fix XPath string functions and added in a couple of missing functions for compatibility.
  • Fix bug in CrbString:ToUpper and ::ToLower that cause a crash if called.
  • Fix XPath comparison behaviour to be conformant to the XPath specification. Previous versions incorrectly evaluate '<', '>' etc in the case where one or both operands were node sets.
  • Fix seg fault in XPath in nested parenthesised sub expressions that do not evaluate to XPath node sets.
  • Remove '+' from the set of valid XML name characters.

10th December 2002 : Release 0.9.22

  • Add 'after::' and 'before::' XPath axis. These effectively provide missing functionality from XPath that allows one to determine the next element in a document in standard tree parsing order.
  • Fix an old problem with using XML parsers in JavaScript. For a while now - errors in the XML they parse were counted - but the messages never recorded. Stems from an interface change to support XPath a while back. JS parser now correctly record XML errors.
  • Fix a problem in the Binary object whereby unless you read a file to completion the file handle can be left open (no fclose) and so can over time leak resources.
  • Fix some interface bugs in SmptRequest class introduced in 0.9.21
  • Fix implementation of XPath 'following::' axis.

19th November 2002 : Release 0.9.21

  • Add 'SmtpRequest' class to the Presentation Engine. Allows multi-part unlimited length emails to be generated. (PW)
  • Fix XPath bug reported by University of Houston - Clear Lake in which node() returns just XML tags rather than all element types.
  • Fix to tgen to allow BSD builds to succeed (PW)
  • Fix SQL error in the catalogue when the request rb.catalogue.item.get({ID:contact, idMkr:'C', allLevels:1}); (PW)
  • Fix to message template - freeing buffer then using the contents of the underlying buffer. Can cause messages sent to INN to be lost. (PW)
  • Fixed a couple of build issues with Linux. *Should* now build with Linux! (PW)
  • Removed potential problem in XML parser that would cause it to fail to detect a binary encoding (only used for template interface) (PW)
  • .
  • Remove potential infinite loop in iterator handling (PW)
  • .
  • Fixed bug whereby 'aBinObj instanceof Binary' (where aBinObj is a binary object from the template interface or form parameters)
  • always returns 'false'
  • Fixed XPath expression problem. the expression '/' previously generates an error rather than return the root of the XML tree.(PW)

11th August 2002 : Release 0.9.20

  • Improve error reporting in pages (reduce number of 'false' errors one tends to get) (PW).
  • Change to the XML parser to allow XML Processing Instructions to have assigned handlers - and then use this to implement PHP/ASP like script wrappers (PW).
  • 'PHP' like script inclusion supported for XML processing instructions:
       <?rbscript some-javascript ?>
       <?= javascript ?>
    (PW)
  • Changed behaviour of rb.debug.mode to put the engine into real debug mode. Previously it simply controlled the recording of debug output. There are however times when there is a problem in the live site - caused by data on the live site - that cannot easily be debugged on the test site (without the data). Now setting the debug mode to true will cause an error page even in a live site (PW)
  • In <rb:parser...> add 'debugmode' and 'parsemode' attributes to control debug and parser behaviour. (PW)
  • XPATH - implementation of 'preceding::' inadvertantly included the node itself - modified code to correctly remove 'self' from the result set in this case (PW)
  • <rb:include...> and <rb:script...> include an optional 'once' attribute. If present with a value of 'yes' Whitebeam will not process the file if it has already been processed within this page (PW).
  • Parsing for attribute values in html/hybrid mode - in the case where the value is *not
  • quoted. Modified to read all characters until whitespace. This fix makes up for issues with some vendors web-writing software that only puts attribute values in quotes if they contain whitespace!

NO PUBLIC RELEASE : Release 0.9.19

  • Fix a potential, but unlikely SEGV condition in the network layer (SD)
  • Tidy-ups to silence several C++ compiler warnings (SD)
  • New README to cover building an Apache DSO (SD)
  • New module script to assist building of Apache/Whitebeam DSO (SD/RP)
  • Context template falls-back to memory database if it cannot use its on-disk datafile. (SD)
  • Added rb.page.env.*() support to access the Apache 'previous' request allowing the implementation of bespoke error handling pages (eg 404 handler). (PW)
  • Fixed issue in Postgres implementation of the catalogue template that cause 0.9.18 to incorrectly read the contents of the database. (PW)
  • Fixed CrbString::XmlDecode and caused the rb:repeatfor and rb:test tag implementations to correctly XmlDecode the string before calling JavaScript. (PW)
  • Add filename/line numbers to XML parser errors generated when the tree is executed. These were missing in the previous builds. (PW)

10/01/2002 : Release 0.9.18

  • Changed the build system to use 'autoconf' (RP)
  • Fix memory leak in XPath implementation. (PW)
  • Increase JavaScript memory threshold to 10Mbytes, stack to 32K (PW)
  • Fix code that checks for recursive includes of files (PW)
  • Fix output limit checks to correctly stop generating output once the configured limit is reached. (PW)
  • Add 'bound' XPath extension function. (PW)
  • Add some initial notes on using the 'message' template. (SD)

01/12/2001 : Release 0.9.17 - internal release.

  • Fixed dynamic SQL quoting problem in the PostgreSQL version of the contact template. (PW)
  • Template Interface now throws mainly exceptions rather than XmlIf_ReportErrors where there may be a benefit in catching such errors in a Pattern Page.
  • 17/11/2001 : Release 0.9.16 / 1.0-pre2

  • Added <rb:parser...> to control the page parser. (PW)
  • Fix bug in rb.*.fwrite and rb.page.format on Linux systems. The last character of a parameter could get truncated. (PW)
  • Changes to the underlying JavaScript to XML translation. Attribute and elements are now implemented using a 'lazy resolve' that should at least cut down the memory overhead of extensive XML activity within the Presentation Engine. No changes to the JavaScript API. (PW)
  • Modified SteveDs test scripts to more thoroughly test the XML interface. Some of these tests will fail for version prior to 0.9.16. (PW)
  • Fix httpRequest bug (PW)
  • 7/11/2001 : Release 0.9.15 / 1.0-pre1

  • Fix the version number defines (SD/PW)
  • Add new "rb:automarksession" tag (PW)
  • Add Ignore Whitespace facility (PW)
  • Make parser more tolerant on close of comment tags. (PW)
  • Fix parsing of hex/octal numbers (PW)
  • Further XPath extensions (PW)
  • Optimise rb.*.write calls to take multiple parameters (PW)
  • Clean-up some JS objects before exit. (PW)
  • 17/10/2001 : Release 0.9.14

  • Remove a debug define for some speedups (SD/PW)
  • Find/fix memory leak in template comms (SD)
  • Fix bug in XPath range check in reversed nodeset (PW)
  • Fix bug in XPath returning empty nodeset (PW)
  • Add XPath "translate" function for completeness(PW)
  • 26/9/2001 : Release 0.9.12

  • Fix header date format to match RFC (PW)
  • Modify handling of some XPath expressions (PW)
  • Fix a float-parse error (PW)
  • Added support for non-standard HTML TAG <spacer> (SD)
  • Added rb.[page|debug].fwrite, rb.page.format methods (PW)
  • 25/9/2001 : Release 0.9.11

  • Cache-Control is now much more flexible (PW)
  • Fix double-cookie-header bug (PW)
  • Fix header output when using rb.page.writeraw() (PW)
  • Fix XPath parsing further (PW)
  • 21/9/2001 : Release 0.9.10

  • Rationalise some common code in database templates (AO)
  • Fix some XPath parsing errors (PW)
  • Teach the parser about the >?xml ...< PI (PW)
  • In Html mode, the parser now accepts HTML "slackness" (PW)
  • 18/9/2001 : Release 0.9.9

  • Initial port of File template to PostgreSQL (AO)
  • Fix password authentication code to work again (SD)
  • SQL optimisation for Postgres catalogue template (AO)
  • 13/9/2001 : Release 0.9.8

  • Initial port of Catalogue template to PostgreSQL (AO)
  • Backport of DB2 changes to contact template tp PostgreSQL (SD)
  • Provide schema SQL for PostgreSQL (SD)
  • 12/9/2001 : Release 0.9.7

  • Several catalogue template fixes (AO)
  • DB2 contact and catalogue templates receive some new calls (AO/RP)
  • Additional escaping for PGSQL in Contact template (SD)
  • 5/9/2001 : Release 0.9.6

  • Fix some XPath language components (PW)
  • Restrict the httpRequest Methods on the Redbourne build (RP)
  • Cleanly modify the Apache version string (PW)
  • 20/8/2001 : Release 0.9.5

  • Fix SQL escaping of "'" in Contact template (RP)
  • Fix sending of cookies to be more secure (PW)
  • Fix sending of cookies (PW)
  • Binary objects now understand zero-length files (PW)
  • Fix rb:marksession on <a> tags (PW)
  • 3/8/2001 : Release 0.9.4

  • Write protect Whitebeam implemented methods correctly (PW)
  • 31/7/2001 : Release 0.9.3

  • More XPath tidyups (PW)
  • More comms-layer tidyups (SD)
  • Iterators broke, so fixed them (PW)
  • Comms-layer speedup, particularly on BSD systems (SD)
  • Remove one un-needed thread in Context server (SD)
  • XPath implementation and subsequent fixes (PW)
  • Fix the cacheing of context data by the presentation engine (PW)
  • Clean up JS GC_roots on exit. (PW)
  • Make some error message texts more accurate (PW)
  • 12/7/2001 : Release 0.9.2

  • Fix XML DOM problem when traversing an <rb:include< tag (PW)
  • Fix an rb:eval attribute-vanishing problem (PW)
  • Improve build targets for pgsql templates (SD)
  • Further make-system cleanups (SD)
  • Replace Crypto code so local libraries get used (RP/SD) (Prevents question of legality of distribution)
  • Much updated message template now parses news/mail messages with some degree of understanding (RP)
  • Message template now used SMTP instead of spawning sendmail (RP)
  • Several other bugfixes. (PW)
  • 05/07/2001 : Release 0.9.1

  • Re-located DB2 based templates into their own subdirectory (SD)
  • Added contacts-pgsql template, port of contacts template to PostgreSQL (RP)
  • Fix in RBString to not translate CR to LF! (PW)
  • Remove various Accidentally included files/directories. (SD)
  • 28/06/2001 : Release 0.9.0

  • Initial public release. (RP)
  • View XML source of this page