|
Parrotsketch Every Tuesday @ 18:30 UTC | IRC Log at irclog.perlgeek.de/parrotsketch/today Set by moderator on 24 May 2009. |
|||
|
01:41
japhb joined
10:56
masak joined
12:06
Whiteknight joined
13:18
payload joined
14:30
masak joined
14:51
payload joined
15:06
PacoLinux joined
15:07
PacoLinux left
16:05
pmichaud joined
16:21
particle joined
16:52
NotFound joined
17:20
Util joined
18:11
mberends joined
18:23
darbelo joined
18:25
jhorwitz joined
18:27
jonathan joined
18:28
allison joined
|
|||
| Whiteknight | hello | 18:30 | |
| jonathan | hi | ||
| darbelo | hola | ||
|
18:31
chromatic joined
|
|||
| allison | hi | 18:31 | |
| chromatic | $localtime | ||
| cotto | hi (no report this week) | ||
| chromatic | Let's begin. allison? | 18:32 | |
| NotFound | hola | ||
| Util | hi | ||
| jhorwitz | hi | 18:33 | |
| allison | - Almost through editing the final chapter of the PIR book. | ||
| pmichaud | hello. | ||
| allison | It'll be up in 2 seconds on pub.lohutok.net/onyxneon/ | ||
| - Will be traveling most of the next week. | 18:34 | ||
| EOR | |||
| chromatic | chromatic? | ||
| Thanks for asking! I fixed several memory leaks. IMCC has a few more nasty ones that hit Rakudo hard. | |||
| I have a couple of bugs to fix today. | |||
| I'm writing a grant to develop a new profiling core for Parrot, as HLLs need it badly. | 18:35 | ||
| That should be available at least at the .sub level for 1.4. | |||
| jhorwitz? | |||
| jhorwitz | no report -- just started working on slides for YAPC. | ||
| chromatic | jonathan? | 18:36 | |
| jonathan | Parrot | ||
| * Re-ordered some code in object cloning that looked like it might be vulnerable to the GC sweeping away stuff we'd rather it didn't. | |||
| * Tracked down the cause of a segfault I'd got in Rakudo and filed a ticket. | |||
| Rakudo | |||
| * Finished up the dispatch refactor at long last | |||
| * Now method dispatch in Rakudo is just done using the PIR method calling syntax | |||
| * Was quite a good performance win, and an interop win | |||
| * In the process, got support for deferal of method calls in place. Quite nice, we only produce the candidate list when we're asked to defer. Needs a lot of testing, didn't really do that yet, just wanted to get the refactor done | |||
| * Now we aren't cheating on so many things, various minor issues came up that I need to ponder some, for now all workaroundable so that's what I did | |||
| * Re-worked caching in Perl6MultiSub - now method dispatch is faster and we create caches lazily to decrease startup cost | |||
| * Other bits... | |||
| Scheduling: | |||
| * Going to be away for the second half of June and a just over a week in July taking vacation. | |||
| * Will be attending YAPC::EU and YAPC::Asia | |||
| .end | |||
| chromatic | moritz? | 18:37 | |
| Tene more HLL interop work. KTHXBAI | |||
| jonathan | (I believe moritz is away on vacation.) | ||
| chromatic | NotFound? | ||
| NotFound | * Added setstdin opcode | 18:38 | |
| * Miscellaneous fixes and cleaning | |||
| EOR | |||
| chromatic | particle? | ||
| jonathan | q1q | ||
| chromatic | PerlJam? | ||
| pmichaud? | 18:40 | ||
| pmichaud | General: | ||
| * Rakudo now passing 11,346 spectests (+3 since last week) | |||
| * Tracked down the issue behind TT #24 (non-equivalents of hash keys) | |||
| * Added a fix, which bacek++ improved | |||
| * Updated PCT::HLLCompiler transcode option to allow multiple attempts | |||
| * Rakudo and other langs can now optionally transcode to iso-8859-1 for parsing, significantly faster than utf-8. | |||
| * With help from NotFound++ and Infinoid++, significantly improved PMCProxy creation in class lookups | |||
| * Played with switch Rakudo to hll_map Int and Num, but doing so results in a significant speed penalty so we may avoid hll_map for a while. | |||
| Other Rakudo stuff: | |||
| * Fixed symbol importation for settings | |||
| * Fixed IO.get, moved from PIR to setting | |||
| * Worked out BEGIN implementation details (not committed yet) | |||
| * Fixed various quoting construct errors, die with useful message on s/// | |||
| * Corrected cross-metaop handling | |||
| * Updated postfix:<++> to be 75% faster | |||
| * Refactored .succ/.pred handling overall | |||
| EOR | |||
| chromatic | Util? | 18:41 | |
| Util | * Two issues from last week are now tickets: * TT #710 - Win32 huge strings do not print on console * TT #717 - Segfault in `parrot_config --dump` | ||
| NotFound++ has workarounds for both, reducing the problems to the point that I cannot (yet) recreate them. I plan to test further. | |||
| * Talked at length at Atlanta.pm's after-meeting dinner with a IRC-log (#parrot and #perl6) lurker. He is interested in participating, but notes that his route is rocky due to a sore shortage of "overview" and "status" docs. Just FYI. | |||
| * TT #688 - Still working on Win32 MSVC PIR code for pbc_to_exe. GCC code from last week fixed Rakudo-on-Feather. Tuit harvest is good; will try Win32 again today. | |||
| .eor | |||
| chromatic | Whiteknight? | ||
| Whiteknight | IO SYSTEM | ||
| * Started the io_rewiring branch to do some major refactoring in the IO system | |||
| * Working to remove costly PCCINVOKE calls from IO API functions | |||
| * Worked with Infinoid++ and NotFound++ to better integrate various types of IO PMCs | |||
| * Would love feedback, but not ready yet for mass testing or benchmarking. Hoping to be ready this week. | |||
| MISC | |||
| * Picked up a grant for an unrelated project, will have less time for Parrot this month. :( | |||
| EOR | 18:42 | ||
| chromatic | Did I miss anyone? | ||
| darbelo | me | ||
| chromatic | Go ahead. | ||
| darbelo | .report decnum-dynpmcs :GSoC | ||
| * Added more VTABLES to DecNum. | |||
| * Now feature-equivalent to BigNum, sort of. | |||
| * Starting to convert the decNumber tests to pir. | |||
| .end | |||
| chromatic | Anyone else? | ||
| Questions? | 18:43 | ||
| pmichaud | (checking trac reports to see if I have questions) | 18:44 | |
| jonathan | setstdin op - why? OK, perhaps consistency with setstdout etc but aren't the methods on ParrotInterpreter enough/better for this? | ||
| darbelo goes afk | |||
| NotFound | jonathan: that was answered last week | ||
| chromatic | I agree with jonathan. | ||
| jonathan | OK, then I'm disagreeing with last week's answer. :-) | 18:45 | |
| pmichaud | do we have any ideas about TT #717 yet? (parrot_config segfaults when invoked with the --dump option) | ||
| NotFound | pmichaud: the idea is simple: the implementation sucks. | 18:46 | |
| Util | pmichaud: yes, it is in the ticket's history update (paired with the patch) | ||
|
18:46
PacoLinux joined
|
|||
| pmichaud | Is someone going to review/apply it? It's not owned at the moment. | 18:46 | |
| NotFound | Using a string structure instead of a pointer to one is The Bad Thing (TM) | ||
| chromatic | That sounds like an easy fix. | 18:47 | |
| Util | r39223 (NotFound's patch) stops the bug from appearing during Rakudo's use of `parrot_config --dump` in --gen-parrot. | ||
| NotFound | pmichaud: I was waiting to see if the IO reworking goes fast. I can make a fix easily, but note that it can impact output speed. | 18:48 | |
| pmichaud | NotFound: output speed is already terribly slow. | ||
| NotFound: I should add that as a ticket if it doesn't exist already, and put it on the report. | |||
| Whiteknight | the io_rewiring branch is, hopefully, making IO much faster | ||
| it's a major conceptual change though, so it might not be correct. Pending feedback | 18:49 | ||
| chromatic | Other questions? | 18:51 | |
| I know that bacek had some conceptual questions about destination PMCs. | |||
| NotFound | Talking about setstdin and family... The stdhandle method in ParrotInterpreter is documented experimental. | 18:52 | |
| Is time to delete that line? | |||
| pmichaud | I think bacek's questions arise from the vtable code still containing remnants from when add $P2, $P0, $P1 re-used the PMC in $P2 instead of creating a new one. | ||
| I could be wrong about that, though. | 18:53 | ||
| allison | NotFound: depends on whether it's been well-tested | ||
| NotFound | There are tests, but I don't know if is being used in realistic situations. | 18:54 | |
| allison | NotFound: then best to do some "real world" testing before considering it stable | 18:56 | |
| NotFound | Ok | ||
| I think bacek question is about yesterday discussion about possible deprecation of the *dest parameter in several vtable functions, yes. | 18:57 | ||
| pmichaud | I think the determining whether the behavior of something like 'add' should be governed by the intent of the opcode or by the design of the underlying PMC | 18:58 | |
| *determining factor is | 18:59 | ||
| if we think that add $P2, $P0, $P1 should always construct a new PMC with the sum of $P0 and $P1, then the dest parameter is a little superfluous | |||
| if we think that there may be some PMCs where we'd like to re-use an existing destination PMC in an 'add' opcode, then the dest parameter remains part of the API but is unused by the standard Parrot MCs | 19:00 | ||
| NotFound | And error prone. | ||
| pmichaud | *PMCs | ||
| allison | The core PMCs don't use the added destination parameter anymore | ||
| chromatic | This is because we don't have well-defined reference or value semantics. | 19:01 | |
| pmichaud | Correct. The question as it stands now is whether that destination parameter should remain in the VTABLE interface or be discarded. | ||
| allison | but, that's different than removing the ability to allow any PMC ever to reuse a PMC header for the destination | ||
| particle | it's my understanding that pmcs are containers, aka references | ||
| pmichaud | particle: I think PMC registers are references; I'm not so sure about the PMCs themselves. | 19:02 | |
| allison | chromatic: no, it's because we do have well-defined semantics (now) and they involve not morphing PMC destinations | ||
| chromatic | I'm not sure about autoboxed primitives. | ||
| particle | yeah, it's the autoboxing/proxy pmcs that are under question here | ||
| pmichaud | I don't think that's the question either, at least not for bacek's work | 19:03 | |
| allison | autoboxing primitives is irrelevant for destination PMCs | ||
| If you say add $I0, $P1, $P2, it's a syntax error, not an autobox | 19:04 | ||
| particle | sure, that opcode doesn't exist | ||
| pmichaud | anyway, my vote is to keep the existing vtable interface as it is, to preserve the possibility of some PMC types to re-use destination PMCs | ||
|
19:04
japhb joined
|
|||
| allison | mine as well | 19:04 | |
| pmichaud | NotFound: I suggest that in the core PMCs we change that last parameter from *dest to *unused to make it clear that it's not being used. | 19:05 | |
| NotFound | The problem I see is that pasing an unused destination from the ops, and allowing non-core PMC to use it opens a door for obscure and difficult to catch bugs. | ||
| allison | NotFound: the ops have to pass the destination parameter, so that PMCs that want to use it can | 19:06 | |
| pmichaud | NotFound: I would prefer to keep the functionality (and recommend against it) than to close it off permanently/altogether. | ||
| allison | I wouldn't even recommend against it | ||
| A language that has the semantics of morphing the destination can use it | |||
| pmichaud | okay, then, recommend against mixing those PMCs with the core PMCs :-) | ||
| allison | A language that creates a new destination, doesn't use it | 19:07 | |
| particle | like, say, an int promoting to a bigint | ||
| NotFound | In that case, better that language use his own opcode, IMO | ||
| particle | colud morph the destination | ||
| allison | they can mix too, it's just that the vtables that do morphing have to pay attention to core types | 19:08 | |
| allison reareading comment stream to see if missed anything... | |||
| I'm okay with calling those "unused" in the core PMCs, but keep them as "dest" in default, so people have an indication of what it's meant for | 19:09 | ||
| pmichaud | +1 | 19:10 | |
| NotFound | +1 | ||
| chromatic | I'm less convinced. | ||
| I don't care for the conceptual weight of keeping around an unused feature we think some language somewhere might use, which the core committers can't get right reliably. | |||
| If there were a stronger use case -- if someone could show me an example where this feature really makes an implementation easier or more reliable -- I'd feel more comfortable. | 19:11 | ||
| NotFound | My +1 is for the renaming of the parameter, not against the deprecation proposal. | ||
| allison | it makes something possible that would otherwise be impossible | 19:12 | |
| Parrot isn't about dictating semantics | |||
| it's about providing tools to implement a variety of languages | |||
| NotFound | I think that this is the possibility of breaking the expectations of a lot of reusable code. | ||
| chromatic | Sure, but I'm asking if that feature is 1) useful 2) not obscure 3) possible to implement sanely and correctly 4) worth the baggage of maintenance given 1-3 | 19:13 | |
| allison | Unless someone is checking to make sure the pointer of the result is different than the one that was previously stored in the register, they won't even notice | ||
| NotFound | If the core PMC doesn't use it, people will assume that it must never will be used, without carefully reading the docs. | ||
| allison | think about adding large matrix structures | 19:14 | |
| do you really want to require that they always return a new PMC? | |||
| NotFound | Yes | ||
| chromatic | I thought that's why we had i_add | ||
| allison | expensive | ||
| pmichaud | (NotFound: fwiw, at one time we did have separate opcodes for the two behaviors, but Parrot ended up standardizing on one.) | ||
| allison | aye, we standardized because "add" was the strange one | 19:15 | |
| so we took back the unmarked names for the "normal" behavior, and removed the variants | |||
| chromatic | Okay, so the justification is "Let's keep a confusing feature we don't use (and couldn't get right when we did use it), because a language might want to use it in the future, and an operation in that language might be slow without it." | 19:17 | |
| NotFound | allison: I think that PMC used for large matrix will be rarely passed to functions no specific for him. | ||
| allison | I don't see what's confusing about having access to the return result within the operation | ||
| I could imagine Perl using it to check the context of the assignment | 19:18 | ||
| pmichaud | Oooh. | ||
| allison | you have all three registers in the op anyway | ||
| we're just passing all three registers along to the vtable function | |||
| instead of cutting off one | |||
| pmichaud | we're allowing the (dest) PMC to act as an INOUT instead of just OUT | 19:19 | |
| allison | yes | ||
| NotFound | The confusing point is: you cannot write a = b + c without first nulling a if you want to be sure that some unknown pmc does not the expected thing. | 19:20 | |
| pmichaud | NotFound: *if* you're using something other than the core PMCs | 19:21 | |
| NotFound: it's not an issue for the core pmcs | |||
| allison | If some unknown PMC does something you didn't expect, it's because you didn't read the documentation for the unknown PMC | ||
| NotFound | pmichaud: If I write a reusable function I don't know what type of pmc someone can pass to it. | ||
| pmichaud | NotFound: then the unknown PMC needs to know how to handle that case as well. | 19:22 | |
| NotFound: I do understand your point, however. | |||
| NotFound | pmichaud: yes, but I don't expect that all writers and users of that type functions will be enough careful. | ||
| allison | NotFound: for the most part, it really doesn't matter what PMC header the result has | ||
| pmichaud | and you're correct, it can mean that code compiled in one HLL would not be able to effectively use the PMCs from another. | 19:23 | |
| chromatic | ... which subverts one of the points of PMCs and vtables. | ||
| NotFound | allison: that is the problem: in the rare cases, people will break is heads trying to catch the bug. | ||
| s/is/his | 19:24 | ||
| allison | we're going down the road of "we shouldn't give people powerful features because we might misuse them" | ||
| which really isn't the Parrot philosophy | |||
| pmichaud | however, Parrot philosophy is to try to avoid things that would tend to make HLLs incompatible. | ||
| chromatic | How about "We shouldn't give people features that are difficult to get right without a very good reason for them." | ||
| allison | it's pretty simple for a language that uses this kind of semantics to make sure it only uses them for its own types | ||
| NotFound | But the question is if the power from that source is enough to justify the cost. | 19:25 | |
| allison | there's not much cost to passing along a single extra pointer | ||
| chromatic | If your language doesn't support dest semantics, you need to null $Px every potential inout PMC. | ||
| For *every* three-arg op. | |||
| allison | chromatic: huh? | ||
| chromatic | At least for code you intend to be somewhat generic. | ||
| pmichaud | allison: if my code does | 19:26 | |
| add $P2, $P0, $P1 | |||
| assuming that $P2 will always get a new PMC | |||
| NotFound | allison: The cost is to verify that all functions that potentially have that problem nullify the destionation before using affected opcodes. | ||
| pmichaud | but then I end up running my code where $P0 has a vtable that assumes re-use of the dest PMC | ||
| then we're likely to end up with a failure/incompatibility. | |||
| i.e., if $P0 is a foreign PMC that has the "reuse dest" semantics. | 19:27 | ||
| so the only way my local HLL can guard against that is to null $P2 prior to each call to 'add' | |||
| to indicate to the foreign VTABLE_add that "I really expect a new PMC here." | |||
| NotFound | And we can be sure that lots of people will make that assumption without even knowing they do. | ||
| allison | you could go that far, yes | ||
| but of course, anyone who's writing vtable functions could also modify all the source parameters too | 19:28 | ||
| it's only a convention that they don't | |||
| chromatic | It's a strong convention that we don't encourage with the nature of our interfaces. | ||
| NotFound | allison: we have RO for that, but you can't make the destination RO | 19:29 | |
| allison | so it's also a convention that if your assignment semantics involve modifying the destination, you only do it for your types | ||
| NotFound: sure you can. Marking a PMC as RO applies in any context | |||
| NotFound | allison: making a destination RO is effectively making it a non-destination | 19:30 | |
| allison | but again, it'd be kind of overkill to mark all your PMCs as RO just before passing them into an op, just to make absolutely sure no one modifies it | ||
| NotFound | allison: no, but you can use it for testing and bug hunting | ||
| allison | this is running kind of long for a parrotsketch | 19:31 | |
| I suggest moving it off to #parrot or the mailing list | |||
| NotFound | +1 | ||
| allison | were there other questions? | 19:33 | |
| chromatic | That was the only one I remember and thought to bring up here. | 19:34 | |
| allison | Roadmap review? trac.parrot.org/parrot/report/14 | ||
| The only critical task is HLL export conventions | 19:35 | ||
| what's the progress on that one? | |||
| pmichaud | Good progress being made all around, there. | ||
| allison | excellent | ||
| pmichaud | I updated Rakudo's import/export functionality a bit, and both Tene++ and I are steadily moving towards something workable. | ||
| anyway, I don't see any major blockers or impediments to having something in place for 1.3 | 19:36 | ||
| allison | good | ||
| any objections to moving packfile pmcs, vtable swap and pirc to 1.5? | |||
| pmichaud | no objection here. | 19:37 | |
| allison | (don't want them landing just before 1.4, even if they did happen to be ready) | ||
| chromatic | Why not vtable swap? | ||
| Except for the fact that there's one conceptual question about it. | 19:38 | ||
| ... and I haven't made progress on it. | |||
| allison | it's a fairly fundamental change, so will need some time to shake down | ||
| better to merge it right after a supported release than just before | |||
| (that is, if it's done by then) | 19:39 | ||
| chromatic | It's not as big a change as you think, but it does affect some of the grottiest PMCs, so I can see the point. | ||
| pmichaud | gotta run here -- bbiaw | 19:40 | |
| allison | that's pretty much it for this week | ||
| any other questions/comments before we go? | 19:42 | ||
| alright, that's a wrap, thanks everybody! | 19:43 | ||
|
19:43
Util left
19:44
chromatic left
19:47
particle left
19:53
jonathan left,
darbelo left
20:06
PacoLinux left
20:12
pmichaud left
20:51
eternaleye joined
21:07
NotFound left
21:10
mberends left
21:50
Whiteknight joined
|
|||