»ö« | perl6-projects.org/ | nopaste: sial.org/pbot/perl6 | evalbot: 'perl6: say 3;' | irclog: irc.pugscode.org/ | UTF-8 is your friend!
Set by Tene on 14 May 2009.
JDlugosz re always flatten: So while it traverses and copies elements, it notes if items themselves have the Positional role, and recurse into them? 00:00
00:00 fridim_ left
ruoso JDlugosz, no... it sees if it is a Capture 00:00
otherwise 1,2,[1,2,3] would also unflatten 00:01
and that's not the case
00:01 DemoFreak left
JDlugosz So list assignment doesn't *always* flatten. List assignment with a Capture on the RHS flattens. 00:01
ruoso skids, I don't quite see what you mean... would you mind writing an example?
00:01 orafu joined
ruoso JDlugosz, it *always* flatten, but the only things that are subject to be flattened are captures 00:02
skids lists flatten, arrays do not <-- ruoso simplified :-)
ruoso skids, the point is precisely that "list" is an abstract concept... 00:03
skids my lvalsub () { return $a, $b, $c }; # want to bind @a[0] := $a, @a[1] := $b, etc
JDlugosz skids: I don't understand that. Sounds like P5 nomenclature. Array is a concrete container type that does Positional. Lists are casual language for anything that does Positional.
Infinoid rakudo spectest summary report on NetBSD/i386 4.0 (from netbsd parrot pkgsrc maintainer): nopaste.snit.ch/16582
ruoso JDlugosz, exactly... so the Capture is the thing that might be flattened
JDlugosz, Array is *never* flattened 00:04
JDlugosz And that keys in to the ( ) syntax being the capture constructor.
ruoso exactly
skids except that it's also the list constructor :-) 00:05
ruoso skids, a capture is a list
JDlugosz so @a = ($a, @b, $c); will flatten during the assignment.
ruoso yes
not before
so
JDlugosz and @a = [ $a, @b, $c]; will not.
ruoso @a = [] produces an array with 1 element
lambdabot Maybe you meant: activity activity-full admin all-dicts arr ask . ? @ v
ruoso but... 00:06
JDlugosz skids: NO. "the" list constructor is a non sequtor.
ruoso my @a := ($a, @b, $c) #doesn't flatten
my ¢a := ($a, @b, $c) #doesn't flatten
00:06 icwiener left
JDlugosz Are you saying that my last example was wrong? 00:07
ruoso it wouldn't flatten... but I think it wouldn't do what you meant
JDlugosz Doesn't [...] construct an Array ?
ruoso my @a = [$a, @b, $c]; say @a[1]; # no element
JDlugosz And an Array (not a "reference"!) will partipate in list assignment.
ruoso and as the array is not a capture, 00:08
it is the only element
otoh
JDlugosz But $x = [ $a, @b, $c]; is a single item.
ruoso yes
[$a, @b, $c] is always a single item 00:09
00:09 bacek_ joined
JDlugosz Why would @a = ... not work that way anymore? Has list assignment changed to *only* take a capture on the RHS? 00:09
ruoso I think it always worked that way
I mean...
my @a = [1,2,3]; say @a.elems 00:10
would always say 1
pugs: my @a = [1,2,3]; say @a.elems;
p6eval pugs: OUTPUT«1␤»
ruoso and pugs hasn't changed in a long time
s1n how do i "convert" a Str to a Callable (or something else that can be executed like Callable, maybe Capture)? 00:11
ruoso s1n, er... what is supposed to happen when you invoke a Str? 00:12
s1n ruoso: i have it as a string and i want it as a callable
Infinoid like eval?
00:13 cspencer joined
ruoso rakudo: my $x = "Hello" but Callable; say $x(); 00:13
p6eval rakudo 120364: OUTPUT«invoke() not implemented in class 'Perl6Str'␤»
ruoso rakudo: role StrCallable { method invoke { return eval ~self } }; my $x = "1 + 1" but StrCallable; say $x(); 00:14
p6eval rakudo 120364: OUTPUT«invoke() not implemented in class 'Perl6Str'␤»
ruoso I think rakudo is still getting that from lowlevel yet... 00:15
so you can't really override
s1n hmm...
am i supposed to?
00:15 FurnaceBoy joined
ruoso rakudo: role StrCallable { method postcircumfix:<( )> { return eval ~self } }; my $x = "1 + 1" but StrCallable; say $x(); 00:15
p6eval rakudo 120364: OUTPUT«invoke() not implemented in class 'Perl6Str'␤»
ruoso pugs: role StrCallable { method postcircumfix:<( )> { return eval ~self } }; my $x = "1 + 1" but StrCallable; say $x();
p6eval pugs: OUTPUT«*** Must only use named arguments to new() constructor␤ Be sure to use bareword keys.␤ at Prelude.pm line 541, column 5-16␤»
ruoso pugs: role StrCallable { method postcircumfix:<( )> { return eval ~self } }; my $x = "1 + 1"; $x does StrCallable; say $x(); 00:16
p6eval pugs: OUTPUT«*** Unknown syntactic construct: Syn "does" [Var "$x",Val (VType (mkType "StrCallable"))]␤ at /tmp/LnnQjvdxbd line 1, column 89-108␤»
ruoso rakudo: role StrCallable { method postcircumfix:<( )> { return eval ~self } }; my $x = "1 + 1"; $x does StrCallable; say $x();
JDlugosz I'll have to look for that when I get to it again in the Synopses. Do you remember where it was?
p6eval rakudo 120364: OUTPUT«invoke() not implemented in class 'Perl6Str'␤»
s1n std: role StrCallable { method postcircumfix:<( )> { return eval ~self } }; my $x = "1 + 1" but StrCallable; say $x(); 00:17
p6eval std 26867: OUTPUT«ok 00:04 39m␤»
ruoso JDlugosz, probably S09
but I don't really remember...
it's just part of my mindset now ;)
JDlugosz S03 covers list assignment, but doesn't really cover what it does.
ruoso because S07 is the one that will get to it 00:18
since it's really about how to iterate the input list
JDlugosz I do see that you don't need parens. @x = 1,2,3;
ruoso yes... but that's because Perl 6 kinda "implies" the outermost parens 00:19
but the semantics are the same
s1n ruoso: does the 'but' keyword require roles?
ruoso s1n, yes
JDlugosz I guess the [...] thing is because of context. although it is an object that does Positional, it is in item context. Right?
ruoso JDlugosz, no [...] is intentionally non-flatenable 00:20
JDlugosz Looks like for assignment anyway, @x=1,2,3 works because it parses like a listop. So its behavior is the same as binding parameters to a listop.
ruoso in terms of implementation
yes
it's kinda like...
00:21 orafu left
ruoso my @x = infix:<,>(1,2,3) 00:21
JDlugosz sln: you can say but with a value, and the class (not role) is what is mixed in.
Thanks ruoso, I have a lot to re-read and swap in. 00:22
I wonder if I can do it effectively part time?
ruoso glad to help
JDlugosz less than part time... on the side, so to speak.
In between household chores and other projects.
ruoso well... the specs without #perl6 log get really harder to grok 00:23
a lot happens during the discussions here
00:24 justatheory left
JDlugosz When I was travelling and reading the specs, I did not have access. 00:25
skids would it be more accurate to say "captures are lists when they are in list context"? 00:26
JDlugosz Captures are always lists. They support the Positional role.
00:26 orafu joined
skids lists mean more than that though 00:27
00:27 agentzh left
JDlugosz What more does it mean? 00:27
skids laziness
00:27 agentzh joined
JDlugosz So is it not lazy if you don't look at it in a list context? 00:28
ruoso std: sub foo { return 1,2,3,:a<b>,:c<d> }; my @a := foo(); say @a<a>;
p6eval std 26867: OUTPUT«ok 00:03 38m␤»
JDlugosz ruoso: that reminds me. The @% is going to play havoc with custom indexers.
ruoso "custom indexers"? 00:29
JDlugosz The two roles will be fighting over poscircumscript:<{}>
ruoso which roles?
JDlugosz indexer: using {} on an @array to do cusom-defined indexing.
00:29 payload left
JDlugosz which roles: Positional and Associative. 00:30
ruoso ah... well... it's an API... there are always going to be corner cases
JDlugosz See "User-defined array indexing" in S09. 00:31
to DWIM, the user-defined index only works when going through the @-bound variable, eg. seen as a Positional. 00:32
skids JDlugosz: e.g. $a = \(1, 2); # <-- capture, not yet a list, because it doesn't know its context yet
ruoso skids, $a = \(1,2) is pretty pointless 00:33
JDlugosz To make it work under the hood, it implies that the operator resolution does use the static type information, which then imples that this operator has to be an ordinary method, not a MMD.
skids ruoso: not if you want to pass arguments around with a single handle
JDlugosz skids: $a[1] will return 2.
skids yes, captures do Positional, so? 00:34
JDlugosz skids: you are missing the new rules that (...) is a Capture constructor, no need for leading \.
ruoso std: sub foo {}; my $x = (1,2); foo(|$x);
p6eval std 26867: OUTPUT«ok 00:03 40m␤»
skids Those are not in the Synopsis yet?
ruoso partly 00:35
JDlugosz See backlog, yesterday 02:42 UTC.
That's when he explained it to me.
skids: see <irclog.perlgeek.de/perl6/2009-05-17>
skids: changes are in S02 that I've studied, but with some rough edits and things that need to be explained. 00:36
ruoso night & 00:37
00:42 orafu left, orafu joined
skids JDlugosz: S02 Literals has some verbiage that probably needs work in <foo bar> -- search for "autopromoted" 00:51
00:55 leroe left 00:57 clkao_ is now known as clkao 00:58 agentzh left, agentzh joined 01:03 cspencer_ joined, cspencer left, orafu left 01:04 orafu joined
skids now that the line number anchors are gone from Synoposis, has anyone suggested a POD way to add named anchors. Other than the ones that are auto-added to HTML <DT>'s ? 01:10
01:14 eternaleye left
ruoso was looking at the wolframs alpha thing in a hopefull way... but then I just found the following quote in the FAQ: "It only deals with facts, not opinions" -- geez... seriously... how can someone start such an ambitious project with XIX's century philosophical background... 01:17
skids Heh. And their "Sample input" uses such hard "facts" as the US GDP. 01:19
ruoso not this time someone will get something at least as usefull as google... 01:20
wayland76 Just wanted to comment about the guy "Alexey Grebenschikov" who keeps sending whitelist requests to people on p6l 01:23
lambdabot wayland76: You have 3 new messages. '/msg lambdabot @messages' to read them.
skids These days I'd settle for an astroturf tracker.
wayland76 I don't think unsubscribing him is going to cut it. I think the only way is to have one of our Russian-speaking members complain to him 01:24
01:24 orafu left 01:25 orafu joined
skids A few of my friends think they might have got a guy arrested in i think singapore by calling the embassy and saying he was shaming the country. (I thought that was a bit over the top) 01:25
Probably wouldn't work in Russia though. 01:26
JDlugosz skids: re S02 noted. 01:43
01:46 orafu left, orafu joined 01:48 Whiteknight left
s1n skids: wouldn't work in america either, we're use to shaming ourselves :/ 01:49
skids Really? I thought we were just shameless. :-) 01:54
Infinoid ... is that illegal?
skids When your government is fascist, illegal is someone's whim. 01:55
Infinoid uck, sad but true 01:56
01:57 eternaleye joined
skids You know, sorta like all the great financial "innovations" we've made here in the US that are somehow less punishable for the "innovators" than smoking a joint is for joe six pack. 01:57
Infinoid Well, they own the place. What can you do? 02:00
Stage 1: make perl 6. Stage 3: profit
02:01 justatheory joined, eternaleye left 02:04 jonathanturner joined, eternaleye joined 02:07 orafu left 02:08 eternaleye left, eternaleye joined 02:09 orafu joined 02:11 agentzh left 02:12 agentzh joined
wayland76 Well, I'm always willing to give people the benefit of the doubt; if we explain things to him, he may feel sufficiently ashamed (and take appropriate action) without anything else being necessary 02:13
02:28 orafu left 02:34 orafu joined 02:35 cspencer_ left
s1n who's handing out commitbit to github.com/perl6? 02:39
02:40 sri_kraih_ joined
skids s1n: pmichaud was the one who created that account IIRC 02:46
s1n pmichaud: hook me up? 02:49
02:49 orafu left
Tene s1n: pmichaud doesn't seem to be around tonight. Do you have a CLA with TPF? iirc, they still require committer agreements for commit privs to rakudo. 02:50
Not completely sure, though.
02:50 sri_kraih left, orafu joined
s1n Tene: pmichaud said at our p6m meeting on tuesday that CLA wasn't needed for the github account yet 02:51
supposed to have liberal commit access
Tene s1n: I'm wrong, then. :) 02:53
s1n Tene: who should i talk to about the cla? 02:54
Tene s1n: If pmichaud says you don't need cla, then you don't need cla. 02:55
You need to talk to pmichaud about commit access. 02:56
s1n Tene: right, but i want to ask a question or two about the cla
Tene i don't know if anyone else has the password to that github account, and github doesn't let you delegate admin privs :(
s1n: several people in #parrot would know more... coke and particle at least.
03:04 agentzh left, agentzh joined 03:11 orafu left, orafu joined, mib_msjzva joined 03:12 mib_msjzva left 03:19 skids left 03:20 donaldh left, donaldh joined 03:21 Kisu joined 03:32 orafu left 03:33 orafu joined 03:39 agentzh left 03:40 agentzh joined 03:41 orafu left 03:42 orafu joined 03:53 orafu left 03:54 orafu joined 03:55 cspencer joined 04:02 cspencer left 04:11 alester_ joined 04:13 lichtkind_ left 04:15 orafu left 04:16 orafu joined 04:24 agentzh left, agentzh joined 04:36 orafu left 04:37 orafu joined 04:42 sparc joined 04:57 orafu left 04:58 dukeleto joined, orafu joined
pugs_svn r26868 | jdlugosz++ | Fix one typo, s/know/known/. Really just low-hanging fruit to test my Commit access and procedures therein. I'm assuming that the VERSION block is updated manually before checking in, and all versions are numbered sequentially even if a typographic change. 05:01
05:04 justatheory left 05:06 JDlugosz_ joined 05:09 payload joined 05:18 orafu left
JDlugosz_ Question: regarding: for lines($*ARGFILES) {...} 05:19
is that the same as $*ARGFILES.lines() ? 05:20
05:20 orafu joined
JDlugosz_ Or is there some reason for using the sub form there? 05:20
05:23 JDlugosz left 05:26 frew left 05:38 frew joined 05:39 ejs joined 05:40 JDlugosz joined, orafu left 05:41 orafu joined 05:43 JDlugosz left 05:49 sri_kraih_ left 05:55 alester_ left 05:57 agentzh left, JDlugosz_ left, agentzh joined 05:59 sri_kraih joined 06:00 ejs left 06:01 frew left, orafu left 06:02 orafu joined 06:04 DemoFreak joined 06:06 sri_kraih left 06:22 orafu left 06:23 orafu joined 06:27 agentzh left 06:28 agentzh joined
pugs_svn r26869 | moritz++ | [t/TASKS] links to p6l mails 06:33
06:41 _mg_ joined 06:42 harig joined 06:44 orafu left 06:48 agentzh left 06:49 orafu joined 06:51 agentzh joined 07:00 ejs joined 07:05 payload left, orafu left, orafu joined 07:07 masak joined 07:11 ejs1 joined
masak a good morrow, fellow seekers of Perl 6. 07:12
moritz_ oh hai masak 07:15
masak: being up earlier than you is kind of a disturbing experience :-)
07:16 FurnaceBoy left
masak moritz_: I'm working on it. :) 07:16
07:16 finanalyst joined
masak haven't really had the discipline to rise early since Friday two weeks ago. 07:16
today I got unexpected help from a fellow with a loud drill. 07:17
finanalyst rakudo: my $f=open("README",:r);say $f.get;
p6eval rakudo 120364: OUTPUT«=head1 Rakudo Perl 6This is Rakudo Perl, a Perl 6 compiler for the Parrot virtual machine.Rakudo Perl is Copyright (C) 2008-2009, The Perl Foundation.Rakudo Perl is distributed under the terms of the Artistic License 2.0.For more details, see the full text of the license in
..the f...
moritz_ finanalyst: that's clearly wrong, and there's a ticket for that in RT 07:18
finanalyst moritz_: ah ok
07:18 ejs left
finanalyst i just figured out why my local perl6 didnt like 'get' 07:19
then discovered get != lines(1)
masak
.oO( fun to see p6eval say '...the f...' for once )
moritz_ hm, I could replace the ... by ellipsis 07:20
07:20 donaldh left
finanalyst ;) i thought it was part of the get output LOL 07:20
moritz_
07:21 donaldh joined
masak finanalyst: it was. 07:21
07:21 payload joined 07:22 _maja joined
pugs_svn r26870 | moritz++ | [evalbot] add ellipsis when truncating output (instead of three dots) 07:22
07:22 payload left 07:23 p6eval left, payload joined, p6eval joined
finanalyst shame it wasnt <... the f... > for everything 07:23
moritz_ rakudo: say $*IN.get
p6eval rakudo 120364: OUTPUT«Land der Berge, Land am Strome,Land der Äcker, Land der Dome,Land der Hämmer, zukunftsreich!Heimat bist du großer Söhne,Volk, begnadet für das Schöne,vielgerühmtes Österreich,vielgerühmtes Österreich!Heiß umfehdet, wild umstrittenliegst dem Erdteil du inmitten,einem starken
..Herzen …
finanalyst does rakudo have a nice way of querying the current working directory? 07:24
moritz_ doubts that
finanalyst or is this still unspecified?
07:26 orafu left 07:27 orafu joined
masak finanalyst: do a run(...) call in which you write `pwd` to file, slurp the file into a string, remove the file. 07:27
finanalyst: that's what I usually do. :/
finanalyst masak: thanx. i got something working over the weekend for $work. Outputs to ploticus for nice graphs. but i want some gui widgets to control the input parameters. 07:32
masak finanalyst: sounds interesting.
finanalyst i will be using the png's for a presentation tomorrow. 07:33
and if anyone wants to reproduce my results, they will have to look at my perl6 code :) 07:34
lots of reduce, X, and Z operators!
07:35 Maghnus joined
masak nice. 07:36
Matt-W Morning 07:39
I updated Rakudo, and Form seems to have broken :(
I shall investigate when I'm not at work
Going to hope that I was relying on a broken something in Rakudo 07:40
masak Matt-W: my sympathies, regardless of the cause. 07:41
Matt-W: now, aren't you glad you have tests? :)
07:47 orafu left 07:48 _maja left
Matt-W masak: very glad 07:51
I would've fixed it, but I had to go to work :(
Where I get to do unfun programming
masak Matt-W: there's always the evening.
Matt-W It's Day Three of Track Down The Deadlock And Figure Out How To Fix It Without Causing Another Problem
masak Matt-W: been there, done that. 07:52
Matt-W I'm going out for dinner this evening!
masak Matt-W: well, there's always tomorrow.
moritz_ wow, my blog finally made it into the ironman feed
Matt-W Recorder lesson and viol group tomorrow :P
07:53 orafu joined
masak Matt-W: now you're just making stuff up. :P 07:55
moritz_: congrats. 07:56
is there a page with a list of how many consequtive weeks people in the ironman feed have kept it up? 07:57
moritz_ not that I know of
masak it's an app that just begs to be made.
07:58 harig left
moritz_ ...and that was promised to us anyway :-) 07:58
anyway, May really feels like christmas 07:59
custom operators
and annotated backtraces
masak indeed. 08:00
pmichaud++ jnthn++ Tene++
Matt-W Yeah!
Matt-W hangs up his stocking
...and waits for the antihistamines to kick in
moritz_ Matt-W: oh, you're one of that unfortunate kind? 08:01
my girlfriend too
masak cannot process stockings either 08:02
Matt-W moritz_: yeah me and my sister both. Not fun. 08:04
keepguessing do we have any good debuggers for multithreaded applications [I am asking for someGUI tool for debugging on linux...] 08:05
08:05 bacek_ left
masak keepguessing: is this a Perl 6 question? 08:05
keepguessing Ah masak ... appologies wrong place :) 08:06
masak keepguessing: seems so. :) mind you, people might still give you a good answer. I'd sure like to know about such a debugger.
keepguessing Hopefully masak :) 08:07
moritz_ I learned about verifying such applications, but never debugged them :-) 08:08
masak moritz_: sounds like a paraphrase of Knuth. :) 08:09
Matt-W I've never encountered a debugger that was very good at multithreaded stuff
masak Eclipse's debugger is OK, I guess.
Matt-W Tolerable
Visual Studio's is OK too 08:10
masak aye.
Matt-W (shame about the rest of it)
moritz_ masak: I know, but it's actually true :-)
masak moritz_: :)
moritz_ we used this tool: spinroot.com/spin/whatispin.html 08:12
masak what's the name of Perl 5's $0 in Perl 6? 08:13
$*PROGNAME ?
moritz_ thinks so
masak ok, would it be possible to extract the directory of the script from that variable? 08:14
moritz_ rakudo: say $*PROGNAME
p6eval rakudo 120364: OUTPUT«Use of uninitialized value␤␤»
masak more to the point, is a method specced somewhere that gives the directory of a file?
moritz_ in Perl 5 you can use Cwd::rel2abs(__FILE__) or so 08:15
masak let me just dream aloud a little: my $template-dir = Path.join( Path.dirname( $*PROGNAME ), 'templates' ); 08:16
something like that. modulo exact names of things.
moritz_ rakudo: print $*PROGRAM_NAME
p6eval rakudo 120364: OUTPUT«/tmp/vETupwS1cn»
masak ooh!
halfway there... 08:17
moritz_ notice that p6eval gives absolute pathes to rakudo
masak yes, good point.
moritz_ I don't know if it's absolute if the path on the command line is relative
masak no, it isn't.
and if it's an -e execution, the value is '-e'. 08:18
moritz_ just like in Perl 5 :-)
masak I can create a file called '-e'. when I execute that, I also get '-e' :) 08:19
probably not an issue to worry about...
moritz_ don't name your files '-rf *' 08:20
masak I won't.
moritz_ in case somebody does a run("rm $*PROGRAM_NAME") :-)
of course somebody who does that would deserve the result
pugs_svn r26871 | pmurias++ | [re-mildew] 08:23
r26871 | pmurias++ | fixed --valgrind
r26871 | pmurias++ | added make test-no-valgrind
08:23 pmurias joined 08:30 orafu left, orafu joined
finanalyst is there any way of getting some information about the last line of a program executed before a runtime error? 08:32
masak finanalyst: it's funny you ask...
finanalyst: this was added just a couple of days ago.
Matt-W It made us feel Christmassy
masak it's not perfect -- if you're in an anon block it won't tell you, for example.
moritz_ at least for Perl 6 level errors 08:33
for the famous Null PMC access not
masak that's because the famous Null PMC access shouldn't be exposed, at all. 08:35
hence, there's no need to provide a stacktrace. :) 08:36
moritz_ I disagree.
it would help finding the location nonetheless
ideally it would print the Perl 6 stack trace, and on top of that the PIR thing up to where the Perl 6 stack trace starts 08:37
I just don't know if that's doable, and worth the effort 08:39
Matt-W It would be nice to know what thing was null
And what it was trying to do to it
moritz_ I guess that's a non-trivial parrot limitation 08:40
Matt-W Otherwise it's no better than 'Segmentation fault'
moritz_ it's better in that it's not a security risk.
but it *is* parrot's equivalent of a segfault
Matt-W That is of very little comfort to the working programmer
moritz_ I know 08:42
finanalyst so if I do a git pull, the current rakudo will give more trace support ?
moritz_ aye
finanalyst thanx. trying
moritz_ rakudo: module A { sub b { die "foo" } }; A::b()
p6eval rakudo 120364: OUTPUT«foo␤in sub A::b (/tmp/qMhOlCvYNL:1)␤called from Main (/tmp/qMhOlCvYNL:1)␤»
moritz_ that's already much nicer than it used to be 08:43
08:51 orafu left 08:52 orafu joined 09:03 payload left 09:06 DemoFreak left 09:07 ejs2 joined
jnthn morning, folks 09:07
moritz_ oh hai jnthn 09:08
09:09 bacek joined
masak ako sa maš, jnthn. 09:10
(took me a while to find 'š' in the slovak input mode in LEIM.) 09:11
moritz_ heh, I just wrote my best commit message so far: 'be nice()' 09:12
09:13 orafu left
jnthn masak: Mam sa dobre, a ty? 09:13
09:13 orafu joined
masak jnthn: Mam sa výborný. :) 09:13
.oO( I might have gotten the ending wrong there... )
09:14
jnthn masak: No, it's correct.
masak oh, výborný. :)
what's this 'ý' thing, by the way? is it anything like the Russian 'ы'? 09:15
jnthn That probably wasn't though, since if you've not got something in the sentence to explicitly make you want the masculine form, you tend to to write the neuter form.
09:16 ejs1 left
jnthn No, it's pronounced just like "i" but it doesn't cause auto-paletization of anything before it. 09:16
masak oh, ok.
jnthn If you write various letter combinations, e.g. ti, ni, etc then the t or n in those is implicitly soft. 09:17
Whereas with ty and ny it wouldn't be.
masak jnthn: oh, so if I were female, 'Mam sa výborný' would be incorrect too? 09:18
jnthn masak: Yes.
masak jnthn: I get the auto-paletization thing. that's typically slavic.
jnthn *nod* Happens in Russian too.
masak there's a macro in Russian, 'ъ', for preventing auto-paletization. 09:19
jnthn From what I understood, it's quite rarely used these days. 09:20
masak yes, it got de-promoted in the beginning of the 20th century, in some spelling reform. 09:21
ah, shortly after the 1917 revolution.
09:21 payload joined 09:29 Gothmog_ left
jnthn masak: 65740 is closable now I think 09:30
jnthn needs to do $other_jobs for a bit
masak checks
rakudo: run('./perl6 -e "die q[OH NOES]" > /dev/null') 09:33
p6eval rakudo 120364: OUTPUT«OH NOES␤in Main (<unknown>:1)␤»
masak rakudo: run('./perl6 -e "die q[OH NOES]" 2>/dev/null')
p6eval rakudo 120364: ( no output )
masak seems fine to me. 09:34
masak closes
09:34 ejs1 joined, orafu left, orafu joined 09:36 payload1 joined 09:37 bacek left 09:39 pichina joined 09:40 bacek joined 09:41 sparc left 09:42 ejs2 left, payload1 left 09:44 payload left 09:45 jferrero joined 09:47 jferrero left 09:50 payload joined 09:51 pichina left 09:55 orafu left 09:56 orafu joined 09:57 presh joined 09:58 iblechbot joined 10:01 payload left, payload joined 10:04 NoirSoldats joined
pmurias ruoso: hi 10:06
ruoso: i'm wondering if writing a valgrind plugin to show the leaky objects as a graph would be a good idea 10:08
ruoso pmurias, it would be cool... but I'm afraid it would take too long
maybe just enabling the old MEM_TRACE
ruoso just woke up... need to go to work... 10:09
10:16 Gothmog_ joined, orafu left 10:17 orafu joined 10:19 bacek left 10:22 bacek joined
masak I sometimes feel the need to create a scope as an object, and run eval on that particular scope. has there been any discussion on that previously? 10:30
it would solve the REPL suckiness, and it would help in Hitomi, I think.
jnthn doesn't quite get what masak wants 10:31
masak jnthn: my $scope = Scope.new(); $scope.eval('my $a = 5'); #[ $a doesn't exist in this scope ] $scope.eval('say $a') # prints 5 10:32
maybe 'environment' or something would be a more appropriate term. 10:33
'context' :)
jnthn Persistent lexical store between evals? 10:34
masak that sounds like what I'd want, yes. 10:35
also known as 'working with your variables at arm's length'.
wayland76 I like the idea, I'm just not sure if "eval" is the word we want. 10:36
Because eval usually, as you point out, implies a scope. 10:37
jnthn aye
masak oh, call it something else if that feels better. :)
my question is: can it be done?
10:38 orafu left
wayland76 I just think that "eval" should replace the existing code, whereas what you want to do sort of appends more code , and execution continues from where it was 10:38
sort of like "tail -f" with execution or something
masak my proposal is a generalisation of eval, since eval always works on the current lexical environment. 10:39
10:39 orafu joined
moritz_ something like eval($code, $pad($pad_object)) 10:39
something like eval($code, :pad($pad_object))
masak it's worth thinking about whether closures constitute such lexical environments, and this generalized eval should simply be a method on Code, or something like that. 10:40
rakudo: my $a = {;}; say $a.WHAT
p6eval rakudo 120364: OUTPUT«Block()␤»
jnthn "run this code as if it's outer block was this"
masak on Block, then. 10:41
jnthn my $block = { my $x = 42 }; $block.eval_inner('say $x'); # or something
ruoso jnthn, I think at some point you'll need to expose the lexic 10:42
*lexical scope as a high level object
jnthn ruoso: Perhaps; I expect anything doing that is going to be highly platform specific though. 10:43
ruoso my $scope = LexicalScope.new; $scope<$a> = 5; eval 'say $a' :outer($scope);
masak ruoso: so it wouldn't be enough to consider a Block as its own lexical scope?
jnthn Lexical scopes are (in Parrot) immutable, at least by default.
ruoso so... 10:44
jnthn And I'd rather that didn't chang.e
ruoso my $scope = LexicalScope.new('$a'); $scope<$a> = 5; eval 'say $a' :outer($scope);
jnthn Yes, somehting more like that could work.
ruoso I'd be fine with it...
anyway...
ruoso commute & 10:45
10:45 ruoso left
Matt-W Whee! Found the deadlock 10:48
As usual it's a classic
masak Matt-W++
Matt-W Thread A takes lock A then wants lock B, but thread B already has lock B and is blocking on lock A
The trouble is now my colleague and I need to figure out how to make sure it can't happen
pmurias masak: having eval as method on LexicalScope instead of a multi is undesirable as the lexical scope don't know what your current language is
Matt-W Still, at least I managed to strip away the obscuring layers of several other threads which were wanting locks C and D, which those two threads had already taken 10:49
masak pmurias: agreed.
Matt-W This makes Form.pm look easy :)
moritz_ Matt-W: make thread B want lock A first too
10:49 szbalint joined
moritz_ Matt-W: even if it doesn't need it 10:49
Matt-W moritz_: it does need it, but it currently doesn't realise until too late
moritz_ Matt-W: but if all threads claim all locks in the same order, there can be no such deadlocks
Matt-W absolutely true 10:50
there is actually some doubt over whether it needs to hold lock B while it takes lock A
pmurias it could give back lock B and then take lock A and B in the correct order
10:54 payload left
Matt-W hmm it's looking like it doesn't need lock A at all 10:57
there's some really twisted stuff going on here. Can I get a job working on Rakudo instead please?
10:59 orafu left 11:00 icwiener joined
jnthn Matt-W: 'cus that's *never* twisted. 11:00
Matt-W: btw, your first assignment is to hunt down a GC bug cuasing a test fail. ;-) 11:01
moritz_ speaking of which, are we going to regress on slice.t for the release? 11:02
jnthn moritz_: May be wise do so in order to avoid lots of reports about it. 11:04
Plus I don't see it getting fixed before the release.
11:05 orafu joined 11:13 Avada joined 11:15 payload joined 11:19 amoc joined 11:20 donaldh left, donaldh joined 11:41 orafu left 11:43 orafu joined 11:53 amoc left 11:57 [particle]1 joined 11:59 [particle] left 12:02 szabgab left 12:06 [particle] joined 12:17 ruoso joined
ruoso bak! 12:18
pmurias ruoso: i'm working on making memcheck spit out a graph 12:20
12:21 [particle]1 left
ruoso cool 12:21
12:24 orafu left, orafu joined
pmurias ruoso: how are we going to distribute the modified valgrind? 12:27
ruoso pmurias, I guess you should cooperate with upstream instead of distributing it as a custom valgrind 12:28
pmurias you mean make it a decent patch instead of a quick hack ;) 12:29
ruoso yeah... ;
:)
masak I had t/spec/S32-io/IO-Socket-INET.t fail on me during make spectest, but when I run it independently, it succeeds. 12:35
12:39 [particle] left
pmurias ruoso: graphviz is the think i should be using to display the graph? 12:40
ruoso yeah... it certainly is the easiest thing to do... 12:41
pmurias dot is choking on overly big graphs :(
moritz_ you usually just need enough memory :-) 12:42
12:46 payload1 joined 12:49 payload left 12:50 abra joined 13:28 orafu left, orafu joined
pmurias ruoso: is just a simple graph showing the dependency of pointer addreses on each other usefull? 13:28
ruoso might be 13:32
13:34 ejs2 joined 13:40 skids joined 13:43 ejs1 left 13:46 payload1 left, lambdabot left 13:49 orafu left 13:50 orafu joined, lambdabot joined, PacoLinux joined
masak rakudo: $a = my $a 14:00
p6eval rakudo 120364: OUTPUT«Null PMC access in getprop()␤»
14:00 ejs1 joined
masak rakudo: my $a = ($a // 0) + 1; say $a 14:01
p6eval rakudo 120364: OUTPUT«1␤»
masak when exactly does a variable come into existence in Perl 6? 14:02
jnthn after the my $a
masak jnthn: not sure I grok fully what that means within a statement.
jnthn my $a = 14:03
masak is the first example valid?
Matt-W no
jnthn ^ from here you can use it
masak std: $a = my $a
p6eval std 26871: OUTPUT«Potential difficulties:␤ Variable $a is not predeclared at /tmp/1YJmrnyyvm line 1:␤------> $a = my $a␤ok 00:02 36m␤»
Matt-W because the $a is used before the my $a happens
masak fair enough.
jnthn Right, STD is right there.
masak so the second example is indeed valid?
jnthn afaik yes
14:03 bacek left
masak good. 14:03
jnthn masak: BTW, that's how my Dog $fido .= new works. 14:04
masak oh, right.
Tene morning all
Matt-W my Dog $fido = $fido.new, I assume
jnthn Since it de-sugars to my Dog $fido = $fido.new
masak Tene: oh hai!
Tene O HAI MASAK
jnthn Tene: lolz hai
masak Tene: today I've been to #python-genshi, talking with the nice Python people. 14:05
Tene I don't want to write blog post about inter-hll library loading until I get spec review from pmichaud.
But I got it working!
masak wow, cool!
Tene++
jnthn Tene++
Matt-W jnthn: and, if I understand correctly, after my Dog $fido, $fido is a Dog proto-object, so calling .new on it makes it give you a real Dog object
Tene gist.github.com/113308
masak Matt-W: except we call'em "type objects" now. 14:06
Tene It works the other direction too.
ruoso std: $a = my $a;
14:06 FurnaceBoy joined
p6eval std 26871: OUTPUT«Potential difficulties:␤ Variable $a is not predeclared at /tmp/RIZ73liR4O line 1:␤------> $a = my $a;␤ok 00:02 36m␤» 14:06
Tene But just in a branch, for rakudo.
masak Tene: wow, that's... wow. 14:07
Matt-W Tene: That is the best thing I've seen all day, by miles
(since all I've seen all day is my own utter stupidity, I may have to upgrade that to all week)
jnthn Matt-W: Correct.
Matt-W So now all we need is a completely correct working Perl 5 for Parrot, and we've got a migration path :)
jnthn Tene: That is The Awesome. :-) 14:08
Tene :) 14:09
masak Matt-W: it's surely a large project to port Perl 5 to Parrot. but I still think it could be done.
Matt-W: I've been looking for clues why the previous attempts failed. haven't found much.
Matt-W I think part of the problem is that Perl 5 is so nebulous
How do you know when you've got it right?
masak tests? 14:10
jnthn I suspect with Perl 5 the way it'll go is embedding.
14:10 ejs2 left
jnthn I've already pondered having a crack at embedding Perl 5 and seeing what it'd take ot make it look like a HllCompiler. 14:11
*to
Which would at least get us able to eval in Perl 5.
Then build it out from there.
avar What is required to build a HLLCompiler? I'm familiar with Perl embedding but not with parrot 14:12
ruoso jnthn, I always thought you would implement it as a parrot language as well
masak let's leave it open as a possibility, shall we? 14:13
it's a darned big project, but we gotta have something to look forward to after 6.0.0... :P
avar masak: The previous attempt (that Nicholas did) failed because Parrot was unstable and didn't implement much of the required features for getting anything basic working, but that was years ago and things might be more mature now.
masak avar: that was a reason I was hoping for.
Matt-W well Parrot's good enough for Rakudo, so...
masak it's definitely not stable, but definitely more stable than a few years ago.
Matt-W (mostly)
I didn't think Perl 5 was embeddable 14:14
avar Matt-W: *now* it is, but at the time I think you were lucky to be able to implement bc(1) on it:)
Matt-W avar: yeah it was a bit dodgy back then :)
avar Matt-W: Perl 5 is very embeddable, although the API isn't ideal, you can even inject your own ops, replace the runloop etc. 14:15
Which is what perl -d does (replace the runloop)
Matt-W interesting 14:16
that would perhaps be a far saner course than reimplementing it
avar Yes:)
14:17 _mg_ left
jnthn ruoso: I think embed but make it look as much as possible like you're dealing with a Parrot language has a much higher chance of success. 14:18
ruoso: I'm open to people trying other approaches too of course. But if I was going to help with one, I'm much more inclined to go for the quick win. 14:19
ruoso i see...
but I wonder if having the whole stack in Parrot wouldn't make the integration more powerfull
of course XS would be a problem 14:20
jnthn Right.
I just see far too many problems to solve with anything other than the embeding route.
ruoso but I wonder if a lot of what's in XS wouldn't be ported to parrot anyway
jnthn Which in itself will have enough difficulties anyway.
Matt-W I think embedding is definitely worth a try 14:21
A serious try
ruoso the harder issue is the way p5 recurses in the C stack
Matt-W and if it can be wrapped up in something that looks like a Parrot HLL, that'd be fantastic
ruoso I already consider a custom p5 for SMOP integration... 14:22
pmurias ruoso: Coro takes care of everything 14:24
14:24 skids left
ruoso not everything... when you 'require', it will still recurse in the C stack 14:25
14:27 skids joined
masak rakudo: multi infix:<o_O>(Str $a, Str $b) { ($a.comb Z $b.comb).join("") }; say "HloWrd" o_O "el ol!" 14:30
p6eval rakudo 120364: OUTPUT«Hello World!␤»
masak :->
Matt-W that's twisted 14:31
but rather entertaining
simcop2387 neat
masak Perl 6 is deeply neat.
jnthn omg.
Matt-W feels his internal counter remove a day until Christmas 14:32
Tene jnthn: eh?
14:32 ejs1 left
pmurias ruoso: Coro saves the C stack 14:34
jnthn Tene: Just being horrified/impressed by masak's infix. :-) 14:36
Tene ah
masak there's more where that came from! :P 14:37
not right now, though... 14:38
Matt-W rakudo: multi postfix:<:-)>(Str $a) { $a ~ " :-)"}; say $a :-) 14:42
bah
p6eval rakudo 120364: OUTPUT«Scope not found for PAST::Var '$a' in ␤in Main (src/gen_setting.pm:3122)␤» 14:43
Matt-W think before you type
rakudo: multi postfix:<:-)>(Str $a) { $a ~ " :-)"}; say "A" :-)
p6eval rakudo 120364: OUTPUT«A :-)␤»
Matt-W I can cause so much mess with this
muahahaha
Matt-W rewrites Form to use custom operators instead of subs
Can we do circumfix operators yet? 14:44
masak Matt-W: try it!
Matt-W I can't think of one now 14:47
Tene yes, we can.
Matt-W woohoo!
Tene rakudo: sub circumfix:<` `> ($a) { say "omg dood: $a" }; `"matt-w"`
p6eval rakudo 120364: OUTPUT«omg dood: matt-w␤» 14:48
Tene I have a local library I haven't committed anywhere that uses ⦃ 1, 3, 5 ⦄ to define a set.
That's what i implemented the circumfix ops for, actually. 14:49
blogs.gurulabs.com/stephen/2009/05/...m-ops.html
Matt-W nifty
masak mberends: DO YOU REALIZE WHAT THIS MEANS!?!? 14:51
masak calms down a bit
mberends: ahem. it means that we can work around the lack of `...` in Rakudo using a syntax that looks exactly like that. 14:53
mberends: it should even be possible to make it forwards-compatible. :)
ruoso masak, it doesn't really look like... because of the extra " " 14:56
masak oh no... :/
masak didn't think of that
oh well, it's back to oval seven, then. 14:58
15:03 lambdabot left, wayland76 left 15:04 lambdabot joined, wayland76 joined 15:20 donaldh left, donaldh joined
masak actually, I'm not sure where the `...` effort stalled this time. ISTR writing to the Parrot list, and people answered, "yes, we'll get to it". 15:28
pmichaud good morning, #perl6 15:29
masak mornin', pmichaud. 15:30
pmichaud (custom circumfix) I should note that the current code for defining custom circumfixes may be particularly fragile
masak pmichaud: it seems there will indeed be a Perl 6 hackathon in Stockholm by the end of this month.
pmichaud masak: excellent. So, "Stockholm" for this month's release? Or should we wait? 15:31
jnthn hi pm
masak I think this month is fine.
pmichaud same possibly for postcircumfix. 15:32
jnthn pmichaud: custom postcircumfixes just don't work.
pmichaud that's what I would expect.
jnthn Tried that one already.
;-) 15:33
masak pmichaud: all this talk about fragility... is that an invitation to stress-test some particular aspects of the circumfix operators? :)
jnthn I was surprised custom circumfixes work.
pmichaud jnthn: they "work" only through luck, I suspect.
masak: you can stress test them if you want, but fixing them will require protoregexes.
masak aha.
masak remembers discussions about protoregexes from August 15:34
moritz_ back then I wrote something about why they are so important
along with LTM
15:36 cspencer joined 15:38 Psyche^ joined 15:41 meppl joined
pasteling "pmurias" at 78.8.5.128 pasted "how the leaks in an "1;" look like" (856 lines, 21.5K) at sial.org/pbot/36688 15:42
15:42 Avada left
ruoso pmurias, I've isolated a less verbose leak case 15:44
pugs_svn r26872 | ruoso++ | [re-smop] add another test that shows a memory leak;
pmurias with --empty-setting we have 6 leaks
Tene pmichaud: did you see my mail? 15:45
pmichaud Tene: I'm catching up on email now. 15:46
Tene OK
pmichaud I'll jump directly to it if you can tell me the subject line :-)
nm, I found it.
Tene inter-language library loading spec (and implementation) 15:47
pmichaud I think it was to be named 'load_library'
Tene That seems semantically odd to me, but allison felt the same way, so sure. 15:48
pmichaud it does actually load the library, doesn't it?
Tene rakudo, for example, will only *load* the library the first time it's asked for it.
if I ask for the library again, it just returns the cached copy.
pmichaud that's consistent with 'load_bytecode', fwiw 15:49
Tene Yeah.
I don't actually feel strongly about it.
pmichaud the return value is a hash?
ruoso lunch &
Tene I didn't know exactly what should be returned, so I thought i'd stuff all potentially relevant information into a hash.
pmichaud part of me wants it to be a Capture
so we can have positional and named return values. 15:50
but a Hash is fine for now. 15:51
(less complications to worry about)
why is name: ['list', 'of', 'strings'] ?
why not name: 'list::of::strings' ?
Tene use Foo::Bar; import Foo.Bar; require 'Foo/Bar' 15:52
different languages represent libraries differently, but a list of strings seems fairly universal.
pmichaud I don't understand. Each compiler already has its own "parse_name" method that would dtrt with a string.
Tene So it's up to the requesting language to split the name according to their own conventions. 15:53
pmichaud oh, from the requesting language's perspective... hmmm...
Tene Right. From perl, I want to say: use Foo::Bar:lang<python>;
jnthn I don't think the language we're tyring to import the module from should have to know about how to parse modules names from the requesting language.
Tene not use "Foo.Bar":lang<python>; or whatever 15:54
pmichaud right
okay, makes sense to me.
jnthn Plus parse_name would assume the import syntax matches the other names syntax, which holds in Perl but I ain't 100% sure about everywhere else...
15:55 Patterner left, Psyche^ is now known as Patterner
pmichaud would it make more sense for the name argument to be a required positional, instead of a named argument? 15:55
i.e., compiler.'fetch-library'($P0) instead of having to build a 'request' hash for it?
Tene That certainly might make more sense. 15:56
I'm not opinionated about that.
pmichaud I mean, parrot supports true named parameters, we might as well use them :-)
Tene The only question is whether it's an issue requiring all languages to have a slurpy named parameter in the function signature. I suspect not. 15:57
pmichaud I would think "not" -- this is a HLLCompiler object, after all. 15:58
Tene Right.
pmichaud I suppose one might want to create the HLLCompiler object methods in $otherlang... but in that case they can easily shim the slurpy nameds to match the interface.
15:59 exodist joined
Tene That was my original hesitation, yes. 15:59
pmichaud since the rest of pct makes use of named arguments and parameters, I'm not sure this is the place to make a distinction. :-) 16:00
16:00 justatheory joined
Tene Yes, agreed. 16:00
pmichaud Anyway, I'm very happy with this.
"Make it so." :-)
Tene It's not perfect, there are still a few edges that don't work quite right... 16:01
for example, use Foo:lang<bar>; doesn't register Foo as a symbol for the compiler, doesn't create a Foo namespace, etc.
pmichaud: it's already so. look at the hll-load-library branch in rakudo. 16:02
merge it to master and it will be implemented in rakudo and cardinal. the only other big step is adding a similar method to the PIR compiler.
pmichaud iiuc, use Foo:lang<bar> shouldn't create a Foo namespace as much as it binds a "Foo" lexical into the current scope. 16:04
Tene Yes, it doesn't do that either. Yet.
pmichaud although that Foo lexical really probably ought to be a type-object
Tene It does work for importing the symbols from the remote namespace, though, as the paste demonstrates.
So adding additional data to support that should be easy. 16:05
pmichaud correct.
Tene Anyway, can we get that branch merged into rakudo before the release?
pmichaud if you merge it, yes :-)
pmichaud wields his +1 sword of delegation.
Tene Pushed. 16:07
masak that was fast.
Tene pmichaud: can you point out the right place for me to add this to the parrot compiler? I might have time to do that today. Or would oyu prefer to wait until after the parrot release? 16:08
pmichaud Tene: parrot compiler meaning HLLCompiler or something else I'm not thinking of at the moment?
Tene use Foo:lang<PIR>;
or :lang<parrot>
or whatever is appropriate there. 16:09
pmichaud do we have a 'parrot' compiler yet?
or are you proposing to create it?
Tene There's a registered PIR compiler, at least.
pmichaud yes, but it's not a HLLCompiler, nor does it have methods.
Tene ah.
pmichaud my idea has been to create a 'parrot' HLLCompiler, that does support the method interface 16:10
Tene Yes, me too.
Loading parrot libraries from rakudo has been a long-requested feature.
pmichaud well, those libraries will also need to support the exporting interface
Tene well, as long as they're in a namespace corresponding to their filename, it shouldn't be an issue. 16:11
the parrot compiler's fetch-library or load-library will just need to locate the .pir or .pbc, load it, and fetch from the namespace.
dalek kudo: f77ad8a | tene++ | perl6.pir:
Initial implementation of the fetch-library method on the compiler.
kudo: 1639d85 | tene++ | (6 files):
Switch rakudo to register itself as a compiler for 'perl6' (lowercase)
kudo: 6b43f5d | tene++ | src/ (2 files):
Add support for loading foreign libraries.
kudo: 23faa00 | tene++ | perl6.pir:
Add the namespace to the hash returned by foreign library requests.
kudo: 26dfbab | tene++ | :
Merge branch 'hll-load-library'
pmichaud so, it would assume that all symbols are exported?
16:13 pmurias left
Tene That seems reasonable enough for pir-level libraries. If that's awkward for you, just ask that no symbols be exported and look them up individually, perhaps, or specify locally what symbols you want from the library. 16:13
16:13 masak left
Tene (Which rakudo doesn't support now, and I'm not sure if that's specced) 16:13
pmichaud I think that's a bit of a problem for pir-level libraries, personally.
Especially since methods still place themselves in the namespace by default. 16:14
Tene Well, we'll delay that until after the Parrot release, then, to try to work something out.
pmichaud Yes, I think that might be better. 16:15
Tene I'll at least add this to pynie today, though.
pmichaud okay, that sounds good.
Tene :)
(Cardinal doesn't quite count as a real language :) )
pmichaud we should probably have the 'parrot' HLLCompiler provide some helper methods to make it easier for PIR-based libraries to indicate what should be exported.
16:18 awarefish joined 16:19 finanalyst left 16:21 rewt joined 16:24 cspencer left
TimToady @tell JDlugosz yes, S11:573 specs the separate compilation principle that implies each modules starts in its own SETTING 16:25
lambdabot Consider it noted.
ruoso TimToady, hi... it would be interesting if you review the conversation I had with JDlugosz in the weekend... I said a lot of things, and it would be nice if someone sees if they are correct or not ;) 16:29
TimToady, the most important being (1,2,3;4,5,6) is equivalent to ((1,2,3),(4,5,6) 16:31
)
16:34 cspencer joined 16:41 payload joined, ZuLuuuuuu joined 16:45 cdarroch joined 16:53 barney joined 16:55 cspencer_ joined, cspencer left 16:56 ZuLuuuuuu left, cspencer_ left, cspencer joined 17:06 cspencer_ joined, cspencer left
TimToady ruoso: yes, haven't finished backlogging, but both of those are CoC 17:06
we still use the term "list" in places we really mean capture 17:07
17:07 cspencer_ left, cspencer joined 17:15 ejs joined 17:28 abra left
cspencer perl6: class Foo { constant Num bar is export = 42 }; say "bar: " ~ bar 17:29
p6eval pugs: OUTPUT«*** ␤ Unexpected "bar"␤ expecting ":" or "("␤ at /tmp/LMrUPpES6k line 1, column 26␤»
..rakudo 26dfba: OUTPUT«Null PMC access in get_string()␤»
..elf 26872: OUTPUT«Permission denied at ./elf_h line 324.␤»
cspencer std: class Foo { constant Num bar is export = 42 }; say "bar: " ~ bar
p6eval std 26872: OUTPUT«Undeclared routine:␤ bar used at 1 ␤ok 00:04 36m␤»
17:30 M_o_C joined 17:36 eternaleye left
TimToady constants are lexically scoped 17:38
ruoso TimToady, note the "is export" 17:39
TimToady and nothing defines what to do with "is export" yet
on inlined code
ruoso ah... right... sure
TimToady it's not clear whether they should be auto-inline-imported or not
ruoso I'd say it shouldn't
TimToady but then what's the syntax for doing so?
use class {...} is kinda bogus 17:40
ruoso import Foo;
TimToady class is used {...}
ruoso runs
TimToady import my class Foo {...} could work
ruoso it doesn't even need to be in the same declaration...
"import Foo" would look for Foo as a package, and run Foo::.EXPORTALL; 17:41
TimToady except in this case, it is a declaration
unlike p5's runtime import
17:41 DemoFreak joined
TimToady or it doesn't happen soon enough 17:41
inline my class {...} or some such maybe 17:42
ruoso TimToady, but a keyword to import the symbols from an arbitrary package is missing
since require implies loading a module by the file 17:43
and it can even be compile-time
TimToady that's why I was proposing a keyword :)
ruoso ah... right... so you mean "import Foo;" would also be possible 17:44
moritz_ somehow the rss feed of rakudo.org doesn't match what's on the page
TimToady or "inline Foo", if the import is just the underlying method
inline basically being short for "inlineuse" 17:45
or "embed" maybe
ruoso hmm...
TimToady maybe not 17:46
the metaphor I'm looking for is that normally this is a separate file, but we're putting it here
ruoso I kinda think "import" does express the correct semantics
TimToady "immediate"
except not to P5ers
mabye can switch it 17:47
ruoso but Foo might have been declared somewhere else
TimToady point is you give it an argument indicating a module
inline my class Foo {...} is still just an arg to inline
ruoso suppose you just want to import using a different tag in some scope 17:48
TimToady much like in "use Module $foo", $foo is just an arg evaluate at compile time
ruoso module Foo { sub foo is export(:bla) {}; sub bar is export(:ble) }; { import Foo :bla; foo() } { import Foo :ble; bar() }; 17:49
TimToady we can redefine "use" as "BEGIN{require};import"
then import could be compile-time
it will give pyfolk the heebeejeebies 17:50
and instead of calling an "import" in the module, it should implicitly call an "export" routine, probably 17:52
ruoso EXPORTALL actually
TimToady I could live with that
why ALL?
ruoso it's in S11
but I guess it accepts ALL the tags you ask 17:53
TimToady I didn't write that part of the spec. :) 17:55
and it's not exactly clear what it means 17:56
and in any case, the current example of nested modules is probably wrong, if we require explicit import from inlined modules
pugs_svn r26873 | moritz++ | [t] remove test for unspecced feature ("is value" trait)
18:11 fridim_ joined
ruoso TimToady, I always thougth that example to be weird 18:14
pugs_svn r26874 | moritz++ | [t/TASKS] remove task for delete file 18:22
r26875 | moritz++ | [t] remove obsolete object_id.t
18:24 barney left 18:34 awarefish left 18:37 angelixd joined 18:39 dduncan joined 18:47 cspencer_ joined, cspencer left 19:05 spx2_ joined
dalek kudo: 798856d | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 390 files, 11294 passing, 0 failing
19:16
19:16 spx2 left 19:20 donaldh left, donaldh joined, hercynium joined 19:30 cspencer_ left 19:37 rewt left 19:46 Jurek joined, Jurek left 19:50 rewt joined 19:53 payload left 19:57 frew|work left 19:59 kane_ joined, kane_ is now known as kane[laptop] 20:11 lichtkind joined
lichtkind @seen masak 20:12
lambdabot I saw masak leaving #perl6 3h 58m 24s ago, and .
Tene hi lichtkind. 20:14
what's up?
lichtkind Tene: im just urging to become the first real november user :) 20:15
Tene: and want to since up with the guy who makes the gsoc work on p6 doc 20:16
since im maintainer of Perl6::Doc
20:16 jferrero joined
lichtkind Tene: yeah and im currently writing the article i had deliver 2 days ago :) 20:16
jnthn Tene: ping 20:17
20:17 jferrero left
Tene jnthn: pong 20:17
jnthn hi
Got a moment for some exception-y questions?
Tene I do.
jnthn OK, so I'm trying to find, from an exception, where we were when the exception was thrown.
Tene what specifically do you want? 20:18
jnthn I'd assumed that all exceptions had a resume cont. But, they don't...
Tene ah.
c-level exceptions don't.
jnthn OK
Tene :(
jnthn I've just been trawling through the code to find any way to work this out though.
Tene i couldn't figure out how to make a resume cont from C, nor what it would mean to invoke it.
jnthn And haven't come up with much.
I don't need a resume cont really, I just need to know the place we were at (down to the nearest PIR location is fine) when it was thrown. 20:19
Tene now, exceptions do have a backtrace attribute.
jnthn Aye. It was null...
Tene I don't know what's in it... Ah.
jnthn And I didn't find what sets it.
Tene Yes, this matches what i found.
20:19 cdarroch left
jnthn If we could find out the current exception handler we were running, then in theory we could look at it's from_ctx since it inherits from Continuation. 20:20
Tene but look at pdb_backtrace
jnthn (Though not totally sure how we'd do that either.)
Tene vim -t PBD_backtrace
jnthn But then after pondering that I noticed that exceptionhandler overrides invoke and doesn't set from_ctx... 20:21
Well, the thing about PDB_backtrace is that it just does
Parrot_Context *ctx = CONTEXT(interp); 20:22
And starts looking from there.
Tene Right.
jnthn That works just fine before we invoked the exceptionhandler.
Tene When you're in an eh, the caller is the place the exception was thrown from.
wait, yeah, you're right.
jnthn But ExceptionHandler is a continuation, so we end up without it as a caller.
Though I tried looking at the current caller_ctx first too... :-) 20:23
20:23 meppl left
jnthn Then realized...no...that won't work. :-( 20:23
20:25 payload joined, payload left, payload joined
Tene jnthn: I suspect it's likely that eh *should* set from_ctx 20:27
jnthn Tene: OK, that's an easy enough change, but then how do I know what eh I am currently in?
As in, from the .backtrace() method of Exception?
Tene jnthn: ask the interpreter.
walk the call chain up?
jnthn Ah, yes. 20:28
20:28 pmurias joined
jnthn OK, let me try that... 20:28
pmurias ruoso: the test you commited seems to show a use of a dead value not a leak 20:29
Tene jnthn: To be clear, my main message is "I couldn't get it working either" and "I'm very much convinced that exception handling in Parrot is incorrect in various ways, whis being one of them"
jnthn Tene: Oh, argh...wait.
ruoso pmurias, is it the test's fault? or is it really a bug?
pmurias, it does say it as a memory leak in the valgrind report 20:30
jnthn Tene: It appears that there is no from_ctx on a cont; I mis-read.
Tene ah
pmurias ruoso: checking... 20:31
jnthn Tene: oh, wait, there is...
I just can't see where we populate it.
pmurias ruoso: not in HEAD 20:33
ruoso hmm... weird...
20:33 ejs left
jnthn Tene: OK, I'm thoroughly confused... 20:33
ruoso oh wait...
pmurias, you're right...
Invalid read of size 4 20:34
ruoso eyes--
Tene jnthn: :)
jnthn struct Parrot_Context *from_ctx; /* sub, this cont is returning from */
Tene: It feels to me what we really want is just something on Exception that says "who threw me". 20:36
Tene That would not be out of place at all. 20:37
That would be completely appropriate, iMO.
jnthn OK, how would you go about it though? I mean, we have a Parrot_Context...
But that's hard to attach. 20:38
(Since it's not a PMC, and we already use set_pointer for something else...at least, it's hard without poking into the exception's guts).
We could attach the current ret_cont which points to the correct context though. 20:40
And note to attach a context PMC when we have one.
Tene jnthn: add an attribute to Exception.pmc and add a method to get/set the location it was called from.
don't futz with get/set pointer. 20:41
or other overrides.
jnthn What would it return for getting it though?
Can't be a continuation, and can't easily be a context (since they're not a PMC) 20:42
(On that note, what to pass for setting too...)
pmurias ruoso: it's a more serious error
jnthn I'm happy enough to make it set-only for now.
ruoso pmurias, does that mean you found it? ;)
Tene jnthn: for a workaround for now, you could just add a method to exception.pmc that would build a backtrace report string and return it. 20:43
pmurias no :(
Tene it would be fairly special-use, but wouldn't be too out of place... maybe pending on whiteknight's work on context pmcs? 20:44
jnthn Tene: Yeah, when we have context PMCs this all gets a bunch easier. 20:45
Tene jnthn: so I wouldn't feel bad about stuffing a context pointer or some such in an attribute and having a method to return a string for now, and punt until later.
20:48 bacek joined
jnthn Tene: OK, sounds good, I'll do something along those lines with comments to that effect. 20:50
pmurias ruoso: a commented RELEASE of mold in Code 20:52
20:54 frew|work joined
ruoso pmurias, hmm... commented RELEASE sounds like trouble... 20:55
does uncommenting that solve the problem?
Tene jnthn: also add a reference to the appropriate ticket 20:56
20:56 pmurias_ joined
ruoso decommute & # headache-- 20:57
20:57 ruoso left
jnthn Tene: nodnod 20:57
20:57 pmurias left 20:58 pmurias_ is now known as pmurias 21:00 icwiener left
pugs_svn r26876 | moritz++ | [S02] get rid of the each() comprehension 21:08
r26876 | moritz++ | [S09] document speculative each() junction with grep semantics
21:10 Chillance joined 21:11 Chillance left, Chillance joined 21:12 Chillance left, Chillance joined 21:13 pmurias left
jnthn woohoo 21:16
Null PMC access in getprop()
in method A::b (crash2.p6:3)
(followed by correct bt)
moritz_ jnthn++
jnthn Tene: Want to peek at my patch?
Tene jnthn: sure
pugs_svn r26877 | moritz++ | [t] remove now officially deprecated each.t 21:17
moritz_ never thought that deleting other people's work could be so satisfying ;-)
jnthn Tene: gist.github.com/113752
Tene: Am running tests too. 21:25
Tene jnthn: that looks mostly okay to me... I'm not very awake right now, though. 21:27
21:39 NoirSoldats left, NoirSoldats joined 21:40 ElectricHeavyLan joined
pugs_svn r26878 | pmurias++ | [re-smop] comment RELEASE 21:40
21:44 tulcod joined
tulcod final perl 6 specification: this year/next year/within three years/within five years/within ten years? 21:44
jnthn Tene: There was one problem with it, didn't handle context memroy management as it should have...
Tene: Fixed that, comitting now...
Tene tulcod: when we have everything tested and implemented. 21:45
tulcod will it take at least three years?
Tene tulcod: when we have everything tested and implemented. 21:46
this is being done by a volunteer effort.
tulcod i got that
moritz_ if you help, it will be faster ;-)
tulcod but i mean.. how much work is still left?
Tene We have no paid employees.
There is a certain undefined amount of work left to do. We'll be done when we've finished that amount of work.
tulcod so it'll take at least three more years? 21:47
Tene rakudo.org/status shows our general rate.
moritz_ tulcod: there are major subsystems which are not done yet, and it's hard to estimate how much work they are
tulcod ah :)
moritz_ for example concurrency
or Unicode levels for strings
jnthn tulcod: You may also find it interesting to ask, not just how much is left (which is very hard to answer) but how much has been done already.
Tene It's been estimated that a complete spec will include maybe about 20k tests, at a vague guess.
I've heard different estimates from different people.
tulcod jnthn: well, hwat has been done already? :) 21:48
Tene So we're maybe around halfway done.
For some definition of "halfway"
tulcod Tene: hm, i see
moritz_ object system, multi dispatch, regexes and builtins have mostly been done by now
jnthn tulcod: The status page Tene pointed you at gives a good overview of where Rakudo - Perl 6 on Parrot - is at.
Tene tulcod: It's not so much a matter of time as it is a matter of there's still a lot of work to do, and we're relying on volunteers to do it.
We're making good progress for now... but as you can see, we've sometimes gone for a while without much progress. 21:49
tulcod Tene: yeah, i understand it's all a matter of people wanting to do it :)
Tene If Jonathan gave up, for example, it would take *much* longer.
If we got a second Jonathan, it would be *much* faster.
tulcod jnthn: hm, i guess the regexes were most of the work?
Tene So even one person can make a huge change in the amount of time. 21:50
moritz_ Tene is right, jnthn's absence can be seen in the graph pretty easily
jnthn Tene: If you got a second Jonathan, they'd probably just go to the pub together and get nothing done. ;-)
tulcod Tene: auch - this project has a bus factor of 1.5?
moritz_ tulcod: that's hard to say... the regexes aren't done in Rakudo itself
tulcod hm, i guess that's true
moritz_ bus factor of 1.5 to 2, I'd say 21:51
jnthn tulcod: The regexes are a lot of effort, but far from the only bit thing. But yes, they are a bit part of what has been done so far and what remains.
Tene tulcod: pmichaud is the other big contributor.
jnthn erm, only *big* thing
tulcod Tene: okay, that's good to know :)
jnthn Tene also contributes awesome stuff. ;-)
moritz_ like cross-language library loading, today ;-)
Tene tulcod: I think we *could* still get something finished if they both left us, but it would take a lot longer. 21:52
21:52 [particle]- left
moritz_ or was that yesterday? /me confused.. 21:52
21:52 Whiteknight joined
tulcod so is it easy to get started on the rakudo source, or is there quite a learning curve (close to gcc's)? 21:52
jnthn is still very happy to see that.
Tene moritz_: time zones. :)
tulcod: it's very easy to get started, IMO.
Depends on your existing knowledge and experience, though.
tulcod is there any documentation?
moritz_ sure
Tene but, developing tests is very easy
and a great way to get started
tulcod Tene: well, i never really worked on a big project... i have read code of fairly big projects, though
Tene there are still many tests to be written.
moritz_ there's the docs/ sub directory in Rakudo 21:53
tulcod interesting
Tene I can give you a commit bit for the tests right now, if you'd like.
tulcod nah, i guess i should read up on stuff first
plus, i'm currently having my final exams, so i shouldn't really be having this chat atm
Tene tulcod: also, this irc channel is very helpful... we're all glad to help you however we can.
moritz_ and perlcabal.org/syn/ for the language specification (don't expect to understand it all on first read)
Tene :)
tulcod Tene: well yeah, most projects hide behind mailing lists
jnthn Perl 6 can turn into a...big...distraction. :-)
But a very interesting and fun one. 21:54
21:54 skids left
Tene tulcod: there's also a fairly good mailing list, I hear. I don't do so well on mailing lists. I prefer IRC. 21:54
tulcod Tene: see: you don't even use the mailing list, apparently
that would be impossible in 95% of all other serious projects
moritz_ that depends on how you want to contribute 21:55
if you just ask in the IRC channel "anything I have to read before I implement $feature?", that's fine I think 21:56
tulcod hm 21:57
well, you might find me back in a week or two :)
moritz_ that would be nice 21:58
tulcod can't promise anything though, my interest moves every day
jnthn tulcod: There's lots of different interesting things in Perl 6. ;-) 21:59
tulcod: Good luck with the exams, BTW.
tulcod jnthn: thanks :)
jnthn Tene: Comitted patch with tweak to manage context memory right.
Tene :) 22:00
jnthn++
jnthn Was very keen to get this patched up before the next release.
22:01 tulcod left
dalek kudo: 9d2934e | jnthn++ | build/PARROT_REVISION:
Bump Rakudo up to Parrot r38916, to take advantage of the fixes to exception backtrace generation and hll_map of MultiSub.
22:03
jnthn I sneaked MultiSub HLL mapping in too. ;-) 22:04
22:04 iblechbot left
jnthn (Actually wrote taht patch on Friday and never comitted it.) 22:04
22:09 kane[laptop] left 22:16 alester left 22:17 jferrero joined
pugs_svn r26879 | pmurias++ | [re-smop] MildewSOLoader uses dlclose 22:18
22:20 M_o_C left
s1n Tene++ for that LolDispatch :) 22:34
22:37 cognominal left 22:38 lichtkind left 22:41 meppl joined 22:42 mikehh_ joined 22:45 mikehh left
Tene jnthn: does that mean we can get sub in class working now? 22:46
22:47 mikehh__ joined 22:48 mikehh__ is now known as mikehh
jnthn Tene: It's on piece, others are in a (Rakudo) branch. 22:52
Tene jnthn: let me know if you want help there.
jnthn Tene: Basically, there's some work to do before we can let everything just be a Perl6MultiSub.
Tene: You're very welcome to help. :-) 22:53
Tene: First issue is that Perl 6 multi-dispatch only works if it can find/generate a Signature.
Tene: So before all the operators can become Perl 6, they need to respond properly to .signature 22:54
I'm pondering that in the absence of a candidate having a signature, we'll check it's arity and generate an (Any, Any) style one.
22:54 nsh joined
jnthn That'd get us all the non-override ops. 22:54
Then there'd be a little manual fix-up for others.
We will be able to rip out the code to generate the junction variants, since Perl6MultiSub handles junctions for us. 22:55
gen_whatever will need a fix but should be straightforward.
Then it'll be looking at what's left over. 22:56
But anyway, should ween us completely of Parrot's MultiSub.
23:00 exodist left 23:01 DemoFreak left, mikehh_ left 23:05 NoirSoldats left
Tene :) 23:13
23:18 dduncan left 23:20 donaldh left, Trey left, Chillance left, donaldh joined 23:28 skids joined 23:35 bacek left