Apache Thrift v0.15.0 Release Notes

  • ๐Ÿš‘ Known Open Issues (Blocker or Critical)

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

    โœ‚ Removed Languages

    ๐Ÿ’ฅ Breaking Changes

    • THRIFT-5381 - possible collisions at VOID type with some 3rd-party libraries on Haxe cpp targets
    • ๐Ÿ—„ THRIFT-5396 - deprecate netstd "Async" method postfix
    • THRIFT-5453 - go: NewTSocketConf and NewTSSLSocketConf no longer return an error

    AS3

    • ๐Ÿšš THRIFT-5229 - Deprecate/remove ActionScript 3 support

    ๐Ÿ— Build Process

    • ๐Ÿ”€ THRIFT-5334 - version of thrift-maven-plugin is not sync with the main project
    • ๐Ÿ‘ท THRIFT-5394 - AppVeyor CI tries to download outdated cmake
    • THRIFT-5429 - build: autotools: add foreign to AM_INIT_AUTOMAKE

    C glib

    • ๐Ÿ—„ THRIFT-5244 - Dynamic exception specifications are deprecated in C++11[-Wdeprecated]
    • THRIFT-5265 - Add the zlib transport to c_glib
    • THRIFT-5399 - Fix socket leak in abnormal situation
    • THRIFT-5421 - Fix the problem of incorrect setting of errno in some files

    C++

    • ๐Ÿ’… THRIFT-5341 - Fix Old-Style-Cast, Missing override and Possible noexcept
    • ๐Ÿšš THRIFT-5342 - Apply 'noexcept' attribute to Init/Copy/Move Constructors and Assignments
    • THRIFT-5355 - Do not rely on compiler and check boundaries

    D language

    • ๐Ÿ—„ THRIFT-4303 - D deprecation warnings
    • ๐Ÿ—„ THRIFT-4979 - Still D deprecation warnings about std.datetime.* in current master
    • ๐Ÿ—„ THRIFT-5376 - Fix deprecation warnings in D library

    Dart

    • โšก๏ธ THRIFT-5285 - Update to dart 2, widen range on http package

    Delphi

    • ๐Ÿ— THRIFT-5350 - 0.14.0 fails to build on non-x86
    • THRIFT-5438 - Inconsistent handling of exceptions during message read vs. message write phase
    • THRIFT-5384 - Improved error message for HTTP transports
    • THRIFT-5385 - XML-HTTP client reports IsOpen=TRUE even if it is not
    • THRIFT-5386 - XML-HTTP client may throw "max message size reached" incorrectly
    • โœ… THRIFT-5387 - Improved and simplified Delphi test setup
    • THRIFT-5390 - Named Pipes transport hardening
    • ๐ŸŽ THRIFT-5428 - Prevent costly reallocations to improve performance
    • THRIFT-5437 - Make TProtocolImpl CTOR virtual

    ๐Ÿ“š Documentation

    • THRIFT-5332 - Question: list all the reserved words in thrift doc
    • โšก๏ธ THRIFT-5348 - Update debian/copyright

    Erlang

    Go

    • THRIFT-5337 - Go set fields write improvement
    • THRIFT-5353 - Namespace from type is ignored in generated code
    • THRIFT-5358 - Add go.mod file(s)
    • ๐Ÿ›ฐ THRIFT-5369 - Malformed payload can still cause huge allocations
    • THRIFT-5389 - Thrift compiler generates uncompilable go code around optional constants
    • โฑ THRIFT-5404 - TTransportException.Timeout would correctly return true when it's connect timeout during TSocket.Open call
    • ๐Ÿš€ THRIFT-5447 - Update supported Go versions before 0.15.0 release
    • THRIFT-5453 - go: NewTSocketConf should not call net.ResolveTCPAddr
    • ๐Ÿ‘ป THRIFT-5459 - Adding a new exception to an endpoint is kinda breaking in go
    • โฑ THRIFT-5453 - Defer DNS lookups from NewTSocketConf (without any timeout check) to TSocket.Open (subject to ConnectTimeout set in TConfiguration)
    • THRIFT-5459 - Client calls will return TApplicationException with MISSING_RESULT when the result is a struct but is unset, and no other error is known.

    Haskell

    Haxe

    • THRIFT-5370 - Haxe 4 compatibility
    • THRIFT-5381 - possible collisions at VOID type with some 3rd-party libraries on Haxe cpp targets
    • THRIFT-5393 - Incorrect namespaces for included types
    • ๐Ÿ“ฆ THRIFT-3036 - create official haxelib Thrift package
    • THRIFT-5413 - Int vs String in method get_size required by property size

    Java

    • โœ… THRIFT-5375 - Put org.apache.tomcat.embed:tomcat-embed-core into scope test
    • THRIFT-5383 - TJSONProtocol Java readString throws on bounds check
    • ๐Ÿ“ฆ THRIFT-5400 - Java library does not export the .annotation package
    • ๐Ÿ‘ป THRIFT-5425 - Throw an exception when reading TSimpleJson in Java
    • ๐Ÿ“‡ THRIFT-5430 - FieldMetaData synchronized method can trigger deadlock during static class initialization in JVM native code
    • THRIFT-5432 - TSaslTransport throw TTransportException of MaxMessageSize reached
    • THRIFT-5433 - Add Counter To Thread Name of TThreadPoolServer

    JavaScript

    • THRIFT-3508 - JS:TS Generator set all fields of the struct as required

    Lua

    • 0๏ธโƒฃ THRIFT-5417 - Fix Lua compiler omitting default values in Lua service functions
    • ๐Ÿ‘ THRIFT-5439 - Lua Generator does not support const i64

    netstd

    • โš  THRIFT-5354 - disable IDE0083 warning
    • 0๏ธโƒฃ THRIFT-5382 - Netstd default list/set enums values are generated incorrectly in some cases
    • THRIFT-5395 - inconsistent treatment of methods ending in "Async"
    • ๐Ÿ—„ THRIFT-5396 - deprecate "Async" method postfix
    • ๐Ÿ—„ THRIFT-5408 - Support for deprecated methods (via annotation)
    • THRIFT-5414 - Use of specific parameter names generates uncompileable code
    • THRIFT-5442 - Separate client service calls into send/recv methods and make them public
    • THRIFT-5444 - Netstd generator produces uncompileable code for enums ending with "_result" or "_args"
    • THRIFT-5445 - "cancellationToken" cannot be used as argument name
    • โฑ THRIFT-5236 - THttpTransport.cs still has bad timeout code
    • ๐Ÿ‘ THRIFT-5349 - Add net5.0 as supported platform
    • THRIFT-5373 - HTTP status in case of Protocol/Transport exceptions
    • THRIFT-5391 - Named pipes transport hardening
    • THRIFT-5398 - ThreadPoolServer not stoppable via CancellationToken
    • ๐Ÿ‘ THRIFT-5407 - Keep support for .NET Core 3.1
    • ๐ŸŽ THRIFT-5419 - Incorrect usage of thread pool in TThreadPoolAsyncServer may lead to poor performance
    • โœ… THRIFT-5422 - add threadpool server to netstd test suite impl
    • THRIFT-5431 - Response should include 'content-type' header
    • 0๏ธโƒฃ THRIFT-5436 - Timeout.Infinite is not a good default

    PHP

    Python

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

    ๐Ÿ’Ž Ruby

    • ๐Ÿ”ง THRIFT-5312 - The Ruby compilation configuration in the .gemspec file is modified to be compatible with later bundler versions.
    • ๐Ÿ’Ž THRIFT-5367 - Ruby library crashes when using GC.compact

    Rust

    • ๐Ÿ‘ THRIFT-4098 - Support user-defined output namespaces in generated Rust modules
    • THRIFT-4101 - Make auto-generated Rust enums and unions more user-extensible
    • THRIFT-5314 - Enum forward compatibility
    • THRIFT-5363 - All-caps constant rendered incorrectly