re2 2.4.0-x86_64-linux → 2.4.2-x86_64-linux

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4152fb53bed7d98fabb9f2ae93f3fe208a45a158280d1923806f68ef5b88011e
4
- data.tar.gz: a3a486df06434ef6e1cf0b99c16e58b7ecb3193387783cd0ee93062a41efdf43
3
+ metadata.gz: 81577e02bc05a95a38e8e35b3eba100c8f8ffb9b7f5a8deec2f14264fe4e63c3
4
+ data.tar.gz: '08c189c641ee0cc9486ae117ae168a373a6dbac612d6c5a8a34ced33510a51fd'
5
5
  SHA512:
6
- metadata.gz: e48ad378e44715d4414ecef26dafd526ef00ab0e2eca88584348fab589ceb9eae6bc330c81f971ddc5500a632610f8fc1181e425b02515c6c02d6fcccd08c8c9
7
- data.tar.gz: 63044dfad5054e7e0318adf2f8a1486952a02a8ed3c17f124800e2a05090efdb85805232cfd3d75a55e740fcf2cbe225fc6d2efc40ada2828cddeb0fb0cd100e
6
+ metadata.gz: f34c99f31689f7a0414768a17c30c1932d8e22c2fe7283c9661bfc068c8d60e42e78bc3295c7c5d62ceecbfa9c39f2ec2b176a06494cdfafebe0045a7267d114
7
+ data.tar.gz: 06b3a49248d9db1c1f42c28b6a55c3d7743fc6bc15d18d61a0e2e4597133d27c441fe525daed6183020e243bec636fc26d0085e1a2dc7ede7fb3b71ea6c8feb6
data/README.md CHANGED
@@ -5,7 +5,7 @@ Ruby bindings to [RE2][], a "fast, safe, thread-friendly alternative to
5
5
  backtracking regular expression engines like those used in PCRE, Perl, and
6
6
  Python".
7
7
 
8
- **Current version:** 2.4.0
8
+ **Current version:** 2.4.2
9
9
  **Supported Ruby versions:** 2.6, 2.7, 3.0, 3.1, 3.2
10
10
  **Bundled RE2 version:** libre2.11 (2023-11-01)
11
11
  **Supported RE2 versions:** libre2.0 (< 2020-03-02), libre2.1 (2020-03-02), libre2.6 (2020-03-03), libre2.7 (2020-05-01), libre2.8 (2020-07-06), libre2.9 (2020-11-01), libre2.10 (2022-12-01), libre2.11 (2023-07-01)
@@ -256,13 +256,17 @@ Contributions
256
256
  -------------
257
257
 
258
258
  * Thanks to [Jason Woods](https://github.com/driskell) who contributed the
259
- original implementations of `RE2::MatchData#begin` and `RE2::MatchData#end`;
260
- * Thanks to [Stefano Rivera](https://github.com/stefanor) who first contributed C++11 support;
261
- * Thanks to [Stan Hu](https://github.com/stanhu) for reporting a bug with empty patterns and `RE2::Regexp#scan`, contributing support for libre2.11 (2023-07-01) and for vendoring RE2 and abseil and compiling native gems in 2.0;
259
+ original implementations of `RE2::MatchData#begin` and `RE2::MatchData#end`.
260
+ * Thanks to [Stefano Rivera](https://github.com/stefanor) who first contributed
261
+ C++11 support.
262
+ * Thanks to [Stan Hu](https://github.com/stanhu) for reporting a bug with empty
263
+ patterns and `RE2::Regexp#scan`, contributing support for libre2.11
264
+ (2023-07-01) and for vendoring RE2 and abseil and compiling native gems in
265
+ 2.0.
262
266
  * Thanks to [Sebastian Reitenbach](https://github.com/buzzdeee) for reporting
263
- the deprecation and removal of the `utf8` encoding option in RE2;
267
+ the deprecation and removal of the `utf8` encoding option in RE2.
264
268
  * Thanks to [Sergio Medina](https://github.com/serch) for reporting a bug when
265
- using `RE2::Scanner#scan` with an invalid regular expression;
269
+ using `RE2::Scanner#scan` with an invalid regular expression.
266
270
  * Thanks to [Pritam Baral](https://github.com/pritambaral) for contributing the
267
271
  initial support for `RE2::Set`.
268
272
  * Thanks to [Mike Dalessio](https://github.com/flavorjones) for reviewing the
data/ext/re2/re2.cc CHANGED
@@ -130,33 +130,33 @@ static void parse_re2_options(RE2::Options* re2_options, const VALUE options) {
130
130
  #define re2_compact_callback(x)
131
131
  #endif
132
132
 
133
- static void re2_matchdata_mark(void *data) {
134
- re2_matchdata *self = (re2_matchdata *)data;
135
- rb_gc_mark_movable(self->regexp);
136
- rb_gc_mark_movable(self->text);
133
+ static void re2_matchdata_mark(void *ptr) {
134
+ re2_matchdata *m = reinterpret_cast<re2_matchdata *>(ptr);
135
+ rb_gc_mark_movable(m->regexp);
136
+ rb_gc_mark_movable(m->text);
137
137
  }
138
138
 
139
139
  #ifdef HAVE_RB_GC_MARK_MOVABLE
140
- static void re2_matchdata_update_references(void *data) {
141
- re2_matchdata *self = (re2_matchdata *)data;
142
- self->regexp = rb_gc_location(self->regexp);
143
- self->text = rb_gc_location(self->text);
140
+ static void re2_matchdata_compact(void *ptr) {
141
+ re2_matchdata *m = reinterpret_cast<re2_matchdata *>(ptr);
142
+ m->regexp = rb_gc_location(m->regexp);
143
+ m->text = rb_gc_location(m->text);
144
144
  }
145
145
  #endif
146
146
 
147
- static void re2_matchdata_free(void *data) {
148
- re2_matchdata *self = (re2_matchdata *)data;
149
- if (self->matches) {
150
- delete[] self->matches;
147
+ static void re2_matchdata_free(void *ptr) {
148
+ re2_matchdata *m = reinterpret_cast<re2_matchdata *>(ptr);
149
+ if (m->matches) {
150
+ delete[] m->matches;
151
151
  }
152
- xfree(self);
152
+ xfree(m);
153
153
  }
154
154
 
155
- static size_t re2_matchdata_memsize(const void *data) {
156
- const re2_matchdata *self = (const re2_matchdata *)data;
157
- size_t size = sizeof(re2_matchdata);
158
- if (self->matches) {
159
- size += sizeof(self->matches) * self->number_of_matches;
155
+ static size_t re2_matchdata_memsize(const void *ptr) {
156
+ const re2_matchdata *m = reinterpret_cast<const re2_matchdata *>(ptr);
157
+ size_t size = sizeof(*m);
158
+ if (m->matches) {
159
+ size += sizeof(*m->matches) * m->number_of_matches;
160
160
  }
161
161
 
162
162
  return size;
@@ -168,40 +168,40 @@ static const rb_data_type_t re2_matchdata_data_type = {
168
168
  .dmark = re2_matchdata_mark,
169
169
  .dfree = re2_matchdata_free,
170
170
  .dsize = re2_matchdata_memsize,
171
- re2_compact_callback(re2_matchdata_update_references)
171
+ re2_compact_callback(re2_matchdata_compact)
172
172
  },
173
173
  // IMPORTANT: WB_PROTECTED objects must only use the RB_OBJ_WRITE()
174
174
  // macro to update VALUE references, as to trigger write barriers.
175
175
  .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
176
176
  };
177
177
 
178
- static void re2_scanner_mark(void *data) {
179
- re2_scanner *self = (re2_scanner *)data;
180
- rb_gc_mark_movable(self->regexp);
181
- rb_gc_mark_movable(self->text);
178
+ static void re2_scanner_mark(void *ptr) {
179
+ re2_scanner *s = reinterpret_cast<re2_scanner *>(ptr);
180
+ rb_gc_mark_movable(s->regexp);
181
+ rb_gc_mark_movable(s->text);
182
182
  }
183
183
 
184
184
  #ifdef HAVE_RB_GC_MARK_MOVABLE
185
- static void re2_scanner_update_references(void *data) {
186
- re2_scanner *self = (re2_scanner *)data;
187
- self->regexp = rb_gc_location(self->regexp);
188
- self->text = rb_gc_location(self->text);
185
+ static void re2_scanner_compact(void *ptr) {
186
+ re2_scanner *s = reinterpret_cast<re2_scanner *>(ptr);
187
+ s->regexp = rb_gc_location(s->regexp);
188
+ s->text = rb_gc_location(s->text);
189
189
  }
190
190
  #endif
191
191
 
192
- static void re2_scanner_free(void *data) {
193
- re2_scanner *self = (re2_scanner *)data;
194
- if (self->input) {
195
- delete self->input;
192
+ static void re2_scanner_free(void *ptr) {
193
+ re2_scanner *s = reinterpret_cast<re2_scanner *>(ptr);
194
+ if (s->input) {
195
+ delete s->input;
196
196
  }
197
- xfree(self);
197
+ xfree(s);
198
198
  }
199
199
 
200
- static size_t re2_scanner_memsize(const void *data) {
201
- const re2_scanner *self = (const re2_scanner *)data;
202
- size_t size = sizeof(re2_scanner);
203
- if (self->input) {
204
- size += sizeof(self->input);
200
+ static size_t re2_scanner_memsize(const void *ptr) {
201
+ const re2_scanner *s = reinterpret_cast<const re2_scanner *>(ptr);
202
+ size_t size = sizeof(*s);
203
+ if (s->input) {
204
+ size += sizeof(*s->input);
205
205
  }
206
206
 
207
207
  return size;
@@ -213,26 +213,26 @@ static const rb_data_type_t re2_scanner_data_type = {
213
213
  .dmark = re2_scanner_mark,
214
214
  .dfree = re2_scanner_free,
215
215
  .dsize = re2_scanner_memsize,
216
- re2_compact_callback(re2_scanner_update_references)
216
+ re2_compact_callback(re2_scanner_compact)
217
217
  },
218
218
  // IMPORTANT: WB_PROTECTED objects must only use the RB_OBJ_WRITE()
219
219
  // macro to update VALUE references, as to trigger write barriers.
220
220
  .flags = RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
221
221
  };
222
222
 
223
- static void re2_regexp_free(void *data) {
224
- re2_pattern *self = (re2_pattern *)data;
225
- if (self->pattern) {
226
- delete self->pattern;
223
+ static void re2_regexp_free(void *ptr) {
224
+ re2_pattern *p = reinterpret_cast<re2_pattern *>(ptr);
225
+ if (p->pattern) {
226
+ delete p->pattern;
227
227
  }
228
- xfree(self);
228
+ xfree(p);
229
229
  }
230
230
 
231
- static size_t re2_regexp_memsize(const void *data) {
232
- const re2_pattern *self = (const re2_pattern *)data;
233
- size_t size = sizeof(re2_pattern);
234
- if (self->pattern) {
235
- size += sizeof(self->pattern);
231
+ static size_t re2_regexp_memsize(const void *ptr) {
232
+ const re2_pattern *p = reinterpret_cast<const re2_pattern *>(ptr);
233
+ size_t size = sizeof(*p);
234
+ if (p->pattern) {
235
+ size += sizeof(*p->pattern);
236
236
  }
237
237
 
238
238
  return size;
@@ -1579,19 +1579,19 @@ static VALUE re2_QuoteMeta(VALUE, VALUE unquoted) {
1579
1579
  return rb_str_new(quoted_string.data(), quoted_string.size());
1580
1580
  }
1581
1581
 
1582
- static void re2_set_free(void *data) {
1583
- re2_set *self = (re2_set *)data;
1584
- if (self->set) {
1585
- delete self->set;
1582
+ static void re2_set_free(void *ptr) {
1583
+ re2_set *s = reinterpret_cast<re2_set *>(ptr);
1584
+ if (s->set) {
1585
+ delete s->set;
1586
1586
  }
1587
- xfree(self);
1587
+ xfree(s);
1588
1588
  }
1589
1589
 
1590
- static size_t re2_set_memsize(const void *data) {
1591
- const re2_set *self = (const re2_set *)data;
1592
- size_t size = sizeof(re2_set);
1593
- if (self->set) {
1594
- size += sizeof(self->set);
1590
+ static size_t re2_set_memsize(const void *ptr) {
1591
+ const re2_set *s = reinterpret_cast<const re2_set *>(ptr);
1592
+ size_t size = sizeof(*s);
1593
+ if (s->set) {
1594
+ size += sizeof(*s->set);
1595
1595
  }
1596
1596
 
1597
1597
  return size;
@@ -1877,12 +1877,14 @@ extern "C" void Init_re2(void) {
1877
1877
  re2_eSetUnsupportedError = rb_define_class_under(re2_cSet, "UnsupportedError",
1878
1878
  rb_const_get(rb_cObject, rb_intern("StandardError")));
1879
1879
 
1880
- rb_define_alloc_func(re2_cRegexp, (VALUE (*)(VALUE))re2_regexp_allocate);
1880
+ rb_define_alloc_func(re2_cRegexp,
1881
+ reinterpret_cast<VALUE (*)(VALUE)>(re2_regexp_allocate));
1881
1882
  rb_define_alloc_func(re2_cMatchData,
1882
- (VALUE (*)(VALUE))re2_matchdata_allocate);
1883
+ reinterpret_cast<VALUE (*)(VALUE)>(re2_matchdata_allocate));
1883
1884
  rb_define_alloc_func(re2_cScanner,
1884
- (VALUE (*)(VALUE))re2_scanner_allocate);
1885
- rb_define_alloc_func(re2_cSet, (VALUE (*)(VALUE))re2_set_allocate);
1885
+ reinterpret_cast<VALUE (*)(VALUE)>(re2_scanner_allocate));
1886
+ rb_define_alloc_func(re2_cSet,
1887
+ reinterpret_cast<VALUE (*)(VALUE)>(re2_set_allocate));
1886
1888
 
1887
1889
  rb_define_method(re2_cMatchData, "string",
1888
1890
  RUBY_METHOD_FUNC(re2_matchdata_string), 0);
data/lib/2.6/re2.so CHANGED
Binary file
data/lib/2.7/re2.so CHANGED
Binary file
data/lib/3.0/re2.so CHANGED
Binary file
data/lib/3.1/re2.so CHANGED
Binary file
data/lib/3.2/re2.so CHANGED
Binary file
data/lib/re2/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RE2
4
- VERSION = "2.4.0"
4
+ VERSION = "2.4.2"
5
5
  end
data/re2.gemspec CHANGED
@@ -11,7 +11,6 @@ Gem::Specification.new do |s|
11
11
  s.license = "BSD-3-Clause"
12
12
  s.required_ruby_version = ">= 2.6.0"
13
13
  s.files = [
14
- ".rspec",
15
14
  "dependencies.yml",
16
15
  "ext/re2/extconf.rb",
17
16
  "ext/re2/re2.cc",
@@ -28,6 +27,7 @@ Gem::Specification.new do |s|
28
27
  "re2.gemspec"
29
28
  ]
30
29
  s.test_files = [
30
+ ".rspec",
31
31
  "spec/spec_helper.rb",
32
32
  "spec/re2_spec.rb",
33
33
  "spec/kernel_spec.rb",
@@ -1,5 +1,14 @@
1
1
  # encoding: utf-8
2
+ require 'objspace'
3
+
2
4
  RSpec.describe RE2::MatchData do
5
+ it "reports a larger consuming memory size when it has more matches" do
6
+ matches1 = RE2::Regexp.new('w(o)').match('woo')
7
+ matches2 = RE2::Regexp.new('w(o)(o)').match('woo')
8
+
9
+ expect(ObjectSpace.memsize_of(matches1)).to be < ObjectSpace.memsize_of(matches2)
10
+ end
11
+
3
12
  describe "#to_a" do
4
13
  it "is populated with the match and capturing groups" do
5
14
  a = RE2::Regexp.new('w(o)(o)').match('woo').to_a
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: re2
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.4.2
5
5
  platform: x86_64-linux
6
6
  authors:
7
7
  - Paul Mucur
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-11-11 00:00:00.000000000 Z
12
+ date: 2023-11-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake-compiler
@@ -115,6 +115,7 @@ signing_key:
115
115
  specification_version: 4
116
116
  summary: Ruby bindings to RE2.
117
117
  test_files:
118
+ - ".rspec"
118
119
  - spec/spec_helper.rb
119
120
  - spec/re2_spec.rb
120
121
  - spec/kernel_spec.rb