|
#parrot Parrot 2.2.0 "Like Clockwork" Released! | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Improve Rakudo rx and buildtime performance | Fix HLL bugs (TT #389, #1040) | Prioritize Rakudo Needs and roadmap items Set by moderator on 30 March 2010. |
|||
|
00:06
rt7 joined
00:33
cottoo joined
00:36
lucian joined
|
|||
| eric_j | x | 00:49 | |
|
00:52
abqar joined
00:53
cotto joined
01:18
Andy joined
01:30
tcurtis joined
01:31
leprevost joined
01:49
mikehh joined
01:50
cotto joined
|
|||
| Austin | I think that shall never envision | 01:51 | |
| an op unlovely as division. | |||
| An op whose answer must be guessed, | |||
| and then, through multiply, assessed. | |||
| An op for which we dearly pay | |||
| in cycles wasted every day. | 01:52 | ||
| chromatic | Accuracy thrown upon the floor | ||
| Thanks to IEEE seven eight four | |||
| davidfetter | but that's sane. if you want mental | 01:54 | |
| try some functions transcendental | |||
|
01:55
Psyche^ joined
02:06
lucian joined
02:17
theory joined
|
|||
| dalek | rrot: r45375 | jkeenan++ | trunk/t/steps/auto/arch-01.t: Because of they way in which the determination of cpuarch has changed on passing. Temporarily commenting out all tests simulating Darwin until we can devise a workaround. |
02:22 | |
|
02:23
JimmyZ joined
02:28
theory joined
|
|||
| dalek | rrot: r45376 | jkeenan++ | trunk/config/auto/arch.pm: Correct incorrect commenting out. |
02:38 | |
| rrot: r45377 | jkeenan++ | trunk/t/steps/auto/arch-01.t: Correct incorrect commenting out. |
|||
| rrot: r45378 | jkeenan++ | trunk/config/auto/arch.pm: Revert to previous version. Last commit was premature. |
|||
|
02:41
janus joined
02:49
atrodo joined
|
|||
| GeJ_ | Hello all. | 02:50 | |
| purl | It's a crazy world, but hello to you too! | ||
| GeJ | Did anyone report a recent test failure in t/compilers/imcc/syn/regressions.t | 02:52 | |
| nopaste | "GeJ" at 202.171.79.135 pasted "Recent t/compilers/imcc/syn/regressions.t (not there earlier this week)" (10 lines) at nopaste.snit.ch/20160 | 02:55 | |
| GeJ | "failure" you moron! "Recent t/compilers/imcc/syn/regressions.t failure." | 02:56 | |
| chromatic | There are updates in TT #641 on that recently. | 02:57 | |
| Coke | (not there because the test that is failing was just added.) | 03:02 | |
| it has since been todo'd, I thought. | |||
| also: it doesn't fail for me, so I can't fix it. =-) | |||
| GeJ | Dammit! Sorry about the noise. Should have checked that myself since it was in the error message. Apologies. | ||
|
03:04
elmex joined,
bubaflub joined
|
|||
| Coke | ... it is sad to me that it is easier to write PIR than NQP still. | 03:15 | |
| sorear | I find writing assembly easier than writing Perl | 03:21 | |
| it just takes longer | |||
|
03:40
theory_ joined,
ash_ joined
|
|||
| dalek | rtcl-nqp: 553213c | Coke++ | (2 files): move test into 'make test' and todo the one failing test. |
03:45 | |
| rtcl-nqp: ff2c4f1 | Coke++ | (2 files): move test into 'make test' and todo the one failing test. |
|||
| rtcl-nqp: 9bd6294 | Coke++ | (2 files): todo the tests we fail, but run this file with 'make test' |
|||
| rtcl-nqp: 6fc8b70 | Coke++ | (3 files): Translate partcl's PIR-based [foreach] into NQP. |
|||
| Austin | Mmm.. the full backup is going to take more than 24 hours.. gotta love USB... | 03:47 | |
| usb-- | |||
| ash_ | firewire++? or usb 3.0, or e-sata? | 03:52 | |
| Austin | It's a laptop. | 03:53 | |
| NAS would be my best bet. | |||
| But usb storage is cheap. | |||
| And it's only once a month... | |||
| ash_ | i try to do a backup every 3-5 days, just cause i use a laptop all the time and had 1 harddrive go bad on me already, don't wana loose anything again | 03:54 | |
|
03:56
bubaflub left
|
|||
| ash_ | so... do you think doing PAST optimizations or working on an llvm stack frame builder would be more beneficial? i am trying to figure out my proposal for a GSOC | 03:57 | |
| Austin | Heh. Me too - I run incrementals every day. | 03:59 | |
| I thought your original proposal was for the stack frame builder. That seems like the safer investment to me - "safer" meaning that it's likely to last longer without getting obsoleted. | 04:00 | ||
| ash_ | yeah, i just think it might not take me the whole time | ||
| i guess i could do libffi too, to replace the current NCI system | 04:01 | ||
| i was talking to whiteknight a while back, he was saying AST level optimizations might be useful, (see irclog.perlgeek.de/parrot/2010-03-31#i_2178629 ) | 04:06 | ||
| Austin | They'd be useful, no doubt. But there are too many projects pulling in too many directions for me to consider doing it anything but risky. | 04:07 | |
| As for not taking the whole time, it has never been my experience that software development takes less time than you think it will... | |||
| ash_ | yeah, thats kinda what i was thinking | ||
| yeah, thats also my thinking | |||
| it doesn't seem like it will take me the whole time to do the llvm stack frame builder, but i know it will take longer than i expect | 04:08 | ||
| sorear ponders a POSIX stack frame builder | 04:10 | ||
| ash_ | especially since i'd be working with stuff i am not greatly familiar with, but whiteknight thought it wouldn't take me that long, i think plobsing said he didn't think it would be to much work, he did a stack frame builder for libjit, but i'd expect it to take me at least half the time, if not more | ||
| but i don't really know the internals of parrot enough to say i'd be working on XXX module for week 1-2, YYY module for 3-4, etc. which is something they'd like in the propsal | |||
| Austin | If you don't know that, then you can't really make an estimate. | 04:11 | |
| And, of course, you have to add "learn all that crap" to the front of the project schedule. | |||
| ash_ | sorear: by POSIX you mean? .... | 04:12 | |
| sorear | ash_: POSIX.1-2008, www.opengroup.org/onlinepubs/009695399/ | ||
| er, .2004 | |||
| POSIX provides for a C99 compiler and dlopen | 04:13 | ||
| that's all we need | |||
| ash_ | i have been working with the llvm for my project i am doing right now, a compiler independent study, i am trying to implement some of nqp, (nq-nqp is what i am calling it, i think i can get most things to work except regexs) | ||
| sorear | non-portable stuff like libffi will be much faster of course | ||
| *a C99 compiler available at runtime | 04:14 | ||
| ash_ | libffi is pretty cross platform, as far as i can tell | 04:15 | |
| sorear | What is the standard meaning of 'cheats' in PCT-based compilers? | 04:16 | |
| Austin | Stuff in pir | ||
| Stuff that you can't do in nqp, or in regex, or whatever. | 04:17 | ||
| Basically, the stuff that has to be hacked together to get the rest of the system to work. | |||
|
04:20
plobsing joined
04:25
theory joined
|
|||
| sorear | Can you write a tailcall in NQP? | 04:39 | |
| Austin | No | 04:40 | |
| You can emit pir that does it, if you're careful. | |||
| Q:PIR { ... pir code .. }; | |||
| sorear is rewriting some predates-NQP PIR code that doesn't actually still need to be PIR | 04:41 | ||
| it's littered with tailcalls, because they're typing-efficient in PIR | |||
| Austin | Heh | 04:42 | |
| sorear | Adding all these extra stack frames stings a little | 04:45 | |
| Austin: Is it possible to use perldoc with NQP-rx? | 04:59 | ||
| Austin | Questionable. | ||
| sorear | my PIR has lots of 5-POD | ||
| Austin | NQP has pod support, but it tries to be pod6. | ||
| So you'll have to surround everything with =begin =end | 05:00 | ||
| sorear | POD6? I would have thought that POD was good enough if anything in Perl was | ||
| Austin | And =cut is dead. | ||
| Don't get me started. | |||
| Pod6 is xml with equal signs. | |||
| chromatic | POD was never good enough. | 05:01 | |
| Austin | True. | 05:02 | |
| And now POD6 is, too. | |||
|
05:18
ash_ joined
06:52
eiro joined,
eiro_ joined,
eiro joined
06:55
theory joined
07:32
bubaflub joined
|
|||
| sorear | Does PIR have a line continuation syntax? | 07:42 | |
|
07:48
jjore joined
07:49
jjore joined
08:03
dalek joined
|
|||
| sorear | I keep forgetting to wait for dalek before big pushes | 08:04 | |
| dalek | izkost: b6cfbb4 | sorear++ | perl5.pir: Use the actual symbolic constants |
08:05 | |
| izkost: 4efce50 | sorear++ | perl5.pir: Use an actual attribute for the interpreter cache |
|||
| izkost: 98818c9 | sorear++ | examples/tk.pl: Work around a NQP limitation caught by jnthn++ |
|||
| izkost: 929684b | sorear++ | perl5.pir: Eliminate the deparse-reparse from module loading |
|||
|
08:09
bwk joined
|
|||
| bwk | \\quit | 08:09 | |
|
08:13
iblechbot joined
|
|||
| dalek | izkost: 5145ceb | sorear++ | (2 files): Switch to PDD-31 style load_module seem to imply parse_name is unimplementable for Perl 5. It will probably be gone in my PDD-31 replacement draft. |
08:27 | |
|
08:53
fperrad joined
10:07
clinton joined
|
|||
| mikehh | codetest failure - t/codingstd/pir_code_coda.t - for file t/profiling/profiling.t which is in fact nqp so the test is wrong | 10:37 | |
| all other tests PASS (pre/post-config, make corevm/make coretest, smoke (#32966), fulltest) at r45378 - Ubuntu 9.10 i386 (g++ with --optimize) | |||
| dalek | rrot: r45379 | fperrad++ | trunk/runtime/parrot/library/distutils.pir: [distutils] fix install on *nix |
10:38 | |
| p-rx: 31b97cc | sorear++ | (2 files): Implement paragraph and abbreviated Pod comments for the multiline declaration comment (left out on purpose, it's useless without a metamodel) and paragraph blocks which are terminated by the start of a delimited block (a corner case that STD fails too). |
11:10 | ||
| rrot: r45380 | jkeenan++ | trunk (2 files): Reinstate tests to simulate Darwin. |
11:12 | ||
|
11:13
kid51 joined
11:18
riffraff joined
|
|||
| dalek | kudo: 1c57374 | moritz++ | src/core/metaops.pm: implement 0-ary infix operators, to be used as the degenerated case by the reduce meta operator |
11:23 | |
| mikehh | getting a Segmentation fault in t/compilers/imcc/syn/regressions.t - Failed test: 18 on g++ (no --optimize) which I don't get on g++ with --optimize - Ubuntu 9.04 i386 | 11:35 | |
| get the same results with gcc the test passes with --optimize and fails without | 11:47 | ||
|
11:56
payload joined
11:58
payload joined
12:03
snarkyboojum joined
12:13
Whiteknight joined
|
|||
| Whiteknight | good morning, #parrot | 12:14 | |
|
12:32
Mokurai1 joined
12:34
jsut joined
12:44
atrodo joined
12:48
payload joined
12:52
M_o_C joined
13:03
payload joined
13:07
lucian joined
|
|||
| dalek | kudo: dd2043b | moritz++ | t/spectest.data: we pass 4 more tests |
13:22 | |
|
13:29
patspam joined
13:52
khairul joined
|
|||
| dalek | rrot: r45381 | NotFound++ | trunk/compilers/imcc/pbc.c: use Parrot_pmc_new_init_int in mk_multi_sig |
14:01 | |
|
14:19
Themeruta joined
14:20
theory joined
|
|||
| dalek | rrot: r45382 | NotFound++ | trunk (3 files): new function Parrot_pmc_new_constant_init_int, use it in mmd_build_type_tuple_from_type_list |
15:22 | |
|
15:35
ash_ joined
|
|||
| dalek | rrot: r45383 | NotFound++ | trunk/src/multidispatch.c: use init_int in mmd_cvt_to_types |
15:39 | |
|
15:42
Andy joined
15:54
Chandon joined
|
|||
| dalek | rrot: r45384 | NotFound++ | trunk/src/pmc (2 files): some more init_int usages |
15:55 | |
|
15:56
iblechbot joined
|
|||
| Chandon | Good morning, all. I'm Nat, and I'm looking to to a GSoC project this summer. Whiteknight's mutable strings thing looks like it could be interesting. Any thoughts? | 15:56 | |
| moritz hopes they are immutable strings :-) | 15:58 | ||
| Chandon | Yea, that's totally what I meant. | ||
| moritz | I'm not much of a parrot hacker, more a parrot user. And as a user I'd like to have those | 15:59 | |
| Chandon | Aside from performance, what differences are you thinking of from a user perspective? | ||
| moritz | concurrency | 16:00 | |
| purl | concurrency is a bitch | ||
| moritz | it's much easier to share immutable objects between threads | ||
| ash_ | concurrency still fails in parrot, last i checked it doesn't handle hll's right still | ||
| moritz | because you don't need any locking | ||
| ash_: yes, but it's still a step in the right direction | |||
| ash_ | yeah, immutable strings would help | 16:01 | |
| moritz | ash_: and Chandon didn't want the "performance" answer :-) | ||
| Chandon | The existing copy-on-write mechanism doesn't give you most of that? | ||
| moritz | doesn't seem to | ||
| btw, Perl 6 specifies strings as immutable, so it would be a closer fit that way | 16:02 | ||
| ash_ | a lot of languages make strings immutable, python does the same thing | 16:03 | |
| Chandon | It does make it interesting for languages that do allow string mutation, but that's the fun of the project I guess. | ||
| moritz | one can always have a string container object that can throw away old strings and allocate new strings | 16:04 | |
| to pretend mutability | |||
| ash_ | that takes a performance hit though, since you have to make so many throw away objects | ||
| moritz | sure; you'll suffer one way or the other | ||
| ash_ | you could use a mutable array to pretend to be a string, think char[] | ||
| moritz | sure | 16:05 | |
| or even a tree structure | |||
| ash_ | but thats not what the issue is for parrot, parrot would certainly benefit from immutable string semantics | ||
| Chandon | What's the state of concurrency in Parrot now? | 16:06 | |
| moritz | broken | ||
| Chandon | You can't even get two concurrent execution paths running? | 16:07 | |
|
16:07
mikehh joined
|
|||
| ash_ | in pure parrot code some concurrency is possible, but not well tested and most certainly buggy | 16:09 | |
| if you import a hll or some shared libraries it crashes | |||
| (hll = high level language, like rakudo) | |||
| Chandon | That sounds like it needs some work done. | 16:10 | |
| Any idea what's breaking? | |||
| moritz | cloning of classes | 16:11 | |
| or namespaces | |||
| purl | well, namespaces is www.plover.com/~mjd/perl/FAQs/Namespaces.html or www.w3.org/TR/REC-xml-names/ | ||
| moritz | at least last I looked | ||
| ash_ | svn.parrot.org/parrot/trunk/t/pmc/threads.t might be worth running | ||
| moritz | and somebody brave wrote up patches for it, but nobody from the core developers reviewed them (either no time, or no expertise in that area of parrot) | ||
| Chandon | Where are the patches waiting? | 16:16 | |
| moritz | somewhere in trac | 16:17 | |
| don't find it anymore | 16:18 | ||
|
16:19
joeri joined
|
|||
| ash_ | trac.parrot.org/parrot/ticket/757 i think is what moritz is referring to | 16:23 | |
| moritz | right | ||
| I've asked on two or three #parrotsketch meetings for review | |||
| tewk | I have patches too, maybe I'll look at them today | 16:24 | |
|
16:31
eric_j joined
|
|||
| Chandon | I wonder if "pound my head on concurrency for a couple months" would be a valid GSoC project topic. | 16:31 | |
| moritz | well, you'd have to come up with some plan of sorts | ||
| ash_ | maybe explain how you plan on finding problems with the current system and how you'd address some common threading issues | 16:33 | |
| moritz | and if possible, talk to allison first - I think she has some kind of rough plan | 16:34 | |
| Chandon | Sounds reasonable. | 16:35 | |
| I should probably come up with a plan for the immutable string thing first. If I got approved on that it would hurt less and would give me the background to work on concurrency. | 16:37 | ||
|
16:42
hercynium joined
16:48
he__ joined
16:51
AndyA joined
16:55
riffraff joined
16:56
cotto_work joined
17:06
payload joined
17:27
payload joined
17:30
mikehh joined
17:31
payload joined
17:32
payload joined
|
|||
| dalek | rrot: r45385 | NotFound++ | trunk/compilers/imcc/pbc.c: off-by-one array dim in build_key, fix TT #641 |
17:33 | |
| mikehh | Notfound: r45385 seems to work for me | 17:36 | |
|
17:48
elmex joined
18:03
cotto_work joined
|
|||
| Chandon | How does garbage get collected with multiple threads right now? | 18:03 | |
| moritz | by stopping them all, I think | 18:05 | |
|
18:06
Whiteknight joined
|
|||
| moritz | the GC as as stop-the-world as can be | 18:07 | |
| Chandon | Probably don't want to be relying on it staying that way. | 18:08 | |
| moritz | aye | ||
| Chandon | Hey Whiteknight, it's Nat Tuck, I'm working on this GSoC app for immutable strings - hoping to get something posted to the mailing list today. | ||
| Whiteknight | hello Chandon, nice to talk to you again | 18:09 | |
|
18:09
mikehh joined
|
|||
| Whiteknight | Chandon: I want to warn you, some other prospective GSoC students, and even some impatent developers are talking about doing Immutable strings too. You will definitely want to have a back-up plan ready | 18:09 | |
| Chandon | I keep getting distracted by concurrency issues, so I'm thinking of coming up with some sort of make-threading-work proposal. | 18:11 | |
|
18:14
lucian joined
|
|||
| Whiteknight | Chandon: If I were doing GSoC myself this year, threading would be my project | 18:15 | |
| so it's a good one to do, if you have the chops for it | 18:16 | ||
| Chandon | Have a project proposal I can steal? =P | ||
| Whiteknight | somebody was putting together a proposal for an overhaul. I think it was tewk | 18:17 | |
| his idea was for multiple levels of threads: OS threads internally which could be used transparently for a variety of things, and "Parrot" threads which would be the high-level ones that the user used directly | 18:18 | ||
| Chandon | Where the latter is multiplexed onto the former? | ||
| Whiteknight | I'm not sure about the details of it. | 18:19 | |
| There is a definite need to make threading cheaper, to be able to share data between threads, and to properly handle asynchronous callbacks in a sane way | 18:20 | ||
| that could all be broken up into multiple projects | |||
| so don't think you would need to propose to fix everything | 18:21 | ||
| Chandon | In the current code how does threading work? I've seen some evidence that a thread = a copy of the interpreter like Perl5. | 18:22 | |
| Whiteknight | yes, that's it exactly | ||
| Chandon | That should probably get fixed. | ||
| Whiteknight | Well, for PIR-level threads, that's really the way to do it | 18:23 | |
| you need an interpreter to keep track of bytecode and everything | |||
| what we need is a good system for sharing data between two interpreters, so we can be cheaper about creating and running them | |||
| docs.parrot.org/parrot/latest/html/...y.pod.html | 18:24 | ||
| Chandon | What does an interpreter have in it more than, say, a stack and registers? | ||
| Whiteknight | (that's the current design document, which would need an overhaul anyway | ||
| no stack | |||
| trac.parrot.org/parrot/browser/trun...erpreter.h | 18:25 | ||
| contains pointer to the current bytecode file in memory, pointer to the list of classes, pointer to the namespaces, pointer to the op library, list of global variables, and other stuff | 18:26 | ||
| parrot_interp_t | 18:27 | ||
| Anyway, I have to unplug for a while. Feel free to send me any questions via email, or send any ideas or questions to the mailing list | 18:28 | ||
| talk to you later | |||
| Chandon | Interesting. The only problem with a threading project is that step 1 is to understand basically the whole codebase pretyt well. | ||
| Later. | |||
|
18:37
GodFather joined
|
|||
| dalek | kudo: 8f35ce2 | (Solomon Foster)++ | src/core/metaops.pm: Add new reducewith sub intended to be the backend for [op] (though that is not wired up yet). |
18:41 | |
|
18:42
chromatic joined
|
|||
| dalek | kudo: 0ccaf6c | moritz++ | src/core/metaops.pm: implement :$chaining in reducewith() |
18:58 | |
|
18:58
ash_ joined
|
|||
| sorear | Chandon: What do you need explained? (This is my chance to see if I actually know what I think I know) | 19:09 | |
| also are you familiar with zero-byte mutex technology? that could be an interesting addition to parrot | 19:10 | ||
| Chandon | Nope. How do you put a mutex in zero bytes? | ||
| As for explanations, how are there multiple tasks in an interpreter and also one continuation pointer? Wouldn't only one of those things make sense? | 19:11 | ||
| sorear | There is 1 interpreter per task | 19:12 | |
| two distinct interpreters are not always completely separate | |||
| they can share a PMC heap, for instance | |||
| it's kinda like the perl 5 threading model, but PMCs etc remain shared unless you explicitly request to clone them | 19:13 | ||
| and then you have PMCs that can be accessed from >1 interpreter | 19:14 | ||
| which is a pretty nonobvious property, and if you ask me, likely the source of 75% of our threading bugs | |||
| Chandon | How does locking work in this story? | ||
| sorear | every PMC has a mutex field | ||
| you're supposed to lock PMCs before doing stuff with them | 19:15 | ||
| Chandon | So mutex_init gets called whenever a PMC is allocated? | ||
| sorear | I mostly stopped trying to understand the threading system after I realized it didn't work, since I'm just an extensions programmer | ||
| yes | |||
| you put a mutex in zero bytes by locking on the /address/ | 19:16 | ||
| set up a global hash table of fixed size | |||
| Chandon | Does every PMC get its lock twiddled every time it gets touched even in single threaded code? | ||
| sorear | when you want to lock a mutex, hash the address, then lock the hash table entry | ||
| optionally, if you need better recursion properties, dangle a list of locked addresses off the hash table entry and only keep the entry itself locked momentarily | |||
| Chandon | Doesn't that make it harder to reason about deadlock, since you don't know which mutex you're locking? | 19:17 | |
| sorear | Chandon: We would use vtable magic to only lock variables when there are multiple interpreters sharing the current heap | 19:18 | |
| dalek | kudo: bcdee8e | moritz++ | src/core/metaops.pm: reducewith with triangle; implement combination of chaining and right-assoc |
||
| sorear | I'm using the hypothetical mood here because working threads don't actually exist | ||
| I can't describe the operations of things that don't exist, except in the hypothetical | 19:19 | ||
| chromatic | ... for various definitions of "working" and "exist" | ||
| sorear | bad: are good: could be | ||
| Chandon: Yes, which is probably why it hasn't been done | 19:21 | ||
| I first saw the technique in the FreeBSD kernel... they use it all over | |||
| see also the "optionally, if you need better properties" | 19:22 | ||
| Chandon | The only way I can think to make it safe would be a "never hold two locks" rule. | ||
| sorear | right | 19:23 | |
| tewk | I'm convinced that locks are the wrong model. | 19:31 | |
|
19:34
bubaflub joined
|
|||
| Chandon | tewk: What's the right model then? | 19:36 | |
| tewk | message passing between threads. | ||
| purl | Sorry, I've never seen passing before. | ||
| particle | isn't that why that's what the PDDs spec? | 19:38 | |
| Chandon | To do that, you either need to deep copy everything, have everything be immutable, or get clever with locks under the hood, right? | ||
| Also, there's some algorithms you can't implement in that world, so you still want to give users access to locks when they need them. | 19:39 | ||
| eric_j | Chandon, what algorithms? | 19:40 | |
| tewk | Chandon, I think we should support locks. | ||
| I would say that algorithms that require locks don't scale. | 19:41 | ||
| dalek | kudo: eaf92e0 | moritz++ | docs/ChangeLog: [docs] start ChangeLog for next release |
||
| Chandon | eric_j: My best example is randomized best first minimax search on game trees, but there are probably simpler examples. | 19:42 | |
| sorear | (If message passing is strictly better than locks, why do SMP computers exist?) | ||
| eric_j | thanks | ||
| tewk | But getting locks right is an endless task. Locks are espcially brittle as you evolve a code base. | 19:43 | |
| sorear, any large SMP machine is doing message passing in hardware via NUMA. | 19:44 | ||
| sorear | I thought SMP and NUMA were antonyms | 19:48 | |
|
19:48
Andy joined
|
|||
| Chandon | Is that really any different than saying that any SMP machine is doing message passing in hardware via its cache coherency protocal? | 19:48 | |
| tewk | Chandon, I wouldn't call a single bank of memory and snoopying protocols message passing. | 19:51 | |
| Chandon | That's probably reasonable, but it sure looks that way if you're standing in an L1 cache. | 19:52 | |
| It's not unreasonable to pretend that the NUMA memory is level-4 cache for some imaginary single memory bank. | 19:53 | ||
| tewk | Chandon, you can pretend, but you don't get scaling by pretending. | ||
| Chandon | It's just another higher latency, the same as any other cache miss. | 19:56 | |
| tewk | The last project I heard about(a couple of years ago) had to use special purpose library calls to make sure memory allocations occured in the memory bank next to the chips where the computation was going to occur to get good scalability | ||
| Coke skips review. | 19:57 | ||
| Chandon | The OS still isn't doing that automatically? | ||
| tewk | Chandon, most parallel codes are memory bandwidth bound, placing memory close to computation improves overall memory bandwidht. | 19:59 | |
| Chandon | Right. I'd just expect a numa-aware scheduler to know that. I guess with Linux we're still in the land where it'll happily reschedule you to a different processor board. | 20:00 | |
| sorear | sure, message passing is better in the large | ||
| but what about the small | |||
| on a 2010 dual core / single main memory board, how much do you lose by requiring message passing and nonshared heaps? | |||
| Coke | seen austin? | 20:02 | |
| purl | austin was last seen on #parrot 14 hours, 59 minutes and 54 seconds ago, saying: And now POD6 is, too. | ||
| Chandon | It really depends on the application and the algorithm. For some things, nothing, for others, everything. | 20:03 | |
| Coke | anyone know how to override a vtable from NQP? | ||
|
20:03
lucian joined
|
|||
| ash_ | can you override vtable's in nqp? | 20:03 | |
| dalek | kudo: fc30fad | moritz++ | docs/release_guide.pod: [docs] the Copenhagen release has already happend; colomon++ voluntueered for May |
20:05 | |
| sorear | Coke: using the metamodel | 20:07 | |
| Coke | sorear: | 20:08 | |
| :? | |||
| purl | : is the path separator | ||
| sorear | P6metaclass.get_parrotclass($class).add_vtable_override('name', &code) | 20:10 | |
| from kakapo | |||
| Coke | is that available ins traight nqp-rx ? | 20:14 | |
| sorear | yes | ||
| Coke | ash_: here's another one: can I have a .panic in a grammar that intepolates values? | 20:19 | |
| er, variables. | |||
| ash_ | doesn't panic cause it to die? | 20:20 | |
| dalek | kudo: cfc139f | moritz++ | src/core/Rat.pm: trivial Rat.new() without arguments (returns 0/1) |
20:22 | |
| p-rx: 67a8eaf | jonathan++ | src/Regex/P6Regex/Actions.pm: Correct action methods for \\e and \\f sequences in regexes. |
20:24 | ||
| p-rx: e3f10da | jonathan++ | src/HLL/ (2 files): Add detection of unknown backslash sequences and fix the \\$ bug along the way. masak++ too. :-) |
|||
| p-rx: b17415a | jonathan++ | src/HLL/ (2 files): Properly implement \\f, \\e and \\0 escapes in strings. |
|||
| p-rx: 88873ca | jonathan++ | src/stage0/ (3 files): Update the bootstrap. |
|||
| moritz | Coke: github.com/rakudo/rakudo/blob/maste...ar.pm#L120 something like this? | ||
| Coke | moritz: except in a grammar, not in a method. | 20:26 | |
| like... | |||
| github.com/partcl/partcl-nqp/blob/m...mar.pm#L72 | 20:27 | ||
| moritz | Coke: it's a method in a grammar, and can be called with <.obs('foo', 'bar')> | ||
| Coke | ah. so you just push the code somewhere where you /can/ do variable subst. | 20:28 | |
| moritz | aye | 20:30 | |
| Coke | hurm. | 20:33 | |
| I have something like \\S+ <.panic "..."> - how can I pass the contents of the \\S+ into the .Method I'm defining? | |||
|
20:33
particle joined
|
|||
| Coke | $<extra>=(\\S+) <.badList($extra)> fails... | 20:33 | |
|
20:35
tetragon joined
|
|||
| dalek | rrot: r45386 | jonathan++ | trunk/ext/nqp-rx/src/stage0 (3 files): [nqp-rx] Update to latest nqp-rx to get various fixes to escape handling. |
20:35 | |
| moritz | Coke: <.badList($<extra>)> maybe? | 20:36 | |
| Coke: if that doesn't work, maybe you need to fall back to closure in the regex, like in github.com/rakudo/rakudo/blob/maste...ar.pm#L273 | 20:37 | ||
| nopaste | "coke" at 72.228.52.192 pasted "moritz..." (15 lines) at nopaste.snit.ch/20163 | 20:40 | |
| Coke | moritz: closures work in nqp-rx? | ||
| moritz | Coke: aye | 20:41 | |
| Coke | ok, trying that... | ||
| sorear | Austin: as of r45386, you can now use full Pod6 in NQP, not just that yucky =begin/=end version | ||
| Coke | moritz++ ! | 20:47 | |
| now I just need to figure out how to get a less helpful panic that doesn't tack on the "near..." | 20:48 | ||
| moritz: any suggestions on that one? =-) | 20:52 | ||
| (i tried end the panic with a \\n, but that doesn't work as advertised. | 20:53 | ||
| Coke guesses pirop::die | 20:55 | ||
| (except spelled right.) | |||
| whee. | 20:58 | ||
| Austin | Coke: You can override a vtable pretty simply. There's a method on Class.pmc for it. | 21:02 | |
| dalek | kudo: 0893322 | jonathan++ | build/PARROT_REVISION: Bump PARROT_REVISION to get latest nqp-rx fixes. |
21:03 | |
| Austin | Whoops, nevermind. sorear++ | ||
| dalek | kudo: 50fa7b0 | jonathan++ | t/spectest.data: Turn S02-literals/fmt-interpolation.t back on. |
||
| sorear | Austin: you can use =head1 and whatnot in NQP now | 21:05 | |
| Austin | Yeah, I saw that. | 21:06 | |
| Coke | moritz++ | 21:07 | |
| moritz | Coke++ # actually using the stuff :-) | 21:08 | |
| Coke | Austin: Trying to figure out how I can call the override in an INIT block on a sub that won't be visible anywhere else. | ||
| Austin | Huh? | ||
| What are you trying to override? | |||
| Coke | TclList's get_string. | ||
| (there's a PIR override, i want to rewrite it in NQP) - but I don't want the sub I use for it to be visible anywhere else. | 21:09 | ||
| ... though I guess I could have a get_string method with no real harm. | |||
| dalek | rtcl-nqp: 163b622 | Coke++ | (3 files): Fix error handling on some malformed lists. |
||
| sorear | partcl-nqp is going to be /pure/ nqp? | ||
| Austin | Put it in a separate namespace if you want, but I wouldn't worry too much about it. | 21:10 | |
| sorear | you're not going to have a C/Pmc2c kernel? | ||
| Austin | Sorear: No good reason to. | ||
| (Unless there's a floating point issue...) | |||
| But tcl isn't really the language I think of when I think of floating point... | 21:11 | ||
|
21:11
darbelo joined
|
|||
| Coke | sorear: partcl was c/PMC based. | 21:11 | |
| partcl-nqp isn't going to use C unless it absolutely has to. | 21:12 | ||
| sorear | I see | ||
| Coke | Austin: real tcl handles FP just awesomely. | 21:14 | |
| Austin | Sure, but does it handle it the same way that parrot does? | 21:15 | |
| Coke | see partcl for my thoughts on that so far. =-) | 21:16 | |
| Austin ++ # Kakapo now has roles with attributes. | 21:19 | ||
| Coke | Austin++ #extra space in that one. | 21:20 | |
| Austin | And now I'm looking at everything through role-tinted goggles.. | 21:25 | |
| Coke | Austin, sorear. ok. I have a class, TclList. in an INIT block, I say: | 21:26 | |
| P6metaclass.get_parrotclass($class).add_vtable_override('name', | |||
| &TclList::get_string) | |||
|
21:27
cognominal joined
21:28
Mokurai joined
|
|||
| Coke | Later I have TclList { method get_string() {} } | 21:28 | |
| dies with: Symbol '$class' not predeclared in <anonymous> | |||
| Austin | Okay | ||
| So fix it | |||
| my $class := 'TclList' | 21:29 | ||
| Coke | ... damnit. | ||
| Coke-- | |||
| rakudo: "Coke--".say | |||
| Austin | Also, lose the '&' I think. | ||
| www.girlgeniusonline.com - scantily-clad Victorian babes .. with robots | 21:35 | ||
| treed | Scantily-clad Victorian? | 21:40 | |
| Uh, hm. | |||
| Coke | ah, sparks. | 21:44 | |
|
21:46
snarkyboojum joined
|
|||
| Austin | treed++ | 21:57 | |
| I'm glad someone caught that.. | |||
| treed | (I wasn't about to click the link at work) | 21:58 | |
| Austin | :) | ||
| treed | So I can only image. | ||
| "What, she's only wearing two layers of clothing?" | 21:59 | ||
| Austin | It's SFW - Phil Foglo is pretty much a PG cartoonist.. | ||
|
21:59
integral joined
|
|||
| Coke | Girl Genius is a good comic. | 22:17 | |
| must put in an order for a physical copy... | |||
|
22:27
kid51 joined
|
|||
| dalek | kudo: e889ed4 | masak++ | t/spectest.data: [spectest.data] uncommented two test files |
22:27 | |
| Coke | Null PMC access in find_method('get_parrotclass') | ||
| Austin | make sure you loaded p6object | ||
| Should be loaded if you're interpreting, but not if you compiled | |||
| dalek | rrot: r45387 | NotFound++ | trunk/src (4 files): some more init_int usages |
22:31 | |
| Coke | if I load it in the init, I get: | 22:37 | |
| t/library/p6object.t | |||
| .. | |||
| no. | |||
| A method named 'HOW' already exists in class 'P6object'. It may have been supplied by a role. | |||
| yah, that. | |||
| Austin | Heh | 22:38 | |
| load bytecode not being smart enough | |||
| Also means you shouldn't be getting the get_parrotclass error. What code produces that? | 22:39 | ||
| darbelo | Say, is any of the "Let's standardize on a sigle string encoding inside parrot" guys about? | ||
| nopaste | "coke" at 72.228.52.192 pasted "austin" (14 lines) at nopaste.snit.ch/20164 | ||
| Austin | Looks good to me. | 22:41 | |
| FWIW, $tcl is the same | |||
| Coke | yes. | ||
| Austin | So you could do $tcl.add_vtable_override(...) | ||
| Coke | oh! | ||
| Austin | Oh. | 22:42 | |
| Is TclList actually a P6object class? | |||
| chromatic | Hooray for single string encodings, and Victorian steampunk (as opposed to, say, Cromwellian Steampunk). | 22:43 | |
| Austin | No, because you never declare the class | ||
| Coke | Austin: the class is created in PIR | ||
| Austin | Ah. | ||
| Coke | using $tcl avoids the problem. danke. | ||
| ah. and no, it's not a p6object class. =-) | 22:44 | ||
| Austin | Where is that pir? | ||
| darbelo | chromatic: I'm trying to fit 'single encoding' into my NFG GSoC proposal. | ||
| Coke | src/class/tcllist.pir | ||
| darbelo | The big win is already stated in the rationale for NFG. But the PDDs argue for 'bazzillions of encodings and NFG' | 22:45 | |
| Coke | ok. it doesn't error, but it doesn't add the override, either. | ||
| (it's defaulting to RPA's get_string) | 22:46 | ||
| so, do I have to be using P6objects to get this to work? blah. | |||
| chromatic | What if you were to assume that the encoding only mattered when entering or leaving Parrot, darbelo? | ||
| Coke | grumble. | 22:47 | |
| purl | i guess grumble. is it typically possible to order replacement laptop keys? | ||
| Austin | You've already got a vtable there. | ||
| In tcllist.pir | |||
| darbelo | Everythign gets normalized on the way in, and reconverted on the way out? | 22:48 | |
| Austin | I think it ignores you. | ||
| Coke | Austin: yes. that's the one I'm trying to move. =-) | ||
| dalek | kudo: 9a20634 | jonathan++ | src/ (2 files): Make A::B.new in the case that A::B doens't exist emit a message that mentions A::B, not just a null PMC access. |
||
| chromatic | darbelo, that sounds reasonable to me. | ||
| Coke | so in my local copy, the PIR one is gone, and I'm trying to get it to recognize a PIR version that just returns "eek"; | 22:49 | |
| Austin | Okay | ||
| Coke | er, s:2nd/PIR/NQP/ | ||
| darbelo | If we do that, parrot would only have to worry about normalized strings, the encoding and charset pointers go away from the string struct, etc. | ||
| Austin | Are you confusing "get_string" and "name" ? | 22:50 | |
| Coke | ... damnit. | ||
| just like I did $class, early. =-) | |||
| darbelo | But 4-byte chars strike me as too memory expensive for widespread use. | ||
| Austin | (Of *course* they're different... how could they *not* be different...) | ||
| Coke | muuuuch better. | ||
| Austin | laugh | ||
| Work? | 22:51 | ||
| purl | Work - the curse of the drinking class. (Oscar Wilde) | ||
| darbelo | We already use too much memory as it is. | ||
| chromatic | darbelo, you pick your poison, I guess. | ||
| Coke | I took the sample code provided, updated it, ripped it out, added it back in, but forgot to update it the second time. | ||
| much better, thank you. now to work on the actual conversion. | |||
| Austin | darbelo: 4 byte really isn't fetch-efficient. You want to plan for 8 byte characters, at least on 64 bit machines... | ||
| chromatic | If we only had 1, 2, and 4 byte encodings, that's not *too* many to support. | 22:52 | |
| The real problem is variable-width encodings. | |||
| dalek | TT #1541 created by jkeenan++: warnings appearing during 'make' invocation of pmc2c.pl | 22:53 | |
| TT #1541: trac.parrot.org/parrot/ticket/1541 | |||
| darbelo | Maybe I can do it as a two pater. Implement NFG as specified in the PDD for the midterms and then ripping out all of the other encodings for the final evaluation. | ||
| chromatic | Call the second part a stretch goal, and I'm all for it. | 22:56 | |
|
23:09
bubaflub joined
|
|||
| Coke | argh. I'm just a complete idiot today. have a place for a Q:PIR block. if I put in the guts of the old get_string, I get a 'blockoid' parsing error on the nqp. if I have an empty Q:PIR {}; , it compiles. | 23:14 | |
| ... and there it is. Q:PIR doesn't like embedded {}'s | 23:16 | ||
| chromatic | Can you double up the curlies? Q:PIR {{ ... }}; | 23:20 | |
| dalek | rrot: r45388 | jkeenan++ | trunk/lib/Parrot/Pmc2c/Pmc2cMain.pm: Applying patch submitted by Util++ for �trac.parrot.org/parrot/ticket/1541. |
||
| Coke | AIGH. it doesn't even like them in NQP! | 23:24 | |
| if I do a my $bl := "{"; in NQP to avoid the problem in PIR, it still blows up, even with nothing in the PIR. | 23:25 | ||
| it's TGE all over again. | |||
| chromatic: it's slightly better that way. then it dies with: | 23:27 | ||
| error:imcc:syntax error, unexpected $undefined, expecting '(' (':') in file 'src/TclList.pir' line 428 | |||
| (which is the end of the file) | 23:28 | ||
| dalek | kudo: 3469ffe | jonathan++ | src/Perl6/ (2 files): Wire reduce meta op up to use the new reducewith that can handle chaining, triangle form and right-associative ops. |
||
| Coke | arrrrgh. | 23:35 | |
| nopaste | "coke" at 72.228.52.192 pasted "ARGH" (206 lines) at nopaste.snit.ch/20166 | 23:36 | |
| Coke | ok. that dies with the same error I just mentioned. | ||
| (tried replacing the PIR {} | 23:37 | ||
| with some safer equivalents. | |||
| AHA. a := snuck into the PIR. | 23:40 | ||
| a LTA error message. | |||
| dalek | TT #641 closed by bubaflub++: Crash when loading PIR file | 23:42 | |
| TT #641: trac.parrot.org/parrot/ticket/641 | |||
|
23:43
eternaleye joined
23:54
mikehh joined
|
|||
| sorear | darbelo: What possible advantage does "loads and loads of encodings" bring :/ | 23:59 | |