Whitebeam - Release History

Site Map
Application Guide
Contact Whitebeam
Whitebeam Users

Whitebeam - Release History

SoureForce Bug/Feature IDs

  • SF: old SourceForce report numbers;
  • SFN: new SourceForce report numbers (post June 2013)
  • SFF: new SourceForce 'feature' request numbers
To find a report from the old number use the following link:

and replace ** with the old SF: number.

18th April 2019 : Release 1.3.36

  • SFN 139 - Clear prepared statement status when database connection lost
  • SFN 140 - Schedule template - dispatching 'triggers' fails when there is more the one listener
  • SFN 141 - Maintain fractional part of date/time passed to templates. Had minimum granularity of 1 sec.
  • SFN 142 - Fix memory leak in the Semaphore template
  • SFN 143 - Schedule template - dates and 'localtimestamp'
  • SFN 144 - 'C' bindings should return JS_TRUE/FALSE, not JSVAL_TRUE/FALSE
  • SFN 145 - Fixed handling of nulls in JSON encoding and decoding
  • SFN 146 - Buffer overrun in HTTP request/response processing
  • SFN 147 - Support OpenSSL library versions 1.0.2 and 1.1
  • SFN 148 - Fix DBMirror replication error on Postgres 9.x onwards
  • SFN 149 - Compile time error with ECPG on Postgres 9.6
  • SFN 151 - Set m_eof flag in Binary object implementation
  • SFN 85 - Postgres I/F - include flags to auto-convert PG bools and dates to correct JS types
  • SFF 86 - Support Authorization HTTP header or holding WB session IDs
  • SFF 87 - Remove 7000 byte limit on catalogue itemdata
  • SFF 88 - Update ApacheContext to work with both Apache 2.2 and 2.4
  • SFF 89 - Contact template: add 'searchAlias' and 'aliasType'
  • SFF 90 - Audit template: Add rb.audit.move method
  • SFF 91 - HttpRequest - Allow HTTP and SSL version to be specified

29th January 2016 : Release 1.3.34

  • SFF 83 - New 'alias' template to assign 'names' to contact records
  • SFF 82 - Contact/Catalogue templates: Make the monitor code a run time option (-M)
  • SFF 81 - Collection template. Filter spec now include min/maxTargetID
  • SFF 80 - Collection template. sortBy to include options to sort on target fields.
  • SFF 79 - Add rb:include and rb:script tracing
  • SFF 78 - Schedule template event iterator - filter based on min/max state
  • SFN 137 - Contact template. Remove slow debug call to PasswordCheck()
  • SFN 136 - Replace all crypt() symbols with WBcrypt()
  • SFN 135 - Catalogue template, item 'sortBy' date option fixed
  • SFN 134 - Unitialised value in encryption/hash library calls from JS when JS param missing
  • SFN 133 - Throw a Javscript error when attempting to send NaN to a template
  • SFN 132 - Increase Whitebeam/Contacts bcrypt cost from minimum/default of 4/4 to 8/12
  • SFN 131 - Schedule Template: Extract timestamp in correct time zone to avoid simply dropping the zone and effectively getting the wrong time.

26th August 2015 : Release 1.3.32

  • SFF 73 - Implement fast native JSON support
  • SFF 74 - Allow the XML template interface to encode opaque values as JSON values
  • SFF 75 - Compile switch to encode XML template messages using single quotes (more efficient)
  • SFF 76 - GraphicImage - add 'alphaPreserve' and 'alphaBlendMode' methods to allow correct manipulation of alpha channel images
  • SFF 77 - Schedule template - action iterator. Filter results to those listening for a specific trigger.
  • SFN 129 - Fix dbmirror on Postgres version 9.x
  • SFN 130 - Fix critical seg fault in JavaScript caused by SmptRequest initialisation.

11th March 2015 : Release 1.3.30

  • SFF 67 - Support compress/uncompress for Binary objects
  • SFF 64 - Change Whitebeam PE to support fully UTF8 Virtual Hosts (Apache 2.x only)
  • SFF 68 - Provide town/city lookup database (rb.city template)
  • SFF 71 - Collection template - Extend allData to allow relationData to be omitted
  • SFF 72 - Collection template - Add hasTargetFromList to search parameters
  • SFN 128 - Catalogue/Contact template database connection recovery
  • SFN 127 - Postdata corrupted for large data sizes
  • SFN 126 - Collection template request can over-write existing data
  • SFN 125 - Fix HasData overrun in Context template
  • SFN 124 - Potential ContextMem crash with old PE against new template

19th October 2014 : Release 1.3.27

  • SFF:61 - Add lineNumber property to XML tags.
  • SFF:62 - Add 'exists' property on XML elements
  • SFF:63 - Add rb.debug.log
  • SFF:65 - File template - return list of associated contacts in iterator
  • SFF:66 - Attach a file with a set of contacts on create
  • SFN:121 - base 64 encoding in emails
  • SFN:122 - Memory leak in http request/lib curl comms
  • SFN:123 - Memory leak in Counter, Sempahore and Context templates

4th June 2014 : Release 1.3.25

  • SFF:39 - Merge in SteveD's changes to have Whitebeam work on 64 bit Linux
  • SFN:118 - Fix loss of context public key
  • SFF:60 - Add Binary.txlatePath to do Apache path transforms
  • Expose 'encrypt' and 'sign' methods from openSSL library
  • Update 'WbString.hmac' function to support SHA1 with implicit key

24th April 2014 : Release 1.3.24

  • SFF:59 - Process UTF-8 post data correctly
  • SFN:116 - Fix length returned from rb.page.postdata
  • SFN:117 - Update config.sub as part of migration to 64 bit

17th Febraury 2014 : Release 1.3.23

  • SFF:58 - Allow Whtiebeam to run JavaScript only files to allow access to NodeJS scripts
  • SFF:57 - Search for audit records associated with a number of contact records
  • SFF:56 - Implement rb.page.session.flush() to do an early write to context server
  • SFF:55 - Make rb.catalogue.item.remove optionally remove all attached files
  • SFF:54 - Allow HttpRequest to set key pathenames
  • SFF:53 - Implement Binary.stat
  • SFF:52 - Implement Binary.prototype.stat
  • SFF:51 - Session Management - ability to lock a session to a specific IP address
  • SFF:50 - Session Management - lazy session data loading
  • SFF:49 - Context Template, session management and security
  • SFF:46 - Audit Template, support audit records agaisnt scheduler actions and events
  • SFN:115 - Correctly change log/logBody(false) in rb.schedule.event.modify
  • SFF:113 - Context template - set/removePublicKey must set the modified context flag
  • SFN:112 - Repeated scheduler events stall on HTTP timeout - no repeats happen
  • SFN:111 - Remove spurious no-cache header
  • SFN:110 - Add an index on audit table: (instance,client_id,contact_id)
  • SFN:109 - Change scheduler process management
  • SFN:108 - Change the way Binary object file names are sanitised and resolved.

21st August 2013 : Release 1.3.21

  • SFN:104 - Fix buffer problem in the schedule template.
  • SFN:105 - Remove error report when calling 'destroy' on a destroyed XML element
  • SFN:106 - Fix rebuild problem moving an XML element from one parent to another

22nd July 2013 : Release 1.3.20

  • SFN:98 - Increase file template name field length from 50 to 150 chars
  • SFN:97 - Fix the rb:authenticate tag (base64 decode)
  • SFN:96 - Improved support for atomic attributes in XML documents
  • SFN:99 - Fix to idMap code to avoid loss of nodes.
  • SFN:100 - Fix rb:include to report XML errors from parsed files.
  • SFN:101 - Improve error detection and reporting in XmlBuildJSTag
  • SFN:103 - Fix error reporting/exception propagation in SmtpRequest

8th May 2013 : Release 1.3.18

Minor release with a number of bug fixes and a few feature enhancements to templates:

  • SF:3612891 - Audit template - sort by summary
  • SF:3603159 - Schedule template fix - incorrect field used.
  • SF:3603160 - Schedule: add rb.schedule.event.count
  • SF:3603161 - Schedule: add rb.schedule.event.bulkRemove
  • SF:3600059 - Feature enhancement - use SIMILAR TO in preference to ILIKE for template type field comparisons.
  • SF:3600060 - Fix unitialised variable in SmtpRequest $ substitutions.
  • SF:3600061 - Fix 'when' parameter to eb.schedule.action.listen.
  • SF:3600062 - Schedule Template; Add 'contactID' to the parameters passed to the URL call when a trigger is invoked.
  • SF:3600727 - Fix redundant template iterator requests.
  • SF:3600728 - Fix memory leak in contact template (EXEC SQL SELECT)

29th December 2012 : Release 1.3.16

This update to Whitebeam adds significant functionality to the Whitebeam platform, primarily in the area of scheduling and message queues.

  • SF:3592410 - Fix access to rb:eval created attributes in macrotags.
  • SF:3592418 - Make SmtpRequest address sanitiser conform with RFC2822.
  • SF:3597167 - Fix adjacent substitutions in SmtpRequest.
  • SF:3592422 - Feature request: Wrap Whitebeam debug with a div.

Schedule Template

  • SF:3594791 - Enhance to support listener and anonymous 'trigger' functionality allowing the scheduler to take the role of decoupling message queue for modular applications.
  • SF:3594300 - Can't search on the contact ID field.
  • SF:3594299 - Changing owner ID
  • SF:3594298 - search field "isInContacts" is not currently implemented in the template (as in no code in the template to support this)
  • SF:3597340 - correctly store the log.logBody attributes against events
  • SF:3597342 - Replace wb_epoch_to_date with built-in to_timestamp.

File Template

  • SF:3592416 - Fix default max-rows valud for the file template
  • SF:3592423 - Add 'modifiedTime' as a search option in the file template.
  • SF:3592424 - Fix problem overwriting mime-type in an iterator set request.

Contact Template

  • SF:3592421 - Replace memberOf code in contact template to use SQL ARRAY syntax to avoid an additional database query. Approximately 20% performance saving.

28th September 2012 : Release 1.3.14

Hot on the heals of 1.3.12 this release includes some valuable functionality that builds on the previous release.

Presentation Engine

  • SF:3572391 - Modify HttpRequest (bad name with hindsight!) to better expose libcurl's support for other protocols - specifically in this instance SFTP.

File Template

  • SF:3571580 - Fix error in iterator code that can result in early termination of the iterator loop.
  • SF:3571574 - Modify maxRows handling for fragments and add this to the search spec.
  • SF:3571515 - Add customData and type attributes
  • SF:3571513 - Support isInContactsAllLevels to recurse through the contact list

Contact Template

  • SF:3571457 - Contact template. Provide a means of reading the stored and sortable modifiedTime attribute.

24th September 2012 : Release 1.3.12

  • SF:3568227, SF:3568230 Support for large (>template comms limit) files by supporting file 'fragments' with backward compatible API.
  • SF:3571174 - Add 'modifiedTime' to contact records and allow sort/search.
  • SF:3568387 - Enhancements to Chat template to support polling of multiple rooms - allowing efficient implementation of FB like 1-to-1 conversations.
  • SF:3568228 - Allow files to be associated with contacts
  • SF:3540413 - Allow XPath exporession to reference JavaScript properties against an arbitrary object rather than just the global object.
  • SF:3540411 - Fix UTF8 encoding for character values > 0x7FF. Currently the encoding for these values is truncated.
  • SF:3544625 - provide access to the current page's global object.
  • SF:3544635 - Add '+' to set of characters in a URL escaped value.
  • SF:3567308 - Correctly abort page execution when XML errors are detected in page structure. Do *not* continue with the execution phase.
  • SF:3568354 - Prevent template locking up and flooding system resource when receiving an invalid length field. Close connection instead.

14th June 2012 : Release 1.3.10

Bug fix release

  • SF:3535205 - Maintenance release to fix overflow in the contact template for large data sets.

4th June 2012 : Release 1.3.9

  • SF:3530502 - New scheduling template (rb.schedule.XXX)
  • SF:3532094 - Complete re-write of the file template to use libpq rather than embedded SQL. This primarily fixes an annoying slow memory leak but also results in a doubling of performance.
  • SF:3530499 - Use CrbString::CalcXmlEncLength when estimating response size in the catalogue template.
  • SF:3530497 - Import/export contact template password hash value
  • SF:3530496 - New feature: Support proxy authentication in HttpRequest
  • SF:3530495 - Fix to base64 decode function
  • SF:3467885 - fixed bug in SmtpRequest.fromString - error decoding headers when there is not at least one header.
  • SF:3468913 - Add bulkRemove to the Audit template
  • SF:3468912 - add minID, maxID, minTime and maxTime to auditQueryData

28th December 2011 : Release 1.3.7

  • Enhanced SmtpRequest to better support ESMPT DSN functions
  • Modify the Whitebeam Shell (wbsh) to accept stdin as post data
  • Add isInContactAllLevels to the catalogue search parameters to cause the item search to include all descendents of contacts in the isContactIn array

9th December 2011 : Release 1.3.6

Context Template (and rb.page.session)

1st December 2011 : Release 1.3.5

Presentation Engine:

Catalogue template:

Contact template

  • SF:3412265 - Fix SQL generated for searchParentName and searchParentDescription.
  • SF:3412268 - Test for regexp_matches before seaching. If available (PostgreSQL 8.3 and above) then use that function for rank searches. If not available then drop back to the older, slower PL/SQL matchString.
  • SF:3414395 - Increase customData size to 200K.

Context template (and rb.page.session)

  • SF:3445340 - Add rb.page.session.newID() to move current session to a new ID. To be used as a security measure when people log into a site via SSL.
  • SF:3445336 - Allow access to the underlying session data areas. Rather than a single data area rb.page.session.write/read can

File template

  • SF:3421179 - fix file template to allow a server and port number to be specified

4th May 2011 : Release 1.3.4

Significant enhancements in this release to the contact template and the addition of a 'postcode' template in the contrib directory.

Contact template changes:

  • Add a 'location' field to contacts - a structure comprising a [longitude,latitude] pair.
  • Enhance searchFlags to include the ability to search (and sort) based on distance from a specific [longitude,latitude]
  • Ability to constrain a search to only those contacts within a specific radius (eg 10 miles).
  • Add hasContactIDfromList to allow an application to constrain returned contacts to only those in a very specific list. This is useful primarily when validating contactIDs returned from a client.
  • Add a 'bulkRemove' method. This takes the same search spec as 'get' but removes all matching INDIVIDUALS. NOTE: the request only allows INDIVIDUALs to be removed. Attempts to specify searchOU in the searchFlags cause an error to be returned.
  • Add bulkCommunityModify method. This allows (only) individuals to be added to or removed from a specific community. The individuals are selected using the same keywords/searchFlags as the get/count/bulkRemove methods.
  • Changed some constraints in the database to automated the removal of ancillary information when a contact record is removed from the database.
  • Add repeatable random sampling into contact searches. This has two parts: allowing searchFlags.sort to take a value of 'random' and implementing searchFlags.randomSeed to optionally preset the random number generator.
  • SF:3297440 - Add 'minID' to searchFlags. This is necessary if you want to read through a large data set over a long period and it's important you don't read the same record twice. Example is a bulk emailer reading a chunk of records every, say, 15 minutes. If a record with a low contactID is removed part way through the process one record will receive the email twice.

Catalogue template

  • SF:3297440 - Add 'minID' to itemSearchType. This is necessary if you want to read through a large data set over a long period and it's important you don't read the same record twice or skip a record that should be included.

Postcode templatenew

  • Provide a mapping from a domain specific postcode to a global longitude/latitude.
  • Provides a utility method 'distance' to return the number of miles between two points.

Bug Fixes

  • SF:3184800 - The template compiler (tgen) has been fixed to support the return of optional structures in the results to the Presentation Engine.
  • SF:3184999 - Bug encoding optional structures in the PE to be sent to a template.
  • SF:3192307 - Fix to collection template to correctly decode iterator handle where a keyword search has been specified in the search parameters.
  • SF:3297438 - Fix SQL error in audit template
  • SF:3297445 - Prevent catalogue from using a SQL OFFSET that is negative (check value passed from Presentation Engine).

12th February 2011 : Release 1.3.2

  • SF:3178931 - Bug fix to rb.page.formdata(true) implementation
  • SF:3178932 - Fix to SQL generated for rb.catalogue.get/count search params where isItemInNode includes negative numbers.

12th January 2011 : Release 1.3.1

  • Add 'maxRows' attribute to rb.collection.getArcs parameter. Allows the application to control the amount of data extracted from the database and returned from the collection template.
  • Removed some build errors and some warnings reported by stricter processing in the latest GCC compiler. Generally these are due to type casts between const and non-const values.
  • SF:3162704 - re-write common/replicate to detect and recover from loss of connect to either the SLAVE or MASTER databases
  • SD:3162701 - fix bug whereby dbmirror/replicate may attempt to apply the same transaction twice to the SLAVE database
  • SF:2992221 - bug fix to CrbBinaryObj::AppendData
  • SF:3010110 - enhancement to support HTML 5 multiple file input.
  • SF:3156178 - randomness of session IDs improved. Session IDs are now 16 byte random strings.
  • SF:3156181 - support for field[] array processing of form parameters
  • SF:3156195 - consistent escaping of rb:eval attribute values
  • SF:3156201 - minValue and maxValue added to contact template searchFlags
  • SF:3156206 - Fix configure error when building against recent Postgres releases installed through RPMs

17th April 2010 : Release 1.2.2

  • Updated SpiderMonkey JavaScript engine to the most recent release from Moziall - 1.7. This release includes all the functionality released in Mozilla 2 as described at the following reference : http://developer.mozilla.org/en/docs/New_in_JavaScript_1.7
  • Re-write the HttpRequest class to use 'libcurl' in preference to the homebrew code. This adds support for HTTPS. If libcurl is *not* available then internal code is still used. New implementation is significantly more functional than the previous release.
  • Update SmtpRequest class to provide better error reporting and the abilty to use SMTP address verification without sending an email.
  • Database replication : improve 'replicate' to support bringing up a slave *without* having to shut down the master database.
  • Contact template : Support 'value' field for communities as well as OU and Individuals.
  • Contact template : Correctly serialise value into an INT_64 rather than float in SQL expressions.
  • Catalogue : re-code code that manages the containment tree to remove the 'accidental' ability of orphaning all contained items simply by writin a item back to the catalogue unchanged.
  • Fix JavaScript escaping in audit, collection and chat templates.
  • Enhance Postgres native interface to include execParams and and execParamsArray to allow parameters to be passed to a SQL statement without having to first escape, or in the case of binary object, encode. Apart from safety this is much more efficient when storing big binary objects in the database. PgConnection.prototype.execParams.
  • Fix XPath string(NodeSet) function to return the value of the first node in the set.
  • Add 'innerHTML' and 'innerXML' methods to XML tags allowing a text fragment to be parsed and built into a tree as done in client-side environments.
  • XML tag.clean() added to make it easier to manage memory usage in very large page builds
  • Change JS script initialisation order to be compatible with JS1.8rc1 (not added to CVS yet!).
  • Enhancements to the collection template to support date range searches and provide more flexibility. See documentation for detail.

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.


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 ?>
  • 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)
    Whitebeam release 1.3.36
    View XML source of this page
    (loadtime : 14ms)