google-protobuf 3.22.2 → 4.30.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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/ext/google/protobuf_c/Rakefile +3 -0
  3. data/ext/google/protobuf_c/convert.c +60 -86
  4. data/ext/google/protobuf_c/convert.h +3 -28
  5. data/ext/google/protobuf_c/defs.c +692 -72
  6. data/ext/google/protobuf_c/defs.h +3 -28
  7. data/ext/google/protobuf_c/extconf.rb +14 -1
  8. data/ext/google/protobuf_c/glue.c +135 -0
  9. data/ext/google/protobuf_c/map.c +89 -45
  10. data/ext/google/protobuf_c/map.h +12 -30
  11. data/ext/google/protobuf_c/message.c +169 -169
  12. data/ext/google/protobuf_c/message.h +11 -33
  13. data/ext/google/protobuf_c/protobuf.c +65 -188
  14. data/ext/google/protobuf_c/protobuf.h +27 -39
  15. data/ext/google/protobuf_c/repeated_field.c +72 -38
  16. data/ext/google/protobuf_c/repeated_field.h +11 -29
  17. data/ext/google/protobuf_c/ruby-upb.c +15064 -11220
  18. data/ext/google/protobuf_c/ruby-upb.h +10643 -5403
  19. data/ext/google/protobuf_c/shared_convert.c +69 -0
  20. data/ext/google/protobuf_c/shared_convert.h +26 -0
  21. data/ext/google/protobuf_c/shared_message.c +37 -0
  22. data/ext/google/protobuf_c/shared_message.h +21 -0
  23. data/ext/google/protobuf_c/third_party/utf8_range/utf8_range.c +207 -0
  24. data/ext/google/protobuf_c/third_party/utf8_range/utf8_range.h +9 -8
  25. data/ext/google/protobuf_c/third_party/utf8_range/utf8_range_neon.inc +117 -0
  26. data/ext/google/protobuf_c/third_party/utf8_range/utf8_range_sse.inc +272 -0
  27. data/ext/google/protobuf_c/wrap_memcpy.c +3 -26
  28. data/lib/google/protobuf/any_pb.rb +6 -8
  29. data/lib/google/protobuf/api_pb.rb +6 -26
  30. data/lib/google/protobuf/descriptor_pb.rb +21 -252
  31. data/lib/google/protobuf/duration_pb.rb +6 -8
  32. data/lib/google/protobuf/empty_pb.rb +6 -6
  33. data/lib/google/protobuf/ffi/descriptor.rb +175 -0
  34. data/lib/google/protobuf/ffi/descriptor_pool.rb +77 -0
  35. data/lib/google/protobuf/ffi/enum_descriptor.rb +183 -0
  36. data/lib/google/protobuf/ffi/ffi.rb +214 -0
  37. data/lib/google/protobuf/ffi/field_descriptor.rb +340 -0
  38. data/lib/google/protobuf/ffi/file_descriptor.rb +59 -0
  39. data/lib/google/protobuf/ffi/internal/arena.rb +60 -0
  40. data/lib/google/protobuf/ffi/internal/convert.rb +292 -0
  41. data/lib/google/protobuf/ffi/internal/pointer_helper.rb +35 -0
  42. data/lib/google/protobuf/ffi/internal/type_safety.rb +25 -0
  43. data/lib/google/protobuf/ffi/map.rb +433 -0
  44. data/lib/google/protobuf/ffi/message.rb +783 -0
  45. data/lib/google/protobuf/ffi/method_descriptor.rb +124 -0
  46. data/lib/google/protobuf/ffi/object_cache.rb +30 -0
  47. data/lib/google/protobuf/ffi/oneof_descriptor.rb +107 -0
  48. data/lib/google/protobuf/ffi/repeated_field.rb +411 -0
  49. data/lib/google/protobuf/ffi/service_descriptor.rb +117 -0
  50. data/lib/google/protobuf/field_mask_pb.rb +6 -7
  51. data/lib/google/protobuf/internal/object_cache.rb +99 -0
  52. data/lib/google/protobuf/message_exts.rb +3 -26
  53. data/lib/google/protobuf/plugin_pb.rb +6 -31
  54. data/lib/google/protobuf/repeated_field.rb +7 -31
  55. data/lib/google/protobuf/source_context_pb.rb +6 -7
  56. data/lib/google/protobuf/struct_pb.rb +6 -23
  57. data/lib/google/protobuf/timestamp_pb.rb +6 -8
  58. data/lib/google/protobuf/type_pb.rb +6 -71
  59. data/lib/google/protobuf/well_known_types.rb +5 -34
  60. data/lib/google/protobuf/wrappers_pb.rb +6 -31
  61. data/lib/google/protobuf.rb +27 -45
  62. data/lib/google/protobuf_ffi.rb +52 -0
  63. data/lib/google/protobuf_native.rb +19 -0
  64. data/lib/google/tasks/ffi.rake +100 -0
  65. metadata +92 -9
  66. data/ext/google/protobuf_c/third_party/utf8_range/naive.c +0 -92
  67. data/ext/google/protobuf_c/third_party/utf8_range/range2-neon.c +0 -157
  68. data/ext/google/protobuf_c/third_party/utf8_range/range2-sse.c +0 -170
  69. data/lib/google/protobuf/descriptor_dsl.rb +0 -465
@@ -1,39 +1,14 @@
1
+ # frozen_string_literal: true
1
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
2
3
  # source: google/protobuf/wrappers.proto
3
4
 
4
5
  require 'google/protobuf'
5
6
 
6
- Google::Protobuf::DescriptorPool.generated_pool.build do
7
- add_file("google/protobuf/wrappers.proto", :syntax => :proto3) do
8
- add_message "google.protobuf.DoubleValue" do
9
- optional :value, :double, 1
10
- end
11
- add_message "google.protobuf.FloatValue" do
12
- optional :value, :float, 1
13
- end
14
- add_message "google.protobuf.Int64Value" do
15
- optional :value, :int64, 1
16
- end
17
- add_message "google.protobuf.UInt64Value" do
18
- optional :value, :uint64, 1
19
- end
20
- add_message "google.protobuf.Int32Value" do
21
- optional :value, :int32, 1
22
- end
23
- add_message "google.protobuf.UInt32Value" do
24
- optional :value, :uint32, 1
25
- end
26
- add_message "google.protobuf.BoolValue" do
27
- optional :value, :bool, 1
28
- end
29
- add_message "google.protobuf.StringValue" do
30
- optional :value, :string, 1
31
- end
32
- add_message "google.protobuf.BytesValue" do
33
- optional :value, :bytes, 1
34
- end
35
- end
36
- end
7
+
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
+
10
+ pool = Google::Protobuf::DescriptorPool.generated_pool
11
+ pool.add_serialized_file(descriptor_data)
37
12
 
38
13
  module Google
39
14
  module Protobuf
@@ -1,35 +1,13 @@
1
1
  # Protocol Buffers - Google's data interchange format
2
2
  # Copyright 2008 Google Inc. All rights reserved.
3
- # https://developers.google.com/protocol-buffers/
4
3
  #
5
- # Redistribution and use in source and binary forms, with or without
6
- # modification, are permitted provided that the following conditions are
7
- # met:
8
- #
9
- # * Redistributions of source code must retain the above copyright
10
- # notice, this list of conditions and the following disclaimer.
11
- # * Redistributions in binary form must reproduce the above
12
- # copyright notice, this list of conditions and the following disclaimer
13
- # in the documentation and/or other materials provided with the
14
- # distribution.
15
- # * Neither the name of Google Inc. nor the names of its
16
- # contributors may be used to endorse or promote products derived from
17
- # this software without specific prior written permission.
18
- #
19
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
- # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
- # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
- # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
- # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
- # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
- # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
- # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
- # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
- # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
- # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
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
30
7
 
31
8
  # require mixins before we hook them into the java & c code
32
9
  require 'google/protobuf/message_exts'
10
+ require 'google/protobuf/internal/object_cache'
33
11
 
34
12
  # We define these before requiring the platform-specific modules.
35
13
  # That way the module init can grab references to these.
@@ -38,26 +16,16 @@ module Google
38
16
  class Error < StandardError; end
39
17
  class ParseError < Error; end
40
18
  class TypeError < ::TypeError; end
41
- end
42
- end
43
-
44
- if RUBY_PLATFORM == "java"
45
- require 'json'
46
- require 'google/protobuf_java'
47
- else
48
- begin
49
- require "google/#{RUBY_VERSION.sub(/\.\d+$/, '')}/protobuf_c"
50
- rescue LoadError
51
- require 'google/protobuf_c'
52
- end
53
19
 
54
- end
55
-
56
- require 'google/protobuf/descriptor_dsl'
57
- require 'google/protobuf/repeated_field'
58
-
59
- module Google
60
- module Protobuf
20
+ PREFER_FFI = case ENV['PROTOCOL_BUFFERS_RUBY_IMPLEMENTATION']
21
+ when nil, "", /^native$/i
22
+ false
23
+ when /^ffi$/i
24
+ true
25
+ else
26
+ warn "Unexpected value `#{ENV['PROTOCOL_BUFFERS_RUBY_IMPLEMENTATION']}` for environment variable `PROTOCOL_BUFFERS_RUBY_IMPLEMENTATION`. Should be either \"FFI\", \"NATIVE\"."
27
+ false
28
+ end
61
29
 
62
30
  def self.encode(msg, options = {})
63
31
  msg.to_proto(options)
@@ -75,5 +43,19 @@ module Google
75
43
  klass.decode_json(json, options)
76
44
  end
77
45
 
46
+ IMPLEMENTATION = if PREFER_FFI
47
+ begin
48
+ require 'google/protobuf_ffi'
49
+ :FFI
50
+ rescue LoadError
51
+ warn "Caught exception `#{$!.message}` while loading FFI implementation of google/protobuf."
52
+ warn "Falling back to native implementation."
53
+ require 'google/protobuf_native'
54
+ :NATIVE
55
+ end
56
+ else
57
+ require 'google/protobuf_native'
58
+ :NATIVE
59
+ end
78
60
  end
79
61
  end
@@ -0,0 +1,52 @@
1
+ # Protocol Buffers - Google's data interchange format
2
+ # Copyright 2023 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
+ require 'ffi-compiler/loader'
9
+ require 'google/protobuf/ffi/ffi'
10
+ require 'google/protobuf/ffi/internal/type_safety'
11
+ require 'google/protobuf/ffi/internal/pointer_helper'
12
+ require 'google/protobuf/ffi/internal/arena'
13
+ require 'google/protobuf/ffi/internal/convert'
14
+ require 'google/protobuf/ffi/descriptor'
15
+ require 'google/protobuf/ffi/enum_descriptor'
16
+ require 'google/protobuf/ffi/field_descriptor'
17
+ require 'google/protobuf/ffi/oneof_descriptor'
18
+ require 'google/protobuf/ffi/method_descriptor'
19
+ require 'google/protobuf/ffi/service_descriptor'
20
+ require 'google/protobuf/ffi/descriptor_pool'
21
+ require 'google/protobuf/ffi/file_descriptor'
22
+ require 'google/protobuf/ffi/map'
23
+ require 'google/protobuf/ffi/object_cache'
24
+ require 'google/protobuf/ffi/repeated_field'
25
+ require 'google/protobuf/ffi/message'
26
+
27
+ module Google
28
+ module Protobuf
29
+ def self.deep_copy(object)
30
+ case object
31
+ when RepeatedField
32
+ RepeatedField.send(:deep_copy, object)
33
+ when Google::Protobuf::Map
34
+ Google::Protobuf::Map.deep_copy(object)
35
+ when Google::Protobuf::MessageExts
36
+ object.class.send(:deep_copy, object.instance_variable_get(:@msg))
37
+ else
38
+ raise NotImplementedError
39
+ end
40
+ end
41
+
42
+ def self.discard_unknown(message)
43
+ raise FrozenError if message.frozen?
44
+ raise ArgumentError.new "Expected message, got #{message.class} instead." if message.instance_variable_get(:@msg).nil?
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)
47
+ raise RuntimeError.new "Messages nested too deeply."
48
+ end
49
+ nil
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,19 @@
1
+ # Protocol Buffers - Google's data interchange format
2
+ # Copyright 2023 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
+ if RUBY_PLATFORM == "java"
9
+ require 'json'
10
+ require 'google/protobuf_java'
11
+ else
12
+ begin
13
+ require "google/#{RUBY_VERSION.sub(/\.\d+$/, '')}/protobuf_c"
14
+ rescue LoadError
15
+ require 'google/protobuf_c'
16
+ end
17
+ end
18
+
19
+ require 'google/protobuf/repeated_field'
@@ -0,0 +1,100 @@
1
+ # # @param task [FFI::Compiler::CompileTask] task to configure
2
+ def configure_common_compile_task(task)
3
+ if FileUtils.pwd.include? 'ext'
4
+ src_dir = '.'
5
+ third_party_path = 'third_party/utf8_range'
6
+ else
7
+ src_dir = 'ext/google/protobuf_c'
8
+ third_party_path = 'ext/google/protobuf_c/third_party/utf8_range'
9
+ end
10
+
11
+ task.add_include_path third_party_path
12
+ task.add_define 'NDEBUG'
13
+ task.cflags << "-std=gnu99 -O3"
14
+ [
15
+ :convert, :defs, :map, :message, :protobuf, :repeated_field, :wrap_memcpy
16
+ ].each { |file| task.exclude << "/#{file}.c" }
17
+ task.ext_dir = src_dir
18
+ task.source_dirs = [src_dir]
19
+ if RbConfig::CONFIG['target_os'] =~ /darwin|linux/
20
+ task.cflags << "-Wall -Wsign-compare -Wno-declaration-after-statement"
21
+ end
22
+ end
23
+
24
+ # FFI::CompilerTask's constructor walks the filesystem at task definition time
25
+ # to create subtasks for each source file, so files from third_party must be
26
+ # copied into place before the task is defined for it to work correctly.
27
+ # TODO Is there a sane way to check for generated protos under lib too?
28
+ def with_generated_files
29
+ expected_path = FileUtils.pwd.include?('ext') ? 'third_party/utf8_range' : 'ext/google/protobuf_c/third_party/utf8_range'
30
+ if File.directory?(expected_path)
31
+ yield
32
+ else
33
+ task :default do
34
+ # It is possible, especially in cases like the first invocation of
35
+ # `rake test` following `rake clean` or a fresh checkout that the
36
+ # `copy_third_party` task has been executed since initial task definition.
37
+ # If so, run the task definition block now and invoke it explicitly.
38
+ if File.directory?(expected_path)
39
+ yield
40
+ Rake::Task[:default].invoke
41
+ else
42
+ raise "Missing directory #{File.absolute_path(expected_path)}." +
43
+ " Did you forget to run `rake copy_third_party` before building" +
44
+ " native extensions?"
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ begin
51
+ require "ffi-compiler/compile_task"
52
+
53
+ desc "Compile Protobuf library for FFI"
54
+ namespace "ffi-protobuf" do
55
+ with_generated_files do
56
+ # Compile Ruby UPB separately in order to limit use of -DUPB_BUILD_API to one
57
+ # compilation unit.
58
+ desc "Compile UPB library for FFI"
59
+ namespace "ffi-upb" do
60
+ with_generated_files do
61
+ FFI::Compiler::CompileTask.new('ruby-upb') do |c|
62
+ configure_common_compile_task c
63
+ c.add_define "UPB_BUILD_API"
64
+ c.exclude << "/glue.c"
65
+ c.exclude << "/shared_message.c"
66
+ c.exclude << "/shared_convert.c"
67
+ if RbConfig::CONFIG['target_os'] =~ /darwin|linux/
68
+ c.cflags << "-fvisibility=hidden"
69
+ end
70
+ end
71
+ end
72
+ end
73
+
74
+ FFI::Compiler::CompileTask.new 'protobuf_c_ffi' do |c|
75
+ configure_common_compile_task c
76
+ # Ruby UPB was already compiled with different flags.
77
+ c.exclude << "/utf8_range.c"
78
+ c.exclude << "/ruby-upb.c"
79
+ end
80
+
81
+ # Setup dependencies so that the .o files generated by building ffi-upb are
82
+ # available to link here.
83
+ # TODO Can this be simplified? Can the single shared library be used
84
+ # instead of the object files?
85
+ protobuf_c_task = Rake::Task[:default]
86
+ protobuf_c_shared_lib_task = Rake::Task[protobuf_c_task.prereqs.last]
87
+ ruby_upb_shared_lib_task = Rake::Task[:"ffi-upb:default"].prereqs.first
88
+ Rake::Task[ruby_upb_shared_lib_task].prereqs.each do |dependency|
89
+ protobuf_c_shared_lib_task.prereqs.prepend dependency
90
+ end
91
+ end
92
+ end
93
+ rescue LoadError
94
+ desc "Compile Protobuf library for FFI"
95
+ namespace "ffi-protobuf" do
96
+ task :default do
97
+ warn "Skipping build of FFI; `gem install ffi-compiler` to enable."
98
+ end
99
+ end
100
+ end
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: 3.22.2
4
+ version: 4.30.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: 2023-03-10 00:00:00.000000000 Z
11
+ date: 2025-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler-dock
@@ -24,6 +24,62 @@ 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'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '13'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '13'
55
+ - !ruby/object:Gem::Dependency
56
+ name: ffi
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: ffi-compiler
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1'
27
83
  - !ruby/object:Gem::Dependency
28
84
  name: rake-compiler
29
85
  requirement: !ruby/object:Gem::Requirement
@@ -63,13 +119,16 @@ email: protobuf@googlegroups.com
63
119
  executables: []
64
120
  extensions:
65
121
  - ext/google/protobuf_c/extconf.rb
122
+ - ext/google/protobuf_c/Rakefile
66
123
  extra_rdoc_files: []
67
124
  files:
125
+ - ext/google/protobuf_c/Rakefile
68
126
  - ext/google/protobuf_c/convert.c
69
127
  - ext/google/protobuf_c/convert.h
70
128
  - ext/google/protobuf_c/defs.c
71
129
  - ext/google/protobuf_c/defs.h
72
130
  - ext/google/protobuf_c/extconf.rb
131
+ - ext/google/protobuf_c/glue.c
73
132
  - ext/google/protobuf_c/map.c
74
133
  - ext/google/protobuf_c/map.h
75
134
  - ext/google/protobuf_c/message.c
@@ -80,20 +139,41 @@ files:
80
139
  - ext/google/protobuf_c/repeated_field.h
81
140
  - ext/google/protobuf_c/ruby-upb.c
82
141
  - ext/google/protobuf_c/ruby-upb.h
142
+ - ext/google/protobuf_c/shared_convert.c
143
+ - ext/google/protobuf_c/shared_convert.h
144
+ - ext/google/protobuf_c/shared_message.c
145
+ - ext/google/protobuf_c/shared_message.h
83
146
  - ext/google/protobuf_c/third_party/utf8_range/LICENSE
84
- - ext/google/protobuf_c/third_party/utf8_range/naive.c
85
- - ext/google/protobuf_c/third_party/utf8_range/range2-neon.c
86
- - ext/google/protobuf_c/third_party/utf8_range/range2-sse.c
147
+ - ext/google/protobuf_c/third_party/utf8_range/utf8_range.c
87
148
  - ext/google/protobuf_c/third_party/utf8_range/utf8_range.h
149
+ - ext/google/protobuf_c/third_party/utf8_range/utf8_range_neon.inc
150
+ - ext/google/protobuf_c/third_party/utf8_range/utf8_range_sse.inc
88
151
  - ext/google/protobuf_c/wrap_memcpy.c
89
152
  - lib/google/protobuf.rb
90
153
  - lib/google/protobuf/any_pb.rb
91
154
  - lib/google/protobuf/api_pb.rb
92
- - lib/google/protobuf/descriptor_dsl.rb
93
155
  - lib/google/protobuf/descriptor_pb.rb
94
156
  - lib/google/protobuf/duration_pb.rb
95
157
  - lib/google/protobuf/empty_pb.rb
158
+ - lib/google/protobuf/ffi/descriptor.rb
159
+ - lib/google/protobuf/ffi/descriptor_pool.rb
160
+ - lib/google/protobuf/ffi/enum_descriptor.rb
161
+ - lib/google/protobuf/ffi/ffi.rb
162
+ - lib/google/protobuf/ffi/field_descriptor.rb
163
+ - lib/google/protobuf/ffi/file_descriptor.rb
164
+ - lib/google/protobuf/ffi/internal/arena.rb
165
+ - lib/google/protobuf/ffi/internal/convert.rb
166
+ - lib/google/protobuf/ffi/internal/pointer_helper.rb
167
+ - lib/google/protobuf/ffi/internal/type_safety.rb
168
+ - lib/google/protobuf/ffi/map.rb
169
+ - lib/google/protobuf/ffi/message.rb
170
+ - lib/google/protobuf/ffi/method_descriptor.rb
171
+ - lib/google/protobuf/ffi/object_cache.rb
172
+ - lib/google/protobuf/ffi/oneof_descriptor.rb
173
+ - lib/google/protobuf/ffi/repeated_field.rb
174
+ - lib/google/protobuf/ffi/service_descriptor.rb
96
175
  - lib/google/protobuf/field_mask_pb.rb
176
+ - lib/google/protobuf/internal/object_cache.rb
97
177
  - lib/google/protobuf/message_exts.rb
98
178
  - lib/google/protobuf/plugin_pb.rb
99
179
  - lib/google/protobuf/repeated_field.rb
@@ -103,11 +183,14 @@ files:
103
183
  - lib/google/protobuf/type_pb.rb
104
184
  - lib/google/protobuf/well_known_types.rb
105
185
  - lib/google/protobuf/wrappers_pb.rb
186
+ - lib/google/protobuf_ffi.rb
187
+ - lib/google/protobuf_native.rb
188
+ - lib/google/tasks/ffi.rake
106
189
  homepage: https://developers.google.com/protocol-buffers
107
190
  licenses:
108
191
  - BSD-3-Clause
109
192
  metadata:
110
- source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v3.22.2/ruby
193
+ source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v4.30.1/ruby
111
194
  post_install_message:
112
195
  rdoc_options: []
113
196
  require_paths:
@@ -116,14 +199,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
116
199
  requirements:
117
200
  - - ">="
118
201
  - !ruby/object:Gem::Version
119
- version: '2.3'
202
+ version: '3.0'
120
203
  required_rubygems_version: !ruby/object:Gem::Requirement
121
204
  requirements:
122
205
  - - ">="
123
206
  - !ruby/object:Gem::Version
124
207
  version: '0'
125
208
  requirements: []
126
- rubygems_version: 3.0.8
209
+ rubygems_version: 3.5.16
127
210
  signing_key:
128
211
  specification_version: 4
129
212
  summary: Protocol Buffers
@@ -1,92 +0,0 @@
1
- #include <stdio.h>
2
-
3
- /*
4
- * http://www.unicode.org/versions/Unicode6.0.0/ch03.pdf - page 94
5
- *
6
- * Table 3-7. Well-Formed UTF-8 Byte Sequences
7
- *
8
- * +--------------------+------------+-------------+------------+-------------+
9
- * | Code Points | First Byte | Second Byte | Third Byte | Fourth Byte |
10
- * +--------------------+------------+-------------+------------+-------------+
11
- * | U+0000..U+007F | 00..7F | | | |
12
- * +--------------------+------------+-------------+------------+-------------+
13
- * | U+0080..U+07FF | C2..DF | 80..BF | | |
14
- * +--------------------+------------+-------------+------------+-------------+
15
- * | U+0800..U+0FFF | E0 | A0..BF | 80..BF | |
16
- * +--------------------+------------+-------------+------------+-------------+
17
- * | U+1000..U+CFFF | E1..EC | 80..BF | 80..BF | |
18
- * +--------------------+------------+-------------+------------+-------------+
19
- * | U+D000..U+D7FF | ED | 80..9F | 80..BF | |
20
- * +--------------------+------------+-------------+------------+-------------+
21
- * | U+E000..U+FFFF | EE..EF | 80..BF | 80..BF | |
22
- * +--------------------+------------+-------------+------------+-------------+
23
- * | U+10000..U+3FFFF | F0 | 90..BF | 80..BF | 80..BF |
24
- * +--------------------+------------+-------------+------------+-------------+
25
- * | U+40000..U+FFFFF | F1..F3 | 80..BF | 80..BF | 80..BF |
26
- * +--------------------+------------+-------------+------------+-------------+
27
- * | U+100000..U+10FFFF | F4 | 80..8F | 80..BF | 80..BF |
28
- * +--------------------+------------+-------------+------------+-------------+
29
- */
30
-
31
- /* Return 0 - success, >0 - index(1 based) of first error char */
32
- int utf8_naive(const unsigned char *data, int len)
33
- {
34
- int err_pos = 1;
35
-
36
- while (len) {
37
- int bytes;
38
- const unsigned char byte1 = data[0];
39
-
40
- /* 00..7F */
41
- if (byte1 <= 0x7F) {
42
- bytes = 1;
43
- /* C2..DF, 80..BF */
44
- } else if (len >= 2 && byte1 >= 0xC2 && byte1 <= 0xDF &&
45
- (signed char)data[1] <= (signed char)0xBF) {
46
- bytes = 2;
47
- } else if (len >= 3) {
48
- const unsigned char byte2 = data[1];
49
-
50
- /* Is byte2, byte3 between 0x80 ~ 0xBF */
51
- const int byte2_ok = (signed char)byte2 <= (signed char)0xBF;
52
- const int byte3_ok = (signed char)data[2] <= (signed char)0xBF;
53
-
54
- if (byte2_ok && byte3_ok &&
55
- /* E0, A0..BF, 80..BF */
56
- ((byte1 == 0xE0 && byte2 >= 0xA0) ||
57
- /* E1..EC, 80..BF, 80..BF */
58
- (byte1 >= 0xE1 && byte1 <= 0xEC) ||
59
- /* ED, 80..9F, 80..BF */
60
- (byte1 == 0xED && byte2 <= 0x9F) ||
61
- /* EE..EF, 80..BF, 80..BF */
62
- (byte1 >= 0xEE && byte1 <= 0xEF))) {
63
- bytes = 3;
64
- } else if (len >= 4) {
65
- /* Is byte4 between 0x80 ~ 0xBF */
66
- const int byte4_ok = (signed char)data[3] <= (signed char)0xBF;
67
-
68
- if (byte2_ok && byte3_ok && byte4_ok &&
69
- /* F0, 90..BF, 80..BF, 80..BF */
70
- ((byte1 == 0xF0 && byte2 >= 0x90) ||
71
- /* F1..F3, 80..BF, 80..BF, 80..BF */
72
- (byte1 >= 0xF1 && byte1 <= 0xF3) ||
73
- /* F4, 80..8F, 80..BF, 80..BF */
74
- (byte1 == 0xF4 && byte2 <= 0x8F))) {
75
- bytes = 4;
76
- } else {
77
- return err_pos;
78
- }
79
- } else {
80
- return err_pos;
81
- }
82
- } else {
83
- return err_pos;
84
- }
85
-
86
- len -= bytes;
87
- err_pos += bytes;
88
- data += bytes;
89
- }
90
-
91
- return 0;
92
- }