<brixen>
hm, this ticket from konstantin is confusing
<brixen>
if string keys are not allowed, then it wouldn't work on MRI, so how is that causing an issue?
<brixen>
in other words, it sounds like https://github.com/rkh/tool/issues/2 is saying, "code that won't work on MRI is working on Rubinius and that causes an issue"
<brixen>
what?
diegoviola has joined #rubinius
diegoviola has quit [Client Quit]
diegoviola has joined #rubinius
GitHub139 has joined #rubinius
<GitHub139>
[rubinius] sshao pushed 3 new commits to master: http://git.io/YdiprA
<GitHub139>
rubinius/master 94a7ce1 sshao: Added specs for CAPI function rb_cloexec_open
<GitHub139>
rubinius/master aca45ee sshao: Implemented CAPI function rb_cloexec_open
GitHub139 has left #rubinius [#rubinius]
<brixen>
ah I see
<brixen>
"I want to mix passing hashes to this method and have Ruby disambiguate that with a completely hidden semantic"
<brixen>
great
<yxhuvud>
I agree that the code is really wonky, but it could be failure inducing to have different implementations behave differently in cases like this
sshao has joined #rubinius
lbianc has quit [Ping timeout: 245 seconds]
sshao_ has joined #rubinius
<brixen>
of course
<brixen>
it's just 1. MRI fucked this up, 2. people are writing terrible APIs
<brixen>
the keyword args as defined my MRI are so fucked
<brixen>
and as MRI adds keywords to core, they are making a huge mess
<brixen>
methods taking positional args and keywords that mean the same thing
<brixen>
or APIs like IO.popen, which has at least 40+ distinct possible signatures, many of them inscrutable in code
<brixen>
is the first argument a String or Hash here? good luck finding out
<brixen>
and the typical arguments given by MRI against fixing things have no consistency
<brixen>
"it's too late, it would cause breakage" AND "it's friendlier for the developer" AND "we can't prioritize new devs over existing devs"
<yorickpeterse>
brixen: from what I gather Konstantin means that when you do **{"foo" => "bar"} the "foo" should _not_ be translated to a kwarg
<yorickpeterse>
only when you use **{:foo => "bar"}
<brixen>
I understand the issue, it's pretty clear in the specs
<brixen>
def foo(x, **kw) ... end ; foo({"a" => "b"}) -> x = {"a" => "b"}
<brixen>
an API like that is a big FU to a programmer
<brixen>
foo(x) in code, what does that mean?
<brixen>
the examples use literals, which may be more clear
<brixen>
a lot of code will use references, and it won't be clear at all
<yorickpeterse>
oh yeah, I do agree kwargs in their current state are an abomination
<yorickpeterse>
I would've preferred to see it the way Python has it
<yorickpeterse>
where every arg is a kwarg simply by doing some_method_call(some_arg = value)
<brixen>
oh that's crazy talk!
<brixen>
an existing example that is simple and clear?
<yorickpeterse>
(concept wise, one could argue an assignment as an argument is odd, and conflicts with the current Ruby)
<brixen>
changing = to : is not altering anything
<yorickpeterse>
it would conflict since foo(bar = baz) is already valid Ruby
<headius>
it avoids breaking local var decl
<brixen>
the saddest thing is that Smalltalk has much better argument passing than anything Ruby/Perl came up with
<yorickpeterse>
I guess we can create Ruby++...oh wait
<yorickpeterse>
well, the technically correct name in that case would be Ruby-- since it would have less Rubby
<yxhuvud>
how do smalltalk do?
meh` has joined #rubinius
lbianc has joined #rubinius
<headius>
python kwargs can't mix positional and keyword in a given call, so going that way would break all exiting code that does foo('bar', baz => quux)
Bwild has joined #rubinius
<headius>
decisions are not made in a vacuum, nor are they made without reason
amsi has joined #rubinius
pietr0 has joined #rubinius
flavio has quit [Remote host closed the connection]
havenwood has quit [Remote host closed the connection]
josh-k has quit [Remote host closed the connection]
lbianc has quit [Quit: ChatZilla 0.9.91 [Firefox 24.8.1/20140923194127]]
sshao has quit [Quit: Connection closed for inactivity]
havenwood has joined #rubinius
<brixen>
tarcieri: woot
houhoulis has quit [Remote host closed the connection]
dzhulk has joined #rubinius
gtemple has quit [Quit: HydraIRC -> http://www.hydrairc.com <- Po-ta-to, boil em, mash em, stick em in a stew.]
pietr0_ has joined #rubinius
chrisseaton_ has joined #rubinius
dbussink_ has joined #rubinius
pietr0 has quit [Ping timeout: 244 seconds]
dbussink has quit [Ping timeout: 244 seconds]
chrisseaton has quit [Ping timeout: 244 seconds]
diegoviola has quit [Ping timeout: 244 seconds]
arrubin has quit [Ping timeout: 244 seconds]
arrubin has joined #rubinius
pietr0_ is now known as pietr0
dbussink_ is now known as dbussink
arrubin has quit [Changing host]
arrubin has joined #rubinius
chrisseaton_ is now known as chrisseaton
diegovio1 has joined #rubinius
houhoulis has joined #rubinius
diegovio1 is now known as diegoviola
diegoviola has quit [Quit: WeeChat 1.0.1]
havenn has joined #rubinius
havenwood has quit [Ping timeout: 250 seconds]
havenn is now known as havenwood
havenwood has quit []
diegoviola has joined #rubinius
djellemah has quit [Ping timeout: 272 seconds]
max96at is now known as max96at|off
Bwild has quit [Quit: leaving]
diegovio1 has joined #rubinius
diegoviola has quit [Ping timeout: 256 seconds]
max96at|off is now known as max96at
RageLtMan has quit [Remote host closed the connection]
djellemah has joined #rubinius
diegovio1 is now known as diegoviola
GitHub39 has joined #rubinius
<GitHub39>
[rubinius] joelparkerhenderson opened pull request #3247: Search for llvm-config on OSX using brew (master...configure-darwin-brew-llvm-config) http://git.io/s6Wopg
GitHub39 has left #rubinius [#rubinius]
diegoviola has quit [Read error: Connection reset by peer]
diegoviola has joined #rubinius
djellemah has quit [Ping timeout: 255 seconds]
sshao_ has quit [Remote host closed the connection]
enebo has quit [Quit: enebo]
carlosgaldino has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]