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