All Versions
17
Latest Version
Avg Release Cycle
360 days
Latest Release
-

Changelog History
Page 1

  • v0.15.0 Changes

    πŸ’₯ Breaking Changes

    • πŸ‘ THRIFT-5229 - ActionScript 3 support dropped
    • πŸ‘ THRIFT-5347 - Haskell support dropped
    • THRIFT-5381 - possible collisions at VOID type with some 3rd-party libraries on Haxe cpp targets
    • πŸ—„ THRIFT-5396 - deprecate netstd "Async" method postfix

    Go

    • THRIFT-5369 - TConfiguration.GetMaxMessageSize() now also applies to container sizes in TProtocol implementations provided
    • ⏱ THRIFT-5404 - TTransportException.Timeout would correctly return true when it's connect timeout during TSocket.Open call
  • v0.14.2 Changes

    Java

    • THRIFT-5383 - THRIFT-5383 TJSONProtocol Java readString throws on bounds check

    Go

    • THRIFT-5369 - No longer pre-allocating the whole container (map/set/list) in compiled go code to avoid huge allocations on malformed messages
  • v0.14.1 Changes

    πŸš‘ Known Open Issues (Blocker or Critical)

    • βœ… THRIFT-3877 - C++: library don't work with HTTP (csharp server, cpp client; need cross test enhancement)
    • πŸ—„ THRIFT-5098 - Deprecated: "The high level Network interface is no longer supported. Please use Network.Socket." and other Haskell issues
    • THRIFT-5245 - NPE when the value of map's key is null

    πŸ—„ Deprecated Languages

    πŸ— Build Process

    • πŸ”€ THRIFT-5334 - version of thrift-maven-plugin is not sync with the main project

    Delphi

    • πŸ— THRIFT-5350 - 0.14.0 fails to build on non-x86

    Go

    • THRIFT-5353 - Namespace from type is ignored in generated code

    Python

    • THRIFT-5352 - Python: IDL exceptions with no fields can't be instantiated

    Rust

    • THRIFT-5299 - rs implementation compact protocol seq_id should not use zigzag encoding.
  • v0.14.0 Changes

    πŸ—„ Deprecated Languages

    • πŸ—„ THRIFT-5229 - Deprecate ActionScript 3 support

    βœ‚ Removed Languages

    • 🚚 THRIFT-4980 - Remove deprecated C# and netcore bindings from the code base
    • 🚚 THRIFT-4981 - Remove deprecated netcore bindings from the code base
    • 🚚 THRIFT-4982 - Remove deprecated C# bindings from the code base

    πŸ’₯ Breaking Changes

    • 🚚 THRIFT-4981 - Remove deprecated netcore bindings from the code base
    • 🚚 THRIFT-4982 - Remove deprecated csharp bindings from the code base
    • ⬆️ THRIFT-4990 - Upgrade to .NET Core 3.1 (LTS)
    • THRIFT-5006 - Implement DEFAULT_MAX_LENGTH at TFramedTransport
    • THRIFT-5069 - In Go library TDeserializer.Transport is now typed *TMemoryBuffer instead of TTransport
    • THRIFT-5072 - Haskell generator fails to distinguish between multiple enum types with conflicting enum identifiers
    • ⬆️ THRIFT-5116 - Upgrade NodeJS to 10.x
    • THRIFT-5138 - Swift generator does not escape keywords properly
    • THRIFT-5164 - In Go library TProcessor interface now includes ProcessorMap and AddToProcessorMap functions.
    • THRIFT-5186 - cpp: use all getaddrinfo() results when retrying failed bind() in T{Nonblocking,}ServerSocket
    • THRIFT-5233 - go: Now all Read*, Write* and Skip functions in TProtocol accept context arg
    • ⏱ THRIFT-5152 - go: TSocket and TSSLSocket now have separated connect timeout and socket timeout
    • 🏁 c++: dropped support for Windows XP
    • THRIFT-5326 - go: TException interface now has a new function: TExceptionType
    • THRIFT-4914 - go: TClient.Call now returns ResponseMeta in addition to error

    πŸš‘ Known Open Issues (Blocker or Critical)

    • βœ… THRIFT-3877 - C++: library don't work with HTTP (csharp server, cpp client; need cross test enhancement)
    • πŸ—„ THRIFT-5098 - Deprecated: "The high level Network interface is no longer supported. Please use Network.Socket." and other Haskell issues
    • THRIFT-5245 - NPE when the value of map's key is null
    • THRIFT-4687 - Add thrift 0.12.0 to pypi and/or enable more maintainers

    πŸ— Build Process

    • 🍎 THRIFT-4976 - Docker build: Test failure for StalenessCheckTest on MacOS
    • βœ… THRIFT-5087 - test/test.py fails with "AssertionError: Python 3.3 or later is required for proper operation."
    • THRIFT-5097 - Incorrect THRIFT_VERSION in ThriftConfig.cmake
    • THRIFT-5109 - Misc CMake improvements
    • THRIFT-5147 - Add uninstall function
    • πŸš€ THRIFT-5218 - Automated Github release artifacts do not match checksums provided
    • βœ… THRIFT-5249 - travis-ci : Failed to run FastbinaryTest.py

    C glib

    • THRIFT-4873 - Memory leak in c_glib
    • πŸ‘» THRIFT-5118 - Fix memory leak when the handler method return a exception
    • THRIFT-5134 - Fix memory leak when the handler method return FALSE
    • THRIFT-5144 - Fix memory leak when generate deserialize list element
    • ⚠ THRIFT-4272 - warnings in glibc library
    • THRIFT-4952 - Modified ssl_read feedback value break all the time error.
    • THRIFT-5076 - Improve CMake OpenSSL usage
    • THRIFT-5094 - Fix memory leak in thrift_server_set_property()
    • THRIFT-5101 - Return NULL install of FALSE for thrift_server_socket_accept()
    • THRIFT-5102 - Fix memory leak in thrift_simple_server_serve()
    • THRIFT-5136 - Fix memory leak in thrift_multiplexed_processor_process_impl()
    • THRIFT-5221 - Fix stack overflow when reading buffer
    • THRIFT-5237 - Implement MAX_MESSAGE_SIZE and consolidate limits into a TConfiguration class
    • THRIFT-5255 - Fix stack overflow in framed transport
    • ⚠ THRIFT-5256 - Fix some compile warnings
    • THRIFT-5268 - Fix some file loss ')' in define

    C++

    • THRIFT-1513 - Thrift compiler generates inconsistent code with some complex values (causing g++ to error: "has no member named '__isset')
    • THRIFT-5168 - Useless generated code when .thrift file only has service type
    • THRIFT-5179 - Thrift compiler will generate wrong code if IDL struct's name is 'a' or 'b'
    • πŸ’… THRIFT-5200 - Thrift compiler will generate incorrect code when add 'cob_style' option.
    • 🏁 THRIFT-4282 - StressTestNonBlocking is disabled in Appveyor as it is unstable on Windows in general
    • THRIFT-4682 - C++ TBinaryProtocol crashes on port scan
    • πŸ‘· THRIFT-4963 - TNonblockingServer blocked int addTask(IOThread) and notify(workerThread)
    • πŸ— THRIFT-5047 - fix cmake support to build cpp server without OPENSSL
    • THRIFT-5076 - Improve CMake OpenSSL usage
    • THRIFT-5078 - Handle named pipe clients quickly disconnecting
    • THRIFT-5086 - CMake target thrift::thrift has no INTERFACE_INCLUDE_DIRECTORIES property
    • THRIFT-5110 - Added a number of required libs for using static OpenSSL
    • THRIFT-5114 - Simplify the computation of the size of TMemoryBuffer
    • THRIFT-5177 - getaddrinfo() should not be used for Unix sockets
    • THRIFT-5178 - THttpClient should work without specifying host
    • THRIFT-5185 - C++: Add WebSocket Server Transport
    • THRIFT-5186 - AI_ADDRCONFIG: Thrift libraries crash with localhost-only network.
    • 🚚 THRIFT-5215 - C++: Remove portable_endian.h
    • πŸ—„ THRIFT-5217 - Deprecated boost header
    • THRIFT-5237 - Implement MAX_MESSAGE_SIZE and consolidate limits into a TConfiguration class
    • THRIFT-5290 - Adjusting cpp *.cproj msvcrt options according to LEGAL-538
    • THRIFT-5295 - Thread and ThreadFactory should be extensible
    • THRIFT-5344 - TTransport may throw raw pointer exceptions

    Compiler (General)

    • THRIFT-4173 - Go: thrift compiler generates wrong code for list of aliased type
    • THRIFT-4938 - Issues with version.h treatment
    • πŸ—„ THRIFT-4973 - Add deprecation messages for csharp and netcore
    • 🚚 THRIFT-4980 - Remove deprecated C# and netcore bindings from the code base
    • 🚚 THRIFT-4982 - Remove deprecated C# bindings from the code baseΓ―β€¦β€š
    • πŸ—„ THRIFT-5153 - Deprecate byte
    • THRIFT-5225 - Use nullptr instead of NULL
    • THRIFT-5302 - Add recursive function name uniqueness check

    D

    • βœ… THRIFT-5059 - Add cross tests for TZlibTransport in D
    • 🏁 THRIFT-5156 - D: Fix library compilation on Windows and compiler warnings
    • THRIFT-5166 - Add WebSocket Server Transport
    • THRIFT-5184 - D: WebSocket Server Transport Fix for Firefox

    Delphi

    • πŸ‘ THRIFT-5044 - Improve serialization support for TApplicationExceptions and custom exceptions
    • 🏁 THRIFT-5154 - Generate interface IDs (IID) for Windows platforms
    • THRIFT-5235 - Add property setter for isset flags
    • πŸ—„ THRIFT-5261 - Support for deprecated methods (via annotation)
    • πŸ‘» THRIFT-5004 - Make exception implementations more consistent
    • ♻️ THRIFT-5005 - Refactoring of the Delphi libs
    • THRIFT-5006 - Implement DEFAULT_MAX_LENGTH at TFramedTransport
    • THRIFT-5007 - Implement MAX_MESSAGE_SIZE and remaining read bytes control
    • πŸ‘ THRIFT-5009 - Serializer implemtation lacks support for layered transports
    • πŸ”§ THRIFT-5012 - Centralize configuration aspects into a commonly used configuration object
    • THRIFT-5015 - WinHTTP QueryDataAvailable cannot be used to retrieve total response size
    • THRIFT-5036 - buffered transport over sockets may run into unexpected timeouts
    • THRIFT-5048 - EnumUtils.ToString() throws for elements not known to the receiving end
    • THRIFT-5088 - Memory leak in TEndpointTransportBase
    • THRIFT-5123 - add possibility to query HTTP status code with WinHTTP
    • βœ… THRIFT-5146 - Align Delphi to the test suite arguments rules (its "--switch=value", not "--switch value")
    • THRIFT-5186 - AI_ADDRCONFIG: Thrift libraries crash with localhost-only network.
    • THRIFT-5188 - Occasional ERROR_INSUFFICIENT_BUFFER at WinHttpQueryHeaders()
    • πŸ‘» THRIFT-5251 - StringUtils.ToString() raises an exception for enum values outside range
    • THRIFT-5304 - TWinHTTPClientImpl may incorrectly report that the message size is reached

    πŸ“š Documentation

    • πŸ“š THRIFT-5037 - Documentation for TConfiguration
    • THRIFT-5065 - Fix broken links in the IDL document
    • βœ… THRIFT-5074 - Cleanup test suite command line options

    Go

    • πŸ“‡ THRIFT-4914 - Compiler generated service clients now provide a new function, LastResponseMeta_(), to get the response metadata (e.g. headers from THeader) from the last client call.
    • πŸ”Š THRIFT-4984 - Scary and spammy "error processing request: EOF" logs from TSimpleServer
    • 🌲 THRIFT-4985 - Clean up logging in go library
    • THRIFT-5002 - remote client fails to compile when extending services
    • THRIFT-5019 - Multiple import same namespace for go included files
    • 🚚 THRIFT-5046 - Custom tags remove db and json tags
    • THRIFT-5069 - Add TSerializerPool and TDeserializerPool, which are thread-safe versions of TSerializer and TDeserializer.
    • THRIFT-5092 - Panic on nil buffer writes
    • ⏱ THRIFT-5152 - Separate timeout in TSocket
    • πŸ‘ THRIFT-5164 - Go middleware support
    • THRIFT-5214 - go: Implement connection check in TSocket
    • ⏱ THRIFT-5233 - I/O timeout handling in go library
    • THRIFT-5240 - The context passed into server handler implementations will be canceled when we detected that the client closed the connection.
    • THRIFT-5257 - Go THeader implementation doesn't handle endOfFrame correctly
    • βœ… THRIFT-5270 - Go library unit test is broken in go 1.15
    • THRIFT-5278 - Expose API to use THeader+TCompactProtocol in go library client code
    • THRIFT-5279 - Cleanups/small optimizations for go's serializer/deserializer code
    • THRIFT-5294 - Go: TSimpleJSONProtocol could panic on WriteMessageEnd without matching WriteMessageBegin
    • πŸ‘ THRIFT-5322 - Add support to TConfiguration, and also fix a bug that could cause excessive memory usage when reading malformed messages from TCompactProtocol.
    • πŸš€ THRIFT-5338 - Proposal: Raise minimal supported Go version with upcoming 0.14.0 release

    Haskell

    • THRIFT-5072 - Haskell generator fails to distinguish between multiple enum types with conflicting enum identifiers
    • πŸ“¦ THRIFT-4959 - cabal.exe: --enable-tests was specified, but tests can't be enabled in a remote package
    • THRIFT-5211 - Handle incomplete reads correctly

    Java

    • THRIFT-4252 - Cannot shutdown Java server when clients are still connected
    • πŸ‘ THRIFT-4889 - Add SASL support for non-blocking server
    • THRIFT-4937 - Apache HttpCore 4.4.1 reached EoS
    • βœ… THRIFT-4949 - improve HTTP/1 server test case
    • THRIFT-5008 - Add a logger line in case of failing to dispose sasl
    • THRIFT-5013 - Use Java Objects RequireNonNull
    • THRIFT-5016 - Do Not Check 'other' For Null in Equals
    • πŸ‘€ THRIFT-5022 - TIOStreamTransport.isOpen returns true for one-sided transports (see THRIFT-2530).
    • THRIFT-5031 - Fix javadoc of TIOStreamTransport
    • ⚑️ THRIFT-5115 - PR #2022 Updated gradle to 6.2 broke CI
    • THRIFT-5190 - StringUtils haven't take (offset + length) > bytes.length into account
    • πŸ‘» THRIFT-5197 - TSSLTransportFactory Do Not Wrap NOT_OPEN Exception Type for Client
    • πŸ”Œ THRIFT-5201 - Use Apache Parent Pom for Thrift Maven Plugin
    • 🌲 THRIFT-5202 - TNonblockingMultiFetchClient Use SLF4J Parameterized Logging
    • 🚚 THRIFT-5203 - Remove Unused toString Method in TSerializer
    • THRIFT-5237 - Implement MAX_MESSAGE_SIZE and consolidate limits into a TConfiguration class
    • THRIFT-5247 - Avoiding meaningless System.copy
    • THRIFT-5274 - Thrift 0.13.0 does not work with JDK8
    • 🌲 THRIFT-5287 - Log When Client Connections are Dropped
    • 🚚 THRIFT-5288 - Move Support for ByteBuffer into TTransport

    JavaScript

    • THRIFT-5234 - Fix a number of js/ts generation issues

    Lua

    • THRIFT-5106 - Fix various Lua library and compiler issues
    • THRIFT-5260 - Fix the thrift compiler generate problematic lua code for the oneway method
    • THRIFT-4992 - thrift lua TcompactProtocol bug fix #1881
    • THRIFT-5262 - Fix a encoding struct bug in the compact protocol implementation to lua
    • πŸ‘ THRIFT-5282 - Add IPv6 client support to Lua library
    • THRIFT-5286 - Fix Lua library readBool() in TCompactProtocol
    • βœ… THRIFT-5325 - Fix Lua library writeStructEnd() in TCompactProtocol

    Markdown

    netstd

    • THRIFT-5032 - Allows PascalCase properties for netstd
    • THRIFT-5091 - Netstd generator produces uncompileable code for struct names ending with "_result" or "_args"
    • πŸ–¨ THRIFT-5095 - ToString() should print entire structure, not just the top-level data
    • THRIFT-5198 - Fix certain Visual Studio hints in generated netstd code
    • THRIFT-5216 - generate DeepCopy methods
    • THRIFT-5220 - DeepCopy() extension methods not generated when the IDL contains no service
    • THRIFT-5238 - GetHashCode can throw NullReferenceException
    • THRIFT-5253 - using Result in result name generates wrong IAsync interface
    • THRIFT-5254 - Member name cannot be Isset (unless it is an "required" member)
    • THRIFT-5316 - Netstd compiler generates wrong ToString() method: .ToString(sb)
    • THRIFT-5317 - netstd compiler does not escape keywords
    • THRIFT-5320 - Usage of "Task" as IDL identifier generates uncompileable code
    • ⬆️ THRIFT-4990 - Upgrade to .NET Core 3.1 (LTS)
    • THRIFT-5010 - BinaryPrimitives.Read/WriteInt32BigEndian should be used to convert to/from network byte order
    • ♻️ THRIFT-5020 - Refactoring & minor fixes for netstd library
    • THRIFT-5021 - Implement MAX_MESSAGE_SIZE and consolidate limits into a TConfiguration class
    • βœ… THRIFT-5026 - TestClient/Server ignores first cmdline argument
    • THRIFT-5027 - Implement remaining read bytes checks
    • 🌲 THRIFT-5053 - Fix the netstd tutorial console logging and README
    • THRIFT-5083 - NetStd JSON Protocol left in incorrect state
    • THRIFT-5133 - TCompactProtocol string allocation improvement
    • THRIFT-5172 - NetStd TBaseClient open output transport multiple times
    • 🐎 THRIFT-5210 - further performance optimizations
    • πŸ‘ THRIFT-5239 - THttpTransport should support passing in an HttpClient
    • THRIFT-5252 - Make CreateHttpClientHandler() method virtual
    • THRIFT-5275 - Compilation error with Thrift when used in .Net Framework 4.6.1 or above
    • THRIFT-5343 - TTlsSocketTransport does not resolve IPv4 addresses or validate hostnames correctly

    Node.js

    • THRIFT-3356 - TypeError: 'undefined' is not a function (evaluating 'Error.captureStackTrace(this, this.constructor)')
    • πŸ’» THRIFT-4994 - TWebSocketTransport false scope in forEach in browser
    • πŸ’» THRIFT-5003 - Websocket Connection in Browsers with nodejs code
    • THRIFT-5116 - Ubuntu xenial NodeJS 6.x is too old, 10.x required
    • πŸ’» THRIFT-5163 - adds Q to exports for browserify

    Perl

    • πŸ‘» THRIFT-5050 - Fix MemoryBuffer.pm to raise a proper exception if no data is available
    • βœ… THRIFT-5066 - Implement testBinary invocation in TestClient.pl

    PHP

    • THRIFT-4942 - Set PHP struct generated field values as private with getters and setters
    • THRIFT-5082 - Add a Class reference for PHP enum $_TSPEC
    • πŸ—„ THRIFT-5103 - PHP 7.4 THttpClient deprecated error
    • THRIFT-5130 - Use Apcu instead of APC
    • ⚠ THRIFT-5132 - Warning in TSocket when using ssl connection
    • THRIFT-5199 - Infinite loop in PHP TSocket::write when peer closes connection
    • ⏱ THRIFT-5336 - Add possibility to setup connection timeout in TCurlClient

    Python

    • THRIFT-2087 - unicode decode errors
    • THRIFT-4002 - Thrift exceptions are not hashable in Python 3
    • πŸ— THRIFT-5107 - Travis build fails with missing Python 3.3 or newer?
    • THRIFT-5165 - Python THttpClient saves cookie when Set-Cookie response header is present
    • THRIFT-5186 - AI_ADDRCONFIG: Thrift libraries crash with localhost-only network.
    • THRIFT-5248 - Python: Make TSocket.isOpen check if the other end is still connected
    • THRIFT-5303 - Unicode decode errors in _fast_decode
    • THRIFT-5331 - Python: allow THeaderProtocol to choose which subprotocol to use for outbound connections

    πŸ’Ž Ruby

    • ⚠ THRIFT-5281 - Some warning messages need to be fixed
    • πŸ’Ž THRIFT-4707 - Enable maintainers to upload newer versions of Ruby Gem of Thrift
    • πŸ“Œ THRIFT-5061 - Pin Ruby's rack version to 2.0.8
    • πŸ’Ž THRIFT-5100 - Gem::InstallError: byebug requires Ruby version >= 2.4.0.
    • πŸš€ THRIFT-5266 - release ruby library thrift 0.13.0

    Rust

    • πŸ—„ THRIFT-4764 - Rust frontend emits deprecated clippy suppression attributes
    • THRIFT-5071 - Rust: rust tutorial can not be compiled with rust edition 2018
    • ⚑️ THRIFT-5158 - Update Rust Compiler to generate 2018 edition code only
    • THRIFT-5307 - Rust generated code should compile cleanly with clippy
    • THRIFT-4915 - Deserializing double into OrderedFloat always returns zero when using TCompactProtocol
    • THRIFT-4995 - [Rust] Use ToSocketAddrs for expressing network addresses
    • βœ… THRIFT-5042 - Fix failing cargo tests
    • THRIFT-5043 - Make TBufferChannel clonable
    • πŸ‘· THRIFT-5111 - CI fails with error[E0721]: await is a keyword in the 2018 edition
    • THRIFT-5131 - i64 maxint decoding panics with integer-encoding >= 1.1.0
    • βœ… THRIFT-5306 - Rust library, tutorial, test, cross-test code should not throw any clippy errors

    Swift

    • πŸ‘» THRIFT-4989 - Run time exception when using TCompactProtocol
    • THRIFT-5128 - Swift TFramedTransport does not work using present code
    • THRIFT-5138 - Swift generator does not escape keywords properly
    • πŸ‘ THRIFT-5155 - Swift 5.1 support
    • πŸ—„ THRIFT-5070 - Swift: Hashable.hashValue is deprecated as a protocol requirement
    • πŸ‘ THRIFT-5084 - Swift: Server-side support for Multiplexing Services
    • THRIFT-5121 - Logic bug in TMultiplexedProcessor Γ’β‚¬β€œ Swift
    • THRIFT-5125 - Swift server does not work using present code.
    • THRIFT-5129 - Swift TSocketTransport cannot be used to connect to client
    • THRIFT-5150 - TSet does not compile with Swift 5.2

    βœ… Test Suite

    • βœ… THRIFT-4974 - Add cross test for Python's Unix domain socket transport
    • THRIFT-5145 - Streamline --pipe and --named-pipe options in the code base
    • THRIFT-5171 - Fix maven-ant-tasks to use HTTPS instead of HTTP

    TypeScript - Library

    • πŸ’» THRIFT-5003 - Websocket Connection in Browsers with nodejs code

    Tutorial

  • v0.13.0 Changes

    October 16, 2019

    πŸ†• New Languages

    • (none)

    πŸ—„ Deprecated Languages

    • πŸš€ THRIFT-4723 - CSharp and Netcore targets are deprecated and will be removed with the next release - use NetStd instead.

    βœ‚ Removed Languages

    • 🚚 THRIFT-4719 - Cocoa language was removed - use swift instead.

    πŸ’₯ Breaking Changes

    • 🚚 THRIFT-4743 - compiler: removed the plug-in mechanism
    • 🚚 THRIFT-4720 - cpp: C++03/C++98 support has been removed; also removed boost as a runtime dependency
    • 🚚 THRIFT-4730 - cpp: BoostThreadFactory, PosixThreadFactory, StdThreadFactory removed
    • THRIFT-4732 - cpp: CMake build changed to use BUILD_SHARED_LIBS
    • 🚚 THRIFT-4735 - cpp: Removed Qt4 support
    • THRIFT-4740 - cpp: Use std::chrono::duration for timeouts
    • THRIFT-4762 - cpp: TTransport::getOrigin() is now const
    • THRIFT-4702 - java: class org.apache.thrift.AutoExpandingBuffer is no longer public
    • THRIFT-4709 - java: changes to UTF-8 handling require JDK 1.7 at a minimum
    • THRIFT-4712 - java: class org.apache.thrift.ShortStack is no longer public
    • THRIFT-4725 - java: change return type signature of 'process' methods
    • THRIFT-4805 - java: replaced TSaslTransportException with TTransportException
    • THRIFT-2530 - java: TIOStreamTransport's "isOpen" now returns false after "close" is called
    • THRIFT-4675 - js: now uses node-int64 for 64 bit integer constants
    • THRIFT-4841 - delphi: old THTTPTransport is now TMsxmlHTTPTransport
    • THRIFT-4536 - rust: convert from try-from crate to rust stable (1.34+), re-export ordered-float

    πŸš‘ Known Issues (Blocker or Critical)

    • βœ… THRIFT-3877 - C++: library don't work with HTTP (csharp server, cpp client; need cross test enhancement)

    As3

    • THRIFT-4784 - Thrift should throw when skipping over unexpected data

    πŸ— Build Process

    • πŸ— THRIFT-2333 - RPMBUILD: Abort build if user did not disable ruby but ruby build will fail later on
    • πŸš€ THRIFT-4689 - Pull changes from 0.12.0 release branch into master
    • πŸš€ THRIFT-4690 - Update dlang deimos for OpenSSL 1.1 (use 1.1.0h tagged release instead of master)
    • ⬆️ THRIFT-4694 - Upgrade Java to Java 1.8
    • πŸš€ THRIFT-4716 - Create a version alignment tool to make releases easier
    • THRIFT-4760 - Install pkgconfig when using cmake
    • πŸ“¦ THRIFT-4769 - Change NuGet package to use netstd artifact
    • THRIFT-4811 - Add cmake config module
    • πŸ‘· THRIFT-4855 - go CI fails with "cannot find package "golang.org/x/tools/go/packages" in any of ..."
    • πŸ‘· THRIFT-4864 - CI fails at netstd
    • THRIFT-4874 - Thrift 0.12.0 Source Distribution (.tar.gz) Contains Hardlinks - Extract Fails
    • πŸ— THRIFT-4896 - cpp and c_glib include paths are added to source files when building
    • πŸ— THRIFT-4966 - Git ignore files generated by the build

    C glib

    • THRIFT-4842 - Multiplexed protocol has a memory leak in set c_glib
    • πŸ‘ THRIFT-4878 - c_glib ThriftSocket support for unix domain sockets
    • THRIFT-4950 - fix bind print error and Macro call errors thrift_server_socket

    C

    • ⏱ THRIFT-3587 - C# TTLSSocket does not use timeout for opening the socket
    • THRIFT-4024 - Skip() should throw on unknown data types
    • THRIFT-4684 - Missing namespace and un-used private fields in WCF fault classes when enable WCF in C# code generation
    • THRIFT-4715 - C# union "data" should be strongly-typed
    • πŸ—„ THRIFT-4723 - Consolidate C# and netcore into new netstd language target (and finally deprecate both C# and netcore bindings)
    • THRIFT-4741 - Missing "inner" argument from one CTOR
    • πŸ“¦ THRIFT-4769 - Change NuGet package to use netstd artifact
    • THRIFT-4859 - Enables changing 'UserAgent'
    • THRIFT-4907 - strong named assemblies wanted

    C++

    • THRIFT-4384 - Using a concurrent client with cpp async is not safe.
    • πŸ— THRIFT-4441 - C++: support building lib without Boost
    • 🏁 THRIFT-4487 - gettimeofday: windows implementation not quoting source, applying license to foreign code
    • 🐧 THRIFT-4593 - Unit Tests failing on Alpine Linux due to non-portable mutex initializers
    • THRIFT-4678 - add noexcept cpp generator option
    • ♻️ THRIFT-4720 - Drop support for C++03/C++98 and begin refactoring
    • 🚚 THRIFT-4730 - Remove pthread and boost::thread library support and use std::thread for C++11
    • 🚚 THRIFT-4735 - Remove C++ Qt4 support (leave Qt5) - Qt4 LTS ended in 2014
    • 🏁 THRIFT-4739 - Good old concurrency_test failing on windows builds again with some regularity
    • 🚚 THRIFT-4740 - Use std::chrono for timeout and remove old structures.
    • ♻️ THRIFT-4762 - C++: Applied some C++11 refactorings to the runtime library and compiler
    • THRIFT-4776 - Modernize c++11 code by clang-tidy
    • THRIFT-4830 - Add to_string function for enum in C++ file generate
    • 🚚 THRIFT-4861 - Fix use of deprecated boost endian header; move to minimum boost 1.56.0
    • πŸ‘» THRIFT-4936 - add depth limit type exception description
    • THRIFT-4962 - Deadlock in TimerManager::stop

    cocoa

  • v0.12.0 Changes

    December 27, 2018

    πŸš€ Released 2019-JAN-04

    πŸ†• New Languages

    • Common LISP (cl)
    • Swift
    • Typescript (nodets)

    πŸ—„ Deprecated Languages

    • 🚚 C++03/C++98 (move to C++11)
    • 🚚 Cocoa (move to Swift)

    πŸ’₯ Breaking Changes (since 0.11.0)

    • THRIFT-4529 - Rust enum variants are now camel-cased instead of uppercased to conform to Rust naming conventions
    • πŸ‘ THRIFT-4448 - Support for golang 1.6 and earlier has been dropped.
    • 0️⃣ THRIFT-4474 - PHP now uses the PSR-4 loader by default instead of class maps.
    • THRIFT-4532 - method signatures changed in the compiler's t_oop_generator.
    • THRIFT-4648 - The C (GLib) compiler's handling of namespaces has been improved.

    πŸš‘ Known Issues (Blocker or Critical)

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

    πŸ— Build Process

    • 🏁 THRIFT-4067 - Windows thrift compiler distributed on the apache web site has runtime dependencies
    • 🐳 THRIFT-4308 - D language docker images need demios for libevent and openssl fixed to re-enable make cross on dlang
    • πŸ— THRIFT-4579 - Use Ubuntu Bionic (18.04 LTS) for CI builds instead of Artful (17.10)
    • πŸ‘· THRIFT-4508 - Define CI operating system coverage rules for the project and (hopefully) simplify CI a little more
    • THRIFT-4397 - ubuntu install instructions broken on 16.04
    • ⚑️ THRIFT-4545 - Appveyor builds are failing due to a haskell / cabal update in chocolatey
    • ⚑️ THRIFT-4452 - optimize Dockerfile (only onetime apt-get update)
    • πŸ— THRIFT-4440 - rm build/docker/ubuntu-trusty/Dockerfile.orig
    • THRIFT-4352 - Ubuntu Artful doesn't appear to be compatible with Thrift and Haxe 3.4.2
    • βœ… THRIFT-4666 - DLang Client Pool Test fails sporadically
    • πŸ— THRIFT-4676 - CL tutorial build fails sporadically
    • πŸ— THRIFT-4456 - Make haxelib download quiet so it doesn't blow up the build log
    • THRIFT-4605 - bootstrap.sh fails if automake=1.16.1

    c_glib

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

    πŸ‘ cl (new language support in 0.12.0)

    csharp

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

    cpp

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

    compiler

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

    dlang

    • πŸ— THRIFT-4478 - Thrift will not build with dlang 2.078 or later
    • THRIFT-4503 - dlang servers logError on normal client disconnection
    • 🐳 THRIFT-4308 - D language docker images need demios for libevent and openssl fixed to re-enable make cross on dlang

    dart

    delphi

    • πŸ‘» THRIFT-4562 - Calling wrong exception CTOR leads to "call failed: unknown result" instead of the real exception being thrown
    • THRIFT-4554 - uncompileable code with member names that are also types under specific conditions
    • THRIFT-4422 - Add Async implementation via IFuture
    • THRIFT-4485 - Possible invalid ptr AV with overlapped read/write on pipes
    • THRIFT-4549 - Thrift exceptions should derive from TException
    • THRIFT-4540 - buffered transport broken when trying to re-open a formerly closed transport
    • 🚚 THRIFT-4473 - Move Thrift.Console.pas out of the Library
    • 0️⃣ THRIFT-4490 - Allow a default service as fallback for multiplex processors connected by old clients
    • THRIFT-4454 - Large writes/reads may cause range check errors in debug mode
    • THRIFT-4461 - Compiler directive should match Delphi XE4
    • THRIFT-4462 - First line in Console duplicated
    • THRIFT-4642 - FPU ctrl word settings may cause an unexpected "denormalized" error
    • THRIFT-4589 - HTTP client timeouts are a) incomplete and b) not used at all
    • βœ… THRIFT-4590 - running the test client using HTTP transport leads to "CoInitialize not called"

    erlang

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

    golang

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

    haskell

    • πŸ— THRIFT-4634 - Haskell builds with older cabal cannot reconcile complex version requirements

    java

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

    js

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

    lua

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

    netcore

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

    node.js

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

    perl

    • THRIFT-4382 - Replace the use of Perl Indirect Object Syntax calls to new()
    • πŸš€ THRIFT-4471 - Thrift CPAN release is missing Makefile.PL and the clients are unable to build the module
    • THRIFT-4416 - Perl CPAN Packaging Improvements

    php

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

    python

    • THRIFT-4670 - Twisted, slots, and void method fails with "object has no attribute 'success'"
    • THRIFT-4464 - Potentially server-crashing typo in Python TNonblockingServer
    • πŸ‘ THRIFT-4548 - Supporting TBinaryProtocolAccelerated protocol when using TMultiplexedProcessor in Python
    • βœ… THRIFT-4577 - Outdated cipher string in python unit test
    • 🏁 THRIFT-4505 - python build on Vagrant Windows boxes fails
    • THRIFT-4621 - THeader for Python
    • πŸ”§ THRIFT-4668 - make socket backlog configurable for python
    • ⏱ THRIFT-4561 - Python: cleanup socket timeout settings

    πŸ’Ž ruby

    • βœ… THRIFT-4289 - Thrift RSpec test suite fails with Ruby 2.4.x due to Fixnum deprecation
    • πŸ’Ž THRIFT-4342 - Support ruby rspec 3
    • βœ… THRIFT-4525 - Add ssl socket option to ruby cross tests
    • πŸ‘€ THRIFT-4450 - Add seek support to TCompactInputProtocol in Rust
    • πŸ’Ž THRIFT-4631 - Codegen Creates Invalid Ruby for Recursive Structs
    • πŸ’Ž THRIFT-4472 - Fix the genspec for ruby so it does not complain about an invalid license

    rust

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

    πŸ‘ swift (new language support in 0.12.0)

    βœ… test suite

    • βœ… THRIFT-4515 - Gracefully shutdown cross-test servers to fully test teardown
    • βœ… THRIFT-4085 - Add .NET Core to the make cross standard test suite
    • βœ… THRIFT-4358 - Add unix domain sockets in ruby to cross test - code exists

    πŸ‘ typescript (new language support in 0.12.0)

    • πŸ‘ THRIFT-3143 - add typescript directory support
  • v0.11.0 Changes

    December 03, 2017

    πŸš€ Released 2017-DEC-27

    Sub-task

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

    πŸ› Bug

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

    πŸ“š Documentation

    • 🐧 THRIFT-4157 - outdated readme about Haxe installation on Linux

    πŸ‘Œ Improvement

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

    πŸ†• New Feature

    • THRIFT-750 - C++ Compiler Virtual Function Option
    • πŸ‘ THRIFT-2945 - Implement support for Rust language
    • πŸ‘ THRIFT-3857 - thrift js:node compiler support an object as parameter not an instance of struct
    • THRIFT-3933 - Port official C# .NET library for Thrift to C# .NET Core library
    • ⚑️ THRIFT-4039 - Update of Apache Thrift .Net Core lib
    • THRIFT-4113 - Provide a buffer transport for reading/writing in memory byte stream

    Question

    • THRIFT-2956 - autoconf - possibly undefined macro - AC_PROG_BISON
    • πŸ‘ THRIFT-4223 - Add support to the isServing() method for the C++ library

    Task

    • πŸ—„ THRIFT-3622 - Fix deprecated uses of std::auto_ptr
    • 🚚 THRIFT-4028 - Please remove System.out.format from the source code
    • πŸ— THRIFT-4186 - Build and test rust client in Travis

    βœ… Test

    • πŸ‘ THRIFT-4264 - PHP - Support both shared & static linking of sockets library

    Wish

    • THRIFT-4344 - Define and maintain the minimum language level for all languages in one place
  • v0.10.0 Changes

    January 06, 2017

    πŸ› Bug

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

    πŸ“š Documentation

    • THRIFT-3867 - Specify BinaryProtocol and CompactProtocol

    Epic

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

    πŸ‘Œ Improvement

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

    πŸ†• New Feature

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

    Question

    Story

    • THRIFT-3452 - .travis.yml: Migrating from legacy to container-based infrastructure

    Sub-task

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

    Task

    • πŸ”€ THRIFT-1801 - Sync up TApplicationException codes across languages and thrift implementations
    • THRIFT-1259 - Automate versioning

    βœ… Test

    Wish

    • 🚚 THRIFT-3923 - Maybe remove Aereo from the "Powered by" list
    • 0️⃣ THRIFT-2149 - Add an option to disable the generation of default operators
  • v0.9.3 Changes

    October 11, 2015

    πŸ› Bug

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

    πŸ“š Documentation

    πŸ‘Œ Improvement

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

    πŸ†• New Feature

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

    Question

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

    Sub-task

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

    Task

    • 🚚 THRIFT-2834 - Remove semi-colons from python code generator
    • THRIFT-2853 - Adjust comments not applying anymore after THRIFT-2852

    βœ… Test

    • πŸ‘ THRIFT-3211 - Add make cross support for php TCompactProtocol

    Wish

    • THRIFT-2838 - TNonblockingServer can bind to port 0 (i.e., get an OS-assigned port) but there is no way to get the port number
  • v0.9.3.1 Changes

    March 13, 2019

    πŸš€ This release is a backport of the security fix for CVE-2018-1320 as documented in THRIFT-4506. The only code change is in Java, and a 0.9.3-1 package was released to Maven Central.

    πŸš€ This is marked in GitHub as a pre-release so that it does not become the "latest" release.