Apache Thrift Changelog
0.24.0
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
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
Test Suite
0.23.0
Build Process
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
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
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
Python
- THRIFT-5927 - Cannot use reserved language keyword “None” with target language Python
- THRIFT-5885 - TBinaryProtocolAccelerated incorrectly deserializes IntEnum to None
- THRIFT-5923 - UUID support for Python
- THRIFT-5926 - TSaslClientTransport.open() crashes with DIGEST-MD5 due to None initial response
- THRIFT-5915 - Python 3.12+ is not supported due to distutils
- THRIFT-5892 - PY_SSIZE_T_CLEAN error in some environments
- THRIFT-5873 - mTLS broken with python THttpClient
- THRIFT-792 - TSocket hides underlying exceptions when open() fails
- THRIFT-5888 - declare support for free-threaded CPython in extension modules
- THRIFT-5900 - Thrift Cross Test broken in Github (Python 3.14)
Ruby
- THRIFT-5308 - implement ruby seq replyÂ
- THRIFT-5910 - Add UUID support in Ruby
- THRIFT-5906 - Remove Fixnum references to support modern Ruby versions
- THRIFT-5905 - Add base64 and logger as explicit dependencies
- THRIFT-5903 - Fixnum is no longer supported since Ruby 3.2
- THRIFT-5687 - Ruby gems deprecation warning: Gem::Specification#has_rdoc= is deprecated with no replacement
- THRIFT-4035 - Thrift ruby runtime does not send unique sequence IDs in requests according to the unit tests
- THRIFT-1911 - IOError not being caught in socket.rb
- THRIFT-4526 - Implement rubocop for ruby in the sca build, once clean into every make
- THRIFT-5273 - warning in ruby version >= 2.4
- THRIFT-5918 - Implement header protocol support for Ruby
Rust
- THRIFT-5559 - Processor can be implemented on handler trait itself
- THRIFT-5928 - skip() call on unknown binary field fails deserialization instead of graceful skipping over field
- THRIFT-5739 - set_nodelay should be enabled for TTcpChannel
Swift
- THRIFT-5864 - Remove Swift binding (compiler generator, library, tests, and tutorial)
0.22.0
Build Process
- THRIFT-5836 - 0.21.0 fails to build from sources at Arch Linux: No rule to make target ‘Thrift5272.thrift’, needed by ‘gen-cpp/Thrift5272_types.h’
- THRIFT-5860 - cmake 3.5 as a minimum version does not work with cmake 4.0.0
C glib
C++
- THRIFT-5637 - Thrift compiler should be able to output c++ Aggregate types
- THRIFT-5667 - Make ThriftConfig.cmake relocatable
- THRIFT-5817 - Avoid copy of TUuid
- THRIFT-5821 - Cannot compile against aws-lc libcrypto (openssl replacement from AWS)
- THRIFT-5841 - possible init/deinit conflict with manual initialization flag
- THRIFT-5853 - Remove oldstyle casts from TBufferTransports and TCompactProtocol
- THRIFT-5854 - TCompactProtocol readString checks maxMessageSize at wrong position and off by one
- THRIFT-5868 - UUID Support for TCompactProtocol
- THRIFT-5865 - Fix TBinayProtocol with
list<UUID>
Compiler (General)
- THRIFT-5823 - Fix illegal uses of exceptions as normal struct type
- THRIFT-5835 - Allow exceptions to be used as regular struct datatype
Delphi
- THRIFT-5822 - Remove deprecated AnsiString functions from the library
- THRIFT-5824 - Migrate, refactor and improve Delphi code generation test script
- THRIFT-5825 - UUID constants lead to uncompileable Delphi code
- THRIFT-5826 - binary constants create uncompilable Delphi code
- THRIFT-5827 - enums in typedefs are not resolved in all cases
- THRIFT-5837 - Delphi implementation for THRIFT-5835
- THRIFT-5839 - incorrect cast under Win64
- THRIFT-5850 - Switch IThriftConfiguration interface from Cardinal to Integer
- THRIFT-5851 - Promote known total stream sizes for seekable stream transports properly
- THRIFT-5856 - Client should validate HTTP status
Go
- THRIFT-5833 - go: Combine I/O and original error in compiler generated Process functions
- THRIFT-5845 - The write error for union fields should be TException
- THRIFT-5859 - go: Generate a map for know values of an enum type
Java
- THRIFT-5858 - Introduce new type MESSAGE_SIZE_LIMIT in TTransportException
netstd
- THRIFT-5832 - Drop net6 support and add net9 instead
- THRIFT-5838 - THttpTransport.FlushAsync does not include original exception
- THRIFT-5852 - Promote known total stream sizes for seekable stream transports
Node.js
- THRIFT-5811 - Add ES module support to JS codegen
- THRIFT-5848 - Expose InputBufferUnderrunError in nodejs client
- THRIFT-5849 - Expose createClient in browser version of nodejs package
PHP
- THRIFT-1482 - Unix domain socket support under PHP
- THRIFT-5829 - PHP lib Use of “static” in callables is deprecated notice
Python
- THRIFT-5024 - tutorial\py.tornado\PythonServer.py failed under Tornado6
- THRIFT-5847 - Python3.12 deprecation in THttpClient
- THRIFT-5857 - Remove deprecated Tornado io_loop usage
- THRIFT-5861 - Add isOpen method to TTornadoStreamTransport
Swift
- THRIFT-4838 - add unix domain socket support to Swift TSocketTransport implementation