Index

Show enters and exits. Hide enters and exits.

00:05:08rueActually, about 85MiB is where we start.. lessee where we fall.
00:09:27rueMeh, marginal improvement
00:11:05rueFoiled again
00:11:27rueNext time, Gidget, next time!
00:29:31headiusrue: wowsers, 100MB
00:29:38headiusJRuby repo is only 39MB
00:29:53headiusRubinius > JRuby!
00:30:29blowmage^ so tempted to tweet that
00:30:33brixenJRuby < Rubinius
00:30:38brixenyep, about right :D
00:38:08boyscoutFix UnboundMethod#arity and refactored. - 7e66b73 - Maximilian Lupke
00:38:08boyscoutFix ObjectSpace#define_finalizer. - 314b9e2 - Maximilian Lupke
00:38:08boyscoutFixes several Module instance methods. - f18150a - Maximilian Lupke
00:39:37boyscoutCI: f18150a success. 1444 files, 7122 examples, 23440 expectations, 0 failures, 0 errors
01:23:46rueAlright, now I am done
01:40:33shoepokes rue with a fork, just to check.
04:15:37brixenevan: problem with sending allocate in Object::dup is ByteArray::allocate takes an argument
04:37:34brixenI think ByteArray, Tuple or any other object that must be created at a particular size should not be allocate'able
04:37:56brixenand allocate should always have arity 0
05:00:13brixenperhaps we need the idea of a "dependent" object that cannot be alloc'd, dup'd etc independent of it's owner
05:06:30headiusI agree
07:05:37evanbrixen: hm, ok.
08:39:46tilmanevan: can i kill off the c++ Marshaller class? afaics on the c++ side, we only use UnMarshaller
08:55:55rueWth, stupid lag reconnects
15:54:22evanmorning
15:54:39slavahi
15:54:49evanslava: saw your tweet
15:54:52evanwhat are users reporting?
15:54:54evani'm curious
16:07:23malumaluhm, shouldn't ::Foo be a valid constant name?
16:07:33evansure
16:07:40evanwhere are you having a problem with it?
16:08:11malumalua wrong spec which expects ::Name to be a invalid const name
16:08:26evanweird
16:08:27evanwhere at?
16:08:31evanmaybe it's a strange edge case
16:08:57malumalufrozen/core/module/remove_const_spec.rb:40
16:10:03evanah
16:10:06evanok
16:10:13evanso thats likely correct
16:10:15evanthat spec
16:10:30evanbecause thats accessing the constant as an explicit string passed to the remove_const method
16:10:42evanand remove_const doesn't parse the string to figure out scoping
16:10:53brixenyeah
16:10:58brixenit passes in MRI
16:11:02brixenit's correct
16:11:09malumaluok
16:11:10brixenunless you file a bug report for MRI
16:18:27rue_XIVSimilar case to const_get, I suppose. Perhaps the spec should make it clearer?
17:18:03radarekhello
17:18:16radarekrubinius is not building on 64bit
17:18:19radarekhttp://pastie.org/442970
17:18:27radarekI don't know if it's correct patch
17:18:54radarekbut compiler was complaining about "control reaches end of non-void function"
17:19:16evanradarek: yeah, i've got that patch to apply
17:19:19evani'll do that shortly.
17:19:35tilmanevan: pushed rbc stuff to my fork at gh, the branch is called rbc-rework
17:20:13radarekevan: ok
17:20:57tilmanvm startup time (as measured by running a hello world script) improved ~19%. the compiled kernel is now ~35% smaller
17:21:34tilmanloading rbc with rbx in ruby is mostly the same i think. same with compiling stuff
17:24:24evank
17:24:24evanone sec.
17:24:33slavatilman: what did you optimize?
17:25:11tilmanevan: take your time.
17:26:07tilmanyou'll notice the varint stuff in marshal.cpp can need a refactor. i didn't bother to do that yet -- if you're going to accept that stuff, i'll clean things up first
17:26:19tilmanslava: went from ascii to a binary format
17:38:01evantilman: i don't get the varint code
17:38:04evancould you explain it?
17:38:29evanseems like it keeps adding bytes while the high bit of the byte is set?
17:39:53tilmanevan: 8 bits on the wire contain 7 bits of payload. the msb is set if there's more data to read
17:40:23evanso the last byte doesn't have the high bit set?
17:40:35tilmanexactly
17:40:45evanso if the value < 128, it's just a raw binary rep of the number
17:40:52evanie, 1 is \1
17:40:52tilmanyep
17:41:04evanbut 128 is
17:41:15evan\129\1
17:42:15evanyes?
17:42:39tilman128 is \128\1
17:43:34tilmanin 128, none of the 7 lsbs are set, so we'd end up with a payload of 0
17:43:46tilmanbut we need to set the msb to indicate there's more data to come
17:43:53tilmanso: 0 | 128 = 128
17:44:19tilmanevan: see http://code.google.com/apis/protocolbuffers/docs/encoding.html#varints
17:46:18evanah
17:46:18evanok
17:46:44evanso \129\1 is 129?
17:47:48evanI wish bit twiddle math in ruby wasn't so slow.
17:47:53tilmanyes
17:48:42evanseems weird to me that the bytes presense alone carries a value
17:48:46evanbut whatevs.
17:50:35evantilman: are you going to write a standalone decoder?
17:51:06tilmanwhy? to prove it's not slower?
17:51:18evanso that I can check out the contents of a .rbc
17:51:20evanfor debugging.
17:51:41tilmanokay, will do
18:28:54boyscoutPruned silly instructions from the set - f975946 - Evan Phoenix
18:37:09boyscoutCI: f975946 success. rbx: vm/exception.cpp:114: void rubinius::abort(): Assertion `0' failed.
18:38:57evani guess brixen committed that abort
18:38:58evan:/
20:02:30malumaluare immediate objects garbage collected?
20:03:20evanno
20:03:22evanthey're immediate
20:03:26evanthey don't use any memory.
20:03:43malumaluhm, yes, that makes sense ^^
20:13:48brixenevan: nope, didn't commit that
20:13:56brixenI was going to poke at it some more
20:14:08brixentry to see why the vm* is NULL
20:15:43brixenwe should probably sweep all the places that are calling abort()
22:57:33evanmuhah
22:57:40brixenheh
22:57:42evanluis commited the pure ruby readline he told me about
22:57:43evanhttp://github.com/luislavena/rb-readline/tree/master
22:57:52evanrbreadline.rb is 256k
22:57:54evanwowzers.
22:57:55headiuscool
22:57:59evanit's a straight port of the C lib.
22:58:06evanliterally
22:58:09evanfunction name for function name
22:58:13headiusthat's nuts
22:58:17brixenhah
22:58:18evanyeah
22:58:19brixenum yeah
22:58:24headiusgithub chokes trying to display it
22:58:41evanyep
22:58:48evanawesome huh.
22:58:57headiusawesome in an "is that useful" sort of waty
22:59:08headiusI know koichiro has been working on an ffi readline
22:59:41brixenevan: you tried it in rbx yet?
22:59:45evannope
22:59:57evango for it
23:00:07brixenyeah, cloning now
23:00:34brixenlooks like park heesob did the port
23:00:41evanyeah
23:00:44evanyou know who that is?
23:00:50evanluis had it done as a bounty
23:00:52malumaluis "USZ!" some kind of debug message? i just got it right before a seg fault
23:01:01evanmalumalu: yeah
23:01:18evanmalumalu: means the GC detected an erro
23:01:23evanand dumped the program
23:01:35malumaluok
23:01:37brixenevan: I don't know him, just see his posts on ruby-core
23:01:51evanmalumalu: best is to try and get it to happen consistently
23:01:55evanand report how you're doing it
23:02:00evanso we can fix it
23:02:26evanit could be worse code
23:02:33evanat least there are a lot of comments
23:02:47malumaluno, i messed around with the gc myself
23:02:58evanit strangly mixes ivars-in-class-body and constants
23:02:59malumaluso i think it was my fault
23:03:01evanmalumalu: ah! you're fault!
23:03:04evanyour
23:03:16malumalu:P
23:03:18evanit means, basically, that the GC, while walking the heap
23:03:22evandetected an invalid object
23:03:33evanusually means that, on a previous walk of the heap, it wasn't seen and the memory was reclaimed
23:03:41evanbut it has since then come back into view
23:03:48evanour GC is accurate
23:04:01evanso you have to describe accurately where objects are stored
23:04:20headiusevan: btw, there's a small snag with the talk
23:04:34evanrutrow
23:04:44headiusI don't have Keynote (officially supposed to use OO for everything)
23:04:48headiusso I'll have to pick up a copy
23:04:53evanoh
23:04:58brixenevan: it works!
23:05:02evanbrixen: no way.
23:05:03brixenshould I import it
23:05:06brixenyes way
23:05:07evanyou're pulling my leg.
23:05:09evanstop it.
23:05:10brixennope
23:05:12brixenhehe
23:05:13evan:D
23:05:15evanthats awesome!
23:05:18headiusI wonder if there's any performance consideration
23:05:21brixenok, I'll double check
23:05:22headiusI'd almost boot what we have for that
23:05:24evanfor readline? nah
23:05:30evanif you use readline in a loop
23:05:31headiusit's all user interaction
23:05:33evanyou're insane.
23:05:35headiusheheh
23:05:40evana fast loop
23:05:41evani should say
23:05:56evanunless the idea is to see how fast the user can hit the return key
23:06:01evanREADY..
23:06:02evanGO!
23:06:08headiusthere is one catch you should be aware of...we use a pure-java readline, but it still needs a native lib on windows to set the terminal into the right state
23:06:15headiusso pure ruby won't be enough forever
23:06:22evanheadius: yeah, luis mentioned that to me actually
23:06:25headiusok
23:06:30evanhe had this written because there was no readline for windows
23:06:33headiusstoopid windows
23:06:36evani'm looking for that code now actually
23:06:50headiusreadline-ffi may be a way out for that though
23:06:54evanif we can get at the terminal state functions via FFI
23:06:56evanwe're golden
23:07:17evanbrixen: it's GPL :/
23:07:18evancrap.
23:07:25brixenoh yeah, just saw that too
23:07:26evanwe should ask if he'd release it under BSD
23:07:27brixenwtf
23:07:32brixenyeah
23:07:40brixenit really seems to work though
23:07:47evanthats..
23:07:49evanSO AWESOME.
23:08:11brixenyeah
23:08:50headiusdoes anyone willingly pick GPL anymore?
23:08:56evanbingo
23:09:00headiusI think people do it just because they don't know
23:09:02evanit uses Win32API
23:09:12headiusoh yak
23:09:18evanwe should rebuild Win32API on top of FFI
23:09:19headiuswin32api is based on dl right?
23:09:19evanif we can
23:09:30evani think so, yeah
23:09:33headiusif it's on dl, it may just work with wmeissner's dl/ffi stuff
23:09:34evanit's almost exactly the same
23:09:42headiustwo birds, etc
23:09:49brixenit's not really that complex of code
23:09:56evanlibrary, name, [arg_types], ret_type
23:10:14evanit returns them as .call'able objects
23:10:32evanto support what rbreadline uses
23:10:35evanit would take probably 10 minutes
23:11:08headiusevan: you should look into wmeissner's dl stuff first
23:11:13evanok
23:11:13headiusif we could get that 100% it would be sweet
23:11:25evanyep.
23:11:44evanhehe
23:11:48evanthis code is actually pretty neat
23:11:53evanlike
23:11:57brixenI think that license is a copy of the C readline license
23:11:59evanhe defines methods inside rescue's
23:12:07evanbrixen: but it's a port
23:12:12evanit's not required to be the same license
23:12:13brixenok
23:12:15evanit doesn't share anycode
23:12:17brixenright
23:12:24brixenthat's what I wondered
23:12:31evanat least thats how I understand it
23:12:34brixencool
23:12:39evani'm sure RMS disagrees with me
23:12:43brixenheh
23:12:55evanbut we should email him
23:13:04evanactually
23:13:08evanI think that luis owns the code
23:13:16evanbecause he paid for it
23:13:18evanvia a bounty
23:13:22brixenyeah, too bad he's no lurking in our channel
23:13:30evanso luis can rerelease it
23:13:35brixencool
23:13:38evani'll ask him.
23:13:42brixenk
23:14:28headiusit could be argued as a derivative work
23:14:32headiusbut fuck all that
23:14:35evanyeah
23:14:40evanyou can agrue that about everything
23:14:48headiusRMS is a nut
23:14:50evanno one has written anything in a bubble since 1960
23:15:12headiusGPL is tantamount to software patents, going by his definition
23:15:14evanand that work was probably done in actual geodesic dome
23:16:06evanwe should put out a bounty for someone to write specs for this
23:16:08evanso we can refactor it
23:17:25headiusI wonder if koichiro has done anything for readline-ffi
23:17:53evanwell, sadly readline-ffi won't work on windows anyway
23:18:06evanand i want to try and not put myself too much into a hole
23:18:11evananymore than we already are :D
23:18:19headiuswhy wouldn't it work on windows?
23:18:27evanthere is no libreadline.dll
23:18:28headiusit would just need to make those additional win32 calls as well
23:18:29evani'd imagine
23:18:37headiusahh, well that's true
23:18:48evanand i'm assuming readline-ffi is a binding to libreadline
23:18:50headiusit would have to ship a build libeditline
23:19:01headiusbuilt
23:19:26headiusbut I was more talking about whether he's written tests/specs for it
23:19:46evanah ah.
23:19:58evanthat would be hard
23:20:02evanbut one thing I love about rbreadline
23:20:13evanwe could pretty easily hook it up to the web
23:20:15evanor anything
23:20:32evanie, a real readline that doesn't depend on a terminal
23:20:41evanyou could use it in cocoa, or something
23:20:42headiusyeah, our readline is used for a swing IRB console too
23:20:52headiusbecause it's just a virtual buffer
23:21:15headiushmm, I think we even ship that still
23:21:26headiusrun jirb_swing
23:21:35headiustab completion pops up a small dropdown
23:21:49evanluis wrote me back
23:21:53evanhe says he'll ask park
23:24:44rueAlright, so I am going to just stop using Ruby and move to Clean instead