Updated Qore to 0.8.9.
Removed patches/patch-include_qore_common.h since this fix is addressed in Qore 0.8.9.

New Features in Qore

    CsvUtil module updates:
        new classes:
            CsvAbstractIterator: base abstract iterator class for iterating line-based CSV data
            CsvDataIterator: iterator class allowing for CSV string data to be processed line by line on a record basis
            AbstractCsvWriter: a base class for new CSV writer implementations
            CsvFileWriter: CSV file writer class
            CsvStringWriter: CSV in memory writer class
        implemented support for allowing subclasses of CsvFileIterator to implement support for other custom types
        no need to set "headers" in the constructor if "fields" are set; headers are assumed to be the field labels in the same order
    added the Qore::encode_url() function with RFC 3986 section 2.1 compliance
    Qore::decode_url() function updated to decode UTF-8 encoded characters according to RFC 3986 section 2.1
    added get_byte_size() and get_marketing_byte_size() to the Util module
    the error message now includes the module path used for the search when a module cannot be found in the module path
    DatasourcePool enhancements:
        new method: DatasourcePool::clearWarningCallback()
        new method: DatasourcePool::setWarningCallback()
        new method: DatasourcePool::getUsageInfo()
        new method: DatasourcePool::setErrorTimeout()
        new method: DatasourcePool::getErrorTimeout()
        new method: DatasourcePool::setEventQueue()
        new method: DatasourcePool::clearEventQueue()
        the new methods allow for monitoring DatasourcePool objects for pool contention issues (in case the pool needs to be resized), for throwing an exception if a connection is not acquired within the error timeout period (new default: 2 minutes), and for DBI drivers to raise warnings on an event queue that can be monitored in a separate thread
        additionally connection acquisition statistics are tracked and returned in DatasourcePool::getUsageInfo() (total requests, hits, maximum wait time)
    Datasource enhancements:
        new method: Datasource::setEventQueue()
        new method: Datasource::clearEventQueue()
        the new methods allow for DBI drivers to raise warnings on an event queue that can be monitored in a separate thread
    Socket enhancements:
        new method: Socket::setWarningQueue()
        new method: Socket::clearWarningQueue()
        new method: Socket::getUsageInfo()
        new method: Socket::clearStats()
    FtpClient enhancements:
        new method: FtpClient::setWarningQueue()
        new method: FtpClient::clearWarningQueue()
        new method: FtpClient::getUsageInfo()
        new method: FtpClient::clearStats()
    SmtpClient module updates:
        optimized connection and login code; HELO/EHLO and authorization are performed when connecting only, not before each email
        added support for socket performance instrumentation and warning events
    Pop3Client module updates:
        added support for socket performance instrumentation and warning events
    TelnetClient module updates:
        added support for socket performance instrumentation and warning events
    WebSocketClient module updates:
        added support for socket performance instrumentation and warning events
    RestClient module updates:
        use the new Qore::encode_url() function to encode URL paths to ensure that valid requests are sent when spaces, percent characters, and non-ascii characters are used in the URL path
        set the character encoding in the Content-Type request header when sending strings
        set the Accept header correctly in requests (previously only indicated yaml ("text/x-yaml") as an acceptible response encoding)
    RestHandler module updates:
        added support for the OPTIONS method
        return a 400 "Bad Request" error if an unsupported HTTP method is used in a REST Call
    added new UpsertInsertOnly upsert strategy to SqlUtil
    new pseudo-methods:
        <value>::sizep(): returns True if the type can return a non-zero size (True for containers including binary objects and strings, False for everything else)
        <string>::getLine(): finds lines in a string buffer
    Mime.qm module updates:
        added mime type for WSDL files ("application/wsdl+xml")
        added mappings for "xls" and "xlst" extensions to MimeTypeXml
    added new modules:
        Mapper: data mapping module
        TableMapper: data mapping module using SqlUtil and Mapper to map to an SQL table target
    the %include parse directive now supports environment variable substitution at the beginning of the file path

Bug Fixes in Qore

    fixed a crashing bug when HTTP messages with duplicate Connection, Content-Encoding, Transfer-Encoding, Location, or Content-Type headers is received
    fixed a bug parsing octal character constants in the lexer when octal digits followed the octal constant (ex: "\0441" where the "1" would cause an error)
    allow escaping "$" character in regular expression substitution target strings, previously it was impossible to output a literal "$" + a digit, since this would be interpreted as a numbered input pattern expression
    fixed a bug in the HTTPClient::getURL() and HTTPClient::getProxyURL() methods where the URL's path was not given with a leading "/" character
    CsvUtil module fixes:
        fixed "date" field handling with empty input (now maps to 1970-01-01)
        fixed CsvDataIterator::next() when header_lines > 0 and working with empty input data
    added support for compiling on OSX Mavericks
    fixed an infinitely recursive call in Table::del() in SqlUtil
    fixed a bug in v*printf() where '%' was not handled correctly in all cases
    fixed bugs in microseconds and milliseconds() with large arguments
    fixed a bug where a call to a call reference to a static method across a program boundary with local variables as arguments would cause a crash due to improper setting of the program context before the arguments are evaluated
    fixed a bug in Datasource::copy() method where implicitly-set options were not carried over into the new object
    fixed a bug in the DatasourcePool class where implicitly-opened connections would not be guaranteed to have the same server time zone setting as the initial connections (for example, could cause problems with server timezone settings if running in a program context with a different local time zone attribute)
    fixed bugs in SqlUtil generating "create table" and "align table" SQL with DBs where unique indexes automatically create unique constraints (ex: MySQL)
    fixed a bug in lchown() where chown() was used interally instead of lchown()
    fixed a bug in PgsqlSqlUtil retrieving sequence values with Database::getNextSequenceValue()
    fixed an off-by-one memory bug in Qore::date(string, string) parsing a 4-digit date mask
    fixed memory leaks in class member and class static variable management
    fixed memory leaks when an entire class has to be rolled back due to parse errors and the class has pending static variables
    fixed memory leaks in constant handling with values containing call references
    fixed a memory leak in constant destruction with parse rollbacks when the constant value was NULL
    fixed an error in the rounding heuristic for arbitrary-precision numeric values that could produce invalid results (ex: 34.9n * 100 = 34902n)
    enforce PO_NO_FILESYSTEM with the %include directive
    fixed a bug managing object private data in complex inheritance cases where the same class may be inherited with virtual private data and also real private data
    fixed a bug in socket timeout handling with select() errors
    fixed a memory leak in handling abstract methods when multiple abstract methods with the same name but different signatures were declared in a class