Home | Back
Changes for version 0.9.9: (released 15-Jun-2007)

* Fixed a crash when a ClassAd has more than one attribute and an
  attribute other than the first has an && with no second expression.

* ClassAds with multiple semicolons in a row used to cause a parse
  error because an empty expression was not allowed. They are now
  allowed.

Changes for version 0.9.8: (released 14-Jun-2006)

* The build now uses implicit template instantiation by
  default. Explicit template instantiation is still available by providing the
  --use-explicit-templates option to configure.

* Added support for compiling with stlport (known to work with stlport5.0RC6).

* Added SWIG interface for Perl.

* Fixed segmentation fault that occured when evaluating lists that are
  not within a ClassAd.

* Added a ClassAdCollection::GetView() function. In combination with
  the existing view iterators, you can now iterate over an entire
  view, including the "root" view.

* Some missing "virtual" keywords were added for virtual destructors

* A bunch of -Wuninitialized warnings were corrected.

* regexprMember has been added.

* The subscript operator now returns error instead of undefined if the
  argument is out of bounds.

* -0.0 is now handled correctly.

* You can now do math with booleans. True is 1, False is 0. This lets
  us do things like:

  Rank = ((other.mips > 4000)*3) + ((other.ram > 1000)*2) +
         (other.disk>1400)

  This is frequently done in Condor, and we need this functionality in
  order to be backwards compatible.

Changes for version 0.9.7: (released 28-Oct-2004)

* The ClassAd tarball (and corresponding directory within the tarball)
  that is downloaded has changed it's format from
  classads_<version>.tar.gz to classads-version.tar.gz. This allows
  the ClassAd library to be used more easily in Condor--I hope it
  doesn't cause anyone problems.

* The name of the classad library now depends on the compile time
  options. There are four possible names:

  Name               | Classad Namespace? | Shared Library Functions?
  -------------------+--------------------+---------------------------
  libclassad.a       |       No           |            No
  libclassad_ns.a    |       Yes          |            Yes
  libclassad_sh.a    |       No           |            No
  libclassad_sh_ns.a |       Yes          |            Yes

  If you don't want these names, you can use the --libname argument to
  configure. To get the old behavior, you would have:

    configure --lib-name libclassad.a

* We are gradually improving the C++ API documentation. Early results
  can be seen at:

  http://www.cs.wisc.edu/condor/classad/c++doc/

* The ClassAd library now defines a CLASSAD_EXCEPT macro instead of
  using EXCEPT. This avoids a conflict with Condor.

Changes for version 0.9.6:  (released 07-Oct-2004)
* Can optionally use PCRE for the regexp() ClassAd function. On Unix,
  specify --use-pcre <dir>. We have tested with PCRE 4.5 and 5.0.

* Added ClassAd functions: splitTime(), formatTime(), and random()

* Added ClassAd functions strcmp() and stricmp().

* Renamed the little used function isMember to identicalMember().

* Fixed bugs in the internal representation of times.

* Added classad_functional_tester, which is a significantly better
  than the old test_classads.

* Added classad_unit_tester, which does lower-level tests than
  classad_functional_tester. This test program is incomplete, but well
  on its way.

* Remove test_classads.

* Added classad_version program, which reports the version.

* Fixed bugs in ExprList that were exposed by classad_unit_tester

* Fixed ClassAd functions real() and string() to work correctly.

* Fixed bugs in XML parsing.

* Fixed a bug where the parser would choke on any input ending in a quotation
  mark because the lexer wasn't consuming the entire string token.

* Fixed a bug where the lexer would choke on any string ending in a backslash.
  Now it will only choke if the string ends in an odd number of backslashes.

* Fixed bug that sometimes caused Flatten() to return an expression
  with a bad pointer.

* operator<<() now takes any ExprTree instead of just a ClassAd.

* Fixed a bug in the configure script that caused inappropriate
  parsing of arguments.

* Fixed numerous little bugs.

Changes for version 0.9.5:
* Fixed a bug in printing parenthesized expressions with minimal
  parentheses. (It used to print garbage in some cases.)

* Identifiers can be quoted with almost anything between the
  quotes. This means you can have a ClassAd like:

  [
    A = 3;
   'B' = 4;
   'C&* X"' = 5;
  ]

Unquoted identifiers must still begin with an alphabetic character or
underscore and be followed by alpanumeric characters or underscores.

* Time representation has changed. Absolute times are represented in
  ISO8601 format. Absolute and relative times looks like function
  calls now:

  [
     birthday = abstime("1972-02-23:08:04:13-0600");
     jobtime  = reltime("2+13:15:36");
  ]

  The relative time is days + hours : minutes : seconds. See the
  online manual for more details.

* The XML output is different in the following ways:

  - The <n> (number) tag has been replaced by <i> (integer) and <r>
    (real) tags. Real numbers are always represented as described
    below.

  - <at> is now absolute time, and <rt> is relative time. Between the
    tags, they are identical to the above representation.

* Real number representation has been changed a bit. When real numbers
  are printed, they are printed with a fixed number of digits of
  precision. They look like: 4.500000000000000E+00. If you need to
  refer to "not a number", infinity, or negative infinity, you can do
  it like:

     nan               = real("NaN");
     infinity          = real("INF");
     negative_infinity = real("-INF");

* We now compile on gcc 3.2.x and 3.3.x, in addition to other versions
  of gcc.

* Various bug fixes, particularly in the XML output.

* ClassAd::MakeClassAd is now static (it's a factory method) and now
  works. It didn't work before.

* Miscellaneous bug fixes.

Changes for version 0.9.4: (release 21-Nov-2002)
* Added user-defined functions

* New parsing functions to allow input from different input types: C
  and C++ strings, streams, and files.

* Fixed some parsing bugs that could cause segfaults.

* Fixed a bug in evaluating function calls that could cause sefaults.

* Fixed bug in XML parsing that could cause problems for parsing empty
  strings, like <s></s>.

* Fixed error in evaluating lists.

Changes for version 0.9.3: (released 1-Aug-2002)
* Made the standalone library compile with gcc 2.95.3, 2.96, and
  3.0.x.

* You can define WANT_NAMESPACES, and the ClassAd library will be
  defined within the "classad" namespace now.

* Fixed a bug in views that could cause view members to be
  inadvertently erased. (bool ViewMemberLT::operator() was incorrect.)

* The ClassAd functions member and ismember switched the order of
  parameters, and now match the documentation: the list argument
  is now second.

* bool EvaluateAttr(const string& attrName, Value &result) was declared
  in classad.h, but not defined. It now is.

* Made IsStringValue() a bit safer in value.h

* There is a simple << operator for ClassAds now.

* New STL-like iterators for ClassAds and Collections.

Changes for version 0.9.2: (released 12-Feb-2002)
* Setting the view info no longer loses the view name or parent
  view name.
* There is now a configure script to assist with building.

Changes for version 0.9.1:
* Fixed usage of va_end in debug.C
* Removed token after #endif
* Flushing of ClassAd collection logs was accidentally turned off, and
  is now turned back on.
* Fixed bug in ClassAd::Copy() where the parent scope wasn't being set
  properly.