|
Parrot 3.1.0 Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Goals: Get GSoC ideas on wiki. Merge/review tewk/select. Evaluate attribute_defs, rip out in branch Set by moderator on 1 March 2011. |
|||
|
00:01
particle1 joined
|
|||
| PerlJam | shockwave: basically | 00:03 | |
|
00:03
athomason left
00:04
particle left
|
|||
| whiteknight | shockwave: there are two mechanisms for NCI | 00:06 | |
| 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 | ||
| libffi allows you build an arbitrary call frame for any signature | |||
| if you don't have libffi, you have to pre-compile a static, finite list of call thunks | 00:08 | ||
| 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 | |||
| src/nci/*.nci | |||
| 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 | ||
| shockwave | whiteknight: I'm adding a signature to that list and recompiling to see if it will just work. | ||
| whiteknight | I think there's another step, I don't remember what | ||
| hold on | 00:10 | ||
| "make bootstrap-nci" | |||
| 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 | ||
| 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
|
|||
| 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 | ||
| we don't change the list of nci thunks too often, so we haven't tried to make it any easier | |||
| shockwave | understand | 00:14 | |
| I'm not getting the signature that I want to work. Is there maybe another step missing? Are any header files changed? | 00:18 | ||
| whiteknight | no header files. I might be missing a step. plobsing is the resident expert in this area | 00:22 | |
| shockwave | kk. Thanks | 00:23 | |
| whiteknight | where did you add that new signature, core_thunks.nci? | ||
| shockwave | extras_thunks.nci | ||
| 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 | ||
| whiteknight | hmm | ||
| in the .c file? | |||
| shockwave | extra_thunks.nci | 00:25 | |
| whiteknight | no, look in the file extra_thunks.c | ||
| see if you can find a function with that signature | |||
|
00:25
lucian_ left
|
|||
| whiteknight | it's going to be a function called pcf_t_ptt | 00:25 | |
| PerlJam | shockwave: What does your test code look like? | 00:27 | |
| shockwave | whiteknight: No, that function was not in there. | ||
| PerlJam: PIR? | |||
| whiteknight | ok, so bootstrap-nci failed somehow | ||
| 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. | ||
| PerlJam | shockwave: it worked fine for me when I just tried it. I thought perhaps your test code may have had a flaw | ||
| shockwave | func, = dlfunc , lib, , name, sig | 00:29 | |
|
00:29
mrwall-e left
|
|||
| shockwave | That's the PIR to load the function. | 00:29 | |
| Let me first try to remake that extra_thunks.nci step | |||
|
00:29
dmalcolm left,
mrwall-e joined
|
|||
| shockwave | No, it's not getting in there. | 00:33 | |
| whiteknight | weird | ||
| shockwave | When doing nmake bootstrap-nci, the script is failing at the end with: | ||
|
00:34
mrwall-e left
|
|||
| shockwave | '.' is not recognized as an internal or external command, | 00:34 | |
| operable program or batch file. | |||
| src/nci/extra_thunks.nci > src/nci/extra_thunks.c | |||
| '.' is not recognized as an internal or external command, | |||
| operable program or batch file. | |||
| cotto | ~~ | ||
| whiteknight | shockwave: are you on windows? | 00:35 | |
| shockwave | yes, windows 7 | ||
| whiteknight | I suspect that script may never have been tested on windows | ||
| do you have git? | 00:38 | ||
| I just ran it, I can send you the resulting patch | 00:39 | ||
| or, I supposed, I could send you the whole 8000 line file | |||
| shockwave | whiteknight: I do have it, though I'm not very good at using it. | ||
| whiteknight | let me send you the whole file | ||
| shockwave | whiteknight: Did you changed the script generator? | 00:40 | |
| whiteknight | nope | ||
| shockwave | I meant, the makefile that is failing. | ||
| whiteknight | sent | ||
| shockwave | whiteknight: Thanks for send it. | 00:43 | |
| whiteknight | no problem. you shouldn't get stuck on little details like this | ||
| shockwave | We'll probably want to fix the script that generates that file, as I'll have more C functions to add. | ||
| 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. | ||
| whiteknight | no rush. I have to do it tomorrow, I'm not at work on the weekend | 00:47 | |
| 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:48 | ||
| Thanks | 00:54 | ||
|
00:56
mrwall-e joined,
davidfetter joined
01:03
athomason joined
01:08
shockwave left
01:22
mrwall-e left
01:27
mrwall-e joined,
mrwall-e left
01:35
ShaneC left
01:36
ShaneC joined
01:37
mrwall-e joined
01:39
mrwall-e left
01:44
kid51 joined
|
|||
| dalek | sella: f24ec02 | Whiteknight++ | src/test/ (3 files): break the test() function out into the Test namespace. Fix Suite so we output the plan correctly |
01:49 | |
| sella: 91cec9e | Whiteknight++ | / (15 files): fix tests to use the new syntax |
|||
| sella: 4315165 | Whiteknight++ | / (4 files): fix things so all tests pass again |
|||
| whiteknight | an NQP test harness, using a winxed-based harness library, running tests written in NQP for winxed-based libraries | 01:50 | |
| we're living the dream | |||
| cotto | and bacek seems to think he'll be able to teach opsc to speak llvm in a matter of days | 01:52 | |
| whiteknight | in a house he built himself on the surface of the moon, no doubt | 01:53 | |
|
01:54
davidfetter left
02:01
bacek_mobile joined
|
|||
| bacek_mobile | Whiteknight, challenge accepted :) | 02:02 | |
| 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! | ||
| kid51 | Does anyone know the name of the main Perl 5 site on github? | 02:18 | |
| It's evidently neither github.com/perl5 nor github.com/perl , which is what I would have expected | 02:20 | ||
| Ah, I see that it's not really hosted at github.com; it's only mirrored there. | 02:22 | ||
| dalek | sella: 7dda3a3 | Whiteknight++ | / (3 files): add a few more test for rosella build/construct. found and fixed a related bug |
02:24 | |
| sella: a7771d4 | Whiteknight++ | README.md: update README to show that winxed is the wy |
|||
| sella: 1604420 | Whiteknight++ | src/core/Rosella.winxed: +documetation for core/Rosella |
|||
|
02:24
whiteknight left
02:31
bacek_mobile left
02:36
bacek_mobile joined
|
|||
| kid51 | Experiencing build failure in master here: | 02:46 | |
| src/gc/gc_gms.c:1228: failed assertion '!PObj_on_free_list_TEST(pmc) || !"Resurrecting of dead objects is not supported"' | |||
| commit 0cf3ffac966827f06b75ea99b5725ae269af1765 | |||
| Very strange. | 02:54 | ||
| I called 'make' at the point of failure ... and the build then completed. | 02:55 | ||
| Let's see if it PASSes make test | |||
| cotto | kid51, which part of the build triggered that failre? | 02:56 | |
| nopaste | "kid51" at 192.168.1.3 pasted "build failure at 0cf3ffa on Darwin/PPC -- but resumed 'make' and built okay" (1092 lines) at nopaste.snit.ch/35299 | 02:57 | |
|
02:58
bacek_mobile left
|
|||
| cotto | kid51, can you run the last step before the failure several times and see if it fails? | 02:58 | |
| ./parrot-nqp --target=pir --output=compilers/opsc/gen/Ops/Compiler/Grammar.pir compilers/opsc/src/Ops/Compiler/Grammar.pm | |||
| kid51 | Well, this being on my slow box, I'll have to wait till 'make test' completes. | 02:59 | |
| cotto | ok | 03:00 | |
| 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. | ||
| kid51 | 'make test' seems to be doing okay, so lemme kill it and follow your instructions. | 03:02 | |
|
03:03
bacek_mobile joined
|
|||
| nopaste | "kid51" at 192.168.1.3 pasted "3 fails on Ops::Compiler::Grammar" (10 lines) at nopaste.snit.ch/35309 | 03:07 | |
| cotto | excellent | ||
| kid51, how reliable is that? | |||
| kid51 | What do you mean by 'that'? | ||
| cotto | the failure | 03:08 | |
| kid51 | Well, you saw what I posted. i did it 3 times in a row. | ||
| But, now, I have once again begun tests, and my tests are passing (op_tests and pmc_tests) | |||
| cotto | ok | 03:09 | |
| kid51 | make test PASS on same commit 0cf3ffa on linux/i386 | 03:10 | |
| You think this could be side effect of mmd-cache-pmc merge? | |||
| cotto | it's possible. It made some changes to a gcable | 03:11 | |
|
03:11
bacek_mobile left
|
|||
| cotto | kid51, can you check out db775476eaeed3a3b and see if the failures persist? | 03:11 | |
| kid51 | I was just diffing against that commit :-) | 03:12 | |
| but now I'll have to do a realclean, reconfigure; rebuild; take time | 03:13 | ||
| cotto | kid51, realconfig/realclean shouldn't be necessary | ||
| 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. | ||
| so we have to wait | |||
| cotto bad news: I got the same problem at db775476ea | 03:39 | ||
| cotto | kid51, ok | 03:42 | |
| I'm glad it's not my fault, but it's also a bug we'll need to fix. | |||
|
03:54
theory left
|
|||
| dalek | rito: 818b412 | atrodo++ | Makefile: Include the built-in PMCs in the build process |
04:01 | |
| rito: 340f919 | atrodo++ | / (3 files): Add a COERCE_PMC op to extract boxed values from PMCs |
|||
| rito: e4c1b74 | atrodo++ | pmc.c: Initalize more data on a new PMC |
|||
| rito: 9f78dc0 | atrodo++ | core.c: Fix an off-by-one error inside the load op |
|||
| rito: e4ed51e | atrodo++ | / (3 files): Add extremely basic writing of PMCs (only if the PMC is null) |
|||
| rito: 2e6df8a | atrodo++ | core.c: Add some musing about STR CALL |
|||
| rito: f99a3e4 | atrodo++ | interp.c: Fix the null pmc's creation process |
|||
| rito: baf4b51 | atrodo++ | pmc.c: Fix another off-by-one error in pmc_decode |
|||
| rito: 42674a3 | atrodo++ | / (2 files): Remove some debugging code |
|||
| rito: 941d180 | atrodo++ | / (2 files): First version of the built-in resiablepmcarray and test |
|||
| cotto | oh | 04:02 | |
| looks like someone's been busy | |||
| atrodo | It felt like a lorito night | 04:03 | |
| Plus, I'm in the habit of making a lot of tiny git commits, so the commit count gets a little skewed | |||
| cotto | atrodo, wfm | 04:04 | |
| 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? | ||
| that and concurrency primitives are the least well-defined concepts atm | |||
| atrodo | I hadn't put a lot of thought into it | ||
| I've done some hand waving at the problem in designing how my prototype works | 04:07 | ||
| 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 | ||
| it sounds like a great flexible method in my head, but I haven't convinced myself it's efficient | 04:09 | ||
| 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 | |||
| cotto | kid51, ok | 04:12 | |
| 'night | |||
|
04:13
kid51 left
04:27
theory joined
05:11
plobsing joined
05:24
simcop2387_ joined
05:26
simcop2387 left,
simcop2387_ is now known as simcop2387
|
|||
| cotto | docs.google.com/viewer?url=http://r...w-conc.pdf | 05:37 | |
| thank you, internets | 05:38 | ||
|
05:40
tadzik is now known as internets
|
|||
| internets | you're welcome! | 05:40 | |
|
05:40
internets is now known as tadzik
|
|||
| dalek | tracwiki: v77 | bacek++ | ParrotQuotes | 05:52 | |
| tracwiki: trac.parrot.org/parrot/wiki/ParrotQ...ction=diff | |||
| tadzik | oh-oh :) | 05:57 | |
| 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:01 | |
|
06:15
mtk left
06:20
rurban_ joined
06:22
mtk joined
06:24
rurban left,
rurban_ is now known as rurban
06:46
fperrad joined
07:10
theory left
07:34
theory joined
|
|||
| dalek | rrot: dba406c | fperrad++ | t/compilers/opsc/01-parse-body.t: [t] fix "Unknown TAP token" legal TAP comment starts by # |
07:40 | |
|
08:19
theory left
08:32
preflex left
08:35
preflex joined
08:42
lucian joined
09:19
cognominal left
09:29
contingencyplan left
09:35
lucian left
09:59
zby_home joined
10:09
pjcj left
10:16
pjcj joined
10:17
cognominal joined
10:55
JimmyZ joined
11:14
fperrad_ joined
11:17
fperrad left,
fperrad_ is now known as fperrad
12:16
JimmyZ left,
JimmyZ joined
12:40
zby_home left
13:26
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 13:26 | |
| dalek | TT #2037 created by jkeenan++: darwin/ppc build failure | 13:36 | |
| TT #2037: trac.parrot.org/parrot/ticket/2037 | |||
| Coke | someone should introduce kid51 to "git bisect" | 13:55 | |
|
14:02
mtk left
14:09
mtk joined
14:13
plobsing left
14:18
JimmyZ left
14:20
rurban_ joined
14:21
rurban_ left
14:23
rurban left,
rurban joined
|
|||
| tadzik | wave-wave | 14:24 | |
| atrodo | tilde-tilde | ||
| moritz | . . | 14:27 | |
| moritz particles | |||
|
14:35
plobsing joined
14:56
rurban_ joined
14:58
fperrad left
15:00
rurban left,
rurban_ is now known as rurban
15:04
fperrad joined
|
|||
| whiteknight | cotto: ping | 15:12 | |
|
15:12
mikehh left
|
|||
| cotto | whiteknight, pong | 15:20 | |
| 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:24 | |
| 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. | ||
| cotto | !?! | ||
|
15:26
plobsing left
|
|||
| 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 | ||
| right, so I want to sanify this all, and make all these things overridable | |||
| I'm just wondering if you have any objections | |||
| cotto | Ah. "can" returns true if the method is non-null | ||
| whiteknight | oh, i misread that. yes, that's what it does | 15:27 | |
| 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 | ||
| moritz | speaking of which... could you please make destroy overridable too? | 15:29 | |
| I'd like to experiment with Perl 6 level DESTROY methods | |||
| 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 | ||
| cotto gets ready for $dayjob | |||
| 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
15:36
Andy joined
15:41
particle1 joined
15:45
particle left
15:47
particle1 is now known as particle
15:51
woosley joined
15:55
perlit0 joined
16:01
woosley left
16:08
theory joined
16:13
fperrad_ joined
16:14
fperrad left
16:15
fperrad_ is now known as fperrad
|
|||
| cotto_work | ~~ | 16:15 | |
|
16:18
plobsing joined,
Patterner left
16:19
Psyche^ joined,
Psyche^ is now known as Patterner
16:21
JimmyZ joined
|
|||
| Coke stares at this javascript. | 16:25 | ||
| cotto_work | best. captcha. evar. random.irb.hr/signup.php | 16:26 | |
| atrodo | That truely is awesome | ||
| Guess I'm never signing up for that service | 16:27 | ||
| cotto_work | you could juse type it into wolfram alpha | ||
| plobsing | so could a bot | ||
| atrodo | 'cept it's an image | ||
| plobsing | it is a fairly clear image | 16:28 | |
| cotto_work | spammer ocr probably isn't designed to handle mathematical notation | ||
| atrodo | oh, finally got an easy one | ||
| 1 - (-2) -0 - 0 * 3 - 0 - (-2) =? | |||
| cotto_work | the actual test is to find an easy captcha | 16:32 | |
|
16:34
JimmyZ left
|
|||
| Coke got this one: | 16:36 | ||
| random.irb.hr/latexrender/pictures/...5aca36.gif | |||
|
16:36
eternaleye left
|
|||
| whiteknight | Coke: 7 | 16:37 | |
| actually, maybe 21 | |||
| yes, 21 | |||
| Coke | maybe "too hard". ;) | ||
| cotto_work | we need an aloha fact that gives people this link: who-t.blogspot.com/2011/03/how-to-d...loper.html | 16:38 | |
| whiteknight | I did the limit before the derivative. If you do things in the right order it's 21 | ||
| atrodo | I haven't done calc in 8 years | ||
| whiteknight | atrodo: there's nothing really to do. the limit basically means we're doing sin(0) + cos(0) | 16:39 | |
| atrodo | Again, haven't touched that field of math in 8 years, so I'd have to agree with Coke. "Too Hard" | 16:40 | |
|
16:40
perlit0 left
16:45
eternaleye joined
16:59
jsut_ joined
|
|||
| dalek | sella: 74cfd90 | Whiteknight++ | / (19 files): 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 | |
|
17:04
jsut left
17:19
fperrad_ joined
17:22
fperrad left
17:23
fperrad_ is now known as fperrad
|
|||
| cotto_work | tewk: ping | 17:34 | |
|
17:52
PacoLinux_ joined
18:03
PacoLinux_ left
18:14
lucian joined
18:28
contingencyplan joined
|
|||
| dalek | rrot/whiteknight/vtable_overrides: e026212 | Whiteknight++ | src/pmc/object.pmc: Object.can is now overridable. |
18:45 | |
| rrot/whiteknight/vtable_overrides: d3192d0 | Whiteknight++ | src/pmc/object.pmc: allow isa and isa_pmc to be overrideable |
|||
| rrot/whiteknight/vtable_overrides: 6bafefc | Whiteknight++ | src/pmc/object.pmc: some optimizations to isa |
|||
| rrot/whiteknight/vtable_overrides: cf26847 | Whiteknight++ | / (2 files): several fixes from bad copy+paste. Add in a test for 'can' override |
|||
| rrot/whiteknight/vtable_overrides: f41f8b1 | Whiteknight++ | t/pmc/object-meths.t: +tests for overridding isa and isa_pmc |
|||
| whiteknight | cotto_work: take a look at the whiteknight/vtable_overrides branch when you have a chance. I'm testing now for sanity | 18:46 | |
| cotto_work | whiteknight: will do | 18:50 | |
| whiteknight | the extra vtable override search is going to slow down can, isa, and isa_pmc vtable calls. | 18:51 | |
| there are a million ways I can think of to optimize class/object, but it seems pointless if we are moving to 6model | 18:52 | ||
| all coretests in that branch pass for me on my machine | 18:54 | ||
|
18:58
mikehh joined
|
|||
| 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 | ||
| I don't remember what it's called | 19:04 | ||
| sorear | in 6model, method "caching" is absolutely critical for reasons beyond performance | 19:06 | |
| 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 | ||
| KnowHOW | |||
| whiteknight | gotcha | 19:10 | |
| that sounds like a bad thing | |||
| cotto_work | whiteknight: how does performance look with that branch? | 19:18 | |
| 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 | |
| cotto_work: like I said, I'm sure there is a hit. I just don't know how much | |||
| cotto_work | whiteknight: ok. I don't want that to get merged without some discussion on parrot-dev. | 19:23 | |
| whiteknight | I figured | ||
| I'll send out a mail tonight | |||
| Coke | (can always run with callgrind and count # of instructions) | 19:28 | |
| 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 | |
| and valgrind would take the rest of the workday (and then some) if I just ran it willy-nilly over the test suite | |||
| cotto_work | That raises the question of what a realistic benchmark would be. | 19:33 | |
| dalek | sella: aa39e1c | Whiteknight++ | src/proxy/ (2 files): 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 | |
| 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 | |
| He's basically doing that, but for Haskell. | |||
| er, ghc | 19:39 | ||
| whiteknight | link? | 19:40 | |
| cotto_work | academic.research.microsoft.com/Paper/4114284 | ||
| whiteknight | oh wow. Yes that does look like what I've been envisioning for Parrot's threading system | 19:43 | |
| lucian | you might also want to look at JVMs, especially jikes | 19:44 | |
| 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. | ||
| whiteknight | plobsing: minimalism is a good idea, but we have to provide something | 19:48 | |
| otherwise, how do you run things in parallel, processes? | 19:49 | ||
| plobsing | short term | 19:50 | |
| we don't do parallelism well now | |||
| and by well, I mean "in a way that is at all usable by our customers" | |||
| lucian | how about you don't do it at all now and only offer green threads and async io? | ||
| that's trivial by comparison | |||
| 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 | ||
| plobsing | whiteknight: there's a difference between this an "just rip it out" | ||
| 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 | ||
| 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 | |
| as an added bonus, if something evolves from that, it won't have the invasiveness that the current system has. | |||
| whiteknight | we don't handle asynchronous or possible parallel usages. We absolutely do not handle that | ||
| and it would be a hell of a lot of work to fix that | |||
| plobsing | we should. before we *provide* threads, we should work from someone else's threads. | 19:54 | |
| libparrot should be threadsafe | |||
| whiteknight | right, I know what you are saying. But we do pretend to *provide* threads, and that gets in the way of other efforts | ||
| an extender can't write a plug-in threading system, because we have crap in the way | 19:55 | ||
| maybe then can, but I doubt it | |||
| 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 | |||
| that much, I think, is plausible right now | 19:56 | ||
| plobsing | we use too many global variables for that | ||
| that's the first problem | |||
| 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 | |
| PMC singletons | |||
| plobsing | don't get me started on those | ||
| whiteknight | (which, in a tangential topic, need a MAJOR redesign) | ||
|
19:59
[hercynium] joined
20:01
jsut joined
|
|||
| mikehh need to reboot | 20:02 | ||
|
20:03
mikehh left
20:04
hercynium left,
[hercynium] is now known as hercynium
20:06
jsut_ left
20:07
hudnix left
20:08
[hercynium] joined
20:13
mikehh joined,
hercynium left,
[hercynium] is now known as hercynium
20:29
hudnix joined
|
|||
| cotto_work | whiteknight: *re*design? | 20:44 | |
| PerlJam | cotto_work: unless you consider the current work "predesign", in which case it just needs a design. :) | 20:45 | |
| cotto_work | I'm not sure I'd consider it a design other than "whatever the code happens to do now". | 20:47 | |
| dalek | sella: 3679067 | Whiteknight++ | src/ (7 files): two quick prototype files for the new mockobject library |
20:51 | |
| whiteknight | cotto_work: you're right. I don't suspect much actual design went into this. | 20:52 | |
| 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 | ||
| next, if we *do* want to implement that contract, where is the best, most unintrusive place to hold the pointers? | |||
| 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? | ||
| 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 | |
| the examples we have so far inside Parrot are less than compelling | |||
|
21:03
plobsing left
|
|||
| whiteknight | Scheduler does not need to be a singleton. It only needs to be unique among a group of threads which intercommunicate | 21:04 | |
| 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 | |||
| OS similarly | |||
| that is, you can have multiple copies of Env or OS running around without getting into any troubles | 21:05 | ||
| Again, not sure why you would want to, but this does seem like poor justification to support singletons at the Parrot level | |||
| Actually, the scheduler could really be a lot more flexible, and we certainly don't need a restriction that there is only one | 21:06 | ||
| 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:07 | ||
| 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:09 | ||
| 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) | ||
| whiteknight | tl;dr: We should ditch singletons | 21:12 | |
|
21:13
davidfetter joined
|
|||
| cotto_work | whiteknight: I agree in principle. In practice, it's likely we have more pressing issues. | 21:15 | |
| whiteknight | of course, I'm not going to drop what I am doing to rip that crap out | 21:16 | |
| I'm just saying we don't need to redesign singletons. Whenever somebody cares, they can just be ripped out | 21:17 | ||
| 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:18 | |
| whiteknight | ticketed | 21:23 | |
| cotto_work | whiteknight++ | 21:25 | |
| davidfetter | dukeleto, ping | 21:26 | |
| whiteknight | oh, interesting. the scheduler isn't a singleton | 21:27 | |
| weird | |||
| I thought it was | 21:28 | ||
| Null is, though | |||
| cotto_work | one null ought to be enough for anyone | 21:30 | |
| whiteknight | anyway, I'm heading home. Later | ||
|
21:30
whiteknight left
21:32
fperrad left
|
|||
| dalek | TT #2038 created by whiteknight++: Singleton PMCs are deprecated | 21:38 | |
| TT #2038: trac.parrot.org/parrot/ticket/2038 | |||
|
21:45
Coke left,
Coke joined
21:53
davidfetter left
22:23
hercynium left
22:27
davidfetter joined
22:29
sigue left
22:45
plobsing joined
22:53
sigue joined
22:57
rurban_ joined
23:00
sigue left,
rurban left,
rurban_ is now known as rurban
23:01
whiteknight joined
23:04
lucian left
23:23
sigue joined
23:29
Hackbinary left,
wagle left
23:30
Andy left,
wagle joined,
wagle left
23:32
kid51 joined
23:35
jsut_ joined,
jsut left
|
|||
| cotto_work | quite day | 23:37 | |
| plobsing | quite | ||
|
23:37
mtk left
|
|||
| dalek | sella: 0c22418 | Whiteknight++ | src/ (3 files): remove overrides on resolution, a mechanism which was not well thought-out. Document the container classes |
23:41 | |
|
23:42
Hackbinary joined
23:45
jrtayloriv joined
23:47
wagle joined
|
|||
| dalek | rrot: 3faf240 | plobsing++ | / (4 files): factor out hashing code to work on arbitrary buffers |
23:57 | |
| rrot: f3c2cd1 | plobsing++ | src/pmc/fixedintegerarray.pmc: add hashval() implementation to FIA for faster, more efficient hashing |
|||
| rrot: c74300b | plobsing++ | / (8 files): make nci thunk lookup work with signature arrays, not strings |
|||
| rrot: 99ba7bd | plobsing++ | src/nci/libffi.c: convert libffi framebuilder to new pmc-based conventions |
|||
| rrot: c5334d6 | plobsing++ | src/pmc/nci.pmc: eliminate handling of string signatures within NCI objects |
|||
| rrot: 414629e | plobsing++ | / (5 files): make signature PMC functionality directly available |
|||
| rrot: 4209f87 | plobsing++ | / (18 files): Merge branch 'nci_signature_pmcs' |
|||