2016-03-08  Olivier Mehani <olivier.mehani@nicta.com.au>
	* OML: Version 2.11.1rc
                Better memory management in PSQL backend (#1916)
                Use properly-typed prepared statements in PSQL backend (#1657)
                Fix some memory leaks in client and server
                Add --report-period to the server to dump resource usage
                Allow to enable profiling at configuration time
                Properly close failing sockets to avoid resource exhaustion

2014-05-02  Olivier Mehani <olivier.mehani@nicta.com.au>
	* OML: Version 2.11.0
	* Build libshared into libocomm rather than liboml2
	* Doc: Add oml2-proxycon(1)

2014-04-04  Olivier Mehani <olivier.mehani@nicta.com.au>
	* OML: Version 2.11.0rc2
	* Major fixes:
		Get rid of unbounded sprintf()s in PSQL adapter causing crashes
			when receiving long strings (#1685);
		Properly close database connections (#1586, #1653);
		Fix memory issue in scaffold-generated template (#1704);
	* Improvements:
		Better documentation of the internals mechanisms, particularly
			all the protocol details in a single place (#1446);
		Increase double significance to 15 figures with PSQL
			(#1651);
	* Known limitations:
	    A hairy connection management problem currently leads an OML
		application to stall on injects when a host running the
		collection server is down (#1581) or otherwise dropping packets
		without proper TCP RST (e.g., bad firewalling). This does not
		happen in case only the oml2-server is not running, but the
		host is up, or a router along the way can positively report the
		connection host as unreachable.
	    Due to laxness in typing (#1657), the PostgreSQL backend currently
		does not support the full scale of the C double representation.
		Numbers with more than 15 significant figures (e.g.,
		-1.7976931348623157E+308 or 2.2250738585072014E-308) might get
		rounded to unstorable values (#1651#note-22).


2013-11-01  Olivier Mehani <shtrom@ssji.net>
	* OML: Version 2.11.0rc
	* New features:
		Vector support (#1386; bump to OMSPv5);
		Client-side self-instrumentation: dropped measurements, memory
			used,... (#1396);
		IPv6 support in client and server (#369);
		Add DBCREATED and DBOPENED hook events (#1253).
	* Major fixes:
		liboml2: Fixes in configuration-file handling when selecting MPs
			and fields (#1266), or reporting to multiple (#1154);
		oml2-server: Don't die when a table with no schema is found
			(#1366);
		oml2-scaffold: Add metadata injection to scaffold apps (#1401)
		Better network logic: applications should not block when the
			reporting path is down (#1104);
		Fix spurious 'Data item number mismatch' message (#1156, #1222)
		Rename memory allocation functions (e.g., from xmalloc to
			oml_malloc), to avoid clashes with similarly-named
			functions in instrumented applications (#991);
		Better documentation of the internals mechanisms, particularly
			all the protocol details in a single place (#1446).
	* Known limitation: Due to the current wire representation of the binary
		mode OMSP, it is not possible to carry more than 255 MSs (not
		counting schema0) in a single connection to the server (#1491).
		The text mode OMSP does not have this limitation.

2013-08-06  Olivier Mehani <olivier.mehani@nicta.com.au>
	* OML: Version 2.10.1 (bugfix release)
	* No changes since RC.

2013-07-09  Olivier Mehani <olivier.mehani@nicta.com.au>
	* OML: Version 2.10.1rc (bugfix release)
	* Major fixes:
		Client library:
			- Allow to send similarly-named MP to various collection
			  points (#1154)
			- Fixed oml2-server's spurious 'Data item number
			  mismatch', and the triggers that caused them (in
			  filtering system) (#1156)
			- _experiment_metadata is unconditionally reported on all
			  MSs (#1266)
		oml2-server
			- the Debian init script now waits for sockets in
			FIN_WAIT state to have been closed by the system (#1262)
			- fix 'Out of memory' bug on low-memory machines (#1320)

2013-04-20  Stephen Glass  <stephen.glass@nicta.com.au>
	* OML: Version 2.10.0
	* Major fixes:
		Remove OML4Py from main build Instrument OML server so
		that it logs connections and disconnections using OML (#1150).
		Add README files to the directories in the source code (#961).
		Use symbols instead of strings for scaffold defProperty types.
		Make scaffold work with Ruby 1.8.7.
	* Fix minor bugs and discrepancies since RC.

2013-04-15  Olivier Mehani  <olivier.mehani@nicta.com.au>
	* OML: Version 2.10.0rc2
	* OMSP (protocol): finalise version 4
		Support for booleans in both text and binary modes
	* liboml2: Proper bump to library version 9.1.0
		Allow to declare new MPs after omlc_start has been called (#1057)
		Fix log delegation issues (#943)
	* Major fixes:
		oml2-scaffold is now more compatible with OMF application
		descriptions (#1124, #1118)
		Fix some memory and/or locking issues (#1122, #1072)
	* Documentation:
		Document use of OML_FROM_MAIN in liboml2(3) (#1123)
		Package PostgreSQL backend documentation by default (#1050)
		Various fixups and clarifications
	* oml2-scaffold:
		The default generated code now shows off all supported types
	* OML4Py: API closer to the generic OML interfaces (#938)
	* OML4R: removed from tree, now available from GitHub:
			   https://github.com/mytestbed/oml4r

2013-03-17  Olivier Mehani  <olivier.mehani@nicta.com.au>
	* OML: Version 2.10.0rc
	* protocol: New version, 4
		Support for user-defined metadata (units, references, etc...)
			(#418, #748, #829)
		Support for globally unique IDs to group tuples within or across
			MPs (#954)
		Support for Blob and multi-line strings in text protocol (#761, #835)
	* liboml2: Bump in library minor to 9.0.1 to support new API for V4
			protocol features
	* Backend changes:
		Extend _experiment_metadata table schema (#418)
		Add primary keys to measurement tables (#814)
	* Major fixes:
		Fixed handling of zero-size and null strings/blobs (#929)
		Fixed the handling of inactive client connections in the server, and a
			similar issue in the client (#826)
		Resync after erroneous message in binary mode (#791)

2012-12-10  Olivier Mehani  <olivier.mehani@nicta.com.au>
	* OML: Version 2.9.0
	* Fix minor bugs and discrepancies since RC.

2012-11-23  Olivier Mehani  <olivier.mehani@nicta.com.au>
	* OML: Version 2.9.0rc
	* liboml2: Bump to library version 9.0.0 (1.0.0 for OComm)
		Heavy work on memory leak issues (#647, #516)
		Changes in the OmlValueU API
			Old applications should be ported by using omlc_zero(3)
			or omlc_zero_array(3) after declaring OmlValueUs, and
			properly omlc_reset_string(3) and omlc_reset_blob(3)
			when needed. All the API is documented in OmlValueU(3),
			but should not be used directly with new application.
			see OmlValue(3) for more details on porting pre-2.9
			instrumentations.
		Instrumentation workflow MUST now use oml2-scaffold(1) and
			oml_inject_MPNAME(3).
		Old binaries will still work with the old library which can be
			installed in parallel
		Re-insteate OML's functionality of being able to
			delegate logging to the application (#832)
		Throttle logging when too many messages (#827)
		More informative and regular log messages (#222)
		Plenty of bugfixes
	* UI changes: Introduce --oml-domain and --oml-collect instead of
		(resp.) --oml-exp-id and --oml-server, which are still valid
		(#860, #726)
	* Documentation: #891, #771
			 Update manpages
			 Document some parts of the code with Doxygen
			 A README file!
	* Bindings: New OML4Py Python module contributed by Fraida Fund from
		NYU-Poly (#595)
		    OML4R now supports reconnection
	* Supported architectures: Basic Android port thanks to François Hoguet
		from UTC (#512)
	* Supported backends: PostgreSQL is officially supported (#874, #859,
		#825, #824, #755)

2012-06-25  Olivier Mehani <olivier.mehani@nicta.com.au>
	* OML: Version 2.8.0
	* Bugfixes: Builds on Mac OS X without special arguments (#749)
	* liboml2: Reconnect to server in case of disconnection (#757)
	* oml2-server: Fix issue with empty string last in text mode (#610)
		       Introduce event hook mechanism to react to event within
		       the server (e.g., push a measurement database to iRODS
		       when the last client has disconnected)
	* oml2-scaffold: Load the right appfile (#750)
	* OML4R: OML4R Gem pushed to RubyGems
		 Examples updated
		 Support for sending measurement to different streams
		 Make parameters constistent with liboml and command line (#751)

2012-04-24  Olivier Mehani <olivier.mehani@nicta.com.au>
	* OML: Version 2.7.0-rc1
	* manpages: Fix manpage wrt --oml-list-filters
	            Fix server's data-dir option prototype
	* liboml2: Output to local file by default if nothing specified
	           Use simplified logging style by default
	           Unify some debug messages between bin and text
	           Implement the flush:// scheme for the file URI
	           Avoid compiler warning with omlc_set_const_string()
	* oml2-scaffold: Use OML_INT32_VALUE by default
		         Exit with an error on unknown types
		         Generate per-MP injector functions
		         Generate .rb app files
		         Fix popt.h generation
		         Fix Makefile generation
	                 Handle both :type and "type"
			 Brand new example oml2-scaffold-generated generator

2011-06-19  Jolyon White  <jolyon.white@nicta.com.au>

	* OML: New version 2.6.0

	* lib/client/init.c (create_writer): The output encoding is now
	independent of the output transport.  Text encoding can be sent to
	network, and binary encoding can be sent to local file, as well as
	the existing options (text->file, binary->network).  Encoding is
	selectable using --oml-text and --oml-binary.

	* lib/client/buffered_writer.c: Add new output serialization and
	buffering scheme to the client library to decouple backend
	processing from application-thread sample injects.  This should
	make measurements have less impact on the main thread.  New client
	lib command line option --oml-bufsize controls the amount of
	buffer space available in the buffer that sits between the inject
	thread and the output stage thread.

	* server/main.c (drop_privileges): oml2-server now drops
	privileges if the --user and/or --group command line options.
	Privileges are dropped as soon as possible, namely after the
	socket has been set up (in case the admin wants to run it on a
	privileged port) and after the log file has been opened.
	(setup_backend_sqlite): oml2-server now writes databases to a
	subdirectory of $(localstatedir), which can be configured at
	compile time using the --localstatedir=DIR option of configure.
	If the server can't write to that directory, it will abort with an
	error message in the log.  The default is overridden by the
	OML_SQLITE_DIR environment variable, which is overridden by the
	--data-dir option (now available as -D as well).

	* server/psql_adapter.c (psql_create_database): PostgreSQL support
	is not complete and considered to be supported.  oml2-server now
	supports --pg-connect and --pg-user to help configure the
	connection to the PostgreSQL server.

	* server/main.c (setup_logging): Make oml2-server and
	oml2-proxy-server log to stderr when stderr is attached to a tty
	if --logfile is not used.  If --logfile is not used and stderr is
	NOT attached to a tty, the servers log to their default log file
	names instead.

	* lib/client/parse_config.c: reskin the XML configuration file
	format to make the element and attribute names more meaningful,
	and more easily remembered.

2011-03-16  Jolyon White  <jolyon.white@nicta.com.au>

	* OML: New version 2.5.2

	* oml2-server: All strings representing table and column names
	are now enclosed in double quotes to allow SQL keywords to be
	used as column names.  Note that the strings are not yet escaped,
	so including a double quote in the name can be used to do SQL
	injection.

	* oml2-server: Fix a bug in copying string values from the text
	protocol parser that resulted in incorrectly terminated
	strings. This would sometimes add extra garbage to the end of
	strings stored in the database.

2011-01-29  Jolyon White  <jolyon.white@nicta.com.au>

	* OML: New version 2.5.1

	* libocomm, oml2-server: Fix a bug in the event loop that made it
	impossible to cleanly free a client's data structures without
	leaving the possibility of a segfault.  Segfaults were in fact
	occurring.  This fix provides a clean client shutdown mechanism.
	See IssueID #496.

	* oml2-server: Fix sync position detection in binary protocol
	parsing.  This is the second part of the fix to IssueID #463.
	Search for sync bytes now starts from the end of the last message
	processed, not the start of the input buffer.

2010-10-29  Jolyon White  <jolyon.white@nicta.com.au>

	* OML: New version 2.5.0

	* liboml2, oml2-server: The client and server now support a new
	type:  OML_BLOB_VALUE.  This type allows for arbitrary binary
	large objects (BLOBS) to be transmitted and stored in the SQLite
	database; only the binary protocol supports blobs, not the text
	protocol.  This change also required a new packet type in the
	binary protocol, to support measurement packets larger than
	64KiB. Protocol version is now version 3.

	* oml2-proxy-server: Proxy server has been redesigned to support
	multiple connect->disconnect->reconnect cycles.  The RESUME
	command initiates connections to the downstream oml2-server, and
	the PAUSE command closes them.  The proxy server now processes
	protocol metadata headers at the start of the stream, and parses
	just enough of each measurement packet to determine the packet
	boundaries so that it doesn't send partial packets.  It also
	re-sends the metadata headers each time the RESUME command is
	given.  (Also, RESUME and PAUSE have been introduced as simpler
	synonyms for OMLPROXY-RESUME and OMLPROXY-PAUSE.)

	* oml2-proxy-server: Proxy server now supports a simple
	socket-based control interface.  It accepts the same commands as
	standard input, linebuffered.  The script oml2-proxycon provides a
	remote terminal for this interface.  It can be used as a guide for
	custom scripting.  The proxy server listens on port n+1 for
	control connections, where port n is the data port set using the
	-l option.  Note:  this design is experimental and may change in a
	future release.

	* oml2-server: Fixed bug #463; the server was sometimes getting
	confused about packet boundaries and tried to interpret the
	metadata headers as binary packet data.  This bug seemed to be
	timing-sensitve as it only happened for high-rate senders.  Server
	now correctly skips past the headers in all cases and correctly
	synchronizes on the SYNC_BYTEs (0xAA 0xAA).

2010-09-08  Jolyon White  <jolyon.white@nicta.com.au>

	* OML: New version 2.4.0

	* OML: Package names changed to be better for Debian/Ubuntu policy
	compliance.  Splite oml2-proxy-server into its own package; split
	libocomm into its own package.  oml2_scaffold is now correctly
	included in the liboml2-dev package; various other files were
	moved to the package in which the Debian manual says that they
	should reside.  The -dev packages are now marked as "Architecture:
	any" instead of "Architecture: all" to avoid problems when
	uploading packages for different architectures.

	* OML: fixes to 'make dist' to ensure the release tarball contains
	all the files it should.

	* OML: Added a comprehensive set of man pages for OML using
	Asciidoc as the markup format.  The standard build now also builds
	documentation if asciidoc is installed, and 'make html' will build
	HTML versions of the man pages for the website.  The Debian
	packages now include man pages.

	* OML: add support for four new integer types:  OML_INT32_VALUE,
	OML_UINT32_VALUE, OML_INT64_VALUE, and OML_UINT64_VALUE.  These
	types map to the equivalents from <stdint.h>, i.e. int32_t,
	uint32_t, etc.  Extensive changes and refactoring in both the
	client and the server to support these new types.  OML_LONG_VALUE
	is now deprecated because it changes width between 32-bit and
	64-bit x86 Linux, which causes OML_LONG_VALUES to be corrupted
	when transmitted over the binary protocol.  OML_LONG_VALUE will
	still be supported until the end of the OML2 series, but will be
	removed in OML3.  The client now complains when an MP is defined
	using OML_LONG_VALUE.  oml2_scaffold now also supports these new
	types.

	* OML: split the applications into their own repository; delete
	the apps subdirectory.

	* OML: convert from Subversion to GIT.

	* OML: add support for four new integer types:  OML_INT32_VALUE,
	OML_UINT32_VALUE, OML_INT64_VALUE, and OML_UINT64_VALUE.  These
	types map to the equivalents from <stdint.h>, i.e. int32_t,
	uint32_t, etc.  Extensive changes and refactoring in both the
	client and the server to support these new types.  OML_LONG_VALUE
	is now deprecated because it changes width between 32-bit and
	64-bit x86 Linux, which causes OML_LONG_VALUES to be corrupted
	when transmitted over the binary protocol.  OML_LONG_VALUE will
	still be supported until the end of the OML2 series, but will be
	removed in OML3.  The client now complains when an MP is defined
	using OML_LONG_VALUE.  oml2_scaffold now also supports these new
	types.

	* OML: substantial changes to configure.ac to provide good
	detection and handling of optional features (building
	documentation, running unit tests, etc.).  The configure script
	now aborts when it detects missing libraries.

	* oml2_scaffold: Types :int and :integer were aliases for :long
	previously.  Added compatibility switches -i,--int32 to select
	:int32 as the underlying type and -l,--long to select long as the
	underlying type.  For now the default will be --long (same
	behaviour as before), but in OML 2.5 the default will be changed
	to --int32.  This allows developers now to generate oml2_scaffold
	code that uses the new :int32 type easily with OMF
	defApplications, and encourages developers to port their old
	applications to use the new types by the time OML 2.5 is release.
	A warning is printed whenever the :int or :integer are used to
	alert the developer to the migration, and :long now generates a
	warning that it is deprecated. This also introduces a new version
	of the binary and text protocol (version 2) to support the new
	types.

	* oml2_scaffold: Added synonyms :float and :real for :double.

	* oml2_scaffold: Fix bug to allow the generated OML header file to
	be included from multiple source files.

	* liboml2, oml2-server: fix lots of OML_STRING_VALUE handling code
	to make sure that we allocate the right amount of memory, don't
	try to manipulate null pointers, and don't try to free memory that
	wasn't allocated (or wasn't allocated at the location we are
	trying to free).

	* liboml2, oml2-server: tighten up name validation.  Names must
	now be like C identifiers for application name, measurement point
	names, and measurement point field names.

	* liboml2: The library now gets generated with the correct
	-version-info from libtool.

	* liboml2: Fix omlc_set_string() and omlc_set_const_string()
	macros.

	* liboml2: Added three new filters:  'last' (like first, but takes
	the last sample and throws away the rest), 'sum' (computes the sum
	of each sample set) and 'delta' (computes the change in the input
	value over the sample set).  Thanks to Olivier Mehani for
	contributing this code.

	* lib/client/filter/factory.c (create_filter_result_vector): Fix a
	one-character bug that was causing this function to allocate less
	memory than needed, leading to segfaults and upredictable behaviour.

	* lib/client/filter.c (filter_process): Make this function fail
	gracefully if omlc_instance == NULL.

	* libocomm: Fixed various issues with the poll() loop that were
	causing poll() to exit even when no new data had been received.
	This was also spamming the server log file.

	* libocomm: Fixed connection handling to make sure all data
	received for a connection gets delivered to the application, even
	when the client closes the connection.

	* oml2-server: Add code to make the SQLite backend use
	transactions.  Existing transaction is COMMIT'ed and a new one
	started whenever a measurement is received and at least one second
	has elapsed since the last transaction was begun.  This results in
	a significant performance increase.

	* server/database.c (database_find): Fixed a bug that caused this
	function to enter an infinite loop when multiple experiments
	connected to the server.  This function would loop forever when
	trying to check whether the second connecting experiment already
	existed and was open.

	* oml2-server: Redesigned SQL statement string building code to
	use safer string handling functions to avoid buffer overflows.

	* oml2-server: Schema handling factored out into its own module
	and re-worked/tested to improve server robustness.  This resulted
	in redesigning the main code path to the database in a way that is
	more reliable.

	* oml2-server: Now uses a set of x-functions (oml_malloc(),
	oml_realloc(), etc.) for memory-related code.  These functions allow
	a central point for control and auditing of memory.  oml_malloc()
	stores an integer indicating the size of the object allocated to
	allow simple memory use tracking, and to detect problems when
	using oml_free() to free allocated memory.

	* oml2-server: Integrate Ruben Merz's patches for the server to
	support PostgreSQL backend.  The code is still experimental, and
	is not enabled by default.  ./configure --with-postgresql does the
	trick.

	* oml2-server: Refactored server message buffer handling to be
	more robust and fixed a lot of bugs and segfaults along the way.
	The buffer component is now extensively unit tested.

	* oml2-server: Refactored binary protocol parser to be more
	robust.  Implemented extensive unit testing of binary protocol
	marshalling and unmarshalling (client and server).  Found and
	fixed lots of bugs.

	* oml2-server: Substantially redesigned the client memory handling
	to avoid problems with string memory leaking and overruns.  Each
	client now includes a set of vectors, one for each table, that are
	correctly sized to accept measurements for the table, rather than
	having one vector that is shared amongst all tables.  This
	simplifies reallocation dramatically.

	* oml2-server: Ran the server under Valgrind and fixed lots of
	memory leaks.

	* oml2-server: Revamp log messages to be more expressive and to
	make it easier to tie a log message to the client connection that
	caused it.

	* oml2-server: Fix connection handling to avoid dropping
	measurements at the end of the measurement stream when the client
	disconnects.

	* oml2-server: Fix lots of bugs and segfaults.

	* oml2-proxy-server: Fixed bug in dump file naming so that there
	are no buffer overflow problems and the file name length doesn't
	keep growing ad infinitum with each new run.

	* oml2-proxy-server: The proxy server has been substantially
	re-written.  It now does thread synchronization correctly, and
	does much better at connection handling.  The command state
	machine is also much better implemented now.  Added synonyms
	"RESUME" and "PAUSE" for "OMLPROXY-RESUME" and "OMLPROXY-PAUSE"
	commands.

2010-08-17  Jolyon White  <jolyon.white@nicta.com.au>

	* OML:  New version 2.3.9

	* server/client_handler.c (process_text_data_message): fix a bug
	in the handling of the client's values array for the text
	protocol.  Because the text protocol parser reuses the values
	array for all streams from the same client, it can end up trying
	to interpret numeric values that fit into a machine word as
	pointers to malloc'd strings, and tries to realloc() or free()
	them.  This causes segfaults.  Fixed to always malloc() a new
	block of memory for each string, and free() it immediately after
	it is inserted into the database.

2010-06-29  Jolyon White  <jolyon.white@nicta.com.au>

	* OML:  New version 2.3.8

	* server/sqlite_adapter.c (sq3_table_free): add check for null
	sq3table that was causing a segault in the server when a client
	connected with an invalid column type in the schemas.

2010-04-08    <jolyon.white@nicta.com.au>

	* OML:  New version 2.3.7.

	* server/client_handler.c (process_text_data_message): Fix bug in
	string handling for text protocol.  The client_handler_free()
	function free()'s the string value pointers, but the text protocol
	was not allocating new space for the pointers, only copying the
	pointers (shallow copy).  This caused a crash when text clients
	disconnected.  Fixes bug #266.

2010-03-17    <jolyon.white@nicta.com.au>

	* lib/client/misc.c (oml_value_copy): Make oml_value_copy() always
	copy strings into memory that is owned by the destination OmlValue
	object.  Fixes bug #259.

	* configure.ac: Don't generate the build system for the
	applications anymore, and don't build them (as they are removed on
	the master branch, and they now have their own separate
	repository, git://mytestbed.net/oml-apps.git).

2010-03-12  Jolyon White  <jolyon.white@nicta.com.au>

	* OML: New version 2.3.5.

	* OML: Fix longstanding bug in averaging filter.  Filter now only
	averages over all samples received since previous filter output
	was generated.

2009-12-16  Jolyon White  <jolyon.white@nicta.com.au>

	* OML: New version 2.3.4.

	* OML: Fix bugs:  #171 (backported from trunk), #225

	* OML: Open bug list: #172, #168, #149, #90, #24.

	* liboml2: Fix bug in marshalling doubles on Mac OS X (backported
	from trunk).

	* oml2-server: Added a man page.

	* otr2:  Change name of a measurement point to be clearer.

2009-12-07  Jolyon White  <jolyon.white@nicta.com.au>

	* OML: New version 2.3.3.

	* OML: Fix bugs:  #196, #223

	* liboml2: Fix a memory allocation bug in client filters; fix
	definitions of omlc_set_string() and omlc_set_const_string()
	macros.

	* oml2-server: Fix a bug that prevented clients from multiple
	different experiments from connecting to the server at the same
	time.  This caused the server to hang in an infinite loop.  Fix
	the server to close the socket when a client disconnects, to
	prevent lots of sockets stuck in CLOSE_WAIT on the server host
	machine.  Removed a meaningless log message from the server log
	output.

	* iperf_oml2: Change names of MP's to be more understandable; fix
	a portability issue.

2009-09-18    <jolyon.white@nicta.com.au>

	* OML: New version 2.3.1.

	* liboml2: Fix bug #177, segfault when attempting to marshall NULL
	strings.

2009-09-09    <jolyon.white@nicta.com.au>

	* OML: Release version 2.3.0.

	* OML: Package is now autoconfiscated.

	* OML: Package now builds under Mac OS X (but is not well tested
	on that platform).

	* OML: Layout of the source package has been re-organized to make
	it cleaner.

	* oml2-server: Added server capability to re-open existing
	experiment databases and add new measurements to them.  This
	allows long running experiments where the client applications may
	be restarted many times.

	This required the server to create two additional tables in the
	experiment database: '_experiment_data' and '_senders'.  The
	'_senders' table stores a mapping between the client's sender
	id (as specified in either the --oml-id command line option, the
	OML_NAME environment variable, or 'id' attribute of the XML
	configuration file on the client side) and the server-generated
	numeric id that is stored in the 'oml_sender_id' column of the
	measurement tables.  The '_experiment_metadata' table is a generic
	key-value table that can be used to store arbitrary experiment
	metadata.  Currently the OML server uses this to store the
	experiment's start-time, which is the time reference against which
	all of the client data timestamps are calculated.

	* oml2-server: New text-based protocol added.
	lib/client/ruby/oml.rb implements a client for this protocol.

	* oml2-server: Removed buffer overflow conditions in SQL prepared
	statement generation, and removed an unintended artificial limit
	on the size of table schema (both number of characters and number
	of columns).

	* oml2-server: Significant improvements in error condition
	handling on the server.  Clients are now dropped if the server
	detects a protocol error.

	* oml2-server: Server was given a thorough code review and
	numerous segfaults, memory leaks, and other bugs were fixed.  Ran
	the server under valgrind memcheck to find run-time memory errors,
	and fixed another bunch of numerous memory handling errors.

	* liboml2: XML configuration file format has been modified to be
	more expressive.  This change is incompatible with XML
	configuration files from previous versions of OML.  See
	app/simple/config.xml for an example of the new format.

	* liboml2: Added a prototype custom filter API.  This is not
	documented and will be modified in the next release.

	* liboml2: Client headers are now suitable for direct inclusion in
	C++ translation units; they automatically perform extern "C"
	guarding as appropriate.

	* liboml2: Client now detects server disconnects and handles them
	gracefully.  If a measurement stream that was connected to an OML
	server suffers a disconnect, the stream is shut down (or rather,
	its writer is) and the application continues, sending measurements
	to any remaining streams with active writers (whether to file or
	to another OML server).

	* liboml2: Added OML_SERVER environment variable as an alternative
	way to specify the server to which to send measurements.  This is
	overridden by an XML configuration file or the --oml-server
	command line option, if present.  The file:// protocol is
	understood by this environment variable.

	* liboml2: Added --oml-list-filters client command line option.

	* liboml2: Added new standard deviation filter (stddev).

	* oml2-server, liboml2: Server and client now both report the same
	version number (which is identical to the package version number).

	* oml2-server, liboml2: Server and client now both report the
	protocol version to their logging streams on startup.

	* oml2-server, liboml2: Fixed lots of compiler warnings.

	* apps: Integrated the OTG project source into the OML project
	tree.  The OTG source tree builds two applications, otg2 and otr2.

	* apps: All applications except for otg2, otr2, and the simple
	example application, now name their binaries according to the
	format '<app_name>_oml2', to signify that they are OML2 client
	applications.

	* apps: Added radiotap support to trace_oml2 (app/omf_trace).

	* apps: Added application iperf under app/iperf.
