ugexe | github.com/perl6-community-modules...t/01.t#L33 <- the failing code | 00:05 | |
it passes for me on 2017.04.3 but not blead | 00:06 | ||
timotimo | that should perhaps be changed to use a IO capture module or something | 00:07 | |
ugexe | m: (IO::Handle.new but role { }).say("a") | 00:08 | |
camelia | IO::Handle is disallowed in restricted setting in sub restricted at src/RESTRICTED.setting line 1 in method new at src/RESTRICTED.setting line 32 in block <unit> at <tmp> line 1 |
||
ugexe | m: IO::Handle.new.say("a") # even | ||
camelia | IO::Handle is disallowed in restricted setting in sub restricted at src/RESTRICTED.setting line 1 in method new at src/RESTRICTED.setting line 32 in block <unit> at <tmp> line 1 |
||
ugexe | that cant be it, that fails for me in 04 too | 00:09 | |
timotimo | why is it even using $fh.say($u) there? | 00:10 | |
it's apparently supposed to check if the gist is okay? | |||
ugexe | no idea | 00:11 | |
so those method print and print-nl allow it to work on 04 and earlier | 00:12 | ||
my $scalar; my $fh = IO::Handle.new but role { method print(*@stuff) { $scalar ~= $_ for @stuff }; method print-nl { self.print("\n") } }; $fh.say("OH HAI"); $fh.say("bai bai"); say $scalar | |||
it works with $fh.print though | 00:18 | ||
possibly github.com/rakudo/rakudo/commit/76...1fbffee03c ? | 00:25 | ||
timotimo | yeah, now it goes through nqp::printfh instead of through self.print | ||
and since the IO::Handle was .new'd but not properly opened: bang! | 00:26 | ||
might want to consider making IO::Handle.new explode | |||
or something? | |||
anyway, bedtime | |||
ugexe | looks like maybe because before the print was doing unbox_s(.Str) but now its unbox_s(x.gist) | 00:28 | |
that test isn't needed anyway | 00:36 | ||
fixed in URI now anyway github.com/perl6-community-modules...2a6b264597 | 00:44 | ||
samcv | ugexe++ :-) | 00:48 | |
oh ugexe i have a new grammar thing i'm working on for spdx | |||
ugexe | what? you didnt want to keep building on an abnf grammar?? | 00:50 | |
you quickly realize its ok for validating, and thats about it | 00:51 | ||
samcv | abnf? | 00:52 | |
this is what the parse tree looks like gist.github.com/samcv/7ba95a0f1d3d...a8dae0b7a6 | |||
ugexe | the grammar i wrote in that one comment was translated from the abnf grammar in the spdx spec | 00:53 | |
samcv | ah | ||
ugexe | its the grammar you usually see in RFC docs | ||
samcv | i think this tree will be much easier for parsing | ||
still need to get parens to work. but should be able to figure that out with how the grammar is | 00:55 | ||
ugexe | why is compound expression the same as the or-and? | ||
samcv | because they're all OR or AND | ||
ugexe | thats every compound expression no? | ||
samcv | and then we can see their position and the keywords between them | ||
simple-with-exception | 00:56 | ||
there's that | |||
also gives room to add more things. i mean not everything only has OR and AND in it | |||
when you have parens, then those will be broken up into or and | |||
or-and matches that can be processed independently | 00:57 | ||
ugexe | you sound like you know what you're doing which is more than i can say so... | 00:58 | |
samcv | just thought you might want to see it. i had to change how i did it from before because it became untenable | 00:59 | |
ugexe | yeah i saw the new branch | ||
samcv | yeah 'next' branch | ||
ugexe | one problem im wondering is if we can make the version ranges work in elastic search query | 01:00 | |
samcv | hmm | ||
sure | |||
GPL-1.0+ becomes GPL-1.0 or GPL-2.0 or GPL-30. | |||
ugexe | i think the only way to really make it work would be to turn ranges into a bunch of literal Foo-1.1 OR Foo-1.2 OR Foo-1.3 | ||
samcv | haven't used elastic before | ||
yeah of course. and we know all the licenses before hand | 01:01 | ||
ugexe | it already handles a q=license:Whatever OR (license:whatever AND license:whatever) | ||
samcv | or even /'GPL-3.' . / | 01:02 | |
idk can we do any uh. regex type things | |||
ugexe | version ranges are supported for versions | ||
version:1.* | |||
but not 1.+ | |||
samcv | i mean for licenses though | ||
but for licenses i mean | |||
ugexe | right i imagine its just a string match or a fuzzy match | ||
samcv | you can do GPL-3.* ? | ||
ugexe | i believe you can do string fuzzy matching like sql | 01:03 | |
so GPL-3.% or something | |||
samcv | ok | 01:04 | |
so we can do GPL-3.% OR GPL-4.% | |||
just do one more version than we know about? | 01:05 | ||
hm | |||
ugexe | well if you want 2.1+ it could match 2.0 | ||
samcv | hm | 01:10 | |
give it every version number | |||
2.1 2.2 2.3 2.4 2.5 2.6 2.7.. and then 3.+ | |||
you can put as many thnigs as you wish yes? | 01:11 | ||
ugexe | yeah | 01:29 | |
lizmat | Files=1192, Tests=56879, 208 wallclock secs (12.20 usr 4.89 sys + 1225.65 cusr 123.04 csys = 1365.78 CPU) | 06:40 | |
[Tux] | This is Rakudo version 2017.04.3-153-ge5870c11d built on MoarVM version 2017.04-44-gf0db8822 | 07:13 | |
csv-ip5xs 3.143 | |||
test 13.788 | |||
test-t 4.516 - 4.571 | |||
csv-parser 13.441 | |||
samcv | nice and low | 07:31 | |
[Tux] | essentially no change | 07:49 | |
Ulti | win 3 | 09:00 | |
erk | |||
dogbert17_ | Hmm, have some (stress)test failures. t/spec/S06-signature/types.t, t/spec/S17-supply/syntax.t and t/spec/S32-exceptions/misc.rakudo.moar | 09:57 | |
Zoffix | t/spec/S17-supply/syntax.t is a flopper the other two are known | 10:08 | |
Geth | rakudo/nom: 0338ce46dc | (Elizabeth Mattijsen)++ | 2 files Also fix .iterator/.pairs for RT #131241 - abstract the Proxy logic in a proxy sub - make both .iterator (which feeds .pairs) and .values use that |
10:27 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131241 | ||
rakudo/nom: 14e09532e7 | (Elizabeth Mattijsen)++ | src/core/MixHash.pm Oops, another copy-pasto :-( |
10:32 | ||
roast: f5de360692 | (Elizabeth Mattijsen)++ | 2 files Fix more tests broken by fix to RT #131241 |
10:33 | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131241 | ||
Zoffix | m: use nqp; with "/tmp/barz" { .IO.spurt: "weeeeee"; nqp::copy($_, $_); dd .IO.slurp } | 10:49 | |
And occasionally is just trashes the file instead of hanging :) | |||
ZofBot: fun! | |||
ZofBot | Zoffix, rel2abs( $path, $base ) ; If $base is not present or '', then $*CWD is used | ||
camelia | (timeout) | 10:50 | |
Zoffix | m: $*CWD = 'foos'; dd $*SPEC.rel2abs: '/foo' | ||
camelia | "/foo" | ||
Zoffix | m: $*CWD = 'foos'; dd $*SPEC.rel2abs: 'meow' | 10:51 | |
camelia | "foos/meow" | ||
Zoffix | m: $*CWD = 'foos'; dd $*SPEC.rel2abs: 'meow', '' | ||
camelia | "foos/meow" | ||
Zoffix | ZofBot: indeed it is! | ||
ZofBot | Zoffix, setting was way smaller then By now we are even doing stuff like lazily deserializing parts of CORE | ||
Geth | rakudo/nom: 8088f08050 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm Abstract R:I.Mappy-kv-from-pairs logic into a role Because I need the role for (Bag|Mix)Hash.kv, which is basically the same, but needs a specific .pull-one. |
10:58 | |
dogbert17_ | Zoffix: hmm, I thought the problems with syntax.t had been fixed ... let me investigate | 11:29 | |
Geth | rakudo/nom: 45305ecaea | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm Simplify Mappy-kv-from-pairs.pull-one a bit |
11:50 | |
rakudo/nom: e7087f295f | (Elizabeth Mattijsen)++ | src/core/Rakudo/Iterator.pm Argh, cannot use binding in code that does role |
12:23 | ||
rakudo/nom: c61c7f883d | (Elizabeth Mattijsen)++ | 2 files Also fix .kv for RT #13124 |
12:29 | ||
roast: 7be833903b | (Elizabeth Mattijsen)++ | 2 files Fix final tests broken by fix to RT #131241 |
12:30 | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131241 | ||
lizmat | afk& | 12:31 | |
Zoffix | great... forgot to turn off my VM last night :/ Good thing it wasn't the 64-core one | 12:41 | |
timotimo | whoops. is it expensive even when it's idling? | 12:42 | |
Zoffix | Same cost when it's ideling. Though I normally use 24CPU/24GB RAM pre-emptive one which is much cheaper than non-preemptive ones. preemptive = they can turn it off at any second, though it rarely happens. | 12:45 | |
timotimo | damn | ||
Zoffix | $0.633/hr for non-preemptive $0.191 for pre-emptive. I guess I'm not exactly going broke for leaving it on for 16 hours... just annoying :) | 12:46 | |
64-core/416GB RAM one is $2.653/hr for non-preemptive and $0.801/hr for preemptive | 12:47 | ||
timotimo | right, annoying indeed | 12:48 | |
Zoffix | .tell mst this looks like something you wanted to add to Perl 5. Any opinions? github.com/perl6/ecosystem/issues/334 | 13:01 | |
yoleaux | Zoffix: I'll pass your message to mst. | ||
Geth | rakudo/nom: 08a8075f91 | (Zoffix Znet)++ | src/core/IO/Path.pm [io grant] Fix IO::Path.copy/move when source/target are same Fixes RT#131242: rt.perl.org/Ticket/Display.html?id=131242 |
13:04 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131242 | ||
Geth | roast: 4fdb8504cd | (Zoffix Znet)++ | 2 files [io grant] Test IO::Path.copy/move when source/target are same RT#131242: rt.perl.org/Ticket/Display.html?id=131242 Rakudo fix: github.com/rakudo/rakudo/commit/08a8075f91 |
||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131242 | ||
Zoffix | [Coke]: why careful? Something's up with your new position at TPF? | 13:07 | |
Zoffix & | 13:19 | ||
[Coke] | Zoffix: wrong window | 13:21 | |
nine | Zoffix: github.com/perl6/toolchain-bikeshe...r/build.md | 13:54 | |
Zoffix | Not overly interested in that stuff, but I see you commented the link on GitHub Issue, so it'll reach the right parties :) | 13:55 | |
nine | Zoffix: yeah. Good thing I noticed your message to mst. Would have been a waste if multiple groups worked on this independently. | 14:00 | |
ugexe | the problem i foresee coming from 334 is that its going to ultimately be huge. listing the version, support, various package managers... and then you'll end up wanting to add optional/test/build/emulates/supercedes dependencies and so on. It doesn't really belong in core, it doesn't really belong in the ecosystem spec (because it would be any ecosystem) | 14:23 | |
i would imagine you would use a build module for this purpose | 14:24 | ||
timotimo | we want something for "test-depends", too :P | ||
and optionals, how do we do optionals? | |||
ugexe | the toolchain-bikeshed is pretty simple, and intended to allow installing things like Inline::Perl5 with core perl6 | 14:25 | |
there are no optionals yet :P | |||
because then we need to define optional test and build and... should probably just steal whatever perl 5 meta spec did | 14:26 | ||
timotimo | we could just make the meta a dockerfile | 14:27 | |
ugexe | or steal all their good parts | 14:28 | |
jnthn | Would be good to consider the Windows "just download, verify, and install the DLL" thingy into this too | 14:36 | |
Which is probably the leading use of Build.pm | 14:37 | ||
timotimo | yeah, that'd be nice | ||
jnthn | Which I figure is also not a long-term solution :) | ||
timotimo | "hey i have this https url here and a few different hashes" | ||
ugexe | verify? lol | ||
timotimo | "also please get the right bitness" | 14:38 | |
jnthn | ugexe: Yes, the hashes are included in the Build.pm, meaning there's detection if the thing that was downloaded got tampered with | ||
timotimo | but who verifies the meta6.info? | 14:39 | |
jnthn | Or some non-malicious accident :) | ||
timotimo: It's not foolproof, but it does mean that somebody would have to get a github commit bit on the module *and* access to where the DLLs are stored | 14:40 | ||
Which is a good step up from just needing to get to the latter | |||
timotimo | aye | 14:41 | |
ugexe | that type of logic would work better in a hook | 14:44 | |
which, an idea timotimo gave me, would give zef a place to provide its fetching mechanism | |||
timotimo | but we were hoping to make things declarative? :| | 14:45 | |
Zoffix | NeuralAnomaly: status | 14:46 | |
NeuralAnomaly | Zoffix, [✘] Next release will be in 2 weeks and 4 days. Since last release, there are 13 new still-open tickets (0 unreviewed and 0 blockers) and 185 unreviewed commits. See perl6.fail/release/stats for details | ||
Zoffix | wow, 185 commits already :o | ||
ugexe | timotimo: well afaik the declarative stuff is intended to be simple enough to go into the core Distribution object - enough that Inline::Perl5 could be installed. im not sure how fetching logic can fit into that though | 14:48 | |
you could still declare it, but the logic to fetch it needs to exist somewhere | |||
timotimo | hm, you mean any meta6 should be properly installable even without an installer? | 14:49 | |
just through code that's inside rakudo? | |||
ugexe | thats what i've always strived for | ||
Zoffix | The March release: "NeuralAnomaly Zoffix, [✘] Next release will be in 2 weeks and 4 days. Since last release, there are 13 new still-open tickets (13 unreviewed and 0 blockers) and 56 unreviewed commits" | ||
m: say 185/56 | |||
camelia | 3.303571 | ||
ugexe | you can install modules with Build.pm now without an installer | 14:50 | |
timotimo | hmm | ||
ugexe | if we had some way to abstract the logic to create a fetching or extracting command (curl, tar, etc) per-system into some generic command then it could | 14:53 | |
which is what zef does, but thats way too much cruft for core | |||
[Coke] | win 2 | 14:56 | |
argh | |||
Zoffix | You win a new TV! | ||
timotimo | the toolchain bikeshed build.md file contains a json that's invalid because it uses non-string hash keys | 14:59 | |
nine | timotimo: ah that's what the syntax highlighter tries to tell me? | 15:04 | |
timotimo | i believe so | 15:12 | |
pmurias | m: bag<foo bar bar>.Stringy | 15:16 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Use of non-subscript brackets after "bag" where postfix is expected; please use whitespace before any arguments at <tmp>:1 ------> 3bag7⏏5<foo bar bar>.Stringy expecting any of: a… |
||
pmurias | m: bag <foo bar bar>.Stringy | ||
camelia | ( no output ) | ||
pmurias | m: say bag <foo bar bar>.Stringy | ||
camelia | bag(foo bar bar) | ||
pmurias | m: say bag(<foo bar bar>).Stringy | ||
camelia | foo bar(2) | ||
timotimo | that's just the gist, though | 15:17 | |
m: say (bag <foo bar bar>.Stringy).perl | |||
camelia | ("foo bar bar"=>1).Bag | ||
pmurias | is the order of elements in Bag.Stringy defined? | ||
where are using that to compare stuff in a test | 15:18 | ||
Zoffix | s: bag(), 'Stringy', \() | 15:20 | |
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/08a8...Mu.pm#L524 | ||
pmurias | and it fails on rakudo.js because they are returned in a different order | ||
Zoffix | s: bag(), 'Str', \() | ||
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/08a8...gy.pm#L365 | ||
timotimo | if there's no "sort" in the implementation of Stringy, then we're not supposed to rely on its ordering | ||
... well, you could interpret that the other way around, too | |||
Zoffix | pmurias: IMO no. It's unordered all the way down and the test should be fixed. | 15:21 | |
pmurias | I'll fix the test then | ||
Zoffix | m: say 'baz bar foo' ~~ m:g/@(<foo bar baz>)/ | 15:26 | |
camelia | (「baz」 「bar」 「foo」) | ||
Zoffix | This is cool | ||
m: say 'foo bar meows' ~~ m:g/ %(<fo ba me ow>) \S+ /; | 15:31 | ||
camelia | P6opaque: no such attribute '$!reified' in type List when trying to get a value in regex at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
Zoffix | hehe | ||
Filed: rt.perl.org/Ticket/Display.html?id=131243 | 15:35 | ||
Geth | roast: 66d6132fd3 | (Pawel Murias)++ | S03-operators/div.t Skip 64bit specific test on platforms that are 32bits |
15:47 | |
roast: 6d781bc4de | (Pawel Murias)++ | S03-operators/bag.t Stop comparing Bags with eq That depends on the order of keys in Bag.Stringy which is implementation specific and not specced. |
|||
Zoffix | (FWIW eqv (that is `is-deeply` test) works on Bags) | 15:52 | |
s: &infix:<eqv>, \(bag(), bag()) | |||
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/08a8...gy.pm#L759 | ||
Zoffix | yea | 15:53 | |
s: &infix:<eqv>, \(%, %) | |||
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/08a8...ap.pm#L366 | ||
Zoffix | m: dd :{ 42 => 42 } eqv :{ 42 => 42 } | 15:54 | |
camelia | Bool::True | ||
Zoffix | m: dd :{ 42 => 42 } eqv :{ 42 => 41 } | ||
camelia | Bool::False | ||
TimToady notes that .perl and .gist do guarantee sorted order | 15:59 | ||
Zoffix | s: bag(), 'perl', \() | 16:02 | |
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/08a8...gy.pm#L375 | ||
Zoffix | Don't look like it | 16:03 | |
TimToady | they're supposed to | ||
Zoffix | And if it does, then .Stringy also does, 'cause they're using the same Baggy!LISTIFY method | ||
s: bag(), 'raw_hash', \() | |||
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/08a8...gy.pm#L756 | ||
TimToady | you can always iterate a hash yourself if you really want unordered | 16:04 | |
sets and bags should follow the same policy | |||
Zoffix | So Hash.Str is guaranteed to be ordered? | 16:05 | |
Oh yeah: multi method Str(Map:D:) { self.sort.join("\n") } | |||
m: use nqp; dd nqp::getattr(Map.new(<a 42>), Map, '$!storage').^name | 16:06 | ||
camelia | "BOOTHash" | ||
Zoffix | And Baggy takes nqp::iterator() of BOOTHash and just loops over it... I'm guessing that's unordered | 16:07 | |
timotimo | yeah, that's unordered | ||
Zoffix | Filed: rt.perl.org/Ticket/Display.html?id=131244 | 16:09 | |
.tell pmurias I was wrong. The .Str/.Stringy/.gist/.perl on Baggies is supposed to be ordered (RT#131244), but the fix will be in Rakudo, so I don't think any chances to JS backend to handle this are needed. | 16:10 | ||
yoleaux | Zoffix: I'll pass your message to pmurias. | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131244 | ||
TimToady | just because hashy things are fundamentally unordered doesn't mean we always have to present them that way | ||
Zoffix | s/chances/changes/; | ||
[Coke] | TimToady: Didn't we say at one point that we were going to rand all of them so people didn't rely on an implicit order that wasn't promised? | 16:11 | |
TimToady | yes, we did, at one point | 16:12 | |
but we said the other thing later :) | |||
the educational value is repeated inflicted on people who are probably not ready to learn it | 16:13 | ||
*repeatedly | |||
hmm, that seems to be two different thoughts stuck together, need more coffee | 16:14 | ||
anyway, it's lies-to-children that don't hurt much because the user generally wants the output sorted anyway, and if they sort things themselves they don't pay twice | 16:15 | ||
and anyone who's writing an algorithm whose performance depends on not sorting is probably gonna be smart enough to know the truth by then | 16:16 | ||
but we're also fighting the innate tendency in humans to say "I had to go through this pain, so you do too, and the sooner the better." :) | 16:17 | ||
so anyway, the current policy is that explicit iteration never sorts, but the implicit iteration done for things that stringify does sort | 16:22 | ||
Zoffix | huggable: sorted hash :is: "current policy is that explicit iteration never sorts, but the implicit iteration done for things that stringify does sort" irclog.perlgeek.de/perl6-dev/2017-...i_14519754 | 16:23 | |
huggable | Zoffix, Added sorted hash as "current policy is that explicit iteration never sorts, but the implicit iteration done for things that stringify does sort" irclog.perlgeek.de/perl6-dev/2017-...i_14519754 | ||
TimToady understands that this is also a little surprising to people coming from Perl 5, but that's just one of the spots where we decided to break with the past | 16:24 | ||
lizmat | Zoffix TimToady: this would apply to Sets as well ? | 16:25 | |
TimToady | yes | ||
Zoffix | lizmat: yeah and baggies, which currently don't sort. I've just filed a ticket for that: rt.perl.org/Ticket/Display.html?id=131244 | ||
lizmat | yeah, saw that | 16:26 | |
am currently deep in a Set/Mix refactor to make them faster | |||
TimToady | the assumption here is that most internal operations that have to be fast do not involve stringification, which is only needed at the endpoint | 16:28 | |
lizmat | TimToady: with the exception of .WHICH, which *is* needed for internal operations of Set/Bag/Mix | 16:30 | |
TimToady | well, we're trying to get away from strings for .WHICH eventually anyway | 16:31 | |
but yeah, if you're gonna have an identity on something underordered, the disorder can't participate | |||
TimToady wonders what "underordered" means... | 16:32 | ||
Zoffix | m: dd % .push: "foo\n42\nbar\n70\nber\n70".lines.pairup».antipair | 16:34 | |
camelia | Hash % = {"42" => "foo", "70" => $["bar", "ber"]} | ||
Zoffix | I ♥ Perl 6 | ||
TimToady | I guess, if we end up with probabilistic hashing for identity, we can at least limit the possibility of collision to the objects of the same type, since the type is part of the identity, and any given type could take extra steps to make a collision impossible, if we set it up right | 16:38 | |
baking in all the information from the value is one way to do that, but as we see from our current implementation, that can be slowish | 16:39 | ||
not just in generation, but comparing two strings can be a lot slower than comparing two integers | 16:40 | ||
lizmat | well, 2x two integers, I guess: one for the type | 16:42 | |
TimToady | another way to guarantee uniqueness is with a value registry for the type, presumably one that can look up a value via its parts without going through the trouble of generating a stringy WHICH, or there's no point | 16:43 | |
basically, teaching the type to intern itself | |||
re 2x, sure, though one could engage in sophistry and argue that any 2 integers just form a single larger integer :P | 16:45 | ||
note I didn't say how large an "integer" is :) | |||
TimToady doesn't know offhand if 64 bits is enough to make people comfortable about lack of collisions | 16:47 | ||
but anyway, types that know how to make integer identities is the long-term goal | 16:48 | ||
buggable | ???????????? It's time for the monthlyAccidental /win Lottery ???????????? We have ballots submitted by users! And the winner is... | 17:45 | |
True | |||
Zoffix | disregard :) | 17:48 | |
m: sub foo { my %h = :42a, :55b; (%h, 42, 72) }; my (%h, $x, $y) = foo; dd [ %h, $x, $y ] | 17:52 | ||
camelia | [{"42" => 72, :a(42), :b(55)}, Any, Any] | ||
Zoffix | Looks like a bug to me. I didn't ask it to be slurpy... | 17:53 | |
mc: sub foo { my %h = :42a, :55b; (%h, 42, 72) }; my (%h, $x, $y) = foo; dd [ %h, $x, $y ] | |||
committable6 | Zoffix, ¦2015.12: «[{"42" => 72, :a(42), :b(55)}, Any, Any]» | ||
Zoffix | shocking no one found that before :S | ||
Or am I *supposed* to bind to it? | |||
mc: sub foo { my %h = :42a, :55b; (%h, 42, 72) }; my (%h, $x, $y) := foo; dd [ %h, $x, $y ] | 17:54 | ||
committable6 | Zoffix, ¦2015.12: «[{:a(42), :b(55)}, 42, 72]» | ||
Zoffix | Ah. I guess I am. Nevermind | ||
ugexe | my $scalar; my $fh = IO::Handle.new but role { method print($stuff) { $scalar ~= $stuff; }; method print-nl { self.print("\n") } }; $fh.say("OH HAI"); say $scalar; # Zoffix, did you see this doesn't work anymore (for better or worse)? | 18:05 | |
$fh.print("OH HAI"); still works though | |||
Zoffix | Yeah, I saw. | ||
I don't see why .say need to be defined in terms of .print and .print-nl | 18:06 | ||
easier to make fake handles? | |||
.say => arg.gist => .print + .print-nl; .put => arg.Str => .print + .print-nl | 18:07 | ||
yea | |||
ugexe | the only thing i can see is maybe you need an addition .Str in the new multi? | 18:12 | |
Zoffix | I'll make everything go via .print. So one could do class IO::FakeHandle is IO::Handle { method print { do-stuff-with-data } }; and be covered for all use cases | 18:18 | |
Will do in ~5 hours | |||
Zoffix & | 18:19 | ||
nine | Overriding print and expecting to see a change in say is programming to an implementation rather than an interface. That behavior was never promised and promising it would rob us of an important optimization opportunity. | 18:21 | |
Zoffix | Well, not everything (e.g not .write); but: .say, .put, .printf, .print-nl | ||
m: <do-it don't-do-it>.pick.say | 18:22 | ||
camelia | do-it | ||
Zoffix | bah | ||
nine: well, we do similar stuff in Iterator. You can define .push-all, but if you don't it'll use .pull-one | 18:23 | ||
nine | As you said: if you don't. But IO::Handle does. | ||
Zoffix | I see. | 18:24 | |
nine | Also .push-all is just an optimization while .say does have different semantics to .print | ||
Zoffix | m: say "foo bar ber" ~~ m:g/ < foo bar ber > / | 18:25 | |
camelia | (「foo」 「bar」 「ber」) | ||
Zoffix | Cool | ||
nine | Very different in fact as .say is targeted at humans and thus uses .gist for stringification, while .print is a much more low level output mechanism. | ||
Zoffix | OK. Then, I'll leave it as is. | 18:26 | |
\o/ I'm using Perl 6 in production, while making money for it \o/ | 19:12 | ||
Replaced a 14-line bash script with an 8-line Perl 6 script :P | |||
stmuk | does anyone have a Windows system handy? | ||
Zoffix | (well, and added a feature to it too) | ||
stmuk: I do | |||
Win7 | |||
buggable | Zoffix, Thank you for entering Accidental /win Lottery! The next draw will happen in 4 weeks, 2 days, 4 hours, 47 minutes, and 13 seconds | ||
Zoffix | buggable: dammit! that wasn't it! | ||
stupid robot | 19:13 | ||
Win7 | 19:15 | ||
/win7 | |||
buggable | Zoffix, Thank you for entering Accidental /win Lottery! The next draw will happen in 4 weeks, 2 days, 4 hours, 44 minutes, and 32 seconds | ||
Zoffix | stmuk: what'd you need? | 19:16 | |
OK, I'll step away then :) | 19:19 | ||
ZofBot: start | |||
ZofBot | Zoffix, push: :42gihub | ||
Zoffix | Interesting... | 19:20 | |
stmuk | quick test of thnew msi | ||
Zoffix | Ah, the start only works via /msg I guess | ||
stmuk | errr | ||
Zoffix | stmuk: OK, where is it? | ||
stmuk | I'm still scping | ||
Zoffix | OK, ping me when ready | ||
stmuk | it should be a few mins only | 19:21 | |
Geth | rakudo: MasterDuke17++ created pull request #1074: Make some X::Invalid::Concreteness attributes Bool |
||
stmuk | ADSL-- # too A | 19:22 | |
Zoffix | well, fwiw, I'm having issues running the uninstaller for 2016.11 star :/ tells me it can't find some shortcut and then aborts the whole thing :/ | ||
Zoffix just shift+del the C:/rakudo | 19:23 | ||
And M:/.zef and M:/.perl6 | |||
stmuk | yes I think someone else reported that as well .. it really needs love from someone who uses Windows more than 10 mins every 3 months (like me) | 19:24 | |
Zoffix uses Windows 100% at home :) | 19:25 | ||
But not for coding... :) | |||
Geth | rakudo/nom: 85c54db880 | (Daniel Green)++ | src/core/Exception.pm Make some X::Invalid::Concreteness attributes Bool These are Boolean options, so coerce them to Bool when called from BOOTSTRAP.nqp. |
19:26 | |
rakudo/nom: 701dab3cb8 | lizmat++ (committed using GitHub Web editor) | src/core/Exception.pm Merge pull request #1074 from MasterDuke17/minor_fix_to_X_Invalid_Concreteness_exception Make some X::Invalid::Concreteness attributes Bool |
|||
stmuk | gaming? | ||
stmuk | I/ | ||
Zoffix | Yeah. And to run a Linux VM in in which I do the coding :) | ||
stmuk | I've been tempted by thimbleweed park | ||
MasterDuke_ | lizmat: thanks. part of making the currently broken roast tests better | ||
stmuk | pl6anet.org/drop/rakudo-star-2017.0...0(JIT).msi | 19:28 | |
MasterDuke_ | i used to use windows for gaming only, but now games are so much better about running natively in linux and/or wine has gotten really good that i've 100% switched to linux | ||
stmuk | of course .1 is .3 | ||
Zoffix | downloading; 3m left | 19:29 | |
My glowing keyboard doesn't work in Linux :) | 19:30 | ||
Well, the custom buttons and custom lighting doesn't | |||
tadzik | I thought I'm on #gamingonlinux for a second there :o | ||
Zoffix | stmuk: so what am I testing? Just that it installs and works? | 19:34 | |
stmuk | yes | ||
say "hello world" | |||
Zoffix | "Security warning: The publisher cannot be verified"... Amusing that one of the buttons it provides is "Run" :) Run... away? :) | 19:35 | |
stmuk | yes its not signed or whatever | ||
Zoffix | "Warning 1909.Could not create Shortcut Rakudo Perl 6.lnk. Verify that the destination folder exists and that you can access it" | 19:37 | |
Is it trying to make it on Desktop? | |||
C:\Users\zoffix>perl6 -v | 19:38 | ||
This is Rakudo version 2017.04.3 built on MoarVM version 2017.04-53-g66c6dda | |||
stmuk | I've never seen that .lnk message it should just install under c:\rakudo | ||
Zoffix | C:\Users\zoffix>perl6 -e "say 'It works!'" | ||
ugexe | timotimo: the telemeh commits seem to have broken appveyor windows builds | ||
Zoffix | It works! | ||
stmuk | yay! | 19:39 | |
developers! developers! developers! | |||
Zoffix | ZofBot: developers! developers! developers! | ||
ZofBot | Zoffix, * Perl 5's "${ | ||
Zoffix | stmuk: I guess I'm done? :) | ||
Or do I need to test anything else | |||
ugexe | timotimo: ci.appveyor.com/project/ugexe/perl...1.0.5#L388 | 19:40 | |
stmuk | that's probably enough .. | ||
ugexe | i should probably not be doing --gen-moar=HEAD huh | ||
Zoffix | The .lnk message was the one it was complaining about when I tried to uninstall 2016.11 and it might be because my desktop isn't in C:\Users\blah\Desktop or whatever | 19:41 | |
*too; it was mentioned when trying to uninstall as well as when I was installinbg 2017.04 | |||
Zoffix & | 19:42 | ||
stmuk | at least the MSI complaints showed usage | 19:45 | |
the next version gets telemetry :> | |||
timotimo | ugexe: no! no!! NO!!!! >:( | 20:30 | |
why is it trying to define the intrinsic? | 20:31 | ||
it's only supposed to do that if the compiler doesn't have it | |||
i just don't know any more :( | |||
Can't spawn "./try": Inappropriate I/O control operation at build/probe.pm line 480. ?!?!? | 20:32 | ||
samcv | good afternoon | 20:45 | |
Zoffix, on windows does $*CWD use '/' for the directory separators? | 20:46 | ||
Zoffix | samcv: no idea. Will try in ~mins | 20:47 | |
samcv | thx | ||
Zoffix | in ~20mins | ||
samcv | buggable, enter me in the lottery that gives fantastic prizes | 20:48 | |
Zoffix | You can only enter by accident! :) | ||
samcv | how can i do an accident on purpose? | ||
Zoffix | /win | 20:49 | |
/win 42 | |||
buggable | Zoffix, Thank you for entering Accidental /win Lottery! The next draw will happen in 4 weeks, 2 days, 3 hours, 10 minutes, and 13 seconds | ||
samcv | /win 1 | ||
buggable | samcv, Thank you for entering Accidental /win Lottery! The next draw will happen in 4 weeks, 2 days, 3 hours, 10 minutes, and 1 second | ||
samcv | yay | 20:50 | |
/lose 12 | |||
apparentnly another codepoint you can't put in NTFS filenames is the ¥ symbol | 20:55 | ||
because... the japanese ascii codepage renders a backslash as a yen symbol. so you can't put actual unicode yen symbols in ntfs because reasons | 20:56 | ||
thanks windows | |||
ugexe | perl6 -e "'¥'.IO.spurt('foo');" and perl6 -e "say '¥'.IO.slurp;" still works though (05/02/2017 04:56 PM 3 ¥) | 20:58 | |
samcv | heh | 20:59 | |
windows police are going to get you! | |||
probably will break things with certain apis and it tries to acces folder\\ or maybe it'll just access the same folder? | 21:00 | ||
not sure what windows does i fthere's two backslash as a directory separator | |||
ugexe | probably depends which file system api it uses | 21:01 | |
samcv | yep | ||
so very potentially could cause issues | |||
ugexe | dos should work as shown | ||
samcv | hm? | ||
ugexe | explorer... no | ||
samcv | you mean not work properly? | ||
explorer doesn't work right? or dos doesn't | |||
i mean technically you can put a forward slash on an ext4 file/directoryname | |||
ugexe | for instance: you can create files you cant even see in explorer (let alone make) | 21:02 | |
samcv | but you'll never be able to access the file. and if you run fsck it will remove any / it finds | ||
ugexe, so you can create a ¥ named file but can't see it in explorer? | |||
ugexe | actually I can see it in explorer. but there are many instances where this is the case yes | ||
`perl6 -e "'foo:bar'.IO.spurt('...')"` is a good example of misparsed on windows | 21:05 | ||
creates a file named "foo" | 21:06 | ||
samcv | also i'm curious. what unicode codepoints contain a forwardslash | ||
in the bytes when encoded as utf-8? do any exist? | |||
if so then i wouldn't be able to access the file | |||
ugexe | you would, you just wouldn't know where | 21:07 | |
although if the mistake gets round tripped it doesnt matter | |||
samcv | well the kernel code literally just looks for any forward slash bytes i believe | 21:08 | |
ugexe | using the example above: `perl6 -e "say 'foo:bar'.IO.slurp"` says the right thing, even though there is no file foo:bar (only foo) | ||
samcv | while (*name=='/') # traverses directories | ||
: is allowed as bacslash? | 21:09 | ||
ugexe | no, its disallowed entirely | ||
at least in the file system api most people think of. the underlying file system however lets you do all sorts of bad stuff | 21:10 | ||
samcv | u: .chr.encode.list.grep({ $_ == 「\」.ord}) | 21:11 | |
unicodable6 | samcv, U+002E FULL STOP [Po] (.) | ||
samcv, U+0063 LATIN SMALL LETTER C [Ll] (c) | |||
samcv, 39 characters in total: gist.github.com/269d754537392dcf28...59239bbb05 | |||
Zoffix | C:\Users\zoffi>perl6 -e "say $*CWD; use nqp; say nqp::cwd" | ||
"C:\Users\zoffi".IO | |||
C:\Users\zoffi | |||
samcv: ^ it uses \ slash | |||
samcv | u: { .chr.encode.list.grep({ $_ == 「\」.ord}) } | ||
unicodable6 | samcv, Error encoding UTF-8 string: could not encode Unicode Surrogate codepoint 55296 (0xD800) in block <unit> at /tmp/uYmOC3Hx3F line 2 «exit code = 1» | ||
samcv | dammit | ||
u: { try { .chr.encode.list.grep({ $_ == 「\」.ord}) } } | |||
AlexDaniel, should ignore unicode surrogates | 21:12 | ||
unicodable6 | samcv, «timed out after 30 seconds» «exit signal = SIGHUP (1)» | ||
AlexDaniel | samcv: hm interesting | ||
samcv | yep | 21:13 | |
AlexDaniel | I thought it would catch stuff like this | ||
samcv | you only catch ilegal yes? | ||
MasterDuke_ | on ntfs, isn't 'foo:bar' a file named 'foo' with a resources stream attachend named 'bar'? | ||
AlexDaniel | oh wait, but isn't in your own code? | ||
m: say 55296.chr.encode | |||
camelia | Error encoding UTF-8 string: could not encode Unicode Surrogate codepoint 55296 (0xD800) in block <unit> at <tmp> line 1 |
||
samcv | AlexDaniel, U+D800 >= i <= U+DFFF # not allowed in utf-8 | ||
perl 5 will do it without battitng an eye though | 21:14 | ||
AlexDaniel | u: { U+D800 < i > U+DFFF and .chr.encode.list.grep({ $_ == 「\」.ord}) } | ||
unicodable6 | AlexDaniel, gist.github.com/74c5f77f514ad250ad...4b069f2786 | 21:15 | |
AlexDaniel | u: { 0xD800 < i > 0xDFFF and .chr.encode.list.grep({ $_ == 「\」.ord}) } | ||
unicodable6 | AlexDaniel, Can not convert 0+1i to Real: imaginary part not zero in block <unit> at /tmp/BJnIkAnMUz line 2Actually thrown at: in block <unit> at /tmp/BJnIkAnMUz line 2 «exit code = 1» | ||
samcv | what you doing.... not actual code XD | ||
AlexDaniel | u: { 0xD800 < $_ > 0xDFFF and .chr.encode.list.grep({ $_ == 「\」.ord}) } | ||
Zoffix | u: { use NativeCall; sub kill(int32) is native {}; kill $*PID; } | ||
AlexDaniel | :| | ||
Zoffix | :} | ||
samcv | hahah | ||
unicodable6 | AlexDaniel, «timed out after 30 seconds» «exit signal = SIGHUP (1)» | 21:16 | |
Zoffix, «exit signal = SIGABRT (6)» | |||
Zoffix | awww | ||
AlexDaniel | unicodable6++ | ||
Zoffix-- | |||
Zoffix | :) | ||
AlexDaniel | samcv: why not? That should definitely work | ||
it's just too slow | |||
samcv | oh it should if you don't use `i` | ||
you gotta thread it | 21:17 | ||
split into like 4 parts | |||
then get results of the promises. | |||
AlexDaniel | and then some poor soul decides to use a counter in his code | ||
samcv | why would you do that | 21:18 | |
i can't think of any reason | |||
u: { $++ == $_ } | 21:19 | ||
unicodable6 | samcv, U+0000 <control-0000> [Cc] (control character) | ||
samcv, U+0001 <control-0001> [Cc] (control character) | |||
AlexDaniel | come on unicodable, you are not broken | 21:20 | |
you can handle this | |||
:| maybe not | 21:21 | ||
samcv | ok well i'm trying # for ^0x1FFFFF { try { die $_ if .chr.encode.list.grep({ $_ == 「\」.ord }) } } | 21:22 | |
ok i got Nil | |||
i wonder if that's intentional | |||
ugexe | hmm Grammar::HTTP seems to have started getting some weird Substring length cannot be negative errors around 2017.03 | 21:23 | |
samcv | gonna check if \0 can exist inside any other things. i mean it SHOULD be able to exist in an array of 32 bit unsigned integers | ||
like 8bits all 0 should be able to exist on an 8 bit boundary | |||
when the 32bit encoded number is not 0 | 21:24 | ||
but i havn't gotten that to trigger in MVM even though i cover for a case it might occur. | |||
this is not utf-8 encoded mind yo just MVM's representation of strings | 21:26 | ||
ugexe | but Grammar::HTTP is only a grammar, it doesn't call substring or anything itself | ||
samcv | hmm. can i reproduce this ugexe by running tests suite? | 21:27 | |
ugexe | yeah | ||
Zoffix | Substring length (-4) cannot be negative | ||
ugexe | travis-ci.org/ugexe/Perl6-Grammar-...1631#L1014 | ||
Zoffix | in any Str at /home/zoffix/.rakudobrew/moar-nom/install/share/nqp/lib/QRegex.moarvm line 1 | ||
in method request-target at /home/zoffix/.zef/store/Perl6-Grammar--HTTP.git/df065bd00aadec7c49f1d8083a050ff449fbbba0/lib/Grammar/HTTP/Actions.pm6 (Grammar::HTTP::Actions) line 182 | 21:28 | ||
.Str on Match it looks like :/ | |||
AlexDaniel | another uncurse curse? | 21:30 | |
Zoffix | If 2017.03, then no | 21:31 | |
It was merged ~Apr 15th | |||
s: ('' ~~ /./), 'Str', \() | 21:33 | ||
SourceBaby | Zoffix, Sauce is at github.com/rakudo/rakudo/blob/701d.../Nil.pm#L7 | ||
Zoffix | s: ('.' ~~ /./), 'Str', \() | ||
SourceBaby | Zoffix, Something's wrong: ERR: No such method 'cando' for invocant of type 'NQPRoutine' in block at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 26 in sub sourcery at /home/zoffix/services/lib/CoreHackers-Sourcery/lib/CoreHackers/Sourcery.pm6 (CoreHackers::Sourcery) line 29 in block <unit> at -e line 6 | ||
Zoffix | You suck. | ||
Zoffix blames TimToady :P | |||
AlexDaniel | buggable: /win | 21:35 | |
AlexDaniel shrugs | |||
Zoffix | m: say "." ~~ /.<(./ | ||
camelia | Nil | ||
Zoffix | I forget, how to make it return "failed match" thing? | ||
No one knows? :) | 21:36 | ||
ZofBot: what a bunch of n00bs! | 21:37 | ||
ZofBot | Zoffix, com/nxadm/rakudo-pkg/releases/tag/2017 | ||
AlexDaniel | m: grammar { token TOP { "foo" } }.subparse("meowfoobar").say | ||
camelia | #<failed match> | ||
Zoffix | Oh, it's only from .subparse | 21:38 | |
Thanks | |||
m: grammar { token TOP { "foo" } }.subparse("meowfoobar").Str.say | |||
camelia | |||
Zoffix | Hm. There goes my hypothesis. | ||
AlexDaniel | m: say "abc" ~~ /)> . <(/ | ||
camelia | 「bc」 | ||
AlexDaniel | c: releases say "abc" ~~ /)> . <(/ | 21:39 | |
committable6 | AlexDaniel, ¦2015.12,2016.01.1,2016.02,2016.03,2016.04,2016.05,2016.06,2016.07.1,2016.08.1,2016.09,2016.10,2016.11,2016.12,2017.01,2017.02,2017.03: «#<failed match>» ¦2017.04.3,HEAD(701dab3): «「bc」» | ||
Zoffix | But basically .Str'ing a match gives that error and .perl'ing it hangs. So there's some sort of match that's busted | ||
hah | |||
AlexDaniel: now THAT looks like uncurse curse :) | |||
AlexDaniel | oh wait, it's actually a bug? | 21:40 | |
I didn't really notice | |||
Zoffix | Sure | ||
AlexDaniel | bisect? | ||
bisect: say "abc" ~~ /)> . <(/ | |||
bisectable6 | AlexDaniel, Bisecting by output (old=2015.12 new=701dab3) because on both starting points the exit code is 0 | ||
Zoffix | Likely will say can't build or whatever | ||
bisectable6 | AlexDaniel, bisect log: gist.github.com/79a7f01b4a7c8f371b...f015a87eed | ||
AlexDaniel, There are 2 candidates for the first “new” revision. See the log for more details | |||
AlexDaniel | not really | ||
github.com/rakudo/rakudo/commit/5d...ba60d98251 | 21:41 | ||
Zoffix | Well, it's definitely uncurse. We already had a bug with capture markers due to it. | ||
AlexDaniel | github.com/rakudo/rakudo/commit/3c...4cc43a0c67 | ||
so it is 5d68f1ff1a8b32570a686bb8151805ba60d98251 | |||
ugexe | m: my $x = "say" ~~ /$<foo>=(\w+) {} $<bar>=<::($<foo>)>/; | ||
camelia | 「say」 foo => 「say」 P6opaque: no such attribute '$!pos' in type Match when trying to get a value in block <unit> at <tmp> line 1 |
||
Zoffix | ugexe: is that the issue with Grammar::HTTP? | 21:42 | |
ugexe | nah, just wanted to see if it was different then what i get locally | ||
Zoffix | Ah | ||
I'm still trying to hunt it :) | |||
ugexe | locally it says "Cusror.new" followed by the P6opaque bit | ||
Zoffix | "Cusror"? like actually mistyped? | 21:43 | |
ugexe | oh no, Cursor.new | ||
AlexDaniel | Zoffix: alrighty, what should be done with the bug above? | ||
Zoffix: should I submit a regression ticket or something? | |||
or are both outputs buggy? | |||
Zoffix | Looking at the P6opaque bit and at github.com/rakudo/rakudo/commit/5d...ba60d98251 looks like there are more things to change $!pos to self.to or whateverf | ||
ugexe | Grammar::Debugger shows it blowing up when matching 'to' now that i see you mention self.to | 21:44 | |
Zoffix | AlexDaniel: the 「bc」 thing is definitely a bug. The #<failed match> sounds about right. I don't know if we have a term for "regex matched, but no match stuff was within match markers or whatever". But yeah, please file a ticket, if you can, and ping TimToady with it | 21:45 | |
AlexDaniel | “Ghost elements in array”… WWWooooOOOooooOOOOOOooooo | 21:46 | |
Zoffix | And the m: my $x = "say" ~~ /$<foo>=(\w+) {} $<bar>=<::($<foo>)>/; too is a bug | ||
And the Grammar::HTTP is a bug that has something to do with calling .Str on a #<failed match> | 21:47 | ||
ZofBot: it might all be related!!! :o | |||
ZofBot | Zoffix, buckets" property instead | ||
Zoffix calls it a day | |||
\o | |||
AlexDaniel | .tell TimToady You may be interested in rt.perl.org/Ticket/Display.html?id=131247 | 21:52 | |
yoleaux | AlexDaniel: I'll pass your message to TimToady. | ||
Geth | roast: 016d029601 | (Daniel Green)++ | 2 files Adapt tests for recent change in Exception type Because of Rakudo change github.com/rakudo/rakudo/pull/1073 |
22:14 | |
MasterDuke_ | m: role R { method m (*@a) { ... } }; class C does R { multi method m (*@a) {} } | 23:32 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Method 'm' must be implemented by C because it is required by roles: R. at <tmp>:1 |
||
MasterDuke_ | i was reading rt.perl.org/Ticket/Display.html?id=114930 and even though it's just "an ordering problem", i.e., roles are composed before proto are auto-gen'ed, i assume the fix is not as putting `magically_auto_gen_protos();` before `magically_compose_roles()`? | 23:34 | |
*not as simple as | 23:36 |