Parrot 0.9.0 | parrot.org/ | 479 RTs remain
Set by moderator on 10 February 2009.
00:08 AndyA joined
Whiteknight can't wait to be done with this stupid branch 00:09
Coke-really-afk chromatic: I cannot reproduce it right now because fperrard broke the PGE build on feather, so I can't do anything with valgrind. 00:18
Coke msg chromatic I cannot reproduce it right now because fperrard broke the PGE build on feather, so I can't do anything with valgrind. 00:19
purl Message for chromatic stored.
chromatic thanks 00:20
Coke ah, hi. 00:26
sorry.
dalek rrot: r36563 | whiteknight++ | branches/vtable_morph_change:
[vtable_morph_change] update to trunk r36562. Fixes all errors I had. Preparing to merge back to trunk
00:45
rrot: r36564 | chromatic++ | trunk:
[PMC] Removed a check in NameSpace PMC which prevented the addition of Subs to

with a name directly later with set_global. See TT #56. Now you can insert them in a namespace later.
00:55
00:55 Limbic_Region joined
rrot: r36565 | cotto++ | trunk/t/benchmark/benchmarks.t:
[gc] redo clobbered DOD->GC name change
01:11
rrot: r36566 | cotto++ | trunk:
[gc] rename Parrot_shared_DOD_(un)?block to Parrot_shared_gc_(un)?block
01:13
Whiteknight stupid piece of shit SVN won't let me merge my branch into trunk 01:16
chromatic It's haunted.
kid51 Why not? Conflicts? 01:17
kid51 has to give a talk about SVN branching and merging at $job tomorrow.
Whiteknight svn: working copy path t/src/embed.t does not exist in the repository
kid51 What was your merge command?
Whiteknight svn merge -r36396:HEAD --force svn.parrot.org/parrot/branches/vta...rph_change
kid51 I'm not familiar with that syntax. 01:18
Whiteknight what syntax should I use? I'm a relative SVN newbie
of course, it's always worked for me in the past 01:19
and in either case, t/src/embed.t does exist everywhere that I look for it
kid51 This is 'svn merge' variant #3 in 'svn merge --help' -- correct?
Whiteknight I guess 01:20
chromatic You probably need to merge from trunk again.
Whiteknight craptastic
chromatic We commit too much.
cotto I'll hold off any commits until you've got the merge, if that helps,
s/,$/./ 01:21
Infinoid Whiteknight: t/src/embed.t is renamed from t/src/compiler.t, if it helps
kid51 has never used the --force option to svn merge
cotto the force is not with kid51 01:22
Whiteknight I only tried --force because it wasnt working otherwise 01:23
kid51 cotto: Too true
dalek rrot: r36567 | whiteknight++ | branches/vtable_morph_change:
[vtable_morph_change] another update
kid51 Whiteknight: do you want we to do a 'svn co' of branch and try to merge? 01:24
Whiteknight no, it's personal for me now
Whiteknight WANTS BOOD
or blood
kid51 In that case, kid51 will start making dinner! 01:25
Whiteknight urg, same error
chromatic Did t/src/embed.t get renamed?
Or do you have local changes?
Whiteknight apparently it did
Infinoid usually with svn merges, I eventually just give up, get a clean export and rsync that into a fresh trunk checkout
Whiteknight yeah, i'm doing a clean checkout now 01:26
kid51 Coke: Re trac.parrot.org/parrot/ticket/310 : didn't we have an RT about that once upon a time?
Infinoid it's especially ridiculous because you already *did* the merge (r36563)
Whiteknight same error on a clean checkout. I give up for tonight 01:29
if anybody else has stronger SVN-foo then me, you're welcome to give it a chance
Infinoid will do.
Whiteknight t/src/embed.t exists in both repositories 01:30
dalek rrot: r36568 | cotto++ | trunk/include/parrot/thread.h:
[gc] apparently, capitalization matters in function names
01:31
Whiteknight so I don't know what it's saying doesn't exist where
Infinoid from svn's perspective, it was renamed *twice*, so its having trouble finding the base to merge from
it's just stupid.
I won't even bother with "svn merge", one rsync coming up. (don't worry, I won't clobber more recent trunk changes)
Whiteknight okay, it makes me feel better that it's not some easy solution 01:32
Infinoid feel free to submit bug reports in their tracker, of course :) 01:33
kid51 More likely: When I was writing tests for the config steps, I probably asked why one would want to manually specify PMCs. 01:35
And I probably went to some length to write a test that demonstrates that one can, indeed, specify individual PMCs to configure with via that option. 01:36
01:40 Fayland joined
kid51 Ah: here's what I was thinking of: first post in rt.perl.org/rt3/Ticket/Display.html?id=43172 01:44
Infinoid Whiteknight: was r36567 a pure merge, or were there any local changes?
dalek rrot: r36569 | Infinoid++ | trunk:
Merge vtable_morph_change branch changes back into trunk. Whiteknight++, svn--, rsync++.
Infinoid Looks like I reverted some stuff by accident. One moment. 01:49
dalek rrot: r36570 | Infinoid++ | trunk:
Revert "Merge vtable_morph_change branch changes back into trunk."

I'll redo the merge, this time the hard way.
01:53
Whiteknight Thanks Infinoid++ 01:58
I'm going to bed now, too angry at computers to do any more coding 01:59
Infinoid Gives me an excuse to abuse git-svn :)
good night
svn.parrot.org seems much faster than svn.perl.org 02:06
Infinoid just did 9 branch exports in 2 minutes flat 02:07
02:15 bacek joined
kid51 Infinoid: 'branch exports': Is that git-speak? 02:43
Infinoid no, that's "svn export" 02:49
msg whiteknight Was trac.parrot.org/parrot/changeset/3...ge#file187 intentional? It snuck into an otherwise clean merge commit. 03:03
purl Message for whiteknight stored.
shorten Infinoid's url is at xrl.us/beftdq
Infinoid cherrypicked merge successful. \\o/ now to test it 03:19
03:22 tetragon joined
Util_away purl, seen sahadev? 03:26
purl sahadev was last seen on purl 3 years, 219 days, 11 hours, 13 minutes and 17 seconds ago, saying: <private message> [Jul 7 16:12:49 2005]
03:36 janus joined
dalek rrot: r36572 | Infinoid++ | trunk/src/io/win32.c:
[cage] Trim whitespace to pass c_parens.t.
03:44
kid51 dalek: Why haven't you posted 36573 yet? 03:54
Infinoid dalek has been having some trouble in the last couple of days. It's on my list.
nopaste "Infinoid" at 75.28.75.73 pasted "Test failures in merged vtable_morph_change tree" (11 lines) at nopaste.snit.ch/15579 03:56
"Infinoid" at 75.28.75.73 pasted "BigInt segfault in merged vtable_morph_change tree (attempt to access "bi" ATTR through NULL data pointer)" (22 lines) at nopaste.snit.ch/15580
"Infinoid" at 75.28.75.73 pasted "Summary patch for vtable_morph_change branch merge. (Applies cleanly to r36572)" (946 lines) at nopaste.snit.ch/15581
Infinoid msg Whiteknight I didn't apply the merge results to trunk, as I got some bigint-related test failures. See nopaste.snit.ch/15579 and nopaste.snit.ch/15580. git pull git://squawk.glines.org/merge-branch-vtable_morph_change or apply nopaste.snit.ch/15581 to get the merge results.
purl Message for whiteknight stored.
Infinoid There, now on to dalek.
kid51 Infinoid: thanks 04:03
kid51 must sleep
purl $kid51->sleep(8 * 3600);
04:32 contingencyplan joined 04:37 ask joined
basic Infinoid: we've got another student working on it, i think he's making progress (email2trac). I've got a really busy week and don't have much time to work on getting it working, it's still really close last i checked, some issue with permissions between postfix and apache. We can test that in house though, so no need to send more test emails for now 04:37
Infinoid Ok, thanks for the update, hope your week goes well
04:49 tetragon joined 04:58 dalek joined
Infinoid that should fix the partcl parser, and hopefully make the parrot parser no longer skip any revisions. 04:58
dalek rtcl: r326 | wcoleda++ | trunk/src/ (4 files):
Track rename of string_length
allison@perl.org | Debian/Ubuntu chroot Environment Setup: 04:59
link: www.perlfoundation.org/parrot/index...ment_setup
shorten dalek's url is at xrl.us/beesjm
Infinoid uh, that wasn't a new partcl rev, dalek
05:16 jimmy joined 05:20 jimmy left 06:05 Tene joined 06:08 iblechbot joined 06:13 mikehh joined 06:43 rurban_ joined 07:04 Andy joined 07:14 uniejo joined 08:21 iblechbot joined 08:48 bacek joined 09:09 masak joined
dalek rrot: r36574 | rurban++ | trunk/t:
[t] Fix the last mingw smoke errors. TT#313
09:14
09:15 alvar joined 09:28 riffraff joined 09:38 bacek joined
dalek rrot: r36575 | chromatic++ | trunk/t:
[t] Marked -0.0 tests as TODO instead of failing on MSWin32 and OpenBSD, per
09:41
10:13 AndyA joined
dalek kudo: 7b4118d | jnthn++ | Configure.pl:
[config] Configure needs to translate forward slashes in makefile to backwards ones for Win32, as Parrot's Configure did. Otherwise the build silently misses a bunch of important bits!
10:33
shorten dalek's url is at xrl.us/beft37
mikehh perl Configure --optimize --test is failing tests after configure as at r36575 10:48
specifically t/tools/pmc2cutils/00-qualify Failed test: 5 10:50
t/tools/pmc2cutils/04-dump_pmc Failed test: 63
t/tools/ops2pm/00-qualify Failed tests: 8-9 10:51
and prove fails on these tests after the build - make world 10:55
running make test now 11:00
ok make test passes 11:04
11:06 kid51 joined
dalek kudo: d668ca9 | jnthn++ | src/classes/ClassHOW.pir:
Fixes to make sure dispatches on proto-objects work correctly; resolves RT#62894.
11:37
shorten dalek's url is at xrl.us/beft6u
dalek rrot: r36576 | fperrad++ | trunk/languages/pipp/config/makefiles/root.in:
[Pipp] add a target 'codetest'
11:42
rrot: r36577 | fperrad++ | trunk/languages/pipp:
[Pipp] fix some coding standards
11:44
11:47 Gerd joined
dalek kudo: 59024e0 | jnthn++ | src/classes/Object.pir:
Fix .clone to deref ObjectRefs properly by calling !DEREF, which follows chains. Resolves RT#62828.
11:52
shorten dalek's url is at xrl.us/beft7a
dalek rrot: r36578 | jkeenan++ | branches/update_pod/t/doc/pod.t:
In the middle of modifications. Not stable.
12:11
12:31 rg1 joined
dalek rrot: r36579 | rurban++ | trunk/t:
TT #313 win32 (mingw + msvc)

  - fix complex todo error introduced by r36575
  - clarify "inf is not platform-independent" for win32 msvc only, todo added
All win32 arithmetic tests should pass now
12:57
kudo: 1beabec | jnthn++ | src/ (3 files):
We need to call .clone() rather than just using Parrot's clone vtable method fairly generally, I expect. This does that in a couple of places, which in turn resolves RT#63002 and gets an integration test passing.
13:01
shorten dalek's url is at xrl.us/befubr
13:05 Whiteknight joined 13:10 iblechbot joined
Infinoid Oh spam, how I love you so. When you order a new internet connection, you can always tell when it's gone live because you start getting SMTP connections. 13:16
It's like the cosmic internet background radiation.
Whiteknight Infinoid, how did that branch merge go last night? 13:19
Infinoid thinks Whiteknight just got ambushed with purl messages
Whiteknight yeah, I'm going through them now
Infinoid :)
Whiteknight so....what happened? 13:20
Infinoid I'm sitting on the patches here hoping we can resolve the bigint failures first 13:21
Whiteknight stupid bigint failures
I'll have to take a look at them tonight unfortunately 13:22
Infinoid I've got a little time before work today, so I'm hoping to make some progress soon 13:24
Whiteknight this whole thing is such a damn mess
Infinoid Also, I've tweaked dalek again. Please yell at me if you notice any more commits being dropped
Whiteknight okay, will do 13:25
I must have missed that one commit during one of the merges 13:27
stupid merges
Infinoid Now that I've got it in git, it'll be easier to track trunk 13:28
Whiteknight I guess I really need to get git now. This isn't the first problem I've had with sloppy SVN merging behavior, and certainly won't be the last 13:29
not with the rate that I create branches
szbalint svn--
Infinoid well, git doesn't always help much directly with svn branches, but it is damned nice for cleaning up the result 13:30
Coke (missing file t/src/embed.t) be very careful when doing svn merges on renamed files, or you can easily lose changes. 13:53
(rename file in branch a. edit file in branch b. merge file from a to b. commit; lose changes you made in b) 13:54
Whiteknight yeah, found that out the hard way 13:55
Coke Infinoid: what shoudl fix partcl's what? 13:56
13:57 tetragon joined 14:02 gryphon joined
Infinoid Coke: dalek's partcl rss parser had a problem when the commit covered multiple files. e.g. irclog.perlgeek.de/parrot/2009-02-09#i_895579 14:02
I fixed that, hopefully.
googlecode's formatting for those things is weird
dalek kudo: fba805c | jnthn++ | src/parser/grammar.pg:
Add panic on malformed declaration, as seen in STD.pm (with note on our little difference against STD.pm). Also we accidentally parsed/passed a private method test; add something to mitigate that to keep the spectests clean.
14:06
shorten dalek's url is at xrl.us/befufa
pmichaud good morning 14:07
14:08 knewt joined
knewt before i start going looking, anyone know off the top of their head what the current state of documentation is like? 14:09
moritz knewt: whiteknight was looking for readers/reviewers 14:11
and the status as always is "needs more work"
Whiteknight documentation in some places is pretty good
docs/book/ is in decent shape now. Some of the other miscellaneous docs are out of date though
14:12 alinbsp joined
jonathan morning pmichaud 14:12
pmichaud (clone) I'm thinking that for language interop we need to bias towards the Parrot ops instead of the methods. 14:14
jonathan Hmm. True. 14:15
Didn't we decide that we would catch those and re-dispatch to the methods, though?
pmichaud yes.
I think.
jonathan It's a tad tricky for clone...
But we can do that somehow I expect.
pmichaud that's what I tend to do for most vtable methods on Rakudo objects
jonathan We still need access to Object PMC's clone...
pmichaud anyway, we don't need to change/fix anything immediately 14:16
that's just my general bias at the moment.
jonathan Sure. I think if we can get .clone() working right, then later on we should be able to work the re-dispatch into it.
pmichaud right
jonathan BTW, do you agree that in general we should favor calling .clone() within Rakudo over the Parrot op?
pmichaud depends on what you mean by "within Rakudo" 14:17
jonathan I've fixed a bug by doing that...since our clone understands that it needs to deref.
OK, in things like postfix:++ that does a clone.
pmichaud right, that's what I was referring to. I'm thinking that in general we should favor the Parrot op
for language interop reasons.
jonathan Well, if that will just re-dispatch to .clone() then we may as well, in the ops, just call .clone() 14:18
IMHO
pmichaud foreign objects won't redispatch to .clone, though.
jonathan Ah, true...
pmichaud foriegn objects might not have a .clone
jonathan Yes. 14:19
Grr.
pmichaud anyway, it's something we can worry about later
jonathan Sure.
Working first, then better interop. :-)
Can I point you at a copule of tickets?
pmichaud I just didn't want us to start doing a wholesale "change vtable to methods" switch throughout the codebase only to discover we need to switch them all back.
sure.
jonathan rt.perl.org/rt3/Ticket/Display.html?id=58676
I think that this now dos the type-check it should. 14:20
However, Foo.new ~~ Foo dies (Foo.new("") ~~ Foo works though)
pmichaud I'll be having to re-do .new on Match/Grammar objects 14:21
right now it's using PGE's .new, which was a long-time-ago guess as to how things would work
(and PGE's .new requires an argument, I think)
jonathan OK 14:22
pmichaud I'm fine with closing #58676 -- the issue there has been resolved.
jonathan But since the ticket is saying it should do a type-check...right, that was my feeling.
Also, masak gave me a list of tickets that mattered most to him. Two were already fixed, I fixed the rest apart from one today.
Which is rt.perl.org/rt3/Ticket/Display.html?id=62704
I figured you'd have a good idea on what it should do, etc. :-) 14:23
pmichaud well, technically $/ _is_ returning a Match object.
it's just not a Rakudo Match.
jonathan OK. I'll leave the ticket/responding etc with you. :-) 14:25
pmichaud yes, that's fine. The spec isn't very clear on the relationship between Match objects and Grammars 14:26
Infinoid Whiteknight: Oh, I figured it out. Your VTABLE_get_integer addition to class.pmc doesn't work for bigints, because get_integer() has special meaning for integer types. When default.morph() tries to get the integer from the BigInt class object, it thinks you're trying to get the value of the bigint, but since the class object doesn't have an attr array, bam, segfault. 14:27
(20 frames down the stack, the code in question was originally trying to upgrade an integer due to a modulus() call that involved some bigints.) 14:28
Coke rant: our pmc internals suck.
modulus - ooh, i wonder if that's related to my occasional 2%0 errors.
(in partcl)
14:28 gryphon joined
Coke I am wondering why we don't just use Hash for our attrs. 14:29
pmichaud Because that would be too much like Perl.
Infinoid We do, internally.
dalek kudo: 1b7a3e3 | jnthn++ | src/parser/grammar.pg:
A few more panics on malformed code from STD.pm. Resolves RT#59828.
Infinoid Oh, the other attrs
shorten dalek's url is at xrl.us/befug2
Coke the GET_ATTR stuff is hitting actual struct members, no?
(which are auto-gened when the pmc is built?) 14:30
Infinoid Yeah, I was thinking of the prop hash, which is different
Coke pmichaud: perl, which works, and doesn't segfault quite so much? =-)
pmichaud Coke: I don't agree with the reason; I just suspect that _is_ the reason.
Infinoid Coke: I kinda doubt the partcl is related... I'm debugging the vtable_morph_change branch, the code hasn't hit trunk yet 14:31
err, the partcl issue you're seeing
Coke fair enough. I have a modulus related segfault that's been open for months, was just hoping. 14:33
Coke is >this close< to just reverting fperrad's change that broke PGE on feather.
Infinoid Okay, I'm game. Got a ticket and/or a backtrace?
pmichaud 10 characters apart? That doesn't seem very close. :-) 14:34
Coke Infinoid: trac.parrot.org/parrot/ticket/66
pmichaud: yah, that's why I haven't done it yet. :P
is the tcl one. 14:35
the PGE one is:
trac is also slow
purl okay, Coke.
Coke trac is also REALLY slow
purl okay, Coke.
Coke trac.parrot.org/parrot/ticket/261 14:36
(for Infinoid, pge/feather segfault)
Infinoid Yeah, modulus bugs sound a lot less intimidating to me than PGE bugs do
pmichaud note that the failure to build PGE is _not_ a PGE bug.
Coke given that it's a segfault, it pretty much couldn't be. 14:37
Infinoid: of those two bugs, I suspect the one that's stopping PGE is easier to fix.
(because you don't need all of tcl)
I was unable to whittle down #66 to a small test case.
pmichaud what was fperrad's change that broke PGE on feather?
Coke pmichaud: it's in the ticket. moment. 14:38
Whiteknight Infinoid: good catch. The morph vtable should only be taking Class PMCs, not just any random joe schmoe pmc
pmichaud oh, r36176
Coke "Looks like the segfault started happening in r36176."
< set P0["has_exec_protect"], "1"
is probably the culprit (it's no longer present in the config after that change) 14:39
Infinoid Whiteknight: The caller is VTABLE_morph(interp, dest, SELF->vtable->pmc_class); (bigint.pmc:1143)
jonathan pmichaud: Parsing/precedence question. Should these two be the same:
ok (my Num::Multiple $d = 10), "creating a new Num::Multiple";
Infinoid that should be a Class PMC, right?
jonathan ok my Num::Multiple $d = 10, "creating a new Num::Multiple";
pmichaud jonathan: yes, but Rakudo doesn't know how to do item assignment yet.
jonathan OK.
Whiteknight Infinoid: I believe it should be
pmichaud s/do/parse/
jonathan I thought so.
Whiteknight although for a built-in type like BigInt, it might not be 14:40
Infinoid Right, so that class object has overridden a vtable it shouldn't have
jonathan The test is actually testing someone else, rather than that, and will pass if it put in the parens.
*if I
Infinoid Whiteknight: Well, you know this stuff far better than I :)
pmichaud I'm fine with adding the parens to the test. Reads better, also.
Whiteknight can you replace that line with pmc_reuse(interp, dest, SELF->vtable->base_type, 0); ?
Infinoid will do, one moment
Whiteknight thanks Infinoid++ 14:41
I'm wondering why I didn't see that failure myself on this machine
Infinoid Whiteknight: ok, that crashed in a different place 14:42
Whiteknight yay!
can you email me the patches you have and I can just play with it locally?
because apparently there is much more work to do
Infinoid in fact, it got a *lot* farther
Can do. Expect an Official-Looking Stgit Patch Series 14:43
14:45 rurban_ joined
Coke ponders highlighting a ticket each week in TWIP 14:50
rg like perl's todo of the week? 14:51
i was wondering if they had any success with that
moritz they had some (limited) success
Infinoid Whiteknight: sent. 14:52
bbl &
Whiteknight thanks!
dalek kudo: cad0468 | jnthn++ | src/classes/Grammar.pir:
Implement .parsefile method on Grammar.
14:55
shorten dalek's url is at xrl.us/befujz
Coke rakudo folks: just moved 61744 into your queue. 14:59
pmichaud Coke: Thanks. I suspect it's just a build problem that has since been fixed. 15:02
moderator Parrot 0.9.0 | parrot.org/ | 468 RTs remain 15:05
15:17 NotFound joined
NotFound hi 15:17
purl salut, NotFound.
dalek kudo: 8b8095c | jnthn++ | src/classes/Grammar.pir:
Avoid an infinite exception handler loop by popping a handler before calling Rakudo's 'die'. Resolves RT#62700.
15:21
shorten dalek's url is at xrl.us/befuno
dalek kudo: 1a2f50c | jnthn++ | t/spectest.data:
Add S05-grammar/parse_and_parsefile.t to spectests.
15:23
shorten dalek's url is at xrl.us/befunq
Whiteknight I like having all the rakudo commits coming through here. It's cool to see what other people are doing 15:27
15:27 iblechbot joined
jonathan tries to decide if 8b8095c reveals a Parrot bug or not... 15:28
szabgab jonathan, pmichaud ping
pmichaud szabgab: pong (more)
szabgab hmm, why do I ping when you are here talking?
pmichaud szabgab: I received your email -- will write a reply soon 15:29
szabgab great
jonathan szabgab: Same here.] 15:30
pmichaud szabgab: my talk abstracts are www.perlworkshop.no/npw2009/talk/1741 and www.perlworkshop.no/npw2009/talk/1742
szabgab just wanted to say that if you want to discuss it on chat that's great too, I am here
jonathan pmichaud: In 63154 did you mean to change RT ticket status to rejected? 15:31
pmichaud jonathan: is that the :lang(Perl6) ticket?
jonathan pmichaud: aye
szabgab: I will upload my slides from Bulgarian Perl Workshop soon.
pmichaud jonathan: no, I'm going to leave it open for now, so that I'll remember to do the PGE/HLL stuff.
jonathan Essentially though, one of them is basically a kinda Perl 6 tutorial.
Though more in the "run-through of lots of cool stuff" than the "hands on" sense. But it essentially goes from the basics through lots of stuff. 15:32
pmichaud I think having a one-day Perl 6 training course would be excellent.
szabgab those two of pmichaud don't seem to have much overlap with what I would teacg
maybe the the tutorials of jonathan 15:33
pmichaud and no, my talks would not overlap. Since jonathan was already doing "cool things with Perl 6" I didn't submit that
jonathan: how long is your tutorial talk for NPW?
jonathan Checking...
szabgab I am not sure I would (or even can) do cool things with Perl 6
just simple tasks
jonathan It's different lengths in various places I'm giving it! 15:34
Duration: 90 minutes
purl i think 90 minutes is a long time
pmichaud anyway, I think there's room for both a one day tutorial and a shorter 90-minute talk
jonathan szabgab: My talk is not hands on at all.
pmichaud but yes, there'd be some overlap.
jonathan: I'm eager to see your talk slides, btw.
jonathan I'm not even trying to give people time to try stuff - I just want to cover too much ground etc. 15:35
szabgab yeah I am quite sure, on the other hand I have more material than what I need for one day
or I'll have more by that time
pmichaud my frozen perl slides are www.pmichaud.com/2009/pres/fp-perl6
szabgab so I can skip stuff jonathan already covers
jonathan szabgab: I expect we'd overlap a lot, but the audience may be different.
People who want to sit down and play with Perl 6 and be able to have time to try lots of stuff during the tutorial, would be better served by what you're doing.
Mine is more, "here's lots of the cool stuff that you can do today in Rakduo" 15:36
pmichaud yes, that's what mine was.
I did things with hyperoperators and reduction operators and the like.
oh, and hash sorting/output :-)
jonathan But I do go through basic syntax-y stuff too.
Basically so people can follow what comes later. 15:37
I'll get the slides off my laptop and uploaded later on today...
szabgab so I think what I can do is really give them lots of hands-on time with short explanations
pmichaud oh, would this tutorial be during the hackathon?
szabgab yes, it would be one of the days
pmichaud because one of the purposes of my talk is to get people up-to-speed on hacking on Rakudo itself 15:38
(that's also why it's 90 mins :-)
jonathan If szabgab's thing is more exploratory then it'd perhaps get people to the hackathon to learn and play with Perl 6 more, who wouldn't come if it was just being sold as a "hacking on the guts" event, perhaps.
pmichaud it would be better if a Perl 6 tutorial occurred on the first day of the hackathon, then, since by that time I expect we'll be writing settings (prelude) in P6 15:39
szabgab yeah so I thought to do it on the first day so they can go a lot deeper in Perl 6 and then let them out to the hackathon for the 2 other days
Coke for the cool stuff talk, would be nice if the abstract said "and here's how you can have an up to date copy of perl6 on your laptop while you're sitting in here watching me type."
jonathan Coke: I did try this before, but people found it was more a distraction, in a fast-paced talk like the one I was giving.
szabgab I'll cover that in the hands-on 15:40
jonathan Right.
szabgab I might even hand out virtual box images ready made with everything
jonathan Nice!
pmichaud speaking of "have an up-to-date copy" -- anyone have any more thoughts about our recommended "get a copy of parrot" procedure should be for Rakudo? 15:41
Coke (virtual box images) that's a todo for jhorwitz at some point.
pmichaud: fix parrot so that you can build rakudo from an installed parrot.
pmichaud Coke: I have my doubts that this will happen in a timely manner. 15:42
szabgab I can prepare such virtual box right now
in fact I'll need those next week already
particle1 szabgab: trac.parrot.org/parrot/wiki/Parrot...lAppliance
Coke barring that, either doing it as a subdir of parrot or having parrot as a subdir of rakudo is fine.
(though I would just pick one.)
pmichaud Coke: yes, but I'm thinking more of "how does one get parrot", not "where does it go" 15:43
szabgab they won't even need to know that as their already configured IDE will run their code :-)
Coke pmichaud: provide a make target that does an svn checkout of the version you want, along with a diagnostic output if someone doesn't have the svn command line (like for tortoise) 15:44
szabgab let me see how much of that virtual box I can prepare till GPW
pmichaud Coke: but in general I don't have a Makefile until _after_ we have a built Parrot
particle aargh. -0 changes to fix again.
jonathan -O ?
purl well, -O is the logging info
jonathan Oh, -0. 15:45
purl -0
pmichaud szabgab: if you could write up a procedure (or script) that describes how to create the virtual box, we could possibly do virtual box versions as part of Rakudo releases.
Coke pmichaud: then make it part of your Config process?
"I see you don't have parrot... grabbing a copy..."
szabgab pmichaud, I'll do that as much as I can
pmichaud maybe it should be --grab-parrot option to Configure 15:46
Coke if parrot's not in the expected location, die and suggest that option?
pmichaud yeah, that works.
Coke if it is in the expected place, perhaps optionally check that 'svn info' is what you expect. 15:47
(I'd just make that a warning, though.)
pmichaud I'll probably check the 'revision' value of parrot_config
Coke as long as you don't mind building parrot before checking the version is right, that works. 15:48
pmichaud we have to build parrot before we can complete Configure, yes.
but yes, we could do the check before building parrot.
Coke can always do the easy parrot_config check now and make it check earlier if folks complain. 15:49
pmichaud jonathan: is Configure.pl working now for you on Win? 15:51
jonathan: i.e., can I chop out the 'reconfigure.pl' commented-out stuff?
jonathan pmichaud: Yes.
And yes.
pmichaud excellent.
jonathan Took a couple of small patches. 15:52
rakudo: our $x = 42; eval('our $x; say $x;')
polyglotbot OUTPUT[42␤]
Coke rakudo: our $x = 42; eval('say $x') 15:55
polyglotbot RESULT[undef]
15:55 Tene joined
jonathan rakudo: module Foo { our $x = 42; eval('our $x; say $x;') } 15:55
polyglotbot OUTPUT[Use of uninitialized value␤␤Null PMC access in set_pmc_keyed()␤current instr.: 'eval' pc 17000 (src/builtins/control.pir:338)␤called from Sub 'parrot;Foo;_block20' pc 129 (EVAL_20:59)␤called from Sub 'parrot;PCT;HLLCompiler;evalpmc' pc 888 (src/PCT/HLLCompiler.pir:494)␤called from Sub
..'parrot;PCT;HLLCompiler;compile' pc 428 (src/PCT/HLLCo...
Coke rakudo: our $x = 42; eval('our $x = 3.14'); say $x
polyglotbot OUTPUT[3.14␤]
pmichaud wow, $800 round trip airfare to Oslo. 16:01
I think I should probably book now. :-)
jonathan Wow! 16:03
That's almost cheaper than a beer in Oslo. ;-) 16:04
Whiteknight rakudo: say (1, 2, 3, 4, 5, 6) >>+>> (10, 20);
polyglotbot OUTPUT[112223242526␤]
pmichaud I can't imagine that the fares will go much lower than that.
Whiteknight so a hyper operator on the sharp side will extend the last element in the array outward? 16:05
rakudo: say (1, 2, 3, 4, 5, 6) <<+<< (10, 20);
polyglotbot OUTPUT[Non-dwimmy hyperoperator cannot be used on arrays of different sizes or dimensions.␤current instr.: 'die' pc 16844 (src/builtins/control.pir:204)␤called from Sub '!HYPEROP' pc 15991 (src/builtins/assign.pir:373)␤called from Sub '_block14' pc 137 (EVAL_15:56)␤called from Sub '!UNIT_START' pc
..18229 (src/builtins/guts.pir:321)␤called from Su...
Coke wonders if polyglotbot would look nicer if it actually rendered [NL] as a newline. 16:06
jonathan Whiteknight: Yes. We also have a ticket for that last bug there. :-)
Coke (perhaps only if there was more than one in the send)
pmichaud it's kind of nice that .say for 1..20 doesn't produce 20 lines of flood, though. 16:07
rakudo: .say for 1..10
polyglotbot OUTPUT[1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤]
16:11 bkuhn joined
particle rurban: ping 16:14
i may need to create a new vm and install msvc6.
dalek kudo: 45cf376 | jnthn++ | src/builtins/op.pir:
++ and -- in both their prefix and postfix forms now use infix:<=>, which means they do read-only checking properly. This corrects RT#60380, but does cause some failures in for.t since <-> is not implemented, but accidentally worked before; will fix that in my next commit.
16:16
shorten dalek's url is at xrl.us/befurf
dalek kudo: c66322e | pmichaud++ | src/builtins/match.pir:
Add 'make' function (partial RT #63152, chrisdolan++)
16:21
shorten dalek's url is at xrl.us/befuru
16:25 davidfetter joined
rurban particle: yes 16:25
16:27 kj joined
pmichaud oh, the hackathon went to three days? 16:28
I thought it was only two.
jonathan Me too
pmichaud oh well, I'm missing the third day now. 16:29
since I just booked my flight to return on the 20th.
jonathan Ah.
I thought it was only 2, but didn't book a flight yet...
pmichaud 2 days of hackathon is probably all I can handle anyway. :-P 16:31
jonathan Exhaustion is good, no? ;-)
szabgab sjn, you should send email to everyone that the hackathon is 3 days long!
particle rurban: seems you've marked todo some passing tests with msvc. i have a feeling it's msvc6-only that they should be skipped on 16:35
i'm working on a patch, but would appreciate a sanity check
rurban: can you tell me how t/op/arithmetics.t failed for Inf? 16:36
rurban trac.parrot.org/parrot/changeset/36579/ ? msvc6 perl Configure.pl && nmake test 16:44
But it's enterily msvcrt.dll specific (the shared libc on windows) 16:46
nopaste "particle" at 76.121.106.245 pasted "rurban: arith patch for msvc6 testing" (78 lines) at nopaste.snit.ch/15582
rurban You think it's the compiler version, not msvcrt? will check 16:47
particle yes, those were todo-passes here
rurban I saw your change enabling the failing -0 in r36173 16:48
I'll check both, the compiler version and the msvcrt version. If we have to workaround the print -0 we have to get at the msvcrt version on Configure anyway.
particle yes, because it didn't fail :)
yeah, right. 16:49
thank you.
dalek kudo: bb2cdb7 | jnthn++ | src/ (2 files):
Implement <-> (lambda that makes things rw), which gets S04-statements/for.t passing again.
rurban but you had a newer msvc or msvcrt
particle i'll review the shared blib patch
shorten dalek's url is at xrl.us/befuvd
rurban I have to buy some food for 20 mins
particle yes, i'm sure i do, running vista x64 and msvc2008
~~
pmichaud jonathan: does the <-> affect only those parameters that don't already have an 'is' decl? 16:50
Infinoid Whiteknight: I'm working through the bigint failures by applying the same fix to other places in bigint.pmc, it's going pretty easily. 16:51
Whiteknight that's good. It should be pretty smooth
16:51 Theory joined
rurban particle, I remember now: It canot be the msvc6 comnpiler because I get the very same results for mingw also 16:51
jonathan pmichaud: No, all...
Hmm.
particle ah, hrmm. msvcrt it is, then. that should be fun to fix :( 16:52
jonathan pmichaud: Though we don't have a way to differentiate the two.
(In the signature, we always pass along :readtype('readonly')
pmichaud how do you mean?
16:52 mikehh joined
Infinoid I'm starting to wonder if I should just do a search and replace all instances in this file, though. That way I won't have to worry about incomplete test coverage 16:52
pmichaud anyway, that's why I hadn't implemented <-> yet.
jonathan OK
pmichaud we should at least add a (failing) test for that so we come back and fix it. 16:53
jonathan I only did it because for.t started failing. ;-)
(After I fixed ++ and --)
Yeah, let me see what other tests we have...
pmichaud right-- that's why I hadn't done that fix for ++/-- yes
*yet
jonathan Heh, it's one big heap of avoidance. ;-)
pmichaud well, I didn't really like the approach of "make everything rw" 16:54
jonathan It's closer than "do nothing". :-)
pmichaud agreed.
(phone) 16:55
jonathan hmmm...I figured we'd have some tests explicitly for pointy blocks somewhere...
Hmm, maybe not
Infinoid Whiteknight: Would fixing Parrot_default_morph() to use base_type be reasonable? Or would it break other things? 16:56
Whiteknight maybe. If it's a Class, it should use the class type. Otherwise it could probably use the basetype 16:57
NotFound Calling 'abort' will be the most reasonable way X-) 16:58
Infinoid Yeah. Because crashing gracefully is so much more important than *working* :)
NotFound Interesting concept of 'gracefully" 16:59
Infinoid if you're gonna segfault, you might as well do it on purpose 17:00
particle you're checking base_type rather than isa or can or does?
HCF
NotFound particle: checking what? isa Cloneable? 17:02
particle just making sure it's correct. base_type was historically used for things it shouldn't have been 17:03
NotFound isa Morphable?
What things do that? Some PMC? 17:04
particle it was in imcc and in pmcs, yes 17:05
much has been rewritten and improved, though. hopefully corrected, too :)
NotFound Then the correct way IMHO is to override morph in that PMCs to throw "Cannot morph" or something
Infinoid in this case, I'm using it to get the Class object for bigint and rational PMCs.
ask Whiteknight why :) 17:07
NotFound Whiteknight: why?
I'm obedient X-)
kj nopaste?
clunker3 pasta.test-smoke.org/ or paste.husk.org/ or nopaste.snit.ch:8001/ or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/
purl well, nopaste is at nopaste.snit.ch/ (ask TonyC for new channels) or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others)
NotFound why?
nopaste "kjs" at 193.1.104.7 pasted "nmake realclean && perl Configure.pl && nmake: no good here." (31 lines) at nopaste.snit.ch/15583 17:08
NotFound purl: why is 42
kj I have a link error on windows, I think because there's spaces in the folder name. 17:09
NotFound Silly not
bo
kj: I think that this problem is already reported
kj NotFound: oki
just wanted to check here
NotFound And the answer is: autotools have problems too, we're not alone! 17:10
jonathan pmichaud: Got something that I think will fix it, as well as a test case...smoking. 17:11
rurban particle: we should really write a Configure check for the print -0.0 win32 issue 17:16
NotFound There is some reason for the several Parrot_str_not_equal(....) == 0 or they are just an artifact of search and replace? 17:17
rurban kj: sorry. double quoting introduced again
jonathan The latter, I believe.
Infinoid I'm getting negative zero failures on linux in trunk, now. 17:18
pmichaud jonathan: if you don't end up with an easy fix, I think I can get to it. I'm thinking perhaps we shouldn't default readtype when no read trait is set.
afk for a bit 17:19
17:19 bacek joined
nopaste "rurban" at 212.183.57.78 pasted "test msvc fix tt276-msvc-linking.patch" (157 lines) at nopaste.snit.ch/15584 17:20
jonathan pmichaud: That's what I've done, and it seems to work. Passed all S06...
Infinoid rurban: r36579 gives me failures in t/op/arithmetics.t on linux/x86-64, was this expected or should I provide more info? 17:21
Whiteknight the whole morph thing is a mess <---- That's why
rurban nope, not expected
Infinoid, can you nopaste?
nopaste "Infinoid" at 96.238.213.50 pasted "t/op/arithmetics.t output on x86-64 linux" (62 lines) at nopaste.snit.ch/15585 17:22
rurban whoa! attempt to access code outside of current code segment. that was not me! 17:24
Infinoid reverting it causes the test to pass
rurban the failing test 8 is my failure 17:25
Infinoid maybe the test was rewritten in a way to reveal some other issue, I dunno
rurban ok. so itļæ½s mine. wait a sec
Infinoid I'm clueless about negative zero
dalek kudo: 2e70f2d | jnthn++ | src/ (2 files):
Improve handling of <-> so any traits explicitly set in the signature are not overridden with rw.
shorten dalek's url is at xrl.us/befuy9
rurban It's a posix math thingy. We require to print -0.0 as -0
jonathan OK, I need to take a break...back later. 17:26
NotFound thinks about developping a floating point format with negative NaN
Infinoid how could you tell the difference between that and positive NaN?
NotFound Infinoid: that's the beauty of that design 17:27
Infinoid you could use negative NaN the way some perl 5 code uses "0 but true"
NotFound Will look nice: a = NaN but negative :) 17:28
Infinoid "They're just like normal NaN! Except they're EVIL."
NotFound Wait, NaN is already evil enough :D
Infinoid Well, this is the anti-NaN 17:29
It looks just like normal NaN. Except you spell it in reverse
NotFound SuperNaN, the number of steel
not ok 7 - negate -0.0 not ok 8 - negate a native number 17:32
pmichaud jonathan++ # excellent 'is rw' patch
rurban particle: see smolder.plusthree.com/app/public_pr...ails/17922 for the same mingw error in the -0 test. so it's not compiler specific. 17:33
shorten rurban's url is at xrl.us/befuz6
rurban Infinoid: you are not alone, win32 reports the same error on smolder 17:34
17:36 davidfetter joined
mikehh I just did a svn up from r36575 to r36579 17:40
rurban particle: did you see my tt238-install-devel.patch for you? 17:41
particle is back
mikehh Query do I need to do anything re make or such as the only files affected are in t and languages/pipp
rurban just make
particle Infinoid, rurban: that failing test is missing some code, and an 'end' statement, so you fall off the code segment 17:42
rurban oops
particle my previously nopasted patch fixes that
rurban ah, I see!
I'll write the configure check now to finalize this mess. What should the HAVE_PRINT_NEG_ZERO name be? 17:45
particle HAS_NEGATIVE_ZERO? 17:47
rurban okay
particle think that can fit in with an existing configure step? 17:48
dalek kudo: d44d19c | pmichaud++ | src/parser/grammar.pg:
Add parsing of $/ as a param_var (RT #63152).
shorten dalek's url is at xrl.us/befu3h
Infinoid particle: somehow I think that needs a "CAN_" prefix 17:51
CAN HAS NEGATIVE ZERO? 17:52
moritz had the same idea, but managed to keep quiet ;-)
Infinoid often fails at that. 17:53
davidfetter QUIET FAIL
rurban look at config_lib.pasm: there are just HAS_stuff definitions
particle you'll need to check LOLCONFIG.pasm 17:54
Infinoid Whiteknight: Ok, tests are passing and I think this is ready to merge. Are you fiddling with the patch series I sent you, or can I commit?
rurban I'm more for lowercase, like has_socklen_t: has_neg_zero or has_neg_0 17:55
Whiteknight you can commit if you're comfortable with it
thanks Infinoid++
particle has_negative_zero is perfectly clear 17:56
and does match has_dynamic_linking etc 17:57
rurban and the .pm would be auto:neg_0
Infinoid merge complete in r36585.
dalek rrot: r36580 | Infinoid++ | trunk/src:
Apply r36396 from vtable_morph_change branch.
17:58
rrot: r36581 | Infinoid++ | trunk/src:
Fix some fallout from r36396, related to upgrading data types through morphing, bigint pmcs and rational dynpmcs.
17:59
particle i'd prefer auto::neg_zero to not confuse people with o, O, and 0
dalek rrot: r36582 | Infinoid++ | trunk:
Apply r36514 from vtable_morph_change branch.
rrot: r36583 | Infinoid++ | trunk/src/pmc/undef.pmc:
Apply non-merge portion of r36517 from vtable_morph_change branch.
rrot: r36584 | Infinoid++ | trunk/src/pmc:
Apply r36540 from vtable_morph_change branch.
18:01
rrot: r36585 | Infinoid++ | trunk/src/pmc:
Apply r36562 from vtable_morph_change branch.
18:02
moritz is that manually merging single commits from a branch? 18:03
Infinoid svn updating the branch against trunk screwed things up entirely, so I had to cherrypick it. After that, I kept the patches separate in stgit, because it makes them easier for me to understand. 18:04
I realize committing them separately is not the normal procedure, but I really *really* hate when I'm doing a bisect to find some issue and end up staring at some huge incomprehensible branch-merge commit 18:06
if it bothers people, I can summarize in the future.
Whiteknight it's fine by me 18:07
I'm just happy to have the damn thing merged
Infinoid now we can move on to breaking bigger and better things :)
rg infinoid: usually you still have the separate commits in the branch, but i admit they're harder to find and probably even harder for bisect to figure out. 18:08
Infinoid rg: Yeah, it basically means you have to start bisecting all over 18:09
18:14 Phurl joined
Phurl hey all 18:14
i have started to branch the parror/pipp into code.google.com/p/rdfintrospector/s...uages/pipp 18:15
shorten Phurl's url is at xrl.us/befu6g
Phurl so I can make changes
but is it just the xslt 18:17
Coke . 18:18
particle Phurl++ 18:20
Phurl :)
NotFound Someone is planning to make something with ecmascript?
Coke last change to suggest a name more clever than "apl-parrot"
Infinoid A Parrot Language
Coke "invalid project name" 18:21
Phurl hey, how many of these parrot languages have an xml interface?
NotFound Coke: don't liked my sugggestion of some days ago?
Phurl is is possible to program parrot directly from xml?
Coke NotFound: resend?
purl resend is probably the thingy that handles incoming messages to the list.
NotFound Coke: apalot
Coke hurm. no. =-) 18:22
Phurl so my idea is quite simple 18:23
to have an xml interface to write parrot code
at the lowest level
basically an xml assembler
NotFound travelingluck.com/Asia/Philippines/...palot.html
shorten NotFound's url is at xrl.us/befu78
Coke I think that's a hammer in search of a nail. 18:24
Phurl Coke: yes of course
Infinoid Phurl: ok, so you use xml instead of pir?
Whiteknight Coke, where you moving apl to? Squawk?
Phurl in a way
Coke but you could certainly do that.
NotFound Coke: seems that's a beautiful place
Phurl right now there is an xslt from phc to something
Coke Whiteknight: no, I'm creating a new repository for it. I don't like the idea of squawk. =-)
Whiteknight Coke: Well it doesn't like you either
Coke (it's not that hard to setup an individual project on googlecode) 18:25
Coke proffers: "par apl egic".
Phurl It generates an XML representation of a PAST data structure.
according to the docs
Infinoid Coke: hah!
Phurl and the XML from the PAST is then transformed to perl or something
i just think it would be good to have an native standard xml for parrot 18:26
particle coke++
Infinoid APLeptic
Phurl we can talk about this wehn I have a better example
Coke Infinoid: parapleptic is a word too.
Infinoid ooo
particle P
NotFound Phurl: no need to be declared as standard to be done.
particle maybe that's what i'll call the parrot port of R
(which is an open-source version of S)
Infinoid someone else can have Q 18:27
NotFound And the we can add a Q&A
then
Whiteknight particle: you should call it ArrrrR, and the icon can be a picture of a pirate with a parrot on his shoulder
Coke goes with paraplegic.
kj ArrrrR++
Infinoid Coke: it seems unlikely that anyone else would have taken it :) 18:28
NotFound apl plus enhanced professional edition
Infinoid APL2009
NotFound apl vista
particle pipp svn? 18:29
Coke code.google.com/p/paraplegic/
particle pipp repo?
hrmm, we need to move pipp out someday
Whiteknight aplsaus
particle i guess that's waiting to follow rakudo's lead
partcl?
purl rumour has it partcl is tcl on parrot or code.google.com/p/partcl or slow and a memory pig and pretty much not usable
Whiteknight haha, purl is pretty negative about partcl 18:31
particle november?
purl november is at www.november-wiki.org/ or use.perl.org/~masak/journal/37212 or github.com/viklund/november/
18:31 ask joined
Phurl NotFound: well lets take a look at this 18:32
particle perl6-examples?
Phurl code.google.com/p/rdfintrospector/s...st_nqp.xsl
shorten Phurl's url is at xrl.us/befu9d
Phurl this is the past xml standard
"It generates a PIR-script that creates 18:33
a PAST data structure and runs it with the help of a PCT::HLLCompiler."
i mean the transformation
so it would be nice to either :
1. have a native parrot xslt language
2. have the ability to write this past directly as a language input and not use xslt
just an idea i had today
plus you can see it is very primitive 18:34
the xslt is 50 lines
particle prophet?
purl well, prophet is a distributed property database or fsck.com/~jesse/talks/2008/yapc.asi...rophet.pdf or syncwith.us
NotFound Phurl: looks like egypcic hyaerogliphs to me
Phurl haahh 18:35
particle has set up an ubuntu vm with mod_parrot parrot perl6-examples pugs sd november partcl prophet rakudo repositories 18:38
Phurl code.google.com/p/rdfintrospector/s...p/past.out 18:41
shorten Phurl's url is at xrl.us/befva9
Phurl here is the past created atm
it is just perl
i am working on porting the mediawiki parser to parrot
so that we dont need to deal with this gawdauwfull php
so, i think that when parrot has a very optimized repreentation of the program 18:42
we should be able to emit c and then compile that again using a profile driven compiler for more optimization 18:43
particle parrot doesn't emit c
Phurl not yet
particle i don't know that it ever will
Phurl ok
Coke (partcl) most of those factoids came from me.
Phurl who is particle? 18:44
particle particle?
purl The most abundant particle in the universe is the moron. or spin 1/2, charge 2/3 or jerry gay or a boson. or a bozon. or a bogon or one bad mobo. or full of lies or mailto:jerry.gay@gmail.com or thinking that others are boring
Phurl are you a person or bot?
particle not a bot
Phurl good
particle pets purl 18:45
purl bites!
particle bots don't like me.
Infinoid I am not a bot, no matter how many perl scripts I may be running.
Phurl i just think that in the end, any jit or runtime could be optimized again with profile driven compilation
particle yes, when we finally have profiling tools 18:46
rurban Interesting, first write of has_negative_zero check works okay on all platforms. need a test now 18:47
Coke or a jit.
Tene is a bot.
Coke tene, fix my partcl bugs. :P 18:48
particle sheena is a punk rocker
Tene svn rm partcl
Phurl ok
particle that's a big hammer!
Phurl well lets just get first things first
jonathan back from nomming and shopping 18:49
Coke has a nagging suspicion jonathan has an RT ticket that is closable. 18:52
jonathan has closed a double figure number of them today. ;-) 18:53
Maybe just not in the queue you're thinking of. 18:54
Coke yah, this was a parrot bug. ah well, it'll come to me.
nopaste "Infinoid" at 96.238.213.50 pasted "4 places in the bigint pmc and the rational dynpmc sources that are not properly tested (if tested they would have crashed during the morph vtable branch stuff)" (45 lines) at nopaste.snit.ch/15586 18:55
jonathan Coke: Got an ID? 18:56
Or you just want me to review those that were assigned to me?
Infinoid In the above nopaste, those changes were committed along with r36581, but I had to use grep to find them, because make test didn't hit them.
particle steps away for yet another interview & 18:57
dalek rrot: r36586 | whiteknight++ | trunk/docs/book/ch03_pir_basics.pod:
[Book] More detail about filehandle PMCs and their methods.
19:00
Infinoid ooh, release in 6 days. 19:01
dalek rrot: r36587 | Infinoid++ | branches/vtable_morph_change:
This branch was merged back into trunk; kill it.
Whiteknight Infinoid++. I can't say that enough today
I would so much rather be writing code then fighting with revision control software 19:02
Infinoid Whiteknight: I don't mind, but in this case, I did it now only because I forgot earlier
Whiteknight this kind of stuff always makes me hesitant to create new branches 19:04
Infinoid I usually just branch locally. It's part of my overarching strategy of pretending git-svn (and by extension, svn) don't really exist. 19:05
Whiteknight Well la de da mr super computer man
Coke jonathan: no, I don't have an id. 19:07
jonathan Coke: OK.
Will glance over my assigned tickets later on.
Coke but yes, please review any parrot ones you have assigned. =-)
(even if only to give them up if you're not going to get back to them.)
dalek tracwiki: v50 | coke++ | WikiStart 19:14
tracwiki: trac.parrot.org/parrot/wiki/WikiSt...version=50
tracwiki: v1 | coke++ | SmolderTaskList
tracwiki: trac.parrot.org/parrot/wiki/Smolde...?version=1 19:15
shorten dalek's url is at xrl.us/befvfd
19:19 rurban_ joined
Infinoid driving around today is like halfway between playing spy hunter and playing asteroids 19:20
rurban BTW: adougherty came with two more floattypes to support for cross-platform native_pbc. I found also one more. 0-6 for now. See trac.parrot.org/parrot/ticket/308 19:23
Infinoid Yeah. Wouldn't it be nice if pbc had a standard type, so you only had to worry about converting to and from that, instead of worrying about converting from 5 other platform types to your own? 19:25
Coke ... isn't that whatever's in $N ?
rurban stringification might be needed 19:26
Infinoid That works for me. Picking the highest precision type and using that works too
rurban but maybe stringification only as fallback when not on the same platform
too keep the reader speed.
Infinoid Wouldn't that mean you have to store both the native type and the stringified one when you generate the .pbc file?
rurban yes 19:27
Infinoid ok.
rurban just an idea.
Infinoid It works
rurban For now I just print a "unsupported floatval conversion" error or such
pmichaud Coke: I'd like a commitbit for APL.
Infinoid I'm not an expert in floating point stuff anyway, I would just prefer converting to/from a "standard" type rather than converting from *every* type 19:28
NotFound BTW, what if a pbc contains an 64 bit INTVAL that does not fit in 32 bits and we are converting to a 32 bit INTVAL platform?
Infinoid If any of the high bits were set, converting it to a bigint would seem nicer than hacking off the extra bits 19:30
I don't know what's currently done.
NotFound Converting to a big int a thing assigned to an integer register is not a possibility.
dalek kudo: 4367761 | jnthn++ | src/ (2 files):
If optional parameter not supplied, don't do type checks. Resolves RT#61528 and RT#63048.
19:31
shorten dalek's url is at xrl.us/befvh4
dalek kudo: 50a61ae | jnthn++ | src/parser/grammar.pg:
Merge branch 'master' of git@github.com:rakudo/rakudo
shorten dalek's url is at xrl.us/befvh6
jonathan commit message fail 19:33
Coke NotFound++ 19:35
rurban currently we fetch the 64bit in the right endian style, and pick it apart, to get our native IEEE 754 number
In true libc-hacker style. Hard to support
19:35 chromatic joined
rurban see sr/packfile/pf_items.c 19:36
well, 64bit not yet, but you get the idea.
NotFound 32 bit must ne enough for everyone X-) 19:37
Coke rurban: you might be a good person to look at: 19:38
rt.perl.org/rt3/Ticket/Display.html?id=44317
rurban Ah, thanks. This maybe explain some weird alignment problems 19:40
I steal it.
19:44 maettu joined
dalek rrot: r36588 | coke++ | trunk/DEPRECATED.pod:
Add another notice so we can rip this out before 1.0
19:44
rurban I also want to rename readbc and loadbc to pbc_read pbc_load, to be added to DEPRECATED.pod. Who decides this? 19:47
trac.parrot.org/parrot/ticket/266 19:48
Coke consensus decision. 19:49
not Parrot_pbc_* ?
19:50 Eevee joined
Coke rurban: you also might want 41893 19:51
Infinoid PDD13 means those are going to change at some point anyway
Parrot_pbc_* +1 19:52
Coke pmichaud: ping.
or jonathan: ping
jonathan Coke: pong
Coke (is rt.perl.org/rt3/Ticket/Display.html?id=43419 closable now?)
(and the corresponding TT)
rurban yes, we can close RT#41893 soon. 19:53
dalek rrot: r36589 | allison++ | branches/kill_pccinvoke:
[pcc] Bringing the kill_pccinvoke branch up-to-date with trunk r36588.
rurban But I'll test it with the release
jonathan Coke: I'll let pmichaud confirm it, but given it now has a trac ticket, one would guess so...
rurban its the same as the FHS ticket I submitted. RT#56996 19:54
Coke if it's a duplicate, we can merge the tickets.
jonathan: just because there's a TT doesn't mean the issue is resolved.
rurban not yet, it's a little bit different 19:55
jonathan Coke: OK, but if there's a TT tracking it instead, do we keep it in both ticket systems?
rurban and allison changed a bit lately so it became fragile. I really want to test it properly
Coke I'd rather just confirm it's closed and close it in both places. =-)
jonathan Coke: OK. Well, pmichaud can answer that more than I can since he filed it originally. :-) 19:56
rurban But now my big negative_zero changes cause other tests to fail. I'll nopaste.
nopaste "rurban" at 212.183.50.58 pasted "HAS_NEGATIVE_ZERO print fails with -0, why?" (28 lines) at nopaste.snit.ch/15587 20:00
rurban I'll disassemble this...
pmichaud Coke: checking RT #43419 20:02
dalek rrot: r36590 | whiteknight++ | trunk/src/multidispatch.c:
[MMD] Tweak the tuple generation code to accept invocant adverbs, in anticipation of some Parrot_PCCINVOKE unifications
pmichaud Let's close it. I did re-run the test program and it appeared to work. (more)
if I run into more issues, I'll file a new ticket with more details.
dalek rrot: r36591 | coke++ | trunk:
Move bug report from RT here in preparation for operation LeaveTheNest
20:04
kudo: b2e7ac9 | jnthn++ | src/parser/actions.pm:
If we use is also, we need to check the class we're trying to extend already exists.
20:06
shorten dalek's url is at xrl.us/befvqw
Coke pmichaud: danke. 20:07
jonathan pmichaud: Think getting down to 250 tickets is within reach now. :-) 20:08
(Not today, but soonish.) 20:09
pmichaud jonathan: excellent. I have a batch to attack also, as soon as I can get the build process back up to speed.
jonathan perl6: role A::B {}; A 20:10
polyglotbot OUTPUT[invoke() not implemented in class 'NameSpace'␤current instr.: '_block14' pc 59 (EVAL_19:38)␤called from Sub '!UNIT_START' pc 18229 (src/builtins/guts.pir:321)␤called from Sub 'parrot;PCT;HLLCompiler;eval' pc 950 (src/PCT/HLLCompiler.pir:527)␤called from Sub 'parrot;PCT;HLLCompiler;evalfiles'
..pc 1275 (src/PCT/HLLCompiler.pir:688)␤called fr...
rurban Parrot_pbc_: Okay, now I only have to check how to properly deprecate a func (macro I know)
jonathan pmichaud: What should happen here?
dalek rrot: r36592 | fperrad++ | trunk/compilers/pirc:
[pirc] svn ignore pirc.exe
20:11
pmichaud jonathan: I don't know -- I'm thinking we need a spec clarification.
jonathan Right.
pmichaud however, it should be smart enough to recognize 'A' as a namespace instead of a listop.
and thus treat it as a term 20:12
jonathan pmichaud: STD.pm recognizes it as an undefined name but that's a warning...
Aye.
Invoking it is wrong.
But that'd mean we probably need to register it or detect it in some way.
Coke rurban; open a ticket if one doesn't exist already. Add an entry to deprecated.pod pointing back to the ticket.
jonathan (But we don't want to treat it as a type name, so that won't fly.) 20:13
rurban The ticket is TT#266
jonathan writes to p6l
rurban Didn't want to note the old name also somewhere? 20:14
20:14 ask joined 20:15 ask_ joined
Coke hopes tt #316 is a duplicate. 20:15
jonathan pmichaud: Written.
Coke rurban: your note should mention the old one that is going away and the new one that is replacing it.
For bonus points, we should add the new one NOW and make the old one just invoke the new one. 20:16
that eases the upgrade pain slightly.
rurban #316 is mine. I'm just working on the fix.
Coke (presuming of course that there's consensus in the first place.)
NotFound rurban: take ownership, then 20:17
jonathan yawns and ponders that perhaps that's enough bugs quashed for one day 20:18
rurban I'll fix the symptom now first. 20:19
NotFound I'm looking at TT #300 but don't see any clear path to work on it. It is easy to mark the exception handler as been in the process of catching, but don't know how to unset it. Any ideas? 20:22
s/been/being
dalek rrot: r36593 | rurban++ | trunk/t/op/arithmetics.t:
[t] Fix the previous syntax error (forgot end) and the wrong test.

Change print to say.
purl dalek: that doesn't look right
rrot: r36594 | whiteknight++ | trunk:
[DEPRECATED] Add note about deprecating .HLL_map so we can have it ripped out by 1.0
rurban p_u_r_l: what does not look right there? 20:24
Infinoid Change purl to broken. 20:25
purl Infinoid: that doesn't look right
Infinoid Funny, looks good to me.
rurban who knows this beast? 20:26
Infinoid purl, owner? 20:28
purl i think owner is Masque
rg notfound: i still think raising an exception should remove all handlers up to and including the called one from the handler stack
Infinoid rurban: t/op/arithmetics....ok 20:29
chromatic prove -l t/op/arithmetics.t
rg i've discussed this with tene some time ago, but i guess he never got around to doing anything.
chromatic Sorry, I mean prove -v t/op/arithmetics.t
NotFound rg: given that the handler is the continuation that does the handling, removing then before his usage is not easy
Tene rg: if you remove the exception handlers, how would they be added back when someone resumes that exception?
We even use exceptions for warnings... 20:30
Should a warning wipe out all exception handlers in place? 20:31
rg imho the continuation would have to know about that. my problem is i don't know the code, just what i think would be right.
rurban I just attached my big neg_0 patch to TT# 313. trac.parrot.org/parrot/attachment/...eg_0.patch
shorten rurban's url is at xrl.us/befvw2
Tene rg: I've looked into it quite a bit, but I haven't been able to come up with a non-horrible solution.
NotFound rg: to know about what? 20:32
rg the continuation that is stored with the exception would need to know which exception handlers need to be restored
tene: do you know any other language that has resumable exceptions?
NotFound rg: the continuation is not stored with the exception, as far as I know 20:33
Tene NotFound: it is.
exception['resume']
NotFound Do we talk about the ExceptionHandler continuation or about the resume continuation? 20:34
rg the resume continuation. is the handler implemented as a continuation aswell?
Tene rg: I have no idea how to construct a continuation that can do that.
Maybe a special subclass of continuation, possibly... 20:35
NotFound Most languages don't have resumable exceptions because they want to avoid to care about all those things.
Tene We also use exceptions for loops. Those EHs are called repeatedly without resuming, so the resume continuation can't be what does it. 20:36
NotFound The ExceptionHandler isa Continuation
Tene Unless we require every handler there to know about every other handler inside it and generate code to reconstruct it every time it catches something. 20:37
NotFound pmclass ExceptionHandler extends Continuation need_ext {
Tene Which is absurd. We shouldn't require EHs to reconstruct other EHs just to not break.
rg i'm getting the impression we're using exceptions for too many things 20:38
Infinoid ETOOUSEFUL
Tene They're the generic mechanism for handling exceptional flow control. 20:39
jonathan use.perl.org/~JonathanWorthington/journal/38463 # rakudo day report
NotFound A possible hackish solution: store a pointer to the ExceptionHandler in the Exception, and mark it as finished when getting the 'resume' (assuming that is getted in order to invoke it)
Tene 'return' is a special case of exception
rg return, break, continue and a number of other things, i know :/
NotFound Maybe we must rename ExceptionHandler as TaskHandler, or something 20:40
Tene tasks are different
erm.. nm
NotFound Because a lot of the things it does are not exceptional at all.
ThingHandler X-) 20:41
rg FlowHandler maybe?
Tene they're exceptions to normal program flow
Coke control flow exceptions 20:42
rurban hmm: mingw x == -0.0 uses fucompp. FPU code, looks okay to me.
Coke Doesn't need a rename, IMO. 20:43
dalek rrot: r36595 | allison++ | trunk:
[pcc] Merging the kill_pccinvoke branch into trunk for r36508 to r36588. Simple
NotFound I don't see his exceptionality, they are continuations like almost any other part or parrot flow control.
20:44 maettu left
Tene I'm still not sure exactly how rg is wanting things to work. 20:44
rurban my -0.0 error is earlier, not in print.
dalek rrot: r36596 | allison++ | branches/kill_pccinvoke:
Removing calling conventions refactor branch from the repository
Tene All of his proposals seems vague to me, and the interpretations I come up with seem to break many things. 20:45
Tene rg: can you create some example PIR with explanations of how you would want it to work?
What you're needing to do?
rg still i believe any handler that is being skipped in the search for the handler of the current exception (be that flow control, user or internal exceptional condition) is not relevant to any exception thrown later on, so it can be removed from the search/stack. the only problem we're having is what to do with the exception's continuation
Tene if you remove it, what will put it back? 20:46
dalek rrot: r36597 | allison++ | branches/pcc4:
Creating branch for refactoring calling conventions, removing the old PCCINVOKE and streamlining the rest.
rg if we disregard the continuation: nothing ever.
Tene I really think that having an exception mutate its call stack is a bad idea. 20:48
Still thinking, though.
rg i could try to find the time to come up with some examples, but it could be hard to do in pir. 20:49
NotFound Probably will make more sense to kill the handler stack entirely, not just until the current. 20:50
rg notfound: no, you don't want an exception inside a handler terminate your whole script ;) 20:51
NotFound rg: handler stacks are contextual, not for the whole script
rurban I see that ruby uses it own vsnprintf.c for this win32 -0.0 issue: redmine.ruby-lang.org/issues/show/6
rg oh so you meant the current context's stack. that may be ok. 20:52
NotFound But the problem is that this way will complicate the resume 20:53
Tene NotFound: resume isn't the only case. also look at loops. 20:54
you don't want "next" to remove your loop handlers.
rg actually i think you might. 20:55
NotFound You will need to re-push them... doable, but surely slower.
rg you definitely want it for break and return, therefor for next you could just jump *before* the push_eh
Tene That's horrible. 20:56
rg s/break/last/ to stay in perl lingo ;)
Tene And what if you have a loop inside of a try block?
rg what about that? 20:57
Tene you'll remove that EH too?
NotFound Tene: there are noy such things at pir level, they aren't?
Tene NotFound suggested removing all EHs in the call chain. 20:58
NotFound: it's just another EH.
rg if you throw an exception that would make you leave the loop, you definitely want the loop's handlers removed. for a next you wouldn't get as far as your custom exception handler, so it won't be removed.
NotFound Tene: if is in an inner sub, they have his own context
Tene so you're removing all the handlers in the current PIR sub? So refactoring an inner loop in PIR into a separate sub will change the behavior of the outer EH? 21:00
NotFound If I understand well, the wat to implment that type of things in HLL will be that the try block handlers and the loop handlers will be in different levels of inners
s/wat/way 21:01
Anyway I don't like much that approach, just say that will be cleaner to remove the whole context handlers rather than just until the current. 21:03
Tene This sounds horrible and hackish to me, and rather significantly breaks resumable exceptions.
And "Many langauges don't use resumable exceptions" isn't a very good argument to me for breaking it.
NotFound Yes, we have it and we must handle it well. 21:04
rg can anyone point me at some documentation how continuations work? i.e. what happens when a continuation is passed to (and called in) a different context?
NotFound It continuates ;)
Tene There's a related problem right now in that when you return a continuation and invoke it later, the EHs aren't there anymore. 21:05
rg so you're saying it already doesn't work right? ;) 21:06
Tene I had a vague idea once for fixing that with a significant refactor, but I don't remember it anymore.
rg: so your solution is to break it even more?
rg no, just in a different way
NotFound Tene: there is some test for that?
Tene NotFound: I think that rg posted an example to the list a while back that helped me notice that while fixing it. I'm not sure if it's in a test. 21:07
rg but no, i'm not suggesting to break it
rather i'm thinking the fix may be the same for both problems 21:08
Tene But you're not actually proposing a fix thought, right? Just suggesting that there might be one? 21:09
rg all i did so far was write a short example here in irc, sorry.
Tene Not trying to be confrontational. I just don't much trust my memory. Trying ot keep things straight.
Coke tickets are cheap. open one. 21:10
rg wonders if there wasn't one already
rg can't find one. 21:13
pmichaud Coke: ping
NotFound I'll try the hackish way of storing a pointer to the current handler in the exception
Tene NotFound: "current handler"? Explain more? 21:14
Coke pmichaud: pong
NotFound Tene: The ExceptionHandler that is running
Tene NotFound: where are you going to get that information?
NotFound Tene: storing it while throwing 21:15
Tene NotFound: from the throw opcode, where are you going to get the "current handler"?
it's not in the interpreter, it's not in the context, it's not stored anywhere afaict. 21:16
NotFound Tene: will be shorter to write and show the code than to explain it ;)
rg i was also thinking that HLLs could maybe use pushmark/popmark to keep track of their handlers, but i didn't get around to checking that and it assumes that the generated code is correct (i.e. won't help when coding the HLL)
Tene If you can get the "current handler", it would be easier to just modify exceptionhandler.pmc's can_handle to decline to do anything if it's the "current handler"
NotFound Tene: yes, and precisely because I don't have it in any part, I must to store it somewhere 21:17
Tene NotFound: but where are you going to get it from to store it? 21:18
NotFound Tene: the code that choose the handler know the exception and the handler it selects.
Tene NotFound: do you mean that when you decide to invoke a handler with an exception as its argument, you'll store the handler in that exception? 21:19
That won't help.
rg notfound: what are you working on?
Tene The problem is when we throw a *new* exception.
NotFound rg: I look for a fix to TT #300
Tene try { throw A; } CATCH { throw B; }
pmichaud Coke: are you moving pynie out of the parrot repo? if so, I think I'd like to move it to github.
Tene Storing the handler in A doesn't help when we're throwing B 21:20
rg notfound: yes, but what do you need that for? can you wait for a more general solution? 21:21
NotFound Tene: It needs to help in that case?
Tene NotFound: there are no problems with rethrowing an exception.
NotFound rg: sure, I can wait for a few seconds...
Timeout X-) 21:22
Tene NotFound: in that case, A stores the same iterator that was originally used when looking for a handler, and just picks up where it left off.
rg :P
Tene but when we throw B, it looks in the same place that A first looked at.
NotFound Tene: I don't have any problem with that, the problem I'm trying to fix now is TT #300 21:23
Tene it's the *second* throw that has problems.
Tene looks
Yes, exactly! 21:24
purl i guess exactly! is it not awesome?
Coke pmichaud: nope. that was just so I could close the RT.
feel fre.
e.
Tene you'd be storing a reference to the catchall: handler in $P0
but then the handler does something broken, and get_results makes a *NEW* exception to throw 21:25
this new exception isn't the same as the one stored in $P0
Putting the reference in the exception stored in $P0 doesn't help.
NotFound Tene: yes, but the problem is that I need a way to know the handler at exception resume time, in order to clear the way used to mark it as active. 21:26
Without that, fixin TT #300 break a lot of other things
Tene ... what? 21:27
purl quietly listens while the crickets chirp
Tene ... oh.
so you're disabling it... and then reenabling it when the resume continuation is invoked? 21:28
NotFound A less hackish approach will be better, but I'm not found one for the moment.
Tene: that is the way I'm about to try, yes
Tene I don't see how you could even do that. Are you creating a subclass of continuation that enables a handler when it's invoked?
You resume like: resume = exception['resume']; resume() 21:29
the resume continuation is just a continuation. It doesn't know anything about the exception it was stored in.
NotFound Tene: no, the simpler idea is marking the handler as inactive when asked for 'resume'. If that works, we can think how to make it less hackish and more robust. 21:30
Tene you mean mark it active again.
NotFound Eh, yes 21:31
Tene and what about when the exception has been rethrown? It won't work there either...
Does this issue actually come up often enough to justify this hack?
Is it causing pain for anyone? 21:32
NotFound Tene: IMO yes. When it fails, it takes lots of time to figure how, why, and where
At least on all tickets I looked at that were related, it tooked 21:34
Tene have you tried looking in the exception's backtrace yet? 21:35
NotFound Mmmm...... no. I'll look at it. 21:36
cotto seen whiteknight 21:38
purl whiteknight was last seen on #parrot 2 hours, 32 minutes and 14 seconds ago, saying: Well la de da mr super computer man
pmichaud wonders if we'll someday have "Rakudo Python."
Tene EHs *should* appear in the backtrace. (If they don't now, it's probably wrong, IMO)
the solution I was thinking about before was something like making a clone of the contexts some undefined way up the stack, and storing that alternate chain of contexts in the continuation instead of the "real" one, so that when the EHs were freed from the real contexts through pop_eh, they'd still be referenced by the cloned contexts in the continuation. Something like that. 21:45
doing that for continuations in general, not just for exceptions.
No idea what the consequences of that would be. It wasn't really fully thought out yet.
rg is it possible that there's not much documentation about continuations anyway? 21:47
not many tests either :( 21:50
21:51 davidfetter joined
Coke ponders a seen update for purl that provides fuzzy time. 21:56
"about 2.5 hours ago..." 21:57
masque?
purl masque is figuratively speechless. or COOL WITH BURRITOS EVEN IF MINE DON'T SAY TOMMY HILBURRITO or Masquenfusion on AIM - USE THIS TO FIND HIM, IRC SUCKS or totally in love with warningsToBrowser, but forgetting to turn that off is something I fear. or awake. or Masquenfusion and Euqsam. or DJ Fresh Catnip or pleased with Masque's copy. or (see masque 2) or fond of used things that work. or a herring
cotto "less than a month ago"
Coke a leeeetle less fuzzy than that.
masque 2?
purl masque 2 is You sass that hoopy Masque? There's a frood who really knows where his towel is. or hellyeah sysop IIRC (or knows who is) or avocado-powered, baby
cotto That absolutely didn't make anything clearer. 21:58
except that last one
Coke ok, tickets are cheap, but they're not as cheap as your mom. 22:01
(search before opening, just to be nice.)
(apologies for obligatory mom joke)
22:02 allison joined
GeJ good morning everyone 22:09
davidfetter evenin', GeJ 22:10
GeJ heya davidfetter. Congrats on the latest set of releases.
davidfetter ? 22:11
GeJ wasn't there some postgresql releases a few days ago? 22:12
dalek rrot: r36598 | cotto++ | trunk/src/global.c:
[pcc] revert an apparently unintentional commit from r36594
22:13
allison cotto++
(had just reached the same conclusion myself, after a binary search) 22:14
dalek rrot: r36599 | cotto++ | trunk:
[gc] change pt_DOD_* to pt_gc_*
GeJ allison: do you know who's in charge in handling PaFo's CLA applications? 22:15
allison GeJ: yes, the board handles them. emailing the address on the CLA will get you a reply from anyone in the board (myself included) 22:16
Tene allison: can you look at the discussion earlier about EHs? specifically rg's request and NotFound's proposed workaround? 22:18
allison Tene: will check the Piper-log. is there a ticket?
Tene trac.parrot.org/parrot/ticket/300 is the ticket NotFound was producing a workaround for. 22:19
GeJ allison: Oh, ok. Just to say that I sent one a few weeks back per suggestions of several people in here. But unfortunately, I can already predict that my contributions to Parrot will be very limited for some time as $job doesn't seem to be willing to allow me some free time.
Tene I don't know if there's a ticket for the EH stuff.
NotFound Tene: I'm not sure having proposed a workaround for something :?
dalek rrot: r36600 | cotto++ | trunk:
[gc] change interp->DOD_registry to gc_registry
Tene NotFound: your "mark the handler inactive, then mark it active again when someone asks for the resume attribute from an exception" thing? 22:20
allison GeJ: the CLA is just a legal document to cover your contributions to Parrot, it doesn't matter how many or few you make
Infinoid cotto++ # my git-svn only updates once every 10 minutes, you're hard to keep up with
NotFound Tene: ah, yes, but that is not for rg request, is for TT #300
Tene NotFound: that's related to what rg was asking about. 22:21
GeJ I was wondering, would anyone be interested in having a Data::Dumper that returns data instead of just dumping it on STDOUT?
NotFound Tene: but I asked first ;)
Infinoid GeJ: definitely
Tene NotFound: eh?
NotFound No matter
Infinoid (returning a string)++ 22:22
NotFound Can't you just use a StringHandler?
rg i don't think there is (i couldn't find one a few minutes ago). i'll try and write a new ticket one of these days unless someone beats me to it ;) 22:23
NotFound And dumping on a handler, not in hardcoded stdout, of course
Tene I'll make one now.
Infinoid NotFound: returning a string would make it as useful as the perl5 version of the module 22:24
GeJ Infinoid: ok, well, I'll give it a try. Can I forward you patches for review as I make progress? (as I said earlier, don't expect a constant flow of them for the foreseeable future)
Infinoid You don't *always* want to print it directly. Maybe you want to print it more than once, or compress it and send it over a network, or whatever.
cotto Infinoid, should I hold off for a while?
Infinoid GeJ: No problem. In return, I can't promise to respond with particularly useful messages :) 22:25
cotto: No, it was a compliment. By all means, keep kicking ass.
NotFound Infinoid: a StringHandler is printing it to a string, no loss of functionality
Infinoid Yeah. Or you could just return it, the easy way.
cotto roger
allison Tene: in general, TT #300 is just an example of legacy exception handlers. The first thing every exception handler should do is check if the exception is one it can handle. If it can't handle the exception, it should rethrow it. 22:26
NotFound Infinoid: but slower and memory hungry when you want to use a Handler
22:26 Whiteknight joined
Tene That's what I thought. 22:27
GeJ For the record, the idea came to me while pursuing my Perl-to-PIR tests conversion quest. Some tests use Data::Dumper to output data structures, and I couldn't figure out a way to catch that in a string and use it in a is() call.
allison Tene: we don't remove exception handlers, ever (that's what the old code did, and it was fundamentally broken)
NotFound GeJ: there is a way: redirect stdout to a stringhandler
rg allison: can you elaborate? i find the current aproach fundamentally broken aswell.
allison Tene: exception handlers live in the context, so when you leave the context you don't see them anymore
rg: with resumable exceptions, you can't remove handlers, because you may resume within the scope of an existing handler (in which case deleting the handler would produce the wrong semantics) 22:28
GeJ NotFound: I think I tried it at the time and failed. I probably did it wrong or things have improved since then. If you have a working syntax to recommend me, I'd be happy to apply it to the tests I'm trying to convert. 22:29
allison rg: instead, you leave handlers in place, but scoped to the context rather than scoped globally
nopaste "NotFound" at 213.96.228.50 pasted "Redirect strout to a StringHandle" (35 lines) at nopaste.snit.ch/15588
allison rg: so they naturally pass out of scope when you leave the scope
chromatic Or Data::Dumper could just not print by default, instead of building up a string and then printing it. 22:30
rg allison: how do you propose to solve the exception inside the handler results in recursion problem?
NotFound GeJ: I wrote that test some days ago
allison rg: that's caused by old exception handlers that aren't properly checking the type of the exception they're passed
by default, in Parrot, and exception handler will examine all exception types 22:31
s/and/an/
dalek rrot: r36601 | whiteknight++ | branches/rename_pccinvoke:
Creating a branch to rename the Parrot_PCCINVOKE function and unify it with Parrot_pcc_invoke_method_from_c_args
allison rg: most HLLs declare an exception handler for a specific type or set of types it can handle
rg: calling the same exception handler multiple times isn't a problem if that exception handler actually knows how to handle the exception 22:32
rg: the problem we're getting is exception handlers trying to handle exceptions of the wrong type 22:33
NotFound allison: the problem is when the exceptionhandler accidentally throws something it can handle
allison rg: so, the code makes assumptions about the exception it's passed, which turn out to be wrong, and cause exceptions
NotFound And does it before doing a pop_eh
allison NotFound: no, that's fine, if the handler actually know how to handle it 22:34
knows
NotFound allison: yes, in a perfect world... in the current world, is a bud difficult to catch
bug
allison NotFound: I'd generally argue it's a case of user error, but sometimes it's possible to change syntax in order to discourage a common user error 22:35
NotFound: what if... the default answer to "can_handle" were "No" instead of "Yes", and defining an exception handler *required* declaring what types it can handle? 22:36
chromatic ... and the exception handler dispatcher checked those types before dispatching to exception handlers, instead of requiring exception handlers to get this right themselves?
NotFound allison: I'm trying to find a way to catch current problems faster, short term 22:37
allison NotFound: it makes declaring exception handlers more verbose, but it means people don't run into these problems unless they explicitly ask for them
chromatic: in fact, it already checks them, just no one is bothering to set them
NotFound Call them legacy if you want
Tene allison: rakudo uses them
allison: PCT uses them for handling 'return' 22:38
allison Tene: that's good. Progress
chromatic I'm sure PCT could set them.
Tene pct-generated loops use them
rakudo's gather/take
rakudo's CONTROL
cardinal uses them
rg pct is not doing to well with the try/catch, though 22:39
s/to/too/
Tene defaulting to 'no' would be fine with me.
allison: the problem with defaulting to 'no' is exceptions without any type set. Should we disallow that too? 22:40
Or just "don't do that"?
chromatic We could warn.
allison Tene: yup, make the answer to 'can_handle' false if the handler doesn't have a type set
Tene: and maybe even warn on initialization if no type is set 22:41
Tene allison: this will need a deprecation cycle, yes?
allison though, type is often set in a subsequent call
Tene: yes, and it will break all the legacy exception handlers in the system
Tene allison: we can warn on throw if there's no type set.
rg that might work. at least there wouldn't be as much recursion. 22:42
allison Tene: so, big code update (or at least scattered update, touching many files)
Tene It can happen in a branch.
allison Tene: yes
Tene: if we deprecate it now, it can still get in before 1.0
Tene It can go in after the Feb. release? 22:43
NotFound So we are going to deprecate push_eh LABEL ?
allison NotFound: no 22:44
Tene allison: are we requiring type, or type|severity?
allison: if we default to no, then EH's created by push_eh LABEL will never catch anything. 22:45
NotFound Tene: well, at least that will completely solve #300 :D
allison Tene: I'd require type, with severity optional 22:47
Tene "catch all warnings" seems like a reasonable sort of handler. 22:48
allison Tene: good point on push_eh LABEL, so it would need to be "push_eh LABEL, INT"
NotFound allison: so we're deprecating it and cretaing a new one
allison Tene: yes, we need special virtual types for "all exceptions" and "all warnings" 22:49
NotFound: yes, but mainly keeping the shortcut of a label (where the actual exception handler object is created for you behind the scenes)
NotFound That is how is implemented the current version 22:50
allison NotFound: aye, that abstraction was changed in the big exception refactor (I just kept the same interface) 22:51
NotFound TT #295 is a recent example of bugs caused for that thing. I catched it fast just because I was working at related problems and know what to search for 22:52
Well, not caused for it, but without clean diagnostic because of it. 22:55
allison NotFound: yes, it seems that people *expect* their exception handlers to only handle the specific exception they're looking for, and not try to handle every exception 22:58
NotFound: so, perhaps we can make it behave more like they expect
NotFound allison: yes, but even in that case you can be actually trying to catch the same type of exception you accidentally throws. 22:59
rg i don't think this will quite solve the try { throw a; } catch { throw b; } case, but maybe we can get pct to help with that? 23:00
allison NotFound: if your handler is designed to handle those types of exceptions, then it shouldn't be a problem 23:01
rg: that's all about scope
rg: parrot doesn't currently support scopes smaller than a .sub 23:02
NotFound allison: if the excption handler is perfect no problem, but I'm talking about mistakes that lead to difficult to catch bugs
allison NotFound: no virtual machine can prevent users from making errors
NotFound: the best you can hope for is discouraging them 23:03
NotFound allison: a way to discouraging completely is that a handler does not catchs exceptions thrown inside himself. 23:04
allison NotFound: but with exceptions as labels within the scope of the sub, all handlers set within the sub semantically belong to that code 23:05
NotFound allison: then skip the sub and search handlers outside, no problem 23:06
allison NotFound: and if you make a special exception for a handler at the bottom of the chain, what if the problem is actually with a handler farther out the chain?
NotFound: that is, the same problem can occur if you're invoking a handler 5 levels outside the current sub 23:07
NotFound Same thing, search for handlers in the outside
Tene NotFound: with handler-as-label, you also can't detect the difference between an exception thrown outside of the handler and inside it.
allison NotFound: because the invocation context for the handler is the point where the exception was thrown
NotFound Tene: actually not, that's the reason why I was looking for one. 23:08
allison (a handler is just a sub)
rg i thought parrot didn't support a real sub as a handler yet
allison NotFound: arbitrarily deciding to skip the first handler doesn't eliminate recursive handlers, it just bumps it back a level
rg: exception handlers are continuations, which are subs 23:09
NotFound allison: not the first, the handler that is running
allison NotFound: all that does is screw up your exception hierarchy
exception handler hierarchy 23:10
rg which gets me back to the lack of documentation on continuations *sigh*
23:11 TiMBuS joined
allison rg: hey, the best person to write it is the person who doesn't understand it yet :) 23:11
(writing documentation is an *excellent* way to learn)
(possibly the best)
dalek rrot: r36602 | cotto++ | trunk:
[gc] change all occurances of "early_DOD" to "early_gc"
23:15
rg ah there, whiteknight++ did it already. we really need an online version of docs/book ;)
rrot: r36603 | cotto++ | trunk:
[gc] change all occurances of "high_priorty_DOD" to "high_priorty_gc"
23:18
rrot: r36604 | cotto++ | trunk:
[gc] change DOD_flags to gc_flags
23:22
rg is trying to wrap his head around the scope definition. 23:30
is it possible to push_eh a handler that doesn't have itself in scope? 23:31
Whiteknight rg: we DO need an online version of docs/book/, I've been bitching and moaning about that for a while now 23:32
dalek rrot: r36605 | cotto++ | trunk:
[gc] rename PROF_DOD_* to PROF_GC_*
Whiteknight but yeah, the book has lots of surprises. If you have any questions about anything, that's a good starting point
NotFound rg: you can push_eh anything that is an ExceptionHandler 23:33
rg whiteknight: i was avoiding it because my perldoc was complaining about a lot of markup in there. what do i need to install to get that right? 23:34
chromatic Pod::PseudoPod 23:35
dalek rrot: r36606 | whiteknight++ | branches/rename_pccinvoke/src/global.c:
[rename_pccinvoke] make the first change, everything compiles. That's a good start.
23:37
rg notfound: sure, but can i set_addr something that is a different scope? 23:38
cotto What's the difference between DOD_RUNS and COLLECT_RUNS? 23:40
and would it be accurate to change DOD_RUNS to GC_RUNS? 23:41
rg and also, what can i do at the end of that handler if i don't want to call the return continuation
Tene you can do whatever you want.
another common choice is .return() 23:42
or goto
23:42 rdice joined
dalek rrot: r36607 | allison++ | branches/load_language:
Creating branch for testing the load_language opcode.
23:44
nopaste "tene" at 97.117.56.92 pasted "sub exception handler example for rg" (30 lines) at nopaste.snit.ch/15589 23:46
Tene the first two 'say's are lies that I was too lazy to change.
NotFound rg: you mean in pir? You even not have access to labels out of scope. 23:47
Tene That example works fine.
Is there not a test of that?
rg tene: thank you, i was just trying to get that to work 23:49
Tene rg: no problem
NotFound Ah, you mean a sub. That makes more sense.
rg now let's try that with .return() ;)
Tene I don't think it's quite the right way to do it, with find_name and such.
NotFound And if we have a nice implementation of invoke, we can even use an ExceptionHandler object as his own handler sub 23:51
chromatic is tempted to reject all tickets about failing tests which don't provide the diagnostics of those tests. 23:52
NotFound And gives his senders to the Spanish Inquisition 23:53
Tene If that was the only way to do EHs, it's a pretty simple patch to give you the "don't catch exceptions thrown from the EH" behavior you want.
I'm certainly not going to be the one to migrate all existing use of EHs, though. 23:54
;)
rg aha, .return() returns to the calling sub, not quite unexpected. 23:56
dalek rrot: r36608 | allison++ | trunk/src/call:
[cage] Adding svn:ignore property for .str files.
rg tene/allison: how would we deprecate that in a backwards compatible way anyway? 23:58
Tene rg: we wouldn't.
NotFound What 'that'? The push_eh LABEL unconditional? 23:59
Tene NotFound: using labels instead of subs for EHs.