google-protobuf 4.26.1 → 4.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of google-protobuf might be problematic. Click here for more details.

Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/ext/google/protobuf_c/convert.c +39 -14
  3. data/ext/google/protobuf_c/defs.c +327 -1
  4. data/ext/google/protobuf_c/glue.c +16 -0
  5. data/ext/google/protobuf_c/map.c +72 -20
  6. data/ext/google/protobuf_c/map.h +6 -2
  7. data/ext/google/protobuf_c/message.c +78 -50
  8. data/ext/google/protobuf_c/message.h +1 -5
  9. data/ext/google/protobuf_c/protobuf.c +11 -9
  10. data/ext/google/protobuf_c/protobuf.h +3 -7
  11. data/ext/google/protobuf_c/repeated_field.c +61 -17
  12. data/ext/google/protobuf_c/repeated_field.h +5 -1
  13. data/ext/google/protobuf_c/ruby-upb.c +1693 -475
  14. data/ext/google/protobuf_c/ruby-upb.h +2526 -1386
  15. data/ext/google/protobuf_c/shared_convert.c +5 -2
  16. data/ext/google/protobuf_c/shared_message.c +0 -30
  17. data/ext/google/protobuf_c/shared_message.h +0 -4
  18. data/lib/google/protobuf/descriptor_pb.rb +2 -1
  19. data/lib/google/protobuf/ffi/descriptor.rb +4 -3
  20. data/lib/google/protobuf/ffi/descriptor_pool.rb +3 -1
  21. data/lib/google/protobuf/ffi/enum_descriptor.rb +3 -1
  22. data/lib/google/protobuf/ffi/ffi.rb +0 -5
  23. data/lib/google/protobuf/ffi/field_descriptor.rb +4 -2
  24. data/lib/google/protobuf/ffi/file_descriptor.rb +3 -1
  25. data/lib/google/protobuf/ffi/internal/arena.rb +0 -6
  26. data/lib/google/protobuf/ffi/internal/convert.rb +14 -7
  27. data/lib/google/protobuf/ffi/map.rb +45 -21
  28. data/lib/google/protobuf/ffi/message.rb +182 -60
  29. data/lib/google/protobuf/ffi/method_descriptor.rb +114 -0
  30. data/lib/google/protobuf/ffi/oneof_descriptor.rb +3 -1
  31. data/lib/google/protobuf/ffi/repeated_field.rb +42 -16
  32. data/lib/google/protobuf/ffi/service_descriptor.rb +107 -0
  33. data/lib/google/protobuf/repeated_field.rb +3 -3
  34. data/lib/google/protobuf_ffi.rb +2 -0
  35. metadata +20 -4
@@ -0,0 +1,107 @@
1
+ # Protocol Buffers - Google's data interchange format
2
+ # Copyright 2024 Google Inc. All rights reserved.
3
+ #
4
+ # Use of this source code is governed by a BSD-style
5
+ # license that can be found in the LICENSE file or at
6
+ # https://developers.google.com/open-source/licenses/bsd
7
+
8
+ module Google
9
+ module Protobuf
10
+ class ServiceDescriptor
11
+ attr :service_def, :descriptor_pool
12
+ include Enumerable
13
+
14
+ include Google::Protobuf::Internal::Convert
15
+
16
+ # FFI Interface methods and setup
17
+ extend ::FFI::DataConverter
18
+ native_type ::FFI::Type::POINTER
19
+
20
+ class << self
21
+ prepend Google::Protobuf::Internal::TypeSafety
22
+ include Google::Protobuf::Internal::PointerHelper
23
+
24
+ # @param value [ServiceDescriptor] ServiceDescriptor to convert to an FFI native type
25
+ # @param _ [Object] Unused
26
+ def to_native(value, _)
27
+ service_def_ptr = value.nil? ? nil : value.instance_variable_get(:@service_def)
28
+ return ::FFI::Pointer::NULL if service_def_ptr.nil?
29
+ raise "Underlying service_def was null!" if service_def_ptr.null?
30
+ service_def_ptr
31
+ end
32
+
33
+ ##
34
+ # @param service_def [::FFI::Pointer] ServiceDef pointer to be wrapped
35
+ # @param _ [Object] Unused
36
+ def from_native(service_def, _ = nil)
37
+ return nil if service_def.nil? or service_def.null?
38
+ file_def = Google::Protobuf::FFI.file_def_by_raw_service_def(service_def)
39
+ descriptor_from_file_def(file_def, service_def)
40
+ end
41
+ end
42
+
43
+ def self.new(*arguments, &block)
44
+ raise "Descriptor objects may not be created from Ruby."
45
+ end
46
+
47
+ def to_s
48
+ inspect
49
+ end
50
+
51
+ def inspect
52
+ "#{self.class.name}: #{name}"
53
+ end
54
+
55
+ def name
56
+ @name ||= Google::Protobuf::FFI.get_service_full_name(self)
57
+ end
58
+
59
+ def file_descriptor
60
+ @descriptor_pool.send(:get_file_descriptor, Google::Protobuf::FFI.file_def_by_raw_service_def(@service_def))
61
+ end
62
+
63
+ def each &block
64
+ n = Google::Protobuf::FFI.method_count(self)
65
+ 0.upto(n-1) do |i|
66
+ yield(Google::Protobuf::FFI.get_method_by_index(self, i))
67
+ end
68
+ nil
69
+ end
70
+
71
+ def options
72
+ @options ||= begin
73
+ size_ptr = ::FFI::MemoryPointer.new(:size_t, 1)
74
+ temporary_arena = Google::Protobuf::FFI.create_arena
75
+ buffer = Google::Protobuf::FFI.service_options(self, size_ptr, temporary_arena)
76
+ Google::Protobuf::ServiceOptions.decode(buffer.read_string_length(size_ptr.read(:size_t)).force_encoding("ASCII-8BIT").freeze).freeze
77
+ end
78
+ end
79
+
80
+ private
81
+
82
+ def initialize(service_def, descriptor_pool)
83
+ @service_def = service_def
84
+ @descriptor_pool = descriptor_pool
85
+ end
86
+
87
+ def self.private_constructor(service_def, descriptor_pool)
88
+ instance = allocate
89
+ instance.send(:initialize, service_def, descriptor_pool)
90
+ instance
91
+ end
92
+
93
+ def c_type
94
+ @c_type ||= Google::Protobuf::FFI.get_c_type(self)
95
+ end
96
+ end
97
+
98
+ class FFI
99
+ # ServiceDef
100
+ attach_function :file_def_by_raw_service_def, :upb_ServiceDef_File, [:pointer], :FileDef
101
+ attach_function :get_service_full_name, :upb_ServiceDef_FullName, [ServiceDescriptor], :string
102
+ attach_function :method_count, :upb_ServiceDef_MethodCount, [ServiceDescriptor], :int
103
+ attach_function :get_method_by_index, :upb_ServiceDef_Method, [ServiceDescriptor, :int], MethodDescriptor
104
+ attach_function :service_options, :ServiceDescriptor_serialized_options, [ServiceDescriptor, :pointer, Internal::Arena], :pointer
105
+ end
106
+ end
107
+ end
@@ -47,12 +47,12 @@ module Google
47
47
  def_delegators :to_ary,
48
48
  :&, :*, :-, :'<=>',
49
49
  :assoc, :bsearch, :bsearch_index, :combination, :compact, :count,
50
- :cycle, :dig, :drop, :drop_while, :eql?, :fetch, :find_index, :flatten,
51
- :include?, :index, :inspect, :join,
50
+ :cycle, :difference, :dig, :drop, :drop_while, :eql?, :fetch, :find_index, :flatten,
51
+ :include?, :index, :inspect, :intersection, :join,
52
52
  :pack, :permutation, :product, :pretty_print, :pretty_print_cycle,
53
53
  :rassoc, :repeated_combination, :repeated_permutation, :reverse,
54
54
  :rindex, :rotate, :sample, :shuffle, :shelljoin,
55
- :to_s, :transpose, :uniq, :|
55
+ :to_s, :transpose, :union, :uniq, :|
56
56
 
57
57
 
58
58
  def first(n=nil)
@@ -15,6 +15,8 @@ require 'google/protobuf/ffi/descriptor'
15
15
  require 'google/protobuf/ffi/enum_descriptor'
16
16
  require 'google/protobuf/ffi/field_descriptor'
17
17
  require 'google/protobuf/ffi/oneof_descriptor'
18
+ require 'google/protobuf/ffi/method_descriptor'
19
+ require 'google/protobuf/ffi/service_descriptor'
18
20
  require 'google/protobuf/ffi/descriptor_pool'
19
21
  require 'google/protobuf/ffi/file_descriptor'
20
22
  require 'google/protobuf/ffi/map'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-protobuf
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.26.1
4
+ version: 4.28.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Protobuf Authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-27 00:00:00.000000000 Z
11
+ date: 2024-08-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler-dock
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.2.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: bigdecimal
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -151,9 +165,11 @@ files:
151
165
  - lib/google/protobuf/ffi/internal/type_safety.rb
152
166
  - lib/google/protobuf/ffi/map.rb
153
167
  - lib/google/protobuf/ffi/message.rb
168
+ - lib/google/protobuf/ffi/method_descriptor.rb
154
169
  - lib/google/protobuf/ffi/object_cache.rb
155
170
  - lib/google/protobuf/ffi/oneof_descriptor.rb
156
171
  - lib/google/protobuf/ffi/repeated_field.rb
172
+ - lib/google/protobuf/ffi/service_descriptor.rb
157
173
  - lib/google/protobuf/field_mask_pb.rb
158
174
  - lib/google/protobuf/internal/object_cache.rb
159
175
  - lib/google/protobuf/message_exts.rb
@@ -172,7 +188,7 @@ homepage: https://developers.google.com/protocol-buffers
172
188
  licenses:
173
189
  - BSD-3-Clause
174
190
  metadata:
175
- source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v4.26.1/ruby
191
+ source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v4.28.0/ruby
176
192
  post_install_message:
177
193
  rdoc_options: []
178
194
  require_paths:
@@ -181,7 +197,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
181
197
  requirements:
182
198
  - - ">="
183
199
  - !ruby/object:Gem::Version
184
- version: '2.7'
200
+ version: '3.0'
185
201
  required_rubygems_version: !ruby/object:Gem::Requirement
186
202
  requirements:
187
203
  - - ">="