Index

Show enters and exits. Hide enters and exits.

18:54:08danlucrafttesty test test
18:55:38someoneelseHi, i am new to rubinius. I've written, that rubinius code is compiled to machine code and then executed. The example (puts 'Hello World') on the webpage looks like beeing compiled to assembly code?? Is that correct or did i misanderstand?
18:56:19evansomeoneelse: we have a JIT compiler which compiles ruby code to machine code, yes.
18:56:27evanwe also have an interpretter
18:57:40someoneelseSo would it be possible to compile code before running the whole stuff and like that not haveing the compile-time when beeing executed? Will the code being compiled each time it is executed or will the same code being compiled only once??
18:59:10someoneelsei mean this is not what most expect when useing ruby but in some cases it would be really interesting to compile only once, not each time it is executed...
18:59:33evanwe don't support saving the compiled code between executions atm, no.
18:59:38brixensomeoneelse: we don't have ahead-of-time compilation to machine code
18:59:40evanand it's tricky to do so
18:59:55evanbecause ruby is so dynamic, the machine code makes assumptions about the state of things
19:00:09someoneelse'and it's tricky to do so' .... what a pitty :)
19:00:20evaneven if things were compiled up front, you'd still need the JIT and interpretter
19:00:34someoneelsewhy??
19:00:36evanbecause any compiled code can become wrong at any time
19:00:52evanso you need a way to continue to run if you decide the compiled code is wrong.
19:00:53someoneelsewhy?
19:00:58evanbecause ruby is dynamic.
19:01:18evanwe do method inlining, for example.
19:01:37evanif you were to compile each ruby method to machine code naively
19:01:45evanie, with all method calls being opaque
19:01:53evanyou wouldn't see a very big speedup
19:02:00brixendbussink: it appears that using Process.kill(:KILL, $$) will work in both *nix and windows, but windows does not appear to be setting $? correctly
19:02:03scoopreval(gets)
19:02:05evanbeacuse right away you're bottlenecked on dispatch then.
19:02:21brixendbussink: ie, $? has the right PID, but none of the correct state, like signaled?
19:02:47evanbrixen: thats expected.
19:02:50brixendbussink: atm, I don't know if this is a bug or windows limitation, but it highlights why we need thes specs running
19:02:53someoneelseok. That's true for sure! and that's why i love ruby (for the dynamic thing). But in some cases it could be helpful to say 'this code want change while running - so compile once only'.... Wouldn't this be possible?
19:02:54evanbrixen: as I believe.
19:02:59brixenevan: why expect?
19:03:12evanI don't think that windows exposes a bunch of that state
19:03:21evanso ruby also can't.
19:03:27brixenhrm
19:03:36evansomeoneelse: why would that be useful?
19:03:40evanwhy not just let the JIT figure it for you/
19:03:45evan?
19:04:15someoneelseperformance reasons
19:04:30someoneelsethat the only reason
19:04:32evanyou'd be wrong then.
19:04:41someoneelseok..... why?
19:04:48evanthe JIT yields better performance than trying to allow for the code to be compiled ahead of time
19:04:56someoneelseok.
19:05:04evanbecause the JIT can leverage direct pointers and information about the running of the current process
19:05:08someoneelsethen it's nice how it is :)
19:05:12evaninlining different methods, etc.
19:05:21evan:D
19:05:25evani should probably write this up!
19:05:43evanbut, i have to grab some lunch first, since it appears i have to do some last minute babysitting today
19:06:43someoneelse'i should probably write this up!' : Yes that would be nice to read on the webpage. I am probably not the only one think like this :)
19:11:49dbussinkbrixen: did you test it with mri i guess?
19:11:56dbussinkassume it's a windows limitation then
19:13:29brixensomeoneelse: http://www.engineyard.com/blog/2009/the-anatomy-of-a-ruby-jit-compile/
19:13:59brixensomeoneelse: that permalink is wrong, the article is about bytecode, but read it
19:14:03brixensomeoneelse: http://www.engineyard.com/blog/2010/making-ruby-fast-the-rubinius-jit/
19:14:12brixensomeoneelse: that one is about the jit :)
19:14:32brixendbussink: well, even if it is, we need these specs running on windows
19:14:38brixenso folks can see what's up
19:15:02brixenI haven't looked into the windows limitations yet
19:17:30someoneelseoh i need a running ruby vm to install rubinius? Or did i do something wrong?
19:19:34someoneelseoh i see i need version 1.8.7 of MRI.... ok.
19:26:20dbussinksomeoneelse: 1.9 should also work these days btw
19:26:29dbussinkbut yeah, you need an existing ruby atm
19:26:41someoneelseok thy
19:26:42someoneelsethx
19:36:05cremesis rbx self-hosted? meaning that if i have a binary version of rbx installed somewhere that it can build rbx from source?
19:36:11cremesor does it only like mri these days?
19:36:18cremesjust curious... :)
19:40:17dbussinkcremes: afaik it's possible yeah
19:40:26dbussinki might have tried at some point in the past
19:40:37dbussinkevan: is bootstrapping still on the planned to do list?
19:41:18cremesi'm trying it right now
19:41:22cremesi'll let you know what i find
19:41:48dbussinkcremes: bootstrapping != self hosting btw :)
19:42:00dbussinkbut i guess you know the difference :)
19:42:06cremesthat's why i provided my own definition!
19:42:13cremesi was pretty sure that was the wrong nomenclature
19:42:37dbussinkcremes: well, bootstrapping would mean it's not dependent on any external ruby version
19:42:50dbussinkcremes: self hosting is that it can compile itself i guess, or that's how i see it at least ;)
19:48:32dbussinkbrixen: ok, so on those specs, what does Process.kill(:KILL, $$) exactly do?
19:52:26dbussinkbrixen: nvm, found it :)
19:57:12duncandoes the C api has any testsuite?
19:57:29brixenduncan__: yes, spec/ruby/optional/capi
19:57:58sbryantit's not really different from the regular test suite, unless its changed alot since I last worked on it
19:58:12brixencremes: rbx should biuld rbx just fine
19:58:18brixencremes: also build :)
19:58:26duncanSocket#getaddrinfo gets the address information FAILED
19:58:34duncan3516 files, 15152 examples, 43017 expectations, 1 failure, 0 errors
19:59:11brixenduncan__: could you gist the failure?
19:59:56dbussinkbrixen: ok, also checked with windows, `ruby -e 'Process.kill(:KILL, $$); exit 1` gives me exit status 0 and no signal given
20:00:07brixendbussink: yep
20:00:11duncanhttp://gist.github.com/546213
20:00:25dbussinkbrixen: so windows can probably not support that
20:00:42dbussinkalso checked with the rubyinstaller versions, since they use a much more recent compiler
20:00:50dbussinkbut that doesn't make a difference
20:00:58brixenduncan__: yeah, incomplete spec, could you open a ticket for that?
20:01:20brixendbussink: either way, we need the specs running on windows
20:01:36cremesfyi, rubyinstaller is using gcc 4.5.0 as of a few days ago
20:01:40brixengrabbing food, bbiab...
20:02:04duncancan it be that rb_yield_values is not in 1.0.x but on HEAD?
20:02:10duncanbrixen: sure
20:02:56mylarryHi! i tried to download and run rubinius. ./configure was successfull. but then running just 'rake' failed. what can i do? is there any paste-page where i can paste the error log? so that someone can have a look at what has happened? Or can paste here in the IRC??
20:03:49cremesmylarry: to build you should just run "rake"
20:03:57cremesno need to run configure on your own
20:04:06cremesthe rake task makes sure to set everything up
20:04:12brixencremes: not true
20:04:18brixenyou have to run configure
20:04:33brixenmylarry: could you gist what your terminal output is when you run rake?
20:04:33cremesharumph
20:04:50dbussinkduncanmv: master has quite a bit more capi stuff yeah
20:04:56brixenmylarry: use pastie or gist.github.com
20:05:26dbussinkpasting it directly in here will make people go haywire :P
20:05:41dbussinkbrixen: well, i guess parts of the specs should run on windows then
20:05:48dbussinksince it can't pass all assertions
20:05:59brixenwell, it'll likely get you kicked automatically
20:06:18brixendbussink: the specs describe what MRI does ;)
20:06:36brixenif it does different things on windows, that's what platform_is :windows is for
20:06:46duncanmvok done http://github.com/evanphx/rubinius/issues/issue/444
20:06:46mylarryerror is on: http://gist.github.com/546233
20:07:00duncanmvwill try his gems with HEAD
20:07:05brixenduncanmv: thanks
20:07:30brixenmylarry: what version of gcc are you using?
20:08:30mylarryThread model: posix
20:08:31mylarrygcc version 3.4.4
20:08:42brixenmylarry: you need 4.0 or greater
20:08:51mylarryahhh ok. THX!
20:08:56brixenmylarry: what is your OS/platformm btw?
20:09:11mylarrypuppy linux 4.xx
20:09:34brixengoogles :)
20:09:59mylarryso it has a quite new Kernel.... but old gcc :(
20:10:18brixenok
20:11:19brixenmylarry: just fyi, doc/getting_started.txt lists requirements
20:11:38brixengcc 4.x is in there as well as a number of packages you may need on linux
20:11:46dbussinkmylarry: looks like puppy 5.1 is a lot more up to date with software
20:13:55mylarryohhh sorry. i was wrong. I use puppy 4.x a lot but now i am on puppy 2.17 which is a bit older (and has the old gcc version). Maybe 4.x comes with a newer gcc version!
20:16:53dbussinkbrixen: first step is that i can see to remove the fork and use ``
20:17:16dbussinkbrixen: btw, how actively is rubyspec now used with windows too?
20:19:32duncanmvI guess capi is a good think to backport for 1.0.x releases or?
20:20:04evani'm back
20:20:10evanand don't have to babysit
20:22:55duncanmvwill probably try to backport HEAD capi to rubinius 1.0.x openSUSE package. I wonder if it would be straightforward.
20:23:02evanwhy?
20:23:08evanbetter would be to wait for 1.1
20:23:12evanwhich will be out in a couple weeks.
20:23:15duncanmvreally?
20:23:18duncanmvoh, that is nice
20:23:27duncanmvuhm , it seems sfcc gem works with HEAD
20:23:32evanwe're getting close to finalizing it up.
20:23:38dbussinkbrixen: https://gist.github.com/051f7dd9af757b1230cc already looks nicer :)
20:23:45duncanmvrpm gem will need more work. now on HEAD I get unresolved rb_hash
20:24:28dbussinkbrixen: should there be a platform is windows block too? since it also feels a bit as something that is missing because windows can't provide that information
20:24:48dbussinkjust feels wrong to write a spec that says it cleanly exited there if it doesn't on windows
20:24:52duncanmvwill proudly add to the ruby-sfcc README that it builds and pass testsuite with rubinius
20:25:50dbussinkevan: how old is the kid you might had to babysit?
20:26:04evan7 months
20:26:18dbussinkah, really baby then :)
20:26:28evanheh, yeah, actual babysitting.
20:26:37dbussinkif they get like 2 years old they start to play with your iphone :P
20:26:47dbussinkor whatever touch device you have :P
20:26:50evanha
20:26:52evanwell actually
20:26:56evanshe loves my iphone
20:27:00evanespecially the 4
20:27:07evanbecause i can put the front camera on
20:27:13evanand she can watch herself
20:27:23evanbut other than that, she wants to put it in her mouth
20:27:24dbussinkmy gf's nephews apparently started calling people when we didn't pay attention
20:27:32dbussinkwithout telling them a thing
20:27:36evanhah
20:27:48brixendbussink: try not to editorialize in specs :) it "returns true" is accurate
20:27:53dbussinkfigured out the screen unllock etc on themselves
20:29:07dbussinkbrixen: but it already looks a lot nicer yeah :)
20:29:31brixendbussink: also, make sure your describe strings concatenate to readable strings
20:29:33dbussinkbrixen: how about those windows blocks? spec the unsupported behavior explicitly? or just leave it at those regularly exiting processes?
20:30:25brixenthe specs need to describe what MRI actually does
20:30:34dbussinkbrixen: i've updated it: https://gist.github.com/051f7dd9af757b1230cc
20:32:09brixendbussink: ok, we need to spec windows too
20:33:41dbussinkbrixen: https://gist.github.com/051f7dd9af757b1230cc
20:33:49dbussinki'm still a bit unsure on the exact wording
20:34:02dbussinki'd like to make clear that whatever you do on windows, you always get true back
20:34:49dbussink(which isn't inline with the documentation btw)
20:35:00dbussinkso that's something i'd prefer to be clear from it
20:35:06dbussinkbut i can also add a comment
20:35:12dbussinkor just don't bother with it
20:37:35brixendbussink: the spec already says that
20:38:19brixendbussink: describe "for a terminated child" sounds better than "after..."
20:39:22brixendbussink: also, describe "for a child that exited normally"
20:41:03dbussinkbrixen: ok, but i'll update those others with this style too then
20:41:06dbussinkfor now, first some sleep
20:43:11brixendbussink: ok, thanks!
20:44:43wyhainesDoes Rubinius have any known issues with being built under GCC 4.3.x?
20:45:36brixenwyhaines: I don't see any tickets for issues
20:47:44brixenwyhaines: what platform are you on?
20:48:10evandbussink: i'm giving up on this bug for now and switching back to 1.1 work
20:51:03wyhainesbrixen: A few different ones. I was testing on an Ubuntu based system. It builds, but some of the threading tests are incredibly slow. Running the tests on a relatively slow AWS instance is an order of magnitude faster than the fastest test run I've seen off of a dedicated Ubuntu box that should be faster than the AWS instance.
20:51:33wyhainesJust speculating about possible causes. The compiler version is one difference.
20:52:04brixenodd
20:52:04evanwyhaines: very unlikely.
20:52:17evanit being a compiler performance issue
20:52:23evannever seen that
20:52:31evanrbx isn't as compiler dependent as MRI
20:52:52evanbecause we don't blindly scan the call stack
20:53:43wyhainesevan: *nod* That's good to know.
21:00:54duncanmvman the capi testsuite is so clever
21:01:05duncanmvI would had never came up with such thing to test a C api
21:01:31evanduncanmv: well, we wanted to write the tests in ruby
21:01:34evanthis was the best way.
21:01:35duncanmvprepares his first patch
21:16:58dwaiteduncanmv: you never forget your first
21:18:14evankrrrronos: you around?
21:18:22krrrronosyep
21:18:31evanfor ticket http://github.com/evanphx/rubinius/issues/#issue/371
21:18:36evandid that code come from somewhere?
21:18:45evani'm trying to decide if it needs to be in 1.1 or not.
21:19:02krrrronosmmm from somewhere?
21:19:07krrrronoswhat do you mean?
21:19:14evanyeah
21:19:21brixenfrom an app?
21:19:22evandid you see it in someones ruby code in a gem?
21:19:25evanyeah or an app
21:19:29krrrronosIt's mine
21:19:43evanso you do that in some real code of yours?
21:23:11krrrronosYou confused me :/ I just fix the reported issue. I never use the code somewhere else.
21:23:45evankrrrronos: sorry
21:23:48evanlet me start over
21:24:12evanwhere did the code for this ticket come from? did you see it in a gem or app?
21:24:32evanhow did you find it?
21:24:57krrrronosAre you talking about 1st comment in the ticket?
21:25:09evanno
21:25:15evani'm talking about the ticket itself
21:25:17evanthat you openned
21:25:36krrrronosarrr
21:25:37krrrronossorry
21:26:37krrrronosNo it is not from gem
21:28:09krrrronosMy friend asked why the code works the way. I checked it and figured out, that the result in MRI and rubinius are different.
21:29:24krrrronosI've never seen it anywhere else.
21:29:42krrrronosdo you understand me?
21:29:57evanyep
21:30:52duncanmvis under the impresion that he compiled rubinius HEAD using 1.0.1
21:31:27brixenduncanmv: rbx -v should tell you
21:31:40brixenduncanmv: or do you mean you built rbx using rbx?
21:32:43duncanmvfalse alarm
21:33:01duncanmvrbx from head says 1.0.1
21:33:02duncanmvrubinius 1.0.1 (1.8.7 6e7c8e82 2010-06-03 JI) [x86_64-unknown-linux-gnu]
21:33:16duncanmv's new method in C API passed the spec
21:34:27brixenduncanmv: ahh yeah, our version doesn't change until the next release
21:34:31brixenpotentially confusing
21:34:51evanwe were just discussing that :)
21:37:10duncanmvrealizes he has a old fork of rubinius on github with a llvm doc update
21:40:37krrrronoswill hydra be merged in 1.1 ?
21:40:50evanno
21:40:58krrrronosok
21:43:29duncanmvwhat is hydra? no GL?
21:43:42evanduncanmv: yep.
21:43:59evanthat work is happening in parallel with 1.1
21:44:04evanon the hydra branch
21:45:14duncanmvwho is the "C API guy?" (for a pull request)
21:45:51evanme probably.
21:46:22duncanmvsent :-)
21:46:44evanok, i've got some bad news.
21:46:52evanyou need to split up the specs from the change
21:46:53evaninto 2 commits
21:46:59evanbefore I can merge it in
21:47:09duncanmvargh
21:47:17evanall changes to the spec/ruby/ dir have to occur isolated.
21:47:23evanso that brixen can easily merge it with rubyspec
21:47:26evansorry about that.
21:47:39duncanmvwipes the git repo again
21:47:45evanwait wait
21:47:50evanyou don't need to do that at all
21:47:57duncanmvwhat should I do?
21:48:05evangit reset HEAD^
21:48:09evanmake the 2 commits
21:48:11evanthen
21:48:13evangit push --force
21:48:20duncanmvok
21:48:41duncanmvso spec/ and vm/ separated
21:48:49evanno
21:48:54evanspec/ruby seperate from everything else
21:49:31evanit's similar, but not the same.
21:51:00duncanmvresent
21:52:34duncanmvevan: my next patch will be to document that in docs/contributing.txt
21:52:41evanok
21:53:37duncanmvsymlinked .rvm/repos/rbx-head to his local git and found the perfect workflow to fix rbx and test his gems
21:54:38duncanmvevan: I guess I forgot to expose the method in ruby.h
21:54:45evanyep
21:54:50evangood catch
21:55:13duncanmvneed to git reset HEAD^1 again?
21:56:22duncanmvevan: in MRI it is in intern.h
21:56:30duncanmvshould I add it there or in ruby.h?
21:56:34evanruby.h
21:56:37duncanmvok
21:56:38evanwe don't put anything in intern.h
21:56:56evanyou don't need to git reset
21:56:59evanjust do another commit
21:57:18bdheemandbussink: hi
21:58:46bdheemandbussink: I successfully build rubinius from git as a debian package, see http://pastebin.com/M08e39wa
22:00:47evanbdheeman: talk to srbaker
22:00:50evanhe was doing the same thing
22:01:08bdheemanevan: ok
22:01:12srbakeryes is.
22:01:16brixenduncanmv: it's documented in doc/specs.txt
22:01:27srbakerbdheeman: where'd you put "runtime" for FHS compliance?
22:02:02bdheemansrbaker: /usr/lib/rubinius/1.0/runtime
22:02:20srbakerah, same, sans 1.0 for me. prob a good idea
22:02:44srbakeri'm just waiting for my desktop to get here so i can run a bunch of tests before uploading
22:02:48srbaker(into debian, that is)
22:02:59bdheemansrbaker: please try or inspect the deb from http://anu.homelinux.net/pub/Debian/
22:03:24srbakerwill do
22:04:59bdheemansrbaker: thanks, I have build a source.deb as yet; still need to improve the get-git-source stanza a bit
22:05:15bdheemans/have/have not/
22:05:32srbakerokay. we've probably duplicated a lot of effort
22:05:47srbakerif you have the dsc qnd the diff, i'll look at and attribute when i upload into the archive if i use anything
22:05:48bdheemansrbaker: :)
22:06:24srbakeror just tar up your archive with changes and email it to me, steven@stevenrbaker.com
22:06:29bdheemansrbaker: sure, shall try making these available by tomorrow
22:06:32srbakerthanks
22:06:43bdheemansrbaker: you're welcome :)
22:07:12srbakeri've just been being lazy until my computer shows up here :)
22:07:25srbakeri also have goods packages, and the rest of the cucumber dependencies pretty well ready to go
22:07:53bdheemansrbaker: same here, I also was postponing it since long
22:12:56bdheeman/me date -R
22:12:57bdheemanTue, 24 Aug 2010 03:42:56 +0530
22:13:34brixenbdheeman: you come from the future!
22:13:34bdheemanit is 3.43 AM here, bye all :)
22:13:36brixen:)
22:13:49brixenbdheeman: thanks for the rbx love
22:13:58bdheemanbrixen: you're welcome :)
22:15:52boyscoutAdd spec for method visibility inside a closure - c83fb52 - Evan Phoenix
22:15:53boyscoutAdd tag def in a closure spec - 207a62b - Evan Phoenix
22:16:42evanthese fucking Socket specs.
22:16:43evanarg.
22:21:45evanis dmacvicar in here?
22:21:54duncanmvyes
22:21:57duncanmvits me
22:22:10duncanmvevan: I opened a ticket for the socket spec
22:22:13evani'm looking at your spec failure wrt getaddrinfo
22:22:14evanyeah
22:22:17evani'm looking at it
22:22:20duncanmvbrixen: told me to
22:22:23evanwtf is ip protocol 132?!
22:23:17evanit's not in netinet/in.h
22:23:23evanand your getaddrinfo is reporting it
22:23:45evanmmm, it appears to be SCTP
22:24:43evanuuuuum
22:24:48evani really don't like these spec.
22:24:52evanit's so brittle.
22:33:19duncanmvnight guys
22:35:02brixenpack, unpack with float... #tears
22:35:54evan:(
22:35:55evani'll bet.
22:36:18evanbrixen: i'm going to make this getaddrinfo spec less brittle but spec'ing less
22:36:39evanie, i'm only going to check return values that have TCP or UDP as a protocol
22:36:57evansince starting to add stuff like SCTP seems like the way of madness.
22:37:21brixenok, sounds reasonable
22:37:25evank
22:37:38brixenI probably need to write a specfic matcher for them
22:37:47brixenthem == this sort of spec
22:38:10evanhm, ok
22:41:35boyscoutNarrow the spec field for getaddrinfo. Fixes #444 - d4bdcaf - Evan Phoenix
22:44:22boyscoutCI: Commit 207a62b failed. http://github.com/evanphx/rubinius/commit/207a62bee02503a40a82fce5d30a904531cc264b
22:45:34evanhrm
22:45:51evanfuck that spec.
22:45:53evanGRRRRRRRRRRRRRRRRRRRR
23:16:06boyscoutAdd spec for return in a sclass - 55ae4b0 - Evan Phoenix
23:16:06boyscoutAdd tag for return in sclass spec - 6c2a368 - Evan Phoenix
23:16:07boyscoutquarantine bad spec - cca1e20 - Evan Phoenix
23:25:37boyscoutCI: rubinius: cca1e20 successful: 3516 files, 15129 examples, 42978 expectations, 0 failures, 0 errors