google-protobuf 3.16.0 → 3.17.0.rc.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 92bce6793f49890e0a5bf68cc233de1e6fea67d72f3ca7f335bee1bcb81061a3
4
- data.tar.gz: '008e84cf532d86eb4ee6bb4a913be6d75fdffd18190759acf57ef0133e33989b'
3
+ metadata.gz: d3d2d10c514b579b029de2cc0d56a82e53996d4ec4aaa7b2cede1d6d7dbb8fff
4
+ data.tar.gz: 4e5b41ae978108c953a2611516a30ae7537cd0889ec99de05e5298f926af717c
5
5
  SHA512:
6
- metadata.gz: 7869abdbcc35d74152ed52fae04a763bd866a8b04cd2eb212f07ba37cf83bb92ac2fdaa4a06d4aa9dcf55c6ac6d13e0ecb0be3fc724947f5233a84e12180263d
7
- data.tar.gz: 1d735c91494688d289c57852f7d7b4e015394851bad5fa7ddaf4ba3f5f6dd0395fd8b549c0bf5106ad370a7d324b876b66f3fe94fad8f0d4d2945d3f68d3aaed
6
+ metadata.gz: fa7bfb61a5ef23340bbb3d44afe9b2e635783dc178d4682e1a9e3c867510caf63266de07a1007fd3627e6185cecb22f5dfd3ccf53519ae4cfe57badc0a88aba0
7
+ data.tar.gz: 4465651eecf2451db63b5fe2ba4ed0812af737bb98d32b30825b049203afd7b09588bd28cec48bc81983930e988de054b94fd779c3b5c4f3e03d898ac1da490f
@@ -17,4 +17,5 @@ end
17
17
  $objs = ["protobuf.o", "convert.o", "defs.o", "message.o",
18
18
  "repeated_field.o", "map.o", "ruby-upb.o", "wrap_memcpy.o"]
19
19
 
20
+ find_header('third_party/wyhash/wyhash.h', '../../../..')
20
21
  create_makefile("google/protobuf_c")
@@ -734,7 +734,10 @@ uint64_t Message_Hash(const upb_msg* msg, const upb_msgdef* m, uint64_t seed) {
734
734
  */
735
735
  static VALUE Message_hash(VALUE _self) {
736
736
  Message* self = ruby_to_Message(_self);
737
- return INT2FIX(Message_Hash(self->msg, self->msgdef, 0));
737
+ uint64_t hash_value = Message_Hash(self->msg, self->msgdef, 0);
738
+ // RUBY_FIXNUM_MAX should be one less than a power of 2.
739
+ assert((RUBY_FIXNUM_MAX & (RUBY_FIXNUM_MAX + 1)) == 0);
740
+ return INT2FIX(hash_value & RUBY_FIXNUM_MAX);
738
741
  }
739
742
 
740
743
  /*
@@ -238,8 +238,16 @@ void Arena_register(VALUE module) {
238
238
  // We use WeakMap for the cache. For Ruby <2.7 we also need a secondary Hash
239
239
  // to store WeakMap keys because Ruby <2.7 WeakMap doesn't allow non-finalizable
240
240
  // keys.
241
-
242
- #if RUBY_API_VERSION_CODE >= 20700
241
+ //
242
+ // We also need the secondary Hash if sizeof(long) < sizeof(VALUE), because this
243
+ // means it may not be possible to fit a pointer into a Fixnum. Keys are
244
+ // pointers, and if they fit into a Fixnum, Ruby doesn't collect them, but if
245
+ // they overflow and require allocating a Bignum, they could get collected
246
+ // prematurely, thus removing the cache entry. This happens on 64-bit Windows,
247
+ // on which pointers are 64 bits but longs are 32 bits. In this case, we enable
248
+ // the secondary Hash to hold the keys and prevent them from being collected.
249
+
250
+ #if RUBY_API_VERSION_CODE >= 20700 && SIZEOF_LONG >= SIZEOF_VALUE
243
251
  #define USE_SECONDARY_MAP 0
244
252
  #else
245
253
  #define USE_SECONDARY_MAP 1
@@ -326,7 +334,7 @@ static VALUE SecondaryMap_Get(VALUE key, bool create) {
326
334
  VALUE ret = rb_hash_lookup(secondary_map, key);
327
335
  if (ret == Qnil && create) {
328
336
  SecondaryMap_MaybeGC();
329
- ret = rb_eval_string("Object.new");
337
+ ret = rb_class_new_instance(0, NULL, rb_cObject);
330
338
  rb_hash_aset(secondary_map, key, ret);
331
339
  }
332
340
  return ret;
@@ -336,11 +344,9 @@ static VALUE SecondaryMap_Get(VALUE key, bool create) {
336
344
 
337
345
  // Requires: secondary_map_mutex is held by this thread iff create == true.
338
346
  static VALUE ObjectCache_GetKey(const void* key, bool create) {
339
- char buf[sizeof(key)];
340
- memcpy(&buf, &key, sizeof(key));
341
- intptr_t key_int = (intptr_t)key;
342
- PBRUBY_ASSERT((key_int & 3) == 0);
343
- VALUE ret = LL2NUM(key_int >> 2);
347
+ VALUE key_val = (VALUE)key;
348
+ PBRUBY_ASSERT((key_val & 3) == 0);
349
+ VALUE ret = LL2NUM(key_val >> 2);
344
350
  #if USE_SECONDARY_MAP
345
351
  ret = SecondaryMap_Get(ret, create);
346
352
  #endif
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.16.0
4
+ version: 3.17.0.rc.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: 2021-05-06 00:00:00.000000000 Z
11
+ date: 2021-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler-dock
@@ -123,7 +123,7 @@ homepage: https://developers.google.com/protocol-buffers
123
123
  licenses:
124
124
  - BSD-3-Clause
125
125
  metadata:
126
- source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v3.16.0/ruby
126
+ source_code_uri: https://github.com/protocolbuffers/protobuf/tree/v3.17.0-rc1/ruby
127
127
  post_install_message:
128
128
  rdoc_options: []
129
129
  require_paths:
@@ -135,9 +135,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
135
135
  version: '2.3'
136
136
  required_rubygems_version: !ruby/object:Gem::Requirement
137
137
  requirements:
138
- - - ">="
138
+ - - ">"
139
139
  - !ruby/object:Gem::Version
140
- version: '0'
140
+ version: 1.3.1
141
141
  requirements: []
142
142
  rubygems_version: 3.2.17
143
143
  signing_key: