pkgsrc/devel/lua-thrift/DESCR
adam 60f92fb80d thrift: updated to 0.12.0 and split into language modules
Thrift 0.12.0

New Languages
* Common LISP (cl)
* Swift
* Typescript (nodets)

Deprecated Languages
* Cocoa

Breaking Changes (since 0.11.0)
* Rust enum variants are now camel-cased instead of uppercased to conform to Rust naming conventions
* Support for golang 1.6 and earlier has been dropped.
* PHP now uses the PSR-4 loader by default instead of class maps.
* method signatures changed in the compiler's t_oop_generator.
* The C (GLib) compiler's handling of namespaces has been improved.

Known Issues (Blocker or Critical)
* build: use a single build system for thrift
* build: bootstrap.sh is missing from source tarball
* csharp: socket exhaustion in csharp implementation
* cocoa: Getters for fields defined with uppercase names do not work
* cocoa: Extended services aren't subclasses in generated Cocoa
* cocoa: Thrift de-capitalizes the name of IsSet property in Cocoa
* cpp: the http implementation is not standard; interop with other languages is spotty at best
* cpp: Impossible to build Thrift C++ library for Android (NDK)
* cpp: Using multiple async services simultaneously is not thread-safe
* haskell: Defaulted struct parameters on a service generates invalid Haskell
* nodejs: Exception swallowed by deserialization function
* nodejs: map<i64,value> key treated as hex value in JavaScript
* nodejs: ERROR in ./node_modules/thrift/lib/nodejs/lib/thrift/connection.js Module not found: Error: Can't resolve 'child_process'
* nodejs: Sequence numbering for multiplexed protocol broken
* php: sequence and reconnection management issues
* php: Error during deserialization int64 on 32-bit architecture
* php: thrift type i64 java to php serialize/deserealize not working
* php: PHP gets stuck in infinite loop
* python: sending int or float in a double field breaks the connection
* python: unix sockets can get stuck forever
* python: generated code is out of order and causes load issues
* py3: UnicodeDecideError in Python3

Build Process
* D language docker images need demios for libevent and openssl fixed to re-enable make cross on dlang
* Use Ubuntu Bionic (18.04 LTS) for CI builds instead of Artful (17.10)
* Define CI operating system coverage rules for the project and (hopefully) simplify CI a little more
* ubuntu install instructions broken on 16.04
* Appveyor builds are failing due to a haskell / cabal update in chocolatey
* optimize Dockerfile (only onetime apt-get update)
* rm `build/docker/ubuntu-trusty/Dockerfile.orig`
* Ubuntu Artful doesn't appear to be compatible with Thrift and Haxe 3.4.2
* DLang Client Pool Test fails sporadically
* CL tutorial build fails sporadically
* Make haxelib download quiet so it doesn't blow up the build log
* bootstrap.sh fails if automake=1.16.1

c_glib
* The C (GLib) compiler's handling of namespaces has been improved.
* glibC compilation issue
* c glib is unable to handle client close unexpectedly

cl (new language support in 0.12.0)
* Common Lisp support

csharp
* reserved Csharp keywords are not escaped in some cases
* C# async mode generates incorrect code with inherited services
* IAsyncResult style methods not being supported by certain transports leads to issues in mixed ISync/IAsync use cases
* Allow TBufferedTransport to be used as base class
* XML docs; code cleanup (tabs->spaces; String->string)
* protected ExceptionType type member of TApplicationException cannot be accessed
* JSONProtocol Base64 Encoding Trims Padding
* Missing dispose calls in ThreadedServer & ThreadpoolServer
* keep InnerException wherever appropriate
* IAsyncResult not supported by layered transports (buffered/framed)

cpp
* Typecasting problem on list items
* TNonblockingServer throwing THRIFT LOGGER: TConnection::workSocket(): THRIFT_EAGAIN (unavailable resources)
* TBufferTransports.h does not compile under Visual Studio 2017
* TNonblockingServer crash because of limitation of select()
* TZlibTransport.cpp doesn't ensure that there is enough space for the zlib flush marker in the buffer.
* ZeroMQ contrib library needs a refresh
* TSSLServerSocket incorrectly prints errors
* Move `TAsyncProtocolProcessor` into main thrift library
* evhttp_connection_new is deprecated; use evhttp_connection_base_new

compiler
* Compiler cannot be compiled on macOS(maybe also on other platforms with clang)
* Thrift generates wrong Python code for immutable structures with optional members
* thrift generated code is not stable for constants
* Avoid updating Thrift compiler generated code if the output has not changed
* Visual Studio Compiler project should link runtime statically in release builds
* plugin.thrift t_const_value is not used as a union in C++ code -- fix this
* Dealing with language keywords in Thrift (e.g. service method names)
* repeated runs of compiler produce different binary output at plugin interface

dlang
* Thrift will not build with dlang 2.078 or later
* dlang servers logError on normal client disconnection
* D language docker images need demios for libevent and openssl fixed to re-enable make cross on dlang

dart
* Effective Dart and Exceptions
* Shouldn't download dart.deb directly.

delphi
* Calling wrong exception CTOR leads to "call failed: unknown result" instead of the real exception being thrown
* uncompileable code with member names that are also types under specific conditions
* Add Async implementation via IFuture
* Possible invalid ptr AV with overlapped read/write on pipes
* Thrift exceptions should derive from TException
* buffered transport broken when trying to re-open a formerly closed transport
* Move Thrift.Console.pas out of the Library
* Allow a default service as fallback for multiplex processors connected by old clients
* Large writes/reads may cause range check errors in debug mode
* Compiler directive should match Delphi XE4
* First line in Console duplicated
* FPU ctrl word settings may cause an unexpected "denormalized" error

erlang
* Erlang records should use map() for map type
* Erlang records should allow 'undefined' for non-required fields
* Fix erlang tutorial unpack on Windows
* Ubuntu Xenial erlang 18.3 "make check" fails

golang
* Support for golang 1.6 and earlier has been dropped.
* Go generator assigns strings to field in const instead of pointers.
* Unions Field Count Does Not Consider Binary
* Golang: Panic on p.c.Call when using deprecated initializers
* Required field incorrectly marked as set when fieldType does not match
* Golang: -remote.go client cleanup
* TSimpleServer can exit Accept loop with lock still acquired
* Add support for go 1.10
* golang tests rely on gomock, which has change behaviour, causing tests to fail
* Communication crash when using binary/compact protocol and zlib transport
* golang race detected when closing listener socket

haskell
* Haskell builds with older cabal cannot reconcile complex version requirements

java
* Thrift does not compile due to Ant Maven task errors
* Compiling Thrift from source: Class org.apache.tools.ant.taskdefs.ConditionTask doesn't support the nested "typefound" element
* proposal: add nullability annotations to generated Java code
* Generate missing @Nullable annotations for Java iterator getters
* Getter of binary field in Java creates unnecessary copy
* libthrift is deployed on central with pom packaging instead of jar
* Java Configure Fails for Ant >= 1.10
* Java libraries missing from package when using cmake
* pom files are not generated or provided in the build
* Maven can't download resource from central when behind a proxy and won't use local repository
* Optional rethrow of unhandled exceptions in java processor
* Able to set keyStore and trustStore as InputStream in the TSSLTransportFactory.TSSLTransportParameters
* Pass message of unhandled exception to optional rethrow.
* Remove assertion in Java SASL code that would be ignored in release builds
* Include popular IDE file templates to gitignore
* Make TThreadPoolServer.executorService_ available in inherited classes and refactor methods to be able customization
* Fix logic of THRIFT-2268
* Increase Java Socket Buffer Size
* Remove Magic Number In TFIleTransport

js
* JavaScript: Use modern Promise implementations
* let / const variable decorators for es6 compiler
* ES6 Classes
* JS: readI32 performance on large arrays is very poor in Chrome
* js and nodejs libraries need to be refreshed with current libraries
* thrift.js: Incorrect usage of 'this' in TWebSocketTransport.__onOpen
* Deserialization of nested list discards content
* JS WebSocket client callbacks invoked twice on parallel requests
* Duplicate declaration of InputBufferUnderrunError in lib/nodejs/lib/thrift/json_protocol.js
* Add prettier for consistent JS code formatting

lua
* lua client uses two write() calls per framed message send
* Can't "make install" Lua Library

netcore
* .NET Core Server doesn't close properly when cancelled
* Update .NET Core components, add tests for .Net Core library and .Net Core compiler, fix bugs and build process
* JSONProtocol Base64 Encoding Trims Padding

node.js
* Error handling malformed arguments leaks memory, corrupts transport buffers causing next RPC to fail
* Memory leak while calling oneway method
* add typescript directory support
* TBufferedTransport can leave corrupt data in the buffer
* Node.js Fileserver webroot path
* Unix domain socket support for NodeJS client
* node.js json_protocol throws error in skip function
* NodeJS: Expose Int64 from browser.js for consumption by browser
* NodeJS warning on binary_protocol writeMessageEnd when seqid = 0

perl
* Replace the use of Perl Indirect Object Syntax calls to new()
* Thrift CPAN release is missing Makefile.PL and the clients are unable to build the module
* Perl CPAN Packaging Improvements

php
* PHP generator use PSR-4 default
* PHP generated code match PSR-2
* Extending Thrift class results in "Attempt serialize from non-Thrift object"
* TSocket block on read
* migrate php library to psr-4
* infinite loop in latest PHP library
* TBufferedTransport must have underlying transport
* lib/php/test should be checked for PSR-2
* add phpcs back
* php library use PSR-2
* TCurlClient doesn't check for HTTP status code
* TCurlClient: show actual error message when throwing TTransportException
* Add stream context support into PHP/THttpClient
* reduce php library directory depth

python
* Twisted, slots, and void method fails with "object has no attribute 'success'"
* Potentially server-crashing typo in Python TNonblockingServer
* Supporting TBinaryProtocolAccelerated protocol when using TMultiplexedProcessor in Python
* Outdated cipher string in python unit test
* python build on Vagrant Windows boxes fails
* THeader for Python
* make socket backlog configurable for python
* Python: cleanup socket timeout settings

ruby
* Thrift RSpec test suite fails with Ruby 2.4.x due to Fixnum deprecation
* Support ruby rspec 3
* Add ssl socket option to ruby cross tests
* Add seek support to TCompactInputProtocol in Rust
* Codegen Creates Invalid Ruby for Recursive Structs
* Fix the genspec for ruby so it does not complain about an invalid license

rust
* Rust const string calls function at compile time
* Rust enum name wrong case in generated structs
* Avoid generating conflicting struct names in Rust code
* Rust generation should include #![allow(non_snake_case)] or force conform to Rust style guidelines
* Rust binary protocol and buffered transport cannot handle writes above 4096 bytes
* Rust framed transport cannot handle writes above 4096 bytes
* Rust's TBinaryInputProtocol fails when strict is false
* Dart -> Rust Framed cross tests fail
* Rust cannot create ReadHalf/WriteHalf to implement custom tranports

swift (new language support in 0.12.0)
* Swift Library

test suite
* Gracefully shutdown cross-test servers to fully test teardown
* Add .NET Core to the make cross standard test suite
* Add unix domain sockets in ruby to cross test - code exists

typescript (new language support in 0.12.0)
* add typescript directory support
2019-09-18 11:27:51 +00:00

10 lines
603 B
Text

Thrift is a software library and set of code-generation tools developed
at Facebook to expedite development and implementation of efficient and
scalable backend services. Its primary goal is to enable efficient and
reliable communication across programming languages by abstracting the
portions of each language that tend to require the most customization
into a common library that is implemented in each language.
Specifically, Thrift allows developers to define datatypes and service
interfaces in a single language-neutral file and generate all the
necessary code to build RPC clients and servers.