»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by masak on 12 May 2015. |
|||
00:04
colomon joined
00:24
mr_ron left
00:26
mr_ron joined
|
|||
mr_ron | m: sub md5-block(@H is rw, @X) {} | 00:26 | |
camelia | rakudo-moar 0132b6: OUTPUT«5===SORRY!5=== Error while compiling /tmp/JG3vifxubICan only use 'is rw' on a scalar ('$' sigil) parameterat /tmp/JG3vifxubI:1» | ||
00:27
colomon left
|
|||
Timbus_ | mr_ron: you might find it's already 'rw' enough for you | 00:43 | |
mr_ron | Timbus: its an error I'm getting from building Task::Star when building Digest::MD5 which does that on line 41 of MD5.pm breaking my Task::Star build ... | 00:54 | |
Timbus_ | oh | 00:55 | |
time to bug cosimo ? | 00:56 | ||
oh snap haha you're already on the case | 00:58 | ||
mr_ron | I cloned the repository, took out the rw, and pointed projects.json at my clone. It got me around the problem. I may bug moritz++ if the Task::Star build finishes. | ||
s/cloned/forked/ | 00:59 | ||
01:02
skids joined
|
|||
mr_ron | panda completed installing the revised Task::Star | 01:04 | |
.tell moritz I tried to install rakudo star with rakudobrew and panda install Task::Star. It failed to install Digest::Md5 because line 41 of MD5.pm reads "sub md5-block(@H is rw, @X) {" and the current rakudo does not like the "is rw". I forked and took out the "is rw" and pointed projects.json at my fork and Task::Star built OK. Could you take out the "is rw". | 01:12 | ||
yoleaux | mr_ron: I'll pass your message to moritz. | ||
mr_ron | .tell moritz s/Could you takeout .../Could you please take out the "is rw"?/ | 01:13 | |
yoleaux | mr_ron: I'll pass your message to moritz. | ||
01:28
mattprelude left
01:33
colomon joined
01:38
xinming_ joined
01:40
xinming left
01:43
vendethiel joined
02:06
vendethiel left
|
|||
dalek | q: 8964bde | ShimmerFairy++ | answers.md: Add answer for needing unspace with method calls It's a bit long, but hopefully comprehensive enough to be a satisfactory answer. Improvements of course welcome :) . |
02:09 | |
q: 6b3cecc | ShimmerFairy++ | answers.md: A couple grammar/wording improvements. |
02:12 | ||
02:21
aborazmeh joined,
aborazmeh left,
aborazmeh joined
02:39
noganex joined
02:42
noganex_ left
02:43
mr_ron left
|
|||
dalek | kudo-star-daily: cce58f2 | coke++ | log/ (9 files): today (automated commit) |
02:43 | |
02:45
mr_ron joined
02:48
nightfrog left
|
|||
dalek | kudo/nom: 73836e1 | TimToady++ | src/core/ (7 files): infixes that should likely be pure |
02:50 | |
02:51
nightfrog joined
02:58
xinming_ left,
xinming joined
|
|||
TimToady | .tell awwaiid --> belong in the signature because it enables return typing on lambdas | 03:20 | |
yoleaux | TimToady: I'll pass your message to awwaiid. | ||
03:25
uberbaud left
03:44
adu joined
|
|||
zostay | m: my $x = 10; $x max= [max] 4, 6, 8; $x.say; | 03:48 | |
camelia | rakudo-moar 73836e: OUTPUT«10» | ||
03:51
mr_ron left
03:52
mr_ron joined
04:01
AlexDaniel left
04:02
khw left
04:26
rmgk_ joined,
rmgk is now known as Guest42982,
rmgk_ is now known as rmgk
04:29
tokuhiro_ joined
04:30
Guest42982 left
04:34
tokuhiro_ left
04:35
mr_ron left
05:13
RabidGravy joined
|
|||
awwaiid | interesting reason TimToady. I will noodle that. | 05:16 | |
yoleaux | 03:20Z <TimToady> awwaiid: --> belong in the signature because it enables return typing on lambdas | ||
05:24
mr_ron joined
05:35
tokuhiro_ joined,
rurban joined
05:38
kaare__ joined
05:39
tokuhiro_ left
|
|||
adu | noodle? | 05:45 | |
05:50
aborazmeh left
|
|||
moritz | .tell mr_ron that's what the R* releases are for: they are snapshots where the version of rakudo and the modules match | 05:57 | |
yoleaux | 01:12Z <mr_ron> moritz: I tried to install rakudo star with rakudobrew and panda install Task::Star. It failed to install Digest::Md5 because line 41 of MD5.pm reads "sub md5-block(@H is rw, @X) {" and the current rakudo does not like the "is rw". I forked and took out the "is rw" and pointed projects.json at my fork and Task::Star built OK. Could you take out the "is rw". | ||
moritz: I'll pass your message to mr_ron. | |||
01:13Z <mr_ron> moritz: s/Could you takeout .../Could you please take out the "is rw"?/ | |||
dalek | kudo/nom: cb25b2f | TimToady++ | src/Perl6/ (2 files): Allow infix:<.> if next thing is alphabetic As much as I mistrust "fluent" programming, we already have an infix:<.=> operator, so it's not a big stretch to have infix:<.>. We limit it to actual method names so that we can detect (most) accidental use of P5's use of . for concatenation. Note that this is a term/infix distinction now, so .meth where a term is expected still defaults to $_. Community standards for method cascades will likely ask for whitespace around infix:<.> to make a visual disinction from the term form, but we don't enforce that, if for no other reason than to refrain from giving the fluent programmers something to yammer on about. Basically, I've decided that the slight possibility for greater confusion is outweighed by consistency with .= and utility of have a . that can also serve as a precedence modifier. (Since both .= and . parse leftward with item assignment precedence, but rightward as a term.) |
06:04 | |
ShimmerFairy | TimToady: ironically the "fluent programming" page on wikipedia isn't very good at saying what it actually is, so I still don't quite understand "fluent" programming :P | 06:06 | |
TimToady | Anyway, we can now do cascaded methods to the next line without a \ as long as it's a normal looking method | 06:09 | |
ShimmerFairy | Sounds fair to me, though I personally have never actually lined up method calls, come to think of it :) . It's always been either method arguments or nested sub calls (e.g. nqp::op(...) "trees") | 06:10 | |
06:11
rurban left
|
|||
TimToady | though I don't like the style, I decided it was allowable without too much pain to the rest of us :) | 06:12 | |
ShimmerFairy | I suppose you could think of the dot as a strange, twisted kind of concatenation, in that you bring together a bunch of things to produce one singular object, which is how read things like +$foo.bar.baz.quux to remember the prefix is after method calls. | ||
TimToady | but . will let you run the + before the method now, due to precedence, and the spacing will be intuitive | 06:13 | |
ShimmerFairy | I also think P5-isms are less of a concern now, enough that I don't worry about this change interfering with the worryobs :) | ||
TimToady: so +$foo.bar means +($foo.bar), and +$foo . bar means (+$foo).bar ? Sounds almost intuitive :P | 06:14 | ||
TimToady | pretty nearly almost :) | ||
JimmyZ heard that many guys around the Community are waiting for the 1.0 beta release news .. | 06:15 | ||
ShimmerFairy | TimToady: also, thanks for invalidating my carefully constructed FAQ answer mere hours after pushing it :P . Though while writing it I was thinking "could someone write an infix:<.> ? But that would probably require a slang, being a 'special' operator" | 06:16 | |
TimToady | JimmyZ: well, it's a beta of an official release, it's not an official beta release :) | 06:19 | |
but we're certainly clamping down on language changes after my birthday, and if we liked, we could label a version of the test suite as "first beta" | |||
but the beta is the test suite, not an actual release, so October's rakudo will be the first "beta" rakudo really, in my mind | 06:20 | ||
ShimmerFairy | TimToady: is my proposed S32::Stringy too much of a change this close, then? Honestly, part of me would be happy to shelve it for 6.1, and focus again on improving Pod6 instead. :) | 06:21 | |
TimToady | unless we want to do an extra release next week just so we can say "supports 6.birthday" | ||
I need to do more than just skim it | 06:22 | ||
ShimmerFairy | TimToady: I'm alright with saving it for a future Perl 6. It's not a revolutionary change to S32::Str, but I could easily see it being too close for comfort by now. | 06:23 | |
JimmyZ | TimToady: many chinese friends ask me about it(the news) :P | ||
ShimmerFairy | .oO(Test Suite 6.🎂 ) |
||
06:24
mr_ron left
|
|||
dalek | kudo/nom: db0c46e | moritz++ | lib/NativeCall.pm: NativeCall: explicitly-manage does not need its string arg "is rw" it modifies the string by mixing something in, not via the container. This should fix a test failure in DBIish, which calls explicitly-manage on a non-container |
06:35 | |
TimToady | m: say -42 . abs + 5 | 06:38 | |
camelia | rakudo-moar cb25b2: OUTPUT«47» | ||
TimToady | m: -42 . abs . say | ||
camelia | rakudo-moar cb25b2: OUTPUT«42» | ||
ShimmerFairy | reminds me of lisp or haskell all of a sudden :) | 06:39 | |
06:41
Fleurety joined
|
|||
ShimmerFairy | m: say -42.abs + 5 | 06:41 | |
camelia | rakudo-moar cb25b2: OUTPUT«-37» | ||
ShimmerFairy | And I suppose it's one way to solve the -42 issue that came up a while back :) | ||
06:44
mr_ron joined
|
|||
TimToady | JimmyZ: otoh, the September release is pretty close to beta quality | 06:50 | |
JimmyZ | TimToady: yeah, they are waiting for the news(about 1.0 beta), not the star relases, haha | 06:52 | |
06:53
Loren joined
|
|||
Loren | afternoon, #perl6 | 06:53 | |
JimmyZ | TimToady: and happy birthday! | 06:56 | |
06:57
adu left
|
|||
TimToady | yup, now it's my birthday here :) | 07:03 | |
We are now officially in beta. :) | 07:04 | ||
JimmyZ | ;) | ||
ShimmerFairy | 🎂 ! :) | 07:06 | |
dalek | kudo/nom: 96c2ec9 | TimToady++ | src/core/Perl.pm: change to 6.Birthday |
07:08 | |
TimToady heads off to sleep the first part of his birthday... | 07:10 | ||
JimmyZ | good night | 07:11 | |
Loren | good night .. :) | 07:12 | |
07:24
_itz_ joined
07:32
mr_ron left
07:36
skids left
07:37
tokuhiro_ joined
07:41
tokuhiro_ left
07:49
araujo_ left,
vike left
08:12
darutoko joined
|
|||
masak | good antenoon, #perl6 | 08:18 | |
happy b-day, TimToady. wishing you peace, and long life. | 08:19 | ||
DrForr | Morning. | ||
TEttinger | I hope TimToady gets a gift of hundreds of pull requests fixing every issue in Perl6 for the next year | 08:20 | |
08:20
FROGGS joined
08:24
haroldwu left
08:25
rurban joined
|
|||
Loren | That's a pretty gift. | 08:31 | |
TEttinger | it might take a year to arrive | 08:33 | |
08:38
tokuhiro_ joined
08:42
tokuhiro_ left
08:44
adu joined
08:50
vendethiel joined
08:51
araujo joined
09:14
nbd_ joined
09:16
xinming left
09:17
xinming joined
09:24
xinming left
09:25
xinming joined
|
|||
[Tux] | test 50000 35.068 34.967 | 09:26 | |
test-t 50000 35.727 35.626 | |||
09:27
adu left
|
|||
FROGGS | o/ | 09:36 | |
yoleaux | 26 Sep 2015 20:16Z <lizmat> FROGGS: I commented on your comment on gist.github.com/lizmat/f3807956c354c14902a3 | ||
09:38
espadrine left
|
|||
FROGGS | .tell lizmat I commented on your comment on my comment :o) - gist.github.com/lizmat/f3807956c35...nt-1582671 | 09:44 | |
yoleaux | FROGGS: I'll pass your message to lizmat. | ||
09:49
spider-mario joined
09:56
yqt joined
09:58
brrt joined
10:00
pmurias joined
10:14
abaugher left,
abaugher joined
10:19
rindolf joined
10:20
mattprelude joined
10:26
Khisanth left
|
|||
brrt | good * #perl6 | 10:28 | |
10:29
TEttinger left
10:30
leont joined,
Akagi201 joined
10:32
Khisanth joined
10:33
brrt left
10:36
luiz_lha left
10:40
tokuhiro_ joined
|
|||
lizmat wishes TimToady a Happy Birthday | 10:42 | ||
yoleaux | 09:44Z <FROGGS> lizmat: I commented on your comment on my comment :o) - gist.github.com/lizmat/f3807956c35...nt-1582671 | ||
lizmat | and thanks him for the give that is Foo\n.method :-) | ||
[Tux] (and many other people) will be very happy with that | 10:43 | ||
*gift | |||
10:44
tokuhiro_ left,
emilbarton joined
|
|||
lizmat | m: dd Int.new(42); Int .new(42); Int. new(42) | 10:45 | |
camelia | rakudo-moar 96c2ec: OUTPUT«42» | ||
lizmat | m: dd Int.new(42); dd Int .new(42); dd Int. new(42) | ||
camelia | rakudo-moar 96c2ec: OUTPUT«424242» | ||
lizmat | :-) | ||
10:46
yqt left
|
|||
emilbarton | hello, I'm puzzled because I have a class with 'has $.id' but somewhere I get "cannot assign to a readonly value or variable" for a regex like 'if $_.id ~~ /^<$user>$/', in other places in my script the same regex works normally. Can you help me solve this? | 10:48 | |
10:48
mr_ron joined
|
|||
dalek | ast: a2e9472 | lizmat++ | S02-lexical-conventions/minimal-whitespace.t: Adapt tests to new reality of cb25b2f475f31335d77 |
10:48 | |
lizmat | emilbarton: could you create a gist of that ? | 10:49 | |
10:49
Khisanth left
|
|||
psch | m: class A { has $.b }; my A $a .= new( :b("foo") ); say $_.b ~~ /foo/ given $a; # must be something more involved | 10:50 | |
camelia | rakudo-moar 96c2ec: OUTPUT«「foo」» | ||
emilbarton | lizmat: no I'm sorry | ||
psch | m: class A { has $.b }; my A $a .= new( :b("foo") ); my $rx = "foo"; say $_.b ~~ /<$rx>/ given $a; # must be something more involved | ||
camelia | rakudo-moar 96c2ec: OUTPUT«「foo」» | ||
moritz | emilbarton: it seems you are trying a writing access on it, like with .id ~~ s/a/b/ or so | 10:51 | |
emilbarton | moritz: but precisely I aint | 10:52 | |
10:52
Alina-malina left
|
|||
emilbarton | psch: thanks, I'll try | 10:52 | |
moritz | emilbarton: then please boil it down to a runnable test case | 10:53 | |
10:53
Alina-malina joined
|
|||
moritz | emilbarton: and submit it as a bug report | 10:53 | |
psch | emilbarton: ...i didn't suggest anything? i just demonstrated that what you describe should work :) | ||
emilbarton | ok, it happens just after instanciation | ||
FROGGS | .tell TimToady Happy Birthday! <oȏ> <-- should look like a hug if it is not obvious :o) | 10:54 | |
yoleaux | FROGGS: I'll pass your message to TimToady. | ||
dalek | Iish: a2e3ca9 | moritz++ | t/01-ConnectConfig-PG.t: Avoid uinitialized warning in test |
10:56 | |
moritz | .tell [Tux] Tux/CSV/NLPW-2015/090-hooks.txt uses "@f is rw" in a signature (multiple times); please drop the "is rw"; newest rakudo disallows it on array params | 11:01 | |
yoleaux | moritz: I'll pass your message to [Tux]. | ||
11:01
rurban left
|
|||
[Tux] | moritz, why? | 11:02 | |
yoleaux | 11:01Z <moritz> [Tux]: Tux/CSV/NLPW-2015/090-hooks.txt uses "@f is rw" in a signature (multiple times); please drop the "is rw"; newest rakudo disallows it on array params | ||
11:02
vendethiel- joined,
vendethiel left
|
|||
[Tux] | as in "why is it not allowed on arrays? | 11:02 | |
moritz | [Tux]: because arrays and hashes aren't read-only anyway | ||
[Tux] | afk | ||
ok | |||
moritz | FROGGS: rakudo-p5/v5/src/Perl5/Terms.pm uses 'is rw' on array params (chop and chomp); please drop the "is rw" | 11:06 | |
FROGGS | moritz: does it even compile these days? | 11:09 | |
moritz | FROGGS: I'm sure it does not compile, at least due to the extra "is rw" :-) | 11:10 | |
FROGGS | :o) | ||
jnthn | m: say -42.abs; say -42 .abs; # I love how TimToady++ takes a continued complaint about whitespace not being allowed and makes it mean something in the process of making it significant :) | 11:13 | |
yoleaux | 26 Sep 2015 18:03Z <FROGGS> jnthn: I try to implement 'my $a; "a" ~~ /$a=[.]/' and fail to do that in P6::A... is that something I should be able to do in the actions? | ||
camelia | rakudo-moar 96c2ec: OUTPUT«-4242» | ||
yoleaux | 26 Sep 2015 18:11Z <brrt> jnthn: (poor jnthn for all the spam) i've created a gist with dynvar log results: gist.github.com/bdw/992dfd5b69b7d42f2239 | ||
jnthn | Uh, in the process of making it allowed | 11:14 | |
That visual-pills nicely, especially in the multi-line case. | |||
Happy Birthday, TimToady++ :) | 11:15 | ||
FROGGS | ohh, nice example | ||
jnthn | FROGGS: Well, you may need a little effort to make the parse work out right for the $a=... thing | ||
FROGGS | jnthn: it is parsing it correctly | 11:16 | |
jnthn: but emitting a p6store to that variable in a qast::stmts in a qast::nodelist doesnt work... | |||
lizmat | FROGGS: commented on gist.github.com/lizmat/f3807956c354c14902a3 again :-) | ||
FROGGS | jnthn: the match result will be empty then, and I dunno what to do | ||
lizmat: that still renders v1.2.+ totally useless | 11:18 | ||
lizmat | well, I can't say I disagree with that... | ||
11:19
rmgk left
|
|||
lizmat | but what you're suggesting, is that we can *only* have semantic versioning, and nothing else | 11:19 | |
FROGGS | lizmat: I dont | ||
I say that we let the users give more than one option to chose from, and also a way to be less strict / more flexible | |||
lizmat | ok, so maybe we need a pragma? Allow semantic versioning ? | 11:20 | |
FROGGS | and I also say that you cannot predict what will work out and what does not, so let use give the users a chance to evolve to the optimal solution | ||
no | |||
lizmat | how would you handle difference in auth ? | 11:21 | |
would *that* be an error ? | |||
FROGGS | no, if the user decided to not filter on auth, or to use a regex that is satisfied by two auths (github:FROGGS and pause:FROGGS) then we are not allowed to stand in the users way | 11:22 | |
that's not snake language here, you know :o) | |||
lizmat | so it would load both ? | 11:23 | |
nine | .tell masak the visitor macros are something that I incidentally though about before falling asleep yesterday. Seems like something really useful for implementing something like LINQ and even more, for making Rakudo's optimizer readable. | ||
yoleaux | nine: I'll pass your message to masak. | ||
jnthn | FROGGS: OK, I'll have to take a closer look later :) | 11:24 | |
jnthn bbl | |||
FROGGS | lizmat: no, it will sort the candidates by version, and pick these with the highest version; if the result is not a signle CU --> fail | ||
single* | 11:25 | ||
lizmat | so even major version bump ? | ||
FROGGS | lizmat: if the user did not specify the version at all, sure | ||
because then you don't know there is a bump | |||
lizmat | well, that *really* feels like the noose that is Perl 5 module packaging :-( | 11:26 | |
FROGGS | lizmat: it is like duck typing, you can/want to add type information, but you are not forced to | ||
lizmat | and we make it way too easy for people to step into that noose | ||
well, I think we agree to disagree on this :-) | |||
FROGGS | yeah, sadly :/ | ||
lizmat | personally, I could live with patch level changes, and take the highest | 11:27 | |
anytihing else, I think is asking for trouble in the long run | |||
so I guess we will have to take jnthn up on his offer to put on his pumpkin hat | 11:28 | ||
FROGGS | lizmat: yes, but as I said, it is not up to you to decide... the user is in charge to make clear what exactly (s)he wants | ||
lizmat | we've put several "traps" in Perl 6 code to prevent people coming from Perl 5 to continue with the same "bad" habits | ||
use Foo; | |||
is one of them, in my book | |||
nine | lizmat: there's usually not much difference in API between 0.* and 1.* versions. Even when people stick to semver. | 11:29 | |
lizmat | the thing is this: one of the bad reps of Perl in the world, is the nightmare that is dependency hell | ||
with :auth and :ver , Larry has at least pointed to a way out of that | 11:30 | ||
if we don't lead people that way, then all of that work has really been in vain | |||
and we could as well just drop the whole CUR idea, and just go for Perl 5 semantics | |||
it has brought us this far, why won't it take us further ?? | 11:31 | ||
sorry, but I feel really deeply about this, having had to deal with the dependency nightmare at former $work | |||
and seen the way it stifles moving forward | |||
yes, it is more strict in the beginning | 11:32 | ||
but developers need to know the needs of the sysadmins a bit as well | |||
I see it as being a responsible developer | |||
ShimmerFairy | I think versioning is such a free-form thing in general that adding any kind of enforcement will inevitably make a number of people unhappy. | ||
lizmat | if you say "use Foo" | ||
it just means you don't care | |||
ShimmerFairy | cf. the fact that you can construct a Version object with anything you want | ||
lizmat | and you should in a production environment | 11:33 | |
11:35
mr_ron left,
mr_ron joined
|
|||
ShimmerFairy | FROGGS: I think highest version picking should only happen with packages from the same auth (that is, sort by auths and _then_ versions), because otherwise you can't be sure the versioning scheme is the same. | 11:36 | |
btyler | the node ecosystem does a pretty good job of this, I think | 11:37 | |
ShimmerFairy | I don't see how 'supersede' is related to module loading at all, btw. | 11:39 | |
btyler | when you declare dependencies you specify whether you care about version, and if you do, you can pick "X, + or - minor patch level", "anything newer than X", "precisely X", or "X.Y or Y.Z, but nothing else" | ||
and best practice depends if you're writing an application or a library | |||
ShimmerFairy | lizmat: I think having multiple candidates should only die if they have different auths, whereas multiple versions of one auth can be sorted and chosen as appropriate. | 11:41 | |
leont would agree p5's take on versioning is suboptimal | |||
In theory, p5 meta supports relatively complex behavior, in practice no one has implemented it in a useful way | |||
btyler | oh, and the other bit about node/npm -- every single library/all has its own local::lib-alike, so different dependencies relying on different versions of the same lib doesn't matter | 11:42 | |
*library/app | |||
at the expense of disk space, of course | 11:43 | ||
lizmat | btyler: I don't quite follow you there | ||
leont | As for numeric versus semantic versioning: I don't think it's unreasonable to pick one of them and force users to use it. It's hard-to-impossible to make both work at the same time. | ||
lizmat | disk space is cheap, generally _0 | ||
:-) | |||
leont | Encouraging people to specify more about their versions sounds like a good idea | 11:44 | |
Subtly related to that: having a mechanism to install tests, and rerun them (for example after the upgrade of a dependency) would be a killer feature too | |||
We've been talking about that in p5 land for years, but it's very NYI so far | |||
lizmat | in P6 land that would be possible, as the tests get installed as well | 11:45 | |
leont | I was hoping you were going to say that | ||
lizmat | yeah, the thinking on that has changed :-) | ||
btyler | lizmat: sorry, I might be a bit off topic; I don't totally understand the p6 versioning/dependency thread. in short: I have an app Foo. Foo depends on library libbar and libbaz. the way node/npm handles things is to give both libbar and libbaz their own local::lib (called node_modules) with the precise version that it needs | ||
so if both libbar and libbaz need libawesome, but one needs libawesome 0.3 and the other needs libawesome 1.5, there's no problem | 11:46 | ||
leont | I suspect that testing if things still work is often more reliable than specifying "0.3.x should work, no idea about 0.4.x" | ||
btyler | you just end up with two copies of libawesome installed; one in libbar's local::lib and the other in libbaz's local::lib | ||
lizmat | btyler: that problem will not exist in P6, as 2 versions of the same compunit can be installed in the same CUR | ||
ShimmerFairy | Gentoo, for example, will complain about you not specifying the package category when multiple packages have the same name, but you're free to leave the version unspecified and get the latest possible. I think I'd like that to be how 'use' decls work | 11:47 | |
btyler goes to the glossary | |||
lizmat | *and* they can be loaded simulteanously as well (even in the same lexical scope, if you can rename one of them) | ||
btyler | very nice | ||
ShimmerFairy | I also don't think enforcing one particular versioning scheme would be a good idea. People like their conventions :) | 11:49 | |
lizmat | well, that is true :-( | 11:50 | |
:-) | |||
but conventions can change | |||
11:51
vendethiel- left
|
|||
lizmat | and I'm thinking in 5 years from now: people will think: how did we *ever* build large applications without specifying which part needs which version of a library | 11:51 | |
and it being a USP for Perl | |||
ShimmerFairy | And I don't think restricting the version scheme would suddenly make cross-auth version sorting reliable; one auth's v0.2.7 is another's v42.0.0 | 11:52 | |
lizmat | in my experience, the use of Perl in a lot of corporations, is blocked by sysadmins, not by developers | ||
ShimmerFairy: I'm not sure what you're saying :-) | 11:54 | ||
btyler | that's partially a product of the deployment artifact too, right? e.g. golang sysadmins don't need to care about what's running on the production box, because all the libs are wrapped up in the thing you deploy | ||
jdv79 | fwiw im with FROGGS on this | ||
ShimmerFairy | lizmat: I think someone made the implication (FROGGS?) that :auth<Foo> and :auth<Bar> candidates wouldn't die, and instead pick the highest version | ||
but I don't recall if he stated that explicitly, or it was just the vagueness of what he said | 11:55 | ||
lizmat | ah, yes, that should *never* happen :p) | ||
jdv79 | no need to be overly strict out of the gate methinks | ||
ShimmerFairy | lizmat: the one reason I disagree with forcing a strict :auth<> and :ver<> requirement is that not every program endeavors to be stable, or left unmaintained. | 11:56 | |
lizmat | ShimmerFairy: I'm not saying that either | ||
but *if* CURLI.candidates finds more than one CompUnit for -use Foo-, it should die | 11:57 | ||
jdv79 | id be interested to how the laxer approaches would work out in complex codebases | ||
ShimmerFairy | lizmat: my thoughts boil down to: require an :auth<> only to disambiguate, and default to highest version for multiple same-auth matches. Without a disambiguating :auth<> where it's needed, it should die | ||
lizmat | well, that still leaves us with most of the shit that has happened in P5, because most modules *are* maintained by the one developer | 11:58 | |
*and* they've been known to cause problems between versions even if they didn't intend to | 11:59 | ||
lizmat being one of them | |||
ShimmerFairy | I don't think you can reasonably require a :ver<> specifier without causing a lot of grief. An unqualified 'use Foo' is allowed for a reason :) | ||
lizmat | in my eyes, an unqualified -use Foo- is a one liner, or an historical artefact | 12:00 | |
12:00
AlexDaniel joined
|
|||
ShimmerFairy | I disagree. And I predict people would just start using :ver<*> anyway, at which point requiring it doesn't seem to add much value :) | 12:01 | |
lizmat | well, yeah, :ver<*> is just as badd | 12:02 | |
well, I can't seem to convince | |||
guess it will need to become a PBP :-( | |||
ShimmerFairy | I think lack of :ver could reasonably be considered a synonym for :ver<*> | 12:03 | |
jdv79 | pbp? | ||
lizmat | Perl Best Practice | ||
ShimmerFairy | You could have a pragma that enforces :ver, of course, I just don't think it's a good default for all cases. | ||
jdv79 | kinda like optional typing as FROGGS suggested? | 12:04 | |
lizmat | well, I suggested a pragma before | ||
and we were so glad that -use strict- is now the default :-( | |||
ShimmerFairy | I don't think that's quite the same as 'use strict', though :) | 12:05 | |
emilbarton | lizmat, moritz, psch: ok I managed to make a gist of my problem. It's my first script in perl6 so be kind! It's a client-server app for sqlite3. The gist is at gist.github.com/emilbarton/41d3e70...c0d6115c00 . I'v tried to remove as much as possible of my spaghetti... | ||
lizmat | emilbarton: I get a 404 on that link ? | 12:06 | |
jdv79 | the strict has to be tamed though:) this is still Perl afterall. | ||
emilbarton | gist.github.com/emilbarton/41d3e7094dc0d6115c00 | ||
lizmat | :-) | ||
emilbarton | there is an example usage to reproduce the error at the end | 12:07 | |
12:07
kaare__ left
|
|||
lizmat | hmmm... the gist is 142 lines, but the line number refers to line 187 ? | 12:09 | |
jdv79 | couldnt a versioning pbp be hoisted into core later anywsy? | 12:11 | |
*anyways | |||
lizmat | well, yes, but not a default setting change, as that could break code | ||
jdv79 | so dont upgrsde? | ||
lizmat | not upgrading is not an option in most cases in real life, I'm afraid | 12:12 | |
ShimmerFairy | That's one thing I'd like to see about P6's design process in future versions: don't upgrade if you're not willing to make the necessary changes. | ||
jdv79 | what. $work was on 5.8.5 until 2 years ago | 12:13 | |
lizmat | anyways, to summarize: on what we *do* agree on (I think): | ||
1. if two CompUnits are found with different auths, it should die | 12:14 | ||
12:14
_mg_ joined
|
|||
lizmat | hmm.. that's not much | 12:14 | |
gfldex | emilbarton: try changing 172: my @auth =(1,2,3); to my @auth = [1,2,3]; | ||
emilbarton | lizmat: the problem happens at line 178 | ||
lizmat: in the server file | 12:15 | ||
lizmat | my proposal would be to allow auto-select to the highest version of a CompUnit if: 1. name / auth are equal and there's only a patch level difference | ||
emilbarton | gfldex: ok but it doesn't matter for the error | 12:16 | |
jdv79 | could thatvlast bit be dropped for now? | ||
lizmat | m: my @a = (1,2,3); my @b = [1,2,3]; dd @a, @b # there is a difference ??? | ||
camelia | rakudo-moar 96c2ec: OUTPUT«Array @a = [1, 2, 3]Array @b = [1, 2, 3]» | ||
ShimmerFairy | lizmat: that would require settling on a specific versioning scheme, but I do think something specifying a general range of acceptable versions would be a good idea | 12:17 | |
btyler | lizmat: is there a middle ground of a 'warn' if it's the same name/auth and there's a > patch level diff, or it isn't clear how to calculate the version diff (if someone is using a goofy naming scheme)? | ||
12:17
zed__ joined
|
|||
ShimmerFairy | *cough* gentoo's SLOTs *cough* | 12:17 | |
btyler | or maybe we need pluggable version comparison :D | ||
use Version::SemVer in my library | 12:18 | ||
ShimmerFairy ponders a separate :slot<> specifier :P | |||
lizmat: i.e. I think it'd be best if we had some way of distinguishing groups of compatible versions, that preferably didn't rely on a certain portion of the version number | 12:19 | ||
lizmat | ShimmerFairy: using slots may be an idea, but at the META6.json level, I would think | 12:20 | |
12:20
zed__ left
|
|||
ShimmerFairy | e.g. use Qt:slot<4> for getting a Qt4-based package, latest existing version | 12:20 | |
lizmat | not at that level | ||
I see it more as a tie-breaker | |||
so the slot info lives in the meta-info | 12:21 | ||
if you specify a -use- command that selects more than one CompUnit, but they are in the same slot, *then* use the one with the highest version | |||
ShimmerFairy | lizmat: you mean in terms of the 'depends' section, perhaps? (Which would be analogous with ebuild files, I _think_?) | 12:22 | |
lizmat | I think "slot" is a bad name, though, API version would be better, I think | ||
maybe an example works better: | |||
ShimmerFairy | Yeah, it of course doesn't have to be "slot", that's just what gentoo calls it :P | ||
lizmat | I have Foo 1.1 and Foo 2.0 installed | ||
they are by the same auth | 12:23 | ||
and they have the same "slot" | |||
when I do "use Foo 1+", it would load Foo 2.0 without any issue | |||
if Foo 2.0 would be in a different "slot" | |||
12:23
_mg_ left
|
|||
lizmat | the same "use Foo 1+" would die, because there are 2 CompUnits that match that specification, and they are in different slots | 12:24 | |
semantically versioned modules would auto-slot for patch levels | |||
ShimmerFairy | Gentoo's SLOTs are designed to let you have multiple versions of a package installed at once, and choose which slot you need something from. I don't think the "multiple installed" is a problem for us, it'd just be the "choose a slot" thing, in my mind | 12:25 | |
lizmat | (unless differently specified in the META6.jsnon) | ||
emilbarton | lizmat: I've updated the error output at the end of the 2 files | ||
moritz: should I submit a bug report or is there something obviously wrong in my code? | |||
12:25
z8 joined
|
|||
lizmat | ShimmerFairy: slots in this context, would only be for selection, not for installing, indeed | 12:26 | |
ShimmerFairy | lizmat: calling it an API version instead, I think you should have to select a particular version of the API if there are multiple, but then within that highest-version by default | ||
so if someone has Qt modules installed for both Qt4 and Qt5, you'd have to specify somewhere which API you want, e.g. use Qt:api<5> | |||
(because there isn't necessarily a clean relationship between "slot"s and versions, at least in Gentoo's implementation of the concept) | 12:27 | ||
lizmat | well, I would sorta expect a Qt4 and Qt5 module then, if they are that radically different API's ? | ||
12:27
spebern joined
|
|||
dalek | ast: 450b919 | TimToady++ | S (2 files): adjust some exceptions |
12:27 | |
ast: 4321092 | TimToady++ | S02-lexical-conventions/minimal-whitespace.t: merge the changed tests I forgot to check in |
|||
kudo/nom: be141b8 | TimToady++ | src/Perl6/Grammar.nqp: . and .= should parse tighter To be intuitive, . and .= need to parse at about the level of unaries, such that "-3**2 . abs" treats the left as a single pill, but nothing looser than that, lest it eat up the multiplication of "-3 * 2 . abs". (Changing .= away from item assignment is okay because initializer .= was effectively tighter precedence anyway, and nobody ever noticed. And .= was always syntactically privileged anyway.) |
|||
TimToady woke up early realizing two things: 1) he forgot to check in his tests for . and 2) the precedence of . and .= is too loose, and they should just eat things that would ordinarily be kept together visually, like unaries and exponentiation, but nothing looser | |||
yoleaux | 10:54Z <FROGGS> TimToady: Happy Birthday! <oȏ> <-- should look like a hug if it is not obvious :o) | ||
lizmat | good morning, TimToady, and what a beautiful day this is (I hope :-) | 12:28 | |
ShimmerFairy | lizmat: true, it's just that thinking of concrete examples from gentoo, Qt was the first thing that came to mind (there are two SLOTs for 4 and 5 for Qt's packages, qtcore etc.) | 12:29 | |
12:30
telex left
|
|||
TimToady heads back to bed maybe... | 12:31 | ||
lizmat | 5:30 is a bit early, right ? | ||
ShimmerFairy | lizmat: I think we both agree that there needs to be a distinction between "API versions", and the other, regular kind. I just happen to think that you should be able to disambiguate on API without specifying the regular version if you want :) . | 12:32 | |
12:32
diana_olhovik_ joined
|
|||
ShimmerFairy | ♞ TimToady maybe o/ | 12:32 | |
12:32
telex joined
|
|||
[Tux] | moritz, removed from .txt there were not present in the actual code anymore | 12:37 | |
I also removed the remaining is rw's that were unneeded | 12:38 | ||
dalek | ecs: 2fa83b9 | lizmat++ | S22-package-format.pod: Tests *will* probably be installed |
12:40 | |
12:41
spebern left,
tokuhiro_ joined
12:44
FROGGS left
12:46
tokuhiro_ left
12:47
cognominal joined
12:48
mr_ron left
12:50
yqt joined
|
|||
lizmat | ShimmerFairy: thinking more about slots / API version: isn't that in the end just the same as semantic versioning really ? | 12:50 | |
ShimmerFairy | lizmat: I suppose, but having a separate concept of API version would allow more freedom in how someone can actually version their stuff. | 12:51 | |
lizmat | true | 12:52 | |
12:52
vendethiel joined
|
|||
ShimmerFairy | (which is something Gentoo has to allow for, but P6 is perhaps able to be more influential on its packages right now ☺) | 12:52 | |
12:53
mattprelude left
|
|||
[ptc] | TimToady: Happy Birthday! | 12:54 | |
lizmat | if we would add an :api, I think it should be a name, rather than a number | ||
ShimmerFairy: use QT:api<QT4> | |||
use Qt:api<Qt4> rather :-) | 12:55 | ||
12:55
z8 left
12:57
FROGGS joined
13:00
abaugher left
13:01
abaugher joined
|
|||
timotimo | o/ | 13:02 | |
lizmat: i expect you might know a bit about this: should parameters like args in "sub foo(|args)" be treated the same was as "is raw"? | |||
because right now we allocate a scalar container for those and i'm sure there's no need at all | 13:03 | ||
lizmat | feels to me they should be treated the same... but that's just a feeling, I would defer to jnthn for a authoritative answer | ||
timotimo | also, there's a whole bunch of subs that have a $¢ lexical registered, but not used, so i think the optimizer wants to learn about making unnecessary dollarcent lexicals disappear as well | 13:04 | |
lizmat | yup, feels like :-) | ||
timotimo | i suppose i'll just cook up a patch for the "is raw by default" thing and run spec tests | 13:05 | |
if they agree i'll go the "forgiveness > permission" route; can always revert it and put a good explanation in the commit message if the idea was bad | 13:06 | ||
ShimmerFairy | timotimo: ah, I made $¢ work in grammars (but not bare /.../ regexes, grr), but I didn't touch the optimizer :) | ||
timotimo | oh i see :) | 13:07 | |
ShimmerFairy | lizmat: I can agree on :api<> . There's no reason we should limit ourselves to mere numbers :) .oO(use webkit-gtk:api<random-api-change-yaaay>) | 13:08 | |
timotimo updates all the components | 13:11 | ||
lizmat goes cycling for some fresh air, ideas and energy | 13:12 | ||
timotimo | i noticed the |args thing when CALL-ME from inside NativeCall was the #1 allocator of Scalar objects in my nativecall-heavy program | 13:13 | |
the only scalar it allocated was the one for |args in that case | |||
so removing that was quite worth it :) | |||
13:13
emilbarton left,
kaare__ joined
|
|||
timotimo | sadly, that program isn't a good benchmark yet, as its workload depends on random numbers | 13:13 | |
but we do have srand, right? maybe that'll help | 13:14 | ||
13:15
espadrine joined
|
|||
ShimmerFairy | timotimo: btw, if you happen to figure out how to make $¢ work in places like $a ~~ /<stuff> { say $¢ } <stuff>/ , that'd be cool :P | 13:16 | |
[Tux] | $ panda list --installed --verbose | 13:17 | |
resolve stage failed for list: Project list not found in the ecosystem | |||
in method throw at /pro/3gl/CPAN/rakudobrew/moar-nom/install/share/perl6/runtime/CORE.setting.moarvm:1 | |||
timotimo | ShimmerFairy: i don't have a clue yet | 13:18 | |
ShimmerFairy | timotimo: don't worry about it, I couldn't figure it out either :) (closest I got, IIRC, was inserting my own $¢ to bypass qbuildsub's insert-if-nonexistent, and then removing what I added, but then EVALs of regexes died on 'missing lexical'(?)) | 13:19 | |
timotimo | :| | 13:21 | |
13:25
BenGoldberg joined
|
|||
timotimo | at least i think i found the right peg to hang the "is raw by default" thing on | 13:25 | |
spec test time | 13:26 | ||
13:26
BenGoldberg left
13:27
BenGoldberg joined
|
|||
pmurias | lizmat: isn't pinning down exact version deps something that Carton (and similiar such things) try to fix in Perl 5 land? | 13:29 | |
lizmat | I don't know Carton well enough to answer that question | 13:30 | |
i *think* Carton is more about having a single CUR in @?INC with only the modules you need for a specific application | 13:31 | ||
and then start perl6 with just that one CUR | |||
if I would transpose this from P5 to P6 | |||
13:31
leont left
13:32
khw joined
13:33
Loren left
|
|||
timotimo | only t/spec/S02-types/WHICH.t, t/spec/S05-transliteration/trans.rakudo.moar and t/spec/S32-num/power.rakudo.moar have failures | 13:34 | |
i expect that's not because of my change | |||
lizmat | no, it's not | 13:35 | |
timotimo | yays | ||
lizmat | m: StrDistance.new | ||
camelia | rakudo-moar be141b: OUTPUT«Cannot make a Block object using .new in block <unit> at /tmp/O9_9bpmVfG:1» | ||
lizmat | now what is that about??? | ||
13:35
Loren joined
|
|||
lizmat | basically the issue in WHICH | 13:35 | |
timotimo | huh, well, that's interesting | ||
lizmat | m: StrDIstance.WHICH | ||
camelia | rakudo-moar be141b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/_hTGl0TykOUndeclared name: StrDIstance used at line 1» | ||
lizmat | m: StrDistance.WHICH | ||
camelia | ( no output ) | ||
lizmat | .oO( still not cycling :-) |
13:37 | |
timotimo | m: say StrDistance.WHAT | 13:38 | |
camelia | rakudo-moar be141b: OUTPUT«(Block)» | ||
timotimo | what the flying foot is up with that? | 13:39 | |
m: my class FooBar is Cool { }; say FooBar.WHAT | |||
camelia | rakudo-moar be141b: OUTPUT«(FooBar)» | ||
ShimmerFairy | m: say StrDistance.^mro | 13:40 | |
camelia | rakudo-moar be141b: OUTPUT«((Block) (Code) (Any) (Mu))» | ||
timotimo | StrDistance only occurs in the generated m-CORE.setting in the parts included from StrDistance.pm | ||
ShimmerFairy | m: class FooBar is Cool { }; say FooBar.^mro | ||
camelia | rakudo-moar be141b: OUTPUT«((FooBar) (Cool) (Any) (Mu))» | ||
timotimo | so nothing overrides that after the fact | ||
and running that exact file with a "say StrDistance" afterwards gives me "(StrDistance)" instead | 13:41 | ||
lizmat | my class StrDistance is Cool | 13:42 | |
timotimo | yeah | ||
lizmat | so not sure where the Block come from... | ||
the ACCEPTS looks a bit wonky? | |||
timotimo | me neither | ||
ShimmerFairy | m: my class Foo is StrDistance { }; say Foo.WHAT | 13:43 | |
camelia | rakudo-moar be141b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/irBn76jOdjCannot call trait_mod:<is>(Foo, Block); none of these signatures match: (Mu:U $child, Mu:U $parent) (Mu:U $child, :$DEPRECATED!) (Mu:U $type, :$rw!) (Mu:U $type, :$nativesiz…» | ||
timotimo | that looks like an artifact from the days where we had that same thing for "list", too | ||
jnthn | Just passing by but: some patch somewhere has caused some *very* odd kind of corruption/mis-compilation | ||
It happened around the time I merged the isrwcont change | 13:44 | ||
psch | $_ = "foo"; if tr/o/u/ > 1 { say "more than one replacement" } # is the reason for StrDistance.ACCEPTS | ||
ShimmerFairy | lizmat: both ACCEPTS and BUILD look suspicious to me | ||
psch | doesn't work right now though, obviously | ||
jnthn | m: say StrDistance | ||
camelia | rakudo-moar be141b: OUTPUT«-> { #`(Block|59519208) ... }» | ||
lizmat | ShimmerFairy: BUILD is fine | ||
jnthn | That's one of the very odd consequences | ||
StrDistance should be a type object. | 13:45 | ||
ShimmerFairy | lizmat: isn't it just the same as standard BUILD, though? (I agree nothing is wrong with it, just odd that it's there ☺) | ||
lizmat | jnthn: agree :-) | ||
ShimmerFairy: actually, you're right | |||
psch | ShimmerFairy: :$!before is coerced to Str | ||
lizmat | ah, yes | ||
psch | ShimmerFairy: standard BUILD doesn't coerce | ||
ShimmerFairy | psch: and after isn't ? | ||
dalek | kudo/nom: 7116059 | timotimo++ | src/Perl6/World.nqp: don't give capture parameters a scalar container spec tests are fine, suggesting that there's never a need for a capture parameter to have a scalar container to live in. |
13:46 | |
timotimo | ^- please notice my commit, senpai :3 | ||
psch | ShimmerFairy: no, after is the result of Str.trans, which is Str | ||
just stating reasons for why i wrote it as it is, no idea where the Block weirdness comes from either... | 13:47 | ||
jnthn | timotimo: Looks OK | ||
psch | although ISTR that &trans had Str as return type..? | ||
timotimo | jnthn: i noticed this when a piece of code using SDL2::Raw allocated most of its scalars inside CALL-ME | 13:48 | |
and i'm still wondering why CALL-ME doesn't end up getting speshed at all :\ | |||
dalek | ecs: 3cd3789 | lizmat++ | S11-modules.pod: Introduce "api" and :api |
13:49 | |
lizmat | FROGGS: this implies that if a distribution does not specify any API, it will revert to the behaviour you want | 13:50 | |
if a distribution *does* specify an API, and the selected compunits have a different API, it will fail (which would be the behaviour *I* want) | |||
I think this is the best of both worlds, thanks ShimmerFairy for keeping coughing :-) | 13:51 | ||
ShimmerFairy++ # coughing | |||
ShimmerFairy | lizmat: I'm just sharing my portage-addled brain :P | ||
lizmat | and we thank you for that! | 13:52 | |
ShimmerFairy | The other Neat Idea™ I can think of would be "virtuals", that let you select between different satisfactory implementations (e.g. Oracle or IcedTea JVM), but I don't think we need a special concept for that, at least not yet :) | ||
lizmat | I think that is covered by "emulates" | 13:53 | |
really cycling& | |||
ShimmerFairy | ah, yes, I thought that sounded familiar :) | ||
bye lizmat o/ | |||
13:54
zakharyas joined
|
|||
Ulti | m: say -42.abs + -42 . abs | 13:55 | |
camelia | rakudo-moar be141b: OUTPUT«0» | ||
Ulti | ;__; | ||
ShimmerFairy | I think it's cool we have a lower-precedence methodop (though TimToady++ did mention something about infix:<.> and .= having too low a precedence atm) | 13:56 | |
Ulti | m: say -42.abs + -42 .abs #also | 13:57 | |
camelia | rakudo-moar be141b: OUTPUT«0» | ||
Ulti | thats one space different semantically super close but does something different and its the - which is the issue really not the new method magic | ||
ilmari | m: say -42.abs + -42.abs | 13:58 | |
camelia | rakudo-moar be141b: OUTPUT«-84» | ||
Zoffix | :S | ||
ShimmerFairy | Ulti: the issue is that the prefix isn't interpreted as part of a numeric literal (and I think it'd be weird if it was, it'd be the only numeric literal thingy that has an op version too) | 13:59 | |
Ulti | yes I know | ||
Zoffix | m: say (-42).abs | ||
camelia | rakudo-moar be141b: OUTPUT«42» | ||
Ulti | I dont think it would be weird at all that prefix - with no space was always seen as the literal numerically | ||
timotimo | but but but custom operators | 14:00 | |
Ulti | I think that is literally what programmer on the planet would expect, literal pun intended | ||
*every | |||
ShimmerFairy | Ulti: I personally wouldn't mind making mathematicians cry over -4 ** 2 -> 16 :) | ||
timotimo | ShimmerFairy: before adding $¢ to the optimizer, there were 4229 lines matching \d+: .*$¢, now there are 3465 | ||
i have no clue how many of these are "legitimate", but ... | 14:01 | ||
oh, this is the core setting | |||
pink_mist | why would they cry over that? maybe I'm just not a mathematician so I don't get it :> | ||
Zoffix | m: say -4 ** 2 | ||
camelia | rakudo-moar be141b: OUTPUT«-16» | ||
Zoffix | :) | ||
ShimmerFairy | pink_mist: in math, prefix:<-> has looser precedence than exponentiation (makes a tiny bit more sense written as -4², but still) | ||
pink_mist | oh I see | 14:02 | |
ilmari | m: say -4² | ||
camelia | rakudo-moar be141b: OUTPUT«5===SORRY!5=== Error while compiling /tmp/srmhsIzfLFBogus postfixat /tmp/srmhsIzfLF:1------> 3say -47⏏5² expecting any of: infix infix stopper postfix statement end statement modif…» | ||
ilmari is disappoint | |||
timotimo | hah | ||
jnthn | "There will be modules" :P | ||
timotimo | m: sub postfix:<²>($a) { $a ** 2 }; say 100² | 14:03 | |
camelia | rakudo-moar be141b: OUTPUT«10000» | ||
pink_mist | ShimmerFairy++ thanks for explaining =) | ||
Zoffix | wow, that's so cool. | ||
ShimmerFairy | jnthn: that's gonna be the weirdest thing for me, I think. Getting used to the idea that language improvements will come from modules rather than additions to core :) | ||
timotimo | you're susprised by that? you need to pay more attention in #perl6 it seems ;) ;) | ||
pmurias | lizmat: isn't having an exact set of dependencies how we should deploy our apps to production? | ||
pink_mist | m: sub postfix:<²>($a) { $a ** 2 }; say 100²² #I wonder... | 14:04 | |
camelia | rakudo-moar be141b: OUTPUT«100000000» | ||
pink_mist | damn, that wasn't interpreted as ^22 :P | ||
ShimmerFairy | You'd need a slang of some kind to generalize superscripts :) | ||
timotimo | LTM would allow you to build a ²² postfix | ||
14:05
mn080202 joined
|
|||
Ulti | I'm not entirely sure why anyone has a problem with - being part of a numeric literal given we have . already -___- | 14:05 | |
. is now all sorts of things! | |||
jnthn | ShimmerFairy: I'm really glad of that, in fact. It means whenever people want to propose things for core, we'll be able to say "do it as a module and see how it works out", and bring in the things that see widespread and unproblemtic use | ||
ShimmerFairy | Ulti: I certainly don't, I perceive it as literal integer syntax. | ||
timotimo | very yes. | ||
ShimmerFairy: the question now becomes: why don't we accept - as literal integer syntax, too? | |||
ShimmerFairy | jnthn: sure, I'm not saying it's a bad thing, just weird for me :) | 14:06 | |
timotimo: to make the mathemagicians happy, I guess. Also, what about my $a = 4; say -$a ** 2 | |||
Ulti | I dont want to have to use NegativeNumbers :P | ||
jnthn | ShimmerFairy: I guess it's 'cus very few languages are in a place to make that happen :) | ||
mn080202 | hey guys if I mod a library how do I recompile the module so it picks up the changes? | ||
with latest rakudo panda | |||
timotimo | mn080202: panda doesn't do pre-compilation any more, so you can just re-install the new version and everything will work out immediately | 14:07 | |
mn080202 | and if I mod it in the filesystem? it should pick it up? | ||
timotimo | yes, but you shouldn't do that :) | ||
oh, wait | |||
ShimmerFairy | jnthn: I just put up a repo (need to add it to the ecosystem) that offers error reporting within grammars, with a hope that it could someday be core functionality, for example :) | ||
timotimo | what exactly do you mean by "in the filesystem"? | ||
mn080202 | hm I am trying to debug HTTP::UserAgent it is failing so I found the module where it is installed | 14:08 | |
and tried to insert debug statements | |||
and it does not print stuff so I thought it most probably compiles it since I saw that output on install | |||
Compiling lib/HTTP/Header/Field.pm6 to mbc | 14:09 | ||
timotimo | huh? compiling to mbc? | ||
is that really latest panda? | |||
mn080202 | I tried to follow tuts online I will check to find something newer | 14:10 | |
14:11
FROGGS_ joined
|
|||
timotimo | the easiest thing to do is use "rakudobrew", to be honest | 14:11 | |
14:12
emilbarton joined
14:15
FROGGS left
|
|||
pmurias | lizmat: re using a use without a version numer one thing I often want to use when developing code is to just use the latest thing from CPAN | 14:15 | |
lizmat: releasing it is the moment I would like to have a tool go and write down the list of things my module requires | 14:16 | ||
mn080202 | well I tried straight from github and before I tried rakudobrew but again it compiles I will try rakudobrew again | 14:18 | |
14:19
emilbarton left
|
|||
Ulti | m/win 2 | 14:22 | |
mn080202 | how do you remove modules with panda? | 14:27 | |
14:33
emilbarton joined
|
|||
dalek | kudo/nom: 08d9122 | timotimo++ | src/Perl6/Optimizer.nqp: throw out unused $¢ those were added to subs and methods in a recent-ish patch, but aren't actually used terribly often. |
14:33 | |
timotimo | mn080202: that's not yet implemented :\ | 14:34 | |
mn080202 | huh thanks timotimo I finally managed to get HTTP::UserAgent to scrape a simple web page | 14:39 | |
timotimo | phew | ||
mn080202 | used rakudobrew to install everything | ||
timotimo | that's good; rakudobrew can install panda for you, too, but i expect you've noticed | ||
was there a problem inside HTTP::UserAgent? | |||
mn080202 | no there does not seem to be one what I did in the begining was I used rakudobrew then I installed rakudo 2015.02 then 2015.07 after removing all rakudo.xy.tar.gz and using rakudobrew again it worked | 14:40 | |
timotimo | ShimmerFairy: would you be interested in looking at a moar --dump of the core setting with that latest commit applied and seeing if there's any pattern to $¢ being unnecessary, but the optimizer not having a clue? | ||
maybe the moar --dump is less helpful than a --target=optimize, actually | 14:41 | ||
ShimmerFairy | sure, but not now, it's bed for me :) | 14:42 | |
14:42
tokuhiro_ joined
|
|||
timotimo | ah | 14:43 | |
good night :) | |||
14:44
yqt left
14:47
tokuhiro_ left
14:49
nbd_ left
14:55
Akagi201 left
14:56
Akagi201 joined
15:00
Akagi201 left
15:05
spebern joined
15:15
spebern left
15:17
Akagi201 joined
15:18
xinming left
|
|||
dalek | kudo/nom: 2b04b50 | TimToady++ | src/Perl6/Grammar.nqp: fake up intermediate precedence for . and .= until we straighten out the associativity of unaries and infixes sharing the same precedence level.... |
15:27 | |
vendethiel | TimToady: I wanna say, thanks a lot for this. being able to line up calls nicely is a great thing, imho :) | 15:35 | |
15:36
zakharyas left
15:44
tokuhiro_ joined
15:49
Akagi201 left,
tokuhiro_ left,
xinming joined,
Akagi201 joined
15:58
Loren left,
steelwilly joined,
nwc10 joined
|
|||
nwc10 | good Birthday, TimToady | 16:01 | |
yoleaux | 25 Sep 2015 13:33Z <tony-o> nwc10: there is a perl6 'prove' module/bin out there called 'Green', can be installed with zef or panda. | ||
nwc10 | good UGT, #perl6 | 16:02 | |
16:06
jasanj joined
16:07
steelwilly left
16:09
cognominal left,
Akagi201 left
|
|||
moritz | m: my @a = 1, 2, 3; for @a.item { .say } | 16:10 | |
camelia | rakudo-moar 2b04b5: OUTPUT«[1 2 3]» | ||
nwc10 | it looks like if one creates tickets directly in RT, they don't hit the list | 16:12 | |
moritz | m: say <a b c>.kv.perl | 16:19 | |
camelia | rakudo-moar 2b04b5: OUTPUT«(0, "a", 1, "b", 2, "c").Seq» | ||
moritz | m: say <a b c>.pairs.perl | ||
camelia | rakudo-moar 2b04b5: OUTPUT«(0 => "a", 1 => "b", 2 => "c").Seq» | ||
moritz | m: say join '|', <a b>, <d e> | 16:20 | |
camelia | rakudo-moar 2b04b5: OUTPUT«a|b|d|e» | ||
moritz | m: say join '|', <a b>, $<d e> | ||
camelia | rakudo-moar 2b04b5: OUTPUT«Use of uninitialized value <element> of type Any in string contextAny of .^name, .perl, .gist, or .say can stringify undefined things, if needed. in block <unit> at /tmp/fVx5bYkx37:1Use of uninitialized value <element> of type Any in string context…» | ||
moritz | m: say join '|', <a b>, <d e>.item | ||
camelia | rakudo-moar 2b04b5: OUTPUT«a|b|d e» | ||
moritz | m: sub fe(*@flat) { @flat.elems }; say fe(<a b>, <d e>.item); | 16:22 | |
camelia | rakudo-moar 2b04b5: OUTPUT«3» | ||
vendethiel | mh, maybe someone will expect $<foo> to itemize :P | ||
moritz | it's a rather obscure use case | 16:23 | |
interesting for explaining list mechanics, but seldomly useful in real-world code | |||
timotimo | nwc10: how do you actually create a ticket in rt? | 16:25 | |
moritz | m: say <a b c d e>.pick: 3; | 16:26 | |
camelia | rakudo-moar 2b04b5: OUTPUT«(c a b)» | ||
timotimo | i was under the impression that's impossible | ||
moritz | timotimo: mailto:rakudobug@perl.org | ||
timotimo | yeah | ||
that's not "directly in rt", that's "in your mailclient" | |||
moritz | no, you write your mail in your MUA, but it becomes a ticket inside RT | 16:28 | |
sorry for being a nuisance; I maintain a fork of a ticket system for $work :/ | |||
m: say <a b c>.rotate(1).^name | 16:29 | ||
camelia | rakudo-moar 2b04b5: OUTPUT«List» | ||
moritz | m: say <a b c>.reverse.^name | ||
camelia | rakudo-moar 2b04b5: OUTPUT«List» | ||
nine | TimToady: Happy birthday! | 16:32 | |
moritz | TimToady++ # one day a year the aniversary brings free karma | 16:34 | |
m: my @a = 1, 2, 3; say @a.^splice(0, 2).^name | 16:35 | ||
camelia | rakudo-moar 2b04b5: OUTPUT«Method 'splice' not found for invocant of class 'Perl6::Metamodel::ClassHOW+{<anon>}' in block <unit> at /tmp/cDO9K5yu_Z:1» | ||
moritz | m: my @a = 1, 2, 3; say @a.splice(0, 2).^name | ||
camelia | rakudo-moar 2b04b5: OUTPUT«Array» | ||
moritz | m: my @a = 1, 2, 3; say @a.rotor(2 => -1).^name | 16:37 | |
camelia | rakudo-moar 2b04b5: OUTPUT«Seq» | ||
moritz | m: say (<a b c> Z <d e> Z (1, 2)).perl | 16:40 | |
camelia | rakudo-moar 2b04b5: OUTPUT«(("a", "d", 1), ("b", "e", 2)).Seq» | ||
moritz | m: say .join for zip <a b c>, <d e f> | 16:41 | |
camelia | rakudo-moar 2b04b5: OUTPUT«adbecf» | ||
moritz | m: say .join for zip <a b c>, ('d', *) | 16:43 | |
camelia | rakudo-moar 2b04b5: OUTPUT«adbWhatever<139937550545840>» | ||
timotimo | bwhatever | 16:47 | |
b whatever u want | |||
dalek | c: 645466d | moritz++ | lib/Type/List.pod: GLRify List.pod |
16:48 | |
moritz | why is zef no longer in the modules list? | 16:50 | |
raydiak | good morning, #perl6 | 16:52 | |
sergot | m: my @a = <1 2>; my @b = <3 4>; @a.push: @a,; | ||
camelia | ( no output ) | ||
sergot | m: my @a = <1 2>; my @b = <3 4>; @a.push: @b,; say @a; | 16:53 | |
camelia | rakudo-moar 2b04b5: OUTPUT«[1 2 3 4]» | ||
sergot | m: my @a = <1 2>; my @b = <3 4>; @a.push: @b,; say @a.perl; | ||
camelia | rakudo-moar 2b04b5: OUTPUT«[IntStr.new(1, "1"), IntStr.new(2, "2"), IntStr.new(3, "3"), IntStr.new(4, "4")]» | ||
sergot | m: my @a = <1 2>; my @b = <3 4>; @a.push: @b, ; say @a.perl; | ||
camelia | rakudo-moar 2b04b5: OUTPUT«[IntStr.new(1, "1"), IntStr.new(2, "2"), IntStr.new(3, "3"), IntStr.new(4, "4")]» | ||
moritz hopes this is a bug | |||
sergot | hmm | 16:54 | |
m: my @a = <1 2>; my @b = <3 4>; @a.push: @b; say @a; | |||
camelia | rakudo-moar 2b04b5: OUTPUT«[1 2 3 4]» | ||
sergot | , doesn't matter here | ||
16:56
emilbarton left
|
|||
jasanj | m: say 1.WAT | 16:56 | |
camelia | rakudo-moar 2b04b5: OUTPUT«Method 'WAT' not found for invocant of class 'Int' in block <unit> at /tmp/xXai9V6HAq:1» | ||
jasanj | m: say 1.WHAT | 16:57 | |
camelia | rakudo-moar 2b04b5: OUTPUT«(Int)» | ||
jasanj | m: say 1.WHICH | ||
camelia | rakudo-moar 2b04b5: OUTPUT«Int|1» | ||
jasanj | m: say 1.WHO | ||
camelia | rakudo-moar 2b04b5: OUTPUT«» | ||
jasanj | m: say 1.WHERE | 16:58 | |
camelia | rakudo-moar 2b04b5: OUTPUT«139948576800912» | ||
jasanj | m: say 1.HOW | ||
camelia | rakudo-moar 2b04b5: OUTPUT«Perl6::Metamodel::ClassHOW.new» | ||
jasanj | m: say 1.WHY | ||
camelia | rakudo-moar 2b04b5: OUTPUT«(Any)» | ||
TimToady | maybe .WHY should default to "Mu" :) | 17:01 | |
moritz | TimToady: or to class Dunno is Mu { } | 17:02 | |
17:03
skids joined
|
|||
TimToady | or Cool :) | 17:03 | |
17:05
vendethiel left
|
|||
moritz | m: my @a; my @b = <a b >; @a.push: @b,; say @a.elems | 17:06 | |
camelia | rakudo-moar 2b04b5: OUTPUT«2» | ||
moritz | TimToady: would you agree this is a bug? | ||
m: my @a; my @b = <a b >; @a = @b,; say @a.elems | |||
camelia | rakudo-moar 2b04b5: OUTPUT«1» | ||
moritz | seems inconsistent with array assignment, at least | ||
17:06
MadcapJake joined
|
|||
[Tux] | TimToady, belated congrats from the Netherlands | 17:14 | |
TimToady | moritz: as jnthn pointed out a day or so ago, arglist commas are different, and we don't really want to encourage that notation anyway | 17:24 | |
that's why we have $@b and $[1,2,3] | 17:26 | ||
m: my @a = <1 2>; my @b = <3 4>; @a.push: item @b; say @a; | |||
camelia | rakudo-moar 2b04b5: OUTPUT«[1 2 [3 4]]» | ||
TimToady | or that | ||
17:29
rindolf left
|
|||
nwc10 | timotimo: one needs to be logged in, and have suffienct queue privs | 17:31 | |
timotimo | oh | 17:32 | |
interesting | |||
hey TimToady, happy birthday! | |||
17:36
rindolf joined
17:45
tokuhiro_ joined
17:47
mr_ron joined
17:50
tokuhiro_ left
17:59
thou joined
18:13
cognominal joined
|
|||
nwc10 | anyway, the ticket in question is rt.perl.org/Ticket/Display.html?id=126195 | 18:15 | |
It has a patch, and all :-) | |||
dalek | kudo/nom: 3813a26 | nicholas++ | t/harness: Only enable 'trap' for new enough harnesses. The 'trap' option was added to TAP::Harness version 3.22. Attempting to set it on earlier versions is a fatal error, and aborts testing. Hence pass argument conditionally, based on $TAP::Harness::VERSION. Signed-off-by: Moritz Lenz [email@hidden.address] |
18:19 | |
nwc10 | moritz++ | 18:20 | |
thanks | |||
jnthn | .oO( If only things ignored named options they didn't understand, we'd not have this problem :P ) |
18:22 | |
FROGGS_ | heh | 18:23 | |
nwc10 | Thermal::Detonator.explode(dry_run => 1); | 18:25 | |
dry_run was added in version 3. | |||
there are arguments both ways :-) | |||
pink_mist | . o O ( and then there are those who refer to code that aborts as 'exploding' ) | 18:28 | |
lizmat is back | |||
18:32
yqt joined
18:33
patrickz joined
18:36
spider-mario left
|
|||
dalek | p: e1cc288 | (Pawel Murias)++ | src/vm/js/nqp-runtime/bootstrap.js: [js] fix bootstraping bug |
18:37 | |
p: 3f2ad11 | (Pawel Murias)++ | src/vm/js/nqp-runtime/ (2 files): [js] serialization of simple STables |
|||
18:39
tokuhiro_ joined
18:44
tokuhiro_ left,
Ven joined
|
|||
pmurias | lizmat: re silently allowing version differences up to patch level, aren't a lot of the breakages caused by accident instead of concious api changes? | 18:47 | |
lizmat | yes, they are | 18:48 | |
that is why *I* think it is best to be as strict in your -use- statements as possible | |||
jdv79 | or desired | 18:49 | |
pmurias | for deploying applications having an exact list of tested dependencies seems the sanest option | 18:50 | |
having cpan modules have exact deps would cause some problems | 18:51 | ||
18:52
Ven left
|
|||
pmurias | like having your up load a bunch of old Moose (replace with any common dependency) versions | 18:52 | |
lizmat | pmurias: that's why we have "supersedes" | 18:53 | |
pmurias | isn't having "supersedes" everywhere the same thing as assuming that higher versions supersed older ones unless marked as breaking | 18:55 | |
lizmat | you can indicate that a compunit is superseding another (range of) compunits: this is very specific | 18:56 | |
if Foo 1.2 has a supersedes Foo <1.2, then any attempt to select a Foo < 1,2 will result in selecting Foo 1.2 | 18:58 | ||
jdv79 | isn't emulates teh same thing as this new api tag thing? | ||
pmurias | api tag thing? | ||
lizmat | emulates is when you ask for Foo 1.2 and that is not available, but there is a Bar 3.4 that emulates Foo 1.2, *then* Bar will be selected | 18:59 | |
if there *is* a Foo 1.2, then that will be used | |||
jdv79 | k | ||
pmurias: i mean the, as of a few hours ago, addition of an api specifier | 19:00 | ||
see S11 | |||
pmurias | lizmat: marking a module as using semantic versioning and specifing a version would work nearly the same as supersedes | 19:03 | |
lizmat | accept with supersedes you can actually list which compunits you're superseding | 19:04 | |
19:04
Ven joined
|
|||
lizmat | if Foo 1.2, 1.5 and 1.7 had serious issues, you can make Foo 1.8 supersede only *those* versions | 19:04 | |
Ven | is there a "code index" for the advent calendar? to update all the code samples for the post-GLR world, say. | 19:10 | |
moritz | Ven: well, some of them were made into tests in roast | 19:15 | |
masak | Ven: the only thing like that (that I know about) is the spectests that have been adapted from the advent calendar. | ||
yoleaux | 11:23Z <nine> masak: the visitor macros are something that I incidentally though about before falling asleep yesterday. Seems like something really useful for implementing something like LINQ and even more, for making Rakudo's optimizer readable. | ||
Ven | right, those I'm aware of | ||
masak | nine: nice :) | ||
nine: if you have time to talk about them at some point, I'd be happy to | 19:16 | ||
19:16
nwc10 left
|
|||
Ven | Linq, for me, falls into the other scope. Vmacros would only be useful for analysis and modifying-slang-ish things. | 19:17 | |
mmh, or should it... well, depends which kind of stuff we can catch | |||
masak | yeah, LINQ feels more slang-y to me as well. | 19:18 | |
basically visitor macros do not change the syntax of the language, though they can both analyze and modify the resulting Qtrees if they want. | 19:19 | ||
Ven | masak: which category does timotimo++'s ADT module fall into? | 19:22 | |
AlexDaniel | “New slurpy parameter, +args or +@args, to allow for one-argument style binding” | 19:23 | |
ooooooooh | |||
If I got that right, there are some of early RTs waiting for that | 19:25 | ||
in fact, some of them were fixed and should now be reopened to use that new thing | |||
some of my early reports* | 19:26 | ||
m: say 2 + Ⅵ; | |||
camelia | rakudo-moar 3813a2: OUTPUT«5===SORRY!5=== Error while compiling /tmp/bPb40erFJ9Missing required term after infixat /tmp/bPb40erFJ9:1------> 3say 2 +7⏏5 Ⅵ; expecting any of: prefix term» | ||
masak | Ven: you mean the thing inside the q{} in github.com/timo/ADT/blob/master/README.md | 19:27 | |
...? | |||
that's clearly a slang to me. | |||
Ven | masak: well, the idea would be to have something akin to "ADT foo = ..." | ||
19:27
philh joined
|
|||
masak | well, then the `ADT` bit would be the slang "opener". | 19:27 | |
philh | p6: say ((1,2),3).flat | 19:28 | |
camelia | rakudo-moar 3813a2: OUTPUT«(1 2 3)» | ||
philh | p6: say [(1,2),3].flat | ||
camelia | rakudo-moar 3813a2: OUTPUT«((1 2) 3)» | ||
pmurias | lizmat: I'm not sure I see a use for the api modifier, if we have sister versions like Perl 6 and Perl 5 wouldn't it be better to have the number as part of the name? | ||
philh | Should .flat on an Array be doing that? | 19:29 | |
19:29
apotheon left
|
|||
lizmat | pmurias: for that we have :from<perl5> | 19:29 | |
19:29
apotheon joined
|
|||
lizmat | which, BTW, already works if you have Inline::Perl5 installed | 19:29 | |
19:30
cognominal left,
diana_olhovik_ left,
cognominal joined
19:31
cognominal left
|
|||
masak | m: say [[1, 2], 3].flat | 19:31 | |
camelia | rakudo-moar 3813a2: OUTPUT«([1 2] 3)» | ||
pmurias | lizmat: what's the intended use of the :api modifier? | ||
19:32
mr_ron left
|
|||
masak | philh: seems suspect to me. does Array.flat only convert the outermost [] to a () ? seems a bit surprising. | 19:32 | |
jnthn | Array.flat is a no-op 'cus an Array is by definition already flat | 19:33 | |
philh | masak: well, it seems to return a Seq rather than a list. But yeah, it doesn't seem to be actually flattening. | ||
lizmat | if a module author indicates that a certain version of a compunit adheres to a certain api, then a CURLI can automatically allow/disallow selecting a higher numbered version of a module in the case where multiple compunit match a give -use- statement specification | ||
jnthn | (Because an Array is a bunch of Scalar containers) | ||
So, working as designed. | |||
lizmat | jnthn: perhaps Array.flat should warn then ? | ||
jnthn | lizmat: But flat is recursive, so then for flat @a, @b { } would warn. | 19:34 | |
Which surely isn't desirable. | |||
lizmat | that would be the sub case, I was talking about the Array.flat method | ||
philh | p6: say [(1,2),3].list.flat | ||
camelia | rakudo-moar 3813a2: OUTPUT«((1 2) 3)» | ||
jnthn | lizmat: The sub only delegates to the .flat method | 19:35 | |
philh | So is there a simple way to get the flattening behaviour on an array? | ||
lizmat | ah, eh, ok | ||
jnthn | m: say flat [[1, 2], 3]>>[] | 19:36 | |
camelia | rakudo-moar 3813a2: OUTPUT«(1 2 3)» | ||
pmurias | lizmat: isn't that something that can be done with supersedes? | ||
jdv79 | pmurias: the api mod (in backlog) is a solution to bridging the gap between the strict and lax camps. | ||
jnthn | (That is, apply the zen slice over the data structure) | ||
TimToady | m: say gather [[1,2],3].deepmap: *.take | ||
camelia | rakudo-moar 3813a2: OUTPUT«(1 2 3)» | ||
jnthn | This works any number of levels deep | ||
m: say flat [[1, 2], [3, [4, 5]]]>>[] | 19:37 | ||
camelia | rakudo-moar 3813a2: OUTPUT«(1 2 3 [4 5])» | ||
jnthn | oh? :) | ||
Oh, nodal...not deep | |||
The TimToady one works any number of levels deep, I guess. | |||
timotimo | Ven: i'd call my ADT module just "code gen" | 19:39 | |
Ven | timotimo: hey, better syntax is always nice ;-) | ||
TimToady | lunch & | 19:41 | |
pmurias | jdv79: I have read through todays backlog but it seems to be just an attempt to port stuff from gentoo | 19:42 | |
19:42
dha joined
|
|||
masak | "an array is already flat" -- interesting. I can see how that is true, but it's something I've yet to internalize. | 19:43 | |
philh | I'm trying to look up the >>[] thing but can't find >>, could I get a pointer? | ||
19:44
japhb joined
|
|||
jnthn | philh: Hyper operator | 19:44 | |
pmurias | jdv79: with the use case being binding to different incompatible versions of libraries | ||
jnthn | m: my @a = 1, 2, 3; @a>>++; say @a; | ||
camelia | rakudo-moar 3813a2: OUTPUT«[2 3 4]» | ||
dha | You may have to search for xAB | ||
japhb | .tell TimToady Happy Birthday! | ||
yoleaux | japhb: I'll pass your message to TimToady. | ||
jnthn | That's another example | ||
19:44
Ven left
|
|||
dha | sorry, xBB | 19:44 | |
japhb | .tell masak three-types-of-macros.md looks very promising. How much of that do you have working in 007 at this point? | 19:45 | |
yoleaux | japhb: I'll pass your message to masak. | ||
19:45
dha left
19:46
mr_ron joined
|
|||
philh | jnthn: Ah, thanks. So the [...]>>[] is like ( [1,2][], 3[] ) i.e. ( [1,2], 3 ) which flattens accordingly. Got it. | 19:47 | |
japhb | What's the proper post-GLR way to map over an array, producing a Pair for each item in the original array in which the Pair's key is a (computed) string and the Pair's value is an array of two values, and assigning that to another array, so that the end result is [ key1 => [ a, b ], key2 => [ c, d], ]? | 19:48 | |
I keep trying to fix this pre-GLR code in front of me with cargo culting, and (no surprise) that isn't actually working for me. | |||
masak | m: my @a = 1..6; say [@a.map(-> $x, $y { "key{ ++$ }" => [$x, $y] })].perl | 19:49 | |
yoleaux | 19:45Z <japhb> masak: three-types-of-macros.md looks very promising. How much of that do you have working in 007 at this point? | ||
camelia | rakudo-moar 3813a2: OUTPUT«[:key1([1, 2]), :key2([3, 4]), :key3([5, 6])]» | ||
moritz | m: say <a b c>.map({; ($_ x 2) => [ $_ xx 2] }).perl | ||
camelia | rakudo-moar 3813a2: OUTPUT«(:aa(["a", "a"]), :bb(["b", "b"]), :cc(["c", "c"])).Seq» | ||
masak | japhb: ^ | ||
japhb: in 007 (just as in Rakudo), the first of the three is implemented. just about to dive into the latter two. I don't think 007 does hygiene properly yet, but working on that. | 19:51 | ||
jnthn | masak: superstitious ; ? | ||
japhb | moritz was closer to what I meant, but I'll file both of those in my head for later. Thanks masak++, moritz++ | ||
19:51
spider-mario joined
|
|||
jnthn | Oh, moritz wrote the superstitious ; | 19:51 | |
masak | jnthn: did you mean "moritz"? :P | ||
jnthn | :) | ||
japhb | jnthn: You mean moritz? | ||
jnthn | You know, guys, I might just have meant moritz! :P | ||
japhb | Heh | ||
masak | perhaps you meant that other guy. | ||
jnthn | m: say <a b c>.map({ ($_ x 2) => [ $_ xx 2] }).perl | 19:52 | |
camelia | rakudo-moar 3813a2: OUTPUT«(:aa(["a", "a"]), :bb(["b", "b"]), :cc(["c", "c"])).Seq» | ||
masak .oO( superstitious "masak:" ) :P | |||
japhb | Although now I'm really wondering what I didn't get right before. | ||
masak | japhb: yah, I got it in one! :P | ||
jnthn | The use of $_ implies it's a Block (though we hadn't used to get that one right) | ||
moritz is stuck in his "superstitious" past | 19:54 | ||
japhb | moritz: Yeah, I have a lot of them to unlearn after all these years. | ||
19:55
Ven joined
|
|||
japhb | Especially since some of the bugs still exist, and some only got fixed in the last week. | 19:55 | |
dalek | ast: 9d54b21 | usev6++ | S12- (14 files): Replace some eval-dies-ok in S12-* with throws-like |
20:00 | |
20:01
colomon left
20:03
darutoko left
20:04
rurban joined
20:05
Ben_Goldberg joined,
_dolmen_ joined
20:08
BenGoldberg left
|
|||
jnthn back tomorrow, with tuits :) | 20:08 | ||
'night | |||
timotimo | gnite jnthn :) | 20:09 | |
20:10
AlexDani` joined,
colomon joined
20:11
AlexDaniel left
|
|||
masak | I have that "stuck in the past" thing, too. | 20:13 | |
I solve it by jealously observing newcomers quickly arrive at clean, un-superstitious solutions, and then telling them how horrible things used to be :P | 20:14 | ||
Ven | so, how should I call an external program with output capturing *and* parameter escaping? seems `run` is not the one droid I'm looking for | 20:16 | |
sergot | #perl6: don't forget about the lunar eclipse this night! :) | ||
japhb | Ven: What kind of parameter escaping are you looking for? run doesn't need shell escaping, since it skips the shell ... | 20:18 | |
(Well, at least on OSen that have sane spawn semantics) | |||
masak saw "parameter escaping", assumed the wrong context (escape analysis) and went "wuh, parameters trivially escape, always!" :P | 20:19 | ||
Ven | japhb: true. I'm never clear enough... I want to invoke a program with an escaped strng | 20:20 | |
20:21
patrickz left
|
|||
timotimo | so you need to unescape the escaping? | 20:22 | |
20:23
perler joined
20:25
colomon left
20:26
perler left
20:27
cognominal joined,
colomon joined
20:28
pmurias left
20:30
dha joined
20:32
Ven left
20:33
Ven joined,
mr_ron left
20:36
kaare__ left
20:37
vendethiel joined
20:38
mr_ron joined
|
|||
lizmat has been working on the next issue of P6W: gist.github.com/lizmat/28d6d9b8f3a968e6c92e | 20:40 | ||
please let me know if I missed any videos, blogs, slides :-) | |||
20:41
tokuhiro_ joined,
_dolmen_ left
|
|||
timotimo | good work, lizmat! | 20:43 | |
20:45
tokuhiro_ left
|
|||
timotimo | lizmat: we don't have any clue how to make .min and .max faster, right? | 20:47 | |
masak | lizmat++ # working on p6w | ||
dha | lizmat++ # just generally. | ||
I probably won't have a blog post up until I get home. Sorry. | 20:48 | ||
lizmat | dha: I won't publish until tomorrow evening, in about 24 hours | ||
I've been only combing the net for videos, blogs, slides, ecosystem additions so far | |||
dha | Ok. I'm flying home now, so maybe... | ||
*nod* | 20:49 | ||
lizmat | timotimo: we could actually make it faster, I think | ||
timotimo | good flight, dha! | ||
lizmat | I mean, why do we need the map at all ? | 20:50 | |
timotimo | yeah | ||
dha | I'm considering attempting to corral the documentation efforts into something more coherent while we still have a couple of months before the release. | ||
timotimo | well, maybe that's the cleverest way to pull out all values from the iterator? | ||
dha | thanks timotimo! | ||
Ven | ++lizmat++ # YAY! | ||
lizmat | timotimo: no, because map needs to take care of the case where it returns more than one value in an iteration | ||
timotimo | oooh | 20:51 | |
of course | |||
lizmat | also, it's generating a list there | ||
when it is immediately discarded | |||
timotimo | so, what is the other way we can do it? get the .iterator and .shift off of it? | ||
timotimo not yet very good at the new GLR internals api | |||
lizmat | lemme see if I can whip up a proto type | 20:52 | |
need some time of from blogging :-) | |||
timotimo | oh, glad to be supplying something easy-ish for you :) | ||
lizmat: min accounts for 20% inclusive time on this one task i have :) | 20:53 | ||
in the mean time i'll work towards making this thing a more proper benchmark | 20:55 | ||
with reproducible decisions whether or not to do work at certain places - which are currently probabilistic | |||
20:57
rurban left,
espadrine left
|
|||
timotimo | very good, it's reproducible now | 20:59 | |
dha | Hm. Is p6doc broken at all? | 21:02 | |
"===SORRY!===\nCannot invoke this object (REPR: Uninstantiable)" | |||
lizmat | dha: I have no idea :-( | ||
wow | |||
dha | That's when I try to read docs for an installed module. Maybe it's not documented... | 21:03 | |
21:03
apotheon left
|
|||
lizmat | no, that's a deep compile error | 21:03 | |
21:04
renormalist left,
renormalist joined
|
|||
lizmat | timotimoL would 2x as fast do ? | 21:04 | |
21:04
Ven left
|
|||
lizmat | timotimo: would 2x as fast do ? | 21:04 | |
timotimo | hm | 21:05 | |
dha | Ironically, I'm looking to read the docs on Benchmark. :-) | ||
timotimo | well, i'd prefer 20x faster, but that's probably beyond the point of diminishing returns ;) | ||
just kidding, i'd love 2x as fast! | |||
lizmat | lemme check some more.. | ||
timotimo | my min was called 213668 times and took 21739.4ms inclusive time | 21:06 | |
172267.72ms is the complete run time of the program | |||
(an amazing 37% gc time) | 21:07 | ||
21:08
apotheon joined
|
|||
lizmat | timotimo: do you need a "by" ? | 21:09 | |
dha | Ah. regardless of p6doc's status, Benchmark isn't documented. | ||
lizmat | it's an ecosystem module, is it not ? | ||
dha | Dunno. I'll look. | ||
timotimo | i do not | ||
21:10
Ven joined
|
|||
timotimo | this is a bunch of ints and a couple of Inf | 21:10 | |
Ven | Also -- before it's too late, right? – Happy birthday, TimToady++ | ||
21:10
cognominal left
|
|||
timotimo | sorry, lizmat, i meant to highlight you. no :&by needed | 21:11 | |
lizmat | 2.6 times is what I can do for you... :-) | 21:13 | |
checking spectest result before committing | |||
21:14
rindolf left
|
|||
timotimo | hooray | 21:14 | |
lizmat | if the spectest comes out ok, indeed :-) | ||
masak .oO( conditional hooray! ) | |||
lizmat | hmmm... some breakage... :-( looking at why in a mo | 21:15 | |
timotimo | there's like three test files that b0rk | 21:16 | |
lizmat | I have a few more now | 21:17 | |
but I also got a lot of roast updates... | |||
Ven | .u ⍵ | 21:18 | |
yoleaux | U+2375 APL FUNCTIONAL SYMBOL OMEGA [So] (⍵) | ||
Ven | .u apl alpha | 21:19 | |
yoleaux | No characters found | ||
Ven | .u apl functional symbol alpha | 21:20 | |
yoleaux | U+2376 APL FUNCTIONAL SYMBOL ALPHA UNDERBAR [So] (⍶) | ||
U+237A APL FUNCTIONAL SYMBOL ALPHA [So] (⍺) | |||
masak | APL: the first and the last programming language that got its own set of Unicode symbols. | 21:21 | |
Ben_Goldberg | m: gist.github.com/BenGoldberg1/bc39a...aeb733012a | 21:23 | |
camelia | rakudo-moar 3813a2: OUTPUT«Cannot send a message on a closed channel in block <unit> at /tmp/T9gWZ7YfGJ:33» | ||
lizmat | timotimo: found an error in my logic, fixing now and re-testing | ||
Ben_Goldberg | Can anyone tell me why the error seems to come from line 33, which doesn't contain a .send ? | 21:25 | |
21:25
mr_ron left
|
|||
masak | Ben_Goldberg: maybe the channel closes before the logic in `start { ... }` has time to finish? | 21:28 | |
21:28
Ven left
|
|||
masak confesses to not knowing any details of this | 21:28 | ||
lizmat | timotimo: my opt breaks (^10).pick(3).min :-( (This Seq has been consumed) | 21:31 | |
timotimo: gist.github.com/lizmat/44a6d97adf6ab4588e97 | 21:32 | ||
I thought I could get away by just using AT-POS | 21:33 | ||
21:33
bakedb joined
|
|||
lizmat | probably need a full-fledged iterator class.. :-) | 21:33 | |
gfldex | Ben_Goldberg: you may be running out of threads from the pool, unless that bug was fixed already. I am guessing as hard as masak tho. | 21:34 | |
21:35
colomon left
|
|||
Ben_Goldberg | Running out of threads from the pool should cause a deadlock, no? | 21:35 | |
gfldex | you may be able to test is by limiting the number of threads to 10 | 21:36 | |
21:36
colomon joined
|
|||
Ben_Goldberg | How do I do that? | 21:37 | |
gfldex | change 1..20 to something much smaller | ||
Ben_Goldberg | m: gist.github.com/BenGoldberg1/bc39a...aeb733012a | 21:38 | |
camelia | rakudo-moar 3813a2: OUTPUT«Attempt to return outside of any Routine in block <unit> at /tmp/4c1CWudfwj:33» | ||
Ben_Goldberg | Oooh, different error now. | ||
So it's a threads problem. | |||
gfldex | there are many bugs to choose from :) | 21:39 | |
21:42
dha left
|
|||
lizmat | timotimo: think I got it covered now | 21:42 | |
21:42
colomon left
|
|||
gfldex | Ben_Goldberg: it maybe wise to rakudobug your findings | 21:42 | |
21:46
mr_ron joined,
colomon joined
|
|||
dalek | kudo/nom: 91b8b1e | lizmat++ | src/core/Any-iterable-methods.pm: Make .min about 2.5x faster |
21:48 | |
lizmat | timotimo: ^^^ | 21:49 | |
21:51
FROGGS_ left
21:53
TEttinger joined
21:56
makapa joined
21:58
AlexDani` left
|
|||
masak | lizmat++ | 22:01 | |
'night, #perl6 | |||
timotimo | lovely! | 22:04 | |
lizmat: i expect i can just copy-paste that into .max, too? | |||
lizmat | I'm working on that, but that caused build breakage somehow | 22:05 | |
22:05
dnmfarrell joined
22:08
makapa left
|
|||
lizmat | weird: I changed the code just a little bit, no logic changes, and now it compiles like a charm :-( | 22:10 | |
running spectest now, if clean, will push | 22:11 | ||
22:14
telex left
22:15
sftp left
22:16
telex joined
|
|||
dalek | kudo/nom: 1ed1ea0 | lizmat++ | src/core/Any-iterable-methods.pm: Make .max about 2.5x faster Plus some refactoring on .min as well to reduce code bloat |
22:17 | |
lizmat | timotimo ^^^ | ||
22:18
sftp joined
|
|||
lizmat wonders how timotimo's program runs now | 22:21 | ||
timotimo | right, gimme a bit | 22:23 | |
22:25
bjz left
|
|||
timotimo | a bunch fewer GC runs | 22:27 | |
22:27
vendethiel left
|
|||
timotimo | noticably less run time in total, too | 22:27 | |
m: say "the previous run took { 92149.34 / 82652.85 }x as much time for executing code" | 22:28 | ||
camelia | rakudo-moar 91b8b1: OUTPUT«the previous run took 1.11489610x as much time for executing code» | ||
lizmat | ? is that backwards ? | 22:29 | |
timotimo | it was slower before | ||
so it's faster now | |||
lizmat | ah, yes | ||
well, I guess we could further optimize the @a.min and @a.max case | 22:30 | ||
timotimo | m: say "min used to take { 13226.42 / 6069.31 }x as much time" | ||
camelia | rakudo-moar 91b8b1: OUTPUT«min used to take 2.1792296x as much time» | ||
timotimo | not quite 2.5x faster, but it's still very welcome :) | ||
lizmat | my bench was: (^10000).list.min.say | 22:32 | |
*100000 | |||
22:33
RabidGravy left
|
|||
lizmat | anyways, glad to have been of service | 22:33 | |
timotimo | \o/ | ||
lizmat gets some sleep before getting up to see a red moon | |||
timotimo | gnite lizmat :) | ||
good luck with that moon | |||
i'll be trying to catch it, too | |||
22:34
mr_ron left
|
|||
timotimo | huh, i may have compared it to a version that lacked another patch, too | 22:34 | |
so the time difference might be less pronounced actually | |||
22:41
Akagi201 joined
22:45
Akagi201 left
22:46
dnmfarrell left
22:52
leont joined
22:57
mr_ron joined
23:01
philh left
23:28
Khisanth joined
23:29
krunen left
23:43
krunen joined,
tokuhiro_ joined
23:47
tokuhiro_ left
23:54
leont left
|