Camelia, the Perl 6 bug

IRC log for #parrot, 2011-03-04

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:01 particle1 joined #parrot
00:03 PerlJam shockwave: basically
00:03 athomason left #parrot
00:04 particle left #parrot
00:06 whiteknight shockwave: there are two mechanisms for NCI
00:07 whiteknight the "best" way is to use what's called a "thunk generator". Parrot has support for libffi right now built in. There may be others as well in the ecosystem
00:07 whiteknight libffi allows you build an arbitrary call frame for any signature
00:08 whiteknight if you don't have libffi, you have to pre-compile a static, finite list of call thunks
00:08 whiteknight if you have a Parrot repo checkout handy, take a look at the src/nci directory. The list of static signatures compiled into Parrot is
00:08 whiteknight src/nci/*.nci
00:09 PerlJam whiteknight++ for a good explanation
00:09 whiteknight shockwave: so, if you find a signature which is not supported, you have two options: use a proper frame builder, or add to the list of static thunks
00:09 shockwave whiteknight: I'm adding a signature to that list and recompiling to see if it will just work.
00:09 whiteknight I think there's another step, I don't remember what
00:10 whiteknight hold on
00:10 whiteknight "make bootstrap-nci"
00:11 whiteknight that will parse the .nci files into the .c files (see src/nci/core_thunks.c for an example of what is generated)
00:11 whiteknight that parser is written in NQP, so you need to build Parrot first, then bootstrap-nci, then rebuild
00:11 particle1 is now known as particle
00:13 shockwave So, the sequence is: 1) Build Parrot first time. 2) Add signature to extras_thunk.nci. 3) Run make bootstrap-nci 4) Rebuild parrot.
00:13 whiteknight that sounds about right
00:13 whiteknight we don't change the list of nci thunks too often, so we haven't tried to make it any easier
00:14 shockwave understand
00:18 shockwave I'm not getting the signature that I want to work. Is there maybe another step missing? Are any header files changed?
00:22 whiteknight no header files. I might be missing a step. plobsing is the resident expert in this area
00:23 shockwave kk. Thanks
00:23 whiteknight where did you add that new signature, core_thunks.nci?
00:23 shockwave extras_thunks.nci
00:24 whiteknight okay so if you search through extra_thunks.c in src/nci/, you should be able to find your new signature in that file
00:24 shockwave Yep, it's just a line that looks like so: t    ptt
00:24 whiteknight hmm
00:24 whiteknight in the .c file?
00:25 shockwave extra_thunks.nci
00:25 whiteknight no, look in the file extra_thunks.c
00:25 whiteknight see if you can find a function with that signature
00:25 lucian_ left #parrot
00:25 whiteknight it's going to be a function called pcf_t_ptt
00:27 PerlJam shockwave: What does your test code look like?
00:27 shockwave whiteknight: No, that function was not in there.
00:27 shockwave PerlJam: PIR?
00:27 whiteknight ok, so bootstrap-nci failed somehow
00:28 whiteknight or, as I said, I may be missing a step
00:28 shockwave whiteknight: let me try it again,  because I did a make clean afterwards and tried again.
00:28 PerlJam shockwave: it worked fine for me when I just tried it.  I thought perhaps your test code may have had a flaw
00:29 shockwave func,  = dlfunc , lib, , name, sig
00:29 mrwall-e left #parrot
00:29 shockwave That's the PIR to load the function.
00:29 shockwave Let me first try to remake that extra_thunks.nci step
00:29 dmalcolm left #parrot
00:29 mrwall-e joined #parrot
00:33 shockwave No, it's not getting in there.
00:33 whiteknight weird
00:33 shockwave When doing nmake bootstrap-nci, the script is failing at the end with:
00:34 mrwall-e left #parrot
00:34 shockwave '.' is not recognized as an internal or external command,
00:34 shockwave operable program or batch file.
00:34 shockwave src/nci/extra_thunks.nci > src/nci/extra_thunks.c
00:34 shockwave '.' is not recognized as an internal or external command,
00:34 shockwave operable program or batch file.
00:34 cotto ~~
00:35 whiteknight shockwave: are you on windows?
00:35 shockwave yes, windows 7
00:35 whiteknight I suspect that script may never have been tested on windows
00:38 whiteknight do you have git?
00:39 whiteknight I just ran it, I can send you the resulting patch
00:39 whiteknight or, I supposed, I could send you the whole 8000 line file
00:39 shockwave whiteknight: I do have it, though I'm not very good at using it.
00:39 whiteknight let me send you the whole file
00:40 shockwave whiteknight: Did you changed the script generator?
00:40 whiteknight nope
00:40 shockwave I meant, the makefile that is failing.
00:40 whiteknight sent
00:43 shockwave whiteknight: Thanks for send it.
00:43 whiteknight no problem. you shouldn't get stuck on little details like this
00:43 shockwave We'll probably want to fix the script that generates that file, as I'll have more C functions to add.
00:44 whiteknight okay, I'll take a look at it tomorrow. I have a windows machine at work
00:44 shockwave whiteknight: I'm not trying to rush it, just saying.
00:47 whiteknight no rush. I have to do it tomorrow, I'm not at work on the weekend
00:47 shockwave :)
00:48 shockwave For now, I'll just use other signatures that take the amount and type of args I need, and pass dummies for the unused ones.
00:54 shockwave Thanks
00:56 mrwall-e joined #parrot
00:56 davidfetter joined #parrot
01:03 athomason joined #parrot
01:08 shockwave left #parrot
01:22 mrwall-e left #parrot
01:27 mrwall-e joined #parrot
01:27 mrwall-e left #parrot
01:35 ShaneC left #parrot
01:36 ShaneC joined #parrot
01:37 mrwall-e joined #parrot
01:39 mrwall-e left #parrot
01:44 kid51 joined #parrot
01:49 dalek Rosella: f24ec02 | Whiteknight++ | src/test/ (3 files):
01:49 dalek Rosella: break the test() function out into the Test namespace. Fix Suite so we output the plan correctly
01:49 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/f24ec027aa
01:49 dalek Rosella: 91cec9e | Whiteknight++ | / (15 files):
01:49 dalek Rosella: fix tests to use the new syntax
01:49 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/91cec9e7ff
01:49 dalek Rosella: 4315165 | Whiteknight++ | / (4 files):
01:49 dalek Rosella: fix things so all tests pass again
01:49 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/43151659b9
01:50 whiteknight an NQP test harness, using a winxed-based harness library, running tests written in NQP for winxed-based libraries
01:50 whiteknight we're living the dream
01:52 cotto and bacek seems to think he'll be able to teach opsc to speak llvm in a matter of days
01:53 whiteknight in a house he built himself on the surface of the moon, no doubt
01:54 davidfetter left #parrot
02:01 bacek_mobile joined #parrot
02:02 bacek_mobile Whiteknight, challenge accepted :)
02:03 cotto magical coding robot doesn't even need to be present to know when he's being talked about
02:03 bacek_mobile Hey, I'm always connected!
02:18 kid51 Does anyone know the name of the main Perl 5 site on github?
02:20 kid51 It's evidently neither https://github.com/perl5 nor https://github.com/perl , which is what I would have expected
02:22 kid51 Ah, I see that it's not really hosted at github.com; it's only mirrored there.
02:24 dalek Rosella: 7dda3a3 | Whiteknight++ | / (3 files):
02:24 dalek Rosella: add a few more test for rosella build/construct. found and fixed a related bug
02:24 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/7dda3a3861
02:24 dalek Rosella: a7771d4 | Whiteknight++ | README.md:
02:24 dalek Rosella: update README to show that winxed is the wy
02:24 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/a7771d48a3
02:24 dalek Rosella: 1604420 | Whiteknight++ | src/core/Rosella.winxed:
02:24 dalek Rosella: +documetation for core/Rosella
02:24 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/1604420913
02:24 whiteknight left #parrot
02:31 bacek_mobile left #parrot
02:36 bacek_mobile joined #parrot
02:46 kid51 Experiencing build failure in master here:
02:46 kid51 src/gc/gc_gms.c:1228: failed assertion '!PObj_on_free_list_TEST(pmc) || !"Resurrecting of dead objects is not supported"'
02:46 kid51 commit 0cf3ffac966827f06b75ea99b5725ae269af1765
02:54 kid51 Very strange.
02:55 kid51 I called 'make' at the point of failure ... and the build then completed.
02:55 kid51 Let's see if it PASSes make test
02:56 cotto kid51, which part of the build triggered that failre?
02:57 nopaste "kid51" at 192.168.1.3 pasted "build failure at 0cf3ffa on Darwin/PPC -- but resumed 'make' and built okay" (1092 lines) at http://nopaste.snit.ch/35299
02:58 bacek_mobile left #parrot
02:58 cotto kid51, can you run the last step before the failure several times and see if it fails?
02:58 cotto ./parrot-nqp --target=pir --output=compilers/opsc/ge​n/Ops/Compiler/Grammar.pir compilers/opsc/src/Ops/Compiler/Grammar.pm
02:59 kid51 Well, this being on my slow box, I'll have to wait till 'make test' completes.
03:00 cotto ok
03:01 kid51 However, on this machine, master passed as recently as Feb 28 (9e03d59), and I tested plobsing's infnan2 branch repeatedly last night before he merged.
03:01 cotto It could be my changes to the mmd cache.
03:02 kid51 'make test' seems to be doing okay, so lemme kill it and follow your instructions.
03:03 bacek_mobile joined #parrot
03:07 nopaste "kid51" at 192.168.1.3 pasted "3 fails on Ops::Compiler::Grammar" (10 lines) at http://nopaste.snit.ch/35309
03:07 cotto excellent
03:07 cotto kid51, how reliable is that?
03:07 kid51 What do you mean by 'that'?
03:08 cotto the failure
03:08 kid51 Well, you saw what I posted.  i did it 3 times in a row.
03:08 kid51 But, now, I have once again begun tests, and my tests are passing (op_tests and pmc_tests)
03:09 cotto ok
03:10 kid51 make test PASS on same commit 0cf3ffa on linux/i386
03:10 kid51 You think this could be side effect of mmd-cache-pmc merge?
03:11 cotto it's possible.  It made some changes to a gcable
03:11 bacek_mobile left #parrot
03:11 cotto kid51, can you check out db775476eaeed3a3b and see if the failures persist?
03:12 kid51 I was just diffing against that commit :-)
03:13 kid51 but now I'll have to do a realclean, reconfigure; rebuild; take time
03:13 cotto kid51, realconfig/realclean shouldn't be necessary
03:14 cotto the change doesn't mess with generated bytecode and make should be smart enough to update the object files
03:14 kid51 Well, I already did the realclean.
03:14 kid51 so we have to wait
03:39 kid51 cotto bad news: I got the same problem at db775476ea
03:42 cotto kid51, ok
03:42 cotto I'm glad it's not my fault, but it's also a bug we'll need to fix.
03:54 theory left #parrot
04:01 dalek lorito: 818b412 | atrodo++ | Makefile:
04:01 dalek lorito: Include the built-in PMCs in the build process
04:01 dalek lorito: review: https://github.com/atrodo/lorito/commit/818b412472
04:01 dalek lorito: 340f919 | atrodo++ | / (3 files):
04:01 dalek lorito: Add a COERCE_PMC op to extract boxed values from PMCs
04:01 dalek lorito: review: https://github.com/atrodo/lorito/commit/340f919696
04:01 dalek lorito: e4c1b74 | atrodo++ | pmc.c:
04:01 dalek lorito: Initalize more data on a new PMC
04:01 dalek lorito: review: https://github.com/atrodo/lorito/commit/e4c1b740f8
04:01 dalek lorito: 9f78dc0 | atrodo++ | core.c:
04:01 dalek lorito: Fix an off-by-one error inside the load op
04:01 dalek lorito: review: https://github.com/atrodo/lorito/commit/9f78dc0266
04:01 dalek lorito: e4ed51e | atrodo++ | / (3 files):
04:01 dalek lorito: Add extremely basic writing of PMCs (only if the PMC is null)
04:01 dalek lorito: review: https://github.com/atrodo/lorito/commit/e4ed51e657
04:01 dalek lorito: 2e6df8a | atrodo++ | core.c:
04:01 dalek lorito: Add some musing about STR CALL
04:01 dalek lorito: review: https://github.com/atrodo/lorito/commit/2e6df8aedb
04:01 dalek lorito: f99a3e4 | atrodo++ | interp.c:
04:01 dalek lorito: Fix the null pmc's creation process
04:01 dalek lorito: review: https://github.com/atrodo/lorito/commit/f99a3e48d8
04:01 dalek lorito: baf4b51 | atrodo++ | pmc.c:
04:01 dalek lorito: Fix another off-by-one error in pmc_decode
04:01 dalek lorito: review: https://github.com/atrodo/lorito/commit/baf4b51cbe
04:01 dalek lorito: 42674a3 | atrodo++ | / (2 files):
04:01 dalek lorito: Remove some debugging code
04:01 dalek lorito: review: https://github.com/atrodo/lorito/commit/42674a308b
04:01 dalek lorito: 941d180 | atrodo++ | / (2 files):
04:01 dalek lorito: First version of the built-in resiablepmcarray and test
04:01 dalek lorito: review: https://github.com/atrodo/lorito/commit/941d180123
04:02 cotto oh
04:02 cotto looks like someone's been busy
04:03 atrodo It felt like a lorito night
04:03 atrodo Plus, I'm in the habit of making a lot of tiny git commits, so the commit count gets a little skewed
04:04 cotto atrodo, wfm
04:06 atrodo We started a new project at $dayjob middle of last year, my commit count dwarfs the other developer even though he did just as much
04:06 cotto atrodo, have you thought about what ffi should look like, i.e. what atoms will be needed in M0 to support it?
04:06 cotto that and concurrency primitives are the least well-defined concepts atm
04:06 atrodo I hadn't put a lot of thought into it
04:07 atrodo I've done some hand waving at the problem in designing how my prototype works
04:08 cotto the spec process is supposed to expose some of that hand-waving
04:08 atrodo The inital idea was that all arguments are passed in a rpa, including to nci/ffi.  so nci/ffi would have thunk that would extract the native values from the rpa and call the function
04:09 atrodo it sounds like a great flexible method in my head, but I haven't convinced myself it's efficient
04:11 kid51 cotto: I checked out 9e03d5914bd and am once again building successfully there, as I did on Feb 28.  Assuming this complete, that suggests that the cause of failure lies between that commit and the one where infnan2 was merged in last night.
04:11 * kid51 must sleep
04:12 cotto kid51, ok
04:12 cotto 'night
04:13 kid51 left #parrot
04:27 theory joined #parrot
05:11 plobsing joined #parrot
05:24 simcop2387_ joined #parrot
05:26 simcop2387 left #parrot
05:26 simcop2387_ is now known as simcop2387
05:37 cotto http://docs.google.com/viewer?url=http​://research.microsoft.com/en-us/um/peo​ple/simonpj/papers/lw-conc/lw-conc.pdf
05:38 cotto thank you, internets
05:40 tadzik is now known as internets
05:40 internets you're welcome!
05:40 internets is now known as tadzik
05:52 dalek tracwiki: v77 | bacek++ | ParrotQuotes
05:52 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Pa​rrotQuotes?version=77&action=diff
05:57 tadzik oh-oh :)
06:01 cotto I like that paper, but when the the author starts explaining the primitives I feel like I accidentally ended up in the INTRECAL spec.
06:15 mtk left #parrot
06:20 rurban_ joined #parrot
06:22 mtk joined #parrot
06:24 rurban left #parrot
06:24 rurban_ is now known as rurban
06:46 fperrad joined #parrot
07:10 theory left #parrot
07:34 theory joined #parrot
07:40 dalek parrot: dba406c | fperrad++ | t/compilers/opsc/01-parse-body.t:
07:40 dalek parrot: [t] fix "Unknown TAP token"
07:40 dalek parrot:
07:40 dalek parrot: legal TAP comment starts by #
07:40 dalek parrot: review: https://github.com/parrot/parrot/commit/dba406ca28
08:19 theory left #parrot
08:32 preflex left #parrot
08:35 preflex joined #parrot
08:42 lucian joined #parrot
09:19 cognominal left #parrot
09:29 contingencyplan left #parrot
09:35 lucian left #parrot
09:59 zby_home joined #parrot
10:09 pjcj left #parrot
10:16 pjcj joined #parrot
10:17 cognominal joined #parrot
10:55 JimmyZ joined #parrot
11:14 fperrad_ joined #parrot
11:17 fperrad left #parrot
11:17 fperrad_ is now known as fperrad
12:16 JimmyZ left #parrot
12:16 JimmyZ joined #parrot
12:40 zby_home left #parrot
13:26 whiteknight joined #parrot
13:26 whiteknight good morning, #parrot
13:36 dalek TT #2037 created by jkeenan++: darwin/ppc build failure
13:36 dalek TT #2037: http://trac.parrot.org/parrot/ticket/2037
13:55 Coke someone should introduce kid51 to "git bisect"
14:02 mtk left #parrot
14:09 mtk joined #parrot
14:13 plobsing left #parrot
14:18 JimmyZ left #parrot
14:20 rurban_ joined #parrot
14:21 rurban_ left #parrot
14:23 rurban left #parrot
14:23 rurban joined #parrot
14:24 tadzik wave-wave
14:24 atrodo tilde-tilde
14:27 moritz . .
14:27 * moritz particles
14:35 plobsing joined #parrot
14:56 rurban_ joined #parrot
14:58 fperrad left #parrot
15:00 rurban left #parrot
15:00 rurban_ is now known as rurban
15:04 fperrad joined #parrot
15:12 whiteknight cotto: ping
15:12 mikehh left #parrot
15:20 cotto whiteknight, pong
15:24 whiteknight cotto: a few key vtables are not overridable. does, isa, does_pmc, isa_pmc, and can I think. I would like to make the overridable from PIR
15:25 cotto whiteknight, what keeps them from being overridable?
15:25 whiteknight can is really broke, it redirects to a method call, not a vtable override lookup.
15:25 cotto !?!
15:26 plobsing left #parrot
15:26 cotto there has to be a way of looking at that that makes sense
15:26 whiteknight nevermind, does and does_pmc are overridable. actually, does is overridable, but does_pmc just redirects to does
15:26 whiteknight right, so I want to sanify this all, and make all these things overridable
15:26 whiteknight I'm just wondering if you have any objections
15:26 cotto Ah.  "can" returns true if the method is non-null
15:27 whiteknight oh, i misread that. yes, that's what it does
15:28 whiteknight so that opens the question then, do we want "can" to be overridable, or should it always be a boolean wrapper around find_method?
15:28 cotto overridable makes sense to me
15:29 moritz speaking of which... could you please make destroy overridable too?
15:29 moritz I'd like to experiment with Perl 6 level DESTROY methods
15:29 whiteknight isa is really the most important thing for me right now. I'm trying to create a proxy library. The proxy objects should transparently look like the objects they are shadowing
15:29 * cotto gets ready for $dayjob
15:30 whiteknight that means the proxy should isa the target, does what the target does, and can what the target can
15:30 * whiteknight grammars good
15:32 hercynium joined #parrot
15:36 Andy joined #parrot
15:41 particle1 joined #parrot
15:45 particle left #parrot
15:47 particle1 is now known as particle
15:51 woosley joined #parrot
15:55 perlit0 joined #parrot
16:01 woosley left #parrot
16:08 theory joined #parrot
16:13 fperrad_ joined #parrot
16:14 fperrad left #parrot
16:15 fperrad_ is now known as fperrad
16:15 cotto_work ~~
16:18 plobsing joined #parrot
16:18 Patterner left #parrot
16:19 Psyche^ joined #parrot
16:19 Psyche^ is now known as Patterner
16:21 JimmyZ joined #parrot
16:25 * Coke stares at this javascript.
16:26 cotto_work best.  captcha.  evar. http://random.irb.hr/signup.php
16:26 atrodo That truely is awesome
16:27 atrodo Guess I'm never signing up for that service
16:27 cotto_work you could juse type it into wolfram alpha
16:27 plobsing so could a bot
16:27 atrodo 'cept it's an image
16:28 plobsing it is a fairly clear image
16:28 cotto_work spammer ocr probably isn't designed to handle mathematical notation
16:28 atrodo oh, finally got an easy one
16:28 atrodo 1 - (-2) -0 - 0 * 3 - 0 - (-2) =?
16:32 cotto_work the actual test is to find an easy captcha
16:34 JimmyZ left #parrot
16:36 * Coke got this one:
16:36 Coke http://random.irb.hr/latexrender/pictur​es/57d39ba439b998173db2322ed95aca36.gif
16:36 eternaleye left #parrot
16:37 whiteknight Coke: 7
16:37 whiteknight actually, maybe 21
16:37 whiteknight yes, 21
16:37 Coke maybe "too hard". ;)
16:38 cotto_work we need an aloha fact that gives people this link: http://who-t.blogspot.com/2011​/03/how-to-dos-developer.html
16:38 whiteknight I did the limit before the derivative. If you do things in the right order it's 21
16:38 atrodo I haven't done calc in 8 years
16:39 whiteknight atrodo: there's nothing really to do. the limit basically means we're doing sin(0) + cos(0)
16:40 atrodo Again, haven't touched that field of math in 8 years, so I'd have to agree with Coke. "Too Hard"
16:40 perlit0 left #parrot
16:45 eternaleye joined #parrot
16:59 jsut_ joined #parrot
17:01 dalek Rosella: 74cfd90 | Whiteknight++ | / (19 files):
17:01 dalek Rosella: remove the old .nqp files from the proxy library. Replace with new .winxed versions. Change the design significantly. The library builds. Add in some [passing] tests for intercepting methods and attributes
17:01 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/74cfd90978
17:04 jsut left #parrot
17:19 fperrad_ joined #parrot
17:22 fperrad left #parrot
17:23 fperrad_ is now known as fperrad
17:34 cotto_work tewk: ping
17:52 PacoLinux_ joined #parrot
18:03 PacoLinux_ left #parrot
18:14 lucian joined #parrot
18:28 contingencyplan joined #parrot
18:45 dalek parrot/whiteknight/vtable_overrides: e026212 | Whiteknight++ | src/pmc/object.pmc:
18:45 dalek parrot/whiteknight/vtable_overrides: Object.can is now overridable.
18:45 dalek parrot/whiteknight/vtable_overrides: review: https://github.com/parrot/parrot/commit/e026212453
18:45 dalek parrot/whiteknight/vtable_overrides: d3192d0 | Whiteknight++ | src/pmc/object.pmc:
18:45 dalek parrot/whiteknight/vtable_overrides: allow isa and isa_pmc to be overrideable
18:45 dalek parrot/whiteknight/vtable_overrides: review: https://github.com/parrot/parrot/commit/d3192d084e
18:45 dalek parrot/whiteknight/vtable_overrides: 6bafefc | Whiteknight++ | src/pmc/object.pmc:
18:45 dalek parrot/whiteknight/vtable_overrides: some optimizations to isa
18:45 dalek parrot/whiteknight/vtable_overrides: review: https://github.com/parrot/parrot/commit/6bafefcad7
18:45 dalek parrot/whiteknight/vtable_overrides: cf26847 | Whiteknight++ | / (2 files):
18:45 dalek parrot/whiteknight/vtable_overrides: several fixes from bad copy+paste. Add in a test for 'can' override
18:45 dalek parrot/whiteknight/vtable_overrides: review: https://github.com/parrot/parrot/commit/cf268478d8
18:45 dalek parrot/whiteknight/vtable_overrides: f41f8b1 | Whiteknight++ | t/pmc/object-meths.t:
18:45 dalek parrot/whiteknight/vtable_overrides: +tests for overridding isa and isa_pmc
18:45 dalek parrot/whiteknight/vtable_overrides: review: https://github.com/parrot/parrot/commit/f41f8b12c4
18:46 whiteknight cotto_work: take a look at the whiteknight/vtable_overrides branch when you have a chance. I'm testing now for sanity
18:50 cotto_work whiteknight: will do
18:51 whiteknight the extra vtable override search is going to slow down can, isa, and isa_pmc vtable calls.
18:52 whiteknight there are a million ways I can think of to optimize class/object, but it seems pointless if we are moving to 6model
18:54 whiteknight all coretests in that branch pass for me on my machine
18:58 mikehh joined #parrot
19:01 cotto_work I'm seeing why jnthn spent so much effort on method caching.
19:01 whiteknight Parrot_oo_something_something_find_vtable_override does caching, I think
19:04 whiteknight I don't remember what it's called
19:06 sorear in 6model, method "caching" is absolutely critical for reasons beyond performance
19:07 whiteknight what other reasons?
19:07 sorear $obj.foo() means $class.find_method("foo").postcircumfix:<( )>($obj) -- without caching (and pre-filling of the KnoeHOW method cache), there would be infinite regress
19:07 sorear KnowHOW
19:10 whiteknight gotcha
19:10 whiteknight that sounds like a bad thing
19:18 cotto_work whiteknight: how does performance look with that branch?
19:22 whiteknight cotto_work: I haven't benchmarked it. I'm on a VM here, on a computer running a few other CPU-intensive apps. numbers I get would be meaningless
19:22 whiteknight cotto_work: like I said, I'm sure there is a hit. I just don't know how much
19:23 cotto_work whiteknight: ok.  I don't want that to get merged without some discussion on parrot-dev.
19:23 whiteknight I figured
19:23 whiteknight I'll send out a mail tonight
19:28 Coke (can always run with callgrind and count # of instructions)
19:29 whiteknight Coke: True, but I would need to find a meaningful benchmark to count, because not all benchmarks are going to make use of can and isa
19:29 whiteknight and valgrind would take the rest of the workday (and then some) if I just ran it willy-nilly over the test suite
19:33 cotto_work That raises the question of what a realistic benchmark would be.
19:37 dalek Rosella: aa39e1c | Whiteknight++ | src/proxy/ (2 files):
19:37 dalek Rosella: add in provisional (not supported by Parrot) overrides for can/isa/isa_pmc. Add lots of comments to the proxy controller type to explain what it is
19:37 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/aa39e1c484
19:38 cotto_work I found a paper by Simon Peyton Jones that looks like it'll be an excellent starting point for figuring out the necessary concurrency primitives for M0.
19:38 cotto_work He's basically doing that, but for Haskell.
19:39 cotto_work er, ghc
19:40 whiteknight link?
19:40 cotto_work http://academic.research.m​icrosoft.com/Paper/4114284
19:43 whiteknight oh wow. Yes that does look like what I've been envisioning for Parrot's threading system
19:44 lucian you might also want to look at JVMs, especially jikes
19:45 cotto_work Have fun with page 3.
19:45 plobsing I've been wondering if Parrot can pass the buck on concurrency in the short term. Be reentrant, but not provide or enforce anything.
19:48 whiteknight plobsing: minimalism is a good idea, but we have to provide something
19:49 whiteknight otherwise, how do you run things in parallel, processes?
19:50 plobsing short term
19:50 plobsing we don't do parallelism well now
19:50 plobsing and by well, I mean "in a way that is at all usable by our customers"
19:50 lucian how about you don't do it at all now and only offer green threads and async io?
19:50 lucian that's trivial by comparison
19:51 lucian but real thread/locks primitives are necessary (eventually)
19:51 whiteknight plobsing: you're preaching to the preacher. I've been wanting to rip out our current threading system for months
19:51 plobsing whiteknight: there's a difference between this an "just rip it out"
19:52 cotto_work lunch
19:52 whiteknight plobsing: I'm open to all ideas. Reimplementation is fine too. But what we have now is actively broken, and is creating problems in other areas
19:53 plobsing we should be able to show that Parrot can handle asyncrhonous and possibly parallel usages (reentrancy), but not provide a blessed implementation, leaving it up to embedders/extenders to handle things for now
19:53 plobsing as an added bonus, if something evolves from that, it won't have the invasiveness that the current system has.
19:53 whiteknight we don't handle asynchronous or possible parallel usages. We absolutely do not handle that
19:53 whiteknight and it would be a hell of a lot of work to fix that
19:54 plobsing we should. before we *provide* threads, we should work from someone else's threads.
19:54 plobsing libparrot should be threadsafe
19:54 whiteknight right, I know what you are saying. But we do pretend to *provide* threads, and that gets in the way of other efforts
19:55 whiteknight an extender can't write a plug-in threading system, because we have crap in the way
19:55 whiteknight maybe then can, but I doubt it
19:55 whiteknight libparrot should be threadsafe if each thread has a strict 1:1 relationship with an interp, and if we absolutely positive never ever share data between threads
19:56 whiteknight that much, I think, is plausible right now
19:56 plobsing we use too many global variables for that
19:56 plobsing that's the first problem
19:57 whiteknight once place I know we are using global variables (especially in a buggy way) is in the threading code. I think we still have some stuff in the global init code. anywhere else?
19:57 whiteknight PMC singletons
19:57 plobsing don't get me started on those
19:57 whiteknight (which, in a tangential topic, need a MAJOR redesign)
19:59 [hercynium] joined #parrot
20:01 jsut joined #parrot
20:02 * mikehh need to reboot
20:03 mikehh left #parrot
20:04 hercynium left #parrot
20:04 [hercynium] is now known as hercynium
20:06 jsut_ left #parrot
20:07 hudnix left #parrot
20:08 [hercynium] joined #parrot
20:13 mikehh joined #parrot
20:13 hercynium left #parrot
20:13 [hercynium] is now known as hercynium
20:29 hudnix joined #parrot
20:44 cotto_work whiteknight: *re*design?
20:45 PerlJam cotto_work: unless you consider the current work "predesign", in which case it just needs a design.  :)
20:47 cotto_work I'm not sure I'd consider it a design other than "whatever the code happens to do now".
20:51 dalek Rosella: 3679067 | Whiteknight++ | src/ (7 files):
20:51 dalek Rosella: two quick prototype files for the new mockobject library
20:51 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/3679067e46
20:52 whiteknight cotto_work: you're right. I don't suspect much actual design went into this.
20:55 whiteknight There are two questions: First and foremost, should Parrot be implementing the singleton contract at all, or is that a user-code issue?
20:55 whiteknight next, if we *do* want to implement that contract, where is the best, most unintrusive place to hold the pointers?
20:56 cotto_work I'm not entirely sure why Parrot should care at all.
20:56 plobsing what is a singleton? is it unique to the interpreter? across interpreters? does that mean trusted and untrusted interpreters share data?
21:03 whiteknight my first one about whether we want singletons or not is really the biggest question. All others fall out of the "how do we do it" question
21:03 whiteknight the examples we have so far inside Parrot are less than compelling
21:03 plobsing left #parrot
21:04 whiteknight Scheduler does not need to be a singleton. It only needs to be unique among a group of threads which intercommunicate
21:04 whiteknight Env doesn't need to be a singleton. It doesn't make a lot of sense to have several of them, but it's basically a stateless access mechanism
21:04 whiteknight OS similarly
21:05 whiteknight that is, you can have multiple copies of Env or OS running around without getting into any troubles
21:05 whiteknight Again, not sure why you would want to, but this does seem like poor justification to support singletons at the Parrot level
21:06 whiteknight Actually, the scheduler could really be a lot more flexible, and we certainly don't need a restriction that there is only one
21:07 whiteknight At any given time an interpreter only interacts with one scheduler, but we could swap schedulers easily, or have multiple schedulers being used by other interpreters, or...
21:09 whiteknight the scheduler gets involved in exception handling, but only as a mechanism to look up handlers in the context, which actually holds and organizes them. That role can go away pretty easily
21:10 whiteknight and then the schduler really can be reduced to a simple priority task queue, and there's no reason why we need to be restricted to a single task queue for an interpreter, much less the entire process
21:10 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#11469) fulltest) at 3_1_0-707-gdba406c - Kubuntu 10.10 amd64 (g++-4.5)
21:12 whiteknight tl;dr: We should ditch singletons
21:13 davidfetter joined #parrot
21:15 cotto_work whiteknight: I agree in principle.  In practice, it's likely we have more pressing issues.
21:16 whiteknight of course, I'm not going to drop what I am doing to rip that crap out
21:17 whiteknight I'm just saying we don't need to redesign singletons. Whenever somebody cares, they can just be ripped out
21:18 cotto_work whiteknight: do you have the tuits to file a ticket about that?  We should try to document somewhere that they system can be removed if someone wants to do so.
21:23 whiteknight ticketed
21:25 cotto_work whiteknight++
21:26 davidfetter dukeleto, ping
21:27 whiteknight oh, interesting. the scheduler isn't a singleton
21:27 whiteknight weird
21:28 whiteknight I thought it was
21:28 whiteknight Null is, though
21:30 cotto_work one null ought to be enough for anyone
21:30 whiteknight anyway, I'm heading home. Later
21:30 whiteknight left #parrot
21:32 fperrad left #parrot
21:38 dalek TT #2038 created by whiteknight++: Singleton PMCs are deprecated
21:38 dalek TT #2038: http://trac.parrot.org/parrot/ticket/2038
21:45 Coke left #parrot
21:45 Coke joined #parrot
21:53 davidfetter left #parrot
22:23 hercynium left #parrot
22:27 davidfetter joined #parrot
22:29 sigue left #parrot
22:45 plobsing joined #parrot
22:53 sigue joined #parrot
22:57 rurban_ joined #parrot
23:00 sigue left #parrot
23:00 rurban left #parrot
23:00 rurban_ is now known as rurban
23:01 whiteknight joined #parrot
23:04 lucian left #parrot
23:23 sigue joined #parrot
23:29 Hackbinary left #parrot
23:29 wagle left #parrot
23:30 Andy left #parrot
23:30 wagle joined #parrot
23:30 wagle left #parrot
23:32 kid51 joined #parrot
23:35 jsut_ joined #parrot
23:35 jsut left #parrot
23:37 cotto_work quite day
23:37 plobsing quite
23:37 mtk left #parrot
23:41 dalek Rosella: 0c22418 | Whiteknight++ | src/ (3 files):
23:41 dalek Rosella: remove overrides on resolution, a mechanism which was not well thought-out. Document the container classes
23:41 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/0c22418457
23:42 Hackbinary joined #parrot
23:45 jrtayloriv joined #parrot
23:47 wagle joined #parrot
23:57 dalek parrot: 3faf240 | plobsing++ | / (4 files):
23:57 dalek parrot: factor out hashing code to work on arbitrary buffers
23:57 dalek parrot: review: https://github.com/parrot/parrot/commit/3faf2406a2
23:57 dalek parrot: f3c2cd1 | plobsing++ | src/pmc/fixedintegerarray.pmc:
23:57 dalek parrot: add hashval() implementation to FIA for faster, more efficient hashing
23:58 dalek parrot: review: https://github.com/parrot/parrot/commit/f3c2cd19dc
23:58 dalek parrot: c74300b | plobsing++ | / (8 files):
23:58 dalek parrot: make nci thunk lookup work with signature arrays, not strings
23:58 dalek parrot: review: https://github.com/parrot/parrot/commit/c74300b7fc
23:58 dalek parrot: 99ba7bd | plobsing++ | src/nci/libffi.c:
23:58 dalek parrot: convert libffi framebuilder to new pmc-based conventions
23:58 dalek parrot: review: https://github.com/parrot/parrot/commit/99ba7bdf12
23:58 dalek parrot: c5334d6 | plobsing++ | src/pmc/nci.pmc:
23:58 dalek parrot: eliminate handling of string signatures within NCI objects
23:58 dalek parrot: review: https://github.com/parrot/parrot/commit/c5334d6f3e
23:58 dalek parrot: 414629e | plobsing++ | / (5 files):
23:58 dalek parrot: make signature PMC functionality directly available
23:58 dalek parrot: review: https://github.com/parrot/parrot/commit/414629e707
23:58 dalek parrot: 4209f87 | plobsing++ | / (18 files):
23:58 dalek parrot: Merge branch 'nci_signature_pmcs'
23:58 dalek parrot: review: https://github.com/parrot/parrot/commit/4209f872ec

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced