Apache Thrift Changelog

Breaking Changes since 0.11.0 [for 0.12.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.


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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



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

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

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

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

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

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



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

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

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

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

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

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

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



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

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

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

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

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



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

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

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

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

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

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

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



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

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

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

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

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



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

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

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

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

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

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



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


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


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

  Java:

  Python:

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

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

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

  Java:
    * Support for TCompactProtocol [THRIFT-110]

  Python:
    * Support for Twisted [THRIFT-148]

  Ruby:
    * Support for TCompactProtocol [THRIFT-332]

