google-protobuf 4.27.2 → 4.35.1

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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/ext/google/protobuf_c/convert.c +32 -14
  3. data/ext/google/protobuf_c/defs.c +475 -133
  4. data/ext/google/protobuf_c/extconf.rb +20 -10
  5. data/ext/google/protobuf_c/glue.c +63 -0
  6. data/ext/google/protobuf_c/map.c +145 -56
  7. data/ext/google/protobuf_c/map.h +6 -2
  8. data/ext/google/protobuf_c/message.c +180 -97
  9. data/ext/google/protobuf_c/message.h +2 -2
  10. data/ext/google/protobuf_c/protobuf.c +14 -13
  11. data/ext/google/protobuf_c/protobuf.h +3 -15
  12. data/ext/google/protobuf_c/repeated_field.c +134 -53
  13. data/ext/google/protobuf_c/repeated_field.h +5 -1
  14. data/ext/google/protobuf_c/ruby-upb.c +14522 -12698
  15. data/ext/google/protobuf_c/ruby-upb.h +8273 -4619
  16. data/ext/google/protobuf_c/third_party/utf8_range/utf8_range.c +22 -282
  17. data/ext/google/protobuf_c/third_party/utf8_range/utf8_range.h +2 -1
  18. data/ext/google/protobuf_c/third_party/utf8_range/utf8_range_neon.inc +117 -0
  19. data/ext/google/protobuf_c/third_party/utf8_range/utf8_range_sse.inc +272 -0
  20. data/lib/google/protobuf/any_pb.rb +1 -1
  21. data/lib/google/protobuf/api_pb.rb +2 -2
  22. data/lib/google/protobuf/descriptor_pb.rb +6 -2
  23. data/lib/google/protobuf/duration_pb.rb +1 -1
  24. data/lib/google/protobuf/empty_pb.rb +1 -1
  25. data/lib/google/protobuf/ffi/descriptor.rb +11 -2
  26. data/lib/google/protobuf/ffi/descriptor_pool.rb +7 -1
  27. data/lib/google/protobuf/ffi/enum_descriptor.rb +10 -0
  28. data/lib/google/protobuf/ffi/ffi.rb +5 -2
  29. data/lib/google/protobuf/ffi/field_descriptor.rb +16 -0
  30. data/lib/google/protobuf/ffi/file_descriptor.rb +36 -0
  31. data/lib/google/protobuf/ffi/internal/arena.rb +0 -6
  32. data/lib/google/protobuf/ffi/internal/convert.rb +9 -6
  33. data/lib/google/protobuf/ffi/internal/pointer_helper.rb +2 -1
  34. data/lib/google/protobuf/ffi/map.rb +47 -23
  35. data/lib/google/protobuf/ffi/message.rb +188 -64
  36. data/lib/google/protobuf/ffi/method_descriptor.rb +11 -1
  37. data/lib/google/protobuf/ffi/oneof_descriptor.rb +10 -0
  38. data/lib/google/protobuf/ffi/repeated_field.rb +42 -16
  39. data/lib/google/protobuf/ffi/service_descriptor.rb +11 -1
  40. data/lib/google/protobuf/field_mask_pb.rb +1 -1
  41. data/lib/google/protobuf/message_exts.rb +4 -0
  42. data/lib/google/protobuf/plugin_pb.rb +1 -1
  43. data/lib/google/protobuf/source_context_pb.rb +1 -1
  44. data/lib/google/protobuf/struct_pb.rb +1 -1
  45. data/lib/google/protobuf/timestamp_pb.rb +1 -1
  46. data/lib/google/protobuf/type_pb.rb +1 -1
  47. data/lib/google/protobuf/wrappers_pb.rb +1 -1
  48. data/lib/google/protobuf_ffi.rb +3 -2
  49. data/lib/google/tasks/ffi.rake +1 -1
  50. metadata +29 -34
  51. data/ext/google/protobuf_c/wrap_memcpy.c +0 -29
@@ -64,6 +64,15 @@ module Google
64
64
  end
65
65
  end
66
66
 
67
+ def to_proto
68
+ @to_proto ||= begin
69
+ size_ptr = ::FFI::MemoryPointer.new(:size_t, 1)
70
+ temporary_arena = Google::Protobuf::FFI.create_arena
71
+ buffer = Google::Protobuf::FFI.oneof_to_proto(self, size_ptr, temporary_arena)
72
+ Google::Protobuf::OneofDescriptorProto.decode(buffer.read_string_length(size_ptr.read(:size_t)).force_encoding("ASCII-8BIT").freeze)
73
+ end
74
+ end
75
+
67
76
  private
68
77
 
69
78
  def initialize(oneof_def, descriptor_pool)
@@ -89,6 +98,7 @@ module Google
89
98
  attach_function :get_oneof_field_by_index, :upb_OneofDef_Field, [OneofDescriptor, :int], FieldDescriptor
90
99
  attach_function :get_oneof_containing_type,:upb_OneofDef_ContainingType, [:pointer], Descriptor
91
100
  attach_function :oneof_options, :OneOfDescriptor_serialized_options, [OneofDescriptor, :pointer, Internal::Arena], :pointer
101
+ attach_function :oneof_to_proto, :OneOfDescriptor_serialized_to_proto, [OneofDescriptor, :pointer, Internal::Arena], :pointer
92
102
 
93
103
  # FieldDescriptor
94
104
  attach_function :real_containing_oneof, :upb_FieldDef_RealContainingOneof, [FieldDescriptor], OneofDescriptor
@@ -24,12 +24,14 @@ module Google
24
24
  module Protobuf
25
25
  class FFI
26
26
  # Array
27
- attach_function :append_array, :upb_Array_Append, [:Array, MessageValue.by_value, Internal::Arena], :bool
28
- attach_function :get_msgval_at,:upb_Array_Get, [:Array, :size_t], MessageValue.by_value
29
- attach_function :create_array, :upb_Array_New, [Internal::Arena, CType], :Array
30
- attach_function :array_resize, :upb_Array_Resize, [:Array, :size_t, Internal::Arena], :bool
31
- attach_function :array_set, :upb_Array_Set, [:Array, :size_t, MessageValue.by_value], :void
32
- attach_function :array_size, :upb_Array_Size, [:Array], :size_t
27
+ attach_function :append_array, :upb_Array_Append, [:Array, MessageValue.by_value, Internal::Arena], :bool
28
+ attach_function :get_msgval_at, :upb_Array_Get, [:Array, :size_t], MessageValue.by_value
29
+ attach_function :create_array, :upb_Array_New, [Internal::Arena, CType], :Array
30
+ attach_function :array_resize, :upb_Array_Resize, [:Array, :size_t, Internal::Arena], :bool
31
+ attach_function :array_set, :upb_Array_Set, [:Array, :size_t, MessageValue.by_value], :void
32
+ attach_function :array_size, :upb_Array_Size, [:Array], :size_t
33
+ attach_function :array_freeze, :upb_Array_Freeze, [:Array, MiniTable.by_ref], :void
34
+ attach_function :array_frozen?, :upb_Array_IsFrozen, [:Array], :bool
33
35
  end
34
36
 
35
37
  class RepeatedField
@@ -174,16 +176,36 @@ module Google
174
176
  end
175
177
  alias size :length
176
178
 
179
+ ##
180
+ # Is this object frozen?
181
+ # Returns true if either this Ruby wrapper or the underlying
182
+ # representation are frozen. Freezes the wrapper if the underlying
183
+ # representation is already frozen but this wrapper isn't.
184
+ def frozen?
185
+ unless Google::Protobuf::FFI.array_frozen? array
186
+ raise RuntimeError.new "Ruby frozen RepeatedField with mutable representation" if super
187
+ return false
188
+ end
189
+ method(:freeze).super_method.call unless super
190
+ true
191
+ end
192
+
193
+ ##
194
+ # Freezes the RepeatedField object. We have to intercept this so we can
195
+ # freeze the underlying representation, not just the Ruby wrapper. Returns
196
+ # self.
177
197
  def freeze
178
- return self if frozen?
179
- super
180
- @arena.pin self
181
- if type == :message
182
- each do |element|
183
- element.freeze
198
+ if method(:frozen?).super_method.call
199
+ unless Google::Protobuf::FFI.array_frozen? array
200
+ raise RuntimeError.new "Underlying representation of repeated field still mutable despite frozen wrapper"
184
201
  end
202
+ return self
185
203
  end
186
- self
204
+ unless Google::Protobuf::FFI.array_frozen? array
205
+ mini_table = (type == :message) ? Google::Protobuf::FFI.get_mini_table(@descriptor) : nil
206
+ Google::Protobuf::FFI.array_freeze(array, mini_table)
207
+ end
208
+ super
187
209
  end
188
210
 
189
211
  def dup
@@ -348,10 +370,14 @@ module Google
348
370
  OBJECT_CACHE.try_add(@array.address, self)
349
371
  end
350
372
 
351
- # @param field [FieldDescriptor] Descriptor of the field where the RepeatedField will be assigned
352
- # @param values [Enumerable] Initial values; may be nil or empty
373
+ ##
374
+ # Constructor that uses the type information from the given
375
+ # FieldDescriptor to configure the new RepeatedField instance.
376
+ # @param field [FieldDescriptor] Type information for the new RepeatedField
353
377
  # @param arena [Arena] Owning message's arena
354
- def self.construct_for_field(field, arena, values: nil, array: nil)
378
+ # @param values [Enumerable] Initial values
379
+ # @param array [::FFI::Pointer] Existing upb_Array
380
+ def self.construct_for_field(field, arena: nil, values: nil, array: nil)
355
381
  instance = allocate
356
382
  options = {initial_values: values, name: field.name, arena: arena, array: array}
357
383
  if [:enum, :message].include? field.type
@@ -77,10 +77,19 @@ module Google
77
77
  end
78
78
  end
79
79
 
80
+ def to_proto
81
+ @to_proto ||= begin
82
+ size_ptr = ::FFI::MemoryPointer.new(:size_t, 1)
83
+ temporary_arena = Google::Protobuf::FFI.create_arena
84
+ buffer = Google::Protobuf::FFI.service_to_proto(self, size_ptr, temporary_arena)
85
+ Google::Protobuf::ServiceDescriptorProto.decode(buffer.read_string_length(size_ptr.read(:size_t)).force_encoding("ASCII-8BIT").freeze)
86
+ end
87
+ end
88
+
80
89
  private
81
90
 
82
91
  def initialize(service_def, descriptor_pool)
83
- @service_def = service_def
92
+ @service_def = service_def
84
93
  @descriptor_pool = descriptor_pool
85
94
  end
86
95
 
@@ -102,6 +111,7 @@ module Google
102
111
  attach_function :method_count, :upb_ServiceDef_MethodCount, [ServiceDescriptor], :int
103
112
  attach_function :get_method_by_index, :upb_ServiceDef_Method, [ServiceDescriptor, :int], MethodDescriptor
104
113
  attach_function :service_options, :ServiceDescriptor_serialized_options, [ServiceDescriptor, :pointer, Internal::Arena], :pointer
114
+ attach_function :service_to_proto, :ServiceDescriptor_serialized_to_proto, [ServiceDescriptor, :pointer, Internal::Arena], :pointer
105
115
  end
106
116
  end
107
117
  end
@@ -7,7 +7,7 @@ require 'google/protobuf'
7
7
 
8
8
  descriptor_data = "\n google/protobuf/field_mask.proto\x12\x0fgoogle.protobuf\"\x1a\n\tFieldMask\x12\r\n\x05paths\x18\x01 \x03(\tB\x85\x01\n\x13\x63om.google.protobufB\x0e\x46ieldMaskProtoP\x01Z2google.golang.org/protobuf/types/known/fieldmaskpb\xf8\x01\x01\xa2\x02\x03GPB\xaa\x02\x1eGoogle.Protobuf.WellKnownTypesb\x06proto3"
9
9
 
10
- pool = Google::Protobuf::DescriptorPool.generated_pool
10
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
11
11
  pool.add_serialized_file(descriptor_data)
12
12
 
13
13
  module Google
@@ -25,6 +25,10 @@ module Google
25
25
  self.class.encode(self, options)
26
26
  end
27
27
 
28
+ def to_hash
29
+ self.to_h
30
+ end
31
+
28
32
  end
29
33
  class AbstractMessage
30
34
  include MessageExts
@@ -9,7 +9,7 @@ require 'google/protobuf/descriptor_pb'
9
9
 
10
10
  descriptor_data = "\n%google/protobuf/compiler/plugin.proto\x12\x18google.protobuf.compiler\x1a google/protobuf/descriptor.proto\"F\n\x07Version\x12\r\n\x05major\x18\x01 \x01(\x05\x12\r\n\x05minor\x18\x02 \x01(\x05\x12\r\n\x05patch\x18\x03 \x01(\x05\x12\x0e\n\x06suffix\x18\x04 \x01(\t\"\x81\x02\n\x14\x43odeGeneratorRequest\x12\x18\n\x10\x66ile_to_generate\x18\x01 \x03(\t\x12\x11\n\tparameter\x18\x02 \x01(\t\x12\x38\n\nproto_file\x18\x0f \x03(\x0b\x32$.google.protobuf.FileDescriptorProto\x12\x45\n\x17source_file_descriptors\x18\x11 \x03(\x0b\x32$.google.protobuf.FileDescriptorProto\x12;\n\x10\x63ompiler_version\x18\x03 \x01(\x0b\x32!.google.protobuf.compiler.Version\"\x92\x03\n\x15\x43odeGeneratorResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\x12\x1a\n\x12supported_features\x18\x02 \x01(\x04\x12\x17\n\x0fminimum_edition\x18\x03 \x01(\x05\x12\x17\n\x0fmaximum_edition\x18\x04 \x01(\x05\x12\x42\n\x04\x66ile\x18\x0f \x03(\x0b\x32\x34.google.protobuf.compiler.CodeGeneratorResponse.File\x1a\x7f\n\x04\x46ile\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x17\n\x0finsertion_point\x18\x02 \x01(\t\x12\x0f\n\x07\x63ontent\x18\x0f \x01(\t\x12?\n\x13generated_code_info\x18\x10 \x01(\x0b\x32\".google.protobuf.GeneratedCodeInfo\"W\n\x07\x46\x65\x61ture\x12\x10\n\x0c\x46\x45\x41TURE_NONE\x10\x00\x12\x1b\n\x17\x46\x45\x41TURE_PROTO3_OPTIONAL\x10\x01\x12\x1d\n\x19\x46\x45\x41TURE_SUPPORTS_EDITIONS\x10\x02\x42r\n\x1c\x63om.google.protobuf.compilerB\x0cPluginProtosZ)google.golang.org/protobuf/types/pluginpb\xaa\x02\x18Google.Protobuf.Compiler"
11
11
 
12
- pool = Google::Protobuf::DescriptorPool.generated_pool
12
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
13
13
  pool.add_serialized_file(descriptor_data)
14
14
 
15
15
  module Google
@@ -7,7 +7,7 @@ require 'google/protobuf'
7
7
 
8
8
  descriptor_data = "\n$google/protobuf/source_context.proto\x12\x0fgoogle.protobuf\"\"\n\rSourceContext\x12\x11\n\tfile_name\x18\x01 \x01(\tB\x8a\x01\n\x13\x63om.google.protobufB\x12SourceContextProtoP\x01Z6google.golang.org/protobuf/types/known/sourcecontextpb\xa2\x02\x03GPB\xaa\x02\x1eGoogle.Protobuf.WellKnownTypesb\x06proto3"
9
9
 
10
- pool = Google::Protobuf::DescriptorPool.generated_pool
10
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
11
11
  pool.add_serialized_file(descriptor_data)
12
12
 
13
13
  module Google
@@ -7,7 +7,7 @@ require 'google/protobuf'
7
7
 
8
8
  descriptor_data = "\n\x1cgoogle/protobuf/struct.proto\x12\x0fgoogle.protobuf\"\x84\x01\n\x06Struct\x12\x33\n\x06\x66ields\x18\x01 \x03(\x0b\x32#.google.protobuf.Struct.FieldsEntry\x1a\x45\n\x0b\x46ieldsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12%\n\x05value\x18\x02 \x01(\x0b\x32\x16.google.protobuf.Value:\x02\x38\x01\"\xea\x01\n\x05Value\x12\x30\n\nnull_value\x18\x01 \x01(\x0e\x32\x1a.google.protobuf.NullValueH\x00\x12\x16\n\x0cnumber_value\x18\x02 \x01(\x01H\x00\x12\x16\n\x0cstring_value\x18\x03 \x01(\tH\x00\x12\x14\n\nbool_value\x18\x04 \x01(\x08H\x00\x12/\n\x0cstruct_value\x18\x05 \x01(\x0b\x32\x17.google.protobuf.StructH\x00\x12\x30\n\nlist_value\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.ListValueH\x00\x42\x06\n\x04kind\"3\n\tListValue\x12&\n\x06values\x18\x01 \x03(\x0b\x32\x16.google.protobuf.Value*\x1b\n\tNullValue\x12\x0e\n\nNULL_VALUE\x10\x00\x42\x7f\n\x13\x63om.google.protobufB\x0bStructProtoP\x01Z/google.golang.org/protobuf/types/known/structpb\xf8\x01\x01\xa2\x02\x03GPB\xaa\x02\x1eGoogle.Protobuf.WellKnownTypesb\x06proto3"
9
9
 
10
- pool = Google::Protobuf::DescriptorPool.generated_pool
10
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
11
11
  pool.add_serialized_file(descriptor_data)
12
12
 
13
13
  module Google
@@ -7,7 +7,7 @@ require 'google/protobuf'
7
7
 
8
8
  descriptor_data = "\n\x1fgoogle/protobuf/timestamp.proto\x12\x0fgoogle.protobuf\"+\n\tTimestamp\x12\x0f\n\x07seconds\x18\x01 \x01(\x03\x12\r\n\x05nanos\x18\x02 \x01(\x05\x42\x85\x01\n\x13\x63om.google.protobufB\x0eTimestampProtoP\x01Z2google.golang.org/protobuf/types/known/timestamppb\xf8\x01\x01\xa2\x02\x03GPB\xaa\x02\x1eGoogle.Protobuf.WellKnownTypesb\x06proto3"
9
9
 
10
- pool = Google::Protobuf::DescriptorPool.generated_pool
10
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
11
11
  pool.add_serialized_file(descriptor_data)
12
12
 
13
13
  module Google
@@ -10,7 +10,7 @@ require 'google/protobuf/source_context_pb'
10
10
 
11
11
  descriptor_data = "\n\x1agoogle/protobuf/type.proto\x12\x0fgoogle.protobuf\x1a\x19google/protobuf/any.proto\x1a$google/protobuf/source_context.proto\"\xe8\x01\n\x04Type\x12\x0c\n\x04name\x18\x01 \x01(\t\x12&\n\x06\x66ields\x18\x02 \x03(\x0b\x32\x16.google.protobuf.Field\x12\x0e\n\x06oneofs\x18\x03 \x03(\t\x12(\n\x07options\x18\x04 \x03(\x0b\x32\x17.google.protobuf.Option\x12\x36\n\x0esource_context\x18\x05 \x01(\x0b\x32\x1e.google.protobuf.SourceContext\x12\'\n\x06syntax\x18\x06 \x01(\x0e\x32\x17.google.protobuf.Syntax\x12\x0f\n\x07\x65\x64ition\x18\x07 \x01(\t\"\xd5\x05\n\x05\x46ield\x12)\n\x04kind\x18\x01 \x01(\x0e\x32\x1b.google.protobuf.Field.Kind\x12\x37\n\x0b\x63\x61rdinality\x18\x02 \x01(\x0e\x32\".google.protobuf.Field.Cardinality\x12\x0e\n\x06number\x18\x03 \x01(\x05\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x10\n\x08type_url\x18\x06 \x01(\t\x12\x13\n\x0boneof_index\x18\x07 \x01(\x05\x12\x0e\n\x06packed\x18\x08 \x01(\x08\x12(\n\x07options\x18\t \x03(\x0b\x32\x17.google.protobuf.Option\x12\x11\n\tjson_name\x18\n \x01(\t\x12\x15\n\rdefault_value\x18\x0b \x01(\t\"\xc8\x02\n\x04Kind\x12\x10\n\x0cTYPE_UNKNOWN\x10\x00\x12\x0f\n\x0bTYPE_DOUBLE\x10\x01\x12\x0e\n\nTYPE_FLOAT\x10\x02\x12\x0e\n\nTYPE_INT64\x10\x03\x12\x0f\n\x0bTYPE_UINT64\x10\x04\x12\x0e\n\nTYPE_INT32\x10\x05\x12\x10\n\x0cTYPE_FIXED64\x10\x06\x12\x10\n\x0cTYPE_FIXED32\x10\x07\x12\r\n\tTYPE_BOOL\x10\x08\x12\x0f\n\x0bTYPE_STRING\x10\t\x12\x0e\n\nTYPE_GROUP\x10\n\x12\x10\n\x0cTYPE_MESSAGE\x10\x0b\x12\x0e\n\nTYPE_BYTES\x10\x0c\x12\x0f\n\x0bTYPE_UINT32\x10\r\x12\r\n\tTYPE_ENUM\x10\x0e\x12\x11\n\rTYPE_SFIXED32\x10\x0f\x12\x11\n\rTYPE_SFIXED64\x10\x10\x12\x0f\n\x0bTYPE_SINT32\x10\x11\x12\x0f\n\x0bTYPE_SINT64\x10\x12\"t\n\x0b\x43\x61rdinality\x12\x17\n\x13\x43\x41RDINALITY_UNKNOWN\x10\x00\x12\x18\n\x14\x43\x41RDINALITY_OPTIONAL\x10\x01\x12\x18\n\x14\x43\x41RDINALITY_REQUIRED\x10\x02\x12\x18\n\x14\x43\x41RDINALITY_REPEATED\x10\x03\"\xdf\x01\n\x04\x45num\x12\x0c\n\x04name\x18\x01 \x01(\t\x12-\n\tenumvalue\x18\x02 \x03(\x0b\x32\x1a.google.protobuf.EnumValue\x12(\n\x07options\x18\x03 \x03(\x0b\x32\x17.google.protobuf.Option\x12\x36\n\x0esource_context\x18\x04 \x01(\x0b\x32\x1e.google.protobuf.SourceContext\x12\'\n\x06syntax\x18\x05 \x01(\x0e\x32\x17.google.protobuf.Syntax\x12\x0f\n\x07\x65\x64ition\x18\x06 \x01(\t\"S\n\tEnumValue\x12\x0c\n\x04name\x18\x01 \x01(\t\x12\x0e\n\x06number\x18\x02 \x01(\x05\x12(\n\x07options\x18\x03 \x03(\x0b\x32\x17.google.protobuf.Option\";\n\x06Option\x12\x0c\n\x04name\x18\x01 \x01(\t\x12#\n\x05value\x18\x02 \x01(\x0b\x32\x14.google.protobuf.Any*C\n\x06Syntax\x12\x11\n\rSYNTAX_PROTO2\x10\x00\x12\x11\n\rSYNTAX_PROTO3\x10\x01\x12\x13\n\x0fSYNTAX_EDITIONS\x10\x02\x42{\n\x13\x63om.google.protobufB\tTypeProtoP\x01Z-google.golang.org/protobuf/types/known/typepb\xf8\x01\x01\xa2\x02\x03GPB\xaa\x02\x1eGoogle.Protobuf.WellKnownTypesb\x06proto3"
12
12
 
13
- pool = Google::Protobuf::DescriptorPool.generated_pool
13
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
14
14
  pool.add_serialized_file(descriptor_data)
15
15
 
16
16
  module Google
@@ -7,7 +7,7 @@ require 'google/protobuf'
7
7
 
8
8
  descriptor_data = "\n\x1egoogle/protobuf/wrappers.proto\x12\x0fgoogle.protobuf\"\x1c\n\x0b\x44oubleValue\x12\r\n\x05value\x18\x01 \x01(\x01\"\x1b\n\nFloatValue\x12\r\n\x05value\x18\x01 \x01(\x02\"\x1b\n\nInt64Value\x12\r\n\x05value\x18\x01 \x01(\x03\"\x1c\n\x0bUInt64Value\x12\r\n\x05value\x18\x01 \x01(\x04\"\x1b\n\nInt32Value\x12\r\n\x05value\x18\x01 \x01(\x05\"\x1c\n\x0bUInt32Value\x12\r\n\x05value\x18\x01 \x01(\r\"\x1a\n\tBoolValue\x12\r\n\x05value\x18\x01 \x01(\x08\"\x1c\n\x0bStringValue\x12\r\n\x05value\x18\x01 \x01(\t\"\x1b\n\nBytesValue\x12\r\n\x05value\x18\x01 \x01(\x0c\x42\x83\x01\n\x13\x63om.google.protobufB\rWrappersProtoP\x01Z1google.golang.org/protobuf/types/known/wrapperspb\xf8\x01\x01\xa2\x02\x03GPB\xaa\x02\x1eGoogle.Protobuf.WellKnownTypesb\x06proto3"
9
9
 
10
- pool = Google::Protobuf::DescriptorPool.generated_pool
10
+ pool = ::Google::Protobuf::DescriptorPool.generated_pool
11
11
  pool.add_serialized_file(descriptor_data)
12
12
 
13
13
  module Google
@@ -17,8 +17,8 @@ require 'google/protobuf/ffi/field_descriptor'
17
17
  require 'google/protobuf/ffi/oneof_descriptor'
18
18
  require 'google/protobuf/ffi/method_descriptor'
19
19
  require 'google/protobuf/ffi/service_descriptor'
20
- require 'google/protobuf/ffi/descriptor_pool'
21
20
  require 'google/protobuf/ffi/file_descriptor'
21
+ require 'google/protobuf/ffi/descriptor_pool'
22
22
  require 'google/protobuf/ffi/map'
23
23
  require 'google/protobuf/ffi/object_cache'
24
24
  require 'google/protobuf/ffi/repeated_field'
@@ -42,7 +42,8 @@ module Google
42
42
  def self.discard_unknown(message)
43
43
  raise FrozenError if message.frozen?
44
44
  raise ArgumentError.new "Expected message, got #{message.class} instead." if message.instance_variable_get(:@msg).nil?
45
- unless Google::Protobuf::FFI.message_discard_unknown(message.instance_variable_get(:@msg), message.class.descriptor, 128)
45
+ pool_def = message.class.descriptor.instance_variable_get(:@descriptor_pool).descriptor_pool
46
+ unless Google::Protobuf::FFI.message_discard_unknown(message.instance_variable_get(:@msg), message.class.descriptor, pool_def, 128)
46
47
  raise RuntimeError.new "Messages nested too deeply."
47
48
  end
48
49
  nil
@@ -12,7 +12,7 @@ def configure_common_compile_task(task)
12
12
  task.add_define 'NDEBUG'
13
13
  task.cflags << "-std=gnu99 -O3"
14
14
  [
15
- :convert, :defs, :map, :message, :protobuf, :repeated_field, :wrap_memcpy
15
+ :convert, :defs, :map, :message, :protobuf, :repeated_field
16
16
  ].each { |file| task.exclude << "/#{file}.c" }
17
17
  task.ext_dir = src_dir
18
18
  task.source_dirs = [src_dir]
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-protobuf
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.27.2
4
+ version: 4.35.1
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-06-25 00:00:00.000000000 Z
11
+ date: 2026-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: rake-compiler-dock
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '='
18
- - !ruby/object:Gem::Version
19
- version: 1.2.1
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '='
25
- - !ruby/object:Gem::Version
26
- version: 1.2.1
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: bigdecimal
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -42,16 +28,16 @@ dependencies:
42
28
  name: rake
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
- - - ">="
31
+ - - "~>"
46
32
  - !ruby/object:Gem::Version
47
- version: '13'
33
+ version: '13.3'
48
34
  type: :runtime
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - ">="
38
+ - - "~>"
53
39
  - !ruby/object:Gem::Version
54
- version: '13'
40
+ version: '13.3'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: ffi
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -86,34 +72,42 @@ dependencies:
86
72
  requirements:
87
73
  - - "~>"
88
74
  - !ruby/object:Gem::Version
89
- version: 1.1.0
75
+ version: '1.3'
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
- version: 1.1.0
82
+ version: '1.3'
97
83
  - !ruby/object:Gem::Dependency
98
- name: test-unit
84
+ name: rake-compiler-dock
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
87
  - - "~>"
102
88
  - !ruby/object:Gem::Version
103
- version: '3.0'
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- version: 3.0.9
89
+ version: '1.11'
107
90
  type: :development
108
91
  prerelease: false
109
92
  version_requirements: !ruby/object:Gem::Requirement
110
93
  requirements:
111
94
  - - "~>"
112
95
  - !ruby/object:Gem::Version
113
- version: '3.0'
114
- - - ">="
96
+ version: '1.11'
97
+ - !ruby/object:Gem::Dependency
98
+ name: test-unit
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.7'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
115
109
  - !ruby/object:Gem::Version
116
- version: 3.0.9
110
+ version: '3.7'
117
111
  description: Protocol Buffers are Google's data interchange format.
118
112
  email: protobuf@googlegroups.com
119
113
  executables: []
@@ -146,7 +140,8 @@ files:
146
140
  - ext/google/protobuf_c/third_party/utf8_range/LICENSE
147
141
  - ext/google/protobuf_c/third_party/utf8_range/utf8_range.c
148
142
  - ext/google/protobuf_c/third_party/utf8_range/utf8_range.h
149
- - ext/google/protobuf_c/wrap_memcpy.c
143
+ - ext/google/protobuf_c/third_party/utf8_range/utf8_range_neon.inc
144
+ - ext/google/protobuf_c/third_party/utf8_range/utf8_range_sse.inc
150
145
  - lib/google/protobuf.rb
151
146
  - lib/google/protobuf/any_pb.rb
152
147
  - lib/google/protobuf/api_pb.rb
@@ -188,7 +183,7 @@ homepage: https://developers.google.com/protocol-buffers
188
183
  licenses:
189
184
  - BSD-3-Clause
190
185
  metadata:
191
- source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v4.27.2/ruby
186
+ source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v4.35.1/ruby
192
187
  post_install_message:
193
188
  rdoc_options: []
194
189
  require_paths:
@@ -197,14 +192,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
197
192
  requirements:
198
193
  - - ">="
199
194
  - !ruby/object:Gem::Version
200
- version: '3.0'
195
+ version: '3.1'
201
196
  required_rubygems_version: !ruby/object:Gem::Requirement
202
197
  requirements:
203
198
  - - ">="
204
199
  - !ruby/object:Gem::Version
205
200
  version: '0'
206
201
  requirements: []
207
- rubygems_version: 3.0.8
202
+ rubygems_version: 3.3.27
208
203
  signing_key:
209
204
  specification_version: 4
210
205
  summary: Protocol Buffers
@@ -1,29 +0,0 @@
1
- // Protocol Buffers - Google's data interchange format
2
- // Copyright 2017 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
- #include <string.h>
9
-
10
- // On x86-64 Linux with glibc, we link against the 2.2.5 version of memcpy so
11
- // that we avoid depending on the 2.14 version of the symbol. This way,
12
- // distributions that are using pre-2.14 versions of glibc can successfully use
13
- // the gem we distribute
14
- // (https://github.com/protocolbuffers/protobuf/issues/2783).
15
- //
16
- // This wrapper is enabled by passing the linker flags -Wl,-wrap,memcpy in
17
- // extconf.rb.
18
- #ifdef __linux__
19
- #if defined(__x86_64__) && defined(__GNU_LIBRARY__)
20
- __asm__(".symver memcpy,memcpy@GLIBC_2.2.5");
21
- void *__wrap_memcpy(void *dest, const void *src, size_t n) {
22
- return memcpy(dest, src, n);
23
- }
24
- #else
25
- void *__wrap_memcpy(void *dest, const void *src, size_t n) {
26
- return memmove(dest, src, n);
27
- }
28
- #endif
29
- #endif