perl6-projects.org/ | nopaste: sial.org/pbot/perl6 | evalbot: 'perl6: say 3;' | irclog: irc.pugscode.org/
Set by mncharity on 25 March 2009.
00:09 LylePerl left 00:18 orafu left, orafu joined 00:21 DemoFreak left 00:22 wknight8111 left 00:30 hercynium joined 00:32 orafu left, orafu joined 00:33 sri_kraih left 00:34 sri_kraih joined 00:38 LimbicRegion joined
pugs_svn r26509 | lwall++ | [STD] allow traits on subset, enum 00:41
r26509 | lwall++ | [STD] non-declarative enum listop now parsed as normal listop
TimToady dduncan: generally such language nestings are handled via context variables, which can either be tested directly with <?$*VAR>, or used to convey a derived language inward 00:44
as with $*LANG in STD
a derived language can enforce whatever restrictions it likes, though often the result is "syntax error", whereas explicitly testing can give better error messages 00:45
00:57 LimbicRegion left 01:02 eternaleye joined 01:07 Limbic_Region left 01:11 Auzon left 01:12 km2 joined 01:13 kimtaro left 01:16 hercynium left, FurnaceBoy left
PhatEddy std: class A{ our $.x is rw = 12 } ; say $A::.x 01:18
p6eval std 26509: OUTPUT«ok 00:05 43m␤»
PhatEddy rakudo: class A{ our $.x is rw = 12 } ; say $A::.x
p6eval rakudo 467ade: OUTPUT«Scope not found for PAST::Var '$A' in ␤current instr.: 'parrot;PCT;HLLCompiler;panic' pc 146 (src/PCT/HLLCompiler.pir:105)␤»
PhatEddy I'm guessing the problem is on the rakudo side but not 100% sure ... 01:19
01:19 LylePerl joined 01:20 aindilis left, aindilis joined
s1n rakudo: %*ENV<TEST> := 'foo'; %*ENV<TEST>.say 01:29
p6eval rakudo 467ade: OUTPUT«rtype not set␤current instr.: 'parrot;PCT;HLLCompiler;panic' pc 146 (src/PCT/HLLCompiler.pir:105)␤» 01:30
s1n hmm, seems ENV is just busted
01:30 nihiliad joined
pmichaud assignment to %ENV doesn't work yet. 01:33
s1n pmichaud: there's a ticket that said binding did though
pmichaud that was probably before binding was broken.
s1n heh okay
pmichaud: okay thanks, where would i find the ENV code? 01:34
pmichaud the ENV stuff is based on Parrot's Env PMC
what rakudo will have to do is to create its own Env type, and then override postcircumfix:<{ }> for that type. 01:35
s1n there is no Env type in rakudo?
01:36 kimtaro joined
pmichaud the postcircumfix:<{ }> for Rakudo's env type will have to return proxy objects that know how to rebind the underlying Env PMC objects whenever a value is stored into them. 01:36
PhatEddy rakudo: class A{ our $x is rw = 12; my $x = 4 } ; say $A::x 01:37
p6eval rakudo 467ade: OUTPUT«12␤»
pmichaud although, I suppose it might be sufficient to define postcircumfix:<{ }> directly on Parrot's Env PMC
but we still need the proxy values.
PhatEddy pmichaud: I wonder if that last might not talk back more ... 01:38
pmichaud PhatEddy: yes, that looks like a redeclaration error to me. 01:39
dduncan TimToady, I hear that 01:44
01:45 nbrown joined 01:46 orafu left 01:47 orafu joined 01:51 japhb left 01:53 hercynium joined, dalek left, dalek joined 01:58 PhatEddy left 02:09 orafu left, orafu joined 02:17 spx2 left, spx2 joined 02:32 orafu left 02:33 orafu joined 02:44 simcop2387 joined 02:57 payload left 03:18 orafu left, orafu joined 03:37 orafu left, orafu joined 04:04 hercynium left 04:06 sri_kraih_ joined
pugs_svn r26510 | lwall++ | [STD] allow «...» on enums, per S12 04:11
r26511 | lwall++ | [S12] doc syntax for exporting subset and enum 04:14
r26511 | lwall++ | [S12] enum uses (...) rather than [...], since <...> is defined as ()-like
r26511 | lwall++ | [S03] mention temp and let as named unary ops
04:22 sri_kraih left 04:34 jhorwitz_ joined 04:37 drbean joined 04:45 japhb joined 04:47 jhorwitz left 04:54 drbean_ left
pugs_svn r26512 | pmichaud++ | [t/spec]: Use isa_ok instead of WHAT to test types. (more to come) 04:59
05:01 meppl joined
pugs_svn r26513 | pmichaud++ | [t/spec]: Use isa_ok instead of WHAT to test types. 05:04
r26514 | pmichaud++ | [t/spec]: Use isa_ok instead of WHAT to test types. 05:15
r26515 | pmichaud++ | [t/spec]: Use isa_ok instead of WHAT to test types. 05:21
05:24 aindilis left, aindilis joined
pugs_svn r26516 | pmichaud++ | [t/spec]: Use isa_ok instead of WHAT to test types. 05:35
r26517 | pmichaud++ | [t/spec]: protoobjects stringify to shortname plus parens (S12) 05:36
05:45 orafu left, orafu joined
pugs_svn r26518 | pmichaud++ | [t/spec]: protoobjects stringify to shortname plus parens 05:45
06:12 skids_ left 06:19 azawawi joined
moritz_ with parrot r38385 rakudo fails t/spec/S02-builtin_data_types/catch_type_cast_mismatch.t 06:24
oh wait, I didn't update the test...
06:25 mberends joined 06:28 iblechbot joined 06:36 amoc joined
pugs_svn r26519 | pmichaud++ | [t/spec]: More protoobject stringification updates. 06:37
arnsholt Where are the arguments to a grammar's parse method specced? I've grepped through S05, but can't see anything 06:38
moritz_ pmichaud: did you see my patch for the test suite in RT?
pmichaud moritz_: alas, didn't see it until just now. 06:41
anyway, I think everything's all cleared up again -- spectests are passing on my box. 06:42
moritz_ gives it another try 06:43
pmichaud: on parrot HEAD t/spec/S02-builtin_data_types/catch_type_cast_mismatch still fails 06:44
pmichaud moritz_: did you update rakudo?
06:45 orafu left
moritz_ ah no 06:45
06:45 orafu joined
moritz_ (missing dalek)-- 06:45
06:48 dalek left, dalek joined
pmichaud time for sleep here 06:51
be back in a few hours
moritz_ good night 06:53
07:06 rewt left, rewt joined 07:10 DemoFreak joined 07:16 masak joined 07:19 wollmers joined 07:24 dduncan left 07:32 justatheory left
mberends masak: top o' the mornin' to you, sir. 07:38
lambdabot mberends: You have 1 new message. '/msg lambdabot @messages' to read it.
mberends @massage
lambdabot masak said 17h 10m 33s ago: check out the new dotty progress bars when proto installs Rakudo :)
masak mberends: and a very fine one to you, good sir.
mberends dotty.................. c.o.o.l.
masak still primitive, but it's a good start. 07:39
and only for 'proto' so far, none for 'installer'.
07:40 payload joined 07:41 cognominal left
mberends ok. did a bit a reading about .deb file format etc last night. It may suit Perl 6 as a package format. Windows lacks the essential building blocks ar, tar and gzip, so those would become dependencies :( 07:41
masak maybe we can implement small versions of them in Perl 6 :) 07:42
mberends gzip might be tough. it would probably need PIR to be fast enough. 07:43
moritz_ or a dynpmc for parrot that wraps the C library
mberends moritz_: that would still be a massive dependency on Windows :( 07:44
masak package management systems are hard!
moritz_ mberends: whatever you do, you can assume that windows can't handle it out of the box 07:45
07:45 km2 left
pugs_svn r26520 | azawawi++ | [S:H:P6] Bundled latest STD in 0.47 07:46
07:46 amoc left 07:47 amoc joined
mberends moritz_: yes. maybe the gzip library is simple enough to call in via NCI. probably, I hope. 07:48
07:49 km2 joined
mberends are the rumours that sockets are br0k3n true? 07:49
masak mberends: seems not. 07:50
mberends phew. I have a testing plan in the back of my mind, will try later today. 07:51
masak moritz_: I was going to debug the problem with sockets this morning. but when I did bin/run-nibbler, everything worked fine.
mberends++
azawawi @karma 07:53
lambdabot You have a karma of 135
azawawi :)
mberends @karma
lambdabot You have a karma of 33
mberends keep hacking, then :)
moritz_ masak: so, do you know what I did wrong? 07:54
masak: I cargo-culted it straight from HTTP::Daemon
masak moritz_: will re-try your code later today. 07:56
it definitely should work.
mberends moritz_: can I help you with HTTP::Daemon?
07:56 orafu left, orafu joined
moritz_ mberends: see my mail to perl6-users 07:59
mberends: I tried to create a simple test for the test suite, and failed miserably
masak :/ 08:00
moritz_: you did use the HTTP::Daemon in Web.pm, didn't you?
oh, wait. you must've.
mberends oops. no email here currently. is there a URL?
masak www.nntp.perl.org/group/perl.perl6....g1050.html 08:01
mberends first thought is that listen() is missing. 08:02
08:02 kidd_` joined
moritz_ ooh 08:03
mberends it all depends on BSD Sockets, and the specs I used for that were perldoc perlipc (P5)
not the truest source, but practical for a perl programmer. 08:04
moritz_ I'll take a closre look tonight, thank you 08:05
08:05 amoc left, amoc joined
azawawi moritz_: so .HOW or ^ methods are static class methods, right? 08:15
moritz_: and good morning first :)
08:16 Eevee left
moritz_ azawawi: it's a method on an instance of the method class 08:16
08:16 riffraff joined
azawawi takes a look at t/spec 08:17
wollmers Good morning. 08:20
08:25 pmurias joined 08:26 |Jedai| joined 08:27 bacek left, xinming_ is now known as xinming 08:28 mberends left 08:32 bacek__ left
pmurias azawawi: would it be hard to make padre run mildew on F5? 08:33
08:35 sri_kraih_ left
azawawi pmurias: NOP :) 08:35
pmurias: i can its support if you need
pmurias: s/can/can add/ 08:36
pmurias: you can do it by making a plugin that override the F5 behavior...
pmurias: or you can fake it by renaming your mildew to perl6.exe and use Padre::Plugin::Perl6 08:37
pmurias what would i would like most is to map different F* keys to running mildew with different options 08:39
so it could show the ast...
azawawi pmurias: let me check 08:40
08:41 xinming left, bacek__ joined
azawawi pmurias: i can add it now for you if mildew builds on win32... 08:42
08:42 Jedai left
azawawi pmurias: in Padre::Document::Perl6.pm you need to modify subroutine 'get_command' 08:43
pmurias azawawi: i haven't tried building mildew/smop on win32
azawawi: i see that place 08:46
azawawi pmurias: no problem; so you need to customize the executable to run along with its arguments in Perl6 plugin
pmurias: you're using Padre over linux right? 08:49
pmurias azawawi: yes 08:50
azawawi starts installing a linux vm :) 08:51
pmurias: use $ENV{MILDEW_DIR} or MILDEW_HOME ? 08:52
08:55 orafu left
pmurias maybe $ENV{MILDEW_EXEC}? 08:55
08:55 orafu joined
azawawi pmurias: ok 08:57
moritz_ somehow the signatures in S16 and in Rakudo don't match at all
08:57 iblechbot left
moritz_ s/S16/S32::IO/ 08:58
for example in the spec it's Int read(Buf, Int), in Rakudo it's Str read(Int) (which seems much saner to me)
09:00 payload left
azawawi pmurias: i will add it today once i get Padre and mildew running on my linux vm here. 09:02
09:04 ejs joined
szabgab what is mildew ? 09:14
pmurias szabgab: the Perl 6 compiler for smop
szabgab ic 09:15
moritz_ how much does smop actually run?
s/smop/mildew+smop/
szabgab IMHO the Perl6 plugin should have an option to select which is the perl6 executable (from a list)
pmurias moritz_: the refactored smop runs very little 09:17
moritz_ and the old one?
pmurias v6/mildew/t 09:19
the feature set was more concept oriented like like return implemented as control exceptions rather then having user feature like &infix:<*> 09:21
azawawi szabgab: sure in a preferences dialog or something... 09:23
azawawi finished installing a kubuntu vm... 09:24
moritz_ pmurias: right, it looks rather impressive, but as you said, not very user-oriented
09:32 lambdabot left 09:35 lambdabot joined 09:37 aindilis left 09:38 aindilis joined
jnthn morning 09:44
azawawi good afternoon :) 09:45
09:52 payload joined 10:01 azawawi left 10:03 azawawi joined
azawawi pmurias: ping 10:04
jnthn std: constant $answer is export = 42;
p6eval std 26520: OUTPUT«ok 00:02 36m␤»
jnthn std: constant answer is export = 42; 10:05
p6eval std 26520: OUTPUT«ok 00:02 35m␤»
pasteling "azawawi" at 212.38.130.254 pasted "mildew failure on kubuntu" (34 lines, 2.6K) at sial.org/pbot/36250 10:06
azawawi pmurias: i could not get mildew to compile on kubuntu... 10:07
10:07 pancake joined 10:20 orafu left, OuLouFu joined, OuLouFu is now known as orafu 10:26 synthetic56565 joined 10:29 synthetic56565 left, synthetic56565 joined
pancake is $fh.readline deprecated or it is just not yetd implemented in rakudo? 10:30
jnthn deprecated; use .get
synthetic56565 rakudo: say 5+5; 10:32
p6eval rakudo 931d23: OUTPUT«10␤»
10:33 kidd_` left
masak rakudo: say [*] 1..10 10:33
lambdabot masak: You have 1 new message. '/msg lambdabot @messages' to read it.
p6eval rakudo 931d23: OUTPUT«3628800␤»
masak @massage
lambdabot frettled said 1d 11h 48m 42s ago: (expt masak 2) for that blog post
masak @clear
lambdabot Messages cleared.
masak frettled: I didn't ask the last time around -- is that a Lisp sexpr? 10:34
synthetic56565 rakudo: say 1..9.map:{ rand }.sort; 10:39
p6eval rakudo 931d23: OUTPUT«Statement not terminated properly at line 1, near ":{ rand }."␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)␤»
masak rakudo: (1..9).map({rand()}).sort.perl.say 10:41
p6eval rakudo 931d23: OUTPUT«[0.0160124356198175, 0.12060063819807, 0.308289916295585, 0.427930465290906, 0.458597140425024, 0.467302533926233, 0.493214739157647, 0.630845762879716, 0.973159495965238]␤»
synthetic56565 thanks ;) 10:42
masak np.
synthetic56565 why doesn't the : syntax work?
masak synthetic56565: there's an RT ticket about it.
something to do with parsing, I think.
synthetic56565 ah, k
masak (or was that just for @array.sort:{...} ? hm, don't remember.)
pancake rakudo: say (open "/etc/issue",:r).get 10:45
p6eval rakudo 931d23: OUTPUT«Debian GNU/Linux 5.0 \n \l␤»
10:45 frodwith_ joined
pancake uhm, that can be dangerous O:) 10:45
10:46 frodwith left
masak pancake: feel free to write a sandbox environment for Rakudo before someone does something destructive with p6eval. 10:46
pancake i hope nobody does, i just wanted to ensure if it was possible/secure 10:47
10:47 payload left
pancake i have some perl scripts to prepare minimal chroot environments 10:48
but we should probably run this in a virtual machine to have better control on the network
masak rakudo: sub by($s, $f is copy, $t) { gather while $f<=$t { take 0+$f; $f += $s } }; "Jpuesrtl a6n ohtahcekre r".split("")[by(2,0,24),by(2,1,25)].join.say 10:54
p6eval rakudo 931d23: OUTPUT«Just another perl 6 hacker␤»
pmurias azawawi: pong 10:56
azawawi: run make in perl6-snapshot
also mildew is going to be replaced by re-mildew (the refactored version) soon 10:58
wollmers std: my $a'a = "foo";
p6eval std 26520: OUTPUT«ok 00:04 36m␤» 10:59
masak std: my $a'_'a = "foo"; 11:05
p6eval std 26520: OUTPUT«ok 00:04 36m␤»
wollmers std: my $a-_-a = "foo"; 11:06
p6eval std 26520: OUTPUT«ok 00:04 36m␤»
moritz_ rakudo: my $a'_'a = "foo"; say $a'_'a;
p6eval rakudo 931d23: OUTPUT«foo␤»
jnthn eww. 11:07
masak rakudo: my $_-_'-_ = 5; say $_-_'_-_
p6eval rakudo 931d23: OUTPUT«Statement not terminated properly at line 1, near "'-_ = 5; s"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)␤»
jnthn phew.
masak oops.
rakudo: my $_-_'_-_ = 5; say $_-_'_-_ 11:08
p6eval rakudo 931d23: OUTPUT«5␤»
jnthn eww.
masak :)
and people worry about Perl 6 being too readable.
wollmers rakudo: my $a'a = "bar";
p6eval rakudo 931d23: ( no output )
wollmers hmm, need a newer version of rakudo - $a'a fails here 11:09
jnthn rakudo: ::_'_ := Int 11:10
p6eval rakudo 931d23: ( no output ) 11:11
wollmers masak: readability does not depend on language - most is naming
jnthn rakudo: ::_'_ := Int; my _'_ $x = 42; say $x; $x = "hi"; say $x;
masak wollmers: I know. I wasn't 100% serious.
p6eval rakudo 931d23: OUTPUT«42␤Type mismatch in assignment.␤current instr.: 'die' pc 17540 (src/builtins/control.pir:225)␤»
jnthn omfg.
jnthn hopes people do not use this too much...
otoh it'll be great for obsfucation.
moritz_ indeed 11:12
masak jnthn: that 'type mismatch' error... couldn't it be extended to says which two types mismatched?
moritz_ should blog about it
masak s/says/say/
moritz_ that would be *really* great
masak feels like Rakudo must've just figgered out that there were two types not matching, so it should have them handy anyway in some form. 11:13
jnthn masak: It probably can.
masak: Should be easy-ish.
masak jnthn: do you want an RT ticket about it? 11:14
arnsholt Is there something that could stop action methods in grammars from being run?
masak arnsholt: not including the {*} in the rule? :) 11:15
moritz_ arnsholt: when you forget the {*} it won't run
:-)
arnsholt Yeah. Not that simple though =)
masak arnsholt: also, not attaching an action class to it.
moritz_ also if the {*} is in a branch that didn't match
masak arnsholt: alternatively, not calling the grammar at all :)
there are many possibilities.
jnthn masak: It should be easy enough...let me get the current stuff I'm doing on constant done and then I'll take a look. 11:16
arnsholt I get a successful match, and actions at the lower levels run (I know this because calling say gives output there), but the two top rules just don't happen
moritz_ arnsholt: nopaste it?
masak jnthn: oki. jnthn++
11:19 ejs left, broquaint left, samlh left, lumi left, cls_bsd left, c9s left, kimtaro left, SamB left, s1n left, m-i-l-a-n left, |Jedai| left, wollmers left, japhb left, lisppaste3 left, hcchien left, scook0 left, amoc left, dalek left, spx2 left, eternaleye left, kidd_ left, phenny left, pancake left
pasteling "arnsholt" at 129.240.72.206 pasted "Action weirdness" (58 lines, 1.9K) at sial.org/pbot/36251 11:20
pugs_svn r26521 | pmurias++ | [re-mildew]
r26521 | pmurias++ | say works (with inlined return)
r26521 | pmurias++ | the default CONTROL block get an $_
r26521 | pmurias++ | [re-smop] added .FETCH,.STORE to capture, fixed capture.elems
11:20 dalek joined
arnsholt There. Some of the stuff isn't intended to work, but I can't see why it doesn't say "TOP" and "query", when it does say all the other stuff 11:21
11:21 xinming joined, diakopter joined, ejs joined, |Jedai| joined, amoc joined, wollmers joined, japhb joined, spx2 joined, kimtaro joined, eternaleye joined, lisppaste3 joined, broquaint joined, SamB joined, m-i-l-a-n joined, samlh joined, lumi joined, cls_bsd joined, kidd_ joined, s1n joined, hcchien joined, scook0 joined, c9s joined, phenny joined, ascent_ joined, estrabd joined, gfldex joined, rhr joined, frettled joined, Woody2143 joined, irc.freenode.net sets mode: +o diakopter
wollmers std: my $9 = 42; 11:22
p6eval std 26520: OUTPUT«ok 00:02 36m␤»
wollmers std: my $a9'9 = 42;
p6eval std 26520: OUTPUT«##### PARSE FAILED #####␤Syntax error (two terms in a row?) at /tmp/oUkjZx3J8K line 1:␤------> my $a9'9 = 42;␤ expecting any of:␤ POST␤ infix or meta-infix␤ infix stopper␤ postfix␤ postfix_prefix_meta_operator␤ shape definition␤ standard
..stopper␤ statement modifi...
wollmers std: my $a9'9a = 42;
p6eval std 26520: OUTPUT«##### PARSE FAILED #####␤Syntax error (two terms in a row?) at /tmp/O7Py8MOp3B line 1:␤------> my $a9'9a = 42;␤ expecting any of:␤ POST␤ infix or meta-infix␤ infix stopper␤ postfix␤ postfix_prefix_meta_operator␤ shape definition␤ standard
..stopper␤ statement modif...
wollmers std: my $a9-9a = 42;
p6eval std 26520: OUTPUT«##### PARSE FAILED #####␤Syntax error (two terms in a row?) at /tmp/170gc2dvsq line 1:␤------> my $a9-9a = 42;␤ expecting any of:␤ POST␤ infix or meta-infix␤ infix stopper␤ postfix␤ postfix_prefix_meta_operator␤ standard stopper␤ 11:23
..statement modifier loop␤ terminat...
moritz_ didn't know that you can nest classes inside grammars
jnthn moritz_: I think that should work.
Or should be possible.
masak it's just namespaces.
jnthn The only things you can't nest things inside are roles.
arnsholt moritz_: Well, in that case, why are some of the methods being called, but not others?
11:24 cognominal joined
masak arnsholt: does the whole SQL.parse call match? 11:24
11:25 wayland76 joined
moritz_ it does not, and that's the problem 11:25
arnsholt Oh, right. Stupid strikes again >.<
moritz_ because there's no final ; 11:26
arnsholt Yeah, so I noticed
There we go. Thanks for the help 11:27
wayland76 Well, if the actions are working, then we can call moritz_.....
(please don't hit me for saying "Action man" :) )
masak I like the name. 11:28
wayland76 But not the joke? :)
masak wayland76: oh, was it a joke? :P
11:29 nbrown left
baest arnsholt: cool with a SQL grammar, I was doing one myself but got distracted by other stuff. Are you putting it somewhere public? 11:29
wayland76 I bet we end up with a namespace on 6PAN called "Grammar::...." 11:30
baest wayland76: that would be nice :)
arnsholt baest: I will, eventually. Assuming I get fer enough for it to be reasonably useful
masak someone better write 6PAN first.
wayland76 Then again, maybe not. Maybe they should be under XML::Grammar, SQL::Grammar, etc
arnsholt Indeed. 6PAN is a cool name though. I like it
masak arnsholt: release early and often.
arnsholt: I like DPAN better. :)
moritz_ arnsholt: I just add a 'or die "no match"' after the .parse, that ususally helps 11:31
wayland76 well, I'm going to rough up the outlines of a software packaging system sometime
Why DPAN?
Dead Parrot Archive Network?
arnsholt masak: That reminds me of what Jaguar did after they made the C-type (for competition type). What would be more natural than the D-type? =p
wayland76 (excuse Monty Python reference)
masak wayland76: I guess that could be one of its expansions. 11:32
arnsholt But for grammars, I think I'd prefer Grammar::*, rather than *::Grammar. Although one could make an argument for both. Maybe, if we're lucky, we'll get an unholy mix of both =)
wayland76 Well, at least with the Dead Parrot/Monty Python reference, we might be able to build support for Python on Parrot :) 11:33
baest arnsholt: well, if you do, maybe somebody will help you (if you want that). I will be needing a SQL grammar at somepoint and will rather not start from scratch
arnsholt baest: I'll probably put it on github when I get that far 11:34
wayland76 arnsholt: I think we'll end up with *::Grammar, because people looking for an XML Grammar will be more likely to want to do other XML stuff than other Grammar stuff
arnsholt wayland76: Good point that
wayland76 afk 5-10 minutes. Will backlog
baest arnsholt: ok, cool. Which db are you doing it for? 11:35
11:35 nihiliad left
baest looks forward to just subclassing a grammar for making it specific for some db 11:35
arnsholt baest: While listening to masak's talk at NPW it struck me that Perl 6 will need a DBI. So I figured I could start on that 11:37
So I'm doing this so that I have some kind of "DB" to test with
baest it is possible to do grammar roles? I guess it should. That will be very cool for defining certain stuff like type parsing og commments or whatever
arnsholt I'll probably pilfer code and design liberally from DBI at CPAN, and DBDI from parrot 11:38
ascent_ btw, how is work on 6PAN?
jnthn baest: You can put rule/regex/token in a role and then compose them into a grammar, sure. That should already work.
baest arnsholt: oh, I was thinking the same thing. I wuold very much like some compile time checking of sql in p6, kinda like linq should do, but without the weird order of things 11:39
moritz_ arnsholt: www.nntp.perl.org/group/perl.perl6....22054.html
baest jnthn: very nice. Wouldn't that be more obvious than subclassing PCT::Grammar?
arnsholt moritz_: Oooh. Thanks 11:40
jnthn baest: You think PCT::Grammar could become a role instead? Not sure...
moritz_ arnsholt: that's a bit old, but likely still interesting... somebody wrote a *very* basic DBI think for rakudo with mysql and pg backends... forget where... 11:41
jnthn I think it was posted on PerlBuzz
IIRC it was Simon Cozens that wrote it. 11:42
moritz_ perlbuzz.com/2008/12/database-acces...icely.html
wayland76 Quick question. DBI (v1) takes a database engine as a parameter, and then uses that in an eval to create a driver class
Is there a better way to achieve that in Perl 6? 11:43
moritz_ eval? string eval?
well
wayland76 IIRC. I haven't looked at DBI for a while
moritz_ you can of course pass in a reference to a proto object 11:44
baest jnthn: yes something like that. Well it works so no reason to rewrite. But I don't see any reason for having to subclass (maybe I'm not looking enough :) ) and it could be nice to rewrite names and picking the methods you wan't in your own grammar
moritz_ but that requires that you 'use' the DBD-class yourself first
wayland76 Yes. I'm looking for something that's as simple for the interface user as the DBI setup 11:45
baest whoops, maybe it was thinking about delegating in that last comment. Hmmm
wayland76 But I've always felt that there should be a way to do the interface/implementation split where you could pass your desired implementation in as a parameter, without having to do an eval, etc
jnthn baest: Part of it is probably just that at the time this was all done, roles weren't an option (unimpl) 11:47
I'm not sure if it wins us a huge amount over subclassing. 11:48
baest jnthn: no, I think I was mixing roles and delegating in my head 11:49
jnthn baest: Ah.
11:49 ruoso joined
ruoso Hello! 11:50
wayland76 I notice that S17 still languishes. Is this because the P6 community lacks experience with threads? If so, should we be trying to find some Perl Threads people to help us? 11:51
moritz_ wayland76: I don't know if that's a very good idea, given the state of Perl 5 threads :-) 11:52
wayland76 Well, I see your point. How about if we make that "carefully guided Perl Threads people"?
(Well, maybe I don't see your point, but I know from hearsay that P5 threads changed from one model to the other, and some people are unhappy with both models) 11:54
pmurias ruoso: hi 11:55
wayland76 Anyway, assuming the answer was that we lacked the relevant expertise, my next question was going to be, does anyone know where we would find people like that?
ruoso hi pmurias
moritz_ wayland76: my point is that we don't have working and robust implementations anywhere in Perl 5 land 11:56
ruoso wayland76, Perl 6 is probably having a implicit threading model instead of a explicit threading model
wayland76 Do the Parrot people have or need threads? What about the POE and AnyEvent people? Those sorts of things
moritz_ the java people did a good job with threads
wayland76: parrot has threads, but I don't know how good they are
ruoso moritz_, not in terms of syntax ;)
moritz_ POE and AnyEvent are asynchronous, not threaded
ruoso: right.
ruoso wayland76, there is certainly going to be a event engine at the core of the Perl 6 interpreters 11:57
wayland76 EventEngine++ :)
ruoso and I tend to think that the threading will occour implicitly from the event engine
moritz_ yes, that's Larry's master plan
pmurias ruoso: return doesn't work properly
ruoso i.e.: you define how many working threads you want...
jnthn std: constant Num baz = 42;
p6eval std 26521: OUTPUT«ok 00:02 35m␤»
ruoso pmurias, what's the problem? 11:58
wayland76 I've skimmed over that white paper that describes threads on top of events
But I still don't feel that I have any working expertise in threads
ruoso the erlang people has a good design
so does the IO language
wayland76 And I thought maybe we could find someone with the relevant experience, point them at that paper, and redirect the output into S17 :) 11:59
pmurias return seems to be a noop
when i extracted it's content it worked
ruoso: i'm removing capturize maybe it was the root of the problem 12:02
12:03 xinming_ joined, xinming left
wayland76 Some guy came through on the 18th, complaining about threads in both P5 and P6. I asked him who he thought did threads well, and he said "C++ with POSIX threads, python" 12:03
moritz_ I've heard that jruby does a decent job 12:04
ruoso pmurias, can it be made to work without capturize?
wayland76, moritz_, both C++ and python use explicit threading... I'm not sure that's what we're going to see in Perl 6 12:05
wayland76 But I have no experience with threads, other than some minor project at Uni over 10 years ago; I wish I could work on S17, but I think it would take me months just to get some sensible experience
ruoso: Fine by me, although the guy the other day wasn't happy without it :)
pmurias ruoso: we have capture.new now
moritz_ ruoso: I'm more concerned about that backend for now...
ruoso pmurias, ah... ok... 12:06
moritz_, the problem with p5 was the excessive use of globals and magic variables
that was what made p5 threading a nightmare
wayland76 But I guess I don't mind about threads so much -- what I really want is a finite state machine and event-based programming. Combined with grammars, protocols will almost write themselves :)
ruoso wayland76, the idea of using implicit threading is that you can write event-based programming as if you were programming a regular transactional flow... 12:07
but instead of blocking the whole program, 12:08
it just blocks that continuation
and other continuations can take place
moritz_ ruoso: that's not the only problem... for example it's nearly impossible to share something other than a scalar
wayland76 sounds good to me :)
ruoso moritz_, that's because you need to have the share-nothing model 12:09
and the share-nothing model is only required because of the excessive use of globals and interpreter-wide variables 12:10
which, thankfully, were sanitized in P6
jnthn rakudo: sub foo { 42 }; my $x = foo == 42; say $x; 12:11
p6eval rakudo 095f9b: OUTPUT«get_iter() not implemented in class 'Integer'␤current instr.: 'prefix:=' pc 22295 (src/builtins/misc.pir:17)␤»
moritz_ ruoso: so what share model will Perl 6 use?
jnthn wonders how on earth we end up parsing prefix:= instead of infix:= there. 12:12
ruoso moritz_, for starts, everything is lexically bound...
then you have GLOBAL:: and PROCESS::
and that's all
much simpler
moritz_ jnthn: you can simply remove prefix:= :-)
so in my $x; async { 1 }; asnyc {2 }; will $x be shared between the async blocks? 12:13
12:14 sri_kraih joined
jnthn rakudo: sub foo { 42 }; my $x = (foo == 42); say $x; 12:14
ruoso moritz_, yes
p6eval rakudo 095f9b: OUTPUT«get_iter() not implemented in class 'Integer'␤current instr.: 'prefix:=' pc 22295 (src/builtins/misc.pir:17)␤»
moritz_ ruoso: so we have 'share everything' and try to keep the 'everything' small
jnthn rakudo: sub foo { 42 }; my $x = (42 == foo); say $x;
p6eval rakudo 095f9b: OUTPUT«1␤»
jnthn ...ok srsly wtf 12:15
ruoso jnthn, that's probably being treated as list assignment
jnthn Oh!
ruoso moritz_, basically, that's it...
jnthn Yes, that'd explain it. Rakudo doesn't do item assignment parsing properly yet...
ruoso jnthn, but a lot of things that doesn't have a list in the rvalue should be parsed as list assignment 12:16
basically, TimToady said that list assignment is actually "i don't know which context"-assignment
12:16 orafu left, orafu joined
wayland76 So, back to my original question, am I right in guessing that we have people with the appropriate experience, and we just have to wait for them to get around to it? 12:17
ruoso wayland76, I think none of the implementors got to that issue yet... 12:19
that's why it's mostly not spec yet
ascent_ I think S17 should be discussed as whole... Maybe post discussion about that on perl.poe? Model described at S17 is rather AnyEvent model than POE, but AnyEvent is only one person. 12:20
wayland76 Ok. Well, I won't go around encouraging random threading types to work on S17 then :)
ruoso ascent_, S17 is a very early draft at this moment 12:21
wayland76 The first thing we need is someone with a clue to go through and make it vaguely coherent, in line with the few decrees that have come down from above
My problem is that I don't have a clue. So I gave it about as much as I felt competent for, and then stopped. That means that I added a little about events and IPC, and then left it 12:22
ascent_ I write some POE apps and looked at AnyEvent model. AnyEvent is good for small apps really... If you got something more complicated it's very hard to use it. 12:23
ruoso ascent_, AnyEvent in S17 is more like an engine than a programming model
as I said above, the idea is not to have explicit event-based programming, but implicit 12:24
wayland76 The thing I liked about AnyEvent was that it supported non-POE event loops. But when I actually wanted to write something, I went with POE, because I wanted a FSM :) 12:25
ruoso ok... let me expose my view of things...
basically, both events and threading are going to be implicit in the language...
which means that, in terms of programming, you're going to write a regular transactional algorithm 12:26
BinGOs "non-POE event loops" ?
ruoso BinGOs, using other event engines 12:27
like... EV
wayland76 BinGOs: Ie. the GTK event loop, or someone else's
BinGOs Yes, like POE can.
12:28 mberends joined
ruoso BinGOs, but as I said, none of the implementors got there yet... so every ideas are yet on the table... 12:29
BinGOs I have no idea what you are talking about, I just spotted 'POE' 12:30
ruoso BinGOs, heh... well... we're discussing concurrency model of Perl 6
and one thing that is already given, is that we're going to have an event loop in the core of Perl 6 12:31
(as if POE got merged inside p5 interpreter)
BinGOs As a complete lay-person here, it would make sense not to tie yourself to a specific event loop. 12:32
literal POE is a lot more than an event loop... :P
ruoso BinGOs, that was why AnyEvent came to table 12:33
pmurias ruoso: how was the subroutine return a capture problem solved?
literal ruoso: POE itself isn't even tied to one
BinGOs POE does the same, we abstract in POE::Loop, so you can plug any event loop in. 12:34
ruoso literal, that's why we^WI usually see POE as a reference model... but in a more generic sense...
pmurias, it returns a capture... and capture does both .[] and .{}
pmurias, but a capture with only one argument, named or positional, return it in item context
BinGOs I have no problems with AnyEvent
apart from the attitude of the author. 12:35
12:35 wayland_ joined
ruoso BinGOs, literal, basically... I see something like AnyEvent + Worker Threads in the core 12:35
pmurias ruoso: item context = FETCH here?
12:35 kimtaro_ joined
ruoso pmurias, yes 12:35
BinGOs That'll work if you have a decent thread model 12:36
12:36 abra joined
wayland_ I understand the plan is to follow the PDF that says to build threads on top of events, rather than the other way around 12:37
ruoso BinGOs, that's why we're talking about implicit threading in the language, rather than explicit
pugs_svn r26522 | pmurias++ | [re-smop] removed capturize, fixed return and ritest
BinGOs you are going to be at mercy of the underlying OS' threads support as well.
ruoso BinGOs, of course, yes... 12:38
wayland_ BinGOs: I didn't know about the Gtk/POE linkup. Thanks!
12:38 sri_kraih left
BinGOs wayland_: there is a Glib loop as well. 12:38
literal yeah, that's what you'd use for Gtk2 12:39
12:39 iblechbot joined
BinGOs Or if you want to run POE in irssi. 12:39
mberends wayland76: I suggested the DPAN name to pmichaud during the Oslo hackaton, as meaning Distributed or Decentralised, seeing the peer nature of the many repositories, and being the letter after C. pmichaud replied that he would look into registering some suitable domains, so it may go that way. The tough part is supporting 'use ABC:ver<1.2.3>:auth<jbloggs>;' on all file systems.
wayland_ Stop it! My Netbook doesn't cope with drool on the eyboard 12:40
12:40 abra left
wayland_ s/eyboard/keyboard 12:40
the drool must've landed on the K :)
12:41 synthetic56565 left
wayland76 Anyway, my server that crashes when it gets cold has revived, so I can go back to not using my netbook :) 12:41
ruoso but basically... in my view... we're going to have a ControlExceptionWouldThread that's going to put this continuation in a pool of waiting threads, while also scheduling an event of some sort...
s/ControlExceptionWouldThread/ControlExceptionWouldBlock/
pmurias ruoso: say "hello world" now works in re-mildew
ruoso cool 12:42
pmurias, I think the last step on the refactoring would then port the missing tests to re-smop
12:42 wollmers left
wayland76 Anyway, I'll stop talking about threads -- don't want to waste the developers' time :) 12:42
12:42 nihiliad joined 12:43 wayland_ left, fridim_ joined, fridim_ left
pmurias ruoso: s/missing/failing/ ? 12:44
wayland76 I can't stay up late this week; my parents arrive home 5:30am on Thursday, and I have to get them at the airport
ruoso pmurias, missing from being ported from smop to re-smop
wayland76 night all o/
12:44 wayland76 left
pmurias ruoso: the ones left in smop/test aren't of much value 12:45
ruoso pmurias, ah... ok then... 12:46
pugs_svn r26523 | jnthn++ | [t/spec] Fudge constant.t for Rakudo; in a couple of places tweak the way we get at sigil-less constants to avoid a Rakudo parse bug, but leave it in place in other tests so we don't miss that there's a problem. 12:48
12:48 abra joined
ruoso pmurias, ok... last thing of the refactoring now... let's get the smop tests passing without leaks and the mildew tests passing as well.. 12:50
then we close it, and merge it back...
12:51 kimtaro left
pmurias merge being rm'ing the old one and renaming re-smop to smop ;) 12:51
ruoso pmurias, well.. basically yes... but let's just make sure it doesn't screw svn metrics (i.e. ohloh) 12:52
pugs_svn r26524 | pmurias++ | [re-smop] an 1 element capture returns that element in item context 12:53
ruoso oh... we're still missing p6opaque and friends
12:53 kimtaro_ left
pmurias food& 12:54
13:01 wollmers joined
Matt-W Hello! 13:02
mberends Matt-W: Hello! 13:03
Matt-W is back from holiday, with code! 13:05
mberends \o/ # working code?
Matt-W yes 13:06
should be anyway
just pushed it
you can actually call Form::form() with certain subsets of parameters and it Works
although my local copy is currently broken pending me figuring out what went wrong with trying to implement verbatim fields 13:07
13:07 abra left 13:09 eric256 joined
BinGOs ruoso: also read the docs for AnyEvent::Impl::POE sometime for unsubstantiated twaddle. 13:09
mberends Matt-W: ./proto test form splutters: Malformed routine definition at line 26, near "fit-in-wid" :( 13:10
Matt-W bum
it worked before :'(
possibly of course a rakudo update broke it while I was offline
13:11 km2 left 13:12 awarefish joined
Matt-W updates rakudo 13:12
mberends updates rakudo too
afk & # @life() 13:14
13:16 wollmers left 13:19 ispy_ joined 13:23 skids_ joined 13:26 ejs1 joined 13:27 azawawi left 13:28 alanhaggai joined
TimToady rakudo: sub foo { 42 }; my $x = foo() == 42; say $x; 13:34
lambdabot TimToady: You have 1 new message. '/msg lambdabot @messages' to read it.
p6eval rakudo 095f9b: OUTPUT«1␤»
TimToady jnthn: the problem has nothing to do with list/item assignment
only with foo being parsed as a listop, so expecting a term at ==
13:35 ejs left
jnthn TimToady: Yeah, I realized that bit after lunch... 13:35
pugs_svn r26525 | pmurias++ | [re-smop] fix memory leak
jnthn TimToady: How should Rakudo be parsing it?
masak Matt-W: welcome back! I will now pore over your new code for a while.
TimToady well, it would parse like std does if you remove prefix:<=>, I expect 13:36
Matt-W rakudo: class A {}; my $a = A.new; say A.WHAT;
p6eval rakudo 095f9b: OUTPUT«A()␤»
Matt-W what's with the ()?
TimToady protoobjects are supposed to stringify with parens
been specced for some time now
Matt-W rakudo: class A {}; my $a = A.new; say $a.WHAT;
p6eval rakudo 095f9b: OUTPUT«A()␤»
Matt-W that's actually the example I was supposed to write :) 13:37
skids_ @tell wayland76 RE:S17 I did start doing stuff on it catch me later for a URL, but decided the best thing for S17 is to wait for feeds and hypers to be implemented, and see what issues crop up on the inside of those.
lambdabot Consider it noted.
Matt-W As I understand it, $a there is not a protoobject
TimToady no, but .WHAT returns the protoobject
Matt-W ah 13:38
so actually I'm doing something wrong here
excellent
masak rakudo: class A {}; my $a = A.new; say $a
p6eval rakudo 095f9b: OUTPUT«A()<0xb66a63b0>␤»
skids_ @tell wayland76 you can get my work in progress URL from backlogs or catch me later for it.
lambdabot Consider it noted.
ruoso Matt-W, remember... .WHAT is not supposed to be used to do type identity (that is usually what people expect)
skids_ @tell wayland76 at least I managed to kick coroutines out to S07 :-)
lambdabot Consider it noted.
Matt-W ruoso: yeah bit of a stupid thing to try. Now I need to make it work the proper way 13:39
woohoo
pugs_svn r26526 | pmurias++ | [re-smop] native booleans are installed in the lexical prelude as False and True 13:40
Matt-W form passes all tests again 13:41
pmurias ruoso: .shift'ing an capture is an error?
skids_ Captures are immutable
ruoso pmurias, yes... capture is immutable
pugs_svn r26527 | pmurias++ | [re-mildew] fixed test as captures are immutable 13:44
TimToady @messages 13:46
lambdabot perlmonkey said 2d 20h 29m 5s ago: got a chemistry question for you larry
ruoso pmurias, I think we need to get the defaultblocksignature ported...
TimToady @clear
lambdabot Messages cleared.
TimToady (again)
pugs_svn r26528 | pmurias++ | [re-smop] added Package to lexical Prelude 13:47
TimToady it's getting close to time to scrap lambdabot and write our own in p6
pugs_svn r26529 | pmurias++ | [re-mildew] removed excess \n from test
pmurias ruoso: what for?
ruoso pmurias, there's one test failing for missing it
pmurias fixing... 13:48
sbp phenny: tell TimToday that phenny has a messaging service that you don't have to @clear all the time after messages are delivered. good luck getting rid of the @tell reflex amongst #perl6 users though
phenny sbp: I'll pass that on when TimToday is around.
sbp also you need to be able to spell correctly
skids_ heh. 13:49
sbp and I'm vaguely planning on trying to write a perl6 version with Tene 13:50
masak phenny: pleased to meet you. I will use you for @telling next time.
sbp: ah, that's what you'd like the POE clone for. :)
sbp yeah, heh 13:51
to be quite honest, doing it at the socket level wouldn't be so bad
irc is not rocket science
masak
.oO( socket science )
13:52
sbp ehheh
13:52 orafu left, orafu joined
TimToady
.oO(a phenny for your thoughts...)
13:52
frettled heh 13:53
skids_ wonders what the "big file of messages to mispelled usernames" in long running bots looks like. 13:57
13:58 ejs2 joined
literal maybe it gets pruned after a certain time.... 13:58
skids_ maybe...
but considering inebriation is a leading cause of typos, it might actually be amusing. 13:59
masak phenny: tell TomToody *hic*!
phenny masak: I'll pass that on when TomToody is around.
pugs_svn r26530 | szabgab++ | update some of the smartlinks 14:01
sbp on IRC, nobody knows whether you're drunk or just correcting someone's Latin 14:02
pugs_svn r26531 | jnthn++ | [t/spec] Couple of unfudges. 14:04
14:05 ejs1 left 14:06 km2 joined
skids_ what's a good rakudo-centric parrot speed test? 14:09
masak skids_: that's a very general question. 14:11
skids_: what do you want to test the speed of? tight loops, file I/O, arith...?
skids_ Well, I want a general test :-)
masak rakudo: my $t1 = time; sleep(3); my $t2 = time; say $2 - $1 14:12
p6eval rakudo ae5e29: OUTPUT«Use of uninitialized value␤Use of uninitialized value␤0␤»
masak oops "_
skids_ I see a reference to a "rakudo building" test in Parrot svn logs...
masak rakudo: my $t1 = time; sleep(3); my $t2 = time; say $t2 - $t1
p6eval rakudo ae5e29: OUTPUT«3.00701594352722␤»
jnthn skids_: That's just "how long does it take to build Rakudo". 14:13
skids_: Or maybe better is "how long does it take to compile actions.pm"
skids_ Thanks. That might do. Can't use t/ because it's mostly perl5 wrapping and scripting taking time. 14:14
14:15 pmurias left
pugs_svn r26532 | pmurias++ | [re-smop] log10(0) when stringifing 0 isn't a very good idea 14:15
14:16 pmurias joined
pmurias re defaultsignature it's just a matter of changing the signature mildew emits for that block 14:16
ruoso pmurias, but I mean... isn't it better to have a lower-level implementation of that instead of initializing the same signature over and over again? 14:17
pmichaud in addition to "how long to compile actions.pm" we now have "how long to comple gen_setting.pir" 14:19
lambdabot pmichaud: You have 1 new message. '/msg lambdabot @messages' to read it.
pmichaud @messages
lambdabot masak asked 2d 4h 37m 22s ago: no www.pmichaud.com/perl6/rakudo-2009-04.tar.this month?
pmichaud (already answered.)
good morning, #perl6
jnthn morning pm 14:20
14:22 ejs2 left
pmurias ruoso: i try to avoid C+m0ld RIs but writing signatures as mildew AST is also annoying 14:24
masak pmichaud: @clear
ruoso pmurias, I think we don't need to avoid C+m0ld
masak pmichaud: (oh, and good morning)
ruoso pmurias, soon enough it will be easier to write in Perl 6 than in m0ld 14:25
pmurias, and initializing the same signature over and over is probably a bad idea
pmichaud @clear 14:27
lambdabot Messages cleared.
pmichaud masak++
13:47 <TimToady> it's getting close to time to scrap lambdabot and write our own in p6
yes, please.
14:27 LylePerl left
masak anyone contemplating that would be well advised to start by talking to Tene, who is writing a POE clone in Perl 6. 14:29
14:36 payload joined
literal oooh 14:38
has he put any code online? 14:39
masak I don't believe so. 14:40
but poke him when he wakes up, and maybe he will.
rakudo: grammar A { regex TOP { foo } }; A.parse("foo").say; say "bar"; A.parse("foo").print; say "bar" 14:41
p6eval rakudo ae5e29: OUTPUT«foo␤bar␤bar␤»
masak submits rakudobug
pugs_svn r26533 | jnthn++ | [t/spec] Re-fudge some things Rakudo ain't going to handle just yet. 14:42
14:42 frodwith_ is now known as frodwith
pmichaud rakudo: grammar A { regex TOP { foo } }; A.parse("foo").say; say "bar"; A.parse("foo").say; say "bar" 14:43
p6eval rakudo ae5e29: OUTPUT«foo␤bar␤foo␤bar␤»
jnthn std: constant foo = 42; my foo $x; 14:44
p6eval std 26532: OUTPUT«ok 00:02 36m␤»
[particle]- rakudo: grammar A { regex TOP { foo } }; A.parse("foo").print;
p6eval rakudo ae5e29: ( no output )
[particle]- wasn't that easier?
masak std: constant foo = Int; my foo $x;
p6eval std 26532: OUTPUT«ok 00:02 36m␤»
jnthn thinks STDbug 14:45
[particle]- rakudo: grammar A { regex TOP { foo } }; A.parse("foo").print; print "\n";
masak [particle]-: yes, but I didn't know if buffering played into it.
p6eval rakudo ae5e29: OUTPUT«␤»
pmichaud std generally does syntax, not semantics.
masak [particle]-: that last one is easier.
pmichaud at the syntax level, "a name is as good as any other"
jnthn OK, but I'd argue that introducing a typename affects the parse and that they thus shouldn't be confused with things that are not typenames.
masak [particle]-: but I also wanted to show that .say works.
pmichaud introducing a typename affects the parse?
differently than a constant name? 14:46
ruoso jnthn, it doesn't
actually... it depends
jnthn ruoso: it does
my something_undeclared $x; # error
ruoso it doesn't affect the parsing itself
jnthn as in, parse error
pmichaud ruoso: declaring a type definitely modifies the parse of that word later.
arnsholt What ways are there to modify Rakudo's search path? 14:47
jnthn foo ~~ TypeName # parses as a typename
foo ~~ notatypename # parses as a listop
pmichaud here's the specific case
ruoso I mean there is no ambiguity in the parsing caused by that being a type name or not
moritz_ arnsholt: @*INC.push('path')
arnsholt: and you have to do it in a BEGIN { ... } block...
because 'use' happens at compile time
pmichaud say foo 1 # valid
ruoso ok... smart match is an exception... 14:48
pmichaud module foo { }; say foo 1 # syntax error (two terms in a row)
arnsholt moritz_: Thanks
jnthn no, smart match is nothing special in this case
pmichaud declaring a typename causes that name to be no longer treated as a listop
(in parsing)
std: say foo 1; 14:49
p6eval std 26533: OUTPUT«Undeclared routine:␤ foo used at 1 ␤ok 00:02 35m␤»
pmichaud std: module foo { }; say foo 1;
p6eval std 26533: OUTPUT«##### PARSE FAILED #####␤Syntax error (two terms in a row?) at /tmp/iQgaevyYbe line 1:␤------> module foo { }; say foo 1;␤ expecting any of:␤ infix or meta-infix␤ infix stopper␤ standard stopper␤ statement modifier loop␤ terminator␤FAILED 00:02
..35m␤»
ruoso ok...
pmichaud jnthn: my point is that constant foo = 42; just enters foo as a name the same way a type declaration would 14:50
and thus affects the parse in the same way
moritz_ agrees with pmichaud
[particle]- it registers foo as a term
pmichaud correct. 14:51
so it's no longer a bareword listop.
jnthn I'm agreeing it affects the parse. I'm disagreeing that typename should match on it.
pmichaud you're saying we should have separate tables for typenames versus other terms
masak rakudo: grammar A { regex TOP { foo } }; (~A.parse("foo")).print; print "\n"
p6eval rakudo e9f631: OUTPUT«foo␤»
[particle]- the typename match happens during semantic analysis. std doesn't fully do that yet. 14:52
masak that's a workaround.
jnthn pmichaud: Yes.
pmichaud jnthn: I'm thinking .... what particle said
jnthn We have to differentiate them at some point.
pmichaud semantic analysis would work
it can also be a flag on the entry in the symbol table "this is a typename"
jnthn And differentiating them during the parse seems simpler to me.
True, we already do have such a flag. 14:53
TimToady my foo $x is perfectly valid
and would require $x to only be assigned that value 14:54
jnthn TimToady: if foo is a constant?
TimToady yes
pmichaud I wondered about that :-)
TimToady any value is also a type, in that sense
my True $x
jnthn std: my 42 $x;
p6eval std 26533: OUTPUT«##### PARSE FAILED #####␤Malformed my at /tmp/3Mw5nHWln5 line 1:␤------> my 42 $x;␤ expecting scoped declarator␤FAILED 00:02 35m␤»
TimToady but not in that sense :)
[particle]- std: constant five = 5; my $x is five;
p6eval std 26533: OUTPUT«ok 00:02 36m␤»
[particle]- rakudo: constant five = 5; my $x is five; say $x;
14:55 cspencer joined
p6eval rakudo e9f631: OUTPUT«Use of uninitialized value␤␤» 14:55
jnthn Heh, in that case may as well just register it as a type then.
TimToady well, it's a type with a defined value, is all...
14:55 pancake joined
TimToady just like any enum 14:55
pmichaud afk (inspecting trees) 14:56
TimToady enums and constants are indistinguishable
pancake how can i count the elements in a Range?
masak moritz_: ping
pmichaud pancake: .elems ?
pancake is there a way to instrospect in perl6?
pmichaud: i was looking for .elements . ok
jnthn TimToady: constant foo = 42; say foo() == 42 # should this work too?
or just say foo == 42 ?
If just the second, that makes things easier...
TimToady foo() is calling function &foo, not bare 'foo' there
just use bare foo 14:57
jnthn OK, good. I seemed to remember reading somewhere but constant foo introduced a unary sub foo
But I musta been wrong.
urm, nullary
TimToady we have explicitly broken the notion that named values are 0-ary functions
jnthn pl
*ok
pancake is "for(1..3)->$n{say $n}" failing because of its invalid syntax (missing spaces) or it is a bug in rakudo? 14:58
[particle]- missing spaces
TimToady must have spaces
otherwise you're calling a function and subscripting $n
[particle]- rakudo: for(1..3)->$n{say $n}
p6eval rakudo e9f631: OUTPUT«Statement not terminated properly at line 1, near "->$n{say $"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)␤» 14:59
[particle]- rakudo: for (1..3) -> $n {say $n}
p6eval rakudo e9f631: OUTPUT«1␤2␤3␤»
[particle]- rakudo: for 1..3 -> $n {say $n} # no need for parens
p6eval rakudo e9f631: OUTPUT«1␤2␤3␤»
TimToady std: for(1..3)->$n{say $n}
p6eval std 26533: OUTPUT«##### PARSE FAILED #####␤Obsolete use of -> to call a method; in Perl 6 please use . instead at /tmp/iwpFpumIKV line 1:␤------> for(1..3)->$n{say $n}␤FAILED 00:02 35m␤»
TimToady std: for 1..3 ->$n {say $n} 15:00
15:00 Eevee joined
p6eval std 26533: OUTPUT«ok 00:03 42m␤» 15:00
masak rakudo: for (1..3)->$n {say $n}
p6eval rakudo e9f631: OUTPUT«1␤2␤3␤»
TimToady bogus
masak hm, did I report that one already?
masak checks
TimToady std: for (1..3)->$n {say $n}
p6eval std 26533: OUTPUT«##### PARSE FAILED #####␤Obsolete use of -> to call a method; in Perl 6 please use . instead at /tmp/U6rKFMT7BF line 1:␤------> for (1..3)->$n {say $n}␤FAILED 00:02 35m␤»
amoc rakudo: for(1..3) -> $n { say $n }
masak exactly.
p6eval rakudo e9f631: OUTPUT«Statement not terminated properly at line 1, near "-> $n { sa"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)␤» 15:01
TimToady std: for(1..3) -> $n { say $n }
p6eval std 26533: OUTPUT«##### PARSE FAILED #####␤for() interpreted as function call at line 1 ; please use whitespace instead of parens␤Unexpected block in infix position (two terms in a row) at /tmp/zL4jjJsty9 line 1:␤------> for(1..3) -> $n { say $n }␤ expecting any of:␤ infix or
..me...
15:01 orafu left
masak hm, seems I didn't. 15:01
masak submits rakudobug
amoc rakudo: if(1) { say "hey" } 15:02
p6eval rakudo e9f631: OUTPUT«Statement not terminated properly at line 1, near "{ say \"hey"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)␤»
TimToady std: if(1) { say "hey" }
p6eval std 26533: OUTPUT«##### PARSE FAILED #####␤if() interpreted as function call at line 1 ; please use whitespace instead of parens␤Unexpected block in infix position (two terms in a row) at /tmp/ePgBVjtfHv line 1:␤------> if(1) { say "hey" }␤ expecting any of:␤ infix or
..meta-infix␤...
pancake std is for pugs?
TimToady no
it happens to live in the pugs repo though
15:02 orafu joined
TimToady STD.pm is the standard parser written in Perl 6 15:03
std is running a version of that translated to p5
pancake ah ok
15:04 Psyche^ joined 15:15 ejs joined 15:17 hercynium joined
masak what's the difference between .ast and .text on a Match object, really? in my .perl outputs, they are always the same. 15:18
jnthn masak: have you used make anywhere? 15:19
I suspect that's what makes the difference.
masak nope.
ok.
jnthn .ast will return what was set with make.
masak oh, right.
jnthn While .text should always be the matched text.
pmichaud .text is deprecated 15:20
it's now .Str, I think.
masak pmichaud: it's still in .perl
15:20 Patterner left, Psyche^ is now known as Patterner
moritz_ masak: feel free to patch that out 15:21
masak moritz_: will do.
moritz_ but somehow the matched string should appear in Match.perl 15:22
so maybe s/text/Str/
masak moritz_: I'm trying my best to recurse through a tree of Matches, but I'm still only dragging up buckets of frustration.
moritz_: will change s/text/Str/
pmichaud we still have issues with arrays in positionals, yes.
because PGE doesn't return arrays of matches in a form that Rakudo can recognize as being an Array
(that doesn't flatten)
masak moritz_: are there any known cases of successful traversal of a Match tree?
moritz_ masak: yes 15:23
masak moritz_: I was hoping you'd say that.
pmichaud ultimately what I suspect will happen is that ResizablePMCArray in parrot will map to Array in Rakudo, instead of List as it does now.
masak moritz_: well, the hitomi script is poised to be traversed, so if you have the time, please check it out and show me how.
jnthn To the degree that such mapping makes sense, I guess...
(Once Array has-a RPA rather than is-a, not sure how the mapping will work out.) 15:24
moritz_ masak: action methods or recursion?
pmichaud jnthn: in most cases I think that ResizablePMCArrays in Parrot really correspond to arrays in a Perl 6 sense, and not to a List.
masak moritz_: I've done the parse and the action methods. now I want to recurse.
and traverse.
pmichaud and yes, it has to be done after we switch out of the is-a mode.
15:25 pluto joined
masak moritz_: so, the end goal is to go down the tree of nodes, keeping an eye out for attributes prefixed 'pe:' 15:25
jnthn pmichaud: Yes, agree.
pmichaud masak: positional captures might have some difficulties. named captures shouldn't be posing many issues.
masak pmichaud: sounds promising. 15:26
jnthn rakudo: constant Num π = atan(2,2) * 4;
moritz_ masak: you don't need recursion in action methods
p6eval rakudo e9f631: ( no output )
moritz_ masak: but I'll take a look at it tonight
jnthn rakudo: constant Num π = atan(2,2) * 4; say π
p6eval rakudo e9f631: OUTPUT«Could not find non-existent sub atan␤current instr.: 'block_10' pc 102 (EVAL_20:57)␤»
masak moritz_: not sure we're not talking past each other here.
moritz_: action methods aren't enough here.
jnthn rakudo: use Num :trig; constant Num π = atan(2,2) * 4; say π 15:27
masak at least, I cannot see that they are.
p6eval rakudo e9f631: OUTPUT«Could not find non-existent sub atan␤current instr.: 'block_10' pc 152 (EVAL_20:1)␤»
pmichaud jnthn: atan2
jnthn rakudo: use Num :trig; constant Num π = atan2(2,2) * 4; say π
p6eval rakudo e9f631: OUTPUT«Could not find non-existent sub atan2␤current instr.: 'block_10' pc 152 (EVAL_20:1)␤»
pmichaud arggh
jnthn rakudo: use Num :Trig; constant Num π = atan2(2,2) * 4; say π
p6eval rakudo e9f631: OUTPUT«3.14159265358979␤»
jnthn wonders if we should explode on un-known tags.
[particle]- hrmm... 15:28
[particle]- consults S11
jnthn Also, I copy-pasted the atan from S04.
moritz_ masak: so what do your action methods construct?
jnthn Should I patch it to say atan2?
[particle]- aye
TimToady yes
overloaded atan was a fossil
masak moritz_: I haven't changed Tene's code much; they construct XML::Node objects.
[particle]- buubot: spack -w atan 15:29
buubot [particle]-: Sorry, I couldn't find any matches for: -w
masak moritz_: I'm at a loss for how to get at them in an orderly fashion.
[particle]- buubot: spack \batan\b
buubot [particle]-: S04-control.pod:1 S29-functions.pod:2
pugs_svn r26534 | jnthn++ | [spec] s/atan/atan2/ 15:30
moritz_ masak: is that code in a repo somewhere?
masak moritz_: github.com/masak/web/ 15:31
pugs_svn r26535 | szabgab++ | some more smartlinks updated
masak drafts/hitomi
moritz_ masak: ok
masak moritz_: perl6 hitomi < hitomi-example.xml
15:31 mncharity joined
masak moritz_: see, my objective is twofold: one, reproduce most of the content normally.this I can already do by iterating over .chunks and printing the values. two, as soon as I find those special attributes, go into a special mode and print according to other rules. 15:31
after I can consistently do two, we can haz XML templater prototype. 15:32
mncharity random fyi, Yarr! (yet another regex runtime) is again enabled in webkit core. yay. trac.webkit.org/browser/trunk/JavaS...tCore/yarr 15:33
jnthn refactors constant handling a bit and is happy to see that foo == 42 and my foo $x just fall out of the refactor nicely. :-)
15:33 mncharity left
pmichaud jnthn++ 15:33
jnthn wow, Yarr actually JIT-compiles regexes. :-) 15:34
(otoh, PGE just emits PIR, which becoems Parrot bytecode, which can be jitted :-)) 15:35
15:35 kimtaro joined 15:37 ZuLuuuuuu joined
szabgab TimToady, are the X<> tags welcome in the Synopsis ? 15:37
[particle]- X<> tags are valid pod... :) 15:38
TimToady why not?
szabgab I like them and then will add more of them...
[particle]- X<szabgab>++ 15:39
literal which synopsis?
[particle]- all sysopses, i presume.
jnthn In Rakudo, should parsing constant λ = 42; depend on having ICU? 15:40
literal ah
pmichaud yes.
jnthn Ah, OK.
pmichaud otherwise it can't figure out that λ is an alpha.
[particle]- jnthn: it must.
jnthn Right.
Thus why I can't run that here, but it works here on channel with the bot.
[particle]- spack: units 15:44
buubot: spack units
buubot [particle]-: S02-bits.pod:5 S05-regex.pod:1 S11-modules.pod:1 S29-functions.pod:1
arnsholt Does the {*} #=foo trick work in Rakudo, or only in PCT?
pmichaud in Rakudo also.
note that #= requires a space. 15:45
[particle]- *trailing space
arnsholt And that was the bug. 'ta muchly
Tene arnsholt: you use it like this: gist.github.com/102833 15:46
15:46 eternaleye left
literal rakudo: use Num :Trig; constant Num ? = atan2(2,2) * 4; say ? 15:46
pmichaud Okay, I've now moved perl6-examples into github.com/perl6/perl6-examples . Who wants commitbits?
p6eval rakudo e9f631: OUTPUT«Malformed declaration at line 1, near "Num ? = a"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)␤»
literal oops
rakudo: use Num :Trig; constant Num π = atan2(2,2) * 4; say π 15:47
15:47 pjcj joined
p6eval rakudo e9f631: OUTPUT«3.14159265358979␤» 15:47
literal why does this not work on my copy of rakudo?
pmichaud literal: do you have ICU installed?
literal hm, maybe not
nope
literal installs it
masak pmichaud: how's the new roadmap coming along? 15:48
masak is expectant
pmichaud masak: slowly, but I'm gaining on it. I've been fixing bugs.
masak :)
mberends pmichaud: commitbit please :) github.com/mberends
masak pmichaud: I guess we'll see a blog post when it lands. 15:49
pmichaud masak: absolutely.
mberends: added 15:50
arnsholt Hmmm. Speaking of the namespaces and grammar discussion we had earlier, what Tene has done makes sense as well. The XML grammar lives in the module called XML
moritz_ pmichaud: I also want a commitbit
arnsholt There might be other stuff as well that has a claim to the root node though
pmichaud moritz: added
mberends pmichaud: thanks. maybe eric256++ can send you his committers list?
moritz_ pmichaud: thanks
masak commit bit to what? :)
moritz_ masak: perl6/perl6-examples
pmichaud masak: github.com/perl6/perl6-examples
15:50 pluto left
masak yes, please. 15:50
[particle]- hops on bandwagon
pmichaud (migrated from eric256)
masak, particle: added 15:51
15:51 pdc303 left
pmichaud (yay, particle updated his gravatar image :-) 15:51
masak I'll set proto to download perl6-examples from perl6 from now on, if nobody protests.
literal hm, there's no make target to wipe the parrot configuration so it will be rebuilt? (make realclean is not enough)
pmichaud literal: "make realclean" in the parrot directory. 15:52
literal ah, ok
pmichaud yes, if eric256 can send me the committers list, we can add them.
15:53 omega joined, pdc303 joined 15:54 c1sung joined
jnthn rakudo: prompt("] "); say "this shouldn't be printed" 15:54
p6eval rakudo e9f631: OUTPUT«] this shouldn't be printed␤»
jnthn *sigh* I fixed that once. :-S
pmichaud :-) 15:55
I know the feeling :=)
masak tries to find the resolved RT ticket
jnthn masak: It was unresolved, I wrote it was fixed and forgot to resovle it.
Just went to check I really could resolve it now and it's broken again. 15:56
masak jnthn: how convenient. :)
moritz_ jnthn: note that p6eval pipes an empty string to STDIN
jnthn oh, curious
moritz_: aha
moritz_: Yeah, locally it works.
.get when called the first time gets taht empty string I guess.
rakudo: prompt("] "); prompt("] "); say "this shouldn't be printed" 15:57
p6eval rakudo e9f631: OUTPUT«] ] this shouldn't be printed␤»
jnthn heh
pmichaud why shouldn't it?
jnthn locally it pauses there.
pmichaud: It should.
pmichaud I mean, why shouldn't the string be printed when run from p6eval ?
masak jnthn: if it pauses locally, it's probably fixed.
jnthn I'm a tad confused why for the second time it prints the prompt and thinks it can read.
masak: Yeah.
pmichaud because it gets eof ? 15:58
jnthn masak: Before, it didn't pause locally.
masak jnthn: moritz_ has said not to trust p6eval and IO.
jnthn Consensus? Close the ticket?
masak jnthn: I say resolve.
pmichaud p6eval isn't going to pause at that point
it's going to see EOF on STDIN and return Nil
15:58 ejs left
pmichaud and continue executing. 15:58
masak pmichaud++
pmichaud anyway, if it works locally, I say resolve. 15:59
jnthn resolved, with note added about p6eval
pmichaud jnthn++
pugs_svn r26536 | szabgab++ | add X<> collector to the smartlink processor
masak maybe we should default to piping the national anthem of Austria into p6eval, so it has something to read.
moritz_ masak: patches welcome :-) 16:00
jnthn What have you got about Austria? :-)
(Not that it isn't a beautiful country, but... :-))
moritz_ though Lore Ipsum might be self explanatory
masak jnthn: see? already a lot in common with Perl 6 :)
jnthn ;-) 16:01
literal hm, sial.org/pbot/36256
16:01 FurnaceBoy joined 16:02 |Jedai| is now known as Jedai
moritz_ literal: there's a bug with -e and unicode 16:02
szabgab a first shot at reusing the X<> tags: perlcabal.org/syn/x.html
literal oh
szabgab: nice 16:03
16:03 payload left
pugs_svn r26537 | pmichaud++ | [perl6-projects]: Add link to perl6-examples on github. 16:03
16:05 awwaiid joined 16:06 justatheory joined
pugs_svn r26538 | jnthn++ | [t/spec] Tests that constants are lexically scoped and that they can be used as type constraints. 16:09
r26539 | szabgab++ | smartlinks: remove unused code
r26540 | pmichaud++ | [perl6-projects.org]: Forgot a closing </li> tag (pmichaud--) 16:10
jnthn html fail
literal has there been any interested expressed for docstrings in Perl 6?
moritz_ literal: yes 16:11
pmichaud there's a "perl6examples:" target on #perl6 ? 16:12
i.e., to add collaborators?
literal they sound interesting but I don't know exactly how they're used, I haven't used Python, for example
moritz_ pmichaud: I think you can just make all the people administrators, then they can hand out commit bits
pmichaud that's fine with me, yes. 16:13
literal I can see how docstrings would be useful in a REPL
Tene I can't figure out how to make someone an admin on github.
pmichaud there is that. I'm wondering how the perl6examples target did it. 16:14
literal but maybe something similar could be accomplished by tying Pod paragraphs to methods/subs/etc
moritz_ pmichaud: what do you mean by "target"? 16:15
literal: yes, that's the "plan", but it depends on S26
16:16 braceta joined
pmichaud according to the readme in perl6-examples, one can do "perl6examples: add <username>" to add a collaborator to the perl6-examples repo (in eric256's account) 16:16
perl6examples: add pmichaud 16:17
...but I'm guessing it's not active/working.
16:17 masak left
pmichaud that's okay, I think we can manage it manually for a while. 16:17
16:17 eMaX joined
eMaX hi 16:17
Tene Hi, eMaX! 16:18
eMaX Hi Tene
I just read an old interview with Audrey Tang and thought I should tune into #Perl6 regularly 16:19
pmichaud eMaX: Yes, you should. :-)
moritz_ though sadly audreyt isn't around anymore :(
16:20 FurnaceBoy left
eMaX moritz_, what has happened? I read she's very sick and wasn't able to find out anything 16:20
moritz_ eMaX: she got hepatitis, and her doctors told her to have less stress in her live 16:21
pmichaud afk, lunch 16:22
eMaX ok so she's still alive at least. But anyway that's sad to hear that someone, particularly so precious, has to drop out. but anyway, health comes first.
moritz_ aye
TimToady nevertheless, we're still making good progress
moritz_ she still does some hacking, but not so pulicly as before
s/so/as/ 16:23
eric256 pmichaud: yea i don't think that bot is working atm 16:24
eMaX ok. Well I recently read an article that Perl6 "is coming" - I'm not a real perl programmer (so was I told when I quit smoking, a colleague insisted that every real programmer has to smoke - Camel) - but what I have heard about the object oriented improvements in Perl6 makes me very interested.
moritz_ TimToady: can I assume that Camelia is Artistic 2, as most of the pugs repo? 16:25
TimToady yes
moritz_ thanks
16:25 cspencer left
eMaX but anyway I'll just step back and try things out. 16:25
16:25 cspencer joined
pugs_svn r26541 | szabgab++ | some improvement (?) in indeX<>ing 16:25
cspencer hello all
TimToady eMaX: OO is one of the dimensions in which we're trying to be disruptive technology...
so have the appropriate amount of fun 16:26
pugs_svn r26542 | szabgab++ | add some X<>-es to the docs
eMaX tnx
TimToady OO is actually one of the places where rakudo is leading the other implementations, I think
eric256 i just added pmichaud and moritz
anyone else want a commit bit on perl6-examples 16:27
moritz_ ... except perhaps for smop, but since it's hard to run code on smop right now I can't tell :-)
it's surely leading on regexes
jnthn smop has done some nice work on nailing down the underlying metamodel stuff.
eMaX lots of the code I write on customer projects is in Perl - basically for scripting - and I wonder whether I'll be able to write a new "Perl6" Style so that it can run in their Perl5 environment.
jnthn Rakudo has already borrowed - and will borrow more - from that. 16:28
TimToady up to a point; we can currently translate a subset of p6 back to p5; that's how STD works
but p5 as an engine isn't really up to supporting all of p6 semantics 16:29
jnthn eric256: I'm happy to have a commit bit while you're on it. :-)
TimToady that's part of the smop project's intentions
eric256 jnthn: done ;)
eMaX any how2 somewhere how to get up and running a perl6 environment so that I can run it side by side?
ok found smop
TimToady see instructions on rakudo.org for how to get going on that 16:30
eric256 anyother takers?
TimToady or you can play with the online bots here
jnthn gives moritz++ a couple of tickets that will need spectests
TimToady perl6: say "Hi eMax"
p6eval elf 26542, pugs, rakudo 82ca8d: OUTPUT«Hi eMax␤»
eMaX :) 16:31
TimToady note that smop isn't one of those yet
they've been concentrating on the underpinnings
not the user interface
eMaX Ok I'm going to have the appropriate amount of fun:)
TimToady to try out syntax, you can also use std
std: for 1..10 -> { frob } 16:32
p6eval std 26542: OUTPUT«Undeclared routine:␤ frob used at 1 ␤ok 00:02 35m␤»
TimToady but it's just a parser, so far
std: for(1..10) -> { frob }
p6eval std 26542: OUTPUT«##### PARSE FAILED #####␤for() interpreted as function call at line 1 ; please use whitespace instead of parens␤Unexpected block in infix position (two terms in a row) at /tmp/WRnnMzUu3y line 1:␤------> for(1..10) -> { frob }␤ expecting any of:␤ infix or
..meta-inf...
TimToady errands & 16:33
ruoso TimToady, although say "Hello" is something that smop+mildew does run ;)
mildew: say "Hello!"
p6eval mildew: OUTPUT«Bareword found where operator expected at perl6-snapshot/STD.pm line 4, near "$LANG is"␤ (Missing operator before is?)␤Bareword found where operator expected at perl6-snapshot/STD.pm line 5, near "$PKGDECL is"␤ (Missing operator before is?)␤Bareword found where operator expected
.....
ruoso moritz_, it's missing a make in the mildew directory 16:34
16:40 ispy_ left, ispy_ joined
eMaX re 16:42
Hmm. While changing trains, parrot refused to build. nopaste.org/p/aN725CP9bb
ah 16:43
[particle]- you need to install subversion 16:48
16:51 awarefish left, awarefish joined
eMaX saw it sorry for not noting one should probably not do things on a train station :=) 16:52
moritz_ mildew: say 'Hello'
p6eval mildew: OUTPUT«Bareword found where operator expected at perl6-snapshot/STD.pm line 4, near "$LANG is"␤ (Missing operator before is?)␤Bareword found where operator expected at perl6-snapshot/STD.pm line 5, near "$PKGDECL is"␤ (Missing operator before is?)␤Bareword found where operator expected
.....
16:53 alanhaggai left
moritz_ ruoso: it's not so easy... some haskell stuff missing during build... 16:53
16:54 perl6-examples joined
perl6-examples perl6-examples: 3Eric Hodges 07master0 SHA1-0cad360 16:54
Adding some perl6 examples from perlmonks
bit.ly/irfwv
perl6-examples: 3Eric Hodges 07master0 SHA1-3b9a0df
Creating 99 Problems directory and including some solutions.
bit.ly/dLWmn 16:55
16:55 perl6-examples left
eric256 opps ..sorry that was a bit loud.... stupid github bot 16:55
moritz_ thinks that's fine
16:56 zamolxes joined
[particle]- eric256: bit me 16:56
jnthn btw, it seems we are missing reporting (from dalek) of rakudo commits? 16:57
16:58 m-i-l-a-n left, payload joined
moritz_ jnthn: aze. I just complained to Infinoid on #parrot 16:59
s/z/y/ # (switching keyyboard layouts)-- 17:00
[particle]- bit as in commitbit btw
jnthn rakudo: class A { }; subset B of A where 1; 17:06
p6eval rakudo b105f4: OUTPUT«Null PMC access in get_string()␤current instr.: '!CREATE_SUBSET_TYPE' pc 19200 (src/builtins/guts.pir:235)␤»
jnthn rakudo: role A { }; subset B of A where 1;
p6eval rakudo b105f4: OUTPUT«Null PMC access in getprop()␤current instr.: '!CREATE_SUBSET_TYPE' pc 19180 (src/builtins/guts.pir:227)␤»
17:06 abra joined 17:07 aindilis left, aindilis joined, alester joined
moritz_ ruoso: it seems I can't fix the mildew compilation easily... but I can give you access to that server so you can try it yourself if you want 17:09
17:15 ispy_1 joined
moritz_ my $x = do { { $/.perl.say } }; 'a' ~~ /a/ && $x.(); 17:15
rakudo: my $x = do { { $/.perl.say } }; 'a' ~~ /a/ && $x.(); 17:16
p6eval rakudo b105f4: OUTPUT«undef␤invoke() not implemented in class 'Integer'␤current instr.: '_block14' pc 126 (EVAL_21:59)␤»
moritz_ should that work?
17:16 braceta left
arnsholt Is there a reduce operator that lets you call an arbitrary method on the elements in a list/array? 17:20
moritz_ rakudo: say (1..6).reduce: { $^a + $^b }
p6eval rakudo b105f4: OUTPUT«21␤»
moritz_ rakudo: my $x = do { { $^a.perl.say } }; 'a' ~~ /a/ && $x.($/); 17:21
p6eval rakudo b105f4: OUTPUT«too few arguments passed (0) - 1 params expected␤current instr.: '_block27' pc 217 (EVAL_21:103)␤»
arnsholt As a method on the list object, of course. Retrospect strikes again
moritz_ I don't understand
do you want to call a method on each array item? 17:22
or reduce something?
or both?
rakudo: my $x = { $^a.perl.say }; 'a' ~~ /a/ && $x.($/);
p6eval rakudo b105f4: OUTPUT«Match.new(␤ # WARNING: this is not working perl code␤ # and for debugging purposes only␤ ast => "a",␤ text => "a",␤ from => 0,␤ to => 1,␤)␤» 17:23
17:23 ZuLuuuuuu left
arnsholt moritz_: Never mind. I crossed some wires in my brain 17:23
eMaX hmm. Why do I keep seeing ␤ like a box with 24 17:25
arnsholt It's not 2 and for, it's capital N and capital L, for "newline"
moritz_ ... unless your font doesn't support it
arnsholt Er, s/for/4/ I've no idea why I wrote that
eMaX r8 17:27
er
right
17:27 Jedai left
eMaX hmm. rakudo built as it seems and the tests passed. 17:27
moritz_ literal: in perl6.vim quotes in char classes still look for a closing quote 17:30
eMaX I wonder whether perl6 as a binary is sufficient for reasonable programming - like /usr/bin/perl6 - I'd expect all sorts of modules to also be needed. or does it consume the perl5 modules? 17:31
moritz_ it needs modules.
literal moritz_: hm, I'll look into tha
t
17:32 ispy_ left
literal moritz_: does it only happen with <-[]> classes? if so, then I fixed that recently 17:33
moritz_ literal: seems like... 17:34
literal: we need a perl6.vim feed bot ;-)
literal++ 17:35
I've just pulled, it now works perfectly
17:35 riffraff left
pugs_svn r26543 | ron++ | documented some tests and added some tests for RT #53814 17:37
17:39 hercynium left
ruoso moritz_, better see that with pmurias... he's the one that undesrtands haskell 17:42
;)
moritz_ ruoso: he already has root acess on that server 17:43
ruoso ah... cool
pmurias, any chance on getting the mildew evalbot up?
17:45 awarefish left
eric256 particle: added 17:50
17:51 jan_ left
pmichaud eric256: I had made a copy/migration of perl6-examples into the perl6 github account 17:52
do we want to maintain two separate repos, or ... ?
or perhaps there's a way that I can get the perl6 repo to automatically track the eric256 one...? 17:53
17:54 eMaX_ joined
moritz_ pmichaud: make() doesn't seem to look in its caller for $/ 17:54
eMaX_ re
moritz_, ok I compiled perl6 according to rakudo.org. Modules are not found - nopaste.org/p/ai4EU12rqb - is there some walkthrough how to get to a more working environment?
moritz_ pmichaud: so calling make from a block fails 17:55
17:55 jan_ joined
pmichaud moritz_: example? 17:55
moritz_ eMaX_: well, I don't think there's such a module yet
pmichaud eMaX_: rakudo doesn't make use of perl 5 modules.
at least ,not yet.
moritz_ rakudo: grammar A { token TOP { .* {*} } }; class B { my $x = { make 3 } }; A.parse('foo', :action(B.new)).ast.perl.say 17:56
eMaX_ ok then. Hmm. At least that motivates to do things oneself :)
p6eval rakudo b105f4: OUTPUT«"foo"␤»
moritz_ rakudo: grammar A { token TOP { .* {*} } }; class B { my $x = { make 3 }; method TOP($/) { $x() } }; A.parse('foo', :action(B.new)).ast.perl.say
p6eval rakudo b105f4: OUTPUT«Method '!make' not found for invocant of class 'Failure'␤current instr.: 'make' pc 22031 (src/builtins/match.pir:40)␤»
moritz_ pmichaud: that's it
pmichaud moritz: .... but the $/ that is in scope when make is called isn't the one from TOP 17:57
{ make 3 } has its own $/ 17:58
17:58 pancake left
moritz_ pmichaud: shouldn't the $/ of that block be OUTER::$/? 17:58
pmichaud yes, it is.
OUTER::$/, not CALLER::$/
moritz_ ah
pmichaud however 17:59
eMaX_ moritz_, ok thanks I think I've got all that I need to get me going. particularly, your blog :)
pmichaud rakudo: grammar A { token TOP { .* {*} } }; class B { my $x = { make 3 }; method TOP($/) { $x($/) } }; A.parse('foo', :action(B.new)).ast.perl.say
p6eval rakudo b105f4: OUTPUT«Method '!make' not found for invocant of class 'Failure'␤current instr.: 'make' pc 22031 (src/builtins/match.pir:40)␤»
pmichaud hmm.
moritz_ that binds $/ to $_
not to $/
pmichaud oh, yeah.
rakudo: grammar A { token TOP { .* {*} } }; class B { my $x = -> $/ { make 3 }; method TOP($/) { $x($/) } }; A.parse('foo', :action(B.new)).ast.perl.say 18:01
p6eval rakudo b105f4: OUTPUT«3␤»
moritz_ nice
I still find the behaviour a bit unintuitive, but I think I can work with that
pmichaud when 'lift' is implemented in Rakudo, one might be able to solve it with that. 18:02
I still need to review the details of 'lift'
18:02 PhatEddy joined 18:05 amoc left
moritz_ does 'make' also return from the current method? 18:07
pmichaud no, it doesn't do a return exception.
it simply sets the .ast value on $/ .
18:07 azawawi joined
moritz_ can I say 'make $stuff; return', or will that return interfere somehow? 18:07
18:07 Jedai joined, cognominal left
azawawi pmurias: ping 18:08
moritz_ I guess I'll just try ;-)
18:08 cognominal joined
pmichaud moritz: you mean in a different closure? 18:08
moritz_ pmichaud: no, in the same
pmichaud inside of an action method, you can certainly do make $stuff; return; 18:09
eMaX_ where does the runtime/ directory need to be for a working perl6 install? I've copied perl6 to /usr/bin and created /usr/lib/perl6 and added the files from blib/lib there and added /usr/lib/perl6 to LD_LIBRARY_PATH. Now if I don't have the runtime directory as subdirectory to cwd, apparently I get problems like PCT.pbc cannot be found
pmichaud eMaX_: the perl6 binary depends on the original build tree
we plan to fix that at some point, but we're a little limited in what we can do with parrot.
eMaX_ pmichaud, so that means for testing I need the runtime directory in my working directory? 18:10
seems even a symlink suffices
azawawi @tell pmurias i managed to get mildew/smop to work finally but the build process is not straightforward and a lot of things need to be installed along the way.
lambdabot Consider it noted.
pmichaud eMaX_: I'm not sure where Parrot currently expects to find the .pbc files
pugs_svn r26544 | jnthn++ | [t/spec] Tests for subtypes based on classes and roles.
pmichaud current "best practice" is to leave the build tree in place.
eMaX_ ok would be great if that was in some env variable
pmichaud eMaX_: sure; again, I'm not sure what Parrot's current status for that is. 18:11
eMaX_ ok thanks
moritz_ eMaX_: I leave the binary in the build tree, and symlink it from somwhere in $PATH
PhatEddy If I come across a ticket that looks mergeable (or closeable) and want to reply suggesting the merge, should I cc the list? Does it matter? 18:13
pmichaud PhatEddy: whatever you think seems most reasonable.
PhatEddy: I think I might be able to give you merge/close permissions, if you want.
eMaX_ brb / changing trains
18:14 barney joined 18:15 eMaX left
PhatEddy pmichaud: thanks for the offer but I think I'll take a rain check until my current guesses seem to be validated :). 18:15
moritz_ PhatEddy: cc'ing the list is not necessary - replies to tickets automatically go to p6c 18:16
PhatEddy I think there's a link I've been pressing to request that cc though ... 18:17
pmichaud when replying via the web interface, I think one has to explicitly request the cc
moritz_ there's "reply" and "comment on"
I think that "comment on" needs it
pmichaud there's also "Click here to toggle cc of [email@hidden.address] 18:18
ruoso azawawi, yes... the build process is quite sad... but that is hopefully being solved with re-smop
where we will be able to make some things optional
18:22 LylePerl joined 18:23 zamolxes left
eMaX_ moritz_, thanks, that worked. Had to rebuild as the build path is apparently encoded, but now that approach works fine. 18:26
azawawi ruoso: ok i managed finally to really get it mildew/smop to work... i think so... how can i run a perl 6 script over it? what are the arguments? 18:28
ruoso perl mildew file.pl
azawawi ruoso: i get segmentation fault over a simple say "Hello world"... any ideas? 18:30
ruoso hmm...
try rebuilding the CORE
rm CORE/*.so
make CORE
eMaX_ moritz_, following your blog, I try my @array = 1, 2, 3; say "@array[1]"; it does not output 2, but @array[1] unless not quoted. 18:31
TimToady I think rakudo doesn't implement 18:32
array interpolation with trailing [] yet
you can put {@array[1]} currently
eMaX_ ok tnx
moritz_ eMaX_: that blog tries to tech Perl 6 (as it was specified when I wrote it), not just the subset that Rakudo implements 18:33
eMaX_ moritz_, ok thanks. What Tim suggested, works.
18:34 azawawi_vm joined
eMaX_ wow. that language is so much nicer now :) 18:35
pasteling "azawawi_vm" at 212.38.137.139 pasted "mildew make" (72 lines, 4.7K) at sial.org/pbot/36258 18:37
18:37 hercynium joined
azawawi_vm ruoso: still doesnt work; plz check out the link above... 18:38
ruoso azawawi_vm, do you have a debugger enabled? 18:41
installed, actually
18:44 ejs joined 18:45 orafu left, orafu joined
azawawi_vm ruoso: debugger as in perl debugger or gdb? :) 18:47
ruoso gdb
azawawi_vm ruoso: yes, im in it... what should i do? 18:48
ruoso ok... first...
perl mildew -o/tmp/foo test.p6
then
LD_LIBRARY_PATH=../smop/build/:CORE/ gdb /tmp/foo
eMaX_ ok thanks for the nice kickstart and have a nice evening
azawawi_vm ruoso: and? 18:50
ruoso inside gdb, go "r"
18:51 cspencer_ joined
pasteling "azawawi_vm" at 212.38.137.139 pasted "gdb output" (9 lines, 251B) at sial.org/pbot/36259 18:52
ruoso "bt" 18:53
18:53 schmalbe joined, cspencer left
ruoso azawawi_vm, use "bt" to get the backtrace 18:53
pasteling "azawawi_vm" at 212.38.137.139 pasted "gdb bt output" (9 lines, 482B) at sial.org/pbot/36260 18:54
moritz_ pmichaud: nopaste.snit.ch/16420 - my current regexes + action methods woes written down
ruoso azawawi_vm, hmmm... did you made any customization in the course of getting it to build? 18:57
pmichaud moritz_: okay, I'll look at it right after #ps
moritz_ pmichaud: great 18:58
azawawi_vm ruoso: using kubuntu 9.04; no customizations but gimme5/tryfile needed /usr/local/bin/perl and i have /usr/bin/perl
ruoso azawawi_vm, hmm... 18:59
eric256 pmichaud: about the repo i'm not sure.... advantages to keeping it seperate are seperate lists of committers, but that is only an advantage if the policy is different, if everyone can get a commit bit on either then we should standardize into one location i think. but is the rakudo repo the right place for implementation agnostic examples? 19:01
ruoso azawawi_vm, does "make test" in smop works?
eric256 pmichaud: i'm not realy for or agianst, just makeing the points. another advantage of moving it is that i'm lazy and it would remove me as a block on it ;)
pmichaud eric256: note that it's not the rakudo repo 19:02
it's a separate "perl6" repo
github.com/perl6/perl6-examples
and yes, my intent is that commit bits will be liberally given
azawawi_vm ruoso: let me check it on feather...
eric256 so..whats going to go in it? 19:03
well then i realy don't mind, but i have no idea how to *move* a repo on github
pmichaud eric: I already moved it :-)
"move" is essentially "clone and point everyone to the new location"
19:04 ZuLuuuuuu joined
ruoso azawawi_vm, hmmm... i rebuilt mildew and it started breaking here... 19:04
eric256 so i could delete mine then clone yours, and mine would point to yours?
mm
pmichaud yes, I believe so.
19:04 abra left
pmichaud you could rename yours to begin with if you didn't want to commit to a delete 19:04
eric256 pictures new cpan growing up on github/perl6 ;)
19:05 eMaX_ left 19:06 cognominal left 19:07 cognominal joined
mberends pmichaud: we'll have to deal with granularity soon. perl6-examples contains many modules, more than any single user needs. 19:08
ruoso azawawi_vm, we're getting really close to finish the smop and mildew refactoring... so I'm not really able to get to the old code to see what's the problem...
pmichaud mberends: I'm not at all opposed to creating separate repos within the perl6 accoutn.
19:08 barney left
pmichaud *account 19:08
s/separate/additional/ 19:09
mberends ok :)
azawawi_vm ruoso: anyway i will add Perl 6 Padre plugin run script support for mildew tomorrow... i think i need only to refactor the run script to have command and command arguments. I was hoping to make the user select from a Perl 6 implementation (mildew/rakudo/...)... 19:10
ruoso azawawi_vm, well... maybe pmurias is able to solve it fast... but the refactoring is really close to an end... 19:11
azawawi_vm logs off his linux vm pet :)
[particle]- does git support sparse checkouts?
pmichaud [particle]-: I'm not aware of them. Git likes to clone entire repos.
Fortunately it does it quickly.
[particle]- yeah, which doesn't scale
19:12 orafu left, orafu joined
pmichaud [particle]-: that's why I'm okay with creating many repos :-) 19:12
mberends pmichaud: will you be prepared to consider adding :ver() and :auth() to 'use XYZ;' soon? I'm trying to boil down the filesystem and configuration options that would fit all OS'es.
moritz_ if you don't want history, you can rm -rf .git; git init .d
s/\.d/./
git add *
git commit -am 'initial checkin# 19:13
pmichaud mberends: if you want to add the ability to parse :ver() and :auth(), no problem.
Tene and :from
pmichaud If you want them to do something reasonable (like select only a specific library from a set), then we're going to need some design work
19:13 azawawi_vm left
pmichaud given the other tasks on our list, it's not something I see likely before August. (But shortly after August it's much more likely.) 19:14
First we have to refactor quite a few things so that use statements do lexical imports instead of package-scoped ones.
Tene if we get :from parsed, I'll add the bits to load foreign libraries.
azawawi ruoso: thx for helping me out. How many spec tests was mildew passing before?
Tene well, foreign libraries that don't have their own PMCs.
s/libraries/languages/ 19:15
pmichaud Tene: okay, but I have some very specific ideas about how I want that to happen (per my message on load_language on parrot-dev)
Tene pmichaud: Yes, I agree. That's exactly how I want to do it.
ruoso azawawi, well... it still didn't support "use" statement, so only a few sanity tests passed... but you can see the features supported in the t directory
Tene It seems more important to me to get rakudo into a .HLL first, though, and I can't do that. I didn't get very far in my last attempt. I started running into nasty segfaults. 19:16
ruoso azawawi, mildew is concept-oriented development... I mean... if we support something, it is made to support as Perl 6 really specs it... no shortcuts taken to make it pass in the tests
Tene stack overflow, and then gdb segfaulting when it tries to walk down 280k stack frames.
etc.
pmichaud I agree, getting Rakudo into a .HLL is a somewhat higher priority
Tene So I couldn't even get it into a point demonstrating the PMC issues for allison to look at.
azawawi ruoso: cool 19:17
pmichaud Tene: my suggestion would be to build a simple language that uses some of Rakudo's PMCs
I suspect some of the issues may be in the fact that Rakudo has its own PMCs
Tene Hm. That could work.
pmichaud (i.e., port Rakudo's PMC into the simple language) 19:18
azawawi ./goodnight * &
pmichaud afaik, we don't have a good example (other than Rakudo and partcl) of languages that have custom PMCs
Tene pmichaud: nopaste.snit.ch/16422 19:20
jnthn Tene: I'm guessing it's blowing up while trying to create the PMCProxy for one of the dynpmcs.
Tene ... oh, nm, that fails anyway without the .HLL
it's not finding the .so 19:21
jnthn Tene: Perl6Hash isn't a PMC
Tene: Try Perl6MultiSub
pmichaud or ObjectRef, or Perl6Scalar
Tene jnthn: what is src/pmc/perl6hash.pmc ?
19:21 azawawi left
pmichaud Tene: obsolete, I bet. 19:21
jnthn Aye, I didn't know that one existed...
Tene Ah.
pmichaud Tene: I don't think that's compiled anywhere.
we should get rid of it if it's not actively being used, that's for sure. 19:22
Tene Ah, yes, that does work.
Even in the .HLL 19:23
So, nm on that.
jnthn: gdb tells me that it's trying to create a Hash
lemme show you... 19:24
moritz_ pmichaud: I've delete it locally, and now try to build + spectest if it still works
pmichaud I'm curious if perl6hash even appears in the Makefile 19:25
I suspect it doesn't.
Tene doesn't 19:26
should we rm it?
moritz_ does that
pmichaud yes, rm it.
moritz_ it builds without it 19:27
Tene waits for gdb
cspencer_ what would cause a "Non-zero wait status: 10" error from a spec test, even though all tests pass?
Tene jnthn: check out nopaste.snit.ch/16423
moritz_ cspencer_: wait status = exit status, I think
Tene look at the strstart = 0x7ffff786f920 "Hash" 19:28
pmichaud Perl6Hash isa Hash, if that helps at all.
19:29 cspencer_ is now known as cspencer
pmichaud Tene: what's the code that produced that segfault? 19:29
Tene pmichaud: rakudo, in the 'hll' branch
jnthn Tene: looking
literal Tene: I've been told you're writing a POE clone in Perl 6
Tene literal: yeah. Lemme push to github for you
literal did you base it on the old POE clone in the pugs repo?
Tene literal: a little bit. 19:30
literal ok
jnthn Tene: OK, I am guessing from this, that when in the Perl6 HLL we try to get the PMCProxy for the Parrot Hash PMC, we fail.
Tene I think I copied from it and then edited heavily.
jnthn Tene: Perhaps we're looking it up in one place but then sticking it in a different one...
pmichaud there are a few places where Rakudo is storing things in namespaces that it shouldn't be. 19:31
or expecting to find things (e.g. methods) in namespaces.
cspencer moritz_: ah yes, it was a "#?rakudo todo" that was dying in an eval block 19:32
19:32 ejs left
Tene literal: pushed to github.com/tene/Doten/tree/master but still waiting on github to notice 19:34
cspencer rakudo: (0,1)[ * .. * ]
p6eval rakudo b9c034: OUTPUT«Multiple Dispatch: No suitable candidate found for 'cmp', with signature 'PP->I'␤current instr.: 'parrot;Range;!to_test' pc 10695 (src/classes/Range.pir:250)␤»
19:34 ejs joined
Tene literal: there, it's up now 19:34
literal: why are you asking about it?
jnthn Tene: Maybe out of curiosity just try running this under .HLL 'Perl6' 19:35
loadlib 'P6Object.pbc' # something like this
p6meta = get_hll_global ['Perl6Object'], '$!P6META'
mappingproto = p6meta.'new_class'('Mapping', 'parent'=>'Hash')
Tene loadlib a pbc?
jnthn erm, damm
load_bytecode
well, the comment was accurate ;-)
check the name too :-)
I don't think you'll need to load any dynpmcs or perl6.pbc to try this anyway. 19:36
Just p6object
If that works, it eliminates one possibility.
(say mappingproto should report Mapping if it's successful)
Tene jnthn: don't I also need the :init of Object.pir ?
jnthn perhaps 19:37
Tene: Yes
literal Tene: curiosity, since I maintain some POE-related modules :P 19:38
Tene jnthn: it works, when i replace 'Hash' with 'parrot;Hash', as I did in the branch
jnthn: so that's not the problem.
jnthn: btw, it compiles perl6_s1.pbc just fine. It just dies when trying to *run* it. 19:39
jnthn Tene: Have you tried running it with --trace to see where we end up failing? 19:40
Tene I can do that.
jnthn --trace=4 might give a reasonably sized output.
(just what subs we call)
Tene # current instr.: '' pc 0 (perl6.pir:14)
Segmentation fault
... load_bytecode 'PCT.pbc' ??? 19:41
the very first thing we do?
19:43 ejs left
moritz_ rakudo: my @m = <elems perl>; say <a b>.@m 19:53
p6eval rakudo ab7f97: OUTPUT«invoke() not implemented in class 'ResizablePMCArray'␤current instr.: '_block14' pc 122 (EVAL_20:56)␤»
19:55 orafu left, orafu joined 20:01 DemoFreak left 20:02 hercynium left
skids_ Interesting Rakudo/Parrot trivia: between 20 and 60 percent of arguments to Parrot_str_equal/compare are 5 characters long. Generally more the longer a program is. 20:03
about 25% of arguments reach these functions without a cached hash value 20:04
There are pretty reliably no hash collisions between different strings, 20:05
and only a very small fraction (<1%) of comparisons have to look at the string (as it should be.)
20:06 schmalbe left
jnthn Just stuck in some stuff that improves error messages for type check failures, etc. 20:07
Matt-W hurrah!
jnthn masak++ for nudging me to do it.
meppl good night
20:08 meppl left
jnthn -> dinner, bbiab 20:09
20:11 DemoFreak joined 20:12 barney joined 20:16 barney left
skids_ oops amend that, about 2.5% of comparisons deeply inspect string operands -- digit fell off the side of the screen :-) 20:18
(when operands are equal) 20:23
pmichaud moritz_: ping 20:24
pugs_svn r26545 | ruoso++ | [re-smop] the ri language now supports a %has directive that provides extra help with initialization and destruction. It also defines the type of the container. 20:31
r26545 | ruoso++ | [re-smop] first part of p6opaque ported, Im making it splitted in different files... for now the prototype storage (how, who, isa, does, attributes, methods...) is ported... now we miss the default how (which only provides item context for a recently created p6opaque) and the
..p6opaque itself. We are probably going to need yet another construct to make it easier to delegate methods to some attr of the struct
20:31 jhorwitz_ left
ruoso pmurias, take a look at this last commit... specially tools/ri and p6opaque/src/p6opaque_proto.ri 20:31
20:33 ispy_ joined 20:37 ispy_ left 20:39 kidd_ left, kidd joined
eric256 finaly goes back in the irc log....sorry pmichaud i missed that you had already moved it ;) /me will catch up eventualy 20:41
eric256 breaks eric256/perl6-examples with a little regret ;) 20:42
its sitting at github.com/eric256/perl6-examples-moved-to-perl6 for the time beign 20:43
being
20:43 ruoso left
eric256 so now is it better to git the clone of that and work/commit there....or put a branch in my own github account, work there and push to that, then from that to perl6? this git/fork/clone thing is still a bit cloudy 20:45
pmichaud eric256: I don't quite know the answer to that. Whatever works best for you.
For some people, local branches and then pulling to the perl6 repo might work best. 20:46
For others, pushing directly to the perl6 repo might work best.
20:49 alester left, ispy_1 left
jnthn back from dinner 20:55
Tene hi jnthn 20:56
jnthn Tene: hi
So you were finding it was failing on load_bytecode of PCT.pbc?
Tene that's what it looked like
jnthn Does a plain file doing that with .HLL 'Perl6' 20:57
also cause the same thing?
20:57 keta joined
Tene No. 20:57
20:57 cspencer left
jnthn Tene: OK. Best is maybe to start by adding in the other things that are done before that. 20:59
.loadlib 'perl6_group'
.loadlib 'perl6_ops'
Also .include 'src/pctextensions/state.pir'
After those though, you're onto .include 'src/gen_builtins.pir' - if it's in there, that's going to be trickier.
pmichaud fwiw, that entire sequence really wants reordering. 21:00
Tene It has been reordered in the branch
pmichaud oh. There's another reording that needs to be done also, to get Perl6::Grammar to properly be a subclass of Grammar. 21:01
Tene jnthn: you could 'git checkout origin/hll' and try it yourself
jnthn Tene: Building that. 21:02
keta hello, it's my first time on irc, so please excuse all mistakes i will do
a question regarding rakudo:
jnthn Tene: I got
Note: moving to "origin/hll" which isn't a local branch
Tene right
jnthn Does that matter?
keta class Test { has @.foo; method bar {say @.foo.perl} } 21:03
this works:
Tene to make a local branch, git checkout -b hll
keta Test.new(foo => (1,2)).bar;
jnthn Tene: Do I need one?
Tene I think there's an easier one-step way of doing that, but I don't remember.
keta this doesn't:
"Test".new(foo => (1,2)).bar;
Tene jnthn: if you're going to be making commits, it's nice
yes, I recommend it.
keta this does not work either:
my $nn = "Test";"$nn".new(foo => (1,2)).bar;
why is that?
Tene keta: what are you trying to do here?
keta: classes aren't strings in Perl 6. 21:04
jnthn keta: Because in the first you are calling .new on a string.
Oh, and in the second too.
Neither are expected to work.
keta how do i do that i want to do with the sendond then?
eric256 perl6 ne perl5 ;)
jnthn keta: What do you want to do?
Find a class by name?
keta call new on a class whose name is in $nn 21:05
[particle]- rakudo: class Test {}; $nn = "Test"; {$nn}.new;
p6eval rakudo c76d8d: OUTPUT«Scope not found for PAST::Var '$nn' in ␤current instr.: 'parrot;PCT;HLLCompiler;panic' pc 146 (src/PCT/HLLCompiler.pir:105)␤»
jnthn Tene: OK, reproduced the failure.
[particle]- feh. i forgot the syntax....
jnthn keta: We don't do namespace interpolation etc yet, probably bet is...
eric256 pmichaud: current commit list: unobe, masak, mortiz, particle, s1n, pmichaud, mberends, cspencer, jnthn
Tene rakudo: class Test {}; my $n = Test; $n.new();
p6eval rakudo c76d8d: ( no output ) 21:06
[particle]- std: class Test {}; $nn = "Test"; {$nn}.new;
p6eval std 26545: OUTPUT«Potential difficulties:␤ Variable $nn is not predeclared at /tmp/qfKBNgPHdt line 1:␤------> class Test {}; $nn = "Test"; {$nn}.new;␤ Variable $nn is not predeclared at /tmp/qfKBNgPHdt line 1:␤------> class Test {}; $nn = "Test"; {$nn}.new;␤ok 00:04
..3...
Tene [particle]-: 'my'
[particle]- std: class Test {}; my $nn = "Test"; {$nn}.new;
p6eval std 26545: OUTPUT«ok 00:04 36m␤»
21:06 charsbar joined
pmichaud @message moritz my analysis of the xml parsing problem: nopaste.snit.ch/16427 21:06
lambdabot Maybe you meant: messages messages?
[particle]- 'my' mistake :)
pmichaud @tell moritz my analysis of the xml parsing problem: nopaste.snit.ch/16427
lambdabot Consider it noted.
jnthn rakudo: class Test { }; eval('Test').new.WHAT.say;
p6eval rakudo c76d8d: OUTPUT«Test()␤»
keta BTW: The two second forms return an object of type 'Test' 21:07
jnthn keta: That way works.
pmichaud eventually it should be ::('Test') or ::($nn)
keta That is what made me believe that this is the way to go
pmichaud i.e., when we do namespace interpolation.
afk, have to run errands
keta jnth: The eval {} one you mean? 21:08
eval (), sorry
eric256 there forked perl6/perl6-examples on eric256/perl6-examples .... i think thats the right thing to do
21:09 charsbar_ left
[particle]- duh! i totally blanked on ::() 21:09
jnthn keta: Yes, the eval one will work for now. 21:10
keta: There will be a neater way in the long run (the syntax pmichaud showed)
Tene: See nopaste
nopaste.snit.ch/16428 21:11
Tene: oh, hang on a moment... 21:12
keta jnthn: okay, it does work. thank you!
jnthn Tene: Once I put a :main on the main there that much works...
PerlJam rakudo: class Foo { }; my $x = "Foo"; my $y = $x.new; $y.WHAT.say; 21:14
p6eval rakudo c76d8d: OUTPUT«Foo()␤»
PerlJam So, is that a bug then?
pmichaud it sure looks like one to me. 21:15
[particle]- yes.
pmichaud I would've expected Str
[particle]- Str()
WHAT adds parens, dunnit?
rakudo: Int.WHAT.say
p6eval rakudo c76d8d: OUTPUT«Int()␤»
[particle]- ja.
pmichaud current commit list for perl6-examples in perl6: masak moritz particle eric256 pmichaud mberends jnthn unobe s1n cspencer 21:16
I bet that when .new tries to get the class of $x, it's doing a class lookup (because of the way Parrot's various get_class operations work)
it's more of that evil "classnames aren't strings" problem. 21:17
jnthn ewww.!
pmichaud we're going to be paying for that for some time, I fear.
there are just too many parts of parrot that think that strings identify classnames and vice versa 21:18
okay, gotta run to store. back later.
[particle]- buy something, or the terrorists win! 21:19
jnthn Tene: It's certainly some stuff in .include 'src/gen_builtins.pir' that is causing it. 21:21
Tene: Narrower - it's something in src\classes\Hash.pir 21:24
Tene: And closer yet - changing in Hash.pir the line: 21:26
hashproto = p6meta.'new_class'('Perl6Hash', 'parent'=>'Mapping', 'name'=>'Hash')
to
hashproto = p6meta.'new_class'('Perl6Hash', 'parent'=>'Mapping') 21:27
Avoids the explosion too.
Tene Interesting.
jnthn So, curious now to look at what happens in new_class with the name parameter...
Tene: We end up doing a set_root_global ns, $S0, protoobject 21:30
(The relevant code is in P6object.pir, in .sub 'register' :method 21:31
Tene: My guess (may be wrong) is that we store the proto-object in the wrong place, or something looks it up in the wrong place. 21:32
And then it calls Hash.new explecting to call it on the proto-object 21:33
But instead calls it on Parrot's Hash PMC
Which then goes bananas.
Tene: Or vice versa. 21:35
Tene interesting
could be
jnthn I did a --trace=1
The line we crash on:
new P0, "Hash"
erm, the instruction, not line...
Tene ouch
jnthn Tene: If we want to create a Parrot-level Hash, what's the correct incantation? 21:36
(Under .HLL 'Perl6')
Tene I have no idea whatsoever. Seriously. There are so many different ways to instantiate a class I can't remember them. 21:37
by strings, by namespaces, by classes, getting classes from strings, getting classes from namespaces, etc.
21:37 iblechbot left 21:40 kane__ joined
[particle]- $P0 = new ['parrot';'Hash'] 21:42
jnthn [particle]-: been there, tried that
21:42 keta left
[particle]- nyi i suppose 21:42
jnthn Tene: OK, the long and the short of it is... 21:43
Whenever we want to use a Parrot class from 'Perl6'
we gotta explicitly state it's coming from parrot
21:43 skids_ left
jnthn (Note: maybe only if it's something we associated with another name ourself though) 21:43
[particle]- $P0 = get_root_namespace ; $P0 = $P0.'find_type' 'Hash' ; $P0 = new $P0 ?? 21:44
er, forgot parens
i need to build a parrot here...
21:45 wknight8111 joined
Tene jnthn: looks like it might be $P0 = get_root_namespace ['parrot';'Hash']; $P1 = get_class $P0; $P2 = new $P1 21:45
oslt
jnthn Tene: I found a way that worked, I've been patching it up all over. :-) 21:46
Tene what is it?
jnthn Tene: I've got us to an error rather than a segv now
can I push?
Tene Yes, please.
jnthn Tene: Hmm. I did a git commit .. then a git push origin master and got 21:47
git push origin master
erm
[particle]- jnthn: macro?
jnthn Everything up-to-date 21:48
Tene jnthn: git push origin hll
jnthn error: src refspec hll does not match any.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to [email@hidden.address]
(that was for git push origin hll) 21:49
Tene huh
arnsholt Quick poll: should it be Grammar::SQL, or SQL::Grammar?
Tene try: git push origin hll:hll 21:51
mberends SQL::Grammar # the Grammar word is so overloaded
jnthn same
Tene: I did git branch -a and I see
* (no branch)
As the current branch.
Tene git checkout -b hll 21:52
jnthn ah, that helped
then did git push origin hll
Tene ah
PerlJam arnsholt: I always (granted I haven't done it much), use Thingy::Grammar
jnthn See if you can pull the patches now
It pushed *something*
Tene yes, got it 21:53
jnthn Tene: OK. Next failure is here: 21:54
proto = p6meta.'new_class'('Multi', 'parent'=>'Perl6MultiSub Code Any')
Or in fact anywhere that we list something in parent where the class lies in the Parrot ns
Tene parrot;Perl6MultiSub
jnthn OK, but that is a Perl6 PMC.
(dynpmc) 21:55
Or do those go into the Parrot HLL anyway?
Tene yes, but there's no way to put PMcs in the HLL namespace
21:56 kane_ left
jnthn OK, that helped 21:56
Now we get stuck here
matchproto = p6meta.'new_class'('Match', 'parent'=>'PGE::Grammar Any')
Tene yeah, 'sec 21:57
issue with exports... my screwup
jnthn Ah, OK.
jnthn is glad we're getting somewhere.
21:58 eric256 left
Tene jnpull 21:59
jnthn: pull 22:00
ah, need to export PAST too
jnthn Tene: Hm, it's whining about not knowing what branch to merge into now?
Tene eh?
try: git fetch; git rebase origin/hll 22:01
jnthn Tene: Yup, gets us further now. 22:02
Tene: Guess you're sorting out exporting PAST too?
Tene yes
jnthn ok
Tene pushed
and another segfault! 22:03
jnthn oh joy
Tene 24275 new P1, PC3005 P1=Object(PAST;Var)=PMC(0x1ca98a0) PC3005=Key=PMC(0x1d70e10)
22:04 cspencer joined
jnthn I guess what's interesting is what's in that key... 22:04
22:05 pmurias left
cspencer rakudo: class Foo { our List of Pair multi method bar() { } } 22:05
p6eval rakudo c76d8d: OUTPUT«Use of protoobject as value␤» 22:06
arnsholt Does anyone know if it's possible to convert an OpenSSH RSA key to DSA? Looks like github doesn't like RSA
jnthn cspencer: List ain't a parametric role just yet.
cspencer jnthn: that'd explain it :)
jnthn A nicer error could be good.
22:07 km2 left
jnthn Positional of Pair would work by the way 22:07
cspencer in the definition for "classify" it says: (:@even, :@odd) := classify { ... } - how do things get sorted into the @evn and @odd arrays? 22:08
(sorted is probably the wrong word)
Tene jnthn: should %?CLASSMAP be a parrot hash or a perl 6 hash? 22:10
jnthn: the segfault is a new ['Hash'] on perl6.pir :120
but it's a var exposed to perl 6, so should be get_hll_global 'Hash', yes?
jnthn parrot one probably
Tene oh? 'kay. 22:11
jnthn or could be either I guess
yeah, by that point I think it could safely be either.
TimToady [particle]-: no, it dun't. stringification adds the parens, not .WHAT
Tene ah, it's for the compiler
jnthn Yes, it is.
Tene commits
jnthn But we'd get away with either.
I had figured out we didn't survive the onload
in main.pir
looiks like you just nailed why.
Tene pushed
now another error 22:12
PerlJam cspencer: what do you mean ?
jnthn Tene: s/hll/root/
$P0 = get_root_global ['parrot'], 'Hash' 22:13
or
Tene pushed
thanks
jnthn Great
Now we actually make it into parse
PerlJam cspencer: classify builds a list of pairs, where the keys are determined by the code and the values are values from the list
Tene I know the problem here.
cspencer PerlJam: right, i got that part
jnthn In fact, ..\..\parrot perl6.pir now gets us to a prompt. :-) 22:14
[particle]- timtoady: aha! thanks for the clarification
cspencer PerlJam: in the example though, the odd numbers and even numbers get separated out into two arrays after being returned from classify
PerlJam: (the @odd and @even arrays) and I'm wondering how that bit of magic happens
22:14 bacek joined
jnthn cspencer: Looks like it may be named parameter binding. 22:14
PerlJam cspencer: .... :@even is the same thing as :even(@even) 22:15
jnthn We don't do taht yet in Rakudo.
cspencer jnthn: so it's not classify that's doing that
jnthn (for return values)
PerlJam cspencer: oh, no. there's nothing special about classify in this regard.
jnthn cspencer: classify will do something like building a hash { odd => [ ... ], even => [ ... ] } I expect
And then return it as something like return |%the_hash
Tene: OK, let me know what you want me to pull again and look at anything more. :-) 22:16
22:16 eMaX_ joined
cspencer thanks for the clarification :) 22:16
eMaX_ re
Tene got to another segfault!
jnthn ;-) 22:17
Surprise! ;-)
Tene: pushed?
Tene no, 'sec
jnthn kk
22:17 nihiliad left 22:18 nihiliad joined
Tene pushed 22:18
PerlJam jnthn: wait ... rakudo does named parameters in signatures, doesn't it? Wouldn't that be the same code for (:@even, :@odd) := ... ?
mberends TimToady: re underscore is alpha per irclog.perlgeek.de/perl6/2009-04-27#i_1097419, would it not be more Posix compatible to have <alpha> without _ and <word> with _, as here: en.wikipedia.org/wiki/Regular_expre...er_classes 22:20
TimToady POSIX is so 20th century...
mberends oh :) 22:21
TimToady I pay about >< this much attention to POSIX anymore
mberends lol
22:21 LylePerl left
jnthn PerlJam: The problem is probably not there. 22:22
PerlJam: The problem is more that return with more than a single value doesn't work just yet.
22:22 LylePerl joined, nihiliad left
PerlJam jnthn: oh. 22:22
jnthn Tene: pulling
22:23 Jedai left
jnthn std: my (:@foo, :@odd) = foo(); 22:23
p6eval std 26545: OUTPUT«Undeclared routine:␤ foo used at 1 ␤ok 00:02 36m␤»
jnthn std: :(:@foo, :@odd) = foo();
p6eval std 26545: OUTPUT«Undeclared routine:␤ foo used at 1 ␤ok 00:02 36m␤»
jnthn Tene: IIRC the second of those may not do what you want.
erm 22:24
TimToady yes, it doesn't actually declare any variables
jnthn PerlJam: ^^
TimToady: Well, more than that, it doesn't actually update any existing declared variables either.
TimToady that too
Tene jnthn: oh?
jnthn Tene: pulled but still see failure in parse?
Tene jnthn: yes 22:25
I get a segfault now
jnthn Tene: sorry, the messages was for PerlJam
Tene ah
Right, I see now
22:26 hercynium joined
PerlJam TimToady: is :@foo a syntactic feature? Or could :(my @foo) be used to declare and assign? 22:26
jnthn Tene: Yup, see the segv
TimToady my makes no sense inside a signature 22:27
std: :(my @foo)
p6eval std 26545: OUTPUT«##### PARSE FAILED #####␤Can't understand next input--giving up at /tmp/FZWCFfzdpH line 1:␤------> :(my @foo)␤ expecting any of:␤ parameter␤ signature␤ type_constraint␤ typename␤ whitespace␤FAILED 00:02 37m␤»
PerlJam okay. 22:28
jnthn Tene: ..\..\parrot perl6.pir -e "42" is more helpful
Tene: Note that --target=pir works
Tene: So we make it all the way to runtime
TimToady std: class my {...}; :(my @foo)
p6eval std 26545: OUTPUT«ok 00:02 38m␤»
Tene jnthn: also past 22:29
erm... past is before pir
><
jnthn Tene: ish. We segfault as soon as we try say 42 though (even --target=parse fails for say 42)
TimToady commuting & 22:30
jnthn Tene: we crash on a 171690 callmethodcc P11, "list" 22:33
When parsing say 42
P11=Object(PAST;op)
erm, Op
Tene: I don't know if this is interesting, but I think the list method is inherited from the Capture PMC 22:34
Tene: Line 546 of capture.pmc looks scary 22:35
22:36 angelixd joined
pmichaud hello 22:36
looks like jnthn++ Tene++ are making great progress on .HLL
moritz_ pmichaud: thanks for your analysis, I think it's spot on. Unfortunately I've failed to reduce it to a simple example with which I could debug .chunks
well, that'll have to wait until tomorrow
pmichaud moritz_: if I get a bit of time tonight or tomorrow I might be able to look at it
jnthn: (Line 546) I wonder if that's still needed. 22:37
I'm guessing "yes".
jnthn Tene: Actually, I just set a breakpoint in the list method
And we don't make it into there.
pmichaud: Is list in Capture PMC the one that is inherited by a PAST::Op? 22:38
pmichaud iirc, yes.
jnthn I'm wondering if we're hitting some oddness in calling PMC methods in a foreign HLL.
pmichaud seems like a lot of things would fail if that's the case 22:39
I would think we'd see failure much earlier.
jnthn Well, we fail at parsing say 42, so that counts. ;-)
pmichaud I would think we'd never even be able to build a perl6.pbc
jnthn We can't.
This is with the stage 1.
pmichaud a _s1.pbc, then?
I think even that would fail. 22:40
jnthn Hmm.
pmichaud oh, perhaps not.
jnthn All we've done up to that point is set up various built-in classes.
pmichaud right, and compiling the grammar is still being done in the 'parrot' HLL
so... hm.
jnthn my crappy debugger doesn't give me many hints where we stack overflow on. 22:41
But a --trace=1 shows it's on a callmethod with list
And on a PAST::Op instance.
pmichaud I should check out a copy of what you guys are working on
how do I get to the branch you're on (in git)?
moritz_ git checkout -b hll origin/hll 22:42
(probably)
if that's the branch they're working on
jnthn yes, that one
pmichaud that branch is still tied to parrot r38250, yes? 22:43
moritz_ (and 'git checkout master' to get back)
pmichaud I just cloned a new repo for this :-)
easier to be doing several things at once
22:45 ZuLuuuuuu left
jnthn hmm 22:45
I think it maybe isn't so simple 22:46
pmichaud wait a second
I think the problem _cannot_ be in the 'list' method of Capture
22:46 mberends left
jnthn nopaste.snit.ch/16430 22:46
pmichaud at least, that can't be the core of the problem.
jnthn pmichaud: I suspect too now.
pmichaud If that's the problem, then none of the languages in other HLLs would work. 22:47
jnthn Because if it was just that, I'd expect us not to print "alive"
Tene back from phone call
pmichaud because all HLLs using PCT ultimately have to call 'list' on Capture PMCs (and presumably do so from within their HLL space)
jnthn Aye
pmichaud well, perhaps it's possible that none of those HLLs are doing that at runtime, though. 22:48
oh wait, of course they are.
Otherwise they couldn't compile anything.
jnthn rakudo: say Capture
p6eval rakudo c76d8d: OUTPUT«Capture()␤»
pmichaud unless their actions.pm equivalent is running in 'parrot', which I suspect is not the case.
22:49 dextius joined
dextius anyone here use parrot/perl6 on a mac? 22:50
pmichaud okay, when I try to build the hll branch, I end up at the gen_setting.pm step and it starts consuming all my memory 22:52
I suspect if I wait long enough it'll segfault :-)
dextius: I'm not on a mac, sorry.
jnthn pmichaud: There's certainly something odd going on because if I remove .include 'src\classes\Capture.pir' in gen_builtins.pir we fail in a different place. 22:53
dextius no problem.. did an update and am having trouble compiling it.. (parrot builds fine)
moritz_ dextius: masak does, but he's not online right now
dextius that's cool.. I'll come back later.. thanks!
moritz_ dextius: after rebuilding parrot you have to do a 'make clean' in rakudo#s dir
s/#/'/
dextius yeah, tried that..
pmichaud jnthn: fail in a different place is often normal with segfaults (more) 22:54
jnthn (We then fail in doing a P2, "Iterator", P0 in HLLCompiler when handling the --target=parse)
pmichaud jnthn: I've also noticed that -t1 is not a reliable indicator of where things fail.
jnthn That's true, but it's been serving fairly well so far tonight in showing up what is wrong.
moritz_ dextius: can you please nopaste the error message? 22:55
dextius sure, one sec..
jnthn Anyway from what I can see this boils down to us confusing our Captures.
dextius perl -e "" > src/gen_setting.pir
src/string/api.c:762: failed assertion 'encoding'
jnthn Or one problem does anyways..
pmichaud jnthn: I don't quite follow that. 22:56
jnthn pmichaud: re-read
(about removing Capture.pir)
Or is it still not clear?
pmichaud it's still not clear, sorry.
jnthn Ah, OK. I'll try and explain better. 22:57
If I remove Capture.pir being .include'd from gen_builtins.pir then we do not fail at calling .list
We've been fixing a lot of issues where we'd do something like new 'Hash' and it would look at the Rakudo Hash rather than the Parrot Hash PMC, which is what those cases needed. 22:58
pmichaud but I can't think of any instances where we ever do new 'Capture'
jnthn I'm suspecting that our Capture namespace entry is obscuring our lookup of the Capture PMC that we are inheriting from.
We don't; I'm fearing that the Object PMC gets it wrong. 22:59
pmichaud Parrot's Object PMC ?
jnthn Yes. When it creates the proxy object.
pmichaud Oh. I think that's highly likely.
Tene btw, if I remove all of the .HLLs from the hll branch, everything succeeds. This is not particularly relevant, but still good.
pmichaud I think I even filed some tickets on this issue, or at least some messages to parrot-dev
bundled in with my complains about Parrot's object system using strings for classnames instead of something more unique. 23:00
*complaints
23:00 dextius left
jnthn Actually VTABLE_instantiate in class.pmc 23:00
is what I meant 23:01
not object.pmc itself
hmm 23:02
doesn't look so obviously wrong as I first expected
pmichaud here's what bugs me (more)
both Parrot_oo_get_class and Parrot_oo_get_class_str want to do all of their lookups based on the interpreter's current hll
including proxies. 23:03
jnthn oh, hang on
What HLL would we be in when PAST::Op adds Capture as a parent? 23:04
pmichaud parrot
jnthn OK.
pmichaud because that's done in PCT.pbc
(at least that's where I think it should be done)
and all of the subs in PCT.pbc are in the 'parrot' hll namespace
jnthn OK 23:06
jnthn stares at object.pmc's find_method
some bits of Parrot don't look like I used to know 'em... :-S
pmichaud oh!
here's a problem.
at least, I think it's a likely problem. 23:07
see if you can follow my logic here
when I call PAST::Op.list from actions.pm, I'm in the perl6 hll
yes?
jnthn I'd imagine so.
23:08 nbrown joined
pmichaud since PAST::Op ultimately inherits its list method from Capture, we jump straight to Parrot_Capture_nci_list 23:08
(well, not "straight", but there aren't any intermediate things that might be changing our interpreter's idea of the current HLL)
so it then tries to run Capture.list in the perl6 HLL namespace
but we ultimately get to 23:09
if (PObj_is_object_TEST(pmc)) {
STRING *classname = CONST_STRING(interp, "Capture");
PMC *classobj = Parrot_oo_get_class_str(interp, classname);
23:09 km2 joined
pmichaud and Parrot_oo_get_class_str tries to get the class/proxy based on the interp's current HLL 23:09
which happens to be 'perl6' instead of 'parrot' at this point, because nothing has changed it.
jnthn That would seem to be a good explanation apart from, why does nopaste.snit.ch/paste work?
pmichaud which nopaste? 23:10
jnthn heh, fail
nopaste.snit.ch/16430
pmichaud let me try it and think for a second
jnthn $P0 = $P0.'new'(1,2,3) 23:11
say "instantiated"
$P1 = $P0.'list'()
say $P1
If you change it to that it becomes more explicit btw
(that it does the right kinda thing)
(rather than just lives)
Other than that, though, it does all make a lot of sense.
Aside from when I set a breakpoint inside list it didn't trigger. 23:12
pmichaud one difference is that rakudo has its own ['Capture'] namespace.
or, more precisely, its own Capture protoobject.
which would occupy a slot in the HLL symbol table.
where Parrot_oo_get_class_str would be attempting to read a namespace.
that doesn't seem to be causing a problem here, though. 23:14
jnthn Aye, tried that here and it didn't recreate it.
pmichaud it still seems like it has to be something more subtle; otherwise other HLLs would be encountering problems. 23:15
arnsholt What's the incantation to call a method in a superclass?
jnthn Actually
.namespace ['Perl6Capture']
So it isn't a .namespace ['Capture'] that's doing it.
pmichaud but there's still a 'Capture' protoobject. 23:16
moritz_ arnsholt: I think it sould work with SUPER or with WALK, but I don't think that either is implemented ATM
pmichaud callnext, I think.
moritz_ doesn't that just use the next nearest dispatching candidate? 23:17
pmichaud sure, which would often be the superclass.
but there can be more than one superclass, so SUPER doesn't cut it.
23:17 payload left 23:18 payload joined
pmichaud (this question came up at NPW hackathon, and istr that TimToady's answer was "callnext") 23:18
jnthn pmichaud: I just tried to stick something random into Capture with set_hll_global and that didn't make it fail either.
pmichaud jnthn: yes, I tried that also.
moritz_ rakudo: class A { multi method a(Int $x) { 'A' } }; class B { multi method a(Int $x) { say 'A1'; say callnext(3) }; multi method a(Int $x, $y?) { 'A2' } }; B.new().a(4)
p6eval rakudo c76d8d: OUTPUT«Ambiguous dispatch to multi 'a'. Ambiguous candidates had signatures:␤:(Object() self, Int() $x)␤:(Object() self, Int() $x, Any() $y?)␤␤current instr.: 'parrot;P6metaclass;dispatch' pc 472 (src/classes/ClassHOW.pir:103)␤»
moritz_ Object self? 23:19
why not A self or B self?
jnthn moritz_: It should be that, that's a known not-done-yet thing. 23:20
moritz_ jnthn: ok
rakudo: class A { multi method a(Int $x) { 'A' } }; class B { multi method a(Int $x) { say 'A1'; }; multi method a(Int $x, $y?) { 'A2' } }; B.new().a(4)
p6eval rakudo c76d8d: OUTPUT«Ambiguous dispatch to multi 'a'. Ambiguous candidates had signatures:␤:(Object() self, Int() $x)␤:(Object() self, Int() $x, Any() $y?)␤␤current instr.: 'parrot;P6metaclass;dispatch' pc 472 (src/classes/ClassHOW.pir:103)␤» 23:21
arnsholt Right. And the workaround was with WALK?
moritz_ am I right in assuming that the first method a in B should be tighter?
Tene I need to go home now... I'll read scrollback later tonight. 23:23
pmichaud jnthn: nopaste.snit.ch/16431 # this succeeds also 23:24
jnthn moritz_: I'm not sure on that one. I have run across that one before and wondered what an exact arity match means.
moritz_: IIRC, it wasn't clear from the spec...I should check it again though.
pmichaud: Ouch. :-S 23:25
pmichaud jnthn: I think that pretty clearly establishes Capture the same way that perl6.pbc is doing it :-|
jnthn pmichaud: Does .list return something sensible too, say if you'd called .new(1,2,3)
pmichaud: Also, can you re-produce that removing Capture.pir from gen_builtins.pir makes a difference to where we make it to in the trace? 23:26
moritz_ bed&
pmichaud pmichaud@orange:~/hll$ parrot/parrot x.pir
Op
instantiated
3
alive
(where the '3' is the result of printing the result of $P0.'list'()
jnthn sure 23:27
pmichaud jnthn: when I try to build past the stage 1 compiler I never get to a segfault.
I just loop for a very long time and eat up tons of memory. On this box, that could take a while.
jnthn 32 or 64 bit?
pmichaud 64
jnthn Also
it's a stack overflow rather than a segfault.
pmichaud okay 23:28
jnthn So if you offer much stack space, yes, it may go on for a while. ;-)
pmichaud my stack will take a long time to overflow :-)
trying w/o Capture.pir
jnthn patience ;-)
Re-verifying that it really does make a difference here.
pmichaud Could not find non-existent sub !fixup_routine_type 23:29
current instr.: '' pc 71 (EVAL_30:32)
(that's with Capture.pir commented out of src/gen_builtins.pir)
jnthn That means we're making it to runtime. 23:31
pmichaud more likely we're making it to BEGIN blocks
not necessarily to runtime.
jnthn sure
23:31 hercynium left
jnthn I fail elsewhere, but anyways 23:31
We can both re-produce that this moves the point of failure.
pmichaud but what happens if I just move Capture.pir earlier...? 23:32
jnthn try it 23:33
pmichaud trying it now
oh, here's an intresting test. Just a sec. 23:34
(I think my build is on its way to stack overflow.)
jnthn also 23:36
If I change
captureproto = p6meta.'new_class'('Perl6Capture', 'parent'=>'parrot;Capture Any') 23:37
to
erm, that's what I changed it to
Note I removed , 'name'=>'Capture'
That moves the problem jsut the same too.
pmichaud that still seems to imply a problem with a ns lookup, then. 23:39
jnthn Yes.
pmichaud the 'name'=>'Capture' is what causes the protoobject to be stored as 'Capture' instead of 'Perl6Capture' 23:40
jnthn Right.
I still don't understand why nopaste.snit.ch/16431 works though.
pmichaud my suggestion would be to see how much farther we can get without the Perl6Capture class.
me neither.
jnthn I even moved the .include lines above the thing just to make sure it's not an ordering issue. It's not.
23:42 skids_ joined
pmichaud omfg 23:43
you aren't going to like this.
oh, wait
let me do a very clean rebuild before I report it :-) 23:44
23:45 exodist left
jnthn is curious 23:45
pmichaud okay, starting with clean version of hll branch
no modifications
building from perl6_s1.pbc eats up my memory 23:46
but if I repeat the compilation of gen_setting.pm
*with* the -G flag
jnthn omfg
pmichaud I get nearly instant segfault.
oh! 23:47
but hey! that means I can gdb it!
and I do have some sort of bizarre loop. 23:48
backtrace is at least 1759 levels deep.
(any easy way to determine the depth of the backtrace...?) 23:49
jnthn Dunno, don't have much gdb foo
Can you paste me the top of it?
cspencer is it safe to assume that when classify.t says "classify { $_ * 5 } 1,2,3,4", it intends for a comma to be present between the code block and the remaining args?
pmichaud nopasting
TimToady yes
jnthn cspencer: think so.
looks like a p5ism 23:50
cspencer i'll fix that up in the spec tests then
TimToady p6 never allows two terms in a row
pmichaud jnthn: nopaste.snit.ch/16432
jnthn wrote a C# version of classify, then wrote an article about it, and most of the comments were "omfg what's that lambda expression stuff?"
"Multi-Paradigm C#" is a book that needs writing...and reading. 23:51
pmichaud: Ah. That's a familiar backtrace...
pmichaud: Any idea what is at the base of it? 23:52
pmichaud see, I *told* you it was Parrot_oo_get_class_str !!! :-) :-)
jnthn bt -20
maybe
;-)
pmichaud: Yes, it's *certainly* doing the wrong thing in there for exactly the reaons you mention.
pmichaud okay, Parrot_PMCProxy_init_pmc is prominent 23:53
I bet it's trying to find the Capture proxy
in the wrong hll
jnthn right 23:54
23:55 [particle]- left
pmichaud everytime I see " 23:55
PMC *pproxy = Parrot_oo_get_class_str(interp, cname);
in the parrot source it really makes me want to cry.
23:55 orafu left, PacoLinux left
pmichaud or go bash a kitten. 23:55
jnthn Well, what underlies this I guess is 23:56
23:56 moritz_ joined, orafu joined, PacoLinux joined, patmat joined, presh joined, antiphase joined, kolibrie joined, irc.freenode.net sets mode: +o moritz_
jnthn interp->vtables[type_num]->mro 23:56
Is a list of strings.
wknight8111 or go csh a kitten
23:56 orafu left
pmichaud some things are too cruel even for kittens. :-) 23:56
23:57 r0bby joined
pmichaud jnthn: A list of strings. Really. Why am I not surprised? 23:57
shouldn't it be... umm... a list of pointers to the class objects? 23:58
jnthn Well, back in the day, I guess there wasn't much else for it to be.
23:58 kolibrie left
jnthn Because PMCProxy only started to exist relatively late. 23:58
23:58 kolibrie joined
jnthn To try and deal with the "there is no class object for a PMC" issue. 23:58
23:58 orafu joined
pmichaud a proxy has a mro? 23:58
jnthn A proxy builds a list of the parents for introspection purposes. 23:59
wknight8111 jnthn: maybe adding classes to existing PMCs is a way forward
jnthn But it has to do it off the mro list in the VTABLE
wknight8111 i.e. replace all PMCProxys with proper classes
pmichaud shouldn't that list be a list of other proxy pmcs?
as opposed to names?