Changes for version 1.0.7 (Released 2010-05-26) * Fix parsing of strings containing characters with negative ASCII values. * Stop escaping '?' in strings when unparsing. * Added _useOldClassAdSemantics, which makes expression evaluation behave more like the old ClassAds implementation. Meant for use in Condor only. Changes for version 1.0.6 (Released 2010-02-25) * Fixed bug in MatchClassAd::OptimizeAdForMatchmaking() that broke references to the right ad from the left ad. * Fixed bug in FlattenAndInline() that caused all function calls to fail. * Added short-circuiting for &&, ||, and ?: operators. * Added symmetricMatch(), rightMatchesLeft(), and leftMatchesRight() methods to MatchClassAd. * Fixed bug that caused ClassAdParser to drop the character immediately following the old ClassAd =!= operator. * Added ClassAd::alternateScope, which allows optional mimicking of old ClassAd evaluation semantics for use in Condor. Changes for version 1.0.5 (Released 2010-02-09) * Significant performance optimizations. This includes restoring use of the non-standard STL hash_map. * When unparsing to old ClassAd format, print reals with the same precision as in old ClassAds. * Fixed a bug in GetInternalReferences() that would return an incomplete list if an external reference was encountered. * Fixed a bug in function substr() that could return the wrong substring when a negative length was provided. * Make the single argument to function random() optional, as documented. * Fixed a bug in function ifThenElse() that caused evaluation to fail if the first argument was a real. * Fixed a bug in several functions that caused evaluation to fail if the wrong number or type of arguments was provided. Changes for version 1.0.4 (Release 2009-10-05) * Added eval() function to be consistent with "old" classad library used by Condor. * Fixed problem with calculating timezone offsets. This problem caused the library checks to fail in the British timezone. * Made code changes to ease transition from "old" to "new" classad library in Condor. * Fixed problems in absTime() and relTime() that could cause undefined behavior on malformed input strings. Changes for version 1.0.3 (Released 2009-03-10) * Fixed name of ClassAd function strcmp() to be case-insensitive, like all other function names. The function's behavior was and continues to be a case-sensitive comparison of two strings. * Removed usage of non-standard STL types hash_map and slist. * Fixed a bad gcc version check. * Updated Windows build files. * Added #include to build on gcc 3.4.x. * Some source files renamed due to Windows build limitations. * Removed CLASSAD_DISTRIBUTION build symbol. Changes for version 1.0.2 (Released 2009-01-30) * Added #include to build on gcc 3.4.x. Changes for version 1.0.1 (Released 2008-12-1) - Added ClassAd functions from old classads: ifThenElse(), regexps(), and interval(). - Fixed some minor compilation problems under OS X 10.5. - Source files renamed to conform to scheme for rest of condor source (.C --> .cpp). Changes for version 1.0rc5 (Released 2008-03-17) * The WANT_NAMESPACES define is now WANT_CLASSAD_NAMESPACE * New warning flags were added to the distribution build - A number of minor changes were made to eliminate warnings + shadowed variables, possible uninitialized variables * Fixed an apparent leak (valgrind found) in attrref.C:426, leaking attrRef * Updated the build_external script for building as a Condor external * Updated classads.spec to be Fedora compliant * configure.ac now removes all rpath junk from libtool - a side-effect is the need to set LD_LIBRARY_PATH=.libs if you want to run the compiled programs before they are installed * memory leak in fnCall.C:regex_helper fixed (PCRE only issue) * Fixed printing of escaped characters in strings when printing in old-classad mode. * Fixed evaluation of attribute reference applied to lists. Changes for version 1.0rc1 * Build now uses autotools, and has the following changes: - The --lib-name option no longer exists - The SWIG interface isn't compiled (previously it was never installed) - The --prefix option is now --prefix=DIR - The --use-pcre option is now --with-pcre=DIR - The --use-stlport option no longer exists - The --use-explicit-templates option is now --enable-explicit-templates, and really should not be used - configure no longer creates a classad_features.h - The --enable-shlib option has been removed, it is compiled whenever available. Also, the _sh suffix is no longer used - configure detects DLOPEN and will not compile shlib if it is not available - Note: Makefile.am should not be edited, edit Makefile.am.m4 instead * Header files are now installed in a classad/ directory, either #include or add an appropriate -I to your build * All ClassAd structures/classes are now placed in the "classad" namespace if namespaces are requested 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_.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 | No libclassad_sh.a | No | YES 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 . 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 (number) tag has been replaced by (integer) and (real) tags. Real numbers are always represented as described below. - is now absolute time, and 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 . * 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.