Index

Show enters and exits. Hide enters and exits.

00:00:05evanon the other hand
00:00:12evanit's better that the tests just include everything they need
00:00:20evansince the headers are properly protected against multiple inclusion
00:00:24evanthat mitigates the problem
00:00:36dgtizedbut we can't test that unless we try compiling each test seperately
00:00:40evanI should have just done that originally
00:00:49evandgtized: right
00:00:53evanso do enough to get it working for you
00:00:56evanand we'll go from there
00:01:01Maledictus leaves the room.
00:01:01binary42 leaves the room.
00:01:16dgtizedI mean what I have been doing is going through each test file and stripping out every include until it fails to compile
00:01:25dgtizedso I'm almost at the minimal set for this order
00:01:30evanwell
00:01:36evanthats probably not the right idea
00:01:47evanbecause, unless we know the order that they're included in runner
00:01:54evanit might work for you, but not someone else
00:02:00evanif all the tests include what they need
00:02:03evanthen we're fine
00:02:11dgtizedwell then why not ensure that the runner includes all the necessary ones from the getgo?
00:02:12evanno matter what order they're included in
00:02:40evani feel like we're going in circles.
00:03:08dgtizedbecause i don't understand how to determine if we are including everything necessary in a particular test file
00:03:10evanif you want to change cxxtest
00:03:12evango for it.
00:03:46evanwhy should a test file NOT simply include every header it needs?
00:04:03dgtizedcxxtest has a --include HEADER
00:04:05evanwhats the harm in reader the file, seeing what it needs, and adding all the includes
00:04:12dgtizedfor including a header prior to all tests
00:04:16evans/reader/reading/
00:05:05evandgtized: ?
00:05:28dgtizedthe cxxtest.pl has a --include HEADER option for causing cxxtest to add a header before including all tests
00:05:36evancould you answer me first?
00:05:48evanon my above question
00:05:54dgtizedbecause I don't know how to test if it's the minimal set for that test file
00:06:08evanwhy do we care about the minimal set?
00:06:23evanesp for the tests
00:06:34aotearoa leaves the room.
00:06:58dgtizedwell if we don't care about the minimal set, then why not just centralize for the tests -- if the tests are supposed to just contain what they need, that means they should have the minimal set, if it doesn't matter then it's just a pain in the ass to keep track of which files they actually need
00:07:04evanesp. since it's BETTER that the test/runner.cpp gets recompiled more often than it might need to be
00:07:11evanso that we're totally sure it's running properly
00:07:24aotearoa enters the room.
00:07:32evandgtized: maybe we should
00:07:32dgtizedbut it will get recompiled because the --header include will include those dependencies
00:07:41evandrbrain added this gen/includes.hpp
00:07:46evanperhaps that should be at the top of every test
00:07:48evanand be done with it
00:08:21evanbut it's very important that the deps are explained to rake
00:08:30evanso that changes cause runner.cpp to be recompiled
00:08:37evanthats the most frusterating thing
00:08:51drbrainmakedepend will figure it out from vm/test/test_*hpp
00:08:52evanif you change something and runner.cpp isn't regen'd or recompiled when it should be
00:09:08evandrbrain: if we just use the catch all gen/includes.hpp
00:09:15evanwill it do it correctly?
00:09:28evanwe can't use this cxxtest --header thing then
00:09:31evanbecause makedepend wont see that
00:10:07dgtizedrunner.cpp gets recreated every time we change any tests or objs
00:10:22drbrainI'd rather that gen/includes.hpp only be used in files that include vm/gen/*cpp
00:10:29dgtizeddoesn't that depend on makedepends results?
00:10:43drbraincurrently runner.cpp depends on vm/test/test_*hpp
00:10:50dgtizedand objs
00:11:03dgtizedso if any obj file changes it recompiles right?
00:11:16drbrainso if vm/test/test_blah.hpp includes vm/blah.hpp, and vm/blah.hpp includes everything it needs to compile
00:11:21drbrainwe should be Just Fine
00:11:25drbrainright
00:11:53drbrain'vm/test/runner.cpp' => tests + objs
00:12:47dgtizeddrbrain: ok that works too, I just reached a point where some of the tests I could even remove there vm/blah.hpp and they were still happy, but I do like the idea that they just depend on whatever the core class they test is, and that core class knows what it needs to compile
00:13:13Arjen_ leaves the room.
00:13:19drbraincool
00:14:06dgtizedalright I'll switch it to that form -- the only other issue is that then we have to actually fix the dependencies for all the builtins
00:14:17dgtizedoh
00:14:19dgtizedwait no
00:14:32dgtizedthis won't work for things like the numbers
00:14:39drbraineverything on the vm/builtin side should be golden
00:15:18dgtizeddrbrain: but the numbers forward declare eachother and wait for later to include the other types they convert to
00:15:44drbrainthen we can make an exception
00:16:29evanthe numbers?
00:16:31dgtizedI have one other idea, but maybe this is bad, why is it that ALL of the tests are included in the same runner.cpp?
00:16:36dgtizedFloat, Bignum, Fixnum
00:16:51evanwhy are those an exception?
00:17:32dgtizedoh they should all attempt to include eachother in builtin/ but forward declare in case they can't?
00:17:51evanbuiltin/ what?
00:18:00evanthe header files in builtin/
00:18:00evan?
00:18:05dgtizedyes
00:18:29evanthe current setup is fine
00:18:29octopod leaves the room.
00:18:35evanit doesn't need to be changed
00:18:36evanimho.
00:19:04evanbuiltin/ headers don't need to include other builtin/ headers if all they do is use the type in a signature
00:19:09evanthen you can just use a fwd decl
00:19:19dgtizedwell I can compile the tests as I currently have them, and you can compile the tests as you currently have them but I don't think we can swap and still have it work because of order
00:19:30evanbut the .cpp files should include the proper builtin headers to make everything work
00:19:47evandgtized: i'll bet we can swap
00:19:48pauldix leaves the room.
00:19:55evango look in runner.cpp
00:20:05evanwhat order do you see the test files included?
00:20:11evanis test_ar.hpp first?
00:20:30dgtizednope
00:20:41evanthen it's a wash
00:20:51evanjust have every test include gen/includes.hpp at the top
00:20:51dgtizedvm/test/test_event.hpp is first
00:20:52evanand be done with it
00:21:08evanor use --include
00:21:22evanso long as rake can still figure out when to rebuild and recompile runner.cpp
00:22:16dgtizedwhat if we pass the list of tests to runner in sorted order?
00:22:22evanEither I'm oversimplying it, or I don't get it.
00:22:23dgtizedin the vm task
00:22:27evaner.
00:22:29evanheh
00:22:46evandgtized: try it!
00:23:00drbrainthat would work
00:23:43michalw leaves the room.
00:24:10enebo enters the room.
00:25:18Yurik leaves the room.
00:25:23dgtizedwhy is [{:verbose => true}] added to the list of tests for runner.cpp?
00:25:38dgtizedcan't I just pass that as a commandline prior to that in that task?
00:26:07dgtizedack, cxxgen doesn't take verbose
00:26:10dgtizedwhat is that even going to?
00:26:19evanthats for sh to see
00:26:39evanjust do
00:26:48evantests = tests.sort + [{:verbose => true}]
00:28:39drbrainyes
00:28:48drbrainit's a rakeism
00:28:58drbrainthat should be built-in
00:30:20dgtizedalright, I guess I should just revert to HEAD then and see if that fixes everything -- it still means we don't have minimal set of includes per test, but it should work regardless of platform
00:34:09dgtizedhuh well that mostly fixed it, but the test files fail to resolve a symbol earlier then normal
00:39:01CIA-20* fixed test runner order to always be sorted to ensure dependencies work across platform; b598bc7 - Charles Comstock
00:40:05hemulen enters the room.
00:41:13lopex leaves the room.
00:41:31benburkert enters the room.
00:41:34botanicus enters the room.
00:43:38trythil_ enters the room.
00:45:43dfg59 enters the room.
00:50:16trythil enters the room.
00:51:12drbrainis anybody seeing a failure in TestObject::test_clone?
00:51:34nari_ leaves the room.
00:53:11benburkert leaves the room.
00:53:47brixendrbrain: checking
00:57:29evandrbrain: yes
00:57:57drbrainis there a way to run just one test suite/
00:57:59brixenyeah, me too
00:58:00drbrain?
00:58:05drbrainI don't see it in guide.html
00:58:21evanyeah, i didn't figure that out
00:58:35evanI had, at one point, a make rule that let me pass in the file to use
00:58:52evanmake test/runner TEST=test_message
00:58:59evanit would regen runner with just that one file
00:59:19brixendidn't the rake :only task do that?
00:59:46drbrainI can add an arg to the vm:test task if we need to
01:00:23evansure
01:00:29evanit's useful to be able to do that
01:01:50evanWomen's Olympic Soccer is on btw
01:02:01evanThe goalie was one of Abby's students at UW
01:05:48trythil_ leaves the room.
01:09:18Defilerdrbrain: I'm on the 'clone' test failure; should be checking that in shortly
01:09:28drbraincool
01:10:24Yurik enters the room.
01:11:49drbrainit looks like test filtering is not supported in cxxtest
01:11:59drbrainI will hack it in
01:12:03drbrainto the rakefile
01:12:35evanok
01:12:55Defileroh haha I already fixed this and forgot to push it
01:13:34DefilerNo. Hrm.
01:18:51moofbong leaves the room.
01:21:43brapse_ leaves the room.
01:23:37benburkert_ enters the room.
01:26:57nari enters the room.
01:27:12headius enters the room.
01:29:47drbrainhrm, this is going to be messy
01:29:52benburkert_ leaves the room.
01:30:04drbrainI think I'll do it tomorrow
01:30:46DefilerShouldn't the object_id prim be returning an Integer* not a uintptr_t?
01:30:49DefilerThat seems odd to me
01:31:08DefilerThat's probably my fault now that I think about it hah
01:31:28drbrainprobably
01:31:38drbrainI'm heading home, I'm overheated
01:33:58botanicus leaves the room.
01:33:58cored enters the room.
01:37:13lstoll enters the room.
01:42:20trythil leaves the room.
01:43:06benburkert enters the room.
01:43:14joachimm leaves the room.
01:52:05jtoy enters the room.
01:59:18c0sin leaves the room.
02:00:04dfg59 leaves the room.
02:00:58aotearoa leaves the room.
02:03:09tarcieriOHGOD
02:03:21tarcieriActiveSupport is crashing Ruby 1.9 :(
02:05:07tarcieriActiveSupport: it's like using a spike strip for a jock strap
02:05:12aotearoa enters the room.
02:07:13antares enters the room.
02:08:35brapse enters the room.
02:08:58aotearoa leaves the room.
02:12:43ezmobius leaves the room.
02:16:59ijcd leaves the room.
02:21:59cored leaves the room.
02:24:20binary42 enters the room.
02:33:52yipstar leaves the room.
02:41:19aotearoa enters the room.
02:43:47Yurik leaves the room.
02:44:19Yurik enters the room.
02:45:16spaceG enters the room.
02:54:41Yurik leaves the room.
03:06:01jackdempsey_ enters the room.
03:10:55gramos leaves the room.
03:10:58jwolski enters the room.
03:18:20CIA-20* Fix Object::clone for good; 7446de4 - Wilson Bilkovich
03:18:48guitsaru enters the room.
03:27:59gramos enters the room.
03:30:33lorenzod8n leaves the room.
03:32:01nicksieger leaves the room.
03:32:30jazen3 leaves the room.
03:32:34jazen enters the room.
03:33:11lchin enters the room.
03:33:24RyanTM leaves the room.
03:39:29Cosmos95 leaves the room.
03:40:01Cosmos95 enters the room.
03:40:18nicksieger enters the room.
03:42:32bitsweat enters the room.
03:44:05brapse leaves the room.
03:52:01Yurik enters the room.
03:54:48RyanTM enters the room.
04:03:02jackdempsey_ leaves the room.
04:05:06gramos leaves the room.
04:16:08headiusDefiler: optimistic much?
04:26:11jackdempsey_ enters the room.
04:38:41imajes leaves the room.
04:46:51imajes enters the room.
04:56:55keisukefukuda leaves the room.
05:23:51AndrewO leaves the room.
05:31:59aotearoa leaves the room.
05:37:44imajes leaves the room.
05:38:35dfg59 enters the room.
05:38:49RyanTM leaves the room.
05:52:34lchin leaves the room.
05:52:48lstoll leaves the room.
05:53:06lstoll enters the room.
05:58:43moofbong enters the room.
05:59:35jack_sleep leaves the room.
06:16:18moofbong leaves the room.
06:25:54jwolski leaves the room.
06:34:50CIA-20* Updated MSpec source to 0b989c19.; ffb998b - Brian Ford
06:37:38thehcdreamer enters the room.
06:37:57guitsaru leaves the room.
06:41:31edwardam leaves the room.
06:44:43rubuildius_amd64Brian Ford: ffb998bf5; 2629 files, 8609 examples, 28695 expectations, 0 failures, 0 errors
06:48:26trythil enters the room.
06:59:27rubuildius_ey64Brian Ford: ffb998bf5; 2629 files, 8609 examples, 28695 expectations, 0 failures, 0 errors
07:00:22lchin enters the room.
07:00:57trythil_ enters the room.
07:08:01thehcdreamer leaves the room.
07:12:56trythil leaves the room.
07:13:28trythil enters the room.
07:13:59bitsweat leaves the room.
07:18:12BobFunkasdas enters the room.
07:26:25dfg59 leaves the room.
07:27:50trythil_ leaves the room.
07:35:19krsh enters the room.
07:35:33enebo leaves the room.
07:50:29aotearoa enters the room.
08:00:30trythil_ enters the room.
08:03:18thehcdreamer enters the room.
08:05:07trythil leaves the room.
08:12:17benburkert leaves the room.
08:15:23Arjen_ enters the room.
08:18:21aotearoa leaves the room.
08:21:29trythil_ leaves the room.
08:32:17aotearoa enters the room.
08:37:49antares leaves the room.
08:39:39krsh leaves the room.
08:39:51dysinger enters the room.
08:58:53CIA-20* Cleanup stack usage and fix interpreter Remove Task->stack, added Task methods for manipulating the stack that use active. VMMethod contains a resume ...; 310a461 - Evan Phoenix
09:00:31dysinger leaves the room.
09:00:33mitchellvriley enters the room.
09:08:44octopod enters the room.
09:12:43blakewatters leaves the room.
09:22:14botanicus enters the room.
09:24:57BlackEdder enters the room.
09:37:41michalw enters the room.
09:46:31Maledictus enters the room.
09:48:25mutle leaves the room.
09:57:28mutle enters the room.
10:00:11chris2 enters the room.
10:01:28mitchellvriley leaves the room.
10:06:22Arjen_ leaves the room.
10:11:59joachimm enters the room.
10:18:54blakewatters enters the room.
10:18:58blakewatters leaves the room.
10:26:35headius leaves the room.
10:27:13jgre__ enters the room.
10:27:52krsh enters the room.
10:32:03roo enters the room.
10:38:34rue leaves the room.
11:03:56krsh leaves the room.
11:07:45nari leaves the room.
11:11:24jtoy leaves the room.
11:25:33mutle_ enters the room.
11:35:39nari enters the room.
11:42:37mutle leaves the room.
11:44:40gnufied enters the room.
11:58:05imajes enters the room.
12:03:40qrush enters the room.
12:04:10qrush leaves the room.
12:06:30imajes leaves the room.
12:31:10hemulen leaves the room.
12:37:15robin_dewd leaves the room.
13:09:12BobFunkasdas enters the room.
13:29:20mernen enters the room.
13:32:30gnufied leaves the room.
13:33:07aotearoa leaves the room.
13:40:52aotearoa enters the room.
13:43:43jackdempsey_ enters the room.
13:54:20hemulen enters the room.
14:03:27djwonk enters the room.
14:22:32jackdempsey_ leaves the room.
14:26:16AndrewO enters the room.
14:29:06aotearoa leaves the room.
14:36:26yipstar enters the room.
14:39:07blakewatters enters the room.
14:40:40moofbong enters the room.
14:40:57pauldix enters the room.
14:48:18binary42 leaves the room.
14:51:30michalw leaves the room.
14:51:34michalw enters the room.
14:52:29lchin leaves the room.
14:53:31djwonk_ enters the room.
14:57:13mernenis the cpp branch compiling fine on mac?
14:57:36mernenI had to make a trivial change here because of -Werror
14:58:48djwonk__ enters the room.
14:59:28lchin enters the room.
14:59:35lchin leaves the room.
15:00:02djwonk leaves the room.
15:09:57benburkert enters the room.
15:15:03binary42 enters the room.
15:15:21djwonk_ leaves the room.
15:18:57dbussinkmernen: what change?
15:20:10mernenI got a warning on vm/builtin/dir.cpp, line 31, for casting a string literal into a char*
15:20:30mernenI just changed VM::raise_from_errno's signature
15:20:41mernenfrom char* to const char*
15:21:07mernennow the vm does compile and run here (Ubuntu, 32-bit)
15:21:14dbussinkah ok, nice
15:21:17dbussinkand the tests?
15:21:30mernensome tests seem to fail, but anyway it's great to at least get something working
15:21:30DefilerThat change should be fine, yeah
15:21:34mernenI haven't looked much at them, though
15:21:55DefilerThere are three tests that are known to be failing right now
15:22:20mernenI'm running the tests right now
15:22:27DefilerTestChannel::test_receive_causes_event_block
15:22:37Defilerand then two of the test_send_.. functions in the instruction tests
15:22:56anonuser leaves the room.
15:25:42antares enters the room.
15:25:53mernenhttp://gist.github.com/4417
15:25:58anonuser enters the room.
15:26:55RyanTM enters the room.
15:37:27bricolage enters the room.
15:46:27BobFunkmmas enters the room.
15:49:24benburkert leaves the room.
15:50:42hemulen leaves the room.
15:55:08lopex enters the room.
16:01:18robin_dewd enters the room.
16:01:44lstoll leaves the room.
16:02:54jgre__ leaves the room.
16:03:25djwonk__ leaves the room.
16:04:25benburkert enters the room.
16:04:30hemulen enters the room.
16:08:07hemulen leaves the room.
16:14:18benburkert leaves the room.
16:22:37nakajima enters the room.
16:36:31BobFunkmmas leaves the room.
16:48:07BlackEdder enters the room.
16:49:19BlackEdder enters the room.
17:07:59pauldix leaves the room.
17:13:24hemulen enters the room.
17:13:55enebo enters the room.
17:14:03brixenDefiler: what do we know about the rake changes in cpp?
17:15:03pauldix enters the room.
17:15:27Defilerbrixen: Which, evan's?
17:16:13brixenwell, I suppose these could be from after the cpp branch was made
17:16:24brixenI'm moving mspec.rake and spec.rake over
17:16:41brixenand getting some issues, I'll look more closely
17:17:02DefilerThe Rakefile has definitely been heavily modified in the cpp branch
17:17:08brixenrbconfig for one doesn't seem to be sane anymore
17:17:12DefilerYou will probably have to re-integrate the other tasks
17:17:17brixenyeah
17:20:29Fullmoon enters the room.
17:26:25hemulen leaves the room.
17:27:05hemulen enters the room.
17:29:14benny leaves the room.
17:46:43dgtizedmernen: can you check in that change for VM::raise_from_errno?
17:47:17mernendgtized: I don't have access to the new repo yet
17:48:30dgtizedoh ok, I think I know what the changes are, I'm going to try it and push it since it's breaking 32-bit compat -- barring that, if you want to just format a patch, I can apply it and push it for you so you get credit?
17:49:02mernensure, just a sec
17:49:18CIA-20* object_id primitive should return an Integer not uintptr_t; 45b8ee4 - Wilson Bilkovich
17:50:58thehcdreamer leaves the room.
17:53:24guitsaru enters the room.
17:58:58mernendgtized: http://pastie.org/249296
18:01:01nicksieger leaves the room.
18:06:54edwardam enters the room.
18:14:56octopod leaves the room.
18:17:16nicksieger enters the room.
18:22:59dgtizedwell I pushed it but dunno where it went
18:23:08evanit will show up in a sec
18:23:12evanthe CIA bots seem to be slow
18:32:51mernenevan, could you give me commit access to the repo?
18:32:53mernenusername mernen
18:32:59evank
18:33:49evanok, done
18:38:20joachimm leaves the room.
18:38:30mernenthanks
18:39:47drbrainI think we'll need to add the "run only this test" feature to cxxtest
18:39:49atduskgreg enters the room.
18:40:01evandrbrain: agreed.
18:40:04drbrainlooking at the rakefile, there's no sane way to do it that won't cause problems later on
18:40:08drbrainor confusion
18:40:10evandrbrain: you want to tackle that?
18:40:21evanyou'll have to refresh your perl skills probably
18:40:32drbrainno, it's c++ skills
18:40:40evanbut the C++ is generated from perl.
18:40:48evanhopefully you can do it all in C++
18:40:54evani guess you probably can
18:40:58evansince the runner is all in C++
18:41:03drbrainyou'd put it in the runner, not the generated code
18:41:16drbrainI'm going to turn my laptop in tomorrow for repair
18:41:23evanok
18:41:23drbrainso I don't want to start in case I get stuck
18:42:43evanwe can discuss that in about 20 minutes
18:42:51evanwe could have the call now
18:43:56ezmobius enters the room.
18:44:07drbrainsure
18:44:12drbrainlet me open my screen
18:44:19benburkert enters the room.
18:45:01nakajima enters the room.
18:45:20Arjen_ enters the room.
18:49:01c0sin enters the room.
18:51:30evanfor anyone interested in checking memory usage of processes in OS X
18:51:48evanbe sure to turn on the Private Memory column in Activity Monitor
18:52:16evanthat number is how much exclusive heap memory is in use by that process
18:52:42BobFunkmmas enters the room.
18:53:07Fullmoon leaves the room.
19:05:15fbuilesv leaves the room.
19:09:10octopod enters the room.
19:12:41thehcdreamer enters the room.
19:13:28thehcdreamer leaves the room.
19:15:14nicksieger leaves the room.
19:17:44headius enters the room.
19:18:20benburkert leaves the room.
19:18:38NoKarma enters the room.
19:18:52benburkert enters the room.
19:19:06evanok, i've fixed the memory problem while running tests
19:19:07CIA-20* Fix memory leak found while running tests; ffcb663 - Evan Phoenix
19:19:15NoKarmahey
19:19:18evanheh
19:19:22evanmy timing is awesome.
19:19:22evan:)
19:19:30NoKarma enters the room.
19:19:46NoKarma enters the room.
19:20:07blakewatters leaves the room.
19:26:08ezmobius leaves the room.
19:27:47thehcdreamer enters the room.
19:31:43thehcdreamer leaves the room.
19:34:00thehcdreamer enters the room.
19:37:18thehcdreamer leaves the room.
19:39:28blakewatters enters the room.
19:41:39ezmobius enters the room.
19:44:43BobFunkmmas leaves the room.
19:45:40CIA-20* Add kernel load index. Try: "rake kernel:build vm; ROOT=runtime vm/vm" to see the kernel load.; b62fcd6 - Evan Phoenix
19:45:53evanok everyone
19:46:12evanif you want to see a live view of the unhooked up primitives
19:46:23evanrun "rake kernel:build vm; ROOT=runtime vm/vm"
19:47:53brapse enters the room.
19:53:05edwardam leaves the room.
19:53:12mernenI get: ./lib/compiler/../compiler/marshal.rb:158:in `marshal': Unknown type: Compiler::Node::ConstAccess (ArgumentError)
19:53:46evanwtf.
19:55:43evanthats... odd.
20:00:28Defilerevan: OK.. so.. I need to refer to 'Float*' as a return type in string.hpp
20:00:38chris2 leaves the room.
20:00:38Defilerbut string.hpp doesn't #include float
20:00:42evanDefiler: thats fine
20:00:44DefilerShould I just have it do so?
20:00:46evanjust forward decl class Float;
20:00:53Defileraah
20:01:09DefilerThat doesn't need some matching change in the dependency glue?
20:01:18thehcdreamer enters the room.
20:01:38evanDefiler: no
20:01:48evanjust in the header is fine
20:01:49ezmobius_ enters the room.
20:02:19DefilerI get this after adding that forward decl: http://gist.github.com/4469
20:02:34evanok
20:02:36evannow in string.cpp
20:02:41evanyou need to include float.hpp
20:02:49Defilerline 194 is this: return Float::create(state, this->to_double(state));
20:02:50Defileraah
20:02:52DefilerI see
20:03:09DefilerWhy do we include it in the cpp file and not the header?
20:03:23evanto simplify the dependencies
20:04:02evanthe header file isn't actually doing anything with a float
20:04:08evanit's just saying it returns one
20:04:08DefilerOK.. Now I need to make ISSPACE and ISDIGIT available here
20:04:14Defiler(doing string_to_f)
20:04:20evanwhere actually need to use float is where you include it
20:04:22thehcdreamer leaves the room.
20:04:37ezmobius leaves the room.
20:04:38Defilerand unfortunately those are in the grammar
20:04:48Defileroh, I see.. also in string.h in shotgun
20:04:49evanthe grammar?
20:04:51evanyeah
20:04:53evanjust copy them out
20:04:56evanthey're just macros
20:05:04DefilerI was looking at the wrong tag hit.
20:05:04evanif they're only used in string.cpp though
20:05:08evanput them in string.cpp directly
20:08:14DefilerYeah, only in string looks like
20:17:03Defilerevan: Hrm.. inside a ByteArray member function.. if I want to get it back as a char*..
20:17:10Defilercan't I just do (char*)(this) ?
20:17:32atduskgreg leaves the room.
20:17:51evanno
20:17:55antares leaves the room.
20:18:01evan(char*)this->bytes;
20:18:05drbrainhttp://rafb.net/p/FuDVrj57.html
20:18:07evanbut there is already a method to do that.
20:18:09drbrainis this test sane?
20:18:10evanI think.
20:18:19DefilerI don't think there is in cpp, but I could be wrong
20:18:29drbrainThread::wakeup() does state->queue_thread(this);
20:18:56drbrainI grabbed the at(0) line from VM::run_best_thread()
20:18:59evandrbrain: sure
20:18:59joachimm enters the room.
20:19:05evandrbrain: i'd refactor it a little though
20:19:15evango write VM::thread_scheduled_p
20:19:26evanthat does the searching of scheduled_threads for ya
20:19:32evanand use that in the test
20:19:32drbrainwell, it fails
20:19:44drbrainwould we ever use that outside the test?
20:20:15evanseems like we would
20:20:17evanmaybe not
20:20:18evananyway
20:20:24evanthats not what you're asking
20:20:47evanwhich assertion fails?
20:20:55drbrainempty_p()
20:21:03drbrainso maybe I've got the priority wrong
20:21:18octopod leaves the room.
20:21:20evancould be
20:21:35evandrbrain: a better test is to pass the actual priority of the therad to at()
20:21:47drbrainyeah
20:23:00drbrain2 is the default priority?
20:23:24evani'd have to check
20:23:33evanyes
20:23:40drbrainyeah, that seems wrong
20:23:44drbrainin MRI, its 0
20:23:50evanwell
20:23:56drbrainor, is there a reason its 2?
20:23:56evanit's 2 because thats the default in ST
20:24:20evanso that you have a place to put very infrequent threads
20:24:23evanin MRI
20:24:25evanyou're already at the bottom
20:24:27drbrainok
20:27:28drbrainthe tests seem to be running faster today
20:27:34evanyeah
20:27:38evansince I fixed the memory leak
20:27:43evanat the end of the tests
20:27:47evanthey had 500M private :/
20:27:48evanbefore
20:27:57drbrainheh
20:28:07drbrainalso, the three failures have disappeared
20:28:13evanyeah
20:28:15evanI fixed them
20:28:19evanwith the stack cleanup
20:28:33evanthe kind of fixed themselves
20:28:39evanonce I had sanitized the stack
20:29:19blakewatters leaves the room.
20:29:39Defilerevan: What do these type strings mean? "uint8_t [0u]", "const char [3]"?
20:29:45Defiler(the part in brackets)
20:29:56evanthe size
20:30:16evani'm guessing the first one is this->bytes
20:30:31evanyou need a cast probably
20:31:36DefilerJust thought of an easier way to do this luckily
20:31:52DefilerTrying to get a ByteArray filled with the data of a known string to test against
20:32:28evanyou can't just assign to it.
20:32:32Defilerright
20:32:32evanyou need to memcpy into it.
20:33:11DefilerFor a minute I was thinking SET would let me do it, but then I remember that that is expecting Object*
20:33:36evanno
20:33:39evanthats just assigning it.
20:33:57evanthis->bytes isn't something that can be reassigned
20:34:05evanit actually points to the data IN this
20:34:17evanthe memory right after the header
20:35:36DefilerShould there eventually be 'at' and 'put' functions on ByteArray, or are we always going to use memcpy?
20:37:31evanthats what get_byte and set_byte are.
20:37:55DefilerYeah, we don't have those in cpp yet
20:38:03octopod enters the room.
20:38:18CIA-20* Implement thread_schedule primitive (Thread::wakeup); ba5f77e - Eric Hodel
20:38:21CIA-20* Test Thread::create; d55999d - Eric Hodel
20:39:21CIA-20* Implement string_to_f primitive and supporting functions; 07512f3 - Wilson Bilkovich
20:40:27evanok, lunch.
20:41:41CIA-20* Correct primitive name in String#tr_expand! error message; 7c10696 - Wilson Bilkovich
20:43:23atduskgreg enters the room.
20:49:34blakewatters enters the room.
20:50:17jgre__ enters the room.
20:50:44gramos enters the room.
20:54:48rubuildius_amd64Wilson Bilkovich: 7c106960b; 2629 files, 8609 examples, 28695 expectations, 0 failures, 0 errors
20:55:29rubuildius_ey64Wilson Bilkovich: 7c106960b; 2629 files, 8609 examples, 28695 expectations, 0 failures, 0 errors
21:06:01Defilerbrixen: Around?
21:09:29antares enters the room.
21:23:08Fullmoon enters the room.
21:23:40jgre__ leaves the room.
21:25:17CIA-20* Implement 'string_apply_and' primitive; 1bd22d3 - Wilson Bilkovich
21:27:37NoKarma enters the room.
21:31:32brixenDefiler: whassup?
21:32:09Defilerbrixen: Do you know anything about string_apply_and and/or the 'count_table' method in kernel/core/string.rb?
21:32:28brixenyeah
21:33:50brixenI wrote them
21:35:16DefilerCan you explain to me what 'apply_and' is meant for?
21:35:49brixenbecause you didn't understand the code, or there's a part of the code you don't understand?
21:35:49DefilerI just wrote a cpp version of it, but I was surprised to see that it did 'a[i] = a[i] && b[i]"
21:36:01Defilerinstead of a[i] & b[i]
21:36:16DefilerI guess I'm wondering why we needed a primitive for such a specialized case
21:36:18brixenthe 2nd is bit &
21:36:23Defilerright
21:36:25brixenthe first is logical &&
21:36:44brixenthat is a port of MRI logic, which is pretty hairy
21:36:47DefilerSo it is a no-op except for positions that are \000 in the 'other' string?
21:36:51DefilerThat's the whole story?
21:36:54brixenfeel free to rewrite and make it as fast
21:37:06brixenyeah, pretty much
21:37:11Defilerport of MRI logic for which method?
21:37:19brixenyou're logically and'ing the two tables
21:37:22brixento see what to translate
21:37:35DefilerOK, so this is more 'tr'-related rigging
21:37:42brixensee where it's used
21:37:51DefilerHrm. Yeah.
21:38:12brixenit's way way faster than the way we did it before
21:38:18Defilerwhoa String#count is wacky
21:38:43brixenyeah, I had to write some edge-case specs in doing that
21:38:46Defilerbrixen: Feel like looking at test_apply_and in test_string.hpp? Just to make sure I understood what it was supposed to return. Heh
21:38:52brixenI can find you the region of commits if you want some context
21:39:02brixenI can look at it
21:39:09brixenbut first, grabbing a quick bite
21:39:15DefilerWell, I don't need to delve too deeply. I just wanted to make sure we really needed this thing, etc.
21:39:17brixenwe'll know for sure as soon as we can run the specs ;)
21:39:19DefilerNo hurry
21:39:22Defilertrue enough
21:39:44brixenyeah, I'd say given the behavior of count (and methods that use that logic) and tr, that we need it
21:41:51moofbong leaves the room.
21:44:20ezmobius_ enters the room.
21:50:55bricolage leaves the room.
21:52:37Fullmoon leaves the room.
21:54:55BobFunkmmas enters the room.
21:57:10Defilerevan: So, I want a static, overloaded primitive. a la: http://pastie.org/249489
21:57:24Defilerevan: but field_extract.rb says I can't
21:57:25evanDefiler: NO!
21:57:28evan:D
21:57:46evaneither fix field_extract.rb
21:57:51evanor give them different names.
22:00:00ezmobius_ leaves the room.
22:02:33Fullmoon enters the room.
22:02:37DefilerHrm. Tough call. The shotgun prim for this is hideous because of the conditionals
22:03:57headius_ enters the room.
22:03:57headius leaves the room.
22:04:05evanDefiler: right, thats why the overloading prims exist
22:04:13evanDefiler: feel free to make field_extract smarter
22:05:05Fullmoon leaves the room.
22:07:17joachimmhow do I get a coverage report for the c++ vm tests?
22:07:44evanhm, i think it broke recently
22:07:47evanlet me fix it
22:07:48evanone sec
22:07:49drbrainresurrect the coverage tasks from history and plug them into rakelib/vm.rake
22:08:02Defilerevan: Is it simply that 'add_static_primitive' never learned about the last arg ('overload')? There's nothing fundamental in the way, right?
22:08:33evanyeah, i didn't add it.
22:08:41evandrbrain: will do
22:08:54evanDefiler: you'll just need another class probably
22:09:02evanthats like the normal overload one
22:09:05drbrainevan: zenspider might have gutted it
22:09:13DefilerOh yeah I see it
22:09:28DefilerHrm.. the other flavor of overloading claims to only support single-argument functions
22:09:38DefilerWhy is that?
22:09:41evandrbrain: yeah, i think so.
22:10:06evanbecause handling multiples requires a lot more code
22:10:07evanA LOT.
22:10:19evanif i can get it working, go for it.
22:10:28evanI didn't need it
22:10:31evanand thus didn't implement it
22:10:35DefilerOK
22:11:03DefilerI think what I will do here, in the interest of schedule, is make the primitive map to a function that then calls a more specialized version
22:11:25DefilerAs cool as it would be to fix field_generator, it should probably wait until the second time someone wants this
22:11:42evansure
22:11:55evanjust write your static primitive with OBJECT as the last argument
22:11:58evanand use try_as in it
22:12:04evanto dispatch to the proper version
22:12:08evanie, write it manually for now
22:12:31ezmobius leaves the room.
22:13:29Defileryep
22:14:07octopod leaves the room.
22:15:15Fullmoon enters the room.
22:15:25brixenDefiler: why are you creating a new BA in apply_and and memcpy'ing into it?
22:15:43brixenthat's gonna suck for performance and isn't needed
22:15:50brixenit modifies the contents of the BA in place
22:18:39drbrainhrm, closing a 16GB file shouldn't take this long
22:19:47drbrainoh, the disk is writing out all those zeros
22:19:59evandrbrain: zero's take longer than 1s
22:20:03evandrbrain: you should have made it all 1s
22:20:12evana 1 is just a straight line
22:20:21evana 0 is like twice as long
22:20:24evanduh.
22:20:28drbraindo you need to use some other API to make a sparse file?
22:20:40evani think so.
22:20:42blakewatters leaves the room.
22:20:44evandid you just dd it?
22:20:46drbrainI did a seek 4<<32 and wrote an 'x'
22:21:09Defilerbrixen: When I set that part up I guess I didn't realize that the length will never differ from this->size()
22:21:13Defilerbrixen: That IS true, right?
22:21:17brixenDefiler: yeah
22:21:31drbrainsomebody's OS on ruby-talk has a bug where files > 2GB are negatively sized
22:21:32Defilerthen yeah, that is unnecessary
22:21:55brixenDefiler: you should grok how those prims are used relative to your knowledge of how the ruby methods work
22:21:55Defilerevan: How do I fail a primitive that has String* return value signature?
22:22:21Defilerbrixen: I don't know anything about this part of the kernel, really
22:22:27evanthrow a PrimitiveFailure exception
22:22:43brixenDefiler: k, cus there's lots of edge cases. I'd recommend just copying the code until we can run the specs
22:22:47dbussinkdrbrain: with rubinius?
22:22:54dbussinkdrbrain: or mri?
22:22:57brixenDefiler: since #count is interwoven into so many String methods
22:22:58Defilerbrixen: code was not applicable to the cpp branch
22:22:59drbrainwith ruby
22:23:03drbrainMRI
22:23:15brixenDefiler: sure it is, the kernel of that code is the loop
22:23:20dbussinkwell, apparently it doesn't use 64 bit file io then
22:23:29brixenDefiler: the other shotgun methods are converted to cpp this->num_butes etc
22:23:31DefilerAre you talking about the primitive code?
22:23:34brixenyeah
22:23:36dbussinki know we use it on darwin, linux and freebsd i think
22:23:42dbussinklast one not really sure
22:24:07Defilerrbx_string_as_cstr doesn't exist in the cpp branch
22:24:21brixenDefiler: it's analog does, that's what I'm saying
22:24:21DefilerWhich is what got me started on making it fit
22:24:27brixentranslate only those parts
22:24:37brixenj
22:24:40brixener k
22:25:10dbussinkbrixen: jerk? ;)
22:25:23brixendbussink: nah :P
22:25:26evanbrixen: if you've got a certain way you think those should be done
22:25:31evanplease go pair with Defiler
22:25:38DefilerI can't just modify a char* in place after casting a bytearray's ->bytes to it in place, right?
22:25:38evanrather than just use IRC
22:25:46DefilerIf I can, then you are right, that is the best way
22:25:52evanDefiler: you can
22:25:54DefilerHrm.
22:25:56evanwhen you do
22:26:01evanyou're changing the ByteArray
22:26:04evandirectly
22:26:30Defilerso I can do: ((char*)string->data->bytes)[0] = blah
22:26:51evanyep
22:27:03DefilerWell that will be easier :)
22:27:20evanjust be sure you don't write off the end :)
22:27:46brixenDefiler: I think you got it, but if you want to pair let me know
22:28:15codebrulee enters the room.
22:28:16brixenevan: where's my SEE license? ;)
22:28:22evanoh oh!
22:28:23DefilerI do have this, yeah.. but if you want to pair on something you are working on, that would be fun
22:28:24evanon esec.
22:28:25evanone sec.
22:28:59Defilerhrm.. where is PrimitiveFailure defined?
22:29:01brixenDefiler: I'm working on Hash in cpp, and just started so I don't even know the layout yet
22:29:09DefilerI see references to it, but not its declaration
22:29:36imajes enters the room.
22:29:37Defileroh, dexc is 'define exception'
22:30:00codebrulee leaves the room.
22:30:09evanbrixen: see pm
22:30:12codebrulee enters the room.
22:30:30brixenthanks
22:32:07drbrainmaybe HFS+ doesn't properly support sparse files
22:32:17evandrbrain: certainly possible
22:32:23evandrbrain: try on freebsd
22:32:31drbrainI can't create a 1TB sparse file with dd on OS X
22:32:36drbraincan on FreeBSD
22:32:57drbrain"Most modern file systems support sparse files, including most Unix variants and NTFS, but notably not Apple's HFS+"
22:33:17evanack.
22:34:03Defiler throw new PrimitiveFailure("string_template expects a Fixnum or a String pattern");
22:34:13DefilerShould that work? I get nasty errors
22:34:42DefilerThe first of which is "error: expected type-specifier before ‘PrimitiveFailure’"
22:35:17evanDefiler: you didn't include primitives.hpp
22:35:19evani'm guessing.
22:35:42Defilerobjects.cpp defines PrimitiveFailure
22:35:55evanno it doesn't.
22:35:59DefilerOh, I need throw new PrimitiveFailure(some_obj, "desc") right?
22:35:59evanit uses it.
22:36:06Defiler GO(exc_primitive_failure).set(dexc(PrimitiveFailure, exc));
22:36:10evanyeah
22:36:12evanit's USING it.
22:36:21DefilerWhat? That declares it
22:36:22evanthats wrong anyway.
22:36:25evanno
22:36:29evanwho added that?
22:36:31Defilerdexc makes a new PrimitiveFailure class that is a subclass of 'exc' right?
22:36:36Defilerand exc is Exception
22:36:39evanPrimitiveFailure never gets seen.
22:36:50evanDefiler: someone confused the situation.
22:36:52DefilerOK
22:37:02evanit's not THAT PrimitiveFailure at all.
22:37:02DefilerI note that there are no current examples of this exception being used
22:37:08evanthat code is wrong.
22:37:15evanDefiler: include primitives.hpp
22:37:19evanand you'll be fine.
22:37:35Defilerk
22:39:02Defilerhttp://pastie.org/249544
22:39:10Defileris what I get after including primitives.hpp
22:39:22Defileroh duh
22:39:27Defilerit is PrimitiveFailed, not PrimitiveFailure
22:39:42evanoh doh.
22:39:43evanyes.
22:39:46evanmy mistake.
22:40:08evanthe PrimitiveFailed exception is just so a primitive can communicate with the VM about it's status
22:40:43masshopefully I just referred a new customer to EY
22:40:51ezmobius_ enters the room.
22:41:18Defilerevan: It yells when I try to pass it a literal string though
22:41:36Defilerhttp://pastie.org/249548
22:41:42evandid you check it's signature?
22:41:48massI just learned today from the gitcasts that git add actually creates a new object in the local repo
22:41:51massneat.
22:41:57evanDefiler: you need to learn to read headers.
22:41:59massat first that seemed weird, then it made sense
22:42:02evanDefiler: it doesn't take an argument.
22:42:02DefilerVMException (its parent) has const char* as 'reason'
22:42:06Defileras an arg
22:42:12Defilerso it should be here too, right?
22:42:36evanit doesn't currently
22:42:36evanno.
22:42:44DefilerOh right
22:42:45DefilerAssertion
22:42:53Defilerso this needs to subclass Assertion instead of VMException?
22:42:59evanno
22:43:05evanwhy would it need to be?
22:43:34DefilerWell, that or repeat what Assertion does, right?
22:43:43evanyou're not reading the code at all
22:43:45evanit feels like.
22:43:51DefilerI'm looking right at it
22:43:53Defilerso I guess not
22:44:06evannothing about the usage of PrimitiveFailed indicates it needs or should take an argument.
22:44:46evanwhere you getting that it should?
22:44:47DefilerWhat do you mean by 'usage'?
22:44:55DefilerNothing throws it currently
22:45:40guitsaru leaves the room.
22:46:10massthe exceptions look a little odd
22:47:27masstypically unless you have your heavy code optimization hat on, objects with an inheritance tree need a virtual destructor.
22:49:03evanonly if the parents have virtual methods
22:50:19AndrewO leaves the room.
23:00:39brapse leaves the room.
23:03:44Maledictus leaves the room.
23:08:42codebrulee leaves the room.
23:08:55drbrainshould Thread::create() queue the thread it creates?
23:09:05drbrainI think that's why my Thread::pass() test isn't working the way I expect
23:09:06aotearoa enters the room.
23:09:09drbrainevan: ^^
23:09:32evanhm.
23:09:37evani guess it doesn't
23:09:39evanit can
23:09:41evanthats fine
23:09:48evani don't really have an opinion
23:09:57drbrainit doesn't seem to in shotgun either
23:10:04lopex leaves the room.
23:10:22drbrainunless it happens in something cpu_thread_new calls
23:10:55mernen leaves the room.
23:11:20drbrain... no, doesn't seem to at all
23:11:43evanI think i wanted to make it explicit
23:11:45evanrather than implicit
23:11:49evanso you'd create a new thread
23:11:52evanthen you'd have to call wakeup
23:11:53evanto queue it
23:12:10drbrainok, I'll adjust my test instead
23:12:22drbrainchanging Thread::create causes failures in Channel
23:13:30evanok
23:13:39Arjen_ leaves the room.
23:14:55fbuilesv enters the room.
23:16:57pauldix leaves the room.
23:22:00edwardam enters the room.
23:25:28drbrainI think run_best_thread isn't going to work
23:25:52evannot work how?
23:25:54drbrainit picks lower priority threads over higher priority threads (simple fix)
23:26:00evanah
23:26:00drbrainbut doesn't seem to address starvation at all
23:26:02evanprobably just a bug.
23:26:06evanyeah
23:26:06evani know
23:26:12evanagain, thats the ST scheduler
23:26:22evanit doesn't address starvation on purpose though
23:26:36drbrainif you have a threads at priority 0, 2 and 2, it'll ping-pong between the two priority 2 threads
23:26:48evanyeah
23:26:49evani know.
23:26:54evanthats the way the ST scheduler works
23:27:40evanthey describe it as "each priority is run only when there are no threads of a higher priority ready"
23:27:55drbrainok
23:28:25drbrainlooks like 1.8 does the same
23:29:30drbrainwalks the linked-list of threads, prefering higher priority threads always
23:30:07BobFunkmmas leaves the room.
23:30:41evanyep
23:30:49brixenevan: the CSM stuff for ivars, we want to continue using that, right?
23:30:49evani've put in a task for us to address starvation
23:30:54evanbrixen: yeah
23:31:04brixenevan: so, I can move that to LT, yes?
23:31:14drbrainI think it should be lowest possible priority
23:31:15evanit should already be an LT
23:31:21brixenit's still on Hash
23:31:31evanbrixen: yeah, should be an LT
23:31:34brixenk
23:31:48evandrbrain: so not support anything lower than the default?
23:32:17drbrainjust leave the algorithm alone
23:32:28drbrainand wait until somebody says "hey, my thread didn't run"
23:32:34evanok, but those seem like different things
23:32:49drbrainI've never seen anybody set priorities on threads
23:33:03evantrue
23:33:06evansure, whatever ya think.
23:33:50drbrainwell, you'll never starve threads of the same priority
23:33:56drbrainonly threads of lower priority
23:34:07evanso how does that effect the default being 0 versus 2?
23:34:25drbrainI have no objection to default being 2
23:34:35brixenevan: do we really need the CSM idea? couldn't we just have Tuple::to_lt (or to_lookuptable) ?
23:34:47evanbrixen: thats what it is.
23:34:56evanthere is no CSM class
23:35:00evanit's just using a Tuple
23:35:07brixenyeah, but it's weird to have Hash::csm_new
23:35:15evanmove it.
23:35:15brixenwhy not just use a Tuple?
23:35:17brixenk
23:35:21evanit is a tuple
23:35:30evanHash::csm_new return a Tuple
23:35:34evanit's just named badly.
23:35:54evanthere is just CSM logic
23:36:11brixenyeah
23:36:13evantreating a Tuple is a linear key/value pair set
23:36:21brixenyep, but those names are just weird
23:36:24evans/is/as/
23:36:29evanbrixen: feel free to fix the names
23:36:43brixenwhy not just have CSM?
23:36:48brixenas a class?
23:37:15evansure
23:37:20evanwe should change the name then.
23:37:24brixento?
23:37:26evanand expose it
23:37:34evanI'd say CompactLookupTable
23:37:37brixenok
23:37:55evanshould probably be a subclass of Tuple
23:37:56massevan: the problem is that if you catch a higher level exception, I believe the system will cast it, at which point it calls the parent destructor
23:38:04brixenevan: yeah
23:38:16evanmass: hm, ok.
23:39:28ezmobius leaves the room.
23:40:07drbrainah, I read run_best_thread() wrong
23:40:12drbrainit has continue, not break
23:40:27drbrainso it walks through all the possible priorities
23:40:32massthe way things currently look, that would happen if you throw Assertion and catch VMException
23:40:46drbrainit should probably go the other way, still
23:41:16evandrbrain: well, while your there, write up some tests for the behavior you think is best and impl. it.
23:41:24drbrainI did
23:41:37drbrainwhich is how I found I read it wrong :)
23:41:49drbrainI'm going to start from max priority and work down until we find a thread
23:41:55drbrainthat will be clearer
23:42:08evansure
23:47:29codebrulee enters the room.
23:48:50CIA-20* Add coverage task back in as vm:coverage; bebd2d1 - Evan Phoenix
23:49:02evanjoachimm: ok, coverage is back, use 'rake vm:coverage'
23:51:49joachimmevan: great, running now.
23:57:58codebrulee leaves the room.
23:58:04botanicus leaves the room.