|
#parrot Parrot 2.1.1 Released! | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Tasks: PCC deprecations hackathon on Saturday, TT #389 branch Set by moderator on 5 March 2010. |
|||
| shockwave | Have a good weekend guys (and gals). | 00:00 | |
| Peace! | |||
|
00:00
shockwave left
|
|||
| dalek | rrot: r44666 | bacek++ | branches/ops_pct/compilers/opsc/t/04-op.t: Remove outdated test |
00:06 | |
| rrot: r44667 | bacek++ | branches/ops_pct/compilers/opsc (6 files): Add skeleton for emitter. |
|||
| rrot: r44668 | bacek++ | branches/ops_pct/compilers/opsc/t/06-emitter.t: Add test for Emitter. |
|||
| rrot: r44669 | bacek++ | branches/ops_pct/compilers/opsc (3 files): Start c header emitting |
|||
| rrot: r44670 | bacek++ | branches/ops_pct/compilers/opsc (2 files): Emit preamble |
|||
|
00:07
tetragon joined
00:11
snarkyboojum joined
00:14
snarkyboojum joined
00:38
payload joined
00:58
parthm joined
01:22
Whiteknight joined
|
|||
| Whiteknight | barely able to get online tonigh | 01:26 | |
| (wireless routers)-- | |||
| isn't there just a "-Wall" option we can use instead of specifying every single individual warning by name? | 01:30 | ||
|
01:32
bacek joined
01:35
rblackwe left
|
|||
| Whiteknight | holy crap the build is moving quick tonight | 01:35 | |
| kid51 | Whiteknight: Whenever I see that option, I think: "Compile this with everything Larry recommends" :-) | 01:38 | |
| GeJ | Good morning everyone. | ||
| Whiteknight | kid51: We obviously want a very strict, tight build. It seems like we should just enable all warnings instead of just enabling most of them | ||
| GeJ | kid51: seconded. | ||
| Whiteknight | hello GeJ | ||
|
01:39
rblackwe joined
|
|||
| GeJ | Hello Andrew, James. | 01:39 | |
|
01:39
bubaflub joined
|
|||
| kid51 | Coke probably knows a *lot* about those warnings, having waded thru that branch. | 01:40 | |
| And, of course, AndyD will have an expert opinion. | |||
| bacek | aloha | ||
| seen cotto | |||
| purl | cotto was last seen on #parrot 1 days, 17 hours, 17 minutes and 28 seconds ago, saying: chromatic, would it be worthwhile to rip them out? [Mar 4 08:23:18 2010] | ||
| bacek | seen cotto_work | ||
| purl | cotto_work was last seen on #parrot 4 hours, 1 minutes and 49 seconds ago, saying: moving tiem | ||
| GeJ | G'Day bacek. | 01:41 | |
| plobsing | bacek: any words of advice on TT #1499? | 01:42 | |
| bacek | plobsing, shenanigans... | ||
| G'Day GeJ | |||
| plobsing, I wasn't able to trace it down... | |||
| Whiteknight | every time I see fill_params, I cry a little on the inside | 01:44 | |
| I know it's all necessary, and I know it's not bad code, but still. It's huge | |||
| Coke | Whiteknight: -Wall isn't really all | 01:45 | |
| it's just "a lot". | |||
| also, as chromatic has pointed out, -Wall doesn't mean the same warnings every release. | |||
| Whiteknight | Coke: do we enable more warnings than that?' | ||
| Coke | Whiteknight: yes. | ||
| Whiteknight | ah, okay then | ||
| I rescind my critique | 01:46 | ||
| Parrot_pcc_fill_returns_from_* is going to be a lot of work to redo, and fill_returns() is going to require big effort | 01:47 | ||
| actually, I take it back. The only places that really appear to be using those functions still in the branch are the nci thunks | 01:49 | ||
| dalek | kudo: 974d9a8 | (Solomon Foster)++ | t/spectest.data: Turn on S14-roles/basic.t. |
||
| rrot: r44671 | bacek++ | branches/ops_pct/compilers/opsc (2 files): Properly store Ops::Op.arg_types. |
01:52 | ||
| rrot: r44672 | bacek++ | branches/ops_pct/compilers/opsc (2 files): Add test for Ops::Op.full_name |
|||
| rrot: r44673 | bacek++ | branches/ops_pct/compilers/opsc/src/builtins.pir: Add sprintf into builtins |
|||
| rrot: r44674 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops/Compiler/Actions.pm: Once again emit Ops::Op in Compiler::Action |
|||
| rrot: r44675 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops/Op.pm: Add more stubs for Ops body rewriting |
|||
| rrot: r44676 | bacek++ | branches/ops_pct/compilers/opsc (2 files): Drop parser_ops from Ops::File. Store just ops |
|||
| rrot: r44677 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops (2 files): Add preparing ops to Tanscode |
|||
| rrot: r44678 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops/Emitter.pm: Prepare ops in trans. Emit trans-specific header part |
|||
| rrot: r44679 | whiteknight++ | branches/pcc_hackathon_6Mar10/src/call/args.c: in Parrot_pcc_build_sig_object_from_varargs, we can skip information here about returns handling. We're probably going to need to create a new function somewhere to unpack the returns back from the return CallContext in places like Parrot_pcc_invoke_sig_object and family |
|||
| rrot: r44680 | bacek++ | branches/ops_pct/compilers/opsc (2 files): Add loading version in Ops::File |
|||
| plobsing | hmmm, I can't build with the versions given in TT #1499, rakudo is trying to use PObj_active_destroy_SET (which I'm pretty sure has been axed for a while) | 01:58 | |
| Whiteknight | yeah | 02:03 | |
| that was supposed to have been removed months ago, but the patch didnt catch all uses | |||
| so Rakudo was never "motivated" to use the alternative | 02:04 | ||
|
02:04
atrodo joined
|
|||
| dalek | rrot: r44681 | coke++ | trunk/lib/Parrot/Configure/Compiler.pm: Remove apparently unused function. |
02:08 | |
| Whiteknight hasd to go. battery running out. Need to prepare for hackathon tomorrow. Later | 02:10 | ||
| Coke | we should totally be using the gcc deprecated attribute. | 02:11 | |
|
02:31
Andy joined
|
|||
| Andy | log | 02:32 | |
| dukeleto | 'ello | 02:39 | |
| bubaflub | hola dukeleto | 02:40 | |
| dukeleto | bubaflub: howdy! | ||
| bubaflub: have you been thinking of gsoc ideas? | |||
| bubaflub | whatcha hackin' on? | ||
| dukeleto: i have, i shot ya an email with some ideas | |||
| do we need Math::Primality-esque stuff for Parrot or Rakudo? | |||
| dukeleto | bubaflub: yes, i saw the email but didn't have time to respond | 02:41 | |
| bubaflub | yeah, i reckon'd as much | ||
| dukeleto | bubaflub: yes, but lower-level stuff needs doin' first | ||
| bubaflub | yeah, do we have usable bindings to GMP? | ||
| dukeleto | bubaflub: have you looked at whiteknights blog posts about gsoc ideas? | ||
| bubaflub | yeah, i also thought about doing the unicode string overhaul one | 02:42 | |
| dukeleto | bubaflub: parrot has a PMC interface to GMP, but the access to the whole library is not there | ||
| dukeleto is hacking a scotch + club soda together | |||
| bubaflub | dukeleto: GSOC or not i can hack a bit on some GMP stuff | 02:43 | |
| chromatic | Strings would be very, very useful. | 02:44 | |
| bubaflub | if i were to do the strings overhaul, is there something i should be hacking on now? | 02:49 | |
|
02:49
szabgabx_ joined
|
|||
| dukeleto | bubaflub: start with whiteknights writeup and go from there. I am not the best person to ask about that stuff | 02:51 | |
| bubaflub: is there a wiki page/TT for that stuff? | 02:53 | ||
| chromatic: do you have any direction for bubaflub ? | |||
| bubaflub | dukeleto, all i'm seeing on wknight8111.blogspot.com/2010/01/gs...d-nfg.html is the PDD | 02:54 | |
| dukeleto | chromatic: i read PDD18 (security) last night. it seems all very high level. has nothing in there been implemented yet? | 02:55 | |
| chromatic | No to both questions. | 02:56 | |
| With that said, pluggable runloops (as tewk has experimented) give us more options for security and such. | |||
| dukeleto | chromatic: it seems that PL/Parrot will drive a lot of security features in Parrot | 02:57 | |
| chromatic: the most important thing I need is to disable all file I/O | |||
| chromatic: do you have any suggestions for accomplishing that? | 02:58 | ||
| chromatic | The best idea I've seen so far is to provide some sort of op_info table (and we have one) which groups ops into capabilities, or holds flags representing capabilities. | 03:00 | |
| For every op dispatched in the runloop, check against a mask of allowed caps. | |||
| dukeleto | chromatic: ok, that sounds like a direction i can go in | 03:01 | |
| chromatic: where can i learn more about the op_info table? | 03:02 | ||
| i see that ops can be defined with group membership like: inline op print(in INT) :base_io,io { | 03:04 | ||
| plobsing | chromatic: that sounds nifty, but aren't we moving more towards PMCs to do more (potentially protected) stuff? maybe we need to put some checks into new? | 03:05 | |
| dukeleto | plobsing: i would rather disable opcodes than have PMCs require logic to disallow things | 03:06 | |
| plobsing: but both are possible | |||
| plobsing | (new Filehandle).open.do_bad_things | 03:07 | |
| dukeleto | plobsing: from the standpoint of PL/Parrot, DBA's want to disallow stored procedures to access the filesystem. how would you accomplish that with PMCs? | ||
| chromatic | That's a good question and I don't have an answer for it now. | 03:09 | |
| dukeleto | chromatic: is there any docs for the op_info table? PDD18 doesn't mention it | 03:10 | |
| plobsing | even worse: (new OS).muk_around_with_filesystem | ||
|
03:11
jimk joined
|
|||
| chromatic | I'm not aware of any docs. | 03:12 | |
| Remember about PMCs: PL/Parrot or something else may create its own PMCs and try to perform known-safe operations on them, so appropriate scoping of security is important. | 03:13 | ||
| dukeleto | chromatic: do you know where i can find a list of valid op groups? | ||
| chromatic: duly noted | |||
| chromatic | dukeleto, I think it's ad hoc so far. | 03:14 | |
| dukeleto | i see :base_core, :deprecated, :object_classes, :base_math, :base_io, :filesys_open, :flow, :check_event and that is it | 03:15 | |
| chromatic: if I wanted to document those, should I put that in PDD18 ? it doesn't seem like anyone is actually doing anything with these groups | |||
| chromatic: is there a way to lookup what group an opcode is in? | |||
| chromatic | I don't know a good way, off hand. | 03:16 | |
| We may not do anything with that information. | |||
| Here's your chance to help define a good API. | |||
| dukeleto | chromatic: ok, i am all about that. should I create a TT with an RFC for the API to do that? | ||
| jimk nods at #parrot and gives him a small kipper | 03:17 | ||
| chromatic | Please do. | 03:20 | |
| dukeleto | chromatic: ok, i am on it. | ||
| this is needs to be done before any progress on implementing PDD18 can move forward | 03:21 | ||
|
03:21
mj41_ joined
|
|||
| dukeleto is excited to see that PL/Parrot is drving new features in Parrot | 03:22 | ||
| chromatic: i actually got postgres to run PIR code recently, but I am still figuring out how to marshall function arguments and return values | |||
|
03:27
parthm left
|
|||
| dukeleto | chromatic: i am reading op_info_t in core_ops.c, and I don't see the opcode groups being stored in there | 03:36 | |
| chromatic: i see them in lib/Parrot/OpLib/core.pm, though | 03:40 | ||
| :q | |||
|
03:41
janus joined
|
|||
| dukeleto | seems that there is no other instances of opcode groups except when an op is defined and in lib/Parrot/OpLib/core.pm | 03:42 | |
| woot. i got TT 1500 | 04:01 | ||
| chromatic: TT made and parrot-dev poked | 04:07 | ||
| dalek | TT #1500 created by dukeleto++: API to tell which opcode group an opcode is in | 04:12 | |
|
04:24
mj41_ joined
04:26
ttbot joined
07:53
davidfetter joined
07:55
fperrad joined
08:08
Austin_Hastings joined
08:43
iblechbot joined
08:52
lucian joined
09:25
bacek joined
|
|||
| cotto | hi bacek | 09:34 | |
| bacek | cotto, aloha! | 09:35 | |
| cotto | I see you've been busy | ||
| bacek | I wanna made opsc functional over weekend. | 09:36 | |
| headers part are mostly done | |||
| cotto | That's ambitious. | ||
| bacek++ | 09:37 | ||
| bacek | cotto, will you have couple of spare hours to hack on? | 09:43 | |
|
09:44
cottoo joined
|
|||
| cottoo | yup | 09:44 | |
| bacek | Ops::Op._substitute require some love :) | 09:45 | |
| cottoo | I'll give it a hug. | ||
| I was just looking at it. | |||
| bacek | excellent | 09:46 | |
| Just add bunch of "pure-virtual functions" to Ops::Trans, implement them in Ops::Trans::C and we are golden | 09:47 | ||
| I'm switching to c emitting. | |||
| Headers are done :) | 09:48 | ||
| cotto | Nice. | ||
| I'll need to sleep eventually, but that'll give me something to hack on whenever I wake up. | |||
| bacek | Ok | 09:49 | |
| cotto | Does anything test Ops::Trans::C yet? | 09:50 | |
| nm | 09:51 | ||
| bacek | 06-emitter | ||
| mikehh | bacek: you want me to add svn properties and fix MANIFEST? | 09:52 | |
| bacek | but we do need separate test for Trans::C | ||
| mikehh, too early. But feel free to get cheap karma :) | |||
| mikehh | :-} | ||
| bacek | (Ignore svn properties. I'll merge with git and lost them anyway) | ||
| dalek | rrot: r44682 | cotto++ | branches/ops_pct/compilers/opsc (3 files): [opsc] add some more substitutions to munch_body, make Op.pm responsible for op-specific knowledge |
09:56 | |
| rrot: r44683 | bacek++ | branches/ops_pct/compilers/opsc (2 files): Store syn_export and init_func fields. Finish generating headers. |
|||
| rrot: r44684 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops/Op.pm: Comment out debug output. |
|||
| rrot: r44685 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops/Trans/C.pm: Use accessor instead of direct hash access to Emitter.syn_export |
|||
| cotto | time for sleep. Happy hacking bacek! | 09:59 | |
|
10:04
payload joined
|
|||
| mikehh | in trunk I get a warning in the build I haven't seen before - anyone any idea what it means: | 10:06 | |
| /usr/local/bin/perl tools/build/pmc2c.pl --c src/pmc/parrotthread.pmc | |||
| PMC has attributes but no auto_attrs or manual_attrs at /home/mhb/parrot/tools/build/../../lib/Parrot/Pmc2c/PMCEmitter.pm line 744. | |||
| /usr/local/bin/perl tools/build/c2str.pl src/pmc/parrotthread.c > src/pmc/parrotthread.str | |||
| even with that - | 10:15 | ||
| All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32524), fulltest) at r44685 - Ubuntu 9.10 amd64 (g++ with --optimize) | |||
|
10:22
AndyA joined
10:42
eternaleye joined
|
|||
| bacek | mikehh, ask NotFound. He start moving to auto_attrs as default | 10:44 | |
| mikehh | bacek: yes - creating a ticket | 11:04 | |
| dalek | TT #1501 created by mikehh++: parrotthread.pmc - PMC has attributes but no auto_attrs or manual_attrs | 11:25 | |
|
11:43
snarkyboojum joined
11:51
clinton joined
|
|||
| dalek | rrot: r44686 | bacek++ | branches/ops_pct/compilers/opsc (2 files): Add stub for emitting C source |
11:53 | |
| rrot: r44687 | bacek++ | branches/ops_pct/compilers/opsc (3 files): Preserve ops preamble in Ops::File |
|||
| rrot: r44688 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops (3 files): Add more stuff for emitting C source |
|||
| rrot: r44689 | bacek++ | branches/ops_pct/compilers/opsc/t/06-emitter.t: Add tests for emitting C source. |
|||
| rrot: r44690 | bacek++ | branches/ops_pct/compilers/opsc (4 files): Add Trans.source_preamble |
|||
| rrot: r44691 | bacek++ | branches/ops_pct/compilers/opsc (4 files): Add emiting init_func and dynload |
|||
| rrot: r44692 | bacek++ | branches/ops_pct/compilers/opsc (4 files): Add emiting op_lookup |
|||
| rrot: r44693 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops/Trans.pm: Add Trans.core_type |
|||
| rrot: r44694 | bacek++ | branches/ops_pct/compilers/opsc (5 files): Add emiting op lib description |
|||
|
11:56
snarkyboojum_ joined
12:06
cognominal joined
12:07
payload joined
12:09
payload joined
12:23
TzAnAnY joined
|
|||
| TzAnAnY | hello all i have a question | 12:23 | |
| there is TimeOut (Alarm) Command For win32? | |||
|
12:30
Whiteknight joined
|
|||
| Whiteknight | good morning everybody! | 12:35 | |
| Everybody ready for T3H M4J0R H4XX0RING? | 12:41 | ||
| dalek | rrot: r44695 | mikehh++ | branches/ops_pct/MANIFEST: regenerate MANIFEST |
12:43 | |
| mikehh | hi whiteknight and yes just waitin to test | 12:45 | |
| Whiteknight | awesome | ||
| mikehh | fiddlin' with ops_pct branch at the moment | ||
|
12:46
iblechbot joined
|
|||
| Whiteknight | yeah, I've seen a lot of activity over there recently | 12:49 | |
|
12:50
joeri joined
|
|||
| Whiteknight | allison: ping | 12:50 | |
| mikehh | anyway got to go do some shopping - bbl | 12:54 | |
| Whiteknight | purl msg allison I'm thinking Parrot_pcc_invoke_sig_object should return the results CallContext, so it can be unpacked by a function that knows how to do the unpacking like Parrot_pcc_invoke_method_from_c_args, or Parrot_pcc_invoke_method_from_op | ||
| purl | Message for allison stored. | ||
| dalek | rrot: r44696 | mikehh++ | branches/ops_pct/compilers/nqp/src/quote_expression.pir: fix copyright statement |
12:59 | |
| rrot: r44697 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops (3 files): Pass emitter into emit_source_part |
|||
| rrot: r44698 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops/Op.pm: Workadound scalar/list in Op.size |
|||
| rrot: r44699 | bacek++ | branches/ops_pct/ext/nqp-rx/src/gen/settings.pm: Update NQP settings. |
|||
| rrot: r44700 | bacek++ | branches/ops_pct/compilers/opsc (2 files): Implement emitting op_info_table and op_func_table |
|||
| rrot: r44701 | bacek++ | branches/ops_pct/compilers/opsc/TODO: Add TODO for cotto++ |
|||
|
13:04
kid51 joined
13:06
mikehh_ joined
|
|||
| bacek | msg cotto Good morning! Looks like I finished end-2-end emitting for Trans::C. I added simple TODO file. As soon as we can have first 4 items done we can try to use opsc in "real world" :) | 13:11 | |
| purl | Message for cotto stored. | ||
| allison | Whiteknight: it doesn't return the context, the context is accessed the same as it is in opcode calls | 13:13 | |
| Whiteknight: specifically, the CallContext object that contains the return values is the same PMC as the one that passed in the arguments to the function | 13:14 | ||
| dalek | rrot: r44702 | bacek++ | branches/ops_pct/compilers/opsc/TODO: Update todo. |
13:16 | |
|
13:16
mikehh joined
|
|||
| allison | Whiteknight: the main thing to wrap your head around is the fact that fetching return values is now exactly the same process as filling parameters | 13:16 | |
| Whiteknight | allison: I've got the process in my head no problem. I'm just trying to figure out where the unpacking of the returns CallContext happens | 13:32 | |
| and if we are explicitly recycling the parameters CallContext, that does make a lot of things easier | 13:33 | ||
| still going to require some munging in Parrot_pcc_invoke_method_from_c_args, because we can't have two open va_lists in a portable way, so we're going to need to cache the return value pointers, call va_end, invoke the Sub, and then unpack the returns | 13:34 | ||
| allison | as in, we may still have to store pointers to the result destinations locally within the function, so we don't have to keep the va_list around | 13:36 | |
| Whiteknight | exactly | 13:37 | |
| Two options I can think of: Modify Parrot_pcc_build_sig_object_from_* to return in an ARGOUT(int) the index where the return params start, and pass that to another function to count them and allocate array space to hold pointers | 13:38 | ||
| or, just have a second function that parses the signature from the beginning and returns storage | |||
| it bugs the hell out of me that some of these functions that an FIA to parse the flags | 13:40 | ||
| dalek | tracwiki: v22 | allison++ | CallingConventionsTasklist | 13:41 | |
| tracwiki: trac.parrot.org/parrot/wiki/Calling...ction=diff | |||
| tracwiki: v23 | allison++ | CallingConventionsTasklist | |||
| tracwiki: trac.parrot.org/parrot/wiki/Calling...ction=diff | |||
| allison | Whiteknight: well, there's no reason we can't continue parsing the full signature at the start and store it in the CallContext | 13:43 | |
| that is, store the return signature FIA in the CallContext | 13:44 | ||
| Whiteknight | we dont always have an FIA | ||
| allison | the first thing Parrot_pcc_build_sig_object_from_varargs does is build one | 13:45 | |
| It used to build two: one for args and one for returns | |||
| Whiteknight: op calls will never have a return sig from the start, though | 13:47 | ||
| Whiteknight: so it's better to store that information locally, than to cache it in the CallContext | |||
| Whiteknight | right | 13:48 | |
| this refactor is going to be larger than I anticipated | 13:55 | ||
| allison | it's mainly a matter of deleting code | ||
| Whiteknight | all the _from_c_args and *_varags func need to be rewritten | 13:56 | |
| in the future, caching information about returns in the callsig will allow us to check expectations | 13:57 | ||
| allison | but you can't rely on it to check expectations, since it's not always set | ||
| better to have an explicit separate step setting "wants" | 13:58 | ||
| Whiteknight | that's fine too | ||
| allison | well, half the *_from_c_args *_varargs functions just go away | 13:59 | |
| Whiteknight: what platforms barf on using one va_list within another | 14:05 | ||
|
14:05
atrodo joined
|
|||
| Whiteknight | Not sure. bacek was talking about it yeterday, and I just trust what he says | 14:06 | |
| allison | Whiteknight: the ideal solution is to process the args half of the va_list, make the call, then process the returns half of the va_list | ||
| Whiteknight | if we copy the returns hal of va_list into an array, we can process it separately | 14:07 | |
| dalek | rrot: r44703 | allison++ | branches/pcc_hackathon_6Mar10/src/call/args.c: [pcc] Fix compilation and runtime errors. |
||
| rrot: r44704 | allison++ | branches/pcc_hackathon_6Mar10 (2 files): [pcc] Remove deprecated and unused function for old-style return |
|||
| allison | Whiteknight: yeah, but it's an array of pointers, and that funky pointer storage is one of the things we were trying to avoid | 14:08 | |
| at least it's only a local array of pointers | |||
| doesn't even have to be a PMC | 14:09 | ||
| Whiteknight | exactly | ||
|
14:11
Psyche^ joined
|
|||
| dalek | rrot: r44705 | jonathan++ | trunk/src/runcore/main.c: [loadlib] Though shalt always use the return value of realloc calls, otherwise segfaults happen. |
14:24 | |
| Whiteknight | amen! | 14:25 | |
| should parse_signature_string continue to return a PMC** to the returns FIA, or should it just return an index in the string where the returns start? | 14:32 | ||
| allison | it should keep parsing the full string | 14:40 | |
| but, I'm speculating on whether the various functions that currenly accept only a signature string should accept a FIA instead | 14:41 | ||
| that is, parse the signature string once when we first hit it | |||
| rather than reparsing it over and over again | |||
| either that, or we need a "split_signature_string" | 14:42 | ||
| dalek | kudo: 8505d39 | Worthington@.(none)++ | src/builtins/Mu.pir: Fix has %.noms. |
14:43 | |
| allison | and then parse_signature_string switches over to expecting only args/returns, not both combined | ||
| in fact, that's probably the better solution | |||
| all calls to parse_signature_string now ignore the second half | 14:44 | ||
|
14:45
TzAnAnY left
15:00
PacoLinux joined
|
|||
| dalek | kudo: 43f5a52 | (Solomon Foster)++ | build/PARROT_REVISION: Bump parrot. |
15:00 | |
| Whiteknight | allison: if all uses of parse_signature_string ignore the second half, that may just be our answer. Let's cut it so it only parses half a signature | 15:07 | |
| allison | Whiteknight: well, see it needs a different half at different times | 15:08 | |
| but, it only ever needs one half | |||
| Whiteknight | and the two halves can basically be parsed to FIA without knowing which it is | 15:09 | |
| allison | for example: Parrot_pcc_fill_params_from_c_args will be called both for filling parameters, and for filling results | 15:10 | |
| it calls parse_signature_string | |||
| so, half the time it'll be parsing an arg signature, and half the time a return signature | |||
| Whiteknight | exactly | ||
| allison | it doesn't have to know which is which | ||
| so, if we split the signature string when it first enters the system | 15:11 | ||
| in Parrot_pcc_invoke_method_from_c_args, for example | |||
| then we never have to handle the bundled singnature again | 15:12 | ||
| Whiteknight: hmmm... what bacek actually said is that va_list can't be "restarted" | 15:27 | ||
| Whiteknight: but we aren't restarting it, just handling it in two separate function calls | |||
| dalek | kudo: ab3f44b | (Solomon Foster)++ | src/ (2 files): Quick implementation of !===. (Should be a meta op, but this will work for now.) |
15:34 | |
| kudo: 7882db4 | (Solomon Foster)++ | t/spectest.data: Turn on S03-operators/value_equivalence.t. |
|||
|
15:35
Psyche^ joined
15:39
tetragon joined
|
|||
| allison | Whiteknight: ah, interesting, I've always used va_list as if it were a consuming iterator | 15:40 | |
| nopaste | "allison" at 77.98.130.30 pasted "method 1 of passing va_list" (28 lines) at nopaste.snit.ch/19862 | 15:42 | |
| "allison" at 77.98.130.30 pasted "method 2 of passing va_list, as a pointer" (23 lines) at nopaste.snit.ch/19863 | 15:45 | ||
|
15:46
payload left
|
|||
| dalek | kudo: 28f5203 | (Solomon Foster)++ | t/spectest.data: Turn on S06-traits/is-rw.t. arnsholt++. |
15:52 | |
|
16:01
kurahaupo joined
16:14
payload joined
16:17
payload1 joined
16:24
snarkyboojum_ joined
|
|||
| dalek | kudo: ba6cd4e | (Solomon Foster)++ | src/builtins/ (2 files): Change === on Num to return Bool, and clean up === on Int. baest++ |
16:26 | |
| purl | dalek: that doesn't look right | ||
|
16:44
AndyA joined
|
|||
| dukeleto | 'ello | 16:50 | |
|
16:50
theory joined
|
|||
| allison | hi | 17:03 | |
| purl | hi, allison. | ||
| cotto | bacek++ for being awesome | 17:05 | |
| davidfetter | oh hai | 17:12 | |
| cotto | Happy Cat- and/or Saturday! | 17:17 | |
| davidfetter | .oO([CS]aturday) |
17:22 | |
| dalek | kudo: c054780 | (Solomon Foster)++ | t/spectest.data: Turn on S02-literals/string-interpolation.t and S02-literals/quoting-unicode.t. arnsholt++ |
17:23 | |
|
17:30
jan joined
17:47
Austin_Hastings joined
18:03
Whiteknight joined
|
|||
| dalek | kudo: 14a83eb | moritz++ | t/spectest.data: more passing test files |
18:03 | |
|
18:06
lucian joined
|
|||
| cotto | davidfetter, cats aren't good at regexes | 18:11 | |
| Whiteknight | in the branch, parrot actually builds and is able to do quite a few steps after that before a segfault | ||
| why does "make corevm" try to build PGE/builtins_gen.pir? | 18:12 | ||
| I thought that was exactly the kind of thing the corevm target was not supposed to make | |||
| allison | Whiteknight: corevm didn't used to, I was quite careful about stripping out any PGE features | 18:20 | |
| but, we've had some makefile cleanups recently, so it might have snuck back in | |||
|
18:22
iblechbot joined
|
|||
| allison | Whiteknight: yeah, looks like GEN_LIBRARY has been added to the corevm target, which is everything including the kitchen sink | 18:28 | |
| dukeleto | we *reaaaaaaally* need a test that verifies that "make corevm" does what it is supposed to do | 18:29 | |
| dalek | rrot: r44706 | cotto++ | branches/ops_pct/compilers/opsc/src/Ops/Compiler/Actions.pm: [opsc] fix op macro substitutions, break op_body action into two parts to allow munch_body access to the past |
18:30 | |
| allison | dukeleto: difficult to test | ||
| dukeleto | allison: sure, but a worthy goal. the test would have to create a copy of the source tree and then verify that it is doing the right thing. not something that should be part of "make test", but I would say it would be good to have that in "make fulltest" | 18:32 | |
| allison | duke: it could check a list of files that shouldn't exist after a "make realclean" and "make corevm" | 18:33 | |
| dukeleto | every time "make corevm" breaks, you can hear a screeching halt of productivity from some devs that rely on it, like plobsing | ||
| allison: that is a nice idea | |||
| allison: just created trac.parrot.org/parrot/ticket/1502 for testing "make corevm" | 18:37 | ||
|
18:44
szabgabx joined
|
|||
| dalek | rrot: r44707 | cotto++ | branches/ops_pct/compilers/opsc/src/Ops/Compiler/Actions.pm: [opsc] set jump flag for ops with goto/restart OFFSET |
18:46 | |
| allison | dukeleto: nice! | 18:48 | |
| Whiteknight: we're already splitting out va_list over multiple function calls for param handling, so we won't be taking any portability hit if we use the same technique for building signature objects | 18:49 | ||
| dalek | TT #1502 created by dukeleto++: Test that "make corevm" works as expected | 18:50 | |
|
18:51
chromatic joined
|
|||
| cotto | hi chromatic | 18:58 | |
| chromatic | morning | 18:59 | |
| mikehh | hi chromatic | ||
| dukeleto: I think the same applies to make coretest - this has additional tests as per the ones used in the various cores in fulltest | 19:02 | ||
| dalek | rrot: r44708 | cotto++ | trunk/lib/Parrot/Op.pm: [ops2c] remove a substitution that seems to have outlived its usefulness |
19:03 | |
| mikehh | I queried this a couple of weeks ago mut nothing futher was said or done | ||
| s/mut/but/ | |||
| cotto | Wouldn't it be easier to parse the generated makefile? | 19:04 | |
| bacek_at_work, ping | 19:12 | ||
| I thought nqp-rx had mmd now. | 19:23 | ||
| allison | I need a nice general word that encompasses args/params/returns/results | 19:33 | |
| we're conflating them now, and calling a function named "fill_params" to fetch return values is confusinc | 19:34 | ||
| and, I sure don't want to make separate functions that do the same thing just for the name | |||
| Whiteknight | calling them all "args" and "params" is fitting when you think both directions are invokes | 19:35 | |
| plobsing | I want to say stack, but I know parrot doesn't work that way. What's the equivalent word for "the stack" in parrot? | 19:36 | |
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32530), fulltest) at r44708 - Ubuntu 9.10 amd64 (gcc with --optimize) | ||
| allison | plobsing: depends on the context, either "registers" for values/variables or "continuation chain" for call frames | 19:38 | |
| plobsing: stack-based implementations use the stack for multiple different things | |||
| plobsing | next_cont then? | 19:39 | |
| allison | Whiteknight: yeah, arg/param is what I've done so far | 19:41 | |
| Whiteknight: the userfacing ops have distinctive names, and the extend/embed API completely hides the details | |||
| Whiteknight: so, the idea that returns are just calls doesn't have to dawn on the average user, just on those who make their way into the core | 19:42 | ||
| plobsing: it really is, in many ways | 19:43 | ||
|
19:43
lucian joined
|
|||
| allison | plobsing: there are places in the code now that say "signature" when they just mean "the next continuation down the chain" | 19:43 | |
| plobsing: ah well, some later refactor | 19:44 | ||
|
19:48
Austin joined
|
|||
| nopaste | "allison" at 77.98.130.30 pasted "series of steps for calling from C, for consideration" (5 lines) at nopaste.snit.ch/19865 | 19:48 | |
| allison | the downside is it makes the FIAs part of the public interface, which makes it harder to eliminate them later | 19:49 | |
| Whiteknight | add another layer, and hide the FIAs from the public interface | 19:50 | |
| allison | I have this idea that using a pointer to a c integer array will be faster, when we can elimination the FIAs | 19:51 | |
| eliminate | |||
| particle | a ManagedStruct? | ||
| i assume introspection is important, and this int array should be visible from pir | 19:52 | ||
| chromatic | Is this refactor going to get rid of the "let's freeze a string into bytecode describing args/params, then parse that into a new FIA for every invocation!" misfeature of the bytecode? | ||
| allison | particle: could be, yeah. | ||
| particle: they're currently only used inside one function, so no persistence necessary | |||
| chromatic: aye, that's what the nopaste above does | 19:53 | ||
| chromatic: parses the string into FIAs once on the first entry point | |||
| chromatic | That's not what I'm saying. | ||
| allison | chromatic: then passes the FIAs into the signature building and return handling | ||
| chromatic: expand? | |||
| purl | well, expand is at language.perl.com/ppt/src/expand/ | ||
| chromatic | Stop parsing the strings from every invocation from PIR -> PIR. | 19:54 | |
| allison | oh hush, purl. :) | ||
| purl | meep! | ||
| allison | chromatic: PIR->PIR calls directly use the FIAs passed in the call | ||
| chromatic | What creates those FIAs? | 19:55 | |
| allison | chromatic: or at least they used to, may have been changed by someone | ||
| Whiteknight | I like that last nopaste. Very simple | ||
| allison | IMCC creates the FIAs | ||
| long before it gets anywhere near the PCC code | |||
| chromatic | Okay. That's what I wanted to hear. | ||
| Whiteknight | what I particularly hate are the strings of hex flag codes | 19:56 | |
| allison | there are future optimizations there, in having IMCC create CallContext, instead of a FIA that we later store in a CallContext | ||
| chromatic | As long as the get/set/_params/_returns ops don't store frozen strings, I'm happy for now. | 19:57 | |
| allison | Whiteknight: aye, there's a chunk of code in FIA dedicated to those icky strings | ||
| chromatic: aye, they don't (and it's a good thing) | |||
| chromatic | When did that change? | 19:58 | |
| allison | the PIR->PIR code path is working in the branch, working on C->PIR and PIR->C | ||
| chromatic: AFAIK, it's been that way for years (creating FIAs in IMCC during compilation) | 19:59 | ||
| I suppose the last big PCC refactor in 2006 might have done it | |||
| chromatic | Hm, I guess it is. | 20:00 | |
| allison | any calls before I jump into coding? Q: is it worse to make the FIAs part of the public interface, or to split the sig string, and then do the string parsing into FIAs buried deep in the PCC code? | 20:01 | |
| splitting the sig string involves iterating over it once, before iterating over it again later to parse it | 20:02 | ||
| but, it's generally a short string | 20:03 | ||
| chromatic | It's a smaller refactor to keep the string parsing part of the interface for now, isn't it? | ||
| allison | yes | ||
| and, involves less reversal if we do rip out FIAs later | |||
| chromatic: (that is, if you're asking "It's a smaller refactor to keep passing around signature strings instead of passing around FIAs) | 20:04 | ||
| chromatic | Right. | ||
| nopaste | "allison" at 77.98.130.30 pasted "second alternate - series of steps for calling from C, for consideration, split sig string" (5 lines) at nopaste.snit.ch/19866 | 20:06 | |
| allison | heh, it doesn't actually change the interface much | ||
| which is good | |||
| it just replaces a "parse signature string" call with a "split signature string call" | |||
| and arg_sig and ret_sig are char* instead of PMC* | 20:07 | ||
|
20:07
payload joined
|
|||
| allison diving in | 20:08 | ||
|
20:18
bubaflub joined
|
|||
| kurahaupo_mobi | Sorry for jumping in a bit late, have juat woken. It seems that if there were a vtable op for "gimme the raw memory address for byte offset x ensuring the next w bytes are contiguous" then it would be useful for both arrays and managed structs, and for ad hoc pack/unpack. | 20:23 | |
| In particular, we could completely factor out resizable/limited/fixed from the element type of an array. | 20:26 | ||
| chromatic | That sounds like a good way to expose raw pointers to PIR. | 20:29 | |
| Whether exposing raw pointers to PIR is good, well.... | |||
| kurahaupo_mobi | The idea is they'd be used only internally by native methods and vtable functions. | 20:38 | |
| So for example FixedIntegerArray becomes a composition of FixedByteBuffer and IntegerArrayAccessor | 20:41 | ||
| Look on trac wiki for Array for vmore | 20:44 | ||
| details. This keyboard is too small to type whole explanation. | 20:45 | ||
|
20:48
lucian_ joined
20:50
theory joined
20:52
lucian joined
|
|||
| Whiteknight helped his father-in-law remove some cabinets from the kitchen, which apparently were holding up the old chimney. Long story short, the chimney is now in the kitchen and I am covered with soot | 21:25 | ||
| Austin | heh | ||
| "/nick Blacknight" ? | |||
| Whiteknight | Austin: don't know if you're familiar with the area across the river, but the house is an old levittowner | ||
| Austin | Yeah | ||
| Whiteknight | "/nick whiteknight-in-blackface" | 21:26 | |
| All I wanted to do today was hackathon, but I removed some cabinets, now need to remove a chimney, and later need to repair some drywall | 21:29 | ||
| Austin | I was wondering what prompted you to undertake two projects on the same weekend.. | 21:30 | |
| Whiteknight | I agreed to come to the inlaws house for two reasons: 1) I was promised that there would be ample time to hack, and 2) I didn't want to get nagged about it if I said no | 21:34 | |
| of course, now 1) There is very little time to hack, and 2) I'm getting nagged about destroying the kitchen | 21:35 | ||
| allison: if the sig string wasn't const, Parrot_pcc_split_signature_string could be a simple call to strtok | 21:36 | ||
| Austin | Well, look on the bright side... | ||
| Whiteknight | can't see the bright side, windows are covered in a thin film of soot | 21:37 | |
| Austin | There you go! You'll be able to stay in the rest of the weekend while they clean the windows.. | ||
| Whiteknight | yeah, "they | ||
| " | |||
| allison | Whiteknight: I tried strtok first, but it's a bit hacky, modifying the original string and all | 21:38 | |
| Whiteknight | allison: Now that we are having proper bi-directional CPS, we might want more API interfaces that make better use of that | ||
| allison | Whiteknight: the iteration is quick | ||
| Whiteknight: aye, I suspect they will grow around the new cleaner code | 21:39 | ||
| Whiteknight | yeah | ||
| The whole string.h library is so buggy and hacky. strtok is a great example of that, but is hardly the worst offender | 21:40 | ||
| how many buffer overflow attacks were crafted around sscanf and sprintf? | |||
| chromatic | Two, but they repeat ad infinitum. | 21:44 | |
|
21:45
patspam joined
|
|||
| chromatic | plobsing, 'sudo echo 0 > /proc/sys/kernel/randomize_va_space' on Linux, at least. | 21:50 | |
| Modern kernels randomize address space. | |||
| cotto | Whiteknight, can you get pictures at least? | 21:59 | |
| plobsing | chromatic: nope, still fails intermittently | 22:00 | |
|
22:01
bacek joined
|
|||
| cotto | hi bacek | 22:02 | |
| chromatic | Way too much indeterminancy there. | 22:03 | |
| plobsing is wondering about hash seeding and why gdb mentions threaded debugging | 22:04 | ||
|
22:06
lucian joined
|
|||
| dalek | rrot: r44709 | cotto++ | branches/ops_pct/compilers/opsc/src/Ops/File.pm: [opsc] break up new, allow initialization from a string via new_str |
22:18 | |
| rrot: r44710 | cotto++ | branches/ops_pct/compilers/opsc/src/Ops (2 files): [opsc] implement in some macro translators |
|||
| Austin | What exactly do I need to do to isolate a closure? | 22:26 | |
| chromatic | What do you mean by "isolate"? | 22:28 | |
| Austin | Enclose? Cut off from the outside world? | ||
| In particular, to snapshot a set of lexical vars that are iterating. | |||
| bacek | ~~ | 22:30 | |
| Austin | I had thought, based on a conversation with pmichaud++, that if a sub block is lexically inferior to another block, and that outer block is re-entered, the closure was then isolated from any further changes. Clearly I'm wrong. | ||
| chromatic | That depends on how you re-enter the enclosing block. | 22:32 | |
| nopaste | "Austin" at 68.39.12.202 pasted "This closure-taking business is harder than I thought..." (38 lines) at nopaste.snit.ch/19867 | 22:34 | |
| dalek | rrot: r44711 | chromatic++ | trunk/src/io/unix.c: [IO] Worked around attempts to close unopened file descriptors in |
22:35 | |
| Austin | See in particular the "else { \\n my &method := " near the bottom | ||
| chromatic | That should clear up the last three Coverity errors. | 22:41 | |
| I don't see the problem, Austin. | 22:42 | ||
| Austin | Nor do I. But that last else block, where I thought I was enclosing &method, doesn't work - my %passthrough<_init_obj> winds up calling 'isa' | 22:43 | |
| bacek | cotto, ping | 22:46 | |
| chromatic | Are you sure that &method is a lexical in the generated PIR? | 22:47 | |
|
22:50
snarkyboojum joined
|
|||
| dalek | rrot: r44712 | chromatic++ | trunk/src/io/buffer.c: [IO] Worked around a flaw in the way we use C's type system to tell static fashion, don't worry!" This should finally fix Coverity CID #169. |
22:51 | |
| rrot: r44713 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops/Trans/C.pm: Emit functions definitions in Trans::C |
|||
| rrot: r44714 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops/File.pm: Fix Ops::File.compile_ops invokation |
|||
| rrot: r44715 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops/Op.pm: Fix fetching Op.body |
|||
| nopaste | "Austin" at 68.39.12.202 pasted "pir generated for else {...} block" (20 lines) at nopaste.snit.ch/19868 | ||
| cotto | bacek++ | 22:52 | |
| bacek | cotto, looks like I forgot to push last yesterday commit about emitting C code... | 22:53 | |
| But it's pushed now :) | |||
| cotto | I was just going to ask for what you did in '13 | ||
| bacek | Just check 06-emitter.t. It will dump generated code. | ||
| cotto | that was a strange omission | 22:54 | |
| bacek | it was almost 1am when I finished. | ||
| Anyway, Op.body is properly fetched and ready for some munching :) | 22:55 | ||
| Austin | AFAICT, chromatic, it's good code. The sub blocks have their :outer tags, the storing routine does a capture-lex of the sub immediately before sticking it in the antiphon, then it leaves, taking its lexpad with it... | ||
| cotto | I'm on it. | 22:56 | |
| bacek | ok. | ||
| I will not have much time today. But as soon as you finish we cat try to compile "ops2c.nqp" script and try to generate real code | |||
| chromatic | I see nothing obvious, Austin. | ||
| Austin | Thanks. | 22:57 | |
| I'm working around it by moving the stuff I wanted in that closure to other places. But I thought for sure I was getting the hang of this stuff... :( | |||
| dalek | kudo: 9a94503 | moritz++ | t/spectest.data: turn on new test in S03-operators/names.t |
23:01 | |
| Whiteknight | allison: in the nopastes you pasted, did Parrot_pcc_split_signature_string operate on a char* or a STRING*? | ||
| allison | char * | 23:02 | |
| that's what comes in, so avoiding the overhead of creating GC-able strings | |||
| Whiteknight | are you working on that code, or should I start hacking some of it together? | 23:03 | |
| allison | nearly done | ||
| Whiteknight | ah, okay. I'll wait for you to commit before I start hacking | ||
| chromatic | That sounds like dialog from "So I Married an Axe Murderer". | 23:05 | |
| Whiteknight | now that I FINALLY have some free time to do it | ||
| I would be taking a shower, but the drain pipe is open and I don't need my now-considerable filth spewing out onto the floor like so much IMCC code | 23:06 | ||
| bacek | Axe murdering??? | ||
| Austin | Whiteknight: Sounds like you need to go out for ribs | 23:07 | |
| Whiteknight | bacek: is there any other kind? | ||
| Austin | That way you can just ask for some extra wet-naps... | ||
| dalek | izkost: 25e081c | unknown++ | src/pmc/p5invocation.pmc: Updates to bring us in line with latest Parrot calling conventions API. |
||
| allison | Whiteknight: okay, committed the added functions, with one function translated to use the new code | ||
| Whiteknight | Austin: sure, that's *definitely* one of my current needs | ||
| w00t | |||
| dalek | rrot: r44716 | allison++ | branches/pcc_hackathon_6Mar10 (3 files): [pcc] Adding functions for handling calls from C, with the new order the |
||
| allison | we've deprecated Parrot_PCCINVOKE, right? | 23:09 | |
| chromatic | Yes. | 23:12 | |
| Not that I can find it in DEPRECATED.pod. | |||
| allison | it's just seeming silly to update two identical functions with different names | 23:13 | |
| Whiteknight | I remember it being deprecated, yes | 23:16 | |
| I seem to remember it being "removed" at one point | |||
| bacek | cotto, I have to go. Will try to finish opsc tonight for Trans::C. | 23:17 | |
| see you | |||
| dalek | izkost: 9e954eb | unknown++ | src/pmc/p5 (4 files): Final catch-ups to get Blizkost linking again. |
23:19 | |
| plobsing | am I using this right: './parrot -H F001 t/pir/macro.t' ? | 23:24 | |
| cotto | looks right to me | 23:27 | |
| plobsing | when I run that I get "Class 'Undef' not found" | 23:29 | |
| I can't seem to set the hash seed at all | |||
| cotto | in a branch? | 23:33 | |
|
23:34
theory joined
|
|||
| cotto | nm. it's in trunk | 23:34 | |
| plobsing, fixed | 23:51 | ||
| plobsing++ for noticing that | 23:52 | ||
| clock? | 23:54 | ||
| purl | cotto: LAX: Sat 3:54pm PST / CHI: Sat 5:54pm CST / NYC: Sat 6:54pm EST / LON: Sat 11:54pm GMT / BER: Sun 12:54am CET / IND: Sun 5:24am IST / TOK: Sun 8:54am JST / SYD: Sun 10:54am EST / | ||
| dalek | rrot: r44717 | allison++ | branches/pcc_hackathon_6Mar10/src/call/args.c: [pcc] Pick a more robust condition for the test of an empty return signature. |
23:58 | |
| rrot: r44718 | cotto++ | trunk/src/main.c: [string] move --hash-seed to parseflags_minimal, before any strings are created |
|||