backports 3.6.4 → 3.6.5

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9aa6079dcd8824dcc4ed7d89341ba81ae14ee1f2
4
+ data.tar.gz: 25c6fa54364e18de597fadf27de457c591ce6d17
5
+ SHA512:
6
+ metadata.gz: 4e5c84c312e0716a1283d93277d04ee8de3d62527c95eb5fa83a7a7c6b99ba05a832df0d696675597a502b8b41b63a01423af484b1f2ca135a9654ab0f54db85
7
+ data.tar.gz: 688e1bd667a6e5486e1e11a681e5e18b8004396af20c56c6b1e5a1c5258710b5a5b2562afd514e287b9eec7d8ba9ea104e21e9775984a02dd3829a3403ebb618
@@ -7,7 +7,7 @@ GIT
7
7
  PATH
8
8
  remote: .
9
9
  specs:
10
- backports (3.6.4)
10
+ backports (3.6.5)
11
11
 
12
12
  GEM
13
13
  remote: http://rubygems.org/
@@ -11,6 +11,7 @@ Gem::Specification.new do |gem|
11
11
  gem.description = %q{Essential backports that enable many of the nice features of Ruby 1.8.7 up to 2.1.0 for earlier versions.}
12
12
  gem.summary = %q{Backports of Ruby features for older Ruby.}
13
13
  gem.homepage = "http://github.com/marcandre/backports"
14
+ gem.license = "MIT"
14
15
 
15
16
  gem.files = `git ls-files`.split($/)
16
17
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -2,14 +2,16 @@ unless Bignum.method_defined? :bit_length
2
2
  require 'backports/2.0.0/range/bsearch'
3
3
  class Bignum
4
4
  def bit_length
5
- n = 8 * (size - 42.size)
5
+ # We use the fact that bignums use the minimum number of bytes necessary
6
+ # So we have (size - 1) * 8 < bit_length <= size * 8
7
+ n = 8 * (size - 1)
6
8
  smaller = self >> n
7
9
  if smaller >= 0
8
10
  smaller += 1
9
11
  else
10
12
  smaller = -smaller
11
13
  end
12
- n + (0...8 * 42.size).bsearch{|i| smaller <= (1 << i) }
14
+ n + (1..8).bsearch{|i| smaller <= (1 << i) }
13
15
  end
14
16
  end
15
17
  end
@@ -1,3 +1,3 @@
1
1
  module Backports
2
- VERSION = "3.6.4" unless const_defined? :VERSION # the guard is against a redefinition warning that happens on Travis
2
+ VERSION = "3.6.5" unless const_defined? :VERSION # the guard is against a redefinition warning that happens on Travis
3
3
  end
@@ -0,0 +1,11 @@
1
+ require './test/test_helper'
2
+
3
+ class BitLengthTest < Test::Unit::TestCase
4
+ def test_big_num # Issue #95
5
+ require 'backports/2.1.0/bignum/bit_length'
6
+ r = 91178362617816881166579720176198217549251305244541026425489888079462471837807
7
+ assert_equal 256, r.bit_length
8
+ r = 57896044618658097711785492504343953926634992332820282019728792003956564819968
9
+ assert_equal 256, r.bit_length
10
+ end
11
+ end
metadata CHANGED
@@ -1,38 +1,28 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: backports
3
- version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease:
6
- segments:
7
- - 3
8
- - 6
9
- - 4
10
- version: 3.6.4
3
+ version: !ruby/object:Gem::Version
4
+ version: 3.6.5
11
5
  platform: ruby
12
- authors:
13
- - "Marc-Andr\xC3\xA9 Lafortune"
6
+ authors:
7
+ - Marc-André Lafortune
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2014-11-13 00:00:00 Z
11
+ date: 2015-07-13 00:00:00.000000000 Z
19
12
  dependencies: []
20
-
21
- description: Essential backports that enable many of the nice features of Ruby 1.8.7 up to 2.1.0 for earlier versions.
22
- email:
13
+ description: Essential backports that enable many of the nice features of Ruby 1.8.7
14
+ up to 2.1.0 for earlier versions.
15
+ email:
23
16
  - github@marc-andre.ca
24
17
  executables: []
25
-
26
18
  extensions: []
27
-
28
19
  extra_rdoc_files: []
29
-
30
- files:
31
- - .document
32
- - .gitignore
33
- - .gitmodules
34
- - .irbrc
35
- - .travis.yml
20
+ files:
21
+ - ".document"
22
+ - ".gitignore"
23
+ - ".gitmodules"
24
+ - ".irbrc"
25
+ - ".travis.yml"
36
26
  - CHANGELOG.rdoc
37
27
  - Gemfile
38
28
  - Gemfile.lock
@@ -560,43 +550,35 @@ files:
560
550
  - spec/tags/1.9.2/core/io/write_spec.rb
561
551
  - test/README
562
552
  - test/_backport_guards_test.rb
553
+ - test/bit_length_test.rb
563
554
  - test/lazy_test.rb
564
555
  - test/socket_interaction_test.rb
565
556
  - test/test_helper.rb
566
557
  homepage: http://github.com/marcandre/backports
567
- licenses: []
568
-
558
+ licenses:
559
+ - MIT
560
+ metadata: {}
569
561
  post_install_message:
570
562
  rdoc_options: []
571
-
572
- require_paths:
563
+ require_paths:
573
564
  - lib
574
- required_ruby_version: !ruby/object:Gem::Requirement
575
- none: false
576
- requirements:
565
+ required_ruby_version: !ruby/object:Gem::Requirement
566
+ requirements:
577
567
  - - ">="
578
- - !ruby/object:Gem::Version
579
- hash: 3
580
- segments:
581
- - 0
582
- version: "0"
583
- required_rubygems_version: !ruby/object:Gem::Requirement
584
- none: false
585
- requirements:
568
+ - !ruby/object:Gem::Version
569
+ version: '0'
570
+ required_rubygems_version: !ruby/object:Gem::Requirement
571
+ requirements:
586
572
  - - ">="
587
- - !ruby/object:Gem::Version
588
- hash: 3
589
- segments:
590
- - 0
591
- version: "0"
573
+ - !ruby/object:Gem::Version
574
+ version: '0'
592
575
  requirements: []
593
-
594
576
  rubyforge_project:
595
- rubygems_version: 1.8.25
577
+ rubygems_version: 2.4.5
596
578
  signing_key:
597
- specification_version: 3
579
+ specification_version: 4
598
580
  summary: Backports of Ruby features for older Ruby.
599
- test_files:
581
+ test_files:
600
582
  - spec/tags/1.8.6/core/argf/each_line_spec.rb
601
583
  - spec/tags/1.8.6/core/argf/each_spec.rb
602
584
  - spec/tags/1.8.6/core/argf/lines_spec.rb
@@ -711,6 +693,7 @@ test_files:
711
693
  - spec/tags/1.9.2/core/io/write_spec.rb
712
694
  - test/README
713
695
  - test/_backport_guards_test.rb
696
+ - test/bit_length_test.rb
714
697
  - test/lazy_test.rb
715
698
  - test/socket_interaction_test.rb
716
699
  - test/test_helper.rb