* add jaeger support, link hot container & req span * adds jaeger support now with FN_JAEGER_URL, there's a simple tutorial in the operating/metrics.md file now and it's pretty easy to get up and running. * links a hot request span to a hot container span. when we change this to sample at a lower ratio we'll need to finagle the hot container span to always sample or something, otherwise we'll hide that info. at least, since we're sampling at 100% for now if this is flipped on, can see freeze/unfreeze etc. if they hit. this is useful for debugging. note that zipkin's exporter does not follow the link at all, hence jaeger... and they're backed by the Cloud Empire now (CNCF) so we'll probably use it anyway. * vendor: add thrift for jaeger
38 KiB
Apache Thrift Language Support
Last Modified: 2017-10-05
Version: 0.11.0+
Thrift supports many programming languages and has an impressive test suite that exercises most of the languages, protocols, and transports that represents 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. All of this information is provided below to 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.
Apache Thrift has a choice of two build systems. The autoconf build system is the most complete build and is used to build all supported languages. The cmake build system has been designated by the project to replace autoconf however this transition will take quite some time to complete.
The Language/Library Levels indicate the minimum and maximum versions that are used in the continuous integration environments (Appveyor, Travis) for Apache Thrift. Note that 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.
| Language | Build Systems | Lang/Lib Levels | Low-Level Transports | Transport Wrappers | Protocols | Servers | Open Issues | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| autoconf | cmake | Min | Max | Domain | File | Memory | Pipe | Socket | TLS | Framed | http | zlib | Binary | Compact | JSON | Multiplex | Forking | Nonblocking | Simple | Threaded | ThreadPool | ||
| ActionScript | ![]() | ![]() |
ActionScript 3 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
ActionScript | |
| C (glib) | ![]() | ![]() |
2.40.2 | 2.54.0 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
C (glib) |
| C++ | ![]() | ![]() |
C++98, gcc | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
C++ | |
| C# | ![]() | ![]() |
.NET 3.5 / mono 3.2.8.0 | .NET 4.6.1 / mono 4.6.2.7 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
C# (.NET) |
| Cocoa | ![]() | ![]() |
unknown | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
Cocoa | |
| D | ![]() | ![]() |
2.070.2 | 2.076.0 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
D |
| Dart | ![]() | ![]() |
1.20.1 | 1.24.2 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
Dart |
| Delphi | ![]() | ![]() |
2010 | unknown | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
Delphi |
| .NET Core | ![]() | ![]() |
2.0.0 | 2.0.3 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
.NET Core |
| Erlang | ![]() | ![]() |
R16B03 | 20.0.4 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
Erlang |
| Go | ![]() | ![]() |
1.2.1 | 1.8.3 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
Go |
| Haskell | ![]() | ![]() |
7.6.3 | 8.0.2 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
Haskell |
| Haxe | ![]() | ![]() |
3.2.1 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
Haxe | |
| Java (SE) | ![]() | ![]() |
1.7.0_151 | 1.8.0_144 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
Java SE |
| Java (ME) | ![]() | ![]() |
unknown | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
Java ME | |
| Javascript | ![]() | ![]() |
unknown | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
Javascript | |
| Lua | ![]() | ![]() |
5.1.5 | 5.2.4 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
Lua |
| node.js | ![]() | ![]() |
4.2.6 | 8.9.1 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
node.js |
| OCaml | ![]() | ![]() |
4.02.3 | 4.04.0 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
OCaml |
| Perl | ![]() | ![]() |
5.18.2 | 5.26.0 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
Perl |
| PHP | ![]() | ![]() |
5.5.9 | 7.1.8 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
PHP |
| Python | ![]() | ![]() |
2.7.6, 3.4.3 | 2.7.14, 3.6.3 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
Python |
| Ruby | ![]() | ![]() |
1.9.3p484 | 2.3.3p222 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
Ruby |
| Rust | ![]() | ![]() |
1.15.1 | 1.18.0 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
Rust |
| Smalltalk | ![]() | ![]() |
unknown | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() |
![]() | ![]() | ![]() | ![]() | ![]() |
Smalltalk | |
| Language | autoconf | cmake | Min | Max | Domain | File | Memory | Pipe | Socket | TLS | Framed | http | zlib | Binary | Compact | JSON | Multiplex | Forking | Nonblocking | Simple | Threaded | ThreadPool | Open Issues |
| Build Systems | Lang/Lib Levels | Low-Level Transports | Transport Wrappers | Protocols | Servers | ||||||||||||||||||

