|
Parrot 2.4.0 "Sulfur Crest" Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | GSOC Students: trac.parrot.org/parrot/wiki/GSoCersStartHere Set by moderator on 18 May 2010. |
|||
| tcurtis | Tene: any PAST::Node subclass. | 00:00 | |
| Tene | ah, right, reading. | 00:01 | |
|
00:20
ruoso joined
|
|||
| whiteknight | tcurtis: your constant folding pass looks very interesting. Is it tested? | 00:23 | |
| dalek | rrot: r46977 | tcurtis++ | branches/gsoc_past_optimization (2 files): Regenerate manifest. |
00:25 | |
| bacek_at_work | tcurtis, if you can propose some metadata for storing with ops (inside OpLib PMC?) it can help with various optimisations. | 00:27 | |
|
00:27
darbelo joined
|
|||
| tcurtis | whiteknight: not yet. It works for at least the simple example there, but I don't know if that's true for more complicated PASTs. In addition, it destructively modifies its input(because I haven't yet implemented a way to deeply copy PASTs that doesn't fail for those that refer to themselves). | 00:31 | |
| whiteknight | tcurtis: why would we want non-destructive? | 00:32 | |
| chromatic | I'd operate on branch-at-a-time and return a new branch. | 00:33 | |
| ... rather than modify in place. | |||
|
00:33
gbacon joined
|
|||
| bacek_at_work | /PAST::Op[ (@pirop = 'add') and (*[1]/@type = 'int') and (*[2]/@type = 'int') ] | 00:34 | |
| (Crazy idea for describing matching of subtrees to various optimisations steps) | 00:35 | ||
| tcurtis | chromatic: The difficulty with that is when the PAST isn't really a tree. | 00:37 | |
| bacek_at_work | tcurtis, PAST can contain cycles??? | ||
| chromatic | True. | 00:38 | |
| tcurtis | bacek_at_work: nopaste.snit.ch/20638 $P2[2][0][0].'value'() is the same as $P2. | 00:39 | |
|
00:45
cotto_work joined
00:48
kid51 joined
|
|||
| tcurtis | My current plan is for PAST::Transformer to destructively modify its input and to write something to deeply copy the PASNotReallyATree in case one wants to keep the original PAST around. | 00:49 | |
| dalek | website: Chandon++ | How do threads fit into parrot? | 00:56 | |
| website: www.parrot.org/content/how-do-threads-fit-parrot | |||
| whiteknight | tcurtis: I guess I don't understand why we need to save the original tree at all? | 00:57 | |
| optimization is destructive by nature, and it's not exactly an interactive, reversible process | 00:58 | ||
| dalek | p-rx: 3fcffdb | pmichaud++ | src/ (5 files): Revert regex-interpolation branch changes back to 3ad311, fresh |
01:00 | |
| p-rx: 183d47b | pmichaud++ | src/Regex/Cursor.pir: Only Regex;Cursor objects end up in the match captures -- others are |
|||
| p-rx: 655758c | pmichaud++ | (4 files): Add !INTERPOLATE subrule to Regex::Cursor. Enable $-sigiled |
|||
| p-rx: 52d3856 | pmichaud++ | (3 files): Perform array matches, including finding the longest element |
|||
| whiteknight | Chandon: ping | ||
| p-rx: 1b1fe32 | pmichaud++ | (4 files): Enable regex-based assertions. |
|||
| p-rx: 3e805c7 | pmichaud++ | (2 files): Fix array-regex interpolation, enable more tests. |
|||
| p-rx: aa182b0 | pmichaud++ | src/NQP/Actions.pm: Refactor codeblock slightly in preparation for interpolated blocks. |
|||
| p-rx: 43b5e39 | pmichaud++ | src/NQP/ (2 files): Refactor <?{...}> and <!{...}> code assertions to prepare for <{...}>. |
|||
| p-rx: 7882ea3 | pmichaud++ | (3 files): Enable code interpolations. |
|||
| p-rx: 0e0dbcb | pmichaud++ | src/setting/Regex.pm: Update setting with fix for failing subst expression. |
|||
| p-rx: f6ae728 | pmichaud++ | src/stage0/ (5 files): Update bootstrap. |
|||
| Chandon | whiteknight, Hey. | 01:01 | |
| whiteknight | Chandon: just saw your post. I think I have some answers for you | ||
| kid51 | Getting failure in make test: t/op/stringu.t failed test 33 | ||
| whiteknight | (nice post, by the way) | 01:02 | |
| Chandon | You want to tell me that pthread_alarm_for_this_thread exists and I get a pony too? | ||
|
01:03
abqar joined
|
|||
| whiteknight | not quite | 01:03 | |
| plobsing | whiteknight: non-destructive optimization would be useful if, for example, trying to run multiple optimization strategies on the same tree to determine the optimal strategy | ||
| Chandon | rats | ||
| whiteknight | in src/ops/*, look for :check_event. Every op with that flag calls the scheduler to run any tasks | ||
| mostly in core.ops | 01:04 | ||
| or, that's a point when a task/thread switch happens. It doesn't use a timer or signal or anything | |||
| Chandon | That sounds useful. How does that handle the long-running-op case? | ||
| whiteknight | Next, every interpreter has it's own memory pools and it's own GC. Currently every ParrotThread has it's own interpreter | 01:05 | |
| Chandon: ideally, ops should be small, atomic, and not long-running | |||
| ideally | |||
| (fairys, unicorns, elves, etc) | |||
| Chandon | Any suggestions on a way to pre-empt long running ops? | 01:06 | |
| davidfetter throws in some unobtanium skyhooks | 01:07 | ||
| whiteknight | I don't know what your green threads will do, but if they also have their own interpreters or TLS, we don't have to stop everything to run GC | ||
| Maybe we don't need to preempt long running ops | |||
| maybe this could be the carrot that convinces people not to make long-running ops | |||
| Chandon | Unfortunately, "call dynamically loaded C function" will always be a long running op, and if I can't pre-empt that then I need to always put it in its own real thread - which isn't optimal. | 01:09 | |
| I guess we could just accept that calling a slow computation in C blocks task switches and people should explicitly request a real thread for it, but... | 01:10 | ||
| If every interpreter has its own GC, then how does sharing data work? | 01:11 | ||
| whiteknight | Chandon: every PMC has a link to the owning interpreter | ||
| but other than that, we don't currently have a way to safely share data | |||
| we used to have a [broken] STM implementation, but that's gone now | 01:12 | ||
| Chandon | No, Chandon, it's not that he's bald. That's not a problem at all. It's that his head is on fire. | ||
| whiteknight | If GSoC was supposed to be easy, there wouldn't be any money in it :) | ||
| Chandon | Sadly, Google has carefully constructed the program to not give combat pay bonuses. | 01:14 | |
| dalek | rrot: r46978 | tcurtis++ | branches/gsoc_past_optimization (3 files): Remove trailing spaces and remove the clone in PAST::Transformer.walk. |
01:15 | |
| whiteknight | Okay, I'm heading to bed now. Was up late last night to watch Lost. Need sleep. Talk to you later | 01:16 | |
| Chandon | Good night. | ||
|
01:22
ash_ joined
|
|||
| dalek | website: darbelo++ | Dynamic code points, the grapheme tables and not getting your services denied. | 01:26 | |
| website: www.parrot.org/content/dynamic-code...ces-denied | |||
| Coke | zzz | 01:32 | |
| darbelo | OMG. I'm so boring that just dalek's reports of my writing put people to sleep! | 01:33 | |
| cotto | no they....zzzzzzzzz | 01:35 | |
| bacek_at_work | tcurtis, (sorry for delay) Yeah... OTOH you don't have to deeply clone subtree. You can construct only replacement node and attach existing subtree to it. With little care about replacing "multiple referenced node" it's doable. | 01:38 | |
| pmichaud, hey! What about my multis stuff in nqp? :) | 01:39 | ||
| tcurtis | bacek_at_work: It's certainly doable. Just a bit trickier than cloning a simple tree. | 01:40 | |
| pmichaud | bacek_at_work: I felt I needed to clean up regex interpolation first, since it got merged to trunk | ||
| bacek_at_work | tcurtis, yes. But I don't offer you an easy win :) | ||
| pmichaud, fair enough. | |||
| pmichaud | (and it ended up being a significant departure from how I thought it should look) | ||
| bacek_at_work | Chandon, you can switch threads between ops. It's good first cut of approach. | 01:43 | |
| mikehh | kid51: getting the same failure in make corevm/make coretest and make test | 01:51 | |
| also getting 17 files failing perlcritic (all with TODO and/or XXX) since I updated to Andy's latest Perl::Critic::Bangs | 01:53 | ||
| kid51 | That failure was at r 46977 (last changed rev: 46969) | 01:56 | |
|
01:57
hercynium joined
|
|||
| nopaste | "kid51" at 192.168.1.3 pasted "t/op/stringu.t: failure at r46977" (46 lines) at nopaste.snit.ch/20639 | 01:57 | |
| kid51 | I hate those [SIGNAL 6] failures | 01:58 | |
| NotFound: ping | 01:59 | ||
| File was last modified at r46930, yesterday. | |||
|
02:00
Themeruta joined
|
|||
| kid51 | msg NotFound test you added May 23 to t/op/stringu.t, "join mixed encodings", is failing on linux/i386 at r46977 | 02:02 | |
| purl | Message for notfound stored. | ||
| dalek | p-rx: 890caca | pmichaud++ | (2 files): Don't interpolate special variables in regexes. |
02:29 | |
| p-rx: b81ec42 | pmichaud++ | src/stage0/ (3 files): Update bootstrap. |
|||
| rrot: r46979 | pmichaud++ | trunk/ext/nqp-rx/src/stage0 (5 files): [nqp-rx]: Update bootstrap to latest regex interpolation version. |
02:38 | ||
|
02:39
khairul joined
|
|||
| khairul | cotto: ping | 02:40 | |
| cotto | khairul, pong | 02:44 | |
| khairul | want to have that chat now? | 02:46 | |
| bacek_at_work | kid51, (stringu failure) fixed in r46980 | ||
| cotto | khairul, I still need some time to take a good look at your code. Let me commit some opsc stuff and I'll ping you when I'm ready. | 02:48 | |
| I don't think it'll be more than 30m. | |||
| khairul | alright sure | ||
| cotto | Is everything you have in svn? | 02:50 | |
| khairul | yep | 02:52 | |
|
02:52
ash_ joined
|
|||
| cotto | btw, does this time work well for you in general? | 02:52 | |
| 11:00 your time? | 02:53 | ||
| khairul | its fine actually, so don't worry about it. | ||
| kid51 | clock | 02:54 | |
| cotto | I'm just thinking about the future. It's easier for me to meet earlier, if I know to be ready by then. ;) | ||
| dalek | rrot: r46980 | bacek++ | trunk/src/string/api.c: Adjust assert in Parrot_str_join to avoid false positive on buffer exhausting. |
02:55 | |
| rrot: r46981 | cotto++ | trunk (6 files): [opsc] add --quiet to ops2c to suppress extra output during the build |
|||
| cotto | Hopefully it's a sane default to be noisy when someone is running ops2c manually but to be quiet during the build. | 02:56 | |
|
02:58
JimmyZ joined
|
|||
| bacek_at_work | cotto, why not "unless $quite { <calculate_time>; <debug output> }"? | 02:58 | |
| kid51 | bacek_at_work: Confirmed fixed. thanks. | ||
| cotto | that'd work too | ||
| I felt like making a minimal change. Using "unless $quiet { ... }" would be clearer. | 02:59 | ||
| parrot-data-structures? | 03:11 | ||
| purl | parrot-data-structures is github.com/Whiteknight/parrot-data-structures | ||
| dalek | rrot: r46982 | plobsing++ | branches/ops_massacre (28 files): move sysinfo and some time routines (time itself stays in core) to dynops |
03:12 | |
|
03:14
Andy joined
|
|||
| plobsing | we'd have far fewer ops if we didn't generate so many permutations of const/non-const inputs for seldom used ops | 03:30 | |
| and we could avoid that if the PIR compiler could generate additional set_x_xc instructions to make use of the more general-case ops | 03:32 | ||
|
03:32
janus joined
03:34
LoganLK joined
|
|||
| ash_ | plobsing: gist.github.com/412727 I have expanded my thoughts to take into consideration the current NCI functionality, does that look better? | 03:38 | |
| i think i will send that out to the mailing list for comments, if you think it looks sane | 03:44 | ||
| dalek | rrot: r46983 | plobsing++ | branches/ops_massacre/src/dynoplibs/sys.ops: remove C<err> op from dynops (it can't go to dynops) |
03:45 | |
| plobsing | ash_: char has 3 potential signednesses | 03:46 | |
| (I'm assuming you're mapping c => char, C => unsigned char) | |||
| char != signed char. it's weird that way | 03:47 | ||
| ash_ | hmm, got ya, my mistake | ||
| plobsing | also fixed sizes (eg: uint32) and system sizes (eg: unsigned int) should be disjoint | ||
| because APIs can require either | 03:48 | ||
| 2,3,4,5 for pointers are evil and must die | |||
| ash_ | I am fine with that | ||
| perldoc.perl.org/functions/pack.html uses ! to mean system "use native size" | 03:49 | ||
| I could change my modifier for UnManaged vs Managed structs | |||
| plobsing | the system I proposed had [INSP] for type and then modifier flags for size | ||
| eg I4 would be int of size 2**4 | 03:50 | ||
| ash_ | I4 would be a 16 bit number? | ||
| tcurtis | You could use prefix modifiers for signed/unsigned instead of capitalization. That way, signed/unsigned/char would be consistent with the other types. | 03:51 | |
| plobsing | that's another good point | ||
| ash_ | yea, thats true | ||
| plobsing | u/+ or u/s for unsigned/signed seems cleaner to me | ||
| ash_: the hash functionality you're looking for is on a PMC, not on loadlib | 03:52 | ||
| I beleive it is ParrotLibrary | |||
| managed/unmanaged also has meaning for strings | |||
| ie: who owns this string | 03:53 | ||
| cotto | ash_, would a struct need to be explicitly declared each time it's used? | ||
| s/declared/defined/ | 03:54 | ||
|
03:55
TiMBuS joined
|
|||
| cotto | I'm thinking about how nci could be used for PIRATE to load a dynop dll or so and extract op info from it. | 03:55 | |
| ash_ | cotto, Um.... thats a good question, my intention was or struct_from_string to return an instance of the struct | ||
| plobsing | I see struct_from_string as a struct constructor (somewhat of a shortcut for "new $P0, [ManagedStruct]\\nset_string $P0, 'fmt'" | 03:56 | |
| ash_ | in theory, if you had a string that represented the struct, you could define it as a constant | ||
| cotto | an alternative would be to give dynop libraries enough smarts to talk about themselves through a simpler api | 03:57 | |
| plobsing | you can could the constant struct into the PBC const table fairly easily already | ||
| s/could/cook/ | |||
| cotto: what does the dynops library loading return? can't you put something meaningful into that return value? | 03:58 | ||
| cotto | no idea | ||
| plobsing | ash_: the problem with using letters for fixed width types is you quickly run out of meaningful pnemonics and run into compiler-specific mismatches | 03:59 | |
| it is confusing if my compiler defines int to be 64 bits, but 'i' is 32 bits for fixed width | |||
| ash_ | yeah, thats true, in the llvm integers are generic, iN is any number, so i8, i16, i32 or i64 are the normals | 04:00 | |
| cotto | looks like loadlib returns a ParrotLibrary | ||
| not especially useful for introspection | |||
| ash_ | I just wasn't sure how far I should diverge from the current definition, I was trying to keep parts of it similar | 04:01 | |
| but i do like the generic integer size for ints, its more flexible | |||
| plobsing | cotto: you should subclass with ParrotDynopsLibrary IMHO | 04:02 | |
| cotto | interesting idea | ||
| ash_ | plobsing: technically you could not have int at all, and make people use values with standard definitions, like short, long, long long | ||
| or int8, int16, int32, int64 | |||
| plobsing | ash_: except many apis use int | ||
| they're wrong IMHO, but I can't go hunting them all down | 04:03 | ||
| ash_ | yeah, true | ||
| so, how about a modifier for 'native type' so like ^i or something means, "int" for whatever you define int as | |||
|
04:04
sorear joined
|
|||
| ash_ | how about i switch ! to mean native type like pack, and have ^ mean UnManaged | 04:05 | |
| plobsing | ash_: is there any overlap between things that can be native and things that can be unmanaged? | 04:06 | |
| otherwise it doesn't really matter | |||
| ash_ | no, but dual definitions can be confusing, but maybe i am over simplifying | ||
| plobsing | true enough | 04:07 | |
| ash_ | what about data casts? | 04:08 | |
| like, if a value only takes unsigned int32, and you have -123? should that be an error? or a cast? | 04:09 | ||
| blindly casting that to a unsigned int32 (from a signed int32) is 18446744073709551493 which is kinda a bit of a difference | 04:10 | ||
| plobsing | ash_: KISS. don't do extra work. | ||
| don't warn. do whatever CC would do | |||
| ie: truncate silently | |||
| ash_ | auto-widen but error on narrowing? | 04:11 | |
| plobsing | I'm all for silent failure. layers above NCI will figure out how and what to check | ||
| or even if it needs checking | |||
| maybe (as in Rakudo) the system already knows it has a UInt8 | 04:12 | ||
| ash_ | alright, thats fine | ||
| plobsing | not to mention, blind casting is a nifty way to analyse data. "unpack 'C*' pack "N" $_[0]" is nifty when working with IP addrs | 04:14 | |
| ash_ | any other comments or questions? I think i'll email this to the parrot mailing list for some final feedback, but I think it seems like a solid place for starting from for now, i updated the gist a bit, gist.github.com/412727 | 04:15 | |
| plobsing | looks good overall. put it to the list! | 04:17 | |
| ash_++ | |||
| ash_ | struct_from_string, can you think of any shorter names? | 04:18 | |
| i am not being very creative, so i wrote what it does as the op name | |||
| plobsing | ash_: I'm not so hot on that. why does it need an op? | ||
| why can't it just be UnManagedStruct's constructor (going through a normal new) | |||
| ash_ | It seemed useful, and consistent with how dlfunc works | ||
| it doesn't have to be an op, it could be a function somewhere, or a macro, or something, i just wanted it to be consistent with dlfunc | 04:19 | ||
| plobsing is in the middle of *eliminating* op-bloat. the last thing I want is yet another op | |||
| ash_ | yeah, good point | ||
| plobsing | ash_: a function would be nice. macros aren't much good to HLL authors and encourage people to write more PIR than they should | 04:20 | |
| ash_ | alright, i'll put it as a function, takes a string, returns a PMC, etc. it can be a simple wrapper for UnManagedStruct (or ManagedStruct) | 04:21 | |
| plobsing | ash_: you have a lot of good ideas that are just a little too high for the baseline NCI functionality. you should consider making a wrapping library. | 04:22 | |
| s/high/high-level/ | |||
| ash_ | yeah, i can work on that after I get the core fixed/modified, let me know when I am going over board here, its hard for me to tell sometimes, since i have a lot more limited experience with parrot | 04:23 | |
| plobsing | ash_: with respect to NCI in general, it is widely accepted as a poor API, so consistency with the existing interface is not so important | 04:24 | |
| over board is hard to do there | |||
| ash_ | also, i think it would be nice to allow spaces for visual reference between things, internally i'd ignore them, but saying "*^i *(f D)" to see where thing end and begin I think is helpful | 04:26 | |
| plobsing | ash_: sure. whitespace was reserved for some yet-to-be-determined meaning, but I don't see any way to sanely associate meaning with whitespace | 04:28 | |
| (subtle jab at python) | |||
| ash_ | \\t can be illegal, thats fine :P | 04:29 | |
| tcurtis | plobsing: s/python/almost every programming language/? | 04:34 | |
| plobsing | tcurtis: true, but it is most obvious in python. and I loves me some python bashing | 04:35 | |
| cotto | there's always fortran | 04:36 | |
| ash_ | its late here, heading to bed, night everyone | ||
| plobsing | cotto: fortran 90 did away with that | ||
| fortran is still my goto-language for poor string-handling bashing | 04:41 | ||
| sorear has returned | 04:43 | ||
| purl | Quick, hide! It's sorear! | ||
| sorear | plobsing: moreso than Pascal? | ||
| I've heard lots of fun things abount string handling in (standard) Pascal | |||
| plobsing | sorear: fortran requires you to know the lengths of *all* of your strings at compile time. not fun. | 04:44 | |
| cotto | Having reimplemented the code that deals with it, I'm still not certain why we actually need ops.num. | 04:49 | |
| plobsing | kill it! kill it! | 04:50 | |
| cotto | Let's see what happens. | 04:52 | |
| the only thing that comes to mind is to ensure that all non-experimental ops are explicitly listed somewhere | 04:53 | ||
| either in ops.skip or ops.num | |||
| plobsing | except ops.num is generated, so it's only really a check on people adding ops to ask (rather indirectly) whether they want their op in ops.skip or not | 04:54 | |
| cotto | time for it to die then | 04:56 | |
| I'm just trying to think how what it tried to do can be correctly implemented. | 04:57 | ||
| plobsing | ops.skip is for skipping the creation of unecessary const permutations no? | 04:58 | |
| cotto | yes | ||
| plobsing | why not let that be the default. most of our ops shouldn't need variants that take consts. | ||
| with a few tweeks, I should be able to get IMCC to emit set_x_xc\\nop_x in stead of op_xc when op_xc is not found | 04:59 | ||
| it would significantly reduce our op-bloat | |||
| cotto | sounds like the imcc tweaks should be implemented first | 05:01 | |
| plobsing | cotto: sure. I'll do it after the ops culling is done (nearly there) | 05:02 | |
| cotto | So what we'd have would be an opsc that generates all op variants without consts by default and has a whitelist for the const ops we want? | 05:03 | |
| plobsing | a flag. eg: ":hot-const" | 05:04 | |
| or maybe a flag on the arguments we want const variants for | |||
| cotto | but they'd be somehow whitelisted | 05:05 | |
| plobsing | eg: "CONSTABLE INVAR" | ||
| yes. whitelist | |||
| cotto | sounds like a nice chap | ||
| plobsing | the default of creating all const permutations of all ops is extremely bloaty | 05:06 | |
| when was the last time you used shr_i_ic_i in a tight loop? | 05:07 | ||
| cotto | NaN days ago | 05:08 | |
| plobsing | div_n_nc_nc | 05:09 | |
| we have 20 subclass op variants | 05:10 | ||
| sorear | I've actually used the shr_i_ic_i operation in a tight loop before (in C, not Parrot) | 05:19 | |
| it's pretty important for bit parallel operations | |||
| also, packed bit vectors | 05:20 | ||
| plobsing | sorear: really? if you cared about performance, your optimizer would unroll that | ||
| to be clear this is "const << x", not "x << const" | |||
| sorear | plobsing: you'd use const << x in a garbage collector for managing the mark table | 05:21 | |
| mark_table[objnum >> 5] |= 1 << (objnum & 31); | |||
| plobsing | ok, fair enough. but it certainly isn't a *common* operation. | 05:22 | |
| you could always create a dynopslib with the appropriate const alternatives if needed | |||
| sorear | and if our JIT is worthy of the name, it will optimize set_i_ic I42 1 shr_i_i_i I19 I42 I27 | 05:24 | |
| plobsing | no need for JIT. that's a PIR compiler constant-propagation thing | 05:25 | |
| but I suppose JIT could handle it too | |||
| sorear | plobsing: well, if we get rid of shr_i_ic_i, the PIR compiler won't be able to do anything | 05:44 | |
|
05:51
uniejo joined
06:02
simcop2387 joined
|
|||
| dalek | rrot: r46984 | plobsing++ | branches/ops_massacre (21 files): move fdopen, close, getstd$x to dynops |
06:18 | |
| cotto | plobsing, there was a recent sync with nqp upstream that fixed some issues affecting ops2c. | 06:24 | |
| dalek | p-rx: becdc98 | pmichaud++ | (2 files): Change tests for isa ['Sub'] to does 'invokable'. |
||
| purl | dalek: that doesn't look right | ||
| p-rx: 0b3416f | pmichaud++ | src/stage0/ (4 files): Update bootstrap. |
|||
| cotto | plobsing, are all those ops that are supposed to become dynops? | 06:25 | |
|
06:26
parthm joined
|
|||
| plobsing | I'm following the comments on TT #449. | 06:26 | |
| cotto | wfm then | ||
| plobsing | allison said only print remains. coke ammended to indicate say remains as well | 06:27 | |
| cotto | I'm testing whether I have ops.num properly ripped out of the build process. | ||
| I like say, trivial though it is. | |||
| plobsing | I'd like to see it go. 7 ops poorly spent | ||
| it could easily be a macro | 06:28 | ||
.oO( because IMCC does macros and constant propagation soooo well! ) |
|||
| cotto | At least it's useful. | ||
| plobsing | it does get used a lot. I'll give it that | 06:29 | |
| dalek | rrot: r46985 | pmichaud++ | trunk/ext/nqp-rx/src/stage0 (4 files): Update nqp-rx bootstrap with check for does 'invokable'. |
06:36 | |
|
06:37
JimmyZ_ joined
|
|||
| sorear plays with a gcc checkout | 06:44 | ||
| why does svn have to check out so slowly | 06:45 | ||
| pmichaud | to remind us all why we like git. :-) | 06:46 | |
| sorear | I think there's a market for a svn workalike built on git packfile technology | 06:48 | |
| Fast, yet idiotproof | |||
| plobsing | svn is idiot proof? | ||
| moritz | as soon as you invent an idiot proof system, somebody breeds a better idiot | 06:52 | |
| pmichaud | It's those ingenious idiots that are always causing problems.... :) | ||
| cotto | I'm tempted to post to parrot-dev before nuking ops.num. | 06:54 | |
| Actually, that's a good #ps question. | 07:03 | ||
|
07:05
khairul left
07:13
iblechbot joined
07:23
fperrad joined
|
|||
| dalek | rrot: r46986 | plobsing++ | branches/ops_massacre (21 files): move open, setstd$x, tell, peek, and seek to dynops |
07:26 | |
|
07:28
chromatic joined
07:29
fperrad_ joined
|
|||
| dalek | tracwiki: v19 | cotto++ | CottoTasklist | 07:31 | |
| tracwiki: trac.parrot.org/parrot/wiki/CottoTa...ction=diff | |||
| cotto | chromatic, what are your thoughts on removing ops.num? | 07:34 | |
| chromatic | Fine with me, as long as we don't have a brown paper bag moment at the next release. | 07:35 | |
| cotto | ? | 07:36 | |
| sorear | gcc 4.6 is doing a suprisingly good job of compiling | 07:39 | |
| cotto | you would expect that from a compiler | 07:40 | |
| chromatic | Presumably ops.num exists for a reason. If we can provide an alternative, so much the better. | 07:42 | |
| cotto | The ostensible reason is for bytecode compatibility. | 07:44 | |
| chromatic | If, in the future, we have bytecode compatibility, can we invent a better mechanism than ops.num? | 07:46 | |
| cotto | I'd say "once we care about bytecode compatibility, let's invent something that fits the Parrot we have at the time." | 07:48 | |
| chromatic | How likely can we do better than ops.num? | 07:49 | |
| sorear | A format that defines ranges? | 07:50 | |
| cotto | The same information exists in opsenum.h | ||
| sorear | 23-34 add i i,ic i,ic # lexicographic | ||
|
07:51
snarkyboojum joined
|
|||
| chromatic | If you think we can find something better, I'm all for removing it now. | 07:52 | |
|
08:02
viklund joined
08:04
parthm left
|
|||
| dalek | rrot: r46987 | plobsing++ | branches/ops_massacre (22 files): move printerr, read, and readline to dynops |
08:17 | |
| bacek | Aloha | 08:29 | |
| chromatic, (speaking of my GC "refactor" idea) any thought, objections, etc? | 08:30 | ||
| chromatic | I'm still fuzzy on step #1. | 08:47 | |
| I think I like the idea, but I don't know what goes where and how the API will look. | |||
| bacek | I'll try to draft SA API and some kind of flow diagram between Parrot, GC and SA tonight | 08:52 | |
| Right after dinner. | |||
.oO( Looks like Rakudo* will target development release of parrot...) |
08:54 | ||
| dalek | tracwiki: v5 | bacek++ | BacekTaskList | 08:56 | |
| tracwiki: trac.parrot.org/parrot/wiki/BacekTa...ction=diff | |||
| rrot: r46988 | plobsing++ | failed to fetch changeset: move stat to dynop |
09:07 | ||
| nopaste | "bacek" at 192.168.1.3 pasted "chromatic, something like this." (75 lines) at nopaste.snit.ch/20640 | 09:28 | |
| bacek | msg chromatic gist.github.com/412954 - "Perl6 code for GC massacre idea" | 09:32 | |
| purl | Message for chromatic stored. | ||
|
09:35
ruoso joined
|
|||
| dalek | rrot: r46989 | plobsing++ | branches/ops_massacre (6 files): fix some tests after removing io ops |
09:41 | |
| bacek | msg chromatic I kind of done with GC/IncrementalGC/TriColourGC "prototype". Check gist.github.com/412954 | 10:19 | |
| purl | Message for chromatic stored. | ||
| JimmyZ | bacek: Do you mind if I paste it to trac? | 10:22 | |
| bacek | JimmyZ, gist? | ||
| JimmyZ | yes | ||
| bacek | Refresh it and then copy | 10:23 | |
| Link from GCMassacre (or just on GCMassacre page) | |||
| afk # dinner. | 10:26 | ||
|
10:34
khairul joined
10:38
lucian joined
|
|||
| dalek | tracwiki: v2 | jimmy++ | GCMassacre | 10:38 | |
| tracwiki: add GC/IncrementalGC/TriColourGC prototype | |||
| tracwiki: trac.parrot.org/parrot/wiki/GCMassa...ction=diff | |||
| bacek | JimmyZ, thanks | 10:48 | |
| ! | |||
| JimmyZ | NP :) | 10:49 | |
| bacek | Someone have extend pygments to support Perl6 syntax highlighting... | 10:51 | |
| have to | 10:54 | ||
|
11:03
aukjan joined
|
|||
| bacek | Here we go - "Incremental, tri-colour, non-recursive mark&sweep" :) | 11:19 | |
| dalek | tracwiki: v3 | bacek++ | GCMassacre | 11:29 | |
| tracwiki: Add "Non-recursive, tri-colour, incremental mark and sweep." proto | |||
| tracwiki: trac.parrot.org/parrot/wiki/GCMassa...ction=diff | |||
| moritz | hey, what's the state of non-blocking sockets in parrot? | 11:44 | |
| bacek | moritz, "specced" I suppose... | 12:04 | |
| dalek | tracwiki: v4 | bacek++ | GCMassacre | ||
| tracwiki: Describe how PoolAllocator can work | |||
| tracwiki: trac.parrot.org/parrot/wiki/GCMassa...ction=diff | |||
|
12:08
parthm joined
|
|||
| dalek | rrot: r46990 | fperrad++ | trunk/runtime/parrot/library/LWP/Protocol.pir: [LWP] refactor _parse_response_content |
12:09 | |
| tracwiki: v5 | bacek++ | GCMassacre | 12:21 | ||
| tracwiki: Change description slightly | |||
| purl | dalek: that doesn't look right | ||
| dalek | tracwiki: trac.parrot.org/parrot/wiki/GCMassa...ction=diff | ||
| tracwiki: v6 | bacek++ | GCMassacre | |||
| tracwiki: Minor changes | |||
| tracwiki: trac.parrot.org/parrot/wiki/GCMassa...ction=diff | |||
|
12:30
iblechbot joined
|
|||
| dalek | tracwiki: v7 | bacek++ | GCMassacre | 12:38 | |
| tracwiki: Split code into chunks to simplify in-page navigation | |||
| tracwiki: trac.parrot.org/parrot/wiki/GCMassa...ction=diff | |||
| tracwiki: v8 | bacek++ | GCMassacre | |||
| tracwiki: trac.parrot.org/parrot/wiki/GCMassa...ction=diff | |||
|
12:39
ruoso joined
|
|||
| Coke | purl, msg plobsing I have concerns about the amount of stuff that's getting moved to dynops. Please make sure that devs have a chance to review the list before it gets merged back to trunk, especially since those "op or dynop" "pmc or dynpmc" tickets can generate some controversy in the first place. Thanks! | 12:40 | |
| purl | Message for plobsing stored. | ||
|
12:41
iblechbot_ joined
|
|||
| bacek | Coke, c'mon! Everything is dynop in Lorito world! :) | 12:41 | |
|
12:53
bkuhn joined
|
|||
| Coke wonders if we still have any C# or mono folks about. | 13:02 | ||
| (users, not devs) | |||
| arnsholt | I've used C | ||
| #, but not much | |||
| bacek | Coke, erm... Why do you need them? | 13:03 | |
| Coke | looking at it for a specific 3rd party library at work. trying to rule out mono as a potential platform for this project. | ||
| nothing parrot related, I just know smart people hang out here. =-) | |||
| arnsholt | Probably can't help you there. Only thing I really know about in that area is C#/Prolog integration =) | ||
| (And the answer is "just say no") | 13:04 | ||
| moritz | Coke: diakopter in #perl6 might know | ||
| Coke | moritz: oooh, good point. I will pounce on him when I see him. | 13:09 | |
| it is a nice change from hacking on CFMX, though. =-) | |||
| moritz | wtf is CFMX? | ||
| purl | CFMX is, like, cold fusion (the php-ish kind, not the nuc-u-lar kind) | ||
| moritz | ah | ||
|
13:10
JimmyZ joined,
whiteknight joined
|
|||
| mikehh | perlcritic fails on 17 files (out of 599) -all TODOs and/or XXXs | 13:12 | |
| all other tests PASS (pre/post-config, make corevm/make coretest, smoke (#34048), fulltest) at r46990 - Ubuntu 10.04 i386 (g++) | |||
| t/pmc/packfile.t - TODO passed: 34 in make coretest, smoke, testb, testf and testr | |||
| t/op/exit.t - TODO passed: 6 in testf | |||
| the TODO passes do not pass on amd64 | |||
|
13:13
davidfetter joined
|
|||
| bacek | Coke, can you check parrot-dev@ mail queue? My message about GCMassacre didn't hit (yet...) | 13:15 | |
|
13:15
khairul joined
|
|||
| Coke | I thought I saw it. | 13:15 | |
| yup, it's there. | |||
| bacek | Ah, good. | 13:16 | |
| hmm... It's not my inbox... | 13:17 | ||
|
13:22
atrodo joined
|
|||
| tewk | Working on a generational, compacting GC I've found that the following additional information useful: | 13:26 | |
| 1. alloc_atomic() or alloc_no_interior_pointers(), | |||
| 2. alloc_unmovable() - some things are not going to movable by the compactor, ie allocation shared with c libraries. | |||
| 3. knowing the type of an allocation and being able to tag the allocation with that type is very useful in tracing print outs, when debugging compaction. | |||
| bacek | tewk, (1) isn't quite useful in pure-parrot world. We have precise GC. ( Based on Boehm-in-parrot experience) | 13:33 | |
| (2) Usually done via pin/unpin in VM side | |||
| (3) Can you explain little bit more? | 13:34 | ||
|
13:38
gbacon joined
13:45
baest joined
|
|||
| whiteknight | bacek: our GC isn't really precise. We do still walk the stack | 13:48 | |
| In pure parrot, if we never recursed runloops we could make that problem go away | |||
| NotFound | Has someone thinked about all the problems we're going to have if moving a lot of basic stuff to dynops? | ||
| whiteknight | or, if we changed our coding practices to explicitly anchor PMCs created on the stack | 13:49 | |
| bacek | whiteknight, it is precise. trace_root check potential pointers to be PObj | ||
| whiteknight | bacek: but doesn't guarantee that those pointers are PObj, just that they "look like" valid pointers | 13:50 | |
| NotFound | whiteknight: anchor to what? | ||
| bacek | whiteknight, hmm... "look like" and "really allocated pointer" | 13:51 | |
| whiteknight | NotFound: to anything. It doesn't matter, so long as there is a single place that we can go to look for valid pointers | ||
| bacek: I'm sure there are few false positives, but it is possible to have false positives | |||
| bacek | whiteknight, yes. But our GC is not conservative | 13:52 | |
| NotFound | whiteknight: it matters, must be something able to be freed if exception handling unrolls the C stack. | ||
|
13:53
mikehh joined
|
|||
| whiteknight | NotFound: so imagine that it is whatever you need it to be for that application | 13:53 | |
| bacek | Anyway, it's almost Tomorrow already | ||
| night | |||
| NotFound | whiteknight: If I must track my allocations I hardly can qualify the system as "Garbage collected" | 13:54 | |
| whiteknight | NotFound: the only thing that I'm saying we would need explicit anchoring for are PMCs that are created on the C stack and not anchored anywhere else in the object graph | 13:55 | |
| it's a small subset of items | |||
| We could anchor them by creating extra space in the Parrot Context structure, and when we unwind the context the anchored items go with it. | 13:56 | ||
| like temporary registers | |||
| NotFound | The problem is that the context and the C stack are no directly related. | 13:58 | |
|
14:00
Andy joined
|
|||
| whiteknight | NotFound: true | 14:03 | |
| There are lots of problems | |||
| but one big problem is that PMCs on the C stack are not anchored, so we need to walk the stack | |||
| We can probably fix that through a combination of improved coding practices and adding in some kind of PMC registry where they can be manually managed | 14:04 | ||
| we have temporary PMCs now that are managed manually, so it's not a big stretch | |||
| NotFound | whiteknight: we have such registry, but the problem is exception safe unregistering. | ||
| whiteknight | The context and the C stack are not directly related, but at any given point the two can't just change independently | 14:05 | |
| in a single C function the parrot context is constant unless we explicitly change it | |||
| we know where changes to the C stack (function boundaries) and the Parrot context tree (context push/pop) occur, and we can code around it | 14:06 | ||
| NotFound | whiteknight: we don't know that, we use longjmp | ||
| whiteknight | and we know where we use longjmp | ||
| there are no surprises, we can trace the code visually with ease | |||
| If I create a PMC on the C stack, I know what it's expected lifetime will be and where it needs to be anchored | 14:07 | ||
|
14:07
ruoso_ joined
|
|||
| NotFound | whiteknight: good luck doing that. | 14:07 | |
| whiteknight | Like I said, there are very few outstanding cases | ||
| You can turn off stackwalking in Parrot and it will probably still build and might even pass all tests | 14:08 | ||
| it is not common, so it shouldn't be hard to kill the rest of the instances | |||
| NotFound | whiteknight: try it. | ||
| whiteknight | maybe I will | ||
| NotFound | Well, passing tests is probably easy, I've find lots of things to break parrot while passing all tests. | 14:09 | |
| whiteknight | I know Rakudo uses at least one unanchored PMC, it was causing problems for them in the past | ||
| NotFound: so we need more tests | |||
| NotFound | whiteknight: yes, I've added some tests for very basic features last week because of that type of things. | 14:10 | |
| whiteknight | I saw the unroll opcode, very nice | ||
| NotFound | But the point is that for GC related things passing tests is almos nothing. Most tests have a very short life. | ||
| whiteknight | true | 14:13 | |
|
14:13
jsut joined
|
|||
| whiteknight | but that doesn't change the point: there are very few unanchored PMCs we need to worry about on the C stack, it should be possible to eliminate them entirely | 14:14 | |
| replace them with temporary PMCs if they are only used on the C stack, or anchor them in the context, or register them, or whatever | 14:15 | ||
| NotFound | A mixed scheme may work: have some sort of registry in the context, but marking each item with his corresponding runloop. Then stack unrolling and runloop ending can look at it and clean the abandoned ones. | ||
| But it may be costly in execution time. | 14:16 | ||
|
14:36
snarkyboojum joined
|
|||
| pmichaud | darn, bacek++ left | 14:37 | |
| I have a question for parrot core designers | |||
|
14:37
Xaero joined
|
|||
| pmichaud | currently, the CallContext PMC allows us to use the get_attr_string interface to inspect attributes such as outer_ctx, caller_ctx, etc. | 14:38 | |
| any objections or concerns if I were to do a similar thing with the Sub PMC, so that we can inspect its attributes also? | |||
| NotFound | pmichaud: +1 for me | 14:40 | |
| pmichaud: or maybe will be better to add a generalized way to inspect all attributes, like the Default get_attr_string. | 14:43 | ||
| Thus avoiding reimplementting that functionality in a lot of PMC. | |||
| pmichaud | maybe, but I'm happy to copy the pattern from CallContext for now | ||
| someone can refactor it a bit later | 14:44 | ||
| NotFound | pmichaud: Have you tried to use unroll in nqp or rakudo? | 14:45 | |
| pmichaud | NotFound: not yet, but I may come up with an important use-case in nqp very soon. | ||
| is it in trunk now? | |||
| NotFound | pmichaud: yes, and in the release. | ||
| pmichaud | outstanding. NotFound++ | ||
| Yesterday I came across a place where I thought "unroll might work here", but had to get onto another tasks | 14:46 | ||
| NotFound | I'm using it in winxed without any problem, but winxed has no HLL maps and I have very few uses of vtable overrides. | 14:47 | |
| So the problematic points aren't well tested. | 14:48 | ||
| Tested in reality, I mean. Simple tests works. | |||
|
14:53
bubaflub joined
14:56
ash_ joined
15:07
dmalcolm joined
|
|||
| Coke | pmichaud: seems reasonable to me. | 15:09 | |
| pmichaud | I waffle a bit, though, because Sub PMC has a lot of older-style get_* methods defined on it | ||
| e.g. METHOD get_outer(); METHOD get_namespace(), etc. | 15:10 | ||
| anyway, I think I'll work around the problem for now. | |||
| Coke | adding another get_foo that pokes at an attribute is probably the easiest thing to do. | 15:11 | |
| but if you need the change, let us know (or go ahead and slap an experimental method in) | 15:12 | ||
| Coke notes that plobsings name is an anagram for "peering lobster" | 15:14 | ||
|
15:14
IllvilJa joined
|
|||
| Coke | or "peeing lobster", depending. ;P | 15:14 | |
| whiteknight | pmichaud: I would suggest that we deprecate all those methods and use the introspection interface for all these things | 15:16 | |
| pmichaud | whiteknight: there's also the question of "which introspection interface" :-P | 15:17 | |
| because we also have the 'inspect' opcode | |||
| Coke | the problem I have with that is that we then have to pass in a string arg to get info back. | ||
| the inspect opcode is a mess. | |||
|
15:17
Xaero left
|
|||
| moritz | and "will we have this in place in the June release?" | 15:17 | |
| Coke | moritz: is star targeting the dev release of June or the stable release of may? | 15:18 | |
| pmichaud | I don't have too much of an issue with using a string arg. It's still likely less overhead than the method call :-) | ||
| whiteknight | I can never keep straight in my head what inspect and inspect_str are supposed to do | ||
| pmichaud | release of June | ||
| Coke | pmichaud: ... an excellent point. | ||
| whiteknight: last time I asked, I think it was "pmc's choice" | 15:19 | ||
| whiteknight | damnit | ||
| Coke | that we basically didn't have an api. ask, if you get it, great, if not, meh. | ||
| pmichaud | we've added some things to Parrot since May that are needed to run (e.g., regex interpolation support) | ||
| whiteknight | I think, at least for core pmcs, that it should become a lot more regular | ||
| Coke | I could be miscasting the memory. | ||
| pmichaud | also, Parrot doesn't have "stable releases" :-P | ||
| and May wasn't one anyway. | |||
.oO( A "stable release" is when you open the barn door and let all of the horses out ) |
15:20 | ||
| Coke | I know it's supported, but I pretty much /always/ type stable instead. :P | ||
| (and I'm the one that fixed up the website. :P) | 15:21 | ||
| pmichaud | anyway, we'll have to go after the June release | ||
| Coke | keep calling me on it, It'll correct eventually. =-) | ||
| pmichaud | otherwise no REPL and no regex interpolation | ||
| +1 to consistent inspection interfaces | |||
| Coke | pmichaud: WFM. those are big wins. | ||
| dalek | p-rx: c69f6f6 | pmichaud++ | src/Regex/Cursor.pir: Avoid "Cannot take substr outside of string" exceptions on interpolated literal |
15:26 | |
| purl | matches are a classic way to remove fart smells | ||
| p-rx: 64ff6a1 | pmichaud++ | src/stage0/ (4 files): Update bootstrap. |
|||
| whiteknight | purl forget maches | 15:33 | |
| purl | whiteknight, I didn't have anything matching maches | ||
| whiteknight | purl forget matches. | ||
| purl | whiteknight: I forgot matches | ||
| whiteknight | damn straight you did | ||
| Parrot_sprintf_format should probably be rewritten to take advantage of StringBuilder | 15:36 | ||
|
15:40
davidfetter joined
|
|||
| Coke | ... "once upon a time %P existed, but we still need to support the old form" ... ORLY? | 15:41 | |
| dalek | rrot: r46991 | pmichaud++ | trunk/ext/nqp-rx/src/stage0 (4 files): [nqp-rx]: Update bootstrap with fixes for substr-beyond-end-of-string. |
15:45 | |
|
15:56
hercynium joined
|
|||
| dalek | kudo: d034418 | pmichaud++ | (8 files): Revert "Regex Interpolation" |
16:12 | |
| kudo: 3362b1a | pmichaud++ | src/Perl6/ (2 files): Refactor <codeblock>-related assertions. |
|||
| kudo: f9a12d2 | pmichaud++ | src/Perl6/ (2 files): Add variable assertions. |
|||
| kudo: a48d4df | pmichaud++ | build/PARROT_REVISION: Bump PARROT_REVISION to get nqp's "does invokable" fixes. |
|||
| kudo: 263a905 | pmichaud++ | (4 files): Interpolate bare variables; refactor regex interpolation to !MAKE_REGEX. |
|||
| kudo: ccc1a9c | pmichaud++ | src/Perl6/Grammar.pm: Don't treat $0, $1, etc. as normal variable interpolations. |
|||
| kudo: 6f55b57 | pmichaud++ | src/glue/regex.pir: Rakudo arrays don't pir::does('array'), so use Rakudo's normal list mechanisms |
|||
| kudo: 52a1375 | pmichaud++ | build/PARROT_REVISION: Bump PARROT_REVISION to get latest regex interpolation fixes. |
|||
|
16:12
parthm joined
16:18
Mokurai joined
16:20
simcop238 joined
16:25
parthm left,
clinton joined
16:26
patspam joined
16:28
theory joined
|
|||
| dalek | rrot: r46992 | NotFound++ | trunk/src/pmc/exception.pmc: [cage] unify common parts of set/get attrs in Exception PMC |
16:35 | |
|
16:53
cotto_work joined
16:55
snarkyboojum joined
17:06
ruoso_ joined
|
|||
| cotto_work | good day, parrots | 17:08 | |
|
17:08
ash__ joined
|
|||
| moritz chirps | 17:14 | ||
| sri cooks moritz | 17:16 | ||
| moritz escapes the cooking pot and chirps louder than before | 17:17 | ||
| cotto_work | google-opensource.blogspot.com/2010...oding.html - alright all you slacker students, let's see some code. | 17:34 | |
|
17:34
plobsing_work joined
|
|||
| whiteknight | yay! | 17:35 | |
|
17:54
chromatic joined
|
|||
| atrodo | How do I convert a Parrot_String into a c-string when I'm embedding parrot? | 18:18 | |
| chromatic | Parrot_string_to_cstring | ||
| atrodo | Parrot_str_to_cstring is in parrot/string_funcs.h, is that okay to be including from an embedded app? | 18:22 | |
|
18:22
gbacon joined
|
|||
| chromatic | The function yes. We need to move its declaration, or at least include a similar declaration in the proper header file. | 18:24 | |
| atrodo | Okay. I'll include it for now. Thanks. | ||
|
18:24
tcurtis joined
|
|||
| whiteknight | we really do need to go through the embedding API at some point with a fine-toothed comb | 18:29 | |
| bubaflub | whiteknight: should we open a ticket or a wiki page to track such things? | 18:30 | |
| whiteknight | yes, that would be an excellent idea | ||
| bubaflub | perhaps a wiki-task list would be best suited as it doesn't seem like a one off kind of fix | 18:31 | |
| (nor would we need tests to close the ticket) | |||
| Chandon | What's an event? | ||
| purl | hmmm... an event is triggered by a fifo call from another process which sends 0 or 1 | ||
| bubaflub | atrodo: since you're in the embedding guts, could you make a wiki page to track areas where the API could be improved? looks like ticket #1636 already has one example. | 18:35 | |
| atrodo | bubaflub> I can do what I can | 18:36 | |
| errr, I can try to do what I can | 18:37 | ||
| bubaflub | tautology! | ||
| purl | tautology is something that is tautological or inherently true, given the laws of identity and non-contradiction. or phx = pdx or "this wikipedia entry is INSANE!" | ||
| bubaflub | atrodo++ | ||
| Andy | Wow, all the Ops::* stuff disappearing | 18:38 | |
|
18:40
hercynium joined
|
|||
| NotFound | The way to improve the API is easy: create it X-) | 18:41 | |
| We don't even have PARROT_API defined. | |||
| whiteknight | Chandon: what do you mean? Where do you see "Event"? | 18:43 | |
| purl forget event | |||
| purl | whiteknight: I forgot event | ||
| Chandon | whiteknight: I'm in src/runcores/main.c looking at Parrot_setup_event_func_ptrs. I see stuff being added to the ops table, which is boring, but "event" sounds interesting. | 18:44 | |
| whiteknight | Chandon: oh. I think "event" there is sort of a general name for objects that the scheduler manages (Tasks, Timers, Threads, etc) | 18:45 | |
|
18:45
smash_ joined
|
|||
| Chandon | whiteknight: What does "Task" mean right now? | 18:45 | |
| smash_ | hello everyone | 18:46 | |
| atrodo | Looks like "Parrot_compile_string" doesn't do what I think it does | ||
| whiteknight | Chandon: Check out src/pmc/task.pmc | 18:47 | |
| Chandon: I can't remember if Task is it's own thing, or if it's the abstract parent type of Timer/Thread | |||
| I think it represents a bit of execution which happens separately from the main control flow but not necessarily in it's own thrad | 18:48 | ||
| thread | |||
| Chandon | That would be nice, depending on how much it does. | 18:49 | |
|
18:51
davidfetter joined
|
|||
| Coke | atrodo: what do you think it does? | 18:52 | |
| atrodo | Coke> I was expecting/hoping that i could specify a HLL name as the compiler | 18:53 | |
|
18:54
clinton joined
|
|||
| NotFound | atrodo: it only allows pir or pasm. | 18:55 | |
| Coke | I would recommend starting with some PIR and then backtracking that to C if you need it. | ||
| you want $P0 = compreg 'Tcl'; $P1 = $P0.'compile'("puts hi"); $P1(), or something more like that. | 18:56 | ||
| atrodo | Yep, that's what I want. I have strings of HLL code that I want to execute | 18:57 | |
| I was hoping I didn't have to do the PIR dance to make that happen | 18:58 | ||
| Coke | you can do it in C. | 18:59 | |
| that will point you at the right C. | |||
| anyone want cheap karma? rerun tools/dev/faces.pl and update trac.parrot.org/parrot/wiki/ParrotFaces | 19:00 | ||
| atrodo | Coke> I don't follow. I blame my parrot newbie status | 19:01 | |
| Are there c equivalant calls that I can make to do that? | 19:02 | ||
| Coke | atrodo: yes. the opcodes are just written in C. | 19:03 | |
| for example, compreg is just: | |||
| PMC * const compreg_hash = VTABLE_get_pmc_keyed_int(interp, | |||
| interp->iglobals, IGLOBALS_COMPREG_HASH); | |||
| $1 = VTABLE_get_pmc_keyed_str(interp, compreg_hash, $2); | |||
| which gets the global COMPREG hash, then queries it for the PMC for the HLL you're after. | 19:04 | ||
| (where $1 is the first arg to the opcode, etc.) | |||
| so $P0 = compreg 'Tcl' is really compreg $P0, 'Tcl', so $P0 is set to the result of that lookup. | |||
|
19:05
smash joined
|
|||
| Coke | ops are defined in src/ops/*.ops | 19:05 | |
| atrodo | Ah, now I understand. Coke++ | ||
| Coke | g'luck. | ||
|
19:11
khairul joined
|
|||
| dalek | rrot: r46993 | Util++ | trunk/t/op/inf_nan.t: [t] TT #1302 - Changed todo() to skip() for tests that must currently remain commented out - patch by bubaflub++ |
19:23 | |
|
19:24
clinton joined
|
|||
| dukeleto | tcurtis++ # nice #ps report | 19:30 | |
| moritz | chromatic: ping | 19:31 | |
| chromatic | pong | ||
| moritz | chromatic: regarding the Perl 6 book... do we have a deadline? :/ | 19:32 | |
| chromatic | June 7, to get printed copies to YAPC::NA. | ||
| moritz | that's tough | 19:33 | |
| chromatic | We can use PDFs there though; that's workable. | ||
| Yeah. | |||
| moritz | speaking of PDFs... did you see my pull request on github for the latex converter? | ||
| chromatic | I did, it looked sane. | 19:34 | |
| dalek | rrot: r46994 | tcurtis++ | branches/gsoc_past_optimization (4 files): Add pastcompare.pir for testing the produced PASTs and update Also fix a bug in PAST::Transformer regarding deleting nodes. |
19:40 | |
| rrot: r46995 | NotFound++ | trunk/src/pmc/exception.pmc: more cleaning of Exception PMC, and provide a way to get birthtime attribute TT #1455 |
|||
|
19:41
lucian_ joined
19:48
joeri joined
19:49
allison joined
|
|||
| dukeleto | allison: hello | 19:51 | |
| dalek | kudo: baebe1f | moritz++ | (2 files): make Hash.delete($one_item) return that item (and not a list of items) Also adds three more test files (of which two are unrelated) |
19:52 | |
| allison | dukeleto: hi | ||
| dukeleto | allison: any clue about trac.parrot.org/parrot/ticket/1656 ? | 19:57 | |
| dalek | TT #1656 created by dukeleto++: Embed API cannot find core PBC or PIR files | 19:58 | |
| TT #1656: trac.parrot.org/parrot/ticket/1656 | |||
| NotFound | dukeleto: see my comment | 20:01 | |
| dukeleto | NotFound: thanks. i was following the docs in embed.pod . i will update those | 20:04 | |
| NotFound: is there a way to get the parrot_config obj file info from pkg-config ? | 20:05 | ||
| NotFound | dukeleto: examples/embed/Makefile is the best way I've found. | 20:06 | |
| allison | dukeleto: looking | 20:07 | |
| dukeleto | allison: i think NotFound has given me the info I need. docs/embed.pod needs to be updated with what he told me, which I will do | 20:08 | |
| NotFound | allison: please take a look at notfound.posterous.com/the-unroll-opcode | 20:09 | |
| allison | NotFound: ok | ||
| mikehh | #ps in 20 | 20:10 | |
| allison | NotFound: in general it sounds like something we've been talking about for a while for exceptions | 20:12 | |
| NotFound | allison: yes, we discussed that approach several times. | 20:13 | |
| allison | NotFound: I'd be concerned about making it any more general-purpose than that, though, since the runloops will completely change with Lorito | ||
| NotFound: in theory, you won't even have inferior runloops at that point | |||
| NotFound: so, maybe a name that makes it clear that the feature is related to exceptions? like handle_eh | 20:14 | ||
| (though, I hate the _eh suffix) | |||
| NotFound | allison: the opcode semantic can be easily without affecting his usage, or even mae it a noop while deprecating. In the meantime, it allows things to work more reliably. | ||
| Coke | NotFound: should your blog be on the parrot planet? | ||
| NotFound | allison: pmichaud said that maybe he can use this approach for some problem with continuations, so I use a non eh related name to keep the door open. | 20:15 | |
| allison | NotFound: aye, I'm just saying we should name the opcode by it's purpose, not by one coincidental side effect of it's purpose | ||
| NotFound | Coke: I looked for a way to get a posterous rss liimited to things marked with some tag, but failed. | 20:16 | |
| And I post a lot of foolsihness that don't fit well in parrot planet. | 20:17 | ||
| Coke | NotFound: k | ||
| Chandon | darbelo: What breaks if someone tries to DOS a shared grapheme table and inserts a million entries? | 20:21 | |
| NotFound | allison: I'm not sure what purpose pmichaud had in my mind, I'll ask him and try to find a better name. | ||
| allison | NotFound: sounds good. It may be just a temporary hack that goes away when inferior runloops go away. hard to tell without the details | 20:22 | |
| darbelo | Chandon: The grapheme table has a max size. If it's full (In the global case) You can't recode strings into NFG that need a character not on the table. | 20:23 | |
| NotFound | allison: not sure about that, even with lorito if we allow to reenter parrot from native code and don't limit exceptions propagation we'll have the same problem, even if a lot less frequent, | 20:24 | |
| darbelo | There are potentially infinite graphemes. And we have to put them into a finite space, if we let one guy gobble all the space, we are screwing over all of the others.. | 20:25 | |
| That reminds me... | |||
| allison: did you get a chance to look at the ucs4_encoding branch? | |||
| allison | darbelo: I just saw your message 5 minutes ago, will take a look | 20:26 | |
| GeJ | Good morning everyone. | ||
| bacek | Good morning, humans. | 20:27 | |
| bacek is trying to wake up... | |||
| cotto_work | hi, southern hemisphere dwellers | ||
| Coke asks his irssi tech support how to get to a window > 9 with ESC. =-) | |||
| PerlJam | esc-0 == window 10 | 20:28 | |
| esc-q == window 11 | |||
| pmichaud | I always just use alt+letter | ||
| so, alt+w gets me to window 'w' | |||
| (after using 0-9, my irssi continues with 'q', 'w', 'e', 'r', etc. | |||
| Coke | what is window 'w' ? | ||
| ah. | |||
| PerlJam | esc-X is the same as alt-X (for some X) on my system. | ||
| cotto_work | #ps in 1 | 20:29 | |
| chromatic | Last call for #ps reports | ||
| darbelo | allison: Not a problem, it's just what the name says it is :). But since it's useful for parrot independetly of NFG I figured I would give it's own branch so it can be merged independently. | ||
| Tene | I have an irssi module that shows windows with activity in the status bar, identified by their hotkey letter. | 20:30 | |
| I think I bound even more hotkeys than were set by default, but I don't use so many channels anymore. | |||
| particle | i wonder if that detects dvorak. | ||
| allison | darbelo: yes, that makes a great deal of sense | ||
| Tene | Coke: "/bind" will show you the full set of your hotkeys. | ||
| adv_windowlist is the script I use, but I remember that I needed to configure it a little bit. | 20:31 | ||
| dalek | TT #1656 closed by dukeleto++: Embed API cannot find core PBC or PIR files | ||
| TT #1656: trac.parrot.org/parrot/ticket/1656 | |||
| darbelo | Right now I can merge that to trunk and rebranch for NFG, or make a fresh branch and just pull us4 there, so it's not a blocker. But I'd like to get it merged into trunk. | 20:32 | |
| NotFound | darbelo: merge it and mark as experimental, to be on the safe side. | 20:39 | |
| Util | does NQP have some form of s/// (regex substitution)? | 20:40 | |
| pmichaud | Util: $val.subst( /pat/, 'repl' ) | ||
| darbelo | NotFound++ # I hadn't thought of that. | ||
| Util | pmichaud: thanks | ||
| pmichaud | or $val.subst( /pat/, 'repl', :global ) | 20:41 | |
| darbelo | It's self-contained enough that it won't break anything that doesn't use it explicitly. | 20:42 | |
| dalek | kudo: 2404007 | pmichaud++ | (2 files): Add /&var/ and /<&var>/ regex interpolation syntax, and enable tests. |
||
| NotFound | darbelo: yes, I think so, so experimental is the appropiate way. | ||
| bacek | pmichaud, nopaste.snit.ch/20620 - nqp-rx bug. | 20:44 | |
| pmichaud | bacek: I'd need to see the grammar being used to parse | 20:45 | |
| bacek | pmichaud, github.com/bacek/pir/src/PIR/Compi...Grammar.pm | 20:46 | |
| NotFound | pmichaud: have you read the 'unroll' name discussion a few lines up? | ||
| sorear | After about 5 hours, gcc 159808 has failed to compile | 20:47 | |
| Who here was it who was playing with Parrot on gcc 4.6? | |||
| bacek | pmichaud, github.com/bacek/pir/blob/master/sr...Grammar.pm actually | ||
| sorear | What is a working (SVN rev, configure options) tuple? | ||
| dalek | rrot: r46996 | mikehh++ | trunk/src/pmc/exception.pmc: fix codetest failure - tabs in leading whitespace |
||
| bacek | sorear, Andy | ||
| Andy | ? | ||
| sorear | It fails at the very end with a stage2/stage3 comparison error | ||
| pmichaud | bacek: I'm guessing it has something to do with hash ordering in a protoregex table somewhere. | ||
| sorear | 159808, --enable-gold=both --enable-lto --program-suffix=-snapshot-159808 --disable-werror | ||
| bacek | Andy, did you try gcc 4.6? | ||
| Andy | on what? | ||
| sorear | i386 | ||
| bacek | pmichaud, yes. I suspect this one too. But replacing Hash with OrderedHash in proto-regexes brake NQP | 20:49 | |
| pmichaud | well, hash ordering shouldn't really matter | ||
| Andy | Just in general? Yes, I'm using GCC 4.6 | ||
| pmichaud | you might try parsing with <?DEBUG> somewhere in your grammar | ||
| sorear | Andy: what rev and how did you configure it? | 20:50 | |
| Andy | sorear: Are you having problems building it? | ||
| bacek | pmichaud, any examples how to use it? | ||
| Andy | Where is this going? | ||
| sorear | Andy: yes | ||
| bacek | pmichaud, or just put into rule? | ||
| sorear | I tried 159808. FTBFS. | 20:51 | |
| pmichaud | bacek: it turns on regex tracing for that rule (and any subrules it invokes) | ||
| Andy | gcc-4.6-20100515.tar.bz2 | ||
| pmichaud | for such a short source program, you could just add it to the beginning of TOP | ||
| Andy | ./configure \\ | ||
| --prefix=/var/gcc46 \\ | |||
| --enable-languages=c,c++ \\ | |||
| that's all I have | |||
| bacek | pmichaud, ok, thanks. I'll try it after #ps. | ||
| sorear | Andy: thank you, I'll try that | ||
|
20:52
Andy left
|
|||
| Coke | (hash ordering shouldn't matter) I had issues with that in partcl-nqp, (still do) which is why the hash seed stuff was added. ISTR alternations were stored in a hash, so without LTM, you didn't always match the same thing first. | 20:52 | |
|
20:52
Andy joined
|
|||
| bacek | pmichaud, what about nqp multis? (And I already want traits parsing :) | 20:53 | |
| sorear wonders why a SVN checkout of gcc is >1GB | |||
| pmichaud | bacek: it's on my queue | ||
| bacek: unfortunately, there's a fair bit on my queue :) | 20:54 | ||
| bacek | pmichaud, I suspect it :) | ||
| pmichaud | bacek: but I'm working through the queue relatively more quickly these days | ||
| bacek | pmichaud, I did notice dalek's reports :) | ||
| Andy | i'm now gonna try on 0522, macek | ||
| bacek | |||
| or sorear. I don't even remmeber. | |||
| sorear: Because it's an SVN checkout. Grab a tarblall. | 20:55 | ||
| allison | cotto: from LoritoRoadmap, didn't the opsc part just go into trunk? | 20:57 | |
| Andy | sorear: what are you trying to build on? | 20:58 | |
| bacek | allison, yes, it did. | ||
| sorear | Andy: i386 | ||
| Coke | allison: crossed it out. | 21:00 | |
| Andy | Linux? | 21:01 | |
| purl | Linux is, like, linux is linux by another name. or 80% of the world's top 500 super computers right now and the number one embedded system broadcast.oreilly.com/2008/10/how-l...evice.html | ||
| sorear | Andy: yes | ||
| 2.6.30 | |||
| Coke | particle: Just because parrot is compiled with C89 doesn't mean that third party libraries are, neh? | ||
| dalek | tracwiki: v5 | coke++ | LoritoRoadmap | 21:05 | |
| tracwiki: cross out stuff that's done! | |||
| tracwiki: trac.parrot.org/parrot/wiki/LoritoR...ction=diff | |||
| sorear wonders if leaving out --enable-lto means no -flto at runtime or no -flto while building gcc | 21:11 | ||
| NotFound | allison: handle? I'm not native english but that sounds more like "start handling now" than "done with handling" to me. | 21:17 | |
| dukeleto | sorear: O(log log n) is pretty sexy, whatever you are doing | 21:18 | |
| chromatic | I agree with NotFound. | ||
| NotFound | handled, maybe? | 21:19 | |
| allison | NotFound: 'catch' is a popular word, but also too early in the processing | ||
| it wants a "mark as handled" meaning | |||
| dukeleto | delegated? | ||
| purl | delegated is with more Es | ||
| mikehh | NotFound: backtrack, go_back? | 21:20 | |
| Coke | purl, forget delegated | ||
| purl | Coke: I forgot delegated | ||
| mikehh | NotFound: restore? | ||
| purl | somebody said restore was the word I think I used in jonathan's comment ;-) | ||
|
21:21
iblechbot joined
|
|||
| NotFound | "handled" looks like a good shortening of "mark as handled" to me. | 21:21 | |
| bacek | "exception_done"? | ||
| mikehh | "reinstate" | ||
| darbelo | RETI | ||
| NotFound | "42" | ||
| allison | NotFound: it does make sense as a method exception.'handled'() | 21:22 | |
| NotFound | allison: using a method is complicated, needs a way to get the next opcode position. | 21:23 | |
| allison | NotFound: aye, expensive | 21:24 | |
| NotFound: but we often name opcodes by the corresponding method name | |||
| add_method | |||
| purl | somebody said add_method was *everywhere*,... it is what makes Moose run | ||
| allison | etc | ||
| maybe 'set_handled' | 21:25 | ||
| NotFound | A bit longer, but more clear. | ||
| mikehh | how about cleared | 21:26 | |
| NotFound | Too generic. | 21:28 | |
| pmichaud | 'handled' was what I originally suggested, I think. | ||
| NotFound | pmichaud: that fits what you said the other day about a possible usage with continuations? | 21:29 | |
| allison | NotFound: take a page from Java and call it do_finally | ||
| (blech) | |||
| chromatic | I'd like the name to reflect that it's a return from runloop. | ||
| At least choose some form of a verb. | 21:30 | ||
| darbelo | finish? | ||
| purl | finish is in the loop containing the my? | ||
| NotFound | Sounds good to me. | 21:31 | |
| pmichaud | NotFound: (usage with continuations) -- yes, nqp regexes may want some form of cheap Coroutine | ||
| Coke | finish seems far too generic for me, but I'm just bikeshedding. | ||
| darbelo | Only verb I could think of. | 21:32 | |
| particle | finalize | ||
| purl | rumour has it finalize is not enough | ||
| particle agrees | |||
| NotFound | finalize goes well with the well know "finally". | 21:33 | |
| cotto_work | How do people feel about moving #ps 30m earlier? | 21:35 | |
| NotFound | cotto_work: no problem for me. | ||
| chromatic | Fine with me. | ||
| Util | cotto_work: no problem | ||
| mikehh | ok by me | ||
| cotto_work | bacek: ^ | ||
| Coke | didn't we just move it 60m later? | 21:36 | |
| particle | cotto_work: ask the mailing list, like we did last time | ||
| atrodo | Coke> I've looked more into translating the HLL pir snipplet into C, and the C code appears to "pull back the veil" a lot more than I should be allowed to | ||
| cotto_work | particle, sure. I was just getting an idea of what people thought. | 21:37 | |
| Coke | (that said, 30m sooner is better for me) | ||
| particle | context++ | ||
| NotFound | Well, if no one opposes or proposes a better idea, I'll rename it to "finalize" tomorrow. | 21:38 | |
| chromatic | The only thing I like better is finish_handler | ||
| NotFound | A bit too long to my taste. | ||
| particle | how about fish_handler? | 21:39 | |
| NotFound | I'm used to Z80 2 or 3 letters assembler mnemonics X-) | ||
| chromatic | I know it's long, but that's the shortest I can think of that's clear. | 21:40 | |
| particle | exception.'X-)'() | ||
| mikehh | cotto_work: that would make it 6am for bacek | 21:41 | |
| NotFound | halt_handler_and_catch_fire | ||
| cotto_work | Yeah. That's my biggest concern. | ||
| NotFound | I'm sleepy, will let the decision for tomorrow. | ||
| bacek doesn't exists at 6am... | 21:52 | ||
| chromatic | They have a 6 in the morning now? | 21:53 | |
| dalek | rrot: r46997 | darbelo++ | branches/ucs4_encoding (22 files): More updates from trunk. |
21:54 | |
|
21:55
davidfetter joined
|
|||
| mikehh | chromatic: nah - that's pure fantasy | 21:55 | |
| can approach it from either side but to get there... | 21:57 | ||
|
21:59
davidfetter joined
22:05
whiteknight joined
|
|||
| cotto_work | clock? | 22:05 | |
| purl | cotto_work: LAX: Tue 3:05pm PDT / CHI: Tue 5:05pm CDT / NYC: Tue 6:05pm EDT / LON: Tue 11:05pm BST / BER: Wed 12:05am CEST / IND: Wed 3:35am IST / TOK: Wed 7:05am JST / SYD: Wed 8:05am EST / | ||
| darbelo | Merge time! | 22:09 | |
| If svn-- cooperates... | 22:10 | ||
| cotto_work | as if | ||
| dalek | tracwiki: v6 | allison++ | LoritoRoadmap | 22:12 | |
| tracwiki: trac.parrot.org/parrot/wiki/LoritoR...ction=diff | |||
| darbelo | It's only being slow as molassses right now... | ||
| cotto_work | what's allison's middle name? | 22:13 | |
| mikehh | perlcritic fails on 17 files (out of 599) - all Flag comment TODO and/or XXX | ||
| all other tests PASS (pre/post-config, make corevm/make coretest, smoke (#34052), fulltest) at r46997 - Ubuntu 10.04 amd64 (g++) | |||
| allison | cotto: naida | ||
| chromatic | Sort of. | 22:14 | |
| allison | cotto: actually, it's my first name, but I reversed them | ||
| cotto: one of those weird southern things, calling your children by their second name :) | |||
| cotto_work | I've toyed with going by my middle name of "Paolo" but I can't do a good fake Italian accent. | 22:15 | |
| allison | :) | ||
| dukeleto ponders adding the suffix, "House Atreides" legally to his name | 22:17 | ||
| davidfetter | heh | ||
| darbelo lacks a middle name. | 22:19 | ||
| davidfetter has a middle name | |||
| but it's too long to include in an irc nick | |||
| allison | darbelo: you could invent one | ||
| davidfetter | darbelo, oh, now that i've got you here, do you have a head shot i can use to credit you in tonight's talk? | 22:20 | |
| darbelo | Not really. My head hasn't beenshot in recent years ;) | ||
| cotto_work is curious too | 22:21 | ||
| davidfetter | i meant an image :P | ||
| darbelo | I made a note to get some pictures scanned when dukeleto first mentioned it, but then forgot about it. | 22:22 | |
| davidfetter | do you have some now? | 22:23 | |
| cotto_work | www.google.com/images?hl=en&q=d...amp;tab=wi <- any of those? | ||
| darbelo | cotto_work: Nope. But one of the pictures there looks a lot like a former cow-orker. | 22:26 | |
| whiteknight | BOOM HEADSHOT N00B | 22:27 | |
|
22:27
spinclad joined
|
|||
| cotto_work | You should be rolling in money by now from GSoC. Go get a camera. ;) | 22:28 | |
| davidfetter | it's all about the washingtons :P | 22:30 | |
|
22:35
bubaflub joined
|
|||
| darbelo | svn-- | 22:45 | |
| tcurtis | cotto_work: our payment cards were delayed a week. | 22:46 | |
| Chandon | In a .pmc file, given a stack-allocated char*, how do I make a STRING*? | 22:47 | |
| darbelo | Oh. Right. That's my excuse. | ||
| Chandon: Parrot_str_new()? | |||
| sorear | Chandon: I don't think you can, not very robustly anyway | ||
| blizkost uses Parrot_str_new | 22:48 | ||
| but that's latin-1 only and it breaks on embedded nuls | |||
| Chandon | Somehow I didn't see Parrot_string_new. Thanks. | ||
| I'm looking at Parrot_string_new_init and wondering where I'm going to get the UNICORN_ON_THE_MOON* for its third argument. | 22:49 | ||
| ttbot | Parrot trunk/ r46998 MSWin32-x86-multi-thread make error tt.taptinder.org/file/cmdout/326566.txt ( tt.taptinder.org//buildstatus/pr-Pa.../rp-trunk/ ) | 22:50 | |
| dalek | rrot: r46998 | darbelo++ | trunk (6 files): Manually merge ucs4_encoding to trunk. |
||
| darbelo | PARROT_DEFAULT_UNICORN | 22:55 | |
| cotto_work | Sneak that in with a merge and nobody will notice. | 22:56 | |
| Chandon | Error, in Parrot_string_new_init at xx.pmc line 3257, supplied unicorn is not on the moon. | 22:57 | |
| cotto_work | That XX PMC is totally useless. | 22:58 | |
|
22:59
Psyche^ joined
|
|||
| cotto_work | Does PyPy use something like Lorito internally? | 23:06 | |
|
23:06
snarkyboojum joined
23:07
lucian joined
|
|||
| dalek | rrot: r46999 | darbelo++ | trunk (2 files): Correct mis-merge on include/parrot/encoding.h |
23:07 | |
| chromatic | I don't think so. | 23:14 | |
| cotto_work | I guess the alternative would be to build an ast from rpython and operate on that. | ||
|
23:26
Andy joined
23:30
whiteknight joined
|
|||
| cotto_work | It's nice to have something like PyPy that we can steal and/or learn from. | 23:38 | |
| bacek_at_work | Start with speed.pypy.org | 23:39 | |
| cotto_work | I reiterate that we need to steal that site. | 23:41 | |
| codespeak.net/pypy/trunk/pypy/doc/t...ation.html looks instructive | 23:42 | ||
| dalek | TT #1657 created by dukeleto++: Make it so that Parrot on RTEMS does not call the system exit() | 23:58 | |
| TT #1657: trac.parrot.org/parrot/ticket/1657 | |||