Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

openjdk7 crypto strength broken #187

Closed
coyhile opened this issue Apr 22, 2014 · 1 comment
Closed

openjdk7 crypto strength broken #187

coyhile opened this issue Apr 22, 2014 · 1 comment

Comments

@coyhile
Copy link

coyhile commented Apr 22, 2014

OpenJDK7 on SmartOS seems to have broken crypto support. The following code snippet should show the crypto strength allowed (at least for AES):

caadmin@rootca:/tmp$ cat KeyLengthDetector.java
import javax.crypto.Cipher;
import java.security.NoSuchAlgorithmException;

public class KeyLengthDetector {
public static void main(String[] args) {
int allowedKeyLength = 0;

try {
  allowedKeyLength = Cipher.getMaxAllowedKeyLength("AES");
} catch (NoSuchAlgorithmException e) {
  e.printStackTrace();
}

System.out.println("The allowed key length for AES is: " + allowedKeyLength);

}
}
caadmin@rootca:/tmp$

Run on a Debian box, we see the following:

caadmin@rootca:/tmp$ java -version
java version "1.7.0_51"
OpenJDK Runtime Environment (IcedTea 2.4.6) (7u51-2.4.6-1)
OpenJDK 64-Bit Server VM (build 24.51-b03, mixed mode)
caadmin@rootca:/tmp$ java KeyLengthDetector
The allowed key length for AES is: 2147483647
caadmin@rootca:/tmp$

Contrast that with a SmartOS host:

[root@sshgtw /tmp]# java KeyLengthDetector
The allowed key length for AES is: 128
[root@sshgtw /tmp]# java -version
openjdk version "1.7.0-internal"
OpenJDK Runtime Environment (build 1.7.0-internal-pkgsrc_2014_04_08_15_25-b00)
OpenJDK 64-Bit Server VM (build 23.21-b01, mixed mode)
[root@sshgtw /tmp]#

@mamash
Copy link

mamash commented Dec 9, 2014

Not a bug and not "broken" really. When you build OpenJDK7, it still defaults to limited crypto. Traditionally the only way to build with unlimited crypto was to download the respective class files from Oracle and inject, which is why pkgsrc couldn't do this by default (due to Oracle licensing getting in the way). Based on some IRC input about a month ago, we found out that another option was introduced in OpenJDK at some time (that I couldn't be bothered to track down exactly), so we reimplemented it in pkgsrc, and backported the change to the Joyent 2014Q3 package set. Starting with openjdk7-1.7.65nb1 there, the package comes with unlimited crypto by default.

@mamash mamash closed this as completed Dec 9, 2014
jperkin pushed a commit that referenced this issue May 22, 2015
Upstream changes:
1.2.0 2015-04-14 07:13:00+0000
	- [core] bundle libyaml #248 (Kazuho Oku)
	- [core] implement master-worker process mode and daemon mode (bundles Server::Starter) #258 #270 (Kazuho Oku)
	- [file] more mime-types by default #250 #254 #280 (Tatsuhiko Kubo, George Liu, Kazuho Oku)
	- [file][http1] fix connection being closed if the length of content is zero #276 (Kazuho Oku)
	- [headers] fix heap overrun during configuration #251 (Kazuho Oku)
	- [http2] do not delay sending PUSH_PROMISE #221 (Kazuho Oku)
	- [http2] reduce memory footprint under high load #271 (Kazuho Oku)
	- [http2] fix incorrect error sent when number of streams exceed the limit #268 (Kazuho Oku)
	- [proxy] fix heap overrun when building request sent to upstream #266 #269 (Moto Ishizawa, Kazuho Oku)
	- [proxy] fix laggy response in case the length of content is zero #274 #276 (Kazuho Oku)
	- [SSL] fix potential stall while reading data from client #268 (Kazuho Oku)
	- [SSL] bundle LibreSSL #236 #272 (Kazuho Oku)
	- [SSL] obtain source-level compatibility with BoringSSL #228 (Kazuho Oku)
	- [SSL] add directive `listen.ssl.cipher-preference` for controlling the selection logic of cipher-suites #233 (Kazuho Oku)
	- [SSL] disable TLS compression #252 (bisho)
	- [libh2o] fix C++ compatibility (do not use empty struct) #225 (Kazuho Oku)
	- [libh2o] search external dependencies using pkg-config #227 (Kazuho Oku)
	- [misc] fix GCC version detection bug used for controlling compiler warnings #224 (Kazuho Oku)
	- [misc] check merory allocation failures in socket pool #265 (Tatsuhiko Kubo)

1.1.1 2015-03-09 06:12:00+0000
	- [proxy] fix crash on NetBSD when upstream connection is persistent #217 (Kazuho Oku)
	- [misc] fix compile error on FreeBSD #211 #212 (Syohei Yoshida)

1.1.0 2015-03-06 06:41:00+0000
	- [core][file] send redirects appending '/' as abs-path redirects #209 (Kazuho Oku)
	- [headers] add directives for manipulating response headers #204 (Kazuho Oku)
	- [http2] do not send a corrupt response if header value is longer than 126 bytes #193 (Kazuho Oku)
	- [http2] fix interoperability issue with nghttp2 0.7.5 and above 5c42eb1 (Kazuho Oku)
	- [proxy] send `via` header to upstream #191 (Kazuho Oku)
	- [proxy] resolve hostname asynchronously #207 (Kazuho Oku)
	- [proxy] distribute load between upstream servers (using `rand()`) #208 (Kazuho Oku)
	- [proxy] fix a bug that may cause a corrupt `location` header being forwarded #190 (Kazuho Oku)
	- [reproxy] add support for `x-reproxy-url` header #187 #197 (Daisuke Maki, Kazuho Oku)

1.0.1 2015-02-23 05:50:00+0000
	- [core] change backlog size from 65,536 to 65,535 #183 (Tatsuhiko Kubo)
	- [http2] fix assertion failure in HPACK encoder #186 (Kazuho Oku)
	- [http2] add `extern` to some global variables that were not marked as such #178 (Kazuho Oku)
	- [proxy] close persistent upstream connection if client abruptly closes the stream #188 (Kazuho Oku)
	- [proxy] fix internal state corruption in case upstream sends response headers divided into multpile packets #189 (Kazuho Oku)
	- [SSL] add host header to OCSP request #176 (Masaaki Hirose)
	- [libh2o] do not require header files under `deps/` when using libh2o #173 (Kazuho Oku)
	- [libh2o] fix compile error in examples when compiled with `H2O_USE_LIBUV=0` #177 (Kazuho Oku)
	- [libh2o] in example, add missing / after the reference path #180 (Matthieu Garrigues)
	- [misc] fix invalid HTML in sample page #175 (Deepak Prakash)

1.0.0 2015-02-18 20:01:00+0000
	- [core] add redirect handler #150 (Kazuho Oku)
	- [core] add `pid-file` directive for specifying the pid file #164 (Kazuho Oku)
	- [core] connections accepted by host-specific listeners should not be handled by handlers of other hosts #163 (Kazuho Oku)
	- [core] (FreeBSD) fix a bug that prevented the standalone server from booting when run as root #160 (Kazuho Oku)
	- [core] switch to pipe-based interthread messaging #154 (Kazuho Oku)
	- [core] use kqueue on all BSDs #156 (Kazuho Oku)
	- [access-log] more logging directives: %H, %m, %q, %U, %V, %v #158 (Kazuho Oku)
	- [access-log] bugfix: header values were not logged when specified using uppercase letters #157 (Kazuho Oku)
	- [file] add application/json to defalt MIME-types #159 (Tatsuhiko Kubo)
	- [http2] add support for the finalized version of HTTP/2 #166 (Kazuho Oku)
	- [http2] fix issues reported by h2spec v0.0.6 #165 (Kazuho Oku)
	- [proxy] merge the cookie headers before sending to upstream #161 (Kazuho Oku)
	- [proxy] simplify the configuration directives (and make persistent upstream connections as default) #162 (Kazuho Oku)
	- [SSL] add configuration directive to preload DH params #148 (Jeff Marrison)
	- [libh2o] separate versioning scheme using H2O_LIBRARY_VERSION_* #167 (Kazuho Oku)

0.9.2 2015-02-10 04:17:00+0000
	- [core] graceful shutdown on SIGTERM #119 (Kazuho Oku)
	- [core] less TCP errors under high load #81 (Kazuho Oku)
	- [file] add support for HEAD requests #110 (Mark Hoersken)
	- [http1] MSIE workaround (send `Cache-Control: private` in place of Vary) #114 (Kazuho Oku)
	- [http2] support server-push #133 (Kazuho Oku)
	- [http2] fix spurious RST_STREAMS being sent #132 (Kazuho Oku)
	- [http2] weight-based distribution of bandwidth #135 (Kazuho Oku)
	- [proxy] added configuration directive `proxy.preserve-host` #112 (Masahiro Nagano)
	- [proxy] sends X-Forwarded-For and X-Forwarded-Proto headers #112 (Masahiro Nagano)
	- [proxy] stability improvements #61 (Kazuho Oku)
	- [misc] adjustments to make the source code more analyzer-friendly #113,#117 (Nick Desaulniers, Maks Naumov)

0.9.1 2015-01-19 21:13:00+0000
	- added configuration directives: ssl/cipher-suite, ssl/ocsp-update-interval, ssl/ocsp-max-failures, expires, file.send-gzip
	- [http2] added support for draft-16 (draft-14 is also supported)
	- [http2] dependency-based prioritization
	- [http2] improved conformance to the specification
	- [SSL] OCSP stapling (automatically enabled by default)
	- [SSL] fix compile error with OpenSSL below version 1.0.1
	- [file] content negotiation (serving .gz files)
	- [expires] added support for Cache-Control: max-age
	- [libh2o] libh2o and the header files installed by `make install`
	- [libh2o] fix compile error when used from C++
	- automatically setuids to nobody when run as root and if `user` directive is not set
	- automatically raises RLIMIT_NOFILE
	- uses all CPU cores by default
	- now compiles on NetBSD and other BSD-based systems
jperkin pushed a commit that referenced this issue Jun 17, 2015
pkgsrc change: allow build on Ruby 2.2.

## 0.8.12 (2015-05-26)

* Fix `HTTP.timeout` API (was loosing previously defined options). (@ixti)


## 0.8.11 (2015-05-22)

* SNI support for HTTPS connections. See #229. (@tarcieri)
* Use "http.rb" in the User-Agent string. See #227. (@tarcieri)


## 0.8.10 (2015-05-14)

* Fix cookie headers generation. (@ixti)


## 0.8.9 (2015-05-11)

* Add cookies support. (@ixti)
* Enforce stringified body encoding. See #219. (@Connorhd)


## 0.8.8 (2015-05-09)

* Fix CONNECT header for proxies. See #217. (@Connorhd)


## 0.8.7 (2015-05-08)

* Fix `HTTP.timeout` API with options only given. (@ixti)


## 0.8.6 (2015-05-08)

* Reset global timeouts after the request finishes. See #215. (@zanker)


## 0.8.5 (2015-05-06)

* Add simple timeouts configuration API. See #205. (@ixti)
* Deprecate `Request#request_header`. Use `Request#headline` instead. (@ixti)


## 0.8.4 (2015-04-23)

* Deprecate `#default_headers` and `#default_headers=`. (@ixti)
* Deprecate chainable methods with `with_` prefix. See #207. (@ixti)
* Add support of HTTPS connections through proxy. See #186. (@Connorhd)


## 0.8.3 (2015-04-07)

* Fix request headline. See #206. (@ixti)
* Remove deprecated `Request#__method__`. (@ixti)


## 0.8.2 (2015-04-06)

* Fix Celluloid::IO compatibility. See #203. (@ixti)
* Cleanup obsolete code. (@zanker)


## 0.8.1 (2015-04-02)

* Add missing `require "resolv"`. See #202. (@ixti)
* Add block-form `#persistent` calls. See #200, #201. (@ixti)


## 0.8.0 (2015-04-01)

* Properly handle WaitWritable for SSL. See #199. (@zanker)
* Add support for non-ASCII URis. See #197. (@ixti)
* Add configurable connection timeouts. See #187, #194, #195. (@zanker)
* Refactor requests redirect following logic. See #179. (@ixti)
* Support for persistent HTTP connections (@zanker)
* Add caching support. See #77 and #177. (@Asmod4n, @pezra)
* Improve servers used in specs boot up. Issue was initially raised up
  by @olegkovalenko. See #176. (@ixti)
* Reflect FormData rename changes (FormData -> HTTP::FormData). (@ixti)
* `HTTP::Headers` now raises `HTTP::InvalidHeaderNameError` in case of
  (surprise) invalid HTTP header field name (e.g.`"Foo:Bar"`). See #173.
  (@ixti)
jperkin pushed a commit that referenced this issue Jul 17, 2015
1.0.1

Released: Thu Jan 22 2015

  • [feature] Added support for Lingua, a translation extraction system as an
    alternative to Babel. Pull request courtesy Wichert Akkerman.

    References: pull request bitbucket:9

  • [bug] [py3k] Modernized the examples/wsgi/run_wsgi.py file for Py3k. Pull
    requset courtesy Cody Taylor.

    References: pull request bitbucket:11

1.0.0

Released: Sun Jun 8 2014

  • [py2k] [bug] Improved the error re-raise operation when a custom
    Template.error_handler is used that does not handle the exception; the
    original stack trace etc. is now preserved. Pull request courtesy Manfred
    Haltner.

    References: pull request bitbucket:8

  • [py2k] [bug] [filters] Added an html_escape filter that works in “non
    unicode” mode. Previously, when using disable_unicode=True, the u filter
    would fail to handle non-ASCII bytes properly. Pull request courtesy George
    Xie.

    References: pull request bitbucket:7

  • [general] Compatibility changes; in order to modernize the codebase, Mako
    is now dropping support for Python 2.4 and Python 2.5 altogether. The
    source base is now targeted at Python 2.6 and forwards.

  • [feature] Template modules now generate a JSON “metadata” structure at the
    bottom of the source file which includes parseable information about the
    templates’ source file, encoding etc. as well as a mapping of module source
    lines to template lines, thus replacing the “# SOURCE LINE” markers
    throughout the source code. The structure also indicates those lines that
    are explicitly not part of the template’s source; the goal here is to allow
    better integration with coverage and other tools.

  • [bug] [py3k] Fixed bug in decode.<encoding> filter where a non-string
    object would not be correctly interpreted in Python 3.

  • [bug] [py3k] Fixed bug in Python parsing logic which would fail on Python 3
    when a “try/except” targeted a tuple of exception types, rather than a
    single exception.

    References: #227

  • [feature] mako-render is now implemented as a setuptools entrypoint script;
    a standalone mako.cmd.cmdline() callable is now available, and the system
    also uses argparse now instead of optparse. Pull request courtesy Derek
    Harland.

    References: pull request bitbucket:5

  • [feature] The mako-render script will now catch exceptions and run them
    into the text error handler, and exit with a non-zero exit code. Pull
    request courtesy Derek Harland.

    References: pull request bitbucket:4

  • [bug] A rework of the mako-render script allows the script to run correctly
    when given a file pathname that is outside of the current directory, e.g.
    mako-render ../some_template.mako. In this case, the “template root”
    defaults to the directory in which the template is located, instead of ”.”.
    The script also accepts a new argument --template-dir which can be
    specified multiple times to establish template lookup directories. Standard
    input for templates also works now too. Pull request courtesy Derek
    Harland.

    References: pull request bitbucket:2

  • [feature] [py3k] Support is added for Python 3 “keyword only” arguments, as
    used in defs. Pull request courtesy Eevee.

    References: pull request github:7

0.9

0.9.1

Released: Thu Dec 26 2013

  • [bug] Fixed bug in Babel plugin where translator comments would be lost if
    intervening text nodes were encountered. Fix courtesy Ned Batchelder.

    References: #225

  • [bug] Fixed TGPlugin.render method to support unicode template names in
    Py2K - courtesy Vladimir Magamedov.

  • [bug] Fixed an AST issue that was preventing correct operation under alpha
    versions of Python 3.4. Pullreq courtesy Zer0-.

  • [bug] Changed the format of the “source encoding” header output by the code
    generator to use the format # -*- coding:%s -*- instead of # -*-
    encoding:%s -*-; the former is more common and compatible with emacs.
    Courtesy Martin Geisler.

  • [bug] Fixed issue where an old lexer rule prevented a template line which
    looked like “#*” from being correctly parsed.

    References: #224

0.9.0

Released: Tue Aug 27 2013

  • [bug] The Context.locals_() method becomes a private underscored method, as
    this method has a specific internal use. The purpose of Context.kwargs has
    been clarified, in that it only delivers top level keyword arguments
    originally passed to template.render().

    References: #219

  • [bug] Fixed the babel plugin to properly interpret ${} sections inside of a
    “call” tag, i.e. <%self:some_tag attr=”${_(‘foo’)}”/>. Code that’s subject
    to babel escapes in here needs to be specified as a Python expression, not
    a literal. This change is backwards incompatible vs. code that is relying
    upon a _(‘’) translation to be working within a call tag.

  • [bug] The Babel plugin has been repaired to work on Python 3.

    References: #187

  • [bug] Using <%namespace import=”*” module=”somemodule”/> now skips over
    module elements that are not explcitly callable, avoiding TypeError when
    trying to produce partials.

    References: #207

  • [bug] Fixed Py3K bug where a “lambda” expression was not interpreted
    correctly within a template tag; also fixed in Py2.4.

    References: #190
jperkin pushed a commit that referenced this issue Jan 17, 2016
* Disable debug library

Changelog:
Release 1.6.1 (2015-08-03)
==========================

- added project and solution files for Visual Studio 2015
- upgraded bundled SQLite to 3.8.11.1
- fixed GH #782: Poco::JSON::PrintHandler not working for nested arrays
- fixed GH #819: JSON Stringifier fails with preserve insert order
- fixed GH #878: UUID tryParse
- fixed GH #869: FIFOBuffer::read(T*, std::size_t) documentation inaccurate
- fixed GH #861: Var BadCastException
- fixed GH #779: BUG in 1.6.0 Zip code
- fixed GH #769: Poco::Var operator== throws exception
- fixed GH #766: Poco::JSON::PrintHandler not working for objects in array
- fixed GH #763: Unable to build static with NetSSL_OpenSSL for OS X
- fixed GH #750: BsonWriter::write<Binary::Ptr> missing size ?
- fixed GH #741: Timestamp anomaly in Poco::Logger on WindowsCE
- fixed GH #735: WEC2013 build fails due to missing Poco::Path methods.
- fixed GH #722: poco-1.6.0: Unicode Converter Test confuses string and char types
- fixed GH #719: StreamSocket::receiveBytes and FIFOBuffer issue in 1.6
- fixed GH #706: POCO1.6 Sample EchoServer BUG
- fixed GH #646: Prevent possible data race in access to Timer::_periodicInerval
- DeflatingStream: do not flush underlying stream on sync() as these can cause
  corrupted files in Zip archives


Release 1.6.0 (2014-12-22)
==========================

- fixed GH #625: MongoDB ensureIndex double insert?
- fixed GH #622: Crypto: RSATest::testSign() should verify with public key only
- fixed GH #620: Data documentation sample code outdated
- fixed GH #618: OS X 10.10 defines PAGE_SIZE macro, conflicts with PAGE_SIZE in Thread_POSIX.cpp
- fixed GH #616: Visual Studio warning C4244
- fixed GH #612: OpenSSLInitializer calls OPENSSL_config but not CONF_modules_free
- fixed GH #608: (Parallel)SocketAcceptor ctor/dtor call virtual functions
- fixed GH #607: Idle Reactor high CPU usage
- fixed GH #606: HTMLForm constructor read application/x-www-form-urlencoded UTF-8 request
  body first parameter with BOM in name
- fixed GH #596: For OpenSSL 1.0.1, include openssl/crypto.h not openssl/fips.h
- fixed GH #592: Incorrect format string in Poco::Dynamic::Struct
- fixed GH #590: Poco::Data::SQlite doesn't support URI filenames
- fixed GH #564: URI::encode
- fixed GH #560: DateTime class calculates a wrong day
- fixed GH #549: Memory allocation is not safe between fork() and execve()
- fixed GH #500: SSLManager causes a crash
- fixed GH #490: 2 byte frame with payload length of 0 throws "Incomplete Frame Received" exception
- fixed GH #483: multiple cases for sqlite_busy
- fixed GH #482: Poco::JSON::Stringifier::stringify bad behaviour
- fixed GH #478: HTTPCredentials not according to HTTP spec
- fixed GH #471: vs2010 release builds have optimization disabled ?
- fixed GH #468: HTTPClientSession/HTTPResponse not forwarding exceptions
- fixed GH #438: Poco::File::setLastModified() doesn't work
- fixed GH #402: StreamSocket::receiveBytes(FIFOBuffer&) and sendBytes(FIFOBuffer&) are
  not thread safe
- fixed GH #345: Linker warning LNK4221 in Foundation for SignalHandler.obj, String.obj
  and ByteOrder.obj
- fixed GH #331: Poco::Zip does not support files with ".." in the name.
- fixed GH #318: Logger local time doesn't automatically account for DST
- fixed GH #294: Poco::Net::TCPServerParams::setMaxThreads(int count) will not accept count == 0.
- fixed GH #215: develop WinCE build broken
- fixed GH #63: Net::NameValueCollection::size() returns int
- Poco::Logger: formatting methods now support up to 10 arguments.
- added Poco::Timestamp::raw()
- Poco::DeflatingOutputStream and Poco::InflatingOutputStreams also flush underlying stream
  on flush()/sync().
- Poco::Util::Timer: prevent re-schedule of cancelled TimerTask
- enabled WinRegistryKey and WinRegistryConfiguration for WinCE
- Poco::BasicEvent improvements and preparations for future support of lambdas/std::function
- upgraded bundled sqlite to 3.8.7.2
- Poco::Thread: added support for starting functors/lambdas
- Poco::Net::HTTPClientSession: added support for global proxy configuration
- added support for OAuth 1.0/2.0 via Poco::Net::OAuth10Credentials and
  Poco::Net::OAuth20Credentials classes.
- Poco::Net::IPAddress: fixed IPv6 prefix handling issue on Windows
- added Poco::Timestamp::TIMEVAL_MIN and Poco::Timestamp::TIMEVAL_MAX
- added Poco::Clock::CLOCKVAL_MIN and Poco::Clock::CLOCKVAL_MAX
- added poco_assert_msg() and poco_assert_msg_dbg() macros
- Poco::Net::Context: fixed a memory leak if the CA file was not found while creating the
  Context object (the underlying OpenSSL context would leak)
- Poco::URI: added new constructor to create URI from Path
- Various documentation and style fixes
- Removed support (project/solution files) for Visual Studio.NET 2003 and Visual Studio 2005.
- Improved CMake support


Release 1.5.4 (2014-10-14)
==========================

- fixed GH #326: compile Net lib 1.5.2 without UTF8 support enabled
- fixed GH #518: NetworkInterface.cpp compile error w/ POCO_NO_WSTRING (1.5.3)
- Fixed MSVC 2010 warnings on large alignment
- make HTTPAuthenticationParams::parse() add value on end of string
- fixed GH #482: Poco::JSON::Stringifier::stringify bad behaviour
- fixed GH #508: Can't compile for arm64 architecture
- fixed GH #510: Incorrect RSAKey construction from istream
- fix SharedMemory for WinCE/WEC2013
- Add NIOS2 double conversion detection, fixes compile errors
- added VS2013 project/solution files for Windows Embedded Compact 2013
- added Process::isRunning()
- NetSSL: Fix typo in documentation
- NetSSL_OpenSSL: support for TLS 1.1 and 1.2
- Zip: Added CM_AUTO, which automatically selects CM_STORE or CM_DEFLATE based
  on file extension. Used to avoid double-compression of already compressed file
  formats such as images.
- added %L modifier to PatternFormatter to switch to local time
- removed unnecessary explicit in some multi-arg constructors
- Allow SecureStreamSocket::attach() to be used in server connections
- added Var::isBoolean() and fixed JSON stringifier
- added poco_unexpected() macro invoking Bugcheck::unexpected() to deal
  with unexpected exceptions in destructors
- fixed GH #538 prevent destructors from throwing exceptions
- improved HTTP server handling of errors while reading header
- fixed GH #545: use short for sign
- upgraded SQLite to 3.8.6
- fixed GH #550 WebSocket fragmented message problem
- improved HTTPClientSession handling of network errors while sending the request
- updated bundled PCRE to 8.35.0
- fixed GH #552: FIFOBuffer drain() problem
- fixed GH #402: StreamSocket::receiveBytes(FIFOBuffer&) and sendBytes(FIFOBuffer&) are
  not thread safe
- HTTPCookie: fix documentation for max age
- added Timestamp::raw() and Clock::raw()
- Poco::Buffer properly handles zero-sized buffers
- GH #512: Poco:Data:ODBC:Binder.h causes a crash
- Added Crypto_Win and NetSSL_Win libraries which are re-implementations of existing
  Crypto and NetSSL_OpenSSL libraries based on WinCrypt/Schannel. The new libraries
  can be used as an almost drop-in replacement for the OpenSSL based libraries on
  Windows and Windows Embedded Compact platforms. Only available from GitHub for now.


Release 1.5.3 (2014-06-30)
==========================

- fixed GH# 316: Poco::DateTimeFormatter::append() gives wrong result for
  Poco::LocalDateTime
- Poco::Data::MySQL: added SQLite thread cleanup handler
- Poco::Net::X509Certificate: improved and fixed domain name verification for
  wildcard domains
- added Poco::Clock class, which uses a system-provided monotonic clock
  (if available) and is thus not affected by system realtime clock changes.
  Monotonic Clock is available on Windows, Linux, OS X and on POSIX platforms
  supporting clock_gettime() and CLOCK_MONOTONIC.
- Poco::Timer, Poco::Stopwatch, Poco::TimedNotificationQueue and Poco::Util::Timer
  have been changed to use Poco::Clock instead of Poco::Timestamp and are now
  unaffected by system realtime clock changes.
- fixed GH# 350: Memory leak in Data/ODBC with BLOB
- Correctly set MySQL time_type for Poco::Data::Date.
- fixed GH #352: Removed redundant #includes and fixed spelling mistakes.
- fixed setting of MYSQL_BIND is_unsigned value.
- fixed GH #360: CMakeLists foundation: add Clock.cpp in the list of source files
- Add extern "C" around <net/if.h> on HPUX platform.
- added runtests.sh
- fixed CPPUNIT_IGNORE parsing
- fixed Glob from start path, for platforms not alowing transverse from root (Android)
- added NTPClient (Rangel Reale)
- added PowerShell build script
- added SmartOS build support
- fix warnings in headers
- XMLWriter: removed unnecessary apostrophe escaping (&apos)
- MongoDB: use Int32 for messageLength
- fixed GH #380: SecureSocket+DialogSocket crashes with SIGSEGV when timeout occours
- Improve RSADigestEngine, using Poco::Crypto::DigestEngine to calculate hash before signing
- added Poco::PBKDF2Engine
- Fixed GH #380: SecureSocket+DialogSocket crashes with SIGSEGV when timeout occours
- added support for a 'Priority' attribute on cookies.
- GH #386: fixed bug in MailMessage without content-transfer-encoding header
- GH #384: ew hash algorithms support for RSADigestEngine
- fixed Clock overflow bug on Windows
- Poco::ByteOrder now uses intrinsics, if available
- CMake: added /bigobj option for msvc
- Fix typo to restore Net/TestSuite_x64_vs120 build
- correct path for CONFIGURE_FILE in CMakeLists.txt
- Building Poco 1.5.2 for Synology RS812+ (Intel Atom) (honor POCO_NO_INOTIFY)
- added WEC2013 support to buildwin.cmd and buildwin.ps1
- HTMLForm: in URL encoding, percent-encode more characters
- Fixed #include <linux/if.h> conflict with other libraries
- Poco::Net::X509Certificate::verify() no longer uses DNS reverse lookups to validate host names
- cert hostname validation is case insensitive and stricter for wildcard certificates
- TCPServer: do not reduce the capacity of the default ThreadPool
- added POCO_LOG_DEBUG flag
- Zip: fixed a crash caused by an I/O error
- added runtest script for windows
- added SQlite Full Text Search support
- added Thread::trySleep() and Thread::wakeUp()
- fixed GH #410: Bug in JSON::Object.stringify() in 1.5.2
- fixed GH #362: Defect in Var::parseString when there is no space between value and newline
- fixed GH #314: JSON parsing bug
- added GH #313: MetaColumn additions for Data::ODBC and Data::SQLite
- fixed GH #346: Make Poco::Data::Date and Poco::Data::Time compare functions const.
- fixed GH #341: Compiling poco-1.5.2 for Cygwin
- fixed GH #305: There are bugs in Buffer.h
- fixed GH #321: trivial build fixes (BB QNX build)
- fixed GH #440: MongoDB ObjectId string formatting
- added SevenZip library (Guenter Obiltschnig)
- fixed GH #442: Use correct prefix length field of Windows IP_ADAPTER_PREFIX structure
- improved GH #328: NetworkInterface on Windows XP
- fixed GH #154 Add support for MYSQL_TYPE_NEWDECIMAL to Poco::Data::MySQL
- fixed GH #290: Unicode support
- fixed GH #318: Logger local time doesn't automatically account for DST
- fixed GH #363: DateTimeParser tryParse/parse
- added HTMLForm Content-Length calculation (Rangel Reale)
- Make TemporaryFile append a slash to tempDir
- fixed GH #319 android build with cmake
- added hasDelegates() method to AbstractEvent
- fixed GH #230: Poco::Timer problem
- fixed GH #317: Poco::Zip does not support newer Zip file versions.
- fixed GH #176: Poco::JSON::Stringifier UTF encoding
- fixed GH #458: Broadcast address and subnet mask for IEEE802.11 network interface
- fixed GH #456: poco: library install dirs per RUNTIME/LIBRARY/ARCHIVE


Release 1.5.2 (2013-09-16)
==========================

- added MongoDB library
- fixed GH #57: poco-1.5.1: Doesn't compile for Android
- added VoidEvent (Arturo Castro)
- fixed GH #80: NumberFormatter::append broken
- fixed GH #93: ParallelSocketAcceptor virtual functions
- optional small object optimization for IPAddress, SocketAddress, Any and Dynamic::Var
- SQLite events (insert, update, delete, commit, rollback) handlers
- merged GH #91: Improve SQLite multi-threaded use (Rangel Reale)
- merged GH #86: Invalid pointers to vector internals (Adrian Imboden)
- automatic library initialization macros
- fixed GH #110: WebSocket accept() fails when Connection header contains multiple tokens
- fixed GH #71: WebSocket and broken Timeouts (POCO_BROKEN_TIMEOUTS)
- fixed a warning in Poco/Crypto/OpenSSLInitializer.h
- fixed GH #109: Bug in Poco::Net::SMTPClientSession::loginUsingPlain
- added clang libc++ build configurations for Darwin and iPhone (Andrea Bigagli)
- fixed GH #116: Wrong timezone parsing in DateTimeParse (Matej Knopp)
- fixed GH #118: JSON::Object::stringify endless loop
- added Recursive and SortedDirectoryIterator (Marian Krivos)
- added ListMap (map-like container with preserving insertion order)
- MailMessage: attachments saving support and consistent read/write
- fixed GH #124: Possible buffer overrun in Foundation/EventLogChannel
- fixed GH #119: JSON::Object holds values in ordered map
- added JSON::PrintHandler
- renamed JSON::DefaultHandler to ParseHandler (breaking change!)
- fixed GH #127: Eliminate -Wshadow warnings
- fixed GH #79: Poco::Thread leak on Linux
- fixed GH #61: static_md build configs for Crypto and NetSSL
- fixed GH #130: prefer sysconf over sysctlbyname
- fixed GH #131: no timezone global var on OpenBSD
- fixed GH #102: Some subprojects don't have x64 solutions for VS 2010
- added GH #75: Poco::Uri addQueryParameter method
- Poco::Environment::osDisplayName() now recognizes Windows 8/Server 2012
- fixed GH #140: Poco::Runnable threading cleanup issue
- simplified default TCP/HTTPServer construction
- fixed GH #141: Application::run() documentation/implementation discrepancy
- changed RowFormatter to SharedPtr<RowFormatter> in Data::RecordSet interface (breaking change!)
- fixed GH #144: Poco::Dynamic emits invalid JSON
- removed naked pointers from Data interfaces
- fixed GH #82: name conflict in Data::Keywords::bind
- fixed GH #157: MySQL: cannot bind to 'long' data type on Windows/Visual C++
- fixed GH #158: MySQL: MYSQL_BIND 'is_unsigned' member is not set
- fixed GH #160: MultipartReader ignores first part, if preamble is missing
- fixed GH #156: Possible buffer overrun in Foundation/EventLogChannel
- XML: fixed an issue with parsing a memory buffer > 2 GB
- upgraded to expat 2.1.0
- Data/ODBC: added support for setting query timeout (via setProperty
  of "queryTimeout"). Timeout is int, given in seconds.
- fixed a potential endless loop in SecureStreamSocketImpl::sendBytes()
  and also removed unnecessary code.
- fixed GH #159: Crash in openssl CRYPTO_thread_id() after library libPocoCrypto.so
  has been unloaded.
- fixed GH #155: MailOutputStream mangles consecutive newline sequences
- fixed GH #139: FileChannel::PROP_FLUSH is invalid (contains a tab character)
- fixed GH #173: HTTPClientSession::proxyConnect forces DNS lookup of host names
- fixed GH #194: MessageNotification constructor is inefficient.
- fixed GH #189: Poco::NumberParser::tryParse() documentation bug
- fixed GH #172: IPv6 Host field is stripped of Brackets in HTTPClientSession
- fixed GH #188: Net: SocketAddress operator < unusable for std::map key
- fixed GH #128: DOMWriter incorrectly adds SYSTEM keyword to DTD if PUBLIC is
  already specified
- fixed GH #65: Poco::format() misorders sign and padding specifiers
- upgraded bundled SQLite to 3.7.17
- replaced JSON parser with Poco::Web::JSON parser (from sandbox)
- added JSON conversion to Dynamic Struct and Array
- added VarIterator
- modified behavior of empty Var (empty == empty)
- added Alignment.h header for C++03 alignment needs
- added Data/WebNotifier (DB, WebSocket) example
- fixed GH #209: Poco::NumberFormatter double length
- fixed GH #204: Upgrade zlib to 1.2.8
- fixed GH #198: The "application.configDir" property is not always created.
- fixed GH #185: Poco::NumberFormatter::format(double value, int precision)
  ignore precision == 0
- fixed GH #138: FreeBSD JSON tests fail
- fixed GH #99: JSON::Query an JSON::Object
- limited allowed types for JSON::Query to Object, Array, Object::Ptr,
  Array::Ptr and empty
- fixed GH #175: HTMLForm does not read URL parameters on POST or PUT
- added GH #187: MySQL: allow access to the underlying connection handle
- added GH #186: MySQL: support for MYSQL_SECURE_AUTH
- fixed GH #174: MySQL: 4GB allocated when reading any largetext or largeblob field
- fixed a potential memory leak in Poco::Net::HTTPClientSession if it is misused
  (e.g., sendRequest() is sent two times in a row without an intermediate call to
  receiveResponse(), or by calling receiveResponse() two times in a row without
  an intermediate call to sendRequest()) - GH #217
- removed a few unnecessary protected accessor methods from Poco::Net::HTTPClientSession
  that would provide inappropriate access to internal state
- merged GH #210: Don't call CloseHandle() twice on Windows; Ability to select the
  threadpool that will be used to start an Activity(Patrice Tarabbia)
- fixed GH #212: JSONConfiguration was missing from the vs90 project(Patrice Tarabbia)
- fixed GH #220: add qualifiers for FPEnvironment in C99 (Lucas Clemente)
- fixed GH #222: HTTPCookie doesn't support expiry times in the past (Karl Reid)
- fixed GH #224: building 1.5.1 on Windows for x64
- fixed GH# 233: ServerSocket::bind6(Poco::UInt16 port, bool reuseAddress, bool ipV6Only) does not work
- fixed GH# 231: Compatibility issue with Poco::Net::NetworkInterface
- fixed GH# 236: Bug in RecursiveDirectoryIterator
- added ColorConsoleChannel and WindowsColorConsoleChannel classes supporting
  colorizing log messages
- fixed GH# 259: Poco::EventLogChannel fails to find 64bit Poco Foundation dll
- fixed GH# 254: UTF8::icompare unexpected behavior
- Poco::UUID::tryParse() also accepts UUIDs without hyphens. Also updated documentation
  (links to specifications).
- added GH# 268: Method to get JSON object value using Poco::Nullable
- fixed GH# 267: JSON 'find' not returning empty result if object is expected but another value is found
- Added support for ARM64 architecture and iPhone 5s 64-bit builds
  (POCO_TARGET_OSARCH=arm64).


Release 1.5.1 (2013-01-11)
==========================

- using double-conversion library for floating-point numeric/string conversions
- added Poco::istring (case-insensitive string) and Poco::isubstr
- added SQLite sys.dual (in-memory system table)
- applied SF Patch #120: The ExpireLRUCache does not compile with a tuple as key on Visual Studio 2010
- fixed SF Bug #599: JSON::Array and JSON::Object size() member can implicitly lose precision
- fixed SF Bug #602: iterating database table rows not correct if no data in table
- fixed SF Bug #603: count() is missing in HashMap
- fixed GH #23: JSON::Object::stringify throw BadCastException
- fixed GH #16: NetworkInterface::firstAddress() should not throw on unconfigured interfaces
- Android compile/build support (by Rangel Reale)
- TypeHandler::prepare() now takes const-reference
- fixed GH #27: Poco::URI::decode() doesn't properly handle '+'
- fixed GH #31: JSON implementation bug
- fixed SF #597: Configure script ignores cflags
- fixed SF #593: Poco 1.5.0 on FreeBSD: cannot find -ldl
- added SF #542: SocketAddress() needs port-only constructor
- fixed SF #215: Wrong return type in SocketConnector.h
- applied SF Patch #97: fix c++0x / clang++ bugs
- fixed GH32/SF596: Poco::JSON: Parsing long integer (int64) value fails.
- added Net ifconfig sample (contributed by Philip Prindeville)
- merged GH #34: add algorithm header (Roger Meier/Philip Prindeville)
- fixed GH #26: Cannot compile on gcc
- merged SF #111: FTP Client logging (Marian Krivos)
- fixed GH #30: Poco::Path::home() throws when called from Windows Service
- fixed GH #22: MySQL connection string lowercased
- added MySQL support for Date/Time
- upgraded SQLite to version 3.7.15.1 (2012-12-19)
- improved SQLite execute() return (affected rows) value and added tests
- added SQLite::Utility::isThreadSafe() function
- added SQLite::Utility::setThreadMode(int mode) function
- fixed GH #36: 'distclean' requires 3 traversals of project tree
- fixed GH #41: Buffer::resize crash
- fixed GH #42: Linux unbundled builds don't link
- fixed GH #44: Problems with win x64 build
- fixed GH #46: 1.5.1 build fails on OS X when using libc++
- fixed GH #48: Need getArgs() accessor to Util::Application to retrieve start-up arguments
- fixed GH #49: NetworkInterface::list doesn't return MAC addresses
- fixed GH #51: Android should use isfinite, isinf, isnan and signbit from the std namespace
- fixed GH #53: JSON unicode fixes and running tests on invalid unicode JSON
- added ParallelAcceptor and ParallelReactor classes
- added EOF and error to FIFOBuffer


Release 1.5.0 (2012-10-14)
==========================

- added JSON library
- added Util::JSONConfiguration
- added FIFOBuffer and FIFOBufferStream
- fixed SF# 3522906: Unregistering handlers from SocketReactor
- fixed SF# 3522084: AbstractConfiguration does not support 64-bit integers
- HTTPServer::stopAll(): close the socket instead of just shutting it down, as the latter won't wake up a select() on Windows
- added SMTPLogger
- added cmake support
- fixed SF#3538778: NetworkInterface enumeration uses deprecated API
- fixed SF#3538779: IPAddress lacks useful constructors: from prefix mask, native SOCKADDR
- fixed SF#3538780: SocketAddress needs operator < function
- fixed SF#3538775: Issues building on Fedora/Centos, etc. for AMD64
- fixed SF#3538786: Use size_t for describing data-blocks in DigestEngine
- added IPAddress bitwise operators (&,|,^,~)
- added IPAddress BinaryReader/Writer << and >> operators
- modified IPAddress to force IPv6 to lowercase (RFC 5952)
- fixed SF#3538785: SMTPClientSession::sendMessage() should take recipient list
- added IPAddress::prefixLength()
- UTF portability improvements
- fixed SF#3556186: Linux shouldn't use <net/if.h> in Net/SocketDefs.h
- added IPAddress RFC 4291 compatible site-local prefix support
- fixed SF#3012166: IPv6 patch
- added SF#3558085: Add formatter to MACAddress object
- fixed SF#3552774: Don't hide default target in subordinate makefile
- fixed SF#3534307: Building IPv6 for Linux by default
- fixed SF#3516844: poco missing symbols with external >=lipcre-8.13
- added SF#3544720: AbstractConfigurator to support 64bit values
- fixed SF#3522081: WinRegistryConfiguration unable to read REG_QWORD values
- fixed SF#3563626: For Win32 set Up/Running flags on NetworkInterface
- fixed SF#3560807: Deprecate setPeerAddress() as this is now done in getifaddrs
- fixed SF#3560776: Fix byte-ordering issues with INADDR_* literals
- fixed SF#3563627: Set IP address on multicast socket from socket family
- fixed SF#3563999: Size BinaryWriter based on buffer's capacity(), not size()
- fixed SF#102 Fix building Poco on Debian GNU/kFreeBSD
- fixed SF#321 Binding DatTime or Timestamp
- fixed SF#307 Detect the SQL driver type at run time
- added VS 2012 Projects/Solutions
- enhanced and accelerated numeric parsing for integers and floats
- fixed SF#590 Segfault on FreeBSD when stack size not rounded
- added warn function and warnmsg macro in CppUnit
- fixed SF# 3558012 Compilation fails when building with -ansi or -std=c++0x
- fixed SF# 3563517 Get rid of loss-of-precision warnings on x64 MacOS
- fixed SF#3562244: Portability fix for AF_LINK
- fixed SF #3562400: DatagramSocketImpl comment is incorrect


Release 1.4.7p1 (2014-11-25)
============================

- Fixed Visual C++ 2010-2013 project files. Release builds now have optimization enabled.
- Poco::URI: added constructor to create URI from Path.
- fixed GH #618: OS X 10.10 defines PAGE_SIZE macro, conflicts with PAGE_SIZE in Thread_POSIX.cpp
- Poco::Net::HTTPClientSession: added support for global proxy configuration
- fixed GH #331: Poco::Zip does not support files with .. in the name.
- fixed a memory leak in Poco::Net::Context constructor when it fails to load the certificate
  or private key files.
- upgraded bundled SQLite to 3.8.7.2
- fixed GH #229: added missing value() function
- fixed GH #69: MySQL empty text/blob


Release 1.4.7 (2014-10-06)
==========================

- fixed GH #398: PropertyFileConfiguration: input != output
- fixed GH #368: Build failure of Poco 1.4.6p2 on FreeBSD 9.2
- fixed GH #318: Logger local time doesn't automatically account for DST
- fixed GH #317: Poco::Zip does not support newer Zip file versions.
- fixed GH #454: Fix: handle unhandled exceptions
- fixed GH #463: XML does not compile with XML_UNICODE_WCHAR_T
- fixed GH #282: Using Thread in a global can cause crash on Windows
- fixed GH #424: Poco::Timer deadlock
- fixed GH #465: Fix result enum type XML_Error -> XML_Status
- fixed GH #510: Incorrect RSAKey construction from istream
- fixed GH #332: POCO::ConsoleChannnel::initColors() assigns no color to
  PRIO_TRACE and wrong color to PRIO_FATAL
- fixed GH #550: WebSocket fragmented message problem
- Poco::Data::MySQL: added SQLite thread cleanup handler
- Poco::Net::X509Certificate: improved and fixed domain name verification for
  wildcard domains
- fixed a crash in Foundation testsuite with Visual C++ 2012
- improved and fixed domain name verification for wildcard domains in
  Poco::Net::X509Certificate
- updated TwitterClient sample to use new 1.1 API and OAuth
- added Poco::Clock class, which uses a system-provided monotonic clock
  (if available) and is thus not affected by system realtime clock changes.
  Monotonic Clock is available on Windows, Linux, OS X and on POSIX platforms
  supporting clock_gettime() and CLOCK_MONOTONIC.
- Poco::Timer, Poco::Stopwatch, Poco::TimedNotificationQueue and Poco::Util::Timer
  have been changed to use Poco::Clock instead of Poco::Timestamp and are now
  unaffected by system realtime clock changes.
- added Poco::PBKDF2Engine class template
- Poco::Net::HTTPCookie: added support for Priority attribute (backport from develop)
- fixed makedepend.* scripts to work in paths containing '.o*'
  (contributed by Per-Erik Bjorkstad, Hakan Bengtsen)
- Upgraded bundled SQLite to 3.8.6
- Support for Windows Embedded Compact 2013 (Visual Studio 2012)
- Project and solution files for Visual Studio 2013
- Changes for C++11 compatibility.
- fixed an issue with receiving empty web socket frames (such as ping)
- improved error handling in secure socket classes
- Poco::ByteOrder now uses intrinsics if available
- added new text encoding classes: Latin2Encoding, Windows1250Encoding, Windows1251Encoding
- Zip: Added CM_AUTO, which automatically selects CM_STORE or CM_DEFLATE based on file extension.
  Used to avoid double-compression of already compressed file formats such as images.


Release 1.4.6p4 (2014-04-18)
============================

- no longer use reverse DNS lookups for cert hostname validation
- cert hostname validation is case insensitive and more strict
- HTMLForm: in URL encoding, percent-encode more special characters
- fixed thread priority issues on POSIX platforms with non-standard scheduling policy
- XMLWriter no longer escapes apostrophe character
- fixed GH #316: Poco::DateTimeFormatter::append() gives wrong result for Poco::LocalDateTime
- fixed GH #305 (memcpy in Poco::Buffer uses wrong size if type != char)
- Zip: fixed a crash caused by an I/O error (e.g., full disk) while creating a Zip archive


Release 1.4.6p3 (2014-04-02)
============================

- Fixed a potential security vulnerability in client-side X509
  certificate verification.


Release 1.4.6p2 (2013-09-16)
============================

- fixed GH #156: Possible buffer overrun in Foundation/EventLogChannel
- XML: fixed an issue with parsing a memory buffer > 2 GB
- upgraded to expat 2.1.0
- Data/ODBC: added support for setting query timeout (via setProperty
  of "queryTimeout"). Timeout is int, given in seconds.
- fixed a potential endless loop in SecureStreamSocketImpl::sendBytes()
  and also removed unnecessary code.
- fixed GH #159: Crash in openssl CRYPTO_thread_id() after library libPocoCrypto.so
  has been unloaded.
- fixed GH #155: MailOutputStream mangles consecutive newline sequences
- fixed GH# 139: FileChannel::PROP_FLUSH is invalid (contains a tab character)
- fixed GH# 173: HTTPClientSession::proxyConnect forces DNS lookup of host names
- fixed GH# 194: MessageNotification constructor is inefficient.
- fixed GH# 189: Poco::NumberParser::tryParse() documentation bug
- fixed GH# 172: IPv6 Host field is stripped of Brackets in HTTPClientSession
- fixed GH# 188: Net: SocketAddress operator < unusable for std::map key
- fixed GH# 128: DOMWriter incorrectly adds SYSTEM keyword to DTD if PUBLIC is
  already specified
- fixed GH# 65: Poco::format() misorders sign and padding specifiers
- upgraded bundled SQLite to 3.7.17
- upgraded bundled zlib to 1.2.8
- fixed a potential memory leak in Poco::Net::HTTPClientSession if it is misused
  (e.g., sendRequest() is sent two times in a row without an intermediate call to
  receiveResponse(), or by calling receiveResponse() two times in a row without
  an intermediate call to sendRequest()) - GH #217
- removed a few unnecessary protected accessor methods from Poco::Net::HTTPClientSession
  that would provide inappropriate access to internal state
- fixed GH# 223 (Poco::Net::HTTPCookie does not support expiry times in the past)
- fixed GH# 233: ServerSocket::bind6(Poco::UInt16 port, bool reuseAddress, bool ipV6Only)
  does not work
- added ColorConsoleChannel and WindowsColorConsoleChannel classes supporting
  colorizing log messages
- fixed GH# 259: Poco::EventLogChannel fails to find 64bit Poco Foundation dll
- fixed GH# 254: UTF8::icompare unexpected behavior
- Poco::UUID::tryParse() also accepts UUIDs without hyphens. Also updated documentation
  (links to specifications).
- Added support for ARM64 architecture and iPhone 5s 64-bit builds
  (POCO_TARGET_OSARCH=arm64).


Release 1.4.6p1 (2013-03-06)
============================

- fixed GH# 71: WebSocket and broken Timeouts (POCO_BROKEN_TIMEOUTS)
- fixed an ambiguity error with VC++ 2010 in Data/MySQL testsuite
- Poco::Net::NetworkInterface now provides the interface index even for IPv4
- added DNS::reload() as a wrapper for res_init().
- On Linux, Poco::Environment::nodeId() first always tries to obtain the
  MAC address of eth0, before looking for other interfaces.
- Poco::Net::HTTPSession now always resets the buffer in connect() to clear
  any leftover data from a (failed) previous session
- fixed copysign namespace issue in FPEnvironment_DUMMY.h
- fixed a warning in Poco/Crypto/OpenSSLInitializer.h
- added a build configuration for BeagleBoard/Angstrom
- fixed GH# 109: Bug in Poco::Net::SMTPClientSession::loginUsingPlain)
- fixed compile errors with clang -std=c++11
- fixed GH# 116: Wrong timezone parsing in DateTimeParse (fix by Matej Knopp)
- updated bundled SQLite to 3.7.15.2


Release 1.4.6 (2013-01-10)
==========================

- changed FPEnvironment_DUMMY.h to include <cmath> instead of <math.h>
- updated bundled SQLite to 3.7.15.1
- fixed GH# 30: Poco::Path::home() throws
- fixed SF Patch# 120 The ExpireLRUCache does not compile with a tuple as key on VS2010
- fixed SF# 603 count() is missing in HashMap
- Crypto and NetSSL_OpenSSL project files now use OpenSSL *MD.lib library files for
  static_md builds. Previously, the DLL import libs were used.
- Poco::Environment::osDisplayName() now recognizes Windows 8/Server 2012


Release 1.4.5 (2012-11-19)
==========================

- added Visual Studio 2012 project files
- buildwin.cmd now support building with msbuild for VS2010 and 2012.
- added Poco::Optional class
- fixed SF# 3558012 Compilation fails when building with -ansi or -std=c++0x
- fixed SF# 3563517 Get rid of loss-of-precision warnings on x64 MacOS
- fixed SF# 3562244: Portability fix for AF_LINK
- fixed SF# 3562400: DatagramSocketImpl comment
- fixed SF# 594: Websocket fails with small masked payloads
- fixed SF# 588: Missing POCO_ARCH and POCO_ARCH_LITTLE_ENDIAN define for WinCE on SH4
- fixed SF# 581: Out-of-bound array access in Unicode::properties() function.
- fixed SF# 590: Segfault on FreeBSD when stack size not rounded
- fixed SF# 586: Poco::DateTimeParser and ISO8601 issues when seconds fraction has more than 6 digits
- Poco::Net::HTTPSSessionInstantiator::registerInstantiator() now optionally accepts a
  Poco::Net::Context object.
- added Poco::XML::XMLWriter::depth() member function.
- added Poco::XML::XMLWriter::uniquePrefix() and Poco::XML::XMLWriter::isNamespaceMapped().
- Poco::FileChannel now supports a new rotateOnOpen property (true/false) which can be used
  to force rotation of the log file when it's opened.
- fixed a bug in Poco::XML::XMLWriter::emptyElement(): need to pop namespace context
- OS X builds now use Clang as default compiler
- Updated SQLite to 3.7.14.1
- POCO_SERVER_MAIN macro now has a try ... catch block for Poco::Exception and writes
  the displayText to stderr.
- Poco/Platform.h now defines POCO_LOCAL_STATIC_INIT_IS_THREADSAFE macro if the compiler
  generates thread-safe static local initialization code.


Release 1.4.4 (2012-09-03)
==========================

- ZipStream now builds correctly in unbundled build.
- added proxy digest authentication support to Net library
- integrated MySQL BLOB fixes from Franky Braem.
- use standard OpenSSL import libraries (libeay32.lib, ssleay32.lib) for Crypto and
  NetSSL_OpenSSL Visual Studio project files.
- fixed a potential buffer corruption issue in Poco::Net::SecureStreamSocket if lazy
  handshake is enabled and the first attempt to complete the handshake fails
- Poco::DateTimeParser::tryParse() without format specifier now correctly parses ISO8601
  date/times with fractional seconds.
- Poco::Process::launch() now has additional overloads allowing to specify an initial
  directory and/or environment.
- Poco::Net::FTPClientSession: timeout was not applied to data connection, only to
  control connection.
- Fixed potential IPv6 issue with socket constructors if IPv6 SocketAddress is given
  (contributed by ??????? ????????? <milovidov@yandex-team.ru>).
- Added an additional (optional) parameter to Poco::Thread::setOSPriority() allowing to
  specify a scheduling policy. Currently this is only used on POSIX platforms and allows
  specifying SCHED_OTHER (default), SCHED_FIFO or SCHED_RR, as well as other
  platform-specific policy values.
- Added Poco::Crypto::DigestEngine class providing a Poco::DigestEngine interface to
  the digest algorithms provided by OpenSSL.
- Fixed some potential compiler warnings in Crypto library
- In some cases, when an SSL exception was unexpectedly closed, a generic Poco::IOException
  was thrown. This was fixed to throw a SSLConnectionUnexpectedlyClosedException instead.
- Added Poco::ObjectPool class template.
- Poco::Net::HTTPServer has a new stopAll() method allowing stopping/aborting of all
  currently active client connections.
- The HTTP server framework now actively prevents sending a message body in the
  response to a HEAD request, or in case of a 204 No Content or 304 Not Modified
  response status.
- fixed a DOM parser performance bug (patch by Peter Klotz)
- fixed SF# 3559325: Util Windows broken in non-Unicode
- updated iOS build configuration to use xcode-select for finding toolchain
- Poco::Net::SecureSocketImpl::shutdown() now also shuts down the underlying socket.
- fixed SF# 3552597: Crypto  des-ecb error
- fixed SF# 3550553: SecureSocketImpl::connect hangs
- fixed SF# 3543047: Poco::Timer bug for long startInterval/periodic interval
- fixed SF# 3539695: Thread attributes should be destroyed using the pthread_attr_destroy()
- fixed SF# 3532311: Not able to set socket option on ServerSocket before bind
  Added Poco::Net::Socket::init(int af) which can be used to explicitely
  initialize the underlying socket before calling bind(), connect(), etc.
- fixed SF# 3521347: Typo in UnWindows.h undef
- fixed SF# 3519474: WinRegistryConfiguration bug
  Also added tests and fixed another potential issue with an empty root path passed to the constructor.
- fixed SF# 3516827: wrong return value of WinRegistryKey::exists()
- fixed SF# 3515284: RSA publickey format(X.509 SubjectPublicKeyInfo)
- fixed SF# 3503267: VxWorks OS prio is not set in standard constructor
- fixed SF# 3500438: HTTPResponse failure when reason is empty
- fixed SF# 3495656: numberformater, numberparser error in mingw
- fixed SF# 3496493: Reference counting broken in TaskManager postNotification
- fixed SF# 3483174: LogFile flushing behavior on Windows
  Flushing is now configurable for FileChannel and SimpleFileChannel
  using the "flush" property (true or false).
- fixed SF# 3479561: Subsequent IPs on a NIC is not enumerated
- fixed SF# 3478665: Permission checks in Poco::File not correct for root
- fixed SF# 3475050: Threading bug in initializeNetwork() on Windows
- fixed SF# 3552680: websocket small frames bug and proposed fix
- fixed a WebSocket interop issue with Firefox
- added Poco::Net::MessageHeader::hasToken()
- Poco::AtomicCounter now uses GCC 4.3 builtin atomics on more platforms
- fixed SF# 3555938: NetSSL: socket closed twice
- socket exceptions now include OS error code
- fixed SF# 3556975: Need to fix Shared Memory for memory map
- Poco::Net::SecureSocketImpl::close() now catches exceptions thrown by its call to shutdown().
- fixed SF# 3535990: POCO_HAVE_IPv6 without POCO_WIN32_UTF8 conflict
- fixed SF# 3559665: Poco::InflatingInputStream may not always inflate completely
- added Poco::DirectoryWatcher class
- fixed SF# 3561464: Poco::File::isDevice() can throw due to sharing violation
- Poco::Zip::Compress::addRecursive() has a second variant that allows to specify the compression method.
- Upgraded internal SQLite to 3.7.14


Release 1.4.3p1 (2012-01-23)
============================

- fixed SF# 3476926: RegDeleteKeyEx not available on Windows XP 32-bit


Release 1.4.3 (2012-01-16)
==========================

- fixed a compilation error with Data/MySQL on QNX.
- fixed Util project files for WinCE (removed sources not compileable on CE)
- removed MD2 license text from Ackowledgements document
- fixed iPhone build config for Xcode 4.2 (compiler name changed to llvm-g++)
- Poco::Util::XMLConfiguration: delimiter char (default '.') is now configurable.
  This allows for working with XML documents having element names with '.' in them.
- Poco::Util::OptionProcessor: Required option arguments can now be specified as
  separate command line arguments, as in "--option value" in addition to the
  "--option=value" format.
- Poco::Util::HelpFormatter: improved option help formatting if  indentation has
  been set explicitely.
- added Mail sample to NetSSL_OpenSSL, showing use of Poco::Net::SecureSMTPClientSession.
- added additional read() overloads to Poco::Net::HTMLForm.
- fixed SF# 3440769: Poco::Net::HTTPResponse doesn't like Amazon EC2 cookies.
- added support for requiring TLSv1 to Poco::Net::Context.
- added an additional constructor to Poco::Net::HTTPBasicCredentials, allowing
  the object to be created from a string containing a base64-encoded, colon-separated
  username and password.
- Poco::Zip::ZipStreamBuf: fixed a crash if CM_STORE was used.
- Added setContentLength64() and getContentLength64() to Poco::Net::HTTPMessage.
- added Poco::Environment::osDisplayName().
- fixed SF# 3463096: WinService leaves dangling handles (open() now does not reopen the
  service handle if it's already open)
- fixed SF# 3426537: WinRegistryConfiguration can't read virtualized keys
- added Poco::Buffer::resize()
- fixed SF# 3441822: thread safety issue in HTTPClientSession:
  always use getaddrinfo() instead of gethostbyname() on all platforms supporting it
- added version resource to POCO DLLs
- fixed SF# 3440599: Dir Path in Quotes in PATH cause PathTest::testFind to fail.
- fixed SF# 3406030: Glob::collect problem
- added Poco::Util::AbstractConfiguration::enableEvents()
- Poco::AtomicCounter now uses GCC builtins with GCC 4.1 or newer
  (contributed by Alexey Milovidov)
- made Poco::Logger::formatDump() public as it may be useful for others as well
  (SF# 3453446)
- Poco::Net::DialogSocket now has a proper copy constructor (SF# 3414602)
- Poco::Net::MessageHeader and Poco::Net::HTMLForm now limit the maximum number of
  fields parsed from a message to prevent certain kinds of denial-of-service
  attacks. The field limit can be changed with the new method setFieldLimit().
  The default limit is 100.
- Poco::NumberFormatter, Poco::NumberParser and Poco::format() now always use the
  classic ("C") locale to format and parse floating-point numbers.
- added Poco::StreamCopier::copyStream64(), Poco::StreamCopier::copyStreamUnbuffered64()
  and Poco::StreamCopier::copyToString64(). These functions use a 64-bit integer
  to count the number of bytes copied.
- upgraded internal zlib to 1.2.5
- upgraded internal sqlite to 3.7.9
- XML: integrated bugfix for Expat bug# 2958794 (memory leak in poolGrow)
- Added support for HTTP Digest authentication (based on a contribution by
  Anton V. Yabchinskiy (arn at bestmx dot ru)). For information on how
  to use this, see the Poco::Net::HTTPCredentials, Poco::Net::HTTPDigestCredentials
  and Poco::Net::HTTPAuthenticationParams classes.
- Poco::Net::HTTPStreamFactory and Poco::Net::HTTPSStreamFactory now support Basic
  and Digest authentication. Username and password must be provided in the URI.
- added Poco::Net::WebSocket, supporting the WebSocket protocol as described in RFC 6455
- NetSSL_OpenSSL: added client-side support for Server Name Indication.
  Poco::Net::SecureSocketImpl::connectSSL() now calls SSL_set_tlsext_host_name()
  if its available (OpenSSL 9.8.6f and later).
- added Poco::Net::HTTPClientSession::proxyConnect() (factored out from
  Poco::Net::HTTPSClientSession::connect())
- added Poco::Process::kill(const Poco::ProcessHandle&) which is preferable to
  kill(pid) on Windows, as process IDs on Windows may be reused.
- fixed SF# 3471463: Compiler warnings with -Wformat
- Poco::Util::Application::run() now catches and logs exceptions thrown in initialize()
- Fixed a WinCE-specific bug in Poco::Util::ServerApplication where uninitialize() would
  be called twice.
- fixed SF# 3471957: WinRegistryKey::deleteKey() unable to delete alt views
- Added additional constructor to Poco::ScopedLock and Poco::ScopedLockWithUnlock
  accepting a timeout as second argument.
- Added Poco::Logger::parseLevel()
- Poco::format(): an argument that does not match the format
  specifier no longer results in a BadCastException. The string [ERRFMT] is
  written to the result string instead.
- PageCompiler: added createSession page attribute.
jperkin pushed a commit that referenced this issue Feb 4, 2016
Changelog:
------------
Qhull 2015.2 2016/01/18 (7.2.0)
 - Fixed memory leak in ~QhullQh [M. Sandim]
   QhullQh.cpp: call checkAndFreeQhullMemory() in the destructor.  Otherwise memT is not freed.
   Remove checkAndFreeQhullMemory() from Qhull.h.  It is not needed.
   Remove calls to checkAndFreeQhullMemory in qhulltest.  It is called by ~QhullQh()
   libqhull_r.h: Document qh_ASvornoi and facetT.center
   qh_freeqhull: if qh_NOmem, use qh_ALL
   qh_memalloc: short memory is freed by qh_memfreeshort unless qh_NOmem
   qh_memstatistics (mem.c): call qh_memcheck() as done in mem_r.c
   qh_new_qhull calls qh_memcheck
   qh_newvertex: free vertex on error
   qh_projectinput: Free memory allocations on error
   qh_rboxpoints: free simplex on error
   qh_sethalfspace_all: Fixed memory leak on error QH8032 feasible not inside halfspace
   qh_triangulate_facet: For TRInormals ('Q11') replace qh_copypoints with qh_memalloc
   qh_triangulate_facet: Document qh.TRInormals
   qh_voronoi_center: Free center on error
   qhulltest: Fixed memory leak of s_testcases by calling RoadTest::deleteTests()
   qhulltest: The 'add_*_test' functions append the test object to RoadTest::s_testcases
   ~RoadTest: declare virtual for Q_OBJECT, removeAll not needed
   user_eg2: Check memory at end of each run
   user_r.h: Add QHULL_CRTDBG for invoking Microsoft's memory leak detector
   use _MSC_VER instead of QHULL_OS_WIN for QHULL_CRTDBG
   Call qh_freeqhull with qh_ALL/!qh_ALL instead of 'True/False'
   Include user_r.h with RoadError,h for QHULL_CRTDBG
   Invoke _CrtSetDbgFlag... at beginning of program
   Moved user_r.h/libqhull_r.h/qhull_ra.h as first include (for QHULL_CRTDBG)
   Moved QHULL_OS_WIN from qhull_ra.h to user_r.h
   Removed __CYGWIN__ from QHULL_OS_WIN (same as Qt's qglobal.h)

 - check_dupridge: A bounding box is not sufficient to avoid dupridge errors
 - qh_findbestneighor: Error if qh.CENTERtype is qh_ASvoronoi (i.e., no merging now)
 - qh_printstatlevel: Remove unused parameter, 'start'
 - QhullLinkedList::last() and back(): Return T instead of T& (T is computed)

 - qh-code.htm: "How to convert code to reentrant Qhull"
   Update "Nearly coincident points on an edge"
   Add 2012 size of data structures to "Qhull on 64-bit computers"
 - html/index.htm: Add CGAL to "When to use"
 - qh-optq.htm: Add documentation for option 'Q12'
 - Move suggestions from Changes.txt to qh-code.htm#enhance
 - user_r.h: Fixed qh-us_r.html links
 - Fixed links in html pages

 - QhullIterator and QhullLinkedList: Include <iterator> [B. Boeckel]
 - Moved include file for each C++ source file to the top of the includes
 - Prepend cpp includes with "libqhullcpp/"
 - RoadLogEvent includes RoadLogEvent.h
 - QhullIterator.h: Only QHULL_DECLARE_SEQUENTIAL_ITERATOR is used.

 - Compared src/libqhull/* to src/libqhull_r/* and resolved differences
 - qh_printpoint in io.c skips qh_IDnone like io_r.c
 - qhull_p-exports.def: Added three missing exports
 - set_r.h: Removed countT. Too many issues

 - libqhull_r/Makefile: Add help prompts to 'make qtest'
 - libqhull.pro: Add '../libqhull/' to sources and headers
 - libqhull/Makefile: Fixed -I,./,,/src

 - qhull-zip.sh: Add CMakeModules to tarball [C. Rosenvik]
 - CMakeLists.txt: Add targets qhullp and user_egp for qh_QHpointer and libqhull_p
 - Reorganized 'make help'
 - Makefile cleanall: Delete testqset and qhulltest from bin/
 - Fix filetype of Unix-only files
 - Fix Unix line endings for Makefile and check in qhull-zip.sh
 - Fix Windows line-endings and check in qhull-zip.sh
 - qhull-zip.sh: Check for Unix text files

 ------------
Qhull 2015.1 2016/01/03 (7.1.0)
 - Add Rbox option 'Cn,r,m' to add nearly coincident points.  Trigger for duplicate ridges
 - Add Qhull option 'Q12' to ignore error on wide merge due to duplicate ridge

 - qh_findbestlower: Call qh_findfacet_all to fix rare "flipped or upper Delaunay" error QH6228.
   QH6228 input provided by J. Metz.  Reported (date order): L. Fiaschi, N. Bowler, A. Liebscher, V. Vieira, N. Rhinehart, N. Vance, P. Shafer
 - qh_check_dupridge: Check if wide merge due to duplicate ridge from nearly coincident points
 - qh_initialhull: Fix error messages for initial simplex is flat
 - qh_determinant: increased 2-d and 3-d nearzero by 10x due to a counter-example
 - rbox: Add qh_outcoord() to output coordinates w/ or w/o iscdd
 - qh_meminit (mem.c): Add call to qh_memcheck
 - Compare libqhull/... to libqhull_r/... and resolve differences
 - Update builds for DevStudio (qhull.sln for msdev 2005..2009, qhull-32.sln and qhull-64.sln for recent releases)

 - qh-impre.htm: Add a section about precision errors for 'Nearly coincident points on an edge'
 - html/index.htm#geomview: Document how to install, build, and use Geomview.
 - html/index.htm: Emphasize program links and move related urls to end
 - qhull/index.htm: Emphasize manual, geomview, and imprecision
 - Fix documentation links in libqhull_r/index.htm
 - Add 'Functions' link to documentation headers
 - Change '<A>...</A>' to '<a>...</a>'
 - libqhull_r/index.htm -- Add instructions for configuring web browsers for source links.
 - libqhull_r/ -- Fix source links for ..._r.htm files

------------
Qhull 2015.0.7 2015/11/09 (7.0.7)
 - Fix return type of operator-> in QhullLinkedList and other collection classes [F. Jares]
 - Fix return types for QhullLinkedList
 - Fix return types for QhullPoints
 - Simplify return type for Coordinates::operator[] (same as QList)
 - Add const to operators for QhullSet::iterator and add documentation
 - Coordinates.h: Fix return types for operations of iterator and const_iterator
 - Drop use of Perforce changelist number in qhull_VERSION of CMakeLists.txt
 - Rename the md5sum files as *.tgz.md5sum instead of *-tgz.md5sum
 - Fix build dependency for testqset_r [asekez]
 - rbox.c depends on Qhull due to qh_lib_check which uses qh_version2 for error messages
 - QhullFacet_test.cpp: Annotate Qhull invocations.   Allows their repetition.
 - QhullFacet_test.cpp: Adjust epsilon on distance tests
 - Do not create libqhullcpp as a shared library.  Qhull C++ classes may change layout and size.
 - qhull-cpp.xml: Make a relative path to road-faq.xsl

------------
Qhull 2015.0.6 2015/10/20 (7.0.6.2013)
 - In the libraries, exit() is only called from qh_exit().  qh_exit may be redefined.
 - Add qh_fprintf_stderr to usermem.c.  May be overridden to avoid use of stderr [D. Sterratt]
   Add usermem to testqset builds
   Used by qh_fprintf_rbox
 - Remove most instances of stderr/stdout from libqhull, libqhull_r, and libqhullcpp [D. Sterratt]
   qh_fprintf_stderr may be redefined.  qh_meminit and qh_new_qhull use stderr as the default ferr
 - qh_initflags: Use qh.fout instead of stdout for 'TO file'.  A library caller may define a different qh.fout.
 - qh_settemppush: Call qh_fprintf() instead of fprintf() on error.
 - Rename qh_call_qhull as "Qhull-template" from user.c.  Updated its references.

 - qh-code.htm: "How to avoid</a> exit(), fprintf(), stderr, and stdout"
 - html/index.htm: Fix table of contents for qh-code
 - libqhull_r/index.htm: Rewrite introduction to Reentrant Qhull
 - qh-faq.htm: Rewrite "Can Qhull use coordinates without placing  them in a data file?"
 - qh-get.html: Link to github
 - Remove qhull_interface.cpp from the documentation

------------
Qhull 2015.0.5 2015/10/12 (7.0.5.1995)
- qh_new_qhull: default 'errfile' is 'stderr'.  outfile and errfile are optional [B. Pearlmutter]
- qh_new_qhull: returns qh_ERRinput instead of exit() if qhull_cmd is not "qhull ..." [B. Pearlmutter]
- qhalf_r.c,etc: Add clear of qh.NOerrexit
- global.c: gcc 4.4.0 mingw32 segfault cleared by adding comment
- usermem_r-cpp.cpp: Optional file to redefine qh_exit() as throw "QH10003.." [B. Pearlmutter]
  qh_exit() is called by qhull_r when qh_errexit() is not available.

- html/index.htm:  Add bibliographic reference to Golub & van Loan and annotated the source references
- qhalf.htm: A halfspace is the points on or below a hyperplane [D. Strawn]
- qh-opto.htm#n: Defined inside, outside, on, above, and below a hyperplane [D. Strawn]
- qhalf.htm#notes: Recast the linear program using negative halfspaces (as used by Qhull) [D. Strawn]
- qhull_a.h: Fix comment '#include "libqhull/qhull_a.h" [fe rew]

- build/qhull*.pc.in: Templates for pkg-config (derived from Fedorra) [P. McMunn]
  https://bitbucket.org/mgorny/pkg-config-spec/src/c1bf12afe0df6d95f2fe3f5e1ffb4c50f018825d/pkg-config-spec.txt?at=master&fileviewer=file-view-default
- Makefile: Remove user_eg3.o from LIBQHULLCPP_OBJS
- Makefile: Add .h dependencies for unix_r.o, etc.
- libqhull/Makefile: Fix build of rbox
- libqhull_r/Makefile: Fix build -I
- qhull.sln/user_eg3:  Add dependency on libcpp
- Removed bin/libqhull_r.dll (should be qhull_r.dll)
- Removed  build/qhulltest.vcproj (see build/qhulltest/qhulltest.vcproj)

------------
Qhull 2015.0.4 2015/9/30 (7.0.4.1984)
 - qh-get.htm: Unix tarball includes version number (e.g., qhull-2015-src-7.1.0.1940.tgz) [Hauptman]
 - qglobal.c: Add qh_version2 with Unix version for "-V" option [Hauptman]
 - build/qhull-32.sln, *-32.vcxproj: Add Visual Studio 32-bit build for 2010+
 - build/qhull-64.sln, *-64.vcxproj: Add Visual Studio 64-bit build for 2010+ [G. Lodron]
 - make-vcproj.sh: Restore to eg/... It is required for Visual Studio builds
 - README.txt: updated builds and reentrant Qhull
 - Add documentation for QHULL_LIB_CHECK
 - qh_lib_check: Check for unknown QHULL_LIB_TYPE
 - qh-code.htm: Add memory requirements for 32- and 64-bit

------------
Qhull 2015.0.3 2015/9/22
 - qh_mem, qh_merge: Log before 'delete' instead of afterwards [Coverity, K. Schwehr]
 - qh_merge: Test for NULL horizon in qh_checkzero [Coverity, K. Schwehr]
 - qh_matchneighbor: Check for matchfacet not a neighbor of facet [Coverity, K. Schwehr]
 - qh_triangulate: Explicit check for visible==NULL [Coverity, K. Schwehr]
 - qh_findbestfacet (unused by qhull): Fix test of isoutside [Coverity, K. Schwehr]
 - qh_check_maxout: Check bestfacet!=0 for logging its id [Coverity, K. Schwehr]
 - qh_nearvertex: Check for bestvertex not found [Coverity, K. Schwehr]
 - qh_checkfacet: Check for missing neighbors of simplicial facets [Coverity, K. Schwehr]
 - qh_setdelnth: Check 'nth' before using it [Coverity, K. Schwehr]
 - Annotate code for Coverity warnings (most of these protected by qh_errexit) [K. Schwehr]

 - qh_printfacet3math: explicit format string (duplicates change to io.c) [B. Pearlmutter]
 - libqhull_r.h: fix spelling error (duplicates change to libqhull.h) [B. Pearlmutter]
 - unix_r.c: fix spelling error (duplicates change to unix.c) [B. Pearlmutter]
 - qhull_a.h: define qhullUnused() only if defined(__cplusplus) [R. Stogner]
 - qh_version: Use const char str[]= "string" instead of const char * str= "string" [U. Drepper, p. 27]
 - qh_newvertex: Use UINT_MAX instead of 0xFFFFFFFF
 - qh_newridge: Use UINT_MAX instead of 0xFFFFFFFF
 - Reviewed FIXUP notes

 - QhullRidge_test: t_foreach use 'foreach(const QhullVertex &v, vertices)
 - Made '#include "RoadTest.h" consistent across all C++ tests

 - qh-code.htm: May also use libqhull_r (e.g., FOREACHfacet_(...))
 - qh-get.htm: Add list of download build repositories

 - Add CMakeModules/CheckLFS.cmake: Enables Large File Support [B. Pearlmutter]
 - Makefile: Use -fpic at all times instead of -fPIC, [U. Drepper p. 15]

------------
Qhull 2015.0.2 2015/9/1
 - global_r.c: Fixed spelling of /* duplicated in...qh_clear_outputflags */ [K. Schwehr]
 - Replaced Gitorious with GitHub
 - Moved 'to do' comments into Changes.txt

------------
Qhull 2015.0.1 2015/8/31

 Source code changes
 - Increased size of vertexT.id and ridgeT.id to 2^32 [H. Strandenes, C. Cantwell]
   Reworded the warning message for ridgeT.id overflow.  It does not affect Qhull output
 - Add qh_lib_check to check for a compatible Qhull library.
   Programs should call QHULL_LIB_CHECK before calling Qhull.
 - Include headers prefixed with libqhull/, libqhull_r/, or libqhullcpp/
 - Renamed debugging routines dfacet/dvertex to qh_dfacet/qh_dvertex
 - Rewrote user_eg, user_eg2, and user_eg3 as reentrant code
 - Renamed 'qh_rand_seed' to 'qh_last_random'.  Declare it as DATA
 - qh_initqhull_start2 sets qh->NOerrexit on initialization
   User must clear NOerrexit after setjmp()

 Other source code changes
 - Define ptr_intT as 'long long' for __MINGW64__ [A. Voskov]
 - poly_r.c: initialize horizon_skip [K. Schwehr]
 - Removed vertexT.dim and MAX_vdim.  It is not used by reentrant Qhull.
 - Removed qhull_inuse.  Not used by C++
 - Removed old __MWERKS__/__POWERPC__ code that speed up SIOUX I/O
 - Moved #include libqhull/... before system includes (e.g., <stdio.h>
 - Comment-out _isatty declaration.  Avoids "C4273 ... inconsistent dll linkage"
 - Add random.h/random_r.h as an include file to random.c/random_r.c
 - Rename rbox routines to qh_roundi/qh_out1/qh_out2n/qh_out3n
 - Rename dfacet and dvertex to qh_dfacet and qh_dvertex
 - Replace 'qhmem .zzz' with 'qhmem.zzz'
 - Removed spaces between function name and parentheses
 - Rename 'enum statistics' to 'enum qh_statistics'
 - Declare rbox as DATA in qhull-exports.def and qhull_p-exports.def
 - In comments, use 'qh.zzz' to reference qhT fields
 - In qh_fprintf, use qhmem.ferr to report errors
 - qh_fprintf may be called for errors in qh_initstatistics and qh_meminit
 - qh_pointid returns qh_IDnone, qh_IDinterior, qh_IDunknown in place of -3, -2, -1 resp.
 - getid_() returns qh_IDunknown in place of -1
 - After qh_meminit, qhmem.ferr is non-zero (stderr is the default)
 - Update qh_MEMalign in testqset.c to user.h (with realT and void*)
 - Split rboxT into a header file
 - Add rboxlib.h to libqhull_a.h
 - Rename PI to qh_PI and extend to 30 digits
 - Rename MAXdim to qh_MAXdim
 - Change spacing for type annotations '*' and '&' in C++ header files
 - Test for !rbox_output/cpp_object in qh_fprintf_rbox
 - Remove 'inline' annotation from explicit inline declarations
 - Column 25 formatting for iterators, etc.
 - Use '#//!\name' for section headers
 - QhullFacet.cpp: zinc_(Zdistio);
 - Clear qhT.ALLOWrestart in qh_errexit
 - Replace longjmp with qh_errexit_rbox in qh_rboxpoints
 - Add jmpExtra after rbox_errexit to protect against compiler errors
 - Add qh.ISqhullQh to indicate initialization by QhullQh()
 - Add library warnings to 'rbox D4', user_eg, user_eg2, user_eg3
 - Add headers to q_eg, q_egtest, and q_test
 - Check that qh.NOerrexit is cleared before call to qh_initflags

Qhull documentation
 - README.txt: Added references to qh-code.htm
 - README.txt: Added section 'Calling Qhull from C programs'
 - qh-code.htm: Moved Performance after C++ and C interface
 - qh-code.htm: Moved Cpp Questions to end of the C++ section
 - qh-code.htm: Fixed documentation for 'include' path.  It should be include/libqhull
 - qconvex.htm: Fixed documentation for 'i'.  It triangulates in 4-d and higher [ref]
 - Clarified qhalf space documentation for the interior point [J. Santos]
 - rbox.c: Version is same date as qh_version in global.c
 - gobal_r.c: Version includes a '.r' suffix to indicate 'reentrant'

Qhull builds
 - Development moved to http://github.com/qhull/qhull
   git clone git@github.com:qhull/qhull.git
 - Exchanged make targets for testing.
   'make test' is a quick test of qhull programs.
   'make testall' is a thorough test
 - Added 'make help' and 'make test' to libqhull and libqhull_r Makefiles
 - CMakeLists.txt: Remove libqhull, libqhull_r, and libqhullcpp from include_directories
 - CMakeLists.txt: Add qhull_SHAREDR for qhull_r
 - CMakeLists.txt: Retain qhull_SHARED and qhull_SHAREDP (qh_QHpointer)
 - CMakeLists.txt: Move qhull_SHARED and qhull_SHAREDP (qh_QHpointer) to qhull_TARGETS_OLD
   Drop qhull_STATICP (use qhull_SHAREDP or qhull_STATIC)
   Set SOVERSION and VERSION for shared libraries
 - Move qhull_p-exports.def back to libqhull
 - Switched to mingw-w64-install for gcc
 - Improved prompts for 'make'
 - qhull-all.pro: Remove user_eg3.cpp from OTHER_FILES
 - libqhull.pro: Ordered object files by frequency of execution, as done before
 - Add the folder name to C++ includes and remove libqhullcpp from INCLUDEPATH
 - Changed CONFIG+=qtestlib to QT+=testlib
 - Changed Makefile to gcc -O3 (was -O2)
 - Changed libqhull/libqhull_r Makefiles to both produce rbox, qhull, ..., user_eg, and user_eg2
 - Removed Debian 'config/...'.  It was needed for Qhull 2012.

libqhull_r (reentrant Qhull)
 - Replaced qh_qh with a parameter to each procedure [P. Klosterman]
   No more globally defined data structures in Qhull
   Simplified multithreading and C++ user interface
   All functions are reentrant (Qt: "A reentrant function can ... be called simultaneously from multiple threads, but only if each invocation uses its own data.")
   No more qh_QHpointer.
   See user_eg3 and qhulltest
   New libraries
      libqhull_r -- Shared library with reentrant sources (e.g., poly_r.h and poly_r.c which replace libqhull's poly.h and poly.c)
      libqhullstatic_r -- Static library with the same sources as libqhull_r
      libqhullcpp -- The C++ interface using libqhullstatic_r (further notes below)
   New executables
      testqset_r -- Test qset_r.c (the reentrant version of qset.c

 Source code changes for libqhull_r
 - Add qh_zero() to initialize and zero memory for qh_new_qhull
 - Remove qh_save_qhull(), qh_restore_qhull(), and qh.old_qhstat from global_r.c
 - Remove qh_freeqhull2() (global_r.c)
 - Remove qh_freestatistics() (stat_r.c)
 - Remove qh_compare_vertexpoint (qhT is not available, unused code)
 - Remove conditional code for __POWERPC__ from unix_r.c and rbox_r.c
 - Move qh_last_random into qh->last_random (random_r.c)
 - Rename sources files with a '_r' suffix.  qhull_a.h becomes qhull_ra.h
 - Replace 'qh' macro with 'qh->'
 - Replace global qhT with parameter-0
 - Add qhmemT to beginning of qhT.  It may not be used standalone.
 - Add qhstatT to end of qhT
 - Remove qhull_inuse
 - Change qhmem.zzz to qh->qhmem.zzz
 - Replace qh_qhstat with qh->qhstat
 - Remove qh_freestatistics
 - Replace qh_last_random with qh->last_random
 - Replace rboxT with qh->rbox_errexit, rbox_isinteger, rbox_out_offset
 - Replace rbox.ferr/fout with qh->ferr/fout
 - No qh for qh_exit, qh_free, qh_malloc, qh_strtod, qh_strtol, qh_stddev
 - New qmake include files qhull-app-c_r.pri, qhull-app-shared_r.pri, qhull-libqhull-src_r.pri
 - Replace 'int' with 'countT' and 'COUNTmax' for large counts and identifiers
 - qhset converted to countT
 - Removed vertexT.dim -- No longer needed by cpp
   Removed MAX_vdim
 - Guarantee that qh->run_id!=0.  Old code assumed that qh_RANDOMint was 31 bits

Changes to libqhullcpp
 - Added QhullVertexSet.h to libqhullcpp.pro and libqhullpcpp.pro
 - QhullVertexSet: error if qhsettemp_defined at copy constructor/assignment (otherwise double free)
 - Enable QhullSet.operator=.  Copy constructor and assignment only copies pointers
 - Changed QhullPoint.operator==() to sqrt(distanceEpsilon)
 - Added assignment of base class QhullPoints to PointCoordinates.operator=
 - Enable QhullPoints.operator=
 - Rename PointCoordinates.point_comment to describe_points
 - Add 'typename T' to definition of QhullSet<T>::value()

C++ interface
 - Reimplemented C++ interface on reentrant libqhull_r instead of libqhull
 - Prepend include files with libqhullcpp/
 - Replaced UsingLibQhull with QhullQh and macro QH_TRY
   Removed UsingLibQhull.currentAngleEpsilon and related routines
   Removed UsingLibQhull_test.cpp
   Replaced globalDistanceEpsilon with QhullQh.distanceEpsilon
   Replaced globalAngleEpsilon with QhullQh.angleEpsilon
   Moved UsingQhullLib.checkQhullMemoryEmpty to QhullQh.checkAndFreeQhullMemory
   Replaced FACTORepsilon=10 with QhullQh.factor_epsilon=1.0
 - To avoid -Wshadow for QhullQh*, use 'qqh' for parameters and 'qh()' for methods
 - Moved messaging from Qhull to QhullQh
 - Add check of RboxPoints* in qh_fprintf_rbox
 - Renamed Qhull.initializeQhull to Qhull.allocateQhullQh
   Added qh_freeqhull(!qh_ALL) as done by unix.c and other programs
 - Moved QhullPoints.extraCoordinatesCount into QhullPoints.cpp
 - Replaced section tags with '#//!\name ...'
 - Removed qhRunId from print() to ostream.
 - Removed print() to ostream.  Use '<< qhullPoint' or '<< qhullPoint.print("message")'

C++ interface for most classes
 - Remove qhRunId
 - Add QhullQh *qh_qh to all types
    Pointer comparisons of facetT,etc. do not test corresponding qh_qh
    Added to end of type for debugging information, unless wasteful alignment
 - Add QhullQh * to all constructors
 - All constructors may use Qhull & instead of QhullQh *
 - For inherited QhullQh types, change to 'protected'
 - Renamed 'o' to 'other' except where used extensively in iterators
 - Except for conditional code, merged the Conversion section into GetSet
 - Removed empty().  Use isEmpty() instead
 - Add operator= instead of keeping it private
 - print_message=0 not allowed.  Use "" instead.
 - Rename isDefined() to isValid() to match Qt conventions

C++ interface by class
 - Coordinates
   Removed empty().  Use isEmpty() instead
   Added append(dim, coordT*)
   Reformated the iterators
   Convert to countT
 - PointCoordinates
   Added constructors for Qhull or QhullQh* (provides access to QhullPoint.operator==)
   Removed PointCoordinates(int pointDimension) since PointCoordinates should have a comment.  Also, it is ambiguous with PointCoordinates(QhullQh*)
   Renamed point_comment to describe_points
   Convert to countT
 - Qhull
   Remove qhull_run_i
   Remove qh_active
   Replace property feasiblePoint with field feasible_point and methods setFeasiblePoint/feasiblePoint
     Returns qh.feasible_point if defined
   Moved useOutputStream to QhullQh use_output_stream
   Renamed useOutputStream() to hasOutputStream()
   Replaced qhull_dimension with qh->input_dim  //! Dimension of result (qh.hull_dim or one less for Delaunay/Voronoi)
   Removed global s_qhull_output= 0;
   Move qhull_status, qhull_message, error_stream, output_stream to QhullQh
   Renamed qhullQh() to qh()
   Added check of base address to allocateQhullQh(),  Was not needed for qhullpcpp
 - QhullFacet
   Constructor requires Qhull or QhullQh* pointer
   Convert to countT
   Dropped implicit conversion from facetT
   Dropped runId
   Add print("message") to replace print()
 - QhullFacetList
   Constructor requires Qhull or QhullQh* pointer
   Convert to countT
   Dropped runId
 - QhullFacetSet
   Removed empty().  Use isEmpty() instead
   Constructor requires Qhull or QhullQh* pointer
   Convert to countT
   Dropped runId
   Add operator=
   Implement print("message")
 - QhullHyperplane
   Add hyperplaneAngle() method
   Rewrite operator== to use hyperplaneAngle()
   Reorganize fields to keep pointers aligned
   Except for default constructor requires Qhull or QhullQh* pointer
   Enable copy assignment
   Reorganized header
 - QhullLinkedList
   Add operator=
   Removed empty().  Use isEmpty() instead
   Convert to countT
   iterator(T) made iterator(const T &)
   const_iterator(T) made const_iterator(const T &)
   const_iterator(iterator) made const_iterator(const iterator &)
 - QhullPoint
   Add constructors for Qhull or QhullQh* pointer (for id() and operator==)
   Add defineAs(coordT*)
   Add getBaseT() and base_type for QhullSet<QhullPoint>
   Added checks for point_coordinates==0
   Removed static QhullPoint::id(), use QhullPoint.id() instead
   distance() throws an error if dimension doesn't agree or if a point is undefined
   Convert to countT
   If !qh_qh, operator==() requires equal coordinates
   Use cout<<p instead of cout<<p.print()
   Reorganized
 - QhullPoints
   Add constructors for Qhull and QhullQh* (for qh.hull_dim, QhullPoint::operator==)
   Remove QhullPoints(int pointDimension) since it is ambiguous with QhullPoints(QhullQh *qqh)
   Add operator=
   Removed empty().  Use isEmpty() instead
   Convert to countT
   operator==() tests if pointers are the same.  Ituses distanceEpsilon if qh_qh is defined
   Reorganized
 - QhullPoints::Iterator and ConstIterator
   Removed default constructors
   Add constructors for Qhull and QhullQh* (for qh.hull_dim, QhullPoint::operator==)
   Moved test of dimension from QHULL_ASSERT to operator==
   Added QHULL_ASSERT of qh_qh
   Convert to countT
 - QhullPointSet
   Constructor requires Qhull or QhullQh* instead of dimension()
   Add operator=
   Removed empty().  Use isEmpty() instead
   Convert to countT
   Always print print_message
   Drop print().  Replace with print("")
 - QhullQh
   Added methods hasOutputStream(), disableOutputStream(), and enableOutputStream() (was Qhull UseOutputStream)
   Add test of qh.NOerrexit to maybeThrowQhullMessage()
   Add qhull_status, qhull_message, error_stream, output_stream from Qhull
   Add factor_epsilon
 - QhullRidge
   Constructor requires Qhull or QhullQh* pointer
   Dropped implicit conversion from ridgeT
   Converted otherFacet() to 'const &'
   Converted nextRidge3d() to 'const &'
   Message for '<< QhullRidge' replaces "   - " instead of preceding it
 - QhullSet
   Removed empty().  Use isEmpty() instead
   Constructor requires Qhull or QhullQh* pointer
   Convert to countT
   Add operator=
 - QhullVertex
   Constructor requires Qhull or QhullQh* pointer
   Convert to countT
   Dropped implicit conversion from vertexT
   Add message to '<< QhullVertex'
 - QhullVertexSet
   Removed empty().  Use isEmpty() instead
   Constructor requires Qhull or QhullQh* pointer
   Convert to countT
 - UsingQhullLib
   Removed
   Replace setGlobalDistanceEpsilon with setFactorEpsilon
   Replace globalDistanceEpsilon with distanceEpsilon

------------
Qhull 2012.1  2012/02/18 6.3.1.1494
 - Fix CMakeLists for libqhull with MATCHES [P. Gajdos]

------------
Qhull 2012.1  2012/02/18 6.3.1.1490

Code changes
 - Require option 'Qz' for Delaunay triangulation/Voronoi diagram
   of cocircular/cospherical points [D. Sheehy]
 - qh_errexit: Do not call qh_printsummary or qh_printstats on qh_ERRinput
 - Change error QH6227 (all degenerate) from qh_ERRinput to qh_ERRprec
 - Change error QH6159 (ID overflow) from qh_ERRinput to qh_ERRqhull
 - eg/q_eg, q_egtest, q_test: Run if qconvex is in $PATH [M. Atzeri]

Build changes [M. Atzeri]
 - Install to share/doc/qhull instead of share/doc/packages/qhull
 - On Unix systems, install to share/man/man1 instead of man/man1
 - CMakeLists: Remove the installation of user_eg* and testqset
 - CMakeLists: Remove VERSION from qhull executables and libraries
 - CMakeLists: Define qhull_SOVERSION instead of qhull_MAJOR
 - CMakeLists: Set SOVERSION for shared libraries
 - Rename libraries to qhull, qhull_d, qhull_p, and qhull_pd
   libqhull6_p.vcproj is now libqhull_p.vcproj
   mingw builds as libqhull.dll
   cygwin builds as cygqhull-6.dll
   linux builds as libqhull.so.6.3.1 with symbolic link as libqhull.so
 - Developers using qhull 2011:
   libqhull6.so is now libqhull_p.so.  Do not use libqhull.so.
   qhull6.dll is now qhull_p.dll.  Do not use qhull.dll.
 - Merged road/ into libqhullcpp/ and qhulltest/
   Moved RoadLogEvent.* and RoadError.* to libqhullcpp
   Moved RoadTest.* to qhulltest (requires Qt)
   Installed RoadTest.h in libqhullcpp

Doc changes
 - index.htm: Mathworks uses qhull for n-d
 - qhull.htm: Fix qhull for qconvex
 - qdelaun.htm/qvoronoi.htm: Use option 'Qz' for circular/cospherical inputs
 - make help: Display targets
 - Makefile: Better messaging

------------
Qhull 2012.1  2012/02/02 6.3.0.1483

Bug fixes
 - Fixed qset.c for -fno-strict-aliasing. This gcc option is no longer needed
   (disallow two pointers of differing types to the same memory location)
 - Fixed error in qh_setappend_set if first set full and second set empty
 - qh_setdelnth, qh_setdelnth_sorted: fixed wording of error message
 - qh_setcheck: error message listed size and max backwards.
 - qh_setequal: Allow NULL set as documented
 - qh_setindex: Allow NULL set as documented
 - qh_settemppush: report error if NULL

Code changes
 - Add testqset: low level test of qset.c with mem.c
 - qh_setendpointer: Implements QSet::endPointer()
 - Assigned unique error code for qh_gethash

Build changes
 - Added qhull.dll(.so) for Octave and other Debian builds
   The global data structure qh_qh is statically defined (no qh_QHpointer)
   Linked user_eg2 with qhull.dll (libqhull.so) instead of qhullstatic
   Added qh_dllimport to libqhull.h for qhull.dll with MSVC
   Changed qhull-app-shared.pri to use libqhull (without qh_QHpointer)
 - Renamed libqhull6.so to libqhull6_p.so
   Renamed qhull6.dll to qhull6_p.dll
   The _p libraries (e.g., libqhull6_p.so) require -Dqh_QHpointer
   Renamed qhull6.vcproj to libqhull6_p.vcproj
   Added libqhullp/libqhullp.pro for shared library (libqhull6_p.so)
   Added qhull-app-sharedp.pri for shared libraries with qh_QHpointer
 - Install libqhull/*.htm files into include/libqhull
 - Removed libqhull/qhull.h-deprecated [J. Eaton]
 - Other changes to Makefile builds
   Added 'make qtestall' as a smoketest of each qhull program
   src/libqhull/Makefile: Use 'ar -rs ...' instead of ranlib
   src/libqhull/Makefile: Fixed targets for cleanall
 - Other changes to DevStudio builds
   Moved pdb files for qhull libraries to lib/
   AdditionalIncludeDirectories: Removed ../src/libqhullcpp
   Use build-cmake/ for the DevStudio CMake build
 - Other changes to Qt builds
   Renamed qhull-libsrc.pri to qhull-libqhull-src.pri
 - Added explicit d2u conversions to qhull-zip.sh
 - Fixed \n vs. \r\n issues for Windows source files

 Draft of Debian/AutoConf build (untested)
 - Adjusted the Makefile.am's for the new directory structure.
 - Added testqset to bin_PROGRAMS
 - config/bootstrap.sh copies program sources into src/libqhull
 - Kept qh_QHpointer=0 (static global data structure, qh_qh).  It is faster.
   Planning a new interface (qhull7?) which passes qh_qh as a parameter
 - Added config/changelog from the 2003.1 Debian build
 - Moved the debian/patches directory to config/
   Optional patches to change smoketest message and turn on qh_QHpointer
 - Deleted the debian directory.  It was the old Debian build from 2003.1
   Rafael Laboissiere's config directory replaced this build..
 - Deleted Make-conf.sh (also the old Debian build)

Doc changes
 - FAQ: Updated notes on computing volume of a Voronoi region
 - Added direct link to ACM Digital Library for downloading the qhull paper
 - Added link to Qhull in R
 - qset.c: Updated notes about NULL sets
 - qh_setappend: clarify qh_setappend for NULL newelem
 - qh_setdellast: Fix head note
 - Add build/README.txt
 - Add uninstall instructions to README.txt and CMakeLists.txt
 - Added instructions to create build/*.vcproj to CMakeLists.txt
 - Update copyright to 2012
 - Updated page links.  Added Google books, patents, and blogs.

-----------
Qhull 2009.1.3 2011/12/06
  configure: Add  -fno-strict-aliasing if $GCC,  Required for gcc 4.1+

------------
Qhull 2011.2  2011/11/29 6.2.1.1446

Bug fixes
 - qh_new_qhull: Call qh_prepare_output if !outfile [A. Aldoma]
   No effect on qhull users since qh_prepare_output is always called.
 - Replace Qhull-go.pif with Qhull-go.lnk for Windows 7 64-bit [lots]
 - Error if qh_newhashtable, qh_setnew, or qh_memalloc overflows [X. Cheng]
   For example, 'rbox 64 D32' overflows hash table for qh_matchnewfacets
   Qhull uses 32-bit ints for identifiers, counts, and sizes. See "WARN64"
 - q_eg, q_test: change tail +3 to tail -n +3 [N. Dubray, M. Atzeri]
 - Qhull-go.bat: Changed 'cmd' to '%comspec%'

Build changes
 - Added src/libqhull/Makefile for simple gcc build of executables and lib
 - qhulltest.vcproj: Replaced full path to QT with $QTDIR (e.g., c:/qt/4.7.4)
 - Split userprintf_rbox.c from userprintf.c,
   Otherwise qhull brings in rboxlib and rbox brings in libqhull
 - Makefile: qhullx target must be after LIBQHULLS_OBJS
 - Makefile: Explicitly list rbox dependencies for qhullx target
 - MBorland: Fixed tabs
 - Placed $LIBQHULLS_OBJS in same order.  Frequently called ones together.
 - Update file lists for Make-config.sh [O. Lahaye]
 - CMakeLists: add README.txt,etc. to DOC_INSTALL_DIR [M. Atzeri]
 - Restored qhull.h-deprecated.
   qhull.h conflicts with Qhull.h on Windows systems [C. Abela]
 - make-config.sh: Add warning that it is out-of-date
 - Remove extra space in '#! /bin/sh' in q_eg, etc. [P. Cheeseman]

Source changes
 - libqhull.h: Added qh_True and qh_False for True/False [A. Mutzel]
   Did not remove or replace True/False since it is used everywhere
 - Moved error message from qh_argv_to_command to caller.  Avoids dependency.
 - user_eg3.c: Use '10 D2' as default rbox (e.g., 'user_eg3 rbox qhull d')
 - user.c, user_eg2.c: Add test of qh_qh as done in user_eg.c
 - q_test: Removed duplicate test of qhull C-0.02

Documentation
 - index.html: Added ACM Authorizer link to ACM Trans. Math. Software
 - Split Delaunay and Voronoi FAQs
 - FAQ: How to compute the volume of a Voronoi region [C, Brinch]
 - Add 'FS' to qconvex prompt (total area and volume)
 - Add clarification to 'Fv' about corner input sites [O. Can]
 - Qhull-go.bat: Removed out-of-date advice.  Added title.
 - qh-code.htm: Updated the discussion of multi-threading for C++ [I. Pirwani]

Qhull 2009.1.2 2011/11/21
 - Revert to LF line endings [P. Cheeseman]
 - Remove out-of-date material from qhull-go.bat
 - Replaced QHULL-GO with a lnk file

Qhull 2011.1  2011/05/23 6.2.0.1385 (exe/dll files unchanged)
 - delaunay.vcproj: Fixed qhullstatic_d.lib for debug and minrelsize builds
 - Did not redate the distribution

Qhull 2011.1  2011/05/18 6.2.0.1385 (exe/dll files unchanged)
 - Add 'm' library to shared and static targets on Unix [A. Bouchard]

Qhull 2011.1  2011/05/14 6.2.0.1383 (exe/dll files unchanged)
 - PointCoordinates.cpp: Add #include <iterator> [R. Richter, S. Pasko]
 - Remove deprecated libqhull/qhull.h
   Use libqhull/libqhull.h instead.  Avoids confusion with libqhullcpp/Qhull.h
 - Makefile: Add LIBDIR, INCDIR, and DESTDIR to install [L.H. de Mello]
     Separate MAN install from DOC install
     Create install directories
     Installs headers to include/libqhull, include/libqhullcpp, include/road
 - CMakeLists.txt: Add MAN_INSTALL_DIR for qhull.1 and rbox.1 man pages
     Add RoadTest.h to include/road for Qt users (road_HEADERS)
 - Renamed md5sum files to avoid two extensions
 - qh-get.htm: Add Readme links and 2009.1 note.
 - qh-optf.htm: Fix link
 - index.htm: Updated Google Scholar link
 - qhull-zip.sh: Improved error message.

------------
Qhull 2011.1  2011/04/17 6.2.0.1373

Changes to deliverables
 - qvoronoi: Deprecated 'Qt' and 'QJn'. Removed from documentation and prompts.
   These options produced duplicate Voronoi vertices for cospherical data.
 - Removed doskey from Qhull-go.bat.  It is incompatible with Windows 7
 - Added 'facets' argument to user_eg3.cpp
 - user_eg links with shared library
 - qhulltest.cpp: Add closing prompt.

Changes to build system
 - Reorganized source directories
 - Moved executables to bin directory
 - Add CMake build for all targets (CMakeFiles.txt) [M. Moll assisted]
 - Add gcc build for all targets (Makefile)
 - Fixed location of qhull.man and rbox.man [M. Moll]
 - Add DevStudio builds for all targets (build/*.vcproj)
 - Added shared library (lib/qhull6.dll)
   Added qh_QHpointer_dllimport to work around problems with MSVC
 - Added static libraries with and without qh_QHpointer (lib/qhullstatic.lib)
 - Added eg/make-vcproj.sh to create vcproj/sln files from cmake and qmake
 - Document location of qh_QHpointer
 - Use shadow build directory
 - Made -fno-strict-aliasing conditional on gcc version
 - Added src/qhull-app-cpp.pri, src/qhull-app-c.pri, etc. for common settings
 - Add .gitignore with ignored files and directories.
 -   Use .git/info/exclude for locally excluded files.
 - Fixed MBorland for new directory structure
 - cleanall (Makefile): Delete 'linked' programs due to libqhull_r and libqhull/Makefile

Changes to documentation
 - qvoronoi.htm: Remove quotes from qvoronoi example
 - qhull-cpp.xml: Add naming conventions
 - index.htm: Add Google Scholar references
 - qh-optf.htm: Add note about order of 'Fn' matching 'Fv' order [Q. Pan]
 - Add patch for old builds in qh-get.htm
 - Added C++ compiling instructions to README.txt
 - Add instructions for fixing the DOS window
 - Changed DOS window to command window
 - Fixed html links
 - qh-get.htm: Dropped the Spanish mirror site.  It was disabled.

Changes to C code
 - mem.h: Define ptr_intT as 'long long' for Microsoft Windows _win64 builds.
   On Linux and Mac, 'long' is 64-bits on a 64-bit host
 - Added qh_QHpointer_dllimport to work around MSVC problem
 - qconvex.c,etc.: Define prototype for _isatty
 - Define MSG_QHULL_ERROR in user.h
 - Move MSG_FIXUP to 11000 and updated FIXUP QH11...

Changes to test code
 - Add note to q_test than R1e-3 may error (qh-code.htm, Enhancements)
 - Add test for executables to q_eg, etc.
 - Fixed Qhull-go.bat.  QHULL-GO invokes it with command.com,

Changes to C++ interface
 - QhullFacet: Added isSimplicial, isTopOrient, isTriCoplanar, isUpperDelaunay
 - Added Qhull::defineVertexFacetNeighbors() for facetNeighbors of vertices.
   Automatically called for facet merging and Voronoi diagrams
   Do not print QhullVertex::facetNeighbors is !facetNeighborsDefined()
 - Assigned FIXUP identifiers
 - QhullError: Add copy constructor, assignment operator, and destructor
 - Add throw() specifiers to RoadError and QhullError
 - Renamed RoadError::defined() to RoadError::isDefined()
 - Add #error to Qhull.h if qh_QHpointer is not defined

Changes to C++ code
 - Fixed bug reported by renangms.  Vertex output throws error QH10034
   and defineVertexNeighbors() does not exist.
 - Define QHULL_USES_QT for qt-qhull.cpp [renangms]
 - Reviewed all copy constructors and copy assignments.  Updated comments.
   Defined Qhull copy constructor and copy assignment [G. Rivet-Sabourin]
   Disabled UsingQhullLib default constructor, copy construct, and copy assign
 - Merged changes from J. Obermayr in gitorious/jobermayrs-qhull:next
 -   Fix strncat limit in rboxlib.c and global.c
 -   Changes to CMakeLists.txt for openSUSE
 - Fixed additional uses of strncat
 - Fixed QhullFacet::PrintRidges to check hasNextRidge3d()
 - Removed gcc warnings for shadowing from code (src/qhull-warn.pri)
 - Removed semicolon after extern "C" {...}
 - Removed experimental QhullEvent/QhullLog
 - Use fabs() instead of abs() to avoid accidental conversions to int
 - Fixed type of vertex->neighbors in qh_printvoronoi [no effect on results]
 - Removed unnecessary if statement in qh_printvoronoi

------------
qhull 2010.1 2010/01/14
- Fixed quote for #include in qhull.h [U.Hergenhahn, K.Roland]
- Add qt-qhull.cpp with Qt conditional code
- Add libqhullp.proj
- Add libqhull5 to Readme, Announce, download
- Reviewed #pragma
- Reviewed FIXUP and assigned QH tags
- All projects compile with warnings enabled
- Replaced 'up' glyphs with &#187;
- Moved cpp questions to qh-code.htm#questions-cpp
- Moved suggestions to qh-code.htm#enhance
- Moved documentation requests to qh-code.htm#enhance
- Add md5sum file to distributions
- Switched to DevStudio builds to avoid dependent libraries, 10% slower
  Removed user_eg3.exe and qhullcpp.dll from Windows build
  Fix qhull.sln and project files for qh_QHpointer
- Add eg/qhull-zip.sh to build qhull distribution files

------------
qhull 2010.1 2010/01/10
- Test for NULL fp in qh_eachvoronoi [D. Szczerba]

qhull 2010.1 2010/01/09

Changes to build and distribution
- Use qh_QHpointer=0 for libqhull.a, qhull, rbox, etc.
  Use -Dqh_QHpointer for libqhullp.a, qhullcpp.dll, etc.
  qh_QHpointer [2010, gcc] 4% time 4% space, [2003, msvc] 8% time 2% space
- Add config/ and project/debian/ for Autoconf build [R. Laboissiere]
  from debian branch in git and http://savannah.nongnu.org/cvs/?group=qhull
- Add CMakeLists.txt [kwilliams]
- Fix tabs in Makefile.txt [mschamschula]
- Add -fno-strict-aliasing to Makefile for gcc 4.1, 4.2, and 4.3 qset segfault
- Remove user_eg.exe and user_eg2.exe from Windows distribution
- Order object files by frequency of execution for better locality.

Changes to source
- Remove ptr_intT from qh_matchvertices.  It was int since the beginning.
- user.h requires <time.h> for CLOCKS_PER_SEC
- Move ostream<<QhullFacetList from inline to compiled.
- Removed ConvexHull/ from git.  Not used.

------------
qhull 2009.1.1 2010/01/09
- Patch release of 2009.1.
  qh_gethash allowed a negative result, causing overwrite or segfault
  See git:qhull/project/patch/qhull-2003.1/poly.c-qh_gethash.patch
  Compared results of q_test, q_eg, q_egtest with patched poly.c, qhull-2003.1

------------
qhull 2010.1 2010/01/07
- Assign type to qh.old_qhstat and memT.tempstack [amorilia]
- Replace tabs with spaces.
- Fix qh_pointid in case ptr_intT is unsigned

qhull 2010.1 2010/01/06
- Fixed serious bug in qh_gethash [poly.c]
- Documentation and build system are incomplete (see above)
- First release of C++ interface [qh-code.htm]
- Development moved to http://gitorious.org/qhull
  git clone git@gitorious.org:qhull/qhull.git
- Did not fix conformant tesselations for 'Qt'.
  For details, see http://www.qhull.org/news#bugs of May 2007 and Dec 2006.
- Use g++ builds for Windows distribution (10% faster than msvc2005)
  Combined vcproj/ and qtproj/ into project/
  vcproj will be replaced by qmake generated files

------------
qhull 2010.0.3 2010/01/05
Fixed bugs
- 'QJn': Fix qh.STOPcone in qh_build_withrestart().  It was not cleared.
- qh_initqhull_outputflags [global.c]: warn about Qc only if QHULLfinished
    otherwise set if needed

qhull 2010.0.2 2010/01/04

Fixed bugs
- qh_gethash [poly.c]: fix sign conversion.
    Previously, the result may be negative, leading to a segfault.
    The bug is more likely with large address spaces
    Reviewed all uses of %(modulo) for remainder with negative arguments
- Reviewed output of q_test and compared to results from 2003.1

Breaking code changes
- Return type of qh_gethash changed from unsigned to int.  Matches 'size'
- addhash takes a signed hash
  qh_addhash( newelem, hashtable, hashsize, hash )

Code changes
- Test for qh_qh in qh_printf
- Makefile.txt corrected for libqhull build [amorilia]
- Renamed index to idx to avoid shadowing BSD strings.h [kwilliams]

qhull 2010.0.1  2010/01/03

New Features:
 - Added option 'Ta' to annotate output with message codes

Preliminary C++ support:
 - C++ declarations may change without warning
 - Preliminary documentation for Qhull's C++ interface [qh-code.htm#cpp, qhull-cpp.xml]
 - Added user_eg3 as an example of Qhull.cpp
 - Removed qhull_interface.cpp.  Use Qhull.cpp instead.
   If math.h breaks '#include qhull_a.h', preceed it with '#include math.h'

Changes to qhull options and results
 - Allow 'd' and 'v' as the filename for 'TO ..' and 'TI ...' in qdelaunay [M. Jambon]
 - 'rbox tN' requires an integer (previously allowed floats)
 - Allow quoted filenames for 'TO ...' and 'TI ...'
 - Prefix error messages and warnings with a message code (e.g., QH6012)
 - Fixed rbox ignoring flags that were not separated by spaces
 - Report all hidden options before exiting in qh_checkflags()
 - Defined qh_OPTIONline [user.h] as max length of option line ('FO')
 - Report error if negative arguments to rbox 'G', 'L', 'Z'
 - Unknown rbox flag changed from a warning to an error
 - Set error status 4 qh_ERRmem if rbox runs out of memory
 - Removed extra spaces at end of line

Breaking Code Changes:
 - Renamed qh.coplanarset to coplanarfacetset.  Avoids conflict with facetT.coplanarset
 - qh_restore_qhull() zeroes out qh.old_qhstat and qh.old_tempstack.  Ownership moved.
 - Rewrote save_qhull/restore_qhull
 - Add Ztotcheck to zzdef_ [R. Gardener]
 - Changed qh_malloc to size_t (was unsigned long)
 - Declare qh_PRINT instead of int [kwilliams]
 - In qh_printafacet(), changed error output to 'qh ferr'

Bug fixes to C code:
 - Use gcc 4.4.0 or later.  gcc 4.2.1, 4.2.2, and 4.3.2 -O2 segfaults in qset.c .  gcc 4.1.1 was OK
   See bug report http://gcc.gnu.org/ml/gcc-bugs/2007-09/msg00474.html
 - Rewrite qh_setappend to avoid g++ 4.1, 4.2, and 4.3 strict_aliasing error.
     Orion Poplawski (orion@cora.nwra.com)
     http://www.rpmfind.net/linux/RPM/fedora/12/ppc/qhull-devel-2003.1-13.fc12.ppc64.html
 - Fixed qh_findfacet_all(), "REALmin" should be "-REALmax" [L.A. Taylor].
     Effects library users for convex hulls and halfspace intersections.
 - qh_printfacet [io.c] Removed extra space for neighboring facets
 - Report error if d points, Delaunay, and not Qz
 - Fixed double-free of facet->centrum for triangulated facets
 - Fixed mindist initialization if !testcentrum in io.c findbest_test [Ratcliff]
 - Fixed parentheses around warning for missing 'Qc' [qh_initqhull_outputflags]
 - Fixed rbox buffer overflow of 'command' when appending seedbuf
 - Fixed option string for 'rbox t t999'.  Although seed was correctly set to 999,
   a random seed was appended to the rbox comment (e.g., 'rbox t t999 t32343')
 - Fixed upper bound of sanity check for qh_RANDOMmax in qh_initqhull_globals()

Changes to C code
 - Reordered #include from specific to general.  Move up .h for module.
 - Removed qh.old_stat -- never used
 - Removed qh_clearcenters from qh_freeqhull.  Duplicated by qh_delfacet
 - qh_printcenter [io.c] removed unreachable fprintf argument
 - qh_getarea() [geom2.c] ignored on multiple calls (qh.hasAreaVolume)
 - qh_getarea() [geom2.c] checks facet->isarea. Set by QhullFacet.facetArea()
 - qh_triangulate() [poly2.c] ignored on multiple calls (qh.hasTriangulation)
 - Add statistics for vertex_visit and visit_id to buildtracing
 - Defined scale and offset parameters for qh_randomfactor

Bug fixes and changes to mem.c/mem.h
 - Fixed qhmem.totshort (total short memory in use)
 - Memory tracing (T5) redone for sort order by object
 - Added full tracing for short memory allocations.
 - Added qhmem.totfree (total short memory on freelists)
     Increases size of qh_memalloc_ and qh_memfree_
 - Added qhmem.totdropped (leftover freesize at end of each short buffer)
 - Added qhmem.totunused (short size - request size)
 - Added qhmem.totbuffer (total short memory buffer w/o links)
 - Added memory statistics to qh_NOmem;
 - Added qh_memtotal to track allocated memory
 - Renamed qh_memfree parameter to 'insize' for consistency with qh_memalloc
 - Removed qhmem.curlong.  qa_memfreeshort computes curlong from cntlong and cntfree
 - In mem.h, changed ptr_intT to long.  qh_meminit() checks that it holds a 'void*'

Fixed g++ and devstudio warnings
 - Except for bit field conversions, compiles cleanly with
   -Wall -Wextra -Wshadow -Wcast-qual -Wwrite-strings -Wno-sign-conversion -Wconversion
 - Fixed warnings at VC8, level 4
 - Fix data types to remove conversion warnings [kwilliams]
 - Use size_t for calls to malloc,etc [kwilliams]
   Retained int sizes for qset.h and mem.h.  Follows Qt convention
   and is easier to work with.  int can be 64-bits if 2 billion facets
 - Change literal strings to const char* [kwilliams]
 - Added type casts to SETfirst and SETsecond [amorilia+alphax]
 - getid_() returns an int [kwilliams]
 - Add missing const annotations [kwilliams]
 - Fixed 64-bit warnings (marked with "WARN64")
 - Convert sizeof to (int) for int parameters
 - In libqhull.c, added explicit casts from long to float,  Avoids warning
 - In global.c, cast time() to int for QRandom-seed.  Avoids warning

Changes to C code for C++ support
 - Add sln, vcproj, and qtpro files for building Qhull -- add to README notes
 - Added dim to vertexT for cpp interface. Reduced size of qh.vertex_visit
 - qh_produce_output [io.c] may be called multiple times (C++ interface)
 - Moved SETsizeaddr_() to qset.h for use by QhullSet.cpp
 - Option 'Tz' sets flag qh.USEstdout for QhullPoints.cpp
 - Added support for multiple output runs from QhullPoints.outputQhull
 -   qh_clear_outputflags() resets the output flags
 -   qh_initqhull_outputflags split from qh_initqhull_globals
 - Added qh.run_id, a random identifier for this instance of Qhull (QhullPoints)
 -   For qh.run_id, initqhull_start initializes qh_RANDOMseed to time instead of 1
 - Extracted qh_argv_to_command (random.c) from qh_init_qhull_command and fixed a buffer overflow
 - Moved qh_strtod/qh_strtol from global.c to random.c for use in rboxlib.c
 - Split out random functions into random.c
 - Added message codes to qh_fprintf().  See its definition in user.c
 - Replaced exit, malloc, free, fprintf, and fputs with qh_malloc,...[J.W. Ratcliff]
 - Added qh_fprintf, qh_malloc, qh_free, ph_printhelp_narrowhull to user.c
 - Moved qh_printhelp_degenerate and qh_printhelp_singular from io.c to user.c
 - Clear qh.ERREXITcalled at end of qh_errexit().

Documentation:
 - Fixed out-of-date CiteSeer references
 - Renamed html/qh-in.htm to html/qh-code.htm
 - Add reference to 'Qt' to 'i'
 - Add reference to 'FS' to 'FA'
 - qh-impre.htm discusses precision issues for halfspace intersection
 - Add cross references between options 'FA' and 'FS'
 - Added link to Wolfram Research's MathWorld site
 - Updated Fukuda's links
 - Changed copyright to C.B. Barber for C++, documentation, and merge.c
 - Updated Qhull citation with page numbers.
 - Proposed project: constructing Voronoi diagram
 - Proposed project: computing Voronoi volumes
 - Replaced tabs with spaces in qhull.txt and rbox.txt

------------
qhull 2009.1  2009/6/11

This is a maintenance release done by Rafael Laboissiere <rafael@debian.org>.
 - src/rbox.c (main): Avoid problems of evaluation order when
   pre-incrementing arguments of strtod
 - src/io.c (qh_produce_output), src/stat.c (qh_initstatistics): Use %lu
   instead of %d in the format string for arguments of type size_t
 - html/qhull.man, html/rbox.man: Fix several syntax, macros, and hyphen
   problems in man pages
 - The Autotools files have been generated with modern version of autoconf (2.63),
   automake/aclocal (1.10.2), and libtool (2.2.6)
 - Some character issues in the man pages are fixed
jperkin pushed a commit that referenced this issue Feb 11, 2016
Changelog:
------------
Qhull 2015.2 2016/01/18 (7.2.0)
 - Fixed memory leak in ~QhullQh [M. Sandim]
   QhullQh.cpp: call checkAndFreeQhullMemory() in the destructor.  Otherwise memT is not freed.
   Remove checkAndFreeQhullMemory() from Qhull.h.  It is not needed.
   Remove calls to checkAndFreeQhullMemory in qhulltest.  It is called by ~QhullQh()
   libqhull_r.h: Document qh_ASvornoi and facetT.center
   qh_freeqhull: if qh_NOmem, use qh_ALL
   qh_memalloc: short memory is freed by qh_memfreeshort unless qh_NOmem
   qh_memstatistics (mem.c): call qh_memcheck() as done in mem_r.c
   qh_new_qhull calls qh_memcheck
   qh_newvertex: free vertex on error
   qh_projectinput: Free memory allocations on error
   qh_rboxpoints: free simplex on error
   qh_sethalfspace_all: Fixed memory leak on error QH8032 feasible not inside halfspace
   qh_triangulate_facet: For TRInormals ('Q11') replace qh_copypoints with qh_memalloc
   qh_triangulate_facet: Document qh.TRInormals
   qh_voronoi_center: Free center on error
   qhulltest: Fixed memory leak of s_testcases by calling RoadTest::deleteTests()
   qhulltest: The 'add_*_test' functions append the test object to RoadTest::s_testcases
   ~RoadTest: declare virtual for Q_OBJECT, removeAll not needed
   user_eg2: Check memory at end of each run
   user_r.h: Add QHULL_CRTDBG for invoking Microsoft's memory leak detector
   use _MSC_VER instead of QHULL_OS_WIN for QHULL_CRTDBG
   Call qh_freeqhull with qh_ALL/!qh_ALL instead of 'True/False'
   Include user_r.h with RoadError,h for QHULL_CRTDBG
   Invoke _CrtSetDbgFlag... at beginning of program
   Moved user_r.h/libqhull_r.h/qhull_ra.h as first include (for QHULL_CRTDBG)
   Moved QHULL_OS_WIN from qhull_ra.h to user_r.h
   Removed __CYGWIN__ from QHULL_OS_WIN (same as Qt's qglobal.h)

 - check_dupridge: A bounding box is not sufficient to avoid dupridge errors
 - qh_findbestneighor: Error if qh.CENTERtype is qh_ASvoronoi (i.e., no merging now)
 - qh_printstatlevel: Remove unused parameter, 'start'
 - QhullLinkedList::last() and back(): Return T instead of T& (T is computed)

 - qh-code.htm: "How to convert code to reentrant Qhull"
   Update "Nearly coincident points on an edge"
   Add 2012 size of data structures to "Qhull on 64-bit computers"
 - html/index.htm: Add CGAL to "When to use"
 - qh-optq.htm: Add documentation for option 'Q12'
 - Move suggestions from Changes.txt to qh-code.htm#enhance
 - user_r.h: Fixed qh-us_r.html links
 - Fixed links in html pages

 - QhullIterator and QhullLinkedList: Include <iterator> [B. Boeckel]
 - Moved include file for each C++ source file to the top of the includes
 - Prepend cpp includes with "libqhullcpp/"
 - RoadLogEvent includes RoadLogEvent.h
 - QhullIterator.h: Only QHULL_DECLARE_SEQUENTIAL_ITERATOR is used.

 - Compared src/libqhull/* to src/libqhull_r/* and resolved differences
 - qh_printpoint in io.c skips qh_IDnone like io_r.c
 - qhull_p-exports.def: Added three missing exports
 - set_r.h: Removed countT. Too many issues

 - libqhull_r/Makefile: Add help prompts to 'make qtest'
 - libqhull.pro: Add '../libqhull/' to sources and headers
 - libqhull/Makefile: Fixed -I,./,,/src

 - qhull-zip.sh: Add CMakeModules to tarball [C. Rosenvik]
 - CMakeLists.txt: Add targets qhullp and user_egp for qh_QHpointer and libqhull_p
 - Reorganized 'make help'
 - Makefile cleanall: Delete testqset and qhulltest from bin/
 - Fix filetype of Unix-only files
 - Fix Unix line endings for Makefile and check in qhull-zip.sh
 - Fix Windows line-endings and check in qhull-zip.sh
 - qhull-zip.sh: Check for Unix text files

 ------------
Qhull 2015.1 2016/01/03 (7.1.0)
 - Add Rbox option 'Cn,r,m' to add nearly coincident points.  Trigger for duplicate ridges
 - Add Qhull option 'Q12' to ignore error on wide merge due to duplicate ridge

 - qh_findbestlower: Call qh_findfacet_all to fix rare "flipped or upper Delaunay" error QH6228.
   QH6228 input provided by J. Metz.  Reported (date order): L. Fiaschi, N. Bowler, A. Liebscher, V. Vieira, N. Rhinehart, N. Vance, P. Shafer
 - qh_check_dupridge: Check if wide merge due to duplicate ridge from nearly coincident points
 - qh_initialhull: Fix error messages for initial simplex is flat
 - qh_determinant: increased 2-d and 3-d nearzero by 10x due to a counter-example
 - rbox: Add qh_outcoord() to output coordinates w/ or w/o iscdd
 - qh_meminit (mem.c): Add call to qh_memcheck
 - Compare libqhull/... to libqhull_r/... and resolve differences
 - Update builds for DevStudio (qhull.sln for msdev 2005..2009, qhull-32.sln and qhull-64.sln for recent releases)

 - qh-impre.htm: Add a section about precision errors for 'Nearly coincident points on an edge'
 - html/index.htm#geomview: Document how to install, build, and use Geomview.
 - html/index.htm: Emphasize program links and move related urls to end
 - qhull/index.htm: Emphasize manual, geomview, and imprecision
 - Fix documentation links in libqhull_r/index.htm
 - Add 'Functions' link to documentation headers
 - Change '<A>...</A>' to '<a>...</a>'
 - libqhull_r/index.htm -- Add instructions for configuring web browsers for source links.
 - libqhull_r/ -- Fix source links for ..._r.htm files

------------
Qhull 2015.0.7 2015/11/09 (7.0.7)
 - Fix return type of operator-> in QhullLinkedList and other collection classes [F. Jares]
 - Fix return types for QhullLinkedList
 - Fix return types for QhullPoints
 - Simplify return type for Coordinates::operator[] (same as QList)
 - Add const to operators for QhullSet::iterator and add documentation
 - Coordinates.h: Fix return types for operations of iterator and const_iterator
 - Drop use of Perforce changelist number in qhull_VERSION of CMakeLists.txt
 - Rename the md5sum files as *.tgz.md5sum instead of *-tgz.md5sum
 - Fix build dependency for testqset_r [asekez]
 - rbox.c depends on Qhull due to qh_lib_check which uses qh_version2 for error messages
 - QhullFacet_test.cpp: Annotate Qhull invocations.   Allows their repetition.
 - QhullFacet_test.cpp: Adjust epsilon on distance tests
 - Do not create libqhullcpp as a shared library.  Qhull C++ classes may change layout and size.
 - qhull-cpp.xml: Make a relative path to road-faq.xsl

------------
Qhull 2015.0.6 2015/10/20 (7.0.6.2013)
 - In the libraries, exit() is only called from qh_exit().  qh_exit may be redefined.
 - Add qh_fprintf_stderr to usermem.c.  May be overridden to avoid use of stderr [D. Sterratt]
   Add usermem to testqset builds
   Used by qh_fprintf_rbox
 - Remove most instances of stderr/stdout from libqhull, libqhull_r, and libqhullcpp [D. Sterratt]
   qh_fprintf_stderr may be redefined.  qh_meminit and qh_new_qhull use stderr as the default ferr
 - qh_initflags: Use qh.fout instead of stdout for 'TO file'.  A library caller may define a different qh.fout.
 - qh_settemppush: Call qh_fprintf() instead of fprintf() on error.
 - Rename qh_call_qhull as "Qhull-template" from user.c.  Updated its references.

 - qh-code.htm: "How to avoid</a> exit(), fprintf(), stderr, and stdout"
 - html/index.htm: Fix table of contents for qh-code
 - libqhull_r/index.htm: Rewrite introduction to Reentrant Qhull
 - qh-faq.htm: Rewrite "Can Qhull use coordinates without placing  them in a data file?"
 - qh-get.html: Link to github
 - Remove qhull_interface.cpp from the documentation

------------
Qhull 2015.0.5 2015/10/12 (7.0.5.1995)
- qh_new_qhull: default 'errfile' is 'stderr'.  outfile and errfile are optional [B. Pearlmutter]
- qh_new_qhull: returns qh_ERRinput instead of exit() if qhull_cmd is not "qhull ..." [B. Pearlmutter]
- qhalf_r.c,etc: Add clear of qh.NOerrexit
- global.c: gcc 4.4.0 mingw32 segfault cleared by adding comment
- usermem_r-cpp.cpp: Optional file to redefine qh_exit() as throw "QH10003.." [B. Pearlmutter]
  qh_exit() is called by qhull_r when qh_errexit() is not available.

- html/index.htm:  Add bibliographic reference to Golub & van Loan and annotated the source references
- qhalf.htm: A halfspace is the points on or below a hyperplane [D. Strawn]
- qh-opto.htm#n: Defined inside, outside, on, above, and below a hyperplane [D. Strawn]
- qhalf.htm#notes: Recast the linear program using negative halfspaces (as used by Qhull) [D. Strawn]
- qhull_a.h: Fix comment '#include "libqhull/qhull_a.h" [fe rew]

- build/qhull*.pc.in: Templates for pkg-config (derived from Fedorra) [P. McMunn]
  https://bitbucket.org/mgorny/pkg-config-spec/src/c1bf12afe0df6d95f2fe3f5e1ffb4c50f018825d/pkg-config-spec.txt?at=master&fileviewer=file-view-default
- Makefile: Remove user_eg3.o from LIBQHULLCPP_OBJS
- Makefile: Add .h dependencies for unix_r.o, etc.
- libqhull/Makefile: Fix build of rbox
- libqhull_r/Makefile: Fix build -I
- qhull.sln/user_eg3:  Add dependency on libcpp
- Removed bin/libqhull_r.dll (should be qhull_r.dll)
- Removed  build/qhulltest.vcproj (see build/qhulltest/qhulltest.vcproj)

------------
Qhull 2015.0.4 2015/9/30 (7.0.4.1984)
 - qh-get.htm: Unix tarball includes version number (e.g., qhull-2015-src-7.1.0.1940.tgz) [Hauptman]
 - qglobal.c: Add qh_version2 with Unix version for "-V" option [Hauptman]
 - build/qhull-32.sln, *-32.vcxproj: Add Visual Studio 32-bit build for 2010+
 - build/qhull-64.sln, *-64.vcxproj: Add Visual Studio 64-bit build for 2010+ [G. Lodron]
 - make-vcproj.sh: Restore to eg/... It is required for Visual Studio builds
 - README.txt: updated builds and reentrant Qhull
 - Add documentation for QHULL_LIB_CHECK
 - qh_lib_check: Check for unknown QHULL_LIB_TYPE
 - qh-code.htm: Add memory requirements for 32- and 64-bit

------------
Qhull 2015.0.3 2015/9/22
 - qh_mem, qh_merge: Log before 'delete' instead of afterwards [Coverity, K. Schwehr]
 - qh_merge: Test for NULL horizon in qh_checkzero [Coverity, K. Schwehr]
 - qh_matchneighbor: Check for matchfacet not a neighbor of facet [Coverity, K. Schwehr]
 - qh_triangulate: Explicit check for visible==NULL [Coverity, K. Schwehr]
 - qh_findbestfacet (unused by qhull): Fix test of isoutside [Coverity, K. Schwehr]
 - qh_check_maxout: Check bestfacet!=0 for logging its id [Coverity, K. Schwehr]
 - qh_nearvertex: Check for bestvertex not found [Coverity, K. Schwehr]
 - qh_checkfacet: Check for missing neighbors of simplicial facets [Coverity, K. Schwehr]
 - qh_setdelnth: Check 'nth' before using it [Coverity, K. Schwehr]
 - Annotate code for Coverity warnings (most of these protected by qh_errexit) [K. Schwehr]

 - qh_printfacet3math: explicit format string (duplicates change to io.c) [B. Pearlmutter]
 - libqhull_r.h: fix spelling error (duplicates change to libqhull.h) [B. Pearlmutter]
 - unix_r.c: fix spelling error (duplicates change to unix.c) [B. Pearlmutter]
 - qhull_a.h: define qhullUnused() only if defined(__cplusplus) [R. Stogner]
 - qh_version: Use const char str[]= "string" instead of const char * str= "string" [U. Drepper, p. 27]
 - qh_newvertex: Use UINT_MAX instead of 0xFFFFFFFF
 - qh_newridge: Use UINT_MAX instead of 0xFFFFFFFF
 - Reviewed FIXUP notes

 - QhullRidge_test: t_foreach use 'foreach(const QhullVertex &v, vertices)
 - Made '#include "RoadTest.h" consistent across all C++ tests

 - qh-code.htm: May also use libqhull_r (e.g., FOREACHfacet_(...))
 - qh-get.htm: Add list of download build repositories

 - Add CMakeModules/CheckLFS.cmake: Enables Large File Support [B. Pearlmutter]
 - Makefile: Use -fpic at all times instead of -fPIC, [U. Drepper p. 15]

------------
Qhull 2015.0.2 2015/9/1
 - global_r.c: Fixed spelling of /* duplicated in...qh_clear_outputflags */ [K. Schwehr]
 - Replaced Gitorious with GitHub
 - Moved 'to do' comments into Changes.txt

------------
Qhull 2015.0.1 2015/8/31

 Source code changes
 - Increased size of vertexT.id and ridgeT.id to 2^32 [H. Strandenes, C. Cantwell]
   Reworded the warning message for ridgeT.id overflow.  It does not affect Qhull output
 - Add qh_lib_check to check for a compatible Qhull library.
   Programs should call QHULL_LIB_CHECK before calling Qhull.
 - Include headers prefixed with libqhull/, libqhull_r/, or libqhullcpp/
 - Renamed debugging routines dfacet/dvertex to qh_dfacet/qh_dvertex
 - Rewrote user_eg, user_eg2, and user_eg3 as reentrant code
 - Renamed 'qh_rand_seed' to 'qh_last_random'.  Declare it as DATA
 - qh_initqhull_start2 sets qh->NOerrexit on initialization
   User must clear NOerrexit after setjmp()

 Other source code changes
 - Define ptr_intT as 'long long' for __MINGW64__ [A. Voskov]
 - poly_r.c: initialize horizon_skip [K. Schwehr]
 - Removed vertexT.dim and MAX_vdim.  It is not used by reentrant Qhull.
 - Removed qhull_inuse.  Not used by C++
 - Removed old __MWERKS__/__POWERPC__ code that speed up SIOUX I/O
 - Moved #include libqhull/... before system includes (e.g., <stdio.h>
 - Comment-out _isatty declaration.  Avoids "C4273 ... inconsistent dll linkage"
 - Add random.h/random_r.h as an include file to random.c/random_r.c
 - Rename rbox routines to qh_roundi/qh_out1/qh_out2n/qh_out3n
 - Rename dfacet and dvertex to qh_dfacet and qh_dvertex
 - Replace 'qhmem .zzz' with 'qhmem.zzz'
 - Removed spaces between function name and parentheses
 - Rename 'enum statistics' to 'enum qh_statistics'
 - Declare rbox as DATA in qhull-exports.def and qhull_p-exports.def
 - In comments, use 'qh.zzz' to reference qhT fields
 - In qh_fprintf, use qhmem.ferr to report errors
 - qh_fprintf may be called for errors in qh_initstatistics and qh_meminit
 - qh_pointid returns qh_IDnone, qh_IDinterior, qh_IDunknown in place of -3, -2, -1 resp.
 - getid_() returns qh_IDunknown in place of -1
 - After qh_meminit, qhmem.ferr is non-zero (stderr is the default)
 - Update qh_MEMalign in testqset.c to user.h (with realT and void*)
 - Split rboxT into a header file
 - Add rboxlib.h to libqhull_a.h
 - Rename PI to qh_PI and extend to 30 digits
 - Rename MAXdim to qh_MAXdim
 - Change spacing for type annotations '*' and '&' in C++ header files
 - Test for !rbox_output/cpp_object in qh_fprintf_rbox
 - Remove 'inline' annotation from explicit inline declarations
 - Column 25 formatting for iterators, etc.
 - Use '#//!\name' for section headers
 - QhullFacet.cpp: zinc_(Zdistio);
 - Clear qhT.ALLOWrestart in qh_errexit
 - Replace longjmp with qh_errexit_rbox in qh_rboxpoints
 - Add jmpExtra after rbox_errexit to protect against compiler errors
 - Add qh.ISqhullQh to indicate initialization by QhullQh()
 - Add library warnings to 'rbox D4', user_eg, user_eg2, user_eg3
 - Add headers to q_eg, q_egtest, and q_test
 - Check that qh.NOerrexit is cleared before call to qh_initflags

Qhull documentation
 - README.txt: Added references to qh-code.htm
 - README.txt: Added section 'Calling Qhull from C programs'
 - qh-code.htm: Moved Performance after C++ and C interface
 - qh-code.htm: Moved Cpp Questions to end of the C++ section
 - qh-code.htm: Fixed documentation for 'include' path.  It should be include/libqhull
 - qconvex.htm: Fixed documentation for 'i'.  It triangulates in 4-d and higher [ref]
 - Clarified qhalf space documentation for the interior point [J. Santos]
 - rbox.c: Version is same date as qh_version in global.c
 - gobal_r.c: Version includes a '.r' suffix to indicate 'reentrant'

Qhull builds
 - Development moved to http://github.com/qhull/qhull
   git clone git@github.com:qhull/qhull.git
 - Exchanged make targets for testing.
   'make test' is a quick test of qhull programs.
   'make testall' is a thorough test
 - Added 'make help' and 'make test' to libqhull and libqhull_r Makefiles
 - CMakeLists.txt: Remove libqhull, libqhull_r, and libqhullcpp from include_directories
 - CMakeLists.txt: Add qhull_SHAREDR for qhull_r
 - CMakeLists.txt: Retain qhull_SHARED and qhull_SHAREDP (qh_QHpointer)
 - CMakeLists.txt: Move qhull_SHARED and qhull_SHAREDP (qh_QHpointer) to qhull_TARGETS_OLD
   Drop qhull_STATICP (use qhull_SHAREDP or qhull_STATIC)
   Set SOVERSION and VERSION for shared libraries
 - Move qhull_p-exports.def back to libqhull
 - Switched to mingw-w64-install for gcc
 - Improved prompts for 'make'
 - qhull-all.pro: Remove user_eg3.cpp from OTHER_FILES
 - libqhull.pro: Ordered object files by frequency of execution, as done before
 - Add the folder name to C++ includes and remove libqhullcpp from INCLUDEPATH
 - Changed CONFIG+=qtestlib to QT+=testlib
 - Changed Makefile to gcc -O3 (was -O2)
 - Changed libqhull/libqhull_r Makefiles to both produce rbox, qhull, ..., user_eg, and user_eg2
 - Removed Debian 'config/...'.  It was needed for Qhull 2012.

libqhull_r (reentrant Qhull)
 - Replaced qh_qh with a parameter to each procedure [P. Klosterman]
   No more globally defined data structures in Qhull
   Simplified multithreading and C++ user interface
   All functions are reentrant (Qt: "A reentrant function can ... be called simultaneously from multiple threads, but only if each invocation uses its own data.")
   No more qh_QHpointer.
   See user_eg3 and qhulltest
   New libraries
      libqhull_r -- Shared library with reentrant sources (e.g., poly_r.h and poly_r.c which replace libqhull's poly.h and poly.c)
      libqhullstatic_r -- Static library with the same sources as libqhull_r
      libqhullcpp -- The C++ interface using libqhullstatic_r (further notes below)
   New executables
      testqset_r -- Test qset_r.c (the reentrant version of qset.c

 Source code changes for libqhull_r
 - Add qh_zero() to initialize and zero memory for qh_new_qhull
 - Remove qh_save_qhull(), qh_restore_qhull(), and qh.old_qhstat from global_r.c
 - Remove qh_freeqhull2() (global_r.c)
 - Remove qh_freestatistics() (stat_r.c)
 - Remove qh_compare_vertexpoint (qhT is not available, unused code)
 - Remove conditional code for __POWERPC__ from unix_r.c and rbox_r.c
 - Move qh_last_random into qh->last_random (random_r.c)
 - Rename sources files with a '_r' suffix.  qhull_a.h becomes qhull_ra.h
 - Replace 'qh' macro with 'qh->'
 - Replace global qhT with parameter-0
 - Add qhmemT to beginning of qhT.  It may not be used standalone.
 - Add qhstatT to end of qhT
 - Remove qhull_inuse
 - Change qhmem.zzz to qh->qhmem.zzz
 - Replace qh_qhstat with qh->qhstat
 - Remove qh_freestatistics
 - Replace qh_last_random with qh->last_random
 - Replace rboxT with qh->rbox_errexit, rbox_isinteger, rbox_out_offset
 - Replace rbox.ferr/fout with qh->ferr/fout
 - No qh for qh_exit, qh_free, qh_malloc, qh_strtod, qh_strtol, qh_stddev
 - New qmake include files qhull-app-c_r.pri, qhull-app-shared_r.pri, qhull-libqhull-src_r.pri
 - Replace 'int' with 'countT' and 'COUNTmax' for large counts and identifiers
 - qhset converted to countT
 - Removed vertexT.dim -- No longer needed by cpp
   Removed MAX_vdim
 - Guarantee that qh->run_id!=0.  Old code assumed that qh_RANDOMint was 31 bits

Changes to libqhullcpp
 - Added QhullVertexSet.h to libqhullcpp.pro and libqhullpcpp.pro
 - QhullVertexSet: error if qhsettemp_defined at copy constructor/assignment (otherwise double free)
 - Enable QhullSet.operator=.  Copy constructor and assignment only copies pointers
 - Changed QhullPoint.operator==() to sqrt(distanceEpsilon)
 - Added assignment of base class QhullPoints to PointCoordinates.operator=
 - Enable QhullPoints.operator=
 - Rename PointCoordinates.point_comment to describe_points
 - Add 'typename T' to definition of QhullSet<T>::value()

C++ interface
 - Reimplemented C++ interface on reentrant libqhull_r instead of libqhull
 - Prepend include files with libqhullcpp/
 - Replaced UsingLibQhull with QhullQh and macro QH_TRY
   Removed UsingLibQhull.currentAngleEpsilon and related routines
   Removed UsingLibQhull_test.cpp
   Replaced globalDistanceEpsilon with QhullQh.distanceEpsilon
   Replaced globalAngleEpsilon with QhullQh.angleEpsilon
   Moved UsingQhullLib.checkQhullMemoryEmpty to QhullQh.checkAndFreeQhullMemory
   Replaced FACTORepsilon=10 with QhullQh.factor_epsilon=1.0
 - To avoid -Wshadow for QhullQh*, use 'qqh' for parameters and 'qh()' for methods
 - Moved messaging from Qhull to QhullQh
 - Add check of RboxPoints* in qh_fprintf_rbox
 - Renamed Qhull.initializeQhull to Qhull.allocateQhullQh
   Added qh_freeqhull(!qh_ALL) as done by unix.c and other programs
 - Moved QhullPoints.extraCoordinatesCount into QhullPoints.cpp
 - Replaced section tags with '#//!\name ...'
 - Removed qhRunId from print() to ostream.
 - Removed print() to ostream.  Use '<< qhullPoint' or '<< qhullPoint.print("message")'

C++ interface for most classes
 - Remove qhRunId
 - Add QhullQh *qh_qh to all types
    Pointer comparisons of facetT,etc. do not test corresponding qh_qh
    Added to end of type for debugging information, unless wasteful alignment
 - Add QhullQh * to all constructors
 - All constructors may use Qhull & instead of QhullQh *
 - For inherited QhullQh types, change to 'protected'
 - Renamed 'o' to 'other' except where used extensively in iterators
 - Except for conditional code, merged the Conversion section into GetSet
 - Removed empty().  Use isEmpty() instead
 - Add operator= instead of keeping it private
 - print_message=0 not allowed.  Use "" instead.
 - Rename isDefined() to isValid() to match Qt conventions

C++ interface by class
 - Coordinates
   Removed empty().  Use isEmpty() instead
   Added append(dim, coordT*)
   Reformated the iterators
   Convert to countT
 - PointCoordinates
   Added constructors for Qhull or QhullQh* (provides access to QhullPoint.operator==)
   Removed PointCoordinates(int pointDimension) since PointCoordinates should have a comment.  Also, it is ambiguous with PointCoordinates(QhullQh*)
   Renamed point_comment to describe_points
   Convert to countT
 - Qhull
   Remove qhull_run_i
   Remove qh_active
   Replace property feasiblePoint with field feasible_point and methods setFeasiblePoint/feasiblePoint
     Returns qh.feasible_point if defined
   Moved useOutputStream to QhullQh use_output_stream
   Renamed useOutputStream() to hasOutputStream()
   Replaced qhull_dimension with qh->input_dim  //! Dimension of result (qh.hull_dim or one less for Delaunay/Voronoi)
   Removed global s_qhull_output= 0;
   Move qhull_status, qhull_message, error_stream, output_stream to QhullQh
   Renamed qhullQh() to qh()
   Added check of base address to allocateQhullQh(),  Was not needed for qhullpcpp
 - QhullFacet
   Constructor requires Qhull or QhullQh* pointer
   Convert to countT
   Dropped implicit conversion from facetT
   Dropped runId
   Add print("message") to replace print()
 - QhullFacetList
   Constructor requires Qhull or QhullQh* pointer
   Convert to countT
   Dropped runId
 - QhullFacetSet
   Removed empty().  Use isEmpty() instead
   Constructor requires Qhull or QhullQh* pointer
   Convert to countT
   Dropped runId
   Add operator=
   Implement print("message")
 - QhullHyperplane
   Add hyperplaneAngle() method
   Rewrite operator== to use hyperplaneAngle()
   Reorganize fields to keep pointers aligned
   Except for default constructor requires Qhull or QhullQh* pointer
   Enable copy assignment
   Reorganized header
 - QhullLinkedList
   Add operator=
   Removed empty().  Use isEmpty() instead
   Convert to countT
   iterator(T) made iterator(const T &)
   const_iterator(T) made const_iterator(const T &)
   const_iterator(iterator) made const_iterator(const iterator &)
 - QhullPoint
   Add constructors for Qhull or QhullQh* pointer (for id() and operator==)
   Add defineAs(coordT*)
   Add getBaseT() and base_type for QhullSet<QhullPoint>
   Added checks for point_coordinates==0
   Removed static QhullPoint::id(), use QhullPoint.id() instead
   distance() throws an error if dimension doesn't agree or if a point is undefined
   Convert to countT
   If !qh_qh, operator==() requires equal coordinates
   Use cout<<p instead of cout<<p.print()
   Reorganized
 - QhullPoints
   Add constructors for Qhull and QhullQh* (for qh.hull_dim, QhullPoint::operator==)
   Remove QhullPoints(int pointDimension) since it is ambiguous with QhullPoints(QhullQh *qqh)
   Add operator=
   Removed empty().  Use isEmpty() instead
   Convert to countT
   operator==() tests if pointers are the same.  Ituses distanceEpsilon if qh_qh is defined
   Reorganized
 - QhullPoints::Iterator and ConstIterator
   Removed default constructors
   Add constructors for Qhull and QhullQh* (for qh.hull_dim, QhullPoint::operator==)
   Moved test of dimension from QHULL_ASSERT to operator==
   Added QHULL_ASSERT of qh_qh
   Convert to countT
 - QhullPointSet
   Constructor requires Qhull or QhullQh* instead of dimension()
   Add operator=
   Removed empty().  Use isEmpty() instead
   Convert to countT
   Always print print_message
   Drop print().  Replace with print("")
 - QhullQh
   Added methods hasOutputStream(), disableOutputStream(), and enableOutputStream() (was Qhull UseOutputStream)
   Add test of qh.NOerrexit to maybeThrowQhullMessage()
   Add qhull_status, qhull_message, error_stream, output_stream from Qhull
   Add factor_epsilon
 - QhullRidge
   Constructor requires Qhull or QhullQh* pointer
   Dropped implicit conversion from ridgeT
   Converted otherFacet() to 'const &'
   Converted nextRidge3d() to 'const &'
   Message for '<< QhullRidge' replaces "   - " instead of preceding it
 - QhullSet
   Removed empty().  Use isEmpty() instead
   Constructor requires Qhull or QhullQh* pointer
   Convert to countT
   Add operator=
 - QhullVertex
   Constructor requires Qhull or QhullQh* pointer
   Convert to countT
   Dropped implicit conversion from vertexT
   Add message to '<< QhullVertex'
 - QhullVertexSet
   Removed empty().  Use isEmpty() instead
   Constructor requires Qhull or QhullQh* pointer
   Convert to countT
 - UsingQhullLib
   Removed
   Replace setGlobalDistanceEpsilon with setFactorEpsilon
   Replace globalDistanceEpsilon with distanceEpsilon

------------
Qhull 2012.1  2012/02/18 6.3.1.1494
 - Fix CMakeLists for libqhull with MATCHES [P. Gajdos]

------------
Qhull 2012.1  2012/02/18 6.3.1.1490

Code changes
 - Require option 'Qz' for Delaunay triangulation/Voronoi diagram
   of cocircular/cospherical points [D. Sheehy]
 - qh_errexit: Do not call qh_printsummary or qh_printstats on qh_ERRinput
 - Change error QH6227 (all degenerate) from qh_ERRinput to qh_ERRprec
 - Change error QH6159 (ID overflow) from qh_ERRinput to qh_ERRqhull
 - eg/q_eg, q_egtest, q_test: Run if qconvex is in $PATH [M. Atzeri]

Build changes [M. Atzeri]
 - Install to share/doc/qhull instead of share/doc/packages/qhull
 - On Unix systems, install to share/man/man1 instead of man/man1
 - CMakeLists: Remove the installation of user_eg* and testqset
 - CMakeLists: Remove VERSION from qhull executables and libraries
 - CMakeLists: Define qhull_SOVERSION instead of qhull_MAJOR
 - CMakeLists: Set SOVERSION for shared libraries
 - Rename libraries to qhull, qhull_d, qhull_p, and qhull_pd
   libqhull6_p.vcproj is now libqhull_p.vcproj
   mingw builds as libqhull.dll
   cygwin builds as cygqhull-6.dll
   linux builds as libqhull.so.6.3.1 with symbolic link as libqhull.so
 - Developers using qhull 2011:
   libqhull6.so is now libqhull_p.so.  Do not use libqhull.so.
   qhull6.dll is now qhull_p.dll.  Do not use qhull.dll.
 - Merged road/ into libqhullcpp/ and qhulltest/
   Moved RoadLogEvent.* and RoadError.* to libqhullcpp
   Moved RoadTest.* to qhulltest (requires Qt)
   Installed RoadTest.h in libqhullcpp

Doc changes
 - index.htm: Mathworks uses qhull for n-d
 - qhull.htm: Fix qhull for qconvex
 - qdelaun.htm/qvoronoi.htm: Use option 'Qz' for circular/cospherical inputs
 - make help: Display targets
 - Makefile: Better messaging

------------
Qhull 2012.1  2012/02/02 6.3.0.1483

Bug fixes
 - Fixed qset.c for -fno-strict-aliasing. This gcc option is no longer needed
   (disallow two pointers of differing types to the same memory location)
 - Fixed error in qh_setappend_set if first set full and second set empty
 - qh_setdelnth, qh_setdelnth_sorted: fixed wording of error message
 - qh_setcheck: error message listed size and max backwards.
 - qh_setequal: Allow NULL set as documented
 - qh_setindex: Allow NULL set as documented
 - qh_settemppush: report error if NULL

Code changes
 - Add testqset: low level test of qset.c with mem.c
 - qh_setendpointer: Implements QSet::endPointer()
 - Assigned unique error code for qh_gethash

Build changes
 - Added qhull.dll(.so) for Octave and other Debian builds
   The global data structure qh_qh is statically defined (no qh_QHpointer)
   Linked user_eg2 with qhull.dll (libqhull.so) instead of qhullstatic
   Added qh_dllimport to libqhull.h for qhull.dll with MSVC
   Changed qhull-app-shared.pri to use libqhull (without qh_QHpointer)
 - Renamed libqhull6.so to libqhull6_p.so
   Renamed qhull6.dll to qhull6_p.dll
   The _p libraries (e.g., libqhull6_p.so) require -Dqh_QHpointer
   Renamed qhull6.vcproj to libqhull6_p.vcproj
   Added libqhullp/libqhullp.pro for shared library (libqhull6_p.so)
   Added qhull-app-sharedp.pri for shared libraries with qh_QHpointer
 - Install libqhull/*.htm files into include/libqhull
 - Removed libqhull/qhull.h-deprecated [J. Eaton]
 - Other changes to Makefile builds
   Added 'make qtestall' as a smoketest of each qhull program
   src/libqhull/Makefile: Use 'ar -rs ...' instead of ranlib
   src/libqhull/Makefile: Fixed targets for cleanall
 - Other changes to DevStudio builds
   Moved pdb files for qhull libraries to lib/
   AdditionalIncludeDirectories: Removed ../src/libqhullcpp
   Use build-cmake/ for the DevStudio CMake build
 - Other changes to Qt builds
   Renamed qhull-libsrc.pri to qhull-libqhull-src.pri
 - Added explicit d2u conversions to qhull-zip.sh
 - Fixed \n vs. \r\n issues for Windows source files

 Draft of Debian/AutoConf build (untested)
 - Adjusted the Makefile.am's for the new directory structure.
 - Added testqset to bin_PROGRAMS
 - config/bootstrap.sh copies program sources into src/libqhull
 - Kept qh_QHpointer=0 (static global data structure, qh_qh).  It is faster.
   Planning a new interface (qhull7?) which passes qh_qh as a parameter
 - Added config/changelog from the 2003.1 Debian build
 - Moved the debian/patches directory to config/
   Optional patches to change smoketest message and turn on qh_QHpointer
 - Deleted the debian directory.  It was the old Debian build from 2003.1
   Rafael Laboissiere's config directory replaced this build..
 - Deleted Make-conf.sh (also the old Debian build)

Doc changes
 - FAQ: Updated notes on computing volume of a Voronoi region
 - Added direct link to ACM Digital Library for downloading the qhull paper
 - Added link to Qhull in R
 - qset.c: Updated notes about NULL sets
 - qh_setappend: clarify qh_setappend for NULL newelem
 - qh_setdellast: Fix head note
 - Add build/README.txt
 - Add uninstall instructions to README.txt and CMakeLists.txt
 - Added instructions to create build/*.vcproj to CMakeLists.txt
 - Update copyright to 2012
 - Updated page links.  Added Google books, patents, and blogs.

-----------
Qhull 2009.1.3 2011/12/06
  configure: Add  -fno-strict-aliasing if $GCC,  Required for gcc 4.1+

------------
Qhull 2011.2  2011/11/29 6.2.1.1446

Bug fixes
 - qh_new_qhull: Call qh_prepare_output if !outfile [A. Aldoma]
   No effect on qhull users since qh_prepare_output is always called.
 - Replace Qhull-go.pif with Qhull-go.lnk for Windows 7 64-bit [lots]
 - Error if qh_newhashtable, qh_setnew, or qh_memalloc overflows [X. Cheng]
   For example, 'rbox 64 D32' overflows hash table for qh_matchnewfacets
   Qhull uses 32-bit ints for identifiers, counts, and sizes. See "WARN64"
 - q_eg, q_test: change tail +3 to tail -n +3 [N. Dubray, M. Atzeri]
 - Qhull-go.bat: Changed 'cmd' to '%comspec%'

Build changes
 - Added src/libqhull/Makefile for simple gcc build of executables and lib
 - qhulltest.vcproj: Replaced full path to QT with $QTDIR (e.g., c:/qt/4.7.4)
 - Split userprintf_rbox.c from userprintf.c,
   Otherwise qhull brings in rboxlib and rbox brings in libqhull
 - Makefile: qhullx target must be after LIBQHULLS_OBJS
 - Makefile: Explicitly list rbox dependencies for qhullx target
 - MBorland: Fixed tabs
 - Placed $LIBQHULLS_OBJS in same order.  Frequently called ones together.
 - Update file lists for Make-config.sh [O. Lahaye]
 - CMakeLists: add README.txt,etc. to DOC_INSTALL_DIR [M. Atzeri]
 - Restored qhull.h-deprecated.
   qhull.h conflicts with Qhull.h on Windows systems [C. Abela]
 - make-config.sh: Add warning that it is out-of-date
 - Remove extra space in '#! /bin/sh' in q_eg, etc. [P. Cheeseman]

Source changes
 - libqhull.h: Added qh_True and qh_False for True/False [A. Mutzel]
   Did not remove or replace True/False since it is used everywhere
 - Moved error message from qh_argv_to_command to caller.  Avoids dependency.
 - user_eg3.c: Use '10 D2' as default rbox (e.g., 'user_eg3 rbox qhull d')
 - user.c, user_eg2.c: Add test of qh_qh as done in user_eg.c
 - q_test: Removed duplicate test of qhull C-0.02

Documentation
 - index.html: Added ACM Authorizer link to ACM Trans. Math. Software
 - Split Delaunay and Voronoi FAQs
 - FAQ: How to compute the volume of a Voronoi region [C, Brinch]
 - Add 'FS' to qconvex prompt (total area and volume)
 - Add clarification to 'Fv' about corner input sites [O. Can]
 - Qhull-go.bat: Removed out-of-date advice.  Added title.
 - qh-code.htm: Updated the discussion of multi-threading for C++ [I. Pirwani]

Qhull 2009.1.2 2011/11/21
 - Revert to LF line endings [P. Cheeseman]
 - Remove out-of-date material from qhull-go.bat
 - Replaced QHULL-GO with a lnk file

Qhull 2011.1  2011/05/23 6.2.0.1385 (exe/dll files unchanged)
 - delaunay.vcproj: Fixed qhullstatic_d.lib for debug and minrelsize builds
 - Did not redate the distribution

Qhull 2011.1  2011/05/18 6.2.0.1385 (exe/dll files unchanged)
 - Add 'm' library to shared and static targets on Unix [A. Bouchard]

Qhull 2011.1  2011/05/14 6.2.0.1383 (exe/dll files unchanged)
 - PointCoordinates.cpp: Add #include <iterator> [R. Richter, S. Pasko]
 - Remove deprecated libqhull/qhull.h
   Use libqhull/libqhull.h instead.  Avoids confusion with libqhullcpp/Qhull.h
 - Makefile: Add LIBDIR, INCDIR, and DESTDIR to install [L.H. de Mello]
     Separate MAN install from DOC install
     Create install directories
     Installs headers to include/libqhull, include/libqhullcpp, include/road
 - CMakeLists.txt: Add MAN_INSTALL_DIR for qhull.1 and rbox.1 man pages
     Add RoadTest.h to include/road for Qt users (road_HEADERS)
 - Renamed md5sum files to avoid two extensions
 - qh-get.htm: Add Readme links and 2009.1 note.
 - qh-optf.htm: Fix link
 - index.htm: Updated Google Scholar link
 - qhull-zip.sh: Improved error message.

------------
Qhull 2011.1  2011/04/17 6.2.0.1373

Changes to deliverables
 - qvoronoi: Deprecated 'Qt' and 'QJn'. Removed from documentation and prompts.
   These options produced duplicate Voronoi vertices for cospherical data.
 - Removed doskey from Qhull-go.bat.  It is incompatible with Windows 7
 - Added 'facets' argument to user_eg3.cpp
 - user_eg links with shared library
 - qhulltest.cpp: Add closing prompt.

Changes to build system
 - Reorganized source directories
 - Moved executables to bin directory
 - Add CMake build for all targets (CMakeFiles.txt) [M. Moll assisted]
 - Add gcc build for all targets (Makefile)
 - Fixed location of qhull.man and rbox.man [M. Moll]
 - Add DevStudio builds for all targets (build/*.vcproj)
 - Added shared library (lib/qhull6.dll)
   Added qh_QHpointer_dllimport to work around problems with MSVC
 - Added static libraries with and without qh_QHpointer (lib/qhullstatic.lib)
 - Added eg/make-vcproj.sh to create vcproj/sln files from cmake and qmake
 - Document location of qh_QHpointer
 - Use shadow build directory
 - Made -fno-strict-aliasing conditional on gcc version
 - Added src/qhull-app-cpp.pri, src/qhull-app-c.pri, etc. for common settings
 - Add .gitignore with ignored files and directories.
 -   Use .git/info/exclude for locally excluded files.
 - Fixed MBorland for new directory structure
 - cleanall (Makefile): Delete 'linked' programs due to libqhull_r and libqhull/Makefile

Changes to documentation
 - qvoronoi.htm: Remove quotes from qvoronoi example
 - qhull-cpp.xml: Add naming conventions
 - index.htm: Add Google Scholar references
 - qh-optf.htm: Add note about order of 'Fn' matching 'Fv' order [Q. Pan]
 - Add patch for old builds in qh-get.htm
 - Added C++ compiling instructions to README.txt
 - Add instructions for fixing the DOS window
 - Changed DOS window to command window
 - Fixed html links
 - qh-get.htm: Dropped the Spanish mirror site.  It was disabled.

Changes to C code
 - mem.h: Define ptr_intT as 'long long' for Microsoft Windows _win64 builds.
   On Linux and Mac, 'long' is 64-bits on a 64-bit host
 - Added qh_QHpointer_dllimport to work around MSVC problem
 - qconvex.c,etc.: Define prototype for _isatty
 - Define MSG_QHULL_ERROR in user.h
 - Move MSG_FIXUP to 11000 and updated FIXUP QH11...

Changes to test code
 - Add note to q_test than R1e-3 may error (qh-code.htm, Enhancements)
 - Add test for executables to q_eg, etc.
 - Fixed Qhull-go.bat.  QHULL-GO invokes it with command.com,

Changes to C++ interface
 - QhullFacet: Added isSimplicial, isTopOrient, isTriCoplanar, isUpperDelaunay
 - Added Qhull::defineVertexFacetNeighbors() for facetNeighbors of vertices.
   Automatically called for facet merging and Voronoi diagrams
   Do not print QhullVertex::facetNeighbors is !facetNeighborsDefined()
 - Assigned FIXUP identifiers
 - QhullError: Add copy constructor, assignment operator, and destructor
 - Add throw() specifiers to RoadError and QhullError
 - Renamed RoadError::defined() to RoadError::isDefined()
 - Add #error to Qhull.h if qh_QHpointer is not defined

Changes to C++ code
 - Fixed bug reported by renangms.  Vertex output throws error QH10034
   and defineVertexNeighbors() does not exist.
 - Define QHULL_USES_QT for qt-qhull.cpp [renangms]
 - Reviewed all copy constructors and copy assignments.  Updated comments.
   Defined Qhull copy constructor and copy assignment [G. Rivet-Sabourin]
   Disabled UsingQhullLib default constructor, copy construct, and copy assign
 - Merged changes from J. Obermayr in gitorious/jobermayrs-qhull:next
 -   Fix strncat limit in rboxlib.c and global.c
 -   Changes to CMakeLists.txt for openSUSE
 - Fixed additional uses of strncat
 - Fixed QhullFacet::PrintRidges to check hasNextRidge3d()
 - Removed gcc warnings for shadowing from code (src/qhull-warn.pri)
 - Removed semicolon after extern "C" {...}
 - Removed experimental QhullEvent/QhullLog
 - Use fabs() instead of abs() to avoid accidental conversions to int
 - Fixed type of vertex->neighbors in qh_printvoronoi [no effect on results]
 - Removed unnecessary if statement in qh_printvoronoi

------------
qhull 2010.1 2010/01/14
- Fixed quote for #include in qhull.h [U.Hergenhahn, K.Roland]
- Add qt-qhull.cpp with Qt conditional code
- Add libqhullp.proj
- Add libqhull5 to Readme, Announce, download
- Reviewed #pragma
- Reviewed FIXUP and assigned QH tags
- All projects compile with warnings enabled
- Replaced 'up' glyphs with &#187;
- Moved cpp questions to qh-code.htm#questions-cpp
- Moved suggestions to qh-code.htm#enhance
- Moved documentation requests to qh-code.htm#enhance
- Add md5sum file to distributions
- Switched to DevStudio builds to avoid dependent libraries, 10% slower
  Removed user_eg3.exe and qhullcpp.dll from Windows build
  Fix qhull.sln and project files for qh_QHpointer
- Add eg/qhull-zip.sh to build qhull distribution files

------------
qhull 2010.1 2010/01/10
- Test for NULL fp in qh_eachvoronoi [D. Szczerba]

qhull 2010.1 2010/01/09

Changes to build and distribution
- Use qh_QHpointer=0 for libqhull.a, qhull, rbox, etc.
  Use -Dqh_QHpointer for libqhullp.a, qhullcpp.dll, etc.
  qh_QHpointer [2010, gcc] 4% time 4% space, [2003, msvc] 8% time 2% space
- Add config/ and project/debian/ for Autoconf build [R. Laboissiere]
  from debian branch in git and http://savannah.nongnu.org/cvs/?group=qhull
- Add CMakeLists.txt [kwilliams]
- Fix tabs in Makefile.txt [mschamschula]
- Add -fno-strict-aliasing to Makefile for gcc 4.1, 4.2, and 4.3 qset segfault
- Remove user_eg.exe and user_eg2.exe from Windows distribution
- Order object files by frequency of execution for better locality.

Changes to source
- Remove ptr_intT from qh_matchvertices.  It was int since the beginning.
- user.h requires <time.h> for CLOCKS_PER_SEC
- Move ostream<<QhullFacetList from inline to compiled.
- Removed ConvexHull/ from git.  Not used.

------------
qhull 2009.1.1 2010/01/09
- Patch release of 2009.1.
  qh_gethash allowed a negative result, causing overwrite or segfault
  See git:qhull/project/patch/qhull-2003.1/poly.c-qh_gethash.patch
  Compared results of q_test, q_eg, q_egtest with patched poly.c, qhull-2003.1

------------
qhull 2010.1 2010/01/07
- Assign type to qh.old_qhstat and memT.tempstack [amorilia]
- Replace tabs with spaces.
- Fix qh_pointid in case ptr_intT is unsigned

qhull 2010.1 2010/01/06
- Fixed serious bug in qh_gethash [poly.c]
- Documentation and build system are incomplete (see above)
- First release of C++ interface [qh-code.htm]
- Development moved to http://gitorious.org/qhull
  git clone git@gitorious.org:qhull/qhull.git
- Did not fix conformant tesselations for 'Qt'.
  For details, see http://www.qhull.org/news#bugs of May 2007 and Dec 2006.
- Use g++ builds for Windows distribution (10% faster than msvc2005)
  Combined vcproj/ and qtproj/ into project/
  vcproj will be replaced by qmake generated files

------------
qhull 2010.0.3 2010/01/05
Fixed bugs
- 'QJn': Fix qh.STOPcone in qh_build_withrestart().  It was not cleared.
- qh_initqhull_outputflags [global.c]: warn about Qc only if QHULLfinished
    otherwise set if needed

qhull 2010.0.2 2010/01/04

Fixed bugs
- qh_gethash [poly.c]: fix sign conversion.
    Previously, the result may be negative, leading to a segfault.
    The bug is more likely with large address spaces
    Reviewed all uses of %(modulo) for remainder with negative arguments
- Reviewed output of q_test and compared to results from 2003.1

Breaking code changes
- Return type of qh_gethash changed from unsigned to int.  Matches 'size'
- addhash takes a signed hash
  qh_addhash( newelem, hashtable, hashsize, hash )

Code changes
- Test for qh_qh in qh_printf
- Makefile.txt corrected for libqhull build [amorilia]
- Renamed index to idx to avoid shadowing BSD strings.h [kwilliams]

qhull 2010.0.1  2010/01/03

New Features:
 - Added option 'Ta' to annotate output with message codes

Preliminary C++ support:
 - C++ declarations may change without warning
 - Preliminary documentation for Qhull's C++ interface [qh-code.htm#cpp, qhull-cpp.xml]
 - Added user_eg3 as an example of Qhull.cpp
 - Removed qhull_interface.cpp.  Use Qhull.cpp instead.
   If math.h breaks '#include qhull_a.h', preceed it with '#include math.h'

Changes to qhull options and results
 - Allow 'd' and 'v' as the filename for 'TO ..' and 'TI ...' in qdelaunay [M. Jambon]
 - 'rbox tN' requires an integer (previously allowed floats)
 - Allow quoted filenames for 'TO ...' and 'TI ...'
 - Prefix error messages and warnings with a message code (e.g., QH6012)
 - Fixed rbox ignoring flags that were not separated by spaces
 - Report all hidden options before exiting in qh_checkflags()
 - Defined qh_OPTIONline [user.h] as max length of option line ('FO')
 - Report error if negative arguments to rbox 'G', 'L', 'Z'
 - Unknown rbox flag changed from a warning to an error
 - Set error status 4 qh_ERRmem if rbox runs out of memory
 - Removed extra spaces at end of line

Breaking Code Changes:
 - Renamed qh.coplanarset to coplanarfacetset.  Avoids conflict with facetT.coplanarset
 - qh_restore_qhull() zeroes out qh.old_qhstat and qh.old_tempstack.  Ownership moved.
 - Rewrote save_qhull/restore_qhull
 - Add Ztotcheck to zzdef_ [R. Gardener]
 - Changed qh_malloc to size_t (was unsigned long)
 - Declare qh_PRINT instead of int [kwilliams]
 - In qh_printafacet(), changed error output to 'qh ferr'

Bug fixes to C code:
 - Use gcc 4.4.0 or later.  gcc 4.2.1, 4.2.2, and 4.3.2 -O2 segfaults in qset.c .  gcc 4.1.1 was OK
   See bug report http://gcc.gnu.org/ml/gcc-bugs/2007-09/msg00474.html
 - Rewrite qh_setappend to avoid g++ 4.1, 4.2, and 4.3 strict_aliasing error.
     Orion Poplawski (orion@cora.nwra.com)
     http://www.rpmfind.net/linux/RPM/fedora/12/ppc/qhull-devel-2003.1-13.fc12.ppc64.html
 - Fixed qh_findfacet_all(), "REALmin" should be "-REALmax" [L.A. Taylor].
     Effects library users for convex hulls and halfspace intersections.
 - qh_printfacet [io.c] Removed extra space for neighboring facets
 - Report error if d points, Delaunay, and not Qz
 - Fixed double-free of facet->centrum for triangulated facets
 - Fixed mindist initialization if !testcentrum in io.c findbest_test [Ratcliff]
 - Fixed parentheses around warning for missing 'Qc' [qh_initqhull_outputflags]
 - Fixed rbox buffer overflow of 'command' when appending seedbuf
 - Fixed option string for 'rbox t t999'.  Although seed was correctly set to 999,
   a random seed was appended to the rbox comment (e.g., 'rbox t t999 t32343')
 - Fixed upper bound of sanity check for qh_RANDOMmax in qh_initqhull_globals()

Changes to C code
 - Reordered #include from specific to general.  Move up .h for module.
 - Removed qh.old_stat -- never used
 - Removed qh_clearcenters from qh_freeqhull.  Duplicated by qh_delfacet
 - qh_printcenter [io.c] removed unreachable fprintf argument
 - qh_getarea() [geom2.c] ignored on multiple calls (qh.hasAreaVolume)
 - qh_getarea() [geom2.c] checks facet->isarea. Set by QhullFacet.facetArea()
 - qh_triangulate() [poly2.c] ignored on multiple calls (qh.hasTriangulation)
 - Add statistics for vertex_visit and visit_id to buildtracing
 - Defined scale and offset parameters for qh_randomfactor

Bug fixes and changes to mem.c/mem.h
 - Fixed qhmem.totshort (total short memory in use)
 - Memory tracing (T5) redone for sort order by object
 - Added full tracing for short memory allocations.
 - Added qhmem.totfree (total short memory on freelists)
     Increases size of qh_memalloc_ and qh_memfree_
 - Added qhmem.totdropped (leftover freesize at end of each short buffer)
 - Added qhmem.totunused (short size - request size)
 - Added qhmem.totbuffer (total short memory buffer w/o links)
 - Added memory statistics to qh_NOmem;
 - Added qh_memtotal to track allocated memory
 - Renamed qh_memfree parameter to 'insize' for consistency with qh_memalloc
 - Removed qhmem.curlong.  qa_memfreeshort computes curlong from cntlong and cntfree
 - In mem.h, changed ptr_intT to long.  qh_meminit() checks that it holds a 'void*'

Fixed g++ and devstudio warnings
 - Except for bit field conversions, compiles cleanly with
   -Wall -Wextra -Wshadow -Wcast-qual -Wwrite-strings -Wno-sign-conversion -Wconversion
 - Fixed warnings at VC8, level 4
 - Fix data types to remove conversion warnings [kwilliams]
 - Use size_t for calls to malloc,etc [kwilliams]
   Retained int sizes for qset.h and mem.h.  Follows Qt convention
   and is easier to work with.  int can be 64-bits if 2 billion facets
 - Change literal strings to const char* [kwilliams]
 - Added type casts to SETfirst and SETsecond [amorilia+alphax]
 - getid_() returns an int [kwilliams]
 - Add missing const annotations [kwilliams]
 - Fixed 64-bit warnings (marked with "WARN64")
 - Convert sizeof to (int) for int parameters
 - In libqhull.c, added explicit casts from long to float,  Avoids warning
 - In global.c, cast time() to int for QRandom-seed.  Avoids warning

Changes to C code for C++ support
 - Add sln, vcproj, and qtpro files for building Qhull -- add to README notes
 - Added dim to vertexT for cpp interface. Reduced size of qh.vertex_visit
 - qh_produce_output [io.c] may be called multiple times (C++ interface)
 - Moved SETsizeaddr_() to qset.h for use by QhullSet.cpp
 - Option 'Tz' sets flag qh.USEstdout for QhullPoints.cpp
 - Added support for multiple output runs from QhullPoints.outputQhull
 -   qh_clear_outputflags() resets the output flags
 -   qh_initqhull_outputflags split from qh_initqhull_globals
 - Added qh.run_id, a random identifier for this instance of Qhull (QhullPoints)
 -   For qh.run_id, initqhull_start initializes qh_RANDOMseed to time instead of 1
 - Extracted qh_argv_to_command (random.c) from qh_init_qhull_command and fixed a buffer overflow
 - Moved qh_strtod/qh_strtol from global.c to random.c for use in rboxlib.c
 - Split out random functions into random.c
 - Added message codes to qh_fprintf().  See its definition in user.c
 - Replaced exit, malloc, free, fprintf, and fputs with qh_malloc,...[J.W. Ratcliff]
 - Added qh_fprintf, qh_malloc, qh_free, ph_printhelp_narrowhull to user.c
 - Moved qh_printhelp_degenerate and qh_printhelp_singular from io.c to user.c
 - Clear qh.ERREXITcalled at end of qh_errexit().

Documentation:
 - Fixed out-of-date CiteSeer references
 - Renamed html/qh-in.htm to html/qh-code.htm
 - Add reference to 'Qt' to 'i'
 - Add reference to 'FS' to 'FA'
 - qh-impre.htm discusses precision issues for halfspace intersection
 - Add cross references between options 'FA' and 'FS'
 - Added link to Wolfram Research's MathWorld site
 - Updated Fukuda's links
 - Changed copyright to C.B. Barber for C++, documentation, and merge.c
 - Updated Qhull citation with page numbers.
 - Proposed project: constructing Voronoi diagram
 - Proposed project: computing Voronoi volumes
 - Replaced tabs with spaces in qhull.txt and rbox.txt

------------
qhull 2009.1  2009/6/11

This is a maintenance release done by Rafael Laboissiere <rafael@debian.org>.
 - src/rbox.c (main): Avoid problems of evaluation order when
   pre-incrementing arguments of strtod
 - src/io.c (qh_produce_output), src/stat.c (qh_initstatistics): Use %lu
   instead of %d in the format string for arguments of type size_t
 - html/qhull.man, html/rbox.man: Fix several syntax, macros, and hyphen
   problems in man pages
 - The Autotools files have been generated with modern version of autoconf (2.63),
   automake/aclocal (1.10.2), and libtool (2.2.6)
 - Some character issues in the man pages are fixed
jperkin pushed a commit that referenced this issue Feb 22, 2016
protobuf-c (1.2.1)

  [ Robert Edmonds ]
  * Release 1.2.1.

  [ Paolo Borelli ]
  * protoc-c: Generate code that uses the universal zero initializer {0} when
    initializing a oneof union (#187, #205).

protobuf-c (1.2.0)

  [ Robert Edmonds ]
  * Release 1.2.0.

  [ Ilya Lipnitsky ]
  * Implement the "optimize_for = CODE_SIZE" option (#183).

  * Eliminate undefined behavior in zigzag functions (#198).

  * Pack negative enum values correctly (#199).

  [ Peter Leschev ]
  * Fix protobuf_c_message_get_packed_size() on 16-bit systems (#196, #197).

  [ Diego Elio Pettenò ]
  * Update link to Autotools Mythbuster to canonical site (#201).

  [ Zex Li ]
  * Skip test suite when cross-compiling (#184).
jperkin pushed a commit that referenced this issue Apr 11, 2016
Upstream changes:
Changes in Rcpp version 0.12.4 (2016-03-22)

    Changes in Rcpp API:

        New accessors as() and clone() were added to the Nullable class (Dan in PR #423 closing #421)

        The Nullable<>::operator SEXP() and Nullable<>::get() now also work for const objects (Kirill Mueller in PR #417).

        A subsetting error was fixed (Qiang via #432 closing #431).

    Changes in Rcpp Sugar:

        Added new Sugar function median() (Nathan in PR #425 closing #424)

        Added new Sugar function cbind() (Nathan in PR #447 closing #407)

    Changes in Rcpp Attributes:

        A plugin for C++14 was added (Dan in PR #427)

    Changes in Rcpp Documentation:

        An entry was added to the Rcpp-FAQ vignette describing the required packages for vignette building (#422).

        Use on OS X was further detailed (James Balamuta in #433 with further review by Bob Rudis).

        An entry was added concerning the hard-code limit of arguments to some constructor and function (cf #435).

        The Rcpp-FAQ vignette now contains a table of content.

        Typos and indentation were corrected in the Rcpp Sugar vignette (#445 by Colin Gillespie).

Changes in Rcpp version 0.12.3 (2016-01-10)

    Changes in Rcpp API:

        Const iterators now CharacterVector now behave like regular iterators (PR #404 by Dan fixing #362).

        Math operators between matrix and scalars type have been added (PR #406 by Qiang fixing #365).

        A missing std::hash function interface for Rcpp::String has been addded (PR #408 by Qiang fixing #84).

    Changes in Rcpp Attributes:

        Avoid invalid function names when generating C++ interfaces (PR #403 by JJ fixing #402).

        Insert additional space around & in function interface (PR #400 by Kazuki Fukui fixing #278).

    Changes in Rcpp Modules:

        The copy constructor now initialized the base class (PR #411 by Joshua Pritikin fixing #410)

    Changes in Rcpp Repository:

        Added a file Contributing.md providing some points to potential contributors (PR #414 closing issue #413)

Changes in Rcpp version 0.12.2 (2015-11-14)

    Changes in Rcpp API:

        Correct return type in product of matrix dimensions (PR #374 by Florian)

        Before creating a single String object from a SEXP, ensure that it is from a vector of length one (PR #376 by Dirk, fixing #375).

        No longer use STRING_ELT as a left-hand side, thanks to a heads-up by Luke Tierney (PR #378 by Dirk, fixing #377).

        Rcpp Module objects are now checked more carefully (PR #381 by Tianqi, fixing #380)

        An overflow in Matrix column indexing was corrected (PR #390 by Qiang, fixing a bug reported by Allessandro on the list)

        Nullable types can now be assigned R_NilValue in function signatures. (PR #395 by Dan, fixing issue #394)

        operator<<() now always shows decimal points (PR #396 by Dan)

        Matrix classes now have a transpose() function (PR #397 by Dirk fixing #383)

        operator<<() for complex types was added (PRs #398 by Qiang and #399 by Dirk, fixing #187)

    Changes in Rcpp Attributes:

        Enable export of C++ interface for functions that return void.

    Changes in Rcpp Sugar:

        Added new Sugar function cummin(), cummax(), cumprod() (PR #389 by Nathan Russell fixing #388)

        Enabled sugar math operations for subsets; e.g. x[y] + x[z]. (PR #393 by Kevin and Qiang, implementing #392)

    Changes in Rcpp Documentation:

        The NEWS file now links to GitHub issue tickets and pull requests.

        The Rcpp.bib file with bibliographic references was updated.
jperkin pushed a commit that referenced this issue Apr 19, 2016
* Fix MASTER_SITES to github
* Fix dependences

Changelog:
Version 1.8.7
-------------

- Added Copy From Singular operation and Next/Prev Plural Form navigation shortcuts.
- Translation errors are now properly translated.
- Fixed default Turkish plural form.
- Fixed a bug where a perfect match wouldn't be found in the TM in some rare cases.
- Updated bundled gettext to 0.19.7 (added appdata.xml and ITS support).
- Assorted bugfixes.


Version 1.8.6
-------------

- Fix properties window on OS X 10.9 and older.
- Fix visual flicker when quickly scrolling through a file with arrow keys.
- [OS X] Fix rare exception when pasting text.
- Fix file width autodetection when long comments were present.
- Disable Find next/prev menu items properly.


Version 1.8.5
-------------

- Improved setting and handling of source paths.
- Implement gzip support in Crowdin API client.
- Assorted fixes.


Version 1.8.4
-------------

- Fixed bug in handling POTs with plural forms introduced in 1.8.3.


Version 1.8.3
-------------

- Fixed Last-Translator error when creating a new translation from existing POT.
- Fixed bogus "Sources not available" error for single files setups.
- Fixed TM error reporting to prevent rendering the entire UI mostly unusable.


Version 1.8.2
-------------

- text editor now ensures that trailing newlines are present only if they also
  exist in the source text
- fix HTML export error on Windows
- automatically fix some bad paths settings in PO files
- improved source language detection
- fix incorrect timezone of PO-Revision-Date in some cases
- use the user's default browser for Crowdin authentication on all platforms
  (wxWebView no longer required as a dependency when building on Linux)


Version 1.8.1
-------------

- fix TM-related crash under heavy concurrency
- [OS X] fix crash when a concurrent task throws


Version 1.8
-----------

- integration with the Crowdin localization management platform
- search & replace
- support for directly handling POT files
- improved interface for configuring source code paths
- Poedit now automatically fixes certain broken files produced by certain
  broken tools (e.g. WPML)
- modernized HTML export
- [OS X] Quick  Look preview
- support for non-English source languages (auto-detected)
- [Windows] opening multiple Poedit windows now works correctly


Version 1.7.7
-------------

- strip whitespace in extractor definitions resulting from copy & paste


Version 1.7.6
-------------

- fix handling of multiple displays
- [Windows] fix "file couldn't be formatted nicely" problems with files in
  directories with (some) Unicode names


Version 1.7.5
-------------

- fix scrolling to the top when saving a file; focus should be preserved now
- fix disabling of extractors in preferences (oops)
- [Windows, OS X] improve resilience of the TM to power loss


Version 1.7.4
-------------

- size of the bottom editing part is now remembered correctly again
- [GTK+] fix broken Edit->Copy/Cut/Paste
- [OS X] fix stray BOM marks appearing on suggestions in some cases
- [OS X] fix Brazilian Portuguese localization not being used
- [OS X] fix sandbox permission window with unusual source paths setting
- [Windows] HiDPI support


Version 1.7.3
-------------

- it is now possible to disable unwanted extractors in preferences
- source paths in catalog properties can now include individual files
- exclusion paths in catalog properties can now use wildcards
  (e.g. *.js, now default for WordPress)
- "Consult TM when updating from sources" now includes only "good" matches
  (with at least 75% score)
- fix losing of the editing position when saving a file
- fix Preferences layout in Japanese and Chinese translations
- Windows: fix custom font setting after using a suggestion or copying from
  source text

(there was no version 1.7.2)


Version 1.7.1
-------------

- fix menu shortcuts problem in Polish localization


Version 1.7
-----------

- reworked preferences
- support for extraction from JavaScript (and more) sources
- suggestions and other relevant information (comments etc.) are now much
  easier to access in a unified sidebar
- syntax highlighting of special characters in translations
- added Group by Context sorting option
- implemented multiple selection
- formatting of PO files can now be customized
- added support for msgmerge --no-fuzzy-matching


Version 1.6.10
--------------

- multiple fixes to parsing of the Language header
- fix handling of broken POTs with duplicate headers
- improved robustness of the Lucene TM database
- misc small fixes
- translations updates and fixes


Version 1.6.9
-------------

- fixes to handling of RTL translations
- fix editing-related crashes under wxGTK
- translations updates


Version 1.6.8
-------------

- fix parsing of obsolete entries in PO files
- improved spellchecker handling on OS X and Windows
- misc fixes
- translations updates


Version 1.6.7
-------------

- better handle "fatal" (but not really) msgfmt errors
- OS X: fix OS X 10.7 compatibility
- OS X/Win: update bundled Gettext to 0.19.2
- translations updates


Version 1.6.6
-------------

- added exclusion paths support to updating from sources
- spellchecking is now supported on Windows 8+
- STL version of wxWidgets is no longer required to build on Unix
- update Windows and OS X builds to GNU gettext 0.19
- misc fixes
- translations updates


Version 1.6.5
-------------

- assorted small bugfixes


Version 1.6.4
-------------

- translation memory tuning
- Unix: restore compatibility with GTK+ 2
- misc fixes
- minor UI improvements (better wording etc.)
- OS X: misc fixes for Mavericks compatibility
- OS X/Win: update bundled Gettext to 0.18.3.2
- translations updates


Version 1.6.3
-------------

- fix invocation of external parser tools that need PATH
- Unix: use XDG_CONFIG_HOME for dotfile location
- OS X: fix conflict with Smart Quotes on Mavericks
- translations updates


Version 1.6.2
-------------

- fix TM failures with non-ASCII paths on Windows
- add support for Zend Framework's .phtml
- and support for WordPress' translators: comments
- translations updates


Version 1.6.1
-------------

- fixes to TM migration code
- OS X: fixes for Retina displays


Version 1.6
-----------

- improved languages handling (entering, sorting, plural forms expressions)
- completely new translation memory implementation
- assorted UI improvements
- better build systems on OS X and Windows
- OS X: minimum required version is 10.7; PPC builds are no longer supported


Version 1.5.7
-------------

- fix incorrect --add-comments flag introduced in 1.5.6


Version 1.5.6
-------------

- fix several problems with the file viewer: better lookup of files,
  fix display of UTF-8 files, better detection of DOS-style paths
- fix Find window's text field focus on OS X
- add --add-comments=TRANSLATORS to xgettext call in default parsers
- fix parsing of obsolete entries to recognize "#~|"
- fix incorrect update stats when using msg contexts
- translations updates


Version 1.5.5
-------------

- fix crash when auto-updating translations with some TMs
- fix file corruption when the catalog's charset was set to one that
  couldn't represent all of the text
- translations updates


Version 1.5.4
-------------

- fix display of source code (#472)
- fix bug when saving file fails on permissions (#491)
- fix Unix makefiles to install all icons (#493)
- translations updates

Version 1.5.3
-------------


- fixes to parsing of msgfmt errors
- misc UI fixes
- OS X: fixed crash when closing a document and opening another
- fixed compatibility with OS X 10.5 Leopard
- fixed problems with TM migration after upgrade
- reverted removal of line numbers in 1.5.2
- reverted: the default is to compile MO files on save again
- translations updates


Version 1.5.2
-------------

- fixed crash when clearing the translation (#428, #468)
- removed no longer needed line numbers from the UI
- OS X: improved attention bar looks
- translations updates


Version 1.5.1
-------------

- Windows: fix missing libstdc++-6.dll
- updated several translations


Version 1.5
-----------

- show translation errors inline with the entries they relate to, instead of a
  confusing errors log when saving
- implement full support for message contexts
- replaced popups when Poedit is started for the first time with
  unobtrusive Firefox-style notifications
- selecting suggested translation from right-click popup menu now
  correctly removes fuzzy flag from the translation
- warn the user if Plural-Forms header is inconsistent with the number
  of plural translations in the catalog or if has syntax errors
- correctly deduce catalog's language from filenames in the form of
  foo.LANG.po, as used by several large Open Source projects (#267)
- Boost library is now required when compiling from sources
- fixed the Find window so that it can be closed using the Esc key (#187)
- positions of translation fields are now remembered correctly when
  Poedit window is maximized (#194)
- added Edit->Clear translation command (Marcin Floryan)
- removed View->Fullscreen view, it doesn't make sense in this kind of app
- better application and document icons
- removed the "Shaded translations list" option, it's now always enabled
- misc minor UI improvements
- fixed possible transaction memory database corruption (#337, #352)
- added instructions on how to install additional spellchecker dictionaries
- added sorting by different criteria (#256, #239)
- improved source files viewer (#346)
- included outdated documentation was replaced with online wiki docs (#343)
- more keyboard navigation shortcuts
- saving PO files no longer reformats source code references (#323);
  moreover, they are always formatted according to the default style
  used by GNU gettext tools (#348)
- don't restore remembered window positions if they are outside currently
  available screens (#318)
- changed Alt+ shortcuts to non-conflicting Ctrl+ ones: "Copy From Source
  Text" now uses Ctrl+B and "Translation Is Fuzzy" Ctrl+U
- various UI improvements
- added more translations:
     Bosnian translation (Kenan Dervisevic)
     Tajik (Victor Ibragimov)
     Kurdish Sorani (Asos Ap)
jperkin pushed a commit that referenced this issue Aug 12, 2016
---------------------------
* version 2.6.1 released 2016-03-01

** flex resources

*** The flex project is now hosted at github. Consider this a "period of
    transition". In particular, you should start at
    https://github.com/westes/flex for the flex codebase, issue tracking
    and pull requests.

*** New releases of flex are to be found at
    https://github.com/westes/flex/releases.

** flex internals

*** Flex now uses more modern and more standard names for variable
    types. There's more work to be done on that front yet, though.

*** A number of compiler warnings have been remedied.

*** Line directives should now work as expected and be absent when that is
    expected.

** test suite

*** When running the test suite, c++ files are compiled with the c++ header
    inside the flex distribution, rather than relying on the build system's
    flex header , which might not be installed yet or which might be out of
    date with respect to what flex tests expect.

*** Some portability fixes in the test suite such as opening files for
    reading in binary mode

** Building flex

*** The file src/scan.c asdistributed with flex source is now built with
    the current version of flex. Occasionally this had to be done manually
    to pick up new flex features. It's now just a part of flex's build
    system.

*** The pdf version of the manual is no longer distributed with flex,
    although if you have the texinfo package installed, you can still build
    it.

*** lots of general build system cleanup

*** the build system tries a bit harder to find libtoolize and texi2dvi.

*** When help2man and texi2dvi are missing, the error messages are now much
    more helpful.

** bug fixes

*** resolved github issues #53, #54, #55, #61.

*** Resolved sf bugs #128, #129, #155, #160, #184, #187, #195.

(pkgsrc changes)
- Githubify
- pre-configure: stage set for ./autogen.sh
- Add patch-src_Makefile.am to generate parse.h before main.c is
  compiled (MAKE_JOBS_SAFE = no without this patch)
- Drop (or convert) patches
  patch-src_filter.c -- upstream taken
  patch-src_Makefile.in -- file is gone
  patch-src_Makefile.am  converted to the same name, different purpose
  patch-tests_Makefile.in converted to patch-tests_Makefile.am

- Add BUILD_DEPENDS+= help2man-[0-9]*:../../converters/help2man
jperkin pushed a commit that referenced this issue Aug 24, 2016
NEWS:
Version 2.5.3
-------------
- Updated zoneinfo to 2016d
- Fixed parser bug where unambiguous datetimes fail to parse when dayfirst is
  set to true. (gh issue #233, pr #234)
- Bug in zoneinfo file on platforms such as Google App Engine which do not
  do not allow importing of subprocess.check_call was reported and fixed by
  @savraj (gh issue #239, gh pr #240)
- Fixed incorrect version in documentation (gh issue #235, pr #243)

Version 2.5.2
-------------
- Updated zoneinfo to 2016c
- Fixed parser bug where yearfirst and dayfirst parameters were not being
  respected when no separator was present. (gh issue #81 and #217, pr #229)

Version 2.5.1
-------------
- Updated zoneinfo to 2016b
- Changed MANIFEST.in to explicitly include test suite in source distributions,
  with help from @koobs (gh issue #193, pr #194, #201, #221)
- Explicitly set all line-endings to LF, except for the NEWS file, on a
  per-repository basis (gh pr #218)
- Fixed an issue with improper caching behavior in rruleset objects (gh issue
  #104, pr #207)
- Changed to an explicit error when rrulestr strings contain a missing BYDAY
  (gh issue #162, pr #211)
- tzfile now correctly handles files containing leapcnt (although the leapcnt
  information is not actually used). Contributed by @hjoukl (gh issue #146, pr
  #147)
- Fixed recursive import issue with tz module (gh pr #204)
- Added compatibility between tzwin objects and datetime.time objects (gh issue
  #216, gh pr #219)
- Refactored monolithic test suite by module (gh issue #61, pr #200 and #206)
- Improved test coverage in the relativedelta module (gh pr #215)
- Adjusted documentation to reflect possibly counter-intuitive properties of
  RFC-5545-compliant rrules, and other documentation improvements in the rrule
  module (gh issue #105, gh issue #149 - pointer to the solution by @phep,
  pr #213).


Version 2.5.0
-------------
- Updated zoneinfo to 2016a
- zoneinfo_metadata file version increased to 2.0 - the updated updatezinfo.py
  script will work with older zoneinfo_metadata.json files, but new metadata
  files will not work with older updatezinfo.py versions. Additionally, we have
  started hosting our own mirror of the Olson databases on a github pages
  site (https://dateutil.github.io/tzdata/) (gh pr #183)
- dateutil zoneinfo tarballs now contain the full zoneinfo_metadata file used
  to generate them. (gh issue #27, gh pr #85)
- relativedelta can now be safely subclassed without derived objects reverting
  to base relativedelta objects as a result of arithmetic operations.
  (lp:1010199, gh issue #44, pr #49)
- relativedelta 'weeks' parameter can now be set and retrieved as a property of
  relativedelta instances. (lp: 727525, gh issue #45, pr #49)
- relativedelta now explicitly supports fractional relative weeks, days, hours,
  minutes and seconds. Fractional values in absolute parameters (year, day, etc)
  are now deprecated. (gh issue #40, pr #190)
- relativedelta objects previously did not use microseconds to determine of two
  relativedelta objects were equal. This oversight has been corrected.
  Contributed by @elprans (gh pr #113)
- rrule now has an xafter() method for retrieving multiple recurrences after a
  specified date. (gh pr #38)
- str(rrule) now returns an RFC2445-compliant rrule string, contributed by
  @schinckel and @armicron (lp:1406305, gh issue #47, prs #50, #62 and #160)
- rrule performance under certain conditions has been significantly improved
  thanks to a patch contributed by @dekoza, based on an article by Brian Beck
  (@exogen) (gh pr #136)
- The use of both the 'until' and 'count' parameters is now deprecated as
  inconsistent with RFC2445 (gh pr #62, #185)
- Parsing an empty string will now raise a ValueError, rather than returning the
  datetime passed to the 'default' parameter. (gh issue #78, pr #187)
- tzwinlocal objects now have a meaningful repr() and str() implementation
  (gh issue #148, prs #184 and #186)
- Added equality logic for tzwin and tzwinlocal objects. (gh issue #151,
  pr #180, #184)
- Added some flexibility in subclassing timelex, and switched the default
  behavior over to using string methods rather than comparing against a fixed
  list. (gh pr #122, #139)
- An issue causing tzstr() to crash on Python 2.x was fixed. (lp: 1331576,
  gh issue #51, pr #55)
- An issue with string encoding causing exceptions under certain circumstances
  when tzname() is called was fixed. (gh issue #60, #74, pr #75)
- Parser issue where calling parse() on dates with no day specified when the
  day of the month in the default datetime (which is "today" if unspecified) is
  greater than the number of days in the parsed month was fixed (this issue
  tended to crop up between the 29th and 31st of the month, for obvious reasons)
  (canonical gh issue #25, pr #30, #191)
- Fixed parser issue causing fuzzy_with_tokens to raise an unexpected exception
  in certain circumstances. Contributed by @MichaelAquilina (gh pr #91)
- Fixed parser issue where years > 100 AD were incorrectly parsed. Contributed
  by @Bachmann1234 (gh pr #130)
- Fixed parser issue where commas were not a valid separator between seconds
  and microseconds, preventing parsing of ISO 8601 dates. Contributed by
  @ryanss (gh issue #28, pr #106)
- Fixed issue with tzwin encoding in locales with non-Latin alphabets
  (gh issue #92, pr #98)
- Fixed an issue where tzwin was not being properly imported on Windows.
  Contributed by @labrys. (gh pr #134)
- Fixed a problem causing issues importing zoneinfo in certain circumstances.
  Issue and solution contributed by @alexxv (gh issue #97, pr #99)
- Fixed an issue where dateutil timezones were not compatible with basic time
  objects. One of many, many timezone related issues contributed and tested by
  @labrys. (gh issue #132, pr #181)
- Fixed issue where tzwinlocal had an invalid utcoffset. (gh issue #135,
  pr #141, #142)
- Fixed issue with tzwin and tzwinlocal where DST transitions were incorrectly
  parsed from the registry. (gh issue #143, pr #178)
- updatezinfo.py no longer suppresses certain OSErrors. Contributed by @bjamesv
  (gh pr #164)
- An issue that arose when timezone locale changes during runtime has been
  fixed by @carlosxl and @mjschultz (gh issue #100, prs #107, #109)
- Python 3.5 was added to the supported platforms in the metadata (@tacaswell
  gh pr #159) and the test suites (@moreati gh pr #117).
- An issue with tox failing without unittest2 installed in Python 2.6 was fixed
  by @moreati (gh pr #115)
- Several deprecated functions were replaced in the tests by @moreati
  (gh pr #116)
- Improved the logic in Travis and Appveyor to alleviate issues where builds
  were failing due to connection issues when downloading the IANA timezone
  files. In addition to adding our own mirror for the files (gh pr #183), the
  download is now retried a number of times (with a delay) (gh pr #177)
- Many failing doctests were fixed by @moreati. (gh pr #120)
- Many fixes to the documentation (gh pr #103, gh pr #87 from @radarhere,
  gh pr #154 from @gpoesia, gh pr #156 from @awsum, gh pr #168 from @ja8zyjits)
- Added a code coverage tool to the CI to help improve the library. (gh pr #182)
- We now have a mailing list - dateutil@python.org, graciously hosted by
  Python.org.


Version 2.4.2
-------------
- Updated zoneinfo to 2015b.
- Fixed issue with parsing of tzstr on Python 2.7.x; tzstr will now be decoded
  if not a unicode type. gh #51 (lp:1331576), gh pr #55.
- Fix a parser issue where AM and PM tokens were showing up in fuzzy date
  stamps, triggering inappropriate errors. gh #56 (lp: 1428895), gh pr #63.
- Missing function "setcachesize" removed from zoneinfo __all__ list by @ryanss,
  fixing an issue with wildcard imports of dateutil.zoneinfo. (gh pr #66).
- (PyPi only) Fix an issue with source distributions not including the test
  suite.


Version 2.4.1
-------------

- Added explicit check for valid hours if AM/PM is specified in parser.
  (gh pr #22, issue #21)
- Fix bug in rrule introduced in 2.4.0 where byweekday parameter was not
  handled properly. (gh pr #35, issue #34)
- Fix error where parser allowed some invalid dates, overwriting existing hours
  with the last 2-digit number in the string. (gh pr #32, issue #31)
- Fix and add test for Python 2.x compatibility with boolean checking of
  relativedelta objects. Implemented by @nimasmi (gh pr #43) and Cédric Krier
  (lp: 1035038)
- Replaced parse() calls with explicit datetime objects in unit tests unrelated
  to parser. (gh pr #36)
- Changed private _byxxx from sets to sorted tuples and fixed one currently
  unreachable bug in _construct_byset. (gh pr #54)
- Additional documentation for parser (gh pr #29, #33, #41) and rrule.
- Formatting fixes to documentation of rrule and README.rst.
- Updated zoneinfo to 2015a.
wiedi pushed a commit to wiedi/pkgsrc-legacy that referenced this issue Nov 17, 2016
Slightly based on wip/flex by Makoto Fujiwara and Juraj Lutter.

* version 2.6.2 released 2016-10-24

** flex internals

*** a segfalt involving yyrestart(NULL) has been fixed

*** flex should now handle quoting when mixed with m4 processing correctly

*** flex handles `[[' and `]]' correctly

*** flex no longer generates non-ANSI code

*** more compilation warnings were squashed in generated scanners

*** prevented a buffer overflow that could occur when input buffers were the exact wrong size

** test suite

*** input filenames on MSWindows are now calculated correctly

*** general code cleanups in a number of tests now make the test suite compile much more cleanly

** build system

*** the xz archive has been replaced with an lzip archive

*** a new option to configure --enable-warnings to encapsulate passing
    of warning-related flags which is useful in testing flex

*** make indent now works for out of source builds

*** Portability warnings when generating Makefile.in files are now suppressed; they were just noise and the use of GNU extensions in Makefile.{am,in,} was intentional and well known.

** bugs

*** resolved gh#67

** new sv translation from the translation project

* version 2.6.1 released 2016-03-01

** flex resources

*** The flex project is now hosted at github. Consider this a "period of transition". In particular, you should start at https://github.com/westes/flex for the flex codebase, issue tracking and pull requests.

*** New releases of flex are to be found at https://github.com/westes/flex/releases.

** flex internals

*** Flex now uses more modern and more standard names for variable types. There's more work to be done on that front yet, though.

*** A number of compiler warnings have been remedied.

*** Line directives should now  work as expected and be absent when that is expected.

** test suite

*** When running the test suite, c++ files are compiled with the c++ header inside the flex distribution, rather than relying on the build system's flex header , which might not be installed yet or which might be out of date with respect to what flex tests expect.

*** Some portability fixes in the test suite such as opening files for reading in binary mode

** Building flex

*** The file src/scan.c asdistributed  with flex source is now built with the current version of flex. Occasionally this had to be done manually to pick up new flex features. It's now just a part of flex's build system.

*** The pdf version of the manual is no longer distributed with flex, although if you have the texinfo package installed, you can still build it.

*** lots of general build system cleanup

*** the build system tries a bit harder to find libtoolize and texi2dvi.

*** When help2man and texi2dvi are missing, the error messages are now much more helpful.

** bug fixes

*** resolved github issues TritonDataCenter#53, TritonDataCenter#54, TritonDataCenter#55, TritonDataCenter#61.

*** Resolved sf bugs TritonDataCenter#128, TritonDataCenter#129, TritonDataCenter#155, TritonDataCenter#160, TritonDataCenter#184, TritonDataCenter#187, TritonDataCenter#195.
jperkin pushed a commit that referenced this issue Jan 23, 2017
- Simplify nospace handling in global completion (#195)
- Specially handle all characters in COMP_WORDBREAKS (#187)
- Use setuptools tests-require directive, fixes #186
- Complete files using the specified interpreter (#192)
- Fix completion for scripts run via python (#191)
- Clarify argument to register-python-argcomplete (#190)
- Fix handling of commas and other special chars (#172); handle more
  special characters (#189)
- Fix handling of special characters in tcsh (#188)
- Update my_shlex to Python 3.6 version (#184)
- Fix additional trailing space in exact matches (#183)
- Adjust tests to handle development environments (#180)
- Fix tcsh tests on OSX (#177); Update bash on OSX (#176); Check output
  of test setup command (#179)
- Optionally disable duplicated flags (#143)
- Add default_completer option to CompletionFinder.call (#167)
- Let bash add or suppress trailing space (#159)
jperkin pushed a commit that referenced this issue Feb 28, 2017
Version 0.14.2
--------------

Released 2017-01-10

- Fix bug where ``FlaskForm`` assumed ``meta`` argument was not ``None`` if it
  was passed. (`#278`_)

.. _#278: wtforms/flask-wtf#278

Version 0.14.1
--------------

Released 2017-01-10

- Fix bug where the file validators would incorrectly identify an empty file as
  valid data. (`#276`_, `#277`_)

    - ``FileField`` is no longer deprecated. The data is checked during
      processing and only set if it's a valid file.
    - ``has_file`` *is* deprecated; it's now equivalent to ``bool(field.data)``.
    - ``FileRequired`` and ``FileAllowed`` work with both the Flask-WTF and
      WTForms ``FileField`` classes.
    - The ``Optional`` validator now works with ``FileField``.

.. _#276: wtforms/flask-wtf#276
.. _#277: wtforms/flask-wtf#277

Version 0.14
------------

Released 2017-01-06

- Use itsdangerous to sign CSRF tokens and check expiration instead of doing it
  ourselves. (`#264`_)

    - All tokens are URL safe, removing the ``url_safe`` parameter from
      ``generate_csrf``. (`#206`_)
    - All tokens store a timestamp, which is checked in ``validate_csrf``. The
      ``time_limit`` parameter of ``generate_csrf`` is removed.

- Remove the ``app`` attribute from ``CsrfProtect``, use ``current_app``.
  (`#264`_)
- ``CsrfProtect`` protects the ``DELETE`` method by default. (`#264`_)
- The same CSRF token is generated for the lifetime of a request. It is exposed
  as ``g.csrf_token`` for use during testing. (`#227`_, `#264`_)
- ``CsrfProtect.error_handler`` is deprecated. (`#264`_)

    - Handlers that return a response work in addition to those that raise an
      error. The behavior was not clear in previous docs.
    - (`#200`_, `#209`_, `#243`_, `#252`_)

- Use ``Form.Meta`` instead of deprecated ``SecureForm`` for CSRF (and
  everything else). (`#216`_, `#271`_)

    - ``csrf_enabled`` parameter is still recognized but deprecated. All other
      attributes and methods from ``SecureForm`` are removed. (`#271`_)

- Provide ``WTF_CSRF_FIELD_NAME`` to configure the name of the CSRF token.
  (`#271`_)
- ``validate_csrf`` raises ``wtforms.ValidationError`` with specific messages
  instead of returning ``True`` or ``False``. This breaks anything that was
  calling the method directly. (`#239`_, `#271`_)

    - CSRF errors are logged as well as raised. (`#239`_)

- ``CsrfProtect`` is renamed to ``CSRFProtect``. A deprecation warning is issued
  when using the old name. ``CsrfError`` is renamed to ``CSRFError`` without
  deprecation. (`#271`_)
- ``FileField`` is deprecated because it no longer provides functionality over
  the provided validators. Use ``wtforms.FileField`` directly. (`#272`_)

.. _`#200`: wtforms/flask-wtf#200
.. _`#209`: wtforms/flask-wtf#209
.. _`#216`: wtforms/flask-wtf#216
.. _`#227`: wtforms/flask-wtf#227
.. _`#239`: wtforms/flask-wtf#239
.. _`#243`: wtforms/flask-wtf#243
.. _`#252`: wtforms/flask-wtf#252
.. _`#264`: wtforms/flask-wtf#264
.. _`#271`: wtforms/flask-wtf#271
.. _`#272`: wtforms/flask-wtf#272

Version 0.13.1
--------------

Released 2016/10/6

- Deprecation warning for ``Form`` is shown during ``__init__`` instead of immediately when subclassing. (`#262`_)
- Don't use ``pkg_resources`` to get version, for compatibility with GAE. (`#261`_)

.. _`#261`: wtforms/flask-wtf#261
.. _`#262`: wtforms/flask-wtf#262

Version 0.13
------------

Released 2016/09/29

- ``Form`` is renamed to ``FlaskForm`` in order to avoid name collision with WTForms's base class.  Using ``Form`` will show a deprecation warning. (`#250`_)
- ``hidden_tag`` no longer wraps the hidden inputs in a hidden div.  This is valid HTML5 and any modern HTML parser will behave correctly. (`#217`_, `#193`_)
- ``flask_wtf.html5`` is deprecated.  Import directly from ``wtforms.fields.html5``. (`#251`_)
- ``is_submitted`` is true for ``PATCH`` and ``DELETE`` in addition to ``POST`` and ``PUT``. (`#187`_)
- ``generate_csrf`` takes a ``token_key`` parameter to specify the key stored in the session. (`#206`_)
- ``generate_csrf`` takes a ``url_safe`` parameter to allow the token to be used in URLs. (`#206`_)
- ``form.data`` can be accessed multiple times without raising an exception. (`#248`_)
- File extension with multiple parts (``.tar.gz``) can be used in the ``FileAllowed`` validator. (`#201`_)

.. _`#187`: wtforms/flask-wtf#187
.. _`#193`: wtforms/flask-wtf#193
.. _`#201`: wtforms/flask-wtf#201
.. _`#206`: wtforms/flask-wtf#206
.. _`#217`: wtforms/flask-wtf#217
.. _`#248`: wtforms/flask-wtf#248
.. _`#250`: wtforms/flask-wtf#250
.. _`#251`: wtforms/flask-wtf#251
jperkin pushed a commit that referenced this issue Mar 20, 2017
## 2.0.7 (2017-03-19)

* Do not modify BasicObject during template compilation on ruby 2.0+ (#309, jeremyevans)

## 2.0.6 (2017-01-26)

* Add support for LiveScript (#286, @Announcement Jacob Francis Powers)
* Add support for Sigil (#302, winebarrel)
* Add support for Erubi (#308, jeremyevans)
* Add support for options in Liquid (#298, #299, laCour)
* Always sort locals by strings (#307, jeremyevans)

* Fix test warnings (#305, amatsuda)
* Fix indentation (#293, yui-knk)
* Use SVG badges in README (#294, vasinov)
* Fix typo and trailing space (#295, #296, karloescota)

## 2.0.5 (2016-06-02)

* Add support for reST using Pandoc (#284, mfenner)
* Make lazy loading thread-safe; remove warning (judofyr)

## 2.0.4 (2016-05-16)

* Fix regression in BuilderTemplate (#283, judofyr)

## 2.0.3 (2016-05-12)

* Add Pandoc support (#276, jmuheim)
* Add CommonMark support (#282, raphink)
* Add TypeScript support (#278, nghitran)
* Work with frozen string literal (#274, jeremyevans)
* Add MIME type for Babel (#273, SaitoWu)

## 2.0.2 (2016-01-06)

* Pass options to Redcarpet (#250, hughbien)
* Haml: Improve error message on frozen self (judofyr)
* Add basic support for Babel (judofyr)
* Add support for .litcoffee (#243, judofyr, mr-vinn)
* Document Tilt::Cache (#266, tommay)
* Sort local keys for better caching (#257, jeremyevans)
* Add more CSV options (#256, Juanmcuello)
* Add Prawn template (kematzy)
* Improve cache-miss performance in Tilt::Cache (#251, tommay)
* Add man page (#241, josephholsten)
* Support YAML/JSON data in bin/tilt (#241, josephholsten)

## 2.0.1 (2014-03-21)

* Fix Tilt::Mapping bug in Ruby 2.1.0 (9589652c569760298f2647f7a0f9ed4f85129f20)
* Fix `tilt --list` (#223, Achrome)
* Fix circular require (#221, amarshall)

## 2.0.0 (2013-11-30)

* Support Pathname in Template#new (#219, kabturek)
* Add Mapping#templates_for (judofyr)
* Support old-style #register (judofyr)
* Add Handlebars as external template engine (#204, judofyr, jimothyGator)
* Add org-ruby as external template engine (#207, judofyr, minad)
* Documentation typo (#208, elgalu)

## 2.0.0.beta1 (2013-07-16)

* Documentation typo (#202, chip)
* Use YARD for documentation (#189, judofyr)
* Add Slim as an external template engine (judofyr)
* Add Tilt.templates_for (#121, judofyr)
* Add Tilt.current_template (#151, judofyr)
* Avoid loading all files in tilt.rb (#160, #187, judofyr)
* Implement lazily required templates classes (#178, #187, judofyr)
* Move #allows_script and default_mime_type to metadata (#187, judofyr)
* Introduce Tilt::Mapping (#187, judofyr)
* Make template compilation thread-safe (#191, judofyr)
wiedi pushed a commit to wiedi/pkgsrc-legacy that referenced this issue Jan 28, 2018
pkgsrc changes:
- switch to using qt5 (to follow upstream)
- handle ${PREFIX} in more places
- fix package COMMENT (remove "for IBus")
- GCC_REQD 4.7 for c++11
- add patch comments

See PR pkg/52689 for more details.

Upstream changes:
(from https://github.com/google/mozc/blob/master/docs/release_history.md)

Summary of changes between 2.19.2644.102 and 2.20.2673.102 as follows.

    Third party libraries:
        None.
    Build related changes:
        --qtver GYP build option was removed (280e38f).
        Mozc for macOS now uses macOS 10.11 SDK by default (b2a74bb).
    Major changes:
        src/data/installer/credits_ja.html was removed (2ec6c8f).
        Mozc for macOS now generates 64-bit executables. 32-bit machine is no longer supported on macOS.
        Mozc for Android now has more translations (d914458).
    Fixed issues:
        TritonDataCenter#187: build_mozc.py always generates 32 bit binaries on 64 bit OSX
        TritonDataCenter#327: Switch to Qt5 from Qt4
        TritonDataCenter#348: DirectWrite may fail to render text in certain enviromnents
        TritonDataCenter#391: ImportError: gen_zip_code_seed.py
        TritonDataCenter#399: OK/Cancel buttons on Mozc key binding editor dialog cannot be clicked on Windows
        TritonDataCenter#400: Close icon on GUI dialogs do not work on Windows
    Total commits:
        30 commits.

Summary of changes between 2.18.2613.102 and 2.19.2643.102 as follows.

    Third party libraries:
        protobuf: e8ae137 -> c44ca26
        Dropped dependency on fonttools
    Build related changes:
        --qtver=5 GYP build option is implicitly assumed on macOS and Linux builds (f76c304). On Windows, --qtver=4 is still the default.
    Major changes:
        Mozc for macOS now supports 10.12 as a runtime environment.
        Mozc for Android now uses on-device font to render keytop icons (f5dcad).
    Fixed issues:
        TritonDataCenter#263: Incorrect position in voiced sound marks on the key pad in Android
        TritonDataCenter#384: HUAWEI P9 lite does not show MozcView.
        TritonDataCenter#388: Having multiple abbreviation user dictionary entries with the same reading should be supported
        TritonDataCenter#389: Emoticon user dictionary entry should not be treated a content word
    Total commits:
        39 commits.

Summary of changes between 2.17.2532.102 and 2.18.2612.102 as follows.

    Third party libraries:
        protobuf: d5fb408 -> e8ae137
        GYP: e2e928b -> 4ec6c4e
        breakpad: d2904bb -> 85b27e4
        Dropped dependency on zlib
    Build related changes:
        Renamed src/mozc_version_template.txt to src/data/version/mozc_version_template.bzl
        Reference build environment now uses Ubuntu 14.04.5 (a7cbf72)
        Reference build environment now uses Ninja 1.7.1 (d2bc62b)
        Removed --android_compiler GYP option (5ce7fa6)
        Android build requires Android NDK r12b (5ce7fa6)
    Major changes:
        Improved Store Apps compatibility on Windows (0488082)
    Fixed issues:
        NPE in UserDictionaryToolActivity.onPostResume on Android (09b47c3)
        TritonDataCenter#273: Compilation errors in Android arm64 and mips64 build
        TritonDataCenter#373: Unexpected size bloat of the APK
        TritonDataCenter#374: Duplicate candidates after Undo
        TritonDataCenter#375: 90- is suggested from 090-
        TritonDataCenter#376: Suggestion-only user dictionary entry may not work
        TritonDataCenter#377: Abbreviation user dictionary entry may not work
        TritonDataCenter#378: Suppression word may not work
        TritonDataCenter#379: Single character noun user dictionary entry may not work
        TritonDataCenter#380: Dependency on dictionary/pos_matcher.h from session/session_server.cc is missing in GYP rules
        TritonDataCenter#382: Fix typo
    Total commits:
        84 commits.

Summary of changes between 2.17.2405.102 and 2.17.2531.102 as follows.

    Third party libraries:
        protobuf: 1a59a71 -> d5fb408
    Build related changes:
        Building Mozc for Windows requires Visual Studio 2015 update 3.
        --qtdir option is no longer supported in Linux desktop build (d003076).
    Major changes:
        Updated system dictionary.
        Removed several Shift-JIS-based normalizations on Windows (26241b0).
        Mozc for Windows requires SSE2 even on 32-bit environment.
        Mozc for Windows supports Windows 7 SP1 and later only.
        Mozc for macOS supports macOS 10.9 and later only.
        Mozc for desktop platforms (Windows, macOS, desktop Linux) supports Qt5 behind --qtver=5 GYP option.
    Fixed issues:
        Fix OOM when importing too large dictionary file on Android (5c859ae)
        TritonDataCenter#298: Fix NPE on Samsung devices on showing toast
        TritonDataCenter#315: Switch to Visual C++ 2015
        TritonDataCenter#372: Discontinue the support of Windows Vista
    Total commits:
        128 commits.

Summary of changes between 2.17.2355.102 and 2.17.2404.102 as follows.

    Third party libraries:
        protobuf: 172019c -> 1a59a71
    Build related changes:
        Building Mozc requires protobuf 3.0 or later.
        --android_stl GYP option is removed in Android build. You cannot use GNU STL to build Mozc for Android anymore.
    Major changes:
        None.
    Fixed issues:
        TritonDataCenter#369: Unexpected software keyboard layout can be chosen
        TritonDataCenter#370: Mozc keeps crashing on Android N Developer Preview 5
        TritonDataCenter#371: Shortcut word in personal dictionary should not be used for multi segment conversion
    Total commits:
        50 commits.

Summary of changes between 2.17.2323.102 and 2.17.2354.102 as follows.

    Third party libraries:
        None.
    Build related changes:
        None.
    Major changes:
        2.17.2323.102 and later commits in OSS repository preserve the original CL commit date in Google internal repository.
            Consider to specify --topo-order option to git log to see commits in the actual commit order.
        Multiple performance improvements in Android.
    Fixed issues:
        None.
    Total commits:
        32 commits.

Summary of changes between 2.17.2314.102 and 2.17.2322.102 as follows.

    Third party libraries:
        googletest: 1d53731 -> 82b11b8
        WTL: 9.0.4140 -> 9.1.5321
    Build related changes:
        Building macOS binaries now requires Ninja instead of xcodebuild.
    Major changes:
        None.
    Fixed issues:
        TritonDataCenter#247: Use ninja to build Mac binaries
        TritonDataCenter#355: Native resource leak due to the missing pthread_detach call in mozc::Thread::Detach
        TritonDataCenter#361: ImmSetCandidateWindow() with CFS_EXCLUDE isn't supported on Win Vista and Win7
    Total commits:
        15 commits.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants