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