pugscode.org/ planetsix.perl.org/ feather.perl6.nl/syn/ perlcabal.org/svn/pugs/log github.com/rakudo/rakudo | nopaste: sial.org/pbot/perl6 | evalbot: "perl6: say 3;" | irclog: irc.pugscode.org/ | Rakudo.org www.perlfoundation.org/perl6/index.cgi?smop perl.net.au/wiki/Elf |~300 days 'til Xmas
Set by mncharity1 on 25 February 2009.
00:01 pmurias joined 00:05 pmurias left
TimToady ruoso: played around some with "operator" and "op" and such, but I think it's going to be something else embedded in the code, since metaops need it too, and maybe even some methods 00:08
hmm, sial doesn't seem to recognize #perl6 00:10
well, this is pretty small
proto infix:<eq> (Any $a, Any $b) { meta ~$a eq ~$b } # user's eq, user's ~ 00:11
multi infix:<eq> (Whatever, Any $b) { -> $a { meta $a eq $b } } # user's eq
multi infix:<eq> (Any $a, Whatever) { -> $b { meta $a eq $b } } # user's eq
multi infix:<eq> (&f:($), Any $b) { -> $a { meta f($a) eq $b } } # user's eq
multi infix:<eq> (Str $a, Str $b) { !Str::leg($a, $b) } # primitive leg, primitive !
where "meta" is negotiable
wayland76 Is "Software Transactional Memory" still the way S17 is going, or can I rip that stuff out? 00:15
00:15 Ariens_Hyperion joined
TimToady not clear. It might be one of those things that's post-6.0.0 00:16
00:17 hercynium left
TimToady but one would really like a coherent transactional system that deals with more than just memory 00:17
00:18 payload1 joined, payload left 00:19 |jedai| joined
wayland76 Ok, how about I add the Event Loop stuff to S17, and leave the STM stuff down the bottom? 00:19
Is there any documentation on calling foreign (ie. C library) code from Perl 6? 00:22
00:23 eternaleye joined
TimToady there's parrots NCI, but nothing defined for Perl 00:23
*parrot's 00:24
in theory we'll have enough type info to call directly without writing glue code
wayland76 Ok. 00:31
But does that mean, then, that we still have to spec how Perl6 will do that?
TimToady up to a point, but it may be rather platform dependent 00:32
00:33 Limbic_Region joined
wayland76 Ok. I don't see why, but I'm no expert on these things :) 00:34
00:34 Ariens_Hyperion left
TimToady suppose we're running on the JVM, and you want to call into glibc. Java ain't gonna make it easy for you. You may have even fewer options running a JS engine in a browser 00:34
wayland76 Could we do it with a namespace (or whatever they're called?) 00:35
ie. EXTERNAL::c_function_name()
TimToady it's almost certainly some kind of a magical use/import
avar wayland76: The way common lisp does it seems sensible 00:36
"Implementation defined"
wayland76 Ok, I can see that. I'm thinking, though, that if the IO modules are going to be written as part of the Setting, they may have to contain some external calls
Ok, now I see why it needs to be implementation defined.
Does that mean that there'll never be a S21? 00:37
TimToady I have no clue what S21 would be without looking 00:38
I don't actually have Camel 3 memorized...
wayland76 21Calling foreign code(TBD)
21 - Calling foreign code - (TBD) 00:39
TimToady there will certainly be some guidelines
we already have a :from switch for pulling code from other languages on the use
whether that other language is implemented in the same platform or a different platform is somewhat immaterial 00:40
except to the implementation, of course
wayland76 Ok. That will give me something to go on, then. I'll write a starter S21 :) 00:41
TimToady but S21 might have a discussion of how to link to some of the common platforms
dalek kudo: 4bb9d8d | pmichaud++ | docs/ChangeLog:
Rename NEWS to ChangeLog, since that's what it really represents.
00:44
kudo: 03e102b | pmichaud++ | docs/NEWS:
Rename NEWS to ChangeLog.
00:48 hercynium_ left 00:51 nihiliad joined
skids Fess up folks, what's the most number of times you've hit enter and said frak why isn't this working before your realized you typed perl -e insteald of ./perl6 -e 00:55
00:55 |jedai| left 00:56 |jedai| joined
TimToady er...0? 00:56
skids well, with you, we'd expect that. 00:57
00:58 Eevee left
skids Are we supposed to be able to add more specific MMD candidates in Perl6 for stuff that's implemented in src/classes in PIR yet? 01:08
wayland76 Is the Pattern role done by everything, or just scalars? 01:12
01:22 Eevee joined 01:27 shinobi-cl joined
diakopter perhaps a better question; how many times have you *intended* to type "perl6..."? 01:32
skids I'm fine with 'multi method foo ($at, $least, $three, *@fourandover) but just out of morbid curiosity is there something like "method foo (*@slurpy where {.elems > 3})"? 01:40
01:44 DemoFreak left 01:47 jimmy_ joined 01:52 frooh joined 02:01 alc joined 02:09 alester joined, Whiteknight left 02:13 eternaleye left, cas_ left 02:16 eternaleye joined
Tene_ skids: a few, certainly 02:31
wayland76 skids: I don't do enough coding to run into that problem. 02:36
In fact, I don't even have Perl6 installed 02:37
(I've been waiting for this next release :) )
skids It must be like Xmas morning for you then! :-)
02:43 dukeleto joined
wayland76 It is, rather :) 02:45
pugs_svn r25601 | wayland++ | - Standardised on .signature vs. .sig
r25601 | wayland++ | - Added some things to S29/S32 that Masak highlighted needed to be added
02:45 shinobi-cl left 02:49 Sepheebear left 02:52 shinobi-cl joined 02:54 shinobi-cl left
s1n rakudo question: what does this mean? 03:01
Multiple Dispatch: No suitable candidate found for 'cmp', with signature 'PP->I'
what is the PP->I mean?
pmichaud it's a parrot issue. Parrot is looking for something that takes two PMCs and returns an int 03:02
s1n pmichaud: there's a possibility i messed something up; i'm working on replacing some methods in a setting class 03:03
pmichaud: do you think i could borrow your attention shortly (for a pm)? 03:04
pmichaud I'm a little distracted at the moment, but I'll do what I can.
03:06 Sepheebear joined
skids fishes for thoughts or link to previous discussion of Collection .delete methods post-lazy-implementation. 03:14
03:15 justatheory left
wayland76 What's lazy implementation? 03:18
s1n can someone review this commit (mind you the prior commits of mine add this stuff to setting): 03:20
7676ae1fdf7d922a9475742951efe2d4511c11b6
better yet: github.com/s1n/rakudo/commit/7676ae...d4511c11b6
skids wayland76: en.wikibooks.org/wiki/Perl_6_Progra..._and_Feeds
s1n basically, it's doing an infinite loop t/spec/S03-operators/range.t (test 10 looks like) 03:22
03:22 _jedai_ joined 03:24 |jedai| left
wayland76 skids: So lazy implementation means "after the implementation of lazy lists and feeds", right? 03:25
jimmy_ rakudo: my @y = (1, 2, 3); @y.perl.say;
p6eval rakudo 03e102: OUTPUT«[1, 2, 3]␤»
jimmy_ rakudo: my @y = (1, 2, 3); @y.say;
p6eval rakudo 03e102: OUTPUT«123␤»
skids wayland76: y
jimmy_ my %z = {:first(1), :second(2), :third(3)} %z.perl.say;
rakudo: my %z = {:first(1), : second(2), :third(3)} %z.perl.say;
p6eval rakudo 03e102: OUTPUT«Statement not terminated properly at line 1, near ": second(2"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
jimmy_ rakudo: my %z = {:first(1), :second(2), :third(3)} %z.perl.say; 03:26
p6eval rakudo 03e102: OUTPUT«Could not find non-existent sub z␤current instr.: '_block14' pc 134 (EVAL_16:51)␤»
jimmy_ rakudo: my %z = {:first(1)} %z.perl.say;
p6eval rakudo 03e102: OUTPUT«Could not find non-existent sub z␤current instr.: '_block14' pc 85 (EVAL_16:44)␤»
jimmy_ rakudo: my %z = {:first(1)}; %z.perl.say;
p6eval rakudo 03e102: OUTPUT«{"first" => 1}␤»
jimmy_ rakudo: my %z = {:first(1)}; %z.say;
p6eval rakudo 03e102: OUTPUT«first 1␤»
jimmy_ rakudo: for 1..5 { print;} 03:27
p6eval rakudo 03e102: OUTPUT«print requires an argument at line 1, near ";}"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤» 03:28
wayland76 skids: Well, according to S32/Containers, Array and Hash both do .delete, but List doesn't
jimmy_ rakudo: for 1..5 { print; }
Tene_ jimmy_: try ".print" instead
p6eval rakudo 03e102: OUTPUT«print requires an argument at line 1, near "; }"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
jimmy_ rakudo: for 1..5 { print $_; }
Tene_ rakudo: .print for 1..5
p6eval rakudo 03e102: OUTPUT«12345»
jimmy_ rakudo: for 1..5 { print $_; }
p6eval rakudo 03e102: OUTPUT«12345»
jimmy_ rakudo: for 1..5 { .print; }
p6eval rakudo 03e102: OUTPUT«12345»
jimmy_ for 1..5 { print; } has been implemented. 03:29
dalek kudo: f68a629 | pmichaud++ | docs/announce/2009-02:
First draft of 2009-02 release announcement.
skids wayland76: but they return List (of deleted values). Which could be lazy, and very confusing to some. 03:30
e.g. @vals = %f.delete('k','j'); shift @vals ; %f.keys.say; shift @vals -- might still have 'j' key/val present at .say. 03:32
pmichaud comments on the draft release announcement welcome. 03:33
skids OTOH @f = %f.delete(@millions_of_keys) would load the system.
Tene_ pmichaud: do you want try {} fixes in before the release? Or have you already made release tarball? 03:35
jimmy_ rakudo: print $_ for 1..5
p6eval rakudo f68a62: OUTPUT«12345»
pmichaud Tene_: I think I'd prefer them post-release, actually.
Tene_ nods.
pmichaud I'm expecting to cut the tarball in the next 25-90 minutes. 03:36
(depends on what other non-Rakudo errands I have to run here in that time)
03:44 Limbic_Region left 03:48 Tene joined
wayland76 skids: I'd think delete would have to do the actual deletions immediately, and store them somewhere (although this may not be what's actually happening) 03:52
If they're being stored "somewhere", that somewhere should probably be the List
Thus I conclude that delete() will probably have to be not-lazy 03:53
Or the implementation will have to be clever enough to resolve this kind of conflict
(but preferably not for Christmas)
:)
skids wayland76: Yeah, I'd say so too but have this sneaking suspicion the Perl6 gurus will have something profound in mind for that. 03:54
Like maybe, lazy, if you add an adverb, or something like that. 03:56
meppl good night 03:57
wayland76 'night meppl
meppl ;)
wayland76 skids: You may be right (you may be crazy?) :)
skids s1n: I know not the review you were looking for, but ($.from cmp $topic) <= 0 seems a bit obfuscated.
03:58 meppl left
pugs_svn r25602 | wayland++ | More masak-inspired changes. 03:58
03:59 Tene_ left 04:02 _jedai_ left, |jedai| joined 04:06 aindilis` joined 04:20 aindilis left
pmichaud anyone with any final comments or suggestions before I cut the release? 04:27
(in about 15 mins)
pugs_svn r25603 | wayland++ | Updated S32 documents, and added S21 04:28
wayland76 Yay! :)
(yay about the release -- that's my comment : 0
:)
04:29 eternaleye left, Exodist left, yahooooo left, oskie left, Grrrr left, Helios left, buu left, PerlJam left, orafu left, IRSeekBot left, lisppaste3 left, alester left, nihiliad left, payload1 left, mikehh left, SamB left, mj41 left, Nom- left, elmex left, bsb left, araujo left, f00li5h[hireme] left, cxreg left, scrottie left, gbacon left, yves left, allbery_b left, ilbot2 left, alester joined, nihiliad joined, payload1 joined, mikehh joined, SamB joined, mj41 joined, Nom- joined, elmex joined, bsb joined, araujo joined, f00li5h[hireme] joined, cxreg joined, yves joined, ilbot2 joined, scrottie joined, allbery_b joined, gbacon joined
skids pmichaud: I meant to complement you on getting the READMEs and other usually-neglected files updated after the repo move. 04:29
I actually was able to figure out where to go and what to do for a change :-) 04:30
04:30 PerlJam joined, eternaleye joined, Exodist joined, yahooooo joined, oskie joined, Grrrr joined, Helios joined, lisppaste3 joined, IRSeekBot joined, buu joined, orafu joined, irc.freenode.net sets mode: +o PerlJam
wayland76 skids: Well, if that's what you think, pmichaud++ :) 04:32
skids Eh, he's got so many ++'s the mantissa probably doesn't even register +1's anymore. 04:33
Tene purkarma pmichaud 04:34
wayland76 @karma pmichaud
lambdabot pmichaud has a karma of 244
Tene ENOPURL
ah 04:35
pmichaud++
skids Oh, something actually *does* keep track :-)
Tene @karma pmichaud
lambdabot pmichaud has a karma of 245
Tene There, now he has 1/10th his #parrot karma here
wayland76 Well, if Karma is a Byte, it may soon overflow :)
Ah, that explains a lot :)
04:36 nikn joined
pmichaud skids: (updating readme's, etc.) -- many thanks. I feel like I'm actually quite tardy on updating those; I'm very glad the effort is appreciated. 04:37
and yes, I work for karma. :-) 04:38
Tene I used to. RSI pain is too bad lately. :( 04:39
skids pmichaud++ then :-)
alester hey pmichuad 04:41
pmichaud alester: did you see my draft (about to be non-draft) announcement text? 04:44
docs/announce/2009-02 04:45
alester in ChangeLog?
oh, yeah, that
pmichaud ChangeLog is the simple "bullet list of changes"
alester lemme look again
pmichaud docs/announce/ holds the newsy announcements.
dalek kudo: c032fa7 | pmichaud++ | docs/announce/2009-02:
Some small wordsmithing items.
skids Tene: :-( RSI sounds so horrible that I'm glad I never learned to type very well. 04:46
alester looking 04:48
wayland76 I have no idea why I don't have RSI 04:49
I have an old chicony keyboard, but other than that, there's no obvious reason
skids If I have a multi method foo (:flag where { .item = 1 }, @slurp) but I know that the named parameter will always be the first element in the arg list, should I do something to optimize MMD to not search the whole list for keys? 04:51
s/keys/Pairs/
pmichaud maybe don't make it a named parameter?
skids Not an option, it's specced that way. 04:52
pmichaud multi method foo ($flag where { .item = 1 }, @slurp)
then how do you know that the named parameter will always be the first element in the arg list?
I'm confused by that.
skids It's the postcircumfix adverbs, what have to be parsed specially. STD.pm moves them to the front of its parse tree objects and PGE doesn;t do them yet. 04:53
pmichaud ...but if they're named arguments, they're always 'non-positional'
er, wait, I have that backwards.
named parameters are always 'non-positional'
the order of the arguments doesn't matter for named parameters. 04:54
the fact that STD.pm moves named arguments to the front may be an artifact of the parse; not necessarily a requirement (or optimization) for the function. 04:55
s/named arguments/adverbs 04:58
at any rate, I'm pretty sure that where { .item = 1 } is wrong :-) 04:59
unless you _really_ intend to do an assignment. :-)
skids Well, probably we'll have to do something other than an actual adverb in actions for it then, special case.
Yeah I meant == of course
pmichaud even that I think is wrong.
== 1 is not the same as "true"
skids Adverbs are Ints. 05:00
pmichaud :foo(True) is not an Int.
iiuc, an adverb simply becomes a named argument 05:01
skids I meant the naked ones. I forget if I just tried { .item }.
alester pmichaud: 9259190a7863c7cc49fa1799ab9929486d2fe56d 05:02
pmichaud I'm pretty sure that TimToady told me that :foo should be equivalent to :foo(True) (in spite of what S02 says)
skids I had to try a bunch of stuff before I figured out .item, it kept blowing up.
jimmy_ @karma jimmy
lambdabot jimmy has a karma of 1
skids Yeah, well, either way that's the easy part.
pmichaud anyway, handling a named argument in actions.pm is no problem 05:03
pugs_svn r25604 | wayland++ | Various small fixes, mostly to signals 05:05
skids damn, want to stay up and code but still one more workday left in the week. gnight. 05:06
pmichaud ugh, I need to find a good cherry pick tutorial. 05:16
Tene what do you want to know about it? 05:19
pmichaud Andy has a commit in his repository. I want to bring that into rakudo's master branch 05:20
alester git cherry-pick 9259190a7863c7cc49fa1799ab9929486d2fe56d
that's it
and then git push
pmichaud pmichaud@orange:~/rakudo$ git cherry-pick 925919
fatal: Cannot find '925919'
Tene he first needs to git remote add andy $URL
alester oooh, right
because
right
pmichaud that's my point.
Tene then git fetch andy
alester or use the fork queue 05:21
pmichaud the fork queue is limited to 50 entries
and we currently have 82
so I can't *see* the entry in the fork queue.
I tried the remote stuff but I'll try again.
alester ok, here's what ya do
05:21 ab5tract joined
Tene git remote add andy git://github.com/petdance/rakudo.git 05:21
git fetch andy
alester yeah, that 05:22
pmichaud okay, I don't know why that didn't work before.
alester or, git remote update
which does updates on all the rmeote repos you're keeping track of locally
pmichaud "updates on all the remote repos" scares me a lot. 05:23
Tene 'git fetch' is always nondestructive. It just pulls down commits, but doesn't even update any refs 05:24
pmichaud yes, I'm much more comfortable with that.
Andy: you seem to wordwrap a little bit longer line than I prefer to have.
Tene Eh, local refs. there are still updates in refs/remotes I think. That's included in what you want, I think. 05:25
alester pmichaud: Bummer. :-)
My vi should have respected your vi modeline.
oh wait
Tene yeah, looks like git remote update just does a bunch of fetches
alester I didn't wrap with vi
Tene so is the same.
alester Tene: it does fetch + update
or fetch + something
pmichaud and this is just a plain text file so I didn't put a vi modeline in the file.
05:26 bacek_ left, AndyAway left, p6eval left, bacek_ joined, AndyAway joined, p6eval joined
Tene alester: not according to man git-remote 05:26
alester I'm meaning to absorb this: robey.lag.net/2008/07/13/git-for-th...world.html
pmichaud: you want I should rewrap for ya? 05:27
pmichaud no thanks, I'll take it as-is.
dalek kudo: 938b764 | (Andy Lester)++ | docs/announce/2009-02:
Wordsmithing, fix some typos, rewrap
pmichaud it's not that big an issue for me.
alester ok
pmichaud it's close enough to be okay :-)
alester I like how I get karma in two channels at once. :-)
I added more stuff in there, like telling people what git is. 05:28
pmichaud yes, I saw that.
alester Just trying to have my author hat on.
pmichaud I was thinking the reference to github might be sufficient.
it feels odd to me that we have a reference to git's site but not Parrot's.
I think I'll put some of the urls in as "footnotes" instead of inline. 05:29
alester ok, how's this 05:30
dru.rakudo.org/
pmichaud: Sounds good
pmichaud somehow I feel like the rakudo site should be more colorful; that's one of the things I like about the Parrot site :-) 05:32
Tene Me too.
alester ok 05:33
themegarden.org
pmichaud yeah, I looked through a few other themes earlier but didn't have time to look extensively
05:33 AzureStone left
alester themegarden.org/drupal6/?q=node&...lemontwist ? 05:39
dalek kudo: 08b7890 | pmichaud++ | docs/announce/2009-02:
Last set of wordsmithing before release.
pmichaud olive has never been one of my favorite colors. 05:40
Yes, I can be picky sometimes :-)
alester yeah, I like the URLs on the bottom. 05:41
pmichaud themegarden.org/drupal6/?q=node&theme=nitobe # not colorful, but nice nonetheless 05:42
alester we also have no logo to put up on the headline
themegarden.org/drupal6/?q=node&...e=abessive ?
pmichaud abessive looks too crowded on my screen 05:43
alester I like that a lot. Clean & not washed
pmichaud I prefer a bit more whitespace
alester we can also tweak the CSS
if that's the only bummer, then that's pretty minor
themegarden.org/drupal6/?q=node&...clearlooks ? 05:44
more white
no boxes
pmichaud themegarden.org/drupal6/?q=node&...me=fervens # maybe ? 05:45
alester oooh themegarden.org/drupal6/?q=node&...cleanslate
pmichaud box_cleanslate is nice too
alester I don't like the boxes on fervens
ok, good.
box_cleanslate it is
two yes votes is enough for me at 2345 05:46
but I'm not gonna get this completed tonight, alas
05:47 jimmy_ left
alester some of these just look like some teenage girl with Photoshop threw up 05:47
05:47 simcop2387 left
alester themegarden.org/drupal6/?q=aggregat...ity_island ? 05:48
also clean, no header graphic for me to replace
pmichaud I like amity_island slightly more than box_cleanslate, I think
okay, more than slightly now that I look at them side-by-side
alester ok. 05:50
amity
Now stop looking! :-)
plus, when we get it goin', i can install others
and you can switch between 'em
and figure what looks best w/rakudo.org directly 05:51
dru.rakudo.org/ 05:52
That's Amity Island
pmichaud yes, much better.
alester urgh, they don't know serif vs. sans serif 05:53
fixed 05:54
mmm, i'm not so sure this is lookin' good on ours
05:56 masak joined
alester eh, maybe it's OK 05:56
I'd feel a whole lot better if I could get the archvies over
05:56 nihiliad left
alester amity isn't going to work long-term, but it's OK for now 06:01
06:02 justatheory joined
alester pmichaud++ 06:07
06:15 simcop2387 joined 06:16 hercynium joined
wayland76 pmichaud++ :) 06:20
rakudo-parrot-split-- 06:24
I used to be able to go "rpmbuild -ta parrot-*.tar.gz" and it would give me RPMs
How do I do that now?
pmichaud make an rpmbuild target for Rakudo, perhaps? ;-) 06:25
wayland76 I'm familiar with RPM, if that helps
Basically, rpmbuild needs a spec file to make things work
Shall I steal the old Parrot one and try to use appropriate bits? 06:26
pmichaud that would be a place to start. But it might also be worthwhile to wait a month and see if we get the 'install' bits cleaned up.
bacek_ pmichaud++ 06:27
wayland76 Hmm. Ok. No perl6 for another month :)
That should give me more time to damage^W work on the specs :) 06:28
bacek_ Hooray, first version of Rakudo for few month with my patch included :)
06:28 ILyuha joined, ILyuha left
alester wayland76: Hey, wayland76, live with it. Ya gotta break eggs to make an omelette. 06:35
06:36 alester left, szabgab joined 06:40 ashizawa joined 06:41 simcop2387 left
wayland76 Agreed. And still pmichaud++ :) 06:41
pugs_svn r25605 | wayland++ | Typo. martin++ 06:46
wayland76 @karma martin
lambdabot martin has a karma of 5
nikn is perl6 really anarchy 06:50
masak nikn: yes, welcome.
wayland76 Hey, I thought it was a benevolent dictatorship :) 06:51
masak wayland76: that, too.
it sort of fluctuates between the two states. 06:52
Tene The benevolent inmates are the dictators of the benevolent asylum?
wayland76 although maybe we should call the other one an anarcho-syndicalist commune
:)
ab5tract wikipedia.org/Participatory_economics
wayland76 Tene: I was thinking of Larry = benevolent dictator
masak rakudo: say ~(<benevolent malevolent neutral>.pick(), <dictatorship anarchy democracy>.pick())
p6eval rakudo 08b789: OUTPUT«neutral dictatorship␤» 06:53
masak :)
nikn haha
wayland76 I guess rakudo doesn't dare venture an opinion on larry, but doesn't mind stating fact :)
masak nikn: have you tried Rakudo yet? it's awesome!
wayland76: something like that. 06:54
just don't ask it again. :)
wayland76 ab5tract: That's 404 :) But I found the page you meant
Tene Eh, larry doesn't claim to rule afaict, he mostly just sits there occasionally emitting designs that we all choose to implement.
ab5tract oh i typed it freehand oops
paste it wayland76 :)
wayland76 nikn: By "awesome", he means "doesn't have a lot of libraries, but the core language is getting there"
Well, if you insist. en.wikipedia.org/wiki/Participatory_economics 06:55
ab5tract it's totally in the tradition of the anarcho syndicalists and wobbly types
nikn rakudo: say ~(<i will learn perl>, <slowly painfully>.pick())
p6eval rakudo 08b789: OUTPUT«i will learn perl slowly␤»
nikn :)
thank god
pmichaud the two aren't mutually exclusive. :-) 06:56
masak wayland76: no, by "awesome", I mean "awesome", and screw the libraries for now.
if we need'em, we write'em.
06:56 mberends joined
wayland76 masak: Agreed, but I wanted to be sure we didn't build hopes too high, and then disappoint :) 06:56
masak mberends: greetings.
wayland76: there's plenty of chance for that anyway. :) 06:57
wayland76 ab5tract: I was thinking of the "Repressed" skit by the pythons :)
masak nikn: watch out for bugs. and when you find them, be sure to send us a noe.
mberends masak++ : greetings. your SVG is sweet indeed
ab5tract wayland76: Naturally :)
masak mberends: thank you. :)
nikn masak: shore thing
wayland76 (that means you come on the channel and say "oh noes!" :)
masak mberends: will add lots of validation soon.
ab5tract (but parecon is some seriously cool shit) 06:58
Tene ""O HAI GUYZ OBTW THERE ARE BUGS!!!!!!!"
ab5tract lol
mberends masak: I think SVG.pm should be promoted to XML.pm
masak mberends: been thinking the same thing.
mberends masak++
masak mberends: that might happen, but probably not until I have a reason for it.
pmichaud good night, all 06:59
bbt
masak pmichaud: night
mberends XHTML, for example
wayland76 pmichaud: night, and thanks
masak mberends: if someone else clones it and builds XML.pm, I will do my very best to refit SVG.pm on top of XML.pm
mberends: right now my main objective is to do SVG :)
mberends fine. that's all I have have time to report. commute & 07:00
o/
wayland76 Is it in a repository?
07:00 mberends left
masak mberends: aye, SVG and XHTML will both be validators on top of XML 07:00
wayland76: yes.
wayland76 I'm interested in hacking Tree::Node stuff onto XML
masak wayland76: you can download it with proto. :)
wayland76 would that upset you somehow?
masak wayland76: not if you stay out of CORE, no.
wayland76: you're free to do whatever you want in modules. 07:01
wayland76 Will require MONKEY_PATCHING then :)
masak :)
looking forward to seeing that.
wayland76 Well, first, I have to get rakudo doing rpmbuild
and I'm also kinda interested in doing the CPAN modules 07:02
Do we have a HTTP module yet?
07:02 justatheory left
masak wayland76: no, but it's planned for the Web project. 07:02
wayland76: feel free to join in.
wayland76 OK
I started investigating doing HTTP
masak news.perlfoundation.org/2009/02/200...bpm_-.html
wayland76 But then decided I needed the IO spec more finished :)
masak wayland76: there's also an old HTTP in the Pugs repository. 07:03
wayland76 And if I could also get the event model and a finite state machine, then the thing will be half done :)
pugs_svn r25606 | lwall++ | some enum cleanup
masak wayland76: hm. just realized that the line numbers in my replies to you on p6l might be off, because I was looking at an outdated Spec/ directory. 07:05
but I don't think that the facts changed.
wayland76 Ok. When the e-mail arrives, I'll keep that in mind :) 07:06
masak emails. :) 07:07
wayland76 Yeah, I think we must've discussed HTTP once before
Well, I think it's due to the 2 or 3 layers of spam checking :)
masak I plan to start on the Web effort in earnest next week.
I'd like to get something like Ruby's Sinatra up and running.
don't know how difficult that'll be.
www.sinatrarb.com/ 07:08
will probably read the code this weekend.
Matt-W Morning
ab5tract wayland76: You might be interested in this: rubywaves.com
masak morning, marvellous M people!
wayland76 Matt-W: morning :) 07:09
ab5tract the page layout may be borked atm
wayland76 masak: Are you planning HTTP does IO::Socket::TCP?
masak ab5tract: nice. will process that site.
ab5tract It's designed around Resource oriented web programming
masak wayland76: don't know yet.
ab5tract: cool.
ab5tract and the best part: the core dispatcher is based on a ruby gem called Functor, which essentially implements MMD 07:10
Really shows off the utility of the concept imo 07:11
masak yes, that sounds fantastic.
wayland76 Why does waves provide a Digital Subscriber Line (DSL)? :)
ab5tract the lead designer was just getting sad about people focusing on sinatra over waves 07:12
masak poor guy. 07:13
ab5tract cuz thats what non-perlers call 'dialects' ;)
wayland76 (or, what does DSL stand for in this context, since my Google foo doesn't seem to be helping me)
Ok, thanks :)
ab5tract Domain specific language
Matt-W masak: did you say there's an example of passing action object to a grammar in November?
wayland76 Ah
ab5tract Rails == A DSL
masak Matt-W: yes, in a branch. see yesterday's logs.
ab5tract thats why it == booo
;)
masak Matt-W: right after my little accident.
ab5tract waves is most remarkable for being so integrally ruby-esque 07:14
masak I believe Perl 6's Web can take many cues from the Ruby world.
wayland76 Thanks all. Food! &
ab5tract yeah
masak not necessarily mimicking everything, just being inspired. 07:15
ab5tract for instance you will want to spin something together to take the place of Rack
masak they do cool things on the other side of the fence.
ab5tract: yes. been thinking the same.
ab5tract yeah. I can't wait for the worlds to merge
masak ab5tract: Rack is actually quite lang-independent. I think I will steal it right off, including the name.
ab5tract hmmm
sounds good ;) 07:16
masak: come play in #waves any time
masak ab5tract: absolutely. starting next week.
Matt-W masak: guess how far back my scrollback doesn't go... 07:17
masak Matt-W: hit the web logs then, you lazy person. :)
ab5tract masak: I've literally been thinking of how powerful a tractor app integrated resource oriented architecture (ROA) could be for Perl 6 since Dan Yoder dropped MMD in the middle of our dispatcher 07:18
masak ab5tract: I'm really glad about how things come together for Perl 6 Web.
ab5tract: and the "funny" thing is, the Perl 5 people who don't do Perl 6 don't really seem to get it. they're all "what's wrong with CGI?". boy, will they be surprised! 07:19
ab5tract seriously
jeez its funny how some folks are 07:20
blows my mind when i read a perl blog complaining about perl 6 development
i've been lurking on you guys since 10 sep 001
pretty amazing to see it all coming together right now, actually. 07:24
Matt-W That's about how long I've been paying attention
The trouble is, if you don't pay much attention it doesn't look like a great deal is happening
But things are moving really really fast now, you're quite right it's amazing 07:25
Matt-W -> the office
&
07:26 jimmy_ joined
ab5tract Yeah but why talk crap about something you haven't even researched >:( 07:26
Parrot itself would change the world 07:27
toss Perl 6 on top...
(and you can say that same thing with switched subjects too) 07:28
i digress
masak ab5tract: people like to feel that they are on top of things despite never having tried them. that often comes out as badmouthing.
they don't mean any harm, they're just victims of their own cluelessness.
07:28 NoirSoldats joined
ab5tract masak: yeah, it is all about water off the back. 07:29
masak well, thing is, it can still hurt. I have to remind myself sometimes that they say stupid things because they haven't seen the Perl 6 development from the inside. 07:30
ab5tract masak: Well I am definitely interested in helping do a Waves-style ROA implementation in p6 so
masak ab5tract: you're on. 07:31
ab5tract I'll be learning p6 at the same time, and the deep internals of Waves have always mystified me
masak ab5tract: would you mind terriblu joining the November wiki mailing list?
that's where the discussion about Web will take place.
I'm about to write a short mail about how Rack, Sinatra and now Waves have impressed me lately. 07:32
ab5tract We are lucky in that we will not need to do a dance to get mmd
masak right.
ab5tract cool, yeah I'm already lurking
masak excellent.
ab5tract and perl6 grammar == drool ;)
masak I guess. what's drool? :) 07:33
ab5tract I mean, it is awesome
hehe 07:34
I am very excited to use p6 grammars inside request dispatch
jimmy_ Is there Web.pm mailing list?
for perl6
masak jimmy_: no, just the November wiki mailing list. 07:35
groups.google.com/group/november-wiki
I expect to start work on Web next week, and ihrd too. 07:36
and we'll keep our Web discussion there.
jimmy_ joined it.
ab5tract masak: From the comments on the grant proposal, Waves' approach to modularity may go a ways to soothing fears
masak ab5tract: please comment. 07:37
ab5tract sure
masak we need all the support we can get. :)
ab5tract not tonight though ;)
masak no prob.
pugs_svn r25607 | lwall++ | deprecate "is also" and "is instead" in favor of augment and supersede declarators 07:40
ab5tract masak: this quevlar guy is a riot
"For grammars please go to the dragon book from Aho, Sethi and Ullman."
lol
masak :D
ab5tract: I've replied to him very nicely.
but the reply has not been approved yet.
pugs_svn r25608 | lwall++ | [STD] add augment and supersede declarators
ab5tract i read one from you to him 07:42
pugs_svn r25609 | lwall++ | typo
ab5tract it was maybe too nice ;)
but you did good 07:43
i will try to write something intelligent
as for tonight
it ends for me now
glad I was lurking in here tonight!
peace out y'all 07:44
07:45 ab5tract left
masak ab5tract++ 07:45
but I do believe you can never be too nice in a blog comment. 07:47
wayland76 Googled <<quevlar grammar>>. "Do you mean kevlar grammar"? :) 07:53
07:54 bacek joined
wayland76 Is one of the projects discussed so far a CMS? 07:55
masak wayland76: no.
but we do have a wiki.
wayland76 Fine. I'd like to do a CMS
07:55 eternaleye left
wayland76 But I want one that stores all data as XML 07:56
And outputs XHTML2
downgrading to XHTML1 as necessary
masak wayland76: let's keep in touch about that. we need things built on top of Web, once it arrives. :)
wayland76 Which obviously requires lots of XML manipulation :)
I was in the Drupal community for a few months, and while they evolve too fast, they try to get the architecture right 07:57
So maybe we could copy some of that :)
And I have a really good name for it, but am planning to keep that secret for a while :) 07:59
08:01 bacek_ left
masak wayland76: looking forward to hearing more about your project. 08:03
wayland76 Well, it won't happen until some of the prereqs are in place 08:04
Can you give me a link for your SVG :)
masak wayland76: sure, hold on. 08:06
github.com/masak/svg/tree/master/lib/SVG.pm 08:07
wayland76 Thanks. Did you notice that I specced a requirement for basic URI handling in IO.pod?
masak wayland76: no.
I might look at that.
wayland76: why should Perl 6 do basic URI handling?
wayland76 (ie. there's a .uri function that acts as a constructor)
Oh, wait, it might not be IO.pod 08:08
masak I found .uri there, anyway.
wayland76 Yeah, that's right, that's the one
masak looks OK to me.
it's a factory method of some sort. 08:09
wayland76 Ah, good, a proper name for it :)
masak is that an actual implementation I see? 08:10
seems wrongish to have that in the spec...
wayland76 Well, yes :)
I agree :)
masak good.
wayland76 But if you want to take the code out, and rewrite it in English, feel free :)
masak the trick is not to spec too much, remember? :)
I think the stuff above already does a good enough job. 08:11
wayland76 But then we need to specify what %?PROTOCOLS{'whatever'} takes as parameters
08:11 DemoFreak joined 08:13 jimmy_ left
masak what the heck is %?PROTOCOLS ? it's the first time I hear about it. 08:13
wayland76 I made it up :)
But it's in IO.pod now
masak I'm not sure that should be a global variable.
wayland76 (actually, I'm editing it; stand by for new version) 08:14
Maybe not. But what does it go on?
masak seems very IO-specific.
a class attr on IO should be fine by me.
but I still don't think that actual implementation should be specced.
wayland76 Yeah, removing implementation :)
masak unless it's perfectly clear it's pseudocode.
yay, enum names have landed! TimToady++ 08:15
pugs_svn r25610 | wayland++ | IO.pod: Got rid of code, replaced it with spec 08:16
wayland76 There we go. Try svn up, and see if it's a bit better 08:17
Now to explain why we want %?PROTOCOLS
If we're to have a generic uri() method that isn't attached to a particular object
we have to have some way of knowing which object to create
masak I'm a bit too distracted too evaluate this design. 08:18
wayland76 ok :)
masak I'll let others have a say instead.
wayland76 I'd love to hear a better idea
perl6 -e 'uri("www.perl.org/").print'
masak I'm sure people will have valuable suggestions. 08:19
wayland76: what should an IO::Socket::TCP stringify to?
wayland76 Or perl6 -e 'IO::Socket::HTTP.uri("www.perl.org/").print'
At the moment, IO overrides print so that it prints to the socket 08:20
so I'm not sure what's going on there :)
I'm assuming it will suck data from the socket and print it to $*OUT, but that's probably wrong :)
masak I'm not sure at which point of the overspeccing boundary I think this falls.
I think the core modules in Perl 6 should be those really vital for making Perl 6 Perl 6. 08:21
not a lot of net communications stuff.
08:21 AzureStone joined
masak I say this as someone who will need a lot of net communications stuff in Perl 6 very soon. 08:21
wayland76 I'm mainly interested in TCP because it allows us to easily make the IO::Socket abstraction that we use for reading files also do net stuff 08:22
masak wayland76: yes... but why in the Perl 6 spec?
why not in a really good module? 08:23
wayland76 So I guess I'm saying that the Perl 6 spec should have to be consistent with the IO::Socket::TCP spec, but that Perl6 implementors may be able to avoid it
masak: Well, perl5 has it as built-in
masak oh, ok.
masak knows too little about all this
wayland76 I'm trying to find something to do with all those socket/bind/listen/whatever calls :)
masak ah, right. 08:24
wayland76 And it would be raw HTTP output, headers and all
masak just don't overspec, and I'm happy. it ought to be very possible to override classes, for example.
wayland76 (TCP, that is, not a HTTP module which of course doesn't go in core)
masak wayland76++
wayland76 I'm trying not to write classes, just roles :)
masak we are in violent agreement.
wayland76 And, strangely enough, you're violet in my IRC client :) 08:25
(ie. it's colouring your name violet)
The only real disagreement at this point, I think, is %?PROTOCOLS
masak ...which isn't spelled that way in your commits. 08:26
wayland76 And if someone sends me a better idea, hooray, but be prepared to explain it to me :)
masak of course.
08:26 jimmy_ joined
pugs_svn r25611 | hinrik++ | [util/perl6.vim] add 'augment' and 'supersede' 08:26
Matt-W So 'is also' is dead then? 08:27
masak yup. 08:28
pugs_svn r25612 | wayland++ | IO.pod/S28: Regularised %*PROTOCOLS
Matt-W interesting 08:29
wayland76 masak: Thanks. That's %*PROTOCOLS really anyway :)
masak np.
pugs_svn r25613 | hinrik++ | [util/perl6.vim] and remove 'also' ...
masak it's just that it doesn't feel like a global hash to me. it feels more like a class attribute somewhere.
08:30 payload1 left, bacek left
wayland76 masak: Well, if you work out where, let me know, and I'll see if it works with what I know. 08:31
masak aye. 08:32
Matt-W generally distrusts globals until proven otherwise
wayland76 Matt-W: It goes against everything I've been taught too :) 08:33
moritz_ good morning
wayland76 moritz_: 'morning :)
masak: Does your SVG module do parsing, or just generation? 08:34
masak wayland76: no validation so far.
that's the next step.
see Pod.
wayland76 Ok. I have part of an XML parser based on moritz_'s earlier work 08:35
08:35 payload joined
masak wayland76: oh, I misunderstood you. 08:35
wayland76: I'm not sure I'll be parsing SVG anytime soon.
wayland76 IMO, though, generation should be done by generating objects, and then doing object -> tree 08:36
No worries :)
masak wayland76: that's what the Perl 5 CPAN module does.
wayland76 I figured that
masak you could call my approach 'slightly more light-weight'.
and YMMV. 08:37
wayland76 Yeah, object-generation interfaces tend to be heavy :)
08:37 Lorn left
wayland76 I think a combination of your approach, and then parsing would be best :) 08:38
Which is essentially what you just said :)
08:38 jimmy_ left
wayland76 Ok, I'm all happy now :), but should probably stop while I'm ahead :) 08:38
Hey, I have a question
masak shoot.
wayland76 I'd like to reorganise S16 and S17
(this is a question for everyone :) ) 08:39
I'd like S16 to be "IO Users and Groups"
And S17 to be "Processes and Threads"
oops, sorry, "Processes and concurrency"
08:39 szabgab left
wayland76 With S17 containing concurrency, the event loop, signals, and IPC 08:40
and S16 containing objects that replace things like getpwent and getgrnam
masak I guess you meant "IO, Users and Groups", with a comma.
wayland76 Yes
masak I'm not sure adding "Users and Groups" is necessary. 08:41
wayland76 Unless I want to spec users that do IO :)
masak better to call it "IO and file systems" or something.
wayland76 Well, getpwuid essentially returns a user object
But I'd like to replace it with something less OS-specific
moritz_ wayland76: for concurrency there's a haskell paper somewhere that unifies threads, stm and events... 08:42
wayland76: I think we wanted Perl 6 to implement something like this, with a perlish interface
wayland76 That'd be kinda cool
moritz_ www.seas.upenn.edu/~lipeng/homepage/unify.html this one I think (not 100% sure) 08:43
Tene perl6: say "omg" if 'foo' ~~ <a b foo bar> 08:47
p6eval rakudo 08b789: RESULT«Bool::False»
..elf 25613: RESULT«undef␤»
..pugs: RESULT«undef»
moritz_ perl6: say "omg" if 'foo' ~~ <a b foo bar>; say "no other output"
p6eval elf 25613, pugs, rakudo 08b789: OUTPUT«no other output␤»
Tene Huh. I guess I'm misremembering smartmatch against arrays. 08:48
moritz_ that changed 08:49
masak see S03. :)
moritz_ you now write that with any(<a b foo bar>)
masak or *, "foo", *
Tene ah 08:50
perl6: say "omg" if 'foo' ~~ any(<a b foo bar>)
p6eval elf 25613: OUTPUT«Undefined subroutine &GLOBAL::any called at (eval 125) line 3.␤ at ./elf_h line 4346␤»
..pugs, rakudo 08b789: OUTPUT«omg␤»
wayland76 masak: Your e-mail that refers to line numbers still hasn't arrived :)
moritz_ did we have a rakudo release yesterday? if yes, where is it announced? where's the tarball?
masak wayland76: p6l mails arrive slowly. 08:51
wayland76 p6l: www.pmichaud.com/perl6/rakudo-2009-02.tar.gz
masak and I removed you as a recipient, so you'll get it along with everybody else.
Tene moritz_: clearly advertised on rakudo.org/ of course
moritz_ ah, I see one on parrot-dev
08:51 bacek joined
Tene (lies) 08:51
wayland76 ok, I thought I'd noticed that they were a bit slow :)
08:57 araujo left
bacek perl6: my $a = 1; $a &&= 42; say $a 09:03
p6eval rakudo 08b789: OUTPUT«get_iter() not implemented in class 'Integer'␤current instr.: 'prefix:=' pc 20533 (src/builtins/misc.pir:17)␤» 09:04
..pugs: OUTPUT«42␤»
..elf 25613: OUTPUT«Unknown rule: infix_postfix_meta_operator:=␤It needs to be added to ast_handlers.␤ at ./elf_h line 2042␤»
bacek perl6: my $a = 0; $a &&= die; say $a
p6eval pugs, rakudo 08b789: OUTPUT«0␤»
..elf 25613: OUTPUT«Unknown rule: infix_postfix_meta_operator:=␤It needs to be added to ast_handlers.␤ at ./elf_h line 2042␤»
bacek perl6: my $a = 1; $a &&= die; say $a 09:05
p6eval pugs: OUTPUT«*** Died␤ at /tmp/Kxo31aXGRa line 1, column 12-22␤»
..rakudo 08b789: OUTPUT«No applicable methods.␤␤current instr.: '_block14' pc 85 (EVAL_17:45)␤»
..elf 25613: OUTPUT«Unknown rule: infix_postfix_meta_operator:=␤It needs to be added to ast_handlers.␤ at ./elf_h line 2042␤»
09:06 riffraff joined
bacek pmichaud: around? 09:09
masak bacek: no, he's asleep. 09:10
bacek masak: ah, ok.
Matt-W Wish I was asleep 09:14
bacek rakudo: say [*] (); say ().reduce: { $^a * $^b } 09:18
p6eval rakudo 08b789: OUTPUT«1␤Cannot reduce an empty list␤␤»
bacek perl6: say [*] (); say ().reduce: { $^a * $^b }
p6eval elf 25613: OUTPUT«Parse error in: /tmp/vH0Gl0cOtk␤panic at line 1 column 0 (pos 0): Can't understand next input--giving up␤WHERE: say [*] (); say ().reduce: { $␤WHERE:/\<-- HERE␤ STD_red/prelude.rb:99:in `panic'␤ STD_red/std.rb:76:in `scan_unitstopper'␤ STD_red/std.rb:224:in `comp_unit'␤
..STD_r...
..rakudo 08b789: OUTPUT«1␤Cannot reduce an empty list␤␤»
..pugs: OUTPUT«1␤␤»
pugs_svn r25614 | wayland++ | Return type for subst 09:19
wayland76 riffraff is a Viking (Norman) in the Asterix book 09:20
(Hi riffraff :) ) 09:22
bacek finally finished triangle version of reduce metaop. 09:23
moritz_ bacek: do you have a separate branch for that? 09:24
bacek moritz_: no. It's in my master
But I easily can create branch for it. 09:25
Or single patch.
git allows you to shoot foot in many different ways :)
moritz_ single patch or branch would both be much easier to test and apply than several commits spread out in master 09:26
bacek moritz_: Agreed. But I need review of current version beforehand. 09:28
15 minutes left of battery life...
moritz_ bacek: no hurry ;-)
bacek: I won't get to look at your patch(es) before Monday anyway
bacek moritz_: no worries :)
moritz_ wayland76: you should also remove the XXX that your last commit left over 09:31
wayland76 moritz_: According to that link you sent me, it has an event loop, with green threads layered on top 09:32
moritz_ wayland76: that fits very well into the picture of integrating signals into the event loop 09:33
pugs_svn r25615 | wayland++ | Typo, my bad. wayland-- Incidentally, I can karma myself here, I think :)
wayland76 moritz_: Good catch. Fixed 09:34
bacek my... battery... dying... 09:35
wayland76 git: the great feet to colander converter
bacek see you soon
moritz_ ciao
wayland76 Quick, plug bacek back in
!
I didn't realise he was a bot :)
(cya :) ) 09:36
09:39 mikehh left
riffraff hi 09:52
masak greetings.
09:52 mikehh joined 09:57 bacek left
pugs_svn r25616 | wayland++ | Moved Signals and IPC from S16 to S17, which can now be processes and concurrency. 09:58
r25617 | wayland++ | Applied new names to S16 and S17 10:00
10:01 Chillance joined 10:03 bacek joined, Exodist left
bacek hi again 10:04
10:05 Exodist joined
bacek bacek@icering:~/src/parrot/languages/rakudo.bacek$ ./perl6 -e 'sub m (&f) { say "a" ~~ m/<f>/ }; regex outer { a }; m(&a)' 10:10
Non-Callable argument for f in call to m
moritz_: (about #63458) it this message you are looking for? 10:11
moritz_ is a regex not callable? 10:12
I'm not sure what the right error message would be
but either "'f' is not a regex' or what you said 10:13
10:14 ashizawa left
bacek moritz_: technically regex is just sub. 10:16
moritz_ bacek: or a method
bacek rakudo: sub m(&f) { }; say m(&foo) 10:17
p6eval rakudo 08b789: OUTPUT«Null PMC access in isa()␤current instr.: '!SIGNATURE_BIND' pc 2580 (src/classes/Signature.pir:377)␤»
bacek this is short version of your bug :)
masak @tell mberends I just did a very thorough review of your proto.perl5, and renamed it proto -- so now the bash script is gone. 10:20
lambdabot Consider it noted.
bacek moritz_: patch committed, pushed, ticket updated :) 10:25
masak: around? 10:31
10:31 DemoFreak left
masak bacek: somewhat. 10:31
bacek masak: can you merge #63440 and #61602 please 10:32
masak merges
10:38 pmurias joined 10:50 payload left 10:51 ejs joined
mikehh I have just rebuilt rakudo and am getting diagnostic messages with make test 10:51
starts with => Scope not found for PAST::Var '@INC' in
then current instr.: 'parrot;PCT;HLLCompiler;panic' pc 146 (src/PCT/HLLCompiler.pir:102) 10:53
bacek masak: And close #60164. It was integrated into Rakudo recently
masak mikehh: this is a frequently asked quesion nowadays.
mikehh: unfortunately, I don't know the exact answer. but it was on p6l yesterday.
moritz_ I think p6c
masak I can dig it out for you.
right.
masak closes #60164 10:54
bacek masak: and #60368. I can't reproduce it anymore. 10:55
mikehh there are then 16 lines of called from info and then it reports the test ok
masak checks #60368
mikehh All tests successful. 10:56
Files=29, Tests=236, 68 wallclock secs ( 0.18 usr 0.10 sys + 57.27 cusr 9.19 csys = 66.74 CPU)
Result: PASS
masak mikehh: www.nntp.perl.org/group/perl.perl6....g3579.html 10:57
moritz_ bacek: pugs r25617 seems to have broken the test with rakudo master - could you please fudge it? 11:03
bacek moritz_: lemme have a look 11:04
moritz_ it's probably just s/todo/skip/ in some places
btw you can also say #?rakudo 3 todo
instead of three lines of #?rakudo todo
bacek moritz_: 3 lines of "todo" works better with autounfudge.pl :) 11:05
mikehh I did all that stuff - had the problem with i386 Linux - switched to AMD64 Linux
masak mikehh: ok. 11:06
mikehh did a git pull, make realclean, perl Configure.pl, make test
masak mikehh: strange.
mikehh I have been having some weird problems recently - with parrot 11:07
I think I need to do a complete re-install
masak might be. 11:08
I tend to avoid most problems by doing 'make realclean' after every update.
mikehh each of the tests drom make test has 18 diagnostic lines of output starting with 11:09
masak lunch & 11:10
mikehh Scope not found for PAST::Var '@INC' in
current instr.: 'parrot;PCT;HLLCompiler;panic' pc 146 (src/PCT/HLLCompiler.pir:102) 11:11
pugs_svn r25618 | bacek++ | [t/spec] Properly fudge tests for Rakudo
mikehh and then the callback info 11:13
if I try make spectest it does exactly the same
FOR EACH TEST 11:14
but then reports ok 11:15
as far as I can see this is identical for diagnostics for all the tests 11:17
11:20 alc left
mikehh let me do a clean git clone of rakudo and see what happens 11:20
ruoso @tell TimToady I think it makes sense that the code where this semantics apply should be enclosed by { }... like "sub op { meta { ... } }"... but maybe it could simply be "CALLER::.eval { ... }" then... 11:23
lambdabot Consider it noted.
mikehh Nope I am getting the same 11:33
pugs_svn r25619 | wayland++ | Did some work on users and groups 11:34
masak mikehh: sounds to me your best shot at getting helped right now is to put together an RT ticket detailing the errors and your configuration. [email@hidden.address] 11:36
mikehh I did a git clone, cd rakudo, perl Configure.pl --gen-parrot then make, make test 11:38
pmurias ruoso: i think we should have a "no failing tests policy" for mildew 11:40
wayland76 pmurias: And for all versions of Perl6, right? :)
s/versions/implementations/ 11:41
(sorry :) )
11:44 masak left
pmurias wayland76: what i meant i not to have failing tests in our test suit (it's seperate as we can't run the offical one yet 11:44
wayland76 pmurias: Yeah, I figured it was something like that, but I saw some potential for humour, and explored that potential :) 11:45
I usually can't help myself :)
11:47 Lorn joined 11:48 aindilis` left
ruoso pmurias, what do you mean? 11:49
pmurias ruoso: keeping failing tests in ROADMAP and trying to keep all tests passing in mildew/t 11:51
ruoso I think that's a pretty sane policy IMHO
we might even rename that to mildew/regression 11:52
so we know that is the things that already work, and shouldn't stop working
pmurias t is a nice name ;) 11:53
ruoso :) 11:55
pmurias, I think I'll disable the mem trace 11:56
we know there are leaks
we don't need warnings everytime
;)
pugs_svn r25620 | ruoso++ | [smop] we know we have lots of memory leaks, so I will remove the warnings untill we fix them 11:57
ruoso we already pass one spec-test... should we start fudging? ;) ;) ;) ;) ;) ;) 12:00
@tell TimToady v6/mildew/t/our_sub.t makes STD warns about undeclared names, but the names are being declared... 12:02
lambdabot Consider it noted.
pugs_svn r25621 | wayland++ | Created UserIterator and GroupIterator, and grouped some S29 functions together. 12:07
wayland76 Bedtime. Night all! & 12:09
ruoso wayland76, i'm not sure you actually need those... since Iterators are already private
wayland76 I don't understand the connection
ruoso I mean... when you ask for an Iterator, it is already supposed to be of some type private to that data structure
the Iterator role is really just an interface
wayland76 Oh, I see 12:10
ruoso So I'm not sure you need to spec UserIterator or GroupIterator
wayland76 So do I need to create a UserList with an iterator ?
ruoso in theory, at most you need a List of User
wayland76 I'm trying to provide the getpwent/setpwent/endpwent functionality
I'm trying to provide a lazy list though. 12:11
ruoso lists are always lazy
wayland76 Do I do something special to get that?
ruoso unless stated otherwise
wayland76 So I make a users function that returns List then?
ruoso yes, and if you really wants to have a more stronger typing...
you can really make a "List of User" 12:12
wayland76 Ok. Now I just need to figure out what object the .users() function goes on
ruoso wayland76, UNIX::passwd ? 12:13
wayland76 I'm trying to make User more generic, though. Anyway, I'll fiddle with things some more, and people can shoot me afterwards as usual :) 12:15
ruoso wayland76, I think you can leave a more abstract implementation to be made from the specific implementations 12:16
so you have UNIX::passwd that returns UNIX::User
and Win32::passwd? that returns Win32::User 12:17
then someone can implement a more generic abstraction
I don't really know Win32 enough to know if there are commonalities between UNIX::User and Win32::User 12:19
pmurias one thing that would be very usefull to have in S32 is the spec for Capture class
wayland76 pmurias: It's in there somewhere
Callable.pod
ruoso there is still one conceptual issue in Capture that needs solving 12:20
which is how much DWYMmery it should implemnet
wayland76 Of course, the S32 things are still quite incomplete, especially the stuff in Exception, Callable, and Abstraction 12:28
ruoso: Me either (re: knowing win32), but I'm pretty sure they have a username, a user ID, and a home directory 12:30
I doubt it's in a passwd file, though
ruoso I actually have a strong opinion about this kind of things 12:31
I think abstractions should be made as modules later
we should provide the things we have available...
and if that's OS-specifc, it goes into an OS-specific package
someone can implement abstractions later 12:32
pugs_svn r25622 | wayland++ | Replaced iterators with NameServices role, based on an idea of ruoso++ (although I doubt
r25622 | wayland++ | he wants credit for some of the things I've done with his ideas :) )
wayland76 ruoso: Hmm. I guess it depends on what sort of cross-platformness you want to achieve 12:33
I'd personally rather see the spec be as platform-neutral as possible 12:34
But on the other hand, I'm assuming we'll implement all old functionality unless it gets booted from the core as Form.pm was
ruoso my point is that IMHO, you shouldn't deprive the platform-specific access in that name
because if you want to implement OS-specific code, you can
but if you want to implement OS-independent code, you can use the abstractions 12:35
wayland76 Oh, but I forgot to mention, I think that platform-specific code should be do-able
moritz_ but it shouldn't be the default
wayland76 via external calls
ruoso I mean... getpwent doesn't need to be imported by default
but as it's a libc function, it should be available by default 12:36
even so that you can implement a more abstract implementation
in that sense, NameServices is "almost" ok
it's just missing a UNIX:: before 12:37
since it's very UNIX specific
wayland76 I think you should have to do something like use libc:from<C>; to get libc functions
as far as NameServices goes, I agree 12:39
It's one of the things where you can't avoid unix specific
ruoso wayland76, "use libc:from<C>": that is a false generalization... because you're probably not allowing malloc
moritz_ why not? if somebody wants to shoot himself... 12:40
wayland76 Ok, use libc:from<C> qw(getpwent); or whatever
moritz_ I mean we'll allow a FFI anyway
wayland76 Perl6 -- lets you make swiss cheese of your feet :)
moritz_ so we can't prohibit it, so we can just as well allow it, with the usual "here be dragons" remarks 12:41
pugs_svn r25623 | wayland++ | Fixed name of NameServices. wayland-- for not picking this up before :).
ruoso moritz_, right... 12:42
moritz_, you convinced me
we start with "use libc:from<C>" 12:43
wayland76 (which I pulled from S21, btw)
ruoso but that line probably needs to be longer 12:44
moritz_ use C:EVIL::libc ;-) 12:45
wayland76 Agreed. S21 needs some work, but I'm not the one to do it :)
ruoso "use libc :from<C> :include<pwd.h>"
moritz_ :kill<me> ;-) 12:46
wayland76 The from, if I understand correctly, is really supposed to be an external platform (ie. C??? vs. JVM vs. ...)
Anyway, it's past my bedtime, so I'd better get to bed, seeing as I have to be up an hour or two early tomorrow. & 12:48
ruoso yes
it should be any external platform
like
mildew: use CGI:from<perl5>;
p6eval mildew: OUTPUT«Can't locate object method "terminator__S_401Semi" via package "STD" at ../../src/perl6/STD.pm line 3160.␤»
ruoso hmpf
as long as EXTERNAL::LOADER::perl5 or something like that is avaliable 12:50
I just wonder how you can parse a '.h' file and get the ABI right 12:54
moritz_ there was a summer of code project for parrot to do just that 12:55
the nci compiler
literal do any Perl 6 functions act on the current topic when not given an argument? 13:09
or has that been eliminated? 13:10
moritz_ literal: only special syntactic forms like s/.../, m/.../, tr/.../ 13:11
literal: apart from that can '.say' if you mean '$_.say'
also 'when' acts on $_ by default
but it's not a classical built-in
literal yeah, that makes more sense than having to memorize a list of functions that use $_ like in Perl 5 13:12
if one likes to be terse, that is 13:13
moritz_ it gives a slight disadvantage for writing obfus ;-)
but that's compensated by meta operators and other nice syntax 13:14
literal yeah, but it's only one extra char, .say vs say
moritz_ in obfus every char counts ;,-)
literal so the regex operators still use $_ ? e.g. this works? for @list { s/../../ } ? 13:15
moritz_ yes
13:26 skids left 13:38 |jedai| left 13:39 |jedai| joined 13:48 simcop2387 joined 13:53 kanru joined
pmichaud for those that are seeing the @INC errors -- I need to know the version of TAP::Harness or Test::Harness being used on the system 14:00
the problem is t/harness releated.
(which is why there's no obvious pattern) 14:01
14:19 skids joined 14:24 araujo joined
pmurias perl6: $capture = \(1:2,3);$$capture = 7;say $capture; 14:27
p6eval elf 25623: OUTPUT«Can't locate object method "re_groups" via package "IRx1::Var" at ./elf_h line 2923.␤»
..pugs: OUTPUT«*** ␤ Unexpected " ="␤ expecting "::"␤ Variable "$capture" requires predeclaration or explicit package name␤ at /tmp/9yCjGckU6u line 1, column 9␤»
..rakudo 08b789: OUTPUT«Statement not terminated properly at line 1, near ":2,3);$$ca"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
pmurias pugs: my $capture = \(1:2,3);$$capture = 7;say $capture;
p6eval pugs: OUTPUT«7␤»
pmurias pugs: my $capture = \(1:2,3);$$capture = 7;say $capture.perl;
p6eval pugs: OUTPUT«\7␤»
pmurias pugs: my $capture = \(1:2,3);say $capture.perl;
p6eval pugs: OUTPUT«CaptMeth {c_invocant = IFinite 1, c_feeds = [:MkFeed {f_positionals = [:IFinite 2,IFinite 3:], f_nameds = []}:]}␤»
14:29 AndyAway is now known as alester
PerlJam hey, when does dru become www? I was going to post the rakudo release as news on perlmonks, but I'd rather the link point to rakudo.org than use.perl.org. 14:44
14:47 nikn left
alester perlbuzz.com/2009/02/perl-6-stretch...lease.html 14:48
Someone submit it to reddit, please?
pmichaud PerlJam: I think it's already done/there. 14:50
oh, I guess not.
alester PerlJam: Tonight I hope.
I'm having problems with Markdown. 14:51
but I have the afternoon off.
pmichaud the announcement is already available from dru.rakudo.org/node/11 though.
alester yeah, but don't point at dru
dru will go away
PerlJam right, that's what I figured.
I'll wait
alester Or I could just say screw it, and make it go live. :-)
PerlJam (or you guys could post to perlmonks whenever it's ready :) 14:52
alester but I'm wanting someone to click the Reddit submit, too.
on the Perlbuzz post.
My headline's more breathless. :-)
I'm hoping someone in media somewhere picks it up.
but right now, I must get back to testing cron jobs on the soon-to-be-new-server 14:54
14:59 cas joined, jan_ left
ruoso mildew: use CGI:from<perl5> 15:17
p6eval mildew: OUTPUT«Can't locate object method "emit_m0ld" via package "use CGI:from<perl5>␤" (perhaps you forgot to load "use CGI:from<perl5>␤"?) at mildew line 122.␤»
ruoso hmpf 15:18
15:30 simcop2387 left, simcop2387 joined 15:34 DemoFreak joined 15:41 justatheory joined
pmurias ruoso: it parses fine in a standalone mildew 15:42
mildew: say "hi"
p6eval mildew: OUTPUT«Can't locate object method "term__S_389identifier" via package "STD" at ../../src/perl6/STD.pm line 1270.␤» 15:43
ruoso it seems that lex is b0rk3
pmurias mildew: say "hi" 15:44
p6eval mildew: OUTPUT«Can't locate object method "emit_m0ld" via package "say "hi"␤" (perhaps you forgot to load "say "hi"␤"?) at mildew line 122.␤»
ruoso pmurias, I'm implementing a EXTERNAL::use_from_perl5($module) 15:45
pmurias i imports stuff from a perl5 module into a lexical scope?
s/i/it/
ruoso it actually returns a p5 string that behaves as a SMOP type 15:46
so you can call ::CGI.new
pmurias ::CGI := EXTERNAL::use_from_perl5("CGI")? 15:49
15:51 riffraff left
ruoso yes... 15:52
but that should happen at a bit lower level
so you can bind ::CGI without failing the lookup
pugs_svn r25624 | ruoso++ | [mildew] a first sketch on EXTERNAL.pm 15:53
pmurias btw we need to create a new capture in RoleHOW.dispatch as the invocant is different 15:54
ruoso hmm... there's the capture delegation 15:55
pmurias ruoso: you can used the faked infix:<~>
15:58 kanru left
ruoso pmurias, yeah... I don't know why I didn't use it 15:59
15:59 nihiliad joined, Tene_ joined
pmurias ruoso: what will we use as our Str type? 16:01
ruoso pmurias, we'll need to implement it 16:02
at some point
what we need is a native buf
so string can be implemented
but I think that can be implemented later 16:03
pmurias i want to pass more of sanity but i'm usure what should int.Str return
maybe i could just write int.idconst for now?
16:03 hercynium left
ruoso for now, it could return an idconst, since that's what we have 16:03
16:07 mncharity joined
mncharity rakudo: say "a" ~~ /:ratchet a*a/ 16:08
p6eval rakudo 08b789: OUTPUT«␤»
mncharity rakudo: say "a" ~~ /:ratchet a*/
p6eval rakudo 08b789: OUTPUT«a␤»
mncharity rakudo: regex as {a*}; say "a" ~~ /:ratchet <as>a/ 16:09
p6eval rakudo 08b789: OUTPUT«␤»
16:09 jan_ joined 16:10 Tene left 16:11 justatheory left
mncharity rakudo: regex as {z?a*}; say "a" ~~ /:ratchet <as>a/ 16:12
p6eval rakudo 08b789: OUTPUT«␤»
mncharity rakudo: regex as {{say 5}a*}; say "a" ~~ /:ratchet <as>a/
p6eval rakudo 08b789: OUTPUT«Statement not terminated properly at line 1, near "*}; say \"a"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
mncharity rakudo: regex as {{}a*}; say "a" ~~ /:ratchet <as>a/
p6eval rakudo 08b789: OUTPUT«Malformed regex definition at line 1, near "as {{}a*};"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
mncharity rakudo: regex as {::a*}; say "a" ~~ /:ratchet <as>a/ 16:13
p6eval rakudo 08b789: OUTPUT«␤»
ruoso pmurias, are you implementing use Foo :from<perl5>? 16:14
pmurias no, int.Str
mncharity: hi
mncharity TimToady: re feather.perl6.nl/syn/S05.html , "imply a : after every construct that could backtrack, including bare *, +, and ? quantifiers, as well as alternations.", do subrules belong on that list as well? Or not? Eg, should 'regex as {z?a*}; say "a" ~~ /:ratchet <as>a/' match or no? 16:15
hi pmurias :)
pmichaud subrules are on the list also.
mncharity ahh, thanks.
pmichaud /:ratchet <as>a/ is the same as / <as>: a: / 16:16
mncharity TimToady: perhaps tweak S05 to clarify ^^ ?
pmurias mncharity: re smop as elf backend we lack a lot of things in the runtime like unicode support, multimethods 16:17
ruoso pmurias, we already have Multi :)
pmurias it dosn't work yet... :) 16:18
16:18 nihiliad left
ruoso doesn't it? 16:18
ah.. yeah...
true
it doesn't
heh
mncharity anything else? elf core isn't using multimethods, and I think the only unicode is the not-yet-really-used cent character for cursor.
pmurias what could be possibly a better idea is to translate (parts of mildew) mildew into Perl 6 and have it compiled by mildew
s/mildew/elf/ 16:19
* what could be possibly a better idea is to translate (parts of) mildew into Perl 6 and have it compiled by elf
mncharity ahh, interesting
ruoso hmmm... I don't know... since it depends on STD, which is entirely p5
I'm not sure there is much to gain 16:20
16:20 ashizawa joined
mncharity elfblue uses gimme5/STD. albeit a now somewhat out-of-sync revision. 16:21
objective of elfish/elfparse is to produce a gimme5/STD-like parse tree inside elf, without going out to STD.pmc. 16:22
re gain, hmm. self hosting on top of smop? backend self hosting now, front+backend self hosting when elfparse gets done. 16:23
ruoso I mean 16:24
self-hosting will only be possible once we have a regex engine in smop
I'm not sure what you mean by "backend self hosting" 16:25
mncharity elfrx builds rx on top of any p5re. currently there's only a p5 version. but that's intended to be cloned to p6 rsn, for some glacial value of rsn.
s/p5re/perl-compatible regular expression library/, which many/most languages, including C, have. 16:26
re "backend self hosting", elf is using an external parser. so the "stuff other than the parser" is self compiling, but elf isn't (yet) compiling it's paser. so "backend self hosting" rather than more fullish "self hosting". 16:28
basically, if you are happy writing mildew in p5 rather than p6, then there's perhaps not much to gain by using elf instead. and as pmurias mentions, one could then translate a p5 mildew into p6, and run it on either elf or itself. 16:30
ruoso I see... 16:33
my point is that trying to do shortcuts here won't take us much far
i.e.: that's what happened with KP6
mncharity hmm, one issue is whether you are going for a "flesh out test suite now; then work toward being usable" development path, or a "be usable now; then work toward fleshing out test suite". elf would aid the second, not so much the first. though doing the first in p5... sounds painful.
at least doing more than a "make sure the smop core works" in p5 16:34
dalek kudo: d9b471d | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 315 files, 7037 passing, 48 failing

   S03-operators/reduce-le1arg.rakudo aborted 48 test(s)
ruoso mncharity, one thing I think you didn't get yet, is that mildew compiles things down to C
pmurias mncharity: flesh out = ?
ruoso so the SMOP runtime is "self-hosting" for that matter
mildew compiles to the C code that initializes the mold objects 16:35
that are used to create new mold frames
which is how the smop interpreter works
s/interpreter/runloop
so we kinda have a bytecode
but it's a native shared object, instead of some arbitrary format 16:36
mncharity ruoso: I'm not sure I understood your kp6 argument. I do get that mildew compiles down to C. But if it's written in p5, it's not self hosting until mildew is a p5 compiler.
ruoso my point is not about that
mncharity unless smop is defined as a p5-runtime+smop-compiled-C hybrid?
s/smop is defined/mildew is defined/
ruoso mncharity, mildew is a compiler written in p5 16:37
that targets SMOP
the code compiled by mildew takes no notice of p5
(except for the p5 integration feature)
(which is a feature, not a dependency)
mncharity if "mildew is a compiler written in p5", then mildew can obviously not self-compile until mildew can run p5. or at least that subset of p5 which mildew is written in. :-S 16:38
s/run p5/compile p5/
dalek kudo: 1f2f910 | pmichaud++ | docs/release_guide.pod:
Move Oslo to March 2009 release.
ruoso my point is not about that
my point is that as soon as SMOP has a regex engine,
mncharity wonders if I should have said "self compile" rather than "self host"
ruoso once we have a regex engine in SMOP, we can start trying to compile STD with mildew 16:39
once mildew can compile STD,
we can think about re-implementing mildew in Perl 6 16:40
trying to port mildew to Perl 6 before that is something that is not worth the trouble IMHO
then, at some point we can bootstrap Perl 6
mncharity so the vision is to write a p6 compiler, in p5, which is strong enough to run STD, and then to think about reimplementing it in p6? 16:41
ruoso mildew is strong enough to "run" STD 16:42
smop is not strong enough to "run" STD
so mildew can't target SMOP when "compiling" STD
so mildew is not strong enough to "compile" STD
mildew can only copile the amount of Perl 6 that is supported by SMOP (or by the mildew CORE) 16:43
actually...
in compile-time, it doesn't even know about the CORE 16:44
except by the extent that STD knows about it
so the mildew CORE is guided by the way STD resolves the things like operators and such
but at run-time we already depend on the mildew CORE 16:45
which is currently written in Perl 6
16:45 rodi joined
mncharity i suspect the getting the mildew compiler to understand enough about p6 to take the STD ast and convert it to smop, independent of whether smop could handle it yet, is rather a larger todo item than 'mildew is strong enough to "run" STD' suggest. but I could well be wrong, having not looked at mildew in a while. 16:46
16:46 nikn joined
ruoso mncharity, a lot of what mildew already can compile doesn't work by lack of runtime support 16:47
that is already happening
mncharity pmurias: re flesh out = ?, the long grueling process of working through t/ , expanding the language coverage of a new p6 implementation. 16:49
16:50 justatheory joined
mncharity while there are advantages to doing all that work in p5, it being a fast stable language, it's still, well, p5. 16:50
pmurias mildew is very little code actually 16:51
mncharity the rest of the envisioned impl being p6?
ruoso the biggest part of it is STD
what would really benefit mildew would be a Tree transforming language 16:52
mncharity if it were written in p6, I'd like to have one for elf too. :) 16:53
16:53 ejs left
mncharity s/Tree transforming language/Tree transforming library/ 16:53
ruoso mncharity, it's more a language really... 16:54
it's a lot of repetitive code
mncharity eep. out of time. thanks all for the interesting discussion. I'd be curious sometime what lessons were drawn from kp6 - I suspect there's another interesting conversation there. 16:55
pm: thanks
could be good to continue this another time. my impression is we haven't quite converged yet. cheers & 16:56
16:56 mncharity left
TimToady ruoso: I played with various {}ly forms, but they all ended up with too many {}s :) 17:00
lambdabot TimToady: You have 2 new messages. '/msg lambdabot @messages' to read them.
TimToady however, I'm more concerned about the semantics
we can't just run in the caller's lexical context 17:01
or then we can't see our own lexical parameters
ruoso we don't run "in"
we run "on top of"
TimToady I think of it more as a kind of virtual
I have no idea what you mean by that; what is the scope search order?
ruoso CALLER --> signature binding scope --> block scope
actually that's backward 17:02
TimToady you have competing scopes with this notion
I'm thinking of it more like how virtual methods work
where the invocant happens to be a lexical scope
ruoso (actually, that lookup would require the "operator" routine_dev) 17:03
TimToady so all the calls get virtualized but not the variables
ruoso all the calls *are* variables
TimToady variables just sit there
something does something to the variable to call it, and that is virtualizable 17:04
ruoso right... all calls perform variable lookups
TimToady the call to infix:<eq> finds &infix:<eq> in my scope, but that gets virtualized by the self that happens to be my caller's scope
ruoso that only to sub calls 17:05
TimToady viewing lexical nesting as a kind of derivation
ruoso or would that apply to types as well?
17:05 Ariens_Hyperion joined
TimToady a related question is whether it influences single dispatch (via the type view) 17:06
since your caller may have aliased Dog to an entirely different type
17:07 orafu left
TimToady I'd guess we want to make things as generic as possible, apart from declarations directly visible 17:07
as I said, it's the same virtualization that the metaoperators need to do 17:08
ruoso I still see the "operator" routine_def as the nicer solution 17:09
;P
TimToady what if you want a single-dispatch method to do this for its caller?
ruoso I'd say that's a rather weird requirement 17:10
TimToady it wants to be orthogonal to routines
ruoso but methods are something special
methods encapsulate
that's why they are methods
and not subs
TimToady I'm not gonna buy it
17:10 hercynium joined
TimToady and the granularity is wrong 17:11
ruoso so maybe a trait
TimToady also wrong granularity
some of these routines will want to do an amount of their own processing and then return their thunk
so I want a thunk marker 17:12
17:12 pmurias left, ejs joined
TimToady debated making it a form of return 17:12
but that seems like overkill 17:13
in any case, it'll be used over and over, so I don't want something terribly heavy looking
ruoso hmm...
TimToady CALLER::.eval {...} is way to ugly and big for that
I've been looking for a word better than "meta" and haven't really found one yet 17:14
but I'd like the feeling of it to be "abstract" rather than "upscope" 17:15
virtual would actually work if C++ hadn't stomped all over it 17:16
ruoso displaced
TimToady that's "upscope" again
I want to convey that this code has different meanings in context 17:17
ruoso it's actually like if it was a "auto-executed closure"
TimToady it's basically a lazy thunk; I considered "lazy" too... 17:18
ruoso but it's not that lazy
because it will get executed immediatly
as soon as it gets back to caller
TimToady indeed, I'd like the caller to be able to optimize after that first call, if possible 17:19
ruoso maybe just "thunk" then
TimToady the problem with thunk is that it's usually been applied to thunks passed down as function args in the literature 17:20
so I don't think thunk will fly for that reason
ruoso but I don't know how the caller would actually see it
I think it would still be handled by the function returning it
TimToady operationally, maybe a good compromise would be, bind all variables explicitly declared in this multi scope, but leave all other variables for virtual binding by the caller 17:22
diakopter slunk - a slothful thunk.
PerlJam slunk seems more verby than nouny 17:23
ruoso TimToady, it could simply lookup up to this function root and then look up in the caller
s/function/$?ROUTINE/
17:23 ispy_ joined
diakopter true... but it *is* a noun-verb of sorts ;) 17:23
TimToady yes, but if we hand something back to the caller between those two, the caller may be able to optimize it
diakopter it *slunk* back up
like a slinky 17:24
ruoso TimToady, I still don't know how the caller would intercept it... but I think that can be resolved later...
s/resolved/solved/
TimToady certainly we can intially do the lookup ourselves
as long as we keep a clean separation 17:25
ruoso in SMOP, it's simple to provide a made-up scope object that would be used as the outer scope of the block
TimToady maybe keep a mystery list kind of like post-declaration does and then look up all the mysteries in CALLER at the end
ruoso and this made-up object would lookup on the scopes up to the $?ROUTINE and then in CALLER
TimToady yes, but now you've mixed up the two lookups in one encapsulation, which is what I'm trying to avoid 17:26
ruoso but lookup is always one operation 17:27
TimToady no
it can fail now and succeed later
see post-declaration
ruoso that's compile-time
not run-time
TimToady same priniciple though 17:28
ruoso run-time it's just one operation
in mildew that goes to $scope.lookup($symbol)
TimToady the first lookup is at compile time, but the second must be at run time
because you don't *know* who the caller is
ruoso ah.. right... I'm actually ignoring the compile-time lookup... ok
TimToady the first can be at compile time because it's lexicals 17:29
keep 'em separate
ruoso but it should delay that inside a thunk/slunk/whatever
TimToady and not outside it :)
ruoso yes
but that's really just a compile-time issue
TimToady that's what "meta" does to its expression 17:30
ruoso meta doesn't really tells much
it just says it isn't something
but what it isn't?
TimToady it says that anything that is not obviously concrete is abstract 17:31
where we've arbitrarily defined concrete as "declared in this routine"
17:31 |jedai| left
ruoso hmmm... probably better to forge a new name 17:32
17:32 |jedai| joined
TimToady since metaops do this, I thought it good to reuse meta 17:32
diakopter transcendent
TimToady is there some counterargument?
ruoso but metaops are meta *ops*
if you name it metasomething... it will be clear 17:33
but just "meta" doesn't really mean anything
TimToady they're rewritten in the caller's context
and I wanted something distinctive but short for huffmanly reasons 17:34
ruoso still votes to forge a new neame
TimToady because we'll get lots of parallel multies like I pasted
diakopter noema
TimToady it needs to mean abstract or generic
it's possible we could find a metaphor that means both abstract and displaced 17:35
ruoso drugged 17:36
TimToady lofty
17:36 ab5tract joined
TimToady both meaning "high" :) 17:36
ab5tract aw man I totally missed the lead up to that punchline
ruoso I like "high"
TimToady but if we visually the caller as above us, then hoisting means high
haute 17:37
17:37 nihiliad joined
diakopter phusis 17:37
17:39 Ariens_Hyperion left
TimToady lift 17:40
hmm, lift and loft must be related in IE 17:41
17:41 Maghnus left
diakopter aloft 17:41
ruoso actually... verbs look better...
lift { }
TimToady no braces
ruoso lift this block to the caller 17:42
TimToady, not even optionally? if you want a bigger block?
TimToady we could make it gather-like, I suppose, but we're going to be returning a lot of closures, and it interferes
diakopter is it like an async BEGIN block, but deferred to execute sometime later? 17:43
TimToady no, not async
PerlJam just scanning the last severl minutes of conversation ... "lift" seems to work on many levels.
TimToady only some of the binding is deferred to the caller's scope
diakopter har
ruoso lift EXPR or lift BLOCK
TimToady and it'd confuse the Haskellers, which is a plus :) 17:44
diakopter depending on how you view your stack, .... plunge 17:45
TimToady not very uplifting
diakopter exalt 17:46
ab5tract is there a POD related to what we are trying to name?
ruoso ab5tract, nope 17:47
diakopter (I'm not voting against 'lift'; I'm just funning naming)
pugs_svn r25625 | lwall++ | [STD] add statement_prefix:lift
diakopter what if you want to lift >1 levels
ruoso hmm... why would you want to do that? 17:48
ab5tract ruoso: care to undertake an explanation yourself? ;)
diakopter well, same reason you want to lift 1 level, but twice. :) 17:49
ruoso The problem is that the operator overloading in Perl 6 is defined lexically... So if you implement a variant for an operator, it usually will see the other variants from its own perspective
which is bad, because if you overloaded more than one operator, it will miss them
so, operators need to resolve symbols on the CALLER 17:50
so overloading is preserved
we were discussing how to represent that, which conceptually looks like a CALLER::.eval { } 17:51
ab5tract ah, interesting.
TimToady think of it as virtual methods where the actual type is the lexical scope of the caller
ab5tract so 'lift' or whatever would be used within the context of defining your operator?
ruoso yes
TimToady except it's multiple dispatches instead
ruoso it's a dynamic macro
diakopter ah, yeah, I get it now. 17:52
ab5tract cool :)
TimToady yes, even considered "multi macro" for a while :)
ruoso maybe "dmacro" is a ugly but meaningfull name 17:53
ab5tract Hmmm, a wonder if there is a more technical term than 'deal' for dealing an individual card in poker
some sort of old west saloon slang ;)
diakopter is it "parse-time" monkey-patching or runtime callback injection? 17:54
TimToady well, blackjack has "hit me", but that's a viewpoint change
ruoso diakopter, it's completely runtime...
diakopter, but it's not even injection
it just changes the lookup
it runs that code from the perspective of the caller 17:55
TimToady it's just deferred symbol table lookup on anything that isn't nailed down by the multi itself
ruoso about the deferred part
so lift also causes the routine to leave
or do you need to return lift?
TimToady I mentioned that earlier
most of the uses will be very short blocks that do implicit return, so I don't think it needs to have return semantics 17:56
diakopter does it run in the internal scope of the caller up to the point of the call? so it's like a return, but inject a CATCH after I return, and at the end of the catch, go back to the continutation of the call?
ruoso diakopter, much simpler than that 17:57
it runs that code as if CALLER was the outer scope or $?ROUTINE
TimToady, right... but who triggers its execution 17:58
?
TimToady it is otherwise a normal function call
ruoso rigth
diakopter sorry, I'm just trying to think of an implementation's generalization. 17:59
TimToady it just slows down when it starts executing the lifted code
ruoso diakopter, you need lexical scope hacks
when you run the "lifted" code, it will have a hacked scope
that only looks up until $?ROUTINE, then goes to CALLER 18:00
TimToady if you want to lift 2 levels you need the cooperation of your caller to put the extra lift around your call
diakopter okay, but what if new parsing rules were defined within the call
TimToady you can't change lexical definitions from your dynamic scope 18:01
ruoso diakopter, the only exception the compiler needs to make is to not bind any symbol that is defined outside of the routine
but that doesn't affect the parsing
TimToady we must have a well-defined language at every point, including the points where the language knows its generic
*it's 18:02
ruoso so it should probably raise a warn, or even an error if the lifted code looks for variables defined outside the routine
(compile-time, that is)
diakopter so, must a lifted scope must use the language of its caller, or can it use new rules?
lifted block 18:03
ruoso the lifted block is parsed as a block of the current scope
it doesn't change the parsing
diakopter alright. got it now :D; thanks.
ruoso I think that's actually a good reason to not call it a macro
because it's not related to syntax 18:04
diakopter continues to think of it as remote injection with a callback tail. 18:05
ruoso diakopter, it doesn't change the stack order
it just change the lexical lookup
so... 18:07
sub foo { lift bar(); CATCH { die 'error' } }
diakopter I think this perspective is an implementation detail...? right, I'm just saying it's easier for me to picture the scope-as-habitat/environment if I think of it as a block that's sent back to the caller to execute _inline_ and then calls back into the continuation of the call, and then returns..
ruoso will still die if bar raises an exception
diakopter ok, yeah. 18:08
ruoso but bar will be looked up in the CALLER (unless there is a my sub bar in the rountine)
diakopter, but you do need lexical scope hacks in order to "lift" code 18:09
I think we need some input from rakudo people about that... 18:10
I know SMOP is too much flexible when it comes to lexical scopes...
jnthn, pmichaud, [particle], you probably want to take a look at the past 2 hours 18:11
;P
18:12 szabgab joined
diakopter but cannot a block be contained within an expression? and that block can declare others..? 18:12
18:12 rhr left
ruoso diakopter, it doesn't matter... that EXPR will be evaluated in the "lifted scope" 18:12
diakopter okay, so new rules can't be declared within a block within a lifted expression... b/c they could change the parsing of the caller's scope.. 18:13
ruoso diakopter, they can, but if you define new rules inside a lifted block, they will only be valid inside that block... so nothing special about it 18:14
diakopter ah, ok. :) 18:15
ruoso TimToady, I think we could even forbid trying to access regular caller's variables in the lifted code... to keep the code as strict as possible yet... 18:17
diakopter so then, in general, no statement('s runtime or othertime effects) may change the parsing of the caller's scope, except for a "use ..." statement?
ruoso yes 18:18
it's still unclear how "use" does it tho
we know that at some point Foo::Bar::.EXPORTALL is called
but not much more than that
18:19 rhr joined
ruoso later & 18:20
diakopter this kinda promotes lexical up a class or two in the language, forcing the implementation to include the scope notion in its runtime... 18:21
lexical scopes
18:21 Psyche^ joined
diakopter (unless it couldn't already be optimized away anyway) 18:21
pugs_svn r25626 | lwall++ | Document new lift statement for writing generic multis 18:25
18:26 milton131 joined
pugs_svn r25627 | lwall++ | off-by-one on the year 18:27
r25628 | pmurias++ | [smop] [mildew] 18:28
r25628 | pmurias++ | added EXTERNAL::eval_perl5
r25628 | pmurias++ | variable interpolation
r25628 | pmurias++ | &infix:<~> can take multiple arguments
r25628 | pmurias++ | t/01-sanity/02-counter.t passes
18:28 pmurias joined
diakopter std: lift lift 3 18:31
p6eval std 25628: OUTPUT«ok 00:02 33m␤»
diakopter std: lift lift lift;
p6eval std 25628: OUTPUT«Undeclared routine:␤ lift used at 1 ␤ok 00:02 33m␤»
diakopter std: lift do{ lift 3 }
p6eval std 25628: OUTPUT«Undeclared routine:␤ do used at 1 ␤ok 00:02 33m␤»
diakopter std: lift { lift 3 }.() 18:33
p6eval std 25628: OUTPUT«ok 00:02 33m␤»
18:34 Patterner left, Psyche^ is now known as Patterner 18:37 autarch joined
TimToady statement prefixes always require following whitespace 18:37
18:37 autarch left
TimToady and the use of blocks without preceding whitespace is severely discouraged, unless you mean subscript 18:38
but there are exceptions
({...}) being legal, for instance 18:39
and currently you're allowed to say sub foo ($a){...}
but that's bad style, I think
because it *looks* like a subscript when it isn't
diakopter std: lift do { lift say 2; sub GLOBAL::foo($a) is context { lift say $a }; foo(); }; &+foo(3); 18:41
p6eval std 25628: OUTPUT«Potential difficulties:␤ The + twigil is deprecated, use the * twigil instead at /tmp/mQ6ZYy9ef1 line 1:␤------> is context { lift say $a }; foo(); }; &+foo(3);␤Undeclared routine:␤ foo used at 1 ␤ok 00:03 47m␤»
TimToady gotcha
diakopter oh; S06 uses it..?
&+myfunc(42); 18:42
18:42 justatheory left
TimToady then it's a fossil 18:42
diakopter std: lift do { lift say 2; sub GLOBAL::foo($a) is context { lift say $a }; foo(); }; &*foo(3);
p6eval std 25628: OUTPUT«Undeclared routine:␤ foo used at 1 ␤ok 00:03 46m␤»
diakopter std: do { say 2; sub GLOBAL::foo($a) is context { say $a }; foo(); }; &*foo(3); 18:43
p6eval std 25628: OUTPUT«Undeclared routine:␤ foo used at 1 ␤ok 00:03 46m␤»
pugs_svn r25629 | lwall++ | correct fossil
TimToady foo() is only looked up lexically these days 18:44
so the compiler can know the candidate list most of the time
diakopter std: do { say 2; sub GLOBAL::foo($a) is context { say $a }; }; &*foo(3);
p6eval std 25628: OUTPUT«ok 00:03 46m␤»
diakopter !!!!!
TimToady two things 18:45
it's not bothering to look up &*foo since it's dynamic
and the is context is completely ignored
18:46 alester left
diakopter by STD? or by Perl 6 18:46
TimToady by STD
ab5tract okay, this is probably going to sound like a silly question, but does perl 6 allow module mixins?
18:46 justatheory joined
TimToady it's one of those things that is theoretically possible, but I don't seem much need to make it easy, given the other mechanisms we support by default 18:47
I don't see why you can't compose a role into a module thought 18:48
*though
a role is just generic code
ab5tract Right.
it's just going to take a bit to change my way of thinking 18:49
TimToady but generally with modules we would stick to the normal export/import mechanism to get aliasing
since controlled aliasing is more controlled than uncontrolled aliasing, generally :)
18:50 ewilhelm joined
ab5tract right. so 'import A::B;' basically pulls the contents of A::B into whatever module I run it in? 18:50
ab5tract hasn't coded perl since 2000, many lost brain cells ago
TimToady well, use, not import. this ain't python
ab5tract okay
TimToady but use will import whatever A::B offers for export by default 18:51
and unlike in P5, will import into the lexical scope rather than package
ab5tract ah cool
TimToady forgot to diakopter++ on the fossil discovery 18:53
ab5tract alright, so there isn't the same distinction as in Ruby where libraries are loaded with a separate keyword (require) and getting the code into where you want it is a matter of using 'include'
TimToady use does both, though of course it can be broken down into require and import bits as in Perl 5
ab5tract gotcha. I'm trying to write a fascimile of a working Ruby Waves web app in perl6 for the Web.pm discussion 18:55
TimToady but there's no import keyword, it's just a routine that does binding
all it has to do is say things like COMPILING::<$foo> := MyModule::<$foo> 18:57
ab5tract right
18:57 barney joined
TimToady bbl & # shower and cogitation 18:57
ab5tract its all relatively moot though, as roles/traits are probably a better fit for the mixin style coding philosophy
18:58 M_o_C joined
diakopter well, more like std++ on the fossil discovery :P 19:00
19:01 tiarra joined 19:02 justatheory left 19:03 tiarra left 19:11 japhb left 19:16 ashizawa_ joined 19:17 ashizawa left, ashizawa_ left, ashizawa joined 19:20 mberends joined 19:27 duke_leto joined 19:28 duke_leto left 19:30 ejs left 19:35 ashizawa left
frioux rakudo: 0=='0' 19:36
p6eval rakudo 1f2f91: RESULT«Bool::True»
frioux rakudo: 0==='0'
p6eval rakudo 1f2f91: RESULT«Bool::False»
TimToady oh, and a ruoso++ for the lift stuff 19:37
19:37 justatheory joined
diakopter std: lift lift &*\ ruoso 19:41
p6eval std 25629: OUTPUT«############# PARSE FAILED #############␤Syntax error (two terms in a row?) at /tmp/pg5CyHq5CH line 1:␤------> lift lift &*\ ruoso␤ expecting any of:␤ infix or meta-infix␤ infix stopper␤ postfix␤ postfix_prefix_meta_operator␤ standard
..stopper␤ statement modifier ...
19:49 Ariens_Hyperion joined, DemoFreak left
TimToady doesn't look for unspace there 19:53
19:57 DemoFreak joined
ruoso wonders what module to use to test use Foo:from<perl5>; but it should be a OO module 20:00
since mildew doesn't support P5Package yet
actually, that should probably be implemented directly in SMOP 20:01
20:02 Maghnus joined
pmurias ruoso: Class::MOP is already required by mildew 20:08
ruoso hmmm... 20:09
pmurias, ::Foo::Bar.baz() is failing... 20:10
it is composing the name of the package wrong
it's missing the ::
actually it's missing a lot of things... it was supposed to do a package lookup and then a symbol lookup, but it's doing something just wrong 20:11
pugs_svn r25630 | pmichaud++ | [t/spec]: Avoid a possible pun between "class Q" and Q quote operator. 20:15
r25631 | ruoso++ | [mildew] comitting use foo:from<perl5> even without the test 20:18
TimToady note that :: is considered meaningless on the front of a package name, except in a declaration or as part of ::() 20:19
in particular, it doesn't mean global as it does in p5 20:20
ruoso TimToady, it's because mildew is not aware of types yet, so it turns plain Foo::Bar into &Foo::Bar()
so using the :: in the front makes it distinct
TimToady I attach STD's rudimentary symbol tables to the tree, so they're available, such as they are 20:21
ruoso TimToady, but STD is making warnings where it shouldn't
TimToady looking at that, but need food 20:22
ruoso std: module Foo { class Bar {method baz { } } }; Foo::Bar.baz
p6eval std 25631: OUTPUT«Undeclared name:␤ Foo::Bar used at 1 ␤ok 00:02 33m␤»
TimToady all that symbol table code needs a good refactoring
20:29 pmurias left
dalek kudo: d3f4070 | pmichaud++ | src/parser/grammar.pg:
Add various Q-style quoting forms, including Q:PIR.
20:29
20:33 aindilis joined 20:34 rodi left, M_o_C left 20:42 ashizawa joined 20:45 ashizawa left, ashizawa joined 20:48 ashizawa left 20:51 ashizawa joined 20:52 ashizawa left
pugs_svn r25632 | pmichaud++ | [t/spec]: unskip some #?rakudo tests. 20:53
21:00 ashizawa joined 21:01 ashizawa left 21:02 ashizawa joined, ejs1 joined 21:04 ashizawa left 21:05 ashizawa joined 21:08 ashizawa left
bacek @tell pmichaud Can you please review my REDUCEMETAOP changes at github.com/bacek/rakudo/blob/6a68c9...assign.pir ? 21:10
lambdabot Consider it noted.
21:10 alester joined
pugs_svn r25633 | lwall++ | typo from Jon++ 21:12
21:13 ashizawa joined 21:14 ashizawa left 21:15 alester left 21:16 ashizawa joined 21:21 ispy_ left 21:39 bacek left
pmichaud bacek: I still don't like the dependency on the 'right' parameters, or the separate REDUCEMETAOP and REDUCEMETAOPCHAIN functions 22:04
lambdabot pmichaud: You have 1 new message. '/msg lambdabot @messages' to read it.
pmichaud I'd prefer to see them combined. 22:05
22:07 meppl joined 22:18 Whiteknight joined 22:23 |jedai| left, |jedai| joined 22:25 bacek joined
bacek pmichaud: CHAIN implies && according to latest changes in spec. 22:27
Triangular reductions of chaining operators always consist of one or more True values followed by 0 or more False values. 22:29
22:31 hercynium left 22:42 skids left 22:46 szabgab left 22:52 barney left 22:55 hercynium joined 22:57 szabgab joined, ruoso left 23:09 cas left 23:19 bacek left 23:23 ejs1 left 23:40 NoirSoldats left 23:46 frioux left 23:47 skids joined 23:49 hercynium left 23:53 Eevee left 23:56 bacek joined