Apache Thrift Changelog

================================================================================
Thrift 0.12.0
--------------------------------------------------------------------------------
## New Languages
    * Common LISP (cl)
    * Swift
    * Typescript (nodets)

## Deprecated Languages
    * Cocoa

## Breaking Changes (since 0.11.0)
    * [THRIFT-4529] - Rust enum variants are now camel-cased instead of uppercased to conform to Rust naming conventions
    * [THRIFT-4448] - Support for golang 1.6 and earlier has been dropped.
    * [THRIFT-4474] - PHP now uses the PSR-4 loader by default instead of class maps.
    * [THRIFT-4532] - method signatures changed in the compiler's t_oop_generator.
    * [THRIFT-4648] - The C (GLib) compiler's handling of namespaces has been improved.

## Known Issues (Blocker or Critical)
    * [THRIFT-4037] - build: use a single build system for thrift
    * [THRIFT-4119] - build: bootstrap.sh is missing from source tarball
    * [THRIFT-3289] - csharp: socket exhaustion in csharp implementation
    * [THRIFT-3029] - cocoa: Getters for fields defined with uppercase names do not work
    * [THRIFT-3325] - cocoa: Extended services aren't subclasses in generated Cocoa
    * [THRIFT-4116] - cocoa: Thrift de-capitalizes the name of IsSet property in Cocoa
    * [THRIFT-3877] - cpp: the http implementation is not standard; interop with other languages is spotty at best
    * [THRIFT-4180] - cpp: Impossible to build Thrift C++ library for Android (NDK)
    * [THRIFT-4384] - cpp: Using multiple async services simultaneously is not thread-safe
    * [THRIFT-3108] - haskell: Defaulted struct parameters on a service generates invalid Haskell
    * [THRIFT-3990] - nodejs: Exception swallowed by deserialization function
    * [THRIFT-4214] - nodejs: map<i64,value> key treated as hex value in JavaScript
    * [THRIFT-4602] - nodejs: ERROR in ./node_modules/thrift/lib/nodejs/lib/thrift/connection.js Module not found: Error: Can't resolve 'child_process'
    * [THRIFT-4639] - nodejs: Sequence numbering for multiplexed protocol broken
    * [THRIFT-1310] - php: sequence and reconnection management issues
    * [THRIFT-1538] - php: Error during deserialization int64 on 32-bit architecture
    * [THRIFT-1580] - php: thrift type i64 java to php serialize/deserealize not working
    * [THRIFT-1950] - php: PHP gets stuck in infinite loop
    * [THRIFT-2954] - python: sending int or float in a double field breaks the connection
    * [THRIFT-4080] - python: unix sockets can get stuck forever
    * [THRIFT-4281] - python: generated code is out of order and causes load issues
    * [THRIFT-4677] - py3: UnicodeDecideError in Python3

## Build Process
    * [THRIFT-4308] - D language docker images need demios for libevent and openssl fixed to re-enable make cross on dlang
    * [THRIFT-4579] - Use Ubuntu Bionic (18.04 LTS) for CI builds instead of Artful (17.10)
    * [THRIFT-4508] - Define CI operating system coverage rules for the project and (hopefully) simplify CI a little more
    * [THRIFT-4397] - ubuntu install instructions broken on 16.04
    * [THRIFT-4545] - Appveyor builds are failing due to a haskell / cabal update in chocolatey
    * [THRIFT-4452] - optimize Dockerfile (only onetime apt-get update)
    * [THRIFT-4440] - rm `build/docker/ubuntu-trusty/Dockerfile.orig`
    * [THRIFT-4352] - Ubuntu Artful doesn't appear to be compatible with Thrift and Haxe 3.4.2
    * [THRIFT-4666] - DLang Client Pool Test fails sporadically
    * [THRIFT-4676] - CL tutorial build fails sporadically
    * [THRIFT-4456] - Make haxelib download quiet so it doesn't blow up the build log
    * [THRIFT-4605] - bootstrap.sh fails if automake=1.16.1

## c_glib
    * [THRIFT-4648] - The C (GLib) compiler's handling of namespaces has been improved.
    * [THRIFT-4622] - glibC compilation issue
    * [THRIFT-4671] - c glib is unable to handle client close unexpectedly

## cl (new language support in 0.12.0)
    * [THRIFT-82] - Common Lisp support

## csharp
    * [THRIFT-4558] - reserved Csharp keywords are not escaped in some cases
    * [THRIFT-4637] - C# async mode generates incorrect code with inherited services
    * [THRIFT-4672] - IAsyncResult style methods not being supported by certain transports leads to issues in mixed ISync/IAsync use cases
    * [THRIFT-4539] - Allow TBufferedTransport to be used as base class
    * [THRIFT-4535] - XML docs; code cleanup (tabs->spaces; String->string)
    * [THRIFT-4492] - protected ExceptionType type member of TApplicationException cannot be accessed
    * [THRIFT-4446] - JSONProtocol Base64 Encoding Trims Padding
    * [THRIFT-4455] - Missing dispose calls in ThreadedServer & ThreadpoolServer
    * [THRIFT-4609] - keep InnerException wherever appropriate
    * [THRIFT-4673] - IAsyncResult not supported by layered transports (buffered/framed)

## cpp
    * [THRIFT-4476] - Typecasting problem on list items
    * [THRIFT-4465] - TNonblockingServer throwing THRIFT LOGGER: TConnection::workSocket(): THRIFT_EAGAIN (unavailable resources)
    * [THRIFT-4680] - TBufferTransports.h does not compile under Visual Studio 2017
    * [THRIFT-4618] - TNonblockingServer crash because of limitation of select()
    * [THRIFT-4620] - TZlibTransport.cpp doesn't ensure that there is enough space for the zlib flush marker in the buffer.
    * [THRIFT-4571] - ZeroMQ contrib library needs a refresh
    * [THRIFT-4559] - TSSLServerSocket incorrectly prints errors
    * [THRIFT-4578] - Move `TAsyncProtocolProcessor` into main thrift library
    * [THRIFT-4418] - evhttp_connection_new is deprecated; use evhttp_connection_base_new

## compiler
    * [THRIFT-4644] - Compiler cannot be compiled on macOS(maybe also on other platforms with clang)
    * [THRIFT-4531] - Thrift generates wrong Python code for immutable structures with optional members
    * [THRIFT-4513] - thrift generated code is not stable for constants
    * [THRIFT-4532] - Avoid updating Thrift compiler generated code if the output has not changed
    * [THRIFT-4400] - Visual Studio Compiler project should link runtime statically in release builds
    * [THRIFT-4399] - plugin.thrift t_const_value is not used as a union in C++ code -- fix this
    * [THRIFT-4496] - Dealing with language keywords in Thrift (e.g. service method names)
    * [THRIFT-4393] - repeated runs of compiler produce different binary output at plugin interface

## dlang
    * [THRIFT-4478] - Thrift will not build with dlang 2.078 or later
    * [THRIFT-4503] - dlang servers logError on normal client disconnection
    * [THRIFT-4308] - D language docker images need demios for libevent and openssl fixed to re-enable make cross on dlang

## dart
    * [THRIFT-4646] - Effective Dart and Exceptions
    * [THRIFT-4439] - Shouldn't download dart.deb directly.

## delphi
    * [THRIFT-4562] - Calling wrong exception CTOR leads to "call failed: unknown result" instead of the real exception being thrown
    * [THRIFT-4554] - uncompileable code with member names that are also types under specific conditions
    * [THRIFT-4422] - Add Async implementation via IFuture
    * [THRIFT-4485] - Possible invalid ptr AV with overlapped read/write on pipes
    * [THRIFT-4549] - Thrift exceptions should derive from TException
    * [THRIFT-4540] - buffered transport broken when trying to re-open a formerly closed transport
    * [THRIFT-4473] - Move Thrift.Console.pas out of the Library
    * [THRIFT-4490] - Allow a default service as fallback for multiplex processors connected by old clients
    * [THRIFT-4454] - Large writes/reads may cause range check errors in debug mode
    * [THRIFT-4461] - Compiler directive should match Delphi XE4
    * [THRIFT-4462] - First line in Console duplicated
    * [THRIFT-4642] - FPU ctrl word settings may cause an unexpected "denormalized" error

## erlang
    * [THRIFT-4497] - Erlang records should use map() for map type
    * [THRIFT-4495] - Erlang records should allow 'undefined' for non-required fields
    * [THRIFT-4580] - Fix erlang tutorial unpack on Windows
    * [THRIFT-4582] - Ubuntu Xenial erlang 18.3 "make check" fails

## golang
    * [THRIFT-4448] - Support for golang 1.6 and earlier has been dropped.
    * [THRIFT-4253] - Go generator assigns strings to field in const instead of pointers.
    * [THRIFT-4573] - Unions Field Count Does Not Consider Binary
    * [THRIFT-4447] - Golang: Panic on p.c.Call when using deprecated initializers
    * [THRIFT-4650] - Required field incorrectly marked as set when fieldType does not match
    * [THRIFT-4486] - Golang: -remote.go client cleanup
    * [THRIFT-4537] - TSimpleServer can exit Accept loop with lock still acquired
    * [THRIFT-4516] - Add support for go 1.10
    * [THRIFT-4421] - golang tests rely on gomock, which has change behaviour, causing tests to fail
    * [THRIFT-4626] - Communication crash when using binary/compact protocol and zlib transport
    * [THRIFT-4659] - golang race detected when closing listener socket

## haskell
    * [THRIFT-4634] - Haskell builds with older cabal cannot reconcile complex version requirements

## java
    * [THRIFT-4259] - Thrift does not compile due to Ant Maven task errors
    * [THRIFT-1418] - Compiling Thrift from source: Class org.apache.tools.ant.taskdefs.ConditionTask doesn't support the nested "typefound" element
    * [THRIFT-4530] - proposal: add nullability annotations to generated Java code
    * [THRIFT-4614] - Generate missing @Nullable annotations for Java iterator getters
    * [THRIFT-4555] - Getter of binary field in Java creates unnecessary copy
    * [THRIFT-3983] - libthrift is deployed on central with pom packaging instead of jar
    * [THRIFT-4294] - Java Configure Fails for Ant >= 1.10
    * [THRIFT-4178] - Java libraries missing from package when using cmake
    * [THRIFT-4120] - pom files are not generated or provided in the build
    * [THRIFT-1507] - Maven can't download resource from central when behind a proxy and won't use local repository
    * [THRIFT-4556] - Optional rethrow of unhandled exceptions in java processor
    * [THRIFT-4337] - Able to set keyStore and trustStore as InputStream in the TSSLTransportFactory.TSSLTransportParameters
    * [THRIFT-4566] - Pass message of unhandled exception to optional rethrow.
    * [THRIFT-4506] - Remove assertion in Java SASL code that would be ignored in release builds
    * [THRIFT-4470] - Include popular IDE file templates to gitignore
    * [THRIFT-4429] - Make TThreadPoolServer.executorService_ available in inherited classes and refactor methods to be able customization
    * [THRIFT-3769] - Fix logic of THRIFT-2268
    * [THRIFT-4494] - Increase Java Socket Buffer Size
    * [THRIFT-4499] - Remove Magic Number In TFIleTransport

## js
    * [THRIFT-4406] - JavaScript: Use modern Promise implementations
    * [THRIFT-4625] - let / const variable decorators for es6 compiler
    * [THRIFT-4653] - ES6 Classes
    * [THRIFT-4592] - JS: readI32 performance on large arrays is very poor in Chrome
    * [THRIFT-4509] - js and nodejs libraries need to be refreshed with current libraries
    * [THRIFT-4403] - thrift.js: Incorrect usage of 'this' in TWebSocketTransport.__onOpen
    * [THRIFT-4436] - Deserialization of nested list discards content
    * [THRIFT-4437] - JS WebSocket client callbacks invoked twice on parallel requests
    * [THRIFT-4679] - Duplicate declaration of InputBufferUnderrunError in lib/nodejs/lib/thrift/json_protocol.js
    * [THRIFT-4551] - Add prettier for consistent JS code formatting

## lua
    * [THRIFT-4591] - lua client uses two write() calls per framed message send
    * [THRIFT-3863] - Can't "make install" Lua Library

## netcore
    * [THRIFT-4524] - .NET Core Server doesn't close properly when cancelled
    * [THRIFT-4434] - Update .NET Core components, add tests for .Net Core library and .Net Core compiler, fix bugs and build process
    * [THRIFT-4446] - JSONProtocol Base64 Encoding Trims Padding

## node.js
    * [THRIFT-4225] - Error handling malformed arguments leaks memory, corrupts transport buffers causing next RPC to fail
    * [THRIFT-3950] - Memory leak while calling oneway method
    * [THRIFT-3143] - add typescript directory support
    * [THRIFT-4564] - TBufferedTransport can leave corrupt data in the buffer
    * [THRIFT-4647] - Node.js Fileserver webroot path
    * [THRIFT-4489] - Unix domain socket support for NodeJS client
    * [THRIFT-4443] - node.js json_protocol throws error in skip function
    * [THRIFT-4604] - NodeJS: Expose Int64 from browser.js for consumption by browser
    * [THRIFT-4480] - NodeJS warning on binary_protocol writeMessageEnd when seqid = 0

## perl
    * [THRIFT-4382] - Replace the use of Perl Indirect Object Syntax calls to new()
    * [THRIFT-4471] - Thrift CPAN release is missing Makefile.PL and the clients are unable to build the module
    * [THRIFT-4416] - Perl CPAN Packaging Improvements

## php
    * [THRIFT-4474] - PHP generator use PSR-4 default
    * [THRIFT-4463] - PHP generated code match PSR-2
    * [THRIFT-4373] - Extending Thrift class results in "Attempt serialize from non-Thrift object"
    * [THRIFT-4354] - TSocket block on read
    * [THRIFT-4423] - migrate php library to psr-4
    * [THRIFT-4656] - infinite loop in latest PHP library
    * [THRIFT-4477] - TBufferedTransport must have underlying transport
    * [THRIFT-4475] - lib/php/test should be checked for PSR-2
    * [THRIFT-4498] - add phpcs back
    * [THRIFT-4460] - php library use PSR-2
    * [THRIFT-4641] - TCurlClient doesn't check for HTTP status code
    * [THRIFT-4645] - TCurlClient: show actual error message when throwing TTransportException
    * [THRIFT-4674] - Add stream context support into PHP/THttpClient
    * [THRIFT-4459] - reduce php library directory depth

## python
    * [THRIFT-4670] - Twisted, slots, and void method fails with "object has no attribute 'success'"
    * [THRIFT-4464] - Potentially server-crashing typo in Python TNonblockingServer
    * [THRIFT-4548] - Supporting TBinaryProtocolAccelerated protocol when using TMultiplexedProcessor in Python
    * [THRIFT-4577] - Outdated cipher string in python unit test
    * [THRIFT-4505] - python build on Vagrant Windows boxes fails
    * [THRIFT-4621] - THeader for Python
    * [THRIFT-4668] - make socket backlog configurable for python
    * [THRIFT-4561] - Python: cleanup socket timeout settings

## ruby
    * [THRIFT-4289] - Thrift RSpec test suite fails with Ruby 2.4.x due to Fixnum deprecation
    * [THRIFT-4342] - Support ruby rspec 3
    * [THRIFT-4525] - Add ssl socket option to ruby cross tests
    * [THRIFT-4450] - Add seek support to TCompactInputProtocol in Rust
    * [THRIFT-4631] - Codegen Creates Invalid Ruby for Recursive Structs
    * [THRIFT-4472] - Fix the genspec for ruby so it does not complain about an invalid license

## rust
    * [THRIFT-4662] - Rust const string calls function at compile time
    * [THRIFT-4661] - Rust enum name wrong case in generated structs
    * [THRIFT-4617] - Avoid generating conflicting struct names in Rust code
    * [THRIFT-4529] - Rust generation should include #![allow(non_snake_case)] or force conform to Rust style guidelines
    * [THRIFT-4390] - Rust binary protocol and buffered transport cannot handle writes above 4096 bytes
    * [THRIFT-4419] - Rust framed transport cannot handle writes above 4096 bytes
    * [THRIFT-4658] - Rust's TBinaryInputProtocol fails when strict is false
    * [THRIFT-4187] - Dart -> Rust Framed cross tests fail
    * [THRIFT-4664] - Rust cannot create ReadHalf/WriteHalf to implement custom tranports

## swift (new language support in 0.12.0)
    * [THRIFT-3773] - Swift Library

## test suite
    * [THRIFT-4515] - Gracefully shutdown cross-test servers to fully test teardown
    * [THRIFT-4085] - Add .NET Core to the make cross standard test suite
    * [THRIFT-4358] - Add unix domain sockets in ruby to cross test - code exists

## typescript (new language support in 0.12.0)
    * [THRIFT-3143] - add typescript directory support

================================================================================
Thrift 0.11.0
--------------------------------------------------------------------------------
## Sub-task
    * [THRIFT-2733] - Erlang coding standards
    * [THRIFT-2740] - Perl coding standards
    * [THRIFT-3610] - Streamline exception handling in Python server handler
    * [THRIFT-3686] - Java processor should report internal error on uncaught exception
    * [THRIFT-4049] - Skip() should throw TProtocolException.INVALID_DATA on unknown data types
    * [THRIFT-4053] - Skip() should throw TProtocolException.INVALID_DATA on unknown data types
    * [THRIFT-4136] - Align is_binary() method with is_string() to simplify those checks
    * [THRIFT-4137] - Fix remaining undefined behavior invalid vptr casts in Thrift Compiler
    * [THRIFT-4138] - Fix remaining undefined behavior invalid vptr casts in C++ library
    * [THRIFT-4296] - Fix Ubuntu Xenial build environment for the python language
    * [THRIFT-4298] - Fix Ubuntu Xenial build environment for the go 1.6 language
    * [THRIFT-4299] - Fix Ubuntu Xenial build environment for the D language
    * [THRIFT-4300] - Fix make cross in Ubuntu Xenial docker environment, once all language support issues are fixed
    * [THRIFT-4302] - Fix Ubuntu Xenial make cross testing for lua and php7
    * [THRIFT-4398] - Update EXTRA_DIST for "make dist"

## Bug
    * [THRIFT-381] - Fail fast if configure detects C++ problems
    * [THRIFT-1677] - MinGW support broken
    * [THRIFT-1805] - Thrift should not swallow ALL exceptions
    * [THRIFT-2026] - Fix TCompactProtocol 64 bit builds
    * [THRIFT-2642] - Recursive structs don't work in python
    * [THRIFT-2889] - stable release 0.9.2, erlang tutorial broken
    * [THRIFT-2913] - Ruby Server Thrift::ThreadPoolServer should serve inside a thread
    * [THRIFT-2998] - Node.js: Missing header from http request
    * [THRIFT-3000] - .NET implementation has trouble with mixed IP modes
    * [THRIFT-3281] - Travis CI build passed but the log says BUILD FAILED
    * [THRIFT-3358] - Makefile:1362: *** missing separator. Stop.
    * [THRIFT-3600] - Make TTwisted server send exception on unexpected handler error
    * [THRIFT-3602] - Make Tornado server send exception on unexpected handler error
    * [THRIFT-3657] - D TFileWriterTransport close should use non-priority send
    * [THRIFT-3700] - Go Map has wrong default value when optional
    * [THRIFT-3703] - Unions Field Count Does Not Consider Map/Set/List Fields
    * [THRIFT-3730] - server log error twice
    * [THRIFT-3778] - go client can not pass method parameter to server of other language if no field_id is given
    * [THRIFT-3784] - thrift-maven-plugin generates invalid include directories for IDL in dependency JARs
    * [THRIFT-3801] - Node Thrift client throws exception with multiplexer and responses that are bigger than a single buffer
    * [THRIFT-3821] - TMemoryBuffer buffer may overflow when resizing
    * [THRIFT-3832] - Thrift version 0.9.3 example on Windows, Visual Studio, linking errors during compiling
    * [THRIFT-3847] - thrift/config.h includes a #define for VERSION which will likely conflict with existing user environment or code
    * [THRIFT-3873] - Fix various build warnings when using Visual Studio
    * [THRIFT-3891] - TNonblockingServer configured with more than one IO threads does not always return from serve() upon stop()
    * [THRIFT-3892] - Thrift uses TLS SNI extension provided by OpenSSL library. Older version of OpenSSL(< 0.9.8f) may create problem because they do not support 'SSL_set_tlsext_host_name()'.
    * [THRIFT-3895] - Build fails using Java 1.8 with Ant < 1.9
    * [THRIFT-3896] - map<string,string> data with number string key cannot access that deserialized by php extension
    * [THRIFT-3938] - Python TNonblockingServer does not work with SSL
    * [THRIFT-3944] - TSSLSocket has dead code in checkHandshake
    * [THRIFT-3946] - Java 1.5 compatibility broken for binary fields (java5 option)
    * [THRIFT-3960] - Inherited services in Lua generator are not named correctly
    * [THRIFT-3962] - Ant build.xml broken on Windows for Java library
    * [THRIFT-3963] - Thrift.cabal filename does not match module name
    * [THRIFT-3967] - gobject/gparam.h:166:33: warning: enumerator value for ‘G_PARAM_DEPRECATED’ is not an integer constant expression
    * [THRIFT-3968] - Deserializing empty string/binary fields
    * [THRIFT-3974] - Using clang-3.8 and ThreadSanitizer on the concurrency_test claims bad PThread behavior
    * [THRIFT-3984] - PHP7 extension causes segfault
    * [THRIFT-4008] - broken ci due to upstream dependency versioning break
    * [THRIFT-4009] - Use @implementer instead of implements in TTwisted.py
    * [THRIFT-4010] - Q.fcall messing up with *this* pointer inside called function
    * [THRIFT-4011] - Sets of Thrift structs generate Go code that can't be serialized to JSON
    * [THRIFT-4012] - Python Twisted implementation uses implements, not compatible with Py3
    * [THRIFT-4014] - align C# meta data in AssemblyInfo.cs
    * [THRIFT-4015] - Fix wrongly spelled "Thirft"s
    * [THRIFT-4016] - testInsanity() impl does not conform to test spec in ThriftTest.thrift
    * [THRIFT-4023] - Skip unexpected field types on read/write
    * [THRIFT-4024] - Skip() should throw on unknown data types
    * [THRIFT-4026] - TSSLSocket doesn't work with Python < 2.7.9
    * [THRIFT-4029] - Accelerated protocols do not build from thrift-py 0.10.0 on PyPI
    * [THRIFT-4031] - Go plugin generates invalid code for lists of typedef'ed built-in types
    * [THRIFT-4033] - Default build WITH_PLUGIN=ON for all builds results in packaging errors
    * [THRIFT-4034] - CMake doesn't work to build compiler on MacOS
    * [THRIFT-4036] - Add .NET Core environment/build support to the docker image
    * [THRIFT-4038] - socket check: checking an unsigned number against >= 0 never fails
    * [THRIFT-4042] - ExtractionError when using accelerated thrift in a multiprocess test
    * [THRIFT-4043] - thrift perl debian package is placing files in the wrong place
    * [THRIFT-4044] - Build job 17 failing on every pull request; hspec core (haskell) 2.4 issue
    * [THRIFT-4046] - MinGW with gcc 6.2 does not compile on Windows
    * [THRIFT-4060] - Thrift printTo ostream overload mechanism breaks down when types are nested
    * [THRIFT-4062] - Remove debug print from TServiceClient
    * [THRIFT-4065] - Document Perl ForkingServer signal restriction imposed by THRIFT-3848 and remove unnecessary code
    * [THRIFT-4068] - A code comment in Java ServerSocket is wrong around accept()
    * [THRIFT-4073] - enum files are still being generated with unused imports
    * [THRIFT-4076] - Appveyor builds failing because ant 1.9.8 was removed from apache servers
    * [THRIFT-4077] - AI_ADDRCONFIG redefined after recent change to PlatformSocket header
    * [THRIFT-4079] - Generated perl code that returns structures from included thrift files is missing a necessary use clause
    * [THRIFT-4087] - Spurious exception destroying TThreadedServer because of incorrect join() call
    * [THRIFT-4102] - TBufferedTransport performance issue since 0.10.0
    * [THRIFT-4106] - concurrency_test fails randomly
    * [THRIFT-4108] - c_glib thrift ssl has multiple bugs and deprecated functions
    * [THRIFT-4109] - Configure Script uses string comparison for versions
    * [THRIFT-4129] - C++ TNonblockingServer fd leak when failing to dispatch new connections
    * [THRIFT-4131] - Javascript with WebSocket handles oneway methods wrong
    * [THRIFT-4134] - Fix remaining undefined behavior invalid vptr casts
    * [THRIFT-4140] - Use of non-thread-safe function gmtime()
    * [THRIFT-4141] - Installation of haxe in docker files refers to a redirect link and fails
    * [THRIFT-4147] - Rust: protocol should accept transports with non-static lifetime
    * [THRIFT-4148] - [maven-thrift-plugin] compile error while import a thrift in dependency jar file.
    * [THRIFT-4149] - System.out pollutes log files 
    * [THRIFT-4154] - PHP close() of a TSocket needs to close any type of socket
    * [THRIFT-4158] - minor issue in README-MSYS2.md
    * [THRIFT-4159] - Building tests fails on MSYS2 (MinGW64) due to a (small?) linker error
    * [THRIFT-4160] - TNonblocking server fix use of closed/freed connections
    * [THRIFT-4161] - TNonBlocking server using uninitialized event in error paths
    * [THRIFT-4162] - TNonBlocking handling of TSockets in error state is incorrect after fd is closed
    * [THRIFT-4164] - Core in TSSLSocket cleanupOpenSSL when destroying a mutex used by openssl
    * [THRIFT-4165] - C++ build has many warnings under c++03 due to recent changes, cmake needs better platform-independent language level control
    * [THRIFT-4166] - Recent fix to remove boost::lexical_cast usage broke VS2010
    * [THRIFT-4167] - Missing compile flag
    * [THRIFT-4170] - Support lua 5.1 or earlier properly for object length determination
    * [THRIFT-4172] - node.js tutorial client does not import assert, connection issues are not handled properly
    * [THRIFT-4177] - Java compiler produces deep copy constructor that could make shallow copy instead
    * [THRIFT-4184] - Building on Appveyor: invalid escape sequence \L
    * [THRIFT-4185] - fb303 counter encoding fix
    * [THRIFT-4189] - Framed/buffered transport Dispose() does not dispose the nested transport
    * [THRIFT-4193] - Lower the default maxReadBufferBytes for non-blocking servers
    * [THRIFT-4195] - Compilation to GO produces broken code
    * [THRIFT-4196] - Cannot generate recursive Rust types
    * [THRIFT-4204] - typo in compact spec
    * [THRIFT-4206] - Strings in container fields are not decoded properly with py:dynamic and py:utf8strings
    * [THRIFT-4208] - C# NamedPipesServer not really working in some scenarios
    * [THRIFT-4211] - Fix GError glib management under Thrift
    * [THRIFT-4212] - c_glib flush tries to close SSL even if socket is invalid
    * [THRIFT-4213] - Travis build fails at curl -sSL https://www.npmjs.com/install.sh | sh
    * [THRIFT-4215] - Golang TTransportFactory Pattern Squelches Errors
    * [THRIFT-4216] - Golang Http Clients Do Not Respect User Options
    * [THRIFT-4218] - Set TCP_NODELAY for PHP client socket
    * [THRIFT-4219] - Golang HTTP clients created with Nil buffer
    * [THRIFT-4231] - TJSONProtocol throws unexpected non-Thrift-exception on null strings
    * [THRIFT-4232] - ./configure does bad ant version check
    * [THRIFT-4234] - Travis build fails cross language tests with "Unsupported security protocol type"
    * [THRIFT-4237] - Go TServerSocket Race Conditions
    * [THRIFT-4240] - Go TSimpleServer does not close properly
    * [THRIFT-4243] - Go TSimpleServer race on wait in Stop() method
    * [THRIFT-4245] - Golang TFramedTransport's writeBuffer increases if writes to transport failed
    * [THRIFT-4246] - Sequence number mismatch on multiplexed clients
    * [THRIFT-4247] - Compile fails with openssl 1.1
    * [THRIFT-4248] - Compile fails - strncpy, memcmp, memset not declared in src/thrift/transport/TSSLSocket.cpp
    * [THRIFT-4251] - Java Epoll Selector Bug
    * [THRIFT-4257] - Typescript async callbacks do not provide the correct types
    * [THRIFT-4258] - Boost/std thread wrapping faultiness
    * [THRIFT-4260] - Go context generation issue. Context is parameter in Interface not in implementation
    * [THRIFT-4261] - Go context generation issue: breaking change in generated code regarding thrift.TProcessorFunction interface
    * [THRIFT-4262] - Invalid binding to InterlockedCompareExchange64() with 64-bit targets
    * [THRIFT-4263] - Fix use after free bug for thrown exceptions
    * [THRIFT-4266] - Erlang library throws during skipping fields of composite type (maps, lists, structs, sets)
    * [THRIFT-4268] - Erlang library emits debugging output in transport layer
    * [THRIFT-4273] - erlang:now/0: Deprecated BIF. 
    * [THRIFT-4274] - Python feature tests for SSL/TLS failing
    * [THRIFT-4279] - Wrong path in include directive in generated Thrift sources
    * [THRIFT-4283] - TNamedPipeServer race condition in interrupt
    * [THRIFT-4284] - File contains a NBSP: lib/nodejs/lib/thrift/web_server.js
    * [THRIFT-4290] - C# nullable option generates invalid code for non-required enum field with default value
    * [THRIFT-4292] - TimerManager::remove() is not implemented
    * [THRIFT-4307] - Make ssl-open timeout effective in golang client
    * [THRIFT-4312] - Erlang client cannot connect to Python server: exception error: econnrefused
    * [THRIFT-4313] - Program code of the Erlang tutorial files contain syntax errors
    * [THRIFT-4316] - TByteBuffer.java will read too much data if a previous read returns fewer bytes than requested
    * [THRIFT-4319] - command line switch for "evhttp" incorrectly resolved to anon pipes
    * [THRIFT-4323] - range check errors or NPE in edge cases
    * [THRIFT-4324] - field names can conflict with local vars in generated code
    * [THRIFT-4328] - Travis CI builds are timing out (job 1) and haxe builds are failing since 9/11
    * [THRIFT-4329] - c_glib Doesn't have a multiplexed processor
    * [THRIFT-4331] - C++: TSSLSockets bug in handling huge messages, bug in handling polling
    * [THRIFT-4332] - Binary protocol has memory leaks
    * [THRIFT-4334] - Perl indentation incorrect when defaulting field attribute to a struct
    * [THRIFT-4339] - Thrift Framed Transport in Erlang crashes server when client disconnects
    * [THRIFT-4340] - Erlang fix a crash on client close
    * [THRIFT-4355] - Javascript indentation incorrect when defaulting field attribute to a struct
    * [THRIFT-4356] - thrift_protocol call Transport cause Segmentation fault
    * [THRIFT-4359] - Haxe compiler looks like it is producing incorrect code for map or set key that is binary type
    * [THRIFT-4362] - Missing size-check can lead to huge memory allocation
    * [THRIFT-4364] - Website contributing guide erroneously recommends submitting patches in JIRA
    * [THRIFT-4365] - Perl generated code uses indirect object syntax, which occasionally causes compilation errors.
    * [THRIFT-4367] - python TProcessor.process is missing "self"
    * [THRIFT-4370] - Ubuntu Artful cppcheck and flake8 are more stringent and causing SCA build job failures
    * [THRIFT-4372] - Pipe write operations across a network are limited to 65,535 bytes per write. 
    * [THRIFT-4374] - cannot load thrift_protocol due to undefined symbol: _ZTVN10__cxxabiv120__si_class_type_infoE
    * [THRIFT-4376] - Coverity high impact issue resolution
    * [THRIFT-4377] - haxe. socket handles leak in TSimpleServer
    * [THRIFT-4381] - Wrong isset bitfield value after transmission
    * [THRIFT-4385] - Go remote client -u flag is broken
    * [THRIFT-4392] - compiler/..../plugin.thrift structs mis-ordered blows up ocaml generator
    * [THRIFT-4395] - Unable to build in the ubuntu-xenial docker image: clap 2.28 requires Rust 1.20
    * [THRIFT-4396] - inconsistent (or plain wrong) version numbers in master/trunk 

## Documentation
    * [THRIFT-4157] - outdated readme about Haxe installation on Linux

## Improvement
    * [THRIFT-105] - make a thrift_spec for a structures with negative tags
    * [THRIFT-281] - Cocoa library code needs comments, badly
    * [THRIFT-775] - performance improvements for Perl
    * [THRIFT-2221] - Generate c++ code with std::shared_ptr instead of boost::shared_ptr.
    * [THRIFT-2364] - OCaml: Use Oasis exclusively for build process
    * [THRIFT-2504] - TMultiplexedProcessor should allow registering default processor called if no service name is present
    * [THRIFT-3207] - Enable build with OpenSSL 1.1.0 series
    * [THRIFT-3272] - Perl SSL Authentication Support
    * [THRIFT-3357] - Generate EnumSet/EnumMap where elements/keys are enums
    * [THRIFT-3369] - Implement SSL/TLS support on C with c_glib
    * [THRIFT-3467] - Go Maps for Thrift Sets Should Have Values of Type struct{} 
    * [THRIFT-3580] - THeader for Haskell
    * [THRIFT-3627] - Missing basic code style consistency of JavaScript.
    * [THRIFT-3706] - There's no support for Multiplexed protocol on c_glib library
    * [THRIFT-3766] - Add getUnderlyingTransport() to TZlibTransport
    * [THRIFT-3776] - Go code from multiple thrift files with the same namespace
    * [THRIFT-3823] - Escape documentation while generating non escaped documetation
    * [THRIFT-3854] - allow users to clear read buffers
    * [THRIFT-3859] - Unix Domain Socket Support in Objective-C
    * [THRIFT-3921] - C++ code should print enums as strings
    * [THRIFT-3926] - There should be an error emitted when http status code is not 200 
    * [THRIFT-4007] - Micro-optimization of TTransport.py
    * [THRIFT-4040] - Add real cause of TNonblockingServerSocket error to exception
    * [THRIFT-4064] - Update node library dependencies
    * [THRIFT-4069] - All perl packages should have proper namespace, version syntax, and use proper thrift exceptions
    * [THRIFT-4071] - Consolidate the Travis CI jobs where possible to put less stress on the Apache Foundation's allocation of CI build slaves
    * [THRIFT-4072] - Add the possibility to send custom headers in TCurlClient
    * [THRIFT-4075] - Better MinGW support for headers-only boost (without thread library)
    * [THRIFT-4081] - Provide a MinGW 64-bit Appveyor CI build for better pull request validation
    * [THRIFT-4084] - Improve SSL security in thrift by adding a make cross client that checks to make sure SSLv3 protocol cannot be negotiated
    * [THRIFT-4095] - Add multiplexed protocol to Travis CI for make cross
    * [THRIFT-4099] - Auto-derive Hash for generated Rust structs
    * [THRIFT-4110] - The debian build files do not produce a "-dbg" package for debug symbols of libthrift0
    * [THRIFT-4114] - Space after '///' in doc comments
    * [THRIFT-4126] - Validate objects in php extension
    * [THRIFT-4130] - Ensure Apache Http connection is released back to pool after use
    * [THRIFT-4151] - Thrift Mutex Contention Profiling (pthreads) should be disabled by default
    * [THRIFT-4176] - Implement a threaded and threadpool server type for Rust
    * [THRIFT-4183] - Named pipe client blocks forever on Open() when there is no server at the other end
    * [THRIFT-4190] - improve C# TThreadPoolServer defaults
    * [THRIFT-4197] - Implement transparent gzip compression for HTTP transport
    * [THRIFT-4198] - Ruby should log Thrift internal errors to global logger
    * [THRIFT-4203] - thrift server stop gracefully
    * [THRIFT-4205] - c_glib is not linking against glib + gobject
    * [THRIFT-4209] - warning CS0414 in T[TLS]ServerSocket.cs
    * [THRIFT-4210] - include Thrift.45.csproj into CI runs 
    * [THRIFT-4217] - HttpClient should support gzip and deflate
    * [THRIFT-4222] - Support Unix Domain Sockets in Golang TServerSocket
    * [THRIFT-4233] - Make THsHaServer.invoker available (get method only) in inherited classes
    * [THRIFT-4236] - Support context in go generated code.
    * [THRIFT-4238] - JSON generator: make annotation-aware
    * [THRIFT-4269] - Don't append '.' to Erlang namespace if it ends in '_'.
    * [THRIFT-4270] - Generate Erlang mapping functions for const maps and lists
    * [THRIFT-4275] - Add support for zope.interface only, apart from twisted support.
    * [THRIFT-4285] - Pull generated send/recv into library to allow behaviour to be customised
    * [THRIFT-4287] - Add c++ compiler "no_skeleton" flag option
    * [THRIFT-4288] - Implement logging levels properly for node.js
    * [THRIFT-4295] - Refresh the Docker image file suite for Ubuntu, Debian, and CentOS
    * [THRIFT-4305] - Emit ddoc for generated items
    * [THRIFT-4306] - Thrift imports not replicated to D service output
    * [THRIFT-4315] - Add default message for TApplicationException
    * [THRIFT-4318] - Delphi performance improvements
    * [THRIFT-4325] - Simplify automake cross compilation by relying on one global THRIFT compiler path
    * [THRIFT-4327] - Improve TimerManager API to allow removing specific task
    * [THRIFT-4330] - Allow unused crates in Rust files
    * [THRIFT-4333] - Erlang tutorial examples are using a different port (9999)
    * [THRIFT-4343] - Change CI builds to use node.js 8.x LTS once available
    * [THRIFT-4345] - Create a docker build environment that uses the minimum supported language levels
    * [THRIFT-4346] - Allow Zlib transport factory to wrap other transports
    * [THRIFT-4348] - Perl HTTP Client custom HTTP headers
    * [THRIFT-4350] - Update netcore build for dotnet 2.0 sdk and make cross validation
    * [THRIFT-4351] - Use Travis CI Build Stages to optimize the CI build
    * [THRIFT-4353] - cannot read via thrift_protocol at server side
    * [THRIFT-4378] - add set stopTimeoutUnit method to TThreadPoolServer

## New Feature
    * [THRIFT-750] - C++ Compiler Virtual Function Option
    * [THRIFT-2945] - Implement support for Rust language
    * [THRIFT-3857] - thrift js:node complier support an object as parameter not an instance of struct
    * [THRIFT-3933] - Port official C# .NET library for Thrift to C# .NET Core libary
    * [THRIFT-4039] - Update of Apache Thrift .Net Core lib 
    * [THRIFT-4113] - Provide a buffer transport for reading/writing in memory byte stream

## Question
    * [THRIFT-2956] - autoconf - possibly undefined macro - AC_PROG_BISON
    * [THRIFT-4223] - Add support to the isServing() method for the C++ library

## Task
    * [THRIFT-3622] - Fix deprecated uses of std::auto_ptr
    * [THRIFT-4028] - Please remove System.out.format from the source code
    * [THRIFT-4186] - Build and test rust client in Travis

## Test
    * [THRIFT-4264] - PHP - Support both shared & static linking of sockets library

## Wish
    * [THRIFT-4344] - Define and maintain the minimum language level for all languages in one place

	
Thrift 0.10.0
--------------------------------------------------------------------------------
## Bug
    * [THRIFT-1840] - Thrift Generated Code Causes Global Variable Leaks
    * [THRIFT-1828] - moc_TQTcpServer.cpp was removed from source tree but is in thrift-0.9.0.tar.gz
    * [THRIFT-1790] - cocoa: Duplicate interface definition error
    * [THRIFT-1776] - TPipeServer should implement "listen", so that TServerEventHandler preServe will work right
    * [THRIFT-1351] - Compiler does not care about binary strings
    * [THRIFT-1229] - Python fastbinary.c can not handle unicode as generated python code
    * [THRIFT-749] - C++ TBufferedTransports do not flush their buffers on delete
    * [THRIFT-747] - C++ TSocket->close calls shutdown breaking forked parent process
    * [THRIFT-732] - server exits abnormally when client calls send_xxx function without calling recv_xxx function
    * [THRIFT-3942] - TSSLSocket does not honor send and receive timeouts
    * [THRIFT-3941] - WinXP version of thrift_poll() relies on undefined behavior by passing a destructed variable to select()
    * [THRIFT-3940] - Visual Studio project file for compiler is broken
    * [THRIFT-3943] - Coverity Scan identified some high severity defects
    * [THRIFT-3929] - PHP "nsglobal" Option Results in Syntax Error in Generated Code (Trailing Backslash)
    * [THRIFT-3936] - Cannot compile 0.10.0 development tip with VS2013 and earlier (snprintf, uint32_t)
    * [THRIFT-3935] - Incorrect skipping of map and set
    * [THRIFT-3920] - Ruby: Ensuring that HTTP failures will clear the http transport outbuf var
    * [THRIFT-3919] - C# TTLSServerSocket does not use clientTimeout
    * [THRIFT-3917] - Check backports.ssl_match_hostname module version
    * [THRIFT-3909] - Fix c_glib static lib CMake build
    * [THRIFT-3904] - Typo in node tutorial leads to wrong transport being used
    * [THRIFT-3848] - As an implementer of a perl socket server, I do not want to have to remember to ignore SIGCHLD for it to work properly
    * [THRIFT-3844] - thrift_protocol cannot compile in 7.0.7
    * [THRIFT-3843] - integer issues with Haxe PHP targets cause ZigZag encoding to fail
    * [THRIFT-3842] - Dart generates incorrect code for a const struct
    * [THRIFT-3841] - dart compact protocol incorrectly serializes/deserialized doubles
    * [THRIFT-3708] - NameError: global name 'TProtocol' is not defined
    * [THRIFT-3704] - "TConnectedClient died: Could not refill buffer" message shown when using HTTP Server
    * [THRIFT-3678] - Fix javadoc errors on JDK 8
    * [THRIFT-3014] - AppVeyor support
    * [THRIFT-2994] - Node.js TJSONProtocol cannot be used for object serialization.
    * [THRIFT-2974] - writeToParcel throws NPE for optional enum fields
    * [THRIFT-2948] - Python TJSONProtocol doesn't handle structs with binary fields containing invalid unicode.
    * [THRIFT-2845] - ChildService.Plo: No such file or directory
    * [THRIFT-3276] - Binary data does not decode correctly using the TJSONProtocol when the base64 encoded data is padded.
    * [THRIFT-3253] - Using latest version of D gives deprecation notices
    * [THRIFT-2883] - TTwisted.py, during ConnectionLost processing: exceptions.RuntimeError: dictionary changed size during iteration
    * [THRIFT-2019] - Writing on a disconnected socket on Mac causes SIG PIPE
    * [THRIFT-2020] - Thrift library has some empty files that haven't really been deleted
    * [THRIFT-2049] - Go compiler doesn't build on native Windows
    * [THRIFT-2024] - TServer.cpp warns on 64-bit platforms about truncating an rlim_t into an int
    * [THRIFT-2023] - gettimeofday implementation on Windows errors when no time zone is passed in.
    * [THRIFT-2022] - CoB and dense code generation still uses TR1 bind, even though that doesn't work with clang
    * [THRIFT-2027] - Minor 64-bit and NOMINMAX issues in C++ library
    * [THRIFT-2156] - TServerSocket::listen() is throwing exceptions with misleading information
    * [THRIFT-2154] - Missing <operator body
    * [THRIFT-2148] - TNonblockingMultiFetchClient imports log4j
    * [THRIFT-2103] - [python] Support for SSL certificates with Subject Alternative Names
    * [THRIFT-1931] - Sending a frame size of zero to a TNonblockingServer causes an assertion failure
    * [THRIFT-1751] - definition of increase_max_fds doesn't compile when HAVE_SYS_RESOURCE_H is not defined
    * [THRIFT-1522] - TServerSocket potential memory leak with addrinfo *res0
    * [THRIFT-1547] - Problems building against static libevent
    * [THRIFT-1545] - Generated javascript code uses "for in" for looping over arrays
    * [THRIFT-1487] - Namespace problem, compile fails on generated code
    * [THRIFT-1472] - Configuration conflicts with boost platform include header
    * [THRIFT-6] - Thrift libraries and compiler lack version number
    * [THRIFT-1680] - make install requires GNU make
    * [THRIFT-3869] - Dart Tutorial build fails with Error 65 at "pub get"
    * [THRIFT-3861] - Travis CI builds are timing out - C++TServerIntegrationTest appears to be hanging
    * [THRIFT-3855] - In the go simple server, if Stop() is called multiple times it hangs
    * [THRIFT-3885] - PHP: Error when readI64 in TCompactProtocol
    * [THRIFT-3883] - Go TestAllConnection can fail with port 9090 collision
    * [THRIFT-3884] - Fix Erlang compact protocol double endianess and boolean list
    * [THRIFT-3880] - Erlang Compact protocol - boolean values inverted
    * [THRIFT-3879] - Undefined evaluation order causes incorrect processing in the C++ library JSON protocol
    * [THRIFT-3851] - Golang thrift continually adds the x/thrift content type 
    * [THRIFT-3850] - All apache builds are failing when initiated from a github pull request
    * [THRIFT-3837] - Thift 0.9.3 can't be build with QuickCheck 2.8.2 and unordered-containers 0.2.6
    * [THRIFT-3831] - build of test/cpp/src/TestClient.cpp fails with newer gcc on platforms with unsigned char due to narrowing conversions
    * [THRIFT-3827] - php CompactProtocol readI64 function has bug, when value has 32bit ~64bit, Example：value=1461563457000 
    * [THRIFT-3825] - Javascript test dependency is no longer available
    * [THRIFT-3814] - Fix contention in TNonblockingServerTest
    * [THRIFT-3793] - Appveyor builds reference an ant version that is no longer there
    * [THRIFT-3786] - Node.js TLS emits 'connect' before connection is ready
    * [THRIFT-3780] - Fix dart int64 usage when compiled to js
    * [THRIFT-3789] - Node.js lacks ability to destroy connection
    * [THRIFT-3796] - There's no --dbg for dh_strip, maybe someone has mistaken this for --dbg-package.
    * [THRIFT-3795] - Generated hashValue method in Swift will overflow
    * [THRIFT-3790] - Fix Delphi named pipe client to use timeout even when pipe doesn't yet exist
    * [THRIFT-3787] - Node.js Connection object doesn't handle errors correctly
    * [THRIFT-3791] - Delphi pipe client may fail even in a non-error condition
    * [THRIFT-3771] - TBufferedTransport gets in invalid state on read/write errors
    * [THRIFT-3764] - PHP "make install" does not install TMultiplexedProtocol.php nor TSimpleJSONProtocol.php
    * [THRIFT-3768] - TThreadedServer may crash if it is destroyed immediately after it returns from serve(); TThreadedServer disconnects clients
    * [THRIFT-3765] - memory leak in python compact protocol extension
    * [THRIFT-3758] - TApplicationException::getType and TProtocolException::getType should be const
    * [THRIFT-3763] - Fix serialization of i64 larger than 2^53 for browserify
    * [THRIFT-3759] - required fields that are nil are silently ignored on write
    * [THRIFT-3753] - TServerFramework::stop may fail to interrupt connected clients
    * [THRIFT-3755] - TDebugProtocol::writeString hits assert in isprint on Windows with debug CRT
    * [THRIFT-3751] - Compiler allows field ids that are too large for generated code
    * [THRIFT-3748] - Node.js Deserialization of lists of lists is broken
    * [THRIFT-3760] - Fix install paths etc of debian packages for py and perl
    * [THRIFT-3757] - Fix various build warnings on Windows with VS2015 compiler
    * [THRIFT-3750] - NSCopying copyWithZone: implementation does not check isSet
    * [THRIFT-3747] - Duplicate node.js build on Travis-CI
    * [THRIFT-3744] - The precision should be 17 (16 bits need after dot) after dot for double type.
    * [THRIFT-3741] - haxe test is broken
    * [THRIFT-3739] - Deprecation warning in codegen/base.d
    * [THRIFT-3735] - JSON protocol left in incorrect state when an exception is thrown during read or write operations
    * [THRIFT-3734] - To compare two string as lowercase.
    * [THRIFT-3743] - Java JSON protocol left in incorrect state when an exception is thrown during read or write operations
    * [THRIFT-3731] - Perl multiplex test is flaky
    * [THRIFT-3729] - Restrict rake version
    * [THRIFT-3727] - Incorrect require paths in Node.js tutorial
    * [THRIFT-3723] - Fix Lua include path
    * [THRIFT-3722] - Fix cert path in C++ cross tests for non-Linux platform
    * [THRIFT-3726] - Fix incorrect conditional in TMultiplexedProcessor.py
    * [THRIFT-3725] - Skip a flaky cross test entry (d-dart compact framed-ip)
    * [THRIFT-3724] - Fix incorrect timeval conversion in libevent.d
    * [THRIFT-3721] - CLONE - why not add unicode strings support to python directly?
    * [THRIFT-3720] - TTcpSocketStreamImpl.Read() returns 0 if not all requested bytes could be read
    * [THRIFT-3719] - Dart generator should use lowerCamelCase for service names
    * [THRIFT-3902] - TSocket.open throws NullPointerException
    * [THRIFT-3901] - TFramedTransport.open throws NullPointerException
    * [THRIFT-3893] - Command injection in format_go_output
    * [THRIFT-3807] - Swift compiler does not escape reserved words
    * [THRIFT-3798] - THttpClient does not use proxy from http_proxy, https_proxy environment variables
    * [THRIFT-3809] - wrong/unused BINARY type code
    * [THRIFT-3806] - Swift generator does not handle self-referring structs
    * [THRIFT-3805] - Golang server susceptible to memory spike from malformed message
    * [THRIFT-3797] - Generated Delphi processor shouldn't error out on timed out exceptions
    * [THRIFT-3813] - Appveyor builds reference an openssl version that is no longer there
    * [THRIFT-3658] - Missing file in THRIFT-3599
    * [THRIFT-3649] - Python TSaslClientTransport initializes TTransportException incorrectly
    * [THRIFT-3650] - incorrect union serialization 
    * [THRIFT-3713] - lib/d/test/thrift_test_runner.sh is flaky on Jenkins
    * [THRIFT-3668] - range check error in compact protocol
    * [THRIFT-3663] - CMake cpp test fails to build on system without zlib
    * [THRIFT-3712] - TTornadoServer cannot handle IPv6 address
    * [THRIFT-3710] - Dart generator does not camel case Constants class names
    * [THRIFT-3697] - Dart generator does not name imports
    * [THRIFT-3690] - Work around docker image build failures on Travis-CI
    * [THRIFT-3689] - thrift_reconnecting_client start failed when server is not available
    * [THRIFT-3695] - Fix D test scripts
    * [THRIFT-3675] - Union is not serialized correctly by Thrift C Glib
    * [THRIFT-3673] - API fails with std::exception after a timeout occured in earlier any API call
    * [THRIFT-3709] - Comment syntax can produce broken code
    * [THRIFT-3705] - Go map has incorrect types when used with forward-defined types
    * [THRIFT-3702] - Fix cross tests for Dart compact protocol (3 failing)
    * [THRIFT-3683] - BadYieldError in thrift py:tornado server
    * [THRIFT-3682] - Do not reuse refused sockets in test scripts
    * [THRIFT-3681] - Fix Dart tutorial build
    * [THRIFT-3680] - Java async processor fails to notify errors to clients
    * [THRIFT-3714] - Thrift.TProtocolException is not defined in js/src/thrift.js
    * [THRIFT-3688] - Fix socket bind failure detection of cross test
    * [THRIFT-3641] - Ruby client should try to connect to every result of getaddrinfo
    * [THRIFT-3635] - D transport_test is flaky on Jenkins and Travis
    * [THRIFT-3618] - Python TSSLSocket deprecation message should print caller's location
    * [THRIFT-3145] - JSON protocol does not handle bool and empty containers correctly
    * [THRIFT-3158] - TBase<T,F>#deepCopy should return T
    * [THRIFT-3157] - TBase signature should be TBase<T extends TBase<T,F>, F extends TFieldIdEnum>
    * [THRIFT-3156] - Node TLS: server executes processing logic two full times
    * [THRIFT-3154] - tutorial/py.tornado throw EOF exception
    * [THRIFT-3063] - C++ build -Wunused-parameter warnings on processor_test, TransportTest
    * [THRIFT-3056] - Add string/collection length limits for Python protocol readers
    * [THRIFT-3237] - Fix TNamedPipeServer::createNamedPipe memory leak
    * [THRIFT-3233] - Fix C++ ThreadManager::Impl::removeWorker worker join
    * [THRIFT-3232] - Cannot deserialize json messages created with fieldNamesAsString 
    * [THRIFT-3206] - Fix Visual Studio build failure due 'pthread_self': identifier not found
    * [THRIFT-3200] - JS and nodejs do not encode JSON protocol binary fields as base64
    * [THRIFT-3199] - Exception field has basic metadata
    * [THRIFT-3182] - TFramedTransport is in an invalid state after frame size exception
    * [THRIFT-2536] - new TSocket, uninitialised value reported by valgrind
    * [THRIFT-2527] - Apache Thrift IDL Compiler code generated for Node.js should be jshint clean
    * [THRIFT-2519] - "processor" class is not being generated
    * [THRIFT-2431] - TFileTransportTest fails with "check delta < XXX failed"
    * [THRIFT-2708] - Erlang library does not support "oneway" message type
    * [THRIFT-3377] - Deep copy is actually shallow when using typedef members
    * [THRIFT-3376] - C# and Python JSON protocol double values lose precision
    * [THRIFT-3373] - Various fixes for cross test servers and clients
    * [THRIFT-3370] - errno extern variable redefined. Not compiling for Android
    * [THRIFT-3379] -  Potential out of range panic in Go JSON protocols
    * [THRIFT-3371] - Abstract namespace Unix domain sockets broken in C++
    * [THRIFT-3380] - nodejs: 0.9.2 -> 0.9.3 upgrade breaks Protocol and Transport requires
    * [THRIFT-3367] - Fix bad links to coding_standards.md #634 
    * [THRIFT-3401] - Nested collections emit Objective-C code that cannot compile
    * [THRIFT-3403] - JSON String reader doesn't recognize UTF-16 surrogate pairs
    * [THRIFT-3362] - make check fails for C++ at the SecurityTest
    * [THRIFT-3395] - Cocoa compiler produces corrupt code when boxing enums inside map.
    * [THRIFT-3394] - compiler generates uncompilable code
    * [THRIFT-3388] - hash doesn't work on set/list
    * [THRIFT-3391] - Wrong bool formatting in test server
    * [THRIFT-3390] - TTornado server doesn't handle closed connections properly
    * [THRIFT-3382] - TBase class for C++ Library
    * [THRIFT-3392] - Java TZlibTransport does not close its wrapper streams upon close()
    * [THRIFT-3383] - i64 related warnings 
    * [THRIFT-3386] - misc. warnings with make check
    * [THRIFT-3385] - warning: format ‘%lu’ expects ‘long unsigned int’, but has type ‘std::basic_string<char>::size_type {aka unsigned int}
    * [THRIFT-3355] - npm WARN package.json thrift@1.0.0-dev No license field.
    * [THRIFT-3360] - Improve cross test servers and clients further
    * [THRIFT-3359] - Binary field incompatibilities
    * [THRIFT-3354] - Fix word-extraction substr bug in initialism code
    * [THRIFT-3350] - Python JSON protocol does not encode binary as Base64
    * [THRIFT-3577] - assertion failed at line 512 of testcontainertest.c
    * [THRIFT-3576] - Boost test --log_format arg does not accept lowercase
    * [THRIFT-3575] - Go compiler tries to use unexported library methods when using read_write_private
    * [THRIFT-3574] - Cocoa generator makes uncompilable imports
    * [THRIFT-3570] - Remove duplicate instances that are added by upstream
    * [THRIFT-3571] - Make feature test result browsable
    * [THRIFT-3569] - c_glib protocols do not check number of bytes read by transport
    * [THRIFT-3568] - THeader server crashes on readSlow
    * [THRIFT-3567] - GLib-GObject-CRITICAL **: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
    * [THRIFT-3566] - C++/Qt: TQTcpServerTest::test_communicate() is never executed
    * [THRIFT-3564] - C++/Qt: potential core dump in TQTcpServer in case an exception occurs in TAsyncProcessor::process()
    * [THRIFT-3558] - typos in c_glib tests
    * [THRIFT-3559] - Fix awkward extra semi-colons with Cocoa container literals
    * [THRIFT-3555] - 'configure' script does not honor --with-openssl=<path> for libcrypto for BN_init
    * [THRIFT-3554] - Constant decls may lead to "Error: internal error: prepare_member_name_mapping() already active for different struct"
    * [THRIFT-3552] - glib_c Memory Leak
    * [THRIFT-3551] - Thrift perl library missing package declaration
    * [THRIFT-3549] - Exceptions are not properly stringified in Perl library
    * [THRIFT-3546] - NodeJS code should not be namespaced (and is currently not strict-mode compliant)
    * [THRIFT-3545] - Container type literals do not compile
    * [THRIFT-3538] - Remove UnboundMethodType in TProtocolDecorator
    * [THRIFT-3536] - Error 'char' does not contain a definition for 'IsLowSurrogate' for WP7 target
    * [THRIFT-3534] - Link error when building with Qt5
    * [THRIFT-3533] - Can not send nil pointer as service method argument
    * [THRIFT-3507] - THttpClient does not use proxy from http_proxy, https_proxy environment variables
    * [THRIFT-3502] - C++ TServerSocket passes small buffer to getsockname
    * [THRIFT-3501] - Forward slash in comment causes compiler error
    * [THRIFT-3498] - C++ library assumes optional function pthread_attr_setschedpolicy is available
    * [THRIFT-3497] - Build fails with "invalid use of incomplete type"
    * [THRIFT-3496] - C++: Cob style client fails when sending a consecutive request
    * [THRIFT-3493] - libthrift does not compile on windows using visual studio
    * [THRIFT-3488] - warning: unused variable 'program'
    * [THRIFT-3489] - warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
    * [THRIFT-3487] - Full support for newer Delphi versions
    * [THRIFT-3528] - Fix warnings in thrift.ll
    * [THRIFT-3527] - -gen py:dynamic,utf8strings ignores utf8strings option
    * [THRIFT-3526] - Code generated by py:utf8strings does not work for Python3
    * [THRIFT-3524] - dcc32 warning "W1000 Symbol 'IsLowSurrogate' is deprecated: 'Use TCharHelper'" in Thrift.Protocol.JSON.pas
    * [THRIFT-3525] - py:dynamic fails to handle binary list/set/map element
    * [THRIFT-3521] - TSimpleJSONProtocolTest is not deterministic (fails when run on JDK 8)
    * [THRIFT-3520] - Dart TSocket onError stream should be typed as Object
    * [THRIFT-3519] - fastbinary does not work with -gen py:utf8strings
    * [THRIFT-3518] - TConcurrentClientSyncInfo files were missing for Visual Studio
    * [THRIFT-3512] - c_glib: Build fails due to missing features.h
    * [THRIFT-3483] - Incorrect empty binary handling introduced by THRIFT-3359
    * [THRIFT-3479] - Oneway calls should not return exceptions to clients
    * [THRIFT-3478] - Restore dropped method to THsHaServer.java
    * [THRIFT-3477] - Parser fails on enum item that starts with 'E' letter and continues with number 
    * [THRIFT-3476] - Missing include in ./src/thrift/protocol/TJSONProtocol.cpp
    * [THRIFT-3474] - Docker: thrift-compiler
    * [THRIFT-3473] - When "optional' is used with a struct member, C++ server seems to not return it correctly
    * [THRIFT-3468] - Dart TSocketTransport onError handler is too restrictive
    * [THRIFT-3451] - thrift_protocol PHP extension missing config.m4 file
    * [THRIFT-3456] - rounding issue in static assert
    * [THRIFT-3455] - struct write method's return value is incorrect
    * [THRIFT-3454] - Python Tornado tutorial is broken
    * [THRIFT-3463] - Java can't be disabled in CMake build
    * [THRIFT-3450] - NPE when using SSL
    * [THRIFT-3449] - TBaseAsyncProcessor fb.responseReady() never called for oneway functions
    * [THRIFT-3471] - Dart generator does not handle uppercase argument names
    * [THRIFT-3470] - Sporadic timeouts with pipes
    * [THRIFT-3465] - Go Code With Complex Const Initializer Compilation Depends On Struct Order
    * [THRIFT-3464] - Fix several defects in c_glib code generator
    * [THRIFT-3462] - Cocoa generates Incorrect #import header names
    * [THRIFT-3453] - remove rat_exclude
    * [THRIFT-3418] - Use of ciphers in ssl.wrap_socket() breaks python 2.6 compatibility
    * [THRIFT-3417] - "namespace xsd" is not really working
    * [THRIFT-3413] - Thrift code generation bug in Go when extending service
    * [THRIFT-3420] - C++: TSSLSockets are not interruptable
    * [THRIFT-3415] - include unistd.h conditionally
    * [THRIFT-3414] - #include <pwd.h> in THeaderTransport.h breaks windows build
    * [THRIFT-3411] - Go generates remotes with wrong package qualifiers when including
    * [THRIFT-3430] - Go THttpClient does not read HTTP response body to completion when closing
    * [THRIFT-3423] - First call to thrift_transport:read_exact fails to dispatch correct function
    * [THRIFT-3422] - Go TServerSocket doesn't close on Interrupt
    * [THRIFT-3421] - rebar as dependency instead of bundling (was:  rebar fails if PWD contains Unicode)
    * [THRIFT-3428] - Go test fails when running make check
    * [THRIFT-3445] - Throwable messages are hidden from JVM stack trace output
    * [THRIFT-3443] - Thrift include can generate uncompilable code
    * [THRIFT-3444] - Large 64 bit Integer does not preserve value through Node.js JSONProtocol 
    * [THRIFT-3436] - misc. cross test issues with UTF-8 path names
    * [THRIFT-3435] - Put generated Java code for fullcamel tests in a separate package/namespace
    * [THRIFT-3433] - Doubles aren't interpreted correctly
    * [THRIFT-3437] - Mingw-w64 build fail
    * [THRIFT-3434] - Dart generator produces empty name in pubspec.yaml for includes without namespaces
    * [THRIFT-3408] - JSON generator emits incorrect types
    * [THRIFT-3406] - Cocoa client should not schedule streams on main runloop
    * [THRIFT-3404] - JSON String reader doesn't recognize UTF-16 surrogate pair
    * [THRIFT-3636] - Double precision is not fully preserved in C++ TJSONProtocol
    * [THRIFT-3632] - c_glib testserialization fails with glib assertion
    * [THRIFT-3619] - Using Thrift 0.9.3 with googletest on Linux gcc 4.9 / C++11
    * [THRIFT-3617] - CMake does not build gv/xml generators
    * [THRIFT-3615] - Fix Python SSL client resource leak on connection failure
    * [THRIFT-3616] - lib/py/test/test_sslsocket.py is flaky
    * [THRIFT-3643] - Perl SSL server crushes if a client disconnect without handshake
    * [THRIFT-3639] - C# Thrift library forces TLS 1.0, thwarting TLS 1.2 usage
    * [THRIFT-3633] - Travis "C C++ - GCC" build was using clang
    * [THRIFT-3634] - Fix Python TSocket resource leak on connection failure
    * [THRIFT-3630] - Debian/Ubuntu install docs need an update
    * [THRIFT-3629] - Parser sets exitcode on errors, but generator does not
    * [THRIFT-3608] - lib/cpp/test/SecurityTest is flaky in jenkins Thrift-precommit build.
    * [THRIFT-3601] - Better conformance to PEP8 for generated code
    * [THRIFT-3599] - Validate client IP address against cert's SubjectAltName
    * [THRIFT-3598] - TBufferedTransport doesn't instantiate client connection
    * [THRIFT-3597] - `make check` hangs in go tests
    * [THRIFT-3589] - Dart generator uses wrong name in constructor for uppercase arguments with defaults
    * [THRIFT-3588] - Using TypeScript with --noImplicitAny fails
    * [THRIFT-3584] - boolean false value cannot be transferred
    * [THRIFT-3578] - Make THeaderTransport detect TCompact framed and unframed
    * [THRIFT-3323] - Python library does not handle escaped forward slash ("/") in JSON
    * [THRIFT-3322] - CMake generated "make check" failes on python_test
    * [THRIFT-3321] - Thrift can't be added as a subdirectory of another CMake-based project
    * [THRIFT-3314] - Dots in file names of includes causes dots in javascript variable names
    * [THRIFT-3307] - Segfault in Ruby serializer
    * [THRIFT-3309] - Missing TConstant.php in /lib/php/Makefile.am
    * [THRIFT-3810] - unresolved external symbol public: virtual void __cdecl apache::thrift::server::TServerFramework::serve(void)
    * [THRIFT-3736] - C++ library build fails if OpenSSL does not surrpot SSLv3
    * [THRIFT-3878] - Compile error in TSSLSocket.cpp with new OpenSSL [CRYPTO_num_locks]
    * [THRIFT-3949] - missing make dist entry for compiler/cpp/test
    * [THRIFT-449] - The wire format of the JSON Protocol may not always be valid JSON if it contains non-UTF8 encoded strings
    * [THRIFT-162] - Thrift structures are unhashable, preventing them from being used as set elements
    * [THRIFT-3961] - TConnectedClient does not terminate the connection to the client if an exception while processing the received message occures.
    * [THRIFT-3881] - Travis CI builds are failing due to docker failures (three retries, and gives up)
    * [THRIFT-3937] - Cannot compile 0.10.0 development tip with gcc-4.6.x
    * [THRIFT-3964] - Unsupported mechanism type ????? due to dependency on default OS-dependent charset
    * [THRIFT-3038] - Use of volatile in cpp library
    * [THRIFT-3301] - Java generated code uses imports that can lead to class name collisions with IDL defined types
    * [THRIFT-3348] - PHP TCompactProtocol bool&int64 readvalue bug
    * [THRIFT-3955] - TThreadedServer Memory Leak
    * [THRIFT-3829] - Thrift does not install Python Libraries if Twisted is not installed
    * [THRIFT-3932] - C++ ThreadManager has a rare termination race
    * [THRIFT-3828] - cmake fails when Boost_INCLUDE_DIRS (and other variables passed to include_directories()) is empty 
    * [THRIFT-3958] - CMake WITH_MT option for windows static runtime linking does not support the cmake build type RelWithDebInfo
    * [THRIFT-3957] - TConnectedClient does not disconnect from clients when their timeout is reached.
    * [THRIFT-3953] - TSSLSocket::close should handle exceptions from waitForEvent because it is called by the destructor.
    * [THRIFT-3977] - PHP extension creates undefined values when deserializing sets
    * [THRIFT-3947] - sockaddr type isn't always large enough for the return of getsockname
    * [THRIFT-2755] - ThreadSanitizer reports data race in ThreadManager::Impl::addWorker
    * [THRIFT-3948] - errno is not the correct method of getting the error in windows
    * [THRIFT-4008] - broken ci due to upstream dependency versioning break
    * [THRIFT-3999] - Fix Debian & Ubuntu package dependencies
    * [THRIFT-3886] - PHP cross test client returns 0 even when failing
    * [THRIFT-3997] - building thrift libs does not support new openssl

## Documentation
    * [THRIFT-3867] - Specify BinaryProtocol and CompactProtocol

## Epic
    * [THRIFT-3049] - As an iOS developer, I want a generator and library that produces Swift code
    * [THRIFT-2336] - UTF-8 sent by PHP as JSON is not understood by TJsonProtocol

## Improvement
    * [THRIFT-1867] - Python client/server should support client-side certificates.
    * [THRIFT-1313] - c_glib compact support
    * [THRIFT-1385] - make install doesn't install java library in the setted folder
    * [THRIFT-1437] - Update RPM spec
    * [THRIFT-847] - Test Framework harmonization across all languages
    * [THRIFT-819] - add Enumeration for protocol, transport and server types
    * [THRIFT-3927] - Emit an error instead of throw an error in the async callback
    * [THRIFT-3931] - TSimpleServer: If process request encounter UNKNOWN_METHOD, don't close transport.
    * [THRIFT-3934] - Automatically resolve OpenSSL binary version on Windows CI
    * [THRIFT-3918] - Run subset of make cross
    * [THRIFT-3908] - Remove redundant dependencies from Dockerfile
    * [THRIFT-3907] - Skip Docker image build on CI when unchanged
    * [THRIFT-3868] - Java struct equals should do identity check before field comparison
    * [THRIFT-3849] - Port Go serializer and deserializer to dart
    * [THRIFT-2989] - Complete CMake build for Apache Thrift
    * [THRIFT-2980] - ThriftMemoryBuffer doesn't have a constructor option to take an existing buffer
    * [THRIFT-2856] - refactor erlang basic transports and unify interfaces
    * [THRIFT-2877] - Optimize generated hashCode
    * [THRIFT-2869] - JSON: run schema validation from tests
    * [THRIFT-3112] - [Java] AsyncMethodCallback should be typed in generated AsyncIface
    * [THRIFT-3263] - PHP jsonSerialize() should cast scalar types
    * [THRIFT-2905] - Cocoa compiler should have option to produce "modern" Objective-C
    * [THRIFT-2821] - Enable the use of custom HTTP-Header in the Transport
    * [THRIFT-2093] - added the ability to set compression level in C++ zlib transport
    * [THRIFT-2089] - Compiler ignores duplicate typenames
    * [THRIFT-2056] - Moved all #include config.h statements to #include <thrift/config.h>
    * [THRIFT-2031] - Make SO_KEEPALIVE configurable for C++ lib
    * [THRIFT-2021] - Improve large binary protocol string performance
    * [THRIFT-2028] - Cleanup threading headers / libraries
    * [THRIFT-2014] - Change C++ lib includes to use <namespace/> style throughout
    * [THRIFT-2312] - travis.yml: build everything
    * [THRIFT-1915] - Multiplexing Services
    * [THRIFT-1736] - Visual Studio top level project files within msvc
    * [THRIFT-1735] - integrate tutorial into regular build
    * [THRIFT-1533] - Make TTransport should be Closeable
    * [THRIFT-35] - Move language tests into their appropriate library directory
    * [THRIFT-1079] - Support i64 in AS3
    * [THRIFT-1108] - SSL support for the Ruby library 
    * [THRIFT-3856] - update debian package deependencies
    * [THRIFT-3833] - haxe http server implementation (by embeding into php web server)
    * [THRIFT-3839] - Performance issue with big message deserialization using php extension
    * [THRIFT-3820] - Erlang: Detect OTP >= 18 to use new time correction
    * [THRIFT-3816] - Reduce docker build duration on Travis-CI
    * [THRIFT-3815] - Put appveyor dependency versions to one place
    * [THRIFT-3788] - Compatibility improvements and Win64 support
    * [THRIFT-3792] - Timeouts for anonymous pipes should be configurable
    * [THRIFT-3794] - Split Delphi application, protocol and transport exception subtypes into separate exceptions
    * [THRIFT-3774] - The generated code should have exception_names meta info
    * [THRIFT-3762] - Fix build warnings for deprecated Thrift "byte" fields
    * [THRIFT-3756] - Improve requiredness documentation
    * [THRIFT-3761] - Add debian package for Python3
    * [THRIFT-3742] - haxe php cli support
    * [THRIFT-3733] - Socket timeout improvements
    * [THRIFT-3728] - http transport for thrift-lua
    * [THRIFT-3905] - Dart compiler does not initialize bool, int, and double properties
    * [THRIFT-3911] - Loosen Ruby dev dependency version requirements
    * [THRIFT-3906] - Run C# tests with make check
    * [THRIFT-3900] - Add Python SSL flags
    * [THRIFT-3897] - Provide meaningful exception type based on WebExceptionStatus in case of timeout
    * [THRIFT-3808] - Missing `DOUBLE` in thrift type enumeration
    * [THRIFT-3803] - Remove "file" attribute from XML generator
    * [THRIFT-3660] - Add V4 mapped address to test client cert's altname
    * [THRIFT-3661] - Use https to download meck in erlang test build
    * [THRIFT-3659] - Check configure result of CMake on CI
    * [THRIFT-3667] - Add TLS SNI support to clients
    * [THRIFT-3651] - Make backports.match_hostname and ipaddress optional
    * [THRIFT-3666] - Build D tutorial as part of Autotools build
    * [THRIFT-3665] - Add D libevent and OpenSSL to docker images
    * [THRIFT-3664] - Remove md5.c
    * [THRIFT-3662] - Add Haskell to debian docker image
    * [THRIFT-3711] - Add D to cross language test
    * [THRIFT-3691] - Run flake8 Python style check on Travis-CI
    * [THRIFT-3692] - (Re)enable Appveyor C++ and Python build
    * [THRIFT-3677] - Improve CMake Java build
    * [THRIFT-3679] - Add stdout log to testBinary in Java test server
    * [THRIFT-3718] - Reduce size of docker image for build environment
    * [THRIFT-3698] - [Travis-CI] Introduce retry to apt commands
    * [THRIFT-3127] - switch -recurse to --recurse and reserve -r
    * [THRIFT-3087] - Pass on errors like "connection closed"
    * [THRIFT-3240] - Thrift Python client should support subjectAltName and wildcard certs in TSSLSocket
    * [THRIFT-3213] - make cross should indicate when it skips a known failing test
    * [THRIFT-3208] - Fix Visual Studio solution build failure due to missing source
    * [THRIFT-3186] - Add TServerHTTP to Go library
    * [THRIFT-2342] - Add __FILE__ and __LINE__ to Thrift C++ excpetions
    * [THRIFT-3372] - Add dart generator to Visual Studio project
    * [THRIFT-3366] - ThriftTest to implement standard return values 
    * [THRIFT-3402] - Provide a perl Unix Socket implementation
    * [THRIFT-3361] - Improve C# library
    * [THRIFT-3393] - Introduce i8 to provide consistent set of Thrift IDL integer types
    * [THRIFT-3339] - Support for database/sql
    * [THRIFT-3565] - C++: T[Async]Processor::getEventHandler() should be declared as const member functions
    * [THRIFT-3563] - C++/Qt: removed usage of macro QT_PREPEND_NAMESPACE as it isn't consequently used for all references to Qt types.
    * [THRIFT-3562] - Removed unused TAsyncProcessor::getAsyncServer()
    * [THRIFT-3561] - C++/Qt: make use of Q_DISABLE_COPY() to get rid of copy ctor and assignment operator
    * [THRIFT-3556] - c_glib file descriptor transport
    * [THRIFT-3544] - Make cross test fail when server process died unexpectedly
    * [THRIFT-3540] - Make python tutorial more in line with PEP8
    * [THRIFT-3535] - Dart generator argument to produce a file structure usable in parent library
    * [THRIFT-3505] - Enhance Python TSSLSocket
    * [THRIFT-3506] - Eliminate old style classes from library code
    * [THRIFT-3503] - Enable py:utf8string by default
    * [THRIFT-3499] - Add package_prefix to python generator
    * [THRIFT-3495] - Minor enhancements and fixes for cross test
    * [THRIFT-3486] - Java generated `getFieldValue` is incompatible with `setFieldValue` for binary values.
    * [THRIFT-3484] - Consolidate temporary buffers in Java's TCompactProtocol
    * [THRIFT-3516] - Add feature test for THeader TBinaryProtocol interop
    * [THRIFT-3515] - Python 2.6 compatibility and test on CI
    * [THRIFT-3514] - PHP 7 compatible version of binary protocol
    * [THRIFT-3469] - Docker: Debian support
    * [THRIFT-3416] - Retire old "xxx_namespace" declarations from the IDL
    * [THRIFT-3426] - Align autogen comment in XSD
    * [THRIFT-3424] - Add CMake android build option
    * [THRIFT-3439] - Run make cross using Python3 when available
    * [THRIFT-3440] - Python make check takes too much time
    * [THRIFT-3441] - Stabilize Travis-CI builds
    * [THRIFT-3431] - Avoid "schemes" HashMap lookups during struct reads/writes
    * [THRIFT-3432] - Add a TByteBuffer transport to the Java library
    * [THRIFT-3438] - Enable py:new_style by default
    * [THRIFT-3405] - Go THttpClient misuses http.Client objects
    * [THRIFT-3614] - Improve logging of test_sslsocket.py
    * [THRIFT-3647] - Fix php extension build warnings
    * [THRIFT-3642] - Speed up cross test runner
    * [THRIFT-3637] - Implement compact protocol for dart
    * [THRIFT-3613] - Port Python C extension to Python 3
    * [THRIFT-3612] - Add Python C extension for compact protocol
    * [THRIFT-3611] - Add --regex filter to cross test runner
    * [THRIFT-3631] - JSON protocol implementation for Lua
    * [THRIFT-3609] - Remove or replace TestPortFixture.h
    * [THRIFT-3605] - Have the compiler complain about invalid arguments and options
    * [THRIFT-3596] - Better conformance to PEP8
    * [THRIFT-3585] - Compact protocol implementation for Lua
    * [THRIFT-3582] - Erlang libraries should have service metadata
    * [THRIFT-3579] - Introduce retry to make cross
    * [THRIFT-3306] - Java: TBinaryProtocol: Use 1 temp buffer instead of allocating 8
    * [THRIFT-3910] - Do not invoke pip as part of build process
    * [THRIFT-1857] - Python 3.X Support
    * [THRIFT-1944] - Binding to zero port
    * [THRIFT-3954] - Enable the usage of structs called "Object" in Java
    * [THRIFT-3981] - Enable analyzer strong mode in Dart library
    * [THRIFT-3998] - Document ability to add custom tags to thrift structs
    * [THRIFT-4006] - Add a removeEventListener method on TSocket

## New Feature
    * [THRIFT-640] - Support deprecation
    * [THRIFT-948] - SSL socket support for PHP
    * [THRIFT-764] - add Support for Vala language
    * [THRIFT-3046] - Allow PSR4 class loading for generated classes (PHP)
    * [THRIFT-2113] - Erlang SSL Socket Support
    * [THRIFT-1482] - Unix domain socket support under PHP
    * [THRIFT-519] - Support collections of types without having to explicitly define it
    * [THRIFT-468] - Rack Middleware Application for Rails
    * [THRIFT-1708] - Add event handlers for processor events
    * [THRIFT-3834] - Erlang namespacing and exception metadata
    * [THRIFT-2510] - Implement TNonblockingServer's ability to listen on unix domain sockets
    * [THRIFT-3397] - Implement TProcessorFactory in C# to enable per-client processors
    * [THRIFT-3523] - XML Generator
    * [THRIFT-3510] - Add HttpTaskAsyncHandler implementation
    * [THRIFT-3318] - PHP: SimpleJSONProtocol Implementation
    * [THRIFT-3299] - Dart language bindings in Thrift
    * [THRIFT-2835] - Add possibility to distribute generators separately from thrift core, and load them dynamically
    * [THRIFT-184] - Add OSGi Manifest headers to the libthrift java library to be able to use Thrift in the OSGi runtime
    * [THRIFT-141] - If a required field is not present on serialization, throw an exception
    * [THRIFT-1891] - Add Windows ALPC transport which is right counterpart of Unix domain sockets

## Question
    * [THRIFT-1808] - The Thrift struct should be considered self-contained?
    * [THRIFT-2895] - Tutorial cpp
    * [THRIFT-3860] - Elephant-bird application Test fails for Thrift
    * [THRIFT-3811] - HTTPS Support for C++ applications
    * [THRIFT-3509] - "make check" error

## Story
    * [THRIFT-3452] - .travis.yml: Migrating from legacy to container-based infrastructure

## Sub-task
    * [THRIFT-1811] - ruby tutorial as part of the regular build
    * [THRIFT-2779] - PHP TJSONProtocol encode unicode into UCS-4LE which can't be parsed by other language bindings
    * [THRIFT-2110] - Erlang: Support for Multiplexing Services on any Transport, Protocol and Server
    * [THRIFT-3852] - A Travis-CI job fails with "write error"
    * [THRIFT-3740] - Fix haxelib.json classpath 
    * [THRIFT-3653] - incorrect union serialization
    * [THRIFT-3652] - incorrect serialization of optionals
    * [THRIFT-3655] - incorrect union serialization
    * [THRIFT-3654] - incorrect serialization of optionals
    * [THRIFT-3656] - incorrect serialization of optionals
    * [THRIFT-3699] - Fix integer limit symbol includes in Python C extension
    * [THRIFT-3693] - Fix include issue in C++ TSSLSocketInterruptTest on Windows
    * [THRIFT-3694] - [Windows] Disable tests of a few servers that are not supported
    * [THRIFT-3696] - Install pip to CentOS Docker images to fix Python builds
    * [THRIFT-3638] - Fix haxelib.json
    * [THRIFT-3251] - Add http transport for server to Go lib
    * [THRIFT-2424] - Recursive Types
    * [THRIFT-2423] - THeader
    * [THRIFT-2413] - Python: UTF-8 sent by PHP as JSON is not understood by TJsonProtocol
    * [THRIFT-2409] - Java: UTF-8 sent by PHP as JSON is not understood by TJsonProtocol
    * [THRIFT-2412] - D: UTF-8 sent by PHP as JSON is not understood by TJsonProtocol
    * [THRIFT-2411] - C++: UTF-8 sent by PHP as JSON is not understood by TJsonProtocol
    * [THRIFT-2410] - JavaMe: UTF-8 sent by PHP as JSON is not understood by TJsonProtocol
    * [THRIFT-2668] - TestSuite: detailed result on passed tests by feature
    * [THRIFT-2659] - python Test Server fails when throwing TException
    * [THRIFT-3398] - Add CMake build  for Haskell library and tests
    * [THRIFT-3396] - DART: UTF-8 sent by PHP as JSON is not understood by TJsonProtocol
    * [THRIFT-3364] -   Fix ruby binary field encoding in TJSONProtocol
    * [THRIFT-3381] - Fix for misc. codegen issues with THRIFT-2905
    * [THRIFT-3573] - No rule to make target `../../../test/c_glib/src/.deps/testthrifttest-thrift_test_handler.Po'.
    * [THRIFT-3572] - "Unable to determine the behavior of a signed right shift"
    * [THRIFT-3542] - Add length limit support to Java test server
    * [THRIFT-3537] - Remove the (now obsolete) csharp:asyncctp flag 
    * [THRIFT-3532] - Add configurable string and container read size limit to Python protocols
    * [THRIFT-3531] - Create cross lang feature test for string and container read length limit
    * [THRIFT-3482] - Haskell JSON protocol does not encode binary field as Base64
    * [THRIFT-3425] - Minor fixes + simplification for CentOS Dockerfile
    * [THRIFT-3442] - Run CMake tests on Appveyor
    * [THRIFT-3409] - NodeJS binary field issues
    * [THRIFT-3621] - Fix lib/cpp/test/SecurityTest.cpp to use ephemeral ports
    * [THRIFT-3628] - Fix lib/cpp/test/TServerIntegrationTest.cpp to use ephemeral ports
    * [THRIFT-3625] - Kill unused #include "TestPortFixture.h" in lib/cpp/test/TServerTransportTest.cpp.
    * [THRIFT-3646] - Fix Python extension build warnings
    * [THRIFT-3626] - Fix lib/cpp/test/TSocketInterruptTest.cpp to use ephemeral ports.
    * [THRIFT-3624] - Fix lib/cpp/test/TServerSocketTest.cpp to use ephemeral ports
    * [THRIFT-3623] - Fix Fix cpp/lib/test/TSSLSocketInterruptTest.cpp to use ephemeral ports
    * [THRIFT-3592] - Add basic test client
    * [THRIFT-3980] - add TExtendedBinaryProtocol.java

## Task
    * [THRIFT-1801] - Sync up TApplicationException codes across languages and thrift implementations
    * [THRIFT-1259] - Automate versioning 

## Test
    * [THRIFT-3400] - Add Erlang to cross test
    * [THRIFT-3504] - Fix FastbinaryTest.py

## Wish
    * [THRIFT-3923] - Maybe remove Aereo from the "Powered by" list
    * [THRIFT-2149] - Add an option to disable the generation of default operators



Thrift 0.9.3
--------------------------------------------------------------------------------
## Bug
    * [THRIFT-2441] - Cannot shutdown TThreadedServer when clients are still connected
    * [THRIFT-2465] - TBinaryProtocolT breaks if copied/moved
    * [THRIFT-2474] - thrift.h causes a compile failure
    * [THRIFT-2540] - Running configure from outside the source directory fails
    * [THRIFT-2598] - Add check for minimum Go version to configure.ac
    * [THRIFT-2647] - compiler-hs: don't decapitalize field names, do decapitalize argument bindings
    * [THRIFT-2773] - Generated Java code for 'oneway' methods is incorrect.
    * [THRIFT-2789] - TNonblockingServer leaks socket FD's under load
    * [THRIFT-2682] - TThreadedServer leaks per-thread memory
    * [THRIFT-2674] - JavaScript: declare Accept: and Content-Type: in request
    * [THRIFT-3078] - TNonblockingServerSocket's logger is not named after TNonblockingServerSocket
    * [THRIFT-3077] - C++ TFileTransport ignores return code from ftruncate
    * [THRIFT-3067] - C++ cppcheck performance related warnings
    * [THRIFT-3066] - C++ TDenseProtocol assert modifies instead of checks
    * [THRIFT-3071] - bootstrap.sh on Ubuntu 12.04 (Precise) automake error
    * [THRIFT-3069] - C++ TServerSocket leaks socket on fcntl get or set flags error
    * [THRIFT-3079] - TNonblockingServerSocket's logger is not named after TNonblockingServerSocket
    * [THRIFT-3080] - C++ TNonblockingServer connection leak while accept huge number connections.
    * [THRIFT-3086] - C++ Valgrind Error Cleanup
    * [THRIFT-3085] - thrift_reconnecting_client never try to reconnect
    * [THRIFT-3123] - Missing include in compiler/cpp/src/main.h breaks build in some environments
    * [THRIFT-3125] - Fix the list of exported headers in automake input
    * [THRIFT-3126] - PHP JSON serializer converts empty or int-indexed maps to lists
    * [THRIFT-3132] - Properly format date in Java @Generated annotations
    * [THRIFT-3137] - Travis build hangs after failure
    * [THRIFT-3138] - "make check" parallel execution is underministic
    * [THRIFT-3139] - JS library test is flaky
    * [THRIFT-3140] - ConcurrentModificationException is thrown by JavaScript test server
    * [THRIFT-3124] - Some signed/unsigned warnings while building compiler
    * [THRIFT-3128] - Go generated code produces name collisions between services
    * [THRIFT-3146] - Graphviz generates function name collisions between services
    * [THRIFT-3147] - Segfault while receiving data
    * [THRIFT-3148] - Markdown links to coding_standards are dead
    * [THRIFT-3090] - cmake build is broken on MacOSX
    * [THRIFT-3097] - cmake targets unconditionally depend on optional libraries
    * [THRIFT-3094] - master as of 2015-APR-13 fails -DBOOST_THREADS cmake build
    * [THRIFT-3099] - cmake build is broken on FreeBSD
    * [THRIFT-3089] - Assigning default ENUM values results in non-compilable java code if java namespace is not defined
    * [THRIFT-3093] - mingw compile fixes for c++ library 0.9.2
    * [THRIFT-3098] - Thrift does not pretty print binary typedefs the way it does binary fields
    * [THRIFT-3091] - c_glib service method should return result from handler method
    * [THRIFT-3088] - TThreadPoolServer with Sasl auth may leak CLOSE_WAIT socket
    * [THRIFT-3109] - Cross test log file cannot be browsed when served in HTTP server
    * [THRIFT-3113] - m4 C++11 macro issue
    * [THRIFT-3105] - C++ libthriftnb library on Windows build failure
    * [THRIFT-3115] - Uncompileable code due to name collision with predefined used types
    * [THRIFT-3117] - Java TSSLTransportFactory can't load certificates within JAR archive
    * [THRIFT-3102] - could not make check for Go Library
    * [THRIFT-3120] - Minor spelling errors and an outdated URL
    * [THRIFT-3121] - Librt does not exist on OS X
    * [THRIFT-3152] - Compiler error on Mac OSX (missing #include <cstdlib>)
    * [THRIFT-3162] - make fails for dmd 2.067
    * [THRIFT-3164] - Thrift C++ library SSL socket by default allows for unsecure SSLv3 negotiation
    * [THRIFT-3168] - Fix Maven POM
    * [THRIFT-3170] - Initialism code in the Go compiler causes chaos
    * [THRIFT-3169] - Do not export thrift.TestStruct and thrift.TestEnum in thrift Go library 
    * [THRIFT-3191] - Perl compiler does not add support for unexpected exception handling
    * [THRIFT-3178] - glib C does not compile
    * [THRIFT-3189] - Perl ServerSocket should allow a specific interface to be listened to
    * [THRIFT-3252] - Missing TConcurrentClientSyncInfo.h in cpp Makefile, so doesn't install
    * [THRIFT-3255] - Thrift generator doesn't exclude 'package' keyword for thrift property names breaking java builds
    * [THRIFT-3260] - multiple warnings in c_glib tutorial
    * [THRIFT-3256] - Some D test timings are too aggressive for slow machines
    * [THRIFT-3257] - warning: extra tokens at end of #endif directive
    * [THRIFT-3184] - Thrift Go leaves file descriptors open
    * [THRIFT-3203] - DOAP - please fix "Ocaml" => "OCaml"
    * [THRIFT-3210] - (uncompileable) code generated for server events while are events not enabled
    * [THRIFT-3215] - TJSONProtocol '(c++) uses "throw new" to throw exceptions instead of "throw"
    * [THRIFT-3202] - Allow HSHAServer to configure min and max worker threads separately.
    * [THRIFT-3205] - TCompactProtocol return a wrong error when the io.EOF happens
    * [THRIFT-3209] - LGPL mentioned in license file
    * [THRIFT-3197] - keepAliveTime is hard coded as 60 sec in TThreadPoolServer
    * [THRIFT-3196] - Misspelling in lua TBinaryProtocol (stirctWrite => strictWrite)
    * [THRIFT-3198] - Allow construction of TTransportFactory with a specified maxLength
    * [THRIFT-3192] - Go import paths changed in 1.4, and expired June 1
    * [THRIFT-3271] - Could not find or load main class configtest_ax_javac_and_java on some non-english systems
    * [THRIFT-3273] - c_glib: Generated code tries to convert between function and void pointers
    * [THRIFT-3264] - Fix Erlang 16 namespaced types
    * [THRIFT-3270] - reusing TNonblockingServer::TConnection cause dirty TSocket
    * [THRIFT-3267] - c_glib: "Critical" failure during unit tests
    * [THRIFT-3277] - THttpClient leaks connections if it's used for multiple requests
    * [THRIFT-3278] - NodeJS: Fix exception stack traces and names
    * [THRIFT-3279] - Fix a bug in retry_max_delay (NodeJS)
    * [THRIFT-3280] - Initialize retry variables on construction
    * [THRIFT-3283] - c_glib: Tutorial server always exits with warning
    * [THRIFT-3284] - c_glib: Empty service produces unused-variable warning
    * [THRIFT-1925] - c_glib generated code does not compile
    * [THRIFT-1849] - after transport->open() opens isOpen returns true and next open() goes thru when it shall not
    * [THRIFT-1866] - java compiler generates non-compiling code with const's defined in a thrift when name includes non-identifier chars
    * [THRIFT-1938] - FunctionRunner.h -- uses wrong path for Thread.h when installed
    * [THRIFT-1844] - Password string not cleared
    * [THRIFT-2004] - Thrift::Union violates :== method contract and crashes
    * [THRIFT-2073] - Thrift C++ THttpClient error: cannot refill buffer
    * [THRIFT-2127] - Autoconf scripting does not properly account for cross-compile
    * [THRIFT-2180] - Integer types issues in Cocoa lib on ARM64
    * [THRIFT-2189] - Go needs "isset" to fully support "union" type (and optionals)
    * [THRIFT-2192] - autotools on Redhat based systems
    * [THRIFT-2546] - cross language tests fails at 'TestMultiException' when using nodejs server
    * [THRIFT-2547] - nodejs servers and clients fails to connect with cpp using compact protocol
    * [THRIFT-2548] - Nodejs servers and clients does not work properly with  -ssl
    * [THRIFT-1471] - toString() does not print ByteBuffer values when nested in a List
    * [THRIFT-1201] - getaddrinfo resource leak
    * [THRIFT-615] - TThreadPoolServer doesn't call task_done after pulling tasks from it's clients queue
    * [THRIFT-162] - Thrift structures are unhashable, preventing them from being used as set elements
    * [THRIFT-810] - Crashed client on TSocket::close under loads
    * [THRIFT-557] - charset problem with file Autogenerated by Thrift
    * [THRIFT-233] - IDL doesn't support negative hex literals
    * [THRIFT-1649] - contrib/zeromq does not build in 0.8.0
    * [THRIFT-1642] - Miscalculation lead to throw unexpected "TTransportException::TIMED_OUT"(or called "EAGAIN (timed out)") exception
    * [THRIFT-1587] - TSocket::setRecvTimeout error
    * [THRIFT-1248] - pointer subtraction in TMemoryBuffer relies on undefined behavior
    * [THRIFT-1774] - Sasl Transport client would hang when trying to connect non-sasl transport server
    * [THRIFT-1754] - RangeError in buffer handling
    * [THRIFT-1618] - static structMap in FieldMetaData is not thread safe and can lead to deadlocks
    * [THRIFT-2335] - thrift incompatibility with py:tornado as server, java as client
    * [THRIFT-2803] - TCP_DEFER_ACCEPT not supported with domain sockets
    * [THRIFT-2799] - Build Problem(s): ld: library not found for -l:libboost_unit_test_framework.a
    * [THRIFT-2801] - C++ test suite compilation warnings
    * [THRIFT-2802] - C++ tutorial compilation warnings
    * [THRIFT-2795] - thrift_binary_protocol.c: 'dereferencing type-punned pointer will break strict-aliasing rules'
    * [THRIFT-2817] - TSimpleJSONProtocol reads beyond end of message
    * [THRIFT-2826] - html:standalone sometimes ignored
    * [THRIFT-2829] - Support haxelib installation via github
    * [THRIFT-2828] - slightly wrong help screen indent
    * [THRIFT-2831] - Removes dead code in web_server.js introduced in THRIFT-2819
    * [THRIFT-2823] - All JS-tests are failing when run with grunt test
    * [THRIFT-2827] - Thrift 0.9.2 fails to compile on Yosemite due to tr1/functional include in ProcessorTest.cpp
    * [THRIFT-2843] - Automake configure.ac has possible typo related to Java
    * [THRIFT-2813] - multiple haxe library fixes/improvements
    * [THRIFT-2825] - Supplying unicode to python Thrift client can cause next request arguments to get overwritten
    * [THRIFT-2840] - Cabal file points to LICENSE file outside the path of the Haskell project.
    * [THRIFT-2818] - Trailing commas in array
    * [THRIFT-2830] - Clean up ant warnings in tutorial dir
    * [THRIFT-2842] - Erlang thrift client has infinite timeout
    * [THRIFT-2810] - Do not leave the underlying ServerSocket open if construction of TServerSocket fails
    * [THRIFT-2812] - Go server adding redundant buffering layer
    * [THRIFT-2839] - TFramedTransport read bug
    * [THRIFT-2844] - Nodejs support broken when running under Browserify
    * [THRIFT-2814] - args/result classes not found when no namespace is set
    * [THRIFT-2847] - function IfValue() is a duplicate of System.StrUtils.IfThen
    * [THRIFT-2848] - certain Delphi tests do not build if TypeRegistry is used
    * [THRIFT-2854] - Go Struct writer and reader looses important error information
    * [THRIFT-2858] - Enable header field case insensitive match in THttpServer
    * [THRIFT-2857] - C# generator creates uncompilable code for struct constants
    * [THRIFT-2860] - Delphi server closes connection on unexpected exceptions
    * [THRIFT-2868] - Enhance error handling in the Go client 
    * [THRIFT-2879] - TMemoryBuffer: using lua string in wrong way
    * [THRIFT-2851] - Remove strange public Peek() from Go transports
    * [THRIFT-2852] - Better Open/IsOpen/Close behavior for StreamTransport.
    * [THRIFT-2871] - Missing semicolon in thrift.js
    * [THRIFT-2872] - ThreadManager deadlock for task expiration
    * [THRIFT-2881] - Handle errors from Accept() correctly
    * [THRIFT-2849] - Spell errors reported by codespell tool
    * [THRIFT-2870] - C++ TJSONProtocol using locale dependent formatting
    * [THRIFT-2882] - Lua Generator: using string.len funtion to get struct(map,list,set) size
    * [THRIFT-2864] - JSON generator missing from Visual Studio build project 
    * [THRIFT-2878] - Go validation support of required fields
    * [THRIFT-2873] - TPipe and TPipeServer don't compile on Windows with UNICODE enabled
    * [THRIFT-2888] - import of <limits> is missing in JSON generator
    * [THRIFT-2900] - Python THttpClient does not reset socket timeout on exception
    * [THRIFT-2907] - 'ntohll' macro redefined
    * [THRIFT-2884] - Map does not serialize correctly for JSON protocol in Go library
    * [THRIFT-2887] - --with-openssl configure flag is ignored
    * [THRIFT-2894] - PHP json serializer skips maps with int/bool keys
    * [THRIFT-2904] - json_protocol_test.go fails
    * [THRIFT-2906] - library not found for -l:libboost_unit_test_framework.a
    * [THRIFT-2890] - binary data may lose bytes with JSON transport under specific circumstances
    * [THRIFT-2891] - binary data may cause a failure with JSON transport under specific circumstances
    * [THRIFT-2901] - Fix for generated TypeScript functions + indentation of JavaScript maps
    * [THRIFT-2916] - make check fails for D language
    * [THRIFT-2918] - Race condition in Python TProcessPoolServer test
    * [THRIFT-2920] - Erlang Thrift test uses wrong IDL file
    * [THRIFT-2922] - $TRIAL is used with Python tests but not tested accordingly
    * [THRIFT-2912] - Autotool build for C++ Qt library is invalid
    * [THRIFT-2914] - explicit dependency to Lua5.2 fails on some systems
    * [THRIFT-2910] - libevent is not really optional
    * [THRIFT-2911] - fix c++ version zeromq transport, the old version cannot work
    * [THRIFT-2915] - Lua generator missing from Visual Studio build project
    * [THRIFT-2917] - "make clean" breaks test/c_glib
    * [THRIFT-2919] - Haxe test server timeout too large
    * [THRIFT-2923] - JavaScript client assumes a message being written
    * [THRIFT-2924] - TNonblockingServer crashes when user-provided event_base is used
    * [THRIFT-2925] - CMake build does not work with OpenSSL nor anything installed in non-system location
    * [THRIFT-2931] - Access to undeclared static property: Thrift\Protocol\TProtocol::$TBINARYPROTOCOLACCELERATED
    * [THRIFT-2893] - CMake build fails with boost thread or std thread
    * [THRIFT-2902] - Generated c_glib code does not compile with clang
    * [THRIFT-2903] - Qt4 library built with CMake does not work
    * [THRIFT-2942] - CSharp generate invalid code for property named read or write
    * [THRIFT-2932] - Node.js Thrift connection libraries throw Exceptions into event emitter
    * [THRIFT-2933] - v0.9.2: doubles encoded in node with compact protocol cannot be decoded by python
    * [THRIFT-2934] - createServer signature mismatch
    * [THRIFT-2981] - IDL with no namespace produces unparsable PHP
    * [THRIFT-2999] - Addition of .gitattributes text auto in THRIFT-2724 causes modified files on checkout
    * [THRIFT-2949] - typo in compiler/cpp/README.md
    * [THRIFT-2957] - warning: source file %s is in a subdirectory, but option 'subdir-objects' is disabled
    * [THRIFT-2953] - TNamedPipeServerTransport is not Stop()able
    * [THRIFT-2962] - Docker Thrift env for development and testing
    * [THRIFT-2971] - C++ test and tutorial parallel build is unstable
    * [THRIFT-2972] - Missing backslash in lib/cpp/test/Makefile.am
    * [THRIFT-2951] - Fix Erlang name conflict test
    * [THRIFT-2955] - Using list of typedefs does not compile on Go
    * [THRIFT-2960] - namespace regression for Ruby
    * [THRIFT-2959] - nodejs: fix binary unit tests
    * [THRIFT-2966] - nodejs: Fix bad references to TProtocolException and TProtocolExceptionType
    * [THRIFT-2970] - grunt-jsdoc fails due to dependency issues
    * [THRIFT-3001] - C# Equals fails for binary fields (byte[])
    * [THRIFT-3003] - Missing LICENSE file prevents package from being installed
    * [THRIFT-3008] - Node.js server does not fully support exception
    * [THRIFT-3007] - Travis build is broken because of directory conflict
    * [THRIFT-3009] - TSSLSocket does not use the correct hostname (breaks certificate checks)
    * [THRIFT-3011] - C# test server testException() not implemented according to specs
    * [THRIFT-3012] - Timing problems in NamedPipe implementation due to unnecessary open/close
    * [THRIFT-3019] - Golang generator missing docstring for structs
    * [THRIFT-3021] - Service remote tool does not import stub package with package prefix
    * [THRIFT-3026] - TMultiplexedProcessor does not have a constructor
    * [THRIFT-3028] - Regression caused by THRIFT-2180
    * [THRIFT-3017] - order of map key/value types incorrect for one CTOR
    * [THRIFT-3020] - Cannot compile thrift as C++03
    * [THRIFT-3024] - User-Agent "BattleNet" used in some Thrift library files
    * [THRIFT-3047] - Uneven calls to indent_up and indent_down in Cocoa generator
    * [THRIFT-3048] - NodeJS decoding of I64 is inconsistent across protocols
    * [THRIFT-3043] - go compiler generator uses non C++98 code
    * [THRIFT-3044] - Docker README.md paths to Dockerfiles are incorrect
    * [THRIFT-3040] - bower.json wrong "main" path
    * [THRIFT-3051] - Go Thrift generator creates bad go code
    * [THRIFT-3057] - Java compiler build is broken
    * [THRIFT-3061] - C++ TSSLSocket shutdown delay/vulnerability
    * [THRIFT-3062] - C++ TServerSocket invalid port number (over 999999) causes stack corruption
    * [THRIFT-3065] - Update libthrift dependencies (slf4j, httpcore, httpclient)
    * [THRIFT-3244] - TypeScript: fix namespace of included types
    * [THRIFT-3246] - Reduce the number of trivial warnings in Windows C++ CMake builds
    * [THRIFT-3224] - Fix TNamedPipeServer unpredictable behavior on accept
    * [THRIFT-3230] - Python compiler generates wrong code if there is function throwing a typedef of exception with another namespace
    * [THRIFT-3236] - MaxSkipDepth never checked
    * [THRIFT-3239] - Limit recursion depth
    * [THRIFT-3241] - fatal error: runtime: cannot map pages in arena address space
    * [THRIFT-3242] - OSGi Import-Package directive is missing the Apache HTTP packages
    * [THRIFT-3234] - Limit recursion depth
    * [THRIFT-3222] - TypeScript: Generated Enums are quoted
    * [THRIFT-3229] - unexpected Timeout exception when desired bytes are only partially available
    * [THRIFT-3231] - CPP: Limit recursion depth to 64
    * [THRIFT-3235] - Limit recursion depth
    * [THRIFT-3175] - fastbinary.c python deserialize can cause huge allocations from garbage
    * [THRIFT-3176] - Union incorrectly implements ==
    * [THRIFT-3177] - Fails to run rake test
    * [THRIFT-3180] - lua plugin: framed transport do not work
    * [THRIFT-3179] - lua plugin cant connect to remote server because function l_socket_create_and_connect always bind socket to localhost
    * [THRIFT-3248] - TypeScript: additional comma in method signature without parameters
    * [THRIFT-3302] - Go JSON protocol should encode Thrift byte type as signed integer string
    * [THRIFT-3297] - c_glib: an abstract base class is not generated
    * [THRIFT-3294] - TZlibTransport for Java does not write data correctly
    * [THRIFT-3296] - Go cross test does not conform to spec
    * [THRIFT-3295] - C# library does not build on Mono 4.0.2.5 or later
    * [THRIFT-3293] - JavaScript: null values turn into empty structs in constructor
    * [THRIFT-3310] - lib/erl/README.md has incorrect formatting
    * [THRIFT-3319] - CSharp tutorial will not build using the *.sln
    * [THRIFT-3335] - Ruby server does not handle processor exception
    * [THRIFT-3338] - Stray underscore in generated go when service name starts with "New"
    * [THRIFT-3324] - Update Go Docs for pulling all packages
    * [THRIFT-3345] - Clients blocked indefinitely when a java.lang.Error is thrown
    * [THRIFT-3332] - make dist fails on clean build
    * [THRIFT-3326] - Tests do not compile under *BSD
    * [THRIFT-3334] - Markdown notation of protocol spec is malformed
    * [THRIFT-3331] - warning: â€˜etypeâ€™ may be used uninitialized in this function
    * [THRIFT-3349] - Python server does not handle processor exception
    * [THRIFT-3343] - Fix haskell README
    * [THRIFT-3340] - Python: enable json tests again
    * [THRIFT-3311] - Top level README.md has incorrect formmating
    * [THRIFT-2936] - Minor memory leak in SSL
    * [THRIFT-3290] - Using from in variable names causes the generated Python code to have errors
    * [THRIFT-3225] - Fix TPipeServer unpredictable behavior on interrupt()
    * [THRIFT-3354] - Fix word-extraction substr bug in initialism code
    * [THRIFT-2006] - TBinaryProtocol message header call name length is not validated and can be used to core the server
    * [THRIFT-3329] - C++ library unit tests don't compile against the new boost-1.59 unit test framework
    * [THRIFT-2630] - windows7 64bit pc. ipv4 and ipv6 pc.can't use
    * [THRIFT-3336] - Thrift generated streaming operators added in 0.9.2 cannot be overridden
    * [THRIFT-2681] - Core of unwind_cleanup
    * [THRIFT-3317] - cpp namespace org.apache issue appears in 0.9

## Documentation
    * [THRIFT-3286] - Apache Ant is a necessary dependency

## Improvement
    * [THRIFT-227] - Byte[] in collections aren't pretty printed like regular binary fields
    * [THRIFT-2744] - Vagrantfile for Centos 6.5
    * [THRIFT-2644] - Haxe support
    * [THRIFT-2756] - register Media Type @ IANA
    * [THRIFT-3076] - Compatibility with Haxe 3.2.0
    * [THRIFT-3081] - C++ Consolidate client processing loops in TServers
    * [THRIFT-3083] - C++ Consolidate server processing loops in TSimpleServer, TThreadedServer, TThreadPoolServer
    * [THRIFT-3084] - C++ add concurrent client limit to threaded servers
    * [THRIFT-3074] -     Add compiler/cpp/lex.yythriftl.cc to gitignore.
    * [THRIFT-3134] - Remove use of deprecated "phantom.args"
    * [THRIFT-3133] - Allow "make cross" and "make precross" to run without building all languages
    * [THRIFT-3142] - Make JavaScript use downloaded libraries
    * [THRIFT-3141] - Improve logging of JavaScript test
    * [THRIFT-3144] - Proposal: make String representation of enums in generated go code less verbose
    * [THRIFT-3130] - Remove the last vestiges of THRIFT_OVERLOAD_IF from THRIFT-1316
    * [THRIFT-3131] - Consolidate suggested import path for go thrift library to git.apache.org in docs and code
    * [THRIFT-3092] - Generated Haskell types should derive Generic
    * [THRIFT-3110] -  Print error log after cross test failures on Travis
    * [THRIFT-3114] - Using local temp variables to not pollute the global table
    * [THRIFT-3106] - CMake summary should give more information why a library is set to off
    * [THRIFT-3119] - Java's TThreadedSelectorServer has indistinguishable log messages in run()
    * [THRIFT-3122] - Javascript struct constructor should properly initialize struct and container members from plain js arguments
    * [THRIFT-3151] - Fix links to git-wip* - should be git.apache.org
    * [THRIFT-3167] - Windows build from source instructions need to be revised
    * [THRIFT-3155] - move contrib/mingw32-toolchain.cmake to build/cmake/
    * [THRIFT-3160] - Make generated go enums implement TextMarshaller and TextUnmarshaller interfaces
    * [THRIFT-3150] - Add an option to thrift go generator to make Read and Write methods private
    * [THRIFT-3149] - Make ReadFieldN methods in generated Go code private
    * [THRIFT-3172] - Add tutorial to Thrift web site
    * [THRIFT-3214] - Add Erlang option for using maps instead of dicts
    * [THRIFT-3201] - Capture github test artifacts for failed builds
    * [THRIFT-3266] - c_glib: Multiple compiler warnings building unit tests
    * [THRIFT-3285] - c_glib: Build library with all warnings enabled, no warnings generated
    * [THRIFT-1954] - Allow for a separate connection timeout value 
    * [THRIFT-2098] - Add support for Qt5+
    * [THRIFT-2199] - Remove Dense protocol (was: move to Contrib)
    * [THRIFT-406] - C++ Test suite cleanup
    * [THRIFT-902] - socket and connect timeout in TSocket should be distinguished
    * [THRIFT-388] - Use a separate wire format for async calls
    * [THRIFT-727] - support native C++ language specific exception message
    * [THRIFT-1784] - pep-3110 compliance for exception handling 
    * [THRIFT-1025] - C++ ServerSocket should inherit from Socket with the necessary Ctor to listen on connections from a specific host
    * [THRIFT-2269] - Can deploy libthrift-source.jar to maven center repository
    * [THRIFT-2804] - Pull an interface out of TBaseAsyncProcessor
    * [THRIFT-2806] - more whitespace fixups
    * [THRIFT-2811] - Make remote socket address accessible
    * [THRIFT-2809] - .gitignore update for compiler's visual project
    * [THRIFT-2846] - Expose ciphers parameter from ssl.wrap_socket()
    * [THRIFT-2859] - JSON generator: output complete descriptors
    * [THRIFT-2861] - add buffered transport
    * [THRIFT-2865] - Test case for Go: SeqId out of sequence
    * [THRIFT-2866] - Go generator source code is hard to read and maintain
    * [THRIFT-2880] - Read the network address from the listener if available.
    * [THRIFT-2875] - Typo in TDenseProtocol.h comment
    * [THRIFT-2874] - TBinaryProtocol  member variable "string_buf_" is never used.
    * [THRIFT-2855] - Move contributing.md to the root of the repository
    * [THRIFT-2862] - Enable RTTI and/or build macros for generated code
    * [THRIFT-2876] -  Add test for THRIFT-2526 Assignment operators and copy constructors in c++ don't copy the __isset struct
    * [THRIFT-2897] - Generate -isEqual: and -hash methods
    * [THRIFT-2909] - Improve travis build
    * [THRIFT-2921] - Make Erlang impl ready for OTP 18 release (dict/0 and set/0 are deprecated)
    * [THRIFT-2928] - Rename the erlang test_server module
    * [THRIFT-2940] - Allow installing Thrift from git as NPM module by providing package.json in top level directory
    * [THRIFT-2937] - Allow setting a maximum frame size in TFramedTransport
    * [THRIFT-2976] - nodejs: xhr and websocket support for browserify
    * [THRIFT-2996] - Test for Haxe 3.1.3 or better 
    * [THRIFT-2969] - nodejs: DRY up library tests
    * [THRIFT-2973] - Update Haxe lib readme regarding Haxe 3.1.3
    * [THRIFT-2952] - Improve handling of Server.Stop() 
    * [THRIFT-2964] - nodejs: move protocols and transports into separate files
    * [THRIFT-2963] - nodejs - add test coverage
    * [THRIFT-3006] - Attach 'omitempty' json tag for optional fields in Go
    * [THRIFT-3027] - Go compiler does not ensure common initialisms have consistent case
    * [THRIFT-3030] - TThreadedServer: Property for number of clientThreads
    * [THRIFT-3023] - Go compiler is a little overly conservative with names of attributes
    * [THRIFT-3018] - Compact protocol for Delphi
    * [THRIFT-3025] - Change pure Int constants into @enums (where possible)
    * [THRIFT-3031] - migrate "shouldStop" flag to TServer
    * [THRIFT-3022] - Compact protocol for Haxe
    * [THRIFT-3041] - Generate asynchronous clients for Cocoa
    * [THRIFT-3053] - Perl SSL Socket Support (Encryption)
    * [THRIFT-3247] - Generate a C++ thread-safe client
    * [THRIFT-3217] - Provide a little endian variant of the binary protocol in C++
    * [THRIFT-3223] - TypeScript: Add initial support for Enum Maps
    * [THRIFT-3220] - Option to suppress @Generated Annotation entirely
    * [THRIFT-3300] - Reimplement TZlibTransport in Java using streams
    * [THRIFT-3288] - c_glib: Build unit tests with all warnings enabled, no warnings generated
    * [THRIFT-3347] - Improve cross test servers and clients
    * [THRIFT-3342] - Improve ruby cross test client and server compatibility
    * [THRIFT-2296] - Add C++ Base class for service
    * [THRIFT-3337] - Add testBool method to cross tests
    * [THRIFT-3303] - Disable concurrent cabal jobs on Travis to avoid GHC crash
    * [THRIFT-2623] - Docker container for Thrift
    * [THRIFT-3298] - thrift endian converters may conflict with other libraries
    * [THRIFT-1559] - Provide memory pool for TBinaryProtocol to eliminate memory fragmentation
    * [THRIFT-424] - Steal ProtocolBuffers' VarInt implementation for C++

## New Feature
    * [THRIFT-3070] - Add ability to set the LocalCertificateSelectionCallback
    * [THRIFT-1909] - Java: Add compiler flag to use the "option pattern" for optional fields
    * [THRIFT-2099] - Stop TThreadPoolServer with alive connections.
    * [THRIFT-123] - implement TZlibTransport in Java
    * [THRIFT-2368] - New option: reuse-objects for Java generator
    * [THRIFT-2836] - Optionally generate C++11 MoveConstructible types
    * [THRIFT-2824] - Flag to disable html escaping doctext
    * [THRIFT-2819] - Add WebsSocket client to node.js
    * [THRIFT-3050] - Client certificate authentication for non-http TLS in C#
    * [THRIFT-3292] - Implement TZlibTransport in Go

## Question
    * [THRIFT-2583] - Thrift on xPC target (SpeedGoat)
    * [THRIFT-2592] - thrift server using c_glib
    * [THRIFT-2832] - c_glib: Handle string lists correctly
    * [THRIFT-3136] - thrift installation problem on mac
    * [THRIFT-3346] - c_glib: Tutorials example crashes saying Calculator.ping implementation returned FALSE but did not set an error

## Sub-task
    * [THRIFT-2578] - Moving 'make cross' from test.sh to test.py
    * [THRIFT-2734] - Go coding standards
    * [THRIFT-2748] - Add Vagrantfile for Centos 6.5
    * [THRIFT-2753] - Misc. Haxe improvements
    * [THRIFT-2640] - Compact Protocol in Cocoa
    * [THRIFT-3262] - warning: overflow in implicit constant conversion in DenseProtoTest.cpp
    * [THRIFT-3194] - Can't build with go enabled.  gomock SCC path incorrect.
    * [THRIFT-3275] - c_glib tutorial warnings in generated code
    * [THRIFT-1125] - Multiplexing support for the Ruby Library
    * [THRIFT-2807] - PHP Code Style
    * [THRIFT-2841] - Add comprehensive integration tests for the whole Go stack
    * [THRIFT-2815] - Haxe: Support for Multiplexing Services on any Transport, Protocol and Server
    * [THRIFT-2886] - Integrate binary type in standard Thrift cross test
    * [THRIFT-2946] - Enhance usability of cross test framework
    * [THRIFT-2967] - Add .editorconfig to root
    * [THRIFT-3033] - Perl: Support for Multiplexing Services on any Transport, Protocol and Server
    * [THRIFT-3174] - Initialism code in the Go compiler doesn't check first word
    * [THRIFT-3193] - Option to supress date value in @Generated annotation
    * [THRIFT-3305] - Missing dist files for 0.9.3 release candidate
    * [THRIFT-3341] - Add testBool methods
    * [THRIFT-3308] - Fix broken test cases for 0.9.3 release candidate

## Task
    * [THRIFT-2834] - Remove semi-colons from python code generator
    * [THRIFT-2853] - Adjust comments not applying anymore after THRIFT-2852

## Test
    * [THRIFT-3211] - Add make cross support for php TCompactProtocol

## Wish
    * [THRIFT-2838] - TNonblockingServer can bind to port 0 (i.e., get an OS-assigned port) but there is no way to get the port number



Thrift 0.9.2
--------------------------------------------------------------------------------
## Bug
    * [THRIFT-2793] - Go compiler produces uncompilable code
    * [THRIFT-1481] - Unix domain sockets in C++ do not support the abstract namespace
    * [THRIFT-1455] - TBinaryProtocolT<Transport_>::writeString casts from size_t to uint32_t, which is not safe on 64-bit platforms
    * [THRIFT-1579] - PHP Extention - function thrift_protocol_read_binary not working from TBinarySerializer::deserialize
    * [THRIFT-1584] - Error: could not SetMinThreads in ThreadPool on single-core machines
    * [THRIFT-1614] - Thrift build from svn repo sources fails with automake-1.12
    * [THRIFT-1047] - rb_thrift_memory_buffer_write treats arg as string without check, segfaults if you pass non-string
    * [THRIFT-1639] - Java/Python: Serialization/Deserialization of double type using CompactProtocol
    * [THRIFT-1647] - NodeJS BufferedTransport does not work beyond the hello-world example
    * [THRIFT-2130] - Thrift's D library/test: parts of "make check" code do not compile with recent dmd-2.062 through dmd-2.064alpha
    * [THRIFT-2140] - Error compiling cpp tutorials
    * [THRIFT-2139] - MSVC 2012 Error - Cannot compile due to BoostThreadFactory
    * [THRIFT-2138] - pkgconfig file created with wrong include path
    * [THRIFT-2160] - Warning in thrift.h when compiling with -Wunused and NDEBUG
    * [THRIFT-2158] - Compact, JSON, and SimpleJSON protocols are not working correctly
    * [THRIFT-2167] - nodejs lib throws error if options argument isn't passed
    * [THRIFT-2288] - Go impl of Thrift JSON protocol wrongly writes/expects true/false for bools
    * [THRIFT-2147] - Thrift IDL grammar allows for dotted identifier names
    * [THRIFT-2145] - Rack and Thin are not just development dependencies
    * [THRIFT-2267] - Should be able to choose socket family in Python TSocket
    * [THRIFT-2276] - java path in spec file needs updating
    * [THRIFT-2281] - Generated send/recv code ignores errors returned by the underlying protocol
    * [THRIFT-2280] - TJSONProtocol.Flush() does not really flush the transport
    * [THRIFT-2274] - TNonblockingServer and TThreadedSelectorServer do not close their channel selectors on exit and leak file descriptors
    * [THRIFT-2265] - php library doesn't build
    * [THRIFT-2232] - IsSet* broken in Go
    * [THRIFT-2246] - Unset enum value is printed by ToString()
    * [THRIFT-2240] - thrift.vim (contrib) does not correctly handle 'union'
    * [THRIFT-2243] - TNonblockingServer in thrift crashes when TFramedTransport opens
    * [THRIFT-2230] - Cannot Build on RHEL/Centos/Amazon Linux 6.x
    * [THRIFT-2247] - Go generator doesn't deal well with map keys of type binary
    * [THRIFT-2253] - Python Tornado TTornadoServer base class change
    * [THRIFT-2261] - java: error: unmappable character for encoding ASCII
    * [THRIFT-2259] - C#: unexpected null logDelegate() pointer causes AV in TServer.serve()
    * [THRIFT-2225] - SSLContext destroy before cleanupOpenSSL
    * [THRIFT-2224] - TSSLSocket.h and TSSLServerSocket.h should use the platfromsocket too
    * [THRIFT-2229] - thrift failed to build on OSX 10.9 GM
    * [THRIFT-2227] - Thrift compiler generates spurious warnings with Xlint
    * [THRIFT-2219] - Thrift gem fails to build on OS X Mavericks with 1.9.3 rubies
    * [THRIFT-2226] - TServerSocket - keepAlive wrong initialization order
    * [THRIFT-2285] - TJsonProtocol implementation for Java doesn't allow a slash (/) to be escaped (\/)
    * [THRIFT-2216] - Extraneous semicolon in TProtocolUtil.h makes clang mad
    * [THRIFT-2215] - Generated HTML/Graphviz lists referenced enum identifiers as UNKNOWN.
    * [THRIFT-2211] - Exception constructor does not contain namespace prefix.
    * [THRIFT-2210] - lib/java TSimpleJSONProtocol can emit invalid JSON
    * [THRIFT-2209] - Ruby generator -- please namespace classes
    * [THRIFT-2202] - Delphi TServerImpl.DefaultLogDelegate may stop the server with I/O-Error 105
    * [THRIFT-2201] - Ternary operator returns different types (build error for some compilers)
    * [THRIFT-2200] - nested structs cause generate_fingerprint() to slow down at excessive CPU load
    * [THRIFT-2197] - fix jar output directory in rpm spec file
    * [THRIFT-2196] - Fix invalid dependency in Makefile.am
    * [THRIFT-2194] - Node: Not actually prepending residual data in TFramedTransport.receiver
    * [THRIFT-2193] - Java code generator emits spurious semicolon when deep copying binary data
    * [THRIFT-2191] - Fix charp JSONProtocol.ReadJSONDouble (specify InvariantCulture)
    * [THRIFT-2214] - System header sys/param.h is included inside the Thrift namespace
    * [THRIFT-2178] - Thrift generator returns error exit code on --version
    * [THRIFT-2171] - NodeJS implementation has extremely low test coverage
    * [THRIFT-2183] - gem install fails on zsh
    * [THRIFT-2182] - segfault in regression tests (GC bug in rb_thrift_memory_buffer_write)
    * [THRIFT-2181] - oneway calls don't work in NodeJS
    * [THRIFT-2169] - JavaME Thrift Library causes "java.io.IOException: No Response Entries Available" after using the Thrift client for some time
    * [THRIFT-2168] - Node.js appears broken (at least, examples don't work as intended)
    * [THRIFT-2293] - TSSLTransportFactory.createSSLContext() leaves files open
    * [THRIFT-2279] - TSerializer only returns the first 1024 bytes serialized
    * [THRIFT-2278] - Buffered transport doesn't support writes > buffer size
    * [THRIFT-2275] - Fix memory leak in golang compact_protocol.
    * [THRIFT-2282] - Incorect code generated for some typedefs
    * [THRIFT-2009] - Go redeclaration error
    * [THRIFT-1964] - 'Isset' causes problems with C#/.NET serializers
    * [THRIFT-2026] - Fix TCompactProtocol 64 bit builds
    * [THRIFT-2108] - Fix TAsyncClientManager timeout race
    * [THRIFT-2068] - Multiple calls from same connection are not processed in node
    * [THRIFT-1750] - Make compiler build cleanly under visual studio 10
    * [THRIFT-1755] - Comment parsing bug
    * [THRIFT-1771] - "make check" fails on x64 for libboost_unit_test_framework.a
    * [THRIFT-1841] - NodeJS Thrift incorrectly parses non-UTF8-string types
    * [THRIFT-1908] - Using php thrift_protocol accelerated transfer causes core dump
    * [THRIFT-1892] - Socket timeouts are declared in milli-seconds, but are actually set in micro-seconds
    * [THRIFT-2303] - TBufferredTransport not properly closing underlying transport
    * [THRIFT-2313] - nodejs server crash after processing the first request when using MultiplexedProcessor/FramedBuffer/BinaryProtocol
    * [THRIFT-2311] - Go: invalid code generated when exception name is a go keyword
    * [THRIFT-2308] - node: TJSONProtocol parse error when reading from buffered message
    * [THRIFT-2316] - ccp: TFileTransportTest
    * [THRIFT-2352] - msvc failed to compile thrift tests
    * [THRIFT-2337] - Golang does not report TIMED_OUT exceptions
    * [THRIFT-2340] - Generated server implementation does not send response type EXCEPTION on the Thrift.TApplicationExceptionType.UNKNOWN_METHOD exception
    * [THRIFT-2354] - Connection errors can lead to case_clause exceptions
    * [THRIFT-2339] - Uncaught exception in thrift c# driver
    * [THRIFT-2356] - c++ thrift client not working with ssl (SSL_connect hangs)
    * [THRIFT-2331] - Missing call to ReadStructBegin() in TApplicationException.Read()
    * [THRIFT-2323] - Uncompileable Delphi code generated for typedef'd structs
    * [THRIFT-2322] - Correctly show the number of times ExecutorService (java) has rejected the client.
    * [THRIFT-2389] - namespaces handled wrongly in acrionscript 3.0 implementation
    * [THRIFT-2388] - GoLang - Fix data races in simple_server and server_socket
    * [THRIFT-2386] - Thrift refuses to link yylex
    * [THRIFT-2375] - Excessive <br>'s in generated HTML
    * [THRIFT-2373] - warning CS0414 in THttpClient.cs: private field 'Thrift.Transport.THttpClient.connection' assigned but never used
    * [THRIFT-2372] - thrift/json_protocol.go:160: function ends without a return statement
    * [THRIFT-2371] - ruby bundler version fails on ~1.3.1, remove and take latest avail
    * [THRIFT-2370] - Compiler SEGFAULTs generating HTML documentation for complex strucre
    * [THRIFT-2384] - Binary map keys produce uncompilable code in go
    * [THRIFT-2380] - unreachable code (CID 1174546, CID 1174679)
    * [THRIFT-2378] - service method arguments of binary type lead to uncompileable Go code
    * [THRIFT-2363] - Issue with character encoding of Success returned from Login using Thrift Proxy and NodeJS
    * [THRIFT-2359] - TBufferedTransport doesn't clear it's buffer on a failed flush call
    * [THRIFT-2428] - Python 3 setup.py support
    * [THRIFT-2367] - Build failure: stdlib and boost both define uint64_t
    * [THRIFT-2365] - C# decodes too many binary bytes from JSON
    * [THRIFT-2402] - byte count of FrameBuffer in AWAITING_CLOSE state is not subtracted from readBufferBytesAllocated
    * [THRIFT-2396] - Build Error on MacOSX
    * [THRIFT-2395] - thrift Ruby gem requires development dependency 'thin' regardless of environment
    * [THRIFT-2414] - c_glib fix several bug.
    * [THRIFT-2420] - Go argument parser for methods without arguments does not skip fields
    * [THRIFT-2439] - Bug in TProtocolDecorator Class causes parsing errors
    * [THRIFT-2419] - golang - Fix fmt.Errorf in generated code
    * [THRIFT-2418] - Go handler function panics on internal error
    * [THRIFT-2405] - Node.js Multiplexer tests fail (silently)
    * [THRIFT-2581] - TFDTransport destructor should not throw
    * [THRIFT-2575] - Thrift includes siginfo_t within apache::thrift::protocol namespace
    * [THRIFT-2577] - TFileTransport  missuse of closesocket on windows platform
    * [THRIFT-2576] - Implement Thrift.Protocol.prototype.skip method in JavaScript library
    * [THRIFT-2588] - Thrift compiler is not buildable in Visual Studio 2010
    * [THRIFT-2594] - JS Compiler: Single quotes are not being escaped in constants.
    * [THRIFT-2591] - TFramedTransport does not handle payloads split across packets correctly
    * [THRIFT-2599] - Uncompileable Delphi code due to naming conflicts with IDL
    * [THRIFT-2590] - C++ Visual Studio solution doesn't include Multiplexing support
    * [THRIFT-2595] - Node.js: Fix global leaks and copy-paste errors
    * [THRIFT-2565] - autoconf fails to find mingw-g++ cross compiler on travis CI
    * [THRIFT-2555] - excessive "unused field" comments
    * [THRIFT-2554] - double initialization in generated Read() method
    * [THRIFT-2551] - OutOfMemoryError "unable to create new native thread" kills serve thread
    * [THRIFT-2543] - Generated enum type in haskell should be qualified
    * [THRIFT-2560] - Thrift compiler generator tries to concat ints with strings using +
    * [THRIFT-2559] - Centos 6.5 unable to "make" with Thrift 0.9.1
    * [THRIFT-2526] - Assignment operators and copy constructors in c++ don't copy the __isset struct
    * [THRIFT-2454] - c_glib: There is no gethostbyname_r() in some OS.
    * [THRIFT-2451] - Do not use pointers for optional fields with defaults. Do not write such fields if its value set to default. Also, do not use pointers for any optional fields mapped to go map or slice. generate Get accessors
    * [THRIFT-2450] - include HowToContribute in the src repo
    * [THRIFT-2448] - thrift/test/test.sh has incorrect Node.js test path
    * [THRIFT-2460] - unopened socket fd must be less than zero.
    * [THRIFT-2459] - --version should not exit 1
    * [THRIFT-2468] - Timestamp handling
    * [THRIFT-2467] - Unable to build contrib/fb303 on OSX 10.9.2
    * [THRIFT-2466] - Improper error handling for SSL/TLS connections that don't complete a handshake
    * [THRIFT-2463] - test/py/RunClientServer.py fails sometimes
    * [THRIFT-2458] - Generated golang server code for "oneway" methods is incorrect
    * [THRIFT-2456] - THttpClient fails when using async support outside Silverlight
    * [THRIFT-2524] - Visual Studio project is missing TThreadedServer files
    * [THRIFT-2523] - Visual Studio project is missing OverlappedSubmissionThread files
    * [THRIFT-2520] - cpp:cob_style generates incorrect .tcc file
    * [THRIFT-2508] - Uncompileable C# code due to language keywords in IDL
    * [THRIFT-2506] - Update TProtocolException error codes to be used consistently throughout the library
    * [THRIFT-2505] - go: struct should always be a pointer to avoid copying of potentially size-unbounded structs
    * [THRIFT-2515] - TLS Method error during make
    * [THRIFT-2503] - C++: Fix name collision when a struct has a member named "val"
    * [THRIFT-2477] - thrift --help text with misplaced comma
    * [THRIFT-2492] - test/cpp does not compile on mac
    * [THRIFT-2500] - sending random data crashes thrift(golang) service
    * [THRIFT-2475] - c_glib: buffered_transport_write function return always TRUE.
    * [THRIFT-2495] - JavaScript/Node string constants lack proper escaping
    * [THRIFT-2491] - unable to import generated ThriftTest service
    * [THRIFT-2490] - c_glib: if fail to read a exception from server, client may be occurred double free
    * [THRIFT-2470] - THttpHandler swallows exceptions from processor
    * [THRIFT-2533] - Boost version in requirements should be updated
    * [THRIFT-2532] - Java version in installation requirements should be updated
    * [THRIFT-2529] - TBufferedTransport split  Tcp data bug in nodeJs
    * [THRIFT-2537] - Path for "go get" does not work (pull request 115)
    * [THRIFT-2443] - Node fails cross lang tests
    * [THRIFT-2437] - Author fields in Python setup.py must be strings not lists.
    * [THRIFT-2435] - Java compiler doesn't like struct member names that are identical to an existing enum or struct type
    * [THRIFT-2434] - Missing namespace import for php TMultiplexedProcessor implementation
    * [THRIFT-2432] - Flaky parallel build
    * [THRIFT-2430] - Crash during TThreadPoolServer shutdown
    * [THRIFT-667] - Period should not be allowed in identifier names
    * [THRIFT-1212] - Members capital case conflict
    * [THRIFT-2584] - Error handler not listened on javascript client
    * [THRIFT-2294] - Incorrect Makefile generation
    * [THRIFT-2601] - Fix vagrant to work again for builds again
    * [THRIFT-2092] - TNonblocking server should release handler as soon as connection closes
    * [THRIFT-2557] - CS0542 member names cannot be the same as their enclosing type
    * [THRIFT-2605] - TSocket warning on gcc 4.8.3
    * [THRIFT-2607] - ThreadManager.cpp warning on clang++ 3.4
    * [THRIFT-1998] - TCompactProtocol.tcc - one more warning on Visual 2010
    * [THRIFT-2610] - MSVC warning in TSocket.cpp
    * [THRIFT-2614] - TNonblockingServer.cpp warnings on MSVC
    * [THRIFT-2608] - TNonblockingServer.cpp warnings on clang 3.4
    * [THRIFT-2606] - ThreadManager.h warning in clang++ 3.4
    * [THRIFT-2609] - TFileTransport.h unused field warning (clang 3.4)
    * [THRIFT-2416] - Cannot use TCompactProtocol with MSVC
    * [THRIFT-1803] - Ruby Thrift 0.9.0 tries to encode UUID to UTF8 and crashes
    * [THRIFT-2385] - Problem with gethostbyname2 during make check
    * [THRIFT-2262] - thrift server 'MutateRow' operation gives no indication of success / failure
    * [THRIFT-2048] - Prefer boolean context to nullptr_t conversion
    * [THRIFT-2528] - Thrift Erlang Library: Multiple thrift applications in one bundle
    * [THRIFT-1999] - warning on gcc 4.7 while compiling BoostMutex.cpp
    * [THRIFT-2104] - Structs lose binary data when transferred from server to client in Java
    * [THRIFT-2184] - undefined method rspec_verify for Thrift::MemoryBufferTransport
    * [THRIFT-2351] - PHP TCompactProtocol has fails to decode messages
    * [THRIFT-2016] - Resource Leak in thrift struct under compiler/cpp/src/parse/t_function.h
    * [THRIFT-2273] - Please delete old releases from mirroring system
    * [THRIFT-2270] - Faulty library version numbering at build or documentation
    * [THRIFT-2203] - Tests keeping failing on Jenkins and Travis CI
    * [THRIFT-2399] - thrift.el: recognize "//"-style comments in emacs thrift-mode
    * [THRIFT-2582] - "FileTransport error" exception is raised when trying to use Java's TFileTransport
    * [THRIFT-1682] - Multiple thread calling a Service function unsafely causes message corruption and terminates with Broken Pipe
    * [THRIFT-2357] - recurse option has no effect when generating php
    * [THRIFT-2248] - Go generator doesn't deal well with map keys of type binary
    * [THRIFT-2426] - clarify IP rights and contributions from fbthrift
    * [THRIFT-2041] - TNonblocking server compilation on windows (ARITHMETIC_RIGHT_SHIFT)
    * [THRIFT-2400] - thrift.el: recognize "//"-style comments in emacs thrift-mode
    * [THRIFT-1717] - Fix deb build in jenkins
    * [THRIFT-2266] - ThreadManager.h:24:10: fatal error: 'tr1/functional' file not found on Mac 10.9 (Mavericks)
    * [THRIFT-1300] - Test failures with parallel builds (make -j)
    * [THRIFT-2487] - Tutorial requires two IDL files but only one is linked from the Thrift web site
    * [THRIFT-2329] - missing release tags within git
    * [THRIFT-2306] - concurent client calls with nodejs
    * [THRIFT-2222] - ruby gem cannot be compiled on OS X mavericks
    * [THRIFT-2381] - code which generated by thrift2/hbase.thrift compile error
    * [THRIFT-2390] - no close event when connection lost
    * [THRIFT-2146] - Unable to pass multiple "--gen" options to the thrift compiler
    * [THRIFT-2438] - Unexpected readFieldEnd call causes JSON Parsing errors
    * [THRIFT-2498] - Error message "Invalid method name" while trying to call HBase Thrift API
    * [THRIFT-841] - Build cruft
    * [THRIFT-2570] - Wrong URL given in http://thrift.apache.org/developers
    * [THRIFT-2604] - Fix debian packaging
    * [THRIFT-2618] - Unignore /aclocal files required for build
    * [THRIFT-2562] - ./configure create MakeFile in lib/d with errors
    * [THRIFT-2593] - Unable to build thrift on ubuntu-12.04 (Precise)
    * [THRIFT-2461] - Can't install thrift-0.8.0 on OS X 10.9.2
    * [THRIFT-2602] - Fix missing dist files
    * [THRIFT-2620] - Fix python packaging
    * [THRIFT-2545] - Test CPP fails to build (possibly typo)

## Documentation
    * [THRIFT-2155] - Adding one liner guide to rename the version.h.in and rename thrifty.cc.h
    * [THRIFT-1991] - Add exceptions to examples
    * [THRIFT-2334] - add a tutorial for node JS
    * [THRIFT-2392] - Actionscript tutorial
    * [THRIFT-2383] - contrib: sample for connecting Thrift with Rebus
    * [THRIFT-2382] - contrib: sample for connecting Thrift with STOMP

## Improvement
    * [THRIFT-1457] - Capacity of TframedTransport write buffer is never reset
    * [THRIFT-1135] - Node.js tutorial
    * [THRIFT-1371] - Socket timeouts (SO_RCVTIMEO and SO_SNDTIMEO) not supported on Solaris
    * [THRIFT-2142] - Minor tweaks to thrift.el for better emacs package compatibility
    * [THRIFT-2268] - Modify TSaslTransport to ignore TCP health checks from loadbalancers
    * [THRIFT-2264] - GitHub page incorrectly states that Thrift is still incubating
    * [THRIFT-2263] - Always generate good hashCode for Java
    * [THRIFT-2233] - Java compiler should defensively copy its binary inputs
    * [THRIFT-2239] - Address FindBugs errors
    * [THRIFT-2249] - Add SMP Build option to thrift.spec (and three config defines)
    * [THRIFT-2254] - Exceptions generated by Go compiler should implement error interface
    * [THRIFT-2260] - Thrift imposes unneeded dependency on commons-lang3
    * [THRIFT-2258] - Add TLS v1.1/1.2 support to TSSLSocket.cpp
    * [THRIFT-2205] - Node.js Test Server to support test.js JavaScript Browser test and sundry fixes
    * [THRIFT-2204] - SSL client for the cocoa client
    * [THRIFT-2172] - Java compiler allocates optionals array for every struct with an optional field
    * [THRIFT-2185] - use cabal instead of runhaskell in haskell library
    * [THRIFT-1926] - PHP Constant Generation Refactoring
    * [THRIFT-2029] - Port C++ tests to Windows
    * [THRIFT-2054] - TSimpleFileTransport - Java Lib has no straight forward TTransport based file transport
    * [THRIFT-2040] - "uninitialized variable" warnings on MSVC/windows
    * [THRIFT-2034] - Give developers' C++ code direct access to socket FDs on server side
    * [THRIFT-2095] - Use print function for Python 3 compatiblity
    * [THRIFT-1868] - Make the TPC backlog configurable in the Java servers
    * [THRIFT-1813] - Add @Generated annotation to generated classes
    * [THRIFT-1815] - Code generators line buffer output
    * [THRIFT-2305] - TFramedTransport empty constructor should probably be private
    * [THRIFT-2304] - Move client assignments from construtor in method
    * [THRIFT-2309] - Ruby (gem) & PHP RPM subpackages
    * [THRIFT-2318] - perl: dependency Class::Accessor not checked
    * [THRIFT-2317] - exclude tutorial from build
    * [THRIFT-2320] - Program level doctext does not get attached by parser
    * [THRIFT-2349] - Golang - improve tutorial
    * [THRIFT-2348] - PHP Generator: add array typehint to functions
    * [THRIFT-2344] - configure.ac: compiler-only option
    * [THRIFT-2343] - Golang - Return a single error for all exceptions instead of multiple return values
    * [THRIFT-2341] - Enable generation of Delphi XMLDoc comments (a.k.a. "Help Insight")
    * [THRIFT-2355] - Add SSL and Web Socket Support to Node and JavaScript
    * [THRIFT-2350] - Add async calls to normal JavaScript
    * [THRIFT-2330] - Generate PHPDoc comments
    * [THRIFT-2332] - RPMBUILD: run bootstrap (if needed)
    * [THRIFT-2391] - simple socket transport for actionscript 3.0
    * [THRIFT-2376] - nodejs: allow Promise style calls for client and server
    * [THRIFT-2369] - Add ssl support for nodejs implementation
    * [THRIFT-2401] - Haskell tutorial compiles
    * [THRIFT-2417] - C# Union classes are not partial
    * [THRIFT-2415] - Named pipes server performance & message mode
    * [THRIFT-2404] - emit warning on (typically inefficient) list<byte>
    * [THRIFT-2398] - Improve Node Server Library
    * [THRIFT-2397] - Add CORS and CSP support for JavaScript and Node.js libraries
    * [THRIFT-2407] - use markdown (rename README => README.md)
    * [THRIFT-2300] - D configure info output should follow same format as other languages
    * [THRIFT-2579] - Windows CE support
    * [THRIFT-2574] - Compiler option to generate namespace directories for Ruby
    * [THRIFT-2571] - Simplify cross compilation using CMake
    * [THRIFT-2569] - Introduce file to specify third party library locations on Windows
    * [THRIFT-2568] - Implement own certificate handler
    * [THRIFT-2552] - eliminate warning from configure.ac
    * [THRIFT-2549] - Generate json tag for struct members. use go.tag annotation to override the default generated tag.
    * [THRIFT-2544] - Add support for socket transport for c# library when using Windows Phone projects
    * [THRIFT-2453] - haskell tutorial: fix up division by 0 example
    * [THRIFT-2449] - Enhance typedef structure to distinguish between forwards and real typedefs
    * [THRIFT-2446] - There is no way to handle server stream errors
    * [THRIFT-2455] - Allow client certificates to be used with THttpClient
    * [THRIFT-2511] - Node.js needs the compact protocol
    * [THRIFT-2493] - Node.js lib needs HTTP client
    * [THRIFT-2502] - Optimize go implementations of binary and compact protocols for speed
    * [THRIFT-2494] - Add enum toString helper function in c_glib
    * [THRIFT-2471] - Make cpp.ref annotation language agnostic
    * [THRIFT-2497] - server and client for test/go, also several fixes and improvements
    * [THRIFT-2535] - TJSONProtocol when serialized yields TField ids rather than names
    * [THRIFT-2220] - Add a new struct structv?
    * [THRIFT-1352] - Thrift server
    * [THRIFT-989] - Push boost m4 macros upstream
    * [THRIFT-1349] - Remove unnecessary print outs
    * [THRIFT-2496] - server and client for test/go, also several fixes and improvements
    * [THRIFT-1114] - Maven publish shouldn't require passwords hardcoded in settings.xml
    * [THRIFT-2043] - visual 2010 warnings - unreachable code
    * [THRIFT-1683] - Implement alternatives to Javascript Client side Transport protocol, just as NPAPI and WebSocket.
    * [THRIFT-1746] - provide a SPDX file
    * [THRIFT-1772] - Serialization does not check types of embedded structures.
    * [THRIFT-2387] - nodejs: external imports should be centralized in index.js
    * [THRIFT-2037] - More general macro THRIFT_UNUSED_VARIABLE

## New Feature
    * [THRIFT-1012] - Transport for DataInput DataOutput interface
    * [THRIFT-2256] - Using c++11/c++0x std library  replace boost library
    * [THRIFT-2250] - JSON and MemoryBuffer for JavaME
    * [THRIFT-2114] - Python Service Remote SSL Option
    * [THRIFT-1719] - SASL client support for Python
    * [THRIFT-1894] - Thrift multi-threaded async Java Server using Java 7 AsynchronousChannelGroup
    * [THRIFT-1893] - HTTP/JSON server/client for node js
    * [THRIFT-2347] - C# TLS Transport based on THRIFT-181
    * [THRIFT-2377] - Allow addition of custom HTTP Headers to an HTTP Transport
    * [THRIFT-2408] - Named Pipe Transport Option for C#
    * [THRIFT-2572] - Add string/collection length limit checks (from C++) to java protocol readers
    * [THRIFT-2469] - "java:fullcamel" option to automatically camel-case underscored attribute names
    * [THRIFT-795] - Importing service functions (simulation multiple inheritance)
    * [THRIFT-2164] - Add a Get/Post Http Server to Node along with examples
    * [THRIFT-2255] - add Parent Class for generated Struct class

## Question
    * [THRIFT-2539] - Tsocket.cpp addrinfo ai_flags = AI_ADDRCONFIG
    * [THRIFT-2440] - how to connect as3 to java by thrift ,
    * [THRIFT-2379] - Memmory leaking while using multithreading in C++ server.
    * [THRIFT-2277] - Thrift: installing fb303 error
    * [THRIFT-2567] - Csharp slow ?
    * [THRIFT-2573] - thrift 0.9.2 release

## Sub-task
    * [THRIFT-981] - cocoa: add version Info to the library
    * [THRIFT-2132] - Go: Support for Multiplexing Services on any Transport, Protocol and Server
    * [THRIFT-2299] - TJsonProtocol implementation for Ruby does not allow for both possible slash (solidus) encodings
    * [THRIFT-2298] - TJsonProtocol implementation for C# does not allow for both possible slash (solidus) encodings
    * [THRIFT-2297] - TJsonProtocol implementation for Delphi does not allow for both possible slash (solidus) encodings
    * [THRIFT-2271] - JavaScript: Support for Multiplexing Services
    * [THRIFT-2251] - go test for compact protocol is not running
    * [THRIFT-2195] - Delphi: Add event handlers for server and processing events
    * [THRIFT-2176] - TSimpleJSONProtocol.ReadFieldBegin() does not return field type and ID
    * [THRIFT-2175] - Wrong field type set for binary
    * [THRIFT-2174] - Deserializing JSON fails in specific cases
    * [THRIFT-2053] - NodeJS: Support for Multiplexing Services
    * [THRIFT-1914] - Python: Support for Multiplexing Services on any Transport, Protocol and Server
    * [THRIFT-1810] - add ruby to test/test.sh
    * [THRIFT-2310] - PHP: Client-side support for Multiplexing Services
    * [THRIFT-2346] - C#: UTF-8 sent by PHP as JSON is not understood by TJsonProtocol
    * [THRIFT-2345] - Delphi: UTF-8 sent by PHP as JSON is not understood by TJsonProtocol
    * [THRIFT-2338] - First doctext wrongly interpreted as program doctext in some cases
    * [THRIFT-2325] - SSL test certificates
    * [THRIFT-2358] - C++: add compact protocol to cross language test suite
    * [THRIFT-2425] - PHP: Server-side support for Multiplexing Services
    * [THRIFT-2421] - Tree/Recursive struct support in thrift
    * [THRIFT-2290] - Update Go tutorial to align with THRIFT-2232
    * [THRIFT-2558] - CSharp compiler generator tries to concat ints with strings using +
    * [THRIFT-2507] - Additional LUA TProtocolException error code needed?
    * [THRIFT-2499] - Compiler: allow annotations without "= value"
    * [THRIFT-2534] - Cross language test results should recorded to a status.md or status.html file automatically
    * [THRIFT-66] - Java: Allow multiplexing multiple services over a single TCP connection
    * [THRIFT-1681] - Add Lua Support
    * [THRIFT-1727] - Ruby-1.9: data loss: "binary" fields are re-encoded
    * [THRIFT-1726] - Ruby-1.9: "binary" fields are represented by string whose encoding is "UTF-8"
    * [THRIFT-988] - perl: add version Info to the library via configure
    * [THRIFT-334] - Compact Protocol for PHP
    * [THRIFT-2444] - pull request 88: thrift: clean up enum value assignment

## Task
    * [THRIFT-2223] - Spam links on wiki
    * [THRIFT-2566] - Please create a DOAP file for your TLP
    * [THRIFT-2237] - Update archive to contain all versions
    * [THRIFT-962] - Tutorial page on our website is really unhelpful

## Test
    * [THRIFT-2327] - nodejs: nodejs test suite should be bundled with the library
    * [THRIFT-2445] - THRIFT-2384 (code generation for go maps with binary keys) should be tested
    * [THRIFT-2501] - C# The test parameters from the TestServer and TestClient are different from the http://thrift.apache.org/test/

## Wish
    * [THRIFT-2190] - Add the JavaScript thrift.js lib to the Bower registry
    * [THRIFT-2076] - boost::optional instead of __isset



Thrift 0.9.1
--------------------------------------------------------------------------------
## Bug
    * [THRIFT-1440] - debian packaging: minor-ish policy problems
    * [THRIFT-1402] - Generated Y_types.js does not require() X_types.js when an include in the IDL file was used
    * [THRIFT-1551] - 2 thrift file define only struct (no service), one include another, the gen nodejs file didn't have "requires" at the top
    * [THRIFT-1264] - TSocketClient is queried by run loop after deallocation in Cocoa
    * [THRIFT-1600] - Thrift Go Compiler and Library out of date with Go 1 Release.
    * [THRIFT-1603] - Thrift IDL allows for multiple exceptions, args or struct member names to be the same
    * [THRIFT-1062] - Problems with python tutorials
    * [THRIFT-864] - default value fails if identifier is a struct
    * [THRIFT-930] - Ruby and Haskell bindings don't properly support DESTDIR (makes packaging painful)
    * [THRIFT-820] - The readLength attribute of TBinaryProtocol is used as an instance variable and is decremented on each call of checkReadLength
    * [THRIFT-1640] - None of the tutorials linked on the website contain content
    * [THRIFT-1637] - NPM registry does not include version 0.8
    * [THRIFT-1648] - NodeJS clients always receive 0 for 'double' values.
    * [THRIFT-1660] - Python Thrift library can be installed with pip but not easy_install
    * [THRIFT-1657] - Chrome browser sending OPTIONS method before POST in xmlHttpRequest
    * [THRIFT-2118] - Certificate error handling still incorrect
    * [THRIFT-2137] - Ruby test lib fails jenkins build #864
    * [THRIFT-2136] - Vagrant build not compiling java, ruby, php, go libs due to missing dependencies
    * [THRIFT-2135] - GO lib leaves behind test files that are auto generated
    * [THRIFT-2134] - mingw-cross-compile script failing with strip errors
    * [THRIFT-2133] - java TestTBinaryProtocol.java test failing
    * [THRIFT-2126] - lib/cpp/src/thrift/concurrency/STD* files missing from DIST
    * [THRIFT-2125] - debian missing from DIST
    * [THRIFT-2124] - .o, .so, .la, .deps, .libs, gen-* files left tutorials, test and lib/cpp when making DIST
    * [THRIFT-2123] - GO lib missing files in DIST build
    * [THRIFT-2121] - Compilation bug for Node.js
    * [THRIFT-2129] - php ext missing from dist
    * [THRIFT-2128] - lib GO tests fail with funct ends without a return statement
    * [THRIFT-2286] - Failed to compile Thrift0.9.1 with boost1.55 by VS2010 if select Debug-mt&x64 mode.
    * [THRIFT-1973] - TCompactProtocol in C# lib does not serialize and deserialize negative int32 and int64 number correctly
    * [THRIFT-1992] - casts in TCompactProtocol.tcc causing "dereferencing type-punned pointer will break strict-aliasing rules" warnings from gcc
    * [THRIFT-1930] - C# generates unsigned byte for Thrift "byte" type
    * [THRIFT-1929] - Update website to use Mirrors for downloads
    * [THRIFT-1928] - Race may still exist in TFileTransport::flush()
    * [THRIFT-1934] - Tabs in Example section on main page are not working
    * [THRIFT-1933] - Delphi generator crashes when a typedef references another typedef from an included file
    * [THRIFT-1942] - Binary accelerated cpp extension does not use Thrift namespaces for Exceptions
    * [THRIFT-1959] - C#: Add Union TMemoryBuffer support
    * [THRIFT-1958] - C#: Use static Object.Equals instead of .Equals() calls in equals
    * [THRIFT-1957] - NodeJS TFramedTransport and TBufferedTransport read bytes as unsigned
    * [THRIFT-1955] - Union Type writer generated in C# does not WriteStructBegin
    * [THRIFT-1952] - Travis CI
    * [THRIFT-1949] - WP7 build broken
    * [THRIFT-1943] - docstrings for enum values are ignored
    * [THRIFT-2070] - Improper `HexChar' and 'HexVal' implementation in TJSONProtocol.cs
    * [THRIFT-2017] - Resource Leak in thrift struct under compiler/cpp/src/parse/t_program.h
    * [THRIFT-2032] - C# client leaks sockets/handles
    * [THRIFT-1996] - JavaME Constants generation is broken / inconsistent with regular Java generation
    * [THRIFT-2002] - Haskell: Test use Data.Maybe instead of Maybe
    * [THRIFT-2051] - Vagrant fails to build erlang
    * [THRIFT-2050] - Vagrant C# lib compile fails with TException missing
    * [THRIFT-1978] - Ruby: Thrift should allow for the SSL verify mode to be set
    * [THRIFT-1984] - namespace collision in python bindings
    * [THRIFT-1988] - When trying to build a debian package it fails as the file NEWS doesn't exist
    * [THRIFT-1975] - TBinaryProtocol CheckLength can't be used for a client
    * [THRIFT-1995] - '.' allowed at end of identifier generates non-compilable code
    * [THRIFT-2112] - Error in Go generator when using typedefs in map keys
    * [THRIFT-2088] - Typos in Thrift compiler help text
    * [THRIFT-2080] - C# multiplex processor does not catch IOException
    * [THRIFT-2082] - Executing "gmake clean" is broken
    * [THRIFT-2102] - constants are not referencing to correct type when included from another thrift file
    * [THRIFT-2100] - typedefs are not correctly referenced when including from other thrift files
    * [THRIFT-2066] - 'make install' does not install two headers required for C++ bindings
    * [THRIFT-2065] - Not valid constants filename in Java
    * [THRIFT-2047] - Thrift.Protocol.TCompactProtocol, intToZigZag data lost (TCompactProtocol.cs)
    * [THRIFT-2036] - Thrift gem warns about class variable access from top level
    * [THRIFT-2057] - Vagrant fails on php tests
    * [THRIFT-2105] - Generated code for default values of collections ignores t_field::T_REQUIRED
    * [THRIFT-2091] - Unnecessary 'friend' declaration causes warning in TWinsockSingleton
    * [THRIFT-2090] - Go generator, fix including of other thrift files
    * [THRIFT-2106] - Fix support for namespaces in GO generator
    * [THRIFT-1783] - C# doesn't handle required fields correctly
    * [THRIFT-1782] - async only defined in silverlight
    * [THRIFT-1779] - Missing process_XXXX method in generated TProcessor implementation for all 'oneway' service functions
    * [THRIFT-1692] - SO_REUSEADDR allows for socket hijacking on Windows
    * [THRIFT-1720] - JRuby times out on successful connection
    * [THRIFT-1713] - Named and Anonymous Pipe transport (Delphi)
    * [THRIFT-1699] - Native Union#read has extra read_field_end call
    * [THRIFT-1749] - Python TSSLSocket error handling obscures actual error
    * [THRIFT-1748] - Guard and RWGuard macros defined in global namespace
    * [THRIFT-1734] - Front webpage is still advertising v0.8 as current release
    * [THRIFT-1729] - C glib refactor left empty folders in svn
    * [THRIFT-1767] - unions can't have required fields (Delphi)
    * [THRIFT-1765] - Incorrect error message printed for null or negative keys
    * [THRIFT-1778] - Configure requires manual intervention due to tar failure
    * [THRIFT-1777] - TPipeServer is UNSTOPPABLE
    * [THRIFT-1753] - Multiple C++ Windows, OSX, and iOS portability issues
    * [THRIFT-1756] - 'make -j 8' fails with "unterminated #ifdef" error
    * [THRIFT-1773] - Python library should run on python 2.4
    * [THRIFT-1769] - unions can't have required fields (C++)
    * [THRIFT-1768] - unions can't have required fields (Compiler)
    * [THRIFT-1666] - htonll usage in TBinaryProtocol.tcc generates warning with MSVC2010
    * [THRIFT-1919] - libthrift depends on httpcore-4.1.3 (directly) and httpcore-4.1.4 (transitively)
    * [THRIFT-1864] - implement event handler for non-blocking server
    * [THRIFT-1859] - Generated error c++ code with -out and include_prefix param
    * [THRIFT-1869] - TThreadPoolServer (java) dies when threadpool is consumed
    * [THRIFT-1842] - Memory leak with Pipes
    * [THRIFT-1838] - Can't build compiler on OS X because of missing thrifty.h
    * [THRIFT-1846] - Restore socket.h header to support builds with Android NDK
    * [THRIFT-1850] - make check hangs on TSocket tests in TransportTest.cpp
    * [THRIFT-1873] - Binary protocol factory ignores struct read/write flags
    * [THRIFT-1872] - issues with TBufferedTransport buffer
    * [THRIFT-1904] - Incorrect code is generated for typedefs which use included types
    * [THRIFT-1903] - PHP namespaces cause binary protocols to not be used
    * [THRIFT-1895] - Delphi: reserved variable name "result" not detected properly
    * [THRIFT-1881] - TNonblockingServer does not release open connections or threads on shutdown
    * [THRIFT-1888] - Java Thrift client can't connect to Python Thrift server on same host
    * [THRIFT-1831] - Bug in list deserializer
    * [THRIFT-1824] - many compile warning, becase Thread.h includes config.h
    * [THRIFT-1823] - Missing parenthesis breaks "IS_..." macro in generated code
    * [THRIFT-1806] - Python generation always truncates __init__.py files
    * [THRIFT-1795] - Race condition in TThreadedServerPool java implementation
    * [THRIFT-1794] - C# asyncctp broken
    * [THRIFT-1804] - Binary+compact protocol single byte error in Ruby library (ARM architecture): caused by different char signedness
    * [THRIFT-1800] - Documentation text not always escaped correctly when rendered to HTML
    * [THRIFT-1788] - C#: Constants static constructor does not compile
    * [THRIFT-1816] - Need "require" included thrift files in "xxx_types.js"
    * [THRIFT-1907] - Compiling namespace and sub-namespace directives for unrecognized generators should only be a warning
    * [THRIFT-1913] - skipping unknown fields in java unions
    * [THRIFT-2553] - C++ linker error - transport/TSocket
    * [THRIFT-274] - Towards a working release/versioning process

## Documentation
    * [THRIFT-1971] - [Graphviz] Adds tutorial/general description documentation
    * [THRIFT-2001] - http://thrift.apache.org/ Example "C++ Server" tab is broken

## Improvement
    * [THRIFT-1574] - Apache project branding requirements: DOAP file [PATCH]
    * [THRIFT-1347] - Unify the exceptions returned in generated Go code
    * [THRIFT-1353] - Switch to performance branch, get rid of BinaryParser
    * [THRIFT-1629] - Ruby 1.9 Compatibility during Thrift configure, make, install
    * [THRIFT-991] - Refactor Haskell code and generator
    * [THRIFT-990] - Sanify gettimeofday usage codebase-wide
    * [THRIFT-791] - Let C++ TSimpleServer be driven by an external main loop
    * [THRIFT-2117] - Cocoa TBinaryProtocol strictWrite should be set to true by default
    * [THRIFT-2014] - Change C++ lib includes to use <namespace/> style throughout
    * [THRIFT-1972] - Add support for async processors
    * [THRIFT-1970] - [Graphviz] Adds option to render exceptions relationships
    * [THRIFT-1966] - Support different files for SSL certificates and keys
    * [THRIFT-1965] - Adds Graphviz (graph description language) generator
    * [THRIFT-1956] - Switch to Apache Commons Lang 3
    * [THRIFT-1962] - Multiplex processor should send any TApplicationException back to client
    * [THRIFT-1960] - main() declares 22 unused gen bools
    * [THRIFT-1951] - libthrift.jar has source files in it
    * [THRIFT-1997] - Add accept backlog configuration method to  TServerSocket
    * [THRIFT-2003] - Deprecate senum
    * [THRIFT-2052] - Vagrant machine image defaults to only 384MB of RAM
    * [THRIFT-1980] - Modernize Go tooling, fix go client libary.
    * [THRIFT-1977] - C# compiler should generate constant files prefixed with thrift file name
    * [THRIFT-1985] - add a Vagrantfile to build and test Apache Thrift fully reproducable
    * [THRIFT-1994] - Deprecate slist
    * [THRIFT-1993] - Factory to create instances from known (generated) interface types with Delphi
    * [THRIFT-2081] - Specified timeout should be used in TSocket.Open()
    * [THRIFT-2084] - Delphi: Ability to create entity Thrift-generated instances based on TypeInfo
    * [THRIFT-2083] - Improve the go lib: buffered Transport, save memory allocation, handle concurrent request
    * [THRIFT-2109] - Secure connections should be supported in Go
    * [THRIFT-2107] - minor Go generator fixes
    * [THRIFT-1695] - allow warning-free compilation in VS 2012 and GNU 4.6
    * [THRIFT-1735] - integrate tutorial into regular build
    * [THRIFT-1716] - max allowed connections should be PIPE_UNLIMITED_INSTANCES
    * [THRIFT-1715] - Allow excluding python parts when building contrib/fb303
    * [THRIFT-1733] - Fix RPM build issues on RHEL6/OL6 systems
    * [THRIFT-1728] - Upgradation of httpcomponents
    * [THRIFT-1876] - Use enum names instead of casted integers in assignments
    * [THRIFT-1874] - timeout for the server-side end of a named pipe
    * [THRIFT-1897] - Support validation of required fields
    * [THRIFT-1896] - Add TBase protocol for Cocoa
    * [THRIFT-1880] - Make named pipes server work asynchronously (overlapped) to allow for clean server stops
    * [THRIFT-1878] - Add the possibility to send custom headers
    * [THRIFT-1882] - Use single include
    * [THRIFT-1793] - C#: Use static read instead of instance read
    * [THRIFT-1799] - Option to generate HTML in "standalone mode"
    * [THRIFT-1815] - Code generators line buffer output
    * [THRIFT-1890] - C++: Make named pipes server work asynchronously
    * [THRIFT-474] - Generating Ruby on Rails friendly code

## New Feature
    * [THRIFT-801] - Provide an interactive shell (irb) when generating ruby bindings
    * [THRIFT-2292] - Android Library Project
    * [THRIFT-2012] - Modernizing Go
    * [THRIFT-1969] - C#: Tests not properly linked from the solution
    * [THRIFT-1785] - C#: Add TMemoryBuffer serializer/deserializer
    * [THRIFT-1780] - Add option to generate nullable values
    * [THRIFT-1786] - C# Union Typing
    * [THRIFT-591] - Make the C++ runtime library be compatible with Windows and Visual Studio
    * [THRIFT-514] - Add option to configure compiler output directory

## Question
    * [THRIFT-1764] - how to get the context of client when on a rpc call in server side?
    * [THRIFT-1791] - thrift's namespace directive when generating haskell code

## Sub-task
    * [THRIFT-1594] - Java test clients should have a return codes that reflect whether it succeeds or not.
    * [THRIFT-1595] - Java test server should follow the documented behavior as of THRIFT-1590
    * [THRIFT-986] - st: add version Info to the library
    * [THRIFT-985] - php: add version Info to the library
    * [THRIFT-984] - ocaml: add version Info to the library
    * [THRIFT-1924] - Delphi: Inconsistency in serialization of optional fields
    * [THRIFT-1922] - C#: Inconsistency in serialization of optional fields
    * [THRIFT-1961] - C# tests should be in lib/csharp/test/...
    * [THRIFT-1822] - PHP unit test does not work
    * [THRIFT-1902] - C++: Support for Multiplexing Services on any Transport, Protocol and Server
    * [THRIFT-1901] - C#: Support for Multiplexing Services on any Transport, Protocol and Server
    * [THRIFT-1899] - Delphi: Support for Multiplexing Services on any Transport, Protocol and Server
    * [THRIFT-563] - Support for Multiplexing Services on any Transport, Protocol and Server



Thrift 0.9
--------------------------------------------------------------------------------
## Bug
    * [THRIFT-1438] - lib/cpp/src/windows/config.h should read version from configure.ac rather than a #define
    * [THRIFT-1446] - Compile error with Delphi 2009 in constant initializer
    * [THRIFT-1450] - Problems building thrift 0.8.0 for Python and Ruby
    * [THRIFT-1449] - Ruby client does not work on solaris (?)
    * [THRIFT-1447] - NullpointerException in ProcessFunction.class :in "oneway" method
    * [THRIFT-1433] - TServerSocket fix for MSVC
    * [THRIFT-1429] - The nonblocking servers is supposed to use TransportFactory to read the data
    * [THRIFT-1427] - PHP library uses non-multibyte safe functions with mbstring function overloading
    * [THRIFT-1421] - Debian Packages can not be built
    * [THRIFT-1394] - Treatment of optional fields is not consistent between C++ and Java
    * [THRIFT-1511] - Server with oneway support ( JAVA )
    * [THRIFT-1496] - PHP compiler not namespacing enums
    * [THRIFT-1495] - PHP TestClient fatals on missing class
    * [THRIFT-1508] - TServerSocket does not allow for the user to specify the IP address to bind to
    * [THRIFT-1504] - Cocoa Generator should use local file imports for base Thrift headers
    * [THRIFT-1512] - Thrift socket support for Windows XP
    * [THRIFT-1502] - TSimpleServer::serve(): Do not print out error message if server was stopped.
    * [THRIFT-1501] - PHP old namespaces not generated for enums
    * [THRIFT-1483] - java compiler does not generate type parameters for services in extended clauses
    * [THRIFT-1479] - Compiled PHP process functions missing writeMessageEnd()
    * [THRIFT-1492] - enabling c_glib render thrift unusable (even for C++ code)
    * [THRIFT-1491] - Uninitialize processorFactory_ member in TServer.h
    * [THRIFT-1475] - Incomplete records generation for Erlang
    * [THRIFT-1486] - Javascript manual testserver not returning content types
    * [THRIFT-1488] - src/concurrency/Thread.h:91:58: error: invalid conversion from 'pthread_t {aka _opaque_pthread_t*}' to 'apache::thrift::concurrency::Thread::id_t {aka long long unsigned int}' [-fpermissive]
    * [THRIFT-1490] - Windows-specific header files - fixes & tweaks
    * [THRIFT-1526] - Union TupleSchemeFactory returns StandardSchemes
    * [THRIFT-1527] - Generated implementation of tupleReadStruct in unions return null when the setfield is unrecognized
    * [THRIFT-1524] - TNonBlockingServer does not compile in Visual Studio 2010
    * [THRIFT-1529] - TupleProtocol can unintentionally include an extra byte in bit vectors when number of optional fields is an integral of 8
    * [THRIFT-1473] - JSON context stack may be left in an incorrect state when an exception is thrown during read or write operations
    * [THRIFT-1456] - System.Net.HttpWebRequest' does not contain a definition for 'Proxy'
    * [THRIFT-1468] - Memory leak in TSaslServerTransport
    * [THRIFT-1461] - Recent TNonblockingServer changes broke --enable-boostthreads=yes, Windows
    * [THRIFT-1460] - why not add unicode strings support to python directly?
    * [THRIFT-1464] - AbstractNonblockingServer.FrameBuffer TNonblockingTransport accessor changed from public to private
    * [THRIFT-1467] - Possible AV with empty strings when using JSON protocol
    * [THRIFT-1523] - clientTimeout not worked as expected in TServerSocket created by TSSLTransportFactory
    * [THRIFT-1537] - TFramedTransport issues
    * [THRIFT-1519] - Thirft Build Failure referencing rb_intern2 symbol
    * [THRIFT-1518] - Generated C++ code only sends the first optional field in the write() function for a struct.
    * [THRIFT-1515] - NameError: global name 'TApplicationException' is not defined
    * [THRIFT-1554] - Inherited service methods are not resolved in derived service implementations
    * [THRIFT-1553] - thrift nodejs service side can't read map structure, key as enum, value as Object
    * [THRIFT-1575] - Typo in server/TThreadPoolServer.h
    * [THRIFT-1327] - Fix Spec Suite under Ruby-1.8.7 (works for MRI Ruby-1.9.2)
    * [THRIFT-1326] - on some platforms, #include <stdint.h> is necessary to be included in Thrift.h
    * [THRIFT-1159] - THttpClient->Flush() issue (connection thru proxy)
    * [THRIFT-1277] - Node.js serializes false booleans as null
    * [THRIFT-1224] - Cannot insert UTF-8 text
    * [THRIFT-1267] - Node.js can't throw exceptions.
    * [THRIFT-1338] - Do not use an unpatched autoconf 2.65 to generate release tarball
    * [THRIFT-1128] - MAC OS X: thrift.h incompatibility with Thrift.h
    * [THRIFT-1631] - Fix C++ server constructor typos
    * [THRIFT-1602] - PHP C Extension is not Compatible with PHP 5.4
    * [THRIFT-1610] - IWebProxy not available on WP7 platform
    * [THRIFT-1606] - Race condition in BoostThreadFactory.cpp
    * [THRIFT-1604] - Python exception handeling for changes from PEP 3110
    * [THRIFT-1607] - Incorrect file modes for several source files
    * [THRIFT-1583] - c_glib leaks memory
    * [THRIFT-1582] - Bad includes of nested thrift files in c_glib
    * [THRIFT-1578] - C_GLib generated code does not compile
    * [THRIFT-1597] - TJSONProtocol.php is missing from Makefile.am
    * [THRIFT-1591] - Enable TCP_NODELAY for ruby gem
    * [THRIFT-1624] - Isset Generated differently on different platforms
    * [THRIFT-1622] - Incorrect size returned on read
    * [THRIFT-1621] - Memory leaks
    * [THRIFT-1612] - Base64 encoding is broken
    * [THRIFT-1627] - compiler built using compilers.vcxproj cannot be used to build some test .thrift files
    * [THRIFT-1571] - Update Ruby HTTP transport for recent Ruby versions
    * [THRIFT-1023] - Thrift encoding  (UTF-8) issue with Ruby 1.9.2
    * [THRIFT-1090] - Document the generation of a file called "Constants.java"
    * [THRIFT-1082] - Thrift::FramedTransport sometimes calls close() on an undefined value
    * [THRIFT-956] - Python module's version meta-data should be updated
    * [THRIFT-973] - Cocoa library won't compile using clang
    * [THRIFT-1632] - ruby: data corruption in thrift_native implementation of MemoryBufferTransport
    * [THRIFT-1665] - TBinaryProtocol: exceeded message length raises generic TException
    * [THRIFT-1664] - Reference to non-existing variable in build script
    * [THRIFT-1663] - Java Thrift server is not throwing exceptions
    * [THRIFT-1662] - "removeObject:" should be "removeObserver:" in [-TSocketServer dealloc]?
    * [THRIFT-1643] - Denial of Service attack in TBinaryProtocol.readString
    * [THRIFT-1674] - Update Thrift D library to be compatible with 2.060
    * [THRIFT-1673] - Ruby compile flags for extension for multi arch builds (os x)
    * [THRIFT-1655] - Configure still trying to use thrift_generators in output
    * [THRIFT-1654] - c_glib thrift_socket_read() returns corrupted data
    * [THRIFT-1653] - TThreadedSelectorServer leaks CLOSE_WAIT sockets
    * [THRIFT-1658] - Java thrift server is not throwing TApplicationException
    * [THRIFT-1656] - Setting proper headers in THttpServer.cpp so that "Cross-Origin Resource Sharing" on js client can work.
    * [THRIFT-1652] - TSaslTransport does not log the error when kerberos auth fails
    * [THRIFT-2272] - CLONE - Denial of Service attack in TBinaryProtocol.readString
    * [THRIFT-2086] - Invalid generated code for Node.JS when using namespaces
    * [THRIFT-1686] - t_php_generator.cc uses "and" instead of "&&", and causes compiler errors with Visual Studio
    * [THRIFT-1693] - libthrift has dependency on two different versions of httpcore
    * [THRIFT-1689] - don't exit(-1) in TNonblockingServer
    * [THRIFT-1679] - NodeJS: protocol readString() should treat string as utf8, not binary
    * [THRIFT-1721] - Dist broken due to 0.8.0 to 0.9.0 changes
    * [THRIFT-1710] - Minor issues in test case code
    * [THRIFT-1709] - Warning "Bitwise-or operator used on a sign-extended operand; consider casting to a smaller unsigned type first" in TBinaryProtocol.cs at ReadInt64()
    * [THRIFT-1707] - [ruby] Adjust server_spec.rb for RSpec 2.11.x and Ruby 1.9.3
    * [THRIFT-1671] - Cocoa code generator does not put keywords into generated method calls
    * [THRIFT-1670] - Incompatibilities between different versions of a Thrift interface
    * [THRIFT-1669] - NameError: global name 'TApplicationException' is not defined
    * [THRIFT-1668] - Compile error in contrib/fb303, thrift/TDispatchProcessor.h: No such file or directory
    * [THRIFT-1845] - Fix compiler warning caused by implicit string conversion with Xcode 4.6
    * [THRIFT-304] - Building the Python library requires development headers
    * [THRIFT-369] - sets and maps break equality
    * [THRIFT-556] - Ruby compiler does not correctly referred to top-level modules when a submodule masks the top-level name
    * [THRIFT-481] - indentation of ruby classes is off by a few

## Improvement
    * [THRIFT-1498] - Allow TThreadedPoolServer.Args to pass a ExecutorService
    * [THRIFT-1444] - FunctionRunner - add syntactic sugar to create shared_ptrs
    * [THRIFT-1443] - define a TProcessor helper class to implement process()
    * [THRIFT-1441] - Generate constructor with parameters for exception class to let it update message property automatically.
    * [THRIFT-1520] - Embed version number in erlang .app file
    * [THRIFT-1480] - python: remove tabs, adjust whitespace and address PEP8 warnings
    * [THRIFT-1485] - Performance: pass large and/or refcounted arguments as "const"
    * [THRIFT-1484] - Introduce phpunit test suite
    * [THRIFT-1532] - The type specifications in the generated Erlang code should include "undefined" where it's used as a default value
    * [THRIFT-1534] - Required fields in the Delphi code generator.
    * [THRIFT-1469] - Java isset space optimization
    * [THRIFT-1465] - Visibility of methods in generated java code
    * [THRIFT-1453] - Don't change types of arguments when serializing with thrift php extension
    * [THRIFT-1452] - generate a swap() method for all generated structs
    * [THRIFT-1451] - FramedTransport: Prevent infinite loop when writing
    * [THRIFT-1521] - Two patches for more Performance
    * [THRIFT-1555] - Delphi version of the tutorial code
    * [THRIFT-1535] - Why thrift don't use wrapped class for optional fields ?
    * [THRIFT-1204] - Ruby autogenerated files should require 'thrift' gem
    * [THRIFT-1344] - Using the httpc module directly rather than the deprecated http layer
    * [THRIFT-1343] - no_auto_import min/2 to avoid compile warning
    * [THRIFT-1340] - Add support of ARC to Objective-C
    * [THRIFT-1611] - Improved code generation for typedefs
    * [THRIFT-1593] - Pass on errors like "connection closed" to the handler module
    * [THRIFT-1615] - PHP Namespace
    * [THRIFT-1567] - Thrift/cpp: Allow alternate classes to be used for
    * [THRIFT-1072] - Missing - (id) initWithSharedProcessor in TSharedProcessorFactory.h
    * [THRIFT-1650] - [ruby] Update clean items and svn:ignore entries for OS X artifacts
    * [THRIFT-1661] - [PATCH] Add --with-qt4 configure option
    * [THRIFT-1675] - Do we have any plan to support scala?
    * [THRIFT-1645] - Replace Object#tee with more conventional Object#tap in specs
    * [THRIFT-1644] - Upgrade RSpec to 2.10.x and refactor specs as needed
    * [THRIFT-1672] - MonoTouch (and Mono for Android) compatibility
    * [THRIFT-1702] - a thrift manual
    * [THRIFT-1694] - Re-Enable serialization for WP7 Silverlight
    * [THRIFT-1691] - Serializer/deserializer support for Delphi
    * [THRIFT-1688] - Update IDL page markup
    * [THRIFT-1725] - Tutorial web pages for Delphi and C#
    * [THRIFT-1714] - [ruby] Explicitly add CWD to Ruby test_suites.rb
    * [THRIFT-317] - Issues with Java struct validation
    * [THRIFT-164] - Build web tutorial on Incubator web site
    * [THRIFT-541] - Cocoa code generator doesn't put keywords before all arguments.
    * [THRIFT-681] - The HTML generator does not handle JavaDoc style comments very well

## New Feature
    * [THRIFT-1500] - D programming language support
    * [THRIFT-1510] - There should be an implementation of the JsonProtocol for ruby
    * [THRIFT-1115] - python TBase class for dynamic (de)serialization, and __slots__ option for memory savings
    * [THRIFT-1953] - support for asp.net mvc 3

## Question
    * [THRIFT-1235] - How could I use THttpServerTransportFactory withTNonBlockingServer
    * [THRIFT-1368] - TNonblockingServer usage
    * [THRIFT-1061] - Read an invalid frame size of 0. Are you using TFramedTransport on the client side?
    * [THRIFT-491] - Ripping raw pthreads out of TFileTransport and associated test issues

## Sub-task
    * [THRIFT-1596] - Delphi: Test clients should have a return codes that reflect whether they succeeded or not
    * [THRIFT-982] - javame: add version Info to the library
    * [THRIFT-1722] - C# WP7 Assembly addition beaks mono build
    * [THRIFT-336] - Compact Protocol in C#

## Test
    * [THRIFT-1613] - Add code back into empty source file ToStringTest.java
    * [THRIFT-1718] - Incorrect check in TFileTransportTest

## Wish
    * [THRIFT-1463] - Decouple Thrift IDL from generators
    * [THRIFT-1466] - Proper Documentation for Thrift C Glib
    * [THRIFT-1539] - Build and distribute the fb303 python libraries along with thrift
    * [THRIFT-1685] - Please add "aereo.com" to "Powered by Apache Thrift" list in about page
    * [THRIFT-330] - TProcessor - additional method to called when connection is broken



Thrift 0.8
--------------------------------------------------------------------------------
## Bug
    * [THRIFT-1436] - pip install thrift fails on Windows with "Unable to find vcvarsall.bat"
    * [THRIFT-1432] - Javascript struct constants declared in the same file as their struct definition will cause an error
    * [THRIFT-1428] - shared.thrft does not include namespace for php, so thrift compiler generate incorrect name
    * [THRIFT-1426] - Dist package missing files for release 0.8
    * [THRIFT-1425] - The Node package is incompatible with latest node (0.6) & npm (1.0.27)
    * [THRIFT-1416] - Python Unit test is broken on ci
    * [THRIFT-1419] - AbstractNonBlockingServer does not catch errors when invoking the processor
    * [THRIFT-1424] - Ruby specs fail when run with rake
    * [THRIFT-1420] - Nonblocking and HsHa server should make sure to close all their socket connections when the selector exits
    * [THRIFT-1413] - Generated code does not read MapEnd / ListEnd / SetEnd
    * [THRIFT-1409] - Name conflict check does not work properly for exception object(Delphi).
    * [THRIFT-1408] - Delphi Test Server: Exception test case fails due to naming conflict with e.message
    * [THRIFT-1407] - Typo in Python socket server causes Thrift to fail when we enable a global socket timout
    * [THRIFT-1397] - CI server fails during build due to unused parameters in delphi generator
    * [THRIFT-1404] - Delphi compiler generates struct reader code with problem.
    * [THRIFT-1400] - Ruby native extension aborts with __stack_chk_fail in OSX
    * [THRIFT-1399] - One of the TServerImpl.Create CTORs lacks implementation
    * [THRIFT-1390] - Debian packages build fix for Squeeze (build from the official  0.7.0 tarball)
    * [THRIFT-1393] - TTransportException's thrown from THttpClient contain superfluous slashes in the Exception message
    * [THRIFT-1392] - Enabling both namespaces and autoloading in generated PHP code won't work.
    * [THRIFT-1406] - Build error after applying THRIFT-1395
    * [THRIFT-1405] - Delphi compiler does not generates container serializer properly.
    * [THRIFT-1411] - java generator does not provide type parameter for TBaseProcessor
    * [THRIFT-1473] - JSON context stack may be left in an incorrect state when an exception is thrown during read or write operations
    * [THRIFT-1331] - Ruby library deserializes an empty map to nil
    * [THRIFT-1330] - PHP Namespaces no longer generated
    * [THRIFT-1328] - TBaseHelper.toString(...) appends ByteBuffer data outside of valid buffer range
    * [THRIFT-1322] - OCaml lib fail to compile: Thrift.ml line 305, int vs int32 mismatch
    * [THRIFT-1143] - Build doesn't detect correct architecture type on 64bit osx
    * [THRIFT-1205] - port server unduly fragile with arbitrary input
    * [THRIFT-1279] - type set is handled incorrectly when writing object
    * [THRIFT-1298] - Standard scheme doesn't read or write metadata along with field values
    * [THRIFT-1265] - C++ container deserialize
    * [THRIFT-1263] - publish ruby client to rubygems
    * [THRIFT-1384] - Java help menu missing newline near javame flag
    * [THRIFT-1382] - Bundle install doesnot work because thrift crashes
    * [THRIFT-1381] - Thrift C++ libs have incorrectly versioned names
    * [THRIFT-1350] - Go library code does not build as of r60 (most recent release)
    * [THRIFT-1365] - TupleProtocol#writeBitSet unintentionally writes a variable length byte array
    * [THRIFT-1359] - --gen-cob cpp:cob_style does not compile anymore
    * [THRIFT-1319] - Mismatch between how a union reads and writes a container
    * [THRIFT-1309] - libfb303-0.7.0.jar missing in maven repository
    * [THRIFT-1238] - Thrift JS client cannot read map of structures
    * [THRIFT-1254] - Code can't be compiled against a regular JRE: Object.clone() override has a different return type
    * [THRIFT-1367] - Mac OSX build fails with "no such file to load -- spec/rake/spectask"
    * [THRIFT-1355] - Running make in lib/rb doesn't build the native extensions
    * [THRIFT-1370] - Debian packaging should Build-Depend on libglib2.0-dev
    * [THRIFT-1342] - Compilation problem on Windows of fastbinary.c
    * [THRIFT-1341] - TProtocol.h endian detection wrong with boost
    * [THRIFT-1583] - c_glib leaks memory
    * [THRIFT-1582] - Bad includes of nested thrift files in c_glib
    * [THRIFT-1578] - C_GLib generated code does not compile
    * [THRIFT-1027] - 'make -j 16' fails with "unterminated #ifdef" error
    * [THRIFT-1121] - Java server performance regression in 0.6
    * [THRIFT-857] - tests run by "make install" fail if generators are disabled
    * [THRIFT-380] - Use setuptools for python build

## Dependency upgrade
    * [THRIFT-1257] - thrift's dependency scope on javax.servlet:servlet-api should be 'provided'

## Improvement
    * [THRIFT-1445] - minor C++ generator variable cleanup
    * [THRIFT-1435] - make TException.Message property conformant to the usual expectations
    * [THRIFT-1431] - Rename 'sys' module to 'util'
    * [THRIFT-1396] - Dephi generator has dependacy on boost 1.42 later.
    * [THRIFT-1395] - Patch to prevent warnings for integer types in some cases
    * [THRIFT-1275] -  thrift: always prefix namespaces with " ::"
    * [THRIFT-1274] -  thrift: fail compilation if an unexpected token is
    * [THRIFT-1271] -  thrift: fix missing namespace in generated local
    * [THRIFT-1270] -  thrift: add --allow-neg-keys argument to allow
    * [THRIFT-1345] - Allow building without tests
    * [THRIFT-1286] - Modernize the Thrift Ruby Library Dev Environment
    * [THRIFT-1284] -  thrift: fix processor inheritance
    * [THRIFT-1283] -  thrift: wrap t_cpp_generator::generate_process_function() to 80
    * [THRIFT-1282] - Upgrade httpclient to 4.1.2 (from 4.0.1)
    * [THRIFT-1281] -  add @generated to the docblock
    * [THRIFT-1280] -  Thrift: Improve Monitor exception-free interfaces
    * [THRIFT-1278] - javadoc warnings - compilation
    * [THRIFT-1227] - Erlang implementation of thrift JSON protocol
    * [THRIFT-1295] - Duplicate include in TSocket.cpp
    * [THRIFT-1294] -  thrift: fix log message typos in TSimpleServer
    * [THRIFT-1293] -  thrift: improve handling of exceptions thrown by
    * [THRIFT-1292] -  thrift: silence log spew from TThreadedServer
    * [THRIFT-1288] -  Allow typedefed exceptions in throws clauses
    * [THRIFT-1290] -  thrift: TNonblockingServer: clean up state in the
    * [THRIFT-1287] -  thrift: start refactoring some of the C++ processor
    * [THRIFT-1289] -  thrift: implement TNonblockingServer::stop()
    * [THRIFT-1305] -  thrift: make TConnection a private inner class of
    * [THRIFT-1304] -  TNonblockingServer: pass in the connection context to
    * [THRIFT-1302] -  thrift: raise an exception if send() times out in
    * [THRIFT-1301] -  thrift: consolidate common code in TNonblockingServer
    * [THRIFT-1377] - abort PHP deserialization on unknown field type
    * [THRIFT-1379] - fix uninitialized enum values in thrift C++ objects
    * [THRIFT-1376] - Make port specification option in thrift remote
    * [THRIFT-1375] - fixed a hex char conversion bug in TJSONProtocol
    * [THRIFT-1373] - Fix user-defined exception generation in thrift (python)
    * [THRIFT-1361] - Optional replacement of pthread by boost::thread
    * [THRIFT-1320] - Consistency of configure generated config.h
    * [THRIFT-1317] -  Remove copy constructibility from
    * [THRIFT-1316] -  thrift: update server classes to accept
    * [THRIFT-1315] -  thrift: generate server interface factory classes
    * [THRIFT-1314] -  thrift: add TProcessorFactory
    * [THRIFT-1335] -  Add accept timeout to TServerSocket
    * [THRIFT-1334] -  Add more info to IllegalStateException
    * [THRIFT-1333] -  Make RWGuard not copyable
    * [THRIFT-1332] - TSSLTransportParameters class uses hard coded value keyManagerType: SunX509
    * [THRIFT-1251] - Generated java code should indicate which fields are required and which are optional
    * [THRIFT-1387] - Build MSVC libraries with Boost Threads instead of Pthreads
    * [THRIFT-1339] - Extend Tuple Protocol to TUnions
    * [THRIFT-1031] - Patch to compile Thrift for vc++ 9.0 and 10.0
    * [THRIFT-1130] - Add the ability to specify symbolic default value for optional boolean
    * [THRIFT-1123] - Patch to compile Thrift server and client for vc++ 9.0 and 10.0
    * [THRIFT-386] - Make it possible to build the Python library without the extension

## New Feature
    * [THRIFT-1401] - JSON-protocol for Delphi XE Libraries
    * [THRIFT-1167] - Java nonblocking server with more than one thread for select and handling IO
    * [THRIFT-1366] - Delphi generator, lirbrary and unit test.
    * [THRIFT-1354] - Add rake task to build just the gem file
    * [THRIFT-769] - Pluggable Serializers

## Sub-task
    * [THRIFT-1415] - delphi: add version Info to the library
    * [THRIFT-1391] - Improved Delphi XE test cases



Thrift 0.7
--------------------------------------------------------------------------------
## Bug
    * [THRIFT-1140] - Framed Transport Client using C (Glib) Library hangs when connecting to Ruby Server
    * [THRIFT-1154] - HttpClient does not specify the connection close parameter
    * [THRIFT-1153] - HttpClient does not specify the connection close parameter
    * [THRIFT-1149] - Nonblocking server fails when client connection is reset
    * [THRIFT-1146] - Android Incompatibility : in Android < 2.3 java.io.IOException doesn't support for Throwable parameter in constructor
    * [THRIFT-1133] - Java and JavaScript tutorial is broken since we have Java maven deployment
    * [THRIFT-1132] - Deserialization error in TApplicationException C#
    * [THRIFT-1131] - C# JSON Protocol is unable to decode escaped characters in string
    * [THRIFT-1208] - python TCompactProtocol.py writeBool and readBool not follow the compact-proto-spec-2.txt spec for CONTAINER_WRITE, CONTAINER_READ
    * [THRIFT-1200] - JS compiler generates code that clobbers existing namespaces
    * [THRIFT-1183] - Pure-ruby CompactProtocol raises ArgumentError when deserializing under Ruby 1.9
    * [THRIFT-1182] - Native deserializer segfaults on incorrect list element type
    * [THRIFT-1181] - AS3 compiler generates incorrect code for setting default values in constructor
    * [THRIFT-1234] - thrift --help is missing doc on py:utf8strings
    * [THRIFT-1180] - AS3 compiler generates uncompilable code for binary types.
    * [THRIFT-1194] - Java lib does not install artifacts to local dir correctly
    * [THRIFT-1193] - Potential infinite loop in nonblocking_server
    * [THRIFT-1192] - Typo: TProtocol.h tests for HAVE_SYS_PARAM_H_
    * [THRIFT-1190] - readBufferBytesAllocated in TNonblockingServer.java should be AtomicLong to fix FD leakage and general server malfunction
    * [THRIFT-1187] - nonblocking_server shutdown race under Ruby 1.9
    * [THRIFT-1178] - Java: TBase signature should be T extends TBase<?,?>
    * [THRIFT-1164] - Segmentation fault on NULL pointer in t_js_generator::generate_const
    * [THRIFT-1171] - Perl write/readDouble assumes little-endian platform
    * [THRIFT-1222] - Unhandled exception for TEvhttpServer request
    * [THRIFT-1220] - TProcessor::process never returns false
    * [THRIFT-1285] - Stable 0.7.0 Windows compiler exe available on the webside is not the good one
    * [THRIFT-1218] - c_glib uses wrong name in pkg-config
    * [THRIFT-1215] - Undefined property Thirft in lib/js/thrift.js
    * [THRIFT-1211] - When using THttpClient, non 200 responses leave the connection open
    * [THRIFT-1228] - The php accelerator module calls flush incorrectly
    * [THRIFT-1308] - libfb303-0.7.0.jar missing in maven repository
    * [THRIFT-1255] - Mismatch of method name between JavaME's lib and generated code (compareTo/compareObjects)
    * [THRIFT-1253] - Code generated for maps is not compiling
    * [THRIFT-1252] - Segfault in Ruby deserializer
    * [THRIFT-1094] - bug in TCompactProto python readMessageEnd method and updated test cases
    * [THRIFT-1093] - several bugs in python TCompactProtocol
    * [THRIFT-1092] - generated validate() method has wrong indentation
    * [THRIFT-1011] - Error generating package imports when using classes from other packages
    * [THRIFT-1050] - Declaring an argument named "manager" to a service method produces code that fails compile due to name conflicts with protected ivars in TAsyncClient
    * [THRIFT-1074] - .keystore and .truststore are missing from the 0.6.0 distribution
    * [THRIFT-1067] - Tons of bugs in php implementation
    * [THRIFT-1065] - Unexpected exceptions not proper handled on JS
    * [THRIFT-1076] - Erlang Thrift socket server has a bug that causes java thrift client of framed binary client to throw "out of sequence" exception
    * [THRIFT-1057] - casts in TBinaryProtocol.tcc causing "dereferencing type-punned pointer will break strict-aliasing rules" warnings from gcc
    * [THRIFT-1055] - csharp TServerSocket and TSocket do not disable Nagle via Socket.NoDelay = true like cpp and java do
    * [THRIFT-1054] - explicit call to PKG_PROG_PKG_CONFIG is missing and first use of PKG_CHECK_MODULES may not happen, causes mono detection to fail
    * [THRIFT-1117] - JavaScript Unit Test does not work anymore because libthrift*.jar where moved by Maven Deployment
    * [THRIFT-1111] - The HTML generator does not distinguish between string and binary types
    * [THRIFT-1032] - "make dist" fails due to c_glib problem
    * [THRIFT-1036] - Auto-generated C++ code fails to compile with "-Werror -Wextra -Wall" g++ compiler flags
    * [THRIFT-1041] - TDeserializer holds onto a reference of the array it reads after it is done deserializing
    * [THRIFT-1106] - C++ code TAsyncProtocolProcessor.h & TAsyncBufferProcessor.h dont have virtual functions but no virtual destructor. Causes warnings on -Wall
    * [THRIFT-1105] - OCaml generator does not prefix methods of included structs with their type
    * [THRIFT-1104] - INSTALLDIRS should be included in configure script
    * [THRIFT-1102] - typo in configure.ac: "==" operator in 'test' (instead of"'=")
    * [THRIFT-1101] - bytebuffer length calculation in TBinaryProtocol writeBinary
    * [THRIFT-1098] - Undefined properties in TBinaryProtocolFactory
    * [THRIFT-1081] - PHP tests broken and somewhat incomplete
    * [THRIFT-1080] - erlang test's 'make' fails on Mac OSX
    * [THRIFT-1078] - ThriftTest.thrift generates invalid PHP library
    * [THRIFT-1120] - proto.WriteListEnd being called in the wrong place
    * [THRIFT-1119] - TJSONProtocol fails to UTF8 decode strings
    * [THRIFT-867] - PHP accelerator module's output transport is incompatible with TFramedTransport
    * [THRIFT-826] - PHP TSocket Write Timeout
    * [THRIFT-835] - Bad AS3 syntax in constructors that set default values
    * [THRIFT-788] - thrift_protocol.so: multiget/multiget_slice does not handle more than 17 keys correctly
    * [THRIFT-125] - OCaml libraries don't compile with 32-bit ocaml
    * [THRIFT-342] - PHP: can't have sets of complex types
    * [THRIFT-731] - configure doesn't check for ant >= 1.7
    * [THRIFT-690] - Update TApplicationException codes
    * [THRIFT-638] - BufferedTransport + C extensions block until recv timeout is reached on last fread call

## Dependency upgrade
    * [THRIFT-1177] - Update thrift to reflect changes in Go's networking libraries

## Improvement
    * [THRIFT-1155] - Remove log4j dependency from java client
    * [THRIFT-1151] - Produce more informative runtime error in case of schema and data mismatch during serialization
    * [THRIFT-1207] - Support DESTDIR on "make install" of ruby libs
    * [THRIFT-1199] - Union structs should have generated methods to test whether a specific field is currently set
    * [THRIFT-1233] - Remove unused include in generated C++ code
    * [THRIFT-1189] - Ruby deserializer speed improvements
    * [THRIFT-1170] - Thrift Generated Code and Java 5
    * [THRIFT-1174] - Publish as3 client implementation via Maven for use by flex-mojos users
    * [THRIFT-1225] - TCompactProtocol for PHP
    * [THRIFT-1221] - Remove SimpleCallback.h
    * [THRIFT-1217] - Use evutil_socketpair instead of pipe (Windows port)
    * [THRIFT-1216] - build Java Library behind a proxy
    * [THRIFT-1231] - Remove bogus include
    * [THRIFT-1213] - Membuffer should provide a way to get back the buffer
    * [THRIFT-1237] - Java fb303 missing some methods
    * [THRIFT-1063] - Fix Erlang Tutorial Files
    * [THRIFT-1053] - Make remote client's IP address available for all socket related transports
    * [THRIFT-1109] - Deploy fb303 along side libthrift to maven repo
    * [THRIFT-1107] - improvement for compiler-generated python for 'None' object comparisons
    * [THRIFT-1069] - Add command line option to prevent thrift from inserting gen-* directories
    * [THRIFT-1049] - Allow for TServerSocket python library to bind to a specific host
    * [THRIFT-1126] - Extending struct_info for erlang bindings
    * [THRIFT-1100] - python TSSLSocket improvements, including certificate validation
    * [THRIFT-994] - Don't try to invoke phpize if we don't have it
    * [THRIFT-993] - Some improvements in C++ stubs for oneway operations
    * [THRIFT-997] - Using valueOf for base types in getFieldValue
    * [THRIFT-418] - Don't do runtime sorting of struct fields
    * [THRIFT-151] - TSSLServerSocket and TSSLSocket implementation
    * [THRIFT-27] - Generated erlang types don't contain default values for records
    * [THRIFT-113] - to-string methods should omit optional null fields from output
    * [THRIFT-363] - Maven Deploy
    * [THRIFT-447] - Make an abstract base Client class so we can generate less code
    * [THRIFT-627] - should c++ have setters for optional fields?

## New Feature
    * [THRIFT-1236] - Erlang Reconnecting Thrift Client
    * [THRIFT-1021] - Framed transport support for OCaml
    * [THRIFT-1068] - Python SSL Socket Support
    * [THRIFT-1103] - TZlibTransport for python, a zlib compressed transport
    * [THRIFT-1083] - Preforking python process pool server
    * [THRIFT-999] - Add TForkingServer

## Sub-task
    * [THRIFT-1152] - Attributes from private to protected
    * [THRIFT-1038] - Generated Java code for structures containing binary fields (or collections thereof) are not serializable (in the Java sense) even though they implement java.io.Serializable

## Task
    * [THRIFT-892] - Refactor erlang build system with rebar

## Wish
    * [THRIFT-625] - Add support for 'Go'



Thrift 0.6.1
--------------------------------------------------------------------------------
## Bug
    * [THRIFT-1133] - Java and JavaScript tutorial is broken since we have Java maven deployment
    * [THRIFT-1131] - C# JSON Protocol is unable to decode escaped characters in string
    * [THRIFT-1074] - .keystore and .truststore are missing from the 0.6.0 distribution

## Improvement
    * [THRIFT-1109] - Deploy fb303 along side libthrift to maven repo
    * [THRIFT-363] - Maven Deploy

## Question
    * [THRIFT-1206] - did the THRIFT 0.6.1 merge THRIFT-563 ?

## Sub-task
    * [THRIFT-1163] - How can i use multi service in one program?

## Task
    * [THRIFT-1112] - Apply THRIFT-363 to 0.6 branch
    * [THRIFT-1113] - Apply THRIFT-1074 to 0.6 branch



Thrift 0.6
--------------------------------------------------------------------------------
## Bug
    * [THRIFT-1020] - OCaml compiler generates invalid OCaml
    * [THRIFT-1015] - TUnion does not handle ByteBuffer in toString
    * [THRIFT-1013] - generated java code may have name clashes with thrift library
    * [THRIFT-1009] - TUnion does not correctly deep copy a ByteBuffer
    * [THRIFT-1032] - "make dist" fails due to c_glib problem
    * [THRIFT-868] - Referencing constant values doesn't work with with typedef types
    * [THRIFT-971] - java module can't be compiled without ivy and network connection
    * [THRIFT-970] - Under heavy load, THttpClient may fail with "too many open files"
    * [THRIFT-969] - Java Tutorial broken, move CalculatorHandler to a separate file
    * [THRIFT-807] - JavaScript: Initialization of Base Types with 0 instead of null
    * [THRIFT-955] - Thrift compiler for Windows uses lowercase names and directories which is inconsistent with compiling on other platforms
    * [THRIFT-992] - Naming convention in C# constructor is not consistent with other fields causes compile errors
    * [THRIFT-1008] - byte[] accessors throw NPE on unset field
    * [THRIFT-1006] - Impossible to correctly qualify an enum constant in an external thrift file
    * [THRIFT-950] - Haskell bindings treat 'byte' as unsigned 8-bit int (Data.Word.Word8), java/cpp as signed (byte/int8_t).
    * [THRIFT-975] - lib/c_glib/README is missing => breaks make dist
    * [THRIFT-944] - Support all version-4s of base
    * [THRIFT-939] - optional binary fields throw NPE on default byte[] getters
    * [THRIFT-935] - PHP Extension aborts the build if php-config is not installed
    * [THRIFT-933] - Haskell's Thrift.cabal has warnings
    * [THRIFT-932] - Haskell tests need to be run through 'make check' (and probably 'cabal check') too
    * [THRIFT-904] - C# TSocket should disable nagle and linger
    * [THRIFT-941] - Make PHP C Extension use the defined Protocol writeMessageBegin function
    * [THRIFT-940] - 'make check' fails if boost is not in the std include and link paths
    * [THRIFT-924] - Fix generated php structure constants
    * [THRIFT-979] - ruby bindings used to work on jruby
    * [THRIFT-977] - Hex Conversion Bug in C++ TJSONProtocol
    * [THRIFT-347] - PHP TSocket Timeout Issues
    * [THRIFT-517] - TExceptions thrown by server result in cryptic error message on client - Tried to read 4 bytes, but only got 0 bytes

## Improvement
    * [THRIFT-1024] - Add Python Twisted example to the Tutorial
    * [THRIFT-958] - Change accessmodifer on trans_ field in the FrameBuffer class to public.
    * [THRIFT-957] - THsHaServer: Change access modifier of the invoker field.
    * [THRIFT-1002] - CodeStyle: t_c_glib_generator.cc
    * [THRIFT-1005] - Give unions byte[] signature methods to go along with their ByteBuffer counterparts
    * [THRIFT-951] - Add a new isServing() method to TServer
    * [THRIFT-943] - Silly readme typo fix.
    * [THRIFT-961] - JavaScript TestSuite using ant/ivy and Java's ServerTestBase Handler
    * [THRIFT-960] - add TestServer, TestNonblockingServer and TestClient again
    * [THRIFT-949] - Modify the TEnum interface so it defines a method similar to findByValue
    * [THRIFT-946] - Augment FieldValueMetaData so it differentiates 'string' and 'binary' fields.
    * [THRIFT-903] - custom ThreadFactory in THsHaServer
    * [THRIFT-913] - Test Case for Url encoded strings + simple enhancement to lib/js/test/RunTestServer.sh
    * [THRIFT-926] - Miscellaneous C++ improvements
    * [THRIFT-929] - Improvements to the C++ test suite
    * [THRIFT-893] - add JavaScript to the tutorial examples
    * [THRIFT-1003] - Polishing c_glib code
    * [THRIFT-71] - Debian packaging for thrift

## New Feature
    * [THRIFT-1033] - Node.js language target
    * [THRIFT-947] - Provide a helper method to determine the TProtocol used to serialize some data.
    * [THRIFT-928] - Make more statistics available in C++ servers
    * [THRIFT-922] - Templatized [de]serialization code for C++
    * [THRIFT-923] - Event-driven client and server support for C++
    * [THRIFT-925] - Provide name<->value map for enums in C++
    * [THRIFT-927] - Add option to modify the PHP include path
    * [THRIFT-377] - TFileTransport port in Java
    * [THRIFT-106] - TSSLServerSocket
    * [THRIFT-582] - C implementation of Thrift
    * [THRIFT-745] - Make it easier to instantiate servers

## Sub-task
    * [THRIFT-1038] - Generated Java code for structures containing binary fields (or collections thereof) are not serializable (in the Java sense) even though they implement java.io.Serializable

## Task
    * [THRIFT-862] - Async client issues / improvements

## Test
    * [THRIFT-581] - Add a testsuite for txThrift (Twisted)



Thrift 0.5.0 - Incubating
--------------------------------------------------------------------------------
THRIFT-505   Build                Make configure give a summary of the enabled components (David Reiss)
THRIFT-506   Build                Allow Thrift to be built without the C++ library (David Reiss)
THRIFT-844   Build                Build Requirements state autoconf 2.59+ is required, but 2.60+ is needed (Harlan Lieberman-Berg)
THRIFT-850   Build                Perl runtime requires Bit::Vector which may not be installed by default, but configure does not fail (Michael Lum)
THRIFT-854   Build                Provide configure option and make rules to build/install php extension (Anthony Molinaro)
THRIFT-858   Build                Have bootstrap.sh check for a suitable autoconf version before running (David Reiss)
THRIFT-871   Build                Thrift compiler for WIndows (binary distribution) (David Reiss)
THRIFT-323   C#                   TJSONProtocol (Roger Meier)
THRIFT-634   C#                   C# Compiler Generates Incorrect Code For Fields which begin with an uppercase letter (Jon S Akhtar)
THRIFT-881   C#                   add csharp to the tutorial (Roger Meier)
THRIFT-856   C++                  Building cpp library fails on OS X with malloc and free not being declared in scope (James Clarke)
THRIFT-865   C++                  C++ compiler build depends on libfl even when flex/lex not detected (David Reiss)
THRIFT-900   C++                  Unix domain socket (Roger Meier)
THRIFT-920   C++                  C++ Test and Tutorial does not compile anymore due to the change within Enum handling (Roger Meier)
THRIFT-567   C++                  Can't immediately stop a TSimpleServer thread that is idle (Rush Manbert)
THRIFT-756   C++                  Exposing TSocket(int) constructor to public (Rajat Goel)
THRIFT-798   C++                  TNonblockingServer leaks resources when destroyed (David Reiss)
THRIFT-812   C++, Python          Demo of Thrift over ZeroMQ (David Reiss)
THRIFT-629   Cocoa                Unused Field In TSocketServer Appears To Break iPhone Build (Jon S Akhtar)
THRIFT-838   Cocoa                Generated Cocoa classes have useless @dynamic declarations (Kevin Ballard)
THRIFT-805   Cocoa                Don't generate process_XXXX methods for oneway methods (Brad Taylor)
THRIFT-507   Compiler             Remove the compiler's dependency on Boost (David Reiss)
THRIFT-895   Compiler (General)   Thrift compiler does not allow two different enumerations to have the same key name for one of the enum values (David Reiss)
THRIFT-852   Compiler (General)   Missing newline causes many compiler warnings (Anthony Molinaro)
THRIFT-877   Compiler (General)   smalltalk namespace doesn't work (Bruce Lowekamp)
THRIFT-897   Compiler (General)   Don't allow unqualified constant access to enum values (Bryan Duxbury)
THRIFT-9     Compiler (General)   Add a default namespace declaration for all languages (David Reiss)
THRIFT-599   Erlang               Don't use unnecessary processes in the Erlang transports and clients (David Reiss)
THRIFT-646   Erlang               Erlang library is missing install target (David Reiss)
THRIFT-698   Erlang               Generated module list should contain atoms, not strings (Anthony Molinaro)
THRIFT-866   Erlang               term() in spec definitions seems to not work in erlang R12 (Anthony Molinaro)
THRIFT-886   Erlang               Dialyzer warning (Anthony Molinaro)
THRIFT-785   Erlang               Framed transport server problems (Anthony Molinaro)
THRIFT-884   HTML                 HTML Generator: add Key attribute to the Data Types Tables (Roger Meier)
THRIFT-652   Haskell              Generated field name for strut is not capitalized correctly (Christian Lavoie)
THRIFT-743   Haskell              compile error with GHC 6.12.1 (Christian Lavoie)
THRIFT-901   Haskell              Allow the bindings to compile without -fglasgow-exts and with -Wall -Werror (Christian Lavoie)
THRIFT-905   Haskell              Make haskell thrift bindings use automake to compile and install (Christian Lavoie)
THRIFT-906   Haskell              Improve type mappings (Christian Lavoie)
THRIFT-914   Haskell              Make haskell bindings 'easily' compilable (Christian Lavoie)
THRIFT-918   Haskell              Make haskell tests run again (Christian Lavoie)
THRIFT-919   Haskell              Update Haskell bindings README (Christian Lavoie)
THRIFT-787   Haskell              Enums are not read correctly (Christian Lavoie)
THRIFT-250   Java                 ExecutorService as a constructor parameter for TServer (Ed Ceaser)
THRIFT-693   Java                 Thrift compiler generated java code that throws compiler warnings about deprecated methods. (Bryan Duxbury)
THRIFT-843   Java                 TNonblockingSocket connects without a timeout (Bryan Duxbury)
THRIFT-845   Java                 async client does not respect timeout (Ning Liang)
THRIFT-870   Java                 Java constants don't get Javadoc comments (Bryan Duxbury)
THRIFT-873   Java                 Java tests fail due to Too many open files (Todd Lipcon)
THRIFT-876   Java                 Add SASL support (Aaron T. Myers)
THRIFT-879   Java                 Remove @Override from TUnion.clear (Dave Engberg)
THRIFT-882   Java                 deep copy of binary fields does not copy ByteBuffer characteristics (arrayOffset, position) (Bryan Duxbury)
THRIFT-888   Java                 async client should also have nonblocking connect (Eric Jensen)
THRIFT-890   Java                 Java tutorial doesn't work (Todd Lipcon)
THRIFT-894   Java                 Make default accessors for binary fields return byte[]; provide new accessors to get ByteBuffer version (Bryan Duxbury)
THRIFT-896   Java                 TNonblockingSocket.isOpen() returns true even after close() (Eric Jensen)
THRIFT-907   Java                 libfb303 doesn't compile in 0.4.0 (Todd Lipcon)
THRIFT-912   Java                 Improvements and bug fixes to SASL implementation (Todd Lipcon)
THRIFT-917   Java                 THsHaServer should not accept an ExecutorService without catching RejectedExecutionException (Ed Ceaser)
THRIFT-931   Java                 Use log4j for Java tests (Todd Lipcon)
THRIFT-880   JavaME               JavaME code generator and runtime library (Dave Engberg)
THRIFT-846   JavaScript           JavaScript Test Framwork: extended Testcases (Roger Meier)
THRIFT-885   JavaScript           Url encoded strings never get decoded? How do we fix this? (T Jake Luciani)
THRIFT-911   JavaScript           (JavaScript compiler) Const structs, maps, sets, and lists generate a trailing comma (T Jake Luciani)
THRIFT-860   OCaml                copy method and reset method (Lev Walkin)
THRIFT-682   PHP                  PHP extension doesn't compile on Mac OS X (Bryan Duxbury)
THRIFT-851   PHP                  php extension fails to compile on centos 5.x (Todd Lipcon)
THRIFT-840   Perl                 Perl protocol handler could be more robust against unrecognised types (Conrad Hughes)
THRIFT-758   Perl                 incorrect deference in exception handling (Yann Kerherve)
THRIFT-257   Python               Support validation of required fields (Esteve Fernandez)
THRIFT-335   Python               Compact Protocol for Python (David Reiss)
THRIFT-596   Python               Make Python's TBufferedTransport use a configurable input buffer (David Reiss)
THRIFT-597   Python               Python THttpServer performance improvements (David Reiss)
THRIFT-598   Python               Allow Python's threading servers to use daemon threads (David Reiss)
THRIFT-666   Python               Allow the handler to override HTTP responses in THttpServer (David Reiss)
THRIFT-673   Python               Generated Python code has whitespace issues (Ian Eure)
THRIFT-721   Python               THttpClient ignores url parameters (Thomas Kho)
THRIFT-824   Python               TApplicationException.__str__() refers to class constants as globals (Peter Schuller)
THRIFT-855   Python               Include optimized compiled python objects in install (Anthony Molinaro)
THRIFT-859   Python               Allow py:twisted to be generated in different namespace than py (Bruce Lowekamp)
THRIFT-869   Python               TSocket.py on Mac (and FreeBSD) doesn't handle ECONNRESET from recv() (Steven Knight)
THRIFT-875   Python               Include python setup.cfg in dist (Anthony Molinaro)
THRIFT-610   Ruby                 binary_protocol.rb segfaults [line 86] (Unassigned)
THRIFT-899   Ruby                 Ruby read timeouts can sometimes be 2x what they should be (Ryan King)
THRIFT-909   Ruby                 allow block argument to struct constructor (Michael Stockton)
THRIFT-456   Test Suite           Bad IP address string in test/cpp/src/main.cpp (Rush Manbert)


Thrift 0.4.0 - Incubating
--------------------------------------------------------------------------------
THRIFT-650   Build        Make Check fails on Centos/OSX with 0.2.0 tarball (Anthony Molinaro)
THRIFT-770   Build        Get 'make dist' to work without first compiling source code (Anthony Molinaro)
THRIFT-160   C#           Created THttpTransport for the C# library based on WebHttpRequest (Michael Greene)
THRIFT-834   C#           THttpClient resends contents of message after transport errors (Anatoly Fayngelerin)
THRIFT-247   C++          THttpServer Transport (Unassigned)
THRIFT-676   C++          Change C++ code generator so that generated classes can be wrapped with SWIG (Unassigned)
THRIFT-570   Compiler     Thrift compiler does not error when duplicate method names are present (Bruce Simpson)
THRIFT-808   Compiler     Segfault when constant declaration references a struct field that doesn't exist (Bryan Duxbury)
THRIFT-646   Erlang       Erlang library is missing install target (Anthony Molinaro)
THRIFT-544   General      multiple enums with the same key generate invalid code (Ben Taitelbaum)
THRIFT-434   General      ruby compiler should warn when a reserved word is used (Michael Stockton)
THRIFT-799   General      Files missing proper Apache license header (Bryan Duxbury)
THRIFT-832   HTML         HTML generator shows unspecified struct fields as 'required' (Bryan Duxbury)
THRIFT-226   Java         Collections with binary keys or values break equals() (Bryan Duxbury)
THRIFT-484   Java         Ability to use a slice of a buffer instead of a direct byte[] for binary fields (Bryan Duxbury)
THRIFT-714   Java         maxWorkerThreads parameter to THsHaServer has no effect (Bryan Duxbury)
THRIFT-751   Java         Add clear() method to TBase (Bryan Duxbury)
THRIFT-765   Java         Improved string encoding and decoding performance (Bryan Duxbury)
THRIFT-768   Java         Async client for Java (Bryan Duxbury)
THRIFT-774   Java         TDeserializer should provide a partialDeserialize method for primitive types (Piotr Kozikowski)
THRIFT-783   Java         .equals java method is broken on structs containing binary-type fields (Unassigned)
THRIFT-804   Java         CompareTo is broken for unions set to map, set, or list (Bryan Duxbury)
THRIFT-814   Java         Include a TServlet in the standard Thrift distribution (Mathias Herberts)
THRIFT-818   Java         Async client doesn't send method args (Bryan Duxbury)
THRIFT-830   Java         Switch binary field implementation from byte[] to ByteBuffer (Bryan Duxbury)
THRIFT-831   Java         FramedTransport implementation that reuses its buffers (Bryan Duxbury)
THRIFT-833   Java         build.xml in lib/java is missing a classpathref attribute for the javadoc task (Bryan Duxbury)
THRIFT-836   Java         Race condition causes CancelledKeyException in TAsyncClientManager (Bryan Duxbury)
THRIFT-842   Java         Upgrade to current version of commons-lang (2.5 instead of 2.4) and/or change dependency in ivy.xml to not be exact (Bryan Duxbury)
THRIFT-815   JavaScript   Deserialization of lists is critically broken. (T Jake Luciani)
THRIFT-827   OCaml        OCaml generator to take default values into account (Lev Walkin)
THRIFT-647   PHP          PHP library is missing install target (Anthony Molinaro)
THRIFT-682   PHP          PHP extension doesn't compile on Mac OS X (Bryan Duxbury)
THRIFT-718   PHP          Thrift PHP library includes closing tags and extraneous whitespace (Nicholas Telford)
THRIFT-778   PHP          PHP socket listening server (Nick Jones)
THRIFT-780   PHP          PHP extension sometimes causes an abort with two exceptions at the same time (David Reiss)
THRIFT-837   PHP          PHP accelerator bug for writes > 8k (Thomas Kho)
THRIFT-782   Perl         Perl code for writing containers doesn't count length of write*Begin or write*End (Conrad Hughes)
THRIFT-395   Python       Python library + compiler does not support unicode strings (Unassigned)
THRIFT-133   Ruby         'namespace ruby' should error out, or be an alias to 'namespace rb' (Bryan Duxbury)
THRIFT-664   Ruby         Ruby extension fails to build with Ruby 1.9.1 (Rajesh Malepati)
THRIFT-699   Ruby         Excise unused "native protocol method table" stuff from thrift_native (Bryan Duxbury)
THRIFT-767   Ruby         ruby compiler does not keep comments for enum values (Bryan Duxbury)
THRIFT-811   Ruby         http_client_transport.rb: allow custom http headers (Tony Kamenick)
THRIFT-459   Ruby         Ruby installation always tries to write to /Library/Ruby/site (Matthieu Imbert)


Thrift 0.1.0 - Incubating (not released)
--------------------------------------------------------------------------------
Compatibility Breaking Changes:
  C++:
    * It's quite possible that regenerating code and rebuilding will be
      required.  Make sure your headers match your libs!

  Java:

  Python:

  Ruby:
    * Generated files now have underscored names [THRIFT-421]
    * The library has been rearranged to be more Ruby-like [THRIFT-276]

  Erlang:
    * Generated code will have to be regenerated, and the new code will
      have to be deployed atomically with the new library code [THRIFT-136]

New Features and Bug Fixes:
  C++:
    * Support for TCompactProtocol [THRIFT-333]

  Java:
    * Support for TCompactProtocol [THRIFT-110]

  Python:
    * Support for Twisted [THRIFT-148]

  Ruby:
    * Support for TCompactProtocol [THRIFT-332]

