Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2015-09-15

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 timotimo ugexe: why the F would you do that? :)
00:02 ugexe i wouldnt. why would others? no idea. but they do
00:03 ugexe in the case of Archive::Zip it would create a zip file in one test, test the extraction in another, and so forth
00:03 flussence .oO( let's just give up and throw a makefile in the test directory! )
00:03 ugexe the 'green' test module solved it without adding a .prove type file
00:05 timotimo ugexe: also, i was talking about doing the tests inside a single file in parallel
00:06 ugexe ah, thats how green did it i think :)
00:07 larion joined #perl6
00:08 ugexe it requires you to be specific about it though, so you dont have say, 2 servers trying to listen on the same port
00:12 leont ugexe: are you aware of my TAP::Harness module?
00:13 telex joined #perl6
00:13 tokuhiro_ joined #perl6
00:20 telex joined #perl6
00:24 colomon joined #perl6
00:28 ShimmerFairy Hm, I'm quite surprised ≤ and ≥ don't exist in core, seems like it'd be nice (esp. since <= looks too much like a fatarrow for my taste :P)
00:39 ugexe also fwiw... s22: "All .t files in this directory, will be tested in alphabetical order, possibly in parallel."
00:56 colomon ShimmerFairy: they’re trivial to add as a module…
00:58 aborazmeh joined #perl6
00:58 aborazmeh joined #perl6
01:01 ShimmerFairy colomon: while true, I think a module for two quite obvious Unicode characters is a pretty ridiculous concept :)
01:06 skids ShimmerFairy: A module that adds lots of them, though...
01:12 dalek rakudo/nom: 55c1d9d | coke++ | docs/ (3 files):
01:12 dalek rakudo/nom: Prep for 2015.09 - Zürich
01:12 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/55c1d9d25e
01:16 dalek rakudo/nom: 36ac769 | ShimmerFairy++ | docs/ChangeLog:
01:16 dalek rakudo/nom: Add line about val() in ChangeLog
01:16 dalek rakudo/nom:
01:16 dalek rakudo/nom: I always meant to do this, but managed to forget :) .
01:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/36ac769f03
01:21 laouji joined #perl6
01:26 labster ShimmerFairy: actually ≤ and ≥ are present in Latin-1.  Even Parrot wouldn't hate it.
01:27 ShimmerFairy not that it matters, but that is an interesting point :)
01:28 ShimmerFairy (we used to use strings like "\x????" to work around Parrot's issues on that, and I at least would staunchly refuse reinstating that if Parrot support is ever resurrected)
01:28 khw joined #perl6
01:35 labster I think we're past the whole stage of adapting the language to suit the compilers.  And on a more important note, any user code was similarly slowed, and that's the kind of issue that would need to be solved before anyone adopted the VM anyway.
01:40 ShimmerFairy labster: oh, I didn't know user code was affected too, though I suppose it's the kind of thing only noticeable in CORE.setting, probably the largest P6 program by far :P
01:41 labster exactly.
01:45 labster m: my $a = 0.9999999999999999999999; say $a; my $b = $a.numerator/ $a.denominator; $b.say; $b.WHAT.say;
01:45 camelia rakudo-moar 86ddca: OUTPUT«0.10␤1␤(Num)␤»
01:45 ShimmerFairy And yes, I'd agree we're past adapting to compilers (except for a couple #? lines in Actions.nqp). Probably helps that our two current VMs are either more closely tied to P6 than Parrot was, or relatively far more mature compared to Moar and Parrot :P
01:45 Ben_Goldberg joined #perl6
01:45 aborazmeh joined #perl6
01:45 aborazmeh joined #perl6
01:46 labster JS is tied to P6?  I always thought use strict; tied it to Perl 5.  :P
01:47 Ben_Goldberg joined #perl6
01:47 ShimmerFairy two current in-master/nom VMs, I meant :P
01:55 dayangkun joined #perl6
02:05 dalek doc: 4693476 | coke++ | / (2 files):
02:05 dalek doc: Only write out needed docs.
02:05 dalek doc:
02:05 dalek doc: When generating a very sparse copy of the site, this avoids
02:05 dalek doc: trying to generate data that doesn't exist.
02:05 dalek doc: review: https://github.com/perl6/doc/commit/4693476c8a
02:16 dalek doc: c0667e2 | coke++ | htmlify.p6:
02:16 dalek doc: fix generated JS for search; track GLR change
02:16 dalek doc: review: https://github.com/perl6/doc/commit/c0667e24ba
02:16 [Coke] ^^ that should unbust search.
02:33 abaugher joined #perl6
02:40 colomon is MAIN very very broken wrt slurpy arrays?
02:40 colomon oh, nope, it’s my code that’s the problem.
02:42 * colomon ’s code for hacking @*ARGS was very broken under GLR
02:47 colomon ssh: Could not resolve hostname github.com: nodename nor servname provided, or not known  :(
02:52 noganex joined #perl6
02:54 [Coke] Just ran a very long --profile... get a runtime JS error opening the file.
02:55 [Coke] Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.2.21/$inje​ctor/modulerr?p0=moarProfApp&amp;p1=Err…gleapis.com%2Fajax%2Flibs%2Fangularjs​%2F1.2.21%2Fangular.min.js%3A18%3A277)
03:00 TimToady labster: what makes you think ≤ and ≥ are in Latin-1?
03:02 kaare_ joined #perl6
03:07 ShimmerFairy A first try at adding ≤ and ≥ caused weird undeclared symbol errors (on a bunch of subs and other terms), so I'll have to try again later :)
03:09 raiph joined #perl6
03:09 orbus joined #perl6
03:11 telex joined #perl6
03:11 ShimmerFairy TimToady: thinking about ≤ and ≥ got me thinking about aliasing operators again. My two thoughts atm are either  sub infix:«<=»:«≤»  (that is, stacking nameless colonpairs), or  sub infix:«≤»:texas«<=»  (having a named colonpair)
03:12 telex joined #perl6
03:13 [Coke] .tell dha looks like search is working again
03:13 yoleaux [Coke]: I'll pass your message to dha.
03:13 * [Coke] zzz
03:15 colomon joined #perl6
03:16 eternaleye joined #perl6
03:17 ShimmerFairy Worth noting that the stacked nameless colonpair thing parses in rakudo, and even takes the first nameless as it usually does, it just doesn't do anything with subsequent ones :P
03:20 ShimmerFairy (the idea, for those who don't know, is that you can then define your own multis on ≤ or <= without worrying about which one is the "correct" one to overload)
03:20 TimToady would be better to have some way of adding on, so that modules can add aliases
03:21 ShimmerFairy true, and I wonder if that would be useful for subs in general
03:21 labster TimToady: I was looking at http://www.asciitable.com/ and saw ≤ ... apparently that isn't Latin-1, still trying to figure out what encoding that is.
03:22 ShimmerFairy .oO( alias infix:«>=» of infix:<≥>; # perhaps an AliasHOW too, depending? )
03:25 labster Apparently Mac OS Roman had ≤≥, but at different codepoints.  Anyway, I think I just learned not to use that website.
03:25 ShimmerFairy Although that might be uncomfortably close to =alias (or alternately just fine, I'm not sure)
03:27 ShimmerFairy labster: I'd recommend only looking up ASCII for codepoints under 0x80; after that you're better off searching for the specific extra encoding instead :)
03:30 isacloud joined #perl6
03:31 ShimmerFairy Could also be  synonym infix:«>=» of infix:<≥>  , which would keep with the somewhat-linguistic nature of Perl 6 :)  (and thinking of it, I like 'synonym' better. Perhaps because 'alias' is a bit too generic to clearly state its purpose)
03:31 khw joined #perl6
03:41 prevost joined #perl6
03:46 thou joined #perl6
03:48 aindilis` joined #perl6
03:54 araujo joined #perl6
03:57 khw joined #perl6
04:12 skarn joined #perl6
04:16 lolisa joined #perl6
04:19 labster for 1..30 -> $i { my $x = ('0.' ~ '9' x $i).Rat; say $x.WHAT.gist eq ($x.numerator/$x.denominator).WHAT.gist }
04:19 labster m: for 1..30 -> $i { my $x = ('0.' ~ '9' x $i).Rat; say $x.WHAT.gist eq ($x.numerator/$x.denominator).WHAT.gist }
04:19 camelia rakudo-moar 36ac76: OUTPUT«True␤True␤True␤True␤True␤True␤True␤T​rue␤True␤True␤True␤True␤True␤True␤True␤True​␤True␤True␤True␤False␤False␤False␤False␤Fal​se␤False␤False␤False␤False␤False␤False␤»
04:20 labster Not sure why type is changing there.
04:20 ShimmerFairy Rats change to Num if they overflow
04:20 labster Why would it overflow if it's dividing numerator by denominator?
04:21 labster It fit in a Rat before.
04:26 rmgk_ joined #perl6
04:27 ShimmerFairy labster: my guess is because Rat is still mis-defined as having an Int denominator instead of a UInt64 like it should, so a bare construction of a Rat lets you get away with bad values. (Just a guess, no clue if that's really the case)
04:45 dalek rakudo/nom: cbb8de3 | ShimmerFairy++ | src/Perl6/ (2 files):
04:45 dalek rakudo/nom: Support comments in qqww lists
04:45 dalek rakudo/nom:
04:45 dalek rakudo/nom: Also takes care of some smart quotes that were parsed for ww but weren't
04:45 dalek rakudo/nom: subsequently handled in the Actions (so «1 “2 3” 4» would drop the
04:45 dalek rakudo/nom: middle item). There don't currently seem to be any tests for this
04:45 dalek rakudo/nom: though.
04:45 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/cbb8de3f67
04:47 dalek roast: 100f141 | ShimmerFairy++ | S02-literals/quoting.t:
04:47 dalek roast: Un-TODO tests on comments in quotewords.
04:47 dalek roast:
04:47 dalek roast: Also fixes the syntax; these tests accidentally tried #' instead of #`.
04:47 dalek roast: review: https://github.com/perl6/roast/commit/100f141a21
04:52 dalek roast: 5692656 | ShimmerFairy++ | S02-literals/quoting.t:
04:52 dalek roast: Fix some wrong quoting.t tests
04:52 dalek roast:
04:52 dalek roast: I'm not sure when those zen slices were ever supposed to be magically
04:52 dalek roast: removed by quoting constructs that don't otherwise recognize those kinds
04:52 dalek roast: of variables. And I can only hope that the qww test was supposed to be
04:52 dalek roast: qqww, since nothing about ww implies variable interpolation.
04:52 dalek roast:
04:52 dalek roast: With this, quoting.t is no longer fudged for rakudo :) .
04:52 dalek roast: review: https://github.com/perl6/roast/commit/5692656e72
04:54 dalek roast: 4f3e528 | ShimmerFairy++ | S02-literals/quoting.t:
04:54 dalek roast: Minor test message correction.
04:54 dalek roast: review: https://github.com/perl6/roast/commit/4f3e528033
05:43 [Sno] joined #perl6
05:50 dalek rakudo/nom: bbf39d7 | skids++ | src/core/Any.pm:
05:50 dalek rakudo/nom: Do not mention a specific postcircumfix in error. (fix for RT#125504)
05:50 dalek rakudo/nom:
05:50 dalek rakudo/nom: Also, nag if someone makes an Associative that isn't associative.
05:50 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/bbf39d7e01
05:50 dalek rakudo/nom: d283300 | lizmat++ | src/core/Any.pm:
05:50 dalek rakudo/nom: Merge pull request #531 from skids/lta_errors
05:50 dalek rakudo/nom:
05:50 dalek rakudo/nom: Do not mention a specific postcircumfix in error. (fix for RT#125504)
05:50 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d283300ceb
05:55 domidumont joined #perl6
06:00 domidumont joined #perl6
06:05 domidumont joined #perl6
06:06 rurban joined #perl6
06:10 dalek roast: 470cb7c | lizmat++ | S02-types/list.t:
06:10 dalek roast: X::Immutable on List.push/pop/shift/unshift
06:10 dalek roast: review: https://github.com/perl6/roast/commit/470cb7c024
06:11 diana_olhovik joined #perl6
06:21 FROGGS joined #perl6
06:23 dalek rakudo/nom: 7931a2c | ShimmerFairy++ | src/core/allomorphs.pm:
06:23 dalek rakudo/nom: Change back allomorphic .perl & .gist
06:23 dalek rakudo/nom:
06:23 dalek rakudo/nom: After thinking about it for a while, I decided to change back the .gist
06:23 dalek rakudo/nom: and .perl methods for the allomorphic types to how they were originally.
06:23 dalek rakudo/nom: We really need .gist to show that you're dealing with an allomorphic
06:23 dalek rakudo/nom: type, and so it prints the use of val(), since that's the most succinct
06:23 dalek rakudo/nom: way I know of to do it.
06:23 dalek rakudo/nom:
06:23 dalek rakudo/nom: The .perl method shows how to construct the object via .new, since I
06:23 dalek rakudo/nom: figure .perl is more about the object itself than whatever uses it. And
06:23 dalek rakudo/nom: considering the allomorphic types are meant to be user-facing (esp. if
06:23 dalek rakudo/nom: you use something like MAIN), I don't think it's so terrible to show it
06:23 dalek rakudo/nom: for .perl.
06:23 dalek rakudo/nom:
06:23 dalek rakudo/nom: For neither method is using quotewords syntax (<> and «») appropriate;
06:23 dalek rakudo/nom: not all uses of val() are through those quoting syntaxes, and those uses
06:23 dalek rakudo/nom: of val() with leading/trailing whitespace would lead to an incorrect
06:23 dalek rakudo/nom: .perl previously. If we wanted to use quoting syntax for either or both
06:23 dalek rakudo/nom: of these methods, it'd have to be a representation using q:v[] or
06:23 dalek rakudo/nom: similar.
06:23 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7931a2c366
06:24 espadrine joined #perl6
06:25 laouji joined #perl6
06:26 FROGGS .tell patrickz https://github.com/MoarVM/dyncall/pull/2
06:26 yoleaux FROGGS: I'll pass your message to patrickz.
06:26 moritz ShimmerFairy: fwiw there's an entry for val() in docs/ROADMAP
06:26 ShimmerFairy ah, I should probably take care of that too :)
06:26 moritz ShimmerFairy: when you're done with allomorphs, please remoe that
06:27 moritz or even now, when you think it's done enough :-)
06:28 ShimmerFairy moritz: the only big things left are Version literals (which shouldn't be too hard to make a VersionStr), and enums (which... how? o_o), as alluded to in one part of S02
06:30 ShimmerFairy S02:3862 to be precise
06:33 moritz well, the idea behind val() was that it taps into the compiler
06:33 moritz parsing a specific subset of Perl 6
06:33 moritz and that could include constants and enums
06:34 lizmat m: say (a => 42).perl   # ShimmerFairy
06:34 camelia rakudo-moar d28330: OUTPUT«:a(42)␤»
06:34 dalek rakudo/nom: 5daff4c | ShimmerFairy++ | docs/ROADMAP:
06:34 dalek rakudo/nom: Remove val() from ROADMAP
06:34 dalek rakudo/nom:
06:34 dalek rakudo/nom: val() is pretty much done now, with only a couple spots (versions and
06:34 dalek rakudo/nom: enums) left to consider. But the majority of it has been dealt with.
06:34 dalek rakudo/nom:
06:34 dalek rakudo/nom: (Also cleaned up an outdated reference to :T)
06:34 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5daff4ce8d
06:34 lizmat ShimmerFairy: disagree with your reasoning re 7931a2c
06:35 thou joined #perl6
06:35 _mg_ joined #perl6
06:35 lizmat note that (a=>42).perl doesn't show a fat comma either
06:35 ShimmerFairy lizmat: not every type shows an object.new in .perl of course, I just think that IntStr and friends are complex enough to warrant showing a .new like other not-simple objects.
06:36 lizmat weren't they made to make life simpler
06:36 lizmat anyway, I've said what I wanted to say, letting TimToady decide on the matter
06:37 ShimmerFairy Yes, but that doesn't make them simple themselves :)
06:38 lizmat but do we need to bother users about this lack of simplicity ?
06:39 ShimmerFairy moritz: parsing valid enums would be interesting, but the far more interesting part is what an EnumStr could be, since enums are of an entirely different knowhow altogether.
06:39 lizmat isn't Perl 6 about torturing core developers so that users of the language have it easier ?
06:39 CQ joined #perl6
06:39 ShimmerFairy lizmat: why not? I don't think .perl is the place to be so concerned about being 100% user-friendly, but that may be just me :)
06:40 ShimmerFairy After all, .perl is supposed to give you valid P6 code (as best as it can, in the case of Code objects and such), so I don't think there's any particular "too complex" standard there.
06:41 lizmat well, whatever, breakfast now&
06:42 brrt joined #perl6
06:42 ShimmerFairy (As an example, I pretty much always find Match.perl output unhelpful for seeing what's going on, but then again that's not what .perl is for, but rather .gist ☺)
06:48 moritz ideas for how to make Match.perl more friendly (while still round-tripping) are very welcome :-)
06:48 TimToady we go to some pains to simplify .perl output on things like :{} and such
07:05 zakharyas joined #perl6
07:09 araujo joined #perl6
07:09 araujo joined #perl6
07:10 moritz the real trouble wit Match.perl is that it needs to contain the .orig string
07:10 moritz which can be quite big
07:10 CQ What's the best way to get a post-glr perl6 to play with? I don't want bleeding edge, leading edge is fine
07:10 moritz and obscures the actual matched string
07:10 moritz CQ: rakudobrew build nom
07:10 FROGGS moritz: we could always auto-gist huge strings and refer to the gist url :o)
07:16 CQ moritz: Building Rakudo with backend 'nom' is NYI. Well volunteered! ... suggestions? :)
07:17 jack_rabbit joined #perl6
07:20 ShimmerFairy joined #perl6
07:26 cdc CQ: there's no post GLR release yet, that means you have to play with the cutting edge.  "rakudobrew build moar", then "rakudobrew rehash" (assuming you are using the latest revision of rakudobrew).
07:26 abraxxa joined #perl6
07:28 moritz ah yes, sorry, 'moar' not 'nom'
07:38 nine CQ: bleeding edge really is not that bad. There's no special process for stabilizing a release, so really the a typical release is mostly missing bugfixes that are already in git ;)
07:44 lizmat commute&
08:05 leont joined #perl6
08:10 CQ Rakudo has been built and installed.; Switching to moar-nom; Done, moar-nom built ...thanks!
08:11 dakkar joined #perl6
08:14 brrt joined #perl6
08:17 ShimmerFairy fwiw I wouldn't mind a different .perl on the allomorphic types, I'd just appreciate if it were different from .gist (which may mean using q:v somewhere). I will however stay firm on making .gist show it's an allomorphic type, and in not using <>/«» in those methods' strings :)
08:17 g4 joined #perl6
08:19 pmurias joined #perl6
08:19 pmurias hi
08:19 yoleaux 14 Sep 2015 16:56Z <hoelzro> pmurias: should I go ahead and complete that merge tonight?
08:19 pmurias hoelzro: yes
08:21 rindolf joined #perl6
08:21 jnthn .gist on the allomorphic types really should just give their Str representation like .gist on a Str does
08:21 jnthn sub MAIN($filename) { say $filename; } # suddenly, when you invoke it with a numeric filename, the output will look weird
08:22 patrickz joined #perl6
08:23 thou joined #perl6
08:23 jnthn I don't want those kind of gotchas. Allomorphs are there to help get dispatch decisions right, and so make things easier, not to make things unpredictable.
08:25 patrickz .tell FROGGS: Thanks!
08:25 yoleaux 06:26Z <FROGGS> patrickz: https://github.com/MoarVM/dyncall/pull/2
08:25 yoleaux patrickz: What kind of a name is "FROGGS:"?!
08:25 patrickz .tell FROGGS Thanks!
08:25 yoleaux patrickz: I'll pass your message to FROGGS.
08:25 jnthn yoleaux is the opposite of Larry: totally doesn't get the colon... :P
08:26 FROGGS :D
08:26 yoleaux 08:25Z <patrickz> FROGGS: Thanks!
08:27 patrickz FROGGS: Dyncall seems to have moved to HG. I suspect the SVN is out of sync.
08:28 FROGGS hmmm
08:28 patrickz If the MoarVM dyncall is meant to stay up to date with upstream that might be the reason for last commit in march...
08:28 FROGGS patrickz: are there any changes upstream?
08:28 patrickz Yes
08:28 patrickz quite some
08:28 patrickz last 8 days ago
08:28 FROGGS ohh cool
08:28 patrickz http://hg.dyncall.org/pub/dyncall/dyncall
08:29 FROGGS \o/ they're finally doing a release
08:30 jnthn \o/
08:30 pmurias hoelzro: I'll try to do that myself, the only thing missing is a memory bug fix/workaround to get a test to run on moar
08:31 leont Hmmm, is seems actions are even called on <.rule>s, is this intentional?
08:31 ShimmerFairy jnthn: I can see your point, though I don't think purely-numerical filenames are that common :P . I still would prefer .gist being more informative (since I find an allomorphic posing as any other ordinary string in a .gist misleading)
08:31 FROGGS patrickz: can you please file a dyncall issue in our repo with the new url?
08:32 FROGGS patrickz: perhaps JimmyZ can pull in the commitsfrom the new repository location
08:32 jnthn leont: Yes, . means "don't capture"
08:32 patrickz will do (after $dayjob)
08:32 jnthn And is a property of the caller, not the callee
08:33 ShimmerFairy jnthn: We _could_ get rid of the allomorphic say/note candidates, and go back to when I had to use .gist to actually get the proper gist, though I imagine creating a disparity between .gist and &say output like that isn't preferable :P
08:33 leont Hmmm, it doesn't seem useful to me, but sure
08:34 patrickz FROGGS: Did that build issue PR found its way to upstream dyncall?
08:34 jnthn leont: Action methods can have side-effects (and indeed have plenty in the Perl 6 parser)
08:34 jdv79 how is a gist of val("123") better than 123?
08:34 ShimmerFairy leont: I can easily imagine an uncaptured thing's action method setting a contextual that's needed later on, regardless of capture (since action methods aren't _just_ about 'make', it's not exactly easy to figure if calling it would be useless on an uncaptured thing ☺)
08:35 jnthn ShimmerFairy: I don't see why we need extra candidates
08:35 jdv79 if i want more than a gist that's what .perl is for.
08:35 ShimmerFairy jdv79: because posing as just a string when it's actually two things is misleading to me.
08:35 jnthn ShimmerFairy: The candidate for a Str (any subclass of) in say/note should just nqp::unbox_s(...)
08:35 dalek nqp/js-merge-wip: 5926ead | (Pawel Murias)++ | tools/build/gen-js-makefile-parrot.nqp:
08:35 dalek nqp/js-merge-wip: Remove old script for cross-compiling the js backend on parrot.
08:35 dalek nqp/js-merge-wip: review: https://github.com/perl6/nqp/commit/5926ead009
08:35 dalek nqp/js-merge-wip: bb10638 | (Pawel Murias)++ | HACKING:
08:35 dalek nqp/js-merge-wip: move the HACKING file to docs, and add a -js suffix to it
08:35 dalek nqp/js-merge-wip: review: https://github.com/perl6/nqp/commit/bb10638034
08:35 leont Right, that sounds reasonable
08:35 jdv79 a bunch of things have "lossy" gists.  that's part of the point.
08:36 nine It's a gist after all, not the director's cut.
08:37 ShimmerFairy jnthn: There are say/note candidates in allomorphs.pm so that they could get the .gists properly. (They're not with the others because it's too early then)
08:37 ShimmerFairy "lossy" ≠ misleading, though
08:37 jnthn m: say 42.4
08:37 camelia rakudo-moar 5daff4: OUTPUT«42.4␤»
08:37 jnthn That doesn't scream "OMG I AIN'T A STRING!" when we print it :P
08:38 jnthn Well, say it, but doesn't on print either :)
08:38 jdv79 taking a gist to be a source of authoratative truth would be a mistake
08:38 jdv79 that's not a "gist";)
08:38 jnthn ShimmerFairy: Looking at the extra candidates in allomorphs.pm only makes me more sure I'm right. :)
08:39 jnthn Needing those is decidedly a design smell.
08:39 FROGGS patrickz: does not look like
08:39 ShimmerFairy jnthn: that's true (I had a feeling someone was going to pull that one out :P), I just think that the allomorphic types warrant a gist that clues you in on what's happening.
08:39 ShimmerFairy jnthn: I agree it's a design smell, but I think it's because there shouldn't be a .gist-avoiding 'say' candidate in the first place :P
08:42 ShimmerFairy I didn't put in a lot of things with explicit allomorphic candidates, I did it for 'say' and 'note' because I figured those printing functions warranted accurate representation of the allomorphic object itself, and not picking one of its two sides.
08:43 jnthn ShimmerFairy: As already noted, the point of say/note isn't accurate representation, but human-friendly representation
08:44 ShimmerFairy (also, again, to get around the fact that the Str candidates on say and note avoid .gist, which I would consider a bug (even if you disagree for allomorphs, it's still a bug waiting to happen))
08:45 jnthn Anyway, not going to spend any longer on this, for one 'cus it's TimToady++'s call, and for two if it's delegated back to me I already made my mind up. :)
08:45 jnthn pmurias: I can reproduce that SEGV you found yesterday locally
08:48 pmurias jnthn: it was a realloc got an invalid size for me
08:48 jnthn pmurias: Yowser, it explodes in the MAST -> bytecode compiler
08:48 jnthn That's a new one...
08:49 pmurias and for me it passes if I write the mbc to disk
08:49 jnthn Doing a debug build at the moment to try and get a better location out of valgrind :)
08:51 jnthn pmurias: Seems we write past the end of a buffer, and that's the real issue; the realloc exploding is probably a consequence of the corruption
08:51 cognominal joined #perl6
08:51 araujo joined #perl6
08:53 patrickz FROGGS: Last time you just wrote them an email, right?
08:53 darutoko joined #perl6
08:53 patrickz I can do that...
08:53 FROGGS patrickz: I didn't
08:53 jnthn Ah, it looks like an accident when labeled exception handlers were added.
08:55 * pmurias is glad it turned out a normal bug rather than some weird gc freak accident as he expected
08:55 patrickz FROGGS: There is a commit in upstream dyncall referencing to you. ;-)
08:56 domm joined #perl6
08:57 FROGGS patrickz: yes, but that's abuot something else, not the cast problem what the issue #2 was about
08:57 domm joined #perl6
08:58 domm joined #perl6
08:58 patrickz FROGGS: I'm asking because they don't give any hints on their webpage how to propose pull requests. So that past commit came to them via email? If yes I'll also just email them this current PR.
08:59 domm joined #perl6
08:59 FROGGS patrickz: yes, I just emailed them a diff
08:59 domm joined #perl6
09:00 patrickz ok, will do the same.
09:00 larion joined #perl6
09:00 domm joined #perl6
09:14 rindolf joined #perl6
09:19 jnthn pmurias: SEGV fixed in HEAD; thanks for reporting. Will you include the test file in question in the merge, so we have this covered?
09:24 ][Sno][ joined #perl6
09:25 Woodi joined #perl6
09:25 pmurias jnthn: yes
09:30 jnthn pmurias: OK, great. Please can you close the issue once that's done?
09:31 pmurias MOAR_REVISION should contain a revision sha and the date from where it's from?
09:32 dalek roast: b8bcb2c | jnthn++ | S17-lowlevel/lock.t:
09:32 dalek roast: Test covering RT #125705.
09:32 dalek roast: review: https://github.com/perl6/roast/commit/b8bcb2cb3f
09:33 jnthn pmurias: Just run "git describe" in the MoarVM repo
09:33 jnthn (after pulling)
09:33 jnthn And put the result into that file
09:36 jnthn .tell lizmat if you're reliably seeing S17-supply/start.t passing now, then maybe https://rt.perl.org/Ticket/Display.html?id=125460 can be closed... I've not seen it fail since my recent fixes in Moar.
09:36 yoleaux jnthn: I'll pass your message to lizmat.
09:36 pmurias jnthn: thanks
09:40 telex joined #perl6
09:42 jnthn pmurias: Thanks for reporting it; it could easily have cropped up in Rakudo as well as NQP :)
09:42 jnthn So very happy to have it fixed
09:43 jnthn Also happy that https://rt.perl.org/Ticket/Display.html?id=125161 is no longer explosive :)
09:44 dalek roast: 1b3acbf | jnthn++ | S17-promise/start.t:
09:44 dalek roast: Test covering RT #125161.
09:44 dalek roast: review: https://github.com/perl6/roast/commit/1b3acbf058
09:46 itz joined #perl6
09:46 itz o/
09:46 jnthn And now we're down to 1020
09:48 dalek Heuristic branch merge: pushed 511 commits to nqp by pmurias
09:49 pmurias hoelzro: the js backend has been merged in
09:49 jnthn pmurias++ hoelzro++
09:52 pmurias joined #perl6
09:56 JimmyZ joined #perl6
09:59 jdv79 what was this recent invocation data race?
10:02 mprelude joined #perl6
10:02 andreoss joined #perl6
10:02 jdv79 113c3b5?
10:02 dalek nqp: b5d7db9 | (Pawel Murias)++ | tools/build/process-qregex-tests:
10:02 dalek nqp: Run passing rx_quantifiers test
10:02 dalek nqp: review: https://github.com/perl6/nqp/commit/b5d7db9a93
10:02 dalek nqp: f19a35e | (Pawel Murias)++ | src/vm/js/QAST/Compiler.nqp:
10:02 dalek nqp: Add a hack so that ifnull returns true on undefined.
10:03 pmurias hoelzro: the js backend is now fully merged in
10:03 dalek joined #perl6
10:03 JimmyZ \o
10:04 andreoss m: say ([1,2,3] Z+^ ([1,2,3] xx *)
10:04 camelia rakudo-moar 5daff4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/sB2AOGiyzB␤Unable to parse expression in parenthesized expression; couldn't find final ')' ␤at /tmp/sB2AOGiyzB:1␤------> 3say ([1,2,3] Z+^ ([1,2,3] xx *)7⏏5<EOL>␤    expecting any of:␤        st…»
10:04 andreoss m: say ([1,2,3] Z+^ ([1,2,3] xx *))
10:04 camelia rakudo-moar 5daff4: OUTPUT«(2 1 0)␤»
10:04 andreoss m: say ([1,2,3] Z+^ flat([1,2,3] xx *))
10:04 camelia rakudo-moar 5daff4: OUTPUT«(0 0 0)␤»
10:05 andreoss m: say ([1] ^+ [1])
10:05 camelia rakudo-moar 5daff4: OUTPUT«one([1], 1)␤»
10:05 andreoss m: say ([1] +^ [1])
10:05 camelia rakudo-moar 5daff4: OUTPUT«0␤»
10:06 andreoss why should +^ work with Positionals?
10:07 ShimmerFairy nope, +^ is for numeric stuff, closest to what you want is ~^ for Bufs
10:07 psch m: &infix:<+^>.candidates>>.signature.say
10:07 camelia rakudo-moar 5daff4: OUTPUT«(() ($x) ($x, $y) (Int:D \a, Int:D \b) (int $a, int $b))␤»
10:07 psch the fitting cand is the 4th
10:07 psch m: say [1,2,3] ~~ Int
10:07 camelia rakudo-moar 5daff4: OUTPUT«False␤»
10:08 ShimmerFairy andreoss: oh, I didn't read the "should". +^ coerces to Numeric, and +@array -> @array.elems
10:08 psch m: say ([1,2,3]).^can('Int')
10:08 camelia rakudo-moar 5daff4: OUTPUT«(Int Int)␤»
10:08 psch also, g'morn #perl6 o/
10:11 thou joined #perl6
10:29 Andrie joined #perl6
10:32 [Tux] joined #perl6
10:32 andreoss m: ([1], -> @p { [0, @p Z+ @p, 0] } ... *)[^5].perl.say
10:32 camelia rakudo-moar 5daff4: OUTPUT«===SORRY!===␤Type check failed in binding @p; expected 'Positional' but got 'Int'␤»
10:35 timotimo o/
10:35 psch o/ timotimo
10:39 andreoss m: ([1], [1], [1] ... *)[^3].say.perl
10:39 camelia rakudo-moar 5daff4: OUTPUT«(1 1 1)␤»
10:39 FROGGS \o/
10:39 FROGGS js in master!
10:39 timotimo why .say.perl?
10:39 andreoss m: ([1], [1], [1] ... *)[^3].perl.say
10:39 camelia rakudo-moar 5daff4: OUTPUT«(1, 1, 1)␤»
10:41 psch m: ([1], -> *@p { [0, @p Z+ @p, 0] } ... *)[^5].perl.say # vOv
10:41 camelia rakudo-moar 5daff4: OUTPUT«(1, 1, 1, 3, 3)␤»
10:41 psch i *think* i found a pattern why that weird BagHash set op things throws the CME...
10:41 psch s/things/thing/
10:41 andreoss it should generate pascal's triangles
10:42 psch it seems to happen whenever not all elements are in the intersection...
10:42 xfix joined #perl6
10:42 timotimo m: ([1], -> *@p { $[0, @p Z+ @p, 0] } ... *)[^5].perl.say
10:42 camelia rakudo-moar 5daff4: OUTPUT«(1, $[1, 1], $[2, 2], $[3, 3], $[4, 4])␤»
10:42 timotimo oh
10:43 timotimo m: ([1], -> *@p { $[(0, |@p) Z+ (|@p, 0)] } ... *)[^5].perl.say
10:43 camelia rakudo-moar 5daff4: OUTPUT«(1, $[1, 1], $[1, 3, 2], $[1, 3, 5, 3], $[1, 3, 5, 7, 4])␤»
10:43 timotimo almost! :)
10:43 timotimo m: ([1], -> *@p { $[|(0, |@p) Z+ |(|@p, 0)] } ... *)[^5].perl.say
10:43 camelia rakudo-moar 5daff4: OUTPUT«(1, $[1, 1], $[1, 3, 2], $[1, 3, 5, 3], $[1, 3, 5, 7, 4])␤»
10:43 timotimo m(
10:43 timotimo m: ([1], -> *@p { @p.perl.say; $[|(0, |@p) Z+ |(|@p, 0)] } ... *)[^5].perl.say
10:43 camelia rakudo-moar 5daff4: OUTPUT«[1]␤[1, [1, 1]]␤[1, [1, 1], [1, 3, 2]]␤[1, [1, 1], [1, 3, 2], [1, 3, 5, 3]]␤(1, $[1, 1], $[1, 3, 2], $[1, 3, 5, 3], $[1, 3, 5, 7, 4])␤»
10:43 timotimo ah, i see
10:44 timotimo m: ([1], -> @p { $[|(0, |@p) Z+ |(|@p, 0)] } ... *)[^5].perl.say
10:44 camelia rakudo-moar 5daff4: OUTPUT«===SORRY!===␤Type check failed in binding @p; expected 'Positional' but got 'Int'␤»
10:44 timotimo m: ($[1], -> @p { $[|(0, |@p) Z+ |(|@p, 0)] } ... *)[^5].perl.say
10:44 camelia rakudo-moar 5daff4: OUTPUT«($[1], $[1, 1], $[1, 2, 1], $[1, 3, 3, 1], $[1, 4, 6, 4, 1])␤»
10:44 timotimo m: ($[1], -> @p { $[(0, |@p) Z+ (|@p, 0)] } ... *)[^5].perl.say
10:44 camelia rakudo-moar 5daff4: OUTPUT«($[1], $[1, 1], $[1, 2, 1], $[1, 3, 3, 1], $[1, 4, 6, 4, 1])␤»
10:44 timotimo m: ($[1], -> @p { $[(0, @p) Z+ (@p, 0)] } ... *)[^5].perl.say
10:44 camelia rakudo-moar 5daff4: OUTPUT«($[1], $[1, 1], $[2, 2], $[2, 2], $[2, 2])␤»
10:44 timotimo so that | is the only one needed
10:44 timotimo m: ($[1], -> @p { $[0, |@p Z+ |@p, 0] } ... *)[^5].perl.say
10:44 camelia rakudo-moar 5daff4: OUTPUT«($[1], $[1, 1], $[1, 2, 1], $[1, 3, 3, 1], $[1, 4, 6, 4, 1])␤»
10:45 timotimo andreoss, psch, does that help?
10:45 psch ...not with the BagHash stuff :P
10:45 psch still, timotimo++
10:45 psch :)
10:46 timotimo sorry, psch :|
10:46 timotimo were you able to get the exact instruction that throws the CME?
10:49 jnthn Hm, in RT can you not search the bodies of tickets?
10:49 nwc10 joined #perl6
10:49 nwc10 pmurias++
10:49 nwc10 hoelzro++
10:49 vendethiel pmurias++, hoelzro++ too :-)
10:49 timotimo jnthn: don't you get all RT's via email, too? :P  just search through your mail client :P
10:50 psch timotimo: well, almost.  i can see the reason, but not the cause
10:50 nwc10 so, NQP now self-hosts and bootstraps on JS ?
10:50 timotimo hm
10:50 yakudza joined #perl6
10:52 nwc10 or is it a MoarVM-based cross compiler?
10:52 vendethiel nwc10: the latter, I think
10:52 psch timotimo: https://gist.github.com/pe​schwa/0ee944afeb1e1c874902
10:52 psch that's the reason it throws
10:52 psch i have no clue how to find the modification on the HashMap that happened after the Iterator was instantiated...
10:53 timotimo i don't get it, though
10:53 jdv79 timotimo: the QJson "too large document" error, which btw - great grammar there... - is likely unfixable
10:54 jdv79 need to port to sommething else i guess
10:54 jdv79 its somehow hitting a 27 bit boundary in some spec'd bin format that's trouble to fix
10:54 jdv79 TMI but meh
10:55 timotimo are you making fun of my grammar? :)
10:55 psch the line in CORE.setting is in Seq.pull-one in EnumMap.values...
10:55 jdv79 no, that's what QJsonParseError spits out 
10:55 timotimo oh?
10:55 timotimo i didn't know it'd even admit that
10:55 jdv79 remember moritz's json didn't parse
10:55 jdv79 that's why
10:56 timotimo yeah
10:56 timotimo i've had that problem with a different json document in the past
10:56 timotimo ... perhaps it was the core setting compilation profile?
11:02 * FROGGS shudders when looking at 'for my $cell (@{$row->[$#head..$#$row]}) {', which he just wrote
11:03 cognominal joined #perl6
11:04 jnthn .tell lizmat I think the .push/.pop error improvements in List have busted make test (54-lib.t)
11:04 yoleaux jnthn: I'll pass your message to lizmat.
11:10 raiph joined #perl6
11:11 Sqirrel joined #perl6
11:12 Sqirrel_ joined #perl6
11:12 masak afternoon, #perl6
11:15 jnthn o/ masak
11:16 domidumont joined #perl6
11:20 nwc10 good UGT heresy, masak
11:27 _mg_ joined #perl6
11:28 masak nwc10: I'm not on UGT right now. :)
11:28 zacts joined #perl6
11:28 raiph joined #perl6
11:31 telex joined #perl6
11:32 telex joined #perl6
11:36 g4 joined #perl6
11:41 itz DST for UGT?
11:42 dalek perl6-examples: b36acee | (Steve Mynott)++ | / (2 files):
11:42 dalek perl6-examples: [99probs] P10-scottp.pl don't flatten in result
11:42 dalek perl6-examples: review: https://github.com/perl6/perl​6-examples/commit/b36aceef61
11:47 itz m: dd <4 a>
11:47 camelia rakudo-moar 5daff4: OUTPUT«(IntStr.new(4, "4"), "a")␤»
11:48 itz m: dd <a>
11:48 camelia rakudo-moar 5daff4: OUTPUT«"a"␤»
11:48 itz m: dd <4>
11:48 camelia rakudo-moar 5daff4: OUTPUT«IntStr.new(4, "4")␤»
11:49 itz m: dd <~4>
11:49 camelia rakudo-moar 5daff4: OUTPUT«"~4"␤»
11:53 rurban joined #perl6
11:54 laouji joined #perl6
11:55 pmurias joined #perl6
11:55 itz m: dd > dd ([<4 a>])
11:55 camelia rakudo-moar 5daff4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/H37Y_IagPE␤Preceding context expects a term, but found infix > instead␤at /tmp/H37Y_IagPE:1␤------> 3dd >7⏏5 dd ([<4 a>])␤»
11:56 itz m: dd <4 a>>>.Str
11:56 camelia rakudo-moar 5daff4: OUTPUT«("4", "a")␤»
11:56 itz any neater way?
11:56 andreoss m: my @x = gather { take $_ for 1..* } #'{greedy} ; say @x[^10]
11:56 pmurias nwc10: it's not self-hosted yet
11:56 andreoss m: my @x = lazy gather { take $_ for 1..* } ; say @x[^10]
11:57 camelia rakudo-moar 5daff4: OUTPUT«(timeout)»
11:57 camelia rakudo-moar 5daff4: OUTPUT«(1 2 3 4 5 6 7 8 9 10)␤»
11:57 Skarsnik joined #perl6
11:57 andreoss is gather now greedy by default?
11:59 thou joined #perl6
11:59 pmurias nwc10: it's the next milestone
12:04 psch huh
12:04 psch i think i have an idea where this comes from
12:04 psch we're using $k.WHICH for BagHashes
12:05 psch as key, i mean
12:05 psch and when copying the lhs to iterate over the pairs, we copy the underlying HashMap, but assign the same key
12:06 psch ...actually maybe that doesn't really make sense :/
12:06 psch 'cause we have one hashKeyIter per VMIterInstance
12:06 psch but removing a String from one of them shouldn't touch the underlying HashMap
12:08 psch 1) we have two HashMaps 2) one of them gets an VMIterInstance for its $!storage
12:08 dalek perl6-examples: 94be1fa | (Steve Mynott)++ | / (2 files):
12:08 dalek perl6-examples: [99probs] P12-unobe.pl post-glr quoting behaviour
12:08 dalek perl6-examples: review: https://github.com/perl6/perl​6-examples/commit/94be1fa776
12:08 psch 3) the .next() of this iter is removed from the other HashMap
12:08 psch 4) stuff explodes
12:08 psch that's what i'm pretty sure off... o.o
12:09 psch assuming the different BagHashes have actual different underlying $!storage this shouldn't happen...
12:09 xfix joined #perl6
12:29 jnthn andreoss: Assignment is eager unless it encounters something marked as lazy. gather alone doesn't imply lazy.
12:29 nwc10 pmurias: aha right. thanks for the confirmation/clarification
12:29 nwc10 good luck
12:29 nwc10 have fun
12:30 jnthn andreoss: The way you wrote it (with lazy) is the right thing to do.
12:31 pmurias nwc10: the point where the real fun beings is when we get proper Perl 6 to start compiling to js ;)
12:32 nwc10 I hope that day comes soon, but as I'm not able to help (other than say thanks and offer encouragement) I'm not going to keep on about it
12:33 CQ pmurias: what do you mean compile to, do you mean code generation?
12:34 dalek rakudo-star-daily: 4ad48b4 | coke++ | log/ (2 files):
12:34 dalek rakudo-star-daily: today (automated commit)
12:34 dalek rakudo-star-daily: review: https://github.com/coke/rakudo​-star-daily/commit/4ad48b40c8
12:34 dalek perl6-roast-data: 9f6a6fe | coke++ | / (9 files):
12:34 dalek perl6-roast-data: today (automated commit)
12:34 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/9f6a6fe37e
12:34 jnthn Generate JavaScript from Perl 6, much like we generate MoarVM and JVM bytecode from Perl 6 today.
12:35 pmurias CQ: yes
12:35 jnthn Code generation is just the last step of compilation, though :)
12:36 pmurias the rest will be handled by rakudo++
12:37 pmurias maybe with a custom analysis pass (or two) thrown in
12:39 CQ how would it be done? something like https://github.com/drforr/Perl-Mogrify ?
12:41 pmurias CQ: something like https://github.com/perl6/nqp/blob/​master/src/vm/js/QAST/Compiler.nqp
12:41 * pmurias should propably split this file up...
12:41 braintwist wow I just found something neat, my systems time is 2 hours ahead of what the time actually is, but then I ran the DateTime in perl, and perl got the time right, it is really awesome, but I have no idea how perl does it ?
12:42 * [Coke] drinks a coffee.
12:42 pmurias CQ: the biggest difference is that the javascript I emit won't be idiomatic
12:45 pmurias so it should emit code that you can run instead of stuff that sort of means that same things but can be tweaked and used as editable code
12:49 masak braintwist: if you want to find out, maybe talk to a Perl 5 forum? :)
12:49 xfix joined #perl6
12:50 itz braintwist: I would guess either you or computer might be confused about timezones and/or daylight saving :)
12:50 dalek perl6-examples: fb32836 | andreoss++ | / (10 files):
12:50 dalek perl6-examples: [euler] more GLR fixes
12:50 dalek perl6-examples: review: https://github.com/perl6/perl​6-examples/commit/fb32836a59
12:51 [Coke] I have a --profiel out from a big run that dies - a run from "say 3" works fine. will see if I can figure out what happened.
12:51 * [Coke] commutes
12:51 braintwist masak: I was doing it in perl6
12:52 braintwist itz: I would think daylight savings would only explain one hour ?
13:01 hernanGOA joined #perl6
13:03 psch i'm confused
13:03 psch m: role R { has $!foo }; class C does R { }; say nqp::getattr(C.new, C, '$!foo')
13:03 camelia rakudo-moar 5daff4: OUTPUT«(Any)␤»
13:03 psch m: my $a = BagHash.new(<a b>); say nqp::getattr($a, BagHash, '%!elems');
13:03 camelia rakudo-moar 5daff4: OUTPUT«P6opaque: no such attribute '%!elems'␤  in block <unit> at /tmp/uwOvJpdphe:1␤␤»
13:03 psch but BagHash does Baggy, and Baggy has %!elems
13:03 jnthn psch: my $a := ..., or nqp::decont($a)
13:04 psch jnthn: ugh.  right, decont is a thing that still is a bit spooky to me apparently :)
13:05 * psch makes a note, "if it's weird and there's a $ try deconet"
13:05 psch s/deconet/decont/
13:06 psch hm, probably better as "if there's a sigil"
13:08 dalek perl6-examples: 5d0d700 | (Steve Mynott)++ | t/categories/99-problems.t:
13:08 dalek perl6-examples: [99probs] fix P25-topo.pl post-glr
13:08 dalek perl6-examples: review: https://github.com/perl6/perl​6-examples/commit/5d0d70049d
13:08 dalek perl6-examples: fb325c8 | (Steve Mynott)++ | / (10 files):
13:08 dalek perl6-examples: Merge branch 'master' of github.com:perl6/perl6-examples
13:08 dalek perl6-examples: review: https://github.com/perl6/perl​6-examples/commit/fb325c8899
13:08 g4 joined #perl6
13:12 dalek nqp: 771071d | (Pawel Murias)++ | src/vm/js/QAST/Compiler.nqp:
13:12 dalek nqp: Insert newline when emitting strings to make it easier to read the generated code.
13:12 dalek nqp: review: https://github.com/perl6/nqp/commit/771071d4a2
13:12 dalek nqp: d4330a7 | (Pawel Murias)++ | src/vm/js/QAST/Compiler.nqp:
13:12 dalek nqp: Refactor atpos op handling.
13:12 dalek nqp: review: https://github.com/perl6/nqp/commit/d4330a75c1
13:12 dalek nqp: 2a97e34 | (Pawel Murias)++ | / (2 files):
13:12 dalek nqp: Test negative indexes to nqp::atpos.
13:12 dalek nqp:
13:12 dalek nqp: Implement them on the js backend.
13:12 dalek nqp: review: https://github.com/perl6/nqp/commit/2a97e34ade
13:13 skids joined #perl6
13:15 Woodi hallo #perl6 :)
13:15 Woodi pmurias++ :)
13:16 moritz pmurias++ # for nqp-js
13:16 moritz pmurias++ # for increasing NQP test coverage
13:16 Woodi pmurias: so how to use that new addon ? install something and then in nqp configuration add --backends=js  ?
13:19 masak pmurias++ # making Perl 6 web scale
13:19 El_Che joined #perl6
13:23 dalek perl6-examples: 924d611 | (Steve Mynott)++ | categories/99-problems/P31-rhebus.pl:
13:23 dalek perl6-examples: [99probs] fix P31-rhebus.pl post-glr
13:23 dalek perl6-examples: review: https://github.com/perl6/perl​6-examples/commit/924d6113e2
13:23 nwc10 left #perl6
13:23 pmurias Woodi: --backends=moar,js should do the trick
13:28 [Coke] In AngularJS 1.2.0 and later, ngRoute has been moved to its own module. If you are getting this error after upgrading to 1.2.x or later, be sure that you've installed ngRoute.
13:28 dalek perl6-examples: dc6f486 | andreoss++ | categories/euler/prob054-andreoss.pl:
13:28 dalek perl6-examples: fix indentation
13:28 dalek perl6-examples: review: https://github.com/perl6/perl​6-examples/commit/dc6f48668e
13:28 dalek perl6-examples: be8087d | andreoss++ | t/categories/99-problems.t:
13:28 dalek perl6-examples: Merge branch 'master' of https://github.com/perl6/perl6-examples
13:28 dalek perl6-examples: review: https://github.com/perl6/perl​6-examples/commit/be8087ddb3
13:28 dalek perl6-examples: c0c8711 | andreoss++ | categories/99-problems/P31-rhebus.pl:
13:28 dalek perl6-examples: Merge branch 'master' of https://github.com/perl6/perl6-examples
13:28 dalek perl6-examples: review: https://github.com/perl6/perl​6-examples/commit/c0c87112e5
13:28 Woodi pmurias: thanx
13:28 nine pmurias: great to follow your progress :)
13:30 Woodi btw. Node/libuv company was lastly bought by IBM, interesting what will happens now...
13:31 timotimo is that joyent?
13:33 masak [Coke]: is that the profiler?
13:34 Woodi timotimo: no. and looks not autors of Node.js as I thinked:    http://www.informationweek.com/cloud/plat​form-as-a-service/ibm-acquires-strongloop​-boosting-nodejs-support/d/d-id/1322144
13:35 timotimo "[...] Node.js, a technology that enables developers to craft APIs to suit any need in the Java universe. "
13:35 timotimo oh, is that so!
13:36 itz 1999 java != javscript, 2015 our java was really javascript
13:36 timotimo oh?
13:36 itz that probably needed a :)
13:39 psch huh
13:40 psch that surely makes the author look credible
13:40 El_Che joined #perl6
13:40 timotimo seems like that's more of a business news website
13:41 psch timotimo: still, that he quotes someone speaking about JavaScript but talks about Java himself..?
13:41 timotimo it's an easy mistake to make; probably comes down to a typo
13:42 * psch .oO( but PERL vs Perl is reason for complaint emails... )
13:42 moritz yes, Iscript accidentally insertscript the word "script" into my text allscript the time
13:42 moritz common typo
13:42 itz javascript was originally called livescript which is confusing since there is another livescript now
13:43 timotimo and then microsoft built something called "JScript", which is confusing because there's also "J"
13:44 timotimo "Because a developer can "express things as APIs, new services can be built around them," Soto said." ←  ??
13:46 khw joined #perl6
13:47 thou joined #perl6
13:49 dalek perl6-examples: 0079070 | andreoss++ | categories/euler/prob081-moritz.pl:
13:49 dalek perl6-examples: remove unnecessary comments
13:49 dalek perl6-examples: review: https://github.com/perl6/perl​6-examples/commit/0079070739
13:49 cognominal joined #perl6
13:50 andreoss left #perl6
13:51 aborazmeh joined #perl6
13:51 aborazmeh joined #perl6
13:55 dalek nqp/travjs: 679ecd4 | hoelzro++ | .travis.yml:
13:55 dalek nqp/travjs: Add JS to Travis build matrix
13:55 dalek nqp/travjs: review: https://github.com/perl6/nqp/commit/679ecd4bfd
13:58 dalek perl6-examples: c12b95d | (Steve Mynott)++ | categories/cookbook/04arrays/04​-05iterating-over-an-array.pl:
13:58 dalek perl6-examples: [cookbox] .Str now needed for <1 2>
13:58 dalek perl6-examples: review: https://github.com/perl6/perl​6-examples/commit/c12b95d496
13:58 zakharyas joined #perl6
13:59 abraxxa is there a debug interface for NativeCall so e.g. see the memory location of a Pointer and its size and contents?
14:00 [Coke] masak: yes, that was the profiler error.
14:01 abaugher joined #perl6
14:01 * [Coke] needs to update the daily nqp runs to get nqp-js from master...
14:03 Ovidius joined #perl6
14:03 travis-ci joined #perl6
14:03 travis-ci NQP build failed. Rob Hoelz 'Add JS to Travis build matrix'
14:03 travis-ci https://travis-ci.org/perl6/nqp/builds/80437183 https://github.com/perl6/n​qp/compare/travjs-smoke-me
14:03 travis-ci left #perl6
14:04 dalek nqp/travjs-smoke-me: c0033ed | hoelzro++ | .travis.yml:
14:04 dalek nqp/travjs-smoke-me: Remove Travis notifications while I'm hooking up JS
14:04 dalek nqp/travjs-smoke-me: review: https://github.com/perl6/nqp/commit/c0033eda42
14:04 thou joined #perl6
14:04 dalek nqp: d5702b6 | (Pawel Murias)++ | tools/build/process-qregex-tests:
14:04 dalek nqp: Renable the rx_subrules tests on the js backend
14:04 dalek nqp: review: https://github.com/perl6/nqp/commit/d5702b6bff
14:04 dalek nqp: 3a54939 | (Pawel Murias)++ | tools/build/process-qregex-tests:
14:04 dalek nqp: Run rx_modifiers on make js-test
14:04 dalek nqp: review: https://github.com/perl6/nqp/commit/3a54939528
14:04 dalek nqp: 2f3c2c8 | (Pawel Murias)++ | src/vm/js/nqp-runtime/runtime.js:
14:04 dalek nqp: [js] converting strings to integers
14:04 dalek nqp: review: https://github.com/perl6/nqp/commit/2f3c2c84ef
14:04 dalek nqp: 4055609 | (Pawel Murias)++ | tools/build/ (2 files):
14:04 dalek nqp: [js] Avoid calling npm (and recompiling all the c++ modules) when only a .js file changes.
14:04 dalek nqp: review: https://github.com/perl6/nqp/commit/4055609d42
14:04 pmurias hoelzro: make now should be faster on a mere js change
14:04 CurtisPoe Is there anyway I can declare an attribute in a class as rw and automatically have it's mutator return the invocant?
14:05 CurtisPoe s/it's/its/
14:06 pmurias CurtisPoe: you want to have something like that ($foo.bar = 123).baz = 456) set baz on $foo?
14:06 jnthn Not really, given that you don't get a mutator, but rather an l-value accessor
14:06 CurtisPoe So I'd need to write method wrappers for all of them?
14:06 moritz CurtisPoe: rw attributes *are* attributes with method wrappers
14:06 PerlJam CurtisPoe: or a trait that did it for you.
14:06 jnthn I'd just write a trait that uses the MOP :)
14:07 moritz uhm
14:07 moritz but
14:07 moritz it doesn't work, does it?
14:07 moritz I mean, if you call $foo.bar, it just returns writable container
14:07 abaugher joined #perl6
14:07 moritz and if you assign an integer to it, it can't return something else, no?
14:07 jnthn Well, yeah, you'd have to actually adopt a mutator syntax
14:08 jnthn $foo.bar(42).baz(69) etc
14:09 CurtisPoe jnthn: that's what I was looking for. I wanted to write a clean Perl 6 example for https://en.wikipedia.org/wiki/Fluent_interface
14:10 muraiki joined #perl6
14:10 nine CurtisPoe: those are probably the worst examples for fluent interfaces one could think of :)
14:11 CurtisPoe I'm don't want to argue with a wikipedia page, I just want to see if we can have a nicer example :)
14:11 dalek nqp/travjs-smoke-me: 9cec7d3 | hoelzro++ | .travis.yml:
14:11 dalek nqp/travjs-smoke-me: Add nodejs matrix for Travis tests
14:11 dalek nqp/travjs-smoke-me:
14:11 dalek nqp/travjs-smoke-me: I don't know if this will actually work, but here goes
14:11 dalek nqp/travjs-smoke-me: review: https://github.com/perl6/nqp/commit/9cec7d3bf5
14:12 masak nine: I wouldn't say it that strongly. that seems like a good API for a factory object.
14:13 nine CurtisPoe: my point being: fluent interfaces shine, when you _don't_ mutate the state. DBIx::Class resultset chaining and custom resultset methods are where it really starts to become useful.
14:13 masak unless -- is there some way to assign a lot of stuff to a factory object in a `given` block, using the usual mutator syntax, but then get back the fully constructed (immutable) object at the end?
14:13 masak maybe we could play around with a special `construct` keyword/slang for that? :)
14:13 * masak .oO( sounds like a job for a macro! ) :P
14:14 masak it would be a nice party trick. the object as such is immutable, but using the `construct` keyword, you can use normal imperative code and assignment syntax to gradually build it up.
14:15 masak something like this: my $obj = construct MyImmutableThing { .foo = 42; .bar = "OH HAI"; .baz = computed() };
14:16 muraiki the one time I used a fluent interface was in an openstack library for java, where it was used to mutate state and eventually call a constructor.
14:16 jnthn CurtisPoe: Quickly hacked this up: https://gist.github.com/jnthn/b291be5a7a18398849d4
14:17 moritz jnthn++
14:18 masak jnthn++
14:18 muraiki all I recall is that it was better than using the other java openstack library, but that might not have been the result of the fluent interface at all as I was ultimately using it from scala.
14:18 CurtisPoe jnthn++ :)
14:18 CurtisPoe p6: class A { method foo() { return self } }; method bar() { return self }; A.new.foo.bar
14:18 camelia rakudo-moar 5daff4: OUTPUT«Potential difficulties:␤    Useless declaration of a has-scoped method in mainline (did you mean 'my method bar'?)␤    at /tmp/tmpfile:1␤    ------> 3{ method foo() { return self } }; method7⏏5 bar() { return self }; A.new.foo.bar␤Method 'bar…»
14:18 moritz ok, how can I profile htmlify?
14:19 CurtisPoe I don't understand that error message.
14:19 moritz I can reduce its runtime (by processing far fewer files) to 25s
14:19 nine In a language with real named arguments daisy chaining mutators for object construction doesn't buy you anything, unless you can cut the chain at any point and re-use the intermediary result to construct multiple objects from that common base.
14:19 muraiki but I agree with nine in that what is really the best is when you can chain things, not when fluent interfaces are just an alternate syntax for object construction
14:19 [Coke] moritz: heh. that was the large profile I had that broke profile. :)
14:19 moritz but the generated profile is a 145MB html file, and it's basically unusable in any browser
14:20 muraiki I guess java doesn't normally use / has support for named arguments?
14:20 moritz muraiki: it doesn't
14:20 nine muraiki: exactly, that's why people like this in Java.
14:20 muraiki ok, that explains it. maybe it's another case of "this design pattern exists because of the inflexibility of the language" not "because it's a good pattern" ;)
14:20 jnthn CurtisPoe: Do you understand what a method declaration and the mainline of a program are? :)
14:21 masak CurtisPoe: did you notice you put `bar` outside of the class?
14:21 hernanGOA joined #perl6
14:21 moritz fwiw mojolicious also uses it
14:21 muraiki I'm trying to reference that AI guy's critique of the GoF design patterns and how most of them don't need to exist in lisp
14:21 [Coke] moritz: did you see my patch that allows a pathological --sparse to work?
14:21 masak that is, you got the curlies right, but also wrong, at least if you want `bar` to belong to `A`.
14:21 muraiki sebastian thrun I think
14:21 [Coke] (I was doing --sparse=100 to try generating the search.js in a reasonable amount of time.)
14:22 * jnthn wondres how we could actually make that one any clearer...
14:22 jnthn *wonders
14:22 moritz [Coke]: me too
14:22 jnthn Maybe "Useless declaration of has-scoped method outside of a class or role" would be better
14:22 muraiki I think where p6 shines is not in the java type of fluent interface, but in the type of chaining you can do with things like supplies, where it reads in a very declarative fashion. and where you can also branch one supply off into two different directions
14:22 jnthn But class/role are only two places you coulda declared it
14:22 muraiki which, once again, is what nine basically said. sorry fi I'm not adding anything here :)
14:23 PerlJam jnthn: highlighting that it's outside of a class/role might have helped though
14:23 PerlJam maybe
14:23 jnthn PerlJam: Possibly
14:24 * PerlJam initially thought that CurtisPoe put it outside of the class on purpose and really meant that the message was confusing.
14:24 jnthn Oh, as soon as I saw the message I figured "oh, I bet mis-nested curlies" :)
14:24 jnthn I guess that's experience... :)
14:24 masak I wanted to confirm whether CurtisPoe did it deliberately or not.
14:25 CurtisPoe Bah. I'm an idiot :)
14:25 masak we could maybe tailor the error message to say which class the method was outside of :P
14:25 jnthn I...what? :P
14:25 masak but may not be worth the extra trouble
14:25 dalek nqp: 4ab6d1f | (Pawel Murias)++ | src/vm/js/nqp-runtime/core.js:
14:25 dalek nqp: [js] Make nqp::istype work on undefined
14:25 dalek nqp: review: https://github.com/perl6/nqp/commit/4ab6d1f26b
14:25 dalek nqp: 0963c2d | (Pawel Murias)++ | src/vm/js/nqp-runtime/core.js:
14:25 dalek nqp: [js] Make nqp::istype work on arrays
14:25 dalek nqp: review: https://github.com/perl6/nqp/commit/0963c2da55
14:25 dalek nqp: f895360 | (Pawel Murias)++ | tools/build/process-qregex-tests:
14:25 dalek nqp: [js] add rx_captures and rx_qcaps to js-test
14:25 dalek nqp: review: https://github.com/perl6/nqp/commit/f895360d9b
14:25 moritz masak: it's outside *any* class
14:25 moritz masak: so it could list 'em all
14:25 jnthn I just worry about errors that try to enumerate class/role/grammar and so on
14:25 masak well, it's likely to come right after a particular class.
14:25 jnthn Because it's an open set, not a clsoed one
14:25 pmurias does adding '[js]' to commit msgs make sense?
14:25 jnthn *closed
14:25 PerlJam moritz: perhaps it could provide a list ordered by proximity to the method
14:26 masak I meant if it comes after some class. then we could give a better error, maybe.
14:26 masak no need to get more fancy than that.
14:26 masak so it *only* triggers if the class just closed.
14:26 masak even that may be too heavyweight.
14:27 PerlJam sounds highly specific.
14:27 masak but I'm pretty sure it would be the kind of awesome error message that Perl 6 is known for.
14:27 PerlJam "oops, the hint didn't trigger because I had an intervening statement"
14:27 masak people'd go "*whoa*, how does it know which class it's outside of!?"
14:27 masak PerlJam: well, think about the circumstances that led to CurtisPoe's error.
14:27 masak there wouldn't be a statement in between, because you wouldn't put one between methods.
14:28 masak this was solely the case of a premature closing brace.
14:28 PerlJam sorry, I can only imagine the circumstances and my imagination is quite big sometimes :)
14:28 masak which admittedly is much more likely in one-liners, I guess.
14:28 masak but still, it happens. I've done it, too.
14:28 itz Damn braces: Bless relaxes.
14:29 masak saying "it's outside any class" is premature generalization in this case.
14:30 PerlJam yeah, if you just listed the classes declared in the compilation unit that would be a huge hint.
14:30 * PerlJam waits patiently for masak to implement his idea ;)
14:31 masak heh.
14:31 CurtisPoe I get a parsing error if I try to chain those method calls over multiple lines: https://gist.github.com/Ovid/8df7c963ead6d4f6f20e
14:31 masak CurtisPoe: without looking, unspace.
14:31 vendethiel joined #perl6
14:32 masak m: say 42   .abs
14:32 camelia rakudo-moar 5daff4: OUTPUT«5===SORRY!5=== Error while compiling /tmp/t8coPmq3aZ␤Two terms in a row␤at /tmp/t8coPmq3aZ:1␤------> 3say 427⏏5   .abs␤    expecting any of:␤        infix␤        infix stopper␤        postfix␤        statement end␤        state…»
14:32 telex joined #perl6
14:32 masak m: say 42\   .abs
14:32 camelia rakudo-moar 5daff4: OUTPUT«42␤»
14:32 CurtisPoe masak: that's what I thought, but it's nice when chaining methods to put one method per line.
14:32 CurtisPoe Is that not possible due to whitespace significance?
14:32 masak there's a slang, Slang::Tuxic.
14:33 masak but no, not possible in the main slang due to TTIAR.
14:33 masak you need that backslash at least.
14:33 jnthn given open('file') { .print: 'foo'; .close; } # note that .foo means $_.foo
14:33 * [Coke] notes that the youtube video is progressing. sooooon.
14:33 CurtisPoe Ah, yes.
14:34 itz TTIAR?
14:34 itz oh S299
14:34 arnsholt Two Terms In A Row
14:34 PerlJam using given rather than chaingin would make the code clearer IMHO too
14:34 cdc what breaks the Perl 6 clocking mechanism ;)
14:34 itz S99 I mean
14:35 itz shouldn't a bot do glossary lookups? :)
14:35 masak S99:TTIAR
14:35 masak hm.
14:36 synbot6 joined #perl6
14:36 PerlJam S99:TTIAR
14:36 synbot6 Link: http://design.perl6.org/S99.html#TTIAR
14:36 PerlJam :-)
14:36 PerlJam one of these days someone will have to make a less fiddly bot.
14:37 geekosaur that may require something less fiddly-inducing than irc...
14:37 masak hey, IRC is perfect, OK? :P
14:37 masak it was invented in 1899. hasn't needed to change since.
14:38 arnsholt Just like X11 and Unix =)
14:38 * geekosaur hands masak BRC
14:38 _sri <3 fluent interfaces
14:38 itz yeah things like X11 and init never change :)
14:39 masak _sri: five trillion jQuery users can't be wrong. :)
14:44 CurtisPoe If anyone wants to improve this, it would be great: https://en.wikipedia.org/wi​ki/Fluent_interface#Perl_6
14:44 CurtisPoe Also, we should start getting more examples on Wikipedia, if possible.
14:44 PerlJam CurtisPoe++
14:45 moritz and do a green-field rewrite of the wikipedia page about Perl 6
14:46 masak what moritz said.
14:46 * masak .oO( second system wikipedia page done right! )
14:48 cdc CurtisPoe: I think "given $employee { .name('Bob'); .salary(200) }" is more Perl 6 idiomatic, and this meets the aims of fluent interface (readability)
14:49 PerlJam .oO( deja vu )
14:49 CurtisPoe cdc: that's true. Skips the MOP, also.
14:49 timotimo but since you return self for those things
14:49 timotimo you can my $constructed = do given $employee { ... }
14:49 hernanGOA joined #perl6
14:50 moritz wow, I just had a profile with >30% time spent in dynamic optimization
14:50 jnthn moritz: New record!
14:50 timotimo oh wow
14:51 timotimo was the program running for longer than 10ms? :)
14:51 jnthn moritz: That *can* happen if you're really unlucky (like, you run just for long enough for it to kick in), but more likely it warrants attention.
14:51 CurtisPoe That's giving me the error: Too many positionals passed; expected 1 argument but got 2
14:51 moritz timotimo: 170ms or so
14:52 moritz jnthn: fwiw it was   perl6-m --profile -Ilib t/pod-htmlify.t  in perl6/doc
14:52 jnthn Hmm, a test file :)
14:52 moritz might be all fine; I was just surprised
14:53 * jnthn is a little too
14:53 jnthn moritz: If you look at the Routines tab, do you see that it performed OSR anywhere?
14:54 moritz jnthn: profile is here: http://hack.p6c.org/~moritz/p​rofile-1442328408.81512.html
14:56 cdc CurtisPoe: it's because the chainymutable trait adds one method with the same name (for instance foo() for the attribute $foo)
14:56 cdc CurtisPoe: one doesn't need methods when using given :)
14:56 tony-o Stage parse      :  34.599
14:56 cdc m: my $a = class { has ($.b, $.c, $.d) is rw }.new; given $a { .b = 1; .c = 2; .d = 3 }
14:56 camelia rakudo-moar 5daff4: ( no output )
14:56 moritz jnthn: no OSR; two global deopts
14:57 cdc ^^ this could be indented à la fluent interface
14:57 cdc I mean the body of given
14:58 CurtisPoe So, better? https://gist.github.com/Ovid/97d7bea032c00a8ccd44
14:58 CurtisPoe Should I replace the wikipedia example with that?
14:58 moritz 6 local deoptimizations in reify-at-least
14:58 CurtisPoe (though I find it a shame that I can't have .salary = 200 (note the lack of decimal point)
14:59 cdc CurtisPoe: yes :)  This is way more accessible for newd comers
14:59 moritz CurtisPoe: use Real as a type constraint
14:59 moritz CurtisPoe: that can be Int too
15:00 CurtisPoe Yes, and I get to enjoy floating point errors then :) (but at least everyone will understand it)
15:00 cdc CurtisPoe: you can also add .say in the "given" block
15:01 cdc or .Str.say, maybe
15:02 nine John the Iterator. He's a sequence operator. All he ever gives us is pain...
15:02 moritz CurtisPoe: it's much harder to accidentally create a floating-point number in Perl 6 than in Perl 5
15:03 moritz subset RatOrInt of Real where Int|Rat
15:03 cdc CurtisPoe: you could rename method Str into gist, then no need to stringify explicitely when using .say or say().
15:04 CurtisPoe cdc: thank you! I never knew that :) (er, plenty of things I never knew)
15:05 cdc you're welcome :)
15:05 moritz In unrelated news, "Let's Encrypt" is in beta stadium
15:06 moritz should I apply for a perl6.org certificate?
15:07 cdc moritz: it makes sense since some search engines rank up https websites
15:08 PerlJam moritz: might as well.
15:08 pink_mist couldn't hurt
15:08 pink_mist it should be open to the public come november afaik, so if you can't get in the beta, it's not that long until it should be available anyway
15:13 itz startssl certs are free (and in browsers) if you have access to the WHOIS email addresses for the domain
15:13 timotimo i'm looking forward to let's encrypt
15:13 moritz itz: I don't; and startssl doesn't issue revocations for free
15:14 timotimo they just put their first site online with one of their certificates
15:14 moritz I mean, I'd spend money on it if necessary (there's enough left from the hack server donations), but I hope it won't be necessary
15:15 nine jnthn: there are 3 [GLR] tickets left. All above my pay grade I fear.
15:16 tokuhiro_ joined #perl6
15:21 hoelzro good *, #perl6!
15:21 hoelzro pmurias++ # js merge
15:21 tony-o perl6 --ll-exception -Ilib t/01_basic.t
15:21 tony-o No such method 'load' for invocant of type 'Hash'
15:21 tony-o oops
15:23 Sqirrel joined #perl6
15:23 TimToady joined #perl6
15:27 ugexe gotta call load on your pipe and pass in the hash
15:29 tony-o there is no hash or load method in any of the files that thing, hah
15:29 [Coke] nine++ ticket wrangling.
15:29 ugexe it is a hashish pun
15:30 vendethiel wow, just saw rurban's cperl... :o)
15:30 * itz sighs
15:35 zacts joined #perl6
15:35 rurban joined #perl6
15:37 tony-o ugexe++ lol
15:37 tony-o m: my @a; @a.push({ a => "A", b => "B"}); @a.push({ a => "A", b => "B"}); @a.perl.say;
15:37 camelia rakudo-moar 5daff4: OUTPUT«[:a("A"), :b("B"), :a("A"), :b("B")]␤»
15:38 tony-o m: my @a; @a.push({ a => "A", b => "B"}); @a.push({ a => "A", b => "B"}); @a.map({.perl}).join("\n").say;
15:38 camelia rakudo-moar 5daff4: OUTPUT«:a("A")␤:b("B")␤:a("A")␤:b("B")␤»
15:38 tony-o that's unexpected
15:39 dakkar https://www.thenautilus.net/cgit/​WebCoso-p6/tree/lib/XML/LibXML.pm ← I'm loving NativeCall
15:40 dakkar https://www.thenautilus.net/cgi​t/WebCoso-p6/tree/t/tests/xml.t ← it even works!
15:41 ugexe m: my @a; @a.push($[ a => "A", b => "B"]); @a.push($[ a => "A", b => "B"]); @a.perl.say;
15:41 camelia rakudo-moar 5daff4: OUTPUT«[[:a("A"), :b("B")], [:a("A"), :b("B")]]␤»
15:41 AlexDaniel joined #perl6
15:41 ugexe m: my @a; my %x; %x<a> = "A"; %x<b> = "B"; @a.push($%x); @a.push($%x); @a.perl.say;
15:41 camelia rakudo-moar 5daff4: OUTPUT«[{:a("A"), :b("B")}, {:a("A"), :b("B")}]␤»
15:42 skids m: my $pipe of Hash = (role Pot { }).new;
15:42 camelia rakudo-moar 5daff4: OUTPUT«Type check failed in assignment to '$pipe'; expected 'Hash' but got 'Pot'␤  in block <unit> at /tmp/yZ6G2W3TV6:1␤␤»
15:42 psch r: my $bh = BagHash.new(<a b c>); $bh.DELETE-KEY($_) for $bh.keys # found it
15:42 psch finally
15:42 camelia rakudo-moar 5daff4: ( no output )
15:42 camelia ..rakudo-jvm 5daff4: OUTPUT«java.util.ConcurrentModificationException␤  in block <unit> at /tmp/tmpfile:1␤␤»
15:42 psch o.o
15:43 tony-o $%() did , awesome
15:44 tony-o that got Green - the ultimate tool for parallel testing , working with current nom
15:45 [Coke] m: say 33.3333333333333333333333333​33333333333333333333333333+i
15:45 camelia rakudo-moar 5daff4: OUTPUT«33.3333333333333+1i␤»
15:46 [Coke] I just got linenoise tab autocompletion to work by accident. ahhhh.
15:47 [Coke] so nice.
15:47 * itz looks at recursive code and wishes he had paid more attention to the CS lecturer and less to the beer in the bar
15:47 psch r: my $bh = Hash.new(<a b>); $bh.DELETE-KEY($_) for $bh.keys # ...i wonder?
15:47 camelia rakudo-{moar,jvm} 5daff4: ( no output )
15:48 psch see, *that's* just crazy talk
15:49 dalek perl6-roast-data: 70f79f4 | coke++ | / (9 files):
15:49 dalek perl6-roast-data: today (automated commit)
15:49 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/70f79f4e15
15:49 psch especially 'cause BagHash.DELETE-KEY calls Hash.DELETE-KEY...
15:51 fasfsehwrh joined #perl6
15:51 psch (actually, Baggy.DELETE-KEY)
15:53 [Coke] Perl 6 : a sufficinently smart(ass) compiler.
15:53 jnthn itz: Recursion is like you start drinking a beer, but half way through drinking it you have to go to buy another one, and then you start drinking that, and so it goes on...and eventually you get fed up, and finish the beers in reverse order of purchase. It sucks 'cus by the end you're drinking warm beer, just like recursion sucks for the CPU 'cus then the data it needs is no longer in the L1 cache...
15:54 arnsholt Trust jnthn to create an apt beer-analogy =D
15:54 itz jnthn++
15:54 TimToady warm is good for a cache
15:54 pink_mist stale then :P
15:55 TimToady we need something to pull/skip elements from a Seq without relying on subscripting, which caches gratuitously
15:55 andreoss joined #perl6
15:57 jnthn TimToady: Something that gracefully degrades to Linq's .Take and .Skip would be nice :)
15:57 TimToady except take is, er, taken
15:58 jnthn Well, or is a generalization of them
15:58 PerlJam m: (gather {} but role {})[0]
15:58 camelia rakudo-moar 5daff4: ( no output )
15:58 jnthn Well, yeah, I'm expecting you to come up with a brilliant single mechanism that subsumes both of them :P
15:58 TimToady well, .neck($n) that returns a head and a tail, cut at $n
15:59 TimToady maybe that's a bit too...picturesque...
16:00 [Coke] pmurias, hoelzro: https://github.com/coke/perl6-roast-data​/blob/master/log/nqp.js_summary.out#L130 - error on JS build, not sure how long it's been going on. probably just on hack.p6c.org
16:01 hoelzro [Coke]: which version of node does hack have?
16:01 hoelzro ah, 0.10.29
16:01 * hoelzro guesses from https://github.com/coke/perl6-roast-data​/blob/master/log/nqp.js_summary.out#L144
16:02 PerlJam m: my @a will begin { say $_.WHAT }
16:02 camelia rakudo-moar 5daff4: OUTPUT«(Array)␤»
16:03 dalek perl6-roast-data: 18ec5b8 | coke++ | bin/nqp.js.sh:
16:03 dalek perl6-roast-data: js compiler was merged to master
16:03 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/18ec5b82f0
16:06 larion joined #perl6
16:07 arnsholt itz: Anyways, recursion is one of those things that are simpler than they seem initially, once you squint at it from the correct angle
16:09 vendethiel arnsholt: "apt beer" hey, I'd love a apt-get beer :P
16:10 moritz apt-beer add $url_to_pub
16:13 dalek specs: bab09aa | ugexe++ | S22-package-format.pod:
16:13 dalek specs: Update CompUnitRepo class specification seperator
16:13 dalek specs: review: https://github.com/perl6/specs/commit/bab09aa98f
16:16 araujo joined #perl6
16:16 ugexe beer is a FIFO queue. liquor is often more a LIFO queue
16:18 tokuhiro_ joined #perl6
16:20 jnthn I didn't know it was possible to drink so much you forget LIFO is a stack, not a queue... :)
16:23 cognominal "to iterate is human, to recurse is divine". I infer that god has an infinite L1 cache.
16:25 moritz cognominal: or is very good at TCO
16:25 TimToady or just very patient
16:27 dalek perl6-examples: bcc9506 | (Steve Mynott)++ | / (3 files):
16:27 dalek perl6-examples: [99probs] GLR fix for P13-viklund.pl
16:27 dalek perl6-examples: review: https://github.com/perl6/perl​6-examples/commit/bcc9506610
16:27 [Coke] the Swiss Perl Workshop 2015 Q&A video with Larry has been released! Thanks to Roman esp. for getting this put together and posted: https://www.youtube.com/watch?v=​zmNInkzaYLc&amp;feature=youtu.be
16:32 PerlJam Coke++
16:33 leont joined #perl6
16:33 * [Coke] tweeted and FB'd it as well, please share and enjoy.
16:40 moritz how fast is 'last' in a while loop?
16:40 moritz I ask because in a profile of htmlify, push-exactly is the one routine using up most of the exclusive time
16:40 moritz and it uses a 'last', and that could be optimized out
16:40 moritz while $i < $n {
16:40 moritz $pulled := self.pull-one();
16:40 moritz last if $pulled =:= IterationEnd;
16:41 moritz could become
16:41 telex joined #perl6
16:41 moritz while $i < $n && ! IterationEnd =:= ( $pulled := self.pull-one) { ... }
16:42 jnthn moritz: Not so fast, more because of `last` itself than the while loop
16:42 telex joined #perl6
16:42 moritz jnthn: ok, I'll try the optimization
16:44 [Sno] joined #perl6
16:46 timotimo [Coke]: you are wearing a LRR shirt! i didn't even notice when i was at the SPW!
16:49 timotimo damn, and right now i have to go
16:50 tony-o is require doing weird stuff for non-core modules?  perl6 -e 'require Term::ANSIColor;' is resulting in https://gist.github.com/to​ny-o/41203dfaaabca48547af
16:51 ugexe m: say "\b"..."\t"
16:51 camelia rakudo-moar 5daff4: OUTPUT«(   )␤»
16:51 TimToady joined #perl6
16:51 ugexe ah, on my terminal its just '     )'
16:51 moritz huh, there's both Term::ANSIColor and Terminal::ANSIColor in the ecosystem
16:52 moritz tony-o: looks like a bug to me
16:52 moritz m: require Term::ANSIColor;
16:52 camelia rakudo-moar 5daff4: OUTPUT«Could not find Term::ANSIColor in any of:␤  file#/home/camelia/.perl6/2​015.07.1-942-g5daff4c/lib␤  inst#/home/camelia/.perl6/2015.07.1-942-g5daff4c␤  file#/home/camelia/rakudo-inst-1/share/perl6/lib␤  file#/home/camelia/rakudo-inst-1/share/perl6/ve…»
16:52 moritz m: require Test;
16:52 camelia rakudo-moar 5daff4: ( no output )
16:53 tony-o i can only reproduce on 3rd party modules
16:53 [Coke] timotimo: I love me some LRR.
16:53 ugexe must be the update to use CUR to load modules
16:53 [Coke] I am going to mail Paul and tell him. He might dig it.
16:54 tony-o i'll dig into the CUR
16:54 tony-o after this conference call
16:54 * moritz just had the idea for the first time to use 'perl6 -c' on a core file
16:57 moritz did everybody else already use that?
16:57 ugexe .candidates returns a hash
17:06 Andrie joined #perl6
17:10 timotimo coke, don't install Linux on the toilet!!
17:11 diana_olhovik_ joined #perl6
17:13 psch r: my %h = a => a => 1, b => b => 2; %h.DELETE-KEY($_) for %h.values.map: { .keys }
17:13 camelia rakudo-moar 5daff4: ( no output )
17:13 camelia ..rakudo-jvm 5daff4: OUTPUT«java.util.ConcurrentModificationException␤  in block <unit> at /tmp/tmpfile:1␤␤»
17:13 psch *that*'s what it comes down to...
17:20 dalek rakudo/nom: 7662c46 | moritz++ | src/core/Iterator.pm:
17:20 dalek rakudo/nom: Try to optimize Iterator.push-exactly not to use "last"
17:20 dalek rakudo/nom:
17:20 dalek rakudo/nom: in my benchmarks, it is mostly drowned out in noise though
17:20 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7662c4637d
17:20 TimToady m: for $[1,2,3] { .say }; .say for $[1,2,3];
17:20 camelia rakudo-moar 5daff4: OUTPUT«[1 2 3]␤1␤2␤3␤»
17:20 patrickz joined #perl6
17:21 TimToady nine: ^^^ you missed one :)
17:23 moritz ok, this routine is the one with the second-highest exlusive (!) time in the htmlify.p6 profile: https://github.com/perl6/doc​/blob/master/htmlify.p6#L651
17:24 moritz but, all it does is calling other routines
17:24 moritz it doesn't really do any work itself
17:24 moritz how can it use up so much exclusive time?
17:28 vendethiel moritz: the grep, etc, are considered as taking their own time?
17:28 vendethiel ..maybe spurt is *really* slow on your system :P
17:30 vendethiel moritz: "return if $name ~~ / '/' /;" <- what's wrong with eq?
17:30 vendethiel that's stupid a question, disregard it
17:33 PerlJam vendethiel: how about .... What's wrong with index()?  :)
17:34 psch r: my %h = a => 1, b => 2; for %h { %h{$_.key.uc} = $_.value ** 2 }; say %h.perl # i am starting to see how it happens \o/
17:34 camelia rakudo-jvm 5daff4: OUTPUT«java.util.ConcurrentModificationException␤  in block <unit> at /tmp/tmpfile:1␤␤»
17:34 camelia ..rakudo-moar 5daff4: OUTPUT«{:A(1), :B(4), :a(1), :b(2)}␤»
17:34 vendethiel PerlJam: sure! but "defined $name.index('/');" is starting to get long
17:34 psch unfortunately i can only think of sticking the VMIterInstance into the VMHashInstance so they know they belong together
17:34 psch i guess i'll have to take a closer look at how moar handles that...
17:37 dalek roast: 3913af2 | TimToady++ | S0 (2 files):
17:37 dalek roast: check that for modifier respects item
17:37 dalek roast: review: https://github.com/perl6/roast/commit/3913af2a1c
17:46 domidumont joined #perl6
17:47 ShimmerFairy joined #perl6
17:51 spider-mario joined #perl6
17:55 vendethiel TimToady: that's one I hadn't seen
17:55 vendethiel m: $[1, 2, 3].map: { .perl.say }
17:55 camelia rakudo-moar 5daff4: OUTPUT«1␤2␤3␤»
17:55 vendethiel TimToady: that breaks the one-arg rule, and the "map=for", no?
17:55 _mg_ joined #perl6
18:02 Andrie left #perl6
18:02 Sqirrel joined #perl6
18:03 Andrie joined #perl6
18:04 Andrie joined #perl6
18:04 Andrie joined #perl6
18:07 telex joined #perl6
18:07 xinming joined #perl6
18:13 moritz vendethiel: spurt is its own routine too, and thus doesn't count for the exclusive time
18:14 moritz vendethiel: and regex search for a constant substring mostly optimizes to an index() call anyway
18:14 TimToady vendethiel: in GLRR, methods don't pay attemtion to $
18:15 TimToady only functions
18:15 TimToady well, and 'for'...
18:16 skids Well, $ on invocants does not matter.  On additional method args it does.
18:18 vendethiel mmh, ok.
18:18 vendethiel so for = map, not .map
18:19 tokuhiro_ joined #perl6
18:19 skids (You can think of it as the $ being used up calling the method.  And after all, $foo.a where foo has @.a is technically a violation of sigil invarience but we live with it.)
18:19 telex joined #perl6
18:26 patrickz .tell tadzik you can merge the PR now. Did some more testing and fixing and am confident this is loads better than before.
18:26 yoleaux patrickz: I'll pass your message to tadzik.
18:27 baest_ joined #perl6
18:39 meisl joined #perl6
18:45 dalek doc: 23f2a08 | moritz++ | lib/Perl6/Documentable/Registry.pm:
18:45 dalek doc: Htmlify: cache get-kinds
18:45 dalek doc: review: https://github.com/perl6/doc/commit/23f2a08d33
18:53 telex joined #perl6
18:56 domidumont joined #perl6
19:02 telex joined #perl6
19:28 xfix joined #perl6
19:28 xfix joined #perl6
19:34 _mg_ joined #perl6
19:35 FROGGS joined #perl6
19:36 FROGGS hello dear sir or madam
19:38 vendethiel \o FROGGS
19:38 hoelzro o/ FROGGS
19:38 FROGGS o/
19:40 Sqirrel_ joined #perl6
19:50 diana_olhovik_ joined #perl6
19:51 CurtisPoe joined #perl6
19:51 CurtisPoe My client died. I don't know if my last question went through or not! Did I just ask a question about "is"? :)
19:53 timotimo o/
19:54 CurtisPoe Did I just get warnocked on asking if I asked a question? :)
19:55 * CurtisPoe guesses that most are in bed or at a pub, as they should be.
19:55 timotimo you did not ask a question about is before asking about asking a question about is
19:55 hoelzro o/ CurtisPoe
19:55 CurtisPoe In that case: I know that using "isa" for inheritance is a contentious issue, so rather than discuss a sore subject, is there some place I can read up on the reasoning for this?
19:56 masak can I try to make your question a bit more precise?
19:56 timotimo i'm not sure what you mean exactly?
19:56 masak are you asking "why do people dislike class inheritance more and more nowadays?" ?
19:56 timotimo you mean using the keyword "isa" to say "this class derives from that class"?
19:57 CurtisPoe Basically, we use "is" for inheritance and "is" for traits. Traditionally, many languages use "isa" for inheritance. I find overloading the meaning to be confusing (is that a base class or a trait?), so I wanted to understand why this was done.
19:58 masak aha.
19:58 timotimo ah, yes, i remember at least two discussions about that thing
19:59 masak basically it's done because the advantages of deliberately confusing those two things into `is` makes for a language that's easier to learn, at the expense of a little bit of flexibility/clarity later.
19:59 masak uhm. that sentence almost made sense. :)
19:59 masak what I meant to say was: confusing traits and inheritance into `is` makes for an easier-to-grok Perl 6.
20:00 telex joined #perl6
20:02 masak you don't have to worry about the difference when you're starting out
20:03 timotimo also, having classes start with upper case and traits with lower case makes it less dangerous in actual usage
20:04 dalek rakudo-star-daily: 45a250a | coke++ | log/ (2 files):
20:04 dalek rakudo-star-daily: today (automated commit)
20:04 dalek rakudo-star-daily: review: https://github.com/coke/rakudo​-star-daily/commit/45a250a269
20:04 timotimo i wonder if - at use-time of a module - we should check for name collisions between traits and classes you're importing
20:04 masak it could even be (post-)rationalized by saying that in this case, class inheritance gets to ride on the trait mechanics.
20:04 masak timotimo: yes, that might be a good idea.
20:04 timotimo that's how i imagine it, too, masak
20:04 [Coke] timotimo: Paul says he's not got a lot of perl experience, but that it was awesome to see the LRR shirt in the wild. :)
20:04 * timotimo will watch the Q&A to the end now
20:05 timotimo sweet, [Coke]! :)
20:05 PerlJam This has come up enough (is v isa), that maybe there should be an entry in the FAQ for it
20:05 timotimo and of course you can write a slang to "fix" that :)
20:05 masak timotimo: not that for that to happen in the first place, either a trait must be upper-cased, or a class must be lower-cased. which is already a nonstandard choice by the programmer.
20:06 timotimo right
20:07 masak the fact that class inheritance is riding on the traits mechanism can even be motivated by saying that as a language, we care a lot more about traits than we do about class inheritance.
20:09 telex joined #perl6
20:11 gfldex r: say sprintf('%f', 1, 2); # shouldn't there be a line number with that error message?
20:11 camelia rakudo-{moar,jvm} 7662c4: OUTPUT«Directives specify 1 argument, but 2 arguments were supplied␤␤»
20:13 PerlJam huh
20:13 PerlJam looks like that's an NQP message
20:15 ugexe sprintf is nqp
20:15 TimToady Not Quite Presentable
20:15 jnthn CurtisPoe: It's probably worth noting that in Perl 6, a trait is a compile-time call to a multi sub, and the effects of that are whatever it fancies. I have the impression Moose et al has them mean something other than that (more tied up with roles, perhaps).
20:16 telex joined #perl6
20:20 tokuhiro_ joined #perl6
20:22 telex joined #perl6
20:26 timotimo ohey jnthn :)
20:28 CurtisPoe In perl5, a pragma is a package (sort of a class) and is lower-cased. Will that happen in Perl 6 and clash with traits? And will case-insensitive file systems be an issue?
20:29 timotimo for one, most installed modules get registered in a database
20:29 timotimo so that even if the filesystem is fat16 and only allows 8.3 we can have a module called ψεπψαιστοσ
20:29 timotimo it'll just get saved into "12345_hephaistos.pm6" or something
20:29 Andrie joined #perl6
20:31 CurtisPoe So at trait can't be applied to a class?
20:32 timotimo traits can be applied to classes
20:32 timotimo m: class Foo is rw { has $.a; has $.b }; my $a = Foo.new; $a.a = 10; $a.b = 99; say $a.perl
20:32 camelia rakudo-moar 7662c4: OUTPUT«Foo.new(a => 10, b => 99)␤»
20:32 CurtisPoe So what's the difference between traits and roles?
20:32 telex joined #perl6
20:32 timotimo when you "is Role", you'll just mix in the role
20:32 timotimo when you "is some-trait", the trait can do whatever it wants to the class
20:32 CurtisPoe So a trait applied to a class merely applies that trait to all attributes?
20:32 timotimo no, that's only a thing "is rw" does
20:33 PerlJam CurtisPoe: after you get all of your answers, you need to blog about it  :)
20:33 TimToady you don't generally 'is' roles
20:33 timotimo give me a second
20:33 timotimo oh!
20:33 timotimo right, of course
20:33 timotimo you generally "is SomeClass"
20:33 timotimo so it's not "a trait can't be applied to classes", but "a role is usually not combined with a class using the 'is' keyword"
20:33 CurtisPoe PerlJam: I feel very uncomfortable blogging about something in Perl 6 when it looks *wrong* to me. I love the language and right now, I don't want to scare people.
20:34 timotimo best forget about "is SomeRole" altogether :)
20:34 PerlJam CurtisPoe: good point.  I retract my suggestion to blog about it ;)
20:34 Peter_R joined #perl6
20:35 TimToady roles are a very specific and controlled composition mechanism; traits are for cheating in any other way
20:35 TimToady we just treat inheritance as a form of cheating :)
20:36 timotimo many traits that are already built into perl6 so far are actually implemented by mixing a role into a class or into an attribute or something like that
20:36 CurtisPoe Experienced programmers generally know that it's OK to overload behavior, but overloading semantics is a big, fat, red flag. It seems like the semantics of "is" are very heavily overloaded, so many experienced programmers are going to have an issue with this.
20:36 CurtisPoe Consider Perl 5 pseudo-hashes: years of overloading the semantics of $array[0] if it contained a hashref. Many mysterious error messages.
20:37 CurtisPoe Or consider how many C programmers would have an account_total() subroutine return a negative value on error, until negative values were suddenly allowed. Again, overloading the *semantics* shot them in the foot.
20:38 CurtisPoe Thus, this looks like overloading the semantics of "is" and I am very, very confused about why this is the way it is. That's why I was hoping someone could point me to docs rather than possibly risk irritating people again :)
20:38 telex joined #perl6
20:39 TimToady the issue really almost never comes up in practice because traits tend to be lowercase adjectives, and classes tend to be uppercase nouns
20:39 timotimo to give us a common base again: "is" is used both for applying traits and for deriving from classes; "does" is for applying roles
20:39 CurtisPoe (n.b. as mentioned previously, overloading behavior is fine. That's why we have polymorphism)
20:39 _mg_ joined #perl6
20:39 CurtisPoe So what if you're writing your code in a language which doesn't distinguish between upper and lower case?
20:40 timotimo oh, you mean a natural language with a script that doesn't have lower vs upper case?
20:41 timotimo i imagine japanese, chinese writing systems don't have something like that, and neither does hangul?
20:42 TimToady then you're still not as bad as all the commonly used languages that throw all words into the same namespace
20:42 CurtisPoe p6: sub ラン { say "Hi!" }; ラン()
20:42 camelia rakudo-moar 7662c4: OUTPUT«Hi!␤»
20:43 * timotimo turned on the auto-generated captions for the Q&A, chuckles a bit, then turns it off again
20:44 CurtisPoe I don't mean to be rude, but is the official position of Perl 6 "if you use a language that doesn't have a concept of case, too bad"?
20:44 timotimo definitely not
20:44 CurtisPoe s/language/writing system/
20:44 timotimo you are not forced to use upper vs lower case for classes vs traits at all
20:44 timotimo m: class lowercaseclass { }; my $a = lowercaseclass.new; say $a.perl
20:44 camelia rakudo-moar 7662c4: OUTPUT«lowercaseclass.new␤»
20:45 TimToady maybe if you use a language that doesn't distinguish adjectives from nouns
20:45 timotimo if your language is Oog!, you'll run into a tiny bit of trouble
20:45 CurtisPoe But that means one developer writes a trait named ラン and another one writes a class named ラン and their code breaks.
20:45 timotimo because we don't allow whitespace in these names
20:45 PerlJam TimToady: and you know programmers are a strange lot ... they may adjectivify nouns or noun adjectives or something too.
20:45 telex joined #perl6
20:45 timotimo well, that one developer would have to import that trait into the same piece of code that also uses the class
20:46 CurtisPoe Or a language which has adjectives which have the same meaning as nouns which have the same meaning as verbs :)
20:46 timotimo based on your insights, i've suggested we make a compile-time warning or error available that complains when traits and classes collide like that
20:46 TimToady it's all declaration time, anyway, and you have to know the names that have been declared, so it's not a run-time confusion
20:46 timotimo so the code won't break in a surprising way
20:46 CurtisPoe timotimo++
20:46 timotimo we should RT that
20:46 timotimo i'm not going to build that right now
20:47 CurtisPoe I'm OK if it's a warning and not a compile time failure.
20:47 CurtisPoe It's rare enough that it seems like a reasonable compromise.
20:47 * CurtisPoe is sorry for beating a half-dead horse.
20:48 timotimo no worries :)
20:48 TimToady well, it might be a half-dead unicorn...
20:50 liztormato joined #perl6
20:50 CurtisPoe Or a one-winged butterfly ... :)
20:51 diana_olhovik joined #perl6
20:51 TimToady m: class Foo :rw { has $.foo };
20:51 camelia rakudo-moar 7662c4: OUTPUT«===SORRY!===␤Cannot invoke this object␤»
20:51 PerlJam Also note that you could create a slang to distinguish trait application and class inheritance.
20:52 TimToady we also have this syntax in reserve for disambiguation
20:52 TimToady since types take precedence over traits
20:55 timotimo that looks like how you declare inheritance in cpp
20:58 zacts joined #perl6
21:04 jdv79 i'm lost but cool.  CurtisPoe++ for entertainment value.
21:05 lizmat joined #perl6
21:08 cognominal joined #perl6
21:15 dha joined #perl6
21:15 dalek roast: e788818 | usev6++ | S14-roles/mixin.t:
21:15 dalek roast: Add tests for RT #119925
21:15 dalek roast: review: https://github.com/perl6/roast/commit/e78881827e
21:15 synbot6 Link:  https://rt.perl.org/rt3/Publi​c/Bug/Display.html?id=119925
21:15 lizmat good *, #perl6!
21:15 yoleaux 09:36Z <jnthn> lizmat: if you're reliably seeing S17-supply/start.t passing now, then maybe https://rt.perl.org/Ticket/Display.html?id=125460 can be closed... I've not seen it fail since my recent fixes in Moar.
21:15 yoleaux 11:04Z <jnthn> lizmat: I think the .push/.pop error improvements in List have busted make test (54-lib.t)
21:15 bartolin o/ lizmat
21:16 lizmat hmmm... I did spectest the changes to List.push etc. not the "make test"  :-(
21:16 lizmat bartolin o/
21:16 jdv79 lizmat: o/
21:16 jdv79 home yet?
21:16 lizmat jdv79 o/
21:16 lizmat nope...  in Erlangen at the moment
21:17 lizmat tomorrow we'll be driving home...
21:17 bartolin lizmat: I created a PR to fix 54-use-lib.t
21:18 dalek rakudo/nom: 1e58fc6 | usev6++ | t/01-sanity/54-use-lib.t:
21:18 dalek rakudo/nom: Adjust tests to improved error reporting
21:18 dalek rakudo/nom:
21:18 dalek rakudo/nom: After commit 86ddca2003 the tests in question die with X::Immutable
21:18 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1e58fc6403
21:18 dalek rakudo/nom: 38c94bd | lizmat++ | t/01-sanity/54-use-lib.t:
21:18 dalek rakudo/nom: Merge pull request #533 from usev6/x_immutable
21:18 dalek rakudo/nom:
21:18 dalek rakudo/nom: Adjust tests to improved error reporting
21:18 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/38c94bde9c
21:18 lizmat hmmm... essentially the tests I added to roast   :-)
21:18 bartolin :-)
21:19 jdv79 mmm.. franconia.  not far from Shlenkerla and the like
21:19 vendethiel CurtisPoe++ as well. That was a fun ride ('cept not a unicorn one)
21:19 dha Do while loops still allow for a LABEL, and, if so, do we want to make a point of documenting that?
21:19 yoleaux 03:13Z <[Coke]> dha: looks like search is working again
21:19 dha \o/
21:20 dha Also, should the section in control.pod on return/while and return/until be after C<while> and C<until>'s documentation?
21:23 jdv79 i'll be in munich tomorrow for the fest
21:23 timotimo the münchenfest?
21:26 jdv79 yes, i've never been
21:26 timotimo oktoberfest*
21:26 jdv79 w/e
21:27 timotimo i heard there's lots and lots and lots of passed out drunks on all the streets
21:28 jdv79 i hope there's enough room to step between the then
21:28 jdv79 *them
21:28 dalek roast: 5f01fa1 | usev6++ | S02-literals/listquote.t:
21:28 dalek roast: Fix test which dies with X:Immutable now
21:28 dalek roast: review: https://github.com/perl6/roast/commit/5f01fa1847
21:28 timotimo i hope you'll have a proper place to sleep instead
21:28 jdv79 i'll take pictures
21:29 jdv79 i have booked a hostel
21:29 [Sno] joined #perl6
21:35 masak dha: yes, `while` loops allow for a label. and `next`/`redo`/`last` work in them, with and without labels.
21:35 masak m: L1: while False {}; while True { last L1 }; say "alive"
21:35 camelia rakudo-moar 7662c4: OUTPUT«No exception handler located for last_label␤␤»
21:36 masak that error message could probably be improved :)
21:36 dha Great. In the meantime I'm going to write general while/until docs, and leave a TODO for labels.
21:36 masak I know it's a lexotic thing, but we can see L1 from that `last`
21:37 colomon joined #perl6
21:37 telex joined #perl6
21:40 dha ok, basic while/until docs. https://gist.github.com/dha/0a0736b9da74a8e61e49
21:47 tony-o just wrote an article discussing some of the higher level problems with parallel testing that Green addresses, and how it addresses them for anyone interested.  http://j.mp/parallel-testing
21:49 dalek roast: 6a475d4 | lizmat++ | S02-types/hash.t:
21:49 dalek roast: Adapt error message checking to new message
21:49 dalek roast: review: https://github.com/perl6/roast/commit/6a475d48bd
21:51 rurban joined #perl6
21:53 dalek ecosystem: 9cc7454 | tony-o++ | META.list:
21:53 dalek ecosystem: Green, a parallel testing option
21:53 dalek ecosystem:
21:53 dalek ecosystem: Check it out.
21:53 dalek ecosystem: review: https://github.com/perl6/e​cosystem/commit/9cc745421d
21:55 camelia joined #perl6
21:58 grondilu m: multi infix:<[+]>(Range $r) { .Int given ($r.min + $r.max)*($r.max - $r.min + 1) }; say [+] 1 .. 10;
21:58 camelia rakudo-moar 38c94b: OUTPUT«55␤»
21:59 grondilu oops, meant prefix:<[+]>, but that can't work apparently.
21:59 grondilu m: multi prefix:<[+]>(Range $r) { .Int given ($r.min + $r.max)*($r.max - $r.min + 1) }; say [+] 1 .. 10;
21:59 camelia rakudo-moar 38c94b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/6_XUTILSxu␤Calling prefix:<[+]>(int) will never work with any of these multi signatures:␤    (Range $r)␤at /tmp/6_XUTILSxu:1␤------> 3 + $r.max)*($r.max - $r.min + 1) }; say 7⏏5[+] 1 .. 10;␤»
22:00 grondilu (also, forgot to divide by two.  Nevermind)
22:01 flussence m: multi prefix:<[+]>(Range $r) is looser(&infix:<..>) { .Int given ($r.min + $r.max)*($r.max - $r.min + 1) }; say [+] 1 .. 10
22:01 camelia rakudo-moar 38c94b: OUTPUT«110␤»
22:01 grondilu oh cool
22:01 flussence wait, that doesn't seem right...
22:01 grondilu as I wrote, I forgot to divide by two
22:02 grondilu m: multi prefix:<[+]>(Range $r) is looser(&infix:<..>) { .Int given ($r.min + $r.max)*($r.max - $r.min + 1) div 2 }; say [+] 1 .. 10
22:02 camelia rakudo-moar 38c94b: OUTPUT«55␤»
22:02 flussence there we go :)
22:02 grondilu I was wondering if that's the kind of optimization mentionned in ROADMAP:
22:02 grondilu 3 **    Optimizing multis for `[+] 1..10` and `[<=] 1..10` etc.
22:02 TimToady well, that's gonna be a bit of a problem
22:02 dalek rakudo/nom: 425845d | lizmat++ | src/core/Whatever.pm:
22:02 dalek rakudo/nom: Make Whetever.new == Inf True
22:02 dalek rakudo/nom:
22:02 dalek rakudo/nom: It occurred to me that we have many places in the core setting where we are
22:02 dalek rakudo/nom: checking for whether a value is either Whatever or Inf.  It also occurred
22:02 dalek rakudo/nom: to me that adding a Numeric method for Whatever would make such a check much
22:02 dalek rakudo/nom: easier, because it would just allow you to say:
22:02 dalek rakudo/nom:
22:02 dalek rakudo/nom:   sub a($value) { say "foo" if $value == Inf }
22:02 dalek rakudo/nom:
22:02 dalek rakudo/nom: and pass either a(*) or a(Inf) would give the desired effect.  Before
22:02 dalek rakudo/nom: applying this new capability, I thought I'd get it out in the world first.
22:02 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/425845d723
22:03 TimToady m: multi prefix:<[+]>(Range $r) is looser(&infix:<..>) { .Int given ($r.min + $r.max)*($r.max - $r.min + 1) div 2 }; say [+] 1,2,3,4,5,6,7,8,9,10
22:03 camelia rakudo-moar 38c94b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/wBvmcAgLkG␤Calling prefix:<[+]>(int) will never work with any of these multi signatures:␤    (Range $r)␤at /tmp/wBvmcAgLkG:1␤------> 3max)*($r.max - $r.min + 1) div 2 }; say 7⏏5[+] 1,2,3,4,5,6,7,8,…»
22:03 tony-o TimToady: you in the city on october?
22:03 tony-o s/on/in/
22:03 TimToady yup
22:03 grondilu m: say (1, 2, 3).WHAT
22:03 camelia rakudo-moar 38c94b: OUTPUT«(List)␤»
22:04 grondilu ^it's not a RAnge
22:04 tony-o i may drive down for that, lots of good riding plus i can heckle you
22:04 TimToady mebbe I should figure out what a "Release Talk" should say
22:05 tony-o how long is that session planned for?
22:05 TimToady actual talk is 1 hour, but social stuff around it
22:06 * lizmat wonders what city this city is
22:06 grondilu m: multi prefix:<[+]>(Range $r) is looser(&infix:<..>) { .Int given ($r.min + $r.max)*($r.max - $r.min + 1) div 2 }; multi prefix:<[+]>($l) { reduce * + *, $l }; say [+] 1,2,3,4,5,6,7,8,9,10
22:06 camelia rakudo-moar 38c94b: OUTPUT«12345678910␤»
22:06 tony-o san francisco lizmat
22:06 lizmat ah, that city  :-)
22:06 grondilu m: multi prefix:<[+]>(Range $r) is looser(&infix:<..>) { .Int given ($r.min + $r.max)*($r.max - $r.min + 1) div 2 }; multi prefix:<[+]>($l) is looser(&infix:<,>) { reduce * + *, $l }; say [+] 1,2,3,4,5,6,7,8,9,10
22:06 camelia rakudo-moar 38c94b: OUTPUT«12345678910␤»
22:07 cognominal tales of the city...
22:07 grondilu m: multi prefix:<[+]>(Range $r) is looser(&infix:<..>) { .Int given ($r.min + $r.max)*($r.max - $r.min + 1) div 2 }; multi prefix:<[+]>(*@l) is looser(&infix:<,>) { reduce * + *, @l }; say [+] 1,2,3,4,5,6,7,8,9,10
22:07 camelia rakudo-moar 38c94b: OUTPUT«12345678910␤»
22:07 * grondilu gives up
22:07 tony-o i've lived in this area too long, rarely ever hear it called san francisco
22:07 cognominal https://en.wikipedia.org/wiki/Tales_of_the_City
22:08 tony-o cognominal: nice
22:08 cognominal I am not from SF but I have read them all.
22:09 cognominal well not all, apparently there are new ones.
22:09 grondilu m: say .elems given 1, [\*] 1..*
22:09 camelia rakudo-moar 38c94b: OUTPUT«2␤»
22:10 grondilu hum, the usual expression for factorial is not GLR-friendly
22:10 grondilu m: say .elems given 1, |[\*] 1..*
22:10 camelia rakudo-moar 38c94b: OUTPUT«Cannot .elems a lazy list␤  in block <unit> at /tmp/OHZv3bAwT3:1␤␤Actually thrown at:␤  in block <unit> at /tmp/OHZv3bAwT3:1␤␤»
22:10 grondilu m: say .elems given my @ = 1, |[\*] 1..*
22:10 camelia rakudo-moar 38c94b: OUTPUT«Cannot .elems a lazy list␤  in block <unit> at /tmp/uV4mpu4rPt:1␤␤Actually thrown at:␤  in block <unit> at /tmp/uV4mpu4rPt:1␤␤»
22:15 bbkr joined #perl6
22:16 dalek rakudo/nom: b3a7722 | lizmat++ | src/core/IO/Handle.pm:
22:16 dalek rakudo/nom: :eager is a noop for IO::Handle.lines now
22:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b3a77222cb
22:19 grondilu m: constant fact = 1, [\*] 1 .. *; say fact[6]
22:19 camelia rakudo-moar 38c94b: OUTPUT«Nil␤»
22:19 grondilu m: constant fact = 1, |[\*] 1 .. *; say fact[6]
22:19 camelia rakudo-moar 38c94b: OUTPUT«720␤»
22:20 masak 'night, #perl6
22:22 TimToady m: constant fact = [\*] 1, 1, 2, 3 ... *; say fact[6]
22:22 camelia rakudo-moar 38c94b: OUTPUT«720␤»
22:26 TEttinger joined #perl6
22:28 grondilu TimToady: I'm surprised infix:<...> finds a logical sequence here
22:29 Alina-malina joined #perl6
22:29 grondilu m: constant fact = [\*] 1, 1, 2 ... *; say fact[6]
22:29 camelia rakudo-moar 425845: OUTPUT«5===SORRY!5=== Error while compiling /tmp/VjhafoIf7j␤An exception occurred while evaluating a constant␤at /tmp/VjhafoIf7j:1␤Exception details:␤  Unable to deduce arithmetic or geometric sequence from 1,1,2 (or did you really mean '..'?)␤    i…»
22:30 * grondilu has no idea how infix:<...> works
22:30 TimToady it considers only the final 3
22:30 grondilu ok
22:30 grondilu it's a better expression then, but it looks a bit magical
22:30 TimToady probably slower too
22:33 tony-o have you ever been heckled TimToady ?
22:33 TimToady certainly
22:34 TimToady though usually not maliciously
22:34 timotimo so only by accident?
22:35 TimToady "Never attribute to malice..."
22:38 timotimo This repr (malice) doesn't support attribute access
22:42 skids joined #perl6
22:49 lizmat sleep&
22:52 LordVorp joined #perl6
22:54 psch hrm
22:55 psch after a few hour break and some looking at moarvm it seems i have to understand the uthash code to figure out how they prevent breaking on changing-while-iterating
22:55 psch i don't *really* feel up for that, neither in the short- nor mid-term :P
22:55 psch i mean, i'm focusing on the jvm backend for a reason...
22:55 telex joined #perl6
22:56 timotimo because it's so simple
22:56 kanishka joined #perl6
22:56 psch ...is that sarcasm?
22:56 timotimo i think so
22:56 psch :P
22:57 bbkr_ joined #perl6
22:57 psch i'm a bit weary of just stuffing bits onto VMHashInstance that (probably) wouldn't conform with any sixmodel interface
22:57 psch but that's the only way i can think of to make this work out
22:58 psch as in, in the end it could be as easy as telling every VMHashInstance about all VMIterInstances that exist that access it
22:58 LordVorp left #perl6
22:58 psch but 1) that's *probably* not particularly 6model-y 2) it might be noticeable overhead
22:59 psch i'm guessing here, but uthash probably was chosen because it allows (let's call it) async access to hash elements
22:59 psch and the jvm doesn't allow that, which is why we can't iterate over a hash while changing it
22:59 psch or rather, the other way around - change it while iterating over it
23:00 psch ...maybe moar is wrong here? (one can hope...)
23:00 * timotimo doesn't know uthash does anything to prevent trouble when accessing concurrently
23:00 timotimo i expect it'd break spectacularly if you use it non-well
23:00 psch r: my %h = a => 1, b => 2; for %h { %h{$_.key.uc} = $.value * 2 }; say %h.perl
23:00 camelia rakudo-{moar,jvm} b3a772: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfile␤Variable $.value used where no 'self' is available␤at /tmp/tmpfile:1␤------> 3b => 2; for %h { %h{$_.key.uc} = $.value7⏏5 * 2 }; say %h.perl␤    expecting any of:␤        term␤»
23:01 psch r: my %h = a => 1, b => 2; for %h { %h{$_.key.uc} = $_.value * 2 }; say %h.perl
23:01 camelia rakudo-moar b3a772: OUTPUT«{:A(2), :B(4), :a(1), :b(2)}␤»
23:01 camelia ..rakudo-jvm b3a772: OUTPUT«java.util.ConcurrentModificationException␤  in block <unit> at /tmp/tmpfile:1␤␤»
23:01 timotimo oh, modification while iterating
23:01 timotimo not modification from multiple threads
23:01 psch yeah
23:01 timotimo yeah, no clue. but that can certainly be done
23:02 psch i agree
23:02 timotimo it's just that you may end up skipping things
23:02 timotimo like you skipped A and B there :P
23:02 psch but on jvm it means every VMHashInstance has to know all the VMIterInstances that iterate over it
23:02 timotimo otherwise it would have been :A(4) :B(8)
23:02 psch ...or we copy
23:02 psch huh
23:03 psch maybe that works
23:03 psch instead of creating an iterator for the HashMap we actually iterate over, we create it for a clone of that HashMap
23:03 psch which should give the same semantics
23:04 telex joined #perl6
23:06 psch well, it seems to build nqp fine at least :)
23:06 psch if this works i might fix 3+ test files with 7 chars :P
23:07 psch which would somewhere between 50 and 400 tests vOv
23:07 timotimo ".clone" is 6 chars
23:07 timotimo hmm
23:08 psch oh, 8 chars then
23:08 psch 'cause java, which means explicit ()
23:08 timotimo ah
23:08 timotimo of course
23:08 psch the reason for the range of tests is that failures in e.g. S02-types/bag.t abort the rest of the tests
23:09 psch but not all tests that are aborted suffer from this bug
23:09 timotimo right, that's often problematic
23:09 timotimo i wonder why this is A Thing now and wasn't before?
23:09 psch probably because the Seq code changed something
23:09 timotimo did we grab the full list of keys or pairs before?
23:09 psch star-j: say "hi"
23:09 camelia star-j 2015.03: OUTPUT«Error occurred during initialization of VM␤Could not reserve enough space for object heap␤Error: Could not create the Java Virtual Machine.␤Error: A fatal exception has occurred. Program will exit.␤»
23:09 psch :/
23:10 psch yeah, glr code boils down to this:
23:10 psch r: my %h = a => a => 1, b => b => 2; %h.DELETE-KEY{$_} for %h.values.map: { .keys }
23:10 camelia rakudo-{moar,jvm} b3a772: OUTPUT«Cannot call DELETE-KEY(Hash); none of these signatures match:␤    (Any:U $:, *%_)␤    (Any:D $:, *%_)␤    (Hash:U $: *%_)␤    (Hash $: \key, *%_)␤    (Hash $: \key, :$SINK!, *%_)␤  in block <unit> at /tmp/tmpfile:1␤␤»
23:10 psch err
23:10 psch r: my %h = a => a => 1, b => b => 2; %h.DELETE-KEY($_) for %h.values.map: { .keys } # this
23:10 camelia rakudo-moar b3a772: ( no output )
23:10 camelia ..rakudo-jvm b3a772: OUTPUT«java.util.ConcurrentModificationException␤  in block <unit> at /tmp/tmpfile:1␤␤»
23:10 psch i'd guess before we had Seq that map got all the keys first, cached them and then iterated and deleted
23:11 timotimo 'k
23:11 psch didn't check history for that though, so that's really just a guess
23:11 psch but now the .map builds a Seq
23:11 psch and yeah, somehow that gets in its own way
23:11 psch i still don't completely get where and why
23:12 psch interestingly the tests for <BagHash (&) Array[Str]> is what brought this up :P
23:13 psch which maybe means "can be change hashes (or other collection-y types) while iterating over them" is under-tested
23:13 psch s/ be / we /
23:18 ShimmerFairy I thought I'd look up the COMPOSE phaser (since I know it's NYI), but the spec only says "when a role is composed into a class" on it. That doesn't help much :(  (are you supposed to put it in the role, class, or either/both? What if it's in the wrong spot? And what's it meant to help with?)
23:19 psch ShimmerFairy: from what i remember, i thought it to be put into the role, useful to check for what the class already .^can, for example
23:19 psch ShimmerFairy: that's just my interpretation of course, and i suspect TimToady probably has a more descriptive concept :)
23:20 * psch runs a spectest
23:20 ShimmerFairy weird, because some of rakudo's core types have a "# XXX should be COMPOSE" comment in their classes, where they implement ^parameterize_role
23:21 ShimmerFairy (which would at least suggest that it's not _quite_ as simple as "in a role only" ☺)
23:22 * psch shrugs
23:22 psch you said yourself the design docs aren't particularly detailed :)
23:22 telex joined #perl6
23:22 psch (maybe s/detailed/helpful/, to be pedantic :P )
23:22 ShimmerFairy there's more documentation on a separate-seeming COMPOSE thingy for module exports :P
23:27 AlexDaniel joined #perl6
23:46 timotimo ShimmerFairy: a bit further up in the backlog, jnthn showed how to have mutator methods for attributes that return self so they can be chained
23:46 timotimo it uses a method compose that gets overriden
23:46 timotimo (or is that method ^compose?)
23:46 * timotimo goes to bed
23:47 psch progress \o/
23:48 psch only 88/200 tests in bag.t failed
23:48 psch instead of 156/200
23:49 ugexe modules installed with CURLI cause an error when use'd/require'd now :(
23:50 psch i'll leave the rest of spectest to hack and also go to bed o/
23:55 cognominal joined #perl6
23:57 tokuhiro_ joined #perl6

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

Perl 6 | Reference Documentation | Rakudo