Index

Show enters and exits. Hide enters and exits.

00:05:42lopex leaves the room.
00:08:23imajes leaves the room.
00:26:39nari leaves the room.
00:39:47fbuilesv enters the room.
00:43:25wmoxam enters the room.
00:49:28trythil leaves the room.
00:51:37fbuilesv leaves the room.
00:52:55imajes enters the room.
01:05:34nari enters the room.
01:07:06fbuilesv enters the room.
01:18:07imajes leaves the room.
01:39:34imajes enters the room.
01:41:16brapse leaves the room.
01:41:51yugui enters the room.
01:43:18Defilerdbussink: Sure. Feel free to complain about Vlad to me
01:53:12binary42 leaves the room.
01:53:16binary42 enters the room.
02:02:18rue leaves the room.
02:10:34imajes leaves the room.
02:23:22robin_dewd leaves the room.
02:30:50robin_dewd enters the room.
02:45:04lchin leaves the room.
02:46:31fbuilesv_ enters the room.
02:47:57fbuilesv_ leaves the room.
02:50:17lchin enters the room.
02:53:28fbuilesv_ enters the room.
03:02:05fbuilesv leaves the room.
03:09:13mernen leaves the room.
03:25:39headius_ leaves the room.
03:32:57nari leaves the room.
03:43:27fbuilesv enters the room.
03:43:52benburkert enters the room.
03:45:21cremes leaves the room.
03:55:20fbuilesv_ leaves the room.
03:58:59dysinger leaves the room.
04:05:02dysinger enters the room.
04:19:30trythil enters the room.
04:20:51headius enters the room.
04:37:58headiusI have a proposal for ffi I think is necessary to make it a good cross-impl library
04:38:13headiusI think it needs to be included in rather than available on all modules
04:38:51headiusif by loading ffi all these methods are added to all modules, we're polluting a lot of namespaces
04:40:11headiusit's problematic enough that rubinius doesn't have to require 'ffi'
04:40:31headiusalso, I'm having some trouble getting some basic ffi stuff to work in rubinius, not sure if I'm doing something wrong..
04:40:47headiusmodule Foo; attach_function :getuid, :getuid, [], :uint; end doesn't seem to find uint
04:41:04headiusnor does it find it if I set_ffi_lib "c" or "libc"
04:41:51headiusdrbrain: anything look wrong with that?
04:43:22trythil leaves the room.
04:46:59qrush_ leaves the room.
04:50:15headiusactually I guess it would be extend
04:50:23headiusmodule Foo; extend FFI; set_ffi_lib .....
04:51:37lxb enters the room.
05:00:15benburkert leaves the room.
05:08:03benburkert enters the room.
05:10:25enebo enters the room.
05:10:58nari enters the room.
05:11:50enebo leaves the room.
05:12:56enebo enters the room.
05:15:08enebo leaves the room.
05:15:26enebo enters the room.
05:16:55enebo leaves the room.
05:18:13enebo enters the room.
05:19:40enebo leaves the room.
05:20:34lxb leaves the room.
05:21:00enebo enters the room.
05:23:04enebo leaves the room.
05:23:47enebo enters the room.
05:25:22enebo leaves the room.
05:26:18enebo enters the room.
05:28:06enebo leaves the room.
05:29:05enebo enters the room.
05:30:33enebo leaves the room.
05:31:53enebo enters the room.
05:55:30trythil enters the room.
05:58:40brapse enters the room.
06:12:30jackdempsey leaves the room.
06:13:40nari leaves the room.
06:15:46antares_ enters the room.
06:20:34antares_ leaves the room.
06:31:45ezmobius enters the room.
06:31:57obvio171 enters the room.
06:35:01jackdempsey enters the room.
06:42:05jackdempsey leaves the room.
06:44:39benburkert leaves the room.
06:44:53imajes_office leaves the room.
06:45:36imajes enters the room.
06:48:54botanicus enters the room.
06:51:40nari enters the room.
06:54:32antares_ enters the room.
07:12:05yugui leaves the room.
07:19:00brapse leaves the room.
07:46:15dysinger leaves the room.
07:57:57jgre enters the room.
08:03:35wvdschel enters the room.
08:19:57w1rele55 enters the room.
08:24:46ezmobius leaves the room.
08:27:53trythil leaves the room.
08:30:18headius leaves the room.
08:32:19rodimius leaves the room.
08:42:38yugui enters the room.
08:48:13srbaker enters the room.
09:13:16obvio171 leaves the room.
09:15:31headius enters the room.
09:16:12antares_ leaves the room.
09:24:30NoKarma enters the room.
09:26:36headius leaves the room.
09:39:43Maledictus enters the room.
09:40:41imajes_ enters the room.
09:48:23imajes leaves the room.
09:55:16pauldix enters the room.
10:19:53octopod enters the room.
10:27:46chris2 enters the room.
10:28:03rodimius enters the room.
10:29:52rue enters the room.
10:37:31lchin leaves the room.
10:45:43nari leaves the room.
11:00:20benny leaves the room.
11:12:23yugui leaves the room.
11:24:43BlackEdder enters the room.
11:25:33BlackEdder enters the room.
11:27:31nari enters the room.
11:33:44Maledictus leaves the room.
11:36:50BlackEdder enters the room.
11:48:51inspired enters the room.
12:10:18thehcdreamer enters the room.
12:11:41thehcdreamer leaves the room.
12:26:07qrush enters the room.
12:27:30enebo enters the room.
12:39:38inspired leaves the room.
12:47:31gnufied enters the room.
12:56:25cremes enters the room.
13:00:48imperator leaves the room.
13:03:20qrush leaves the room.
13:03:43qrush enters the room.
13:08:08cremes leaves the room.
13:10:10enebo leaves the room.
13:12:47weepy enters the room.
13:12:52weepyhello -
13:13:03weepy- will rubinius support any kind of compilation ?
13:13:10weepyto byte code
13:21:03qrush leaves the room.
13:22:09gnufiedweepy, it already supports
13:22:40weepyso e.g. one of the downsides for ruby as a vendor is obviously that all your code is open
13:22:55weepythis shouldn't be a problem with Rbus
13:22:57weepy?
13:24:19gnufiedyes, thats right. although, I am not sure, if bytecode are [yet] redistributable or not.
13:24:57weepygnufied: ah ok thanks for the headsu
13:26:33hemulen enters the room.
13:30:56inspired enters the room.
13:45:25jw_cub leaves the room.
13:59:30cremes enters the room.
14:03:28AndrewO enters the room.
14:04:35dbussinkweepy: byte code is the same everywhere
14:04:48weepysweet
14:04:55dbussinkbut i don't see the downside of open code
14:05:02weepy??
14:05:03dbussinkbecause bytecode is still decompilable of course
14:05:15dbussinkand we do everything as services :P
14:05:16weepymore like u don't see the upside
14:05:21weepyto compiled code
14:05:26dbussinkwell, bytecode is really nice to have
14:05:33weepyyes
14:05:35dbussinkbut this is like the last point on my advantages list :P
14:06:04weepybut do u see the problem for vendors if they have to ship their code open
14:06:20dbussinkwell, obfuscation is not security
14:07:21fbuilesvweepy: you can pretty much disassemble everything from C to Java so compiled code != security :)
14:07:57weepyyes
14:07:59weepyi know this
14:08:12weepybut it does make it alot harder
14:09:47dbussinkwell, not imho :P
14:10:12dbussinkbecause the people who want to do that are probably persistent in their effort anyway
14:11:14dbussinkbut offer your stuff as a service, problem solved ;)
14:12:53weepysure thing
14:13:32weepyyou can't deny that it raises the barrier to entry
14:14:06NoKarma leaves the room.
14:17:28fbuilesvweepy: that really depends a lot on the language. JBuilder was able to open a .class file a few years ago and it'd show you must of the source code. That's pretty easy by my standards :)
14:18:23weepyok how about compiled C++ :) :)
14:18:49rue leaves the room.
14:18:54weepywith optimization turn on :D
14:19:20fbuilesvweepy: harder I agree, that's why I said it depends on the language :)
14:19:34fbuilesvand actually, C++ is unreadable from source code too so it's not a valid point :)
14:19:57weepycompiled brainfuck ..
14:20:17blakewatters enters the room.
14:20:59fbuilesvthat's probably easier to read than original brainfuck!
14:21:08weepyhaha
14:23:34AndrewO leaves the room.
14:34:38yukito enters the room.
14:38:43dysinger enters the room.
14:41:28wmoxam leaves the room.
14:42:47yasuhito enters the room.
14:51:17wvdschel leaves the room.
14:52:46weepy leaves the room.
14:59:50wmoxam enters the room.
15:00:07inspired leaves the room.
15:02:20antares_ enters the room.
15:36:55rubuildius_amd64 leaves the room.
15:43:35rue enters the room.
15:46:39rubuildius_amd64 enters the room.
15:50:09rubuildius_amd64 leaves the room.
15:51:14rubuildius_amd64 enters the room.
15:55:54rubuildius_amd64 leaves the room.
15:56:56rubuildius_amd64 enters the room.
16:00:03VVSiz enters the room.
16:07:19rueMoo-rning
16:08:33benburkert enters the room.
16:10:49yasuhito leaves the room.
16:24:50srbaker leaves the room.
16:31:24AndrewO enters the room.
16:33:52wmeissner enters the room.
16:37:00benburkert leaves the room.
16:39:09hemulen leaves the room.
16:50:05evanmorning
16:51:05botanicus leaves the room.
16:53:20botanicus enters the room.
16:57:18brixenmorning
16:57:32yukito leaves the room.
16:58:50dbussinkafternoon :)
16:58:52dbussinkpeople up early here or late? :P
17:00:07headius enters the room.
17:01:36jgre leaves the room.
17:03:49brixendbussink: heh, both :)
17:05:18brixenevan: here's the ticket you requested: http://rubinius.lighthouseapp.com/projects/5089-rubinius/tickets/674
17:05:35headiusg'day
17:05:42lopex enters the room.
17:05:46brixenevan: also, when you have a sec, can you further review my commits from yesterday?
17:05:52brixenheadius: g'day mate
17:09:09evansure.
17:11:07brixenevan: one of the big things I need to know is how to raise ruby exceptions from c++
17:11:17evanyep
17:11:19evani don't even know yet
17:11:23brixenheh ok
17:11:25evani haven't coded that ayet.
17:11:29brixenyeah
17:12:57jbarnette enters the room.
17:14:00shayarnett enters the room.
17:14:04benburkert enters the room.
17:17:11c0sin enters the room.
17:17:51benburkert_ enters the room.
17:24:14jgre enters the room.
17:27:11wmeissner leaves the room.
17:29:36Yurik enters the room.
17:30:57Maledictus enters the room.
17:33:44Fullmoon enters the room.
17:36:08w1rele55 leaves the room.
17:37:24ijcd enters the room.
17:37:34benburkert leaves the room.
17:38:13ijcd leaves the room.
17:38:17ijcd enters the room.
17:38:32w1rele55 enters the room.
17:38:45moofbong enters the room.
17:39:31ijcd leaves the room.
17:39:40nexcastellanBrief discussion on parallel garbage collectors in Java on JoelOnSoftware discussion forum: http://discuss.joelonsoftware.com/default.asp?joel.3.658424.6
17:41:27moofbong leaves the room.
17:41:41moofbong enters the room.
17:41:48evanoh cool
17:41:58hemulen enters the room.
17:44:17hemulen leaves the room.
17:44:57hemulen enters the room.
17:45:51nicksieger leaves the room.
17:46:51nicksieger enters the room.
17:47:57headiusnot much of a discussion unfortunately
17:48:07evannope
17:48:21evanheadius: any idea how much people change those options?
17:48:23evanjust curious
17:48:25nexcastellanNo, but the linked blog is interesting.
17:48:51headiusin large java deployments it's pretty common to tweak some of them
17:49:08headiusmost apps don't require the performance that comes from perfecting all those settings
17:49:29nexcastellanI know the company I work for recently switched to "Ruby Enterprise Edition" because the GC exhibited better characteristics for our Ruby site. That's nothing to do with Java, of course.
17:49:55headiuswe keep meaning to provide a better set of options for JRuby, for example...several benchmarks perform better with a different new gen size ratio
17:50:20headiusnexcastellan: yeah, I'm not sure I understand what's better about Ruby EE GC
17:50:53headiusit still can't be compacting or paralell
17:50:56nexcastellanRuby EE offers copy-on-write, a big win if you fork a lot of processes. And tcmalloc is much better than the system allocator for many people.
17:51:14headiusyeah, COW doesn't help GC perf in any way though
17:51:14nexcastellanBut no, not compacting, not parallel. We have big hopes for Rubinius's ability to do better GC.
17:51:17headiusactually makes it a bit slower
17:51:32nexcastellanTrue but boy can you save a chunk of memory if you fork a lot of processes.
17:52:13headiuswell hopefully that won't be necessary soon
17:52:23headiuser, though I guess it will always be necessary on MRI
17:52:32nexcastellanWhat won't be necessary? Forking?
17:52:36headiusyeah
17:53:14nexcastellanWhy do you say that? Are you thinking of high-quality ruby thread implementations as an alternative?
17:54:18Fullmoon leaves the room.
17:55:44headiuswell, jruby is already native threaded
17:56:01nexcastellanYeah. Green threads for the lose.
17:56:02headiusso for example, you could run an entire merb site off one instance, across cores
17:56:27headiuswhen/if rails gets that ability, there wouldn't be any need to have multiple rails instances either
17:57:07Defilerevan: Any idea how I can work around this? It's pretty irritating.. http://gist.github.com/2274
17:57:31Defilerevan: When llvm gets built, it changes the modes on its Makefiles, but doesn't regenerate them from scratch
17:57:46evanDefiler: git status >> .gitignore
17:57:49DefilerSo I can't just put them in gitignore and expect them to appear, but they cluter up the status and make it irritating to pull
17:58:07DefilerCan a file be checked into git but then ignored?
17:58:13evanyep
17:58:53Defilerhttp://pastie.org/242585
17:58:55Defilerso that change is OK
17:59:11evanyea
17:59:13evanthats fine
18:01:21rueCan we get boyscout to report the cpp commits too?
18:01:27DefilerOK.. another retarded git question..
18:01:41DefilerLet's say I have A, B, and C as the three most recent hashes in git log
18:01:53headius leaves the room.
18:01:57DefilerA is that change to .gitignore, C is somebody else's most-recent change to the remote cpp brnach
18:01:58rueThe hashing algo is pretty poor
18:02:09evanrue: yes. i'll get that going today
18:02:12DefilerI want B to go away without a trace
18:02:20Defiler(and its changes)
18:02:22rueevan: Ta
18:02:35Defilerneither 'A' nor 'B' has been pushed
18:03:26rueI think git-cherry-pick would be the one
18:03:44DefilerI thought that did the reverse.. created a new commit from an existing one?
18:04:29headius enters the room.
18:04:37evanDefiler: one sec.
18:05:00rueDefiler: You are right, I thought it just selected the commit
18:05:12DefilerThe way I know to do it currently is to create a diff for 'A', reset to C, and then apply the patch and re-commit A
18:05:18Defilerbut I was wondering if there was a better idea
18:05:23rueDefiler: How about rebase --interactive? Squash the ones you do not want
18:05:28evanDefiler: easiest is to just extract the commit, reset back to C, and reapply
18:05:30evanoh yeah!
18:05:38evanrebase --interactive will set you skip
18:06:50rueProvided B is not shared, mind you
18:07:04rueIf it is, reverting is best
18:07:36ijcd enters the room.
18:07:54DefilerYeah, un-pushed.. cool
18:09:44gnufied leaves the room.
18:13:40octopod leaves the room.
18:17:43Defilerllvm is fun to build.
18:17:51brixenheh, takes a long time
18:18:15brixenevan: I'm going to make some changes to code in kernel/** in the cpp vm unless you object
18:18:30brixenI figure we can cherry pick when merging
18:18:42brixens/cpp vm/cpp branch/
18:19:10evanbrixen: thats fine
18:21:06josb enters the room.
18:21:22brixenk
18:23:14Defilercpp files just generally take vastly longer to compile than c, right?
18:23:20Defiler(even these days? My C++ is all old)
18:23:27Fullmoon enters the room.
18:23:54evanyes
18:30:53DefilerIs there an easy way to run just one file worth of cpp tests?
18:32:15rueThey should not take _vastly_ longer. Slightly so if you use templates a bunch
18:32:29rueThe typechecking is the main drag
18:37:02Arjen_ enters the room.
18:45:26brixenDefiler: there was an :only task (see 34616e105)
18:47:44Defilerbrixen: OK, so that uses an option to the 'test runner builder' perl script, it seems
18:48:00Defilerand would therefore replace vm/test/runner, I guess
18:48:27DefilerSo if we have an 'only' env/task, we would need to also make 'rake test' rebuild test/runner if needed
18:48:49DefilerThough I guess it might be convenient to have 'rake test' run the subset you selected until told otherwise
18:56:14brixenI must say I'm spoiled with rspec, using cxxtest feels like using 2 lb sledge hammer to drive finish nails
18:59:13Defilerwhereas rspec is an 8# sledge used to drive jewelled Cartier pens
18:59:14Defiler:)
19:00:10brixenheh
19:01:45brixenDefiler: this is what rue's got http://gist.github.com/2808
19:02:23brixenseems possible to do without deviating from rspec syntax
19:02:37brixenusing collector/emitter objects
19:02:38Defilerneat
19:03:13DefilerI like this
19:04:38brixenyeah
19:04:51Fullmoon leaves the room.
19:05:01brixenstill would like to wrap that in normal rspec syntax
19:14:28pauldix leaves the room.
19:14:53headiusperl script?
19:18:20brixenspeaking of perl, I didn't get to any of the perls talks at oscon, but supposedly parrot is alive and well, for some values of well
19:18:41brixensadly, I even missed the state of the onion :(
19:21:55headiusI think duke nukem forever is alive and well too
19:25:57brixenevan: for the sampler primitives, do we want to make a proper Sampler cpp class?
19:27:48brixenI guess we don't really want a bag of misc primitives
19:31:47Fullmoon enters the room.
19:32:46headiuswith the current cpp vm, are any of those cpp types holding methods actually used?
19:34:09brixenhow do you mean?
19:34:15imajes enters the room.
19:34:56Fullmoon leaves the room.
19:48:59ezmobius enters the room.
19:49:38wyhaines enters the room.
19:55:42octopod enters the room.
19:57:24headius_ enters the room.
19:57:24headius leaves the room.
20:03:23headiusbrixen: well, is the Fixnum class ever used as the type of a fixnum object?
20:03:50headiusbehind the scenes, is there a "new Fixnum" constructed to back the ruby object?
20:04:52drbrainhow do exceptions get raised in a primitive in the new vm?
20:07:08tarcieriheh, headius's initials are CON? :)
20:07:32dbussinkheadius: nope, not afaik
20:08:16headiusdbussink: ok, I guess i'm a little fuzzy on how separating them into these classes is more useful than just namespacing them, since they're not virtual and not attached to an actual object instance
20:08:36headiusseems like classes are being used as namespaces
20:08:37dbussinkwell, imho it's clearer now then in the old vm
20:08:54dbussinkthat's the main reason behind it
20:09:45headiusok, but why classes instead of namespaces
20:10:37brixendrbrain: raising exceptions hasn't been implemented yet
20:11:02brixendrbrain: see the logs about 9:11 pdt today
20:11:31Defilerheadius: The idea is to be able to 'typecast' a regular Ruby object into a matching C++ object
20:11:39DefilerTo make writing the VM code cleaner and easier
20:12:11brapse enters the room.
20:12:13drbrainthanks
20:12:14DefilerInstead of having to explain to, say, gdb that this thing is a Hash object
20:12:35headiusDefiler: so although it's not constructed as a Fixnum, you can typecast it to Fixnum?
20:12:54DefilerFixnum isn't a great example because we don't really 'allocate' one even in Ruby
20:12:56brixendrbrain: also, you can add to the list of questions in #674
20:13:03sunblush enters the room.
20:13:04Defilerbut, say, Array
20:13:36DefilerThe idea (as I understand it) is to have the Ruby object we create for that be in a data format that the C++ system can handle without a conversion
20:13:50brixenDefiler: yep, you are right
20:13:51Defilervia as<Array>blah
20:14:16DefilerFixnum is still just a tagged pointer, though
20:14:36DefilerI say 'just' even though they are awesome
20:14:57drbrainbrixen: done!
20:15:22drbrainhow does tcmalloc compare to jemalloc?
20:16:32nexcastellanI had good luck with tcmalloc compared to jemalloc.
20:16:45nexcastellanI'll see if I can find stats, probably not.
20:16:46headiusDefiler: how does gdb know it's anything other than object with that logic though
20:17:14drbrainI'm looking for something like the benchmark results they've got on the tcmalloc page
20:17:20dbussinkdrbrain: http://blog.pavlov.net/2007/12/06/more-allocator-data-tcmalloc-edition/
20:17:21drbrainpretty graphs for a wide range of tests
20:17:27dbussinkmaybe that's helpful
20:17:31DefilerThe allocation system marks the object with its type I believe
20:19:12nexcastellanNope, I have no useful stats. We were looking at using jemalloc or tcmalloc for MRI Ruby (with gc-cow patch, so essentially Ruby Enterprise Edition).
20:19:22drbrain"Well you have to be careful there, tcmalloc apparently defers frees, and is not really a general purpose malloc."
20:19:27drbrainI wonder what that means
20:19:28brixenheadius: http://pastie.org/242680
20:19:31nexcastellanWe ended up going with Ruby Enterprise Edition and using tcmalloc. There was a weird socket error that would occur with jemalloc that I could never track down.
20:19:53headiusobj_type
20:20:03headiusso it isn't really that object, it just gets a field to say what it is
20:20:32headiusso again, I'm still a bit fuzzy on the benefit of the subtypes if no objects are actually the subtypes
20:20:34drbrainalso, since ruby is single-threaded, you're not going to see any of the benefits of jemalloc
20:20:47nexcastellantcmalloc was better than system allocator wrt CPU usage _and_ memory usage.
20:21:22nexcastellanjemalloc had better memory usage than the system allocator (but was beaten by tcmalloc), but at a CPU hit. We fork quite a bit, though, so your usage pattern may be different.
20:21:43Defilerheadius: They come directly from having it be a huge hassle in shotgun
20:22:01nexcastellanYou could strip out much of the threading code from jemalloc for a fair amount of win, but tcmalloc was still better.
20:22:01DefilerIt provides a unified way of working with Ruby objects in the C code
20:22:18binary42 leaves the room.
20:22:49headiusfwiw, hotspot at least also has a thread-local allocation buffer for those reasons
20:23:02headiusof course it's also native threaded, so there's a real benefit there, but same concept
20:23:39tarcieriRubinius could really do with thread-local heaps
20:24:11tarcierisince it's effectively shared-nothing between threads
20:24:54headiuswouldn't help normal execution perf though
20:25:09tarcierinope, only matters for MVM
20:28:09botanicus leaves the room.
20:29:20w1rele55 leaves the room.
20:29:43w1rele55 enters the room.
20:31:10w1rele55 leaves the room.
20:34:06drbrain"TCMalloc currently does not return any memory to the system."
20:34:11drbrainah, that's a real bummer
20:37:32hemulenhas anyone looked at the ravenbrook memory pool system project?
20:38:14nexcastellanI'm sitting in gdb with a couple of OBJECTs I need to investigate. I'm trying to track down a namespace issue. What additional information can I get from gdb with an OBJECT?
20:38:46Defilerbeyond what _inspect() shows, I guess you mean?
20:38:58drbrainI thought there was an inspect-esque function floating around in there
20:39:09nexcastellanAhh, _inspect is helpful.
20:39:12Defilerp _inspect(some_gdb_thing)
20:39:29nexcastellanThanks! That actually may be sufficient, at least to get to the next step of debugging.
20:39:49Arjen_ leaves the room.
20:40:02DefilerCool
20:40:16ijcd enters the room.
20:41:11dfg59 enters the room.
20:44:52ryanlowe enters the room.
20:46:47headius leaves the room.
20:46:59headius enters the room.
20:56:23Defilerbrixen: You know, we should take that paste you did from gdb a minute ago, and turn it into a doc
20:56:47Defilerwith comments on each piece
20:57:47brixensure
20:58:06DefilerThough hopefully 'IsFrozen = 0' doesn't need a comment
20:58:33brixenI added this also, to give evan (and us) a skeleton to add explanation to: http://rubinius.lighthouseapp.com/projects/5089/adding-dir-to-c-vm
20:58:47DefilerDamn, nice
20:58:49brixenI'd be in favor of converting all this to rdoc in our doc dir
20:59:00brixenall of our LH how-tos
20:59:07DefilerGah this is the best document we have ever had
20:59:09brixenand be able to auto-gen pages for rubini.us
20:59:43brixenit needs a lot of added explanation
21:01:00DefilerHow do I edit this page?
21:01:10DefilerOh, somehow I am not signed in?
21:01:13brixenshould have an edit page link below Overview
21:01:14brixenyeah
21:02:02brixengrabbing some food, bbiab..
21:06:49twbray enters the room.
21:09:02brixenhmm, actually, how about an rdoc->html xform written in javascript and we'll serve our docs directly from the git repo
21:10:36nicksieger leaves the room.
21:13:53jgre leaves the room.
21:14:03dbussinkbrixen: if you want some examples for the raises, i've written one in test_fixnum afaik
21:14:54nicksieger enters the room.
21:22:22brixendbussink: those are cpp exceptions, not ruby exceptions. evan hasn't implemented the latter yet
21:22:57dbussinkbrixen: ah, i thought they were forwarded in some way
21:25:01shayarnett leaves the room.
21:35:35heycarsten enters the room.
21:38:04jayWHY enters the room.
21:40:10chris2 leaves the room.
21:41:35qrush enters the room.
21:45:13NoKarma enters the room.
21:47:07antares enters the room.
21:50:50jayWHY leaves the room.
21:51:30jayWHY enters the room.
21:51:57jayWHY leaves the room.
21:55:15nexcastellanRubinius defines a class called Task in the global namespace. That's kernel/bootstrap/task.rb. This conflicts with a class our application defines. (more)
21:55:29nexcastellanI'm wondering if perhaps Rubinius-specific classes shouldn't be in a namespace or something.
21:55:30nexcastellanFeedback?
21:56:41nexcastellanI think we should particularly be careful of common names like "Task", but I am wondering if perhaps we shouldn't have a standard policy for uncommon names, too.
21:56:49nexcastellanSort of like C++ and the std:: namespace.
21:57:04brixennexcastellan: yeah, we've talked about it
21:57:09brixensounds like a good idea
21:57:22nexcastellanWas there any specific argument against?
21:57:28brixennope
21:57:34nexcastellanIs Evan away on conferences again this week?
21:57:41brixenjust didn't do it initially because it was more work probably
21:57:52brixennot that I know of, but he seems to be away atm
21:58:02nexcastellanAny likely argument against using Rubinius for the namespace?
21:58:14brixenseems ok to me
21:58:46brixenalthough, there is some joint work on a standard ruby core lib, so there might be a different namespace at some point
21:59:01nexcastellanOkay, I'm going to write up a quick post to the mailing list. It's hitting me now but I'm certainly not planning on fixing all the namespace issues atm.
21:59:16brixensure
22:07:52nicksieger leaves the room.
22:08:25nicksieger enters the room.
22:10:07nexcastellanDone.
22:10:13fbuilesv leaves the room.
22:13:23binary42 enters the room.
22:14:39ijcd leaves the room.
22:18:35blakewatters leaves the room.
22:22:43DefilerWe could just rename Task to something else
22:23:11DefilerSince the other classes legitimately need to be in the top namespace, e.g. String, Array
22:23:24nexcastellanI'm not suggesting renaming String, Array, etc. of course.
22:23:34DefilerYeah, I assumed not
22:23:38nexcastellanAnd yes, Task could be something else and provided we pick a name that cannot conflict, no problem.
22:23:48nexcastellanBut a namespace solution would be better imho.
22:23:53nexcastellanNo possibility of conflict.
22:23:55DefilerYeah.
22:24:03DefilerVM::Task maybe?
22:24:26nexcastellanI was thinking Rubinius::Task and putting all Rubinius stuff there, but would have no objection to VM::Task if that's what people thought best.
22:24:36nexcastellanOr heck, Rubinius::VM::Task.
22:24:49DefilerI guess Task is Rubinius specific at this point
22:25:05Defilerbut we would want other impls that wanted to use the kernel to have it as well, presumably
22:25:08nexcastellanDefiler, did you see my post to the rubinius-dev mailing list?
22:25:11Defilerrather than loading only part of the kernel
22:25:19tarcieriRubinius defines 'VM'?
22:25:27pauldix enters the room.
22:26:03DefilerNot at the moment, but 'VM' is the current name of the thing replacing shotgun
22:26:11tarcieriaah
22:26:41nexcastellanI guess I'd just like to see all Rubinius stuff under Rubinius::, but it's not a strong opinion.
22:26:43sunblush leaves the room.
22:27:37DefilerIt defines class VM in C++, at least
22:27:39octopod leaves the room.
22:27:53DefilerYeah, it seems reasonable
22:28:16DefilerWe just need to figure out which parts are Rubinius-only and which are meant to be shared by things that don't want our 'brand'
22:28:49ijcd enters the room.
22:28:53DefilerIt would be weird to have a bunch of ruby code running on MRI someday that defined the Rubinius constant
22:28:54nexcastellanAlso, someone needs to do the work to move everything over. I worry that that is non-trivial (though straightforward).
22:28:57Defilerbut maybe that's just me
22:29:42nexcastellanIt'd also be perfectly reasonable to start with everything in Rubinius:: and then stuff meant to be shared could be moved out or to a different namespace.
22:30:07nexcastellanFor some definition of "perfectly reasonable", of course.
22:30:54nexcastellanI certainly envision only Rubinius-internal stuff going in Rubinius::.
22:34:13DefilerI replied to your email to share my opinion with people who aren't watching IRC right now
22:34:19Defilerheh
22:35:17binary42 leaves the room.
22:35:44nexcastellanThanks!
22:37:21nexcastellanIf I place Task inside Rubinius::, should the inspect method still return "#<Task..." or should it return "#<Rubinius::Task..."?
22:37:30nexcastellan(Not going to commit without a consensus, mind you)
22:37:34Defilerthe latter, I would think
22:37:54drbrainRubinius::Task
22:39:01evanso
22:39:05evannamespace wise
22:39:12nexcastellanHello, Evan.
22:39:21evanI agree that we should move a number of classes under the Rubinius namespace
22:39:23evanTask being a good one
22:39:34evanwe'll have to decide where to cut it
22:39:40evanie, should Tuple be under Rubinius ?
22:39:47drbrainevan: yes
22:39:51evanor FFI, or Platform
22:40:07drbrainunless somebody releases a 100% compatible Tuple as a gem
22:40:12nexcastellanWhat's the difference between class Rubinius::Task and module Rubinius class Task ?
22:40:16drbrainFFI, no, as there are alternate implementations
22:40:20evannexcastellan: nothing.
22:40:24drbrainbut, FFI = Rubinius::FFI
22:40:28nexcastellanOkay, just syntax, thanks.
22:40:31drbrainnexcastellan: less indentation
22:40:53evandrbrain: so, we should make it explicitly under Rubinius, and explicitly import it to the toplevel
22:41:08drbrainevan: I'm just saying it's an option
22:41:21drbrainI'd say FFI goes at top level since JRuby has one
22:41:22evank, agreed.
22:41:29drbrainand it isn't a very common thing to call a class
22:41:35nexcastellanIs our FFI compatible with theirs?
22:41:39evanother way around
22:41:42evanand yes.
22:41:42drbrainTask, Channel, Tuple are much more general
22:41:45drbrainnexcastellan: yup
22:41:54evandrbrain: agreed
22:41:56drbrainthey run our zlib.rb.in
22:42:04evanplus, if someone wants them, they can just do 'include Rubinius'
22:42:13DefilerAre there any other Tuple implementations for Ruby out there?
22:42:16DefilerI haven't run into any
22:42:19Defilerbut the world is wide
22:42:22evannot that I know of
22:42:27evanwell, there is one
22:42:30evanclass Tuple < Array; end
22:42:32evanDONE!
22:42:33tarcieriDefiler: I have one in Revactor but it should be API-compatible with Rubinius's
22:42:47nexcastellanIt's also worth considering just putting Rubinius INTERNAL stuff in Rubinius::. Or perhaps we should consider Rubinius::Internal::
22:43:10evannexcastellan: no
22:43:12nexcastellanOr Rubinius::Now::Has::Lots::Of::Namespaces.
22:43:17evanthats a bad idea.
22:43:20drbrainyeah
22:43:20Defilerhorrible idea
22:43:24Defilerkill it
22:43:25evanthere is no 'internal' things
22:43:29evanare no.
22:43:30AndrewO leaves the room.
22:43:35tarcieriDefiler: All I really use Tuple for is a non-retarded Tuple#===
22:43:58drbrain./test/test_dir.hpp:36: warning: unused variable ‘path’
22:44:03drbrainwhose fault is that?
22:44:09DefilerSo if Revactor were running on Rubinius, would you avoid loading your version?
22:44:22Defilerdrbrain: unimplemented test that isn't commented out
22:44:33tarcieriRevactor will never run on Rubinius... it just implements an API which is mostly compatible with Rubinius's Actor, etc.
22:44:45tarcierihard to say what to do about Actor
22:44:50Defileraah
22:45:16drbraintarcieri: there's always the Actor = Rubinius::Actor approach
22:45:32brixendrbrain: the rest of the machinery isn't there for the test, as you can see from the comment
22:45:38brixendrbrain: you can comment that part of the test as well
22:45:49tarcieridrbrain: yeah, I do that with Revactor... it defines everything in the Revactor namespace and also places it under Actor
22:46:15DefilerAre we proposing our Task API as something that another implementation might provide for its users, in a compatible way?
22:46:48DefilerI think the answer is no, right?
22:46:54tarcieriI don't think having Actor in the toplevel scope is necessarily a bad thing
22:47:07tarciericonsidering that both Revactor and Omnibus are more or less API-compatible
22:47:19evanbtw
22:47:30evanmodule Rubinius; class Task; end; end
22:47:33evanisn't exactly the same as
22:47:34tarcierimy goal is to take projects I've written with Revactor and port them over to Rubinius
22:47:36evanclass Rubinius::Task
22:47:38brixentarcieri: I thought the point was to make Revactor, Omnibus and rbx Actor 100% api compat?
22:47:41evanthere are differest scopes openned
22:47:47evanthat one needs to be aware of.
22:47:50tarcieribrixen: they can't be 100% API compatible
22:47:57DefilerI hate how long it is, but Rubinius::Task is probably where that should go
22:48:10tarcieribrixen: among other things Revactor's Actors aren't pre-emptive
22:48:13Defilerbut I think Actor should be toplevel, until we hear about an exciting conflict
22:48:17brixentarcieri: ahh ok
22:48:40brixenDefiler: anything that uses Task could include Rubinius, couldn't it?
22:49:00dysinger leaves the room.
22:50:06moofbong leaves the room.
22:50:32evanI don't think Actor should be in the kernel.
22:50:50evanjust like mutex and such aren't in the kernel.
22:51:07brixenit's in lib currently
22:51:17evanthats where it should continue to live
22:51:27tarcierievan: yeah, that's fine
22:51:27evananything in lib/ can use whatever namespacing it wants.
22:51:30drbrainbrixen: no, you'd import stuff you didn't want
22:51:48drbrainI ran into a library that did include REXML once, it was terrible
22:51:54drbrainwe had a class Document defined elsewhere
22:52:11drbraininclude for namespace shuffling is usually a lose-lose situation
22:54:32heycarsten leaves the room.
22:56:05headiuswhy wouldn't you put everything that's nonstandard under a Rubinius package without question?
22:56:22headiusexcept in cases where it's already likely to be promoted to a separate project
22:56:23evanheadius: I think thats the way we're leaning
22:56:52drbrainit's something I've wanted to do since a month or so after I started
22:57:04drbrainbut it's so unglamorous that I've resisted the temptation
22:57:11evanheheh
22:57:12headiusit's certainly possible we'd want to introduce an actor framework in JRuby or as a separate project that could be top-level
22:57:16evanthe temptation of the dr. brain.
22:57:36tarcieriheadius: but would you use something different from the Actor object protocol that MenTaLguY and I came up with?
22:57:42evani'd almost prefer that, eventually, stuff like actor.rb goes into a gem
22:57:46evanrather than in lib/
22:57:52evanso that someone else can maintain it's life
22:58:02evanI want to try and avoid the situation with MRI's lib/
22:58:07tarcieriheh
22:58:11tarcieriindeed
22:58:25evanin a gem == need RUBY_ENGINE
22:58:26evan:D
22:58:30evanfor those following ruby-core
22:58:35headiustarcieri: if it depended on rubinius specifics, might not have a choice
22:58:49drbrainhrm, I should chime in with that
22:58:57drbrainbut, Tanaka's objection still stands
22:59:09drbrainwhich, I think, most respondents did not understand
22:59:26evandrbrain: which objection?
22:59:27tarcieriheadius: It doesn't, from an API perspective
22:59:40tarcieriheadius: I think it'd be really nice if there were a common Actor API across all implementations
22:59:46drbrainhe basically asked "Why does MRI need RUBY_ENGINE?"
23:00:06drbrainand I don't think anybody has answered it
23:00:35drbrain(the only reason I can see is it allows you to avoid defined?(RUBY_ENGINE) and RUBY_ENGINE == "XXX"
23:00:44brixenthat's a good enough reason
23:00:46drbrainbut, you have to do that anyway as supported MRIs don't define it
23:00:46headiusyeah, that's not a very good objection
23:01:02tarcierior an implicit "unless defined?(RUBY_ENGINE)" == MRI
23:01:05ezmobiustarcieri: hey want to present on reia at the erlang exchange in SF in a few months?
23:01:20headiusdefined? doesn't return the contents of the constant
23:01:22tarcieriezmobius: heh, maybe if it's farther along...
23:01:42headiusoh, nevermind
23:01:47headiusI see what you're saying
23:02:12headiustarcieri: yes, no reason we couldn't have the same actor API implemented in JRuby
23:03:04drbrainbuiltin_dir.cpp:63: warning: control reaches end of non-void function
23:03:08drbrain:(
23:03:43DefilerDir::control appears not to be implemented
23:03:47brixenit is
23:03:49brixengit pull
23:04:06Defileraah
23:04:16drbrainhow did I get a half-implemented version?
23:04:16brixendrbrain: all those things are in there for evan to have stuff to point to
23:04:22evanDefiler: i've almost got the instructions situation all ironed out.
23:04:22brixencomment if you must
23:04:25DefilerYeah, we need boyskizzle for the cpp branch notifikizzle
23:04:42drbraincan we have them commented by default?
23:04:47drbrainI don't like warnings
23:04:56tarcieriezmobius: the general reaction to Reia among the Erlang community is pretty negative
23:05:16ezmobiusheh
23:05:48ezmobiusi just met with the guy organizing the conference and he asked me to ask you to speak
23:06:02tarcieriwell, nice
23:06:10tarcieriI'll consider it
23:06:15ezmobiuscool
23:08:13nexcastellanhttp://rafb.net/p/SjCr8h33.html What am I missing? I get: http://rafb.net/p/8pihp535.html
23:09:51evannexcastellan: it's not that easy.
23:10:00evanyou have to hook it up right in the VM.
23:10:03nexcastellanYeah, figured.
23:10:08evansince it's the VM that creates the Task class.
23:11:41nexcastellanWhere? bootstrap.c?
23:12:27brixenyeah
23:13:25brixennexcastellan: the Rubinius module is created below task
23:13:38GemBob enters the room.
23:14:05evanGemBob: hi there bob.
23:14:32GemBobevan: hi
23:15:03GemBobevan: got a minute?
23:15:07evansure
23:15:45GemBobCool. I'm trying to build rubinius on a linux box, and am running into a problem
23:16:07evanex
23:16:08evano
23:16:08DefilerSee? Even IRC has namespaces
23:16:09evank
23:16:49GemBobit's down in libev
23:16:51GemBob Entering directory `/abaco6/users/bobw/rubinius-evanphx/shotgun/external_libs/libev'
23:16:52GemBob gcc -DHAVE_CONFIG_H -I. -I. -I. -fPIC -O3 -c ev.c -fPIC -DPIC -o .libs/ev.o
23:16:52GemBobev.c: In function 'infy_add':
23:16:52GemBobev.c:1960: error: 'IN_DONT_FOLLOW' undeclared (first use in this function)
23:16:52GemBobev.c:1960: error: (Each undeclared identifier is reported only once
23:16:52GemBobev.c:1960: error: for each function it appears in.)
23:16:54GemBobev.c:1960: error: 'IN_MASK_ADD' undeclared (first use in this function)
23:17:10drbrainGemBob: rafb.net/paste please :)
23:17:26GemBobsorry...
23:17:33drbrainnp
23:17:34headiusugh...mvm can be pretty hard to debug
23:17:53headiusget a syntax error somewhere in a sub vm and it tanks, leaving parent sitting there
23:17:59nicksieger leaves the room.
23:18:24evanGemBob: you're missing system headers
23:18:25pauldix leaves the room.
23:18:25evanon linux
23:18:26headiuswe should try to iron out some failure cases for sub-vms
23:18:29evani'm guessing.
23:18:54GemBobevan: ok - thanks
23:19:19GemBob:evan, any clue which ones?
23:19:25evanwhat distro?
23:19:31GemBobsles 10
23:19:35evanwhats that?
23:19:39evannever heard of it.
23:19:40GemBobsuse
23:19:43evanoh
23:19:49evanthere is usually a lib6 header package
23:19:57evanyou should make sure thats installed
23:20:09evanand a linux header package
23:20:18evani don't (obviously) know anything about suse
23:20:21GemBobSounds right - I'll check with the admins - many thanks!
23:20:23Defilermake sure the 'kernel-headers' package is installed
23:20:24Defileryeah
23:20:24headiusbtw, not sure if anyone saw my messages the other day, but I want to iron out a few things before FFI goes out in the next JRuby release
23:20:33evanheadius: k
23:20:51headiuslike making it require include FFI so it's not immediately polluting all modules' namespaces
23:20:55GemBobDefiler: excellent - thanks!
23:21:14wmoxam leaves the room.
23:21:30headiusor I guess it would be extend FFI to add them to the module's instance methods
23:21:38evanah, ok.
23:21:40drbrainheadius: I like that
23:21:42headiusmodule Foo; extend FFI; end
23:21:46evansure
23:21:49evanmakes sense.
23:21:50drbrainwe should do that
23:21:51Defilerhrm.. you also might need libc devel headers, GemBob
23:22:10headiusother than that it would be nice to be able to specify attach_function :getuid with :getuid as as a symbol
23:22:15DefilerNot sure if SuSE installs those by default
23:22:18headiusright now it seems to just fail unless you specify it as a string
23:22:27headiusjruby coerces to string so it works either way
23:22:32evanheadius: i don't think it should
23:22:37evanI went back and forth on that
23:22:37headiuswhy not?
23:22:41headiusit's a name
23:22:43Defilerextend FFI even looks cool
23:23:03headiusor at the very least, why require a string for the function name and then use a symbol for the method name it gets bound to?
23:23:15headiusI think it's the nonuniformity that got me
23:23:38evanwell, to me (and trying to recall)
23:23:51evanit's that you specify the method name as a symbol
23:23:53evanlike it always should be.
23:24:12headiusbut not the function name?
23:24:13evanand, since you're asking for an external thing, you use a String
23:24:22evanbecause the rest of the world understands Strings, not Symbols.
23:24:36headiusfuck the rest of the world
23:24:38headiuswe're in ruby
23:24:39evanyou don't have to specify it anyway
23:24:43evanif the names are the same.
23:24:53headiusbut I have to specify a string in that case :)
23:25:00headiusso it's not uniform that way either
23:25:01drbrainwtf?
23:25:09drbrainyou can't comment out tests in cxxtest
23:25:36evandrbrain: nope.
23:25:42evancxxtest sucks in that way
23:25:45drbrainWHY?
23:25:45evanyou have to rename the test
23:25:46headiusbrb
23:25:52drbrainstabs somebody
23:25:54evandrbrain: because it parses the file
23:26:04drbrainno it doesn't
23:26:06evanand doesn't understand comment markers
23:26:08evanyes
23:26:09evanit does.
23:26:18drbrainif it parsed the file, it would know what a comment was
23:26:19evanit scans the .hpp files to find all the names of the tests
23:26:23drbrainit scans the file
23:26:23evansorry
23:26:29evanit badly scans the .hpp files
23:27:43evanfrom what I found, cxxtest just sucks the least.
23:27:50evanand it still sucks a lot.
23:28:10evanother options where some crazy ass ones that required making every test a template
23:28:46drbrainis a hater
23:29:07evani can tell.
23:29:19evanmaybe I should hire some care bears to pair with everyone
23:29:21evanto cheer them up
23:29:33evancan you imagine zenspider pairing with a care bear!
23:29:35evanthat would be awesome.
23:29:47DefilerI thought that was what I was for *sob*
23:30:10evanyou're in Florida though.
23:30:22drbrainlet me tell you, I was shocked beyond shocking while adding EXIF and ID3 support to my media server
23:30:26drbrainso easy
23:31:18DefilerKeen
23:31:18drbrainsimply because the libraries were perfectly sane
23:31:50brixenevan: did you look at CppSpec?
23:31:59Maledictus leaves the room.
23:32:03evanI don't recall.
23:32:33DefilerI believe I remember that name being on the rant-list
23:32:54brixenI think with const_missing and method_missing we could write this in rspec-syntax and emit the test files
23:32:59drbrainwhy does CompiledMethod::formalize write to stdout?
23:33:16evancause it hates you.
23:33:18brixenperhaps I'll tackle that after the cpp vm is live
23:33:22evanand loves to make you sad.
23:33:23evanit told me.
23:33:40evanthats just debugging
23:33:49drbrainin that case, I think I'm going to stab it in the inspecT()
23:33:53drbrainwith a //
23:37:19imajes_ enters the room.
23:41:18sunblush enters the room.
23:44:33imajes leaves the room.
23:46:01NoKarma leaves the room.
23:49:09headius leaves the room.
23:52:27brixendrbrain: shotgun_primitives.txt is the definitive list of which primitives we have, yes?
23:52:55drbrainbrixen: it's slightly reduced from what you would see by grepping shotgun, but yes
23:53:24brixenk, I'm going to replace the ticket body in 658 with a reference to that file
23:53:27drbrainI've removed some here and there where they either should be reimplemented as FFI or aren't hooked up anymore
23:53:36drbrainbrixen: there's also `rake missing_primitives`
23:53:43brixenso that ticket is not so unwieldy
23:53:50brixenyeah
23:53:53drbrainyeah
23:54:00brixendrbrain: are you adding to that ticket which prims you're working on?
23:54:37drbrainI haven't been, since they've all been about an hour's work
23:54:53drbrainor, there's been a group that's all an hour or two's work
23:55:58brixenok, updated ticket
23:56:02drbrainalthough, I'll claim several of the bignum_* ones because zenspider wants to work on some
23:56:09drbrainand they seem like a good introduction
23:56:11brixenI think it would still help to use that ticket to coordinate
23:56:17brixensince we're all mucking with them atm