Perl 6 - the future is here, just unevenly distributed

IRC log for #phasers, 2011-08-02

| Channels | #phasers index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
16:10 spinclad left #phasers
18:08 masak joined #phasers
18:14 sorear DID:
18:15 sorear refactored niecza's handling of qualified names
18:15 sorear implemented indirect name references
18:15 sorear made :: work as a name placeholder in many places
18:15 sorear implemented Foo:: WHO access
18:15 sorear implemented pseudo packages
18:16 sorear started on pseudo package tests
18:16 sorear WILL DO:
18:16 sorear finish S02-names/pseudo.do
18:16 sorear s/..$/t/
18:16 sorear try CATCH?
18:16 sorear loop phasers?
18:16 sorear EOR
18:17 masak sorear++
18:34 pmichaud What I did:
18:34 pmichaud nom stuff:
18:34 pmichaud * Fixed return and take argument handling
18:34 pmichaud * Added filetest operators
18:34 pmichaud * Fixed Hash.STORE
18:34 pmichaud * Fixed triangle reductions
18:34 pmichaud * Added run(), qx operator
18:34 pmichaud * Added %*ENV, @*ARGS, and $*ARGFILES
18:34 pmichaud * Reviewed commits and patches
18:34 pmichaud nqp stuff:
18:34 pmichaud * Worked on NFA and protoregexes, still more to do
18:34 pmichaud * Various qregex fixes
18:34 pmichaud * Refactored HLL::Compiler a bit, improved handling of arguments
18:34 pmichaud other stuff:
18:34 pmichaud * Lots of improvements to features comparison tables
18:34 pmichaud * Presented at FOSSCON in Philadelphia
18:34 pmichaud What I plan to do:
18:34 pmichaud * finish qregex protoregexes and ltm
18:34 pmichaud * more spectests
18:34 pmichaud EOR
18:36 masak pmichaud++
18:49 moritz what I did:
18:50 moritz * fixed a Configure.pl bug in rakudo
18:50 moritz * (un)fudged a lot of tests
18:50 moritz * implement {Int,Real}.base
18:50 moritz * regex adverbs on the outside (rx:s// etc.)
18:51 moritz * moved installation instructions out of README
18:51 moritz Str.sbust
18:52 moritz * fixed lots of Hash methods for empty hashes
18:52 moritz * Mu.so
18:52 moritz * more trig method/sub fiddling
18:52 moritz What I tried, but failed to:
18:52 moritz * s///
18:52 moritz * make nom installable
18:53 moritz * allow throwing of subclasses of Exception, and make it return the original object (+ stack trace)
18:53 moritz Plans for next week:
18:53 moritz * more exception stuff
18:54 moritz also did: mentored tadzik++
18:54 moritz EOR
18:54 jnthn Over the last week...
18:54 jnthn * Improved error reporting when you use the wrong version of a pre-compiled library
18:54 jnthn * Implemented coercion (as trait); unlike master, it only coerces if needed
18:54 jnthn * Got ::?CLASS usable in at least declarative contexts
18:54 jnthn * Got enumerations much further along; they now support many methods
18:54 jnthn * Implemented &?ROUTINE; anonymous recursion works now
18:54 jnthn * Implemented currying (.assuming)
18:54 jnthn * Implemented rw trait on classes
18:54 jnthn * Implemented state variables. Main bug is that assignment isn't yet done at START time.
18:55 jnthn * Made packages and modules act like they're ~~ Any so we can talk about them without exploding
18:55 jnthn * Big refactor of static lexpads and BEGIN time. Fixed many bugs, and paves the way for serializing static lexpads in the future.
18:55 jnthn * Implemented auto-threading method calls
18:55 jnthn * Fixed sink prefix
18:55 jnthn * Unbusted CATCH enough to not hang
18:55 jnthn * Fixed implict %_ in methods
18:55 jnthn * Implemented trusts
18:55 jnthn * Implemented private methods
18:55 jnthn * Mostly put back |$c in a signature (thought I was done, then found a segfault :/)
18:55 jnthn * Mostly put back nested signatures; need to fix a few more things to pass all the tests master did, but well on the way
18:55 jnthn * Fixed a nasty symbol lookup code-gen bug
18:55 jnthn * Fixed up some meta-circularity related bugs
18:55 jnthn * Blogged first working example of a custom meta-class in Rakudo
18:55 jnthn Over the week to come...
18:55 jnthn * Mostly just continue fixing lots of things and winning back spectests
18:55 jnthn * Dig in more intensively for preparing for YAPC::EU
18:55 jnthn * Have weekend and most of next week set aside for Perl 6, hopefully. :-)
18:55 jnthn EOR
18:55 Util pmichaud++    # Fixed triangle reductions
18:55 Util Pre-report:
18:55 Util * Attended Parrot Developer Summit.
18:55 Util * Answered Mark J. Reed's question on p6l about Recursive Lazy Lists
18:55 Util ... resulting in second solution here: http://rosettacode.org/mw/index.php/Gray_code#Perl6
18:56 Util I *love* that this can work!   my @bar := @foo Zop @bar;
18:56 Util * New $WORK started yesterday; Tuit freeze in effect.
18:56 Util EOR
18:58 moritz jnthn++
18:58 moritz pmichaud++
18:58 moritz Util++
18:58 mberends joined #phasers
19:00 sorear o/
19:01 mberends o/
19:01 jnthn o/
19:01 Util o/
19:01 moritz \o
19:03 tadzik o/
19:03 masak \o
19:05 mberends ok, I give up. this out-staring one another is becoming silly
19:05 jnthn ...did anybody not preport? :)
19:06 jnthn mberends: you didn't! go ahead. :)
19:06 tadzik me neither
19:06 mberends ok, I did some work on 6model/c:
19:06 sorear the feature matrix has no row(s) for things like MY.WHO.<&say>
19:07 * sorear wonders how many to add and where
19:07 moritz sorear: one for lookup by name for sure
19:08 sorear Should MY::.{'$nonexistant'} die or return Any?
19:08 moritz it should fail(), of course
19:10 sorear heh
19:10 sorear lacking Failure, I shall not test this case
19:11 jnthn "Niecza. The compiler that never fails!"
19:12 sorear o/ great spin
19:12 mberends Is the feature matrix expected to grow longer and longer, or is there some intention to restrict is growth by summarizing, for example, in the interest of brevity?
19:12 mberends *its growth
19:14 moritz mberends: I want to find a balance, neither endless growth, nor arbitrary restrictions
19:15 mberends +1
19:15 masak bah! balance! :P
19:15 jnthn .oO( bah-lance )
19:16 moritz blah-lance? :-)
19:16 masak kudos to everyone on the feature grid, but mostly to moritz++ for JFDI-ing it.
19:16 moritz oh right, forgot that in my report :-)
19:17 benabik joined #phasers
19:17 moritz anyway, #phasers discussion
19:18 jnthn mberends: Did you finish reporting? :)
19:18 moritz would it make sense to compile a list of things that need to be fixed in nom before it can become master?
19:18 mberends jnthn: yes, didn't really have a report prepared :/
19:18 jnthn mberends: ah, ok
19:19 moritz tadzik: do you want to report?
19:19 tadzik sure
19:19 tadzik so, did:
19:19 tadzik - WHY for classes
19:19 tadzik - DOC phasers
19:19 tadzik - Pod::To::Text
19:20 tadzik - fixed command-line options in nom
19:20 tadzik - implemented basic --doc
19:21 tadzik - almost brought MAIN back to nom, blocked by lack of Signature.bind
19:21 tadzik (or was it Capture.bind? :))
19:21 tadzik blockers:
19:21 tadzik - suprise segfaults (fancy WHY cases)
19:22 tadzik plans:
19:22 tadzik - default DOC init
19:22 tadzik - DOC use and friends
19:22 tadzik - more polished Pod::To::Text
19:22 tadzik - formatting codes
19:23 tadzik did ~=:
19:23 tadzik - Pod::Block::Para instead of bare string arrays
19:23 tadzik - blogged, appeared on Perl Weekly
19:24 tadzik - submitted a Lightning Talk about Pod in Perl 6, got it accepted!
19:24 tadzik =end report, I think :)
19:24 mberends tadzik++
19:24 moritz tadzik++
19:24 moritz tadzik++
19:24 moritz tadzik++
19:24 mberends tadzik++
19:24 tadzik oh, also did List.unshift that is quite broken, but working enough to pass spectests :)
19:25 pmichaud tadzik++
19:25 tadzik I wonder if I missed something
19:25 jnthn tadzik++ # awesome work!
19:25 moritz indeed
19:25 tadzik oh, oh
19:25 tadzik and merged podparser into nom :)
19:25 pmichaud with the exception of "make install", I suspect that anything language-wise that is important enough to block nom->master perhaps ought to be on the features list :)
19:25 jnthn \o/
19:26 moritz pmichaud: should "absence of regular segfaults" be on the feature list? :/
19:26 jnthn For me, it's landing QRegex, make install and making modules work without pre-compilation.
19:26 pmichaud moritz: I'm not sure that absence of regular segfaults is a blocker (more)
19:27 pmichaud indeed, in some sense we should move to master even if we're getting segfaults so we can track them better.
19:27 jnthn moritz: nom just gets a bit more upset about getting its type system broken. Often the segfaults make extremely clear what's happening, if you know the guts enough.
19:27 moritz pmichaud: last time I looked there was no lack of reproducible segfaults
19:27 pmichaud moritz: are they being reported/recorded somewhere?
19:27 pmichaud are there spectests that produce them?
19:28 moritz pmichaud: here on #perl6 omstly
19:28 pmichaud that's kind of my point, then.
19:28 jnthn moritz: Collecting them in nommap or so would help.
19:28 moritz ok.
19:28 pmichaud put them into RT.
19:28 sorear more spectests = good for everyone
19:28 pmichaud link the appropriate spectest to the ticket.
19:29 * sorear is writing spectests now
19:29 jnthn I suspect the binder patch from last night will have dealt with a good swathe of the segfaults also.
19:29 moritz nom: my $x; $x ^^= 42, 43
19:30 sorear ENOP6EVAL
19:32 pmichaud jnthn: I'm not sure that casting every return value and argument into a p6-type is ultimately a good idea.  But we'll go that way for now.
19:33 jnthn pmichaud: It's the best HLL interop stratergy we have for the time being.
19:34 pmichaud jnthn: no argument there.
19:35 pmichaud where "best" is "least bothersome" I suppose.
19:36 sorear where is this casting stuff happening?
19:36 jnthn On segfaults, I'd note that I've not really jumped on them so far, because in general a segfault gives me a good hint at what's gone wrong.
19:36 jnthn I have an awesome C debugger. I have no Perl 6 debugger.
19:37 jnthn Now we're getting towards nom -> master, I'll be treating segfaults as "must fix".
19:47 pmichaud jnthn: any thoughts on mapping Undef?
19:47 pmichaud I suspect I can also solve the problem in Actions.pm.
19:49 jnthn pmichaud: I think that needs solving in Actions.pm (more)
19:50 jnthn but it could be solved by using the perl6ize_type op and teaching it how to handle undef.
19:50 jnthn What do we need in this case? Nil?
19:50 pmichaud that's what I meant, essentially.,
19:50 pmichaud (perl6ize_type maps Undef)
19:50 jnthn oh, it already does?
19:50 jnthn OK.
19:50 jnthn :)
19:50 pmichaud no, it doesn't yet.  I'm asking if it should.
19:50 jnthn oh!
19:50 jnthn :)
19:51 jnthn I don't mind it doing so.
19:51 jnthn Our only challenge is that we're trying to map an untyped undef into the Perl 6 typed undef world.
19:51 pmichaud according to S03 ^^ is supposed to return Bool::False or ().
19:51 pmichaud which... suck.
19:51 pmichaud *sucks
19:51 jnthn or, we get a choice? :)
19:51 jnthn s/or, /
19:52 benabik untyped undef = Any()?
19:52 pmichaud Bool::False, but () in list context.
19:52 jnthn What's...list context?
19:52 jnthn :)
19:52 pmichaud yeah, exactly.
19:52 moritz sounds like a p5 fossile
19:52 pmichaud I may declare that a fossil.
19:52 jnthn Does anything else behave like that?
19:52 jnthn Yeah, fossil indeed. :)
19:52 pmichaud So perhaps returning Nil is best.
19:52 moritz +1
19:52 jnthn OK
19:52 jnthn But where is Nil defined? :)
19:53 pmichaud perl6ize type doesn't have access to Nil, so maybe I'll just put it into Actions.pm for now.
19:53 jnthn OK
19:53 pmichaud There will have to be some Actions.pm support anyway.
19:54 moritz on a barely related note, at some point we'll have to throw Perl 6 exceptions from C
19:54 moritz for example for the "Can't access attributes on a type object" error
19:54 moritz any plans on how to approach that?
19:54 pmichaud we have to throw exceptions that map to Perl 6 exceptions.  I don't think that C has to throw a Perl 6 exception directly.
19:55 moritz right
19:55 jnthn We'll handle it with a mapping of some kind, I expect.
19:56 pmichaud that's what I'm guessing.  If nothing else, &EXCEPTION can probably do that mapping.
19:56 jnthn *nod*
19:58 moritz sounds like a valid approach
20:08 sorear jnthn++ # blog
20:37 * colomon just realized he forgot about #phasers.  but hey, jnthn++ # exciting blog post
20:53 tadzik :)
20:54 tadzik so we can implement a profiler that way, no? :)
20:56 tadzik ...like, now? :)
20:57 pmichaud tadzik: that doesn't seem like much of a profiler.
20:57 pmichaud all it tells us is method lookups, iiuc
20:58 tadzik we can check the time, run the actual method, check the time
20:58 tadzik then count the total time and count
20:58 pmichaud ...unless there's an exception.
20:58 tadzik yes
20:58 TimToady put a LEAVE block :)
20:59 pmichaud tadzik: if I'm reading the code correctly -- none of this is actually doing the "run the actual method" part.
20:59 tadzik hmm
21:00 tadzik there's a nextsame
21:00 tadzik that could become callsame, in the middle
21:00 jnthn Note it just looks up the method.
21:00 TimToady or put a LEAVE block :)
21:00 jnthn You need to calculate a closure there and have find_method return that.
21:01 tadzik oh, find_method, not fire_method
21:01 tadzik okay
21:01 jnthn And as TimToady++ said, it can't be that robust until we have LEAVE blocks. But it's still doable otherwise.
21:02 TimToady though, arguably, the LEAVE could run any time between the nextsame and the actual return, unless we nail it down
21:03 jnthn TimToady: This is find_method, not dispatch_method.
21:03 jnthn (there isn't a dispatch_method)
21:03 jnthn (that'd be bad meta-model design, imho)
21:03 TimToady right
21:03 pmichaud nextsame here is simply going on to the next find_method candidate, not to the method itself.
21:03 jnthn Correct.
21:03 jnthn So
21:04 jnthn method find_method($obj, $name) {
21:04 sorear I vote for defining nextsame to never, ever, ever require an extra call frame.  That means calling LEAVEs immediately.
21:04 jnthn return -> *@args, *%named {
21:04 TimToady call always write callsame to get the other behavior
21:04 jnthn # log start time
21:05 jnthn nextsame()($obj, |@args, |%named);
21:05 sorear can'tcha just use |$cap?
21:05 jnthn # log end time
21:05 jnthn }
21:05 jnthn }
21:05 pmichaud jnthn: that won't work for methods that have  (**@lol)  arguments.
21:05 jnthn sorear: Yes, if I'd implemented it.
21:05 jnthn pmichaud: Yeah, we want |$c really
21:05 pmichaud right.
21:05 jnthn pmichaud: I just didn't get around to that yet and was trying to give tadzik++ something that'd likely work today :)
21:05 pmichaud eh, profiling at the nqp level will be easier anyway :)
21:06 jnthn aye :)
21:06 jnthn But meta-programming is fun!
21:06 jnthn ;)
21:07 sorear Is there any reason to forbid $CORE::_ ?
21:16 masak left #phasers

| Channels | #phasers index | Today | | Search | Google Search | Plain-Text | summary