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.
11:34 Util left, tadzik left, PerlJam left 11:35 pmichaud left 11:50 tadzik joined 11:52 pmichaud joined, PerlJam joined, Util joined 12:50 PerlJam left 12:52 PerlJam joined 14:15 [Coke] left 14:16 [Coke] joined 14:27 [Coke] left 14:29 [Coke] joined 16:23 [particle] left, [particle] joined 16:49 benabik joined
sorear did: 17:50
mostly small things
fixed »+=« and related double meta operators
made (@x is copy) DTRT with itemy lists [1,2,3] 17:51
changed [+] to be a listop, seems to work great so far
got $_ $! $/ working according to spec... well it doesn't do the *-twigil-like thing yet 17:52
state $, \\(state $), state $x will start, now implemented 17:53
made $*OUT.print 4 detection work properly
attempted to discuss how sink context work, failed 17:54
will do:
try grapheme ropes
EOR
17:56 takadonet joined 17:59 mberends joined
mberends pre-report: 18:07
* began committing preparatory bits of 6model/c 18:08
* only some infrastructure testing so far, this will be slow drawn out progress 18:09
* aiming to support Windows as well as Unix from the start
* laptop battery soon to expire, will miss the official start of #phasers 18:11
* bbl
.eor
18:11 mberends left
[Coke] did: 18:42
* worked on some VLHF in nom
* triage the nom spec tests to generate more LHF * mostly updates to t/spectest.data; * mark some tests as 'nom regression'
will do:
EOR
* more test-related work
18:49 masak joined
masak pre-report: still blogging. distracted by $vacation, but writing in my spare**2 time on the adventure game. progress is made all the time. life is good. eor 18:49
will probably miss #phasers. 18:51
pmichaud Pm's report: 18:53
What I did: 18:54
nom stuff:
* Refactored some core methods (Any.values)
* Fixed the interactive REPL, with jnthn++
* Wrote basic Juntion type (jnthn++ then added junction dispatch)
* Cleaned up .gist a bit
* Added Stringy Role, Str.perl now escapes
* Enabled some more spectests
* Added infix<=:=>, reversed sequences, 0-arg and 1-arg operators
* Added and optimized List.roll and List.pick
nqp stuff:
* Fixed interactive REPL context handling
* Added nqp::deb() opcode for efficient debugging
* Added NQPMu.__dump so nqp objects participate in Parrot's Data::Dumper
* New nqp-based implementation of regex engine
What I plan to do:
* nom regexes
* more CORE functionality
* more spectests
* Work on S07 redraft
EOR
Util # Done and Doing: 18:55
* Helped soa_cah_toa++ to reduce Q:PIR in Digest::SHA256
* Gave "Highlights from YAPC" talk at Atlanta.pm
= ...included recaps of Parrot and Perl 6 team interactions.
= Encouraged Jeek++ to make his first (Perl 5) RosettaCode post
* Running smoker and fixing bugs (mappedbytearray) on Win32 for upcoming Parrot release.
* Working on 2nd Perl 6 solution for RosettaCode: Zig-zag_matrix
* Thinking deeply on Flutter
EOR 18:56
sorear o/ 19:00
Util \\o
tadzik o/ 19:01
Util Be advised: #parrotsketch has moved their meeting up 1 hour, and will now start 30 minutes after the start of #phasers. 19:02
(So some of us will be straddling channels)
tadzik can i/
?
jnthn o/ 19:03
tadzik: go ahead
tadzik so: finished the serialization of Pod, enabled = as a twigil and $=POD now works nicely and holds the sensemaking content
implemented tables in pod, tests are still being tuned 19:04
moved most of the Pod processing methods from Actions.pm to Pod.pm (new file)
filed my midterm evaluations 19:05
plans: finish formatting codes before
s/before//
.WHY and other things on schedule
blockers: @familystuff 19:06
=end report
jnthn tadzik++
jnthn can report 19:08
Over the last week...
* Returned from Beijing Perl Workshop
* Junction auto-threading in multi and single dispatch
* Only generate accessor methods if needed
* Implement "is rw" trait for routines, scattered it where needed in CORE.setting
* Implement type checking of return values and introspection of the return type
* Fixed performance bug in scalar assignment
* Fixed "has ($!a, $!b)"
* Implemented default *%_ for methods, in a lazy way so we don't hose performance
* Scalar return values are decontainerized when we fall off the bottom now
* Fixes to nested classes
* Implemented auto-generation of protos for lexical and method multis
* Implemented multis in nested lexical scopes
* Made .^parents work, including :tree
* Implemented Attribute.get_value
* Made mentions of generic types in non-declarative contexts in roles work
* Fixed default { ... }
* First cut of mixins (does and but infix operators)
* [next|call][same|with] for multi dispatch and method dispatch
* Improved BEGIN-time/CHECK-time code execution; it now sees declarative things in the outer scopes
* Assorted smaller fixes
In the next day or two...
* Enums 19:09
* Work with Pm on regexes
I'll be heading on vacation on Thursday evening, to the mountains. No wifi at the place I'm staying, no laptop, no IRC, very unlikely I'll backlog. Will try to check emails now and then; /msg me if you want the address that I'll be checking.
EOR
tadzik woo
jnthn++
also: sorear++ mberends++ [Coke]++ masak++ pmichaud++ and Util++ while I was late-ish :)
pmichaud any other reports? 19:10
I have one item for discussion.
moritz reappars-ish 19:11
19:13 mberends joined
sorear as do I (probably the same one) 19:13
pmichaud okay, here's my item: 19:14
(several points lead up to it)
* Parrot 3.6.0 releases a week from today 19:15
* The next Rakudo compiler release is (nominally) two days after that
* We're also scheduled for a Star release in July
* We want to have a distribution release based on nom sometime either before or during yapc::eu
* That distribution release almost certainly will not be based on any nom release we make in July
How shall we announce/schedule for July and August? Ideas?
mberends sorear: is this your item too? 19:16
tadzik do we have anything new in Rakudo since last release?
pmichaud bugfix.
moritz is in favor of an irregular, nom-based release
compiler release, that is
and then base a star release on it 19:17
tadzik Star is supposed to be the Star that sorear++ can finally build, right?
moritz timing? no idea
tadzik or was that the last one?
pmichaud tadzik: no idea -- I didn't know that sorear++ couldn't build Star.
I agree with moritz (I think) -- I don't know that we need to push to do nom->master for the July compiler release, if we know that we're going to turn around and issue another release a week or two after that 19:18
(I'm still in favor of making nom->master as soon as we can, though :) 19:19
jnthn To the degree that it matters that I'm around when nom->master happens, I know that I'll not be back from vacation by nom->master.
er
gah
I mean, back by the July release.
As I see it the key things are: 19:20
1) We have a nom-based distribution release for YAPC::EU
2) We have some distribution releae prior to that, so we can give people advanced warning about several of the upcoming changes that are likely to bite them (mostly because nom follows spec better) 19:21
Generally, 1 wants to be as far aways as possible to have maximum polish, and 2 wants to be as soon as possible for the role we want it to play.
pmichaud Okay, here's an idea. 19:22
Let's make the rakudo compiler release based on master.
(the July release)
jnthn In terms of end users, the compiler releases matter a bunch less, plus there's no reason a distribution release has to be based on a compiler release.
pmichaud It will be the *last* compiler release based on master.
Very shortly after that release, we do the nom->master switch.
I.e., we're committed that the next compiler release (whenever it is) will be based on nom. 19:23
Util Thoughts: 1. Do not make a late release of Rakudo, no matter what. 2. Delay R* until Rakudo has had a nom-based release. 3. Make an early release of Rakudo if nom is ready off-regular-release-schedule.
pmichaud I think we should also do one more R* release based on master. 19:24
If only so we can give adequate deprecation warnings.
jnthn Util: Trouble with 2 is that we could do with an R* release taht comes before a nom one...what pmichaud++ said.
pmichaud The distribution release that happens around yapc::eu doesn't have to be called "Star", either. :)
okay, I think this crystallizes my thoughts a bit (more) 19:26
July compiler release based on master
July Star release based on that, with notes about the upcoming switch
shortly after the 20th, switch nom->master in github
the weekend of Jul 30 (time to be determined) we're thinking of having a "modules hackathon" where we can go through the Star modules and test/update them for nom 19:27
if Jul 30 doesn't work out, we'll aim for Aug 6
sometime around Aug 6 we issue a nom-based compiler release 19:28
sometime shortly after that we craft up a distribution based on that
name to be determined, date to be determined
but something available as a tarball for people to try out by the beginning of the yapc::eu hackathon
jnthn +1
Util As long as R* coming out in July does not block a nom-based R* (for the normal 3 months), I am good with any variation of that. 19:29
pmichaud we're never "blocked" on releases
Util the R* schedule is 3 months, right?
pmichaud R* is structured such that we say when we expect the next release to occur (and stick to it), but can always issue an earlier release if there's reason to do so
Util I am just asserting that nom is a reason to do so. 19:30
pmichaud and there's absolutely no argument about that :)
Util +1
pmichaud I think we're all eager to get nom out for general usage asap
but we also want to be mindful of "underpromise, overdeliver"
[Coke] +1
pmichaud any objections to the tentative plan scoped above? If not, I'll write it up for the blog and rakudo.org 19:31
that will give us time for public comment and ideas as well. 19:32
(objections can be logged here or #perl6 for the next few hours) 19:33
end of item for me -- I relinguish the floor to whoever wants to take it next. :)
TimToady just wants the ceiling
benabik is a fly on the wall.
TimToady that itches 19:34
pmichaud TimToady is always asking implementors to do the impossible... maybe the next release can be "Rakudo Impossible" :_)
or even just "Rakudo Moon" :) 19:35
jnthn "Rakudo Impossible" may be...unfortunate 19:36
Rakudo Impossible To Get Faster!
Rakudo Impossible To Release Next Week!
:) 19:37
pmichaud sorear: you had an item for discussion also... what what I presented your item? 19:38
TimToady The Man from R.A.K.U.D.O. 19:41
Get Rakudo
Wild Wild Rakudo
The R Team 19:42
Perl Six Million Dollar Rakudo
TimToady looks at everyone staring at him
pmichaud I call "The Man from R.A.K.U.D.O." for use in a talk somewhere
:-P 19:43
pmichaud updates his slides.
sorear pmichaud: I still want proper discussion of "sink context"
pmichaud The Rakudo Prophecy. The Dark Rakudo. 19:44
The Good, The Bad, and The Rakudo.
sorear pmichaud: last time we came to some vague ideas that "=" is syntactically special, but we didn't get anything on what the context *is*, although TimToady said it probably wasn't a method
TimToady The Seven Rakudai
pmichaud Rakudo IV: A new Hope.
er, Rakudo Episode IV: A New Hope
to be followed by Rakudo Episode V: The Wall Strikes Back :-P 19:45
sorear sinkiness has been implicated in do { (1..*).map(&say); 2 }
it has also been implicated in do { returns_a_failure(); 2 }
pmichaud (taking rakudo movie titles to #perl6)
TimToady the first is merely eager()
pmichaud iiuc, it's implicated in { @list.map(&say); 2 } 19:47
TimToady the second means either examining the values directly for unhandled failure, or passing it off to some immediate GC that does it
pmichaud regardless of whether @list is infinite
TimToady you think sink is strictly eager? something to be said for that 19:48
since you're obviously throwing away any .plan
the only reason to have it is if it has a side effect 19:49
pmichaud well, I'm thinking of the case
{ for @list { ... }; 2 }
_something_ makes that for loop do its thing. I always assumed it was sink context.
TimToady and a side-effecty thing can be marked infinite yet terminate
pmichaud (well, I didn't "always" assume that, that's what I've come to expect from previous discussions :) 19:50
TimToady yes, that's likely
I think strict eager is pretty easy to understand; it's the failure business that is hazier 19:51
pmichaud but my question is
{ @list.map({...}); 2 } # we eagerly evaluate the map
{ my $x = @list.map({...}); 2 } # what suppresses the eagerness? 19:52
TimToady we don't apply sink to an assignment or pseudo-assignment
an assignment is already a "sink" 19:53
pmichaud and that's a syntactic suppression?
or ... ?
TimToady or shallow semantic 19:54
a role of KitchenSink on the operator?
pmichaud I'm fine if it's a trait or something that we can easily recognize 19:55
TimToady just sayin' it shouldn't be a list of operators, but a generalizable thingy 19:56
pmichaud ooc, what's the expected behavior of something like: 19:58
TimToady and since we don't guarantee refcount GC, I think sink has to examing each value it's discarding for unhandled failure 19:59
pmichaud that seems good
TimToady *mine
pmichaud so, maybe something like sub infix:<foo>($a, $b) is unsinkable { ... } ? 20:02
TimToady is sucky
pmichaud the idea, or an alternative to my Titantic reference? ;-) 20:03
TimToady both :)
course we'd have to rename sink to suck then
pmichaud I'm not sure we want 'suck context' 20:04
:)
TimToady to an FPtician, all side effects are in suck context :)
"avoid context" :) 20:05
sorear TimToady: what does "a roles of KitchenSink on the operator" even mean? 20:06
TimToady you look at the op at the top of the expression tree, and if it already is a sink, you don't slap a sink op around that. 20:08
at most, just something that throws away any values it does return, if you're on, say, a stack machine 20:09
but not eagerly, and not with prejudice against failures
basically, each statement needs some cleanup, which in some cases is a no-op, or close to it, but in the normal sink case has to provide eagerness and autodie 20:10
final statements instead need to arrange for return 20:11
in many cases the sink actually provides the synchronization point between statements; it controls what must happen before control passes to the next statement 20:12
I don't care if it's a role on operators, or just some other trait or bit flag, as long as it's generalizable to user-defined ops too 20:13
is there anything else you want to know about it?
pmichaud not for me... I think that works out okay fo rme. 20:14
sorear I'm trying to figure out what you mean by a role on operators.
Like &infix:<=> does KitchenSink; ?
or maybe class Op::Assign does KitchenSink { ... }? 20:15
TimToady I just mean some bit that can be mixed into an operator object that otherwise would not have that bit
I don't care about the specifics
jnthn Most probably it'd happen by an "is foo" which in the trait handler does a mixin
pmichaud that's what I'm thinking.
sorear What is an operator object in Standard #perl6 Jargon?
TimToady it's just a Routine
jnthn sorear: Just a Routine most probably.
sorear aha. 20:16
ok.
TimToady conceivably one could somehow mark the datastream instead, and then an always-there sink op would see if the datastream was already "sunk"
but that seems like unnecessary complication 20:17
and you'd like to optimize away the sink entirely where it's not needed
(though the equivalent to sink in Perl 5 is also useful for statement stepping in the debugger) 20:18
that could be pessimized when you request the debugger though 20:19
and, in fact, it's more of a statement starter in p5, not a statement stopper...
anyway, that was mostly an idle thought 20:20
sorear ooc, what was pp_nextstate's original purpose? 20:23
DB::DB? FREETEMPS? setting the line number? something else?
TimToady DB::DB was later
mostly the latter two 20:24
stack discipline and line metatdata
s:3rd/t// 20:43
sorear is vaguely concerned about whether sink context will pull its weight in the long run, but at least has enough info to go on now 20:51
21:42 [particle] left 21:43 [particle] joined 22:47 masak left
TimToady it doesn't have to pull any weight if you write in FP style, since it only enforces side effects :) 23:49
sorear I mean that it has a runtime cost and I feel a need to justify all costs. 23:52
interesting corner case: my $a; my @x; sub foo() { $a = 5; @x = 1..* }; foo; 2 23:54
the user might have a semantic model where foo() reeturns "nothing important"
but it actually returns the list, so by using it in a sink context the user has eagerized @x
TimToady well, that argues for marking the list as "sunk" before you return it 23:59
since it's an assignment