thrift
Rust bindings for the Apache Thrift RPC system
0.24.0
89M downloads/mo
#860 most downloaded on crates.io
apache/thrift
What this package is like to depend on
Last release 1 months ago
11 Jul 2026
Release timing varies
gaps range from 9 days to 3.6 years
Most releases are documented
notes for 10 of 13 stable releases
1 version withdrawn
withdrawn after publishing
9 years old
14 releases · first in 2017
2 releases in the last 12 months
see the full history below
Release timeline
14 releases · Apr 2017 to Jul 2026Releases
latest 14-
0.24.011 Jul 2026Release notes
Open source →Please head over to the official release download source:
http://thrift.apache.org/downloadThe assets listed below are added by Github based on the release tag and they will therefore not match the checkums published on the Thrift project website.
Release notes
Open source →Build Process
- THRIFT-5000 - Thrift docker image publish on releases
- THRIFT-5855 - Improve fuzzing support
- THRIFT-5952 - Optimize MSVC Docker image to reduce size and speed up CI
- THRIFT-5965 - Add zizmor for GitHub Actions workflows security analysis
- THRIFT-5967 - Refactor SCA GitHub workflow for better extensibility
- THRIFT-5973 - Automated CHANGELOG creation
- THRIFT-6002 - Add netstd codegen test script and GitHub Actions CI matrix job (.NET 8/9/10)
- THRIFT-6003 - Add Haxe codegen test script and GitHub Actions CI job
- THRIFT-6077 - improve CHANGES.md generator section assignment
- #3613 - Bump rubygems/release-gem from 1.2.0 to 1.4.0
- #3616 - Bump ruby/setup-ruby from 1.310.0 to 1.314.0
- #3617 - Bump rust-lang/crates-io-auth-action from 1.0.4 to 1.0.5
- #3618 - Bump jvm from 2.3.21 to 2.4.0 in /lib/kotlin
- #3619 - Bump com.diffplug.spotless from 8.5.1 to 8.7.0 in /lib/kotlin
- #3615 - Bump actions/setup-go from 6.4.0 to 6.5.0
- THRIFT-6092 - fix off-by-ten header bounds check in readHeaderFormat
- #3593 - Bump shell-quote from 1.7.3 to 1.8.4 in /lib/js
- #3591 - Bump shell-quote from 1.7.3 to 1.8.4 in /lib/ts
- #3589 - Update MSVC CI to windows-2025-vs2026 runner and start Docker service explicitly
- #3581 - Run the Haxe library unit tests (neko) in CI
- #3576 - Bump ruby/setup-ruby from 1.306.0 to 1.310.0
- #3575 - Bump zizmorcore/zizmor-action from 0.5.3 to 0.5.6
- #3577 - Bump actions/setup-dotnet from 4.3.1 to 5.2.0
- #3574 - Bump com.diffplug.spotless from 8.4.0 to 8.5.1 in /lib/kotlin
- #3572 - Bump org.jetbrains.kotlinx:kotlinx-coroutines-jdk8 in /lib/kotlin
- #3578 - Harden the MSVC build workflow against transient Docker daemon unavailability
- #3564 - Enable Copilot reviews
- #3565 - Allow CI to fail on ruby-head
- #3517 - Bump uuid and nyc
- #3513 - Remove Ruby known failures from cross-test list
- #3501 - Fix netstd CI .NET SDK setup
- #3496 - Add generator paths to mergeable labels
- #3430 - Updated projects settings in .asf.yaml (features, merge buttons, Jira autolinking)
- #3487 - Update to setup-php 2.37.1
- #3471 - Update build.yml
- #3461 - Migration *.sln to *.slnx (except c++ libs)
- #3454 - Fixing bundler on ruby-head build
- #3440 - Removed deprecated 'publish' workflow
- #3439 - Pin all actions to a specific SHA consistently
- #3437 - Validate GitHub workflows against the ASF allowlist
- #3433 - Pin actions/upload-artifact to a specific SHA consistently
- #3433 - Bump actions/upload-artifact from 7.0.0 to 7.0.1
- #3434 - Bump jvm from 2.3.20 to 2.3.21 in /lib/kotlin
- #3423 - Bump uuid from 13.0.0 to 14.0.0
- #3424 - Bump json from 2.18.1 to 2.19.2 in /lib/rb
- #3404 - Cleanup Adobe Flex SDK installation following AS3 library removal
- #3400 - Bump json from 2.18.1 to 2.19.2 in /test/rb
- #3397 - Address vulnerabilities in Rack
- #3386 - Bump lodash from 4.17.23 to 4.18.1
- #2957 - Fix PHP cross-test server IPv4 binding
- #3384 - Fix ubuntu-noble Docker build: modernize NodeSource GPG setup
- #3384 - Fix ubuntu-focal Docker build: update NodeSource setup and ENV format
- #3384 - Fix ubuntu-jammy Docker build: update NodeSource and ENV format
- #3380 - Fix docker warnings on ENV format
- #3380 - Override enforcement of PEP 668
C glib
- THRIFT-5930 - thrift_server_socket() copies Unix socket paths into sockaddr_un.sun_path without bounds checking
- THRIFT-6088 - Add consumed byte tracking to ThriftZlibTransport read
- THRIFT-6091 - Widen container size precheck to 64-bit in c_glib protocols
- THRIFT-6094 - Copy buffered data not the GByteArray struct in c_glib read_slow
- #3585 - limit recursion depth in c_glib thrift_protocol_skip
- THRIFT-6086 - Add peer hostname validation to c_glib TLS client
- #3393 - Fix parent class resolution in c_glib generated dispatch_call
C++
- THRIFT-3165 - Disable unsafe TLSv1.0 and TLSv1.1 by default
- THRIFT-6021 - When C++ client with HTTP transport calls a oneway RPC method, it must not expect a response
- THRIFT-6060 - C++ THttpClient does not reopen socket after server sends Connection: close
- THRIFT-6073 - Allow injecting external SSL_CTX into C++ SSLContext
- THRIFT-6088 - Add decompressed byte tracking to C++ TZlibTransport
- THRIFT-6091 - Widen container size precheck to 64-bit in C++ protocols
- THRIFT-6093 - Read the zlib transform result directly in THeaderTransport untransform
- THRIFT-6096 - Fix info-header string bound check in THeaderTransport::readString
- THRIFT-6092 - link UnitTests against libthriftz to resolve THeaderTransport vtable
- THRIFT-6092 - fix off-by-ten header bounds check in readHeaderFormat
- #3569 - Add the cpp.ref (&) annotation to the recursive exception in Recursive.thrift
- #3519 - Preserve private_optional field order
- #3498 - change sprintf to snprintf to eliminate security warnings on OSX
- THRIFT-6087 - Enforce RFC 6125 wildcard placement in TSSLSocket hostname matching
- #3508 - Replace memory-safety asserts with unconditional throws in TBufferTransports
- #3431 - Remove another boost header from the public API
Compiler (General)
- #3529 - nodejs+compiler: Add opt-in BigInt support for int64 via js:bigint flag
- #3461 - Migration *.sln to *.slnx (except c++ libs)
- #2957 - Fix PHP cross-test server IPv4 binding
- #3372 - Fix JavaScript exception construction implementation (ES6)
D
- THRIFT-6053 - Limit struct read/write recursion depth in D library
- THRIFT-6088 - Add decompressed data size limit to D TZlibTransport
Dart
- THRIFT-6034 - Harden Dart protocol negative sizes
- THRIFT-6056 - Limit struct read/write recursion depth in Dart library
- THRIFT-6084 - Add byte-count limit to TCompactProtocol varint reader
Delphi
- THRIFT-2462 - prevent possible stack overflow due to recursive syntax support
- THRIFT-6007 - Implement MESSAGE_SIZE_LIMIT exception type for Delphi library
- THRIFT-6091 - Compute container size precheck in 64-bit in Delphi protocols
- THRIFT-6084 - Add byte-count limit to TCompactProtocol varint reader
Documentation
- #3520 - added thrift-threat-model.md, SECURITY.md and security section to AGENTS.md
Erlang
- THRIFT-6030 - Harden Erlang protocol negative sizes
- THRIFT-6084 - Add byte-count limit to TCompactProtocol varint reader
Go
- THRIFT-5214 - go: Implement connection check in TSocket
- THRIFT-5969 - Introduce gofmt for Go library
- THRIFT-5996 - go: connection check should work for TLS sockets
- THRIFT-6011 - Make compiled Go code formatting compatible with gofmt
- THRIFT-6012 - Fix inverted regexp.MatchString arguments and precompile patterns in Go validator
- THRIFT-6044 - Limit struct read/write recursion depth in Go library
- THRIFT-6071 - Validate container size fits int32 range before narrowing conversion in TSimpleJSONProtocol
- THRIFT-6088 - Add decompressed data size limit to TZlibTransport
- THRIFT-6091 - Bound the container element count before the 64-bit size precheck in the Go JSON protocol
- THRIFT-6091 - widen container size precheck to 64-bit in go protocols
- #3599 - check wire-supplied size in simple json ReadMapBegin
- #3497 - Bump golang.org/x/sys to 0.0.0-20220412211240-33da011f77ad
- #3458 - Prevent concurrent calls to socketConn.Close() in Go
- #3428 - Fix range check on 32-bit architectures
- #3379 - Replace addr with factory in TServerSocket
- THRIFT-6084 - Add byte-count limit to TCompactProtocol varint reader
- #3381 - added int range checks
Haxe
- THRIFT-5992 - Haxe generator: keyword escaping, stdlib-type renaming, typedef import and FIELD_ID fixes
- THRIFT-5993 - Haxe generator: cross-package import shadowing and Haxe base-type name collisions
- THRIFT-5994 - Haxe generator: map<bool,V>, map<double,V>, map<binary,V> and set equivalents generate invalid ObjectMap/ObjectSet
- THRIFT-6003 - Add Haxe codegen test script and GitHub Actions CI job
- THRIFT-6006 - Implement MESSAGE_SIZE_LIMIT exception type for Haxe library
- THRIFT-6065 - Haxe TMemoryStream cannot be written to (fixed-size buffer, uninitialized Position)
- THRIFT-6091 - Compute container size precheck in 64-bit in Haxe protocols
- #3571 - Add recursion-depth round-trip test for the Haxe library
- THRIFT-6084 - Add byte-count limit to TCompactProtocol varint reader
Java
- THRIFT-6088 - Add decompressed byte tracking to Java TZlibTransport
- #3618 - Bump jvm from 2.3.21 to 2.4.0 in /lib/kotlin
- #3619 - Bump com.diffplug.spotless from 8.5.1 to 8.7.0 in /lib/kotlin
- #3605 - enforce stringLengthLimit in TCompactProtocol.readBinary
- #3574 - Bump com.diffplug.spotless from 8.4.0 to 8.5.1 in /lib/kotlin
- #3572 - Bump org.jetbrains.kotlinx:kotlinx-coroutines-jdk8 in /lib/kotlin
- THRIFT-6085 - Add message byte tracking to consumeBuffer() in Java transports
- #3434 - Bump jvm from 2.3.20 to 2.3.21 in /lib/kotlin
- #3420 - Fix Java Spotless formatting
- #3415 - Connect skip() to TConfiguration recursion limit
- #3412 - Use bounded default for maxSkipDepth in TProtocolUtil
- THRIFT-6084 - Add byte-count limit to TCompactProtocol varint reader
- #3396 - Enable TLS hostname verification in TNonblockingSSLSocket
- #3390 - Enable TLS hostname verification in TSSLTransportFactory
JavaME
- THRIFT-6036 - Harden JavaME protocol negative sizes
- THRIFT-6055 - Limit struct read/write recursion depth in javame library
JavaScript
- THRIFT-6014 - Add recursion depth limit to skip() in JavaScript library
- THRIFT-6017 - Upgrade jsdoc from 3.6 to 4.x in lib/js and lib/ts
- THRIFT-6020 - Address remaining npm transitive dependency vulnerabilities via audit fix (minimatch, elliptic, lodash)
- THRIFT-6037 - Harden JavaScript (browser) protocol negative sizes
- THRIFT-6046 - Limit struct read/write recursion depth in js library
- #3593 - Bump shell-quote from 1.7.3 to 1.8.4 in /lib/js
- #3591 - Bump shell-quote from 1.7.3 to 1.8.4 in /lib/ts
- #3517 - Bump uuid and nyc
- #3423 - Bump uuid from 13.0.0 to 14.0.0
- #3385 - Add test for ES6 generated exception constructor
- #3386 - Bump lodash from 4.17.23 to 4.18.1
- #3372 - Fix JavaScript exception construction implementation (ES6)
Kotlin
- THRIFT-6054 - Limit struct read/write recursion depth in Kotlin library
- #3618 - Bump jvm from 2.3.21 to 2.4.0 in /lib/kotlin
- #3572 - Bump org.jetbrains.kotlinx:kotlinx-coroutines-jdk8 in /lib/kotlin
- #3434 - Bump jvm from 2.3.20 to 2.3.21 in /lib/kotlin
Lua
- THRIFT-6031 - Harden Lua protocol negative sizes
- THRIFT-6049 - Limit struct read/write recursion depth in Lua library
- #3448 - final change to make header parsing case insensitive
- THRIFT-6084 - Add byte-count limit to TCompactProtocol varint reader
Markdown
- THRIFT-6027 - Fix UB/assertion in t_markdown_generator::str_to_id (debug build crash)
- THRIFT-6038 - Markdown generator: use .md extension by default and render @param/@return tags as table
Mermaid
- THRIFT-6026 - Add Mermaid diagram generator (--gen mmd)
netstd
- THRIFT-2462 - prevent possible stack overflow due to recursive syntax support
- THRIFT-4534 - netcore package should not depend on Microsft.AspNetCore and Microsoft.Extensions.*
- THRIFT-5997 - netstd generator: binary and uuid constants emitted as C# const instead of static readonly
- THRIFT-5998 - netstd generator: duplicate DeepCopy/Equals/GetHashCode extension methods when IDL includes other IDL files
- THRIFT-6002 - Add netstd codegen test script and GitHub Actions CI matrix job (.NET 8/9/10)
- THRIFT-6091 - Compute container size precheck in 64-bit in netstd protocols
- #3461 - Migration *.sln to *.slnx (except c++ libs)
- #3416 - netcore package upgrades
- THRIFT-6084 - Add byte-count limit to TCompactProtocol varint reader
- #3407 - Build netstd fuzzers during make check (without instrumentation)
nodejs
- THRIFT-5802 - Inconsistent Validation for transmitted values
- THRIFT-6019 - Replace html-validator-cli with a maintained alternative in root Node.js package
- THRIFT-6020 - Address remaining npm transitive dependency vulnerabilities via audit fix (minimatch, elliptic, lodash)
- THRIFT-6040 - Switch JS/Node generator and runtime from Q to native Promise
- THRIFT-6090 - Bound receive size and amortize buffer growth in Node.js transports
- #3529 - nodejs+compiler: Add opt-in BigInt support for int64 via js:bigint flag
- #3526 - Fix WebSocket subprotocol for ws v8
- #3526 - Upgrade ws from 5.2.x to 8.21.0
- #3517 - Bump uuid and nyc
- #3389 - Add recursion depth limit to Node.js protocol skip()
- #3385 - Fix prettier formatting in generated-exceptions test
nodets
- THRIFT-6016 - lib/ts: jsdoc incorrectly listed under dependencies instead of devDependencies
- THRIFT-6017 - Upgrade jsdoc from 3.6 to 4.x in lib/js and lib/ts
- THRIFT-6018 - Remove phantom and phantomjs-prebuilt from lib/ts devDependencies
- THRIFT-6020 - Address remaining npm transitive dependency vulnerabilities via audit fix (minimatch, elliptic, lodash)
- #3591 - Bump shell-quote from 1.7.3 to 1.8.4 in /lib/ts
- #3517 - Bump uuid and nyc
OCaml
- THRIFT-6032 - Harden OCaml protocol negative sizes
- THRIFT-6051 - Limit struct read/write recursion depth in OCaml library
Perl
- THRIFT-5064 - Introduce Perl::Critic into the SCA
- THRIFT-6028 - Harden Perl protocol negative sizes
- THRIFT-6048 - Limit struct read/write recursion depth in Perl library
PHP
- THRIFT-4171 - PHP TSocket sendTimeout is being used as connectTimeout
- THRIFT-5757 - Unit tests for php lib
- THRIFT-5759 - PHP mbstring.func_overload is deprecated
- THRIFT-5929 - Fix build failure on PHP 8.5 due to removed zend_exception_get_default
- THRIFT-5951 - PHP Unit test update
- THRIFT-5956 - Bump minimum PHP version to 8.1
- THRIFT-5957 - Add phpstan static analysis with CI guardrail for the PHP runtime library
- THRIFT-5959 - Adopt PSR-12 across the PHP library and align C++ generator emission style
- THRIFT-5960 - Adopt strict_types and native parameter / return / property types in lib/php/lib/
- THRIFT-5961 - Migrate PHPUnit tests to attribute syntax
- THRIFT-5962 - Upgrade PHPUnit to 10 / 11
- THRIFT-5975 - Remove dead pre-namespace lib/php/src/{Thrift,autoload}.php
- THRIFT-5976 - Add native types to PHP library properties (PHPDoc @var → declared types)
- THRIFT-5977 - Apply constructor property promotion in PHP runtime library
- THRIFT-5978 - Apply declare(strict_types=1) in PHP runtime library
- THRIFT-5979 - Add native method types to PHP Server and Factory classes
- THRIFT-5980 - Add native method types to PHP Transport hierarchy
- THRIFT-5981 - Add native method types to PHP Protocol hierarchy
- THRIFT-5983 - Replace switch with match expression in PHP TProtocol::skip and skipBinary
- THRIFT-5984 - Cache function_exists() capability checks in PHP runtime hot paths
- THRIFT-5985 - Add native method types to PHP Exception hierarchy
- THRIFT-5986 - Emit declare(strict_types=1) in PHP generator output
- THRIFT-5987 - Fix PHP protocol type-safety bugs in readBool and popContext
- THRIFT-5988 - PHP 8.1 upgrade follow-up: float constants, README version, and TSSLServerSocket API compatibility
- THRIFT-5989 - Work around JWT-format GITHUB_TOKEN breaking composer install in CI
- THRIFT-5990 - Emit native return types on generated PHP struct methods
- THRIFT-5991 - Emit native types on generated PHP struct properties and constructor
- THRIFT-5995 - Add native method types to TBase and TException internal serialization helpers
- THRIFT-5999 - Raise PHPStan level from 1 to 5 on PHP library
- THRIFT-6000 - Add native method types to PHP JSON protocol helpers and context classes
- THRIFT-6001 - Type remaining core PHP library methods and fix TException tmethod UUID drift
- THRIFT-6004 - Emit native types on generated PHP service-level methods (Client/Interface/Processor/Rest)
- THRIFT-6005 - Raise PHPStan level from 5 to 6 on PHP library
- THRIFT-6008 - Add regression tests for recent PHP fixes (UUID exception fields, readBool container state, popContext underflow)
- THRIFT-6009 - Add PSR-3 logger support and runtime deprecation warnings to PHP transports
- THRIFT-6010 - Add PSR-18 HTTP transport (TPsrHttpClient) for PHP library
- THRIFT-6023 - Add HTTP transport support to PHP cross-tests
- THRIFT-6029 - Harden PHP protocol negative sizes
- THRIFT-6047 - Limit struct read/write recursion depth in PHP library
- THRIFT-6084 - Add byte-count limit to TCompactProtocol varint reader
- #2957 - Fix PHP cross-test server IPv4 binding
Python
- THRIFT-5915 - Python 3.12+ is not supported due to distutils
- THRIFT-5923 - UUID support for Python
- THRIFT-6024 - Python THeaderTransport and TZlibTransport default max frame/decompressed size should be DEFAULT_MAX_FRAME_SIZE (16384000), not HARD_MAX_FRAME_SIZE (0x3FFFFFFF)
- THRIFT-6043 - Harden Python binary protocol negative sizes
- THRIFT-6067 - Python: pip install fails on setuptools < 69 due to sys.exit() in setup.py (PEP 517 build backend)
- THRIFT-6069 - suggestion for a few python perf improvements
- THRIFT-6070 - Publish Python wheel distributions to PyPI
- THRIFT-6088 - Add decompressed size limit to Python TZlibTransport
- THRIFT-6084 - Add byte-count limit to TCompactProtocol varint reader
- #3413 - Use sslcompat hostname matcher in TSSLSocket
- #3411 - Add default recursion depth limit to TProtocol.skip()
- THRIFT-6083 - Add decompressed payload size limit to Python THeaderTransport
- #3377 - Optimize Python C extension readStruct for nested structs
- #2957 - Fix PHP cross-test server IPv4 binding
Ruby
- THRIFT-1916 - Compiled ruby code generates warning if field with name "fields" is present
- THRIFT-5310 - Ruby BinaryProtocol has invalid range checks for byte and i64
- THRIFT-5940 - Ruby generator should emit RuboCop-compliant code and SCA should lint generated Ruby
- THRIFT-5941 - Add Ruby ext cppcheck coverage
- THRIFT-5942 - Incorrect connection timeout handling in TSocket / TSSLSocket
- THRIFT-5944 - Fix protocol benchmarks for Ruby and add compact protocol support
- THRIFT-5945 - Incomplete cleanup in NonblockingServer leaks sockets
- THRIFT-5946 - Use trusted publishing for Ruby gem releases
- THRIFT-5948 - Reduce Ruby binary extension write-path overhead in native force_binary_encoding helper
- THRIFT-5949 - Ruby server sockets do not enforce write timeouts on accepted connections
- THRIFT-5950 - Add frozen_string_literal to Ruby files to reduce allocations
- THRIFT-6013 - Add recursion depth limit to skip() in Ruby library
- THRIFT-6015 - Allow multiplex processors to fall back to a default service for old clients
- THRIFT-6025 - Ruby client must validate container sizes
- THRIFT-6045 - Limit struct read/write recursion depth in Ruby library
- THRIFT-6072 - Ruby ThreadedServer and SimpleServer crash on SSL accept errors
- #3565 - Allow CI to fail on ruby-head
- #3565 - Fix Ruby lib CI: drop pry/byebug, incompatible with Ruby 4.1+
- THRIFT-6089 - Bound decompressed size for Ruby HeaderTransport ZLIB transform
- #3429 - Updated lib/rb/README.md to highlight Ruby syntax
- #3424 - Bump json from 2.18.1 to 2.19.2 in /lib/rb
- #3422 - Adjust minimum Ruby version in the gemspec to match documentation, CI, and Changelog
- #3419 - Ruby: suppress -Wdefault-const-init-field-unsafe for clang 21+
- THRIFT-6084 - Add byte-count limit to TCompactProtocol varint reader
- #3395 - Remove unused Ruby client reply helpers
- #3400 - Bump json from 2.18.1 to 2.19.2 in /test/rb
- #3397 - Address vulnerabilities in Rack
- #3382 - Updated Gemfile.lock to fix build issues
Rust
- THRIFT-5953 - Rust codegen should support forward-compatible deserialization for union fields in structs
- THRIFT-5954 - Rust: Add read/write timeout support to TTcpChannel
- THRIFT-6057 - Limit struct read/write recursion depth in Rust library
- THRIFT-6058 - Rust codegen:
list<UnionType>deserialization generates shadowed variable and missing Box wrapping - THRIFT-6059 - add crate_prefix option for cross-file import path
- THRIFT-6064 - Rust generator does not box recursive union variant on read
- THRIFT-6068 - Thrift release on crates.io is very stale; consider auto-publishing
- THRIFT-6095 - enforce max_string_size on non-strict binary message name
- THRIFT-6084 - Add byte-count limit to TCompactProtocol varint reader
Smalltalk
- THRIFT-6035 - Harden Smalltalk protocol negative sizes
- THRIFT-6052 - Limit struct read/write recursion depth in Smalltalk library
Swift - NO LONGER SUPPORTED
- THRIFT-5864 - Drop Swift support
- THRIFT-6033 - Harden Swift protocol negative sizes
Test Suite
- THRIFT-5941 - Add Ruby ext cppcheck coverage
- THRIFT-6023 - Add HTTP transport support to PHP cross-tests
-
0.23.008 Jun 2026Release notes
Open source →Please head over to the official release download source:
http://thrift.apache.org/downloadThe assets listed below are added by Github based on the release tag and they will therefore not match the checkums published on the Thrift project website.
Release notes
Open source →Build Process
- THRIFT-5877 - Add cpp cross tests
- THRIFT-5866 - Dockerfile to support Ubuntu 24.04 LTS (Noble Numbat)
- THRIFT-5909 - add Ruby in GitHub workflow
- THRIFT-5649 - add go in GitHub workflow / action
C glib
- THRIFT-5931 - thrift_ssl_socket_get_ssl_error() can underflow its remaining-buffer counter and write past the stack buffer
- THRIFT-5871 - Improve MAX_MESSAGE_SIZE check and friends
C++
- THRIFT-5911 - Inconsistent UUID compilation for aliased types
- THRIFT-5912 - Assertion failed:
delta > 0, file ThreadManagerTests.h, line 162 - THRIFT-5880 - C++ TSocket on an IPv6-only system fails if you use a hostname of 127.0.0.1
- THRIFT-3268 - warning: token pasting of ',' and
__VA_ARGS__is a GNU extension - THRIFT-5887 - build/cmake/ should be prepended (not appended) to CMAKE_MODULE_PATH
- THRIFT-5878 - Add UUID support for THeaderProtocol and TProtocolTap
- THRIFT-5898 - Unable to build Thrift as a shared library on Windows
Contributed
- THRIFT-5920 - Remove threadsafe warnings in thrift-maven-plugin
Delphi
- THRIFT-5939 - Replace GUID generation with stable UUID algorithm
- THRIFT-5876 - Add Delphi WinHTTP client TLS1.3 support
Go
- THRIFT-5896 - Race condition in TServerSocket.Addr() method
Java
- THRIFT-5925 - UUID implementation in JAVA is not according to the Thrift Specification
- THRIFT-5869 - Close the transport after TServerEventHandler deleteContext
- THRIFT-5863 - Make TServerTransport able to customize the max message size
- THRIFT-5774 - Add remote client's IP address to ServerContext in TServerEventHandler
- THRIFT-4280 - Add async nonblocking ssl support in java client
- THRIFT-5879 - java and kotlin cross tests fail in the GitHub action
netstd
- THRIFT-5902 - Add net10 support
- THRIFT-5874 - Introduce new type
MESSAGE_SIZE_LIMITin TTransportException
nodejs
- THRIFT-5937 - nodejs episodic generation does not handle extending services
- THRIFT-5924 - UUID support for nodejs and nodets
- THRIFT-4987 - TProtocolException: Bad version in readMessageBegin when using XHR client with C++ server
nodets
- THRIFT-5924 - UUID support for nodejs and nodets
PHP
- THRIFT-5935 - Fix deprecated non-canonical casts for PHP 8.5 compatibility
- THRIFT-5921 - Ubuntu focal fail to run composer install
- THRIFT-5929 - Fix build failure on PHP 8.5 due to removed zend_exception_get_default
-
0.17.014 Nov 2022Release notes
Open source →Please head over to the official release download source:
http://thrift.apache.org/downloadThe assets listed below are added by Github based on the release tag and they will therefore not match the checkums published on the Thrift project website.
Release notes
Open source →Known Open Issues (Blocker or Critical)
- THRIFT-3877 - C++ library don't work with HTTP (csharp server, cpp client; need cross test enhancement)
- THRIFT-5468 - Swift service generator doesn't support oneway
Removed Languages
- THRIFT-5476 - Deprecate Common Lisp support
NB. CL had been finally dropped from 0.17.0 due to lack of active maintainers. In the meantime there is some ongoing work to reintegrate CL support in 0.18.0 version.
Build Process
- THRIFT-5565 - upgrade travis ci base image to xenial
- THRIFT-5572 - current travis build is broken (error timeout) within kerl erlang build step
- THRIFT-5575 - Create a GitHub workflow using CMake
C++
- THRIFT-5093 - lib: cpp: test: clarify effect of MemoryPolicy on TMemoryBuffer
- THRIFT-5510 - On Windows NOMINMAX and WIN32_LEAN_AND_MEAN are unset even if set before
- THRIFT-5515 - Oneway requests can stuck in TNonblockingServer with TSSLSocket
- THRIFT-5529 - Missing space "<::" in C++ generator
- THRIFT-5576 - fix old-style cast at const value ctor/copy and redundant copy at ctor
Common LISP
- THRIFT-5501 - Remove Common Lisp support
- THRIFT-5567 - remove reference to common lisp namespace
Compiler (General)
- THRIFT-5506 - C26495 variable "t_field::req_" not initialized, t_field.h:40
- THRIFT-5540 - Can't use a typedef for a container type containing enums in a constant
- THRIFT-5588 - Remove slist/senum from IDL
Contributed
- THRIFT-5599 - contrib/fb303 does not compile after C++ library refactorings
Delphi
- THRIFT-5531 - duplicate constant declarations
- THRIFT-5586 - User-Agent header not conforming to RFC 7231
Documentation
- THRIFT-5592 - Update documentation and IDL definition files for uuid type
Erlang
- THRIFT-5536 - Fix cross language tests
Go
- THRIFT-5495 - Go lib server not close client when shutdown
- THRIFT-5527 - generated Process function in go will swallow exceptions defined in thrift IDL
- THRIFT-5539 - Performance penalty of using TDebugProtocol.DuplicateTo
- THRIFT-5569 - generated Go code crashes when reading invalid map/set/list
- THRIFT-5583 - Add a skip_remote arg to go compiler
- THRIFT-5605 - Go client middleware has no (easy) access to IDL exceptions
- THRIFT-5609 - TJSONProtocol is unsafe to be used with TDeserializerPool
Haxe
- THRIFT-5589 - Misc *.hx source files do not compile anymore
- THRIFT-5590 - Complex initialisations (sets, maps, etc) are broken in Haxe
HTML
- THRIFT-5528 - Incorrect HTML link for referenced typedefs
Java
- THRIFT-4086 - Java compiler generates different meta data depending on order of structures in file
- THRIFT-5485 - @SuppressWarnings is placed above Javadoc
- THRIFT-5494 - byte count of FrameBuffer(AbstractNonblockingServer.readBufferBytesAllocated) is not subtracted
- THRIFT-5502 - Is it necessary to report CONNECTION RESET as an ERROR?
- THRIFT-5519 - Java async client loses exceptions in void methods
- THRIFT-5520 - add method to convert Option type to java Optional
- THRIFT-5521 - In Java lib, add param for option_type to generate JDK8 optional types
- THRIFT-5522 - Upgrade to gradle 6 for Java build
- THRIFT-5525 - java gen to use reuse_objects instead of reuse-objects as a consistent param casing
- THRIFT-5526 - java gen to use private_members instead of private-members as a consistent param casing
- THRIFT-5533 - Fix Java warnings: @param, @return and deprecation
- THRIFT-5543 - Java lib FieldMetaData should be more type-safe by adding type parameter to metadata registerations
- THRIFT-5544 - add java code gen param to support including field annotation as metadata
- THRIFT-5545 - Follow newer gradle convention in organizing source code directories
- THRIFT-5552 - Apply clang-format to java code gen file
- THRIFT-5553 - java library to use newer gradle API
- THRIFT-5555 - Java codegen and library to support future-returning client interface and implementation
- THRIFT-5557 - Move Java-only tests from /test to /lib/java
- THRIFT-5560 - Use JUnit 5 (Jupiter) for Java unit tests
- THRIFT-5562 - remove gradle wrapper jar file from source tree
- THRIFT-5563 - fix deprecation and enable xlint for java library
- THRIFT-5568 - Use spotless gradle plugin and google-java-format to enforce a consistent code format
- THRIFT-5570 - update java lib document about gradle usage
- THRIFT-5581 - Upgrade gradle version to 7.4+
- THRIFT-5582 - Improve TProtocol.java
- THRIFT-5584 - Use gradle toolchain to specify build time Java version
JSON
- THRIFT-5549 - Json generator should indent properly while generating includes
Kotlin
- THRIFT-5548 - Kotlin code generator
- THRIFT-5571 - add metadata map building to kotlin generator
- THRIFT-5580 - Enhance the kotlin cross test suite
netstd
- THRIFT-5505 - error: 'close_generator' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
- THRIFT-5511 - Full support for the new net6 "nullability" semantics
- THRIFT-5514 - C# test client slow in multithread mode
- THRIFT-5577 - netstd namespace directive creates matching subfolders
- THRIFT-5578 - #nullable disable collides with C# lang versions < 8 (error CS8370)
- THRIFT-5585 - net5.0 end of support May 2022
Node.js
- THRIFT-5535 - Ability to support connection on OpenHarmonyOS
Perl
- THRIFT-5532 - Perl Thrift/HttpClient.pm headers bug
Python
- THRIFT-2059 - Support for Python 3.4 enums
- THRIFT-5449 - Use select.poll instead of select.select in Python TNonblockingServer if available
- THRIFT-5467 - CannotSendHeader exception with 0.15
- THRIFT-5595 - TSocket errors with SSLSocket
Rust
- THRIFT-4100 - Extract Rust read/write struct methods into a trait
Wish List
- THRIFT-3461 - Support Method Deprecation
-
0.16.001 Jul 2022Release notes
Open source →For release 0.16.0 head over to the official release download source:
http://thrift.apache.org/downloadThe assets below are added by Github based on the release tag and they may therefore not match the checkums.
Release notes
Open source →Known Open Issues (Blocker or Critical)
- THRIFT-3877 - C++ library don't work with HTTP (csharp server, cpp client; need cross test enhancement)
- THRIFT-5468 - Swift service generator doesn't support oneway
Deprecated Languages
- THRIFT-5476 - Deprecate Common Lisp support
Breaking Changes
- (none)
C++
- THRIFT-5187 - Add support for Unix domain sockets on Windows 10 or later
- THRIFT-5418 - C++ to_string and ostream operator not always generated
- THRIFT-5456 - ServerSocket doesn't ignore SIGPIPE
Common LISP
- THRIFT-5476 - Deprecate Common Lisp support
Erlang
- THRIFT-5471 - Introduce delimiter and app_prefix options to erl generator
Go
- THRIFT-5461 - Invalid golang code generated for optional
set<binary>with a default value - THRIFT-5469 - Go lib skip map value may cause stack overflow
- THRIFT-5490 - Improve memory efficiency in go THeader implementation
- THRIFT-5509 - Potential connection leaks caused by the connectivity check
Haxe
- THRIFT-5470 - Error: Constraint check failure for haxe.ds.ObjectMap.K
Java
- THRIFT-5443 - add support for partial deserialization of Thrift
- THRIFT-5486 - fix issues found by spotbugs
- THRIFT-5512 - Update java dependencies
JavaScript
- THRIFT-5448 - Wrong type mapping of thrift binary type
netstd
- THRIFT-5401 - MaxMessageSize reached exception thrown in TEndpointTransport
- THRIFT-5408 - Support for deprecated methods (via annotation)
- THRIFT-5479 - Add net 6 support
- THRIFT-5480 - TThreadPoolAsyncServer using TFramedTransport mistakenly drops client
- THRIFT-5481 - consolidate netstd server implementation details into one common model
- THRIFT-5500 - Uncompilable code when .thrift struct 'System' exists
- THRIFT-5504 - CA2254 Message template should be compile time constant
Perl
- THRIFT-5055 - Fix build-cpan-dist.sh to create a CPAN distribution correctly
- THRIFT-5416 - Allow UDP Socket Client In Perl
Python
- THRIFT-5454 - Python TProcessPoolServer does not spawn expected number of worker processes
- THRIFT-5488 - SystemError when using fast binary or compact protocol in python 3.10
Rust
- THRIFT-5452 - Make server optional
- THRIFT-5457 - Travis fails consistently on a Rust dependency
Test Suite
- THRIFT-5450 - AppVeyor CI does not run any MSVC tests?
-
0.15.026 Sep 2021Release notes
Open source →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
- THRIFT-5229 - ActionScript 3 support dropped
- THRIFT-5347 - Haskell support dropped
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
- THRIFT-5377 - Remove Erlang R16 support
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
- THRIFT-5347 - Deprecate Haskell bindings
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
- 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
- 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
- THRIFT-5436 - Timeout.Infinite is not a good default
PHP
- THRIFT-5318 - PHP 8 compatible version of binary protocol
- THRIFT-5440 - Add php8 to composer.json
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
-
0.14.226 Sep 2021Release notes
Open source →Java
- THRIFT-5383 - THRIFT-5383 TJSONProtocol Java readString throws on bounds check
Go
- THRIFT-5369 - TConfiguration.GetMaxMessageSize() now also applies to container sizes in TProtocol implementations provided
-
0.14.126 Sep 2021Release notes
Open source →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
- THRIFT-5347 - Deprecate Haskell bindings
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.
-
0.14.026 Sep 2021Release notes
Open source →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
StalenessCheckTeston 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<T>.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<T>.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.lengthinto 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
- THRIFT-5289 - Add markdown compiler
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
ToSocketAddrsfor expressing network addresses - THRIFT-5042 - Fix failing cargo tests
- THRIFT-5043 - Make TBufferChannel clonable
- THRIFT-5111 - CI fails with error[E0721]:
awaitis 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
- THRIFT-4972 - Add Makefile.am to the Perl tutorial
- THRIFT-4975 - Add Makefile.am to the PHP tutorial
- THRIFT-5051 - Fix Python tutorials to address THRIFT-4002
- THRIFT-5052 - Make the Go tutorial executable to the end
- THRIFT-5122 - Fix memory leak in c_glib tutorial server
-
0.13.001 Nov 2019Release notes
Open source →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
- THRIFT-4719 - Remove cocoa language support
-
0.12.027 Dec 2018Release notes
Open source →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.
- THRIFT-4474 - PHP now uses the PSR-4 loader by default instead of class maps.
- THRIFT-4532 - method signatures changed in the compiler's t_oop_generator.
- THRIFT-4648 - The C (GLib) compiler's handling of namespaces has been improved.
Known Issues (Blocker or Critical)
- THRIFT-4037 - build: use a single build system for thrift
- THRIFT-4119 - build: bootstrap.sh is missing from source tarball
- THRIFT-3289 - csharp: socket exhaustion in csharp implementation
- THRIFT-3029 - cocoa: Getters for fields defined with uppercase names do not work
- THRIFT-3325 - cocoa: Extended services aren't subclasses in generated Cocoa
- THRIFT-4116 - cocoa: Thrift de-capitalizes the name of IsSet property in Cocoa
- THRIFT-3877 - cpp: the http implementation is not standard; interop with other languages is spotty at best
- THRIFT-4180 - cpp: Impossible to build Thrift C++ library for Android (NDK)
- THRIFT-4384 - cpp: Using multiple async services simultaneously is not thread-safe
- THRIFT-3108 - haskell: Defaulted struct parameters on a service generates invalid Haskell
- THRIFT-3990 - nodejs: Exception swallowed by deserialization function
- THRIFT-4214 - nodejs:
map<i64,value>key treated as hex value in JavaScript - THRIFT-4602 - nodejs: ERROR in ./node_modules/thrift/lib/nodejs/lib/thrift/connection.js Module not found: Error: Can't resolve 'child_process'
- THRIFT-4639 - nodejs: Sequence numbering for multiplexed protocol broken
- THRIFT-1310 - php: sequence and reconnection management issues
- THRIFT-1538 - php: Error during deserialization int64 on 32-bit architecture
- THRIFT-1580 - php: thrift type i64 java to php serialize/deserealize not working
- THRIFT-1950 - php: PHP gets stuck in infinite loop
- THRIFT-2954 - python: sending int or float in a double field breaks the connection
- THRIFT-4080 - python: unix sockets can get stuck forever
- THRIFT-4281 - python: generated code is out of order and causes load issues
- THRIFT-4677 - py3: UnicodeDecideError in Python3
Build Process
- THRIFT-4067 - Windows thrift compiler distributed on the apache web site has runtime dependencies
- THRIFT-4308 - D language docker images need demios for libevent and openssl fixed to re-enable make cross on dlang
- THRIFT-4579 - Use Ubuntu Bionic (18.04 LTS) for CI builds instead of Artful (17.10)
- THRIFT-4508 - Define CI operating system coverage rules for the project and (hopefully) simplify CI a little more
- THRIFT-4397 - ubuntu install instructions broken on 16.04
- THRIFT-4545 - Appveyor builds are failing due to a haskell / cabal update in chocolatey
- THRIFT-4452 - optimize Dockerfile (only onetime apt-get update)
- THRIFT-4440 - rm
build/docker/ubuntu-trusty/Dockerfile.orig - THRIFT-4352 - Ubuntu Artful doesn't appear to be compatible with Thrift and Haxe 3.4.2
- THRIFT-4666 - DLang Client Pool Test fails sporadically
- THRIFT-4676 - CL tutorial build fails sporadically
- THRIFT-4456 - Make haxelib download quiet so it doesn't blow up the build log
- THRIFT-4605 - bootstrap.sh fails if automake=1.16.1
c_glib
- THRIFT-4648 - The C (GLib) compiler's handling of namespaces has been improved.
- THRIFT-4622 - glibC compilation issue
- THRIFT-4671 - c glib is unable to handle client close unexpectedly
cl (new language support in 0.12.0)
- THRIFT-82 - Common Lisp support
csharp
- THRIFT-4558 - reserved Csharp keywords are not escaped in some cases
- THRIFT-4637 - C# async mode generates incorrect code with inherited services
- THRIFT-4672 - IAsyncResult style methods not being supported by certain transports leads to issues in mixed ISync/IAsync use cases
- THRIFT-4539 - Allow TBufferedTransport to be used as base class
- THRIFT-4535 - XML docs; code cleanup (tabs->spaces; String->string)
- THRIFT-4492 - protected ExceptionType type member of TApplicationException cannot be accessed
- THRIFT-4446 - JSONProtocol Base64 Encoding Trims Padding
- THRIFT-4455 - Missing dispose calls in ThreadedServer & ThreadpoolServer
- THRIFT-4609 - keep InnerException wherever appropriate
- THRIFT-4673 - IAsyncResult not supported by layered transports (buffered/framed)
cpp
- THRIFT-4476 - Typecasting problem on list items
- THRIFT-4465 - TNonblockingServer throwing THRIFT LOGGER: TConnection::workSocket(): THRIFT_EAGAIN (unavailable resources)
- THRIFT-4680 - TBufferTransports.h does not compile under Visual Studio 2017
- THRIFT-4618 - TNonblockingServer crash because of limitation of select()
- THRIFT-4620 - TZlibTransport.cpp doesn't ensure that there is enough space for the zlib flush marker in the buffer.
- THRIFT-4571 - ZeroMQ contrib library needs a refresh
- THRIFT-4559 - TSSLServerSocket incorrectly prints errors
- THRIFT-4578 - Move
TAsyncProtocolProcessorinto main thrift library - THRIFT-4418 - evhttp_connection_new is deprecated; use evhttp_connection_base_new
compiler
- THRIFT-4644 - Compiler cannot be compiled on macOS(maybe also on other platforms with clang)
- THRIFT-4531 - Thrift generates wrong Python code for immutable structures with optional members
- THRIFT-4513 - thrift generated code is not stable for constants
- THRIFT-4532 - Avoid updating Thrift compiler generated code if the output has not changed
- THRIFT-4400 - Visual Studio Compiler project should link runtime statically in release builds
- THRIFT-4399 - plugin.thrift t_const_value is not used as a union in C++ code -- fix this
- THRIFT-4496 - Dealing with language keywords in Thrift (e.g. service method names)
- THRIFT-4393 - repeated runs of compiler produce different binary output at plugin interface
dlang
- THRIFT-4478 - Thrift will not build with dlang 2.078 or later
- THRIFT-4503 - dlang servers logError on normal client disconnection
- THRIFT-4308 - D language docker images need demios for libevent and openssl fixed to re-enable make cross on dlang
dart
- THRIFT-4646 - Effective Dart and Exceptions
- THRIFT-4439 - Shouldn't download dart.deb directly.
delphi
- THRIFT-4562 - Calling wrong exception CTOR leads to "call failed: unknown result" instead of the real exception being thrown
- THRIFT-4554 - uncompileable code with member names that are also types under specific conditions
- THRIFT-4422 - Add Async implementation via IFuture
- THRIFT-4485 - Possible invalid ptr AV with overlapped read/write on pipes
- THRIFT-4549 - Thrift exceptions should derive from TException
- THRIFT-4540 - buffered transport broken when trying to re-open a formerly closed transport
- THRIFT-4473 - Move Thrift.Console.pas out of the Library
- THRIFT-4490 - Allow a default service as fallback for multiplex processors connected by old clients
- THRIFT-4454 - Large writes/reads may cause range check errors in debug mode
- THRIFT-4461 - Compiler directive should match Delphi XE4
- THRIFT-4462 - First line in Console duplicated
- THRIFT-4642 - FPU ctrl word settings may cause an unexpected "denormalized" error
- THRIFT-4589 - HTTP client timeouts are a) incomplete and b) not used at all
- THRIFT-4590 - running the test client using HTTP transport leads to "CoInitialize not called"
erlang
- THRIFT-4497 - Erlang records should use map() for map type
- THRIFT-4495 - Erlang records should allow 'undefined' for non-required fields
- THRIFT-4580 - Fix erlang tutorial unpack on Windows
- THRIFT-4582 - Ubuntu Xenial erlang 18.3 "make check" fails
golang
- THRIFT-4448 - Support for golang 1.6 and earlier has been dropped.
- THRIFT-4253 - Go generator assigns strings to field in const instead of pointers.
- THRIFT-4573 - Unions Field Count Does Not Consider Binary
- THRIFT-4447 - Golang: Panic on p.c.Call when using deprecated initializers
- THRIFT-4650 - Required field incorrectly marked as set when fieldType does not match
- THRIFT-4486 - Golang: -remote.go client cleanup
- THRIFT-4537 - TSimpleServer can exit Accept loop with lock still acquired
- THRIFT-4516 - Add support for go 1.10
- THRIFT-4421 - golang tests rely on gomock, which has change behaviour, causing tests to fail
- THRIFT-4626 - Communication crash when using binary/compact protocol and zlib transport
- THRIFT-4659 - golang race detected when closing listener socket
haskell
- THRIFT-4634 - Haskell builds with older cabal cannot reconcile complex version requirements
java
- THRIFT-4259 - Thrift does not compile due to Ant Maven task errors
- THRIFT-1418 - Compiling Thrift from source: Class org.apache.tools.ant.taskdefs.ConditionTask doesn't support the nested "typefound" element
- THRIFT-4530 - proposal: add nullability annotations to generated Java code
- THRIFT-4614 - Generate missing @Nullable annotations for Java iterator getters
- THRIFT-4555 - Getter of binary field in Java creates unnecessary copy
- THRIFT-3983 - libthrift is deployed on central with pom packaging instead of jar
- THRIFT-4294 - Java Configure Fails for Ant >= 1.10
- THRIFT-4178 - Java libraries missing from package when using cmake
- THRIFT-4120 - pom files are not generated or provided in the build
- THRIFT-1507 - Maven can't download resource from central when behind a proxy and won't use local repository
- THRIFT-4556 - Optional rethrow of unhandled exceptions in java processor
- THRIFT-4337 - Able to set keyStore and trustStore as InputStream in the TSSLTransportFactory.TSSLTransportParameters
- THRIFT-4566 - Pass message of unhandled exception to optional rethrow.
- THRIFT-4506 - Remove assertion in Java SASL code that would be ignored in release builds
- THRIFT-4470 - Include popular IDE file templates to gitignore
- THRIFT-4429 - Make TThreadPoolServer.executorService_ available in inherited classes and refactor methods to be able customization
- THRIFT-3769 - Fix logic of THRIFT-2268
- THRIFT-4494 - Increase Java Socket Buffer Size
- THRIFT-4499 - Remove Magic Number In TFIleTransport
js
- THRIFT-4406 - JavaScript: Use modern Promise implementations
- THRIFT-4625 - let / const variable decorators for es6 compiler
- THRIFT-4653 - ES6 Classes
- THRIFT-4592 - JS: readI32 performance on large arrays is very poor in Chrome
- THRIFT-4509 - js and nodejs libraries need to be refreshed with current libraries
- THRIFT-4403 - thrift.js: Incorrect usage of 'this' in TWebSocketTransport.__onOpen
- THRIFT-4436 - Deserialization of nested list discards content
- THRIFT-4437 - JS WebSocket client callbacks invoked twice on parallel requests
- THRIFT-4679 - Duplicate declaration of InputBufferUnderrunError in lib/nodejs/lib/thrift/json_protocol.js
- THRIFT-4551 - Add prettier for consistent JS code formatting
lua
- THRIFT-4591 - lua client uses two write() calls per framed message send
- THRIFT-3863 - Can't "make install" Lua Library
netcore
- THRIFT-4524 - .NET Core Server doesn't close properly when cancelled
- THRIFT-4434 - Update .NET Core components, add tests for .Net Core library and .Net Core compiler, fix bugs and build process
- THRIFT-4446 - JSONProtocol Base64 Encoding Trims Padding
node.js
- THRIFT-4225 - Error handling malformed arguments leaks memory, corrupts transport buffers causing next RPC to fail
- THRIFT-3950 - Memory leak while calling oneway method
- THRIFT-3143 - add typescript directory support
- THRIFT-4564 - TBufferedTransport can leave corrupt data in the buffer
- THRIFT-4647 - Node.js Fileserver webroot path
- THRIFT-4489 - Unix domain socket support for NodeJS client
- THRIFT-4443 - node.js json_protocol throws error in skip function
- THRIFT-4604 - NodeJS: Expose Int64 from browser.js for consumption by browser
- THRIFT-4480 - NodeJS warning on binary_protocol writeMessageEnd when seqid = 0
perl
- THRIFT-4382 - Replace the use of Perl Indirect Object Syntax calls to new()
- THRIFT-4471 - Thrift CPAN release is missing Makefile.PL and the clients are unable to build the module
- THRIFT-4416 - Perl CPAN Packaging Improvements
php
- THRIFT-4474 - PHP generator use PSR-4 default
- THRIFT-4463 - PHP generated code match PSR-2
- THRIFT-4373 - Extending Thrift class results in "Attempt serialize from non-Thrift object"
- THRIFT-4354 - TSocket block on read
- THRIFT-4423 - migrate php library to psr-4
- THRIFT-4656 - infinite loop in latest PHP library
- THRIFT-4477 - TBufferedTransport must have underlying transport
- THRIFT-4475 - lib/php/test should be checked for PSR-2
- THRIFT-4498 - add phpcs back
- THRIFT-4460 - php library use PSR-2
- THRIFT-4641 - TCurlClient doesn't check for HTTP status code
- THRIFT-4645 - TCurlClient: show actual error message when throwing TTransportException
- THRIFT-4674 - Add stream context support into PHP/THttpClient
- THRIFT-4459 - reduce php library directory depth
python
- THRIFT-4670 - Twisted, slots, and void method fails with "object has no attribute 'success'"
- THRIFT-4464 - Potentially server-crashing typo in Python TNonblockingServer
- THRIFT-4548 - Supporting TBinaryProtocolAccelerated protocol when using TMultiplexedProcessor in Python
- THRIFT-4577 - Outdated cipher string in python unit test
- THRIFT-4505 - python build on Vagrant Windows boxes fails
- THRIFT-4621 - THeader for Python
- THRIFT-4668 - make socket backlog configurable for python
- THRIFT-4561 - Python: cleanup socket timeout settings
ruby
- THRIFT-4289 - Thrift RSpec test suite fails with Ruby 2.4.x due to Fixnum deprecation
- THRIFT-4342 - Support ruby rspec 3
- THRIFT-4525 - Add ssl socket option to ruby cross tests
- THRIFT-4450 - Add seek support to TCompactInputProtocol in Rust
- THRIFT-4631 - Codegen Creates Invalid Ruby for Recursive Structs
- THRIFT-4472 - Fix the genspec for ruby so it does not complain about an invalid license
rust
- THRIFT-4662 - Rust const string calls function at compile time
- THRIFT-4661 - Rust enum name wrong case in generated structs
- THRIFT-4617 - Avoid generating conflicting struct names in Rust code
- THRIFT-4529 - Rust generation should include #![allow(non_snake_case)] or force conform to Rust style guidelines
- THRIFT-4390 - Rust binary protocol and buffered transport cannot handle writes above 4096 bytes
- THRIFT-4419 - Rust framed transport cannot handle writes above 4096 bytes
- THRIFT-4658 - Rust's TBinaryInputProtocol fails when strict is false
- THRIFT-4187 - Dart -> Rust Framed cross tests fail
- THRIFT-4664 - Rust cannot create ReadHalf/WriteHalf to implement custom tranports
- THRIFT-4665 - Keep Rust library up-to-date on crates.io
swift (new language support in 0.12.0)
- THRIFT-3773 - Swift Library
test suite
- THRIFT-4515 - Gracefully shutdown cross-test servers to fully test teardown
- THRIFT-4085 - Add .NET Core to the make cross standard test suite
- THRIFT-4358 - Add unix domain sockets in ruby to cross test) - code exists
typescript (new language support in 0.12.0)
- THRIFT-3143 - add typescript directory support
-
0.0.411 May 2017Nothing published for this version
-
0.0.307 May 2017 withdrawnNothing published for this version
-
0.0.201 May 2017Nothing published for this version
-
0.0.110 Apr 2017Nothing published for this version