diff --git a/CHANGES b/CHANGES
new file mode 100644
index 0000000..4b4997e
--- /dev/null
+++ b/CHANGES
@@ -0,0 +1,2924 @@
+Apache Thrift Changelog
+
+================================================================================
+Thrift 0.13.0
+--------------------------------------------------------------------------------
+## Breaking Changes (since 0.12.0)
+    * [THRIFT-4675] - Javascript now uses node-int64 for 64 bit integer constants
+
+================================================================================
+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-4067] - Windows thrift compiler distributed on the apache web site has runtime dependencies
+    * [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
+    * [THRIFT-4589] - HTTP client timeouts are a) incomplete and b) not used at all
+    * [THRIFT-4590] - running the test client using HTTP transport leads to "CoInitialize not called"
+
+## 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
+    * [THRIFT-4665] - Keep Rust library up-to-date on crates.io
+
+## 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-4375] - TMemory throw bad_alloc due to counter overflow
+    * [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]
+
