Protocol Buffers - Google's data interchange format

Overview

Protocol Buffers - Google's data interchange format

Copyright 2008 Google Inc.

https://developers.google.com/protocol-buffers/

Overview

Protocol Buffers (a.k.a., protobuf) are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data. You can find protobuf's documentation on the Google Developers site.

This README file contains protobuf installation instructions. To install protobuf, you need to install the protocol compiler (used to compile .proto files) and the protobuf runtime for your chosen programming language.

Protocol Compiler Installation

The protocol compiler is written in C++. If you are using C++, please follow the C++ Installation Instructions to install protoc along with the C++ runtime.

For non-C++ users, the simplest way to install the protocol compiler is to download a pre-built binary from our release page:

https://github.com/protocolbuffers/protobuf/releases

In the downloads section of each release, you can find pre-built binaries in zip packages: protoc-$VERSION-$PLATFORM.zip. It contains the protoc binary as well as a set of standard .proto files distributed along with protobuf.

If you are looking for an old version that is not available in the release page, check out the maven repo here:

https://repo1.maven.org/maven2/com/google/protobuf/protoc/

These pre-built binaries are only provided for released versions. If you want to use the github master version at HEAD, or you need to modify protobuf code, or you are using C++, it's recommended to build your own protoc binary from source.

If you would like to build protoc binary from source, see the C++ Installation Instructions.

Protobuf Runtime Installation

Protobuf supports several different programming languages. For each programming language, you can find instructions in the corresponding source directory about how to install protobuf runtime for that specific language:

Language Source Ubuntu MacOS Windows
C++ (include C++ runtime and protoc) src Build status
Build status
Build status
Build status
Build status
Build status
Java java Build status
Build status
Build status
Build status
Python python Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Objective-C objectivec Build status
Build status
Build status
Build status
C# csharp Build status Build status
Build status
JavaScript js Build status Build status
Ruby ruby Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Build status
Go protocolbuffers/protobuf-go
PHP php Build status
Build status
Build status
Build status
Build status
Dart dart-lang/protobuf Build Status

Quick Start

The best way to learn how to use protobuf is to follow the tutorials in our developer guide:

https://developers.google.com/protocol-buffers/docs/tutorials

If you want to learn from code examples, take a look at the examples in the examples directory.

Documentation

The complete documentation for Protocol Buffers is available via the web at:

https://developers.google.com/protocol-buffers/

Issues
  • Missing value/null support for scalar value types in proto 3

    Missing value/null support for scalar value types in proto 3

    From the protobuf wire format we can tell whether a specific field exists or not. And in protobuf 2 generated code, all fields have a "HasXXX" method to tell whether the field exists or not in code. However in proto 3, we lost that ability. E.g. now we can't tell if a int32 field is missing, or has a value of 0 (default for int32 type).

    In many scenario, we need the ability to differentiate missing vs default value (basically nullable support for scalar types).

    Feng suggest workarounds:

    1. Use a wrapper message, such as google.protobuf.Int32Value. In proto3, message fields still have has-bits.
    2. Use an oneof. For example: message Test1 { oneof a_oneof { int32 a = 1; } } then you can check test.getAOneofCase().

    However, this requires change the message definition, which is a no go if you need to keep the message compatible while upgrade from proto2 to proto 3.

    We need to add back the support to detect whether a scalar type field exist or not.

    More discussion here: https://groups.google.com/forum/#!topic/protobuf/6eJKPXXoJ88

    question proto3 
    opened by lostindark 152
  • python: use relative imports in generated modules

    python: use relative imports in generated modules

    I have a package foo that looks like this:

    .
    ├── data
    │   ├── a.proto
    │   └── b.proto
    └── generated
        ├── a_pb2.py
        ├── b_pb2.py
        └── __init__.py
    
    # a.proto
    package foo;
    
    # b.proto
    import "a.proto";
    
    package foo;
    

    Generate the code: protoc -I ./data --python_out=generated data/a.proto data/b.proto. Here is the failure:

    Python 3.5.1 (default, Mar  3 2016, 09:29:07) 
    [GCC 5.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from generated import b_pb2
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/home/corentih/repro/generated/b_pb2.py", line 16, in <module>
        import a_pb2
    ImportError: No module named 'a_pb2'
    

    This is beacuse the generated code looks like this:

    import a_pb2
    

    If the import was relative it would actually work:

    from . import a_pb2
    
    python 
    opened by little-dude 101
  • Investigate support for Unity

    Investigate support for Unity

    quoting @jskeet: "There's suspicion the current version of C# protobufs won't work with Unity, but we can add another build target for that later when we find a need - we can create a new minor version of the NuGet package for that with no problems.

    My experience with the "old" protobuf-csharp-port is that Unity on iOS has various issues, so I think we'll want to investigate them pretty thoroughly before trying to support it anyway - and we may need to conditionally compile out some features. We'll see... but I'd like to avoid having Unity support block a dotnetcore release."

    also see #638

    enhancement c# 
    opened by jtattermusch 83
  • [CSharp] Allow Span<byte>-based parsing in CodedInputStream

    [CSharp] Allow Span-based parsing in CodedInputStream

    IMO C# protobuf implementation could strongly benefit performance-wise from allowing some unsafe code.

    Background

    First of all I am not saying that unsafe should be enabled in every build/every platform, having 100% managed library is always a nice feature. All I am suggesting is again some conditional feature on some platform.

    However there is a trend to move towards unsafe mixing we can observe in .NET Core. For example a lot of .NET Core libraries use unsafe code due to need to interop with different kind of unmanaged libraries or just to handle AOT compiled code.

    API change

    Today CodedInputStream works in two modes: streaming with byte[] buffer and with a fixed buffer.

    It would be really nice to be able to provide byte * and length to CodedInputStream constructor.

    Alternatively we could create an UnmanagedCodedInputStream which would work on unmanaged memory.

    This would require to abstracting CodedInputStream as an interface

    Affected APIs

    Async API #3166 makes absolutely no sense for UnmanagedCodedInputStream because it assumes everything have been already read.

    Benefits

    1. It's extremely useful for interop (See scenario 1)
    2. It can work with stackalloc (See scenario 2)
    3. It allows even quicker deserialization we can quicker deserialize byte * to for example fixed-size primitive types by pointer dereference. (Endiannes might be a problem here)

    Scenarios

    Scenario 1. NoSQL Database

    User is using native NoSQL database (for example RocksDB/LevelDB) and is using protobuf for data persistence. Database returns native allocated pointer with buffer. Instead of copying entire buffer to the memory user can deserialize record straight from the returned memory native memory and then free the pointer. Very little GC is involved and there is practically no overhead.

    Scenario 2. Stackalloc-ated buffers

    For performance reasons to decrease heap allocations and allocate buffer on stack. This scenario can be alternatively handled by Buffer Pooling, however stackalloc seems to be more efficient.

    Affected by

    https://github.com/dotnet/corefxlab/blob/master/docs/specs/span.md - this work in progress improvement can allow to achieve the same goals in a managed way by providing some platform improvements.

    enhancement c# P3 
    opened by mkosieradzki 70
  • proto3 and unknown fields

    proto3 and unknown fields

    I know that unknown fields have been removed from proto3, but I am trying to get an explanation about why this change was made and if there is any way to replicate that behavior in proto3.

    Thanks so much.

    referred from golang/protobuf#25

    question 
    opened by joshuarubin 69
  • Change C# reflection to avoid using expression trees

    Change C# reflection to avoid using expression trees

    This should work on Unity, Mono and .NET 3.5 as far as I'm aware. It won't work on platforms where reflection itself is prohibited, but that's a non-starter basically.

    Creating a PR to start with, but I'd like to test it in other environments before merging. Once this is in, we can look at potentially officially supporting .NET 3.5 and Unity (#644).

    cla: yes 
    opened by jskeet 68
  • Add CodedInputReader and CodedOutputWriter

    Add CodedInputReader and CodedOutputWriter

    This is very WIP/rough. I had to create a new ISpanMessage<T> interface, and some areas do not have full support for it yet (they are throwing NotSupportException right now).

    Nothing has been done on the code gen side. The way the reader and writer are used compared to the streams is almost identitical so code gen changes should be minimal.

    Perf numbers:

    WriteToByteArray and ParseFromByteArray both allocate the byte array. This matches how serialization from gRPC works today.

    WriteToBufferWriter writes to an IBufferWriter<byte> and doesn't allocate at all. For a small message CodedOutputWriter is slower than CodedOutputStream. It is faster for medium/large messages. Still some tuning to be done.

    ParseFromReadOnlySequence reads from a sequence. Its allocations are related to creating the message and whatever strings exist on the message. Using CodedInputReader is consistently faster than CodedInputStream.

    |                    Method |     Mean |     Error |    StdDev |   Median | Gen 0/1k Op | Gen 1/1k Op | Gen 2/1k Op | Allocated Memory/Op |
    |-------------------------- |---------:|----------:|----------:|---------:|------------:|------------:|------------:|--------------------:|
    |          WriteToByteArray | 377.5 ns | 11.210 ns | 32.876 ns | 370.3 ns |      0.0682 |           - |           - |               288 B |
    |        ParseFromByteArray | 385.2 ns |  8.280 ns | 23.624 ns | 377.5 ns |      0.2666 |           - |           - |              1120 B |
    |       WriteToBufferWriter | 294.0 ns |  3.658 ns |  3.421 ns | 293.6 ns |           - |           - |           - |                   - |
    | ParseFromReadOnlySequence | 338.6 ns |  6.696 ns | 10.621 ns | 336.0 ns |      0.1903 |           - |           - |               800 B |
    

    @jskeet @davidfowl @JunTaoLuo @jtattermusch

    cla: yes c# release notes: yes 
    opened by JamesNK 58
  • kotlin  support request

    kotlin support request

    please support convert to kotlin

    enhancement 
    opened by MartinDong 56
  • Segmentation Fault (Segfault) on the ruby gem

    Segmentation Fault (Segfault) on the ruby gem

    Hello there,

    The following segmentation fault pops up upon running

    ruby -e 'require "google/cloud/trace"'

    inside of a Docker container based on ruby:2.5-alpine (alpine 3.7.0)

    Gemfile.lock (partial)

        google-cloud-core (1.2.0)
          google-cloud-env (~> 1.0)
        google-cloud-env (1.0.1)
          faraday (~> 0.11)
        google-cloud-trace (0.31.0)
          google-cloud-core (~> 1.2)
          google-gax (~> 1.0)
          stackdriver-core (~> 1.3)
        google-gax (1.0.1)
          google-protobuf (~> 3.2)
          googleapis-common-protos (>= 1.3.5, < 2.0)
          googleauth (~> 0.6.2)
          grpc (>= 1.7.2, < 2.0)
          rly (~> 0.2.3)
        google-protobuf (3.5.1.2)
        googleapis-common-protos (1.3.7)
          google-protobuf (~> 3.0)
          googleapis-common-protos-types (~> 1.0)
          grpc (~> 1.0)
        googleapis-common-protos-types (1.0.1)
          google-protobuf (~> 3.0)
        googleauth (0.6.2)
          faraday (~> 0.12)
          jwt (>= 1.4, < 3.0)
          logging (~> 2.0)
          memoist (~> 0.12)
          multi_json (~> 1.11)
          os (~> 0.9)
          signet (~> 0.7)
        grpc (1.10.0)
          google-protobuf (~> 3.1)
          googleapis-common-protos-types (~> 1.0.0)
          googleauth (>= 0.5.1, < 0.7)
    

    Ruby Segfault Dump

    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/any_pb.rb:15: [BUG] Segmentation fault at 0x0000000000016e16
    ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-musl]
    
    -- Control frame information -----------------------------------------------
    c:0039 p:---- s:0240 e:000239 CFUNC  :msgclass
    c:0038 p:0022 s:0236 e:000235 CLASS  /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/any_pb.rb:15
    c:0037 p:0007 s:0233 e:000232 CLASS  /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/any_pb.rb:14
    c:0036 p:0033 s:0230 E:001380 TOP    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/any_pb.rb:13 [FINISH]
    c:0035 p:---- s:0227 e:000226 CFUNC  :require
    c:0034 p:0110 s:0222 e:000221 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0033 p:0013 s:0210 e:000209 TOP    /usr/local/bundle/gems/googleapis-common-protos-types-1.0.1/lib/google/rpc/status_pb.rb:6 [FINISH]
    c:0032 p:---- s:0207 e:000206 CFUNC  :require
    c:0031 p:0110 s:0202 e:000201 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0030 p:0013 s:0190 e:000189 TOP    /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/google_rpc_status_utils.rb:16 [FINISH]
    c:0029 p:---- s:0187 e:000186 CFUNC  :require
    c:0028 p:0110 s:0182 e:000181 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0027 p:0013 s:0170 e:000169 TOP    /usr/local/bundle/gems/google-gax-1.0.1/lib/google/gax/grpc.rb:31 [FINISH]
    c:0026 p:---- s:0167 e:000166 CFUNC  :require
    c:0025 p:0110 s:0162 e:000161 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0024 p:0013 s:0150 e:000149 TOP    /usr/local/bundle/gems/google-gax-1.0.1/lib/google/gax/errors.rb:32 [FINISH]
    c:0023 p:---- s:0147 e:000146 CFUNC  :require
    c:0022 p:0110 s:0142 e:000141 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0021 p:0013 s:0130 e:000129 TOP    /usr/local/bundle/gems/google-gax-1.0.1/lib/google/gax/api_callable.rb:32 [FINISH]
    c:0020 p:---- s:0127 e:000126 CFUNC  :require
    c:0019 p:0110 s:0122 e:000121 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0018 p:0006 s:0110 e:000109 TOP    /usr/local/bundle/gems/google-gax-1.0.1/lib/google/gax.rb:30 [FINISH]
    c:0017 p:---- s:0107 e:000106 CFUNC  :require
    c:0016 p:0110 s:0102 e:000101 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0015 p:0020 s:0090 e:000089 TOP    /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/v1/trace_service_client.rb:28 [FINISH]
    c:0014 p:---- s:0087 e:000086 CFUNC  :require
    c:0013 p:0110 s:0082 e:000081 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0012 p:0006 s:0070 e:000069 TOP    /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/v1.rb:16 [FINISH]
    c:0011 p:---- s:0067 e:000066 CFUNC  :require
    c:0010 p:0110 s:0062 e:000061 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0009 p:0020 s:0050 e:000049 TOP    /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/service.rb:18 [FINISH]
    c:0008 p:---- s:0047 e:000046 CFUNC  :require
    c:0007 p:0110 s:0042 e:000041 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59
    c:0006 p:0062 s:0030 e:000029 TOP    /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace.rb:24 [FINISH]
    c:0005 p:---- s:0027 e:000026 CFUNC  :require
    c:0004 p:0091 s:0022 e:000021 RESCUE /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135
    c:0003 p:0376 s:0018 e:000017 METHOD /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:39
    c:0002 p:0006 s:0006 e:000005 EVAL   -e:1 [FINISH]
    c:0001 p:0000 s:0003 E:000d00 (none) [FINISH]
    
    -- Ruby level backtrace information ----------------------------------------
    -e:1:in `<main>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:39:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in `rescue in require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in `require'
    /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace.rb:24:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/service.rb:18:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/v1.rb:16:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/v1/trace_service_client.rb:28:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/google-gax-1.0.1/lib/google/gax.rb:30:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/google-gax-1.0.1/lib/google/gax/api_callable.rb:32:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/google-gax-1.0.1/lib/google/gax/errors.rb:32:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/google-gax-1.0.1/lib/google/gax/grpc.rb:31:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/google_rpc_status_utils.rb:16:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/googleapis-common-protos-types-1.0.1/lib/google/rpc/status_pb.rb:6:in `<top (required)>'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/any_pb.rb:13:in `<top (required)>'
    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/any_pb.rb:14:in `<module:Google>'
    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/any_pb.rb:15:in `<module:Protobuf>'
    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/any_pb.rb:15:in `msgclass'
    
    -- Machine register context ------------------------------------------------
     RIP: 0x0000000000016e16 RBP: 0x00007ffda9865780 RSP: 0x00007ffda9865738
     RAX: 0x000000000000000a RBX: 0x000055d0f91e09c0 RCX: 0x0000000000000008
     RDX: 0x0000000000000001 RDI: 0x00007ffda9865740 RSI: 0x00007ffda986574e
      R8: 0x0000000000000003  R9: 0xffffffffffffffff R10: 0x0000000000000000
     R11: 0x000055d0f92be2c0 R12: 0x0000000000000000 R13: 0x0000000000000002
     R14: 0x00007ffda98657e8 R15: 0x000055d0f91e09c0 EFL: 0x0000000000010246
    
    -- Other runtime information -----------------------------------------------
    
    * Loaded script: -e
    
    * Loaded features:
    
        0 enumerator.so
        1 thread.rb
        2 rational.so
        3 complex.so
        4 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/encdb.so
        5 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/trans/transdb.so
        6 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/rbconfig.rb
        7 /usr/local/lib/ruby/2.5.0/rubygems/compatibility.rb
        8 /usr/local/lib/ruby/2.5.0/rubygems/defaults.rb
        9 /usr/local/lib/ruby/2.5.0/rubygems/deprecate.rb
       10 /usr/local/lib/ruby/2.5.0/rubygems/errors.rb
       11 /usr/local/lib/ruby/2.5.0/rubygems/version.rb
       12 /usr/local/lib/ruby/2.5.0/rubygems/requirement.rb
       13 /usr/local/lib/ruby/2.5.0/rubygems/platform.rb
       14 /usr/local/lib/ruby/2.5.0/rubygems/basic_specification.rb
       15 /usr/local/lib/ruby/2.5.0/rubygems/stub_specification.rb
       16 /usr/local/lib/ruby/2.5.0/rubygems/util/list.rb
       17 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/stringio.so
       18 /usr/local/lib/ruby/2.5.0/uri/rfc2396_parser.rb
       19 /usr/local/lib/ruby/2.5.0/uri/rfc3986_parser.rb
       20 /usr/local/lib/ruby/2.5.0/uri/common.rb
       21 /usr/local/lib/ruby/2.5.0/uri/generic.rb
       22 /usr/local/lib/ruby/2.5.0/uri/ftp.rb
       23 /usr/local/lib/ruby/2.5.0/uri/http.rb
       24 /usr/local/lib/ruby/2.5.0/uri/https.rb
       25 /usr/local/lib/ruby/2.5.0/uri/ldap.rb
       26 /usr/local/lib/ruby/2.5.0/uri/ldaps.rb
       27 /usr/local/lib/ruby/2.5.0/uri/mailto.rb
       28 /usr/local/lib/ruby/2.5.0/uri.rb
       29 /usr/local/lib/ruby/2.5.0/rubygems/specification.rb
       30 /usr/local/lib/ruby/2.5.0/rubygems/exceptions.rb
       31 /usr/local/lib/ruby/2.5.0/rubygems/dependency.rb
       32 /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_gem.rb
       33 /usr/local/lib/ruby/2.5.0/monitor.rb
       34 /usr/local/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb
       35 /usr/local/lib/ruby/2.5.0/rubygems.rb
       36 /usr/local/lib/ruby/2.5.0/rubygems/path_support.rb
       37 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/version.rb
       38 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/core_ext/name_error.rb
       39 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/levenshtein.rb
       40 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/jaro_winkler.rb
       41 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checker.rb
       42 /usr/local/lib/ruby/2.5.0/delegate.rb
       43 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb
       44 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
       45 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/name_error_checkers.rb
       46 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/method_name_checker.rb
       47 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/key_error_checker.rb
       48 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/spell_checkers/null_checker.rb
       49 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean/formatters/plain_formatter.rb
       50 /usr/local/lib/ruby/gems/2.5.0/gems/did_you_mean-1.2.0/lib/did_you_mean.rb
       51 /usr/local/lib/ruby/2.5.0/rubygems/bundler_version_finder.rb
       52 /usr/local/bundle/gems/google-cloud-core-1.2.0/lib/google/cloud/config.rb
       53 /usr/local/bundle/gems/google-cloud-core-1.2.0/lib/google/cloud/core/version.rb
       54 /usr/local/lib/ruby/2.5.0/cgi/core.rb
       55 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/cgi/escape.so
       56 /usr/local/lib/ruby/2.5.0/cgi/util.rb
       57 /usr/local/lib/ruby/2.5.0/cgi/cookie.rb
       58 /usr/local/lib/ruby/2.5.0/cgi.rb
       59 /usr/local/lib/ruby/2.5.0/set.rb
       60 /usr/local/lib/ruby/2.5.0/forwardable/impl.rb
       61 /usr/local/lib/ruby/2.5.0/forwardable.rb
       62 /usr/local/lib/ruby/2.5.0/timeout.rb
       63 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/utils.rb
       64 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/options.rb
       65 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/connection.rb
       66 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/rack_builder.rb
       67 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/parameters.rb
       68 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/middleware.rb
       69 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/adapter.rb
       70 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/request.rb
       71 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/response.rb
       72 /usr/local/bundle/gems/multipart-post-2.0.0/lib/composite_io.rb
       73 /usr/local/bundle/gems/multipart-post-2.0.0/lib/parts.rb
       74 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/upload_io.rb
       75 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/error.rb
       76 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/autoload.rb
       77 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday.rb
       78 /usr/local/lib/ruby/2.5.0/json/version.rb
       79 /usr/local/lib/ruby/2.5.0/ostruct.rb
       80 /usr/local/lib/ruby/2.5.0/json/generic_object.rb
       81 /usr/local/lib/ruby/2.5.0/json/common.rb
       82 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/json/ext/parser.so
       83 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/json/ext/generator.so
       84 /usr/local/lib/ruby/2.5.0/json/ext.rb
       85 /usr/local/lib/ruby/2.5.0/json.rb
       86 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/request/url_encoded.rb
       87 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/socket.so
       88 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/io/wait.so
       89 /usr/local/lib/ruby/2.5.0/socket.rb
       90 /usr/local/lib/ruby/2.5.0/net/protocol.rb
       91 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/zlib.so
       92 /usr/local/lib/ruby/2.5.0/net/http/exceptions.rb
       93 /usr/local/lib/ruby/2.5.0/net/http/header.rb
       94 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/windows_31j.so
       95 /usr/local/lib/ruby/2.5.0/net/http/generic_request.rb
       96 /usr/local/lib/ruby/2.5.0/net/http/request.rb
       97 /usr/local/lib/ruby/2.5.0/net/http/requests.rb
       98 /usr/local/lib/ruby/2.5.0/net/http/response.rb
       99 /usr/local/lib/ruby/2.5.0/net/http/responses.rb
      100 /usr/local/lib/ruby/2.5.0/net/http/proxy_delta.rb
      101 /usr/local/lib/ruby/2.5.0/net/http/backward.rb
      102 /usr/local/lib/ruby/2.5.0/net/http.rb
      103 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/digest.so
      104 /usr/local/lib/ruby/2.5.0/digest.rb
      105 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/openssl.so
      106 /usr/local/lib/ruby/2.5.0/openssl/bn.rb
      107 /usr/local/lib/ruby/2.5.0/openssl/pkey.rb
      108 /usr/local/lib/ruby/2.5.0/openssl/cipher.rb
      109 /usr/local/lib/ruby/2.5.0/openssl/config.rb
      110 /usr/local/lib/ruby/2.5.0/openssl/digest.rb
      111 /usr/local/lib/ruby/2.5.0/openssl/x509.rb
      112 /usr/local/lib/ruby/2.5.0/openssl/buffering.rb
      113 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/io/nonblock.so
      114 /usr/local/lib/ruby/2.5.0/openssl/ssl.rb
      115 /usr/local/lib/ruby/2.5.0/openssl/pkcs5.rb
      116 /usr/local/lib/ruby/2.5.0/openssl.rb
      117 /usr/local/lib/ruby/2.5.0/net/https.rb
      118 /usr/local/bundle/gems/faraday-0.12.2/lib/faraday/adapter/net_http.rb
      119 /usr/local/bundle/gems/google-cloud-env-1.0.1/lib/google/cloud/env.rb
      120 /usr/local/bundle/gems/google-cloud-env-1.0.1/lib/google/cloud/env/version.rb
      121 /usr/local/bundle/gems/google-cloud-env-1.0.1/lib/google-cloud-env.rb
      122 /usr/local/bundle/gems/google-cloud-core-1.2.0/lib/google/cloud.rb
      123 /usr/local/bundle/gems/addressable-2.5.2/lib/addressable/version.rb
      124 /usr/local/bundle/gems/addressable-2.5.2/lib/addressable/idna/pure.rb
      125 /usr/local/bundle/gems/addressable-2.5.2/lib/addressable/idna.rb
      126 /usr/local/bundle/gems/public_suffix-3.0.2/lib/public_suffix/domain.rb
      127 /usr/local/bundle/gems/public_suffix-3.0.2/lib/public_suffix/version.rb
      128 /usr/local/bundle/gems/public_suffix-3.0.2/lib/public_suffix/errors.rb
      129 /usr/local/bundle/gems/public_suffix-3.0.2/lib/public_suffix/rule.rb
      130 /usr/local/bundle/gems/public_suffix-3.0.2/lib/public_suffix/list.rb
      131 /usr/local/bundle/gems/public_suffix-3.0.2/lib/public_suffix.rb
      132 /usr/local/bundle/gems/addressable-2.5.2/lib/addressable/uri.rb
      133 /usr/local/bundle/gems/signet-0.8.1/lib/signet/version.rb
      134 /usr/local/bundle/gems/signet-0.8.1/lib/signet.rb
      135 /usr/local/bundle/gems/signet-0.8.1/lib/signet/errors.rb
      136 /usr/local/lib/ruby/2.5.0/base64.rb
      137 /usr/local/bundle/gems/multi_json-1.13.1/lib/multi_json/options.rb
      138 /usr/local/bundle/gems/multi_json-1.13.1/lib/multi_json/version.rb
      139 /usr/local/bundle/gems/multi_json-1.13.1/lib/multi_json/adapter_error.rb
      140 /usr/local/bundle/gems/multi_json-1.13.1/lib/multi_json/parse_error.rb
      141 /usr/local/bundle/gems/multi_json-1.13.1/lib/multi_json/options_cache.rb
      142 /usr/local/bundle/gems/multi_json-1.13.1/lib/multi_json.rb
      143 /usr/local/bundle/gems/signet-0.8.1/lib/signet/oauth_2.rb
      144 /usr/local/bundle/gems/jwt-1.5.6/lib/jwt/json.rb
      145 /usr/local/bundle/gems/jwt-1.5.6/lib/jwt/error.rb
      146 /usr/local/bundle/gems/jwt-1.5.6/lib/jwt/verify.rb
      147 /usr/local/bundle/gems/jwt-1.5.6/lib/jwt/decode.rb
      148 /usr/local/bundle/gems/jwt-1.5.6/lib/jwt.rb
      149 /usr/local/bundle/gems/signet-0.8.1/lib/signet/oauth_2/client.rb
      150 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/signet.rb
      151 /usr/local/bundle/gems/memoist-0.16.0/lib/memoist/version.rb
      152 /usr/local/bundle/gems/memoist-0.16.0/lib/memoist/core_ext/singleton_class.rb
      153 /usr/local/bundle/gems/memoist-0.16.0/lib/memoist.rb
      154 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/compute_engine.rb
      155 /usr/local/lib/ruby/2.5.0/psych/versions.rb
      156 /usr/local/lib/ruby/2.5.0/psych/exception.rb
      157 /usr/local/lib/ruby/2.5.0/psych/syntax_error.rb
      158 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/psych.so
      159 /usr/local/lib/ruby/2.5.0/psych/omap.rb
      160 /usr/local/lib/ruby/2.5.0/psych/set.rb
      161 /usr/local/lib/ruby/2.5.0/psych/class_loader.rb
      162 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/strscan.so
      163 /usr/local/lib/ruby/2.5.0/psych/scalar_scanner.rb
      164 /usr/local/lib/ruby/2.5.0/psych/nodes/node.rb
      165 /usr/local/lib/ruby/2.5.0/psych/nodes/stream.rb
      166 /usr/local/lib/ruby/2.5.0/psych/nodes/document.rb
      167 /usr/local/lib/ruby/2.5.0/psych/nodes/sequence.rb
      168 /usr/local/lib/ruby/2.5.0/psych/nodes/scalar.rb
      169 /usr/local/lib/ruby/2.5.0/psych/nodes/mapping.rb
      170 /usr/local/lib/ruby/2.5.0/psych/nodes/alias.rb
      171 /usr/local/lib/ruby/2.5.0/psych/nodes.rb
      172 /usr/local/lib/ruby/2.5.0/psych/streaming.rb
      173 /usr/local/lib/ruby/2.5.0/psych/visitors/visitor.rb
      174 /usr/local/lib/ruby/2.5.0/psych/visitors/to_ruby.rb
      175 /usr/local/lib/ruby/2.5.0/psych/visitors/emitter.rb
      176 /usr/local/lib/ruby/2.5.0/psych/handler.rb
      177 /usr/local/lib/ruby/2.5.0/psych/tree_builder.rb
      178 /usr/local/lib/ruby/2.5.0/psych/visitors/yaml_tree.rb
      179 /usr/local/lib/ruby/2.5.0/psych/json/ruby_events.rb
      180 /usr/local/lib/ruby/2.5.0/psych/visitors/json_tree.rb
      181 /usr/local/lib/ruby/2.5.0/psych/visitors/depth_first.rb
      182 /usr/local/lib/ruby/2.5.0/psych/visitors.rb
      183 /usr/local/lib/ruby/2.5.0/psych/parser.rb
      184 /usr/local/lib/ruby/2.5.0/psych/coder.rb
      185 /usr/local/lib/ruby/2.5.0/psych/core_ext.rb
      186 /usr/local/lib/ruby/2.5.0/psych/stream.rb
      187 /usr/local/lib/ruby/2.5.0/psych/json/yaml_events.rb
      188 /usr/local/lib/ruby/2.5.0/psych/json/tree_builder.rb
      189 /usr/local/lib/ruby/2.5.0/psych/json/stream.rb
      190 /usr/local/lib/ruby/2.5.0/psych/handlers/document_stream.rb
      191 /usr/local/lib/ruby/2.5.0/psych.rb
      192 /usr/local/lib/ruby/2.5.0/yaml.rb
      193 /usr/local/bundle/gems/os-0.9.6/lib/os.rb
      194 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/credentials_loader.rb
      195 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/service_account.rb
      196 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/scope_util.rb
      197 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/user_refresh.rb
      198 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/default_credentials.rb
      199 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/application_default.rb
      200 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/client_id.rb
      201 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/credentials.rb
      202 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/user_authorizer.rb
      203 /usr/local/lib/ruby/2.5.0/securerandom.rb
      204 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth/web_user_authorizer.rb
      205 /usr/local/bundle/gems/googleauth-0.6.2/lib/googleauth.rb
      206 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google-cloud-trace.rb
      207 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/version.rb
      208 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/credentials.rb
      209 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/label_key.rb
      210 /usr/local/bundle/gems/stackdriver-core-1.3.0/lib/stackdriver/core/async_actor.rb
      211 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/async_reporter.rb
      212 /usr/local/bundle/gems/stackdriver-core-1.3.0/lib/stackdriver/core/trace_context.rb
      213 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/middleware.rb
      214 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/notifications.rb
      215 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/project.rb
      216 /usr/local/bundle/gems/google-cloud-trace-0.31.0/lib/google/cloud/trace/result_set.rb
      217 /usr/local/lib/ruby/2.5.0/English.rb
      218 /usr/local/bundle/gems/google-cloud-core-1.2.0/lib/google/cloud/errors.rb
      219 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/pathname.so
      220 /usr/local/lib/ruby/2.5.0/pathname.rb
      221 /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/date_core.so
      222 /usr/local/lib/ruby/2.5.0/date.rb
      223 /usr/local/lib/ruby/2.5.0/time.rb
      224 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/2.5/grpc_c.so
      225 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/grpc.rb
      226 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/errors.rb
      227 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/logconfig.rb
      228 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/notifier.rb
      229 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/version.rb
      230 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/core/time_consts.rb
      231 /usr/local/lib/ruby/2.5.0/weakref.rb
      232 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/generic/bidi_call.rb
      233 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/generic/active_call.rb
      234 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/generic/client_stub.rb
      235 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/generic/rpc_desc.rb
      236 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/generic/service.rb
      237 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/generic/rpc_server.rb
      238 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/generic/interceptor_registry.rb
      239 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/generic/interceptors.rb
      240 /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc.rb
      241 /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/message_exts.rb
      242 /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/2.5/protobuf_c.so
      243 /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf/repeated_field.rb
      244 /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/protobuf.rb
    
    * Process memory map:
    
    55d0f7453000-55d0f7454000 r-xp 00000000 08:06 154456                     /usr/local/bin/ruby
    55d0f7653000-55d0f7654000 r--p 00000000 08:06 154456                     /usr/local/bin/ruby
    55d0f7654000-55d0f7655000 rw-p 00001000 08:06 154456                     /usr/local/bin/ruby
    55d0f89e8000-55d0f9987000 rw-p 00000000 00:00 0                          [heap]
    7f6c3bcb9000-7f6c3bd1a000 rw-p 00000000 00:00 0
    7f6c3bd1a000-7f6c3bf70000 r-xp 00000000 08:06 5929343                    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/2.5/protobuf_c.so
    7f6c3bf70000-7f6c3bf78000 r--p 00056000 08:06 5929343                    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/2.5/protobuf_c.so
    7f6c3bf78000-7f6c3bf7a000 rw-p 0005e000 08:06 5929343                    /usr/local/bundle/gems/google-protobuf-3.5.1.2-x86_64-linux/lib/google/2.5/protobuf_c.so
    7f6c3bf7a000-7f6c3c169000 rw-p 00000000 00:00 0
    7f6c3c169000-7f6c3c5af000 r-xp 00000000 08:06 10524010                   /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/2.5/grpc_c.so
    7f6c3c5af000-7f6c3c5c4000 r--p 00246000 08:06 10524010                   /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/2.5/grpc_c.so
    7f6c3c5c4000-7f6c3c5cb000 rw-p 0025b000 08:06 10524010                   /usr/local/bundle/gems/grpc-1.10.0-x86_64-linux/src/ruby/lib/grpc/2.5/grpc_c.so
    7f6c3c5cb000-7f6c3c5d0000 rw-p 00000000 00:00 0
    7f6c3c5d0000-7f6c3c803000 r-xp 00000000 08:06 155330                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/date_core.so
    7f6c3c803000-7f6c3c804000 r--p 00033000 08:06 155330                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/date_core.so
    7f6c3c804000-7f6c3c805000 rw-p 00034000 08:06 155330                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/date_core.so
    7f6c3c805000-7f6c3c806000 rw-p 00000000 00:00 0
    7f6c3c806000-7f6c3ca0d000 r-xp 00000000 08:06 155416                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/pathname.so
    7f6c3ca0d000-7f6c3ca0e000 r--p 00007000 08:06 155416                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/pathname.so
    7f6c3ca0e000-7f6c3ca0f000 rw-p 00008000 08:06 155416                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/pathname.so
    7f6c3ca0f000-7f6c3cc15000 r-xp 00000000 08:06 155429                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/strscan.so
    7f6c3cc15000-7f6c3cc16000 r--p 00006000 08:06 155429                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/strscan.so
    7f6c3cc16000-7f6c3cc17000 rw-p 00007000 08:06 155429                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/strscan.so
    7f6c3cc17000-7f6c3ce30000 r-xp 00000000 08:06 154434                     /usr/lib/libyaml-0.so.2.0.5
    7f6c3ce30000-7f6c3ce31000 r--p 00019000 08:06 154434                     /usr/lib/libyaml-0.so.2.0.5
    7f6c3ce31000-7f6c3ce32000 rw-p 0001a000 08:06 154434                     /usr/lib/libyaml-0.so.2.0.5
    7f6c3ce32000-7f6c3d037000 r-xp 00000000 08:06 155417                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/psych.so
    7f6c3d037000-7f6c3d038000 r--p 00005000 08:06 155417                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/psych.so
    7f6c3d038000-7f6c3d039000 rw-p 00006000 08:06 155417                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/psych.so
    7f6c3d039000-7f6c3d239000 r-xp 00000000 08:06 155407                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/io/nonblock.so
    7f6c3d239000-7f6c3d23a000 r--p 00000000 08:06 155407                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/io/nonblock.so
    7f6c3d23a000-7f6c3d23b000 rw-p 00001000 08:06 155407                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/io/nonblock.so
    7f6c3d23b000-7f6c3d43e000 r-xp 00000000 08:06 155338                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/digest.so
    7f6c3d43e000-7f6c3d43f000 r--p 00003000 08:06 155338                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/digest.so
    7f6c3d43f000-7f6c3d440000 rw-p 00004000 08:06 155338                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/digest.so
    7f6c3d440000-7f6c3d7bf000 r-xp 00000000 08:06 9849394                    /lib/libcrypto.so.42.0.0
    7f6c3d7bf000-7f6c3d7dc000 r--p 0017f000 08:06 9849394                    /lib/libcrypto.so.42.0.0
    7f6c3d7dc000-7f6c3d7e2000 rw-p 0019c000 08:06 9849394                    /lib/libcrypto.so.42.0.0
    7f6c3d7e2000-7f6c3d7e6000 rw-p 00000000 00:00 0
    7f6c3d7e6000-7f6c3da2a000 r-xp 00000000 08:06 9849396                    /lib/libssl.so.44.0.1
    7f6c3da2a000-7f6c3da2e000 r--p 00044000 08:06 9849396                    /lib/libssl.so.44.0.1
    7f6c3da2e000-7f6c3da32000 rw-p 00048000 08:06 9849396                    /lib/libssl.so.44.0.1
    7f6c3da32000-7f6c3dc86000 r-xp 00000000 08:06 155415                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/openssl.so
    7f6c3dc86000-7f6c3dc8a000 r--p 00054000 08:06 155415                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/openssl.so
    7f6c3dc8a000-7f6c3dc8b000 rw-p 00058000 08:06 155415                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/openssl.so
    7f6c3dc8b000-7f6c3de8d000 r-xp 00000000 08:06 155399                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/windows_31j.so
    7f6c3de8d000-7f6c3de8e000 r--p 00002000 08:06 155399                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/windows_31j.so
    7f6c3de8e000-7f6c3de8f000 rw-p 00003000 08:06 155399                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/windows_31j.so
    7f6c3de8f000-7f6c3e0a4000 r-xp 00000000 08:06 9849398                    /lib/libz.so.1.2.11
    7f6c3e0a4000-7f6c3e0a5000 r--p 00015000 08:06 9849398                    /lib/libz.so.1.2.11
    7f6c3e0a5000-7f6c3e0a6000 rw-p 00016000 08:06 9849398                    /lib/libz.so.1.2.11
    7f6c3e0a6000-7f6c3e2b7000 r-xp 00000000 08:06 155431                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/zlib.so
    7f6c3e2b7000-7f6c3e2b8000 r--p 00011000 08:06 155431                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/zlib.so
    7f6c3e2b8000-7f6c3e2b9000 rw-p 00012000 08:06 155431                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/zlib.so
    7f6c3e2b9000-7f6c3e4ba000 r-xp 00000000 08:06 155408                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/io/wait.so
    7f6c3e4ba000-7f6c3e4bb000 r--p 00001000 08:06 155408                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/io/wait.so
    7f6c3e4bb000-7f6c3e4bc000 rw-p 00002000 08:06 155408                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/io/wait.so
    7f6c3e4bc000-7f6c3e6e8000 r-xp 00000000 08:06 155427                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/socket.so
    7f6c3e6e8000-7f6c3e6e9000 r--p 0002c000 08:06 155427                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/socket.so
    7f6c3e6e9000-7f6c3e6ea000 rw-p 0002d000 08:06 155427                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/socket.so
    7f6c3e6ea000-7f6c3e8f3000 r-xp 00000000 08:06 155411                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/json/ext/generator.so
    7f6c3e8f3000-7f6c3e8f4000 r--p 00009000 08:06 155411                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/json/ext/generator.so
    7f6c3e8f4000-7f6c3e8f5000 rw-p 0000a000 08:06 155411                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/json/ext/generator.so
    7f6c3e8f5000-7f6c3eafa000 r-xp 00000000 08:06 155412                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/json/ext/parser.so
    7f6c3eafa000-7f6c3eafb000 r--p 00005000 08:06 155412                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/json/ext/parser.so
    7f6c3eafb000-7f6c3eafc000 rw-p 00006000 08:06 155412                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/json/ext/parser.so
    7f6c3eafc000-7f6c3ecfe000 r-xp 00000000 08:06 155327                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/cgi/escape.so
    7f6c3ecfe000-7f6c3ecff000 r--p 00002000 08:06 155327                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/cgi/escape.so
    7f6c3ecff000-7f6c3ed00000 rw-p 00003000 08:06 155327                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/cgi/escape.so
    7f6c3ed00000-7f6c3ef08000 r-xp 00000000 08:06 155428                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/stringio.so
    7f6c3ef08000-7f6c3ef09000 r--p 00008000 08:06 155428                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/stringio.so
    7f6c3ef09000-7f6c3ef0a000 rw-p 00009000 08:06 155428                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/stringio.so
    7f6c3ef0a000-7f6c3f10c000 r-xp 00000000 08:06 155386                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/trans/transdb.so
    7f6c3f10c000-7f6c3f10d000 r--p 00002000 08:06 155386                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/trans/transdb.so
    7f6c3f10d000-7f6c3f10e000 rw-p 00003000 08:06 155386                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/trans/transdb.so
    7f6c3f10e000-7f6c3f30f000 r-xp 00000000 08:06 155343                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/encdb.so
    7f6c3f30f000-7f6c3f310000 r--p 00001000 08:06 155343                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/encdb.so
    7f6c3f310000-7f6c3f311000 rw-p 00002000 08:06 155343                     /usr/local/lib/ruby/2.5.0/x86_64-linux-musl/enc/encdb.so
    7f6c3f311000-7f6c3f824000 r-xp 00000000 08:06 154493                     /usr/local/lib/libruby.so.2.5.1
    7f6c3f824000-7f6c3f82c000 r--p 00313000 08:06 154493                     /usr/local/lib/libruby.so.2.5.1
    7f6c3f82c000-7f6c3f82d000 rw-p 0031b000 08:06 154493                     /usr/local/lib/libruby.so.2.5.1
    7f6c3f82d000-7f6c3f83b000 rw-p 00000000 00:00 0
    7f6c3f83b000-7f6c3f8c4000 r-xp 00000000 08:06 154211                     /lib/ld-musl-x86_64.so.1
    7f6c3f8d2000-7f6c3f916000 rw-p 00000000 00:00 0
    7f6c3f916000-7f6c3f9ba000 rw-p 00000000 00:00 0
    7f6c3f9ba000-7f6c3f9bb000 r--s 00000000 08:06 9723329                    /etc/localtime
    7f6c3f9bb000-7f6c3f9bd000 ---p 00000000 00:00 0
    7f6c3f9bd000-7f6c3fac3000 rw-p 00000000 00:00 0
    7f6c3fac3000-7f6c3fac4000 r--p 00088000 08:06 154211                     /lib/ld-musl-x86_64.so.1
    7f6c3fac4000-7f6c3fac5000 rw-p 00089000 08:06 154211                     /lib/ld-musl-x86_64.so.1
    7f6c3fac5000-7f6c3fac8000 rw-p 00000000 00:00 0
    7ffda984e000-7ffda986f000 rw-p 00000000 00:00 0                          [stack]
    7ffda99f5000-7ffda99f8000 r--p 00000000 00:00 0                          [vvar]
    7ffda99f8000-7ffda99fa000 r-xp 00000000 00:00 0                          [vdso]
    ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
    
    
    [NOTE]
    You may have encountered a bug in the Ruby interpreter or extension libraries.
    Bug reports are welcome.
    For details: http://www.ruby-lang.org/bugreport.html
    
    Aborted (core dumped)
    
    bug ruby P2 
    opened by larribas 51
  • Make C++ implementation C++11 only.

    Make C++ implementation C++11 only.

    C++11 has been out for several years and we are thinking of moving to allow C++11 features from being used in the code base. That means the implementation will not be able to compile if you don't have a C++11 compiler.

    We may create a branch that works for C++98. The branch will only accept bug fixes, but not new features, optimization, etc

    Please reply in this thread if you think this would be an issue for your project.

    c++ 
    opened by liujisi 48
  • Protobuf: Fix for C5041 for VC++ > 15.5

    Protobuf: Fix for C5041 for VC++ > 15.5

    Introduced in 15.5: https://docs.microsoft.com/en-us/cpp/overview/cpp-conformance-improvements-2017?view=msvc-160#inline-variables 15.5 is 1912: https://docs.microsoft.com/en-us/cpp/preprocessor/predefined-macros?view=msvc-160

    Issue: #8978

    cla: no 
    opened by sparist 1
  • Generates C5041 warning as of VC++ 15.5

    Generates C5041 warning as of VC++ 15.5

    As of VC++ 15.5, protobuf generates build warning C5041. 15.5 made static constexpr variables implicitly inline: https://docs.microsoft.com/en-us/cpp/overview/cpp-conformance-improvements-2017?view=msvc-160#inline-variables

    I have already fixed this and will be submitting the change in a PR.

    What version of protobuf and what language are you using? Version: master/v3.6.0/v3.5.0 etc. Language: C++/Java/Python/C#/Ruby/PHP/Objective-C/Javascript

    What operating system (Linux, Windows, ...) and version?

    What runtime / compiler are you using (e.g., python version or gcc version)

    What did you do? Steps to reproduce the behavior:

    1. Go to '...'
    2. Click on '....'
    3. Scroll down to '....'
    4. See error

    What did you expect to see

    What did you see instead?

    Make sure you include information that can help us debug (full error message, exception listing, stack trace, logs).

    Anything else we should know about your project / environment

    opened by sparist 0
  • Remove Linkage Monitor check

    Remove Linkage Monitor check

    Let's remove Linkage Monitor check.

    Screen Shot 2021-09-14 at 09 46 15

    What language does this apply to?

    It's CI for protobuf Java.

    If it's a proto syntax change, is it for proto2 or proto3? -> N/A If it's about generated code change, what programming language? -> N/A

    Describe the problem you are trying to solve.

    Linkage Monitor check (https://github.com/protocolbuffers/protobuf/pull/6318) is no longer needed.

    https://github.com/protocolbuffers/protobuf/blob/master/tests.sh#L248

    Describe the solution you'd like

    I will remove the linkage monitor setup from this repository.

    https://github.com/protocolbuffers/protobuf/blob/master/tests.sh#L248

    Describe alternatives you've considered

    Additional context

    I'll create a pull request.

    Background

    When we installed Linkage Monitor, we were choosing the protobuf-java version for the Libraries BOM independently from the Google Cloud client libraries. Now we choose the protobuf Java version that is used by the Google Cloud client libraries. When there's any linkage errors between them, it would manifest as compilation errors. Therefore, we no longer need to run Linkage Monitor for this repository.

    java cleanup release notes: no 
    opened by suztomo 4
  • Protobuf is not updated to the latest version on vcpkg

    Protobuf is not updated to the latest version on vcpkg

    What version of protobuf and what language are you using? Version: v3.15.8#4 Language: C++

    What operating system (Linux, Windows, ...) and version? Windows 10

    What runtime / compiler are you using (e.g., python version or gcc version) Visual Studio 2019 Professionnal

    What did you do? Steps to reproduce the behavior:

    1. Downloaded protobuf using vcpkg.
    2. Checking latest version after update:
    PS C:\dev\vcpkg> vcpkg list
    protobuf:x64-windows                               3.15.8#4         Protocol Buffers - Google's data interchange format
    protobuf:x86-windows                               3.15.8#4         Protocol Buffers - Google's data interchange format
    

    What did you expect to see I expected to see protobuf version 3.17.3.

    What did you see instead? It only goes up to 3.15.8.

    Anything else we should know about your project / environment Maybe I might be missing something :) is this normal?

    opened by aurelien-m 0
  • python_output arg control in py_proto_library

    python_output arg control in py_proto_library

    What language does this apply to? python If it's a proto syntax change, is it for proto2 or proto3? If it's about generated code change, what programming language?

    Describe the problem you are trying to solve. It seems that I cannot control protoc python_output arg in py_proto_library genrule Describe the solution you'd like I want to control protoc python_output args in py_proto_library genrule Describe alternatives you've considered

    Additional context Add any other context or screenshots about the feature request here. I want to use setuptools in edit/developer mode e.g. pip install -e . in a git checkout. The problem is that I need to import the generated python files from source dir without creating too much problem in the version control so I need that the source dir with .proto and the generated python file with bazel build will have a different names. In this way I can a create symbolic link on the generated python files back in the source without name conflicts.

    See https://github.com/keras-team/keras/issues/14867#issuecomment-918626936

    python 
    opened by bhack 2
  • Added

    Added "object" as a reserved name for PHP

    "Object" is a reserved word as of PHP 7.2, as stated here

    cla: yes php release notes: yes 
    opened by J0sh0nat0r 2
  • Apple ld:

    Apple ld: "direct access in function ... to global weak symbol"

    What version of protobuf and what language are you using? Version: V3.15.8 Language: C++

    What operating system (Linux, Windows, ...) and version? macOS Catalina 10.15

    What runtime / compiler are you using (e.g., python version or gcc version) GNU 11.2.0

    What did you do? Build mixxx on the GitHub workflows using vcpck. https://github.com/mixxxdj/mixxx/pull/4225/checks?check_run_id=3403021507 Protobuf is linked as a static library.

    What did you expect to see No warning

    What did you see instead?

    ld: warning: direct access in function 'std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >* google::protobuf::internal::InternalMetadata::mutable_unknown_fields_slow<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >()' from file 'libmixxx-lib.a(keys.pb.cc.o)' to global weak symbol 'void google::protobuf::internal::arena_destruct_object<google::protobuf::internal::InternalMetadata::Container<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > >(void*)' from file '/Users/runner/buildenv/mixxx-deps-2.4-x64-osx-0f25dfd/installed/x64-osx/lib/libprotobuf-lite.a(message_lite.cc.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
    ld: warning: direct access in function 'std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >* google::protobuf::internal::InternalMetadata::mutable_unknown_fields_slow<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >()' from file 'libmixxx-lib.a(keys.pb.cc.o)' to global weak symbol 'typeinfo for google::protobuf::internal::InternalMetadata::Container<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >' from file '/Users/runner/buildenv/mixxx-deps-2.4-x64-osx-0f25dfd/installed/x64-osx/lib/libprotobuf-lite.a(message_lite.cc.o)' means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
    

    Anything else we should know about your project / environment The workaround is to call cmake with these flags:

        -DCMAKE_POLICY_DEFAULT_CMP0063=NEW
        -DCMAKE_C_VISIBILITY_PRESET=hidden
        -DCMAKE_CXX_VISIBILITY_PRESET=hidden
        -DCMAKE_VISIBILITY_INLINES_HIDDEN=TRUE
    

    I have proposed a fix here https://github.com/microsoft/vcpkg/pull/19908 but I was forwarded to check if the issue can be solved directly.

    The flag is already used in the Ruby module, here: https://github.com/protocolbuffers/protobuf/blob/66d749188ff2a2e30e932110222d58da7c6a8d49/ruby/ext/google/protobuf_c/extconf.rb#L6

    c++ 
    opened by daschuer 3
  • Crash in generated code since 3.15 when built with gcc using C++14

    Crash in generated code since 3.15 when built with gcc using C++14

    What version of protobuf and what language are you using? Version: v3.15, v3.17.3, master Language: C++

    What operating system (Linux, Windows, ...) and version? Linux 5.13, glibc 2.34

    What runtime / compiler are you using (e.g., python version or gcc version) gcc 11.2

    What did you do? Reproducer: protobuf-init.tar.gz

    Steps to reproduce the behavior:

    1. Build reproducer
    2. Run built test binary
    3. Observe crash

    What did you expect to see Exit code 0, no crash.

    What did you see instead? Segmentation fault in global initialization.

    0x00007ffff7d67792 in google::protobuf::internal::ExtensionSet::MutableMessage (this=0x6927d0, number=<optimized out>, type=<optimized out>, prototype=..., descriptor=<optimized out>)
        at google/protobuf/extension_set.cc:651
    651	    extension->message_value = prototype.New(arena_);
    (gdb) print &prototype
    $1 = (const google::protobuf::MessageLite *) 0x71c880 <google::api::_HttpRule_default_instance_>
    (gdb) print prototype
    $2 = (const google::protobuf::MessageLite &) @0x657680: {_vptr.MessageLite = 0x0, _internal_metadata_ = {ptr_ = 0, static kUnknownFieldsTagMask = 1, static kMessageOwnedArenaTagMask = 2, 
        static kPtrTagMask = 3, static kPtrValueMask = -4}}
    (gdb) print arena_
    $3 = (google::protobuf::Arena *) 0x0
    

    I'm not familiar with global initialization code but it seems google::api::_HttpRule_default_instance_ isn't initialized early enough.

    Anything else we should know about your project / environment This only happens when built with gcc and -std set to C++11 or C++14. I don't see a crash with clang 12 or with gcc using C++17.

    protobuf versions before 3.15 are working fine. According to bisect the first bad commit is a00125024e9231d76746bd394fef8876f5cc15e2. Unfortunately, that's just a sync, not a proper commit.

    c++ 
    opened by juergbi 0
  • js: use commonjs_strict for well-known types

    js: use commonjs_strict for well-known types

    When generating JS code for .proto files which included well-known types with the commonjs_strict import style, the generated code would import generated JS code for the well-known types with the commonjs import style (located in the google-protobuf NPM package). This causes several issues as discussed in #7778.

    This CL changes this so when using commonjs_strict, the imported generated JS code for well-known types also uses commonjs_strict.

    Fixes #7778


    Note: currently a folder named "commonjs_strict" is used to save the generated JS code for well-known types. I'm not fully convinced by this, so please let me know if you know how to improve where to store the generated code for the commonjs_strict mode. Thanks!

    cla: yes javascript release notes: no 
    opened by avm99963 0
  • Include JRuby gem when building gem:native target

    Include JRuby gem when building gem:native target

    Since this is the rake target used by kokoro, this will close the gem release gap for JRuby

    Should help #7923 by making sure JRuby is built and released as part of the normal cadence.

    cla: yes ruby release notes: yes 
    opened by JasonLunn 1
Releases(v3.18.0-rc2)
Owner
Protocol Buffers
A language-neutral, platform-neutral extensible mechanism for serializing structured data.
Protocol Buffers
A better compressed bitset in Java

RoaringBitmap Bitsets, also called bitmaps, are commonly used as fast data structures. Unfortunately, they can use too much memory. To compensate, we

Roaring bitmaps: A better compressed bitset 2.4k Sep 12, 2021
Apache ORC - the smallest, fastest columnar storage for Hadoop workloads

Apache ORC ORC is a self-describing type-aware columnar file format designed for Hadoop workloads. It is optimized for large streaming reads, but with

The Apache Software Foundation 443 Sep 10, 2021
A lightning fast, transactional, file-based FIFO for Android and Java.

Tape by Square, Inc. Tape is a collection of queue-related classes for Android and Java. QueueFile is a lightning-fast, transactional, file-based FIFO

Square 2.4k Aug 25, 2021
A fast, simple persistent queue written in Java

Ladder Introduction Ladder is a lightning fast persistent queue written in Java. Usage Installation // TODO publish to Maven Central Create persistent

null 4 Aug 11, 2021
A big, fast and persistent queue based on memory mapped file.

Big Queue A big, fast and persistent queue based on memory mapped file. Notice, bigqueue is just a standalone library, for a high-throughput, persiste

bulldog 479 Aug 17, 2021
Simple Binary Encoding (SBE) - High Performance Message Codec

Simple Binary Encoding (SBE) SBE is an OSI layer 6 presentation for encoding and decoding binary application messages for low-latency financial applic

Real Logic 2.5k Sep 15, 2021
Java实现常用数据结构和算法

algorithms-and-data-structures 目录 └─Outline ├─algorithms │ ├─search │ │ ├─binarysearch │ │ └─linearsearch │ └─sort │

null 10 Apr 13, 2021
A Persistent Java Collections Library

PCollections A Persistent Java Collections Library Overview PCollections serves as a persistent and immutable analogue of the Java Collections Framewo

harold cooper 679 Sep 3, 2021
Union, intersection, and set cardinality in loglog space

HyperMinHash-java A Java implementation of the HyperMinHash algorithm, presented by Yu and Weber. HyperMinHash allows approximating set unions, inters

LiveRamp 41 Jul 6, 2021
CODE ANYWHERE – MENTORIA #4 | Projetos Ágeis com Scrum

Scrum CODE ANYWHERE – MENTORIA #4 | Projetos Ágeis com Scrum! Avanade DIO - Code Anywhere Mentoria #1 | Pensando Orientado a Objetos na prática Mentor

Code Anywhere - DIO & AVANADE 20 Sep 12, 2021