Language and Feature Matrix

qianmoQqianmoQ· 更新于 2026-09-22· 阅读 98 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

Apache Thrift Language Support

Guidance For: 0.22.0 | 0.21.0 | 0.20.0 | 0.19.0 | 0.18.0 | 0.17.0 | 0.16.0 | 0.15.0 | 0.14.0 | 0.13.0 | 0.12.0 | 0.11.0

Thrift supports many programming languages and has an impressive test suite that exercises most of the languages, protocols, and transports. Each build exercises a matrix of thousands of possible combinations. Each language typically has a minimum required version as well as support libraries - some mandatory and some optional. The information provided below will help you assess whether you can use Apache Thrift with your project. Obviously this is a complex matrix to maintain and may not be correct in all cases - if you spot an error please inform the developers using the mailing list, or better yet, Edit on GitHub.

Apache Thrift currently uses two build systems. The autoconf build system is the most complete and builds all supported languages, however it does not support Windows.. The cmake build system works on Linux and Windows, and has been designated by the project to replace autoconf however this transition will take quite some time to complete. During that transition, the cmake build will not support all languages.

The Language/Library Levels indicate the minimum and maximum versions that are used in the continuous integration environments (Appveyor, Travis) for Apache Thrift. Other language levels may be supported for each language, however tested less thoroughly; check the README file inside each lib directory for additional details. Note: while a language may contain support for protocols, transports, and servers, the extent to which each is tested as part of the overall build process varies. The definitive integration test for the project is called the “cross” test which executes a test matrix with clients and servers communicating across languages.

Thrift’s core transport (supported by all languages) is TSocket. Thrift’s core protocol is TBinary, supported by all languages except for JavaScript.

LanguageSinceBuild SystemsLang/Lib Levels (Tested)Field typesLow-Level TransportsTransport WrappersProtocolsServersOpen Issues
autoconfcmakeMinMaxUuidDomainFileMemoryPipeSocketTLSFramedHeaderhttpzlibBinaryCompactJSONMultiplexForkingNonblockingSimpleThreadedThreadPool
C (glib)0.6.0YesYes2.48.22.56.4YesYesYesYesYesYesYesYesYesYesC (glib)
C++0.2.0YesYesC++11YesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesC++
Common LISP0.12.0YesSBCL 1.4.xSBCL 1.5.3YesYesYesYesYesYesYesCommon LISP
Dlang0.9.0Yes2.087.02.087.0YesYesYesYesYesYesYesYesYesYesYesYesYesYesYesD
Dart0.10.0Yes2.0.02.4.0YesYesYesYesYesYesYesDart
Delphi0.8.02010Athens 12.2YesYesYesYesYesYesYesYesYesYesYesYesDelphi
.NET0.13.0Yes.NET Standard 2.x, net8, net9YesYesYesYesYesYesYesYesYesYesYesYes.NET
Erlang0.3.0Yes18.322.0YesYesYesYesYesYesYesYesYesYesYesErlang
Go0.7.0Yes1.251.26YesYesYesYesYesYesYesYesYesYesYesYesYesYesGo
Haxe0.9.3Yes4.1.54.2.5YesYesYesYesYesYesYesYesYesYesHaxe
Java (SE)0.2.0YesYes1119YesYesYesYesYesYesYesYesYesYesYesYesYesYesYesJava SE
Java (ME)0.5.0unknownYesYesYesYesYesYesJava ME
Javascript0.3.0YesES5ES6YesYesYesYesYesJavascript
Lua0.9.2Yes5.1.55.2.4YesYesYesYesYesYesYesYesLua
node.js0.6.0Yes10.x10.xYesYesYesYesYesYesYesYesYesYesYesYesnode.js
node.ts0.12.0Yes5.7.2YesYesYesYesYesnode.ts
OCaml0.2.04.04.0YesYesYesYesYesOCaml
Perl0.2.0Yes5.22.15.26.1YesYesYesYesYesYesYesYesYesYesYesPerl
PHP0.2.0Yes7.0.227.2.19YesYesYesYesYesYesYesYesYesYesYesPHP
Python0.2.0YesYes2.7.12, 3.5.22.7.15, 3.6.8YesYesYesYesYesYesYesYesYesYesYesYesYesYesPython
Ruby0.2.0Yes2.7.84.0.0YesYesYesYesYesYesYesYesYesYesYesYesYesYesYesYesRuby
Rust0.11.0Yes1.83.01.xx.xYesYesYesYesYesYesYesRust
Smalltalk0.2.0unknownYesYesSmalltalk
LanguageSinceautoconfcmakeMinMaxUuidDomainFileMemoryPipeSocketTLSFramedHeaderhttpzlibBinaryCompactJSONMultiplexForkingNonblockingSimpleThreadedThreadPoolOpen Issues
Build SystemsLang/Lib Levels (Tested)Field typesLow-Level TransportsTransport WrappersProtocolsServers

评论

登录后参与评论

正在加载评论…