[#39810] 2.0 feature questionnaire — SASADA Koichi <ko1@...>

I made a questionnaire "What do you want to introduce in 2.0?" in my

59 messages 2011/10/01
[#39822] Re: 2.0 feature questionnaire — Jeremy Kemper <jeremy@...> 2011/10/02

2011/10/1 SASADA Koichi <ko1@atdot.net>:

[#39827] Re: 2.0 feature questionnaire — Yukihiro Matsumoto <matz@...> 2011/10/02

Hi,

[#40324] Re: 2.0 feature questionnaire — Charles Oliver Nutter <headius@...> 2011/10/25

2011/10/1 SASADA Koichi <ko1@atdot.net>:

[#39823] Discussion results — SASADA Koichi <ko1@...>

Hi,

34 messages 2011/10/02
[#39840] Re: Discussion results — Intransition <transfire@...> 2011/10/02

I did not have the fortune of attending the discussion, but I would

[#39844] Re: Discussion results — Yukihiro Matsumoto <matz@...> 2011/10/02

Hi,

[#39851] Re: Discussion results (here documents with indents) — "Martin J. Dürst" <duerst@...> 2011/10/03

Hello Matz,

[#39862] Re: Discussion results (here documents with indents) — Yusuke Endoh <mame@...> 2011/10/03

Hello,

[#39874] Re: Discussion results (here documents with indents) — Trans <transfire@...> 2011/10/03

On Mon, Oct 3, 2011 at 8:16 AM, Yusuke Endoh <mame@tsg.ne.jp> wrote:

[#39915] [Ruby 1.9 - Feature #5400][Open] Remove flip-flops in 2.0 — Magnus Holm <judofyr@...>

29 messages 2011/10/04

[#39957] [Ruby 1.9 - Bug #5407][Open] Cannot build ruby-1.9.3-rc1 with TDM-GCC 4.6.1 on Windows XP SP3 — Heesob Park <phasis@...>

11 messages 2011/10/05

[#39993] [Ruby 1.9 - Feature #2348] RBTree Should be Added to the Standard Library — David Graham <david.malcom.graham@...>

10 messages 2011/10/06

[#40037] [Ruby 1.9 - Bug #5422][Open] File.fnmatch != Dir.glob # {no,sets} — Suraj Kurapati <sunaku@...>

14 messages 2011/10/07

[#40073] [Ruby 1.9 - Feature #5427][Open] Not complex patch to improve `require` time (load.c) — Yura Sokolov <funny.falcon@...>

31 messages 2011/10/09

[#40090] [Ruby 1.9 - Bug #5433][Open] PTY.spawn Kernel panic on macos lion — Gamaliel Toro <argami@...>

14 messages 2011/10/10

[#40188] [Ruby 2.0 - Feature #5454] keyword arguments — Yukihiro Matsumoto <matz@...>

16 messages 2011/10/17
[#40189] Re: [Ruby 2.0 - Feature #5454] keyword arguments — Evan Phoenix <evan@...> 2011/10/17

This looks very interesting! Would someone be willing to translate to english? I've only got a vague idea of what is being discussed.

[#40191] Re: [Ruby 2.0 - Feature #5454] keyword arguments — Yutaka Hara <yutaka.hara@...> 2011/10/18

Hi,

[#40192] Re: [Ruby 2.0 - Feature #5454] keyword arguments — Yukihiro Matsumoto <matz@...> 2011/10/18

Hi,

[#40259] Counseling — Perry Smith <pedzsan@...>

Ruby and I are back in counseling... Its always the same thing with her. "I'm throwing an Encoding exception!!!"

21 messages 2011/10/21
[#40263] Re: Counseling — "Haase, Konstantin" <Konstantin.Haase@...> 2011/10/21

What's your $LC_CTYPE? What OS are you on?

[#40264] Re: Counseling — Gon軋lo Silva <goncalossilva@...> 2011/10/21

Hi all,

[#40266] Re: Counseling — Bill Kelly <billk@...> 2011/10/21

Gon軋lo Silva wrote:

[#40267] Re: Counseling — Perry Smith <pedzsan@...> 2011/10/22

[#40268] Re: Counseling — Eric Hodel <drbrain@...7.net> 2011/10/22

On Oct 21, 2011, at 9:43 AM, Perry Smith wrote:

[#40269] Re: Counseling — Joshua Ballanco <jballanc@...> 2011/10/22

To try and cut to the core of the issue: in Ruby 1.8 it was common practice to use the String class to represent both "proper strings" as well as a "bag-o-bytes". In Ruby 1.9, you can only properly use the String class to represent "proper strings". For a "bag-o-bytes" we're left with Array, but there are times when Array is not the right abstraction (e.g. reading data from a socket, identifying a start and stop token, and writing the bytes between to a file on disk). Also, the "BINARY" encoding is not the right abstraction, because you still have an object which will worry about encodings and, due to Ruby always trying to do "the right thing", bugs can be very difficult to track down. Consider:

[#40271] Can rubygems save us from "binary-compatibility hell"? — Yusuke Endoh <mame@...>

Hello, rubygems developers --

17 messages 2011/10/22

[#40290] [ruby-trunk - Feature #5474][Assigned] keyword argument — Yusuke Endoh <mame@...>

36 messages 2011/10/23
[#40414] Re: [ruby-trunk - Feature #5474][Assigned] keyword argument — Charles Oliver Nutter <headius@...> 2011/10/26

More refinement below. I think we're on a good path here.

[#40416] Re: [ruby-trunk - Feature #5474][Assigned] keyword argument — Yukihiro Matsumoto <matz@...> 2011/10/26

Hi,

[#40418] Re: [ruby-trunk - Feature #5474][Assigned] keyword argument — Joshua Ballanco <jballanc@...> 2011/10/26

On Wed, Oct 26, 2011 at 2:08 PM, Yukihiro Matsumoto <matz@ruby-lang.org>wrote:

[#40425] Re: [ruby-trunk - Feature #5474][Assigned] keyword argument — Yukihiro Matsumoto <matz@...> 2011/10/27

Hi,

[#40298] Re: [ruby-trunk - Feature #5474][Assigned] keyword argument — Yukihiro Matsumoto <matz@...> 2011/10/24

Hi,

[#40311] [ruby-trunk - Feature #5478][Open] import Set into core, add syntax — Konstantin Haase <Konstantin.Haase@...>

33 messages 2011/10/24

[#40312] [ruby-trunk - Feature #5479][Open] import StringIO into core, add String#to_io — Konstantin Haase <Konstantin.Haase@...>

9 messages 2011/10/24
[#40350] [ruby-trunk - Feature #5479] import StringIO into core, add String#to_io — Charles Nutter <headius@...> 2011/10/25

[#40316] [ruby-trunk - Feature #5481][Open] Gemifying Ruby standard library — Hiroshi Nakamura <nakahiro@...>

86 messages 2011/10/24
[#40334] [ruby-trunk - Feature #5481] Gemifying Ruby standard library — Lucas Nussbaum <lucas@...> 2011/10/25

[#40322] [ruby-trunk - Feature #5482][Open] Rubinius as basis for Ruby 2.0 — Thomas Sawyer <transfire@...>

19 messages 2011/10/25

[#40356] JIT development for MRI — Carter Cheng <cartercheng@...>

Hello,

25 messages 2011/10/25
[#40390] Re: JIT development for MRI — SASADA Koichi <ko1@...> 2011/10/26

Hi,

[#40394] Re: JIT development for MRI — Carter Cheng <cartercheng@...> 2011/10/26

Dear Koichi SASADA,

[#40395] Re: JIT development for MRI — Carter Cheng <cartercheng@...> 2011/10/26

I noticed that you used context threading in YARV. Do you have some analysis

[#40417] Re: JIT development for MRI — SASADA Koichi <ko1@...> 2011/10/26

Thanks for reference.

[#40423] Re: JIT development for MRI — Carter Cheng <cartercheng@...> 2011/10/26

Thanks Koichi.

[#40412] [ruby-trunk - Bug #5486][Open] rb_stat() doesn’t respect input encoding — Nikolai Weibull <now@...>

15 messages 2011/10/26

[#40462] [ruby-trunk - Bug #5492][Open] MinGW Installation with Ruby 1.9.3rc1 Broken — Charlie Savage <cfis@...>

14 messages 2011/10/27

[#40573] [ruby-trunk - Bug #5530][Open] SEEK_SET malfunctions when used with 'append' File.open mode — "Joshua J. Drake" <ruby-lang.jdrake@...>

17 messages 2011/10/31

[#40586] [ruby-trunk - Feature #5531][Open] deep_value for dealing with nested hashes — Kyle Peyton <kylepeyton@...>

19 messages 2011/10/31

[ruby-core:40189] Re: [Ruby 2.0 - Feature #5454] keyword arguments

From: Evan Phoenix <evan@...>
Date: 2011-10-17 23:13:46 UTC
List: ruby-core #40189
This looks very interesting! Would someone be willing to translate to english? I've only got a vague idea of what is being discussed.

--  
Evan Phoenix // evan@phx.io


On Monday, October 17, 2011 at 3:55 PM, Yukihiro Matsumoto wrote:

>  
> Issue #5454 has been updated by Yukihiro Matsumoto.
>  
>  
> |細かいことはまだ気にしていませんが、キーワード引数が 2.0 に入る
> |ことはかなり確定的なので、とりあえず trunk に入れて考えるという
> |のはどうでしょうか。
>  
> 賛成です。trunkに入れちゃっていいのかな。そういう機能の入っ
> ていない1.9ブランチが欲しい人は急いで切ったほうがいいと思い
> ますよ。
>  
> |以下は未実装・懸案です。
> |
> | - 残りのキーワード引数を受け取る方法が必要か
> |
> | def foo(str: "foo", num: 424242, **h)
> | p h
> | end
> | foo(str: "bar", check: true) #=> { :check => true }
>  
> メソッドの移譲のために必要だと思います。
>  
> | - nil が渡されたらやはり nil になるべき?
> |
> | def foo(str: "foo")
> | p str
> | end
> | foo(str: nil) #=> nil ? (今は手抜きで "foo")
>  
> nilになるべきでしょう。
>  
> | - rest なしで知らないキーワードが来たら例外・警告を発して
> | 欲しい?
> |
> | def foo(str: "foo", num: 424242)
> | end
> | foo(check: true) #=> ArgumentError?
>  
> ここは議論の余地があるところですね。現時点では、**で受け取ら
> ない限り例外にするべきだと考えていますが、実際にいろいろな局
> 面で使ってみると意見が変わるかもしれません。
>  
> | - Hash のように振る舞うオブジェクトもキーワード引数として
> | 解釈すべき? (現在は速度重視で T_HASH だけ見ている)
>  
> とりあえずto_hashを使ってください。新設のto_kwのようなメソッ
> ドを使うべきなのかもしれませんが。
>  
> | - 引数の順番はよいか
> |
> | def foo(
> | a, b, c, # mandatory arguments
> | opt = 1, # optional arguments
> | *rest, # rest argument
> | x, y, z, # post mandatory arguments
> | k1: 1, k2:2, # keyword arguments
> | **kh, # keyword rest argument
> | &blk # block argument
> | )
>  
> これで良いと思います。
>  
>  まつもと ゆきひろ /:|)
>  
> ----------------------------------------
> Feature #5454: keyword arguments
> http://redmine.ruby-lang.org/issues/5454
>  
> Author: Yusuke Endoh
> Status: Assigned
> Priority: Normal
> Assignee: Yukihiro Matsumoto
> Category:  
> Target version: 2.0.0
>  
>  
> 遠藤です。
>  
> キーワード引数を実装してみました。
>  
>  $ cat t.rb
>  def foo(str: "foo", num: 424242)
>  p [str, num]
>  end
>  foo(str: "bar")
>  
>  $ ./ruby t.rb
>  ["bar", 424242]
>  
> 細かいことはまだ気にしていませんが、キーワード引数が 2.0 に入る
> ことはかなり確定的なので、とりあえず trunk に入れて考えるという
> のはどうでしょうか。
>  
> 一応私の環境では make check は通ります (キーワード引数のテスト
> は書いてないですが) 。パーサに conflict はないです。
> 既存のベンチマークを見ると、一部気になる項目もありますが (vm1_
> rescue とか) 、全体的には特に速度劣化しないようです。
>  
>  
> 以下は未検討・未実装の細かいことです。
>  
>  - 残りのキーワード引数を受け取る方法が必要?
>  
>  def foo(str: "foo", num: 424242, **h)
>  p h
>  end
>  foo(str: "bar", check: true) #=> { :check => true }
>  
>  - nil が渡されたらやはり nil になるべき?
>  
>  def foo(str: "foo")
>  p str
>  end
>  foo(str: nil) #=> nil ? (今は手抜きで "foo")
>  
>  - rest なしで知らないキーワードが来たら例外・警告を発して
>  欲しい?
>  
>  def foo(str: "foo", num: 424242)
>  end
>  foo(check: true) #=> ArgumentError?
>  
>  - Hash のように振る舞うオブジェクトもキーワード引数として
>  解釈すべき? (現在は速度重視で T_HASH だけ見ている)
>  
>  - 引数の順番はこれでよいか?
>  
>  def foo(
>  a, b, c, # mandatory arguments
>  opt = 1, # optional arguments
>  *rest, # rest argument
>  x, y, z, # post mandatory arguments
>  k1: 1, k2:2, # keyword arguments
>  **kh, # keyword rest argument
> &blk # block argument
>  )
>  
>  - 他いろいろ
>  
>  
> benchmark results:
> name ruby 1.9.4dev (2011-10-16 trunk 33471) [i686-linux] ruby 1.9.4dev (2011-10-16 trunk 33471) [i686-linux] average difference
> app_answer 0.259 0.131 -0.127
> app_erb 2.699 2.681 -0.018
> app_factorial 5.236 5.320 0.084
> app_fib 1.576 1.731 0.154
> app_mandelbrot 4.324 3.911 -0.413
> app_pentomino 40.882 40.768 -0.114
> app_raise 0.966 0.982 0.017
> app_strconcat 3.143 3.102 -0.041
> app_tak 2.192 2.140 -0.052
> app_tarai 1.682 1.748 0.066
> app_uri 1.870 1.767 -0.103
> io_file_create 2.589 2.570 -0.019
> io_file_read 6.169 5.838 -0.330
> io_file_write 1.966 1.976 0.010
> io_select 3.066 3.111 0.044
> io_select2 3.647 3.623 -0.025
> io_select3 0.051 0.051 0.000
> loop_for 3.302 3.219 -0.082
> loop_generator 1.111 1.102 -0.009
> loop_times 2.959 2.960 0.001
> loop_whileloop 1.437 1.422 -0.016
> loop_whileloop2 0.298 0.297 -0.001
> so_ackermann 1.862 1.816 -0.046
> so_array 3.317 3.473 0.155
> so_binary_trees 0.891 0.900 0.009
> so_concatenate 9.538 8.696 -0.842
> so_count_words 0.412 0.407 -0.005
> so_exception 2.185 2.177 -0.008
> so_fannkuch 3.338 3.334 -0.004
> so_fasta 5.182 5.061 -0.121
> so_k_nucleotide 3.425 3.324 -0.101
> so_lists 2.239 2.312 0.073
> so_mandelbrot 11.479 10.660 -0.820
> so_matrix 2.206 2.177 -0.030
> so_meteor_contest 11.479 11.634 0.155
> so_nbody 8.006 7.925 -0.081
> so_nested_loop 2.768 2.614 -0.154
> so_nsieve 6.163 6.184 0.021
> so_nsieve_bits 6.618 6.850 0.231
> so_object 1.807 1.899 0.091
> so_partial_sums 11.057 10.537 -0.520
> so_pidigits 2.944 3.011 0.066
> so_random 1.962 1.992 0.031
> so_reverse_complement 3.136 3.036 -0.099
> so_sieve 2.224 2.203 -0.021
> so_spectralnorm 7.981 7.591 -0.390
> vm1_block* 3.790 5.112 1.306
> vm1_const* 0.756 0.757 -0.015
> vm1_ensure* 0.487 0.601 0.099
> vm1_ivar* 1.634 1.863 0.213
> vm1_ivar_set* 1.625 1.661 0.021
> vm1_length* 1.312 1.366 0.038
> vm1_neq* 1.152 0.979 -0.189
> vm1_not* 0.589 0.589 -0.015
> vm1_rescue* 0.133 0.750 0.601
> vm1_simplereturn* 2.467 3.601 1.119
> vm1_swap* 1.199 1.716 0.502
> vm2_array* 1.644 1.643 -0.001
> vm2_case* 0.324 0.348 0.023
> vm2_defined_method* 8.829 9.003 0.173
> vm2_eval* 39.557 37.726 -1.832
> vm2_method* 5.255 4.113 -1.142
> vm2_mutex* 3.043 3.175 0.131
> vm2_poly_method* 6.044 5.340 -0.705
> vm2_poly_method_ov* 0.493 0.675 0.181
> vm2_proc* 1.297 1.391 0.093
> vm2_regexp* 2.419 2.557 0.137
> vm2_send* 0.662 0.903 0.241
> vm2_super* 1.107 1.016 -0.093
> vm2_unif1* 0.688 0.816 0.127
> vm2_zsuper* 1.210 1.068 -0.143
> vm3_clearmethodcache 0.785 0.770 -0.014
> vm3_gc 2.487 2.453 -0.033
> vm_thread_alive_check1 0.389 0.422 0.033
> vm_thread_create_join 6.064 6.181 0.118
> vm_thread_mutex1 2.349 2.546 0.197
> vm_thread_mutex2 10.123 7.755 -2.368
> vm_thread_mutex3 4.428 5.390 0.962
> vm_thread_pass 0.692 0.754 0.063
> vm_thread_pass_flood 0.167 0.170 0.003
> vm_thread_pipe 2.437 2.540 0.103
> -----------------------------------------------------------
> average total difference is -3.4518661499023438
>  
> --  
> Yusuke Endoh <mame@tsg.ne.jp (mailto:mame@tsg.ne.jp)>
>  
>  
> --  
> http://redmine.ruby-lang.org



In This Thread