backports 3.20.2 → 3.23.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +401 -304
  3. data/Gemfile +1 -1
  4. data/README.md +288 -158
  5. data/lib/backports/2.1.0/module/singleton_class.rb +8 -0
  6. data/lib/backports/2.3.0/struct/dig.rb +2 -0
  7. data/lib/backports/2.4.0/string/unpack1.rb +7 -0
  8. data/lib/backports/2.5.0/dir/children.rb +4 -0
  9. data/lib/backports/2.5.0/dir/each_child.rb +7 -0
  10. data/lib/backports/2.7.0/complex/{comparision.rb → comparison.rb} +0 -0
  11. data/lib/backports/2.7.0/enumerable/tally.rb +4 -3
  12. data/lib/backports/2.7.0/symbol/end_with.rb +9 -0
  13. data/lib/backports/2.7.0/symbol.rb +3 -0
  14. data/lib/backports/3.0.0/symbol/name.rb +16 -6
  15. data/lib/backports/3.1.0/array/intersect.rb +16 -0
  16. data/lib/backports/3.1.0/array.rb +3 -0
  17. data/lib/backports/3.1.0/class/descendants.rb +11 -0
  18. data/lib/backports/3.1.0/class/subclasses.rb +11 -0
  19. data/lib/backports/3.1.0/class.rb +3 -0
  20. data/lib/backports/3.1.0/enumerable/compact.rb +5 -0
  21. data/lib/backports/3.1.0/enumerable/tally.rb +18 -0
  22. data/lib/backports/3.1.0/enumerable.rb +3 -0
  23. data/lib/backports/3.1.0/file/dirname.rb +16 -0
  24. data/lib/backports/3.1.0/file.rb +3 -0
  25. data/lib/backports/3.1.0/integer/try_convert.rb +7 -0
  26. data/lib/backports/3.1.0/integer.rb +3 -0
  27. data/lib/backports/3.1.0/match_data/match.rb +5 -0
  28. data/lib/backports/3.1.0/match_data/match_length.rb +6 -0
  29. data/lib/backports/3.1.0/match_data.rb +3 -0
  30. data/lib/backports/3.1.0/struct/keyword_init.rb +5 -0
  31. data/lib/backports/3.1.0/struct.rb +3 -0
  32. data/lib/backports/3.1.0.rb +3 -0
  33. data/lib/backports/3.1.rb +1 -0
  34. data/lib/backports/latest.rb +1 -1
  35. data/lib/backports/ractor/cloner.rb +13 -4
  36. data/lib/backports/version.rb +1 -1
  37. metadata +27 -4
data/CHANGELOG.md CHANGED
@@ -8,12 +8,58 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
8
8
 
9
9
  Note: [Next major version (X-mas 2021?)](https://github.com/marcandre/backports/issues/139) may drop support for Ruby < 2.2, please comment.
10
10
 
11
+ ## [3.23.0](https://github.com/marcandre/backports/compare/v3.22.1...v3.23.0) - 2021-12-28
12
+
13
+ ### Added
14
+
15
+ - `Integer.try_convert` (Ruby 3.1)
16
+ - `Symbol.end_with?` (Ruby 2.7) [#171]
17
+
18
+ ## [3.22.1](https://github.com/marcandre/backports/compare/v3.21.0...v3.22.1) - 2021-12-27
19
+
20
+ ### Added
21
+
22
+ Ruby 3.1 backports:
23
+
24
+ #### Array
25
+
26
+ - `intersect?`
27
+
28
+ #### Class
29
+
30
+ - `descendants`
31
+ - `subclasses`
32
+
33
+ #### Enumerable
34
+
35
+ - `compact`
36
+ - `tally` (with hash argument)
37
+
38
+ ### File
39
+
40
+ - `dirname` (with depth argument)
41
+
42
+ #### MatchData
43
+
44
+ - `match`
45
+ - `match_length`
46
+
47
+ #### Struct
48
+
49
+ - `keyword_init?`
50
+
51
+ ## [3.21.0](https://github.com/marcandre/backports/compare/v3.20.1...v3.21.0) - 2021-03-31
52
+
53
+ ### Added
54
+
55
+ - Added `String#unpack1` (Ruby 2.4) [#166]
56
+
11
57
  ## [3.20.1](https://github.com/marcandre/backports/compare/v3.20.0...v3.20.1) - 2021-01-03
12
58
 
13
59
  ### Fixed
14
60
 
15
- * Added `Ractor.[]` and `[]=` [#161]
16
- * `Ractor.current` fixed from threads [#161]
61
+ - Added `Ractor.[]` and `[]=` [#161]
62
+ - `Ractor.current` fixed from threads [#161]
17
63
 
18
64
  ## [3.20.0](https://github.com/marcandre/backports/compare/v3.19.0...v3.20.0) - 2020-12-30
19
65
 
@@ -25,22 +71,24 @@ Ractor backport (all methods)
25
71
 
26
72
  ### Added
27
73
 
28
- * Ruby 3.0 backports
74
+ - Ruby 3.0 backports
75
+
76
+ - Env
29
77
 
30
- * Env
31
- * `except`
78
+ - `except`
32
79
 
33
- * Hash
34
- * `except`
35
- * `transform_keys`, `transform_keys!` (with hash argument)
80
+ - Hash
36
81
 
37
- * Symbol
38
- * `name`
82
+ - `except`
83
+ - `transform_keys`, `transform_keys!` (with hash argument)
39
84
 
40
- * Ruby 2.3 backports
85
+ - Symbol
86
+ - `name`
41
87
 
42
- * Queue
43
- * `close`, `closed?` (affects `push`, `pop` and aliases)
88
+ - Ruby 2.3 backports
89
+
90
+ - Queue
91
+ - `close`, `closed?` (affects `push`, `pop` and aliases)
44
92
 
45
93
  ## [3.18.2](https://github.com/marcandre/backports/compare/v3.18.0...v3.18.2) - 2020-08-26
46
94
 
@@ -76,10 +124,10 @@ Fix Range#size (Ruby 2.0) on Ruby 1.8.7 [#144]
76
124
 
77
125
  ### Added
78
126
 
79
- * Ruby 2.6 backports
127
+ - Ruby 2.6 backports
80
128
 
81
- * Range
82
- * `cover?` (with `Range` argument)
129
+ - Range
130
+ - `cover?` (with `Range` argument)
83
131
 
84
132
  ### Changed
85
133
 
@@ -101,148 +149,168 @@ Partly un-deprecated in 3.17.0!
101
149
 
102
150
  ### Added
103
151
 
104
- * Ruby 2.7 backports
152
+ - Ruby 2.7 backports
153
+
154
+ - Array
155
+
156
+ - `intersection`
157
+
158
+ - Comparable
159
+
160
+ - `clamp` (with range)
105
161
 
106
- * Array
107
- * `intersection`
162
+ - Complex
108
163
 
109
- * Comparable
110
- * `clamp` (with range)
164
+ - `<=>`
111
165
 
112
- * Complex
113
- * `<=>`
166
+ - Enumerable
114
167
 
115
- * Enumerable
116
- * `filter_map`
117
- * `tally`
168
+ - `filter_map`
169
+ - `tally`
118
170
 
119
- * Enumerator
120
- * `produce` (class method)
171
+ - Enumerator
121
172
 
122
- * Time
123
- * `floor`, `ceil`
173
+ - `produce` (class method)
174
+
175
+ - Time
176
+ - `floor`, `ceil`
124
177
 
125
178
  ## [3.15.0] - 2019-05-15
126
179
 
127
180
  ### Added
128
181
 
129
- * Proc / Method
130
- * `<<`, `>>`
182
+ - Proc / Method
183
+ - `<<`, `>>`
131
184
 
132
185
  ## 3.14.0 - 2019-04-29
133
186
 
134
187
  ### Added
135
188
 
136
- * Hash
137
- * `to_h` (with block)
189
+ - Hash
190
+ - `to_h` (with block)
138
191
 
139
192
  ## 3.13.0 - 2019-04-5
140
193
 
141
194
  ### Added
142
195
 
143
- * Hash
144
- * `merge`, `merge!`/`update` (with multiple arguments)
196
+ - Hash
197
+ - `merge`, `merge!`/`update` (with multiple arguments)
145
198
 
146
199
  ## 3.12.0 - 2019-02-20
147
200
 
148
201
  ### Added
149
202
 
150
- * Ruby 2.6.0 backports
151
- * Array
152
- * `difference`, `union`
153
- * `to_h` (with block)
203
+ - Ruby 2.6.0 backports
204
+
205
+ - Array
206
+
207
+ - `difference`, `union`
208
+ - `to_h` (with block)
154
209
 
155
- * Enumerable
156
- * `chain`
157
- * `to_h` (with block)
210
+ - Enumerable
158
211
 
159
- * Enumerator::Chain (use Enumerable#chain)
160
- * Kernel
161
- * `then`
212
+ - `chain`
213
+ - `to_h` (with block)
162
214
 
163
- * Additional backports for 2.5.0:
164
- * String
165
- * `undump`
215
+ - Enumerator::Chain (use Enumerable#chain)
216
+ - Kernel
217
+ - `then`
218
+
219
+ - Additional backports for 2.5.0:
220
+ - String
221
+ - `undump`
166
222
 
167
223
  ## 3.11.0 - 2017-12-25
168
224
 
169
225
  ### Added
170
226
 
171
- * Ruby version 2.5.0 backports
172
- * Array
173
- * `append`, `prepend`
227
+ - Ruby version 2.5.0 backports
228
+
229
+ - Array
230
+
231
+ - `append`, `prepend`
232
+
233
+ - Dir
234
+
235
+ - `children`, `each_child`
236
+
237
+ - Enumerable
174
238
 
175
- * Dir
176
- * `children`, `each_child`
239
+ - `any?`, `all?`, `none?`, `one?` (with pattern argument)
177
240
 
178
- * Enumerable
179
- * `any?`, `all?`, `none?`, `one?` (with pattern argument)
241
+ - Hash
180
242
 
181
- * Hash
182
- * `slice`
183
- * `transform_keys`
243
+ - `slice`
244
+ - `transform_keys`
184
245
 
185
- * Integer
186
- * `sqrt`
187
- * `allbits?`, `anybits?` and `nobits?`
246
+ - Integer
188
247
 
189
- * Kernel
190
- * `yield_self`
248
+ - `sqrt`
249
+ - `allbits?`, `anybits?` and `nobits?`
191
250
 
192
- * Module
193
- * `attr`, `attr_accessor`, `attr_reader`, `attr_writer` (now public)
194
- * `define_method`, `alias_method`, `undef_method`, `remove_method`
195
- (now public)
251
+ - Kernel
196
252
 
197
- * String
198
- * `delete_prefix`, `delete_prefix!`
199
- * `delete_suffix`, `delete_suffix!`
253
+ - `yield_self`
200
254
 
201
- * Struct
202
- * `new` (with `keyword_init: true`)
255
+ - Module
203
256
 
204
- * `require 'backports/latest'` is now the way to require everything, but is
205
- discouraged
257
+ - `attr`, `attr_accessor`, `attr_reader`, `attr_writer` (now public)
258
+ - `define_method`, `alias_method`, `undef_method`, `remove_method`
259
+ (now public)
260
+
261
+ - String
262
+
263
+ - `delete_prefix`, `delete_prefix!`
264
+ - `delete_suffix`, `delete_suffix!`
265
+
266
+ - Struct
267
+ - `new` (with `keyword_init: true`)
268
+
269
+ - `require 'backports/latest'` is now the way to require everything, but is
270
+ discouraged
206
271
 
207
272
  ## 3.10.0 - 2017-10-17
208
273
 
209
274
  ### Added
210
275
 
211
- * Additional features of 2.4.0
212
- * Enumerable
213
- * `uniq`
214
- * `sum`
276
+ - Additional features of 2.4.0
277
+
278
+ - Enumerable
215
279
 
216
- * Hash
217
- * `compact`
218
- * `transform_values`
280
+ - `uniq`
281
+ - `sum`
282
+
283
+ - Hash
284
+ - `compact`
285
+ - `transform_values`
219
286
 
220
287
  ## 3.9.0 - 2017-10-07
221
288
 
222
289
  ### Added
223
290
 
224
- * From 2.4.0: `dup` for `true`, `false`, `nil`, Numeric
225
- * From 2.2.0: `Method#super_method`
291
+ - From 2.4.0: `dup` for `true`, `false`, `nil`, Numeric
292
+ - From 2.2.0: `Method#super_method`
226
293
 
227
294
  ## 3.8.0 - 2017-04-26
228
295
 
229
296
  ### Added
230
297
 
231
- * From 2.4.0: `String#match?`, `Regexp#match?`
298
+ - From 2.4.0: `String#match?`, `Regexp#match?`
299
+
300
+ - From 2.3.0:
232
301
 
233
- * From 2.3.0:
234
- * unary `String#+`, `-`
235
- * Numeric: `positive?`, `negative?`
236
- * Hash: `to_proc`, `fetch_values`, `>`, `<`, `>=`, `<=`
237
- * Enumerable: `chunk_while`, `grep_v`
238
- * `{Array|Hash|Struct}#dig`
239
- * `Array#bsearch_index`
302
+ - unary `String#+`, `-`
303
+ - Numeric: `positive?`, `negative?`
304
+ - Hash: `to_proc`, `fetch_values`, `>`, `<`, `>=`, `<=`
305
+ - Enumerable: `chunk_while`, `grep_v`
306
+ - `{Array|Hash|Struct}#dig`
307
+ - `Array#bsearch_index`
240
308
 
241
- * From 2.2.0:
242
- * `Method#curry`
243
- * `String#unicode_normalize{|?|!}`
244
- * `Kernel#itself`
245
- * Float: `next_float`, `prev_float`
309
+ - From 2.2.0:
310
+ - `Method#curry`
311
+ - `String#unicode_normalize{|?|!}`
312
+ - `Kernel#itself`
313
+ - Float: `next_float`, `prev_float`
246
314
 
247
315
  ## 3.7.0 - 2017-03-28
248
316
 
@@ -250,146 +318,150 @@ Initiate work on backports of 2.2, 2.3, 2.4
250
318
 
251
319
  ### Added
252
320
 
253
- * From 2.4.0:
254
- * `Comparable#clamp`
321
+ - From 2.4.0:
322
+
323
+ - `Comparable#clamp`
255
324
 
256
- * From 2.2.0:
257
- * Enumerable: `slice_when`, `slice_after`
325
+ - From 2.2.0:
326
+ - Enumerable: `slice_when`, `slice_after`
258
327
 
259
328
  ## 3.6.0 - 2014-02-14
260
329
 
261
330
  ### Added
262
331
 
263
- * Additional features of 2.1.0
264
- * Bignum#bit_length
265
- * Fixnum#bit_length
266
- * Module#include (now public)
332
+ - Additional features of 2.1.0
333
+ - Bignum#bit_length
334
+ - Fixnum#bit_length
335
+ - Module#include (now public)
267
336
 
268
337
  ## 3.5.0 - 2014-02-3
269
338
 
270
339
  ### Added
271
340
 
272
- * Additional features of 2.0.0
273
- * Range#size
341
+ - Additional features of 2.0.0
342
+ - Range#size
274
343
 
275
344
  ## 3.4.0 - 2013-12-29
276
345
 
277
346
  ### Added
278
347
 
279
- * Additional features of 2.1.0
280
- * Array#to_h, Enumerable#to_h
348
+ - Additional features of 2.1.0
349
+ - Array#to_h, Enumerable#to_h
281
350
 
282
351
  ## 3.3.0 - 2013-04-03
283
352
 
284
353
  ### Fixed
285
354
 
286
- * Moved `Proc#yield` & `Hash#key` from 1.8.7 to 1.9.1
355
+ - Moved `Proc#yield` & `Hash#key` from 1.8.7 to 1.9.1
287
356
 
288
357
  ## 3.2.0 - 2013-04-02
289
358
 
290
359
  ### Fixed
291
360
 
292
- * Moved `Dir.mktmpdir` to the stdlib 'tmpdir' for Ruby 1.8.7
361
+ - Moved `Dir.mktmpdir` to the stdlib 'tmpdir' for Ruby 1.8.7
293
362
 
294
363
  ### Removed
295
364
 
296
- * Removed `returning` as it is no longer part of Rails.
365
+ - Removed `returning` as it is no longer part of Rails.
297
366
 
298
367
  ## 3.1.0 - 2013-03-05
299
368
 
300
369
  ### Added
301
370
 
302
- * Backports can now be loaded separately!
371
+ - Backports can now be loaded separately!
303
372
 
304
373
  ### Fixed
305
374
 
306
- * Small tweaks and fixes for many methods to pass more RubySpecs
375
+ - Small tweaks and fixes for many methods to pass more RubySpecs
307
376
 
308
377
  ## 3.0.0 - 2013-02-24
309
378
 
310
379
  ### Added
311
380
 
312
- * Additional features of 2.0.0
313
- * Struct#to_h, NilClass#to_h, Hash#to_h
314
- * Hash#default_proc = nil
315
- * OpenStruct lib
381
+ - Additional features of 2.0.0
316
382
 
317
- * 1.8.7's Enumerator#with_index (it wasn't in the 1.8.7 NEWS file...)
383
+ - Struct#to_h, NilClass#to_h, Hash#to_h
384
+ - Hash#default_proc = nil
385
+ - OpenStruct lib
386
+
387
+ - 1.8.7's Enumerator#with_index (it wasn't in the 1.8.7 NEWS file...)
318
388
 
319
389
  ## 2.8.0 - 2013-02-3
320
390
 
321
391
  ### Added
322
392
 
323
- * Added some features of 2.0.0 (must be required explicitly until official
324
- release):
325
- * Array#bsearch
326
- * Range#bsearch
393
+ - Added some features of 2.0.0 (must be required explicitly until official
394
+ release):
395
+ - Array#bsearch
396
+ - Range#bsearch
327
397
 
328
398
  ## 2.7.0 - 2013-01-14
329
399
 
330
400
  ### Added
331
401
 
332
- * Features of 2.0.0 (must be required explicitly until official
333
- release):
334
- * Enumerable#lazy
335
- * Enumerator::Lazy
402
+ - Features of 2.0.0 (must be required explicitly until official
403
+ release):
404
+ - Enumerable#lazy
405
+ - Enumerator::Lazy
336
406
 
337
407
  ## 2.6.0 - 2012-05-29
338
408
 
339
409
  ### Removed
340
410
 
341
- * Enumerable#join
411
+ - Enumerable#join
342
412
 
343
413
  ## 2.5.0 - 2012-02-25
344
414
 
345
415
  ### Added
346
416
 
347
- * Some features of 1.9.3:
348
- * IO::NULL
349
- * IO#advise
350
- * String#byteslice
351
- * String#prepend
417
+ - Some features of 1.9.3:
418
+ - IO::NULL
419
+ - IO#advise
420
+ - String#byteslice
421
+ - String#prepend
352
422
 
353
423
  ## 2.4.0 - 2012-02-24
354
424
 
355
425
  ### Added
356
426
 
357
- * Add backporting for libraries
427
+ - Add backporting for libraries
428
+
429
+ - Bring libraries up to date:
358
430
 
359
- * Bring libraries up to date:
360
- * Matrix
361
- * Prime
362
- * Set
431
+ - Matrix
432
+ - Prime
433
+ - Set
363
434
 
364
- * Some features of 1.9.3:
365
- * IO.write, IO.binwrite
435
+ - Some features of 1.9.3:
366
436
 
367
- * Forcing backports (must be required explicitly):
368
- * Hash#select (returns a Hash instead of an Array)
369
- * Enumerable / Array#map (returns an enumerator when called without a
370
- block)
371
- * String#length, size (for UTF-8 support)
437
+ - IO.write, IO.binwrite
438
+
439
+ - Forcing backports (must be required explicitly):
440
+ - Hash#select (returns a Hash instead of an Array)
441
+ - Enumerable / Array#map (returns an enumerator when called without a
442
+ block)
443
+ - String#length, size (for UTF-8 support)
372
444
 
373
445
  ## 2.3.0 - 2011-05-13
374
446
 
375
447
  ### Added
376
448
 
377
- * `Enumerator::Yielder#<<`
449
+ - `Enumerator::Yielder#<<`
378
450
 
379
451
  ## 2.2.0 - 2011-05-13
380
452
 
381
453
  ### Fixed
382
454
 
383
- * Ruby 1.8.8 was officially cancelled; code was moved to Ruby 1.9.1 and
384
- README updated.
455
+ - Ruby 1.8.8 was officially cancelled; code was moved to Ruby 1.9.1 and
456
+ README updated.
385
457
 
386
- * `"".ord` now raises an error.
458
+ - `"".ord` now raises an error.
387
459
 
388
460
  ## 2.1.0 - 2011-04-16
389
461
 
390
462
  ### Added
391
463
 
392
- * Proc#curry, #lambda (thanks Konstantine Haase)
464
+ - Proc#curry, #lambda (thanks Konstantine Haase)
393
465
 
394
466
  ## 2.0.0 - 2010-12-5
395
467
 
@@ -398,123 +470,123 @@ Initiate work on backports of 2.2, 2.3, 2.4
398
470
  Change of major version because of two small changes that are not quite
399
471
  compatible and because the minor version was getting quite high!
400
472
 
401
- * Remove attempt at faking the new method missing. Unless you used
402
- `respond_to_missing` **and**
403
- `method(:some_method_handled_with_method_missing)`, you won't see a
404
- difference, except better performance (see issue #32) and this fixes some
405
- errors (see issue #34)
473
+ - Remove attempt at faking the new method missing. Unless you used
474
+ `respond_to_missing` **and**
475
+ `method(:some_method_handled_with_method_missing)`, you won't see a
476
+ difference, except better performance (see issue #32) and this fixes some
477
+ errors (see issue #34)
406
478
 
407
- * Change behavior of array.flatten(0) to match Ruby 1.9 (i.e. return a dup
408
- of array, instead of array itself)
479
+ - Change behavior of array.flatten(0) to match Ruby 1.9 (i.e. return a dup
480
+ of array, instead of array itself)
409
481
 
410
482
  ## 1.18.0 - 2010-06-19
411
483
 
412
484
  ### Added
413
485
 
414
- * Some features of 1.9.1:
486
+ - Some features of 1.9.1:
415
487
 
416
- * Math#log2, Math#log with base
488
+ - Math#log2, Math#log with base
417
489
 
418
490
  ### Fixed
419
491
 
420
- * Enumerator#each in 1.8.6.
492
+ - Enumerator#each in 1.8.6.
421
493
 
422
494
  ## 1.17.0 - 2010-05-17
423
495
 
424
496
  ### Added
425
497
 
426
- * Some features of 1.9.2:
498
+ - Some features of 1.9.2:
427
499
 
428
- * Array#repeated_combination, #repeated_permutation
500
+ - Array#repeated_combination, #repeated_permutation
429
501
 
430
502
  ## 1.16.2 - 2010-04-11
431
503
 
432
504
  ### Added
433
505
 
434
- * Some features of 1.9.2:
506
+ - Some features of 1.9.2:
435
507
 
436
- * Array#uniq, #uniq! (with block)
437
- * Array#product (with block)
438
- * Dir.home
439
- * Hash#keep_if, select!
440
- * Random (new class)
508
+ - Array#uniq, #uniq! (with block)
509
+ - Array#product (with block)
510
+ - Dir.home
511
+ - Hash#keep_if, select!
512
+ - Random (new class)
441
513
 
442
514
  ## 1.15.0 - 2010-02-23
443
515
 
444
516
  ### Added
445
517
 
446
- * A features of 1.9.2:
518
+ - A features of 1.9.2:
447
519
 
448
- * Object#singleton_class
520
+ - Object#singleton_class
449
521
 
450
522
  ## 1.14.0 - 2010-02-3
451
523
 
452
524
  ### Added
453
525
 
454
- * Some features of 1.9.2:
526
+ - Some features of 1.9.2:
455
527
 
456
- * Array#rotate, rotate!
457
- * Array#keep_if, select!
458
- * Array#sort_by!
459
- * Enumerable#join
460
- * Enumerable#slice_before
461
- * Float::INFINITY, NAN
462
- * MatchData#==
528
+ - Array#rotate, rotate!
529
+ - Array#keep_if, select!
530
+ - Array#sort_by!
531
+ - Enumerable#join
532
+ - Enumerable#slice_before
533
+ - Float::INFINITY, NAN
534
+ - MatchData#==
463
535
 
464
536
  ## 1.13.0 - 2010-01-20
465
537
 
466
538
  ### Added
467
539
 
468
- * Missing for 1.8.7 were
469
- * Array#permutation
470
- * Hash#hash (was only inherited)
471
- * Hash#eql? (was only inherited)
540
+ - Missing for 1.8.7 were
541
+ - Array#permutation
542
+ - Hash#hash (was only inherited)
543
+ - Hash#eql? (was only inherited)
472
544
 
473
545
  ## 1.12.0 - 2009-12-4
474
546
 
475
547
  ### Added
476
548
 
477
- * Finer grain includes (see README) require "backports/1.9" # requires
478
- all ruby backports require "backports/1.9.1" # requires all ruby
479
- backports up to 1.9.1 (but not 1.9.2)
549
+ - Finer grain includes (see README) require "backports/1.9" # requires
550
+ all ruby backports require "backports/1.9.1" # requires all ruby
551
+ backports up to 1.9.1 (but not 1.9.2)
480
552
 
481
- * Backported all builtin methods of 1.8.8 (most of which where moved from
482
- the 1.9 backports)
553
+ - Backported all builtin methods of 1.8.8 (most of which where moved from
554
+ the 1.9 backports)
483
555
 
484
- * Refreshed README
556
+ - Refreshed README
485
557
 
486
558
  ## 1.11.0 - 2009-11-04
487
559
 
488
560
  ### Added
489
561
 
490
- * Enumerable#flat_map / collect_concat (Ruby 1.9)
562
+ - Enumerable#flat_map / collect_concat (Ruby 1.9)
491
563
 
492
- * Object#public_send (Ruby 1.9)
564
+ - Object#public_send (Ruby 1.9)
493
565
 
494
- * Object#public_method (Ruby 1.9)
566
+ - Object#public_method (Ruby 1.9)
495
567
 
496
568
  ## 1.10.0 - 2009-09-29
497
569
 
498
570
  ### Added
499
571
 
500
- * Enumerable#chunk (Ruby 1.9)
572
+ - Enumerable#chunk (Ruby 1.9)
501
573
 
502
- * Kernel#respond_to_missing? (Ruby 1.9)
574
+ - Kernel#respond_to_missing? (Ruby 1.9)
503
575
 
504
- * Completed Process.exec (Ruby 1.8.7)
576
+ - Completed Process.exec (Ruby 1.8.7)
505
577
 
506
578
  ## 1.9.0 - 2009-09-04
507
579
 
508
580
  ### Added
509
581
 
510
- * In Ruby 1.9, most class methods of File accept filenames as String, or
511
- convertible via #to_str or #to_path.
582
+ - In Ruby 1.9, most class methods of File accept filenames as String, or
583
+ convertible via #to_str or #to_path.
512
584
 
513
- * File#to_path is also an alias to File#path. These have been backported.
585
+ - File#to_path is also an alias to File#path. These have been backported.
514
586
 
515
- * File.binread (actually IO.binread)
587
+ - File.binread (actually IO.binread)
516
588
 
517
- * BasicObject available via "require 'backports/basic_object"
589
+ - BasicObject available via "require 'backports/basic_object"
518
590
 
519
591
  ## 1.8.4 - 2009-09-03
520
592
 
@@ -533,9 +605,10 @@ The alias String#lines (Ruby 1.8.7)
533
605
  ### Added
534
606
 
535
607
  Backports can be required selectively:
536
- * backports/1.8.7
537
- * backports/1.9 (which include 1.8.7)
538
- * rails
608
+
609
+ - backports/1.8.7
610
+ - backports/1.9 (which include 1.8.7)
611
+ - rails
539
612
 
540
613
  ## 1.7.1 - 2009-08-20
541
614
 
@@ -570,128 +643,149 @@ it.
570
643
 
571
644
  Completed backport to 1.8.7.
572
645
 
573
- * Array
574
- * `extract_options!`
646
+ - Array
647
+
648
+ - `extract_options!`
649
+
650
+ - Binding
651
+
652
+ - `eval`
653
+
654
+ - Dir
655
+
656
+ - `each`, `foreach`
657
+
658
+ - Enumerator
659
+
660
+ - `new`
661
+ - `with_object`
662
+ - `next`, `rewind`
575
663
 
576
- * Binding
577
- * `eval`
664
+ - Hash
578
665
 
579
- * Dir
580
- * `each`, `foreach`
666
+ - Optional block for `delete_if, each, each_key, each_pair, each_value, reject!, select` (and ENV)
581
667
 
582
- * Enumerator
583
- * `new`
584
- * `with_object`
585
- * `next`, `rewind`
668
+ - Integer
586
669
 
587
- * Hash
588
- * Optional block for `delete_if, each, each_key, each_pair, each_value,
589
- reject!, select` (and ENV)
670
+ - moved stuff out of Fixnum
671
+ - Optional block for `downto`, `times`, `upto`
590
672
 
591
- * Integer
592
- * moved stuff out of Fixnum
593
- * Optional block for `downto`, `times`, `upto`
673
+ - IO
594
674
 
595
- * IO
596
- * Optional block for `each`, `each_line`, `each_byte`, `foreach` (and
597
- ARGF)
675
+ - Optional block for `each`, `each_line`, `each_byte`, `foreach` (and
676
+ ARGF)
598
677
 
599
- * Kernel
600
- * `loop`, `StopIteration`
601
- * +__method__+, +__callee__+
678
+ - Kernel
602
679
 
603
- * Method
604
- * `name`, `owner`, `receiver`
680
+ - `loop`, `StopIteration`
681
+ - +**method**+, +**callee**+
605
682
 
606
- * Module
607
- * `class_exec`, `module_exec`
683
+ - Method
608
684
 
609
- * Numeric
610
- * `step`
685
+ - `name`, `owner`, `receiver`
611
686
 
612
- * Object
613
- * `define_singleton_method`
614
- * `instance_exec`
687
+ - Module
615
688
 
616
- * ObjectSpace
617
- * `each_object`
689
+ - `class_exec`, `module_exec`
618
690
 
619
- * Range
620
- * Optional block for `each`, `step`
691
+ - Numeric
621
692
 
622
- * Regexp
623
- * `union`
693
+ - `step`
624
694
 
625
- * String
626
- * `try_convert`
627
- * `ascii_only?`
628
- * `bytesize`
629
- * `chr`
630
- * `clear`
631
- * `codepoints`, `each_codepoint`
632
- * `stringify_keys`, `stringify_keys!`
633
- * `each`, `each_line`, `each_byte`
634
- * `gsub`
635
- * `upto`
695
+ - Object
636
696
 
637
- * Struct
638
- * `each`, `each_pair`
697
+ - `define_singleton_method`
698
+ - `instance_exec`
639
699
 
640
- * Symbol
641
- * `<=>`, `casecmp`
642
- * `capitalize`, `downcase`, `next`, `succ`, `swapcase`, `upcase`
643
- * `=~, [], empty?, length, match, size`
700
+ - ObjectSpace
644
701
 
645
- * UnboundMethod
646
- * `name`, `owner`
702
+ - `each_object`
703
+
704
+ - Range
705
+
706
+ - Optional block for `each`, `step`
707
+
708
+ - Regexp
709
+
710
+ - `union`
711
+
712
+ - String
713
+
714
+ - `try_convert`
715
+ - `ascii_only?`
716
+ - `bytesize`
717
+ - `chr`
718
+ - `clear`
719
+ - `codepoints`, `each_codepoint`
720
+ - `stringify_keys`, `stringify_keys!`
721
+ - `each`, `each_line`, `each_byte`
722
+ - `gsub`
723
+ - `upto`
724
+
725
+ - Struct
726
+
727
+ - `each`, `each_pair`
728
+
729
+ - Symbol
730
+
731
+ - `<=>`, `casecmp`
732
+ - `capitalize`, `downcase`, `next`, `succ`, `swapcase`, `upcase`
733
+ - `=~, [], empty?, length, match, size`
734
+
735
+ - UnboundMethod
736
+ - `name`, `owner`
647
737
 
648
738
  ## 1.5.0 - 2009-04-24
649
739
 
650
740
  ### Added
651
741
 
652
- * Array (completed)
653
- * `combination`
654
- * `try_convert`
655
- * Optional block for `collect!, :map!, :each, :each_index, :reject,
656
- :reject!, :delete_if`
657
- * `pop`, `shift`
658
- * `product`
742
+ - Array (completed)
743
+
744
+ - `combination`
745
+ - `try_convert`
746
+ - Optional block for `collect!, :map!, :each, :each_index, :reject, :reject!, :delete_if`
747
+ - `pop`, `shift`
748
+ - `product`
749
+
750
+ - Fixnum (completed)
659
751
 
660
- * Fixnum (completed)
661
- * `div`, `fdiv`
662
- * `succ`
663
- * `magnitude`
752
+ - `div`, `fdiv`
753
+ - `succ`
754
+ - `magnitude`
664
755
 
665
- * Enumerable (completed)
666
- * `each_with_object`
667
- * `inject`
668
- * `max_by`, `min_by`, `minmax`, `minmax_by`
669
- * `reduce`
670
- * `to_a`
756
+ - Enumerable (completed)
757
+ - `each_with_object`
758
+ - `inject`
759
+ - `max_by`, `min_by`, `minmax`, `minmax_by`
760
+ - `reduce`
761
+ - `to_a`
671
762
 
672
763
  ## 1.4.0 - 2009-04-21
673
764
 
674
765
  ### Added
675
766
 
676
- * String
677
- * `rpartition`
767
+ - String
678
768
 
679
- * Proc
680
- * `yield`
769
+ - `rpartition`
770
+
771
+ - Proc
772
+ - `yield`
681
773
 
682
774
  ## 1.3.0 - 2009-04-17
683
775
 
684
776
  ### Added
685
777
 
686
- * Enumerable
687
- * `none?`
778
+ - Enumerable
779
+
780
+ - `none?`
688
781
 
689
- * Array
690
- * `sample`, `shuffle`, `shuffle!`
782
+ - Array
691
783
 
692
- * String
693
- * `each_char`, `chars`
694
- * `partition`
784
+ - `sample`, `shuffle`, `shuffle!`
785
+
786
+ - String
787
+ - `each_char`, `chars`
788
+ - `partition`
695
789
 
696
790
  Tests and fixes for `String#start_with?` and `String#end_with?`
697
791
 
@@ -699,39 +793,42 @@ Tests and fixes for `String#start_with?` and `String#end_with?`
699
793
 
700
794
  ### Added
701
795
 
702
- * Array
703
- * `reverse_each`
704
- * `cycle`
796
+ - Array
797
+
798
+ - `reverse_each`
799
+ - `cycle`
705
800
 
706
- * Enumerable
707
- * `reverse_each`
708
- * `each_slice`, `each_cons`
709
- * `count`
710
- * `cycle`
711
- * `group_by`
801
+ - Enumerable
712
802
 
713
- * Hash
714
- * `default_proc=`
803
+ - `reverse_each`
804
+ - `each_slice`, `each_cons`
805
+ - `count`
806
+ - `cycle`
807
+ - `group_by`
808
+
809
+ - Hash
810
+ - `default_proc=`
715
811
 
716
812
  ## 1.1.0 - 2009-04-11
717
813
 
718
814
  ### Added
719
815
 
720
- * Array
721
- * `flatten`, `flatten!`
722
- * `find_index`, `index`
816
+ - Array
817
+
818
+ - `flatten`, `flatten!`
819
+ - `find_index`, `index`
723
820
 
724
- * Hash
725
- * `reverse_merge`, `reverse_merge!`
821
+ - Hash
822
+ - `reverse_merge`, `reverse_merge!`
726
823
 
727
824
  ## 1.0.0 - 2009-04-2
728
825
 
729
- * Initial release.
826
+ - Initial release.
730
827
 
731
828
  ## Notes
732
829
 
733
830
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
734
831
 
735
- [Unreleased]: https://github.com/marcandre/backports/compare/v3.16.0...HEAD
832
+ [unreleased]: https://github.com/marcandre/backports/compare/v3.16.0...HEAD
736
833
  [3.16.0]: https://github.com/marcandre/backports/compare/v3.15.0...v3.16.0
737
834
  [3.15.0]: https://github.com/marcandre/backports/compare/v3.14.0...v3.15.0