This is the changelog file for POCO - the C++ Portable Components. Release 1.3.0b1 (2006-11-17) ========================== - added HashMap, HashSet classes - added Poco::Tuple - added AbstractCache::getAllKeys(), improved performance of the get operation - fixed AbstractCache::size() to do cache replacement before returning the size - added additional match() method to RegularExpression and documented the fact that the simple match() method internally sets RE_ANCHORED and RE_NOTEMPTY. - added ExpirationDecorator template. Decorates data types so that they can be used with UniqueExpireCaches - added operator ! to AutoPtr and SharedPtr - Buffer uses std::size_t instead of int - Exception::what() now returns exception name instead of message - added poco_ndc_dbg() macro (same as poco_ndc(), but only enabled in debug builds) - added Environment::get(name, defaultValue); - Foundation.h now includes Config.h at the very beginning. - added replace() and replaceInPlace() to Poco/String.h - added AutoPtr::assign() and SharedPtr::assign() - added operator () to AbstractEvent - gcc Makefiles now strip release builds - Void now has a == and != operator Release 1.2.5 (2006-10-23) ========================== - Improved LoggingConfigurator: channel creation and configuration is now a two-step process. This means that the previous problems with PropertyFileConfiguration and IniFileConfiguration when referencing other channels are solved. - improved options handling: better handling of (non) ambiguities. If both an option named "help" and one named "helper" is specified, this no longer causes ambiguity errors. - added check for duplicate option definition - ThreadPool bugfix: fixed a crash that occurs on Linux multiprocessor machines (caused by an thread unsafe string assignment corrupting the heap...) (SF# 1575315) - improved ThreadPool performance - XML now compiles with -DXML_UNICODE_WCHAR_T (SF# 1575174) - fixed SF# 1572757: HTML forms can have more than one key/value pair with the same name - got rid of the dynamic casts in Events, Events/Cache: simpler/faster Delegate < operator, prevents some rare dynamic casts error from occuring when using StrategyCollection with Caches - improvements to Logger and LoggingConfigurator: * added Logger::unsafeGet() * added Logger::setProperty(loggerName, propertyName, value) * LoggingConfigurator now correctly (re)configures existing Loggers (prior to this change, if a Logger named "a.b.c" existed before the LoggingConfigurator started its work, and the LoggingConfigurator configured a Logger named "a.b", then "a.b.c" would not inherit the new configuration). - improvements to SplitterChannel and EventLogChannel configuration - improved LoggingRegistry exception messages - MessageHeader::read() is more liberal with malformed message headers. This fixes problems with certain network cameras sending malformed HTTP headers. Release 1.2.4 (2006-10-02) ========================== - some code beautifying and improvements to comments - DOMParser now automatically sets FEATURE_NAMESPACE_PREFIXES - fixed SF #1567051: DOMBuilder/DOMParser/NamespaceStrategy bug - fixed SF #1567364: POCO_APP_MAIN - added Document::getElementById() (two-argument) and getElementByIdNS() - added another test for DOMParser - added AutoPtr::isNull() (to be consistent with SharedPtr) - this release again compiles on PA-RISC HP-UX systems with aCC - added CMAKE support files contributed by Andrew J. P. Maclean Release 1.2.3 (2006-09-14) ========================== - configure script now checks if (auto)selected configuration is supported - fixed SF #1552904: NamedEvent bug? - fixed SF #1552787: POCO not handling EINTR - fixed SF #1552846: Random::~Random uses scalar delete - fixed SF #1552987: TLSSlot should explicitly default-construct _value - IPAddress no longer accepts an empty address string - split up Observer.h into AbstractObserver.h and Observer.h - added NObserver class template which supports an AutoPtr argument for the notification callback - changed EchoServer sample to use NObserver - some Windows-specific files were missing in the tarballs Release 1.2.2 (2006-09-01) ========================== - fixed SF # 1549973: NotificationCenter::hasObservers() returns wrong result - fixed a memory leak in EchoServer sample - fixed SocketReactor TimeoutNotification bug (SF #1549365, SocketNotifier::addObserver() incorrect behavior) - fixed SF# 1549513: MultipartReader does not work with Unix-style linefeeds - MailMessage and HTMLForm: processing of multipart messages will no longer fail if a PartHandler does not read all data from the part stream. - added additional test case (Unix-style line ends) to MultipartReaderTest Release 1.2.1 (2006-08-29) ========================== - fixed Config.h header (no more #undefs) Release 1.2.0 (2006-08-29) ========================== - DateTime fixes: Julian Day is no longer stored internally. Times (hours, minutes, seconds, ...) are now always taken from an utcValue (if available) and not from the Julian day. The Julian day is only used for calculating year, month and day (except when the Julian day is the only thing we have) This helps us get rid of rounding errors that the Julian Day arithmetic introduced.- on Windows, UUIDGenerator no longer uses Netbios, but GetAdaptersInfo instead - The main Makefile now has correct dependencies - updated poco-doc.pl with latest version by Caleb Epstein - fixed SF #1542722: InflatingInputStream: buffer error - improved Windows UTF-8 support - added Logger::names() - added configure script and make install target - XMLWriter bugfix: pretty-print bug with characters() and rawCharacters() - improvements to build system: support builds outside of source tree - added header doc conversion tool contributed by Caleb Epstein - fixed SF #1542618 (build/config/Linux patch) - bugfix: BinaryReader/BinaryWriter BOM is now 16 bits, as documented - fixed SF #1542247 (Compiler warning from OptionCallback) - fixed SF #1542253 (ServerApplication::handleOption doesn't call Application::handleOption) - added Application::stopOptionsProcessing() - updated samples - Util::Application command line handling now supports: * argument validation (Option::validator(); see Validator, IntValidator, RegExpValidator) * binding of argument values to config properties (Option::binding()) * callbacks for arguments (Option::callback()) * checking of required parameters - changed header file locations: Foundation headers are now in Poco (#include "Poco/Foundation.h") XML headers are now in Poco/XML, Poco/SAX and Poco/DOM (#include "Poco/XML/XML.h") Util headers are now in Poco/Util (#include "Poco/Util/Util.h") etc. Unfortunately, this change will break existing code. However, fixing the code is a matter of a few global search/replace operations and can be done quickly. On the plus side, POCO is now a much better citizen when used with other libraries. - changed namespaces: Foundation is now Poco XML is now Poco::XML Util is now Poco::Util Net is now Poco::Net - removed namespace macros - fixed some warnings reported by gcc -Wall -Wextra - fixed AutoPtr and LayeredConfiguration documentation - improved StreamSocket::receiveBytes() doc - added Pipe and PipeStream classes - added support for I/O redirection (pipes) to Process::launch() - added LogStream class (ostream interface to Logger) - improved Makefiles (no more double-building if clean all is specified) - added CppUnit and DateTime testsuite contributions by Andrew Marlow - improved Cygwin and minimal MinGW support - FileChannel: gzip compression if archived files now runs in a background thread (SF #1537481) - POCO now compiles with large (64-bit) file support on Linux (SF #1536634) - added format() function, which provides typesafe sprintf-like functionality (SF #1327621) - added File::isLink() - bugfix: dangling symbolic links in a directory no longer cause recursive remove to fail with file not found error - added Void class (useful as argument to ActiveMethod) - ActiveResult now supports exceptions - bugfix: Timezone::utcOffset() and Timezone::dst() returned wrong values on Unix platforms (SF #1535428) - added ActiveDispatcher class - added ActiveStarter class, which is a policy used by ActiveMethod for starting methods - ActiveRunnable moved to its own header file - ThreadPool: added startWithPriority(), which allows for running threads with a different priority - added error handling to dir sample - added additional test case to HTTPServer test suite- HTMLForm: should now work with request methods other than POST and GET (all non-POST requests are treated the same as GET) - clarified HTMLForm documentation - HTMLForm bugfix: uploaded files no longer end up in value; PartHandler is called instead - NameValueCollection: added get(name, defaultValue) - added HTTPFormServer sample - added Foundation::HashTable and SimpleHashTable - added Net::HTTPSessionFactory - improvements to AutoPtr and SharedPtr - improvements to namespaces handling in XMLWriter - Foundation Cache: fixed add implementation to match the docu: a 2nd add will now simply overwrite existing entries - added DateTime::isValid() - added Exception::rethrow() (virtual, must be overridden by all subclasses) - Timer can now use a user-supplied ThreadPool - added rethrow() to exception classes - Net: made some constructors explicit - Net: added SocketAddress constructor to HTTPClientSession - Net: added HTTPSession::networkException() to check for exceptions swallowed by stream classes - Net: added single string argument constructor to SocketAddress. - Net: improved HTTPClientSession error handling (no more "Invalid HTTP version string" exceptions when the server prematurely closes the connection due to too much load) - Net: improved HTTPSession error handling. Exceptions while sending and receiving data are stored for later retrieval and no longer get lost since streambufs swallow them. - Net: added HTTPLoadTest sample - fixed a bug when opening logfiles on Unix platforms causing an existing logfile to be truncated - bugfix: log file purge intervals given in months did not work, due to a stupid typo - added RawSocket and ICMP classes - UUID: fixed a doc formatting bug - NetworkInterface::list() now includes loopback interface on Windows (SF #1460309) - made Exception::message() and Exception::nested() inline - added Net::UnsupportedRedirectException - HTTPStreamFactory throws an UnsupportedRedirectException if it encounters a redirect to https - HTTP: fixed bad 100 Continue handling in client and server code - added CONTRIBUTORS file Release 1.1.2 (2006-07-07) ========================== - Changed license to Boost license - DBlite and NetSSL have been removed from the Boost-licensed release. Please contact Applied Informatics (info@appinf.com) if you're interested in them. Release 1.1.1 (2006-04-03) ========================== - NetSSL_OpenSSL now supports separate certificate verification settings for client and server. - fixed SF #1460309 (enumerating network interfaces failed on 64bit Linux) - TCPServer no longer crashes if accept() fails Release 1.1.0 (2006-03-23) ========================== - events no longer require awkward += new syntax - source code and documentation cleanups - basic support for new compilers and platforms Release 1.1b2 (2006-03-04) ========================== - made NetSSL threadsafe (added locking callbacks for OpenSSL) - improved OpenSSL initialization (random generator seeding) - various changes to improve compatibility with various platforms Release 1.1b1 (2006-03-03) ========================== - New Events package in Foundation. The package supports C#-style event handling - New Cache package in Foundation: a templates-based caching framework - added Any class to Foundation - added DBLite library - fixed a memory leak with layered configurations in the application - made POCO_DLL the default (unless POCO_STATIC is #defined) It is no longer necessary to specify POCO_DLL in projects that use Poco (SourceForge Patch #1408231 and Feature Request #1407575). - added Buffer template class to Foundation - added the UnicodeConverter utility class. This is mainly used for Windows Unicode support and probably of little use for anything else. - added Path::resolve() - added Windows Unicode support. This calls the Unicode variant of the Windows API functions. For this to work, all strings must be UTF-8 encoded and POCO_WIN32_UTF8 must be defined in all compilation units. - added StreamCopier::copyToString() - added URIStreamOpener::unregisterStreamFactory() and new variants of URIStreamOpener::open() that also work with filesystem paths. This fixes SourceForge Bug #1409064 and Feature Request #1409062. - added NodeIterator::currentNodeNP() to XML library - added some sanity checks to UTF8Encoding::convert() - added NetSSL - SSL support for Net library, based on OpenSSL - console output of processes launched with Process::launch() is now visible Release 1.0.0 (2006-01-19) ========================== - removed unnecessary console output from ProcessTest - documentation fixes Release 1.0b2 (2006-01-16) ========================== - added ProcessHandle class - Process::launch() now returns a ProcessHandle instead of a process ID. This fixes a potential problem on Windows with Process::wait() when the process terminates before wait() is called. - added SplitterChannel::close() - added Logger::destroy() - added POP3ClientSession::deleteMessage() - added test for Process::launch() - documentation fixes Release 1.0b1 (2006-01-09) ========================== - improved recognition of Windows paths in Path::parseGuess() - added setCurrentLineNumber()/getCurrentLineNumber() to CountingStreamBuf - improvememts to StreamTokenizer and Token; fixed documentation - added a workaround for some strange istream behaviour with VS 2005 and FTPClientSessionTest - improved exception/error reporting in cppunit - added POP3ClientSession - added Process::launch() and Process::wait() - added Mail sample - added MailStream and SMTPClientSession classes - renamed some methods in DialogSocket to make them more general - NullPartHandler has moved out of HTMLForm.cpp into a separate file - Base64Encoder now always writes \r\n line ends - MessageHeader::quote has an optional addition arg controlling the treatment of whitespace - bugfix: MultipartReader had a problem with empty lines (\r\n sequences) in a part - added MailMessage and MailRecipient classes - added text encoding support for Windows-1252 codepage Release 1.0a1 (2006-01-03) [internal] ===================================== - mediaType is used consistently to refer to a MIME media type (some occurences of contentType and mimeType have been replaced) - moved MediaType::quote() to MessageHeader and made it public - added MultipartWriter::stream() - Renamed AttachmentSource to PartSource and AttachmentHandler to PartHandler - SIGPIPE is always blocked in main thread on Unix systems - added EchoServer sample - fixed a bug in SocketImpl::setBlocking() - did exactly the opposite (value to ioctl was wrong) - fixed a memory leak in NotificationQueue sample - added comparison operators to Socket so that Sockets can be used as keys in maps - added Socket::setBlocking() - added StreamSocket::connectNB() (non-blocking connect) - added Observer::accepts() - added SocketReactor, SocketConnector and SocketAcceptor classes to support event-based socket programming - NamespacePrefixesStrategy now uses expat's XML_SetReturnNSTriplet(). The previously used separate namespace handling code has been removed. This improves performance if NamespacePrefixesStrategy is used (both the n amespaces and namespace-prefixes SAX2 features are used) - upgraded expat to 2.0 pre-release (2005-12-27) snapshot - added TeeInputStream and TeeOutputStream classes - added download sample for URIStreamOpener - renamed registerOpener() to registerFactory() in HTTPStreamFactory and FTPStreamFactory - added LineEndingConverter streams - added FTPClientSession - code and documentation clean-up - added DialogSocket class - reorganized HTTP test suites - added FTPClientSession and FTPStreamFactory - added DialogSocket class Release 0.96.1 (2005-12-28) =========================== - fixed a memory leak caused by a bug in Microsoft's stream implementation (see the comment in Foundation/StreamUtil.h for an explanation) - added samples for Net library - added uptime() and startTime() to Util::Application - added DateTimeFormatter::format() for Timespan - added ErrorHandler class and better exception handling for threads - added poco_debugger() and poco_debugger_msg() macros - added project and solution files for Visual Studio 2005 (due to some bugs/leaks in Microsofts standard library - see http://lab.msdn.microsoft.com/productfeedback/viewfeedback.aspx?feedbackid=e08bd793-3fef-40ff-adda-ed313e0eafcc we do not recommend using this for production purposes) - fixed two problems with out-of-range string iterator in Path (the testsuite triggered an assertion in VC++ 8.0) - fixed mac line endings in a few files - added a workaround to the class loader that fixes strange behavior with VC++ 8.0. There seems to be a problem with typeid() not returning a valid typeinfo under certain circumstances. - added buffer allocator argument to buffered stream buffer templates - added buffer pools to HTTP to reduce memory fragmentation and to improve performance - added Net to Windows build.cmd script - added swap() to various classes that already support assignment - added a null pointer check in DOMWriter::writeNode() - fixed documentation in BinaryWriter.h and BinaryReader.h - added explicit support for network byte order to BinaryReader and BinaryWriter - added basic support for FreeBSD (needs more testing) - BinaryReader: renamed readRawData() to readRaw() to be consistent with BinaryWriter::writeRaw() - added support for uppercase output to HexBinaryEncoder. - added MediaType class - added QuotedPrintableEncoder and QuotedPrintableDecoder classes - renamed ObjectFactory to Instantiator. This should prevent the confusion caused by DynamicFactory and ObjectFactory. Sorry for the inconvenience if you are already using this. - AttachmentSource::filename() now returns const string& - added StringAttachmentSource - replaced old-style C casts with C++ casts in NetworkInterface.cpp - MutexImpl (WIN32): replaced InitializeCriticalSection with InitializeCriticalSectionAndSpinCount, which should increase performance on multiprocessor or multicore systems when many locks are used. - fixed a problem with STLport 5.0 when compiling StreamTokenizer - HTTPStreamOpener now also works with no-path URIs (like http://www.appinf.com) - fixed wrong delete usage (plain delete instead of delete [] was used in a few cases) - fixed a handle leak in WinTestRunner Release 0.95.4 (2005-11-07) =========================== - fixed #1348006 and #1348005 Release 0.95.3 (2005-10-28) [internal] ====================================== - updated build scripts (patch #1339015) - added support for AMD64 platforms (patch #1339015) - MultipartWriter creates its own boundary if an empty string is passed in as boundary - made MultipartWriter::createBoundary() public - fixed wrong documentation for DateTimeFormat::HTTP_FORMAT - added support for HTTP Basic authentication - added support for HTTP Cookies - added support for HTML forms Release 0.95.2 (2005-10-22) [internal] ====================================== - fixed a potential problems with streams when close in destructor fails (added try..catch block around close in destructors) - added HTTPServer & friends - added hasIdleThreads() method to NotificationQueue - added TCPServer and friend - added support for HTTP proxies to HTTPClientSession and HTTPStreamOpener - fixed documentation bugs (Mutex.h, ClassLoader.h) Relesae 0.95.1 (2005-10-15) [internal] ====================================== - Tasks can now throw custom notifications (contributed by Alex Fabijanic) - renamed URIFileStreamFactory to FileStreamFactory - added a few methods to URI (setPathEtc(), getPathEtc(), getPathAndQuery()) - added new exception classes - fixed some documentation - added basic checks when reading a MessageHeader from a stream - added HTTP classes (testsuite still incomplete) - added MessageHeader, NameValueCollection, MultipartReader and MultipartWriter classes - added Timespan::useconds() - added ClassLoader::isLibraryLoaded() - Socket classes use Timespan::useconds() to fill struct timeval - added DatagramSocket, MulticastSocket and NetworkInterface classes - added socket classes and related basic stuff - added additonal constructor/assign to Timespan- added BasicBufferedBidirectionalStreamBuf - fixed a potential MT issue in Base64Decoder - code beautifying in [Un]BufferedStreamBuf - more improvements to ClassLoader - code cleanup and naming convention fixes (changed all *Imp classes to *Impl for consistency) Release 0.94.1 (2005-09-30) [internal] ====================================== - added MetaSingleton (based on a contribution by Alex Fabijanic) - added ClassLoader::create() - added ClassLoader::instance() - code clean-ups in FileChannel and related classes - added SimpleFileChannel - RotateAtTimeStrategy: ::getNextRollover() rewritten (buggy) - DateTime microseconds assert corrected asserts in computeGregorian() (except for year - see comment in computeGregorian()) milliseconds calculation modified in computeGregorian() microseconds assigned in computeGregorian() normalize() and checkLimit() private functions to correct cases of overflow for milli/microseconds - LocalDateTime: added timestamp() method - FileChannel: added "times" property (used to determine whether to use UTC or local time with RotateAtTimeStrategy) ::setProperty() modified (whenever "times" property is set, methods setRotation and setArchive are reinvoked to reflect the change) - FileChannel: added support for archived file compression and archived file purging - FileChannel tests modified - FileChannel: put LogFile, RotateStrategy and ArchiveStrategy into their own files - Message: added thread id field - PatternFormatter: added %I specifier for thread id - ThreadPool: PooledThread can be assigned a name - TaskManager: task name is reflected in thread name - fixed LocalDateTime::operator - (const Timespan&) [#0000004] - upon startup all loggers' channels are set to a console channel - improved search for application configuration files (see loadConfiguration()). - added Glob class (fixes #1249700) - upgraded to zlib 1.2.3 (fixes #1261712) - added Logger::dump() - fixed a wrong condition in Logger::log(const Message&) - Path::find() now also works with relative paths in addition to plain file names - added Path(const Path&, const Path&) constructor - added SharedPtr template - added Path::tryParse() - SAXParser::parse()/EntityResolverImpl now works for both URIs and local filesystem paths (fixes #1254812) Release 0.93.1 (2005-08-01) =========================== This release contains various new features, improvements and bugfixes: - bugfix: UUIDGenerator throws an exception if no connected ethernet adapter can be found (and thus no MAC address can be obtained) - added UUIDGenerator::createOne() method - added error handling to UUID sample application - added relational (==, !=, <, <=, >, >=) and arithmetic operators (+, -, +=, -=) to DateTime - added LocalDateTime class - added support for LocalDateTime to DateTimeParser and DateTimeFormatter - added enqueueUrgentNotification() to NotificationQueue - added support for timezone specifiers (%z, %Z) to PatternFormatter - added [] operator and count() to StringTokenizer - added elapsed() and isElapsed() to Timestamp - added tzd() to Timezone - added WinRegistryKey and WinService classes (Windows only) - added index operator and count() to StringTokenizer - added day/time-based log rotation (thanks to Alex Fabijanic), minor improvements to DateTimeParser - support for Mac OS X 10.4/gcc 4.0.0 - added NamedMutex and NamedEvent - added Process::kill() - added NoPermissionException - added Task and TaskManager classes - added ServerApplication class - bugfix: EventLogChannel - _logFile was not properly initialized in one constructor - bugfix: File::createDirectories did not work for hierarchies deeper than three - added Util::FilesystemConfiguration - documented logging policy: log() must open channel if it hasn't been opened yet - FileChannel::log() opens channel if necessary - the application reference passed to initialize() and reinitialize() is no longer const - improved application logging initialization - fixed a problem with configuration view and property placeholders - fixed Util build configuration for Visual Studio - improved application samples - fixed documentation for Semaphore class Release 0.92.1 (2005-05-09) =========================== This release introduces the Util library that provides support for configuration file parsing (different file formats), command line argument processing, logging configuration and a framework for command line/server applications. There have also been various changes to the Foundation library: - a new RefCountedObject class that acts as a base class for various classes that use reference counting - some missing members have been added to the AutoPtr template - various improvements and bugfixes to the Logging framework, as well as new LoggingFactory and LoggingRegistry classses, and a NullChannel class - the SignalHandler class (Unix platforms only) - ObjectFactory and DynamicFactory template classes - the Path::find method for searching a file in a list of directories - various new Exception classes Release 0.91.4 (2005-04-11) =========================== This is mainly a maintenance release that adds support for QNX Neutrino and OpenVMS. There are also minor bugfixes and improvements. The Unix build system has been modified to work on QNX Neutrino. The OpenVMS build system has been fixed and works now. Some missing #include's have been added for QNX Neutrino. Foundation/String.h: icompare now supports comparison with const char*; the classic C version of isspace() has been used in a few places instead of the C++ version, this has been fixed. Foundation/Exception.h: IllegalStateException added. Release 0.91.3 (2005-03-19) =========================== This is a maintenance release that adds support for Solaris/Sun Forte C++. No new features have been added. An implementation of FPEnvironment for Solaris has been included. All stream classes have been modified to work around an initialization problem that surfaced with Sun's C++ compiler when using STLport. Source-code compatibility with the previous release is not affected. Various minor changes, mostly adding missing #include's for Solaris. Release 0.91.2 (2005-02-27) =========================== Minor improvements to the Unix build system. No actual changes in the libraries. Release 0.91.1 (2005-02-21) =========================== This is the first public release of the C++ Portable Components. The release does not contain all features planned for the later 1.0 release (the NET library is missing, for example), but is already quite usable. Please refer to the README file for more information and instructions for building the libraries. -- $Id: //poco/1.3/dist/CHANGELOG#1 $