New in version 0.8.8
October 5th, 2013
- This version contains new features focusing on improved HTTP support (better HTTP RFC compliance, REST and WebSocket client and server support, support for automatic rendering of templated HTML files, etc.), a new very high level database API for automated schema management and SQL data operations (including programmatic DB access), much improved UTF-8 support, and many new user modules.
- The release also contains many enhancements to existing functionality and scores of bugfixes.
- Qore is now available under the GPL 2, LGPL 2.1, and MIT licenses.
New in version 0.8.7 (February 25th, 2013)
- This version adds lots of new features and bugfixes.
- Code inheritance between Program objects has been greatly improved, and declarations tagged as public are now inherited by default in child Program objects.
- Lots of new functions, methods, and type (pseudo) methods have been implemented, particularly to make iterators more powerful and to make developing iterators easier.
New in version 0.8.6.1 (November 10th, 2012)
- This release includes bugfixes for Qore and also includes some minor new features.
New in version 0.8.6 (October 27th, 2012)
- This version adds major new features and also contains many bugfixes.
- The highlights of this release are the new arbitrary-precision numeric support, much improved support for iterators, much improved support for text file processing, improved database API support, including an option API for database drivers, and the ability to handle module loading errors at parse time directly in Qore source code.
- Perl compatibility was improved due to the new default intuitive Boolean context evaluation behavior.
New in version 0.8.5.1 (September 25th, 2012)
- fixed a race condition accessing global and closure-bound thread-local variables in multithreaded contexts
- fixed a bug in transaction management with the DatasourcePool class when used with the SQLStatement class
- fixed an error in the MailMessage.qm user module where mail headers requiring encoding were not encoded and those not requiring encoding were encoded with Q encoding
- fixed an error in the Mime.qm user module where "_" characters in q-encoded headers were not encoded correctly
New in version 0.8.4 (May 29th, 2012)
- This major update adds support for user modules, where modules that extend the language at runtime can now be written in Qore itself.
- Additionally, Qore now supports pseudo-classes bound to value types, which provide methods that can be run on any Qore value, allowing any value to be treated as an object.
- Namespace handling was rewritten, and is now more consistently applied and more comprehensive.
- The language documentation has been greatly improved.
- This release contains many bugfixes and optimizations, as well as build fixes and many new functions, methods, and constants.
New in version 0.8.3 (October 18th, 2011)
- This version supports building native Windows binaries and other minor enhancements (including conditional parsing).
- Additionally, 33 bugs have been fixed.
New in version 0.8.1 (December 27th, 2010)
- This version includes 36 bugfixes and major new features including a much improved type system, class constants and static class variables, an SQL prepared statement API, support for declaring return types before the function or method signature, parser and name resolution support for writing Qore scripts without "%CONTENT%amp;quot; signs for variables or class method calls or object member references, and much more.
New in version 0.7.5 (July 13th, 2009)
- 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
- 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: NULL values are 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 element, as it could potentially break some implementations (the XML-RPC spec is not very clear on this). Note: we send empty value elements: 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 '
- ' and '
' 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(): for future support for non-blocking writes + Socket::setNoDelay(): 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