18th October 2007: Release 1.1.5Build 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.4This 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-pre2Added <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-pre1Fix 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.14Remove 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.12Fix 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.11Cache-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.10Rationalise 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.9Initial 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.8Initial 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.7Several 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.6Fix 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.5Fix 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.4Write protect Whitebeam implemented methods correctly (PW)31/7/2001 : Release 0.9.3More 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.2Fix 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.1Re-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.0Initial public release. (RP) |