[#55794] how to run ruby tests (backporting fix for cve-2013-4073) — Jordi Massaguer Pla <jmassaguerpla@...>
Hi ruby core developers,
4 messages
2013/07/04
[#55799] Re: how to run ruby tests (backporting fix for cve-2013-4073)
— V咜 Ondruch <v.ondruch@...>
2013/07/04
Dne 4.7.2013 13:19, Jordi Massaguer Pla napsal(a):
[#55853] ruby 1.9.3 p448 breaks ABI — V咜 Ondruch <v.ondruch@...>
Hi,
13 messages
2013/07/08
[#55854] Re: ruby 1.9.3 p448 breaks ABI
— Yorick Peterse <yorickpeterse@...>
2013/07/08
Out of curiosity, does this tool take into account deprecated/internal
[#55860] Re: ruby 1.9.3 p448 breaks ABI
— V咜 Ondruch <v.ondruch@...>
2013/07/08
Dne 8.7.2013 17:03, Yorick Peterse napsal(a):
[#55861] Re: ruby 1.9.3 p448 breaks ABI
— KOSAKI Motohiro <kosaki.motohiro@...>
2013/07/08
(7/8/13 5:36 PM), V咜 Ondruch wrote:
[#55864] Re: ruby 1.9.3 p448 breaks ABI
— Jon <jon.forums@...>
2013/07/08
On Tue, 9 Jul 2013 06:50:16 +0900
[#55886] [ruby-trunk - Bug #8616][Open] Process.daemon messes up threads — "tenderlovemaking (Aaron Patterson)" <aaron@...>
10 messages
2013/07/09
[#55976] [ruby-trunk - Feature #8629][Open] Method#parameters should include the default value — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>
13 messages
2013/07/12
[#55984] [ruby-trunk - Bug #8630][Open] Transcoding high-bit bytes from ASCII-8BIT to a text encoding should be :invalid, not :undef — "headius (Charles Nutter)" <headius@...>
5 messages
2013/07/12
[#55986] Re: [ruby-trunk - Bug #8630][Open] Transcoding high-bit bytes from ASCII-8BIT to a text encoding should be :invalid, not :undef
— Tanaka Akira <akr@...>
2013/07/12
2013/7/13 headius (Charles Nutter) <headius@headius.com>:
[#55988] Next developer's meeting — Aaron Patterson <tenderlove@...>
Hi,
4 messages
2013/07/13
[#56001] [CommonRuby - Feature #8635][Open] attr_accessor with default block — "judofyr (Magnus Holm)" <judofyr@...>
5 messages
2013/07/14
[#56004] [ruby-trunk - Feature #8636][Open] Documentation hosting on ruby-lang.org — "zzak (Zachary Scott)" <e@...>
18 messages
2013/07/15
[#56005] [ruby-trunk - Feature #8637][Open] I18n documentation — "zzak (Zachary Scott)" <e@...>
5 messages
2013/07/15
[#56009] [ruby-trunk - Feature #8637] I18n documentation
— "kou (Kouhei Sutou)" <kou@...>
2013/07/15
[#56010] [ruby-trunk - Feature #8637] I18n documentation
— "zzak (Zachary Scott)" <e@...>
2013/07/15
[#56019] [ruby-trunk - Feature #8639][Open] Add Queue#each — "avdi (Avdi Grimm)" <avdi@...>
15 messages
2013/07/15
[#56020] [ruby-trunk - Feature #8639] Add Queue#each
— "rkh (Konstantin Haase)" <me@...>
2013/07/15
[#56029] Re: [ruby-trunk - Feature #8639][Open] Add Queue#each
— Alex Young <alex@...>
2013/07/15
On Tue, 2013-07-16 at 00:44 +0900, avdi (Avdi Grimm) wrote:
[#56027] [CommonRuby - Feature #8640][Open] Add Time#elapsed to return nanoseconds since creation — "tenderlovemaking (Aaron Patterson)" <aaron@...>
24 messages
2013/07/15
[#56037] [CommonRuby - Feature #8640] Add Time#elapsed to return nanoseconds since creation
— duerst (Martin Dürst) <duerst@...>
2013/07/16
[#56068] [CommonRuby - Feature #8640] Add Time#elapsed to return nanoseconds since creation
— "phluid61 (Matthew Kerwin)" <matthew@...>
2013/07/17
[#56070] Re: [CommonRuby - Feature #8640] Add Time#elapsed to return nanoseconds since creation
— Aaron Patterson <tenderlove@...>
2013/07/18
On Thu, Jul 18, 2013 at 07:59:34AM +0900, phluid61 (Matthew Kerwin) wrote:
[#56041] [CommonRuby - Feature #8643][Open] Add Binding.from_hash — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>
26 messages
2013/07/16
[#56087] [ruby-trunk - Feature #8658][Open] Process.clock_gettime — "akr (Akira Tanaka)" <akr@...>
23 messages
2013/07/19
[#56092] [ruby-trunk - Feature #8658] Process.clock_gettime
— "akr (Akira Tanaka)" <akr@...>
2013/07/20
[#56132] Re: [ruby-trunk - Feature #8658] Process.clock_gettime
— KOSAKI Motohiro <kosaki.motohiro@...>
2013/07/23
(7/20/13 6:39 AM), akr (Akira Tanaka) wrote:
[#56135] Re: [ruby-trunk - Feature #8658] Process.clock_gettime
— Tanaka Akira <akr@...>
2013/07/24
2013/7/24 KOSAKI Motohiro <kosaki.motohiro@gmail.com>:
[#56096] [CommonRuby - Feature #8661][Open] Add option to print backstrace in reverse order(stack frames first & error last) — "gary4gar (Gaurish Sharma)" <gary4gar@...>
18 messages
2013/07/20
[#56103] Ruby Developer Meeting Japan 2013-07-27 — "NARUSE, Yui" <naruse@...>
Hi,
6 messages
2013/07/21
[#56228] [ruby-trunk - Bug #8697][Open] Fixnum complement operator issue — "torimus (Torimus GL)" <torimus.gl@...>
8 messages
2013/07/27
[#56247] [ruby-trunk - Feature #8700][Open] Integer#bitsize (actually Fixnum#bitsize and Bignum#bitsize) — "akr (Akira Tanaka)" <akr@...>
8 messages
2013/07/28
[#56270] [ruby-trunk - Feature #8707][Open] Hash#reverse_each — "Glass_saga (Masaki Matsushita)" <glass.saga@...>
8 messages
2013/07/30
[#56276] [ruby-trunk - Feature #8707][Feedback] Hash#reverse_each
— "matz (Yukihiro Matsumoto)" <matz@...>
2013/07/31
[ruby-core:56249] [ruby-trunk - Feature #8700] Integer#bitsize (actually Fixnum#bitsize and Bignum#bitsize)
From:
"headius (Charles Nutter)" <headius@...>
Date:
2013-07-28 23:43:56 UTC
List:
ruby-core #56249
Issue #8700 has been updated by headius (Charles Nutter).
+1.
"bitlength" seems more in line with other platforms. Also, Fixnum#size represents octet size, not bit size.
For zero, bitlength == 0, always.
For negative numbers...we either decide to always return the bit length for a specific representation (two's complement or something else) or we provide a way to also query the representation. I prefer the former.
----------------------------------------
Feature #8700: Integer#bitsize (actually Fixnum#bitsize and Bignum#bitsize)
https://bugs.ruby-lang.org/issues/8700#change-40742
Author: akr (Akira Tanaka)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
How about adding Integer#bitsize (actually Fixnum#bitsize and Bignum#bitsize)?
Integer#bitsize returns the position of the most significant bit in the absolute value.
(The position of the least significant bit is 1.)
It returns 0 if no bit set (i.e. the value 0).
Mathematically, n.bitsize is ceil(log2(abs(n)+1)).
Sometimes we want to know the size of a integer.
* Determine the size of an integer in some format.
Although there are various formats, bitsize is a key property to determine the result size.
Several examples:
* If a format is 4 bytes for absolute value, it overflows if 32 <= n.bitsize.
* If a format is 4 bytes for sign bit with absolute value, it overflows if 31 <= n.bitsize.
* If a format is 4 bytes for 2's complement format, it overflow if 31 <= n.bitsize && n != -2**31.
* BER-compressed integer needs (n.bitsize+6)/7 bytes when n > 0.
BER-compressed integer is an example of VLQ.
http://en.wikipedia.org/wiki/Variable-length_quantity
* Elias gamma coding needs 2*n.bitsize-1 bits.
https://en.wikipedia.org/wiki/Elias_gamma_coding
* Elias delta coding needs 2*n.bitsize.bitsize+n.bitsize-2 bits.
https://en.wikipedia.org/wiki/Elias_delta_coding
* bitsize may be used to estimate the time or space cost of an algorithm.
For example, the result size of integer multiplication, x*y, is x.bitsize + y.bitsize.
The number of comparisons of binary search is sorted_array.length.bitsize, etc.
This is because n.bitsize is an approximation of log2(abs(n)).
So Math.log2 can be used for this purpose too.
However bitsize may be preferable if floating point error is not desirable.
There are several software which has similar feature.
* Python 3.1 has int.bit_length().
http://docs.python.org/dev/library/stdtypes.html
http://docs.python.org/3.1/whatsnew/3.1.html
http://bugs.python.org/issue3439
* Java java.math.BigInteger has bitLength() method.
http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#bitLength()
* Mathematica has BitLength.
http://reference.wolfram.com/mathematica/ref/BitLength.html
* GMP has mpz_sizeinbase(n, base).
http://gmplib.org/manual/Miscellaneous-Integer-Functions.html
* NetBSD 5.0 has ilog2().
http://netbsd.gw.com/cgi-bin/man-cgi?ilog2++NetBSD-6.0
I think there are two concerns for this issue.
* method name
* behavior for zero and negative number
I named the method as bitsize, mainly because
there is Fixnum#size and Bignum#size.
However I'm open for other names such as:
* bitlength
* numbits
* ilog2
* maxbit
Some names may suggest different behavior, though.
The behavior for zero and negative number is not trivial.
Python adopts ceil(log2(abs(n)+1)) but
Java and Mathematica adopts ceil(log2(n < 0 ? -n : n+1)).
The difference is absolute number v.s. 2's complement number.
Some people may prefer ilog2, which name suggests ilog2(0) raise an error.
I choose ceil(log2(abs(n)+1)). (i.e. absolute number, same as Python).
I think absolute number is easier to understand than 2's complement for many people.
I attached the implementation as bitsize.patch.
The patch implements both Bignum#bitsize and Fixnum#bitsize in bignum.c.
It is because Fixnum#bitsize uses bitsize macro and it is defined in bignum.c.
Maybe, the macro should be moved to internal.h and the implementation of
Fixnum#bitsize should be moved to numeric.c.
Any comments?
--
http://bugs.ruby-lang.org/