

Ruby 2.0.0-preview2 released - charliesome
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/50443

======
subwindow
Just a reminder that the spec for refinements continues to change radically:
<http://bugs.ruby-lang.org/issues/4085>

As far as I understand it the current spec is to have "using" be available
only to main and only apply in the file scope. IMHO this makes the feature
nearly useless.

~~~
aneth4
If you explore the topic, there are solid reasons from performance, to vm
ports, to readability for why refinements have been curtailed. I'm quite happy
with this. The original refinement support would have held ruby back, even if
it had its uses.

~~~
Rapidwire
^^ What an apologist...

------
danielpal
This is fantastic.

The thing I like the most about ruby is how much thought is put into code
readability and programming experience.

My favorite features of this release:

1\. Keyword arguments: I can stress how important this is for code readability
and also prevents some bugs.

2\. Refinements: This is going to make code easier to maintain and more
"custom". I can't wait to add a few things we constantly use on String etc.

~~~
theshadow
It's amazing that considering Ruby's philosphy we didn't have named arguments
until now. I think this was a case where the idiom of using hashes as named
arguments working well enough that the core team didn't feel the need to
address it earlier, still proper keyword arguments are going to be great.

I thought Matz was going to drop refinements for 2.0 for now?

~~~
reinhardt
As a Python dev keyword arguments are among my top language features. Kinda
surprised that Ruby doesn't have them yet.

On a slightly off-topic note, what's the best way to dive into Ruby coming
from (strong) Python background? I bet the syntax wouldn't take more than a
weekend to get used to but I'm more interested in the less trivial stuff
(semantics, idiomatic style, dev environment, 3rd party lib ecosystem etc.)

~~~
milep
For the dev environment you can use rbenv or rvm and your favorite text
editor. <https://www.ruby-toolbox.com/> is a good source for 3rd party libs.
About idiomatic style I have learned from reading code from some popular gems.

------
delano
Dtrace is such an awesome technology and the support in Ruby 2.0 is going to
help improve a lot of projects.

~~~
MikeKusold
"DTrace can be used to get a global overview of a running system, such as the
amount of memory, CPU time, filesystem and network resources used by the
active processes. It can also provide much more fine-grained information, such
as a log of the arguments with which a specific function is being called, or a
list of the processes accessing a specific file."

For anyone else that wasn't aware what Dtrace does.

Wikipedia Link: <http://en.wikipedia.org/wiki/DTrace>

~~~
delano
And the overhead is extremely minimal which allows you to collect data in
production while an application is running (without restarting).

------
w1ntermute
OT: does anyone else notice that the Japanese text doesn't render correctly
(in Chrome and Firefox on Linux & Windows) unless they manually change the
encoding to EUC-JP? Why doesn't it work with Unicode, for the Ruby ML, of all
things?

~~~
cmwelsh
The server does not send the charset in the response headers, and the document
that is generated does not contain a charset like this:

    
    
        <meta charset="utf-8">
    

Either of those two options should fix the page, but I assume Japanese
browsers have different default charset than ours since no one has fixed it
yet.

------
mitchty
Anyone else getting compile errors with the latest clang on mountain lion?

num2int.c:82:21: error: expected ')'

    
    
        sprintf(buf, "%"PRI_LL_PREFIX"d", NUM2LL(num));
    
                        ^

~~~
ajasmin
Is that even valid C code?

~~~
emillon
Yes, if PRI_LL_PREFIX expands to a string literal, the literals get merged
together.

~~~
cremno
Ruby supports this too but it will be removed in the future (3.0). The preview
doesn't show a warning but 2.0 will.

Source: <https://bugs.ruby-lang.org/issues/6265>

Btw, PRI_LL_PREFIX is defined in Ruby's _config.h_.

------
sams99
Does anyone know what ever happened with Kiji, it seems a generational GC for
Ruby has already been coded twice, yet in 2.0 it seems the only big change is
the CoW friendly GC

~~~
mitchellh
I don't know the specific characteristics of Kiji, but I know that it is not a
real generational GC. A generational GC that doesn't break every C extension
is impossible because Ruby passes around direct pointers, so Ruby objects
can't be moved in memory.

That being said, I'm not a language or VM guy, so take what I say with a grain
of salt.

------
lhnn
Calling it: There will be a blog post titled "Ruby Two's Day" on release.

