perl6-projects.org/ | nopaste: sial.org/pbot/perl6 | evalbot: 'perl6: say 3;' | irclog: irc.pugscode.org/ | ~280 days 'til Xmas
Set by mncharity on 18 March 2009.
jnthn Hmmm....after state vars some of svn.pugscode.org/pugs/t/spec/S04-cl...ts/start.t should be relatively easy to make happen. 00:04
00:06 justatheory left 00:10 eternaleye left 00:11 justatheory joined 00:12 justatheory left 00:24 lichtkind left 00:25 eternaleye joined 00:30 unitxt joined 00:40 unitxt left 00:42 eternaleye left 00:49 DemoFreak left 00:55 eternaleye joined 01:13 nihiliad joined 01:28 kimtaro left 01:52 kimtaro joined 01:56 wknight8111 left 02:03 agentzh left 02:09 kimtaro left, kimtaro joined 02:14 justatheory joined 02:25 agentzh joined 02:40 c9s left 02:41 c9s joined 02:42 justatheory left 02:44 takadonet joined
meppl good night 02:44
takadonet hey everyone 02:45
02:45 meppl left 02:53 justatheory joined 03:03 mncharity joined
mncharity perl6-projects.org/ | nopaste: sial.org/pbot/perl6 | evalbot: 'perl6: say 3;' | irclog: irc.pugscode.org/
03:05 justatheory left 03:06 kimtaro left, kimtaro joined 03:07 takadonet left
mncharity rakudo: my $f=sub ($n){$n+1}; say $f(2); 03:12
p6eval rakudo 9a84c3: OUTPUT«3␤»
03:13 alc joined 03:14 Kisu joined 03:16 msmatsko joined 03:18 justatheory joined 03:25 disismt left 03:27 kate21de left 03:40 ab5tract joined 03:45 nww joined
pugs_svn r25990 | putter++ | [elf] Tidying up. 03:51
r25990 | putter++ | elf_h_src/: 'self.' -> '$.' . elfish: Removed empty directories, and deleted obsolete elfish/AST/Ast.pm.
03:51 mncharity left 03:56 alester left 04:14 ab5tract left 04:29 nww left 04:30 amoc joined 04:33 sklm joined, amoc left, amoc joined 04:43 cnhackTNT joined 04:46 orafu left, OuLouFu joined, OuLouFu is now known as orafu 04:53 sklm left 05:15 viklund`` joined, viklund` left 05:20 cnhackTNT left 05:22 aaabbbccc joined 05:27 aaabbbccc is now known as gbie 05:31 nww joined 05:32 parduncia joined 05:33 parduncia left 05:41 Tene_ joined 05:57 nww left, Tene left 06:04 nihiliad left, FurnaceBoy left 06:46 justatheory left
pugs_svn r25991 | szabgab++ | testing index() with junction 07:06
07:17 cotto left
moritz_ szabgab: type checks are better made with isa_ok() 07:21
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"'
szabgab ok 07:22
i guess the same with eq, right ? 07:23
moritz_ right
szabgab actually I wanted to write a function same_junctions($this, $that) or some similar 07:24
moritz_ please do
07:25 xinming joined
moritz_ that would help us once .eigenstates is gone 07:25
because all the "bad" code is then concentrated in that function 07:26
szabgab oh, I wanted to use .eigenstates for that ...
moritz_ you can do that for now 07:27
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 :-)
moritz_ well, no hurry
will you fix it, or should I?
07:29 goksie joined
szabgab fixing now 07:30
pugs_svn r25992 | szabgab++ | some Junctions related test cleanup 07:33
07:37 xinming_ left
szabgab moritz_, did you mean that ? 07:37
moritz_ szabgab: yes, exactly 07:38
well, nearly ;-) 07:39
rakudo: use Test; plan 1; isa_ok(1|2, "Junction");
p6eval rakudo 9a84c3: No output (you need to produce output to STDOUT) 07:40
moritz_ rakudo: say "alive"
p6eval rakudo 9a84c3: OUTPUT«alive␤»
moritz_ rakudo: use Test; say "alive" 07:41
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
rakudo: use Test; say "alive"
p6eval rakudo 9a84c3: OUTPUT«alive␤»
moritz_ rakudo: use Test; plan 1; isa_ok(1|2, "Junction");
p6eval rakudo 9a84c3: OUTPUT«1..1␤not ok 1 - The object is-a 'Junction'␤# Looks like you failed 1 tests of 1␤»
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)␤»
szabgab ah you want the () around it ?
moritz_ no
actually I want no quotes around the type name, but I guess it should work with quotes as well
szabgab :1 07:44
moritz_ but why the heck do we get that Null PMC access?
rakudo: use Test; plan 1; isa_ok(1, Int); 07:45
p6eval rakudo 9a84c3: OUTPUT«1..1␤ok 1 - The object is-a 'Int'␤»
moritz_ rakudo: use Test; plan 1; isa_ok(1, "Int");
p6eval rakudo 9a84c3: OUTPUT«1..1␤ok 1 - The object is-a 'Int'␤»
moritz_ ok, it works with quotes as well
no need to worry about that one
rakudo: say (1|2).isa(Int).perl 07:46
p6eval rakudo 9a84c3: OUTPUT«any(1)␤»
07:46 DemoFreak joined
moritz_ rakudo: say (1|"str").isa(Int).perl 07:46
p6eval rakudo 9a84c3: OUTPUT«any(1, 0)␤»
moritz_ so it .isa autothreads 07:49
anyway, thanks for the fixes szabgab 07:51
szabgab another issue if I am already looking at this 07:52
how can I compare two arrays ?
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]
p6eval rakudo 9a84c3: OUTPUT«1..2␤Could not find non-existent sub isa_deeply␤current instr.: '_block14' pc 141 (EVAL_16:53)␤»
moritz_ rakudo: use Test; plan 2; is_deeply [1, 2], [1, 2]; is_deeply [1, 2], [0, 2]
p6eval rakudo 9a84c3: OUTPUT«1..2␤ok 1 - ␤not ok 2 - ␤# Looks like you failed 1 tests of 2␤»
moritz_ szabgab: smart matching compares them element wise, and DWIMs on Whatever-stars
rakudo: say [1, 2] ~~ [1, 2]
szabgab oh yes,
p6eval rakudo 9a84c3: OUTPUT«1␤»
szabgab smart match
moritz_ rakudo: say [1, 2] ~~ [1, 0]
p6eval rakudo 9a84c3: OUTPUT«0␤»
moritz_ rakudo: say [1, 2] ~~ [1, *] 07:54
p6eval rakudo 9a84c3: OUTPUT«1␤»
moritz_ rakudo: say [1, 2, 3] ~~ [1, *]
p6eval rakudo 9a84c3: OUTPUT«1␤»
szabgab rakudo: [1, 2] ~~ [1, 2]
p6eval rakudo 9a84c3: RESULT«Bool::True»
szabgab rakudo: [1, 2] ~~ [1]
p6eval rakudo 9a84c3: RESULT«Bool::False»
szabgab rakudo: [1, 2] ~~ [2, 1]
p6eval rakudo 9a84c3: RESULT«Bool::False» 07:55
moritz_ rakudo: [[1,2], 3] ~~ [[1, 2], 3]
p6eval rakudo 9a84c3: RESULT«Bool::False»
moritz_ rakudo: [[1,4], 3] ~~ [[1, 2], 3]
szabgab but I think I'd like to have a detailed report of the differences
p6eval rakudo 9a84c3: RESULT«Bool::False»
08:00 xinming_ joined 08:04 orevdiabl left 08:10 bacek_ joined 08:11 DemoFreak left 08:12 bacek left 08:15 goksie_ joined 08:17 xinming left
szabgab rakudo: 1 ~~ 1|2 08:25
p6eval rakudo 9a84c3: RESULT«Bool::True»
08:30 ejs joined
szabgab rakudo: (1|2).perl 08:34
p6eval rakudo 9a84c3: RESULT«"any(1, 2)"»
szabgab rakudo: (1|2).perl.WHAT
p6eval rakudo 9a84c3: RESULT«Str»
szabgab I have forgotten, can I fetch the type of the Junction somehow or just my parsing the stringification ? 08:36
08:37 masak joined
masak morning, eigencamels. 08:37
masak backlogs
rakudo: +("freeeeeeeeeeeeeeeew" ~~ /('e'|'w')*/)[0]
p6eval rakudo 9a84c3: OUTPUT«Use of uninitialized value␤»
masak <TimToady> that oughta work...
did someone report this? 08:38
szabgab wan't there a way to get all the available methods of an object ?
$ob.METHODS
masak $obj.^methods, I'd guess. 08:39
I'm sure the answer is in S12.
szabgab there is a WHY 08:40
08:40 goksie left
szabgab but there is no WHYNOT 08:40
08:40 ejs1 joined
masak szabgab: well, WHYNOT isn't an interrogative pronoun. 08:40
neither is WTF, for example. 08:41
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)␤»
szabgab rakudo: class A { method f(){say "42"} }; A.f
p6eval rakudo 9a84c3: OUTPUT«42␤»
szabgab rakudo: class A { method f(){say "42"} }; say A.methods
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)␤»
masak szabgab: missed the '^'.
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)␤»
masak also, I don't think it's implemented.
szabgab rakudo: class A { method f(){say "42"} }; say A.^methods
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:43 bacek_ left
szabgab 12 talks about MyClass.methods() or MyClass.HOW.methods 08:44
masak ok.
my bad, then.
szabgab and a few lines below my current page view was the ^ syntax
PgDown help 08:45
The "^" metasyntax is equivalent to ".HOW"
rakudo: (1|2).WHICH 08:46
p6eval rakudo 9a84c3: RESULT«-1241493232»
szabgab rakudo: (1|2).WHO
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)␤»
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.
moritz_ rakudo: say 1|2 ~~ Junction 08:48
p6eval rakudo 9a84c3: OUTPUT«1␤»
moritz_ rakudo: say 1, 2 ~~ Junction
masak but I also think that this is not yet settled. :)
p6eval rakudo 9a84c3: OUTPUT«10␤»
szabgab I mean if it any or all
moritz_ rakudo: say (1, 2) ~~ Junction
p6eval rakudo 9a84c3: OUTPUT«0␤»
masak yes, I understand.
08:48 ejs left
masak maybe we'll have a method .eigentype :) 08:49
moritz_ we recently spuculated about how it might be called 08:50
*speculated
szabgab rakudo: (1|2).perl ~~ /^(\w+)/ 08:51
moritz_ "view", "measurement" and "collapse" came up
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,␤ ),␤ ],␤)»
masak 'collapse' sounds too verbish to me.
moritz_ no wonder TimToady didn't like it :-) 08:52
szabgab rakudo: say (1|2).perl ~~ /^(\w+)/
p6eval rakudo 9a84c3: OUTPUT«any␤»
szabgab rakudo: (1|2).perl ~~ /^(\w+)/
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,␤ ),␤ ],␤)»
szabgab rakudo: my $x = (1|2).perl ~~ /^(\w+)/
p6eval rakudo 9a84c3: RESULT«Null PMC access in get_bool()␤current instr.: 'parrot;Match;_block1385' pc 36743 (src/gen_setting.pir:4764)␤»
masak prepares for submitting something 08:53
Matt-W Morning
masak Matt-W: ahoj!
szabgab rakudo: my ($x) = (1|2).perl ~~ /^(\w+)/
moritz_ masak: if you want to submit the Null PMC access in get_bool(), that's already reported
p6eval rakudo 9a84c3: RESULT«Null PMC access in get_bool()␤current instr.: 'parrot;Match;_block1385' pc 36743 (src/gen_setting.pir:4764)␤»
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
masak szabgab: use 'say'.
moritz_ masak: with (do { ... }).perl.print around it?
masak moritz_: I guess.
masak tests 08:55
moritz_: right, that fails.
08:55 mberends joined
masak Matt-W, mberends: meeting in four minutes! 08:56
Matt-W grabs some breakfast
mberends hi all, shall we invite moritz_ as well ?
08:57 kane___ left
moritz_ because my nicks starts with m? :-) 08:57
08:58 amoc left
Matt-W Sure why not :) 08:58
Great thing about IRC meetings: I can talk with my mouth full 08:59
masak of cookies, I hope?
mberends places a bowl filled with small chocolate Easter eggs on the table. Please help yourselves. Also a document called hello.bash: gist.github.com/85378
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
cap at 20 minutes.
masak opens box of delicious cookies
09:00 amoc joined
masak the word is free during the whole meeting. we have no agenda. 09:00
(as far as I know) 09:01
mberends could you try running hello.bash? your pets will not be harmed.
masak mberends: where, exactly?
Matt-W finds a lot of code from Form's build system in there
mberends the gist above gist.github.com/85378
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?
mberends symlink is less risky
Matt-W Makefile.PL should be in Perl 6 09:03
moritz_ shouldn't @*INC take care of such things?
Matt-W I was thinking about this last night
Also yes, Test.pm should just work as a system library
moritz_ can Makefile.PL - can we configure that in a meta file?
s/can //
Matt-W We don't have to do any special juggling to make Test::More work in Perl 5, after all
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.
moritz_ masak: +1
Matt-W yup
masak that's settled, then. 09:05
09:05 DemoFreak joined
Matt-W The problem with including modules from the project itself is that we put them in lib/ 09:06
09:06 jedai left
Matt-W if we didn't, they'd Just Work 09:06
masak mberends: hello.bash looks intriguing.
mberends wonders whether <RAKUDO_DIR> is truly a library directory.
masak mberends: is there any way to test it without creating a new github project?
Matt-W <RAKUDO_DIR>/lib might be
moritz_ aye, we should move Test.pm to lib/ at some point
mberends no, but deleting projects is quick. I've done many in the last 12 hours.
masak Matt-W: putting in lib/ in projects is still a net win in my book.
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.
Matt-W at some point we may need to expand this to work with out perl 6 implementations
moritz_ Matt-W: that's not specced yet
Matt-W argh s/out.other/
typing's gone completely wrong 09:08
don't need to worry about it now though
masak Matt-W: you're thinking to large. proto is created so that we won't have to care about the future. :)
s/to/too/
moritz_ the overall idea is that we need some kind of module database
masak this is explicitly outside of today's meeting topic.
moritz_ because not all file systems support Unicode databases
masak we know PERL6LIB will go away, but that's what we have today. 09:09
Matt-W fair enough
szabgab masak, where will it go ?
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
masak any consensus about Makefile.PL? Perl 6?
Matt-W I believe it should be Perl 6
I don't know if Rakudo can do the necessary stuff yet
masak szabgab: away.
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
moritz_ or maybe the installer should just look for 'use v6'
szabgab so no control over @INC from the environment ?
masak szabgab: don't know, don't care right now.
half time!
szabgab you just frightening me
masak szabgab: no, we're just building a dependencay handler that Works Today(TM). 09:11
szabgab: TimToady has said that PERL6LIB is a temp solution.
moritz_ for the reasons I stated above
masak ok, mberends has a nice Makefile.PL in Perl 6 in perl6-examples. 09:12
I think we can use that.
but we cannot depend on modules from proto, so we'll have to copy it over.
is that OK?
moritz_ OK for me
masak (I don't mean from a license perspective, but from a niceness perspective)
Matt-W Should be fine :)
mberends renamed it the Perl 6 Makefile.PL to Configure.p6 for less confusion 09:13
masak I like that.
proto will have to support Perl 5 Makefile.PL for the foreseeable future.
but we should encourage Configure.PL.
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
masak moritz_: aye. 09:14
we'll put up big honking RAKUDO comments as always.
mberends there are some discussion points at the bottom of hello.bash, your comments please?
masak looks
mberends 4. will be Perl 6, ok
Matt-W 3. will be solved out of scope
when PERL6LIB is replaced 09:15
masak hah! I knew there was an agenda hidden somewhere. :)
mberends ok
:)
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
pugs_svn r25993 | szabgab++ | naive implementation of comparing two junctions
masak ack.
75% time!
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?
masak projects change, modules come and go.
mberends: yes. we start small.
your hello.bash seems a good start.
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"?
Matt-W wonders about Windows 09:18
mberends to learn what the next version requires
masak Matt-W: the day we have a project developer who uses Windows...
mberends P2T1A
masak mberends: indeed. you're right.
man, these cookies are great!
mberends 1 minute 2 go! 09:19
masak I wish to thank you all for your involvement in this semi-impromptu meeting.
I'm very happy about it.
meeting closed. 09:20
09:20 bacek joined
bacek good evening 09:21
masak: around?
masak bacek: hoy!
mberends bacek: hi
bacek masak: github.com/bacek/parrot
masak: guess what? :) 09:22
masak sockets?
bacek masak: indeed.
masak \o/
bacek unix only
masak to hell with other systems!
bacek s/hell/jnthn/ :)
masak uh, yes. 09:23
I meant that.
bacek mberends: hi there
Matt-W woooooooooooooooooooooooooo
mberends bacek++: that is fantastic news!
masak bacek++
I think I'll go back to my lobster for a while, so that it's web ready when HTTP::Server gets Parrot sockets.
bacek it still requires some polish and extensive testing. 09:24
masak in due time, in due time.
right now we're giddy with the news.
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?
masak baest: when in doubt, submit 09:26
baest masak: ok :)
masak baest++
moritz_ baest: I already wrote one the other day 09:27
baest moritz_: oh, moritz_++ then :)
moritz_ no, moritz_--, I can't find it
I probably just planned to write it, but didn't actually
baest: so please go ahead :/ 09:28
and sorry for the noise
baest moritz_: ok, fair enough :) I will
mberends bacek, I'm available to try testing in this HTTP::Daemon clone, but I may need some guidance. github.com/eric256/perl6-examples/b.../Daemon.pm
mberends begins by cloning bacek's parrot 09:29
bacek mberends: did you check examples/io/httpd.pir in my parrot repo?
mberends will look immediately
bacek and there is actually HTTP::Daemon in parrot as well. 09:30
somewhere in "runtime"...
masak whoa!
there is?
mberends ok, then Rakudo HTTP::Daemon should not be far off.
bacek ls -la runtime/parrot/library/HTTP/Daemon.pir 09:31
-rw-r--r-- 1 bacek bacek 22313 2009-03-23 23:23 runtime/parrot/library/HTTP/Daemon.pir
here we are.
09:32 gbie left
bacek It is probably broken... 09:32
bacek changed op sockaddr
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... )
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...
mberends httpd.pir is only 426 lines :)
bacek :) 09:37
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
bacek mberends: you need "sockaddr/socket/bind/accept" combo and then you can just "read" and "write" to socket. 09:40
masak www.haskell.org/logos/results.html -- 90% of those are better than all suggestions I've seen for a Rakudo logo so far.
mberends bacek: yeah, just like in C or Perl 5. very cool. 09:41
mberends taught classes to do the same with Perl 5
moritz_ maybe we should start a similar contest
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!
Matt-W I get a little bit of Christmas every few days
bacek thinking about learning NCI and bind libfcgi to Parrot 09:43
09:46 meppl joined
masak rakudo: +("eeeeeeeeeeeeeeeew" ~~ /('e'|'w')*/)[0] 09:50
p6eval rakudo 9a84c3: RESULT«17»
masak submits rakudobug 09:51
(the bug being, for those who don't have a one-hour attention span, that adding 'fr' to that string makes the match fail)
mberends has attention focused on sockets and pir :) :) 09:55
09:58 kidd_ joined
mberends bacek: in bacek/parrot, 'git pull && make realclean && perl Configure.pl && make' dies with src/io/socket_unix.c:103: error: 􏿽x91enum_class_Sockaddr􏿽x92 undeclared (first use in this function) 10:02
bacek mberends: oops. I forgot to add sockaddr.pmc 10:03
mberends: pull again.
mberends ok, thanks!
pulled && making 10:04
built ok. making test 10:08
bacek mberends: try gist.github.com/85406 10:10
mberends bacek: very soon, after 'make test' finishes :) 10:11
bacek mberends: :) 10:12
10:12 NoirSoldats joined 10:15 alc left 10:16 amoc left
mberends bacek++: couldn't wait for tests to finish. './parrot head.www.ibm.com.pir' works! 10:16
10:16 amoc joined
bacek mberends: make test; ./parrot examples/io/httpd.pir and open localhost:1234/ in you browser :) 10:18
make html
s/you/your/ ... 10:20
mberends yes! yes! yes!
10:21 disismt joined
masak "screams of extacy were heard from the #perl6 channel as sockets support landed." 10:21
mberends yes! yes!
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)!
bacek++ bacek++
masak this all sounds very promising. 10:24
I've gotten distracted from lobster work by $WORK. foiled again! :/
moritz_ next steps: 1) make it run on @other_platforms; 2) get it into core 10:25
3) ...
4) profit!
jnthn OH HAI 10:26
masak is reminded of www.webamused.com/blogosophy/archiv...02064.html
jnthn: Rakudo day! \o/
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'.
masak mberends++ 10:27
jnthn Oh hey, is this the sound of Rakudo getting socket support, which I can just watch fall into place? :-)
mberends++, bacek++ 10:28
mberends suddenly feels the peer pressure of expectations 10:29
bacek jnthn: trac.parrot.org/parrot/ticket/496
10:30 pmurias joined
jnthn bacek: Ah, it's not applied yet? 10:30
bacek wow... almost 50 kilobytes...
jnthn: I'm not parrot/rakudo committer :)
mberends that's heavy lifting! 10:31
jnthn bacek: Yeah, am reading it now. 10:33
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.
jnthn bacek: Ah, if they're in the PDD then that's just fine. 10:35
moritz_ ... assuming the PDD is fine :-)
bacek jnthn: personally I dislike this ops... 10:36
moritz_ talk to allison, maybe she can be convinced of a method-only interface
jnthn moritz_: The PDD is one she's reviewed and approved in the not too distant past. 10:37
10:37 skids left
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. :-)
bacek jnthn: ok :) 10:38
there is last op left unimplemented - "shutdown" :) 10:39
jnthn Gah. My patch program is such a fail... 10:41
bacek: Was this against HEAD? 10:42
bacek jnthn: no. r37646
But I can recreate it against HEAD. 10:43
jnthn bacek: Don't worry, it's only two small bits that have iddues.
*issues
oh, actually it was a bunch of them 10:44
bacek: Oh, false alarm. It was the $Id... lines. 10:46
That was all that was in the .rej files!
bacek jnthn: you should have some .rej for src/ops/ops.num 10:47
Or at least some clashes.
jnthn bacek: Yeah, I did. 10:48
bacek: But it looked like you'd just added them onto the end... 10:49
bacek jnthn: yes I am.
jnthn heh, fail
hole in ops.num before #1245 at lib/Parrot/Ops2pm.pm line 122, <$op> line 1271.
oh, the load language patch
bacek jnthn: I have new version of patch agains HEAD. 10:51
jnthn bacek: it's fine, twiddled it
bacek Or I can send new ops.num
jnthn bacek: No, don't worry.
Building now. :-)
bacek jnthn: ok :)
jnthn: Are you on win32 atm? 10:52
jnthn bacek: Yes
I'm relying on @other here having tested in on Unixy places. ;-)
bacek ah, ok :) 10:53
jnthn ah, win32 build is fail
jnthn investigates
10:53 goksie_ left
jnthn bacek: I'm getting a bunch of things like 10:53
src\io\socket_api.c(74) : warning C4013: 'PIO_POLL' undefined
Any hints? 10:54
bacek jnthn: yes...
mberends jnthn, do you have a winsock.h instead os sockets.h ?
bacek You have to add socket_win32 into Makefile and run "make headerizer"...
mberends *f
*of 10:55
bacek jnthn: and actually port socket_win32.c
jnthn: give me few minutes. I'll create subs for win32.
jnthn bacek: Are we going to need something in Configure to detect Win32 and emit the right line? 10:56
bacek jnthn: no, AFAIU.
jnthn bacek: Because at the moment I'm ending up trying to compile src\io\socket_unix.c 10:57
bacek jnthn: it's... weird. socket_unix.c protected by #ifdef 10:59
10:59 rgs left
jnthn bacek: eh, the #include <sys/socket.h> was not. 11:00
bacek jnthn: gist.github.com/85422
jnthn: ouch.
jnthn bacek: Moved it.
Now compile gets past there.
bacek jnthn: thanks. 11:01
jnthn Thanks for extra patch, applied, trying compile now. :-) 11:03
11:03 pmurias left
bacek still wonders why "almost BSD compatible socket API in win32" is not "fully BSD compatible" 11:04
11:04 donaldh joined, donaldh left 11:06 nigel joined, nigel is now known as trexy
trexy hi 11:06
jnthn bacek: Because Microsoft are incapable of implemetning a standard, perhaps? ;-)
trexy: hi
trexy just thought I drop some ideas into the meme-stream
I'm excited about new logos for Perl6 etc
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
so I thought I would share some ideas here
I think rakudo needs a logo - but then shouuldn't there be a logo for the Perl6 11:08
... which is really defined by the test suite
so I was thinking ....you could have a very simple/boring logo for the test suite:
mberends no, you guys don't understand. Microsoft extends (improves) the standards :P
trexy very basic mock coming ... 11:09
t10.com/perl6-test.jpg
and then this basic imagery can be incorporated into more exotic implementation logos 11:10
like:
t10.com/perl6-camelia.png
jnthn bacek: OK, now I just blow up at the link stage for symbols like Parrot_io_poll_win32
mberends trexy: it's a good start :) can you save in SVG format?
jnthn bacek: Which is where I actually have to do some work. ;-)
bacek jnthn: I expected it... :)
trexy which in turn could be incorporated into Parrot
t10.com/parrot-rakudo.png 11:11
11:11 amoc left
trexy I'm not a graphic designer - so really have no skillz in this department - but you have to use your imagination ;-) 11:11
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 :)
trexy you like?
mberends yes, U HAZ SKILLZ 11:13
trexy I HAZ NOT
but I hope you get the idea - of taking some iconic Perl6 thing and moving it through logos ...
it could be whatever * 11:14
;-)
mberends believes art benefits from perspiration as well as inspiration
jnthn bacek: Yes, bwaha. src\io\win32.c is epic compile fail. 11:15
bacek jnthn: :)
trexy ok - just a thought for the pool ... 11:16
bye
11:16 trexy left
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, amoc joined
bacek jnthn: but probably copying socket_unix.c to socket_win32.c is better way to resurrect it :) 11:19
(And run %s/_unix/_win32/ in vim of cause) 11:20
11:21 donaldh joined 11:32 elmex left, elmex joined
jnthn bacek: SOCKADDR(io, remote)->sin_family = fam; 11:32
Where hare SOCKADDR and remote meant to come from?
oh, I see 11:33
#define SOCKADDR(p, t) ((struct sockaddr_in*)VTABLE_get_pointer(interp, PARROT_SOCKET((p))->t))
bacek jnthn: it's #define in socket_unix
11:40 kane_ joined
bacek jnthn: I'm going to sleep very soon... 11:43
jnthn bacek: OK, I've nearly got this Win32 version compiling. 11:47
bacek jnthn: good news
afk # zzz... 11:50
11:59 kimtaro left 12:06 msmatsko left
jnthn OK, compiles, and *almost* works on Win32 despite the fact that I guessed my way through the port. :-| 12:07
(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:08
mberends jnthn, buffer flush required? 12:09
12:09 shruggar joined
mberends Esc on the browser stops receiving and may close the connection 12:10
12:12 ruoso joined
ruoso Hello! 12:13
12:13 skids joined
jnthn mberends: Yeah, I figure that's what Esc is doing. 12:14
oh arse, I had a couple of other local changes I just ci'd by accident.
12:15 kolibrie left, kolibrie joined
jnthn mberends: OK, the sockets stuff for Parrot from bacek++ is applied 12:17
mberends v.cool
jnthn++
ruoso jnthn++ indeed... and bacek++ as well... 12:18
jnthn, is it implemented in a simple blocking fashion? or is there some event-loop intelligence added? 12:19
12:20 rgs joined 12:21 icwiener joined
jnthn Well, bacek++ really, I just did a crappy Win32 port and applied it. ;-) 12:21
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:22
ruoso jnthn, cool... 12:23
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
mberends: That just means editing the number in build/PARROT_REVISION.
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:38
ruoso still wonders if SMOP should try to implement interpreter threads, or if it should simply go to OS threads... 12:39
mberends ruoso, aren't OS threads non portable? 12:40
ruoso mberends, only if you expose the use of a specific threads implementation 12:41
it works ok as long as you abstract it from the user, so each port can provide its specific version
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:43
ruoso jnthn, the other option would be to implement a scheduler myself, ala POE 12:44
jnthn I don't see how that would actually deal with the issue I mentioned. 12:46
Unless you do plan to schedule onto multiple underlying kernel threads.
ruoso yes... that would be the plan... as erlang does
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.. www.pirnat.com/mike/2008/11/25/pyth...-it-wrong/ 12:47
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
I mean.. with "using only OS threads"
jnthn Yes, perhaps. 12:49
Well, as I said, Parrot has an event scheduler too, but that interacts with threads already IIRC.
I didn't play with it much.
ruoso maybe I should have a "worker thread" pattenr 12:50
and a scheduler that simply designates a worker thread to assume a task
that's certainly easier than having a full scheduler 12:51
12:51 kimtaro joined
ruoso and probably fits better with Perl 6 12:51
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...
ruoso trying to figure out how to make... for =$boundaddr -> $conn { $conn.say: "Hello" } to autothread... 13:01
PerlJam Are any concurrency mechanisms exposed in rakudo yet? 13:03
skids You mean explicit asyncs and forks? No. pugs has asyncs, IIRC. 13:06
baest skids: yes, it does
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
Though I will keep searching away.
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:09
PerlJam Assuming there's a concensus on how to do it, that might be a good GSoC project for someone. 13:10
(I'm sure we can come up with *a* way and let a gsoc-er prototype it)
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
And that seems to be implementation specific and subject to flux ("We moved thing X into/out of the lexpad")
I think there is little debate, though, of what a "fork" should do. 13:13
So that might be a good GSoC thing.
PerlJam yeah, but it also might be way too simple :)
skids Ahh, but I have managed to complicate it quite a bit. 13:14
Nothing here is even to the point that I feel like sticking up for it myself yet,
but my ongoing scribblings for S17 can be found: www.abrij.org/~bri/S17.tempurl.pod 13:15
I'm more happy with the fork API than the rest of it.
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.
jnthn (That is, anything that is a subclass of Routine) 13:20
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.
PerlJam: Yeah, just do like for @foo -> Any $x { }
The Any then causes auto-threading.
The change is that the default parameter type is Object in this case.
PerlJam i was kind of hoping for magic :)
jnthn (And for routines, it's Any.)
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
That is, you either created them in your current routine or you marked a paramter in the routine as expecting them.
I think that was the language design argument.
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
rgs woot
13:25 ejs2 joined
PerlJam it's a tad bothersome that you can't find the answer to that question though. What synopses did you look in? 13:27
skids suggests a "hey this isn't in the synopsis" wiki bullet list page 13:30
13:31 FurnaceBoy joined 13:35 ejs1 left
PerlJam skids: good idea 13:39
13:45 Khisanth left 13:59 disismt left 14:00 Khisanth joined 14:05 riffraff joined, pmurias joined 14:06 disismt joined 14:08 aindilis left 14:09 aindilis joined
ruoso jnthn, I didn't mean autothread on Junctions... I mean autothread on async IO 14:13
like...
for =$boundaddress --> $socket {...}
this would autothread on each accept... 14:14
jnthn ruoso: As in, spawn a new thread?
ruoso not necessarly an OS thread
but it wouldn't block new accepts
jnthn Feels rather like we're twisting for a bit too bar there. 14:15
moritz_ agreed
I don't think we need new syntax for non-blocking/async IO
ruoso I don't mean a new syntax
jnthn for =$boundaddress -> $socket { async { ... } } # probably is fine
moritz_ the --> looked like new syntax to me :-) 14:16
ruoso ah... sorry..
it's the feed operator that is ==>
it always gets me confused
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...
but I guess... 14:18
$boundaddress ==> -> $connection { ... }
std: $boundaddress ==> -> $connection { ... }
p6eval std 25993: OUTPUT«Potential difficulties:␤ Variable $boundaddress is not predeclared at /tmp/aSv6DGJ5A0 line 1:␤------> $boundaddress ==> -> $connection { ... }␤ok 00:02 37m␤»
ruoso cool... it works.. 14:19
that could autothread ;)
but my question wasn't really syntatical...
I'm wondering how to turn transactional programming into async IO programming without the user having to worry about 14:20
so if you write a normal code as if it performed blocking IO 14:21
it could be done by the interpreter using async IO
frioux maybe you could look at JS libraries
because ajax is a form of io (obviously) and is done asyncronously
although with js it's done with event handlers, so it's not really transparent 14:22
moritz_ events are good :-) 14:23
frioux does perl 6 specify events at all?
moritz_ it will 14:24
ruoso frioux, that's my point actually... I'd like code wrote as synchronous to work assynchronously
so the interpreter can preemptively execute other tasks
frioux ruoso: Yeah, I realized that after I mentioned the events
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.
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...
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.
I have read some of the SMOP stuff, yes.
14:29 hercynium_ joined
ruoso frioux, I somehow think that all the lazyness will need to be expressed in terms of different threads of execution... 14:29
14:29 exodist joined
jnthn std: my $i; sub baz() { my $x = START { $i++ }; say $x } 14:29
14:29 pmurias left
p6eval std 25993: OUTPUT«ok 00:02 35m␤» 14:29
14:29 pmichaud joined
ruoso that can be allocated in different worker threads... 14:29
I think we need an Iterator::Observable role... 14:30
skids What would that add? 14:31
ruoso has @.observers
has Iterator::Observer @.observers
skids You mean like a condition wait? 14:32
ruoso no... like an event
skids So the iterator sends events when it has data queued? 14:33
ruoso yeah...
but it would be the scheduler that would observe that... 14:34
not the consumer of the iterator
if you try to consume from an iterator that has no data but hasn't ended...
it will throw a ControlExceptionWouldBlock
skids Oh, so like IO signals extended to code execution checkpoints? 14:35
ruoso yes
then this control exception is catch by the scheduler... which will put that continuation in the "waiting" pool
and once data is available, it would receive the event 14:36
and would be able to try to resume that continuation (if any worker thread is available
actually, not "waiting" pool... but "blocked" pool 14:37
it would go to "waiting" if no worker thread is available
and in "running" when some worker thread is executing 14:38
does it sound sane? 14:39
14:41 ron_ joined
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
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)␤»
ruoso basically... iterator is the "unix pipe" of Perl 6
and the scheduler needs to be aware of that
skids Well that for sure.
ron_ rakudo: my @a; if ('ab' ~~ /(a)(b)/) {my @a = @();say 'in if block: ', @a.join('/')}; say 'after if block: ', @a.join('/')
p6eval rakudo 9a84c3: OUTPUT«in if block: a/b␤after if block: ␤»
14:46 justatheory joined
pugs_svn r25994 | jnthn++ | [t/spec] Fudge S04-closure-triats/start.t for Rakudo. 14:46
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.
pmichaud why do you think it's off?
it looks correct to me.
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?
pmichaud because you declared it with 'my' inside the block, perhaps?
moritz_ aye, there are two varaibles named @a in that short program 14:49
pmichaud masak: ping 14:51
ron_ sorry - looked too similar to another problem and I missed the second my .. will keep looking
pmichaud ron_: no problem. :-) 14:52
jnthn about to add another 16 passing tests
moritz_ RT #64188 is bogus 14:53
14:53 nihiliad joined
pmichaud yes, I was just looking at that one :-) 14:53
and about to ask that question
moritz_ rakudo: ?("freeeeeeeeeeeeeeeew" ~~ /('e'|'w')*/)
p6eval rakudo 9a84c3: RESULT«Bool::True»
moritz_ I'm already writing the reply
pmichaud okay, thanks.
ruoso I think I'm going to start adding ControlExceptionWouldBlock, Iterator::Observable, Iterator::Observer to S07... waiting for others to comment... 14:55
jnthn pmichaud: I tried moving uniq to the setting and hit upon a whole bunch of..."fun". 14:56
pmichaud: So backed off that one for now.
Essentially, Junction using List.uniq was exposing it though. 14:57
pmichaud jnthn: I don't have an issue with revising Junction to not use List.uniq 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)
pmichaud especially since Junction is treated more like a native type than anything else (if I've read the latest spec updates correctly)
ruoso pmichaud, jnthn, if junction is native now, you can use a lowlevel parrot type...
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 15:04 justatheory left
dalek kudo: f11ad52 | jnthn++ | (3 files):
Implement START statements (not terms yet). Add S04-closure-traits/start.t to spectest.data.
15:05
kudo: 87068ef | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 329 files, 7367 passing, 0 failing
15:11 ejs2 left, Tene joined 15:13 icwiener left, icwiener_ joined 15:20 donaldh left, donaldh joined 15:22 Tene_ left
jnthn moritz_: Thinks this ticket can be closed now? rt.perl.org/rt3/Ticket/Display.html?id=56226 15:22
moritz_ jnthn: aye 15:23
jnthn moritz_: Done. 15:24
.oO( We're actually going to hit 300 tickets soon... )
moritz_ jnthn: from top or from bottom? :-) 15:25
jnthn From below
15:27 disismt left 15:28 disismt joined
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:30
jnthn has S06-currying/assuming-and-mmd.t passing locally. :-) 15:31
pmichaud I'm working on tickets now. 15:32
we have a lot of duplicates.
jnthn pmichaud++
pmichaud: Yes, I can imagine that.
masak pmichaud: pong. 15:33
masak backlogs
pmichaud masak: nm, moritz++ answered what my ping was about. 15:34
masak oki
pmichaud (it was about #64188)
masak I was away, studyuing Mandarin.
jnthn masak: ni hao ;-)
masak jnthn: nin hao. :P
jnthn masak: OH RLY?
masak (您好, I should say.) 15:35
jnthn: well, both work, of course.
differ only in formality.
jnthn masak: Ah, OK.
masak: I never really studied much Chinese at all. :-(
masak jnthn: it's hard. :/ but sometimes really rewarding.
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.
moritz_ ... in three years *SCNR*
jnthn I have various Korean friends here...pondering trying to learn a bit of that.
15:37 grwi joined
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.
masak extremely so. 15:38
15:38 Tene_ joined
masak it was designed by the enlightened king's advisors in the 17th century, IIRC. 15:38
15:38 grwi left 15:43 ron_ left 15:50 Tene left
jnthn rakudo: my $x = True; $x &&= False; say $x; 15:51
p6eval rakudo 87068e: OUTPUT«0␤» 15:52
dalek kudo: de86e8a | jnthn++ | (2 files):
Make .assuming work on multi-methods. Add the now-passing S06-currying/assuming-and-mmd.t to spectest.data.
15:58
kudo: f27c7ea | jnthn++ | :
Merge branch 'master' of [email@hidden.address]
masak moritz_: re #64188: and here I thought that * and + were greedy. 16:00
moritz_: oh! 16:01
moritz_ masak: they are.
masak they are, but they match too soon.
moritz_ right
and as soon as match is found, it doesn't try different start positions
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
16:02 Kisu left
moritz_ which is "works as designed", although I daresay there's nobody who hasn't tripped over it 16:02
but the alternative would be even more scary
masak right.
I'll reject the bug. 16:03
moritz_ didn't I do that already?
jnthn looks at a ticket
"it's the spirit of the bug that counts, not the letter"
masak moritz_: oh, you did.
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
masak ah. :) 16:05
wise words. :P
moritz_ when you are quoted and don't remember you own words... then you know you're famous :-)
masak 哈哈
16:06 REPLeffect joined
jnthn is happy that he can see Chinese characters on IRC now :-) 16:06
masak hanzi to the people. 16:07
jnthn wonders how hard it'd be to get us parsing indirect method syntax.
pmichaud jnthn: I suspect not too difficult.... but there's going to be some major parser refactors soon anyway
jnthn pmichaud: Ones that'd make it a waste of time putting it in now? 16:08
moritz_ when we have LTM? or sooner?
pmichaud jnthn: if it's easy to put them in now, we could probably do it.
jnthn: I know that we're going to have a major refactoring of block handling (again)
masak could imagine the Rakudo mascot being a toad 16:09
jnthn Ugh.
pmichaud: Why this time?
pmichaud because the grammar changed significantly
jnthn Ah.
pmichaud there's a new <blockoid> construct in STD.pm
which also does some lexical and pad handling 16:10
similar to what we do with $?BLOCK_OPEN now
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
pmichaud the end of blockoid is handling the implied statement terminator stuff.
jnthn (settings parens) Yes, probably. 16:12
pmichaud it's not too far from what I'm currently doing in rakudo's grammar.
jnthn OK.
jnthn wishes he had an install of STD.pm so he could see how it parses print $*OUT: "lolz"
pmichaud i have one -- just a sec. 16:13
jnthn I'm thinking it's done in methodop
Thanks
oh, maybe not 16:14
pmichaud (updating, rebuilding) 16:17
16:17 felipe left
pmichaud jnthn: it's in token arglist 16:20
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
jnthn: short answer: not all that easy to implement at the moment.
jnthn pmichaud: Yeah, looks a bit tricky.
I'll leave it for now then.
pmichaud another place where we probably want to get support for contextual variables. 16:23
jnthn Aye.
pmichaud: Ah, while I remember. japhb was asking about use Foo:from<parrot> stuff.
Really wants to work on OpenGL libs and using them from Rakudo.
pmichaud I still want/need to get the PCT changes in place to support that.
that's on my list for this week.
jnthn OK, that was my gues.
*guess 16:24
Oh, great. :-)
japhb hears his name ...
PerlJam pmichaud: where is LTM on the list? :)
pmichaud PerlJam: I still need to get the other pge/pct refactors in place first.
japhb This week? YAY!
japhb would do a happy dance, if he wasn't completely exhausted.
pmichaud japhb: the pct refactors are on my list; I don't know where :from<parrot> will fall in that.
I've also got to figure out where Parrot is headed with load_language stuff (since it's related) 16:25
japhb OK
well, suffice it to say that I'm damned excited at even a decent chance of seeing it soon. 16:26
16:26 ron_ joined
pmichaud yes, it's likely to occur reasonably soon. Then we get to figure out a bunch of other language interop issues. 16:26
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␤»
ron_ rakudo: my $s = 'abcZdef'; my @a; if $s ~~ /(Z)/ {@a = @();}; say 'no str change: ', @a;
p6eval rakudo f27c7e: OUTPUT«no str change: Z␤»
pmichaud ron_: yes, that's a known bug. The match objects are tied to the original string. 16:28
I'm not quite sure what to do about it yet.
although it will likely fix itself when I refactor PGE to be cursor-based.
ron_ Thx - was working on match objects for split and will look to a different approach I guess ... 16:29
16:38 felipe joined
pmichaud does a method without a parameter list get an implicit @_ the way a sub does? 16:45
jnthn pmichaud: I'm not aware of anywhere that the synopsis says it does. 16:48
pmichaud: But OTOH it doesn't say that methods differ from subs in that respect either.
Out of orthogonality, I'd expect they do.
pmichaud jnthn: yeah, that's what I've been wondering
jnthn What do we do now?
pmichaud I suspect we treat it like a sub 16:49
(assuming that parameter-less subs get @_ by default now)
16:49 Psyche^ joined
jnthn I'm not even sure we're giving them @_ by default. 16:49
rakudo: sub foo { say @_.elems }; foo(); foo(1); foo(1,2,3);
p6eval rakudo f27c7e: OUTPUT«0␤1␤3␤»
pmichaud we did at one time -- I don't know if that made it in the parameter refactors.
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␤»
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)␤»
PerlJam It's interesting that self is out of band in @_ for the X.foo() case 16:52
jnthn Good.
PerlJam: From a Perl 5 POV, that's maybe weird.
PerlJam: From a Perl 6 one, it kinds fits though, in my head.
pmichaud it fits for me.
method foo() is equivalent to method foo($self:) 16:53
jnthn Right.
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?
PerlJam and so is method foo { ... }
(apparently)
jnthn Stupid question - how do you make a copy of a string in Parrot?
pmichaud ron_: I don't know if there's a ticket for it -- but it's a known bug. 16:54
jnthn: clone
jnthn (Since another routine is using it descructively)
pmichaud: Oh yeah!
pmichaud PerlJam: well, thus my question -- what does method foo { ... } mean? 16:55
16:56 jhorwitz joined
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
s/t's/t/
pmichaud afk # lunch 17:04
17:05 Patterner left, Psyche^ is now known as Patterner, ron_ left
pugs_svn r25998 | jnthn++ | [t/spec] Fudge S11-modules/import.t for Rakudo. 17:15
jnthn Question for anyone who knows on S11. It suggests there is a :DEFAULT tag. 17:17
dalek kudo: a51a0da | jnthn++ | src/builtins/eval.pir:
Fix importation of modules in nested namespaces.
kudo: ce7ff26 | jnthn++ | t/spectest.data:
Add S11-modules/import.t to spectest.data.
jnthn sub bar is export(:DEFAULT :others) {...} # :DEFAULT, :ALL, :others 17:18
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.
However, elsewhere, it suggests you get :ALL 17:19
From S11:
module Foo {
sub foo is export {...}
...then later...
The C<Foo> module will export C<&foo>]
17:19 masak left
jnthn ... 17:19
by default;
Which seems to suggest that you'd actually have the :ALL tag imported by default. 17:20
(Since foo in the example is not tagged as :DEFAULT)
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. :-|
sub bop is export {...} # :ALL
sub foo is export(:DEFAULT) {...} # :DEFAULT, :ALL
PerlJam hrm.
jnthn And for multis it makes the following notes: 17:22
Any proto declaration that is not declared "my" is exported by default.
Any multi that depends on an exported proto is also automatically exported.
When there is no proto for a multi, the autogenerated proto is assumed
to be exportable.
17:24 nbrown left
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
and plain "use" doesn't include :ALL
jnthn ruoso: I'd like to think it's that way.
PerlJam submit a doc patch to make it so :) 17:25
17:25 cdarroch joined
ruoso jnthn, otoh, we could have :DEFAULT being set as a default in "is export" 17:25
jnthn ruoso: True.
ruoso which means that a bare "is export" is the same as "is export(:DEFAULT)"
jnthn ruoso: Well, presumably :ALL, :DEFAULT
ruoso but "is export(:SOMETHING_ELSE)" doesn't include :DEFAULT
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. :-)
It seems multis get an exception though.
And are in DEFAULT.
If you just say "is export"
ruoso my point is... that can be made to everythign... 17:27
the code inside trait_auxiliary:<is>('export',&code)
actuallly, trait_auxiliary:<is>('export',&code, *%tags)
jnthn Oh, for sure.
I'm just saying, is that really a good idea.
And the synopsis says otherwise.
ruoso does an if !%tags { %tags<DEFAULT> = 1 };
jnthn Sure, we could do that. 17:28
It's just contradictory with S11.
(As is the other stance though.)
ruoso S11 is contradictory with itself, so...
jnthn So we gotta pick one or the other.
My feeling is we say that "sub bop is export {...} # :ALL
" is right
And add in the exception for multis
Which get :DEFAULT anyway.
Because multis are not really so dangerous. 17:29
PerlJam why should multis get :DEFAULT?
ruoso the exception looks weirder to me...
jnthn PerlJam: It's just what S11 seems to suggest.
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
PerlJam I think that's wrong though.
ruoso I think that was written with @EXPORT_OK in mind
jnthn So basically the suggestion boils down to, plain is export always means is export (:DEFAULT) ? 17:31
17:32 shruggar left, donaldh left
ruoso basically... :DEFAULT is the default 17:32
jnthn OK. 17:33
Then S11 just needs patching to say that.
17:33 ejs2 joined
jnthn And then that resolves the contradictions. 17:33
17:33 ejs2 left
ruoso but makes :ALL kinda useless 17:33
jnthn ruoso: No, not really. 17:34
Because is export(:other) ends up in ALL but not in DEFAULT
ruoso right...
jnthn So you can use Foo :ALL;
If you want everything possible imported.
ruoso but if you want to export something not by default
you have to say
sub foo is export(:ALL)
jnthn Surely if you wanted something to be exported not by default though, you'd be giving it another tag? 17:35
sub foo is export(:thingy)
PerlJam well, sub foo is export( :some-other-tag )
right.
jnthn So I don't see is export(:ALL) being so common.
Plus it means what it says. :-) 17:36
PerlJam But what happens with multis? Can you export one variant and not another?
jnthn I doubt that's going to work out if you try it.
Maybe we could make it work... 17:37
ruoso PerlJam, I think it should be an error to have different visibility for candidates of the same multi 17:40
the only thing they have different is the signature and the code block
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.
ruoso PerlJam, it simply doesn't work 17:42
because the stored container holds all the candidates
17:42 ejs1 left
ruoso you don't get &foo for just that candidate 17:42
at least not in the same lexical scope
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.
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.
ruoso: I'm just saying there is a way we could make it work if it were spec'd that we should.
ruoso right...
so let's spec otherwise ;) 17:45
jnthn goes to change Rakudo's export in light of discussing this 17:46
Patch to S11 would be cool if anyone has the repo checked out...
ruoso has
jnthn ruoso: I guess it's just 17:47
- sub bop is export {...} # :ALL
+ sub bop is export {...} # :ALl, :DEFAULT
17:48 grwi joined
pugs_svn r25999 | ruoso++ | [spec/S11] :DEFAULT is default in "is export" 17:49
17:49 ejs joined
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:50
17:51 grwi left
ruoso I'd say "all should have the same visibility declaration" 17:51
jnthn PerlJam: multis get is export by default, though 17:52
17:52 disismt left
jnthn So you'd have to write an explicit one to make things interesting. 17:52
17:52 disismt joined
PerlJam so ... how do you *not* export a multi then? 17:52
jnthn Make sure they're all marked is export(:other)
PerlJam let me rephrase, how do you mark a multi as not-exportable? 17:53
jnthn my multi ...
ruoso hmmm... 17:54
how did we get there?
jnthn S11: Any proto declaration that is not declared "my" is exported by default.
ruoso right... but.. how did we get to that spec? 17:55
what's wrong with Foo::Bar::baz() being a multi?
jnthn Well, I guess somebody sat down and thought about it and decided that's what the spec would be. :-P
ruoso I mean... why does it force me to export baz?
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"
PerlJam jnthn: so what does "my sub foo is export" mean?
jnthn IIRC we used to have to write is export on multis. And then it was changed.
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
ruoso it seems like "my/our" inconsistency again... just like in methods
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
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 ?
jnthn pmichaud: Yes
pmichaud \o/
jnthn pmichaud: Right after I ci the Rakudo change.
ruoso (but I'd wait for TimToady, too see if he doesn't revert that commit)
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.
pmichaud also, we should probably start moving Test.pm into settings anyway.
ruoso jnthn, hmmm... after thinking about it... I realized we don't need yet another monkey patch mechanism ;) 18:00
18:00 skids left
jnthn FWIW, I would be happy enough to go back to needing "is export" on multis. 18:00
ruoso supports that idea
PerlJam me too
ruoso and we have the meaning of "my/our" consistent...
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?
ruoso jnthn, no... we copy from the outer scopes when the inner multi is declared
jnthn ruoso: Just copy and tack the new ones on the end and sort?
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
jnthn my multi foo() { 1 }; { my multi foo() { 2 }; foo() } # and so this is thus ambiguous?
ruoso yes
jnthn OK, good. 18:03
That's sane. :-)
pmichaud: While we're on lexical stuff - can you remember what lay behind our problem with classes not being able to see outer lexicals?
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.
my $a = 5; class Foo { say $a; }
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)␤»
jnthn Taht's the one I was meaning more.
pmichaud oh.
Parrot doesn't like :outer on :init subs.
jnthn But yes, we do have the other, separate problem, as you describe.
Oh.
Did we ever work out why?
Or is that still to explore?
pmichaud I haven't tried it recently.
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.
Just something I want to sort out in the near future. 18:07
pmichaud I'm waiting for a spectest run on a patch.
so I can look at it quickly.
jnthn ah, nice
18:10 alester joined 18:13 aindilis left, aindilis joined 18:19 schmalbe joined 18:22 ejs left 18:28 ejs joined 18:32 ejs left, ejs joined 18:34 ejs1 joined, ejs1 left 18:35 skids joined
pmichaud jnthn: the original bug report for this is RT #47956 18:37
I've got an updated script that illustrates the bug -- will add it to trac (and point the RT ticket to that one) 18:38
jnthn OK. 18:39
pmichaud TT #500 18:44
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
What, it works for AIG number cruncher bonuses :-)
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 :-)
jnthn finally tracks down why multi exports weren't really working 18:49
dalek kudo: b64e163 | pmichaud++ | src/ (2 files):
Move capitalize into Any-str.pm setting (RT #64060).
18:51
kudo: 7b3f8c4 | pmichaud++ | :
Merge branch 'master' of [email@hidden.address]
diakopter wonders if Goldman Sachs still heavily uses APL
18:53 cdarroch left
Tene_ pmichaud: let me know if I can help with PCT refactors. 18:55
18:55 Tene_ is now known as Tene 18:57 NordQ joined
jnthn Tene: Did you have any luck with .leave? 18:58
Tene ... oh, right. 18:59
I knew I was forgetting something...
>.>
jnthn ;-) 19:01
mberends jnthn, pmichaud: written by a PIR total n00b, how does this look? gist.github.com/85641 19:03
19:04 maustin joined, maustin left
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.
Tene find_lex sock, "$socket"
?
jnthn Tene: Because finx_lex only hands back PMCs and the socket op needs other things, I think. 19:05
Tene ah
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
find_lex $P0, "$socket" # handle to be opened
can become
find_lex sock, "$socket" # handle to be opened
You can just put it right into that since it's a PMC
For the others just domain = $P1
Is fine
mberends: Other than that, looks fine. :-) 19:07
mberends that's at least a start... thanx for the advice :)
jnthn Thanks for working on it. :-) 19:08
mberends plenty more to do of course, but an occasional sanity check helps :)
jnthn mberends: Are you roughly following svn.pugscode.org/pugs/docs/Perl6/Sp...ary/IO.pod ? 19:09
mberends jnthn: yes 19:10
jnthn mberends: Great! 19:11
mberends just part of it, mind ;) 19:12
jnthn ;-) 19:13
pugs_svn r26000 | jnthn++ | [t/spec] A few more import tests.
dalek kudo: c1c4307 | jnthn++ | src/classes/Multi.pir:
Revert an accidential change from earlier debugging.
kudo: a572337 | jnthn++ | src/ (2 files):
Fix up exporting (and as a result, importing) of multis.
kudo: 0f50d4f | jnthn++ | :
Merge branch 'master' of [email@hidden.address]
19:14
jnthn OK, I need a food break. 19:15
pmichaud mberends: note that failure should probably be done with a call to 'fail' 19:17
jnthn Ah, yes, good pooint. 19:18
pmichaud in this particular case, I'd expect there to be only one line of inline PIR
okay, a bit more than one line
jnthn pmichaud: With that patch probably now the :DEFAULT can go away.
pmichaud but essentially
oh wait.
socket() just returns true/false?
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.
pmichaud me neither.
jnthn (Though I can understand this may be a helper sub for implementing that.)
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
TimToady my fixes to IO.pod were not intended to be completist :) 19:24
and I know I forgot open with :w
pmichaud (scheduling note: I may be a few minutes late to design meeting call today) 19:25
TimToady k
pmichaud (have to pick up kids from school, as it's raining here.)
19:30 ejs1 left 19:31 ejs1 joined
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:31
pmichaud ...should they be? 19:32
mberends dunno
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)␤»
..elf 26000, pugs: OUTPUT«␤»
19:38 ejs1 left
moritz_ perl6: say False ~~ False 19:38
19:38 araujo left
p6eval rakudo 0f50d4: OUTPUT«Method 'ACCEPTS' not found for invocant of class ''␤current instr.: 'infix:~~' pc 19529 (src/builtins/match.pir:18)␤» 19:38
..pugs: OUTPUT«1␤»
..elf 26000: OUTPUT«␤»
moritz_ perl6: say False ~~ Bool::False
p6eval pugs: OUTPUT«1␤»
..rakudo 0f50d4: OUTPUT«0␤»
..elf 26000: OUTPUT«␤»
19:38 ejs1 joined
moritz_ why does smartmatching against a Bool alway return the RHS? 19:39
pmichaud because S03 specs it that way :-)
moritz_ I know
but what's the motivation?
I mean for always true conditions we have * on the RHS
having False ~~ False being False seems very unintuitive 19:40
given that 0 ~~ 0 is True
and for a smartmach that's always false you can still use { False } on the RHS
pmichaud I think it's so that someone can do things like
when foo($x) { ... }
where foo($x) returns a bool
moritz_ yes, that makes sense 19:41
pmichaud afk for a bit # kid pickups
moritz_ maybe there's no do-it-right-in-every-case solution here
pmichaud if you want to smart match against false, it's just when !$_ { ... }
or === False, I suspect. 19:42
amoc rakudo: say ::SomeThing
p6eval rakudo 0f50d4: OUTPUT«Null PMC access in isa()␤current instr.: 'parrot;List;!flatten' pc 5960 (src/classes/List.pir:227)␤»
amoc May I bug report it ?
moritz_ amoc: please do
amoc Er.. is this of 'parrot' or 'rakudo' ? 19:44
moritz_ rakudo. 19:45
amoc thanks a lot for your kindness at my noob question. 19:46
moritz_ no problem, we all began like that ;-) 19:47
amoc is moved by moritz's word. 19:49
moritz_ actually the time I came in here I reported a broken link on the pugs webite 19:51
and two minutes later I had a commit bit in my inbox
and audreyt told where I could have fixed it myself ;-)
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␤»
moritz_ well, my segfaulting example is a little bit more complicated 19:55
19:57 cognominal left 19:58 ejs1 left
amoc i see but it's very respectful for me that you immediately corrected and committed.. :O 20:09
moritz_ I didn't, audreyt did it ;-) 20:12
actually I had never even used svn before
20:14 riffraff left
amoc oh, how long was it .. years ago? 20:16
moritz_ April 2006, iirc
jnthn back from foods 20:18
amoc thinks it's awesome 20:20
jnthn Actually, was just the takeout...so not that awesome. ;-) 20:21
Though while eating it I think I figured out how to easily do lexical multis in Rakudo. 20:22
moritz_ ;-)
Tene my favorite takeout curry place has closed.
i need to find another one.
jnthn Ouch. :-( 20:23
moritz_ actually it was 2007-02-04
jnthn Lack of curry is a Bad Thing.
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
moritz_: then, i guess that perl is your first proejct? 20:25
20:25 M_o_C left
moritz_ amoc: nearly; I did some small stuff in C++ and Eiffel before, but nothing really in a larger community 20:30
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
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
or did I miss a patch to replace the original?
moritz_ we have floor/ceiling/round etc in the setting already 20:35
ruoso SMOP is my first real C project
amoc (sniff) I don't have my first project yet. 20:36
moritz_ pmichaud: one be cspencer++, if I can believe my blame log
so I'd reject it
cspencer_ moritz: i'll accept the blame for that, yes :)
jnthn If it's already in the setting, ticket isn't much use.
pmichaud okay, I'll reject it. The version that is in setting now has some issues, though.
it's improperly type-constraining the invocant. 20:37
bacek good morning
moritz_ cspencer_: I like 'svn praise', which does the same as 'svn blame', but is so much nicer ;-)
pmichaud also, for the time being we might want to have floor/ceiling return nums instead of ints.
moritz_ pmichaud: why?
jnthn bacek: morning
pmichaud we don't have bigint support, and we can't represent Inf as an int 20:38
amoc bacek: good morning *
moritz_ pmichaud: that seems unintuitve; my Int $x = ceil(3.4) would fail
jnthn Indeed.
bacek jnthn++ # porting socket_win32.c :)
pmichaud there is that.
moritz_ I'd rather regress on Inf/NaN things than on such "easy" stuff
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.
"34.4".floor should work.
moritz_ I can do that
pmichaud also, get rid of the 'return' calls
moritz_ ok 20:40
pmichaud that adds an extra function call + exception + capture into the mix.
moritz_ should I also get rid of the invocant at all, and use self instead?
pmichaud that's my strong preference, yes.
not only that, but it eliminates the need for find_lex
moritz_ aye
pmichaud (I'm sooooo happy we implemented the 'box' opcode, btw :-) 20:41
jnthn too
ruoso adding mildew to ohloh 20:42
20:44 cspencer left, mberends left, cspencer_ is now known as cspencer
moritz_ changes implemented, spectesting now 20:44
20:53 sri_kraih_ joined 20:54 skids left 20:57 |jedai| joined 21:01 dKingston joined 21:03 eternaleye left 21:06 sri_kraih left
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
or are smaller patches preferable?
21:08 ruoso left
pmichaud I tend to prefer smaller patches -- easier to review (assuming they're independent) 21:12
cspencer pmichaud: alright :)
pmichaud it is a bit annoying that git-apply doesn't apply patches that patch(1) is able to handle.
or to be more explicit
patches generated with git might not pass git-apply but work fine with patch(1) 21:13
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.
That said, I'm fine with just using patch(1) for now.
PerlJam how do patches generated with git fail git-apply? 21:19
pmichaud I'm getting context errors because the line numbers don't match precisely 21:23
21:23 |jedai| left
pmichaud as an example, try to git-apply the patch in RT #64092 to the current master 21:23
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.
I'm spectesting it now.
cspencer also, (reviewing some of your comments above), would you prefer return not be used when avoidable, just to save overhead? 21:25
pmichaud yes. 21:26
cspencer ie) in the p5chomp just use "$num" instead of "return $num"
pmichaud yes.
cspencer ok, will do in the future
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
jnthn I've probably used return in places where I needn't have done so too... 21:27
21:28 |jedai| joined
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
PerlJam pm: the only errors I got were whitespace errors (which are easily fixed with --whitespace=fix) 21:31
21:32 schmalbe left
pmichaud PerlJam: just a sec, I'll try reapplying. 21:36
21:36 NordQ left
pmichaud PerlJam: nopaste.snit.ch/15960 21:38
21:39 ejs1 joined 21:40 ejs1 left, DemoFreak left
PerlJam pm: what version of git are you using? 21:41
21:41 DemoPhreak is now known as DemoFreak
pmichaud $ git --version 21:41
git version 1.5.4.3
PerlJam Here's what I see. nopaste.snit.ch/15961
(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
so, it's a git version issue?
PerlJam must be. I'm using 1.6.2.rc2.22.g1d035 currently. 21:43
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)
pm: I keep a copy of the git repo around and build it occasionally. 21:45
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 :-)
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, skids joined
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.
(i.e., just grabbing the package from ubuntu)
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
yeah, I'd wait if I were you
21:53 jhorwitz left
jnthn wonders how long until Rakudo overtakes Parrot on tickets 21:58
21:59 alester left
PerlJam jnthn: depends on how fast you and Patrick implement things ;) 21:59
jnthn Yes, yes, I'm just smoking another thing. :-P 22:00
ENOTENOUGHHOURSINRAKUDODAY
22:02 araujo joined 22:03 ejs left 22:07 justatheory joined
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:08
dalek kudo: bb22e02 | jnthn++ | (3 files):
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
22:13 justatheory left 22:20 exodist left 22:21 eternaleye left 22:26 Southen joined
jnthn pmichaud: ping 22:31
pmichaud pong 22:32
22:33 nihiliad left
jnthn pmichaud: "Applying this patch causes me to get failures in t/spec/S05-mass/rx.t ." 22:33
I know why, and meant to talk to you about this one...
When you have code like:
/foo/
It compiles this regex and puts it in the namespace PGE::Grammar 22:34
Or so it appears
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.
Which also wind up in that namespace.
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
They get unique sub ids
bu
.namespace ["PGE";"Grammar"] .sub "_block20" :method :subid("12_1238020527")
ah, two lines got stuck together there 22:36
pmichaud what happens with other blocks... what names are they getting?
jnthn Similar but it's less of an issue at the moment.
(Because those end up in the namespace of the place where they are defined.)
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
i.e., if the :method flag wasn't there, it probably wouldn't complain.
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)
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
(or something along that line)
jnthn pmichaud: Oh, yes, I remember now...
pmichaud: So yes
pmichaud cspencer: that might work out better.
cspencer ok, i'll fix that and the regex and resubmit
jnthn Though the names might come and bite us too. 22:40
Since the subs are not :anon'd.
pmichaud and we can't :anon methods.
(TT #389) 22:41
jnthn Ah.
22:43 Southen_ left 22:44 Southen_ joined
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:44
jnthn k 22:45
22:46 Southen left
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:46
jnthn Let me look up that tt, I'm curious why :anon and :method don't play. 22:47
22:47 hercynium_ left
pmichaud I guess they play depending on what we want the meaning of :anon to be there, though. 22:48
looking at the ticket -- I guess that :anon is actually doing what I want it to do in this case.
i.e., it's creating a method without installing it in the method table.
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. :-|
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...
pmichaud moritz_: I wouldn't commit any changes if you're getting a failure in rx.t 22:51
I'm not getting the rx.t failure in HEAD -- only when certain patches are applied.
(generally patches involving anonymous regexes)
jnthn moritz_: And if you re-order things in the setting they might disappear...
moritz_ pmichaud: ah, ok 22:52
jnthn didn't actually seriously suggest that ;-)
pmichaud I'll fix the underlying issue tonight.
jnthn Cool.
jnthn just finally wrote *last week's* rakudo day report
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
moritz_ pmichaud: ok, I'll push to a branch, which you can merge once you're done
pmichaud moritz_: that's great. how do I merge a branch again...? 1/2 :-) 22:53
22:53 |jedai| is now known as jedai
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:54
pmichaud okay, thanks. 22:56
moritz_ branch setting-num-improvements pushed to github
jnthn What's the syntax for messaging someone here? 22:59
moritz_ @tell jnthn there you go
lambdabot Consider it noted.
jnthn @tell ?
lambdabot Consider it noted.
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.
cspencer what's the signature that allows a slurpy argument list for a variable number of arrays? 23:01
ie) foo(@a, @b, @c)
moritz_ cspencer: a foo(*@a) will flatly slurp up all arrays (I think) 23:02
and foo(@@a) would do so without flatting, but that's NYI
cspencer that would explain things :)
Tene if it's just a fast-forward, there won't be a merge commit 23:07
23:08 eternaleye joined
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?
lambdabot jnthn: You have 1 new message. '/msg lambdabot @messages' to read it.
jnthn @messages 23:09
lambdabot moritz_ said 9m 50s ago: there you go
jnthn
.oO( phew, it wasn't a secret message )
Tene jnthn: run 'gitk' in rakudo
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
frioux jnthn: we kept it a secret
jnthn hah, apparently I have 1,500 "loose objects"
frioux jnthn: it was a conspiracy
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?
moritz_ which is kinda... inconvenient
Tene moritz_: pull does not do merge commits if it's just ff
moritz_ jnthn: yes
jnthn As in, is there any reason not to?
OK.
Tene jnthn: 'git gc' will repack everything for you
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
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?
Tene moritz_: fast-forward is if you have no local commits
jnthn: yes
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.
it's not really a big issue
moritz_ Tene: ah, I confused that with trival rebases
Tene depends on how picky you are. I'm rather picky about trivial things at times.
It certainly doesn't hurt anything how things currently are 23:14
'git pull' is approximately an alias for 'git fetch; git merge origin'
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
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 23:31 DemoPhreak joined
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:33
cspencer pmichaud: i've attached a fixed p5chomp/p5chop patch to the original ticket 23:34
though rx.t is still failing
pmichaud cspencer: excellent!
23:34 bacek_ joined
pmichaud I'll fix the method naming issues later tonight and apply the patch (assuming it passes) 23:34
cspencer sounds good :) 23:35
jnthn use.perl.org/~JonathanWorthington/journal/38701 # write-up of today's work 23:40
23:45 DemoFreak left 23:47 nihiliad joined
jnthn pmichaud: Just as a heads-up, I'll probably be completely offline the weekend and Monday. 23:49
23:49 icwiener_ left
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
23:50 xinming_ is now known as xinming
jnthn Will be back and working as normal from Tue and have a Rakudo day next week though, anyways. :-) 23:50