Apache Thrift Changelog

Thrift 0.9.2
--------------------------------------------------------------------------------
## Bug
    * [THRIFT-2645] - generated Go server code always sets Success retval
    * [THRIFT-2634] - undocumented php "nsglobal" option
    * [THRIFT-2627] - erlang backend doesn't support corecursive structs
    * [THRIFT-2595] - Node.js: Fix global leaks and copy-paste errors
    * [THRIFT-2594] - JS Compiler: Single quotes are not being escaped in constants.
    * [THRIFT-2610] - MSVC warning in TSocket.cpp
    * [THRIFT-2607] - ThreadManager.cpp warning on clang++ 3.4
    * [THRIFT-2609] - TFileTransport.h unused field warning (clang 3.4)
    * [THRIFT-2608] - TNonblockingServer.cpp warnings on clang 3.4
    * [THRIFT-2606] - ThreadManager.h warning in clang++ 3.4
    * [THRIFT-2605] - TSocket warning on gcc 4.8.3
    * [THRIFT-2604] - Fix debian packaging
    * [THRIFT-2601] - Fix vagrant to work again for builds again
    * [THRIFT-2599] - Uncompileable Delphi code due to naming conflicts with IDL
    * [THRIFT-2622] - Expecting > 4 bytes, found only 2
    * [THRIFT-2620] - Fix python packaging
    * [THRIFT-2619] - Go lib http transport does not handle EOF correctly
    * [THRIFT-2618] - Unignore /aclocal files required for build
    * [THRIFT-2614] - TNonblockingServer.cpp warnings on MSVC
    * [THRIFT-2591] - TFramedTransport does not handle payloads split across packets correctly
    * [THRIFT-2679] - golang generation fails for service names less than 5 characters
    * [THRIFT-2666] - Usage of PYTHONHASHSEED breaks older Python code
    * [THRIFT-2584] - Error handler not listened on javascript client
    * [THRIFT-2582] - "FileTransport error" exception is raised when trying to use Java's TFileTransport
    * [THRIFT-2581] - TFDTransport destructor should not throw
    * [THRIFT-2588] - Thrift compiler is not buildable in Visual Studio 2010
    * [THRIFT-2577] - TFileTransport  missuse of closesocket on windows platform
    * [THRIFT-2576] - Implement Thrift.Protocol.prototype.skip method in JavaScript library
    * [THRIFT-2575] - Thrift includes siginfo_t within apache::thrift::protocol namespace
    * [THRIFT-2570] - Wrong URL given in http://thrift.apache.org/developers
    * [THRIFT-2559] - Centos 6.5 unable to "make" with Thrift 0.9.1
    * [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-2562] - ./configure create MakeFile in lib/d with errors
    * [THRIFT-2560] - Thrift compiler generator tries to concat ints with strings using +
    * [THRIFT-2545] - Test CPP fails to build (possibly typo)
    * [THRIFT-2537] - Path for "go get" does not work (pull request 115)
    * [THRIFT-2551] - OutOfMemoryError "unable to create new native thread" kills serve thread
    * [THRIFT-2515] - TLS Method error during make
    * [THRIFT-2508] - Uncompileable C# code due to language keywords in IDL
    * [THRIFT-2557] - CS0542 member names cannot be the same as their enclosing type
    * [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-2523] - Visual Studio project is missing OverlappedSubmissionThread files
    * [THRIFT-2528] - Thrift Erlang Library: Multiple thrift applications in one bundle
    * [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-2524] - Visual Studio project is missing TThreadedServer files
    * [THRIFT-2520] - cpp:cob_style generates incorrect .tcc file
    * [THRIFT-2590] - C++ Visual Studio solution doesn't include Multiplexing support
    * [THRIFT-2492] - test/cpp does not compile on mac
    * [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-2489] - Peer host name not provied when performing AccessManager common name verification.
    * [THRIFT-2487] - Tutorial requires two IDL files but only one is linked from the Thrift web site
    * [THRIFT-2477] - thrift --help text with misplaced comma
    * [THRIFT-2340] - Generated server implementation does not send response type EXCEPTION on the Thrift.TApplicationExceptionType.UNKNOWN_METHOD exception
    * [THRIFT-2337] - Golang does not report TIMED_OUT exceptions
    * [THRIFT-2331] - Missing call to ReadStructBegin() in TApplicationException.Read()
    * [THRIFT-2329] - missing release tags within git
    * [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-2316] - ccp: TFileTransportTest
    * [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-2367] - Build failure: stdlib and boost both define uint64_t
    * [THRIFT-2365] - C# decodes too many binary bytes from JSON
    * [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-2357] - recurse option has no effect when generating php
    * [THRIFT-2356] - c++ thrift client not working with ssl (SSL_connect hangs)
    * [THRIFT-2354] - Connection errors can lead to case_clause exceptions
    * [THRIFT-2352] - msvc failed to compile thrift tests
    * [THRIFT-2351] - PHP TCompactProtocol has fails to decode messages
    * [THRIFT-2308] - node: TJSONProtocol parse error when reading from buffered message
    * [THRIFT-2306] - concurent client calls with nodejs
    * [THRIFT-2303] - TBufferredTransport not properly closing underlying transport
    * [THRIFT-2285] - TJsonProtocol implementation for Java doesn't allow a slash (/) to be escaped (\/)
    * [THRIFT-2282] - Incorect code generated for some typedefs
    * [THRIFT-2280] - TJSONProtocol.Flush() does not really flush the transport
    * [THRIFT-2281] - Generated send/recv code ignores errors returned by the underlying protocol
    * [THRIFT-2279] - TSerializer only returns the first 1024 bytes serialized
    * [THRIFT-2278] - Buffered transport doesn't support writes > buffer size
    * [THRIFT-2276] - java path in spec file needs updating
    * [THRIFT-2275] - Fix memory leak in golang compact_protocol.
    * [THRIFT-2240] - thrift.vim (contrib) does not correctly handle 'union'
    * [THRIFT-2232] - IsSet* broken in Go
    * [THRIFT-2230] - Cannot Build on RHEL/Centos/Amazon Linux 6.x
    * [THRIFT-2227] - Thrift compiler generates spurious warnings with Xlint
    * [THRIFT-2226] - TServerSocket - keepAlive wrong initialization order
    * [THRIFT-2259] - C#: unexpected null logDelegate() pointer causes AV in TServer.serve()
    * [THRIFT-2253] - Python Tornado TTornadoServer base class change
    * [THRIFT-2248] - Go generator doesn't deal well with map keys of type binary
    * [THRIFT-2247] - Go generator doesn't deal well with map keys of type binary
    * [THRIFT-2246] - Unset enum value is printed by ToString()
    * [THRIFT-2243] - TNonblockingServer in thrift crashes when TFramedTransport opens
    * [THRIFT-2225] - SSLContext destroy before cleanupOpenSSL
    * [THRIFT-2224] - TSSLSocket.h and TSSLServerSocket.h should use the platfromsocket too
    * [THRIFT-2222] - ruby gem cannot be compiled on OS X mavericks
    * [THRIFT-2219] - Thrift gem fails to build on OS X Mavericks with 1.9.3 rubies
    * [THRIFT-2216] - Extraneous semicolon in TProtocolUtil.h makes clang mad
    * [THRIFT-2215] - Generated HTML/Graphviz lists referenced enum identifiers as UNKNOWN.
    * [THRIFT-2503] - C++: Fix name collision when a struct has a member named "val"
    * [THRIFT-2500] - sending random data crashes thrift(golang) service
    * [THRIFT-2498] - Error message "Invalid method name" while trying to call HBase Thrift API
    * [THRIFT-2495] - JavaScript/Node string constants lack proper escaping
    * [THRIFT-2475] - c_glib: buffered_transport_write function return always TRUE.
    * [THRIFT-2470] - THttpHandler swallows exceptions from processor
    * [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-2461] - Can't install thrift-0.8.0 on OS X 10.9.2
    * [THRIFT-2454] - c_glib: There is no gethostbyname_r() in some OS.
    * [THRIFT-2448] - thrift/test/test.sh has incorrect Node.js test path
    * [THRIFT-2459] - --version should not exit 1
    * [THRIFT-2458] - Generated golang server code for "oneway" methods is incorrect
    * [THRIFT-2443] - Node fails cross lang tests
    * [THRIFT-2456] - THttpClient fails when using async support outside Silverlight
    * [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-2460] - unopened socket fd must be less than zero.
    * [THRIFT-2442] - Fix issue with cpp server on Windows (WSAStartup wasn't called)
    * [THRIFT-2439] - Bug in TProtocolDecorator Class causes parsing errors
    * [THRIFT-2438] - Unexpected readFieldEnd call causes JSON Parsing errors
    * [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-2428] - Python 3 setup.py support
    * [THRIFT-2426] - clarify IP rights and contributions from fbthrift
    * [THRIFT-2420] - Go argument parser for methods without arguments does not skip fields
    * [THRIFT-2419] - golang - Fix fmt.Errorf in generated code
    * [THRIFT-2418] - Go handler function panics on internal error
    * [THRIFT-2416] - Cannot use TCompactProtocol with MSVC
    * [THRIFT-2414] - c_glib fix several bug.
    * [THRIFT-2405] - Node.js Multiplexer tests fail (silently)
    * [THRIFT-2402] - byte count of FrameBuffer in AWAITING_CLOSE state is not subtracted from readBufferBytesAllocated
    * [THRIFT-2399] - thrift.el: recognize "//"-style comments in emacs thrift-mode
    * [THRIFT-2400] - thrift.el: recognize "//"-style comments in emacs thrift-mode
    * [THRIFT-2396] - Build Error on MacOSX
    * [THRIFT-2395] - thrift Ruby gem requires development dependency 'thin' regardless of environment
    * [THRIFT-2390] - no close event when connection lost
    * [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-2385] - Problem with gethostbyname2 during make check
    * [THRIFT-2384] - Binary map keys produce uncompilable code in go
    * [THRIFT-2381] - code which generated by thrift2/hbase.thrift compile error
    * [THRIFT-2380] - unreachable code (CID 1174546, CID 1174679)
    * [THRIFT-2378] - service method arguments of binary type lead to uncompileable Go code
    * [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-2147] - Thrift IDL grammar allows for dotted identifier names
    * [THRIFT-2145] - Rack and Thin are not just development dependencies
    * [THRIFT-2146] - Unable to pass multiple "--gen" options to the thrift compiler
    * [THRIFT-2140] - Error compiling cpp tutorials
    * [THRIFT-2182] - segfault in regression tests (GC bug in rb_thrift_memory_buffer_write)
    * [THRIFT-2171] - NodeJS implementation has extremely low test coverage
    * [THRIFT-2169] - JavaME Thrift Library causes "java.io.IOException: No Response Entries Available" after using the Thrift client for some time
    * [THRIFT-2165] - Thrift Compiler fails at input files with UTF-8 BOM
    * [THRIFT-2160] - Warning in thrift.h when compiling with -Wunused and NDEBUG
    * [THRIFT-2158] - Compact, JSON, and SimpleJSON protocols are not working correctly
    * [THRIFT-2181] - oneway calls don't work in NodeJS
    * [THRIFT-2178] - Thrift generator returns error exit code on --version
    * [THRIFT-2173] - Move FrameBuffer creation to a factory method for cusomization
    * [THRIFT-2168] - Node.js appears broken (at least, examples don't work as intended)
    * [THRIFT-2167] - nodejs lib throws error if options argument isn't passed
    * [THRIFT-2139] - MSVC 2012 Error - Cannot compile due to BoostThreadFactory
    * [THRIFT-2138] - pkgconfig file created with wrong include path
    * [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-2122] - NPE in TSSLTransportFactory.createClient when no truststore password is passed in custom SSL params
    * [THRIFT-2288] - Go impl of Thrift JSON protocol wrongly writes/expects true/false for bools
    * [THRIFT-2294] - Incorrect Makefile generation
    * [THRIFT-2293] - TSSLTransportFactory.createSSLContext() leaves files open
    * [THRIFT-2274] - TNonblockingServer and TThreadedSelectorServer do not close their channel selectors on exit and leak file descriptors
    * [THRIFT-2273] - Please delete old releases from mirroring system
    * [THRIFT-2270] - Faulty library version numbering at build or documentation
    * [THRIFT-2267] - Should be able to choose socket family in Python TSocket
    * [THRIFT-2266] - ThreadManager.h:24:10: fatal error: 'tr1/functional' file not found on Mac 10.9 (Mavericks)
    * [THRIFT-2265] - php library doesn't build
    * [THRIFT-2262] - thrift server 'MutateRow' operation gives no indication of success / failure
    * [THRIFT-2261] - java: error: unmappable character for encoding ASCII
    * [THRIFT-2104] - Structs lose binary data when transferred from server to client in Java
    * [THRIFT-2209] - Ruby generator -- please namespace classes
    * [THRIFT-2210] - lib/java TSimpleJSONProtocol can emit invalid JSON
    * [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-2191] - Fix charp JSONProtocol.ReadJSONDouble (specify InvariantCulture)
    * [THRIFT-2203] - Tests keeping failing on Jenkins and Travis CI
    * [THRIFT-2202] - Delphi TServerImpl.DefaultLogDelegate may stop the server with I/O-Error 105
    * [THRIFT-2187] - Guard against ambiguous occurrences
    * [THRIFT-2214] - System header sys/param.h is included inside the Thrift namespace
    * [THRIFT-2211] - Exception constructor does not contain namespace prefix.
    * [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-2184] - undefined method rspec_verify for Thrift::MemoryBufferTransport
    * [THRIFT-2183] - gem install fails on zsh
    * [THRIFT-2108] - Fix TAsyncClientManager timeout race
    * [THRIFT-2092] - TNonblocking server should release handler as soon as connection closes
    * [THRIFT-1999] - warning on gcc 4.7 while compiling BoostMutex.cpp
    * [THRIFT-1998] - TCompactProtocol.tcc - one more warning on Visual 2010
    * [THRIFT-2009] - Go redeclaration error
    * [THRIFT-2016] - Resource Leak in thrift struct under compiler/cpp/src/parse/t_function.h
    * [THRIFT-2045] - C++ compiler warning and build cleanup
    * [THRIFT-2026] - Fix TCompactProtocol 64 bit builds
    * [THRIFT-2025] - Fix TSSLServerSocket 64-bit builds
    * [THRIFT-1964] - 'Isset' causes problems with C#/.NET serializers
    * [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-2069] - TPipeServer creates overlapped pipes, then uses synchronous I/O on them with TPipe
    * [THRIFT-2068] - Multiple calls from same connection are not processed in node
    * [THRIFT-2048] - Prefer boolean context to nullptr_t conversion
    * [THRIFT-2041] - TNonblocking server compilation on windows (ARITHMETIC_RIGHT_SHIFT)
    * [THRIFT-1682] - Multiple thread calling a Service function unsafely causes message corruption and terminates with Broken Pipe
    * [THRIFT-1647] - NodeJS BufferedTransport does not work beyond the hello-world example
    * [THRIFT-1639] - Java/Python: Serialization/Deserialization of double type using CompactProtocol
    * [THRIFT-1771] - "make check" fails on x64 for libboost_unit_test_framework.a
    * [THRIFT-1841] - NodeJS Thrift incorrectly parses non-UTF8-string types
    * [THRIFT-1755] - Comment parsing bug
    * [THRIFT-1750] - Make compiler build cleanly under visual studio 10
    * [THRIFT-1803] - Ruby Thrift 0.9.0 tries to encode UUID to UTF8 and crashes
    * [THRIFT-1717] - Fix deb build in jenkins
    * [THRIFT-1609] - Cocoa import namespace
    * [THRIFT-1614] - Thrift build from svn repo sources fails with automake-1.12
    * [THRIFT-1584] - Error: could not SetMinThreads in ThreadPool on single-core machines
    * [THRIFT-1579] - PHP Extention - function thrift_protocol_read_binary not working from TBinarySerializer::deserialize
    * [THRIFT-1455] - TBinaryProtocolT<Transport_>::writeString casts from size_t to uint32_t, which is not safe on 64-bit platforms
    * [THRIFT-1481] - Unix domain sockets in C++ do not support the abstract namespace
    * [THRIFT-1357] - Erlang Dependency breaks build
    * [THRIFT-1260] - The thrift THttpclient in c# client is not closing the connections when calling SendRequest
    * [THRIFT-1300] - Test failures with parallel builds (make -j)
    * [THRIFT-1212] - Members capital case conflict
    * [THRIFT-841] - Build cruft
    * [THRIFT-1047] - rb_thrift_memory_buffer_write treats arg as string without check, segfaults if you pass non-string
    * [THRIFT-667] - Period should not be allowed in identifier names
    * [THRIFT-1389] - c_glib_generator.cc generates leaking code for cassandra_client_get_slice() and cassandra_client_get()
    * [THRIFT-2675] - md5 file content is malformed in the download website
    * [THRIFT-2284] - java.lang.OutOfMemoryError: Java heap space
    * [THRIFT-2596] - Cannot compile haskell thrift 0.6.0
    * [THRIFT-2064] - Node thrift can't handle maps with primitive values
    * [THRIFT-2656] - ./configure mis-reports minimum bison version required
    * [THRIFT-908] - Make required types actually required by the Haskell type system
    * [THRIFT-2690] - c_glib: Incorrect behaviour when serializing a map with typedef'd keys
    * [THRIFT-2651] - struct names that are restricted erlang terms generate invalid type signatures
    * [THRIFT-2667] - create Windows Installer via CPack
    * [THRIFT-1028] - field names of structs used with wrong casing in the generated haskell code
    * [THRIFT-2647] - compiler-hs: don't decapitalize field names, do decapitalize argument bindings
    * [THRIFT-2649] - TAsyncClientManager leaks the selector
    * [THRIFT-2683] - c_glib: Seg fault when deserializing a map with typedef'd keys
    * [THRIFT-2686] - Another extraneous semicolon - TBinaryProtocol.h
    * [THRIFT-1497] - i64 type not supported in JavaScript. Low-order bits lost.
    * [THRIFT-1266] - generated C code for iterating over nested maps is wrong
    * [THRIFT-2680] - c_glib: ThriftFramedTransport fails when peer unexpectedly closes connection
    * [THRIFT-2660] - Validate the bytes received in TSaslTransport
    * [THRIFT-2152] - Generated Haskell files does not compile
    * [THRIFT-2198] - THRIFT_CLOSESOCKET on win32 platforms is wrong defined for TFileProtocol
    * [THRIFT-2673] - PHP: generated Service_method_result code should not have validators
    * [THRIFT-2657] - py.twisted/test_suite.py:ThriftTestCase.testOneway spuriously fails on loaded machines
    * [THRIFT-2617] - Missing -lboost_system when compiling with boost threads
    * [THRIFT-2687] - struct/class inconsitency between forward decl and definition
    * [THRIFT-2696] - Unable to stop socket server while there are idle clients
    * [THRIFT-2702] - empty enums lead to invalid code
    * [THRIFT-2694] - Minor glitches in Delphi cross-test code
    * [THRIFT-2714] - Graphviz generator is missing from MSVC++ project files
    * [THRIFT-2706] - D library does not support "oneway" message type
    * [THRIFT-2676] - Cocoa code generator emits reserved symbol, 'i386'
    * [THRIFT-2543] - Generated enum type in haskell should be qualified
    * [THRIFT-2526] - Assignment operators and copy constructors in c++ don't copy the __isset struct
    * [THRIFT-2339] - Uncaught exception in thrift c# driver
    * [THRIFT-2719] - ObjectDisposedException in TSocket when sending rapidly
    * [THRIFT-2707] - Ruby library does not support "oneway" message type
    * [THRIFT-2701] - Update TCompactProtocol.php
    * [THRIFT-2711] - Travis reports false possitive while building with mingw
    * [THRIFT-2693] - Erlang test leaves a lot of generated files
    * [THRIFT-2716] - automake-1.13.4 reports warnings for some Makefile.am
    * [THRIFT-2664] - Python tornado generated oneway client functions crash on server error
    * [THRIFT-2662] - python bindings generate incorrect indentation for functions after a oneway function
    * [THRIFT-2663] - python library should not use the root logger
    * [THRIFT-2593] - Unable to build thrift on ubuntu-12.04 (Precise)
    * [THRIFT-585] - exceptions in the autogenerated send_METHOD functions are not propagated (Twisted)
    * [THRIFT-2669] - javascript thrift library can not deserialize nested list<map> structure
    * [THRIFT-1847] - TSSLSocket.cpp and TFileTransport.cpp incorrectly excluded from Visual Studio project file
    * [THRIFT-2745] - C++ - Unit-test compilation on Windows fixes
    * [THRIFT-2665] - tornado library debug messages are too verbose
    * [THRIFT-2715] - Wrong Import-Package directive in MANIFEST
    * [THRIFT-2229] - thrift failed to build on OSX 10.9 GM
    * [THRIFT-2759] - Trusty Vagrantfile does not make clean
    * [THRIFT-2186] - Build failure of Haskell example
    * [THRIFT-2778] - nodejs build cleanup
    * [THRIFT-2589] - C# generator: const of BaseType in IDL generates static instead of const properties
    * [THRIFT-2602] - Fix missing dist files
    * [THRIFT-1940] - Deploy Haskell package as part of release process
    * [THRIFT-2700] - Compiling from source for haskell reveals a missing cabal dependency
    * [THRIFT-2792] - Wrong option level for setsockopt(...TCP_DEFER_ACCEPT)
    * [THRIFT-2769] - D: std.traits.pointerTarget is deprecated
    * [THRIFT-2722] - Fix javascript service inheritance namespacing
    * [THRIFT-2628] - erlang: struct member name conflicts due to lowercased names
    * [THRIFT-2757] - TCompactProtocol and TJSONProtocol need boundary checking
    * [THRIFT-2775] - static assert fails in src/thrift/internal/ctfe.d
    * [THRIFT-2781] - D compiler stuck at idlgen due to compiler bug
    * [THRIFT-2782] - D: Timing-insensitive unit tests for thrift.internal.resource_pool
    * [THRIFT-2689] - struct names that differ only in capitalization of first character generate broken erlang code
    * [THRIFT-2767] - Transport.Empty is not externally available
    * [THRIFT-2788] - Java client and server does not enable tcp keep alive.
    * [THRIFT-2776] - D tests failing
    * [THRIFT-2770] - D: thrift.internal.traits unittest fails due to std.metastrings import
    * [THRIFT-2720] - nodejs - Error with enum generation
    * [THRIFT-2777] - erlang lib tests may fail due to permissions error

## Documentation
    * [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
    * [THRIFT-2155] - Adding one liner guide to rename the version.h.in and rename thrifty.cc.h
    * [THRIFT-1991] - Add exceptions to examples

## Improvement
    * [THRIFT-2639] - c_glib: Expose as properties members of generated structs
    * [THRIFT-2653] - improved Delphi const generation
    * [THRIFT-2638] - travis: build with Haskell
    * [THRIFT-2636] - c_glib: ThriftApplicationException: Expose "type" and "message" properties
    * [THRIFT-2635] - Travis CI build and test matrix
    * [THRIFT-2633] - remove 'this is a dummy struct' structs from generated erlang
    * [THRIFT-2632] - PHP: add "validate" option to generate read/write validation code
    * [THRIFT-2629] - JavaDoc style documentation should be reused
    * [THRIFT-2631] - c_glib: Support service inheritance in clients
    * [THRIFT-2624] - Add  TServerEventHandler support to C#
    * [THRIFT-2612] - Java TCompactProtocol.readBinary zero copying
    * [THRIFT-2621] - Add basic default hash code method to python
    * [THRIFT-2574] - Compiler option to generate namespace directories for Ruby
    * [THRIFT-2568] - Implement own certificate handler
    * [THRIFT-2569] - Introduce file to specify third party library locations on Windows
    * [THRIFT-2549] - Generate json tag for struct members. use go.tag annotation to override the default generated tag.
    * [THRIFT-2541] - reclaim TFramedTransport's read and write buffers for thrift cpp
    * [THRIFT-2535] - TJSONProtocol when serialized yields TField ids rather than names
    * [THRIFT-2544] - Add support for socket transport for c# library when using Windows Phone projects
    * [THRIFT-2552] - eliminate warning from configure.ac
    * [THRIFT-2571] - Simplify cross compilation using CMake
    * [THRIFT-2511] - Node.js needs the compact protocol
    * [THRIFT-2579] - Windows CE support
    * [THRIFT-2341] - Enable generation of Delphi XMLDoc comments (a.k.a. "Help Insight")
    * [THRIFT-2332] - RPMBUILD: run bootstrap (if needed)
    * [THRIFT-2330] - Generate PHPDoc comments
    * [THRIFT-2320] - Program level doctext does not get attached by parser
    * [THRIFT-2318] - perl: dependency Class::Accessor not checked
    * [THRIFT-2317] - exclude tutorial from build
    * [THRIFT-2309] - Ruby (gem) & PHP RPM subpackages
    * [THRIFT-2355] - Add SSL and Web Socket Support to Node and JavaScript
    * [THRIFT-2350] - Add async calls to normal JavaScript
    * [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-2305] - TFramedTransport empty constructor should probably be private
    * [THRIFT-2304] - Move client assignments from construtor in method
    * [THRIFT-2300] - D configure info output should follow same format as other languages
    * [THRIFT-2239] - Address FindBugs errors
    * [THRIFT-2233] - Java compiler should defensively copy its binary inputs
    * [THRIFT-2260] - Thrift imposes unneeded dependency on commons-lang3
    * [THRIFT-2258] - Add TLS v1.1/1.2 support to TSSLSocket.cpp
    * [THRIFT-2254] - Exceptions generated by Go compiler should implement error interface
    * [THRIFT-2249] - Add SMP Build option to thrift.spec (and three config defines)
    * [THRIFT-2220] - Add a new struct structv?
    * [THRIFT-2497] - server and client for test/go, also several fixes and improvements
    * [THRIFT-2496] - server and client for test/go, also several fixes and improvements
    * [THRIFT-2494] - Add enum toString helper function in c_glib
    * [THRIFT-2502] - Optimize go implementations of binary and compact protocols for speed
    * [THRIFT-2471] - Make cpp.ref annotation language agnostic
    * [THRIFT-2449] - Enhance typedef structure to distinguish between forwards and real typedefs
    * [THRIFT-2453] - haskell tutorial: fix up division by 0 example
    * [THRIFT-2455] - Allow client certificates to be used with THttpClient
    * [THRIFT-2446] - There is no way to handle server stream errors
    * [THRIFT-2433] - Allow manual control of OpenSSL initialization/cleanup
    * [THRIFT-2417] - C# Union classes are not partial
    * [THRIFT-2415] - Named pipes server performance & message mode
    * [THRIFT-2407] - use markdown (rename README => README.md)
    * [THRIFT-2404] - emit warning on (typically inefficient) list<byte>
    * [THRIFT-2401] - Haskell tutorial compiles
    * [THRIFT-2398] - Improve Node Server Library
    * [THRIFT-2397] - Add CORS and CSP support for JavaScript and Node.js libraries
    * [THRIFT-2394] - TCurlClient: an HTTP transport implementation using libcurl
    * [THRIFT-2391] - simple socket transport for actionscript 3.0
    * [THRIFT-2387] - nodejs: external imports should be centralized in index.js
    * [THRIFT-2376] - nodejs: allow Promise style calls for client and server
    * [THRIFT-2369] - Add ssl support for nodejs implementation
    * [THRIFT-2142] - Minor tweaks to thrift.el for better emacs package compatibility
    * [THRIFT-2172] - Java compiler allocates optionals array for every struct with an optional field
    * [THRIFT-2268] - Modify TSaslTransport to ignore TCP health checks from loadbalancers
    * [THRIFT-2263] - Always generate good hashCode for Java
    * [THRIFT-2264] - GitHub page incorrectly states that Thrift is still incubating
    * [THRIFT-2095] - Use print function for Python 3 compatiblity
    * [THRIFT-2185] - use cabal instead of runhaskell in haskell library
    * [THRIFT-2204] - SSL client for the cocoa client
    * [THRIFT-2205] - Node.js Test Server to support test.js JavaScript Browser test and sundry fixes
    * [THRIFT-2054] - TSimpleFileTransport - Java Lib has no straight forward TTransport based file transport
    * [THRIFT-2037] - More general macro THRIFT_UNUSED_VARIABLE
    * [THRIFT-2029] - Port C++ tests to Windows
    * [THRIFT-2034] - Give developers' C++ code direct access to socket FDs on server side
    * [THRIFT-1926] - PHP Constant Generation Refactoring
    * [THRIFT-2040] - "uninitialized variable" warnings on MSVC/windows
    * [THRIFT-2043] - visual 2010 warnings - unreachable code
    * [THRIFT-1683] - Implement alternatives to Javascript Client side Transport protocol, just as NPAPI and WebSocket.
    * [THRIFT-1868] - Make the TPC backlog configurable in the Java servers
    * [THRIFT-1772] - Serialization does not check types of embedded structures.
    * [THRIFT-1743] - Add composer.json for new Symfony 2.1 Dependency Manager
    * [THRIFT-1746] - provide a SPDX file
    * [THRIFT-1815] - Code generators line buffer output
    * [THRIFT-1813] - Add @Generated annotation to generated classes
    * [THRIFT-1541] - The thrift compiler is not buildable with visual studio 2010 in Windows 7
    * [THRIFT-1544] - Create correct Ruby namespace directories
    * [THRIFT-1457] - Capacity of TframedTransport write buffer is never reset
    * [THRIFT-1442] - TNonblockingServer: Refactor to allow multiple IO Threads
    * [THRIFT-1371] - Socket timeouts (SO_RCVTIMEO and SO_SNDTIMEO) not supported on Solaris
    * [THRIFT-1349] - Remove unnecessary print outs
    * [THRIFT-1352] - Thrift server
    * [THRIFT-1135] - Node.js tutorial
    * [THRIFT-1114] - Maven publish shouldn't require passwords hardcoded in settings.xml
    * [THRIFT-989] - Push boost m4 macros upstream
    * [THRIFT-2691] - C++ - new operator<< could be used in tutorial
    * [THRIFT-2067] - Thrift objects should have a default string representation
    * [THRIFT-2641] - Improvements to Haskell Compiler/Libraries
    * [THRIFT-2231] - Support tornado-4.x (Python)
    * [THRIFT-2643] - Optional offset/length for TDeserializer.deserialize()
    * [THRIFT-2684] - c_glib: Improvements to map deserialization in generated code
    * [THRIFT-2672] - Provide origin of call via TTransport
    * [THRIFT-2677] - Haskell library needs to build with network >= 2.6
    * [THRIFT-2648] - cleanup erlang lib
    * [THRIFT-2493] - Node.js lib needs HTTP client
    * [THRIFT-2718] - Align command line args for Thrift test server/client
    * [THRIFT-2709] - c_glib: Support server implementation
    * [THRIFT-976] - c_glib tutorial
    * [THRIFT-2752] - Centos 6.5 Installation Docs update
    * [THRIFT-2269] - Can deploy libthrift-source.jar to maven center repository
    * [THRIFT-2512] - lib/${language}/README.md
    * [THRIFT-2783] - Correctly propagate binary encoding of WebSocket frames Node.js library
    * [THRIFT-2692] - Allow unit testing of compiler parts
    * [THRIFT-2787] - Delphi Lib README
    * [THRIFT-2786] - Cpp Tutorial: Make TThreadPoolServer / TThreadedServer a bit easier to use
    * [THRIFT-2785] - Wrap errors in iostream_transport.go
    * [THRIFT-2062] - cpp flag for using unordered_set instead of set
    * [THRIFT-2654] - reduce number of server exceptions
    * [THRIFT-2360] - Json Generator
    * [THRIFT-2791] - Allowing use of buffered sockets in go server
    * [THRIFT-809] - Javascript client: Please make required fields actually required.
    * [THRIFT-2784] - Eliminate compiler warnings in generated C++ code
    * [THRIFT-2538] - Apache Thrift needs an official NuGet package
    * [THRIFT-2046] - The worktask can be timed out in TThreadPoolServer (Java) when the max# thrift thread is reached

## New Feature
    * [THRIFT-2637] - "java:fullcamel_service_methods" option to automatically camel-case Java service methods
    * [THRIFT-2572] - Add string/collection length limit checks (from C++) to java protocol readers
    * [THRIFT-795] - Importing service functions (simulation multiple inheritance)
    * [THRIFT-2347] - C# TLS Transport based on THRIFT-181
    * [THRIFT-2256] - Using c++11/c++0x std library  replace boost library
    * [THRIFT-2255] - add Parent Class for generated Struct class
    * [THRIFT-2250] - JSON and MemoryBuffer for JavaME
    * [THRIFT-2469] - "java:fullcamel" option to automatically camel-case underscored attribute names
    * [THRIFT-2408] - Named Pipe Transport Option for C#
    * [THRIFT-2377] - Allow addition of custom HTTP Headers to an HTTP Transport
    * [THRIFT-2164] - Add a Get/Post Http Server to Node along with examples
    * [THRIFT-2114] - Python Service Remote SSL Option
    * [THRIFT-1894] - Thrift multi-threaded async Java Server using Java 7 AsynchronousChannelGroup
    * [THRIFT-2058] - Add reconnect support to node.js library
    * [THRIFT-1719] - SASL client support for Python
    * [THRIFT-1188] - C++: Use bit fields for a more compact __isset struct
    * [THRIFT-1012] - Transport for DataInput DataOutput interface
    * [THRIFT-2688] - Generating *Null implementations should be optional
    * [THRIFT-728] - Make generated Haskell code an instance of Arbitrary
    * [THRIFT-2522] - TypeScript extension for Thrift Compiler
    * [THRIFT-1893] - HTTP/JSON server/client for node js
    * [THRIFT-2670] - Android Parcelable Java generation option
    * [THRIFT-1536] - Maven thrift plugin
    * [THRIFT-2712] - PHP: add "json" option to create JsonSerializable code

## Question
    * [THRIFT-2573] - thrift 0.9.2 release
    * [THRIFT-2567] - Csharp slow ?
    * [THRIFT-2539] - Tsocket.cpp addrinfo ai_flags = AI_ADDRCONFIG
    * [THRIFT-2277] - Thrift: installing fb303 error
    * [THRIFT-2440] - how to connect as3 to java by thrift ,
    * [THRIFT-2379] - Memmory leaking while using multithreading in C++ server.
    * [THRIFT-2699] - Which version of Thrift to be used for WinCE
    * [THRIFT-2703] - Thrift on Windows CE
    * [THRIFT-2705] - make a package out of the haskell libraries for thrift

## Sub-task
    * [THRIFT-2534] - Cross language test results should recorded to a status.md or status.html file automatically
    * [THRIFT-2558] - CSharp compiler generator tries to concat ints with strings using +
    * [THRIFT-2507] - Additional LUA TProtocolException error code needed?
    * [THRIFT-334] - Compact Protocol for PHP
    * [THRIFT-66] - Java: Allow multiplexing multiple services over a single TCP connection
    * [THRIFT-2338] - First doctext wrongly interpreted as program doctext in some cases
    * [THRIFT-2325] - SSL test certificates
    * [THRIFT-2310] - PHP: Client-side support for Multiplexing Services
    * [THRIFT-2358] - C++: add compact protocol to cross language test suite
    * [THRIFT-2297] - TJsonProtocol implementation for Delphi does not allow for both possible slash (solidus) encodings
    * [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-2251] - go test for compact protocol is not running
    * [THRIFT-2499] - Compiler: allow annotations without "= value"
    * [THRIFT-2444] - pull request 88: thrift: clean up enum value assignment
    * [THRIFT-2425] - PHP: Server-side support for Multiplexing Services
    * [THRIFT-2421] - Tree/Recursive struct support in thrift
    * [THRIFT-2175] - Wrong field type set for binary
    * [THRIFT-2176] - TSimpleJSONProtocol.ReadFieldBegin() does not return field type and ID
    * [THRIFT-2174] - Deserializing JSON fails in specific cases
    * [THRIFT-2132] - Go: Support for Multiplexing Services on any Transport, Protocol and Server
    * [THRIFT-2290] - Update Go tutorial to align with THRIFT-2232
    * [THRIFT-2271] - JavaScript: Support for Multiplexing Services
    * [THRIFT-2195] - Delphi: Add event handlers for server and processing events
    * [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-1681] - Add Lua Support
    * [THRIFT-1766] - [Ruby] Provide support for binary types
    * [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-981] - cocoa: add version Info to the library
    * [THRIFT-2345] - Delphi: UTF-8 sent by PHP as JSON is not understood by TJsonProtocol
    * [THRIFT-2346] - C#: UTF-8 sent by PHP as JSON is not understood by TJsonProtocol
    * [THRIFT-2652] - THRIFT_TEST_PORT variable via to run tests in parallel
    * [THRIFT-2513] - clean up enum value assignment
    * [THRIFT-2144] - Cocoa: Client-side support for Multiplexing Services on any Transport and Protocol
    * [THRIFT-2746] - Compiler C++98 conformance
    * [THRIFT-2750] - JS Lib ant build.xml fails on older ants
    * [THRIFT-2751] - NodeJS Lib clean up
    * [THRIFT-2749] - C++ Lib Transport Clean Up
    * [THRIFT-2747] - Add .vagrant to .gitignore
    * [THRIFT-2758] - lib/go/test/Makefile.am uses ln -s which breaks in vagrant
    * [THRIFT-2760] - thrift/test/cpp depends on boost libs not installed by Vagrantfile
    * [THRIFT-2762] - Python Twisted tests crash in Trusty Vagrantfile
    * [THRIFT-2768] - Whitespace fixups
    * [THRIFT-2761] - go make crashes with Trusty Vagrantfile
    * [THRIFT-2763] - D is not installed (and thus not built/tested) in the Trusty Vagrantfile
    * [THRIFT-2774] - Add documentation for new erlang case feature flag
    * [THRIFT-2764] - Haskell does not build/test when using the Trusty Vagrantfile
    * [THRIFT-1462] - add more strict compiler flags
    * [THRIFT-2727] - C glib coding standards
    * [THRIFT-2728] - C# coding standards
    * [THRIFT-2741] - Python coding standards

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

## Test
    * [THRIFT-2327] - nodejs: nodejs test suite should be bundled with the library
    * [THRIFT-2501] - C# The test parameters from the TestServer and TestClient are different from the http://thrift.apache.org/test/
    * [THRIFT-2445] - THRIFT-2384 (code generation for go maps with binary keys) should be tested
    * [THRIFT-2685] - c_glib: Include in integration test suite
    * [THRIFT-2754] - erlang lib tests don't clean up after themselves properly

## 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]

