From: Yukihiro Matsumoto Date: 2011-10-03T01:48:51+09:00 Subject: [ruby-core:39837] Re: Road to 2.0 Hi, In message "Re: [ruby-core:39836] Re: Road to 2.0" on Mon, 3 Oct 2011 01:28:39 +0900, Yusuke Endoh writes: |Actually, it is impossible to decide all of them, I think. | |So we should first distinguish between "Dreams" and "Requirements." |"Dreams" are what feature we (or some people) want, but we don't |necessarily have to conclude by 2.0. "Requirements" are what |feature we *must* conclude and implement, typically, which is |"what matz and/or 2.0 release manager want." Yes, we have to determine what are must-haves for 2.0 and what are if-possibles. |Matz, what feature are "Requirements?" |You are the only one who can decide them because there is no |2.0 release manager currently. | |Once, I heard from matz the only four "Requirements", though |I forgot one: | |- Module#prepend |- Refinements, Classbox, or something to do the similar |- keyword arguments (or, named parameter) |- ??? It was Module#mix I think. But last night, after detailed discussion and consideration, I give up the idea. So, as of today, my must-have list for the language is: * Module#prepend * keyword arguments (decomposition of hash argument in callee) And if-possible list is: * refinement * renaming methods and constant lookup resolution for #include The current reference implementation slows down method calls to 5-15% so that unless we could find how to implement it faster before the deadline (Fall 2012 maybe), I think we should give it up for 2.0. Method renaming and constant resolution are mere idea. I wanted to address them by Module#mix. Since I gave up #mix, I'd like to address them by enhancing #include, if possible. The implementation issues are not covered here. We'd love to add thing such as new GC, better Windows performance, better VM performance, etc. But I think we'd better focus the language design first. matz.