Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2009-03-25

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:04 jnthn Hmmm....after state vars some of http://svn.pugscode.org/pugs/t/​spec/S04-closure-traits/start.t should be relatively easy to make happen.
00:11 justatheory joined #perl6
00:25 eternaleye joined #perl6
00:30 unitxt joined #perl6
00:40 unitxt left #perl6
00:55 eternaleye joined #perl6
01:13 nihiliad joined #perl6
01:52 kimtaro joined #perl6
02:09 kimtaro joined #perl6
02:14 justatheory joined #perl6
02:25 agentzh joined #perl6
02:41 c9s joined #perl6
02:44 takadonet joined #perl6
02:44 meppl good night
02:45 takadonet hey everyone
02:53 justatheory joined #perl6
03:03 mncharity joined #perl6
03:03 Topic for #perl6is now  http://perl6-projects.org/ | nopaste: http://sial.org/pbot/perl6 | evalbot: 'perl6: say 3;' | irclog: http://irc.pugscode.org/
03:06 kimtaro joined #perl6
03:07 takadonet left #perl6
03:12 mncharity rakudo: my $f=sub ($n){$n+1}; say $f(2);
03:12 p6eval rakudo 9a84c3: OUTPUT«3␤»
03:13 alc joined #perl6
03:14 Kisu joined #perl6
03:16 msmatsko joined #perl6
03:18 justatheory joined #perl6
03:40 ab5tract joined #perl6
03:45 nww joined #perl6
03:51 pugs_svn r25990 | putter++ | [elf] Tidying up.
03:51 pugs_svn r25990 | putter++ | elf_h_src/: 'self.' -> '$.' .  elfish: Removed empty directories, and deleted obsolete elfish/AST/Ast.pm.
04:29 nww left #perl6
04:30 amoc joined #perl6
04:33 sklm joined #perl6
04:33 amoc joined #perl6
04:43 cnhackTNT joined #perl6
04:46 OuLouFu joined #perl6
05:15 viklund`` joined #perl6
05:22 aaabbbccc joined #perl6
05:31 nww joined #perl6
05:32 parduncia joined #perl6
05:41 Tene_ joined #perl6
05:57 nww left #perl6
07:06 pugs_svn r25991 | szabgab++ | testing index() with junction
07:21 moritz_ szabgab: type checks are better made with isa_ok()
07:21 moritz_ szabgab: and is() doesn't autothread, because most of the time it's a test error to pass a junction to is(), so better write that as 'ok $res == 1, "description"'
07:22 szabgab ok
07:23 szabgab i guess the same with eq, right ?
07:23 moritz_ right
07:24 szabgab actually I wanted to write a function same_junctions($this, $that)  or some similar
07:24 moritz_ please do
07:25 xinming joined #perl6
07:25 moritz_ that would help us once .eigenstates is gone
07:26 moritz_ because all the "bad" code  is then concentrated in that function
07:26 szabgab oh, I wanted to use .eigenstates for that ...
07:27 moritz_ you can do that for now
07:28 moritz_ it's better to have a deprected method used in one function than all over the place in the test suite
07:28 szabgab yeah but I was working on something totally different just noticed this unfinished test and committed it :-)
07:28 moritz_ well, no hurry
07:28 moritz_ will you fix it, or should I?
07:29 goksie joined #perl6
07:30 szabgab fixing now
07:33 pugs_svn r25992 | szabgab++ | some Junctions related test cleanup
07:37 szabgab moritz_, did you mean that ?
07:38 moritz_ szabgab: yes, exactly
07:39 moritz_ well, nearly ;-)
07:39 moritz_ rakudo: use Test; plan 1; isa_ok(1|2, "Junction");
07:40 p6eval rakudo 9a84c3: No output (you need to produce output to STDOUT)
07:40 moritz_ rakudo: say "alive"
07:40 p6eval rakudo 9a84c3: OUTPUT«alive␤»
07:41 moritz_ rakudo: use Test; say "alive"
07:42 p6eval rakudo 9a84c3: No output (you need to produce output to STDOUT)
07:42 moritz_ ah, Test.pm isn't precompiled on p6eval's server
07:42 moritz_ rakudo: use Test; say "alive"
07:42 p6eval rakudo 9a84c3: OUTPUT«alive␤»
07:42 moritz_ rakudo: use Test; plan 1; isa_ok(1|2, "Junction");
07:42 p6eval rakudo 9a84c3: OUTPUT«1..1␤not ok 1 - The object is-a 'Junction'␤# Looks like you failed 1 tests of 1␤»
07:43 moritz_ rakudo: use Test; plan 1; isa_ok(1|2, Junction);
07:43 p6eval rakudo 9a84c3: OUTPUT«1..1␤Null PMC access in get_integer()␤current instr.: 'parrot;Junction;!type' pc 9169 (src/classes/Junction.pir:180)␤»
07:43 szabgab ah you want the () around it ?
07:43 moritz_ no
07:43 moritz_ actually I want no quotes around the type name, but I guess it should work with quotes as well
07:44 szabgab :1
07:44 moritz_ but why the heck do we get that Null PMC access?
07:45 moritz_ rakudo: use Test; plan 1; isa_ok(1, Int);
07:45 p6eval rakudo 9a84c3: OUTPUT«1..1␤ok 1 - The object is-a 'Int'␤»
07:45 moritz_ rakudo: use Test; plan 1; isa_ok(1, "Int");
07:45 p6eval rakudo 9a84c3: OUTPUT«1..1␤ok 1 - The object is-a 'Int'␤»
07:45 moritz_ ok, it works with quotes as well
07:45 moritz_ no need to worry about that one
07:46 moritz_ rakudo: say (1|2).isa(Int).perl
07:46 p6eval rakudo 9a84c3: OUTPUT«any(1)␤»
07:46 DemoFreak joined #perl6
07:46 moritz_ rakudo: say (1|"str").isa(Int).perl
07:46 p6eval rakudo 9a84c3: OUTPUT«any(1, 0)␤»
07:49 moritz_ so it .isa autothreads
07:51 moritz_ anyway, thanks for the fixes szabgab
07:52 szabgab another issue if I am already looking at this
07:52 szabgab how can I compare two arrays ?
07:53 szabgab is there some built-in function in Perl 6 that can compare two arrays ?
07:53 moritz_ rakudo: use Test; plan 2; isa_deeply [1, 2], [1, 2]; is_deeply [1, 2], [0, 2]
07:53 p6eval rakudo 9a84c3: OUTPUT«1..2␤Could not find non-existent sub isa_deeply␤current instr.: '_block14' pc 141 (EVAL_16:53)␤»
07:53 moritz_ rakudo: use Test; plan 2; is_deeply [1, 2], [1, 2]; is_deeply [1, 2], [0, 2]
07:53 p6eval rakudo 9a84c3: OUTPUT«1..2␤ok 1 - ␤not ok 2 - ␤# Looks like you failed 1 tests of 2␤»
07:53 moritz_ szabgab: smart matching compares them element wise, and DWIMs on Whatever-stars
07:53 moritz_ rakudo: say [1, 2] ~~ [1, 2]
07:53 szabgab oh yes,
07:53 p6eval rakudo 9a84c3: OUTPUT«1␤»
07:53 szabgab smart match
07:53 moritz_ rakudo: say [1, 2] ~~ [1, 0]
07:53 p6eval rakudo 9a84c3: OUTPUT«0␤»
07:54 moritz_ rakudo: say [1, 2] ~~ [1, *]
07:54 p6eval rakudo 9a84c3: OUTPUT«1␤»
07:54 moritz_ rakudo: say [1, 2, 3] ~~ [1, *]
07:54 p6eval rakudo 9a84c3: OUTPUT«1␤»
07:54 szabgab rakudo: [1, 2] ~~ [1, 2]
07:54 p6eval rakudo 9a84c3: RESULT«Bool::True»
07:54 szabgab rakudo: [1, 2] ~~ [1]
07:54 p6eval rakudo 9a84c3: RESULT«Bool::False»
07:54 szabgab rakudo: [1, 2] ~~ [2, 1]
07:55 p6eval rakudo 9a84c3: RESULT«Bool::False»
07:55 moritz_ rakudo: [[1,2], 3] ~~ [[1, 2], 3]
07:55 p6eval rakudo 9a84c3: RESULT«Bool::False»
07:55 moritz_ rakudo: [[1,4], 3] ~~ [[1, 2], 3]
07:55 szabgab but I think I'd like to have a detailed report of the differences
07:55 p6eval rakudo 9a84c3: RESULT«Bool::False»
08:00 xinming_ joined #perl6
08:10 bacek_ joined #perl6
08:15 goksie_ joined #perl6
08:25 szabgab rakudo: 1 ~~ 1|2
08:25 p6eval rakudo 9a84c3: RESULT«Bool::True»
08:30 ejs joined #perl6
08:34 szabgab rakudo: (1|2).perl
08:34 p6eval rakudo 9a84c3: RESULT«"any(1, 2)"»
08:34 szabgab rakudo: (1|2).perl.WHAT
08:34 p6eval rakudo 9a84c3: RESULT«Str»
08:36 szabgab I have forgotten, can I fetch the type of the Junction somehow or just my parsing the stringification ?
08:37 masak joined #perl6
08:37 masak morning, eigencamels.
08:37 * masak backlogs
08:37 masak rakudo: +("freeeeeeeeeeeeeeeew" ~~ /('e'|'w')*/)[0]
08:37 p6eval rakudo 9a84c3: OUTPUT«Use of uninitialized value␤»
08:37 masak <TimToady> that oughta work...
08:38 masak did someone report this?
08:38 szabgab wan't there a way to get all the available methods of an object ?
08:38 szabgab $ob.METHODS
08:39 masak $obj.^methods, I'd guess.
08:39 masak I'm sure the answer is in S12.
08:40 szabgab there is a WHY
08:40 szabgab but there is no WHYNOT
08:40 ejs1 joined #perl6
08:40 masak szabgab: well, WHYNOT isn't an interrogative pronoun.
08:41 masak neither is WTF, for example.
08:42 szabgab rakudo: class A { method f(){say "42"} ; A.f
08:42 p6eval rakudo 9a84c3: OUTPUT«Unable to parse block; couldn't find final '}' at line 1, near ""␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
08:42 szabgab rakudo: class A { method f(){say "42"} }; A.f
08:42 p6eval rakudo 9a84c3: OUTPUT«42␤»
08:42 szabgab rakudo: class A { method f(){say "42"} }; say A.methods
08:42 p6eval rakudo 9a84c3: OUTPUT«Could not locate a method 'methods' to invoke on class 'A'.␤current instr.: 'die' pc 15799 (src/builtins/control.pir:204)␤»
08:42 masak szabgab: missed the '^'.
08:43 szabgab rakudo: class A { method f(){say "42"} }; say A.HOW
08:43 p6eval rakudo 9a84c3: OUTPUT«get_string() not implemented in class 'P6metaclass'␤current instr.: 'print' pc 19322 (src/builtins/io.pir:26)␤»
08:43 masak also, I don't think it's implemented.
08:43 szabgab rakudo: class A { method f(){say "42"} }; say A.^methods
08:43 p6eval rakudo 9a84c3: OUTPUT«Method 'methods' not found for invocant of class 'P6metaclass'␤current instr.: 'parrot;Perl6Object;!.^' pc 1917 (src/classes/Object.pir:685)␤»
08:44 szabgab 12 talks about MyClass.methods()   or MyClass.HOW.methods
08:44 masak ok.
08:44 masak my bad, then.
08:44 szabgab and a few lines below my current page view was the ^ syntax
08:45 szabgab PgDown help
08:45 szabgab The "^" metasyntax is equivalent to ".HOW"
08:46 szabgab rakudo: (1|2).WHICH
08:46 p6eval rakudo 9a84c3: RESULT«-1241493232»
08:46 szabgab rakudo: (1|2).WHO
08:46 p6eval rakudo 9a84c3: OUTPUT«Method 'WHO' not found for invocant of class 'Int'␤current instr.: 'parrot;P6metaclass;dispatch' pc 637 (src/classes/ClassHOW.pir:161)␤»
08:47 szabgab so do you think the only way to interrogate a junction about its type is to pars it .perl representation ?
08:47 masak szabgab: no.
08:48 moritz_ rakudo: say 1|2 ~~ Junction
08:48 p6eval rakudo 9a84c3: OUTPUT«1␤»
08:48 masak but I also think that this is not yet settled. :)
08:48 moritz_ rakudo: say 1, 2 ~~ Junction
08:48 p6eval rakudo 9a84c3: OUTPUT«10␤»
08:48 szabgab I mean if it any or all
08:48 moritz_ rakudo: say (1, 2) ~~ Junction
08:48 p6eval rakudo 9a84c3: OUTPUT«0␤»
08:48 masak yes, I understand.
08:49 masak maybe we'll have a method .eigentype :)
08:50 moritz_ we recently spuculated about how it might be called
08:50 moritz_ *speculated
08:51 szabgab rakudo: (1|2).perl ~~ /^(\w+)/
08:51 moritz_ "view", "measurement" and "collapse" came up
08:51 p6eval rakudo 9a84c3: RESULT«Match.new(␤ # WARNING: this is not working perl code␤ # and for debugging purposes only␤ ast  => "any",␤ text => "any",␤ from => 0,␤ to   => 3,␤ positional => [␤  Match.new(␤     ast  => "any",␤     text => "any",␤     from => 0,␤     to   => 3,␤    ),␤ ],␤)»
08:51 masak 'collapse' sounds too verbish to me.
08:52 moritz_ no wonder TimToady didn't like it :-)
08:52 szabgab rakudo: say (1|2).perl ~~ /^(\w+)/
08:52 p6eval rakudo 9a84c3: OUTPUT«any␤»
08:52 szabgab rakudo: (1|2).perl ~~ /^(\w+)/
08:52 p6eval rakudo 9a84c3: RESULT«Match.new(␤ # WARNING: this is not working perl code␤ # and for debugging purposes only␤ ast  => "any",␤ text => "any",␤ from => 0,␤ to   => 3,␤ positional => [␤  Match.new(␤     ast  => "any",␤     text => "any",␤     from => 0,␤     to   => 3,␤    ),␤ ],␤)»
08:52 szabgab rakudo: my $x = (1|2).perl ~~ /^(\w+)/
08:52 p6eval rakudo 9a84c3: RESULT«Null PMC access in get_bool()␤current instr.: 'parrot;Match;_block1385' pc 36743 (src/gen_setting.pir:4764)␤»
08:53 * masak prepares for submitting something
08:53 Matt-W Morning
08:53 masak Matt-W: ahoj!
08:53 szabgab rakudo: my ($x) = (1|2).perl ~~ /^(\w+)/
08:53 moritz_ masak: if you want to submit the Null PMC access in get_bool(), that's already reported
08:53 p6eval rakudo 9a84c3: RESULT«Null PMC access in get_bool()␤current instr.: 'parrot;Match;_block1385' pc 36743 (src/gen_setting.pir:4764)␤»
08:54 masak moritz_: ok. and the program above works fine here, so it's probably an artefact of perl6eval.
08:54 szabgab the same code work on my computer
08:54 masak szabgab: use 'say'.
08:54 moritz_ masak: with (do { ... }).perl.print around it?
08:54 masak moritz_: I guess.
08:55 * masak tests
08:55 masak moritz_: right, that fails.
08:55 mberends joined #perl6
08:56 masak Matt-W, mberends: meeting in four minutes!
08:56 * Matt-W grabs some breakfast
08:56 mberends hi all, shall we invite moritz_ as well ?
08:57 moritz_ because my nicks starts with m? :-)
08:58 Matt-W Sure why not :)
08:59 Matt-W Great thing about IRC meetings: I can talk with my mouth full
08:59 masak of cookies, I hope?
08:59 * mberends places a bowl filled with small chocolate Easter eggs on the table. Please help yourselves. Also a document called hello.bash: http://gist.github.com/85378
09:00 masak Yarr! This here be a meeting of the Self-Appointed Standards Group for Perl 6 Projects. I now pronounce it open, sorta.
09:00 masak cap at 20 minutes.
09:00 * masak opens box of delicious cookies
09:00 amoc joined #perl6
09:00 masak the word is free during the whole meeting. we have no agenda.
09:01 masak (as far as I know)
09:01 mberends could you try running hello.bash? your pets will not be harmed.
09:01 masak mberends: where, exactly?
09:01 mberends the gist above http://gist.github.com/85378
09:01 * Matt-W finds a lot of code from Form's build system in there
09:02 mberends thanks, Matt-W++
09:02 masak in the meantime, I'll just field two questions and see where they land. (1) Makefile.PL: Perl 5 or Perl 6? (2) Test.pm: symlink it into the project, or leave it in the Rakudo dir?
09:02 mberends symlink is less risky
09:03 Matt-W Makefile.PL should be in Perl 6
09:03 moritz_ shouldn't @*INC take care of such things?
09:03 Matt-W I was thinking about this last night
09:03 Matt-W Also yes, Test.pm should just work as a system library
09:03 moritz_ can Makefile.PL - can we configure that in a meta file?
09:03 moritz_ s/can //
09:03 Matt-W We don't have to do any special juggling to make Test::More work in Perl 5, after all
09:04 Matt-W An installed Rakudo should be able to find the Test.pm it shipped with. This may depend on Rakudo's install system
09:04 masak I'm leaning towards leaving Test.pm in the Rakudo dir, and making sure PERl6LIB points there always.
09:04 moritz_ masak: +1
09:04 Matt-W yup
09:05 masak that's settled, then.
09:05 DemoFreak joined #perl6
09:06 Matt-W The problem with including modules from the project itself is that we put them in lib/
09:06 Matt-W if we didn't, they'd Just Work
09:06 masak mberends: hello.bash looks intriguing.
09:06 * mberends wonders whether <RAKUDO_DIR> is truly a library directory.
09:06 masak mberends: is there any way to test it without creating a new github project?
09:06 Matt-W <RAKUDO_DIR>/lib might be
09:06 moritz_ aye, we should move Test.pm to lib/ at some point
09:06 mberends no, but deleting projects is quick. I've done many in the last 12 hours.
09:06 masak Matt-W: putting in lib/ in projects is still a net win in my book.
09:07 Matt-W masak: yes, we just need to figure out hte best way to get whatever perl 6 compiler you're using to find your modules
09:07 masak mberends: oh, ok. trying that.
09:07 Matt-W at some point we may need to expand this to work with out perl 6 implementations
09:07 moritz_ Matt-W: that's not specced yet
09:07 Matt-W argh s/out.other/
09:08 Matt-W typing's gone completely wrong
09:08 Matt-W don't need to worry about it now though
09:08 masak Matt-W: you're thinking to large. proto is created so that we won't have to care about the future. :)
09:08 masak s/to/too/
09:08 moritz_ the overall idea is that we need some kind of module database
09:08 masak this is explicitly outside of today's meeting topic.
09:08 moritz_ because not all file systems support Unicode databases
09:09 masak we know PERL6LIB will go away, but that's what we have today.
09:09 Matt-W fair enough
09:09 szabgab masak, where will it go ?
09:09 masak any consensus about Makefile.PL? Perl 6?
09:09 Matt-W if we write suitably cunning scripts when the change comes, it should be easy enough to swap out to the new system, whatever it is
09:09 Matt-W I believe it should be Perl 6
09:09 Matt-W I don't know if Rakudo can do the necessary stuff yet
09:09 masak szabgab: away.
09:10 moritz_ I believe it should be Perl 6, but configurable for now
09:10 Matt-W and it would also put more onus on the environment to allow it to find Rakudo
09:10 szabgab so no control over @INC from the environment ?
09:10 moritz_ or maybe the installer should just look for 'use v6'
09:10 masak szabgab: don't know, don't care right now.
09:10 masak half time!
09:10 szabgab you just frightening me
09:11 masak szabgab: no, we're just building a dependencay handler that Works Today(TM).
09:11 masak szabgab: TimToady has said that PERL6LIB is a temp solution.
09:11 moritz_ for the reasons I stated above
09:12 masak ok, mberends has a nice Makefile.PL in Perl 6 in perl6-examples.
09:12 masak I think we can use that.
09:12 masak but we cannot depend on modules from proto, so we'll have to copy it over.
09:12 masak is that OK?
09:12 moritz_ OK for me
09:12 masak (I don't mean from a license perspective, but from a niceness perspective)
09:12 Matt-W Should be fine :)
09:13 * mberends renamed it the Perl 6 Makefile.PL to Configure.p6 for less confusion
09:13 masak I like that.
09:13 masak proto will have to support Perl 5 Makefile.PL for the foreseeable future.
09:13 masak but we should encourage Configure.PL.
09:13 moritz_ masak: at some point we need core modules to do the stuff we need for installing more stuff. Copying modules seems like a viable temp solution to me
09:14 masak moritz_: aye.
09:14 masak we'll put up big honking RAKUDO comments as always.
09:14 mberends there are some discussion points at the bottom of hello.bash, your comments please?
09:14 * masak looks
09:14 mberends 4. will be Perl 6, ok
09:15 Matt-W 3. will be solved out of scope
09:15 Matt-W when PERL6LIB is replaced
09:15 masak hah! I knew there was an agenda hidden somewhere. :)
09:15 mberends ok
09:15 mberends :)
09:15 Matt-W 6. Ultimately we do want a Perl 6 Test::Harness but I see no particular reason to rush on that at the moment
09:15 pugs_svn r25993 | szabgab++ | naive implementation of comparing two junctions
09:15 masak ack.
09:15 masak 75% time!
09:16 masak it'd be fun to try and do 2, but the probalem is maintaining it.
09:16 mberends 1. is just some grunt work, no?
09:16 masak projects change, modules come and go.
09:16 masak mberends: yes. we start small.
09:16 masak your hello.bash seems a good start.
09:17 mberends masak: 2. we're here -Ofun :)
09:17 masak what would be the ultimate goal of providing this, besides the obvious "making it easy to start a Perl 6 project"?
09:18 * Matt-W wonders about Windows
09:18 mberends to learn what the next version requires
09:18 masak Matt-W: the day we have a project developer who uses Windows...
09:18 mberends P2T1A
09:18 masak mberends: indeed. you're right.
09:18 masak man, these cookies are great!
09:19 mberends 1 minute 2 go!
09:19 masak I wish to thank you all for your involvement in this semi-impromptu meeting.
09:19 masak I'm very happy about it.
09:20 masak meeting closed.
09:20 bacek joined #perl6
09:21 bacek good evening
09:21 bacek masak: around?
09:21 masak bacek: hoy!
09:21 mberends bacek: hi
09:21 bacek masak: http://github.com/bacek/parrot
09:22 bacek masak: guess what? :)
09:22 masak sockets?
09:22 bacek masak: indeed.
09:22 masak \o/
09:22 bacek unix only
09:22 masak to hell with other systems!
09:22 bacek s/hell/jnthn/ :)
09:23 masak uh, yes.
09:23 masak I meant that.
09:23 bacek mberends: hi there
09:23 Matt-W woooooooooooooooooooooooooo
09:23 mberends bacek++: that is fantastic news!
09:23 masak bacek++
09:23 masak I think I'll go back to my lobster for a while, so that it's web ready when HTTP::Server gets Parrot sockets.
09:24 bacek it still requires some polish and extensive testing.
09:24 masak in due time, in due time.
09:24 masak right now we're giddy with the news.
09:25 * Matt-W swoons
09:25 baest hello, I was trying to use the /\w ** ','/ style quantifier and it doesn't parse. Should I submit an bugreport or is that just creating cruft when they're is some skipped tests in spec showing the same?
09:26 masak baest: when in doubt, submit
09:26 baest masak: ok :)
09:26 masak baest++
09:27 moritz_ baest: I already wrote one the other day
09:27 baest moritz_: oh, moritz_++ then :)
09:27 moritz_ no, moritz_--, I can't find it
09:27 moritz_ I probably just planned to write it, but didn't actually
09:28 moritz_ baest: so please go ahead :/
09:28 moritz_ and sorry for the noise
09:28 baest moritz_: ok, fair enough :) I will
09:28 mberends bacek, I'm available to try testing in this HTTP::Daemon clone, but I may need some guidance. http://github.com/eric256/perl6-exam​ples/blob/master/lib/HTTP/Daemon.pm
09:29 * mberends begins by cloning bacek's parrot
09:29 bacek mberends: did you check examples/io/httpd.pir in my parrot repo?
09:29 * mberends will look immediately
09:30 bacek and there is actually HTTP::Daemon in parrot as well.
09:30 bacek somewhere in "runtime"...
09:30 masak whoa!
09:30 masak there is?
09:30 mberends ok, then Rakudo HTTP::Daemon should not be far off.
09:31 bacek ls -la runtime/parrot/library/HTTP/Daemon.pir
09:31 bacek -rw-r--r-- 1 bacek bacek 22313 2009-03-23 23:23 runtime/parrot/library/HTTP/Daemon.pir
09:31 bacek here we are.
09:32 bacek It is probably broken...
09:32 * bacek changed op sockaddr
09:35 mberends bacek: Daemon.pir is 1156 lines, it will take a while to study :)
09:35 masak .oO( if people would write half as much Perl 6 code as they write opinions about a logo... )
09:36 bacek mberends: you need first 200 including comments :)
09:36 baest masak: :), well somebody also mentioned the bikeshed on the list and it has been quiet since then...
09:36 mberends httpd.pir is only 426 lines :)
09:37 bacek :)
09:38 masak baest: indeed. but don't bet it'll last just 'cus someone says 'bikeshed'.
09:38 baest masak: no, I'm sure that it wont
09:40 bacek mberends: you need "sockaddr/socket/bind/accept" combo and then you can just "read" and "write" to socket.
09:40 masak http://www.haskell.org/logos/results.html -- 90% of those are better than all suggestions I've seen for a Rakudo logo so far.
09:41 mberends bacek: yeah, just like in C or Perl 5. very cool.
09:41 * mberends taught classes to do the same with Perl 5
09:41 moritz_ maybe we should start a similar contest
09:42 bacek mberends: it's straight forward "C" API implementation. And I have no idea about "proper" OO style for it.
09:42 mberends nevermind, this is *almost* Christmas for me!
09:42 Matt-W I get a little bit of Christmas every few days
09:43 * bacek thinking about learning NCI and bind libfcgi to Parrot
09:46 meppl joined #perl6
09:50 masak rakudo: +("eeeeeeeeeeeeeeeew" ~~ /('e'|'w')*/)[0]
09:50 p6eval rakudo 9a84c3: RESULT«17»
09:51 * masak submits rakudobug
09:51 masak (the bug being, for those who don't have a one-hour attention span, that adding 'fr' to that string makes the match fail)
09:55 * mberends has attention focused on sockets and pir :) :)
09:58 kidd_ joined #perl6
10:02 mberends bacek: in bacek/parrot, 'git pull && make realclean && perl Configure.pl && make' dies with src/io/socket_unix.c:103: error: �enum_class_Sockaddr� undeclared (first use in this function)
10:03 bacek mberends: oops. I forgot to add sockaddr.pmc
10:03 bacek mberends: pull again.
10:03 mberends ok, thanks!
10:04 mberends pulled && making
10:08 mberends built ok. making test
10:10 bacek mberends: try http://gist.github.com/85406
10:11 mberends bacek: very soon, after 'make test' finishes :)
10:12 bacek mberends: :)
10:12 NoirSoldats joined #perl6
10:16 mberends bacek++: couldn't wait for tests to finish. './parrot head.www.ibm.com.pir' works!
10:16 amoc joined #perl6
10:18 bacek mberends: make test; ./parrot examples/io/httpd.pir and open http://localhost:1234/ in you browser :)
10:18 bacek make html
10:20 bacek s/you/your/ ...
10:20 mberends yes! yes! yes!
10:21 disismt joined #perl6
10:21 masak "screams of extacy were heard from the #perl6 channel as sockets support landed."
10:21 mberends yes! yes!
10:22 mikehh rakudo (9a84c35) builds on parrot r37704 - make test/make spectest PASS - Kubuntu Intreoid i386
10:22 mberends it's FAST too (relative to socat and netcat)!
10:22 mberends bacek++ bacek++
10:24 masak this all sounds very promising.
10:24 masak I've gotten distracted from lobster work by $WORK. foiled again! :/
10:25 moritz_ next steps: 1) make it run on @other_platforms; 2) get it into core
10:25 moritz_ 3) ...
10:25 moritz_ 4) profit!
10:26 jnthn OH HAI
10:26 * masak is reminded of http://www.webamused.com/blo​gosophy/archives/002064.html
10:26 masak jnthn: Rakudo day! \o/
10:26 * mberends plans out to put Q:PIR wrappers into Perl 6 subs and test with perl6-examples/lib/HTTP/Daemon.pm, then move the subs into 'setting'.
10:27 masak mberends++
10:27 jnthn Oh hey, is this the sound of Rakudo getting socket support, which I can just watch fall into place? :-)
10:28 jnthn mberends++, bacek++
10:29 * mberends suddenly feels the peer pressure of expectations
10:29 bacek jnthn: https://trac.parrot.org/parrot/ticket/496
10:30 pmurias joined #perl6
10:30 jnthn bacek: Ah, it's not applied yet?
10:30 bacek wow... almost 50 kilobytes...
10:30 bacek jnthn: I'm not parrot/rakudo committer :)
10:31 mberends that's heavy lifting!
10:33 jnthn bacek: Yeah, am reading it now.
10:34 jnthn bacek: Are the ops needed or is it possible to use it entirely with the method interface?
10:34 bacek jnthn: they are specified in pdd22. My initial version contained only method interface.
10:35 jnthn bacek: Ah, if they're in the PDD then that's just fine.
10:35 moritz_ ... assuming the PDD is fine :-)
10:36 bacek jnthn: personally I dislike this ops...
10:36 moritz_ talk to allison, maybe she can be convinced of a method-only interface
10:37 jnthn moritz_: The PDD is one she's reviewed and approved in the not too distant past.
10:37 moritz_ jnthn: ah, ok
10:37 jnthn bacek: If they're in the PDD and you've implemented them, I'm inclined to apply them. :-)
10:38 bacek jnthn: ok :)
10:39 bacek there is last op left unimplemented - "shutdown" :)
10:41 jnthn Gah. My patch program is such a fail...
10:42 jnthn bacek: Was this against HEAD?
10:42 bacek jnthn: no. r37646
10:43 bacek But I can recreate it against HEAD.
10:43 jnthn bacek: Don't worry, it's only two small bits that have iddues.
10:43 jnthn *issues
10:44 jnthn oh, actually it was a bunch of them
10:46 jnthn bacek: Oh, false alarm. It was the $Id... lines.
10:46 jnthn That was all that was in the .rej files!
10:47 bacek jnthn: you should have some .rej for src/ops/ops.num
10:47 bacek Or at least some clashes.
10:48 jnthn bacek: Yeah, I did.
10:49 jnthn bacek: But it looked like you'd just added them onto the end...
10:49 bacek jnthn: yes I am.
10:49 jnthn heh, fail
10:49 jnthn hole in ops.num before #1245 at lib/Parrot/Ops2pm.pm line 122, <$op> line 1271.
10:49 jnthn oh, the load language patch
10:51 bacek jnthn: I have new version of patch agains HEAD.
10:51 jnthn bacek: it's fine, twiddled it
10:51 bacek Or I can send new ops.num
10:51 jnthn bacek: No, don't worry.
10:51 jnthn Building now. :-)
10:51 bacek jnthn: ok :)
10:52 bacek jnthn: Are you on win32 atm?
10:52 jnthn bacek: Yes
10:52 jnthn I'm relying on @other here having tested in on Unixy places. ;-)
10:53 bacek ah, ok :)
10:53 jnthn ah, win32 build is fail
10:53 * jnthn investigates
10:53 jnthn bacek: I'm getting a bunch of things like
10:53 jnthn src\io\socket_api.c(74) : warning C4013: 'PIO_POLL' undefined
10:54 jnthn Any hints?
10:54 bacek jnthn: yes...
10:54 mberends jnthn, do you have a winsock.h instead os sockets.h ?
10:54 bacek You have to add socket_win32 into Makefile and run "make headerizer"...
10:54 mberends *f
10:55 mberends *of
10:55 bacek jnthn: and actually port socket_win32.c
10:55 bacek jnthn: give me few minutes. I'll create subs for win32.
10:56 jnthn bacek: Are we going to need something in Configure to detect Win32 and emit the right line?
10:56 bacek jnthn: no, AFAIU.
10:57 jnthn bacek: Because at the moment I'm ending up trying to compile src\io\socket_unix.c
10:59 bacek jnthn: it's... weird. socket_unix.c protected by #ifdef
11:00 jnthn bacek: eh, the #include <sys/socket.h> was not.
11:00 bacek jnthn: http://gist.github.com/85422
11:00 bacek jnthn: ouch.
11:00 jnthn bacek: Moved it.
11:00 jnthn Now compile gets past there.
11:01 bacek jnthn: thanks.
11:03 jnthn Thanks for extra patch, applied, trying compile now. :-)
11:04 * bacek still wonders why "almost BSD compatible socket API in win32" is not "fully BSD compatible"
11:04 donaldh joined #perl6
11:04 donaldh left #perl6
11:06 nigel joined #perl6
11:06 trexy hi
11:06 jnthn bacek: Because Microsoft are incapable of implemetning a standard, perhaps? ;-)
11:06 jnthn trexy: hi
11:06 trexy just thought I drop some ideas into the meme-stream
11:06 trexy I'm excited about new logos for Perl6 etc
11:07 bacek jnthn: probably... Same for Kerberos and other stuff...
11:07 trexy I think I just sent an emai to perl6-language but not sure it landed
11:07 trexy so I thought I would share some ideas here
11:08 trexy I think rakudo needs a logo - but then shouuldn't there be a logo for the Perl6
11:08 trexy ... which is really defined by the test suite
11:08 trexy so I was thinking ....you could have a very simple/boring logo for the test suite:
11:08 mberends no, you guys don't understand. Microsoft extends (improves) the standards :P
11:09 trexy very basic mock coming ...
11:09 trexy http://t10.com/perl6-test.jpg
11:10 trexy and then this basic imagery can be incorporated into more exotic implementation logos
11:10 trexy like:
11:10 trexy http://t10.com/perl6-camelia.png
11:10 jnthn bacek: OK, now I just blow up at the link stage for symbols like Parrot_io_poll_win32
11:10 mberends trexy: it's a good start :) can you save in SVG format?
11:10 jnthn bacek: Which is where I actually have to do some work. ;-)
11:10 bacek jnthn: I expected it... :)
11:10 trexy which in turn could be incorporated into Parrot
11:11 trexy http://t10.com/parrot-rakudo.png
11:11 trexy I'm not a graphic designer - so really have no skillz in this department - but you have to use your imagination ;-)
11:12 bacek jnthn: I hope that porting socket_unix to socket_win32 shouldn't be hard :)
11:12 mberends trexy: that last one is even nicer :)
11:12 trexy you like?
11:13 mberends yes, U HAZ SKILLZ
11:13 trexy I HAZ NOT
11:13 trexy but I hope you get the idea - of taking some iconic Perl6 thing and moving it through logos ...
11:14 trexy it could be whatever *
11:14 trexy ;-)
11:14 * mberends believes art benefits from perspiration as well as inspiration
11:15 jnthn bacek: Yes, bwaha. src\io\win32.c is epic compile fail.
11:15 bacek jnthn: :)
11:16 trexy ok - just a thought for the pool ...
11:16 trexy bye
11:18 jnthn bacek: So this socket_win32.c was the one that existed from the previous impl?
11:18 bacek jnthn: yes.
11:18 BinGOs joined #perl6
11:18 amoc joined #perl6
11:19 bacek jnthn: but probably copying socket_unix.c to socket_win32.c is better way to resurrect it :)
11:20 bacek (And run %s/_unix/_win32/ in vim of cause)
11:21 donaldh joined #perl6
11:32 elmex joined #perl6
11:32 jnthn bacek: SOCKADDR(io, remote)->sin_family = fam;
11:32 jnthn Where hare SOCKADDR and remote meant to come from?
11:33 jnthn oh, I see
11:33 jnthn #define SOCKADDR(p, t) ((struct sockaddr_in*)VTABLE_get_pointer(interp, PARROT_SOCKET((p))->t))
11:33 bacek jnthn: it's #define in socket_unix
11:40 kane_ joined #perl6
11:43 bacek jnthn: I'm going to sleep very soon...
11:47 jnthn bacek: OK, I've nearly got this Win32 version compiling.
11:47 bacek jnthn: good news
11:50 bacek afk # zzz...
12:07 jnthn OK, compiles, and *almost* works on Win32 despite the fact that I guessed my way through the port. :-|
12:08 jnthn (My browser seems to hang without showing the page after the thing has been fully served...then when I hit Esc it shows the served page...not quite sure what would cause that.)
12:09 mberends jnthn, buffer flush required?
12:09 shruggar joined #perl6
12:10 mberends Esc on the browser stops receiving and may close the connection
12:12 ruoso joined #perl6
12:13 ruoso Hello!
12:13 skids joined #perl6
12:14 jnthn mberends: Yeah, I figure that's what Esc is doing.
12:14 jnthn oh arse, I had a couple of other local changes I just ci'd by accident.
12:15 kolibrie joined #perl6
12:17 jnthn mberends: OK, the sockets stuff for Parrot from bacek++ is applied
12:17 mberends v.cool
12:17 mberends jnthn++
12:18 ruoso jnthn++ indeed... and bacek++ as well...
12:19 ruoso jnthn, is it implemented in a simple blocking fashion? or is there some event-loop intelligence added?
12:20 rgs joined #perl6
12:21 icwiener joined #perl6
12:21 jnthn Well, bacek++ really, I just did a crappy Win32 port and applied it. ;-)
12:22 jnthn ruoso: I think it's nothing immensely clever, though I know async IO is planned for Parrot and it already has an event loop and scheduler.
12:23 ruoso jnthn, cool...
12:35 jnthn mberends: If you start adding this to the setting, please do bump up the version of Parrot that is required for Rakudo.
12:35 jnthn mberends: That just means editing the number in build/PARROT_REVISION.
12:38 mberends don't worry, I have no commit access anyway, so I shall probably mail a patch to rakudobug. If and when it ever works ;)
12:39 * ruoso still wonders if SMOP should try to implement interpreter threads, or if it should simply go to OS threads...
12:40 mberends ruoso, aren't OS threads non portable?
12:41 ruoso mberends, only if you expose the use of a specific threads implementation
12:41 ruoso it works ok as long as you abstract it from the user, so each port can provide its specific version
12:43 jnthn ruoso: AFAIU, you almost certainly want to use OS threads. Otherwise the kernel scheduler won't be able to distribute them over multiple execution units.
12:44 ruoso jnthn, the other option would be to implement a scheduler myself, ala POE
12:46 jnthn I don't see how that would actually deal with the issue I mentioned.
12:46 jnthn Unless you do plan to schedule onto multiple underlying kernel threads.
12:46 ruoso yes... that would be the plan... as erlang does
12:47 * ruoso people use to say that too-much-flexible languages allow the user to write bad code... but I've never seen such an ungly code written in Perl.. http://www.pirnat.com/mike/2008/1​1/25/python-youre-doing-it-wrong/
12:48 ruoso but in fact.. I'm not sure I can avoid writing a scheduler of some sort... Async IO doesn't fit well with OS threads...
12:48 ruoso I mean.. with "using only OS threads"
12:49 jnthn Yes, perhaps.
12:49 jnthn Well, as I said, Parrot has an event scheduler too, but that interacts with threads already IIRC.
12:49 jnthn I didn't play with it much.
12:50 ruoso maybe I should have a "worker thread" pattenr
12:50 ruoso and a scheduler that simply designates a worker thread to assume a task
12:51 ruoso that's certainly easier than having a full scheduler
12:51 kimtaro joined #perl6
12:51 ruoso and probably fits better with Perl 6
12:53 ruoso and then the user can have a command-line switch to indicate the min/max number of worker threads...
12:53 * jnthn is a tad bewildered that he fails a bunch of multi-dispatch tests after moving List.uniq to the setting...
13:01 * ruoso trying to figure out how to make... for =$boundaddr -> $conn { $conn.say: "Hello" } to autothread...
13:03 PerlJam Are any concurrency mechanisms exposed in rakudo yet?
13:06 skids You mean explicit asyncs and forks?  No.  pugs has asyncs, IIRC.
13:06 baest skids: yes, it does
13:08 skids Mainly because there are 3 RFCs, a preliminary attempt at A17 from years ago, and no consensus that I have been able to find yet on a thread/async API.
13:08 skids Though I will keep searching away.
13:09 baest I think the pugs one was almost identical to haskell, but I'm not sure and don't know haskell. But I had a small program with async and atomically blocks
13:10 PerlJam Assuming there's a concensus on how to do it, that might be a good GSoC project for someone.
13:10 PerlJam (I'm sure we can come up with *a* way and let a gsoc-er prototype it)
13:11 skids Yeah, well I might be able to suggest a consensus API as a shooting galley target, but I need a full understanding of context/lexpad/"stack" behavior first.
13:11 skids And that seems to be implementation specific and subject to flux ("We moved thing X into/out of the lexpad")
13:13 skids I think there is little debate, though, of what a "fork" should do.
13:13 skids So that might be a good GSoC thing.
13:13 PerlJam yeah, but it also might be way too simple :)
13:14 skids Ahh, but I have managed to complicate it quite a bit.
13:14 skids Nothing here is even to the point that I feel like sticking up for it myself yet,
13:15 skids but my ongoing scribblings for S17 can be found: http://www.abrij.org/~bri/S17.tempurl.pod
13:15 skids I'm more happy with the fork API than the rest of it.
13:19 jnthn ruoso: A recent spec change means that pointy blocks to not auto-thread. Just routines.
13:19 skids So those "thread-emulated forks" could be quite challenging.
13:20 jnthn (That is, anything that is a subclass of Routine)
13:21 PerlJam jnthn: so I'd need a change in syntax to get my for loops to thread?
13:21 jnthn ruoso: Actually the real idfference is just in the default paramter type. You could in fact feasibly make a pointy block auto-thread.
13:21 jnthn PerlJam: Yeah, just do like for @foo -> Any $x { }
13:21 jnthn The Any then causes auto-threading.
13:21 jnthn The change is that the default parameter type is Object in this case.
13:21 PerlJam i was kind of hoping for magic :)
13:21 jnthn (And for routines, it's Any.)
13:22 jnthn Well, the thing is that you tend to use pointy blocks in a scope where you know whether junctions are expected or not.
13:22 jnthn That is, you either created them in your current routine or you marked a paramter in the routine as expecting them.
13:23 jnthn I think that was the language design argument.
13:24 rgs small question (can't find the answer in the synopses). Can one use "when" as a postfix statement modifier ?
13:24 PerlJam rgs: yes
13:24 rgs woot
13:25 ejs2 joined #perl6
13:27 PerlJam it's a tad bothersome that you can't find the answer to that question though.  What synopses did you look in?
13:30 * skids suggests a "hey this isn't in the synopsis" wiki bullet list page
13:31 FurnaceBoy joined #perl6
13:39 PerlJam skids: good idea
14:00 Khisanth joined #perl6
14:05 riffraff joined #perl6
14:05 pmurias joined #perl6
14:06 disismt joined #perl6
14:09 aindilis joined #perl6
14:13 ruoso jnthn, I didn't mean autothread on Junctions... I mean autothread on async IO
14:13 ruoso like...
14:13 ruoso for =$boundaddress --> $socket {...}
14:14 ruoso this would autothread on each accept...
14:14 jnthn ruoso: As in, spawn a new thread?
14:14 ruoso not necessarly an OS thread
14:14 ruoso but it wouldn't block new accepts
14:15 jnthn Feels rather like we're twisting for a bit too bar there.
14:15 moritz_ agreed
14:15 moritz_ I don't think we need new syntax for non-blocking/async IO
14:15 ruoso I don't mean a new syntax
14:15 jnthn for =$boundaddress -> $socket { async { ... } } # probably is fine
14:16 moritz_ the --> looked like new syntax to me :-)
14:16 ruoso ah... sorry..
14:16 ruoso it's the feed operator that is ==>
14:16 ruoso it always gets me confused
14:17 jnthn If that was meant to be a feed operator then I expect you don't need the for.
14:17 ruoso no it wasn't...
14:18 ruoso but I guess...
14:18 ruoso $boundaddress ==> -> $connection { ... }
14:18 ruoso std: $boundaddress ==> -> $connection { ... }
14:18 p6eval std 25993: OUTPUT«Potential difficulties:␤  Variable $boundaddress is not predeclared at /tmp/aSv6DGJ5A0 line 1:␤------> [32m$boundaddress[31m ==> -> $connection { ... }[0m␤ok 00:02 37m␤»
14:19 ruoso cool... it works..
14:19 ruoso that could autothread ;)
14:19 ruoso but my question wasn't really syntatical...
14:20 ruoso I'm wondering how to turn transactional programming into async IO programming without the user having to worry about
14:21 ruoso so if you write a normal code as if it performed blocking IO
14:21 ruoso it could be done by the interpreter using async IO
14:21 frioux maybe you could look at JS libraries
14:21 frioux because ajax is a form of io (obviously) and is done asyncronously
14:22 frioux although with js it's done with event handlers, so it's not really transparent
14:23 moritz_ events are good :-)
14:23 frioux does perl 6 specify events at all?
14:24 moritz_ it will
14:24 ruoso frioux, that's my point actually... I'd like code wrote as synchronous to work assynchronously
14:24 ruoso so the interpreter can preemptively execute other tasks
14:24 frioux ruoso: Yeah, I realized that after I mentioned the events
14:25 ruoso I somehow think Control Exceptions are the solution here...
14:25 skids It's a coroutine :-) except the caller is the scheduler/IO loop.
14:27 frioux ruoso: you know, I bet it could be done similarly to laziness
14:27 ruoso skids, fwiw, SMOP is completely coroutine-based... you might want to take a look, since you're so interested in that subject...
14:28 frioux so you do something like: my $foo = get-internet-string, and it does that and continues execution, and then when it get's to $foo it blocks if it doesn't have that yet, or just keeps going if it already does
14:28 skids ruoso: Basically coros are the only sane way to handle the complex state logic in many network protocols.
14:28 skids I have read some of the SMOP stuff, yes.
14:29 hercynium_ joined #perl6
14:29 ruoso frioux, I somehow think that all the lazyness will need to be expressed in terms of different threads of execution...
14:29 exodist joined #perl6
14:29 jnthn std: my $i; sub baz() { my $x = START { $i++ }; say $x }
14:29 p6eval std 25993: OUTPUT«ok 00:02 35m␤»
14:29 pmichaud joined #perl6
14:29 ruoso that can be allocated in different worker threads...
14:30 ruoso I think we need an Iterator::Observable role...
14:31 skids What would that add?
14:31 ruoso has @.observers
14:31 ruoso has Iterator::Observer @.observers
14:32 skids You mean like a condition wait?
14:32 ruoso no... like an event
14:33 skids So the iterator sends events when it has data queued?
14:33 ruoso yeah...
14:34 ruoso but it would be the scheduler that would observe that...
14:34 ruoso not the consumer of the iterator
14:34 ruoso if you try to consume from an iterator that has no data but hasn't ended...
14:34 ruoso it will throw a ControlExceptionWouldBlock
14:35 skids Oh, so like IO signals extended to code execution checkpoints?
14:35 ruoso yes
14:35 ruoso then this control exception is catch by the scheduler... which will put that continuation in the "waiting" pool
14:36 ruoso and once data is available, it would receive the event
14:36 ruoso and would be able to try to resume that continuation (if any worker thread is available
14:37 ruoso actually, not "waiting" pool... but "blocked" pool
14:37 ruoso it would go to "waiting" if no worker thread is available
14:38 ruoso and in "running" when some worker thread is executing
14:39 ruoso does it sound sane?
14:41 ron_ joined #perl6
14:44 skids Sorry visit from Mr. manager.
14:44 ruoso the same could happen when a non-blocking-infinite-data-producer reaches the buffer limit of an iterator
14:45 ron_ rakudo: my @a; if ('ab' ~~ /(a)(b)/) {my @a = @();say 'in if block: ', @a.join('/')} say 'after if block: ', @a.join('/')
14:45 p6eval rakudo 9a84c3: OUTPUT«Statement not terminated properly at line 1, near "say 'after"␤␤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)␤»
14:45 ruoso basically... iterator is the "unix pipe" of Perl 6
14:45 ruoso and the scheduler needs to be aware of that
14:45 skids Well that for sure.
14:45 ron_ rakudo: my @a; if ('ab' ~~ /(a)(b)/) {my @a = @();say 'in if block: ', @a.join('/')}; say 'after if block: ', @a.join('/')
14:45 p6eval rakudo 9a84c3: OUTPUT«in if block: a/b␤after if block: ␤»
14:46 justatheory joined #perl6
14:46 pugs_svn r25994 | jnthn++ | [t/spec] Fudge S04-closure-triats/start.t for Rakudo.
14:47 ron_ The "after block" output would seem to be off.  Yes/No?  Reported already?
14:47 pugs_svn r25995 | jnthn++ | [t/spec] Tests for renaming parameters in the signature.
14:47 pmichaud why do you think it's off?
14:47 pmichaud it looks correct to me.
14:48 skids I was kinda wondering when I was first looking at coros whether a model where IO is just a coro that throws events unhandled up to the top level, where there's a default action (that is not just for errors.)
14:48 ron_ Why does @a have the value for @() in the block but forgets it outside?
14:48 pmichaud because you declared it with 'my' inside the block, perhaps?
14:49 moritz_ aye, there are two varaibles named @a in that short program
14:51 pmichaud masak: ping
14:51 ron_ sorry - looked too similar to another problem and I missed the second my .. will keep looking
14:52 pmichaud ron_: no problem.  :-)
14:52 * jnthn about to add another 16 passing tests
14:53 moritz_ RT #64188 is bogus
14:53 nihiliad joined #perl6
14:53 pmichaud yes, I was just looking at that one :-)
14:53 pmichaud and about to ask that question
14:53 moritz_ rakudo: ?("freeeeeeeeeeeeeeeew" ~~ /('e'|'w')*/)
14:53 p6eval rakudo 9a84c3: RESULT«Bool::True»
14:53 moritz_ I'm already writing the reply
14:53 pmichaud okay, thanks.
14:55 ruoso I think I'm going to start adding ControlExceptionWouldBlock, Iterator::Observable, Iterator::Observer to S07... waiting for others to comment...
14:56 jnthn pmichaud: I tried moving uniq to the setting and hit upon a whole bunch of..."fun".
14:56 jnthn pmichaud: So backed off that one for now.
14:57 jnthn Essentially, Junction using List.uniq was exposing it though.
15:00 pmichaud jnthn: I don't have an issue with revising Junction to not use List.uniq
15:00 pmichaud especially since Junction is treated more like a native type than anything else (if I've read the latest spec updates correctly)
15:00 jnthn pmichaud: Yeah. In hindsight though, I also had to do some stuff to register Parrot's MultiSub and write a Scalar for it (and Perl6MultiSub for that matter)
15:00 ruoso pmichaud, jnthn, if junction is native now, you can use a lowlevel parrot type...
15:01 ruoso you can even have junction in a pmc of its own
15:01 jnthn Since they happen to inherit from Parrot's ResizalbePMCArray. Which we register with List. Which really gets us into all kinds of trouble.
15:01 ejs1 joined #perl6
15:05 dalek rakudo: f11ad52 | jnthn++ |  (3 files):
15:05 dalek rakudo: Implement START statements (not terms yet). Add S04-closure-traits/start.t to spectest.data.
15:05 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​11ad52fdacb47a529474807eb498cff5ee2ca55
15:05 dalek rakudo: 87068ef | pmichaud++ | docs/spectest-progress.csv:
15:05 dalek rakudo: spectest-progress.csv update: 329 files, 7367 passing, 0 failing
15:05 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/8​7068ef0d02c72829e038acc97b3c54de0434862
15:11 Tene joined #perl6
15:13 icwiener_ joined #perl6
15:20 donaldh joined #perl6
15:22 jnthn moritz_: Thinks this ticket can be closed now? http://rt.perl.org/rt3/Tic​ket/Display.html?id=56226
15:23 moritz_ jnthn: aye
15:24 jnthn moritz_: Done.
15:24 jnthn .oO( We're actually going to hit 300 tickets soon... )
15:25 moritz_ jnthn: from top or from bottom? :-)
15:25 jnthn From below
15:28 disismt joined #perl6
15:30 pugs_svn r25996 | jnthn++ | [t/spec] Correct assuming and MMD used together test. Since we didn't declare a proto and multi-dispatch doesn't operate on named arguments, the test wasn't going to work like that.
15:31 * jnthn has S06-currying/assuming-and-mmd.t passing locally. :-)
15:32 pmichaud I'm working on tickets now.
15:32 pmichaud we have a lot of duplicates.
15:32 jnthn pmichaud++
15:32 jnthn pmichaud: Yes, I can imagine that.
15:33 masak pmichaud: pong.
15:33 * masak backlogs
15:34 pmichaud masak: nm, moritz++ answered what my ping was about.
15:34 masak oki
15:34 pmichaud (it was about #64188)
15:34 masak I was away, studyuing Mandarin.
15:34 jnthn masak: ni hao ;-)
15:34 masak jnthn: nin hao. :P
15:34 jnthn masak: OH RLY?
15:35 masak (您好, I should say.)
15:35 masak jnthn: well, both work, of course.
15:35 masak differ only in formality.
15:35 jnthn masak: Ah, OK.
15:35 jnthn masak: I never really studied much Chinese at all. :-(
15:35 masak jnthn: it's hard. :/ but sometimes really rewarding.
15:36 jnthn masak: Oh, I can imagine.
15:36 masak and I figure, if three-year olds can speak it, it must be possible for me to learn as well.
15:36 moritz_ ... in three years *SCNR*
15:36 jnthn I have various Korean friends here...pondering trying to learn a bit of that.
15:37 grwi joined #perl6
15:37 masak jnthn: at least the writing system. it's the best in the world.
15:37 jnthn Yeah, they told me it was very logical.
15:38 masak extremely so.
15:38 Tene_ joined #perl6
15:38 masak it was designed by the enlightened king's advisors in the 17th century, IIRC.
15:38 grwi left #perl6
15:43 ron_ left #perl6
15:51 jnthn rakudo: my $x = True; $x &&= False; say $x;
15:52 p6eval rakudo 87068e: OUTPUT«0␤»
15:58 dalek rakudo: de86e8a | jnthn++ |  (2 files):
15:58 dalek rakudo: Make .assuming work on multi-methods. Add the now-passing S06-currying/assuming-and-mmd.t to spectest.data.
15:58 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​e86e8a8443fb4443024900f68de998a31471e97
15:58 dalek rakudo: f27c7ea | jnthn++ | :
15:58 dalek rakudo: Merge branch 'master' of git@github.com:rakudo/rakudo
15:58 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/f​27c7ea151fc90d6642616cd93ade25c30eefc9e
16:00 masak moritz_: re #64188: and here I thought that * and + were greedy.
16:01 masak moritz_: oh!
16:01 moritz_ masak: they are.
16:01 masak they are, but they match too soon.
16:01 moritz_ right
16:01 moritz_ and as soon as match is found, it doesn't try different start positions
16:02 pugs_svn r25997 | jnthn++ | [t/spec] Add a test for &&= with True and False, to make sure we don't regress on RT#63396.
16:02 moritz_ which is "works as designed", although I daresay there's nobody who hasn't tripped over it
16:02 moritz_ but the alternative would be even more scary
16:02 masak right.
16:03 masak I'll reject the bug.
16:03 moritz_ didn't I do that already?
16:03 * jnthn looks at a ticket
16:03 jnthn "it's the spirit of the bug that counts, not the letter"
16:03 masak moritz_: oh, you did.
16:04 masak jnthn: meaning what? that there's still some sense to be had from that ticket?
16:04 jnthn masak: You wrote it in a ticket. :-P
16:05 masak ah. :)
16:05 masak wise words. :P
16:05 moritz_ when you are quoted and don't remember you own words... then you know you're famous :-)
16:05 masak 哈哈
16:06 REPLeffect joined #perl6
16:06 * jnthn is happy that he can see Chinese characters on IRC now :-)
16:07 masak hanzi to the people.
16:07 * jnthn wonders how hard it'd be to get us parsing indirect method syntax.
16:07 pmichaud jnthn: I suspect not too difficult.... but there's going to be some major parser refactors soon anyway
16:08 jnthn pmichaud: Ones that'd make it a waste of time putting it in now?
16:08 moritz_ when we have LTM? or sooner?
16:08 pmichaud jnthn: if it's easy to put them in now, we could probably do it.
16:08 pmichaud jnthn: I know that we're going to have a major refactoring of block handling (again)
16:09 * masak could imagine the Rakudo mascot being a toad
16:09 jnthn Ugh.
16:09 jnthn pmichaud: Why this time?
16:09 pmichaud because the grammar changed significantly
16:09 jnthn Ah.
16:09 pmichaud there's a new  <blockoid>   construct in STD.pm
16:10 pmichaud which also does some lexical and pad handling
16:10 pmichaud similar to what we do with $?BLOCK_OPEN now
16:11 pmichaud in the settings code, I'm thinking that we should have parens on most/all of the argument-less methods.  yes/no ?
16:11 * jnthn looks at the end of token blockoid and is terrified
16:11 pmichaud the end of blockoid is handling the implied statement terminator stuff.
16:12 jnthn (settings parens) Yes, probably.
16:12 pmichaud it's not too far from what I'm currently doing in rakudo's grammar.
16:12 jnthn OK.
16:12 * jnthn wishes he had an install of STD.pm so he could see how it parses print $*OUT: "lolz"
16:13 pmichaud i have one -- just a sec.
16:13 jnthn I'm thinking it's done in methodop
16:14 jnthn Thanks
16:14 jnthn oh, maybe not
16:17 pmichaud (updating, rebuilding)
16:20 pmichaud jnthn: it's in token arglist
16:22 pmichaud jnthn: basically there's a $*INVOCANT_OK flag that says whether we're allowing an invocant in the arglist, and we scan the delims to see if any of them are a colon
16:22 pmichaud jnthn: short answer:  not all that easy to implement at the moment.
16:22 jnthn pmichaud: Yeah, looks a bit tricky.
16:22 jnthn I'll leave it for now then.
16:23 pmichaud another place where we probably want to get support for contextual variables.
16:23 jnthn Aye.
16:23 jnthn pmichaud: Ah, while I remember. japhb was asking about use Foo:from<parrot> stuff.
16:23 jnthn Really wants to work on OpenGL libs and using them from Rakudo.
16:23 pmichaud I still want/need to get the PCT changes in place to support that.
16:23 pmichaud that's on my list for this week.
16:24 jnthn OK, that was my gues.
16:24 jnthn *guess
16:24 jnthn Oh, great. :-)
16:24 * japhb hears his name ...
16:24 PerlJam pmichaud: where is LTM on the list?  :)
16:24 pmichaud PerlJam: I still need to get the other pge/pct refactors in place first.
16:24 japhb This week?  YAY!
16:24 pmichaud japhb: the pct refactors are on my list; I don't know where :from<parrot> will fall in that.
16:24 * japhb would do a happy dance, if he wasn't completely exhausted.
16:25 pmichaud I've also got to figure out where Parrot is headed with load_language stuff (since it's related)
16:25 japhb OK
16:26 japhb well, suffice it to say that I'm damned excited at even a decent chance of seeing it soon.
16:26 ron_ joined #perl6
16:26 pmichaud yes, it's likely to occur reasonably soon.  Then we get to figure out a bunch of other language interop issues.
16:27 ron_ rakudo: my $s = 'abcZdef'; my @a; if $s ~~ /(Z)/ {@a = @();$s = 'NOMAT';}; say 'with str change: ', @a;
16:27 p6eval rakudo f27c7e: OUTPUT«with str change: A␤»
16:27 ron_ rakudo: my $s = 'abcZdef'; my @a; if $s ~~ /(Z)/ {@a = @();}; say 'no str change: ', @a;
16:27 p6eval rakudo f27c7e: OUTPUT«no str change: Z␤»
16:28 pmichaud ron_: yes, that's a known bug.  The match objects are tied to the original string.
16:28 pmichaud I'm not quite sure what to do about it yet.
16:28 pmichaud although it will likely fix itself when I refactor PGE to be cursor-based.
16:29 ron_ Thx - was working on match objects for split and will look to a different approach I guess ...
16:38 felipe joined #perl6
16:45 pmichaud does a method without a parameter list get an implicit @_  the way a sub does?
16:48 jnthn pmichaud: I'm not aware of anywhere that the synopsis says it does.
16:48 jnthn pmichaud: But OTOH it doesn't say that methods differ from subs in that respect either.
16:48 jnthn Out of orthogonality, I'd expect they do.
16:48 pmichaud jnthn: yeah, that's what I've been wondering
16:48 jnthn What do we do now?
16:49 pmichaud I suspect we treat it like a sub
16:49 pmichaud (assuming that parameter-less subs get @_ by default now)
16:49 Psyche^ joined #perl6
16:49 jnthn I'm not even sure we're giving them @_ by default.
16:49 jnthn rakudo: sub foo { say @_.elems }; foo(); foo(1); foo(1,2,3);
16:49 pmichaud we did at one time -- I don't know if that made it in the parameter refactors.
16:49 p6eval rakudo f27c7e: OUTPUT«0␤1␤3␤»
16:50 jnthn rakudo: class X { method foo { say @_.elems } }; X.foo(); X.foo(1); X.foo(1,2,3);
16:50 p6eval rakudo f27c7e: OUTPUT«0␤1␤3␤»
16:51 pmichaud rakudo:  class X { method foo() { say 'yes'; } };  X.foo();  X.foo(1);  X.foo(1,2,3);
16:51 p6eval rakudo f27c7e: OUTPUT«yes␤too many arguments passed (3) - 1 params expected␤current instr.: 'parrot;X;foo' pc 166 (EVAL_21:71)␤»
16:52 PerlJam It's interesting that self is out of band in @_ for the X.foo() case
16:52 jnthn Good.
16:52 jnthn PerlJam: From a Perl 5 POV, that's maybe weird.
16:52 jnthn PerlJam: From a Perl 6 one, it kinds fits though, in my head.
16:52 pmichaud it fits for me.
16:53 pmichaud method foo()   is equivalent to   method foo($self:)
16:53 jnthn Right.
16:53 ron_ pmichaud: I took a look around on rt and trac for a ticket on match objects being tied to the original string.  Are you pretty sure there is a ticket?  Should there be one?
16:53 PerlJam and so is   method foo { ... }
16:53 PerlJam (apparently)
16:53 jnthn Stupid question - how do you make a copy of a string in Parrot?
16:54 pmichaud ron_: I don't know if there's a ticket for it -- but it's a known bug.
16:54 pmichaud jnthn: clone
16:54 jnthn (Since another routine is using it descructively)
16:54 jnthn pmichaud: Oh yeah!
16:55 pmichaud PerlJam: well, thus my question -- what does   method foo { ... }   mean?
16:56 jhorwitz joined #perl6
16:59 PerlJam I think the currently-implemented-in-rakudo meaning works.  (at least I can't think of a good reason you'd want it another way, but that's may be lack of imagination on my part right now)
16:59 PerlJam s/t's/t/
17:04 pmichaud afk # lunch
17:05 ron_ left #perl6
17:15 pugs_svn r25998 | jnthn++ | [t/spec] Fudge S11-modules/import.t for Rakudo.
17:17 jnthn Question for anyone who knows on S11. It suggests there is a :DEFAULT tag.
17:17 dalek rakudo: a51a0da | jnthn++ | src/builtins/eval.pir:
17:17 dalek rakudo: Fix importation of modules in nested namespaces.
17:17 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​51a0da74da21e1359ad5d7867e8592d53510da6
17:17 dalek rakudo: ce7ff26 | jnthn++ | t/spectest.data:
17:17 dalek rakudo: Add S11-modules/import.t to spectest.data.
17:17 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​e7ff269f714ccd91eba66484749ba0f0f704d1e
17:18 jnthn sub bar is export(:DEFAULT :others) {...}  #  :DEFAULT, :ALL, :others
17:18 jnthn Which makes me thing that if you juse use the module that this is in, without specifying any tags, you'd get what was in :DEFAULT.
17:19 jnthn However, elsewhere, it suggests you get :ALL
17:19 jnthn From S11:
17:19 jnthn module Foo {
17:19 jnthn sub foo is export {...}
17:19 jnthn ...then later...
17:19 jnthn The C<Foo> module will export C<&foo>]
17:19 jnthn ...
17:19 jnthn by default;
17:20 jnthn Which seems to suggest that you'd actually have the :ALL tag imported by default.
17:20 jnthn (Since foo in the example is not tagged as :DEFAULT)
17:21 PerlJam I think perhaps sub foo is export { ... }   is slight sugar for  sub foo is export(:DEFAULT) { ... }
17:21 jnthn That's not what S11 says though. :-|
17:21 jnthn sub bop is export                   {...}  #  :ALL
17:21 jnthn sub foo is export(:DEFAULT)         {...}  #  :DEFAULT, :ALL
17:21 PerlJam hrm.
17:22 jnthn And for multis it makes the following notes:
17:22 jnthn Any proto declaration that is not declared "my" is exported by default.
17:22 jnthn Any multi that depends on an exported proto is also automatically exported.
17:22 jnthn When there is no proto for a multi, the autogenerated proto is assumed
17:22 jnthn to be exportable.
17:24 jnthn Which gave me the impression that multis got :DEFAULT
17:24 ruoso jnthn, yes... I think S11 is just wrong... plain "is export" doesn't include in :DEFAULT
17:24 ruoso and plain "use" doesn't include :ALL
17:24 jnthn ruoso: I'd like to think it's that way.
17:25 PerlJam submit a doc patch to make it so  :)
17:25 cdarroch joined #perl6
17:25 ruoso jnthn, otoh, we could have :DEFAULT being set as a default in "is export"
17:25 jnthn ruoso: True.
17:25 ruoso which means that a bare "is export" is the same as "is export(:DEFAULT)"
17:25 jnthn ruoso: Well, presumably :ALL, :DEFAULT
17:25 ruoso but "is export(:SOMETHING_ELSE)" doesn't include :DEFAULT
17:26 ruoso jnthn, yes yes... but I think ALL is given, you don't have a way to unset it
17:26 jnthn Oh, but ALL gets them always, so yes, see your point. :-)
17:26 jnthn It seems multis get an exception though.
17:26 jnthn And are in DEFAULT.
17:26 jnthn If you just say "is export"
17:27 ruoso my point is... that can be made to everythign...
17:27 ruoso the code inside trait_auxiliary:<is>('export',&code)
17:27 ruoso actuallly, trait_auxiliary:<is>('export',&code, *%tags)
17:27 jnthn Oh, for sure.
17:27 jnthn I'm just saying, is that really a good idea.
17:27 jnthn And the synopsis says otherwise.
17:27 ruoso does an if !%tags { %tags<DEFAULT> = 1 };
17:28 jnthn Sure, we could do that.
17:28 jnthn It's just contradictory with S11.
17:28 jnthn (As is the other stance though.)
17:28 ruoso S11 is contradictory with itself, so...
17:28 jnthn So we gotta pick one or the other.
17:28 jnthn My feeling is we say that "sub bop is export                   {...}  #  :ALL
17:28 jnthn " is right
17:28 jnthn And add in the exception for multis
17:28 jnthn Which get :DEFAULT anyway.
17:29 jnthn Because multis are not really so dangerous.
17:29 PerlJam why should multis get :DEFAULT?
17:29 ruoso the exception looks weirder to me...
17:29 jnthn PerlJam: It's just what S11 seems to suggest.
17:30 PerlJam I think that's wrong though.
17:30 jnthn PerlJam: But it makes some sense in that presumably your multis that you are exporting mostly respond to types that your module defines.
17:30 ruoso I think that was written with @EXPORT_OK in mind
17:31 jnthn So basically the suggestion boils down to, plain is export always means is export (:DEFAULT) ?
17:32 donaldh left #perl6
17:32 ruoso basically... :DEFAULT is the default
17:33 jnthn OK.
17:33 ejs2 joined #perl6
17:33 jnthn Then S11 just needs patching to say that.
17:33 jnthn And then that resolves the contradictions.
17:33 ruoso but makes :ALL kinda useless
17:34 jnthn ruoso: No, not really.
17:34 jnthn Because is export(:other) ends up in ALL but not in DEFAULT
17:34 ruoso right...
17:34 jnthn So you can use Foo :ALL;
17:34 jnthn If you want everything possible imported.
17:34 ruoso but if you want to export something not by default
17:34 ruoso you have to say
17:34 ruoso sub foo is export(:ALL)
17:35 jnthn Surely if you wanted something to be exported not by default though, you'd be giving it another tag?
17:35 jnthn sub foo is export(:thingy)
17:35 PerlJam well,  sub foo is export( :some-other-tag )
17:35 PerlJam right.
17:35 jnthn So I don't see is export(:ALL) being so common.
17:36 jnthn Plus it means what it says. :-)
17:36 PerlJam But what happens with multis?  Can you export one variant and not another?
17:36 jnthn I doubt that's going to work out if you try it.
17:37 jnthn Maybe we could make it work...
17:40 ruoso PerlJam, I think it should be an error to have different visibility for candidates of the same multi
17:40 ruoso the only thing they have different is the signature and the code block
17:41 jnthn Aye, we should probably either make it work or make it an error.
17:41 PerlJam ruoso: I think so too but I can't convince myself enough that it's *not* useful to say that's how it should be.
17:42 ruoso PerlJam, it simply doesn't work
17:42 ruoso because the stored container holds all the candidates
17:42 ruoso you don't get &foo for just that candidate
17:42 ruoso at least not in the same lexical scope
17:43 PerlJam not if "is export" controls visibility of the candidates for dispatch
17:43 jnthn ruoso: You could feasibly grab a particular candidate though, create Multi containers in the various export namespces, and push them into the ones wehre they're exported.
17:44 ruoso hmm.. I was asssuming the export packages were always holding aliases to something defined in the actual module
17:44 jnthn ruoso: Yeah, as defined they are.
17:44 jnthn ruoso: I'm just saying there is a way we could make it work if it were spec'd that we should.
17:44 ruoso right...
17:45 ruoso so let's spec otherwise ;)
17:46 * jnthn goes to change Rakudo's export in light of discussing this
17:46 jnthn Patch to S11 would be cool if anyone has the repo checked out...
17:46 * ruoso has
17:47 jnthn ruoso: I guess it's just
17:47 jnthn - sub bop is export                   {...}  #  :ALL
17:47 jnthn + sub bop is export                   {...}  #  :ALl, :DEFAULT
17:48 grwi joined #perl6
17:49 pugs_svn r25999 | ruoso++ | [spec/S11] :DEFAULT is default in "is export"
17:49 ejs joined #perl6
17:50 PerlJam So ... if we're going to export a multi ... should the is export be on the proto or on (at least one of) the sub defs?
17:51 grwi left #perl6
17:51 ruoso I'd say "all should have the same visibility declaration"
17:52 jnthn PerlJam: multis get is export by default, though
17:52 jnthn So you'd have to write an explicit one to make things interesting.
17:52 disismt joined #perl6
17:52 PerlJam so ... how do you *not* export a multi then?
17:53 jnthn Make sure they're all marked is export(:other)
17:53 PerlJam let me rephrase,  how do you mark a multi as not-exportable?
17:53 jnthn my multi ...
17:54 ruoso hmmm...
17:54 ruoso how did we get there?
17:54 jnthn S11: Any proto declaration that is not declared "my" is exported by default.
17:55 ruoso right... but.. how did we get to that spec?
17:55 ruoso what's wrong with Foo::Bar::baz() being a multi?
17:55 jnthn Well, I guess somebody sat down and thought about it and decided that's what the spec would be. :-P
17:55 ruoso I mean... why does it force me to export baz?
17:56 PerlJam this is one of those areas where it seems we have a strange mix of implicit and explicit behavior
17:56 jnthn It doesn't, but if you're not going to export it that probably means you want to encapsulate it, which probably means you want to use "my"
17:56 PerlJam jnthn: so what does "my sub foo is export"  mean?
17:56 jnthn IIRC we used to have to write is export on multis. And then it was changed.
17:57 PerlJam jnthn: is it private because of the my or does the export override that?
17:57 jnthn PerlJam: It's exportable, but you can't fall it as Foo:Bar::foo
17:57 ruoso it seems like "my/our" inconsistency again... just like in methods
17:58 PerlJam ruoso: my thoughts too.
17:58 jnthn ruoso: It had occured to me that in answer to your "what about modifying the outer multi" the other day, btw, we coulda used augment multi...
17:58 M_o_C joined #perl6
17:58 jnthn (just as a btw)
17:58 pmichaud with this change to Rakudo/S11, does that mean we can get rid of all of the :DEFAULT tags in Test.pm ?
17:58 jnthn pmichaud: Yes
17:58 pmichaud \o/
17:58 jnthn pmichaud: Right after I ci the Rakudo change.
17:58 ruoso (but I'd wait for TimToady, too see if he doesn't revert that commit)
17:59 pmichaud that was something I noticed while on vacation and said "THAT's gotta change."
17:59 jnthn pmichaud: Yeah, I was thinking...the spec says it but it feels wrong.
17:59 pmichaud also, we should probably start moving Test.pm into settings anyway.
18:00 ruoso jnthn, hmmm... after thinking about it... I realized we don't need yet another monkey patch mechanism ;)
18:00 jnthn FWIW, I would be happy enough to go back to needing "is export" on multis.
18:00 * ruoso supports that idea
18:00 PerlJam me too
18:00 ruoso and we have the meaning of "my/our" consistent...
18:01 jnthn ruoso: My question still stands though on lexical multi stuff. Do we still ahve to consider candidates in outer scopes?
18:01 PerlJam Are protos required for multis or not?
18:01 ruoso jnthn, no... we copy from the outer scopes when the inner multi is declared
18:01 jnthn ruoso: Just copy and tack the new ones on the end and sort?
18:02 pmichaud jnthn: that's the way I was figuring it, yes.
18:02 ruoso I mean... consider as if all candidates of the outer multi were declared in the current scope
18:02 jnthn my multi foo() { 1 }; { my multi foo() { 2 }; foo() } # and so this is thus ambiguous?
18:02 ruoso yes
18:03 jnthn OK, good.
18:03 jnthn That's sane. :-)
18:03 jnthn pmichaud: While we're on lexical stuff - can you remember what lay behind our problem with classes not being able to see outer lexicals?
18:04 jnthn pmichaud: Because we need to fix that, and then we need lexical multis, and then we can import to lexical scopes from the setting etc.
18:04 pmichaud jnthn: the body of the class can't see the outer lexicals because the body gets invoked before the outer.
18:04 pmichaud my $a = 5;   class Foo { say $a; }
18:05 jnthn rakudo: my $x = 1; class Foo { method x { say $x } }; Foo.x
18:05 p6eval rakudo ce7ff2: OUTPUT«Lexical '$x' not found␤current instr.: 'parrot;Foo;x' pc 168 (EVAL_20:77)␤»
18:05 jnthn Taht's the one I was meaning more.
18:05 pmichaud oh.
18:05 pmichaud Parrot doesn't like :outer on :init subs.
18:05 jnthn But yes, we do have the other, separate problem, as you describe.
18:05 jnthn Oh.
18:05 jnthn Did we ever work out why?
18:05 jnthn Or is that still to explore?
18:05 pmichaud I haven't tried it recently.
18:06 pmichaud I've tried it since the lexicals updates, though.  I can do a quick test program.
18:06 jnthn Not urgent if you're on with other stuff.
18:07 jnthn Just something I want to sort out in the near future.
18:07 pmichaud I'm waiting for a spectest run on a patch.
18:07 pmichaud so I can look at it quickly.
18:07 jnthn ah, nice
18:10 alester joined #perl6
18:13 aindilis joined #perl6
18:19 schmalbe joined #perl6
18:28 ejs joined #perl6
18:32 ejs joined #perl6
18:34 ejs1 joined #perl6
18:35 skids joined #perl6
18:37 pmichaud jnthn: the original bug report for this is RT #47956
18:38 pmichaud I've got an updated script that illustrates the bug -- will add it to trac (and point the RT ticket to that one)
18:39 jnthn OK.
18:44 pmichaud TT #500
18:47 skids Someone should claim with no evidence that a fully implemented Perl6 is the inly language capable of "unwinding the CDS and CDO financial markets" :-)
18:47 skids What, it works for AIG number cruncher bonuses :-)
18:48 pmichaud skids: I think the markets would go into a panic if we made that claim, under the assumption that Perl 6 will never ship.
18:48 skids :-)
18:49 * jnthn finally tracks down why multi exports weren't really working
18:51 dalek rakudo: b64e163 | pmichaud++ | src/ (2 files):
18:51 dalek rakudo: Move capitalize into Any-str.pm setting (RT #64060).
18:51 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/b​64e163d146a373101330faac97ea90316ebde25
18:51 dalek rakudo: 7b3f8c4 | pmichaud++ | :
18:51 dalek rakudo: Merge branch 'master' of git@github.com:rakudo/rakudo
18:51 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/7​b3f8c4f3e99b91eeb3e78cf8c830bc797aed1e5
18:51 * diakopter wonders if Goldman Sachs still heavily uses APL
18:55 Tene_ pmichaud: let me know if I can help with PCT refactors.
18:57 NordQ joined #perl6
18:58 jnthn Tene: Did you have any luck with .leave?
18:59 Tene ... oh, right.
18:59 Tene I knew I was forgetting something...
18:59 Tene >.>
19:01 jnthn ;-)
19:03 mberends jnthn, pmichaud: written by a PIR total n00b, how does this look? http://gist.github.com/85641
19:04 maustin joined #perl6
19:04 maustin left #perl6
19:04 Tene mberends: why don't you just do like:
19:04 jnthn mberends: Ah, the infix:= calls ain't quite what you want in this case.
19:04 Tene find_lex sock, "$socket"
19:04 Tene ?
19:05 jnthn Tene: Because finx_lex only hands back PMCs and the socket op needs other things, I think.
19:05 Tene ah
19:06 jnthn mberends: mberends I explained it badly last time I suspect - it's for assigning to Perl 6 variables rather than temporaries that you'll use in the PIR
19:06 jnthn find_lex $P0, "$socket"    # handle to be opened
19:06 jnthn can become
19:06 jnthn find_lex sock, "$socket"    # handle to be opened
19:06 jnthn You can just put it right into that since it's a PMC
19:06 jnthn For the others just domain = $P1
19:06 jnthn Is fine
19:07 jnthn mberends: Other than that, looks fine. :-)
19:07 mberends that's at least a start... thanx for the advice :)
19:08 jnthn Thanks for working on it. :-)
19:08 mberends plenty more to do of course, but an occasional sanity check helps :)
19:09 jnthn mberends: Are you roughly following http://svn.pugscode.org/pugs/docs/Pe​rl6/Spec/S32-setting-library/IO.pod ?
19:10 mberends jnthn: yes
19:11 jnthn mberends: Great!
19:12 mberends just part of it, mind ;)
19:13 jnthn ;-)
19:13 pugs_svn r26000 | jnthn++ | [t/spec] A few more import tests.
19:13 dalek rakudo: c1c4307 | jnthn++ | src/classes/Multi.pir:
19:13 dalek rakudo: Revert an accidential change from earlier debugging.
19:13 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​1c43071a2c64b67c5678b81d6ae71fb435554d4
19:13 dalek rakudo: a572337 | jnthn++ | src/ (2 files):
19:13 dalek rakudo: Fix up exporting (and as a result, importing) of multis.
19:13 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​5723375d4dee96919c60eb98f65ae190d588240
19:14 dalek rakudo: 0f50d4f | jnthn++ | :
19:14 dalek rakudo: Merge branch 'master' of git@github.com:rakudo/rakudo
19:14 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/0​f50d4fe59652364c93ea621928d7d48755b85c9
19:15 jnthn OK, I need a food break.
19:17 pmichaud mberends: note that failure should probably be done with a call to 'fail'
19:18 jnthn Ah, yes, good pooint.
19:18 pmichaud in this particular case, I'd expect there to be only one line of inline PIR
19:18 pmichaud okay, a bit more than one line
19:18 jnthn pmichaud: With that patch probably now the :DEFAULT can go away.
19:18 pmichaud but essentially
19:18 pmichaud oh wait.
19:18 pmichaud socket() just returns true/false?
19:20 pmichaud I suspect the socket opcode will fail if $socket is an IO object.
19:20 jnthn mberends: I'm not seeing a method called socket in S32-setting-library/IO.pod, BTW.
19:20 pmichaud me neither.
19:20 jnthn (Though I can understand this may be a helper sub for implementing that.)
19:21 Tene pmichaud: allison was planning to work on issues with PMCs and HLLs soon.  Would you be okay with me pushing up a branch to rakudo that was migrated to .HLL 'perl6' (and therefore broken) ?
19:21 pmichaud Tene: branches are always welcome.
19:24 ejs1 joined #perl6
19:24 TimToady my fixes to IO.pod were not intended to be completist :)
19:24 TimToady and I know I forgot open with :w
19:25 pmichaud (scheduling note:  I may be a few minutes late to design meeting call today)
19:25 TimToady k
19:25 pmichaud (have to pick up kids from school, as it's raining here.)
19:31 ejs1 joined #perl6
19:31 mberends jnthn, pmichaud: bacek++ has essentially wrapped the BSD socket functions for Parrot, so they will become helper functions in the eventual IO setting library.
19:32 pmichaud ...should they be?
19:32 mberends dunno
19:38 moritz_ perl6: say True ~~ False
19:38 p6eval rakudo 0f50d4: OUTPUT«Method 'ACCEPTS' not found for invocant of class ''␤current instr.: 'infix:~~' pc 19529 (src/builtins/match.pir:18)␤»
19:38 p6eval ..elf 26000, pugs: OUTPUT«␤»
19:38 moritz_ perl6: say False ~~ False
19:38 p6eval rakudo 0f50d4: OUTPUT«Method 'ACCEPTS' not found for invocant of class ''␤current instr.: 'infix:~~' pc 19529 (src/builtins/match.pir:18)␤»
19:38 p6eval ..pugs: OUTPUT«1␤»
19:38 p6eval ..elf 26000: OUTPUT«␤»
19:38 moritz_ perl6: say False ~~ Bool::False
19:38 p6eval pugs: OUTPUT«1␤»
19:38 p6eval ..rakudo 0f50d4: OUTPUT«0␤»
19:38 p6eval ..elf 26000: OUTPUT«␤»
19:38 ejs1 joined #perl6
19:39 moritz_ why does smartmatching against a Bool alway return the RHS?
19:39 pmichaud because S03 specs it that way :-)
19:39 moritz_ I know
19:39 moritz_ but what's the motivation?
19:39 moritz_ I mean for always true conditions we have * on the RHS
19:40 moritz_ having False ~~ False being False seems very unintuitive
19:40 moritz_ given that 0 ~~ 0 is True
19:40 moritz_ and for a smartmach that's always false you can still use { False } on the RHS
19:40 pmichaud I think it's so that someone can do things like
19:40 pmichaud when foo($x) { ... }
19:40 pmichaud where foo($x) returns a bool
19:41 moritz_ yes, that makes sense
19:41 pmichaud afk for a bit # kid pickups
19:41 moritz_ maybe there's no do-it-right-in-every-case solution here
19:41 pmichaud if you want to smart match against false, it's just    when !$_ { ... }
19:42 pmichaud or === False, I suspect.
19:42 amoc rakudo: say ::SomeThing
19:42 p6eval rakudo 0f50d4: OUTPUT«Null PMC access in isa()␤current instr.: 'parrot;List;!flatten' pc 5960 (src/classes/List.pir:227)␤»
19:42 amoc May I bug report it ?
19:42 moritz_ amoc: please do
19:44 amoc Er.. is this of 'parrot' or 'rakudo' ?
19:45 moritz_ rakudo.
19:46 amoc thanks a lot for your kindness at my noob question.
19:47 moritz_ no problem, we all began like that ;-)
19:49 * amoc is moved by moritz's word.
19:51 moritz_ actually the time I came in here I reported a broken link on the pugs webite
19:51 moritz_ and two minutes later I had a commit bit in my inbox
19:51 moritz_ and audreyt told where I could have fixed it myself ;-)
19:54 moritz_ rakudo: grammar A { token TOP { ^ .* $ } }; class B { method TOP ($/) { given 1 { when * { make 1 } } } }; A.parse("foo", :action(B.new)); say "alive"; # make() in given/when seem to segfault on my machine
19:54 p6eval rakudo 0f50d4: OUTPUT«alive␤»
19:55 moritz_ well, my segfaulting example is a little bit more complicated
20:09 amoc i see but it's very respectful for me that you immediately corrected and committed.. :O
20:12 moritz_ I didn't, audreyt did it ;-)
20:12 moritz_ actually I had never even used svn before
20:16 amoc oh, how long was it .. years ago?
20:16 moritz_ April 2006, iirc
20:18 * jnthn back from foods
20:20 * amoc thinks it's awesome
20:21 jnthn Actually, was just the takeout...so not that awesome. ;-)
20:22 jnthn Though while eating it I think I figured out how to easily do lexical multis in Rakudo.
20:22 moritz_ ;-)
20:22 Tene my favorite takeout curry place has closed.
20:22 Tene i need to find another one.
20:23 jnthn Ouch. :-(
20:23 moritz_ actually it was 2007-02-04
20:23 jnthn Lack of curry is a Bad Thing.
20:24 * jnthn is visiting friends at the weekend and they're taking him to a good curry place.
20:24 amoc jnthn: then, it's 'really' awesome it's a meal with rakudo
20:25 amoc moritz_: then, i guess that perl is your first proejct?
20:30 moritz_ amoc: nearly; I did some small stuff in C++ and Eiffel before, but nothing really in a larger community
20:33 * amoc is stalking to moritzs homepage o_O....!
20:33 jnthn Heh. Perl 6 is my first compiler project too. Talk about starting with something small...
20:34 cspencer_ joined #perl6
20:34 pmichaud any thoughts on what to do with 63874?  Do we simply close it as rejected, or is there likely to be another patch coming?
20:34 pmichaud or did I miss a patch to replace the original?
20:35 moritz_ we have floor/ceiling/round etc in the setting already
20:35 ruoso SMOP is my first real C project
20:36 amoc (sniff) I don't have my first project yet.
20:36 moritz_ pmichaud: one be cspencer++, if I can believe my blame log
20:36 moritz_ so I'd reject it
20:36 cspencer_ moritz: i'll accept the blame for that, yes :)
20:36 jnthn If it's already in the setting, ticket isn't much use.
20:36 pmichaud okay, I'll reject it.  The version that is in setting now has some issues, though.
20:37 pmichaud it's improperly type-constraining the invocant.
20:37 bacek good morning
20:37 moritz_ cspencer_: I like 'svn praise', which does the same as 'svn blame', but is so much nicer ;-)
20:37 pmichaud also, for the time being we might want to have floor/ceiling return nums instead of ints.
20:37 moritz_ pmichaud: why?
20:37 jnthn bacek: morning
20:38 pmichaud we don't have bigint support, and we can't represent Inf as an int
20:38 amoc bacek: good morning *
20:38 moritz_ pmichaud: that seems unintuitve; my Int $x = ceil(3.4) would fail
20:38 jnthn Indeed.
20:38 bacek jnthn++ # porting socket_win32.c :)
20:38 pmichaud there is that.
20:38 moritz_ I'd rather regress on Inf/NaN things than on such "easy" stuff
20:39 jnthn bacek++ # giving me something to port ;-)
20:39 pmichaud okay, I'll go with that logic for now.  But we still need to remove the invocant constraints.
20:39 pmichaud "34.4".floor   should work.
20:39 moritz_ I can do that
20:39 pmichaud also, get rid of the 'return' calls
20:40 moritz_ ok
20:40 pmichaud that adds an extra function call + exception + capture into the mix.
20:40 moritz_ should I also get rid of the invocant at all, and use self instead?
20:40 pmichaud that's my strong preference, yes.
20:40 pmichaud not only that, but it eliminates the need for find_lex
20:40 moritz_ aye
20:41 pmichaud (I'm sooooo happy we implemented the 'box' opcode, btw :-)
20:41 * jnthn too
20:42 * ruoso adding mildew to ohloh
20:44 moritz_ changes implemented, spectesting now
20:53 sri_kraih_ joined #perl6
20:57 |jedai| joined #perl6
21:01 dKingston joined #perl6
21:08 cspencer moritz: i'd submitted ~ 3 tickets adding various things to the setting late last week, is it easier if i go back and combine them since they may not apply cleanly now that some of the files may have changed?
21:08 cspencer or are smaller patches preferable?
21:12 pmichaud I tend to prefer smaller patches -- easier to review (assuming they're independent)
21:12 cspencer pmichaud: alright :)
21:12 pmichaud it is a bit annoying that git-apply doesn't apply patches that patch(1) is able to handle.
21:12 pmichaud or to be more explicit
21:13 pmichaud patches generated with git might not pass git-apply but work fine with patch(1)
21:14 Tene My office is also dealing with the "pass plain patches around and try to deal with them on top of git" issue lately
21:14 pmichaud well, if I just use patch(1), it works fine but we don't preserve the commit history that git-apply would have.
21:14 pmichaud That said, I'm fine with just using patch(1) for now.
21:19 PerlJam how do patches generated with git fail git-apply?
21:23 pmichaud I'm getting context errors because the line numbers don't match precisely
21:23 pmichaud as an example, try to git-apply the patch in RT #64092 to the current master
21:24 cspencer pmichaud: would you like me to resubmit that one against the current HEAD?
21:24 pmichaud cspencer: no, I just used patch(1) and it worked fine.
21:24 pmichaud I'm spectesting it now.
21:25 cspencer also, (reviewing some of your comments above), would you prefer return not be used when avoidable, just to save overhead?
21:26 pmichaud yes.
21:26 cspencer ie) in the p5chomp just use "$num" instead of "return $num"
21:26 pmichaud yes.
21:26 cspencer ok, will do in the future
21:26 pmichaud eventually we'll likely do some optimization there, but for the present it's better to avoid the explicit returns when we can easily do so, I think.
21:26 DemoPhreak joined #perl6
21:27 jnthn I've probably used return in places where I needn't have done so too...
21:28 |jedai| joined #perl6
21:28 pmichaud in general  errors should be indicated by fail(), return values simply by giving the result to be returned
21:28 cspencer ok
21:30 eternaleye joined #perl6
21:31 PerlJam pm: the only errors I got were whitespace errors (which are easily fixed with --whitespace=fix)
21:36 pmichaud PerlJam: just a sec, I'll try reapplying.
21:38 pmichaud PerlJam: http://nopaste.snit.ch/15960
21:39 ejs1 joined #perl6
21:41 PerlJam pm: what version of git are you using?
21:41 pmichaud $ git --version
21:41 pmichaud git version 1.5.4.3
21:41 PerlJam Here's what I see.  http://nopaste.snit.ch/15961
21:42 PerlJam (I included the output of git rev-parse HEAD just in case my HEAD is different from yours somehow :)
21:42 pmichaud we have the same HEAD
21:42 pmichaud so, it's a git version issue?
21:43 PerlJam must be.  I'm using 1.6.2.rc2.22.g1d035  currently.
21:44 pmichaud I'm using whatever version is in the ubuntu repos.
21:44 * PerlJam installs 1.5.4.3 and tries anyway (I'm curious)
21:45 PerlJam pm: I keep a copy of the git repo around and build it occasionally.
21:46 PerlJam There was something that 1.6 had that I wanted and 1.5.4 didn't have it, but I've since forgot what that something was.
21:46 pmichaud I think I'll just stick with patch(1) until I can manage to get to 1.6 :-)
21:48 PerlJam yep, it definitely fails with 1.5.4.3
21:48 * PerlJam goes back to 1.6.2  (no rc  this time :)
21:49 NordQ joined #perl6
21:49 skids joined #perl6
21:52 PerlJam pm: it doesn't take much to build and install you're own git :)  I just did it twice in the span of about 10 minutes
21:52 pmichaud I might look into doing that.  So far it's been nice that it's part of my standard install sequence.
21:52 pmichaud (i.e., just grabbing the package from ubuntu)
21:53 pmichaud besides, the 9.04 release might come with an updated git, so I might just wait a month.
21:53 PerlJam oh, that's right ... it's almost time for a new ubuntu
21:53 PerlJam yeah, I'd wait if I were you
21:58 * jnthn wonders how long until Rakudo overtakes Parrot on tickets
21:59 PerlJam jnthn: depends on how fast you and Patrick implement things  ;)
22:00 jnthn Yes, yes, I'm just smoking another thing. :-P
22:00 jnthn ENOTENOUGHHOURSINRAKUDODAY
22:02 araujo joined #perl6
22:07 justatheory joined #perl6
22:08 pugs_svn r26001 | jnthn++ | [t/spec] More tests for import; also comment on one that I can't see any justification for in the spec. If nobody else can either, suggest we kill it.
22:11 dalek rakudo: bb22e02 | jnthn++ |  (3 files):
22:11 dalek rakudo: Support specifying :tags when doing a use, which will import things with those tags. Default to :DEFAULT if none specified. Also always import :MANDATORY no matter what tags are specified.
22:11 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/b​b22e02dc81513539ccc6061604ac89a29c000e0
22:26 Southen joined #perl6
22:31 jnthn pmichaud: ping
22:32 pmichaud pong
22:33 jnthn pmichaud: "Applying this patch causes me to get failures in t/spec/S05-mass/rx.t ."
22:33 jnthn I know why, and meant to talk to you about this one...
22:33 jnthn When you have code like:
22:33 jnthn /foo/
22:34 jnthn It compiles this regex and puts it in the namespace PGE::Grammar
22:34 jnthn Or so it appears
22:34 jnthn And the reason it causes failures in that test is because it has loads of regexes, and the block names start conflicting with blocks already in the setting.
22:34 jnthn Which also wind up in that namespace.
22:35 pmichaud well, the namespace issue is a bit of red-herring I suspect -- the block names need to be unique regardless of the namespace.
22:35 jnthn Aye
22:35 jnthn They get unique sub ids
22:35 jnthn bu
22:35 jnthn .namespace ["PGE";"Grammar"] .sub "_block20" :method :subid("12_1238020527")
22:36 jnthn ah, two lines got stuck together there
22:36 pmichaud what happens with other blocks... what names are they getting?
22:36 jnthn Similar but it's less of an issue at the moment.
22:36 jnthn (Because those end up in the namespace of the place where they are defined.)
22:37 jnthn But yes, the namespace issue may well turn out to be a red-herring.
22:37 pmichaud I suspect the problem is really related to the fact that these are (anonymous) methods and not blocks/subs
22:37 pmichaud i.e., if the :method flag wasn't there, it probably wouldn't complain.
22:38 jnthn That's very possible too.
22:38 pmichaud the error I got was complaining about inserting over an existing method (that may have been supplied by a role)
22:39 cspencer pmichaud: if i replaced the negative offsets to substr with a $str.chars - 1, would that be preferable?  (for the p5chomp/p5chop patch)
22:39 cspencer (or something along that line)
22:39 jnthn pmichaud: Oh, yes, I remember now...
22:39 jnthn pmichaud: So yes
22:39 pmichaud cspencer: that might work out better.
22:39 cspencer ok, i'll fix that and the regex and resubmit
22:40 jnthn Though the names might come and bite us too.
22:40 jnthn Since the subs are not :anon'd.
22:40 pmichaud and we can't :anon methods.
22:41 pmichaud (TT #389)
22:41 jnthn Ah.
22:44 Southen_ joined #perl6
22:44 pmichaud okay, I'll either work on improving the uniqueness of the subnames or see if I can come up with a way to otherwise anonymize them.
22:45 jnthn k
22:46 pmichaud it kinda bugs me that there's no way to create a :method Sub without having to generate a unique name for it, though.
22:47 jnthn Let me look up that tt, I'm curious why :anon and :method don't play.
22:48 pmichaud I guess they play depending on what we want the meaning of :anon to be there, though.
22:48 pmichaud looking at the ticket -- I guess that :anon is actually doing what I want it to do in this case.
22:48 pmichaud i.e., it's creating a method without installing it in the method table.
22:49 pmichaud I'm just lacking a way of creating a method that doesn't go into the namespace.
22:49 jnthn IIRC that's what :method without a :nsentry was meant to do. :-|
22:50 pmichaud yes, that's what I said in the ticket.  :-|
22:50 moritz_ so you also get the failure in rx.t? then I can commit my changes...
22:51 pmichaud moritz_: I wouldn't commit any changes if you're getting a failure in rx.t
22:51 pmichaud I'm not getting the rx.t failure in HEAD -- only when certain patches are applied.
22:51 pmichaud (generally patches involving anonymous regexes)
22:51 jnthn moritz_: And if you re-order things in the setting they might disappear...
22:52 moritz_ pmichaud: ah, ok
22:52 * jnthn didn't actually seriously suggest that ;-)
22:52 pmichaud I'll fix the underlying issue tonight.
22:52 jnthn Cool.
22:52 * jnthn just finally wrote *last week's* rakudo day report
22:52 pmichaud fortunately it's raining here, which means that kid-evening-soccer-practices have been cancelled so I have a little bit more time for stuff
22:52 moritz_ pmichaud: ok, I'll push to a branch, which you can merge once you're done
22:53 pmichaud moritz_: that's great.  how do I merge a branch again...?   1/2 :-)
22:54 moritz_ pmichaud: normally you go to master and simply say 'git merge the-branch-to-merge'... but in this case it'll be a single commit, so you can simply cherry-pick it, then you won't get a merge commit
22:56 pmichaud okay, thanks.
22:56 moritz_ branch setting-num-improvements pushed to github
22:59 jnthn What's the syntax for messaging someone here?
22:59 moritz_ @tell jnthn there you go
22:59 lambdabot Consider it noted.
22:59 jnthn @tell ?
22:59 lambdabot Consider it noted.
23:00 jnthn @tell mberends be sure to use the method forms of socket IO on the PMCs, not the opcodes, which actually are now unspec...
23:00 lambdabot Consider it noted.
23:01 cspencer what's the signature that allows a slurpy argument list for a variable number of arrays?
23:01 cspencer ie) foo(@a, @b, @c)
23:02 moritz_ cspencer: a foo(*@a) will flatly slurp up all arrays (I think)
23:02 moritz_ and foo(@@a) would do so without flatting, but that's NYI
23:02 cspencer that would explain things :)
23:07 Tene if it's just a fast-forward, there won't be a merge commit
23:08 eternaleye joined #perl6
23:08 Tene all the merge commits in rakudo bug me a little.  If you do a rebase instead of pull, you don't get those.
23:08 jnthn Tene: merge commits?
23:08 lambdabot jnthn: You have 1 new message. '/msg lambdabot @messages' to read it.
23:09 jnthn @messages
23:09 lambdabot moritz_ said 9m 50s ago: there you go
23:09 jnthn .oO( phew, it wasn't a secret message )
23:09 Tene jnthn: run 'gitk' in rakudo
23:10 jnthn wtf there's a gui app that I didn't even know about?!?!
23:10 Tene jnthn: for doing commits and such, there's git-gui
23:10 frioux jnthn: we kept it a secret
23:10 frioux jnthn: it was a conspiracy
23:10 jnthn hah, apparently I have 1,500 "loose objects"
23:11 moritz_ Tene: but I think a 'git pull' does merge commits even for fast-forwards commits
23:11 jnthn Is compressing the database non-lossy?
23:11 moritz_ which is kinda... inconvenient
23:11 Tene moritz_: pull does not do merge commits if it's just ff
23:11 moritz_ jnthn: yes
23:11 jnthn As in, is there any reason not to?
23:11 jnthn OK.
23:11 Tene jnthn: 'git gc' will repack everything for you
23:12 Tene moritz_: but if you have local commits on your local master, and you pull down commits from the remote master, it makes a merge commit
23:12 moritz_ Tene: that's what I meant, yes
23:12 jnthn Tene: Is this about the issue of when you do a push, and it moans about non-fast-forward and you ahve to pull and then push to resolve it?
23:12 Tene moritz_: fast-forward is if you have no local commits
23:12 Tene jnthn: yes
23:13 jnthn Tene: And I shouldn't be doing it that way, or?
23:13 Tene jnthn: if you 'git fetch; git rebase origin' instead of 'git pull', it doesn't get a merge commit.
23:13 Tene it's not really a big issue
23:13 moritz_ Tene: ah, I confused that with trival rebases
23:13 Tene depends on how picky you are.  I'm rather picky about trivial things at times.
23:14 Tene It certainly doesn't hurt anything how things currently are
23:14 Tene 'git pull' is approximately an alias for 'git fetch; git merge origin'
23:22 pugs_svn r26002 | putter++ | [elfish/on_sbcl] elfcl now self-compiles on CCL too.  Synced with elf_h (added Array::clone), unbreaking the build.
23:22 pugs_svn r26002 | putter++ | Compared with SBCL, the CCL (aka Clozure, formerly aka OpenMCL) compile is much quieter, and somewhat faster (still several x slower than elfp5), though its fib() is 4x slower (~6x elfp5, ~20x perl5, ~~200x unboxed non-multi generic CL).
23:30 kate21de joined #perl6
23:31 DemoPhreak joined #perl6
23:33 pmichaud fwiw, I figure that the extra merge commits generated by 'git pull' aren't a big issue.  If they are, then git is huffmanized the wrong way.
23:34 cspencer pmichaud: i've attached a fixed p5chomp/p5chop patch to the original ticket
23:34 cspencer though rx.t is still failing
23:34 pmichaud cspencer: excellent!
23:34 bacek_ joined #perl6
23:34 pmichaud I'll fix the method naming issues later tonight and apply the patch (assuming it passes)
23:35 cspencer sounds good :)
23:40 jnthn http://use.perl.org/~Jonath​anWorthington/journal/38701 # write-up of today's work
23:47 nihiliad joined #perl6
23:49 jnthn pmichaud: Just as a heads-up, I'll probably be completely offline the weekend and Monday.
23:50 jnthn I could take my laptop, but wouldn't find much time to use it, and I'm getting some RSI-ish symptoms, so figure a few days off it would be good anyway...
23:50 jnthn Will be back and working as normal from Tue and have a Rakudo day next week though, anyways. :-)

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo