This is a bugfix release so no buildlink change.
ChangeLog:
New Features in Qore
* added broken-logic-precedence warning.
Bug Fixes in Qore
* fixed documentation regarding escaping of characters in
strings and added a parse exception in case of trying
to escape octal values in range 400-777 (issue 50)
* fixed a crashing bug where Datasource::getConfigString()
was called without a connection, also could crash in an
implicit internal call to this method with the
DatasourcePool class when connections were lost and the
warning callback should be called (issue 1992)
* fixed a bug where Datasource::getConfigHash() returned
different values depending on if the object was
connected or not (issue 1994)
Changelog from release notes:
New Features since Qore 0.8.12.4:
* added the SalesforceRestClient module for communicating with
Salesforce.com using the REST APIs
* module SqlUtil
-has support for native default values in tables
(issue 1428)
-has support for Oracle named types (eg. spatial types) for
Schema.qm and SchemaReverse.qm. (issue 1465)
Bug Fixes since Qore 0.8.12.4:
* module fixes:
-FixedLengthUtil: fixes and improvements to errors and
exceptions (issue 1828)
-HttpServerUtil: eliminated excess logging of all HTTP
chunks sent and received (issue 1832)
-PgsqlSqlUtil: fixed a bug in setting a comment for a
table column (issue 1886)
-SqlUtil: fixed a bug in the offset query hash argument
in SQL operation methods (issue 1880), fixed a bug
that prohibited only columns from the main query to be
selected when joins are used (issue 1909)
-TableMapper: fixed a bug in flush messages in the
InboundTableMapper class (issue 1849)
* fixed a bug that could cause spurious parse-time exceptions
to be thrown when matching call variants with multiple
return types for the same callable object (issue 1928)
* fixed the process return code in the output reference in
backquote() on Unix/Linux platforms (issue 1884)
* fixed a bug where connections were not immediately released
back to the DatasourcePool in case of an SQLSTATEMENT-ERROR
exception (issue 1836)
* eliminated a spurious exception in the SQLStatement class in
case of a DatasourcePool timeout (issue 1832)
* fixed a crash when the incorrect type was passed to a
parameter declared *reference (issue 1815)
* fixed a crash when the Qore library exits caused by an error
in handling module dependencies with injected modules
(issue 1805)
* fixed segfault crashes caused by calling object methods with
null pointers (issue 1791)
* added internal API support to make it easier for DBI drivers
to handle lost connections and to allow DBI drivers that must
close all open handles before a connection is closed
(such as the oracle driver); due to this change, SQLStatement
objects based on a DatasourcePool are closed automatically
whenever the datasource is returned to the pool (issue 1250)
* implemented new parse options to revert the effect of parse
options that affect code safety (issue 1895):
-%correct-list-parsing
-%correct-logic-precedence
-%correct-int-assignments
-%correct-operators
-%loose-args
* fixed parse locations of strings and regexes (issue 1905)
* fixed a memory leak where references participate in recursive
references (issue 1774)
* fixed a build issue with clang++ (issue 1768)
* fixed a memory leak in the Queue copy constructor when the
Queue was used in other objects (such as an event queue,
etc; issue 1749)
* Mapper module fixes:
-fixed bugs handling the allow_dot and allow_output_dot
options (issue 1690)
-fixed TableMapper bugs introduced in Qore 0.8.12.7
(issue 1754)
* fixed a memory leak in %try-module error handling (issue 1690)
* fixed a bug in trunc_str() when the string has an invalid
multi-byte character at the end of the string and the string
is exactly the byte width requested (issue 1693)
* fixed a bug where ReadOnlyFile::getchar() did not respect
character semantics as documented (issue 1574)
* OracleSqlUtil module fixes:
-fixed a bug in character_semantics for standalone column
(issue 1688)
* Mapper module fixes:
-fixed a bug in handling "list mode" data such as submitted by
InboundTableMapper::queueData() (issue 1736, bug introduced
in Qore 0.8.12.7 with the fix for issue 1626)
* SqlUtil module fixes:
-fixed schema alignment skipping column with name "driver"
(issue 1684)
-fixed sqlutil schema management: functional indexes are
rejected without () in name (issue 1610)
* TableMapper module fixes:
-fixed a bug in handling "list mode" data with optimized
inserts (issue 1736, bug introduced in Qore 0.8.12.7 with
the fix for issue 1626)
* WebSocketClient module fixes:
-added timeout values to Socket and HTTPClient calls
(issue 1725)
* WebSocketHandler module fixes:
-added timeout values to Socket calls (issue 1725)
* WebSocketUtil module fixes:
-added timeout values to Socket calls (issue 1725)
* fixed a bug where a type conversion error in an lvalue
assignment could generate a confusing unrelated runtime
exception (issue 1697)
* fixed a bug where invalid characters in the port
specification in a URL were ignored (issue 1728)
* fixed a bug with SSL socket communication the remote closing
the connection during a send operation could cause the
current thread to go into an infinite loop consuming
100% CPU (issue 1729)
* fixed a bug in the HashListIterator class iterating hashes
with a mix of lists and single values such as used by bulk
DML binds; now the single values will appear as the current
value for all list elements as per the original design
instead of throwing a runtime exception (issue 1738)
* fixed bug in internal string generation with size_t arguments
that could cause invalid data to be output or crashes on
32-bit platforms (issue 1640)
* fixed a runtime memory leak and invalid runtime behavior with
undetected recursive lvalue references (issue 1617)
* improved prompt collection performance with large graphs of
objects by eliminating additional unnecessary graph scans,
resulting in further large performance improvements in the
garbage collector (issue 1363)
* improved InboundTableMapper::queueData() performance
(in the TableMapper module) when used with data in hash of
lists format to use bulk DML in input and output without
internal data conversions (issue 1626)
* OracleSqlUtil module fixes:
-worked around ORA-22165 from op_in() caused by Oracle's
limit on number of collection elements (issue 1660)
-fixed a bug in the force option (i.e. cascade) for
dropping types (issue 1683)
-improved %try-module error reporting and documentation
(issue 1648)
* fixed a bug in Qore::parse_url() parsing single-character
hostnames (issue 1524)
* fixed a bug where PO_LOCKDOWN was not set when parsing init
and del attributes in user module headers (issue 1535)
* fixed a bug parsing exception catch block parameter errors
(in debug builds only; issue 1558)
* fixed a bug dereferencing binary values with the [] operator;
the behavior now corresponds to the documentation (issue 1566)
* fixed a bug that would result in a crash if a method were
declared both static and abstract (issue 1590)
* fixed performance issues with the Mapper module (and by
extension the TableMapper module) for mappers with many
identity (i.e. 1:1) and constant mappings (issue 1620)
* fixed a bug in the BulkInsertOperation class in the
BulkSqlUtil module where inserts would fail or silently
insert invalid data in the second or later blocks when
constant hashes were used (issue 1625)
* Mime module:
-added support for URL form-encoded messages (issue 1436)
* RestClient module:
-added support for URL form-encoded messages (issue 1436)
-added support for the "rawxml" message body encoding
(issue 1437)
* fixed handling of invalid compressed data in the following
functions (issue 1432):
-Qore::gunzip_to_binary()
-Qore::gunzip_to_string()
-Qore::uncompress_to_binary()
-Qore::uncompress_to_string()
* fixed @inf@ on Windows (issue 1442):
* fixed Qore::parse_url() with single-character usernames
(issue 1455)
* corrected the error message with SSL reads when the server
closes the connection prematurely (issue 1488)
* fixed the Host header in HTTP requests to not include the port
if the port is the default port for the scheme because it
causes some servers to reject the request (issue 1489)
Changelog from release notes:
Bug Fixes in Qore:
* fixed a reference bug in the Queue class introduced in the last release
(issue 1309)
* fixed a bug where database types could not be correctly aligned if they had
dependencies (issue 1314); entailed updates in the following modules:
SqlUtil
FreetdsSqlUtil
MysqlSqlUtil
OracleSqlUtil
PgsqlSqlUtil
Schema
* fixed a bug in trunc_str() where an infinite loop could be triggered with
certain arguments and multi-byte character encodings (issue 1327)
* improved prompt collection performance with larger graphs of objects by
eliminating unnecessary graph scans made during object method calls
(issue 1363)
* fixed bugs in date(string) and date(string, string) where invalid input data
was ignored and invalid dates were returned (issue 1369)
* CsvUtil.qm module:
fixed a bug in AbstractCsvIterator::identifyTypeImpl() generating an
error message (issue 1355)
* MailMessage.qm module:
fixed a bug using the default encoding in Message::attach()
(issue issue 1352)
* SqlUtil.qm module:
* fixed the ignored character_semantics column option in schema alignmed
(issue 1379)
* implemented the cop_length() column function (issue 1395)
* OracleSqlUtil.qm module:
OraclePackage attribute body_src is now public to access package bodies
* Qorize.qm module:
Qorize module: new qorize_val() set of functions; qorize_named()
introduced; qorize tests
* TableMapper.qm module:
* fixed runtime option propagation to
TableMapper::SqlStatementMapperIterator from
TableMapper::AbstractSqlStatementOutboundMapper::iterator()
(issue 1418)
* fixed SqlStatementMapperIterator::getCount() (issue 1417)
* added the following methods:
TableMapper::AbstractSqlStatementOutboundMapper::getRowIterator()
TableMapper::InboundTableMapper::iterator()
TableMapper::InboundTableMapperIterator::getRuntime()
TableMapper::InboundTableMapperIterator::replaceRuntime()
TableMapper::InboundTableMapperIterator::setRuntime()
TableMapper::SqlStatementMapperIterator::getRuntime()
TableMapper::SqlStatementMapperIterator::replaceRuntime()
TableMapper::SqlStatementMapperIterator::setRuntime()
* QUnit.qm module:
fixed showing the assertion location when there are test modules on
top of QUnit.qm (issue 1046)
* fixed inconsistency between list splice operator and splice function
(issue 1380)
* fixed the documentation (and DB modules) where
SQLStatement::fetchColumns() was inconsistent; now it will return a
empty hash when no more rows are available to fetch (issue 1241)
* added I/O timeout support to the FtpClient class (issue 1252)
* fixed bugs in Socket::recv() and Socket::recvBinary() with size = 0
where NOTHING could be returned which is invalid according to the
methods' declared return types (issue 1260)
* fixed a bug where FtpClient:get() would fail with an exception when
retrieving an empty file (issue 1255)
* fixed a bug where executing a call reference to a deleted object
method would cause a crash (issue 1268)
* fixed a bug where Qore would allow methods to be called on already
deleted objects under certain conditions (issue 1270)
* fixed a bug where calling exit() in a multithreaded program could
result in a segmentation fault (issue 1215)
* fixed a bug where HttpServer::addListener() could not accept a bind on
port 0 to mean any random port (issue 1284)
* fixed a race condition in prompt collection that could lead to a crash
(issue 1084)
* fixed a bug clearing Socket event queues when the Socket goes out of
scope that could lead to a crash (issue 1292)
* fixed a bug with FtpClient::setWarningQueue() that could cause a crash
(issue 1293)
* fixed a bug where Qore::FtpClient::pwd() returned invalid directory
names (issue 1295)
* fixed bugs in handling websocket close status codes in the
WebSocketUtil, WebSocketClient, and WebSocketHandler modules
(issue 1216)
* TableMapper module fixes:
* fixed a bug with the SqlStatementOutboundMapper::iterator() method;
corrected the iterator object return value which was causing
AbstractMapperIterator::mapBulk() to fail (issue 979)
* fixed a bug with SqlStatementOutboundMapper; it would throw an error
if the required "table" or "sh" options were used and only worked
with subclasses that declared these options (issue 981)
* fixed a bug where AbstractSqlStatementOutboundMapper::iterator()
failed to use options when creating the new Mapper object
(issue 1088)
* fixed a bug where optional arguments were not handled correctly in
some rare cases (issue 974)
* fixed a bug causing a crash when parse_base64_string_to_string() was
called with an empty string (issue 996)
* fixed a bug resolving base class method calls during parse
initialization (issue 1075)
* fixed thread memory handling bug with some operator expressions and
the background operator (issue 1096)
* fixed a race condition in the prompt collection of closure-bound local
variables in the garbage collector (issue 1103)
* fixed a bug where HTTPClient class method variants such as
HTTPClient::get() without a callback would fail to return the message
body when the server sent a reply with chunked transfer encoding
(issue 1117)
* fixed a bug in CsvUtil where backward compatibility was broken for
single-row-type format (issue 1124)
* fixed bugs where declared public functions were missing from the
library ABI (issue 1126)
* fixed bugs where Qore::format_number() and <float>::format() gave
incorrect results when rounding to the significant decimals given in
the format string (issue 1149)
* fixed a bug referencing self in base class constructor arguments
(issue 1169)
* fixed a bug where the incorrect class destructor was called in the
openldap module (issue 1174)
* fixed a bug where declaring a copy() method as synchronized would
result in a crash when the method was called (issue 1188)
* fixed bugs in <string>::getEncoded() and <string>::getDecoded()
regarding CE_XML and CE_NONASCII (issue 1193)
* fixed bugs where Qore::call_object_method() and
Qore::call_object_method_args() allowed private methods to be called
from outside the class (issue 1194)
* fixed a bug where "Deprecated" Functions methods were being internally
registered as RUNTIME_NOOP (issue 1197)
* fixed bugs where the Datasource class would open a connection to the
server in the constructor before options were set and where a server
connection was required to call Datasource::getOption() or
Datasource::setOption() (issue 1201)
* fixed memory errors in the Queue class where spurious exceptions could
be raised (issue 1202)
* fixed a memory leak with static class member initializers (issue 1206)
Qore 0.8.12 is a major new release with many new features and hundreds of bug
fixes as well as packaging fixes. Highlights include:
* The most significant innovation in this release comes in the form of support
for Prompt Collection
* Support for Bulk DML (large volume SQL operations in one server round-trip)
in the Mapper, TableMapper, SqlUtil and the new BulkSqlUtil modules
* Standardized function naming convention, many significant design and
implementation fixes and improvements
* Numerous new functions, methods, constants, operators, and user modules
* Hundreds of bug fixes
memory and CPU time for certain input. Provide a variable
(CLANG_NO_VALUE_PROPAGATION_PASS) for selectively disabling it in those
places known to trigger it.
Qore is a modular, multi-threaded, SQL-integrated dynamically typed
scripting language with optional hard typing and procedural and
object-oriented features, powerful and easy-to-use data types,
structures, and operators, a clean and easy-to-lean/read syntax.