[#57574] [ruby-trunk - Feature #8976][Open] file-scope freeze_string directive — "akr (Akira Tanaka)" <akr@...>
70 messages
2013/10/02
[#57579] [ruby-trunk - Feature #8977][Open] String#frozen that takes advantage of the deduping — "sam.saffron (Sam Saffron)" <sam.saffron@...>
25 messages
2013/10/02
[#57633] [ruby-trunk - Bug #8983][Open] [PATCH] GC.stat[:heap_free_num] returns number of unused slots on heap — "tmm1 (Aman Gupta)" <ruby@...1.net>
8 messages
2013/10/03
[#57667] [ruby-trunk - Feature #8985][Open] xwillfree - promise to free memory — "funny_falcon (Yura Sokolov)" <funny.falcon@...>
5 messages
2013/10/04
[#57679] [ruby-trunk - Feature #8987][Open] map/collect extension which handles arguments — "sowieso (So Wieso)" <sowieso@...>
16 messages
2013/10/05
[#57680] [ruby-trunk - Feature #8987] map/collect extension which handles arguments
— "sawa (Tsuyoshi Sawada)" <sawadatsuyoshi@...>
2013/10/05
[#57693] [PATCH 0/2] Fix strptime '%s' — Felipe Contreras <felipe.contreras@...>
Hi,
7 messages
2013/10/07
[#57694] [PATCH 1/2] time: fix strptime '%s'
— Felipe Contreras <felipe.contreras@...>
2013/10/07
'%s' is meant to imply UTC, however:
[#57703] Re: [PATCH 1/2] time: fix strptime '%s'
— Tanaka Akira <akr@...>
2013/10/07
2013/10/7 Felipe Contreras <felipe.contreras@gmail.com>:
[#57711] Re: [PATCH 1/2] time: fix strptime '%s'
— Felipe Contreras <felipe.contreras@...>
2013/10/07
On Mon, Oct 7, 2013 at 10:17 AM, Tanaka Akira <akr@fsij.org> wrote:
[#57705] [ruby-trunk - Feature #8992][Open] Use String#freeze and compiler tricks to replace "str"f suffix — "headius (Charles Nutter)" <headius@...>
43 messages
2013/10/07
[#57840] [ruby-trunk - Feature #8992] Use String#freeze and compiler tricks to replace "str"f suffix
— "sam.saffron (Sam Saffron)" <sam.saffron@...>
2013/10/13
[#57727] [ruby-trunk - Feature #8998][Open] string keys for hash literals should use fstrings — "normalperson (Eric Wong)" <normalperson@...>
17 messages
2013/10/08
[#57743] [ruby-trunk - Feature #8998] string keys for hash literals should use fstrings
— "normalperson (Eric Wong)" <normalperson@...>
2013/10/08
[#57756] Re: [ruby-trunk - Feature #8998] string keys for hash literals should use fstrings
— Eric Wong <normalperson@...>
2013/10/09
I think my failed patch exposes a bug with lazy sweep + rb_fstring.
[#57771] [ruby-trunk - Bug #9008][Open] TestProcess#test_clock_getres_constants and TestProcess#test_clock_gettime_constants fails on ARM — "vo.x (Vit Ondruch)" <v.ondruch@...>
15 messages
2013/10/09
[#57852] [ruby-trunk - Bug #9008] TestProcess#test_clock_getres_constants and TestProcess#test_clock_gettime_constants fails on ARM
— "kosaki (Motohiro KOSAKI)" <kosaki.motohiro@...>
2013/10/14
[#57884] [ruby-trunk - Bug #9008] TestProcess#test_clock_getres_constants and TestProcess#test_clock_gettime_constants fails on ARM
— "kosaki (Motohiro KOSAKI)" <kosaki.motohiro@...>
2013/10/15
[#57794] [ruby-trunk - Bug #9011][Open] rb_fstring unsafe to use in general case — "normalperson (Eric Wong)" <normalperson@...>
4 messages
2013/10/10
[#57812] [ruby-trunk - Bug #9013][Open] Crash on start — "lemonez (Dmitry Popov)" <lemon@...>
6 messages
2013/10/10
[#57849] [ruby-trunk - Feature #9020][Open] Net::HTTPResponse predicate/query methods — "timcraft (Tim Craft)" <redmine@...>
7 messages
2013/10/14
[#57862] [CommonRuby - Feature #9023][Open] Array#tail — "fuadksd (Fuad Saud)" <fuadksd@...>
9 messages
2013/10/15
[#57888] [ruby-trunk - Feature #9025][Open] Clarify the error message when calling a method with the wrong number of arguments — Nerian (Gonzalo Rodríguez) <siotopo@...>
11 messages
2013/10/15
[#57913] cxxflags for C++ library bindings not working for Ruby 1.9.x and 2.0? — Stefan Salewski <mail@...>
Dear Sirs,
4 messages
2013/10/17
[#57916] Re: cxxflags for C++ library bindings not working for Ruby 1.9.x and 2.0?
— Nobuyoshi Nakada <nobu@...>
2013/10/17
(13/10/17 22:03), Stefan Salewski wrote:
[#57950] [ruby-trunk - Bug #9039][Open] [PATCH] socket: avoid unnecessary ppoll/select on Linux (part 3) — "normalperson (Eric Wong)" <normalperson@...>
8 messages
2013/10/21
[#57951] [ruby-trunk - Bug #9040][Open] Readline duplicate file descriptors but doesn't close them — "eweb (Eamonn Webster)" <eamonn.webster@...>
8 messages
2013/10/21
[#57986] [ruby-trunk - Bug #9040] Readline duplicate file descriptors but doesn't close them
— "akr (Akira Tanaka)" <akr@...>
2013/10/23
[#57967] [ruby-trunk - Feature #9043][Open] Add String#f method as shortcut for #freeze — "headius (Charles Nutter)" <headius@...>
8 messages
2013/10/22
[#58007] [ruby-trunk - Feature #9049][Open] Shorthands (a:b, *) for inclusive indexing — "mohawkjohn (John Woods)" <john.o.woods@...>
25 messages
2013/10/24
[#58011] [ruby-trunk - Feature #9049] Shorthands (a:b, *) for inclusive indexing
— "boris_stitnicky (Boris Stitnicky)" <boris@...>
2013/10/24
[#58012] Re: [ruby-trunk - Feature #9049] Shorthands (a:b, *) for inclusive indexing
— David MacMahon <davidm@...>
2013/10/24
[#58013] Re: [ruby-trunk - Feature #9049] Shorthands (a:b, *) for inclusive indexing
— Fuad Saud <fuadksd@...>
2013/10/24
How is a:b better than a..b? two dots are straightforward, unambiguous, well known.
[#58080] [ruby-trunk - Feature #9064][Open] Add support for packages, like in Java — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>
23 messages
2013/10/30
[#58083] [ruby-trunk - Feature #9064] Add support for packages, like in Java
— "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>
2013/10/30
[#58114] [ruby-trunk - Feature #9068][Open] [PATCH (trivial)] thread.c: reduce rb_mutex_t size by 8 bytes on x86_64 — "normalperson (Eric Wong)" <normalperson@...>
5 messages
2013/10/31
[#58115] Re: [ruby-trunk - Feature #9068][Open] [PATCH (trivial)] thread.c: reduce rb_mutex_t size by 8 bytes on x86_64
— KOSAKI Motohiro <kosaki.motohiro@...>
2013/10/31
(10/31/13 3:42 PM), normalperson (Eric Wong) wrote:
[#58116] Re: [ruby-trunk - Feature #9068][Open] [PATCH (trivial)] thread.c: reduce rb_mutex_t size by 8 bytes on x86_64
— Eric Wong <normalperson@...>
2013/10/31
KOSAKI Motohiro <kosaki.motohiro@gmail.com> wrote:
[ruby-core:58050] [ruby-trunk - Bug #8982] NoMethodError#message produces surprising output when #inspect is defined on an anonymous class
From:
"myronmarston (Myron Marston)" <myron.marston@...>
Date:
2013-10-27 02:59:48 UTC
List:
ruby-core #58050
Issue #8982 has been updated by myronmarston (Myron Marston).
nobu (Nobuyoshi Nakada) wrote:
> myronmarston (Myron Marston) wrote:
> > * It matters whether or not the first character in my `inspect` is a `#`. If it's not, ruby appends the class's `#inspect` output to it.
>
> '#' at the beginning is assumed the string is same as Object#inspect, otherwise its class name is appended since the string may not represent the class.
Ruby itself provides many classes whose definition of `inspect` does not include `#`. Why cannot it not allow me to do the same? Also, `#` at the beginning of the string being taken as a sign that it's the same string as `Object#inspect` would produce seems incredibly broken. And I'm not sure why you care? Why can't I define how my class is represented as a string? Isn't that the point of `inspect`?
> > * It matters how long my `inspect` string is. If it's less than 66 characters, it's used; if it's more than 65, it's discarded, and the default anonymous `#inspect` is used instead.
>
> If the `inspect` string is too long, just ignore it and use default conersion method
Many of ruby's built-in classes can produce longer inspect strings than this. (As an example:`([1] * 1000).inspect`). Ignoring what a user has defined for `inspect` seems incredibly surprising and would be considered a bug by every ruby programmer I know (well, every ruby programmer I've shown this issue to, at least).
IMO, Ruby should either retain complete control over how objects represent themselves strings, or allow users to define how objects are represented as strings...but giving us the illusion that we can define how objects represent themselves as strings, and then not actually allowing that, is the worst possible outcome.
And this isn't just theoretical: I spent a couple hours a few weeks ago scratching my head, trying to figure out why in the world my object's `inspect` wasn't working.
----------------------------------------
Bug #8982: NoMethodError#message produces surprising output when #inspect is defined on an anonymous class
https://bugs.ruby-lang.org/issues/8982#change-42631
Author: myronmarston (Myron Marston)
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN
=begin
Given the following script:
def raise_no_method_error_for_anonymous_class_with_inspect(&block)
klass = Class.new do
define_method(:inspect, &block)
end
begin
instance = klass.new
puts "#inspect output: #{instance.inspect} (#{instance.inspect.length} chars)"
instance.undefined_method
rescue NoMethodError => e
puts e.message
end
puts
end
raise_no_method_error_for_anonymous_class_with_inspect do
"#<MyAnonymousClass>"
end
raise_no_method_error_for_anonymous_class_with_inspect do
"<MyAnonymousClass>"
end
raise_no_method_error_for_anonymous_class_with_inspect do
"#<MyAnonymousClass #{'a' * 45}>"
end
raise_no_method_error_for_anonymous_class_with_inspect do
"#<MyAnonymousClass #{'a' * 46}>"
end
It produces the following output:
#inspect output: #<MyAnonymousClass> (19 chars)
undefined method `undefined_method' for #<MyAnonymousClass>
#inspect output: <MyAnonymousClass> (18 chars)
undefined method `undefined_method' for <MyAnonymousClass>:#<Class:0x1017270e8>
#inspect output: #<MyAnonymousClass aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa> (65 chars)
undefined method `undefined_method' for #<MyAnonymousClass aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>
#inspect output: #<MyAnonymousClass aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa> (66 chars)
undefined method `undefined_method' for #<#<Class:0x1017266e8>:0x101726698>
There are two surprising things here:
* It matters whether or not the first character in my `inspect` is a `#`. If it's not, ruby appends the class's `#inspect` output to it.
* It matters how long my `inspect` string is. If it's less than 66 characters, it's used; if it's more than 65, it's discarded, and the default anonymous `#inspect` is used instead.
Both of these things are extremely surprising and seem very arbitrary and inconsistent.
I brought this up on ruby parley and @charliesome was kind enough to point me to the code that's the source of this issue:
((<error.c#L1091-1104|URL:https://github.com/ruby/ruby/blob/870dc20922d1ab0b628d24e64e971e8eb77ecd61/error.c#L1091-1104>))
So it looks intentional, but I think this is a bug.
=end
--
http://bugs.ruby-lang.org/