Monday, 07 December 2009 19:57
David Nichols
RELEASE NOTES for qore v0.7.7release summary: 15 bug fixes from 0.7.6 - BUG FIX: fixed a bug where taking a slice from an object could return private members when called outside the class (backported from trunk)
- BUG FIX: fixed a bug making a hash slice where the character encoding was not ensured to be QCS_DEFAULT before trying to match key names (backported from trunk)
- BUG FIX: fixed a bug returning the last builtin data type ID; affects qore modules that implement new builtin types (ex qt module, qt4 module)
- BUG FIX: fixed a reference counting bug in callObjectMethodArgs() that could lead to a crash if a list is passed as the 3rd argument
- BUG FIX: fixed a bug executing builtin functions if an exception is raised when evaluating the arguments (the function was erroneously executed)
- BUG FIX: fixed a bug in the FtpClient class that caused the connection to never get established
- BUG FIX: fixed a bug when a builtin class tries to access private data of an object that's already been deleted; now an appropriate exception is thrown; previously it would silently fail
- BUG FIX: fixed examples/WSDL.qc de/serializing "int" and "short" from negative numbers
- BUG FIX: removed an extraneous reference and dereference in objects when launching new threads in objects (slightly better performance launching new threads in objects)
- BUG FIX: fixed a rare race condition in object constructors when an object launches threads in the object and then the constructor throws an exception afterwards
- BUG FIX: fixed handling in the Datasource and DatasourcePool classes when auto-reconnects fail (connection aborted handling) - now the Datasource class tags the connection as aborted and closes the connection when Datasource::connectionAborted() is called by the DBI drivers, and the DatasourcePool class correctly returns the Datasource to the pool. Additionally, the Datasource class will not execute any action on the Datasource once the connection has been aborted. The flag is cleared when the connection is opened again.
- BUG FIX: fixed memory leaks in parse exceptions with static method call references (backported from 0.8.0/trunk)
- BUG FIX: detected erroneous variable list declarations like: our (my $x, ...) or my (our $x) and throw a parse exception (backported from 0.8.0/trunk)
- BUG FIX: fixed a harmless bug in the C++ class TempEncodingHelper to remove a message from valgrind (backported from 0.8.0/trunk)
- BUG FIX: fixed memory bug in the C++ class CryptoHelper - removed unnecessary and incorrect string termination code (backported from 0.8.0/trunk)
|
Tuesday, 03 November 2009 16:02
David Nichols
RELEASE-NOTES for Qore 0.7.6 release summary: 32 bug fixes and major new features over 0.7.5 - BUG FIX: updated is_writable() and is_readable() to always return True if called by effective UID 0 (root)
- BUG FIX: fixed a race condition in deleting objects by marking objects atomically as inside destructor
- BUG FIX: updated sleep() to continue sleeping for the remaining time if interrupted by a signal
- BUG FIX: changed decompression routines to a string to preserve binary data, especially trailing nulls
- BUG FIX: fixed C++ QoreString constructor when taking ownership of a string buffer to ensure that the buffer is null terminated when the allocated buffer is exactly equal to the string length
- BUG FIX: fixed scanner to ignore quoted text in comments (i.e. "*/" will be ignored)
- BUG FIX: updated the Socket class implementation to retry connect(), accept(), recv(), send(), and select() (Socket::isDataAvailable(), Socket::connect() with timeout, etc) if interrupted by a signal
- BUG FIX: updated the File class implementation to retry read(), write() and fcntl() with F_SETLKW (File::lockBlocking()) if interrupted by a signal
- BUG FIX: fixed set_signal_handler() to accept a closure as per the documentation
- BUG FIX: fixed internal C++ library function test_funcref_param() to return a value for call references and closures
- BUG FIX: fixed broken access to private members of an object outside the class; before it was possible to delete and reassign private members from outside the class which should have been illegal
- BUG FIX: fixed a crashing bug in the File::open2() method
- BUG FIX: fixed class method registration so that static method names and non-static method names have independent namespaces (i.e. a static method may now have the same name as a non-static method). Static methods may still be called with normal method call syntax, however if there is a non-static method with the same name, then it will be called instead.
- BUG FIX: when an HTTP header is received more than once, return all values as a list under the header name in the resulting hash
- BUG FIX: fixed a potential race condition that could cause a crash in very rare circumstances in internal C++ QoreClass::numMethods() and QoreClass::numStaticMethod() functions; to make a crash a program would have to be running and parsing new code into the program in a separate thread as well; this is explicitly supported by Qore, but very rarely done
- BUG FIX: fixed an XML-RPC parsing bug caused by a side-effect in a debugging statement
- BUG FIX: fixed a bug setting the character encoding in strings produced with makeXMLFragment() and makeFormattedXMLFragment() when the default character encoding is not UTF8
- BUG FIX: fixed concatentation of strings with embedded nulls
- BUG FIX: fixed split() to work on strings with embedded nulls
- BUG FIX: fixed method resolution for in-object method calls when the target method is static
- BUG FIX: fixed a crash in parsing when a class with no parent classes references a base class method of an existing class
- BUG FIX: fixed static method calls at the top level of a program
- BUG FIX: fixed type comparisons with new qore types implemented in external modules
- BUG FIX: fixed configure to ensure compiling in 32-bit mode on Darwin/OSX if 32-bit mode is selected
- BUG FIX: fixed configure to assume 64-bit mode by default on Darwin 10 (OSX Snow Leopard)
- BUG FIX: fixed $ARGV and $QORE_ARGV variables to always be of type list as according to the documentation
- BUG FIX: fixed Socket::connect() with timeout (affects all classes using sockets for communication
- BUG FIX: fixed DatasourcePool handling when a driver-handled auto-reconnect fails (previously would cause a crash)
- BUG FIX: added QDOM_TERMINAL_IO to TermIOS class (previously this class would be available even if PO_NO_TERMINAL_IO was in force)
- BUG FIX: fixed a bug parsing XML-RPC array data with empty value elements; i.e.: <value/>
- BUG FIX: fixed a bug waiting on a Condition variable when thread read lock is held by multiple threads (for RWLock)
- BUG FIX: fixed a bug calculating the time offset for waiting on a Condition object
- BUG FIX: fixed millisecond formatting using "ms" with format_date()
- BUG FIX: fixed a crashing bug when a Condition object waits on a RWLock with the read lock held
- BUG FIX: fixed a bug setting the exception location when throwing thread resource exceptions when shutting down the qore library
- NEW FEATURE: added XmlDoc, XmlReader, and XmlNode classes for more robust XML parsing and document iteration
- NEW FEATURE: added support for validation with RelaxNG schemas: new functions: parseXMLWithRelaxNG() and parseXMLAsDataWithRelaxNG() as well as new method: XmlDoc::validateRelaxNG()
- NEW FEATURE: added a new binary_to_string() function to convert a binary object directly to a string type
- NEW FEATURE: implemented binary object concatentation with the + and += operators
- NEW FEATURE: the -= operator now operates on objects (with string and list operands) like it does with hashes
- NEW FEATURE: added static method TermIOS::getWindowSize() to get the current terminal window size (rows and columns)
- NEW FEATURE: new C++ APIs are available supporting a generic calling convention to facilitate the development of the new Qt4 module using libsmoke; the latest module API is now 0.8
- NEW FEATURE: added the HTTPClient::isConnected() method
- NEW FEATURE: added the rename() function to rename or move files
- NEW FEATURE: case expressions now support the == operator for soft comparisons
- NEW FEATURE: updated split() to work on binary objects just like on strings, but will return a list of binary objects split by the marker
- BUILD CHANGE: minimum libxml2 version required for compiling and linking is now 2.6.0
Monday, 13 July 2009 09:31
David Nichols
RELEASE-NOTES for Qore 0.7.5 release summary: 4 bug fixes and minor new features over 0.7.4 - BUG FIX: Datasource::close() would assert() in debug mode and do nothing in non-debug mode
- BUG FIX: fixed a deadlock in running class destructor code when a member is deleted that is itself an object, and that object's destructor references the parent object
- BUG FIX: fixed a bug in the "qore" binary reporting the library's latest module API version (was using the compiled value and not the value from the library)
- BUG FIX: fixed a bug in the HTTPClient class where the connection was not flagged as closed when an error occurred that indicated that the client had closed the connection
- added a ModuleDir key to the hash output of get_qore_library_info()
- added an optional port number to datasources (i.e.: driver:user/pass@db(encoding)%host:port, updated:
- Datasource::constructor(): added support for a port argument
- Datasource::setPort(): new method
- Datasource::getPort(): new method
- DatasourcePool::constructor(): added support for a port argument
- DatasourcePool::getPort(): new method
- parseDatasource(): modified to parse the port if present
- updated module API to 0.7 supporting DBI drivers with port as a configuration option
- updated the %include directive to always search the directory of the currently-executing script first if known when looking for files without an absolute path
- added the C++ API function QoreObject::externalDelete() to handle the situation when object private data is deleted externally (needed by the QT modules)
- improved error messages in the scanner when trying to %include something that's not a regular file
Last Updated on Monday, 13 July 2009 10:01
|
Tuesday, 09 June 2009 07:05
David Nichols
RELEASE-NOTES for Qore 0.7.4release summary: qore 0.7.4 contains minor feature improvements over 0.7.3 and twenty-two bug fixes - BUG FIX: fixed localtime() when called with no argument to return the current date and time as per documentation
- BUG FIX: fixed a race condition that could cause a deadlock when calling pthread_join() when Qore code calls exit() when multiple threads are running
- BUG FIX: fixed the Dir::listFiles() method; the mask used would not filter out directories
- BUG FIX: fixed crashes in the File class due to unsigned data type being used and the comparison (< 0) that signaled an error always failed; the crash would happen when a non-file object was read (such as a directory, for example)
- BUG FIX: fixed outputting recursive data structures with the %n and %N printf format specifiers (would otherwise result in a crash - for example, when an object contains a list that also contains the object, etc)
- BUG FIX: fixed object access deadlock scenarios
- BUG FIX: fixed the "-" operator with: hash-string and hash-list (also hash-=string and hash-=list) to remove the value(s) from the hash, not call the delete operator
- BUG FIX: SQL NULL values should be serialized as "null" JSON values
- BUG FIX: fixed parsing of a corner case of marginally valid XML-RPC
- BUG FIX: fixed XML-RPC serialization to handle NOTHING (no value) and NULL identically
- BUG FIX: fixed XML-RPC serialization to never output an empty <param/> element, as it could potentially break some implementations (the XML-RPC spec is not very clear on this). Note: we send empty value elements: <value/> when serializing NOTHING or NULL, which may not be correct either
- BUG FIX: do not assume that a trailing null should terminate the string when reading string data from files; include the trailing null in the string
- BUG FIX: fixed a bug parsing base64 strings when newlines and/or linefeeds trailed the base64-encoded data
- BUG FIX: fixed outputting '%%' as '%' in *printf*() functions
- BUG FIX: fixed a bug parsing hashes where the hash key was given as a constant
- BUG FIX: fixed a bug in the delete operator where shared data was being updated in place instead of copied and then updated
- BUG FIX: fixed some race conditions that could cause deadlocks with the getAllThreadCallStacks() function (not normally enabled by default)
- BUG FIX: ignore '\n' and '\r' when parsing base64-encoded strings
- BUG FIX: fixed a crashing bug when trying to copy member elements of a deleted object
- BUG FIX: fixed the foreach statement when used with a reference and the break statement is used
- BUG FIX: fixed a rare reference dependency bug where system classes were being destroyed while still referenced in user code
- BUG FIX: fixed %= with a modula operand of 0 to set the lvalue to 0 (previously the expression was ignored if the modula operand was 0)
- added the abilty for a Condition variable to wait on RWLock objects as well as Mutex objects
- dereferencing a hash or object with a list will return a slice of the hash or object as a hash: ex: $hash.("key1", "key2")
- allow %include parse directives to quote the file names (ignore leading and trailing quotes around the file name)
- new Socket class methods:
- Socket::isWriteFinished(<timeout_ms>): for future support for non-blocking writes
- Socket::setNoDelay(<boolean>): to set the TCP_NODELAY option
- Socket::getNoDelay(): returns value of the TCP_NODELAY option
- new functions to allow for explicitly specifying the encoding when serializing XML-RPC strings:
- makeXMLRPCCallStringWithEncoding()
- makeXMLRPCCallStringArgsWithEncoding()
- makeXMLRPCResponseStringWithEncoding()
- makeXMLRPCFaultResponseStringWithEncoding()
- makeFormattedXMLRPCCallStringWithEncoding()
- makeFormattedXMLRPCCallStringArgsWithEncoding()
- makeFormattedXMLRPCResponseStringWithEncoding()
- makeFormattedXMLRPCFaultResponseStringWithEncoding()
- added new HTTPClient methods for manipulating the TCP_NODELAY setting:
- HTTPClient::setNoDelay()
- HTTPClient::getNoDelay()
- now the XmlRpcClient and JsonRpcClient constructors accept an optional second argument that, when True, will inhibit the immediate connection attempt on the socket and instead allow the socket connections to be either manually established or established on demand with the first request
Last Updated on Saturday, 13 June 2009 16:58
Saturday, 14 February 2009 07:23
David Nichols
Qore 0.7.3 Release Notes release summary: qore 0.7.3 contains minor feature improvements over 0.7.2 and five bug fixes - Socket::connect() takes an optional timeout value
- HTTPClient::constructor() options takes a new option: connect_timeout (usable with the XmlRpcClient and JsonRpcClient classes as well)
- SOAP support updated in examples directory: SoapClient.qc, SoapHandler.qc, HTTPServer.qc, WSDL.qc
- added is_writable() function as a correctly-spelled alias for is_writeable()
- fixed and documented getcwd() function
- added new functions parseXMLAsData() and parseXMLAsDataWithSchema()
- BUG FIX: fixed a bug in the binary() function when converting binary strings to binary type when the strings had embedded nulls
- BUG FIX: fixed a crashing bug in the handling of GLIBC gethostbyname_r() failures; contrary to the glibc documentation, the return value is 0 even when the function fails
- BUG FIX: fixed some erroneous builds on PowerPC where processor-specific features were not built properly
- BUG FIX: fixed a bug handling GLIBC gethostbyaddr_r() failures; contrary to the glibc documentation, the return value is 0 even when the function fails
- BUG FIX: fixed a bug doing math on negative units of relative dates; invalid dates would be returned
|
|
|
|
|
|
Page 1 of 3 |