Index

Show enters and exits. Hide enters and exits.

00:11:54brixen1.9 still just randomly breaks shit :(
00:12:28brixenor is it broken or change? inquiring minds want to know
00:12:47brixenthese pack specs passed last week
00:12:57brixenugh, PITA to track this shit down
00:13:07brixenis annoyed
00:31:11evandbussink: poke
00:31:14evanhe's probably asleep.
00:32:11brixenprobably
00:32:18brixenor drunk
00:32:25brixenor drunk and asleep
00:33:44evanheh
00:33:58evanfor me, it's highly likely they're occuring at the same time.
00:34:06brixenheh
01:05:49goyox86guys is there a convencio about what rbx kernel exception messages messages should look like
01:05:58goyox86??
01:06:02evanhow do ya mean?
01:06:15prophileascii art pictures of furry animals
01:07:18goyox86evan: I've just working in some Fiber failing specs and for example Fiber.new should raise a ArgumentError if it is called without a block
01:08:03goyox86I'm raising the Exception and the spec pass but should i show the same message as in MRI: "tried to create Proc object without a block"
01:08:56evanif the message makes sense, sure
01:09:02evanbut you don't have to use the exact same message.
01:09:06brixengoyox86_: 2 things: 1. if the MRI exception makes sense, copy it, 2. we don't spec the exception msg itself
01:09:07evanwe decided that long ago.
01:09:40brixengoyox86_: be as precise, descriptive, and concise as you can in the error msgs
01:09:59brixenFFFFF ucking encodings
01:10:01brixengrrr
01:10:43brixenI swear these specs were passing
01:11:32goyox86brixen: encodings, grrrr, i remember a Rails app with MRI 1.9.1, i was going nutz!
01:11:48goyox86evan: what
01:12:02evanpardon?
01:12:30goyox86evan; waht happened with the gems, dependencies bug in 1.9.2, they used your patch?
01:12:53evanyeah
01:12:57evanthey applied my patch to 1.9.3
01:13:06evanit's going to be backported to 1.9.2 tomorrow
01:13:21evanit makes "require 'rubygems'" undo the prelude weirdness
01:13:31evanso that there is a workaround for the 1.9 weird logic.
01:14:33goyox86evan: I can't believe a bug as important like this wasn't flagged as priority :s, wycats did well making the alarm :]
01:14:47evanyeah
01:14:51evani'm not happy with the situation
01:14:54evanor really with my fix
01:14:57evanbut it's better than nothing.
01:15:31goyox86evan: it's a fix, after all :]
01:16:02brixenI think the only way to ensure these specs work with encodings on 1.9 is to make a matcher that does a byte-by-byte compare
01:16:08brixenindependent of any ruby method like #==
01:16:28brixenI don't know what they changed, but this shit is a bitch :(
01:16:57evanbrixen: you can't set the encoding to ASCII?
01:17:02evanor BINARY i gues sit is.
01:17:03evanit is.
01:17:15brixenwell, here's the problem
01:17:33brixen#pack apparently encodes based on the encoding set in the file with a magic comment
01:17:45brixenand then that has to match what the expected string is
01:18:13brixenbut if we set encoding to ascii-binary, what does that say about correctness of #pack when it's set to utf-8
01:18:24evanug.
01:18:25brixenor ISO-8859-1
01:18:25evannothing.
01:18:28brixenor etc
01:18:33brixenso. frustrating.
01:18:41evancan we ignore that for now?
01:18:56brixenwell, these specs were passing when I wrote them
01:19:10goyox86evan:fibers are currently implemented in C++ isn't?
01:19:11brixenand I added some today and tested with preview3 and boom, failures
01:19:20brixenso I'm like WTF dudes and dudettes
01:19:23evangoyox86_: yes.
01:19:51evanbrixen: zoinks.
01:20:46brixendid they break that ascii-binary compares with any other encoding or something?
01:20:54evanpossible
01:20:59brixenhow is anyone to know these things
01:21:25brixenbecause the file encoding was ISO-8859-1 and all the expected strings were force_encoded to binary
01:21:31brixenthat's the way yugui set it up
01:22:26brixenand her comment in the pack_spec.rb file is:
01:22:34brixen# Script encoding of this file should be neither ASCII-8BIT, US-ASCII nor UTF-8.
01:22:37brixen# This makes it easier to verify that Strings are converted into correct encodings.
01:22:43evanyou should ask wycats
01:22:45evanhe's an expert.
01:24:37goyox86wycats has become an encoding expert, his posts helped me a lot to understand WTF was happening with a Rails app i was working on
01:26:03evangoyox86_: you know Rubinius::Fiber is missing stuff, right?
01:26:59goyox86evan: I know :], but i was just trying to make some kernel specs pass :]
01:27:16evanah ok
01:27:18evanno problem
01:27:26evanjust making sure we're all on the same page.
01:28:08goyox86evan: no pro bro, i know 1.9 features are planned for the future :-)
01:39:12brixenok, whew, this was a problem with the with_feature guard not activating
01:39:23brixen#pack sets the encoding it ascii-8bit as one would hope
01:39:33brixens/it/to/
01:40:31evanman, just discovered a mega fail.
01:40:40brixen?
01:40:44evani totally hooked up finalizer support for data objects wrong
01:40:50evanand by wrong, i mean not at all.
01:40:55brixenoops
01:40:56evani wrote Data::finalize
01:41:04evanbut never called needs_finalization with it.
01:41:16evanI stupidly allowed the finalizer to call to be null
01:41:25evanand so it went uncaught until now.
01:42:39evanI must have gotten distracted
01:43:16brixenhm
01:43:37brixenI think I'll make our .mspec config MRI friendlier
01:43:44evani'm a little worried that finalizers aren't running much too
01:43:49evanneed to find that out now.
01:47:18evanfudge.
01:48:06brixen:(
01:49:24evan100000.times { BigDecimal.new("100.03") }
01:49:34evanthings. get. very. slow
01:51:01evanug.
01:51:04brixenafter you fixed the Data finalizer issue?
01:51:06evanthey never die.
01:51:17evanno, finalizers just brought this to my attention.
01:51:18brixenor something is keeping them alive
01:51:23evanyep.
01:51:26brixenhmm
01:51:31evani know too
01:51:38evanbecause a Data's inside can be written to directly
01:51:54evani was calling remember_object when it was created
01:52:04evanand remember_object inside Data::Info::mark
01:52:06evanin other words.
01:52:14evanwe've never been collecting any Data objects.
01:52:15evanever.
01:52:20brixenouch
01:52:37evanthat might explain why datamapper gets so slow.
01:53:57brixenok, food, bbiab
01:54:02evanlater.
03:16:59Plymouthwhen's a windows release coming for rubinius?
04:38:35cremesPlymouth: the project needs windows developers to pitch in; no window release until it gets some windows lovin'
05:12:36boyscoutAdded start of Ragel-based Array#pack, String#unpack. - b706b66 - Brian Ford
05:12:36boyscoutAdded benchmarks for String#unpack('C'). - bfef694 - Brian Ford
05:12:36boyscoutAdded specs for String#unpack Cc directives. - a7af57b - Brian Ford
05:12:36boyscoutFixed be_computed_by matcher to display inspected value. - f2e0ea2 - Brian Ford
05:12:36boyscoutAdded Array#pack specs for embedded space/NULL. - ee6fde2 - Brian Ford
05:24:56boyscoutCI: rubinius: ee6fde2 successful: 3458 files, 13692 examples, 41271 expectations, 0 failures, 0 errors
05:29:32dbussinkevan: you rang?
05:34:55dbussinkbrixen: you deliberately didn't add the ragel source files?
05:55:53brixendbussink: the ragel files are deliberately in rapa
05:56:02brixenbecause this is not just a rbx project
05:56:15brixendbussink: I gave you the link :P
05:57:16scooprrapa?
06:02:17brixenragel pack
06:02:25brixenor RAgel PAck
06:04:53scooprrapa (fi) ~= mud (en) :P
06:05:14brixenheh, nice :)
06:06:27brixenalthough, in Ruby we write that =~ :D
06:07:10scooprI always get that wrong :P
06:07:31brixenme too, but the ruby parser never fails to correct me :)
06:30:02dbussinkbrixen: ok, well, more wondering about how people can easiest contribute then by providing new formats :)
06:38:16brixendbussink: it's a git repo, have you read the readme? :P
06:38:32brixendbussink: and people can contribute also by fixing the horrid pack/unpack specs
06:38:33dbussinkbrixen: hehe, just want to know where to point people to :)
06:38:37brixenso I don't have to do it all
06:39:26brixenalso, I need to work on this a bit without too much interference
06:51:05dbussinkbrixen: can imagine yeah, this is plain gruntwork
06:51:07dbussinknot plain maybe, but gruntwork still
06:51:29brixenwell, more like figuring out what works
06:51:36brixenthen it will be easier to add stuff
06:51:42brixenI think the groundwork is pretty good
06:51:50brixenI'm doing the integer formats next
06:52:03evanhah. more gc bugs.
06:52:15brixen:(
06:52:17evanfinalizers were, in the case of mature objects that needed finalization
06:52:25evankeeping the object alive always
06:52:29evanand thus never finalizing
06:52:30evanoops!
06:52:46brixenevan: you know what, this is great news :)
06:52:53evanwhich, in the case of Data objects, was all of them.
06:52:54brixenrbx memory profile should be much better now
06:53:11brixenI'll take a bug fix over a hard optimization any day
06:53:16evantotally.
06:53:28evanthere are still some bugs that need some thought.
06:53:35evanI think.
06:53:39brixenheh
06:53:50brixenare you wondering what you don't know that you don't know?
06:53:54evanso, consider this.
06:54:05evanno, i know what i don't know.
06:54:10evanso, you have a Data
06:54:20evanand thusly an RData* to use for Data_Make_Struct
06:54:40dbussinkevan: you rang? or was it for this issue?
06:54:41evanI used a trick to have the RData part be embedded in Data
06:54:47evanby making them always mature and pinned
06:54:53evandbussink: I got it. :)
06:55:05dbussinkevan: found this through the valgrind stufF?
06:55:07evanso, that RData* has the void* for the struct that the user wanted
06:55:16evandbussink: via a long path, yes.
06:55:31evandbussink: oh oh, did you compile valgrind by hand for OS X? or use ports? I thought you said ports.
06:55:44dbussinkevan: macports yeah
06:55:48dbussinkvalgrind-devel
06:56:04evananyway, so Data->RData->void*->....->VALUE
06:56:25evanthat VALUE is some object that will be picked up by a custom mark function
06:56:32evannow the issue:
06:57:05evanif Data is mature and the VALUE is young, VALUE won't be seen properly by the young GC
06:57:17evanthere is no write barrier for when the user sets VALUE
06:57:23brixenhrm, indeed
06:57:34evanbecause thats in foreign code.
06:58:10evananyway, i'll work on this tomorrow morning
06:58:24evanbut i'm thinking about having Data have some special case code, capi handle wise
06:58:44brixenyeah, seems like it must
06:59:00evanwhere by the young gc will consider Data handles always (calling the mark)
06:59:20evanbut the mature gc will treat the handles as "normal", ie, letting them expire via reachability
07:00:06brixenhmm
07:01:04evananyway
07:01:07evani'm going to head to bed.
07:01:13brixenok, night!
07:01:16evannite!
07:01:17brixenis processing
11:36:31dbussinktarcieri: ping?
15:00:44tarcieridbussink: heh was long since asleep then
15:00:51dbussinktarcieri: i guessed so
15:01:02dbussinktarcieri: wanted to bug you with some reia install issues :)
15:01:17dbussinkor at least not being able to just do 'rake'
15:01:28tarcieriyou should just be able to do rake
15:01:51dbussinktarcieri: this is what i get: https://gist.github.com/d28f18e6ed68fe3732dd
15:02:01dbussinki had to change the toplevel rakefile to accept 5.8 as a version too
15:02:09dbussinkbecause it assumes 3 part version numbers
15:02:40tarcieriyeah
15:02:44tarcieriI see
15:02:56tarcierithere's an error in the source code, but the old preprocessor didn't care
15:02:57tarcierilol
15:03:25tarcieriapparently they've retroactively added one which does
15:04:00dbussinki'm just a good bug magnet :)
15:04:06tarcierithere ya go
15:04:19dbussinktarcieri: cool :)
15:04:26dbussinktarcieri: you want a patch for that version number thingy?
15:04:32tarcierisure!
15:04:43dbussinkit's totally trivial, but hey, who cares :P
15:05:48tarcierimatch(/\d\.\d(\.\d)?$/)
15:05:49tarcieriheh
15:05:53dbussinktarcieri: https://gist.github.com/b11f2ccf7bac2c17a53f
15:06:01tarcieriyeah
15:06:02tarcieriheh
15:09:51dbussinktarcieri: already using it for any serious business?
15:10:08tarcierino
15:10:09tarcieriheh
15:10:15dbussinkah, too bad :P
15:10:23dbussinkbut i'm going to head home :)
15:10:27tarcierihttp://github.com/tarcieri/lolcat
15:10:34tarcierithat's about all I use it for right now
15:10:35tarcieriheh
15:54:11evanmorning
15:54:39brianmariowassup dude
15:58:52brixenmorning
16:11:43brixenevan: so, you would keep a list of Data objects that the young GC would traverse?
16:11:51brixenon every collection
16:11:57evanno
16:12:13evani'd see it via the traversal of the handles
16:12:22brixenah ok
16:12:35evanone change I think i'm going to make
16:12:40brixenthose handy handles
16:12:42evanI have Data as a mature object so I can pin it
16:12:48evanI'm going to ditch that
16:13:04evanbecause in the case of massive Data creation (10000.times { BigDecimal.new })
16:13:10brixendo we use the fact that it's pinned?
16:13:14evanthe effects are delayed until a mature collection
16:13:15evanyeah
16:13:16evanwe do.
16:13:31evanbecause I pass out an address to the inside of it as the RData*
16:13:35evani'm going to ditch that.
16:13:38brixenah yes
16:13:49evanso that Data can be young, with a handle, and die quickly
16:13:54evanwithout burdoning the mature GC
16:14:14brixencool
16:14:36evanthere is some hilarious intellectual wanking on the fonc list.
16:15:08brixenoh, I set a filter on that and missed the new posts
16:15:10brixenreads
16:17:01evani've just scanned it
16:17:07evanbut it's such wanking.
16:17:33brixenyou mean the "goals" thread?
16:19:47evanyeah
18:37:43dbussinkafternoon
18:38:03dbussinkevan: how bad is that performance on creating those bigdecimals?
18:38:15evanit's not great.
18:38:20evanbut i've fixed the bug
18:38:31evanperf still isn't super for capi handles compared to MRI
18:38:33evanbut we knew that.
18:46:28dbussinkevan: guess that isn't easy to improve right?
18:46:41evanwell, i've got a few ideas.
18:46:46dbussinkevan: or maybe provide some mechanisms that people can use to improve their extensions?
18:46:52evani don't know if we need to though
18:47:10evanmy benchmark is very synthetic
18:47:13dbussinkwould be great if that isn't needed of course :)
18:47:14evanit might be an issue in real code.
18:50:07dbussinkshould write up some benchmarks that run stuff through the do driver
18:50:09dbussinkdrivers
18:50:13dbussinkfor different databases
18:50:21evanyeah
19:35:56dbussinklooks some basic DO stuff is jit friendly ;)
19:42:00dbussinkevan: i've made some rough benchmark numbers which mainly exercise the capi stuff
19:53:45evank
19:56:03dbussinkevan: these are some numbers: https://gist.github.com/ed8ecec55aa752444040
19:56:07dbussinkrbx and mri
19:56:25dbussinkthe weird thing there is that mysql is relatively a lot faster on rbx compared to postgres
19:56:34dbussinkwhile the c code parts are very much alike
20:05:26evani've got the capi/finalizer fix sorted
20:05:34evandbussink: could you post the code for the benchmarks?
20:09:28dbussinkevan: https://gist.github.com/923f464f71c50b2de25a
20:09:40dbussinkyou need the do_mysql, do_sqlite3 and do_postgres gems for that
20:09:54dbussinkyou can also just run the sqlite3 ones to start with
20:10:14evank
20:11:42slavaevan: heh, there's a photo of you on wikipedia
20:11:54slavahttp://en.wikipedia.org/wiki/File:Paul_Wall.jpg
20:12:23ruedbussink: Parallelises better?
20:12:39dbussinkrue: how do you mean?
20:12:41evanslava: haha
20:13:27sbryantevan's got the grill bling.
20:20:37evanslava: i wonder if grillz iritate the inside of your gums
20:20:44evanthey probably would mine.
20:21:40slavaevan: I've never worn one
20:22:08evani wasn't suggesting you had, but if you had, i'd demand pictures.
20:22:27imajesi think you should get some grillz evan
20:22:32imajesit really is the next step up
20:22:44goyox86slava: That dude has more money in his mouth than i've earned in my entire life lol
20:23:05evangoyox86: it's probably cubic zirconium
20:25:41goyox86evan: i've never herad that term, heh
20:26:49goyox86evan: according wikipedia the right term is "Cubic zirconia", lol btw nice pic
20:27:40goyox86evan: I think this is "Unobtanium"
20:27:47goyox86:p
20:32:50ReinHhmm, found a potential rbx 1.0.1 bug: l=lambda{|x,y| x+y}; [[1,2],[3,4]].map(&l) gives me a Rubinius::ObjectBoundsExceededError
20:33:02ReinHjustin-george: also, oh hi
20:33:15ReinHon rbx-1.0.1-20100603
20:35:18dbussinkReinH: does it also happen with current master?
20:35:26ReinHgood point
20:35:45ReinHdoh
20:35:47ReinHlet's see
20:36:07ReinHhmm, can I install rubinius from master using rvm?
20:36:19ReinHI'm sure I can... RTFMing
20:37:49ReinHrvm install rbx-head, nice
20:38:20justin-georgehey Rein, how's it going?
20:39:04ReinHjustin-george: well :)
20:39:05ReinHyou?
20:40:16justin-georgeit's hot! Damn hot, real hot. Doing some rearchitecting of the entire New Relic ruby agent.
20:40:33justin-georgethat's why I'm a programmer, the romance and excitement of it all.
20:41:05ReinHno kidding
20:41:11ReinHromantic, exciting and hot
20:45:48brixenReinH: I get [3, 7] from that on rbx head
20:45:51brixensame as mri
20:45:57ReinHcool
20:46:07ReinHcompiling...
20:46:08brixenReinH: but do try there :)
20:46:27ReinHwill do
21:16:47boyscoutRemove defunct subclass array - 279ec3b - Evan Phoenix
21:16:47boyscoutMemory cleanup and C-API finalization fixes - 3854f9d - Evan Phoenix
21:31:13evandbussink: poke
21:32:30brixenhttp://wiki.github.com/graydon/rust/language-faq
21:38:46evanwtf is with benchmark
21:38:49evanlook at these results:
21:39:03evanhttp://gist.github.com/468685
21:39:37evanthats 26s wall clock
21:39:42evanbut the total is 8s.
21:39:46evan?!
21:41:19brixenmultiple threads?
21:41:31evanthat would be the inverse
21:41:57brixenevan: could you tell me what you get from [0xabab_1212_dede_3434].pack("L")
21:41:59evansmall wall clock
21:42:01evanbig user time
21:42:11evan|Blaze||: perhaps.
21:42:11brixenevan: and also l, V
21:42:18evanthis is a massive write benchmark
21:42:30evanfrom what I can tell
21:42:46evanbrixen: "44\336\336"
21:42:50brixenty
21:42:56evannp
21:44:16evanug ug ug
21:44:34evanthis means that any ruby use of benchmark that ends up hanging out in the kernel will show up low
21:44:45evanbut we don't use utime to get the real user time
21:44:49evanso we'll always report the wall clock
21:44:54evanand be hugely inflated.
21:45:04evanbecause benchmark reports, imho, the wrong column.
21:45:18boyscoutCI: Commit 3854f9d failed. http://github.com/evanphx/rubinius/commit/3854f9dfc7a68afd6e40778ef9e24e2421953f18
21:45:23evanoh hello.
21:45:46evanwtf.
21:45:52evanwhy did a wait spec start failing...
21:54:59brixenI would have opted for a spec failure
21:55:03brixengot a kernel panic instead
22:06:21evan:|
22:57:42evanfinally adding some code I should have added long ago
22:58:00evannamely, method deoptimization when it triggers too many uncommon branches
22:58:33brixenah cool
22:59:22brixensometimes you have to rethink your decisions, even if you are a JIT
22:59:45evanmaking decisions as late as possible means you have to deal with making the wrong ones.
23:00:09evanbut it also means you CAN deal with making wrong decisions.
23:00:15brixenindeed
23:01:06evani have no idea what the right number of uncommon hits is
23:01:08evani'm doing some testing
23:01:11evani had it at 500
23:01:12evani'm trying 5 now.
23:01:16brixenhmm
23:01:31brixendo you know where you were getting a lot of uncommon's piling up?
23:01:49evanI can see the method in question
23:01:53evanand the ip, sp, etc.
23:02:09brixenfor what code? a particular bench?
23:02:10evanand I can feed more info into it
23:02:23evanit's the dataobjects bench dbussink had
23:02:27brixenahh
23:03:07evanI need to be feeding a reason into the uncommon_interpreter
23:03:13evanso it can be even smarter.
23:04:36evani'm guessing that the number doesn't matter a lot
23:04:39evanwhat matters is doing it
23:04:42evani'm testing that now.
23:05:24brixenseems like it should have a certain threshold
23:05:34brixenwouldn't want to deopt on a few misses
23:05:41brixenI'm assuming
23:06:19brixenI wonder if you could tune the number based on the seen types profile
23:06:34evanprobably could
23:06:47evanI could feed in a strength counter to uncommon
23:07:06evanso I could see "oh, a guard with a low chance failed, thats ok"
23:07:17evanor "ah crap! a foolproof guard failed!"
23:07:34evani've got all that info.
23:07:41brixenis the IC dump available through the agent?
23:07:49evannot atm
23:07:51evanbut i could make it so.
23:07:54brixenthat would be sweet
23:08:01evanneed to figure out how to query it
23:08:07evansince the agent isn't really made for a massive data dump
23:08:14brixenah true
23:08:38brixena query based on a method would be kinda cool
23:09:02brixenlike, I wonder what the types flowing through SomeClass#some_method are
23:10:03evancould probably do something like that.