Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2013-12-19

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:01 xinming_ joined #perl6
00:02 dalek rakudo/moar-support: bd292ae | jnthn++ | src/main.nqp:
00:02 dalek rakudo/moar-support: Warnings from END time shouldn't explode.
00:02 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/bd292ae345
00:07 Entonian joined #perl6
00:09 TimToady japhb_: I'm not convinced that it's necessary to shoehorn every harebrained getargs policy into MAIN, especially when you have complete access to @*ARGS before main is ever run, in the ordinary mainline code
00:09 TimToady *MAKIN
00:09 TimToady *MAIN, grr
00:10 TimToady it's not even required that every Perl 6 program *have* a MAIN
00:10 japhb_ TimToady, I'm not saying they all have to go in there.  I am however saying that there are a few common ones that we don't handle at all well right now.
00:10 japhb_ And easy things should be easy.
00:11 TimToady as slopes go, this one is darn slippery
00:11 japhb_ In particular, for my personal work, subcommand-style argument handling a la git should Just Work
00:11 japhb_ No argument there.  I'm trying to replace a slope with an appropriately sized and shaped escape hatch.
00:12 TimToady the escape hatch is anything above the water line
00:14 japhb_ OK, are you saying that you believe the MAIN design as it is now is (at least locally) optimal, such that it's a bad idea to change it?
00:18 rurban1 joined #perl6
00:20 lizmat just back in from a day away
00:20 preflex lizmat: you have 2 new messages. '/msg preflex messages' to read them.
00:20 TimToady the only thing strange about MAIN is that it will be called automatically; dispatching to your own set of 'main' subs is like one call more
00:20 lizmat thank you all for the congrats wrt WCA
00:21 TimToady which is not really heavier than 'is mumble(bletch)'
00:21 lizmat .oO( need more stuffing ;-)
00:21 japhb_ lizmat++  woolfy++  # I didn't get in on that yet.  ;-)
00:22 * japhb_ very much likes the self-documenting nature of MAIN, and also likes the magic ... just wants the magic MOAR BETTER.
00:22 colomon lizmat++ woolfy++ # I don't know what is going on, but yay them!
00:23 lizmat colomon: what happened is that woolfy didn't stuff the ballot box enough
00:23 colomon and now has an advent post to write?
00:23 * colomon is guessing
00:23 woolfy colomon: http://blogs.perl.org/users/brian_d_f​oy/2013/12/the-2013-white-camels.html
00:23 * colomon doesn't know why there would have been a ballot box.
00:24 colomon oh, sweet!
00:24 jnthn lizmat++ woolfy++ # epic conference attendance, and failing to fail to win :)
00:24 woolfy colomon: I voted against me and Liz winning this thing and voted other people up...   I think I gave lizmat and myself something like 40 minus-votes over the last months from different places :-)
00:24 colomon woolfy++
00:25 woolfy so no IP-number checking would track me and block me...  :-)
00:26 japhb_ woolfy: Too bad for you, basic sanity checking caught you.  :-)
00:26 TimToady japhb_: subcommands should fit into the current MAIN scheme already, since it's just discriminants like 'pull' on the front, and we can match strings
00:27 japhb_ TimToady, the problem is that all options must appear before all positionals -- and the subcommand strings are positionals.
00:27 * woolfy and lizmat have been here this year: almost all Amsterdam.pm & Niederrhein.pm meetings and several AmsterdamX.pm meetings and both the YAPC::EU and YAPC::NA conferences,
00:27 woolfy and Perl QA Hackathon in Lancaster, Patch -p1 hackathon in Paris, FOSDEM, T-DOSE, FrOSCon, NQP/Perl 6 course in Frankfurt, and some Perl Workshops
00:27 japhb_ And that's not the way people generally want to use subcommand interfaces.
00:28 woolfy workshops: Orlando, Israel, Netherlands, Germany, Switzerland, Austria, France, Denmark (Nordic), London, Poland.
00:28 jnthn Where "some Perl Workshops" = a superset of those I did this year :P
00:28 TimToady subcommands should probably not dispatch to MAIN, but to something MAIN calls
00:28 woolfy jnthn: and you have been here, staying with us, making that sort of a very nice Perl-event as well...  :-)
00:28 lizmat japhb_: each subcommand its own MAIN candidate with something like:
00:28 lizmat multi MAIN ( Str $a where $a eq "bar", ... ) {
00:29 japhb_ TimToady, Huh what?  Subcommands with fixed string discriminants seem like *exactly* what you'd want multi MAIN for ....
00:29 jnthn woolfy: Yes! That was very nice :)
00:29 TimToady lizmat: multi MAIN ( 'bar', ...)
00:29 jnthn lizmat: That's a long way to write multi MAIN('bar', ...) {
00:29 japhb_ lizmat: Yes, I know.  And actually, you just do: multi MAIN ('bar', ...)
00:29 japhb_ LOL
00:29 lizmat wow
00:29 lizmat :-)
00:29 jnthn ...
00:29 * lizmat just learned something again  :)
00:30 TimToady japhb_: I mean that the pull subcommand should match multi MAIN('pull', *@subcommand) and that some other name should be dispatching the subcommand
00:30 lizmat woolfy and me are celebrating with some Belgian single malt whiskey made from triple
00:31 * japhb_ uses that in several programs.  And goes crazy with: program --option --option=val --option subcommand args ...  # Which looks awful in USAGE
00:31 * TimToady can't fix everyone's bad design :P
00:32 japhb_ Which design do you think is bad?
00:32 japhb_ ETOOMANYPOSSIBLEREFERENTS
00:32 TimToady yes :)
00:32 japhb_ !
00:32 TimToady precisely :)
00:34 TimToady if MAIN didn't exist, you'd write what you want in terms of massaging your arglist and delegating subcommands
00:34 TimToady and you'd be happy :)
00:34 * japhb_ doesn't like the enforced repetition you'd get from: multi MAIN('pull', *@pull-args) { pull-main(parse-args(@pull-args)); };  multi MAIN('push', *@push-args) { push-main(parse-args(@push-args)); }
00:35 TimToady MAIN isn't intended to be a vehicle for multiplying entities, but for handling stupid argumen lists like 90% of Unix commands
00:35 japhb_ Sure, but my argument is that currently, MAIN does not match the parsing practices of modern Unix commands.  Nor ancient ones.  In fact, there's only a middle-aged set of commands that it (kinda) matches.
00:37 japhb_ Hmmm, maybe the right thing is to just override MAIN_HELPER (or pieces of it)
00:37 woolfy Ow wow, that Gouden Carolus Single Malt Whisky is soooo nice:  http://www.stokerijdemolenberg.be/en/whisky
00:38 TimToady japhb_: or .wrap it
00:39 TimToady but the entire mainline code is already a wrapper for MAIN, basically
00:39 japhb_ TimToady, in it's current implementation, .wrap'ing it would only handle some of the cases, but I think a little reorg might help that.
00:40 japhb_ Sure.  I guess I just want this to work:  use MainHelper::GitLike; multi MAIN('pull', @args, %options) { ... }
00:40 TimToady well, I'd say "go wild" but I just don't want the insanity leaking into how parameter binding works
00:41 japhb_ Oh, I don't think anything I've mused about so far would involve changes to param binding.
00:41 jnthn What's the reason that nameds must come ahead of positionals, ooc?
00:42 jnthn in-perl-6-i-can('pass', this => 'and', 'another', :thingy, 'without', :!trouble)
00:42 TimToady we don't know when the shift from positionals to variadics happen, and we don't do getopt-driven parsing
00:42 japhb_ I mean, I've wanted the ability to specify list- and hash-valued options, but that's the kind of thing that ought to happen in a module that does some magic and produces a new @positionals, %nameds pair, not changes binding.
00:42 TimToady working it out as something that enables subsig matching would be okay
00:43 TimToady making the USAGE drive the parsing would not be okay
00:43 japhb_ As currently implemented (and I believe spec'ed), the transition from options to positionals happens at '--' or first non-option.
00:44 japhb_ Oh, no.  I expected that USAGE would be the tail, not the dog.
00:44 TimToady if the first non-option is a discriminant, then you just need the ability to redispatch transforming the --foos of the subcommand the same way MAIN's are
00:44 japhb_ nodnod
00:45 TimToady well, and know enough of the delegation to look for a sub-USAGE of some sort
00:45 japhb_ Which argues for having the options parser be a reusable component (using the informal meaning there)
00:45 TimToady but to me, I'd rather see this capability on any sub, not just a MAIN
00:46 TimToady since you prolly wanna name the subcommand handlers according to their name
00:46 japhb_ I almost wrote that kind of thing (working for any sub) way back when, but I was convinced by the crowd that was overdesign.  Perhaps I should have been more persistent.  :-)
00:47 TimToady for some reason the crowd seems to prefer low-wattage specific solutions sometimes over generic solutions :)
00:47 TimToady generic solutions are better as long as they aren't thrust upon unsuspecting specific users :)
00:47 japhb_ .oO( "Light Bulb!" )
00:49 dalek perl6-roast-data: cdacefc | coke++ | / (3 files):
00:49 dalek perl6-roast-data: today (automated commit)
00:49 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/cdacefce36
00:49 [Coke] lue: sixperl == Perl 6
00:50 japhb_ p: <3/8> ** 7
00:50 camelia rakudo-parrot 413650: ( no output )
00:50 japhb_ p: say <3/8> ** 7
00:50 camelia rakudo-parrot 413650: OUTPUT«0.00104284␤»
00:50 TimToady but a language needs a certain amount of low-wattage affordances or people can't cargo cult it to learn it
00:51 TimToady and I've been thinking of MAIN as one of those low-wattage affordances
00:51 japhb_ I think it's low-wattage, certainly -- but currently purple.
00:52 japhb_ Easy to use to do not quite what you want.
00:52 * lizmat decided to gat some sleep
00:52 japhb_ o/ lizmat
00:52 lizmat and will now get some&
00:52 jnthn 'night lizmat
00:52 TimToady well, there's quite an impedance mismatch between siggies and typical command-line getops policies, and I'd hate to see either of those turn into a hammer
00:53 TimToady you'd almost need something like unification to do getopts the AIish way people want
00:53 japhb_ I want a nice solid red toolbox with a standard weight claw hammer on the top rack.
00:54 [Coke] as mentioned: rakudo.moar,2013-12-18,00.03%,0​fed404,8,26551,0,0,26559,28250,
00:54 japhb_ .oO( use MainHelper::Prolog )
00:55 TimToady well, you shouldn't believe half of what I write today, since I'm under the weather :)
00:56 jnthn [Coke]: Tomorrow's run will be...interesting.
00:56 dayangkun joined #perl6
00:56 jnthn [Coke]: On the upside, Test.pm loads/basically works now.
00:56 japhb_ Hope you feel better soon, TimToady!
00:56 jnthn [Coke]: On the downside, 5-6 tests hang.
00:57 TimToady m: say <3/8>.WHAT
00:57 jnthn I'm not sure we have an m yet :)
00:57 jnthn Though we could now
00:57 TimToady that sez (Str) here :)
00:57 [Coke] jnthn: test runner kills hung tests.
00:57 TimToady or :( depending
00:58 [Coke] so, no worries.
00:58 [Coke] I'm doing another run right now to see.
00:58 japhb_ [Coke], What's the timeout?
00:58 jnthn TimToady: Well, that almost certainly falls in the category of "portable NYI" :)
00:58 jnthn [Coke]: Oh, then I won't worry too much over it :)
00:58 TimToady j: say <3/8>.WHAT
00:58 camelia rakudo-jvm 413650: OUTPUT«(Str)␤»
00:59 TimToady p: say <3/8>.WHAT
00:59 camelia rakudo-parrot 413650: OUTPUT«(Str)␤»
00:59 TimToady portable shmortable
00:59 TimToady it needs to be ported from niecza :)
00:59 [Coke] https://github.com/coke/perl6-roast-da​ta/blob/master/bin/rakudo.moar.sh#L16
00:59 grondilu joined #perl6
00:59 TimToady n: say <3/8>.WHAT
00:59 camelia niecza v24-108-g17d73e4: OUTPUT«(Rat)␤»
00:59 [Coke] exec "ulimit -t 90; ulimit -v 1260720; nice -20 ./perl6-m @ARGV
01:00 * jnthn will have to read spec to figure out how the <3/8> things are meant to be done...
01:00 jnthn But not this side of Christmas break :)
01:00 xenoterracide joined #perl6
01:00 japhb_ TimToady, I considered it (porting dual vars from Niecza, to be precise).  About three times.  Maybe more.  Every time I found something less core-painful to work on.  :-/
01:00 grondilu xenoterracide: I'm here in case you want to talk about https://github.com/grondil​u/libdigest-perl6/issues/2
01:01 TimToady as you can see, <3/8> is not a dualvar :)
01:02 japhb_ Yes, but it is in a closely related place.
01:02 xenoterracide grondilu: I'll hit you up later about to run to see hobbitses with gf
01:03 jnthn btw, I'm going to be mostly offline from Fri onwards, probably until after Christmas. I'll probably drop by now and then...but I need some time away from the keyboard. :)
01:03 japhb_ Good for you.
01:03 xenoterracide though would be interesting to here thoughts from TimToady, or jnthn or whomever, about how best to select a different module based on backend architecture (I think naming convention would work, but maybe there are smarter solutions)
01:04 TimToady well, there's always BEGIN, if nothing else works
01:05 TimToady but the lower down such decisions can be made, the better
01:05 TimToady we'd like to present the typical P6 user with a uniform interface regardless of backend
01:06 colomon joined #perl6
01:07 xenoterracide TimToady: of course but I'm going to assume that (speaking in p5 terms) there'll be modules that have XS and pure perl versions ... and sometimes maintained by different people, but you still want that same interface (re: Digest, or things like JSON)
01:07 xenoterracide and with the possibility of a Java backed version (like something shipped with java)
01:07 xenoterracide that adds a 3rd option
01:08 xenoterracide or more
01:08 TimToady sure, anything that can have a universal API should have a universal layer, but we don't want to prevent people from doing hard things too
01:09 * TimToady has never been interested in the Java Trap
01:09 * TimToady prefers Write Once, Run Everywhere Appropriate
01:10 TimToady and sometimes that's Anywhere
01:10 * colomon seems to have accidentally unplugged the Christmas tree.  :\
01:10 japhb_ .oO( Write Once, Run Often )
01:12 xenoterracide TimToady: nah, I'm just inquiring about possible convention, where convention can be ideal in 95% of cases, ok, really leaving now
01:15 grondilu xenoterracide: I think there are things like that in P5.  I'm thinking about YAML.  IIRC there are various flavors named YAML::*  where * is whatever method is used.
01:16 grondilu So you might be right,  Digest::PP/JVM/JS would make sense I guess
01:18 jnthn Time for some sleep
01:18 jnthn 'night
01:36 dalek roast: 6d1c47c | coke++ | test_summary:
01:36 dalek roast: allow rakudo-moar to skip test files
01:36 dalek roast: review: https://github.com/perl6/roast/commit/6d1c47c39c
01:56 [Coke] huh. latest build is complaining about not finding Test.pm (rakudo.moar)
02:08 TimToady [Coke]: see say <3/8>
02:08 TimToady oops
02:08 TimToady see https://github.com/rakudo/rakudo/commit/61c62b19bd
02:09 TimToady so you're out of sync with that somehow
02:09 TimToady about 2.5 hours ago
02:10 jnap joined #perl6
02:32 cognominal joined #perl6
02:34 * sjohnson snorts [Coke]
02:34 colomon joined #perl6
02:35 finanalyst joined #perl6
02:36 finanalyst p: say '0' xx 4
02:36 camelia rakudo-parrot 413650: OUTPUT«0 0 0 0␤»
02:36 [Coke] TimToady: ah, yes, my runner script assumes lib/
02:37 [Coke] is that the case for all 3 backends?
02:37 [Coke] ah, not yet
02:39 [Coke] er, it's fixed to be just 'lib' ? wtf.
02:44 [Coke] must have not done a full rebuild.
02:51 [Coke] Does rakudo-moar respect PERL6LIB ?
02:52 [Coke] https://gist.github.com/coke/8033624
02:54 [Coke] so it's saying it can't find Test.pm, but there is a Test.moarvm and a Test.pm in the first directory it's complaining about.
02:58 colomon does it rakudo-m know how to load modules yet?
03:01 jnap joined #perl6
03:11 TimToady perl6-m -e 'use Test;' fails here
03:11 TimToady with a "GatherIter NYI on MoarVM"
03:13 TimToady and 'say %*ENV;' sez: ("\x[4d]\x[41]\x[49]\x[4c]" => "\x[2f]\x[76]\x[61]\x[72]\x[2f]\x[6d]\x[61]\x[6​9]\x[6c]\x[2f]\x[6c]\x[61]\x[72]\x[72]\x[79]", "\x[53]\x[53]\x[48]\x[5f]\x[43]​\x[4c]\x[49]\x[45]\x[4e]\x[54]" => "\x[37]\x[31]\x[2e]\x[33]\x[37]\x[2e]\x​[39]\x[2e]\x[38]\x[30]\x[20]\x[34]\x[39​]\x[37]\x[35]\x[33]\x[20]\x[32]\x[32]", "\x[55]\x[53]\x[45]\x[52]" => "\x[6c]\x[61]\x[72]\x[72]\x[79]", "\x[53]\x[48]\x[4c]\x[56]\x[4c]" => "\x[31]", "\x[48]\x[4f]\x[
03:13 TimToady er, oops
03:30 Vlavv_ joined #perl6
03:37 lue S02-literals/types.t is one of those "lazy gather/take NYI" hangs, I'm guessing?
03:37 * lue really should learn just what exactly gather/take is for sometime...
03:40 kaleem joined #perl6
04:01 gfldex joined #perl6
04:02 lue r: grammar G { rule TOP { <alpha> <digit> } }; G.parse("33a1"); say $/
04:02 jnap joined #perl6
04:02 camelia rakudo-parrot 413650, rakudo-jvm 413650: OUTPUT«#<failed match>␤»
04:02 lue are grammars supposed to be implicitly anchored?
04:05 lue r: grammar G { rule TOP { <alpha> <digit> } }; G.subparse("33a1"); say $/
04:05 camelia rakudo-jvm 413650: OUTPUT«No such method 'subparse' for invocant of type 'G'␤  in block  at /tmp/ykvdmBSv8G:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196␤  in a…»
04:05 camelia ..rakudo-parrot 413650: OUTPUT«No such method 'subparse' for invocant of type 'G'␤  in block  at /tmp/hCu4DLcj56:1␤  in any  at /tmp/hCu4DLcj56:1␤  in any  at gen/parrot/stage2/NQPHLL.nqp:1146␤  in any eval at gen/parrot/stage2/NQPHLL.nqp:1133␤  in any evalfiles at gen/parro…»
04:05 lue :(
04:06 * lue adds a .* to the front of the TOP rule...
04:11 raiph joined #perl6
04:13 colomon joined #perl6
04:28 btyler joined #perl6
04:40 skids joined #perl6
04:42 Rix joined #perl6
04:48 cbk_ joined #perl6
04:53 colomon joined #perl6
04:59 preflex_ joined #perl6
05:02 jnap joined #perl6
05:15 thou joined #perl6
05:18 BenGoldberg r: printf '%.4f', (7 ** (e-1/e) - 9) * pi**2
05:18 camelia rakudo-parrot 413650, rakudo-jvm 413650: OUTPUT«867.5309»
05:28 lue I'm pleasantly surprised that switching out perl6-p for perl6-m in a troublesome script even began working :)
05:29 SamuraiJack joined #perl6
05:30 raiph joined #perl6
05:31 btyler joined #perl6
05:45 dwarring lue: thanks for help yesterday
05:45 lue no problem.
05:45 dwarring jnthn is suppoosed to be doing day 19
05:45 dwarring i guess we'lll just have to wait
05:46 dwarring i'm still up
06:04 * dwarring should be big news!
06:19 kaleem joined #perl6
06:34 darutoko joined #perl6
06:36 cbk1090 joined #perl6
06:44 sqirrel joined #perl6
07:04 jnap joined #perl6
07:41 gtxcomm joined #perl6
07:51 sqirrel joined #perl6
08:04 FROGGS joined #perl6
08:05 jnap joined #perl6
08:19 FROGGS o/
08:43 fhelmberger joined #perl6
08:54 broquaint joined #perl6
08:57 grondilu joined #perl6
08:57 grondilu {off topic] launch of Gaia in a few minutes: http://www.arianespace.tv/
09:20 jnthn TimToady: If you get GatherIter NYI, you're just missing the commit where I put a cheating version of it in, yesterday evening...
09:26 gtxcomm joined #perl6
09:50 tgt joined #perl6
09:55 gtxcomm joined #perl6
10:03 Alina-malina joined #perl6
10:06 jnap joined #perl6
10:07 PZt joined #perl6
10:10 broquaint joined #perl6
10:26 * jnthn is working on his advent post, btw :)
10:28 moritz ++jnthn
11:01 finanalyst joined #perl6
11:03 zakharyas joined #perl6
11:05 finanalyst can someone please tell me if I can "import" an enum from a Module? I define enum NN is export <Abe Bay> in module. I use NN. But to access Abe, I have to say NN::Abe. How can I just say Abe?
11:05 finanalyst s/use NN/use ModName/
11:07 jnap joined #perl6
11:08 jnthn I think it maybe should do that by default, but if you after your use try "import NN;" then I think that'll help.
11:10 FROGGS p: module Foo { enum NN is export <Abe Bay> }; import Foo; say Abe
11:10 camelia rakudo-parrot 413650: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/Rxz5iB8xr9â�¤Undeclared name:â�¤    Abe used at line 1â�¤â�¤Â»
11:13 finanalyst jnthn: rakudo doesnt do it by default currently. There's a compile error to say that Abe is Undeclared name.
11:13 FROGGS yeah, it seems like the things in an enum are not made available
11:14 finanalyst also import NN doesnt help
11:16 finanalyst p: module Foo { enum NN is export <Abe Bay>};  say NN::Abe
11:16 camelia rakudo-parrot 413650: OUTPUT«Could not find symbol '&Abe'␤  in method <anon> at gen/parrot/CORE.setting:12065␤  in any  at gen/parrot/Metamodel.nqp:2691␤  in any find_method_fallback at gen/parrot/Metamodel.nqp:2679␤  in any find_method at gen/parrot/Metamodel.nqp:946␤  in…»
11:16 FROGGS finanalyst: you still need to import Foo
11:16 finanalyst p: module Foo { enum NN is export <Abe Bay>};  use Foo;say NN::Abe
11:16 camelia rakudo-parrot 413650: OUTPUT«===SORRY!===␤Could not find Foo in any of: /home/p6eval/rakudo-inst-2/lib/parrot/​5.9.0-devel/languages/perl6/site/lib, /home/p6eval/rakudo-inst-2/lib/parrot/5​.9.0-devel/languages/perl6/vendor/lib, /home/p6eval/rakudo-inst-2/li​b/parrot/5.9.0-devel/langu…»
11:16 FROGGS import
11:16 finanalyst p: module Foo { enum NN is export <Abe Bay>};  impot Foo;say NN::Abe
11:16 camelia rakudo-parrot 413650: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/9zYeakqTu5â�¤Undeclared routine:â�¤    impot used at line 1â�¤â�¤Â»
11:16 finanalyst p: module Foo { enum NN is export <Abe Bay>};  import Foo;say NN::Abe
11:16 camelia rakudo-parrot 413650: OUTPUT«Abe␤»
11:16 FROGGS right
11:17 masak g'day, #perl6
11:17 fhelmberger_ joined #perl6
11:17 FROGGS it exports the enum, that is why NN is available
11:17 finanalyst FROGGS: thanx
11:17 masak wow, the Go people are planning to bootstrap Go after the fact: https://docs.google.com/document/d/1​P3BLR31VA8cvLJLfMibSuTdwTuF7WWLux71C​YD0eeD8/preview?sle=true&amp;pli=1
11:17 FROGGS but its children are not exported to your namespace
11:17 jnthn p: module Foo { enum NN is export <Abe Bay>}; import Foo; import NN; say Abe
11:17 camelia rakudo-parrot 413650: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/vGIn4UgowYâ�¤Undeclared name:â�¤    Abe used at line 1â�¤â�¤Â»
11:17 jnthn Hm, I'd have expected that second one to do it.
11:17 masak the HN discussion is interesting too: https://news.ycombinator.com/item?id=6932026
11:18 FROGGS jnthn: do we have to check for enums explicitly in ML.merge_globals?
11:18 masak people are catching on to how highly important AST-level introspection/modification is. especially algorithm driven introspection/modification.
11:19 jnthn FROGGS: I think we should do it in the export implementation...
11:19 jnthn FROGGS: So exporting an enum always exports its values too.
11:20 jnthn FROGGS: Detect it by meta-object
11:20 jnthn r: enum Foo <a b c>; say Foo.HOW ~~ Metamodel::EnumHOW;
11:20 camelia rakudo-parrot 413650, rakudo-jvm 413650: OUTPUT«True␤»
11:20 jnthn r: class Foo { }; say Foo.HOW ~~ Metamodel::EnumHOW;
11:20 camelia rakudo-parrot 413650, rakudo-jvm 413650: OUTPUT«False␤»
11:27 jnthn I advunt: http://perl6advent.wordpress.com/2013/12/​19/perl-6-supplies-reactive-programming/
11:38 rindolf joined #perl6
11:38 FROGGS jnthn: you forgot to mention parrot in the last sentence *cough*
11:42 tadzik hey, it even had commits 2 months ago
11:44 FROGGS well, it has threading support... somebody just need to find out what makes it crash in most cases
11:45 FROGGS to be clear: it crashes when using threads in nqp code for example
11:46 tadzik last time I checked, the perl6 people were saying "you do it", and parrot people were saying "you do it" ;)
11:49 FROGGS tadzik: and then I did
11:49 FROGGS that is where I got my knowledge from
11:49 tadzik you did? :o
11:49 tadzik so it works now?
11:49 FROGGS I made this executing in parallel: @a >>+<< @b
11:49 raiph joined #perl6
11:50 FROGGS tadzik: no, it crashes when the code gets a certain level of complexity
11:50 tadzik oh, indeed :)
11:50 FROGGS (and that level is pretty low actually)
11:50 FROGGS and parrot's threads tend to block if you are accessing lexicals, which is not very helpful
11:50 tadzik well, I opened a bug somewhere once, it was impossible to say() inside a new task
11:51 FROGGS you have to spawn two task
11:51 FROGGS tasks*
11:51 FROGGS one green thread that does start an os thread
11:51 FROGGS the work has to be done in the os thread then
11:52 tadzik hm
11:52 tadzik so what's the level of complexity at which we can't continue?
11:53 FROGGS see https://github.com/parrot/parrot/issues/889
11:54 FROGGS see the linked examples in my posts
11:58 tadzik so you start 300000 os threads which then start as many green threads
11:59 tadzik but I wonder, is aplusb really heavy enough? I mean, maybe it finishes counting by the time nqp starts another thread
11:59 tadzik then you won't see load on multiple cores at once
12:03 jnthn FROGGS: If you want to work on Parrot support, nothing's stopping you...I've got my hands more than full enough with building it on JVM and Moar, for the time being :)
12:04 pecastro joined #perl6
12:08 jnap joined #perl6
12:10 atroxaper joined #perl6
12:26 timotimo "will produce an ascending integer once per time internal"
12:29 woolfy Maybe a nice opportunity to promote Perl 6?  http://www.perloasis.info/tbpw2014/
12:29 jnthn timotimo: Fixed, thanks
12:32 atroxaper joined #perl6
12:35 timotimo ~.
12:36 timotimo yw :)
12:38 denisboyun joined #perl6
12:44 FROGGS jnthn: that is not what I said :o)
12:44 FROGGS I had my "fun" already
12:47 timotimo :\
12:49 colomon FROGGS: "I made this executing in parallel: @a >>+<< @b" -- on rakudo-j or just -p?
12:50 denis_boyun joined #perl6
12:52 FROGGS colomon: -p
12:52 colomon darn
12:52 FROGGS as a test, ages ago
12:52 colomon FROGGS++, anyway
12:52 FROGGS :o)
13:18 FROGGS[mobile] joined #perl6
13:20 * jnthn away for a bit
13:29 fhelmberger joined #perl6
13:39 rindolf joined #perl6
13:45 kaleem joined #perl6
13:50 kivutar joined #perl6
13:53 spider-mario joined #perl6
13:56 jnap joined #perl6
13:57 spider-mario_ joined #perl6
14:02 jnthn Seems it's 12 spectests that hang during the Moar run.
14:03 xenoterracide joined #perl6
14:05 dalecooper joined #perl6
14:05 timotimo that's not even that much!
14:06 ajr joined #perl6
14:06 tadzik the rest passes? :)
14:06 timotimo probably not ;)
14:07 jnthn no :P
14:07 timotimo prolly more than 0.01% passes, though
14:08 jnthn I'd think so :)
14:09 jnthn huh...all those that hang that I tried so far seem to do so at exit
14:09 jnthn ah, not all
14:11 SamuraiJack joined #perl6
14:14 dalek roast: 92d1b0e | jnthn++ | S16-filehandles/io_in_for_loops.t:
14:14 dalek roast: Moar fudge; gives infinite noks.
14:14 dalek roast: review: https://github.com/perl6/roast/commit/92d1b0eee7
14:15 jnthn That one would distort number of tests run in daily roast, so fudged it. Will leave others for now.
14:17 PacoAir joined #perl6
14:18 timotimo should others make an effort to fudge stuff that hangs or infiniloops?
14:21 fhelmberger joined #perl6
14:22 jnthn timotimo: Could do, though for now I suspect we can work of the daily runs, which ulimit stuff and will give us plenty of info on where to look for things to do.
14:39 kaare__ joined #perl6
14:41 tgt joined #perl6
14:43 xinming joined #perl6
14:55 bluescreen100 joined #perl6
14:59 atroxaper joined #perl6
15:02 ivanshmakov joined #perl6
15:02 araujo joined #perl6
15:02 zakharyas joined #perl6
15:06 timotimo did a fix land for the speed improvement for the jvm spectests not using Test.jar?
15:09 jnthn timotimo: No, not yet
15:10 jnthn I did one for Moar in moar-support branch
15:10 skids joined #perl6
15:16 thou joined #perl6
15:25 hummeleB1 joined #perl6
15:38 SamuraiJack joined #perl6
15:46 sqirrel joined #perl6
15:46 spider-mario joined #perl6
15:48 masak TimToady: I forgot to say happy 26th birthday yesterday!
15:53 skids r: my Int a; # LTA error
15:53 camelia rakudo-jvm 413650: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Type 'Int' is not declared. Did you mean 'int'?â�¤at /tmp/m1E5ncrfmA:1â�¤------> [32mmy Int [33mâ��[31ma; # LTA error[0mâ�¤Malformed myâ�¤at /tmp/m1E5ncrfmA:1â�¤------> [32mmy Int [33mâ��[31ma; # LTA error[0mâ�¤    e…»
15:53 camelia ..rakudo-parrot 413650: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Type 'Int' is not declared. Did you mean 'int'?â�¤at /tmp/ugqXsrktom:1â�¤------> [32mmy Int [33mâ��[31ma; # LTA error[0mâ�¤Malformed myâ�¤at /tmp/ugqXsrktom:1â�¤------> [32mmy Int [33mâ��[31ma; # LTA error[0mâ�¤  â€¦Â»
15:55 rurban1 joined #perl6
15:55 * masak submits rakuodbug
15:56 jnthn std: my Int a;
15:56 camelia std 3b262af: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Multiple prefix constraints not yet supported at /tmp/ZWrkaIr6kM line 1:â�¤------> [32mmy Int [33mâ��[31ma;[0mâ�¤Malformed my at /tmp/ZWrkaIr6kM line 1:â�¤------> [32mmy Int [33mâ��[31ma;[0mâ�¤    expecting any of:â�¤  mult…»
15:58 Psyche^_ joined #perl6
16:02 * masak finds he doesn't mind the description in https://news.ycombinator.com/item?id=6934948 as much as he thought he would after reading the first few words
16:04 raiph joined #perl6
16:05 ajr joined #perl6
16:17 colomon joined #perl6
16:28 timotimo jnthn: # java.lang.IllegalAccessError: tried to access class java.lang.AbstractStringBuilder from class org.perl6.nqp.generatedadaptor.​java.lang.AbstractStringBuilder
16:28 timotimo this is how trying to .append the return value of a .append breaks
16:28 timotimo (.append returns an AbstractStringBuilder instead of a StringBuilder)
16:28 timotimo not at all sure how to proceed.
16:28 timotimo i guess i'll mark thas as todo.
16:30 dalek rakudo/moar-support: de87347 | jnthn++ | src/Perl6/Actions.nqp:
16:30 dalek rakudo/moar-support: Some declaration => declaration_static.
16:30 dalek rakudo/moar-support:
16:30 dalek rakudo/moar-support: Rakudo does its own cloning (as it needs to clone code objects too).
16:30 dalek rakudo/moar-support: This avoids duplicate and incorrect work. That said, as we bring the
16:30 dalek rakudo/moar-support: other backends more inline with how Moar does closures, we may want a
16:30 dalek rakudo/moar-support: more general solution to what Rakudo is now doing. In the meantime,
16:30 dalek rakudo/moar-support: this fixes some things, meaning 'make test' now passes in full.
16:30 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/de8734761f
16:30 timotimo \o/
16:31 jnthn Now we "just" need make spectest to do the same :P
16:32 colomon SMOP
16:33 jnthn "S"MOOP :P
16:33 jnthn *MOP
16:36 timotimo jnthn: does our jvm interop need to learn how to cast an AbstractStringBuilder (interface i guess?) to a StringBuilder in order to chain those things together?
16:36 timotimo so we'd end up with code like $sb.'...append...'("foo").cas​t(...).'...append...'(1024)?
16:37 jnthn Doesn't ASB have an append method too?
16:37 timotimo or should the generated wrapper for AbstractStringBuilder notice "oh, i'm building an adaptor for an abstract class. i should cast myself before doing shit"
16:37 timotimo gimme a second
16:37 jnthn I'm guessing it does...
16:38 timotimo it does, yeah
16:38 timotimo oh!
16:38 jnthn So, I guess we just need to generate an interop type for that return object and wrap it like any other object coming back?
16:39 timotimo there is *also* a method that returns a Ljava/lang/StringBuilder;
16:39 jnthn Oh...though
16:39 timotimo and using that does work!
16:39 jnthn You sure that the second one doesn't hide the first?
16:39 jnthn As in, it's an override?
16:39 timotimo there are multiple, yeah
16:39 timotimo i don't know how hiding works; at least we *find* it and generate a wrapped method for it!
16:40 jnthn Well, I guess it's just that if two methods have identical signatures excluding the return type, then the one in the child class wins.
16:40 timotimo because the error message you get when you try to call "append" lists all methods with that exact arity
16:40 timotimo and the ones returning AbstractStringBuilder are among them
16:41 timotimo i'll have to figure out how to figure out which ones are hiding which ones, then :\
16:41 jnthn Yeah, I suspect for the auto-dispatcher thingy we need to exclude overridden methods
16:41 jnthn Well, but I think you can get away with string comparisons...provided you know which one comes from which class.
16:41 timotimo yeah, i think so, too
16:41 timotimo just find what's after the )
16:41 jnthn Well, you need to throw away what's after the ) in the comparison.
16:42 jnthn Oh, don't rely on what's after the ) for deciding which is deepest, though
16:42 jnthn As it's possible for an override to have the same return type
16:42 shlomif joined #perl6
16:43 timotimo yeah, i meant to say "throw everything after the / away when comparing"
16:43 timotimo i'll still have to figure out which class defines which methods
16:44 jnthn aye
16:44 timotimo i should be able to count the number of steps until i reach java/lang/Object from the given object and use that to compare deepness, aye?
16:45 timotimo i need to get prepared to commute around a bit
16:45 DrEeevil joined #perl6
16:47 hummeleBop1 joined #perl6
16:48 jnthn timotimo: Yes, sounds reasonable
16:48 jnthn timotimo: As there's only single inheritance in Java.
16:54 xenoterracide is there an explanation somewhere of why :U is the default not :D?
16:54 xenoterracide well.. that's not true right :U would enforce undefined?
16:55 xenoterracide I guess I'm just curious as to why :D isn't the default, would almost make sense to be
16:57 jercos I see :U and :D and :V and all I think of is (\/) (°,,,°) (\/)
16:58 masak jercos: :P
16:58 masak "the Zoidberg modifiers"
17:02 xenoterracide more important than my curiousity though, where's the docs on how I export a sub from a module?
17:03 dalek rakudo/moar-support: 293f744 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp:
17:03 dalek rakudo/moar-support: Implement coercive parameters.
17:03 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/293f7442b5
17:03 jnthn Who is cutting today's release?
17:04 jnthn xenoterracide: Probably in S11
17:04 jnthn But in summary, "is export"
17:05 xenoterracide jnthn: thanks (writing notes on how to do the most common things I need to do)
17:19 tgt joined #perl6
17:22 colomon jnthn: moritz or masak, I think.
17:24 jnthn Ah, guide says moritz++
17:24 * jnthn was looking at the one in moar-support, which didn't get nom merged recently enough
17:28 xenoterracide std: my Int $a = true : 1 : 0;
17:28 camelia std 3b262af: OUTPUT«[31m===[0mSORRY![31m===[0m�Preceding context expects a term, but found infix : instead at /tmp/qKrlAyJWHb line 1:�------> [32mmy Int $a = true [33m�[31m: 1 : 0;[0m�Parse failed�FAILED 00:01 124m�»
17:29 TimToady std: my Int $a = True ? 1 : 0;
17:29 camelia std 3b262af: OUTPUT«[31m===[0mSORRY![31m===[0m�Unsupported use of ?: for the conditional operator; in Perl 6 please use ??!! at /tmp/Rvs1EhdHMH line 1:�------> [32mmy Int $a = True ?[33m�[31m 1 : 0;[0m�Parse failed�FAILED 00:01 124m�»
17:30 TimToady std: my Int $a = true: 1, 0;
17:30 camelia std 3b262af: OUTPUT«[31m===[0mSORRY![31m===[0m�Undeclared routine:� 'true' used at line 1�Check failed�FAILED 00:01 125m�»
17:31 xenoterracide std: my Int $a = True ?? 1 !! 0;
17:31 camelia std 3b262af: OUTPUT«ok 00:01 124m␤»
17:32 TimToady I assume that's whatchyer lookin for.
17:32 xenoterracide basically, I was digging for the ternary operator
17:33 TimToady p: say +True
17:33 camelia rakudo-parrot 413650: OUTPUT«1␤»
17:33 TimToady though you'll never need one to numericize a boolean :)
17:34 xenoterracide TimToady: well that's not really the goal, just fishing for syntax to write a quick, dumb comparator for my reference
17:39 jnthn err&
17:40 timotimo what type would i use to represent a tuple of values in java?
17:40 timotimo is there something like Pair<String, Int>?
17:40 timotimo also, more than two parts?
17:43 xenoterracide timotimo: http://docs.oracle.com/javase/​7/docs/api/java/util/Map.html maybe the Map docs help? but no I don't think they have a Pair type
17:43 sqirrel joined #perl6
17:46 xenoterracide timotimo: http://docs.oracle.com/javaee/7/​api/javax/persistence/Tuple.html
17:50 timotimo i'm building my own class now
17:51 timotimo unfortunately the interface doesn't help me
17:51 timotimo i would still have to implement it with myo wn class
17:55 denisboyun joined #perl6
18:00 raiph TimToady: S07:230 # is the verbiage about for loops up to date?
18:00 synopsebot Link: http://perlcabal.org/syn/S07.html#line_230
18:01 mathw jnthn: supplies are amazing! I love reactive programming so very happy to see that and such a nice API too.
18:01 xenoterracide timotimo: well at least if you use the interface it'll be compat with anything that supports said interface
18:03 xenoterracide asside from the bitter stupidity of implementation
18:03 xenoterracide http://privatepaste.com/e74c0410d4 why is this throwing this error
18:03 xenoterracide Method 'cmp' must be implemented by BasicComparator because it is required by a role
18:03 ajr joined #perl6
18:08 alanjf joined #perl6
18:09 alanjf left #perl6
18:09 ssutch joined #perl6
18:11 Alina-malina joined #perl6
18:11 FROGGS[mobile] joined #perl6
18:13 jnthn timotimo: http://docs.oracle.com/javase/7/docs/api​/java/util/AbstractMap.SimpleEntry.html
18:13 jnthn timotimo: Crappy long name, though...
18:14 jnthn xenoterracide: You want a * in that proto, not a ...
18:20 fhelmberger joined #perl6
18:25 xenoterracide jnthn: http://privatepaste.com/2e5786a337 so trying to make it a required interface, which is what I thought ...  does...  changing to this is giving me a multimatch for signatures
18:25 TimToady raiph: yes, the verbiage is still accurate; all we changed was to make statementlist-level statements apply sink to loops
18:28 jnthn xenoterracide: We can't really compare signatures, so requirements are really just about names.
18:30 raiph TimToady: Thx. (but a bit more)
18:31 raiph TimToady:  A statementlist-level statement *ought* to be in sink, right?
18:31 raiph (I can imagine a (seems to me poor) argument that the last statement might not be sink.)
18:31 jnthn As I understand current spec, a statementlist-level *loop* statement is always in sink context.
18:33 xenoterracide jnthn: so if there's no proto, it works... ? I'm just trying to figure out how to make it "required" for whatever that means
18:33 jnthn Make *what* required?
18:34 xenoterracide the cmp method
18:34 jnthn I think proto method foo() { ... } in a role will work, but then you probably need to declare a proto method cmp in the class doing the role too
18:36 jnthn proto methods get auto-created, but it happens after role composition, since the role may provide multi candidates...
18:36 jnthn ...which is why just declaring multis isn't (presently) good enough.
18:40 xenoterracide jnthn: so for clarities sake, this appears to be doing what I want, http://privatepaste.com/8a492d5051 is it correct (per current limitations)
18:46 dalek nqp/jvm_interop_dispatchers2: 2c44525 | (Timo Paulssen)++ | src/vm/jvm/runtime/org/perl6/nq​p/runtime/BootJavaInterop.java:
18:46 dalek nqp/jvm_interop_dispatchers2: try to make sure we don't expose hidden methods
18:46 dalek nqp/jvm_interop_dispatchers2: review: https://github.com/perl6/nqp/commit/2c44525a31
18:49 jnthn xenoterracide: Looks sane to me.
18:56 denis_boyun joined #perl6
19:01 dalek nqp/jvm_interop_dispatchers2: 8bd936b | (Timo Paulssen)++ | src/vm/jvm/runtime/org/perl6/nq​p/runtime/BootJavaInterop.java:
19:01 dalek nqp/jvm_interop_dispatchers2: fix a thinko, actually skip methods if they are hidden.
19:01 dalek nqp/jvm_interop_dispatchers2: review: https://github.com/perl6/nqp/commit/8bd936b759
19:02 odoacre joined #perl6
19:18 denisboyun joined #perl6
19:24 moritz what's the difference between Supply.tap and Supply.map?
19:27 zakharyas joined #perl6
19:27 denis_boyun joined #perl6
19:27 TimToady 3 bits
19:28 raiph moritz: are you OK with the currently spec'd eager/lazy aspects of for loops?
19:29 raiph as per http://perlcabal.org/syn/S07.html#The_l​aziness_level_of_some_common_operations
19:30 moritz raiph: I'm OK with how it's specced in S04
19:30 moritz raiph: S07 might lag behind
19:33 autumn joined #perl6
19:40 dalek nqp/jvm_interop_dispatchers2: 34775a4 | (Timo Paulssen)++ | src/vm/jvm/runtime/org/perl6/nq​p/runtime/BootJavaInterop.java:
19:40 dalek nqp/jvm_interop_dispatchers2: surprisingly, not compiling the code doesn't guarantee it's right.
19:40 dalek nqp/jvm_interop_dispatchers2: review: https://github.com/perl6/nqp/commit/34775a43d5
19:40 xenoterracide http://privatepaste.com/c37f177e96 it doesn't seem like it should be, but is it possible to trigger "Go home Perl, you're drunk." in this via some weirdism? (again stupid implimentation simply to remind myself of syntax
19:41 rurban1 joined #perl6
19:45 dwarring fg
19:45 * dwarring oops classic ww
19:48 jeffreykegler joined #perl6
19:48 moritz xenoterracide: it seems you are acting as if the 'when' clause was just a boolean condition, like the conditional in the 'if'
19:48 moritz xenoterracide: instead the expression is evaluated, and then smart-matched against $_
19:50 moritz given $a { when .Int > $b { ... } }
19:51 moritz is short for   -> $_ { if $_.Int > $b ~~ $_ {  ... } }($a)
19:51 moritz so you're smart-matching a Bool against $_
19:51 moritz and since $_ is an integer, that can only be true if $_ is 0 or 1
19:51 xenoterracide :S
19:52 moritz so, either use if/elsif
19:52 masak moritz: waitwait.
19:52 moritz or   when * > $b { ... }  # for example
19:52 * moritz waitwaits
19:53 masak moritz: isn't it 'if $_ ~~ ($_.Int > $b)' ?
19:53 moritz masak: yes, you're right
19:53 masak and smartmatching against a Bool should make it act like an if, basically.
19:54 moritz but beware that a smartmatch also locally sets $_ to the RHS
19:55 moritz which can be confusing, if there's also an outer $_
19:55 masak aye.
19:55 masak does 'when' suffer from that, though? it's more of an implicit smartmatch, really.
19:57 masak by the way, I agree about the main point: use 'if' unless you're interested in the smartmatching behavior (or the 'succeed' semantics)
19:57 * lizmat finally has some time for rakudo
19:58 lizmat and I will spend it on writing my blog post tonight
19:58 masak ++lizmat
19:58 lizmat tentative title "Defaulting to Nililism and other variable traits"
19:59 xenoterracide masak: succeed semantics? (note: again mostly doing this for a personal cheatsheet)
19:59 * moritz runs m-spectest
19:59 moritz xenoterracide: a successfully matched when-clause exits the outer block
20:00 moritz p: given 42 { when 42 { say 'hi' }; say 'not reached' }
20:00 camelia rakudo-parrot 413650: OUTPUT«hi␤»
20:00 * xenoterracide looks at this gather thing and wonders if one could do my $res = gather given .. when { 1 }
20:00 masak p: for 1, 2, 3, 4, 5 { say $_; when 3 { say "THREE!" }; say "hop!" }
20:00 camelia rakudo-parrot 413650: OUTPUT«1␤hop!␤2␤hop!␤3␤THREE!␤4␤hop!␤5␤hop!␤»
20:02 moritz p: for 1..5 { .say; when 3 { say 'THREE' }; LAST say 'stop'; say 'hop' }
20:02 camelia rakudo-parrot 413650: OUTPUT«1␤hop␤2␤hop␤3␤THREE␤4␤hop␤5␤hop␤stop␤»
20:06 xenoterracide hmm... 0.93s total, significantly faster than last year at this time... cool
20:08 moritz m-spectest seems to pass about a half or a third of the spectest files
20:08 moritz then some which fail only a few tests
20:09 jnthn moritz: If you want a LHF-y to look into, I think it's also currently not running ones marked # icu
20:09 jnthn moritz: Which it should attempt also
20:10 moritz jnthn: should jvm run the #icu tests too?
20:11 arnsholt I'd vote for JVM running #icu tests
20:11 moritz oh, I see it does
20:11 * lizmat just ran a p-spectest and some some errors in S05-modifiers/*.t
20:11 lizmat *saw
20:11 lizmat is that to be expected ?
20:12 jnthn moritz: Yes, but I think it already does
20:12 dalek rakudo/moar-support: e998752 | moritz++ | t/harness:
20:12 dalek rakudo/moar-support: run #icu tests on moar
20:12 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/e99875245b
20:12 jnthn lizmat: Didn't hear anything about that
20:13 jnthn moritz: Not sure if that'll get us any more passes :)
20:13 * jnthn looks forward to the Coke numbers :)
20:13 sqirrel joined #perl6
20:14 slavik joined #perl6
20:14 lizmat jnthn: problem also seems to exist with jakudo
20:15 lizmat so it's not backend specific
20:15 lizmat it also has some todo's passing:
20:15 lizmat t/spec/S05-modifier/perl5_0.rakudo.parrot                     (Wstat: 0 Tests: 24 Failed: 0)
20:15 lizmat TODO passed:   15-17
20:16 lizmat I won't have time to look further into this until I finishes my blog post :-)
20:25 lue hello world o/
20:27 lue Uh, I don't know if this has since been fixed, but at least as of 90fec0aea I noticed a serious issue: the 'make install' target forgets to copy perl6-m to /usr/local/bin, which makes the subsequent perl6-m -> perl6 steps moot.
20:27 * lue updates his repos and tries again.
20:27 * jnthn didn't even know there was a make install target yet :)
20:28 colomon joined #perl6
20:28 lue :) I guess if I just copied over perl6-m manually and re-ran the target, it would work fine. But I'm updating first to see if someone's incidentally fixed it since yesterday.
20:31 lue jnthn: to be fair, I don't know if there are more issues with the install target, seeing as I don't have an installed perl6-m to test the install of :)
20:32 arnsholt jnthn: There's at least one piece of codegen support code I'd like to move out from P6Opaque private stuff to separate classes (for CStruct). Any preferences on which package that kind of stuff belongs in?
20:32 jeffreykegler left #perl6
20:32 arnsholt Having them in .nqp.sixmodel.reprs feels a bit weird
20:33 jnthn arnsholt: Move it out to .nqp.sixmodel maybe?
20:33 jnthn arnsholt: Though, CStruct is a REPR too...
20:34 jnthn There's always the .nqp.sixmodel.reprs.util option
20:34 arnsholt Yeah, but not ByteClassloader
20:34 jnthn Deeper namespace! More enterprisey!
20:34 arnsholt More enterprisier!
20:35 arnsholt But yeah, .nqp.sixmodel is probably gonna be ok
20:35 dalek rakudo/moar-support: 9cf4e13 | jnthn++ | src/vm/moar/ops/perl6_ops.c:
20:35 dalek rakudo/moar-support: Fix oversight in p6listitems.
20:35 dalek rakudo/moar-support:
20:35 dalek rakudo/moar-support: This broke at least shift, which in turn broke many other things.
20:35 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/9cf4e13cbf
20:58 * moritz can imagine that shift is used for a lot of things
20:59 moritz $ git grep shift|wc -l
20:59 moritz 327
20:59 moritz totally uscientific analysis :-)
20:59 moritz $ git grep --word shift src/core/|wc -l
20:59 moritz 133
21:01 jnthn Well, right at the start of SEQUENCE for one... :)
21:03 moritz the first 10 m-spectests pass now \o/
21:05 risou joined #perl6
21:05 masak \o/
21:06 amkrankruleuen joined #perl6
21:06 lizmat r: say Nil.foo  # suddenly realises a part of the spec not implemented yet
21:06 camelia rakudo-jvm 413650: OUTPUT«No such method 'foo' for invocant of type 'Nil'␤  in block  at /tmp/VBG4WTV5am:1␤  in any eval at gen/jvm/stage2/NQPHLL.nqp:1086␤  in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292␤  in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196␤  in any …»
21:06 camelia ..rakudo-parrot 413650: OUTPUT«No such method 'foo' for invocant of type 'Nil'␤  in block  at /tmp/CDsHvbvXD_:1␤  in any  at /tmp/CDsHvbvXD_:1␤  in any  at gen/parrot/stage2/NQPHLL.nqp:1146␤  in any eval at gen/parrot/stage2/NQPHLL.nqp:1133␤  in any evalfiles at gen/parrot/s…»
21:07 lizmat at least according to S02:508: "Any undefined method call
21:07 synopsebot Link: http://perlcabal.org/syn/S02.html#line_508
21:07 lizmat on C<Nil> returns C<Nil>, so that C<Nil> propagates down method
21:07 lizmat call chains."
21:09 ssutch joined #perl6
21:09 dalek rakudo/moar-support: f1ba138 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp:
21:09 dalek rakudo/moar-support: 'is copy' for array and hash params.
21:09 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/f1ba138ea4
21:10 lue lizmat: sounds like the perfect job for FALLBACK to me.
21:10 lizmat indeed, but that's NYI, no?
21:11 jnthn It's NYI, but you can still get at the functionality with .^add_fallback, which is what Failure does
21:12 lue The end of Day 9's post has a lovely demonstration of add_fallback: http://perl6advent.wordpress.com/2​013/12/09/day-09-hashes-and-pairs/
21:13 * lizmat remembers and ponders implementing FALLBACK, but not right now
21:17 dayangkun joined #perl6
21:17 timotimo good progress on moar again, i see! :D
21:18 moritz yes, patching faster than I can spectest :-)
21:18 timotimo on my laptop, it seems like rakudo-jvm won't compile the setting (which takes a whole lot longer than on my desktop anyway)
21:18 lizmat r: my $a is default(42); say $a.defined # shouldn't this need to say "False" ?
21:18 camelia rakudo-parrot 413650, rakudo-jvm 413650: OUTPUT«True␤»
21:18 moritz it can't be both 42 and undefined
21:19 moritz r: my $a is default(42); say $a
21:19 camelia rakudo-parrot 413650, rakudo-jvm 413650: OUTPUT«42␤»
21:19 lue .oO( my $a is default(42 but undefined); )
21:19 dalek nqp/jvm_interop_dispatchers2: 2d1935c | (Timo Paulssen)++ | src/vm/jvm/runtime/org/perl6/nq​p/runtime/BootJavaInterop.java:
21:19 dalek nqp/jvm_interop_dispatchers2: init inheritanceHiding and factor in method name.
21:19 dalek nqp/jvm_interop_dispatchers2: review: https://github.com/perl6/nqp/commit/2d1935cada
21:19 * moritz can't think of any value that's more defined than 42
21:19 timotimo hm, false alarm apparently. good.
21:20 timotimo this train waits for like 15 minutes at this station :\
21:23 jnthn timotimo: That's so when it gets delayed, there's a chance to catch up :P
21:26 timotimo interesting
21:26 timotimo now it's moving in the other direction
21:26 timotimo and i'm coding backwards
21:26 timotimo does that mean features i build get unimplemented when i push?
21:26 lizmat moritz/lue: I guess I was confusing it with :exists
21:36 lue Hm. So for a while I got segfaults at the end of the MVM setting step, then yesterday those cleared up somehow, and now I have a failure on Test.pm :/
21:39 * lue recompiles MVM and nqp-m with -g flags to get a more helpful gdb ...
21:46 lizmat gist of blog post in progress, comments welcome: https://gist.github.com/lizmat/8046770/raw/d9e8f4​08242717eca357d8a85fb7f03109c64538/gistfile1.txt
21:48 lue lizmat: two things: 1: "as we <a href=http://perl6advent.wordpress.com/2013​/12/02/day-02-the-humble-type-object/>in an earlier" --> I think you are a verb.
21:49 * lizmat gets out the saw
21:49 lizmat lue++
21:50 lue 2: You mention that (Any) is what the container defaults to if "nothing is specifically specified.", then move on to is default. I was thinking, perhaps mentioning that 'my Int $a' is another way of changing this before talking about is default would be helpful.
21:51 lue (lest people believe "is default" is the *only* mechanism to change this, is what I'm getting at.)
21:52 lizmat yes, I was thinking of mentioning that, just searching for a way to shoehorn that in
21:52 lizmat was thinking about *after* I also point out that specifying a default does not make elements in an array/hash exist
21:55 lue As long as your post doesn't end up implying that "is default" is the only (easy) way to change the default, I'm fine :) .
21:59 lizmat "is default" is the only way to change the default
21:59 lizmat the other way sets the type, which implies a default
22:02 lizmat lue: gist updated, does that address your worry ?
22:02 lue is my $a eqv. to my Any $a ?
22:02 lizmat afaik: yes
22:02 dalek rakudo-star-daily: c1c2e67 | coke++ | log/ (5 files):
22:02 dalek rakudo-star-daily: today (automated commit)
22:02 dalek rakudo-star-daily: review: https://github.com/coke/rakudo​-star-daily/commit/c1c2e67d92
22:02 lizmat unless jnthn has hidden some subtle difference somewhere
22:03 [Coke] r-m back down to 0 tests again.
22:03 jnthn Num, my $a is my Mu $a is default(Any) :)
22:03 jnthn [Coke]: Um, huh?
22:04 lue jnthn: there's a "my" trait? Huh. :)
22:06 lue lizmat: I wasn't thinking exactly right about what my Int $a does. So scratch my previous concerns about the "my Foo" way of setting the default, and replace it with a simple "make clear that the factory default is the type constraint" :)
22:07 lue lizmat: which your updated gist seems to do, so I'm fine :)
22:09 jnthn [Coke]: I'm guesing some kind of build failure?
22:11 lue [Coke]: would this perchance be the result of a segfaulting Test.pm compile?
22:13 timotimo jnthn: it seems like .getDeclaringClass on a method will invariably get me the class where the method is *defined*, i can't see a method that will give me the class that *implements* the method i have here
22:14 [Coke] jnthn: make: *** [CORE.setting.moarvm] Error 139
22:15 timotimo it seems for each method i have to klass.getMethod and see if it resolves to the right position
22:17 * [Coke] has a bit of time before he has to head out. want a bt?
22:17 [Coke] or is it one of nwc10++'s reported ones, do you think?
22:18 jnthn [Coke]: No idea...
22:18 [Coke] bt it is.
22:18 timotimo well, that at least makes my code simpler
22:19 [Coke] I'm at 722aa27 - should I pull?
22:19 jnthn [Coke]: Can always try. Been fixing/doing bits all day
22:19 [Coke] I'll just wipe and start over. one sec.
22:20 [Coke] oops. might want to do that in another directory to not screw up the daily run.
22:24 timotimo yay, my code seems to work! and shrinked down from about 60 or 80 lines to 4
22:27 dalek nqp/jvm_interop_dispatchers2: 204feb2 | (Timo Paulssen)++ | src/vm/jvm/runtime/org/perl6/nq​p/runtime/BootJavaInterop.java:
22:27 dalek nqp/jvm_interop_dispatchers2: shorter code, also working. pretty good improvement!
22:27 dalek nqp/jvm_interop_dispatchers2: review: https://github.com/perl6/nqp/commit/204feb22db
22:27 dalek rakudo/moar-support: 69860c8 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp:
22:27 dalek rakudo/moar-support: Implement post-constraints.
22:27 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/69860c8b69
22:27 jnthn timotimo++
22:27 jnthn I like short code and I cannot lie..
22:28 timotimo now methods that shouldn't be there aren't
22:29 * lizmat decides to only cover "is default" and Nil in this blogpost and forget about the other variable traits for now
22:33 wsri joined #perl6
22:35 * timotimo is not sure what to do next
22:36 timotimo i should be moving the code over to rakudo. i guess that's next
22:36 lizmat look at the spectest errors in S05/modifiers?
22:36 timotimo who, me?
22:37 lizmat well, you asked :-)
22:37 timotimo "immer der, der so dumm fragt" ;)
22:37 lizmat who me?  :-)
22:38 jnthn Phew, that was some wrapping... :)
22:38 timotimo now i'd like to build myself a moar, too
22:38 timotimo to see some spectests pass :)
22:40 dalek rakudo/moar-support: 5ec58d1 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp:
22:40 dalek rakudo/moar-support: Implement p6isbindable.
22:40 dalek rakudo/moar-support: review: https://github.com/rakudo/rakudo/commit/5ec58d1092
22:47 woolfy dwarring++ for http://perl6advent.wordpress.com/2013/12/18​/day-18-a-grammar-with-duplicate-checking/
22:47 woolfy Sweet example of (beginning of) games with Perl 6.
22:48 dalek nqp: d7f953d | (Arne Skjærholt)++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/ (2 files):
22:48 dalek nqp: Extract P6Opaque.ByteClassLoader to its own class.
22:48 dalek nqp:
22:48 dalek nqp: This is in preparation for CStruct support on JVM, which needs some of the
22:48 dalek nqp: same class generation infrastructure as P6Opaque.
22:48 dalek nqp: review: https://github.com/perl6/nqp/commit/d7f953dfdd
22:48 timotimo i get a segfault when trying to build m-BOOTSTRAP, does that come from --optimize=3?
22:49 diakopter woolfy: mberends & sorear made neat games on niecza
22:49 jnthn timotimo: That, or just bad luck...
22:49 woolfy diakopter: interesting, games like what?  Still playable?
22:50 diakopter tetris was the one I played; fun!
22:50 timotimo heh.
22:50 timotimo should i try to gdb it?
22:51 woolfy Ooh of the few games I ever played, tetris is one that I don't have to learn a lot of rules for and which is easy to play just for a couple of minutes.  Does it look nice?
22:53 timotimo run_gc -> gc_collect -> gc_root_add_gen2s_to_worklist -> gc_root_add_gen2s_to_worklist -> segfault
22:53 woolfy Question (after reading some stuff on the #amsterdam.pm channel): is it possible in Perl 6 to uninstall a previously installed module, in a reliable way that is not destructive for the Perl 6 installation?
22:53 timotimo i don't have any locals on the stack, though
22:54 woolfy (I would like to mention on #amsterdam.pm that it is possible in Perl 6, and reliable, and non-destructive)(non-destructive as in "shit, now I have to re-install Perl 6 from the ground up)
22:54 timotimo woolfy: i don't think there is one yet, but i guess since we have a database for module-owned files soon anyway, it would be easy to do (unless a module is stupid enough to overwrite files from another module)
22:55 woolfy Hmmm....  "(unless a module is stupid enough to overwrite files from another module)" means that people are able to overwrite files from another module and so are able to mess up the Perl 6 installation anyway.
22:55 timotimo the module could also have some BEGIN { shell "rm -rf /" } in them
22:55 woolfy timotimo: what do you mean with "i don't think there is one yet"
22:55 timotimo that would be pretty destructive, too
22:56 timotimo i don't think there's "panda uninstall"
22:56 timotimo i don't see a reason why it would never be there
22:56 woolfy timotimo: Ah.  History has shown repeatedly that an uninstall is desirable from a maintainer's point of view.
22:56 timotimo well, with less --optimize i get farther in the build
22:57 xenoterracide p: my Int ( $digit, $v ) = ( 0, -1 );
22:57 camelia rakudo-parrot 413650: ( no output )
22:57 timotimo if you're a maintainer, you're likely using a "real" package system like rpm or dpkg and then you get uninstall for free
22:57 woolfy Like what happened to me "oh shit, this is absolutely not what I want, I want to get rid of this pile of poo as soon as possible"
22:57 timotimo yeah
22:58 lue timotimo: o.o ... note to self, don't run modules under sudo :)
22:58 xenoterracide I don't know that I agree with that... I've uninstalled stuff for debugging purposes to great success
22:58 woolfy timotimo: uhuh, that is in my opinion the arrogant way of nerds to look at this: "if you are not able to use a real system like rpm or dpkg, than you should not mess with modules and do nothing with Perl 6..."
22:58 timotimo wow, moar does stage parse much faster than parrot does o_O
22:58 timotimo woolfy: that's not what i meant, though :)
22:59 woolfy timotimo: of course not, but that is what it boils down to at the end.
22:59 timotimo i think we should get an uninstallation command for panda
22:59 woolfy agreed
22:59 xenoterracide ++
22:59 * lue is genuinely afraid of triggering the heisenbug for panda again :/
23:00 lizmat agree with needing an uninstall feature
23:00 xenoterracide though tbh, I'm not generally in favor of using git to install packages, I think it's a bad idea
23:00 lizmat in Panda
23:00 jnthn timotimo: Much faster? I thought it was only a bit faster...
23:00 BenGoldberg joined #perl6
23:00 timotimo 83 instead of 100
23:00 xenoterracide and thus I could be in favor of not worrying about it until we have a p6PAN
23:00 woolfy lue: now is the time that design changes will have not that big of an impact on the user base.  The sooner this is changed and tested, the better.
23:00 jnthn Ah, that's a little bit :)
23:01 lue woolfy: of course, that was just a general lament. I'm about to have to reinstall panda anyway.
23:01 woolfy Poor lue!
23:01 lue moar goes through stage parse in about 1/2 the time of parrot (and jvm 1/6 the time of parrot), for me.
23:01 timotimo but i also segfault in Test.pm with --optimize=1
23:02 woolfy OK, anyway, I will not boast on #amsterdam.pm that it is possible (or even easy) in Perl 6 to reliably and non-destructive uninstall modules.
23:02 lue timotimo: I just tried recompiling moar and nqp with debug options to find the reason behind a Test.pm segfault, but it disappeared for me :/
23:02 timotimo :o
23:03 timotimo well, at least i have symbols in my bt full now.
23:03 woolfy After having several talks with mberends++ I am bugging lizmat every now and then that Perl 6 should have good a garbage collection system built in, so that memory usage will not explode like in Perl 5.
23:03 timotimo yeah, item is 0x1
23:04 woolfy Which is related in my eyes to being able to uninstall non-wanted unused modules.  Garbage has to go and should be possible and easy to do.
23:04 timotimo why would an item end up being 1?
23:04 timotimo it gets checked against null a few lines earlier, which doesn't trigger for comparing against 1
23:04 lue woolfy: sounds good. Incidentally I have a script here that explodes from ≈ 10-30% usage to ≈80% mem usage, at least with parrot.
23:04 xenoterracide woolfy: not sure what uninstalling modules has to do with memory...
23:05 xenoterracide unless your applications are loading modules just because they're there
23:05 woolfy I realise that this uninstalling modules is different from garbage collection.  But there's garbage in memory and garbage on diskspace and garbage in the installation.  I love to clean garbage.  Any garbage.
23:06 xenoterracide just OCD, I generally clean up that garbage these days by new brew, and destroy old brew
23:06 woolfy That said, tomorrow is garbage day...  I have to bring out the garbage.  (bring out your dead, bring out your dead)
23:06 lue our Any \garbage;
23:06 xenoterracide before a uninstall in panda a p6 brew would be nice
23:06 xenoterracide :D
23:07 xenoterracide (continues to think about trying to add rakudo to perlbrew
23:07 * lue idly wonders if the heisenbug with panda was perhaps a result of a terrible habit of not turning off the computer ever.
23:09 xenoterracide lue: if you're running on windows, then yes
23:09 xenoterracide windows has no reboot heisenbugs all the time
23:09 xenoterracide rarely seen it on linux
23:09 lue xenoterracide: nope, if you go in the backlog a few days back you'll see it was a painful wrangling with fork and ENOMEM
23:10 lue that was fixed by not seemingly doing anything
23:10 xenoterracide well it's possible, I'm just pointing out that kind of thing happens all the time on windows
23:10 * xenoterracide is convinced hibernation is a horrible idea
23:10 lue My actual suspicion is/was that forking in r-p gets amazingly terrible at times.
23:11 jnthn xenoterracide: Hm, seems the Windows machine I'm currently on has been up since 23rd August... :)
23:11 jnthn Nearly 4 months. :)
23:11 xenoterracide jnthn: does it goe into hibernation? the odds of strange errors increases by the number of times it hibernates
23:12 jnthn Well, it certainly sleeps...
23:12 jnthn Not sure if sleep == hibernate
23:12 lue .oO(When nighttime's the best time to compile stuff, when do you shut it off?)
23:12 timotimo jnthn: an idea how i can debug what's going wrong here? or should i recompile with --optimize=0 and try again?
23:13 rurban1 joined #perl6
23:13 jnthn timotimo: You could try that, but you're probably hitting one of the not-yet-fixed GC issues.
23:13 timotimo most probably, aye
23:13 timotimo yeah, i don't really think i'm the right person to do that :P
23:14 jnthn Well, nwc10++ has given us a very nice automated tool for hunting them... :)
23:14 * lue is potentially the person insane enough to at least try fixing GC bugs :P
23:14 rurban2 joined #perl6
23:16 timotimo right :)
23:16 xenoterracide jnthn: so I take it you never reboot the windows for patches?
23:17 jnthn xenoterracide: It's been pestering me about it for ages...grr.. :)
23:17 * jnthn should probably use Christmas break for the restart :)
23:20 lizmat final update of blog post in https://gist.github.com/lizmat/8046770
23:20 lizmat wordpressing it now
23:20 timotimo unoptimized moar takes 135s to parse
23:20 gdey joined #perl6
23:21 lue timotimo: this is on the better or worse computer?
23:21 cognominal joined #perl6
23:21 timotimo the better one. the one that takes 100s on parrot
23:22 lue Ah. For a second I was thinking "your worse computer seems to be doing a better job of things than my one computer" :)
23:22 timotimo hah, that would be cool
23:22 timotimo i'd love to have a laptop that performs better than my desktop :P
23:22 timotimo now i segfault in stage mbc, though :(
23:23 lue after the "stage mbc" appears, or just before?
23:23 timotimo oh, after
23:24 lue .oO(laptops are just the portable dumb terminals to your desktop, right?)
23:24 timotimo and when i hit make install again it dumps core when trying to build Test.pm
23:24 lue timotimo: FWIW I once had a segfault there too. That end-of-setting/Test.pm area of the r-m process has been volatile for me.
23:25 c1sung joined #perl6
23:26 timotimo it comes from garbage collecting stuff :(
23:26 timotimo item = 0x1
23:27 Ben_Goldberg joined #perl6
23:28 lue At least it's a (set of) random bug(s) we know specifics about :)
23:28 timotimo ig uess that means i'll have to continue work on jvm interop stuff for now :\
23:28 telex joined #perl6
23:29 timotimo yeah :\
23:31 timotimo everyone else can play and i have to work :(
23:32 lue try `gdb make` and then `make`, setting --debug on MVM's configure, etc. Those things have somehow made things work for me before. Not sure of the reliability of these methods :)
23:33 timotimo yeah, i've done --optimize=0
23:35 skids joined #perl6
23:35 rurban1 joined #perl6
23:36 dalek perl6-roast-data: 0c7dc9c | coke++ | / (4 files):
23:36 dalek perl6-roast-data: today (automated commit)
23:36 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/0c7dc9ce1e
23:41 timotimo aaw, 00.00%
23:41 [Coke] new failure on daily roast: make: *** [gen/moar/stage1/nqpmo.moarvm] Trace/BPT trap: 5
23:41 [Coke] (changed from the core setting segfault)
23:41 lizmat for those wordpress empowered among you, preview available on http://perl6advent.wordpress.​com/?p=2181&amp;preview=true
23:42 woolfy lizmat++ for het advent blog post...  just had a discussion about some Nil aspects. Difficult stuff, but damn interesting and I guess very useful.
23:42 lizmat scheduled to be published in ~20 minutes
23:47 * lizmat notes that there still are no takers for day 23 and 24  :-(
23:49 [Coke] if you're in there, when am I due? 21?
23:50 lizmat 21 Contract by signature - coke
23:50 lizmat indeed
23:50 [Coke] danke
23:51 jnthn Gotta set off to the airport in 5h or so, so gonna catch some sleep. Will be mostly offline for the next days, I suspect.
23:51 jnthn Have fun :)
23:51 jnthn 'night o/
23:51 lizmat gnight jnthn!
23:51 lizmat safe travels, enjoyable time!
23:51 lizmat masak for 22 A catalogue of operator types - masak
23:56 araujo joined #perl6
23:57 lue lizmat++ # blog post
23:57 lue lizmat: The second-to-last codeblock has a perl6-p instead of just perl6
23:58 lizmat fixed, lue++
23:58 timotimo lizmat++ # blog post
23:58 lue I kinda like using 'Nil' as a way of saying "this spot in the array should be just as undefined as when it started", the way it is, instead of a :delete synonym.
23:59 lue Though I suppose I could just assign the proper type from Array[type] :)
23:59 lizmat lue: but that's just it, it's *not* the same way as it started

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

Perl 6 | Reference Documentation | Rakudo