Apache Thrift is a lightweight, language-independent software stack for point-to-point RPC implementation

Overview

Apache Thrift

Introduction

Thrift is a lightweight, language-independent software stack for point-to-point RPC implementation. Thrift provides clean abstractions and implementations for data transport, data serialization, and application level processing. The code generation system takes a simple definition language as input and generates code across programming languages that uses the abstracted stack to build interoperable RPC clients and servers.

Apache Thrift Layered Architecture

Thrift makes it easy for programs written in different programming languages to share data and call remote procedures. With support for 28 programming languages, chances are Thrift supports the languages that you currently use.

Thrift is specifically designed to support non-atomic version changes across client and server code. This allows you to upgrade your server while still being able to service older clients; or have newer clients issue requests to older servers. An excellent community-provided write-up about thrift and compatibility when versioning an API can be found in the Thrift Missing Guide.

For more details on Thrift's design and implementation, see the Thrift whitepaper included in this distribution, or at the README.md file in your particular subdirectory of interest.

Status

Branch Travis Appveyor Coverity Scan codecov.io Website
master Build Status Build status Coverity Scan Build Status Website
0.14.0 Build Status

Releases

Thrift does not maintain a specific release calendar at this time.

We strive to release twice yearly. Download the current release.

License

Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Project Hierarchy

thrift/

compiler/

Contains the Thrift compiler, implemented in C++.

lib/

Contains the Thrift software library implementation, subdivided by
language of implementation.

cpp/
go/
java/
php/
py/
rb/
...

test/

Contains sample Thrift files and test code across the target programming
languages.

tutorial/

Contains a basic tutorial that will teach you how to develop software
using Thrift.

Development

To build the same way Travis CI builds the project you should use docker. We have comprehensive building instructions for docker.

Requirements

See 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.

Resources

More information about Thrift can be obtained on the Thrift webpage at:

 http://thrift.apache.org

Acknowledgments

Thrift was inspired by pillar, a lightweight RPC tool written by Adam D'Angelo, and also by Google's protocol buffers.

Installation

If you are building from the first time out of the source repository, you will need to generate the configure scripts. (This is not necessary if you downloaded a tarball.) From the top directory, do:

./bootstrap.sh

Once the configure scripts are generated, thrift can be configured. From the top directory, do:

./configure

You may need to specify the location of the boost files explicitly. If you installed boost in /usr/local, you would run configure as follows:

./configure --with-boost=/usr/local

Note that by default the thrift C++ library is typically built with debugging symbols included. If you want to customize these options you should use the CXXFLAGS option in configure, as such:

./configure CXXFLAGS='-g -O2'
./configure CFLAGS='-g -O2'
./configure CPPFLAGS='-DDEBUG_MY_FEATURE'

To enable gcov required options -fprofile-arcs -ftest-coverage enable them:

./configure  --enable-coverage

Run ./configure --help to see other configuration options

Please be aware that the Python library will ignore the --prefix option and just install wherever Python's distutils puts it (usually along the lines of /usr/lib/pythonX.Y/site-packages/). If you need to control where the Python modules are installed, set the PY_PREFIX variable. (DESTDIR is respected for Python and C++.)

Make thrift:

make

From the top directory, become superuser and do:

make install

Uninstall thrift:

make uninstall

Note that some language packages must be installed manually using build tools better suited to those languages (at the time of this writing, this applies to Java, Ruby, PHP).

Look for the README.md file in the lib// folder for more details on the installation of each language library package.

Package Managers

Apache Thrift is available via a number of package managers, a list which is is steadily growing. A more detailed overview can be found at the Apache Thrift web site under "Libraries" and/or in the respective READMEs for each language under /lib

Testing

There are a large number of client library tests that can all be run from the top-level directory.

make -k check

This will make all of the libraries (as necessary), and run through the unit tests defined in each of the client libraries. If a single language fails, the make check will continue on and provide a synopsis at the end.

To run the cross-language test suite, please run:

make cross

This will run a set of tests that use different language clients and servers.

Comments
  • THRIFT-5073: Optional handler interceptor for processor

    THRIFT-5073: Optional handler interceptor for processor

    Hi.

    Thank for this great project. But I think we can introduce some improvements which will be are useful for other developers.

    Inspired by https://github.com/grpc/grpc-go/blob/master/examples/features/interceptor/server/main.go.

    Interceptors give opportunities for:

    Logging input request and response We can log panic situation and return TApplicationException to client instead of EOF. We can intercept request and do stuff like some validation, etc. Usage example: https://gist.github.com/voodoo-dn/6af6cf54b8145cc3d4d87d888c4bf907

    wontfix rebase needed 
    opened by voodoo-dn 68
  • THRIFT-4329: Implement multiplexed processor that matches CPP and Java. Tested aga…

    THRIFT-4329: Implement multiplexed processor that matches CPP and Java. Tested aga…

    Implement multiplexed processor that matches CPP and Java. Tested against Java
    Missing Test suite
    Implement stored message protocol that adds the possibility of reading a header of a message and then process it
    

    I don't remember how to do cross tests from protocols. I want to test Java and C multiplexors against a C server. I did in my test units but Don't find the way here. I did it before so I will check.

    For now it's safe to merge this.

    opened by gadLinux 58
  • Fix abstract unix socket name

    Fix abstract unix socket name

    For the abstract unix socket address type, the string in the 'sun_path' field of the 'sockaddr_un struct', is a not null-terminated string (see unix(7)).

    Fix the lentgh calculation of the 'sun_path' field to don't add the termination null byte.

    opened by deiv 45
  • THRIFT-5093: lib: cpp: test: clarify effect of MemoryPolicy on TMemoryBuffer

    THRIFT-5093: lib: cpp: test: clarify effect of MemoryPolicy on TMemoryBuffer

    My main use case with the original code change was that I wanted to be able to call resetBuffer() on OBSERVE buffers and reuse the contents for test cases over and over. While the default resetBuffer() cannot be used for that purpose, the same result can be achieved by calling resetBuffer(ro_mem, ro_mem_size, OBSERVE) as well, so the workaround is fairly trivial.

    While the former implementation would be more convenient in some cases, it makes more sense to have consistent behaviour for all resetBuffer() implementations.

    Added test cases to clarify the effect of MemoryPolicy on TMemoryBuffer behaviour.

    • [x] Did you create an Apache Jira ticket? (not required for trivial changes)
    • [x] If a ticket exists: Does your pull request title follow the pattern "THRIFT-NNNN: describe my issue"?
    • [x] Did you squash your changes to a single commit? (not required, but preferred)
    • [x] Did you do your best to avoid breaking changes? If one was needed, did you label the Jira ticket with "Breaking-Change"?
    • [ ] If your change does not involve any code, add [skip ci] at the end of your pull request to free up build resources.
    opened by cfriedt 45
  • THRIFT-2945 Add Rust support

    THRIFT-2945 Add Rust support

    This is a PR to add Rust support to Thrift. It is based on today's master, and I've verified that Rust server/client successfully communicates with all cross-platform clients and servers (*). I would be happy to accept and incorporate feedback!

    Not implemented:

    • Struct/union constants: Honestly, this looks like it's "not possible" (tm)
    • Multiplexed processor

    I will be continuing to add documentation, comments and clean up the code in both the C++ generator as well as the Rust client library.

    (*) With exception of:

    1. D: no D compiler installed
    2. Lua: need to find out how to use .dylib when using Lua libs
    3. Dart: weird problem with pubspec requiring 1.0.0 instead of 1.0.0-dev
    opened by allengeorge 44
  • THRIFT-3773 Swift 3 Native Library

    THRIFT-3773 Swift 3 Native Library

    Here is my implementation of the Thrift library for Swift 3.0, pure swift.
    There is no Objective-C requirement here. For implementation and design details, please refer to comments here: https://issues.apache.org/jira/browse/THRIFT-3773?jql=text%20~%20%22swift%22 And to the README here: https://github.com/apocolipse/thrift/tree/master/lib/swift

    opened by apocolipse 44
  • THRIFT-4434. Update .NET Core components, add tests for .Net Core library and .Net Core compiler, fix bugs and build process

    THRIFT-4434. Update .NET Core components, add tests for .Net Core library and .Net Core compiler, fix bugs and build process

    This pull request should:

    • highly improve the current version of .Net Core library and .Net Core compiler and quality of code
    • improve and simplify build process
    • improve documentation related to .Net Core library and compiler
    • fix found bugs (some of bugs can be clarified like major - they are related to porting of protocols from Java version and can be present in C# library)
    • add important unit tests for .Net Core library and .Net Core compiler
    • add possibility to easy add unit tests for compiler for other languages
    opened by vgotra 40
  • [THRIFT-82] Add Common Lisp support

    [THRIFT-82] Add Common Lisp support

    There's framed and buffered socket transport, binary protocol, multiplex, simple server, cross-tests, self-tests, tutorial, CL library, CL code generator. Only SBCL is supported for now.

    opened by dkochmanski 34
  • Thrift 2905 &  - Modern Objective-C & Swift Support

    Thrift 2905 & - Modern Objective-C & Swift Support

    This pull request is really just to start a conversation about how to move forward with the changes I've made to the Thrift Cocoa library and generator.

    The nature of the changes are that they are big & a bit destructive. Unfortunately there wasn't much getting around that. Hopefully working with the community we can agree on the best way to integrate these changes. Maybe just as another "language" binding instead of replacing the current "cocoa".

    Goals

    • Modernize generated code
    • Increase asynchronous support (both blocks and promises)
    • Remove use of deprecated classes & paradigms (e.g NSException, NSURLConnection)
    • Generate Swift client & server code

    Major Changes

    • Addes Swift code generator

    • Use NSError based error & exception handling
    • Optionally generate PromiseKit methods in the asynchronous clients
    • Change asynchronous clients to be fully multi-thread safe
    • Added THTTPSessionTransport, asynchronous HTTP transport that works with NSURLSession
    • Use NS_ENUM enumerations (with standard format)
    • Use immutable collection types (e.g. NSArray) in service methods
    • Struct fields & their "set" flags now use properties exclusively
    • Helper classes now include the service name to fix duplicate naming issue when two services has the same method name
    • NSCopying is implemented correctly for structs
    • Simple constants are now "exported" public variables
    • Optionally use CocoaPods style imports with Podspec (e.g. <Thrift/File.h>)
    • Removed instance variables from public headers
    • Remove retain/release stubs
    • Remove all deallocs

    Why?

    We made some very large changes. Here's why...

    NSException to NSError

    The use of NSException has been very problematic for us. Aside from the direction of Apple, which is to use exceptions for "fatal errors" only, it comes with a host of issues. First, Clang still produces incorrect code in many cases when using exceptions. Take this code for example...

    executeBlockAndReturnValue(^{
      @try {
        return value;
      }
      @catch(NSException *e) {
      }
      // should be a return statement on this branch, Clang produces no error/warning
    });
    

    Clang should produce an error but doesn't. This is only a nuisance though, much worse are the ARC failures we've found when catching exceptions up the stack. Secondly, Swift has no support for exceptions (and with Swift 2 we've seen it won't ever use NSException).

    It's for these reasons we changed the the Cocoa library to use NSError, all of the generated (synchronous) methods now follow the Apple guidelines and return a BOOL or object pointer with a last error parameter of type NSError**; return values of NO or nil mean the error parameter is populated and the call failed (or and exception was thrown from the server). These changes have been made throughout the generated and library code.

    Client Method Mapping

    • Methods returning basic types are mapped to NSNumber/NSValue - nil reports call failure/exception
    • Methods returning VOID are mapped to return BOOL - NO reports call failure/exception
    • Methods returning Struct/String/Binary return the object value as normal - nil reports call failure/exception

    NSError & Swift 2

    These changes conveniently take the form of Swift 2's error handling system. This means that protocols and transports can be used from and written in Swift and will be compatible with the current & future directions of Swift.

    ARC Only

    ARC is here to stay; Apple deprecated everything else a few years ago. All code related to maintaining backwards compatibly with non-ARC mode has been removed.

    Mutl-Threaded Asynchronous Transports

    The current implementations means that clients cannot be used in different threads. This means the user is left to synchronize access to them or, as in our case, build a client per thread to ensure parallelism.

    Our changes have reengineered the way asynchronous works. Now, asynchronous clients accept only protocol and async-transport factories. Each call allocates a new transport and protocol binds them before use. This provides the best options for parallelism with a fairly small overhead.

    A note on performance... the alternative approaches, which we used in the past, required thread local storage inside the transport which meant an NSDictionary lookup (i.e. threadDictionary) for each read/write/flush. The new approach only requires 2 simple object allocations. Much improved.

    NSURLSession (NSURLConnection is now deprecated)

    The new THTTPSessionTransport replaces the old THTTPClient. It's both asynchronous and uses the new NSURLSession classes for conformance in the new iOS/OSX versions.

    NS_ENUM & Swift

    The generated code now generates properly formatted enumerations using the NS_ENUM macro & no underscores. This is to ensure they work with code completion in objective-c and are imported into Swift with the best possible syntax.

    opened by kdubb 34
  • make optional fields work in Golang

    make optional fields work in Golang

    Hi Jens, This is a [hopefully] minimal fix for https://issues.apache.org/jira/browse/THRIFT-2232.

    For anyone else who's looking at this, the goal is to decouple the IsSet...() methods from the values of the fields they correspond to.

    For example, prior to this change, an optional int with a value of 0 was considered absent per IsSetXYZ(). This is clearly broken, since 0 is often a valid value for a field.

    The approach taken -- per the discussion on jira -- is to use pointers to fields within the generated Go structs.

    A few notes about this approach:

    • the existing code already used pointers for struct-valued fields, so now those are special-cased.
    • since one cannot take the address of a temporary in Go, we must create some temporaries just to get pointers in certain situations.
    • we did get to remove a big block of IsSet()-generation code, which is a nice bonus.

    The new code works great for my company's project, though we don't use every thrift feature available. I generated all of the examples and tried to go build them; all of the example files that generated valid Go code prior to this change continue to do so after this change, though I don't see a full test suite to validate beyond that.

    Thanks for your time and attention! Ben

    opened by bhs 34
  • THRIFT-5495: close client when shutdown server in go lib

    THRIFT-5495: close client when shutdown server in go lib

    Client: [go]

    If there is client connection and no data is send,we will encounter hang druing server stop: 1>If transport factory conf with socket timeout,we will hang until the deadline of the socket

    2>If transport factory conf without socket timeout,we will hang forever

    Stack As below: goroutine 140800 [IO wait, 2706 minutes]: internal/poll.runtime_pollWait(0x7fbf804fb100, 0x72) runtime/netpoll.go:234 +0x89 internal/poll.(*pollDesc).wait(0xc009087700, 0xc008196000, 0x0) internal/poll/fd_poll_runtime.go:84 +0x32 internal/poll.(*pollDesc).waitRead(...) internal/poll/fd_poll_runtime.go:89 internal/poll.(*FD).Read(0xc009087700, {0xc008196000, 0x10000, 0x10000}) internal/poll/fd_unix.go:167 +0x25a net.(*netFD).Read(0xc009087700, {0xc008196000, 0x0, 0xc0061089b8}) net/fd_posix.go:56 +0x29 net.(*conn).Read(0xc007c98038, {0xc008196000, 0x0, 0xc006108978}) net/net.go:183 +0x45 github.com/apache/thrift/lib/go/thrift.(*socketConn).Read(0x246aae0, {0xc008196000, 0xc0058b4ed0, 0x246aae0}) github.com/apache/[email protected]/lib/go/thrift/socket_conn.go:101 +0x44 github.com/apache/thrift/lib/go/thrift.(*TSocket).Read(0xc003555460, {0xc008196000, 0x10000, 0x10000}) github.com/apache/[email protected]/lib/go/thrift/socket.go:221 +0x67 bufio.(*Reader).Read(0xc005657320, {0xc001da1000, 0x1000, 0x203000}) bufio/bufio.go:227 +0x1b4 github.com/apache/thrift/lib/go/thrift.(*TBufferedTransport).Read(0xc0035554a0, {0xc001da1000, 0x431e10, 0x64}) github.com/apache/[email protected]/lib/go/thrift/buffered_transport.go:67 +0x45 bufio.(*Reader).Read(0xc005657380, {0xc0090877f0, 0x4, 0x4b5bac0}) bufio/bufio.go:227 +0x1b4 io.ReadAtLeast({0x30c0520, 0xc005657380}, {0xc0090877f0, 0x4, 0x4}, 0x4) io/io.go:328 +0x9a io.ReadFull(...) io/io.go:347 github.com/apache/thrift/lib/go/thrift.(*TFramedTransport).readFrame(0xc009087780) github.com/apache/[email protected]/lib/go/thrift/framed_transport.go:199 +0x3c github.com/apache/thrift/lib/go/thrift.(*TFramedTransport).Read(0xc009087780, {0xc0090877f0, 0x1, 0x4}) github.com/apache/[email protected]/lib/go/thrift/framed_transport.go:148 +0x130 github.com/apache/thrift/lib/go/thrift.(*TFramedTransport).ReadByte(0xc009087780) github.com/apache/[email protected]/lib/go/thrift/framed_transport.go:157 +0x2e github.com/apache/thrift/lib/go/thrift.(*TCompactProtocol).readByteDirect(...) github.com/apache/[email protected]/lib/go/thrift/compact_protocol.go:766 github.com/apache/thrift/lib/go/thrift.(*TCompactProtocol).ReadMessageBegin(0xc008765040, {0x311a118, 0xc00319ede0}) github.com/apache/[email protected]/lib/go/thrift/compact_protocol.go:367 +0x62

    opened by buptubuntu 32
  • Bump json5 from 2.1.1 to 2.2.3

    Bump json5 from 2.1.1 to 2.2.3

    Bumps json5 from 2.1.1 to 2.2.3.

    Release notes

    Sourced from json5's releases.

    v2.2.3

    v2.2.2

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)

    v2.2.0

    • New: Accurate and documented TypeScript declarations are now included. There is no need to install @types/json5. (#236, #244)

    v2.1.3 [code, diff]

    • Fix: An out of memory bug when parsing numbers has been fixed. (#228, #229)

    v2.1.2

    • Fix: Bump minimist to v1.2.5. (#222)
    Changelog

    Sourced from json5's changelog.

    v2.2.3 [code, diff]

    v2.2.2 [code, diff]

    • Fix: Properties with the name __proto__ are added to objects and arrays. (#199) This also fixes a prototype pollution vulnerability reported by Jonathan Gregson! (#295).

    v2.2.1 [code, diff]

    • Fix: Removed dependence on minimist to patch CVE-2021-44906. (#266)

    v2.2.0 [code, diff]

    • New: Accurate and documented TypeScript declarations are now included. There is no need to install @types/json5. (#236, #244)

    v2.1.3 [code, diff]

    • Fix: An out of memory bug when parsing numbers has been fixed. (#228, #229)

    v2.1.2 [code, diff]

    • Fix: Bump minimist to v1.2.5. (#222)
    Commits
    • c3a7524 2.2.3
    • 94fd06d docs: update CHANGELOG for v2.2.3
    • 3b8cebf docs(security): use GitHub security advisories
    • f0fd9e1 docs: publish a security policy
    • 6a91a05 docs(template): bug -> bug report
    • 14f8cb1 2.2.2
    • 10cc7ca docs: update CHANGELOG for v2.2.2
    • 7774c10 fix: add proto to objects and arrays
    • edde30a Readme: slight tweak to intro
    • 97286f8 Improve example in readme
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Improve enum support for json generator

    Improve enum support for json generator

    The json generator currently outputs the type i32 for all enum fields. This commit changes it to output enum instead and output a class property with a reference to the actual enum type, similar to how it works for structs.

    This is a breaking change for the json generator because it introduces a new type id (enum) which also includes a class reference.

    • [ ] Did you create an Apache Jira ticket? (not required for trivial changes)
    • [ ] If a ticket exists: Does your pull request title follow the pattern "THRIFT-NNNN: describe my issue"?
    • [x] Did you squash your changes to a single commit? (not required, but preferred)
    • [x] Did you do your best to avoid breaking changes? If one was needed, did you label the Jira ticket with "Breaking-Change"?
    • [ ] If your change does not involve any code, include [skip ci] anywhere in the commit message to free up build resources.
    json 
    opened by cwe-dixa 2
  • THRIFT-5674: Catch and handle server implementation exceptions

    THRIFT-5674: Catch and handle server implementation exceptions

    Client: js:es6

    • [x] Did you create an Apache Jira ticket? (not required for trivial changes)
    • [x] If a ticket exists: Does your pull request title follow the pattern "THRIFT-NNNN: describe my issue"?
    • [x] Did you squash your changes to a single commit? (not required, but preferred)
    • [x] Did you do your best to avoid breaking changes? If one was needed, did you label the Jira ticket with "Breaking-Change"?
    • [x] If your change does not involve any code, include [skip ci] anywhere in the commit message to free up build resources.
    javascript 
    opened by ccmaymay 0
  • Bump qs from 6.5.2 to 6.5.3 in /lib/ts

    Bump qs from 6.5.2 to 6.5.3 in /lib/ts

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • Bump qs from 6.5.2 to 6.5.3

    Bump qs from 6.5.2 to 6.5.3

    Bumps qs from 6.5.2 to 6.5.3.

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge`: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies javascript 
    opened by dependabot[bot] 0
  • remove use of deprecated std::iterator

    remove use of deprecated std::iterator

    See https://www.fluentcpp.com/2018/05/08/std-iterator-deprecated/

    Formatting changes caused by clang-format, which I assume is OK given the repo has a .clang-format file.

    c++ 
    opened by garymm 0
Releases(v0.17.0)
  • v0.17.0(Sep 18, 2022)

    Please head over to the official release download source: http://thrift.apache.org/download

    The 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.

    Source code(tar.gz)
    Source code(zip)
  • v0.16.0(Feb 15, 2022)

    For release 0.16.0 head over to the official release download source: http://thrift.apache.org/download

    The assets below are added by Github based on the release tag and they may therefore not match the checkums.

    Source code(tar.gz)
    Source code(zip)
  • lib/go/thrift/v0.0.1-do-not-use(Oct 18, 2021)

    The purpose of this tag is to retract the version(s) generated by wrongly added lib/go/thrift/go.mod file. This tag shall not be used in any other way.

    To use the latest version of thrift go library, run

    go get github.com/apache/thrift@latest
    

    And remove lines containing "github.com/apache/thrift/lib/go/thrift" in your project's go.mod file, if any.

    See the following links for more details:

    • https://issues.apache.org/jira/browse/THRIFT-5472
    • https://github.com/golang/go/issues/49015
    Source code(tar.gz)
    Source code(zip)
  • v0.15.0(Sep 11, 2021)

    For release 0.15.0 head over to the official release download source: http://thrift.apache.org/download

    The assets below are added by Github based on the release tag and they may therefore not match the checkums.

    Source code(tar.gz)
    Source code(zip)
  • v0.14.2(Jun 17, 2021)

    For release 0.14.0 head over to the official release download source: http://thrift.apache.org/download

    The assets below are added by Github based on the release tag and they may therefore not match the checkums.

    Source code(tar.gz)
    Source code(zip)
  • v0.14.1(Mar 8, 2021)

    For release 0.14.1 head over to the official release download source: http://thrift.apache.org/download

    The assets below are added by Github based on the release tag and they may therefore not match the checkums.

    Source code(tar.gz)
    Source code(zip)
  • v0.14.0(Feb 11, 2021)

    For release 0.14.0 head over to the official release download source: http://thrift.apache.org/download

    The assets below are added by Github based on the release tag and they may therefore not match the checkums.

    Source code(tar.gz)
    Source code(zip)
  • v0.13.0(May 27, 2020)

    For release 0.13.0 head over to the official release download source: http://thrift.apache.org/download

    The assets below are added by Github based on the release tag and they may therefore not match the checkums.

    Source code(tar.gz)
    Source code(zip)
  • 0.9.3.1(Mar 13, 2019)

  • v0.12.0(Dec 27, 2018)

Owner
The Apache Software Foundation
The Apache Software Foundation
The Java gRPC implementation. HTTP/2 based RPC

gRPC-Java - An RPC library and framework gRPC-Java works with JDK 7. gRPC-Java clients are supported on Android API levels 16 and up (Jelly Bean and l

grpc 10.2k Jan 1, 2023
An annotation-based Java library for creating Thrift serializable types and services.

Drift Drift is an easy-to-use, annotation-based Java library for creating Thrift clients and serializable types. The client library is similar to JAX-

null 225 Dec 24, 2022
LINE 4.1k Dec 31, 2022
Apache Dubbo is a high-performance, java based, open source RPC framework.

Apache Dubbo Project Apache Dubbo is a high-performance, Java-based open-source RPC framework. Please visit official site for quick start and document

The Apache Software Foundation 38.2k Dec 31, 2022
CustomRPC - a tool that allows you to change your discord rich presence (RPC) to a custom one

CustomRPC is a tool that allows you to change your discord rich presence (RPC) to a custom one. It also allows creating sentence sequences

null 2 May 3, 2022
A simple proxy software made for Telegram. Works well for areas that have MTProxy or Socks5 blocked.

A simple proxy software made for Telegram. Works well for areas that have MTProxy or Socks5 blocked.

null 42 Dec 19, 2022
Simple & Lightweight Netty packet library + event system

Minimalistic Netty-Packet library Create packets with ease Bind events to packets Example Packet: public class TestPacket extends Packet { privat

Pierre Maurice Schwang 17 Dec 7, 2022
Socket.IO Client Implementation in Java

Socket.IO-Client for Java socket.io-java-client is an easy to use implementation of socket.io for Java. It uses Weberknecht as transport backend, but

Enno Boland 946 Dec 21, 2022
A barebones WebSocket client and server implementation written in 100% Java.

Java WebSockets This repository contains a barebones WebSocket server and client implementation written in 100% Java. The underlying classes are imple

Nathan Rajlich 9.5k Dec 30, 2022
Apache MINA is a network application framework which helps users

Apache MINA is a network application framework which helps users develop high performance and high scalability network applications easily

The Apache Software Foundation 846 Dec 20, 2022
gMark: a domain- and query language-independent graph instance and query workload generator

gMark is a domain- and query language-independent graph instance and query workload generator.

Roan 3 Nov 19, 2022
💡极致性能的企业级Java服务器框架,RPC,游戏服务器框架,web应用服务器框架。(Extreme fast enterprise Java server framework, can be RPC, game server framework, web server framework.)

?? 为性能而生的万能服务器框架 ?? Ⅰ. zfoo简介 ?? 性能炸裂,天生异步,Actor设计思想,无锁化设计,基于Spring的MVC式用法的万能RPC框架 极致序列化,原生集成的目前二进制序列化和反序列化速度最快的 zfoo protocol 作为网络通讯协议 高可拓展性,单台服务器部署,

null 1k Jan 1, 2023
Nifty is an implementation of Thrift clients and servers on Netty

his project is archived and no longer maintained. At the time of archiving, open issues and pull requests were clo

Meta Archive 902 Sep 9, 2022
lazy-language-loader improves loading times when changing your language by only reloading the language instead of all the game resources!

lazy-language-loader lazy-language-loader improves loading times when changing your language by only reloading the language instead of all the game re

Shalom Ademuwagun 7 Sep 7, 2022
An easy to use api to interact with many versions of minecraft in a version independent environment.

Glass - API An easy to use api to interact with many versions of minecraft in a version independent environment. Setup Instructions should be relative

null 2 Jan 25, 2022
Lightweight service-based PubSub, RPC and public APIs in Java

kite - service-based RPC, public APIs and PubSub in Java kite is a collection of reactive application messaging libraries that aim at providing high l

teris.io 3 Feb 17, 2022
The Java gRPC implementation. HTTP/2 based RPC

gRPC-Java - An RPC library and framework gRPC-Java works with JDK 7. gRPC-Java clients are supported on Android API levels 16 and up (Jelly Bean and l

grpc 10.2k Jan 1, 2023
LINE 4.1k Jan 2, 2023
An annotation-based Java library for creating Thrift serializable types and services.

Drift Drift is an easy-to-use, annotation-based Java library for creating Thrift clients and serializable types. The client library is similar to JAX-

null 225 Dec 24, 2022
LINE 4.1k Dec 31, 2022