• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

.github/H19-Dec-2018-

aclocal/H19-Dec-2018-

build/H19-Dec-2018-

compiler/cpp/H19-Dec-2018-

contrib/H19-Dec-2018-

debian/H19-Dec-2018-

doc/H19-Dec-2018-

lib/H19-Dec-2018-

test/H03-May-2022-

tutorial/H19-Dec-2018-

.clang-formatH A D19-Dec-20181.7 KiB

.dockerignoreH A D19-Dec-20186

.editorconfigH A D19-Dec-20181.6 KiB

.eslintignoreH A D19-Dec-2018206

.eslintrc.jsonH A D19-Dec-2018374

.gitattributesH A D19-Dec-201812

.gitignoreH A D19-Dec-20189.1 KiB

.rustfmt.tomlH A D19-Dec-20181.6 KiB

.travis.ymlH A D19-Dec-20185.9 KiB

CHANGESH A D19-Dec-2018204 KiB

CONTRIBUTING.mdH A D19-Dec-20187.2 KiB

LANGUAGES.mdH A D19-Dec-201842 KiB

LICENSEH A D19-Dec-201812.3 KiB

Makefile.amH A D19-Dec-20183.3 KiB

NOTICEH A D19-Dec-2018168

README.mdH A D19-Dec-20186.1 KiB

Thrift-swift3.podspecH A D19-Dec-20181.1 KiB

Thrift.podspecH A D19-Dec-20181.1 KiB

appveyor.ymlH A D19-Dec-20183.2 KiB

bootstrap.shH A D19-Dec-20181.8 KiB

bower.jsonH A D19-Dec-2018325

cleanup.shH A D19-Dec-20182.6 KiB

composer.jsonH A D19-Dec-2018996

configure.acH A D19-Dec-201834.2 KiB

doap.rdfH A D19-Dec-20186.5 KiB

dub.jsonH A D19-Dec-2018595

package-lock.jsonH A D19-Dec-201876.2 KiB

package.jsonH A D19-Dec-20181.7 KiB

phpcs.xml.distH A D19-Dec-2018749

pull_request_template.mdH A D19-Dec-2018756

sonar-project.propertiesH A D19-Dec-20184.4 KiB

README.md

1Apache Thrift
2=============
3
4Introduction
5============
6
7Thrift is a lightweight, language-independent software stack with an
8associated code generation mechanism for point-to-point RPC. Thrift provides
9clean abstractions for data transport, data serialization, and application
10level processing. The code generation system takes a simple definition
11language as input and generates code across programming languages that
12uses the abstracted stack to build interoperable RPC clients and servers.
13
14![Apache Thrift Layered Architecture](doc/images/thrift-layers.png)
15
16Thrift makes it easy for programs written in different programming
17languages to share data and call remote procedures.  With support
18for [25 programming languages](LANGUAGES.md), chances are Thrift
19supports the languages that you currently use.
20
21Thrift is specifically designed to support non-atomic version changes
22across client and server code.
23
24For more details on Thrift's design and implementation, see the Thrift
25whitepaper included in this distribution, or at the README.md file
26in your particular subdirectory of interest.
27
28Status
29======
30
31| Branch | Travis | Appveyor | Coverity Scan | codecov.io | Website |
32| :----- | :----- | :------- | :------------ | :--------- | :------ |
33| [`master`](https://github.com/apache/thrift/tree/master) | [![Build Status](https://travis-ci.org/apache/thrift.svg?branch=master)](https://travis-ci.org/apache/thrift) | [![Build status](https://ci.appveyor.com/api/projects/status/github/apache/thrift?branch=master&svg=true)](https://ci.appveyor.com/project/ApacheSoftwareFoundation/thrift/history) | [![Coverity Scan Build Status](https://scan.coverity.com/projects/1345/badge.svg)](https://scan.coverity.com/projects/thrift) | | [![Website](https://img.shields.io/badge/official-website-brightgreen.svg)](https://thrift.apache.org/) |
34
35Releases
36========
37
38Thrift does not maintain a specific release calendar at this time.
39
40We strive to release twice yearly.  Download the [current release](http://thrift.apache.org/download).
41
42License
43=======
44
45Licensed to the Apache Software Foundation (ASF) under one
46or more contributor license agreements. See the NOTICE file
47distributed with this work for additional information
48regarding copyright ownership. The ASF licenses this file
49to you under the Apache License, Version 2.0 (the
50"License"); you may not use this file except in compliance
51with the License. You may obtain a copy of the License at
52
53  http://www.apache.org/licenses/LICENSE-2.0
54
55Unless required by applicable law or agreed to in writing,
56software distributed under the License is distributed on an
57"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
58KIND, either express or implied. See the License for the
59specific language governing permissions and limitations
60under the License.
61
62Project Hierarchy
63=================
64
65thrift/
66
67  compiler/
68
69    Contains the Thrift compiler, implemented in C++.
70
71  lib/
72
73    Contains the Thrift software library implementation, subdivided by
74    language of implementation.
75
76    cpp/
77    go/
78    java/
79    php/
80    py/
81    rb/
82    ...
83
84  test/
85
86    Contains sample Thrift files and test code across the target programming
87    languages.
88
89  tutorial/
90
91    Contains a basic tutorial that will teach you how to develop software
92    using Thrift.
93
94Development
95===========
96
97To build the same way Travis CI builds the project you should use docker.
98We have [comprehensive building instructions for docker](build/docker/README.md).
99
100Requirements
101============
102
103See http://thrift.apache.org/docs/install for a list of build requirements (may be stale).  Alternatively see the docker build environments for a list of prerequisites.
104
105Resources
106=========
107
108More information about Thrift can be obtained on the Thrift webpage at:
109
110     http://thrift.apache.org
111
112Acknowledgments
113===============
114
115Thrift was inspired by pillar, a lightweight RPC tool written by Adam D'Angelo,
116and also by Google's protocol buffers.
117
118Installation
119============
120
121If you are building from the first time out of the source repository, you will
122need to generate the configure scripts.  (This is not necessary if you
123downloaded a tarball.)  From the top directory, do:
124
125    ./bootstrap.sh
126
127Once the configure scripts are generated, thrift can be configured.
128From the top directory, do:
129
130    ./configure
131
132You may need to specify the location of the boost files explicitly.
133If you installed boost in /usr/local, you would run configure as follows:
134
135    ./configure --with-boost=/usr/local
136
137Note that by default the thrift C++ library is typically built with debugging
138symbols included. If you want to customize these options you should use the
139CXXFLAGS option in configure, as such:
140
141    ./configure CXXFLAGS='-g -O2'
142    ./configure CFLAGS='-g -O2'
143    ./configure CPPFLAGS='-DDEBUG_MY_FEATURE'
144
145To enable gcov required options -fprofile-arcs -ftest-coverage enable them:
146
147    ./configure  --enable-coverage
148
149Run ./configure --help to see other configuration options
150
151Please be aware that the Python library will ignore the --prefix option
152and just install wherever Python's distutils puts it (usually along
153the lines of /usr/lib/pythonX.Y/site-packages/).  If you need to control
154where the Python modules are installed, set the PY_PREFIX variable.
155(DESTDIR is respected for Python and C++.)
156
157Make thrift:
158
159	make
160
161From the top directory, become superuser and do:
162
163	make install
164
165Note that some language packages must be installed manually using build tools
166better suited to those languages (at the time of this writing, this applies
167to Java, Ruby, PHP).
168
169Look for the README.md file in the lib/<language>/ folder for more details on the
170installation of each language library package.
171
172Testing
173=======
174
175There are a large number of client library tests that can all be run
176from the top-level directory.
177
178          make -k check
179
180This will make all of the libraries (as necessary), and run through
181the unit tests defined in each of the client libraries. If a single
182language fails, the make check will continue on and provide a synopsis
183at the end.
184
185To run the cross-language test suite, please run:
186
187          make cross
188
189This will run a set of tests that use different language clients and
190servers.
191
192
193