There was a lot of discussions in ruby-dev this week.
This is a summary of those.


---- ruby-dev #17875-17964 (2002-08-01 ... 2002-08-08) ----


  [ruby-dev:17876] cbase in module_eval {...}

Koji Arai asked why a script as below raised
error(uninitialized constant FOO (NameError)) in 1.7.

  class Foo
    FOO = 1
  end
  Foo.module_eval { p FOO }

Matz said that it is caused by a change of Ruby specification.
He wants to make scope of constants static, but he thinks that
current behavior is not best. Any suggestions are welcome.


  [ruby-dev:17882] nested method, etc

Minero Aoki pointed out that

  * nesting of method def.
  * alias/undef in method def.
  * super outside method def.

all does not raise an error in parse.y 1.203. Matz said that
it is change of Ruby specification.


  [ruby-dev:17885] Ruby Development Roadmap?

TAKAHASHI Masayoshi asked:

 1) when is Ruby 1.8 released ?
 2) what is new and changed in Ruby 1.8 ?
 3) when is Ruby 1.6.8 released ?
 4) when is M17N-Ruby merged in(?) 
 5) when is keyword arguments introduced in?

Matz replied:

 1) When known bugs are solved. Maybe after Matz's summer
    vacation?
 2) Major changes are already introduced in HEAD branch.
 3) In this autumn(for RubyConf 2002)?
 4) Maybe in 1.9.0.
 5) In Ruby 2.0, because it changes many points including C API.


  [ruby-dev:17907] Re: Ruby Development Roadmap?

Matz announced Ruby M17N framework would be changed.

  Specification:

   * str[n] returns strings whose length is 1.
   * Notation '?A' is obsoleted.
   * Encoding conversion framework for strings is introduced.
   * Encoding conversion framework for IO is introduced.

  Implementation:

   * Delete ismblen(). Supports UTF-16 and GB18030.
   * Delete m17n_islead() and m17n_firstbyte() (the same reason)

K.Kosako proposed a method which goes back nth character.

  m17n_back(enc, start, p, n)
  
Matz agreed such method is in need anyway.


  [ruby-dev:17887] next parser 

Minero Aoki asked Matz how to implement Ruby 2.0 parser.
Matz answered he thought two options.

  * write new recursive descent parser for Ruby

      it makes parser more flexible, but Ruby's syntax is
      too complex to implement in this way?

  * use yacc

Minero proposed to use original (modified) byacc or bison:

  * GC-safe
  * make yyparse re-entrant
  * write action with table of pointer of functions

But Matz negatively replied that modifying yacc and distributing
it with Ruby is too hard. Minero may implement such kind of parser
in ripper 1.0.


  [ruby-dev:17954] Selection IPv4/IPv6 at TCPSocket

NISHI Takao proposed new TCPSocket#new/TCPServer#new
interface.

  TCPSocket#new(host, service [,ai_family=Socket::PF_UNSPEC])
  TCPServer#new([host=localhost,] service [,ai_family=Socket::PF_UNSPEC])

A patch for Ruby 1.6.7(2002-03-01) is available in
  http://www.koka-in.org/%7Ezophos/lib/ruby-1.6.7-ipsocket_select_ai_family.patch

 Merit:
  * make no influence on Ruby code
  * configurable IPv4/IPv6/UNSPEC by instance.

 Demerit:
  * make TCPServer's arguments a bit complex
  * In Linux(USAGI), configuration of ai_family of TCPServer
    is not used without CONFIG_IPV6_DOUBLE_BIND(kernel option)
    and IPV6_V6ONLY(socket option).



TAKAHASHI 'Maki' Masayoshi     E-mail: maki / rubycolor.org