»ö« 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 moritz on 25 December 2014. |
|||
00:06
wtw left
00:12
skids joined
00:16
Kristien left,
Kristien joined
00:19
Kristien left
00:34
fernand__ joined
|
|||
raydiak | .tell tadzik bugfix PR up for rakudobrew | 00:43 | |
yoleaux | raydiak: I'll pass your message to tadzik. | ||
00:44
laouji joined
01:07
davido___ left
01:08
|Tux| left,
telex left,
|Tux| joined
01:09
skids left,
davido___ joined
01:10
moritz_ joined,
telex joined,
broquain1 joined
|
|||
timotimo | i don't have access to rakudobrew :( | 01:13 | |
01:16
moritz left,
broquaint left,
mst left,
jdv79 left,
cursork left
01:20
cursork joined,
mst joined,
jdv79 joined,
dylanwh joined,
JimmyZ joined,
renormalist joined,
leedo joined
01:22
echowuhao left
01:23
Sysaxed left,
jantore left
01:24
jantore joined
01:29
adu left
01:33
jantore left,
jantore joined
01:35
laouji left,
raiph left,
Sir_Ragnarok left,
robinsmidsrod left,
yakudza left,
Maddingue left,
arnsholt left,
mtj_ left,
Vlavv_ left,
ilbot3 left,
d^_^b left,
mrf left,
aoeuhtns left,
simcop2387 left,
eiro left,
yoleaux left,
ShimmerFairy left,
zoosha left,
jferrero left,
krunen left,
rhr_ left
01:38
adu joined
01:39
laouji joined,
Vlavv_ joined,
raiph joined,
Sir_Ragnarok joined,
ilbot3 joined,
d^_^b joined,
robinsmidsrod joined,
yakudza joined,
aoeuhtns joined,
mrf joined,
simcop2387 joined,
eiro joined,
yoleaux joined,
Maddingue joined,
ShimmerFairy joined,
zoosha joined,
jferrero joined,
arnsholt joined,
krunen joined,
mtj_ joined,
mathw joined,
cosimo joined,
danaj joined,
burnersk joined,
BinGOs joined,
rhr_ joined,
ruoso joined,
BooK joined,
sergot joined,
mls joined,
Celelibi joined,
card.freenode.net sets mode: +v yoleaux
01:40
laouji left,
raiph left,
Sir_Ragnarok left,
robinsmidsrod left,
yakudza left,
Maddingue left,
arnsholt left,
mtj_ left,
Vlavv_ left,
ilbot3 left,
d^_^b left,
mrf left,
aoeuhtns left,
simcop2387 left,
eiro left,
yoleaux left,
ShimmerFairy left,
zoosha left,
jferrero left,
krunen left,
mathw left,
cosimo left,
danaj left,
burnersk left,
BinGOs left,
rhr_ left,
ruoso left,
BooK left,
sergot left,
mls left,
Celelibi left,
Grrrr left
01:41
laouji joined,
Vlavv_ joined,
raiph joined,
Sir_Ragnarok joined,
ilbot3 joined,
d^_^b joined,
robinsmidsrod joined,
yakudza joined,
aoeuhtns joined,
mrf joined,
simcop2387 joined,
eiro joined,
yoleaux joined,
Maddingue joined,
ShimmerFairy joined,
zoosha joined,
jferrero joined,
arnsholt joined,
krunen joined,
mtj_ joined,
mathw joined,
cosimo joined,
danaj joined,
burnersk joined,
BinGOs joined,
rhr_ joined,
ruoso joined,
BooK joined,
sergot joined,
mls joined,
Celelibi joined,
card.freenode.net sets mode: +v yoleaux
01:46
robins joined
01:50
jantore left
01:51
robinsmidsrod left,
jantore joined
01:53
__zug__ left
01:55
chenryn joined
01:59
Grrrr joined,
grettir left
02:01
jantore left,
jantore joined
02:04
tim_ joined
02:06
jantore left,
jantore joined
02:07
jbotz left,
skids joined
02:08
tim_ left
02:10
Grrrr left,
raiph left
|
|||
dalek | osystem: 032e0ea | (Andrew Egeler)++ | META.list: Add XML::Signature |
02:14 | |
02:16
Grrrr joined
02:19
dj_goku joined,
dj_goku left,
dj_goku joined
02:30
fernand__ left
02:39
laouji_ joined
|
|||
dalek | c: 694d8b9 | TimToady++ | lib/Language/5to6.pod: explain differences in conditionals/while |
02:39 | |
02:43
laouji_ left
|
|||
dalek | c: 9137e59 | TimToady++ | lib/Language/5to6.pod: note that unless doesn't allow else |
02:44 | |
02:45
ilbot3 left
02:48
ilbot3 joined
03:07
noganex joined
03:10
noganex_ left
|
|||
dalek | c: 8ed9913 | TimToady++ | lib/Language/5to6.pod: some notes on "now" |
03:10 | |
03:15
firefish5000 joined
03:18
Psyche^ joined
03:20
raiph joined
03:22
Patterner left
03:24
dolmen left
03:26
broquain1 is now known as broquaint
|
|||
dalek | kudo/native-ref: 1bb9e5a | hoelzro++ | src/Perl6/Grammar.nqp: Fix S26 errors Calling create_signature_and_params overwrites $*PRECEDING_DECL with the final parameter object in the signature, so we need to preserve it so that trailing POD can still attach to the routine. |
03:28 | |
hoelzro | .tell jnthn I fixed the S26 failures, but I didn't manage to get rid of the dummy stuff | ||
yoleaux | hoelzro: I'll pass your message to jnthn. | ||
hoelzro | .tell jnthn I think you and I will have to have a chat about the best way to do that | ||
yoleaux | hoelzro: I'll pass your message to jnthn. | ||
03:35
firefish5000 left
03:37
dolmen joined
|
|||
dalek | c: b17117b | TimToady++ | lib/Language/5to6.pod: s/value/variable/ |
03:42 | |
03:46
laouji left,
laouji joined
03:51
laouji left
04:10
raiph left
04:17
anaeem1_ joined
04:20
chenryn left
04:24
leont left
04:25
echowuhao joined
04:26
xinming joined
04:29
echowuhao left
04:31
laouji joined
04:32
rmgk_ joined,
rmgk left,
rmgk_ is now known as rmgk
|
|||
dalek | c: b693760 | paultcochrane++ | lib/Language/5to6.pod: s/scoped/scope/ |
05:47 | |
[ptc] | TimToady++ # doc corrections and updates | 05:49 | |
05:57
myp left
06:00
myp joined
06:07
mr-foobar left
|
|||
dalek | c: cb85aa2 | TimToady++ | lib/Language/5to6.pod: more random tweaks |
06:09 | |
moritz_ | \o | 06:12 | |
06:12
chenryn joined
06:13
laouji_ joined
06:18
laouji_ left
06:34
average joined
|
|||
average | hello folks | 06:34 | |
just read an article on Go tmikov.blogspot.ro/2015/02/you-dont...e-you.html | |||
an interesting read. I suppose language designers are a good audience for it since it talks about problems that Go has | 06:35 | ||
hopefuly Perl6 will learn from that article what it can | |||
TimToady | I don't think we share many problems with Go | 06:37 | |
Go should probably have been named No instead... | 06:39 | ||
06:39
xinming left
|
|||
TimToady | (btw, that article was posted here several days ago already) | 06:41 | |
average | i'm sorry to have brought it up again then | 06:43 | |
06:43
telex left
06:44
telex joined
|
|||
TimToady | no problem, better too many than too few | 06:55 | |
06:56
FROGGS left
07:07
gfldex joined
07:09
rindolf joined
07:10
wtw joined
07:11
diana_olhovik_ joined
07:28
dolmen left
07:36
gfldex left
07:40
fhelmberger joined,
rurban joined
|
|||
dalek | ast: 5a9036a | TimToady++ | S02-literals/quoting-unicode.t: test that smart quotes work if balanced |
07:41 | |
07:42
dolmen joined,
darutoko joined
07:47
Rounin joined
07:52
FROGGS joined
07:57
dolmen left
|
|||
FROGGS | .tell colomon I don't understand how Compress::Zlib::Raw can fail for the smoker... see gist.github.com/FROGGS/229dffa2ef287aa08f83 | 07:57 | |
yoleaux | FROGGS: I'll pass your message to colomon. | ||
08:01
_mg_ joined
08:02
prime- joined
|
|||
average | FROGGS: maybe Rakudo version differs on the smoker. maybe zlib is missing on the smoker. | 08:04 | |
08:05
prime left
|
|||
average | there needs to be a description of what software is present on the smoker | 08:05 | |
FROGGS | average: the tests passed like 12 days ago, so I would gess that the zlib is on that box | 08:06 | |
average: but yeah, the build or test log would be very very helpful here | |||
average: as I understand it the smoker always runs rakudo HEAD | 08:07 | ||
(like what I do) | |||
nwc10 | <aol/> | ||
average | FROGGS: yeah, except HEAD can mean a lot of things | 08:09 | |
FROGGS | it would also help if the smoker would send reports to this site: testers.perl6.org/dist/Compress::Zlib::Raw | 08:12 | |
(using panda's report functionality) | |||
sergot | morning | ||
FROGGS | morning sergot | ||
average | how do you guys actually keep sticking to the projec(Rakudo) ? | 08:13 | |
I'm surprised to see you all so commited for so much time | |||
and so focused | |||
don't you have like.. jobs and drink coffee and fall asleep on couches ? | 08:14 | ||
FROGGS | hehe | ||
well, I've got a job and I have three kids (.7m, 3.7y and 5.1y)... | 08:15 | ||
but I'll do what I can when I sit in their room when they are meant to fall asleep, which can takes about 2 hours each evening | 08:16 | ||
and, instead of watching tv or playing games I usually hack until midnight | 08:17 | ||
08:17
wicope joined
|
|||
average | FROGGS: seriously ? | 08:17 | |
FROGGS | (just to regret it every other morning) | ||
average: aye | |||
average | amazing.. | ||
08:19
Ven joined
|
|||
moritz_ | much the same here (though with only two kids) | 08:19 | |
FROGGS | average: and rakudo to me is not just about committing something to an open source project... I learn a lot, every day, and that makes it challenging and fun | 08:20 | |
moritz_ | also, friendships emerge from the community | 08:21 | |
08:22
moritz_ is now known as moritz
|
|||
FROGGS | true :o) | 08:22 | |
moritz: that reminds me that we have to meet in person some day :o) | |||
moritz | I've never seen FROGGS in real live, but I'd invite him over without any hesitaiton | ||
FROGGS: timing :-) | |||
FROGGS | moritz: well, I've seen you once... | ||
at the YAPC::EU in frankfurt, you talked about exceptional exceptions | 08:23 | ||
moritz | FROGGS: if you ever visit the Nürnberg/Fürth area, let me know | ||
FROGGS: I wasn't at YAPC::EU in Frankfurt :( | |||
FROGGS | ohh... | ||
then I've just seen a video? | |||
mhh.... | |||
moritz | might be possible | ||
FROGGS | yeah, probably | ||
moritz | I did talk about exceptions at YAPC::EU in Kiev | ||
FROGGS | ahh | ||
well, at the YAPC::EU in 2012 I heard about Perl 6 for the first time anyway | 08:24 | ||
nwc10 | must be about time for *another* German Perl Workshop in Erlangen soon :-) | ||
moritz | nwc10: well yes, it was 2008 and 2012, so the next one should be 2016 | ||
nwc10: we are... discussing the possibility. | 08:25 | ||
FROGGS | dunno if 2016 is "soon" and if Erlangen.pm would like to do it | ||
08:25
bjz joined
|
|||
FROGGS | moritz: you are not coming to Dresden, are you? | 08:25 | |
nwc10 | you get a cycle off in 2100, because it's not a leap year. | ||
moritz | FROGGS: nope :( | ||
FROGGS | :/ | ||
I wont be at the yapc::eu this year either | 08:26 | ||
moritz | I'd also like to attend the QA hackathon, but won't make it :( | ||
FROGGS | yeah | ||
08:27
Cyrus joined
|
|||
FROGGS | my plan is to attend qa, gpw, and maybe spw, though that depends on general holiday planning with $family | 08:29 | |
moritz hasn't seen timotimo IRL either :( | 08:34 | ||
FROGGS | moritz: then you probably won't have met ven either? | 08:35 | |
moritz | FROGGS: correct | ||
average | FROGGS: do you get to use those things you learn in some real situation ? | ||
Ven looks around | |||
hi, hi | |||
average | Ven you're missing an n | ||
08:35
bjz left
|
|||
moritz | average: I'm not FROGGS, but I do :-) | 08:36 | |
Ven has seen timotimo IRL aplenty..:) | |||
average | moritz: in your dayjob ? can you give some examples ? | ||
FROGGS | average: ohh yes... | ||
moritz | average: compilers are all about parsing text and then transforming data structures | 08:37 | |
FROGGS | average: I do not just learn about Perl 6 (the language), I learn a lot about C (and C++ nowadays), and also a lot about programming patterns for $dayjob problems | ||
jnthn++ for a very good knowhow transferability | 08:38 | ||
moritz | average: I do that basically daily. Read some config files, or exports of data sets from other programs, munge them together, detect errors | ||
08:38
robins is now known as robinsmidsrod
|
|||
moritz | average: also things like collaborative working, automating things (just think of camelia, our doc.perl6.org builds, ...) | 08:38 | |
usage of ticket systems for documentation and communication | 08:39 | ||
average: also, doing a bit programming language design (around TimToady++, no less) gives you a keen eye for programming languages, which in turn can help learning new languages | |||
FROGGS | ... or understand old languages better | ||
moritz | aye | 08:40 | |
08:41
Ven left
|
|||
average | interesting | 08:41 | |
08:41
pdcawley joined
|
|||
moritz | also I learned a lot about abstractions | 08:42 | |
and how closures actually work | |||
FROGGS | .tell Kristien do you have something special in mind except for the obvious? - FROGGS: also have fun with union members! | ||
yoleaux | FROGGS: I'll pass your message to Kristien. | ||
FROGGS | yes, the "where to put things" I basically learned here... | 08:43 | |
jnthn has also learned plenty :) | 08:58 | ||
yoleaux | 03:28Z <hoelzro> jnthn: I fixed the S26 failures, but I didn't manage to get rid of the dummy stuff | ||
03:28Z <hoelzro> jnthn: I think you and I will have to have a chat about the best way to do that | |||
jnthn | hoelzro: \o/ | ||
nwc10 | jnthn: ASAN likes nativeref | 08:59 | |
09:00
Woodi left,
Woodi joined
|
|||
jnthn | nwc10: Yay. You did spectest too, I guess? | 09:01 | |
jnthn can't remember exactly what gets run in the nwc10++ ASAN runs | 09:02 | ||
09:02
Ven joined
|
|||
nwc10 | yes. IIRC one failed that doesn't fail with nom | 09:02 | |
jnthn | exceptions.t prolly | ||
nwc10 | spectest. But wierd errors fails. And I have not been digging on that one | ||
jnthn | I'm just behind on latest commits in nom | ||
09:02
bjz joined
|
|||
Ven | o/, #perl6 | 09:03 | |
jnthn | hi Ven | 09:04 | |
09:04
virtualsue joined
09:17
pecastro joined
09:21
kjs_ joined
09:26
average left,
pecastro left
09:27
mkrull joined
09:29
pecastro joined
09:30
pecastro left
09:31
laouji left
|
|||
itz returns to digging in the perl5 banking salt mines and wishes he was in the bright light of perl6 above | 09:31 | ||
09:33
zakharyas joined
|
|||
Ulti | ^ | 09:34 | |
jnthn | .tell hoelzro Yay, spectest in native-ref now looks sehr gut. Thanks! | 09:39 | |
yoleaux | jnthn: I'll pass your message to hoelzro. | ||
mkrull | Hello. Where do I find the docs for the Perl 6 standard library? Is there even such a thing or is that implementation dependent? Specifically I am searching for rakudos IO::Socket docs but I am somewhat lost googling. | 09:40 | |
moritz | mkrull: doc.perl6.org is the most complete right now, though it doesn't document IO::Socket yet | 09:41 | |
mkrull: design.perl6.org/S32/IO.html talks a tiny about IO::Socket, but not much | |||
09:42
pdcawley left
|
|||
mkrull | moritz: ok. I took a look at some packages that use IO::Socket but that is a very limited view. Is there a test suite I could check out? | 09:43 | |
09:44
dakkar joined
|
|||
moritz | mkrull: github.com/perl6/roast/ see the S32-io/ dir | 09:46 | |
mkrull: and doc contributions would be *very* welcome :-) | |||
09:46
abraxxa left
09:47
abraxxa joined
09:48
laouji joined,
espadrine joined,
Ven left
|
|||
mkrull | moritz: Thanks. Contributions to the docs go to? Maybe github.com/perl6/doc ? | 09:50 | |
09:52
laouji left
09:53
Ven joined
|
|||
jnthn | mkrull: Yes | 09:54 | |
moritz | mkrull: yes, exactly | ||
09:55
larion joined,
Ven left,
Ven joined
10:00
pdcawley joined
10:02
Ven left
10:05
mkrull left
10:06
_mg_ left
|
|||
masak | good antenoon, #perl6 | 10:13 | |
FROGGS | hi masak | ||
dalek | kudo/native-ref: 245c9ea | jnthn++ | src/Perl6/Actions.nqp: Add missing :node(...) |
10:14 | |
kudo/native-ref: af29414 | jnthn++ | src/Perl6/Actions.nqp: Remove dead code. |
|||
10:15
lizmat joined
|
|||
FROGGS .oO( bury dead code ) | 10:18 | ||
dunno why I have to think about Dobby now | |||
I probably read too much Harry Potter... | |||
dalek | ast: e30cc14 | jnthn++ | S12-attributes/native.t: Various tests for natively typed attributes. |
10:19 | |
kudo/native-ref: c2673d7 | jnthn++ | src/ (2 files): Support defaults on native attributes. We're somewhat lacking in a way to represent unassigned for native int and num attributes at the moment, so there's something of a semi-predicate bug here. Not entirely sure what to do about that; maybe we'll simply have to live with it. |
10:22 | ||
kudo/native-ref: 9d00e31 | jnthn++ | t/spectest.data: Run S12-attributes/native.t. |
|||
10:23
_mg_ joined
10:24
adu left
10:29
_mg_ left
|
|||
dalek | kudo/native-ref: 730ec57 | jnthn++ | src/Perl6/Actions.nqp: Make twigil-less natively typed attrs work. This also adds the missing self availability check for the twigil-less path and eliminates some code dupe. |
10:35 | |
ast: 6b73649 | jnthn++ | S12-attributes/native.t: Tests for non-twigil native attribute decls. |
|||
jnthn | Hmm, was there not an outstanding issue involving the REPL and natively typed lexicals? | 10:38 | |
moritz | > my int $x = 4; | ||
4 | |||
> $x | |||
0 | |||
tadzik | . o O ( solve for $x ) | 10:39 | |
yoleaux | 00:43Z <raydiak> tadzik: bugfix PR up for rakudobrew | ||
tadzik | oh :) | ||
jnthn | > my int $a = 42; | ||
42 | |||
> $a | |||
42 | |||
So...apparently I fixed it. | 10:40 | ||
masak | \o/ | ||
tadzik | raydiak++ | ||
jnthn | I don't remember fixing it. | ||
:) | |||
tadzik | jnthn++ :) | ||
masak | the "apparently I fixed it" maneuver! :P | ||
apparently jnthn++ :P | |||
jnthn | Thanks for confirming it's bust in nom, anwyays. | ||
tadzik | classic jnthn :P | ||
jnthn | Quick poll on preferences | 10:41 | |
I've now got native-ref at the point where native is rw args work, as does is rw on native attributes, plus things like list-assigning to Buf elements works out | 10:42 | ||
The serious remaining bug is on decont handling of native return values | 10:43 | ||
Beyond that, it's JVM porting and then digging into the optimizers/JIT to deal with performance regressions. | |||
I was going to also do native arrays in the branch, but I'm tempted now to do what's needed to land what I've got done so far in nom, then afterwards work on the native arrays. Sound sane? | 10:44 | ||
[ptc] | m: my @moo = []; say @moo.elems; say [].elems; | 10:48 | |
camelia | rakudo-moar 546000: OUTPUT«10» | ||
[ptc] | I'm confused as to why a seemingly empty array gives a non-zero .elems value. What am I misunderstanding here? | 10:49 | |
jnthn | [ptc]: [] is an array itself, it doesn't flatten | 10:51 | |
m: my @moo = []; say @moo.perl | |||
camelia | rakudo-moar 546000: OUTPUT«Array.new([])» | ||
jnthn | m: my @moo = (); say @moo.perl | ||
camelia | rakudo-moar 546000: OUTPUT«Array.new()» | ||
jnthn | Same as in Perl 5, fwiw. | 10:52 | |
perl -E "say length(my @a = [])" | |||
1 | |||
uh :) | |||
perl -E "say scalar(my @a = [])" | |||
1 | |||
perl -E "say scalar(my @a = ())" | |||
0 | |||
:) | |||
[ptc] | jnthn: ok, thanks for the explanation. However, why does [].elems give 0? | 10:53 | |
jnthn | [ptc]: Because it's an empty array | ||
m: my @moo = []; say @moo[0].elems; | |||
camelia | rakudo-moar 546000: OUTPUT«0» | ||
jnthn | my @a = [] # put an empty array, as an item, into @a | 10:54 | |
[ptc] | so when one doesn't assign [] to a variable, it flattens and not otherwise? | ||
jnthn: hang on, now I think I get it | |||
jnthn | No, it's not really about flattening. Method calls always "see through" to the underlying thing. | 10:55 | |
[ptc] | ah, ok, so the [] is an item in the array. Ok that I get | ||
jnthn: thanks :-) | 10:56 | ||
nwc10 | jnthn: native arrays are currently completely unimplemented? | 10:57 | |
jnthn | nwc10: Yeah | 10:58 | |
nwc10: Though I've now got most of the pieces to implement them. | |||
nwc10 | OK, I'd recommend "do land", as that's "Release early, release often" | ||
jnthn | Yeah, that was my feeling too | ||
10:58
anaeem1__ joined
10:59
anaeem1__ left,
anaeem1 joined
11:00
anaeem1_ left
|
|||
masak | jnthn: re 'Sound sane?' -- YES | 11:00 | |
nwc10 | t/spec/S32-exceptions/misc.rakudo.moar | 11:01 | |
Failed tests: 274, 281 | |||
jnthn | nwc10: Those two are down to missing commits from nom | 11:05 | |
dalek | kudo/nom: aff3d16 | lizmat++ | src/core/List.pm: Make List.kv completely flatten its values |
11:13 | |
lizmat | as instigated by discussion started at irclog.perlgeek.de/perl6/2015-02-24#i_10169279 | 11:14 | |
mjreed++ japhb++ timotimo++ | |||
11:17
anaeem___ joined,
anaeem___ left
11:18
anaeem1__ joined
|
|||
moritz | jnthn: re straw poll: landing native-ref first sounds sane to me | 11:18 | |
11:18
anaeem1 left
11:28
pecastro joined
|
|||
FROGGS | jnthn: please go ahead and merge... I wanna play with that stuff :o) | 11:32 | |
(and we also need to get everything in a good shape until next compiler and star release) | 11:33 | ||
lizmat | TimToady: re irclog.perlgeek.de/perl6/2015-02-24#i_10169420 about grep-index vs grep :k | ||
jnthn | FROGGS: Well, merge needs some work yet | ||
lizmat | I can see the consistency, but I was also under the impression that adding named params is a bit of a code smell | ||
jnthn | I suspect I can get it mergeable by the weekend. | 11:34 | |
lizmat | in any case, we have a problem if we want to do the same for first-index and last-index | ||
as "last:k" is at least from a readability point of view, ambiguous? | |||
jnthn | Provided the sort-of-cold-fever thingy I think I've failed to really get continues to not really happen, at least. :) | ||
FROGGS | jnthn: sure, no hurry :o) | 11:35 | |
lizmat | wrt to native-ref merge, +1 from me | ||
jnthn | OK, I'll work towards that. Thanks. | ||
lizmat | I could use it in the newio branch :-) | ||
FROGGS | *g* | 11:38 | |
dalek | c: 3a1f29a | moritz++ | lib/Language/variables.pod: Fix intra-document Link. Closes #52 |
11:42 | |
jnthn is really happy to see all the doc work that's going on | 11:43 | ||
tadzik | sergot: does your recent MoarVM patch fix openssl? | 11:46 | |
11:47
leont joined
|
|||
timotimo | o/ | 11:51 | |
timotimo looks into fine-tuning the spesh allocator for less wasted memory | 11:52 | ||
timotimo is going to build a little analysis tool/visualization | |||
that idea almost wouldn't let me sleep last night | |||
masak | :) | 11:53 | |
FROGGS | timotimo: that might be a good sign | 11:56 | |
timotimo | m: say "before: {87872/1024} MB" | 12:02 | |
camelia | rakudo-moar aff3d1: OUTPUT«before: 85.8125 MB» | ||
[Tux] | m: use Test;my Str $s;is($s,Str,"init");done; | ||
camelia | rakudo-moar aff3d1: OUTPUT«use of uninitialized value $got of type Str in string context in sub is at lib/Test.pm:113use of uninitialized value $expected of type Str in string context in sub is at lib/Test.pm:113ok 1 - init1..1» | 12:03 | |
timotimo | m: say "after: {85144/1024} MB" | ||
camelia | rakudo-moar aff3d1: OUTPUT«after: 83.148438 MB» | ||
[Tux] | can I RT that as a feature request to not warn but do as expected? | ||
timotimo | a tiny bit more than 2 megabytes saved; not sure if that's really worth it | ||
12:03
mls left
|
|||
lizmat | [Tux]: please do | 12:03 | |
timotimo | we don't have an isa? | ||
oh | 12:04 | ||
you want to check that it's ... yeah, i get it | |||
that's a legit bug indeed | |||
masak | not so sure. | 12:05 | |
&is stringifies. | 12:06 | ||
I think what you want is `ok $s === Str` | |||
12:06
wicope left
|
|||
psch | \o | 12:06 | |
moritz | [Tux]: is() does as string comparison. It's by design that it warns | ||
[Tux]: you can use is_deeply for comparing type objects | 12:07 | ||
[Tux] | the "probelm with $s === Str is that it doesn't show expected vs got | ||
moritz | hence is_deeply | 12:08 | |
[Tux] | «expected "foo", got Str» is way more helpful than "fail" | ||
is_deeply it will be | |||
IIRC it didn't work back in October, but I'll try again | |||
masak honestly wouldn't've thought to use &is_deeply there | 12:09 | ||
moritz | m: use Test; plan 1; is_deeply Str, Str, 'Look, Tux, a Str'; | ||
camelia | rakudo-moar aff3d1: OUTPUT«1..1ok 1 - Look, Tux, a Str» | ||
timotimo | yeah, "is_deeply" is weird | ||
for this case | |||
[Tux] | $work calls :( | ||
back in a bit | |||
moritz | well, we could call it &is-structurally-equivalent, but that would kill all the fun using it, I fear | 12:10 | |
psch | and &is becomes &is-string-value-equivalent | ||
yay disambiguation | |||
moritz | aye | ||
12:10
chenryn left
|
|||
moritz | I meant /aye\ | 12:10 | |
timotimo | mhh | 12:11 | |
heyo psch | |||
dalek | kudo/nom: 6662cdc | lizmat++ | src/core/array_slice.pm: Make foo[] return self as with foo{} |
||
psch | o/ timotimo | ||
timotimo | how are you on this fine day? | ||
12:11
skids left
|
|||
psch | timotimo: i'm ok, if frustrated with not-perl6-stuff | 12:12 | |
12:12
sqirrel joined
|
|||
dalek | ast: 31ab3dc | lizmat++ | S02-lists/tree.t: Mark regressed test as todo |
12:12 | |
masak has some improvements he wants to make to &is_deeply | |||
timotimo | :( | 12:13 | |
12:13
sqirrel_ joined
|
|||
[Tux] would not have expected stringification in is(). | 12:15 | ||
jnthn | timotimo: 2MB is a big saving | ||
12:16
mls joined
|
|||
masak | |Tux|: I've occasionally felt it's weird, but it's also oddly universal. | 12:16 | |
jnthn | timotimo: How'd you get it? | ||
masak | |Tux|: but yeah, it's a bit of a holdover from p5 in a way. | ||
12:16
sqirrel left
|
|||
moritz | also a result of is_deeply/cmp being *very* strict | 12:17 | |
masak can say "holdover" without implying that 6 > 5 :) | |||
moritz | masak: you can also say "legacy" without implying that 6 > 5 :-) | ||
[Tux] blames you guys for www.perlmonks.org/?node_id=1117735 | |||
masak | I shudder to think how fundamentally roast would break if we made &is stricter now. | ||
timotimo | jnthn: made (only) the first spesh alloc block 1/4th of the size of the others | ||
i'm doing some more precise measurements now; the previous measurements only included the alloc behavior of spesh graphs we'd destroy before the program ends | 12:18 | ||
nwc10 | masak: is there an automated way to measure the breakage? | 12:21 | |
moritz | nwc10: sure; do the changes, run a spectest :-) | ||
nwc10 | oh oops, I misread "roast" as "panda" and thought "all the ecosystem" | 12:22 | |
moritz | oh well, the ecosystem would have fallout too | 12:23 | |
I forgot that :-) | |||
sergot | tadzik: nope, it's not related to openssl :( | ||
12:24
virtualsue left
12:25
virtualsue joined
|
|||
[Tux] imagines «!$expected.defined && !$got.defined && $got.^name eq $expected.^name and return True;» before the strinigication would not break a single test | 12:25 | ||
lizmat is spectesting a fix to Test::is | 12:28 | ||
timotimo | m: say "with not buggy allocator: {83780/1024} MB" | ||
camelia | rakudo-moar aff3d1: OUTPUT«with not buggy allocator: 81.816406 MB» | ||
timotimo | more savings! | ||
all i needed to do was not mess up the code! :) | |||
12:28
virtualsue_ joined
|
|||
masak | should've thought about that ages ago! :D | 12:28 | |
timotimo | agreed! | ||
12:29
virtualsue left,
virtualsue_ is now known as virtualsue
|
|||
lizmat | timotimo++ | 12:29 | |
FROGGS | tadzik / sergot: are you talking about the opened openssl issue? | ||
masak | maybe we need a listop version of prefix:<^>: www.perlmonks.org/?node_id=1117750 | ||
masak is sorely tempted to suggest 'upto' | 12:30 | ||
timotimo | that's for a "say 1", fwiw | ||
tadzik | FROGGS: apparently not :P | ||
timotimo | spesh already does a lot of work for just an "empty" program | ||
masak | also, if prefix:<^> is short for 0..^$N, then the strangely consistent prefix standing for 0..$N must be prefix:<> :P | 12:31 | |
FROGGS | tadzik: what is the issue ooc? | ||
masak .oO( INVISIBUL PREFIX ) | 12:32 | ||
lizmat | [Tux]: hmm... quite some spectest breakage with new improved is() | ||
[Tux] | sorry for asking | ||
tadzik | FROGGS: 1.0.1f fails tests | ||
lizmat | [Tux]: no pb, the tests seem to be faulty :-) | 12:33 | |
[Tux] | OUCH! | ||
moritz | lizmat: how did you improve &is? | ||
timotimo | www.perlmonks.org/?displaytype=disp...id=1117790 - i like this approach | 12:34 | |
lizmat | moritz [Tux] : gist.github.com/lizmat/4088f2f7988252a35332 | ||
basically, create a candidate for defined $expected and undefined $expected | 12:35 | ||
FROGGS | tadzik: I have that version and it fails a test in t/02-socket.t | ||
tadzik | FROGGS: yeah, exactly :) | ||
lizmat | if $expected is undefined, then we expect $got to also be undefined for a match | ||
sergot | FROGGS: we are not sure it's 1.0.1f, it's just my guess | ||
lizmat | and vice-versa: if $expected is defined, we expect $got to also be defined for a pass | 12:36 | |
sergot | FROGGS: that's the problem, t/02-socket.t, retupmoca has 1.0.1k and it works there | ||
lizmat | mix of defined/undefined is per definition a failure | ||
I thought that would make the most sense | |||
sergot | FROGGS: I started upgrading my openssl but I stopped at some point, dont know why, will try again right now | 12:37 | |
[Tux] | no: if stringification of a defined objects reurns something undefined, one goes wrong | ||
lizmat | let me rephrase: if there is a mismatch between defined/undefined, it is a Fail | 12:38 | |
FROGGS | sergot: the BIO CStruct has `int` attributes, which is definitely wrong | ||
[Tux] | class C { int $i = 0; Str { return ?$i ?? $i !! Str; }} | ||
lizmat | if there is a match, then if undefined use === as comparator, if defined, use eq as comparator | ||
FROGGS | sergot: the subs take int also | ||
jnthn | timotimo: (empty program) yes, it may be worth tuning the thresholds, but if doing so please also compare perl6-bench runs before/after too | 12:40 | |
timotimo | will do, as soon as i've built the analysis tool to see what's really going on | 12:41 | |
sergot | FROGGS: should it be int32? | ||
FROGGS | sergot: no, long | 12:42 | |
sergot: gimme a minute or two | |||
12:42
kjs_ left
|
|||
sergot | FROGGS: ok | 12:42 | |
dalek | c: 45ae7be | paultcochrane++ | lib/Language/traps.pod: Add note about assigning the empty array to an array After noting some confusion in perl6-examples/games/yahtzee.p6 about an returned array, the issue was reduced to that discussed here. Thanks to jnthn++ for explaining why this is. |
12:43 | |
c: aa52704 | paultcochrane++ | lib/Language/ (2 files): Merge branch 'master' of github.com:perl6/doc |
|||
lizmat | m: use Test; my @al is (@a = Nil), Nil, "Setting to Nil returns Nil" # this test feels faulty to me | 12:45 | |
camelia | rakudo-moar 6662cd: OUTPUT«5===SORRY!5=== Error while compiling /tmp/HcKXtjkw7WInvalid nameat /tmp/HcKXtjkw7W:1------> 3use Test; my @al is 7⏏5(@a = Nil), Nil, "Setting to Nil returns» | ||
timotimo | m: say 32768 / 4 | ||
camelia | rakudo-moar 6662cd: OUTPUT«8192» | ||
lizmat | m: use Test; my @a; is (@a = Nil), Nil, "Setting to Nil returns Nil" # this test feels faulty to me | ||
camelia | rakudo-moar 6662cd: OUTPUT«ok 1 - Setting to Nil returns Nil» | ||
lizmat | it depends on Nil stringifying to '' | 12:46 | |
but it does not actually test what it is supposed to, as @a = Nil is Array | |||
12:47
virtualsue_ joined
|
|||
lizmat | does anybody have comments about changes to Test.pm as shown in gist.github.com/lizmat/4088f2f7988252a35332? | 12:48 | |
12:48
virtualsue left,
virtualsue_ is now known as virtualsue
|
|||
hoelzro | o/ #perl6 | 12:48 | |
yoleaux | 09:39Z <jnthn> hoelzro: Yay, spectest in native-ref now looks sehr gut. Thanks! | ||
lizmat | basically: if got/expected mismatch in definedness, it's a fail | ||
timotimo | .o( nobody has thought of optimizing Test.pm subs yet, right? ) | 12:49 | |
lizmat | if both defined, then use eq, if both undefined, use === | ||
timotimo: I've looked at it in the past, yes... | |||
hoelzro | lizmat: looks good to me! | ||
lizmat | timotimo: any suggestions ?? | ||
timotimo | no, just a random thought that has popped into my head | ||
FROGGS | tadzik / sergot: the openssl bug is not quite a bug... | 12:50 | |
tadzik / sergot: you are checking for a 200 OK but you receive a 302 Found | 12:51 | ||
lizmat | looking at it now, I *do* wonder why we always box $time_before/$time_after | ||
timotimo | lizmat: we could make a stupid measurement that simply replaces the body of "is" with "output some valid TAP" and see how much faster that is | 12:52 | |
lizmat tries some nativity there | |||
sergot | FROGGS: well, rly? :) | ||
FROGGS | yeah... I'll commit/PR something in a bit | 12:53 | |
sergot | huh, that's funny :)) thanks FROGGS++ | ||
timotimo | damn you, http! | 12:54 | |
12:55
Possum left
|
|||
tadzik | hot potato | 12:55 | |
timotimo | hippity-hop | 12:56 | |
12:58
bjz left
13:05
anaeem1__ left
|
|||
timotimo | m: say "{4262064 / (1024 * 1024)} megabytes wasted at the very end of allocation blocks" | 13:06 | |
camelia | rakudo-moar 6662cd: OUTPUT«4.064621 megabytes wasted at the very end of allocation blocks» | ||
dalek | pan style="color: #395be5">perl6-examples: 8fb82a3 | paultcochrane++ | games/connect4.p6: Remove unnecessary method declarations in connect4.p6 |
13:07 | |
pan style="color: #395be5">perl6-examples: 35ebab6 | paultcochrane++ | games/yahtzee.p6: Replace print/$*IN with prompt in yahtzee.p6 Now this example works again with current Rakudo |
|||
pan style="color: #395be5">perl6-examples: 80fde24 | paultcochrane++ | bin/run-examples.pl: Stop run-examples.pl from running vim backup files |
|||
pan style="color: #395be5">perl6-examples: c343aa5 | paultcochrane++ | cookbook/01strings/01-01substrings.pl: Restore functionality in cookbook/01strings/01-01substrings.pl |
|||
13:07
laouji joined
13:08
xinming joined
|
|||
timotimo | m: say "used to be: { 15207182 / (1024 * 1024)} megabytes wasted at the very end of allocation blocks" | 13:11 | |
camelia | rakudo-moar 6662cd: OUTPUT«used to be: 14.5026989 megabytes wasted at the very end of allocation blocks» | ||
timotimo | (part of this waste doesn't show up in the maxrss because spesh graphs sometimes do get destroyed during the lifetime of a program) | ||
13:11
laouji left
|
|||
jnthn | timotimo: The majority really should. | 13:12 | |
timotimo | in the empty program it's about half | ||
13:12
bjz joined
|
|||
timotimo | a bit more than half | 13:13 | |
jnthn | Hm, that suggests a lot of things reach the logging phase, but then get no further than that. | ||
timotimo | do we dispose of the spesh graph when we jit? | 13:15 | |
i was once tasked to investigate something like that, but couldn't make it not explode | 13:16 | ||
FROGGS | tadzik / sergot: I pushed my changed | ||
changes* | |||
timotimo | AFK for a bit | ||
dalek | pan style="color: #395be5">perl6-examples: 8a5aa4e | paultcochrane++ | cookbook/10subroutines/10-01arguments.pl: Handle positional and named parameters to sub |
||
pan style="color: #395be5">perl6-examples: 1eee4b0 | paultcochrane++ | cookbook/10subroutines/10-01arguments.pl: Add required space before opening curly brace |
|||
pan style="color: #395be5">perl6-examples: 8271fe9 | paultcochrane++ | cookbook/10subroutines/10-01arguments.pl: No longer require parens around hash in for loop |
|||
pan style="color: #395be5">perl6-examples: c0f760b | paultcochrane++ | cookbook/10subroutines/10-01arguments.pl: Remove leading comma in whole() sub This allows the sub to compile and be called. |
|||
pan style="color: #395be5">perl6-examples: a50caeb | paultcochrane++ | cookbook/10subroutines/10-01arguments.pl: Add extra named_params() example |
|||
pan style="color: #395be5">perl6-examples: 350297f | paultcochrane++ | cookbook/10subroutines/10-01arguments.pl: Show which integer was passed to typed() Now 10-01arguments.pl works again. |
|||
13:17
_mg_ joined
|
|||
jnthn | timotimo: I think we get rid of the spesh *graph*, it's just that we also produce bytecode | 13:17 | |
13:20
Ven joined
13:25
kjs_ joined
|
|||
dalek | pan style="color: #395be5">perl6-examples: 431867d | paultcochrane++ | games/flashcard.p6: Assign %table elements to the empty array This gets the (half-implemented) games/flashcard.p6 example working again. |
13:28 | |
13:28
dalek left,
dalek joined,
ChanServ sets mode: +v dalek
13:33
sqirrel_ left
13:36
Ven left
|
|||
lizmat | timotimo: alas, complete nativication of Test.pm doesn't result in real measurable improvement | 13:37 | |
I guess it all drowns out by the overhead on .print / .say | |||
lizmat shelves that idea for a later time | |||
13:45
Possum joined
13:53
raiph joined
13:56
raiph left
|
|||
timotimo | lizmat: understood. thank you for trying! | 13:58 | |
masak | quick #perl6 quiz: when you write a sub or method declaration with no parameters, do you put in the '()' -- i.e. do you do "sub foo {" or "sub foo() {" ? | ||
timotimo | i often do it without | 13:59 | |
moritz | masak: I tend to leave them out, and that bites me when I write NQP code :-) | ||
jnthn | I tend to put them in. | 14:00 | |
[Tux] | does "use Test;" offer something like (If *any* of the tests run up to this point FAILed, exit now) | 14:01 | |
psch | i'm apparently inconsistent, although no parens seems to occur more often | ||
[Tux] | doc.perl6.org/language/testing doesn't show me introspection of state so far | ||
masak | I'm definitely inconsistent, too. I just caught myself at it, which was why I asked. | 14:02 | |
sergot | FROGGS++ thanks! | ||
masak | but it seems that the Perl 6 community as a whole is inconsistent ;) | ||
leont | [Tux]: I don't think it does, I'll keep it in mind for my Test::More | ||
[Tux] | leont++ | ||
masak just sped up a script from 49 s to 9 s | 14:03 | ||
timotimo | masak: cool :) | ||
FROGGS | masak: I put a () there, yes | ||
timotimo | was it an algorithmic improvement or just moving from a less well-optimized construct to a better-optimized construct? | ||
masak | timotimo: I realized that instead of computing the same thing 55 times, I could compute it once and then re-use it. | 14:04 | |
timotimo | ah | ||
one of the simplest ways to optimize | |||
masak | caching ftw | ||
FROGGS | masak: and I do that to state that I really dont want any args... and to prevent adding signature generating things easily | ||
timotimo | also one of the harder problems of CS lie in that area :P | ||
sergot | FROGGS: looks like we need the same in io-socket-ssl/t/01... | ||
masak | since I'm planning to re-run this script many many times, it's well worth it, too. | ||
FROGGS | sergot: feel free :o) | ||
sergot | FROGGS: yep :) | 14:05 | |
psch | i'm struggling to understand how the invokestatic bytecode differs from MethodHandle.invoke in casting of the passed arguments | ||
i'm calling the same method of a java class 1) through RakudoJavaInterop MMD and 2) through BootJavaInterop bytecode | |||
with the same arguments | 14:06 | ||
and they get parsed by the same methods | |||
masak | sorry, the speedup was down to 2.3 seconds. the 9 seconds were when I printed it, too. | ||
14:06
raiph joined
|
|||
psch | and arrive at the callsite as [java/lang/Object (while they are Long[][]) | 14:06 | |
masak | man, printing is still slow, isn't it? | ||
tadzik | yes | ||
psch | and the direct invoke through invokestatic works, but MethodHandle.invoke doesn't | ||
nwc10 | if so, that's very important to fix. It was one of the two big reasons that Python 3.1 followed rather rapidly after Python 3.0 | 14:07 | |
psch | and complains about not being able to cast [java/lang/Object to [[java/lang/Long | ||
masak | wow, it really takes 7.3 seconds just to print the output from that script. | ||
wow. | |||
timotimo | nwc10: what are you refering to? | ||
nwc10 | slow IO\ | ||
timotimo | ah yes | ||
tadzik | masak: how much faster would it be if you concat it into a single string and then prant it? | ||
timotimo | we keep looking up $*OUT over and over and over again | ||
tadzik | improvising past tense is so fun | 14:08 | |
masak | ok, it takes 6.4 seconds with `perl`. so we're not doing that badly. | ||
why the heck does it take that long!? | |||
timotimo | because terminals | ||
tadzik | to the profilers! | ||
masak | timotimo: ah, possibly. | ||
moritz | Alle Mann an Deck! | ||
tadzik | well, it should be okay if you print to file then | ||
timotimo | No manual entry for über | ||
No manual entry for bord | 14:09 | ||
masak | the file is 44428 lines big. so that's 6k lines per second. that sounds low, but I'm not sure. | ||
surely if we could parse at that speed, it'd be impressive ;) | |||
14:10
raiph left
|
|||
moritz | how big is the file in kb/Mb? | 14:10 | |
timotimo | usually it's 1024 kb/Mb | ||
but not if you ask hard drive producers | 14:11 | ||
14:11
raiph joined
|
|||
lizmat | .oO( or fruit producers ) |
14:11 | |
masak | moritz: 3_070_814 bytes. | ||
so on average 69 bytes per line. | 14:12 | ||
sergot | FROGGS: actually I think we don't want to test if there is a status of 200, it's just okay to have 302 in it because io-socket-ssl and openssl have nothing to do with redirections | 14:13 | |
FROGGS | sergot: true | ||
14:14
raiph left
14:15
raiph joined
14:16
spider-mario joined
14:18
raiph left,
raiph joined
|
|||
lizmat | m: class{}.new.*bar.perl.say # I guess the empty Parcel is the correct value, right? and not Nil ?? | 14:20 | |
camelia | rakudo-moar 6662cd: OUTPUT«()» | ||
jnthn | Think so | ||
lizmat | m: class{}.new.?bar.perl.say # as opposed to ?, which can only return 1 value, so Nil | ||
camelia | rakudo-moar 6662cd: OUTPUT«Nil» | ||
jnthn | Makes sense to me | ||
14:21
dwarring left
|
|||
lizmat | ok, then the fix to is() is showing quite some faulty tests in the woodwork | 14:21 | |
timotimo | m: my @foobar; @foobar[5][*] = 10; say @foobar; @foobar[5][*] = 20; say @foobar | ||
camelia | rakudo-moar 6662cd: OUTPUT«» | ||
lizmat | m: use Test; is $c.*bar(), Nil, '.* on undefined method gives Nil'; # ergo, this test is wrong | ||
camelia | rakudo-moar 6662cd: OUTPUT«5===SORRY!5=== Error while compiling /tmp/ZSjf1B6e5dVariable '$c' is not declaredat /tmp/ZSjf1B6e5d:1------> 3use Test; is $c.*bar()7⏏5, Nil, '.* on undefined method gives Nil expecting any of: argument list pos…» | ||
timotimo | m: my @foobar; @foobar[5][*+0] = 10; say @foobar; @foobar[5][*+0] = 20; say @foobar | ||
camelia | rakudo-moar 6662cd: OUTPUT«(Any) (Any) (Any) (Any) (Any) 10(Any) (Any) (Any) (Any) (Any) 10 20» | ||
14:21
skids joined
|
|||
timotimo | neat. | 14:21 | |
lizmat | m: use Test; my $c=class().new; is $c.*bar(), Nil, '.* on undefined method gives Nil'; # ergo, this test is wrong | ||
camelia | rakudo-moar 6662cd: OUTPUT«5===SORRY!5=== Error while compiling /tmp/8AvpNVoMyeUndeclared routine: class used at line 1. Did you mean 'last', 'chars', 'close', 'pass'?» | ||
lizmat | m: use Test; my $c=class{}.new; is $c.*bar(), Nil, '.* on undefined method gives Nil'; # ergo, this test is wrong | 14:22 | |
camelia | rakudo-moar 6662cd: OUTPUT«ok 1 - .* on undefined method gives Nil» | ||
timotimo | m: my @foobar; push @foobar[2], "hi"; say @foobar | ||
camelia | rakudo-moar 6662cd: OUTPUT«(Any) (Any) hi» | ||
lizmat | even though it says it's correct :-) | ||
timotimo | somehow that last one doesn't seem to work on my end :( | ||
14:23
anaeem1_ joined
|
|||
[Tux] feels somewhat useful again :) | 14:23 | ||
14:25
raiph left,
raiph joined,
sven_123 left
|
|||
timotimo | oh, i know what i've done wrong | 14:26 | |
14:28
raiph left
|
|||
timotimo | (i had an expression like [@(.value)] and really meant [+@(.value)] | 14:28 | |
moritz wishes for an SQL column type that allows old values to be NULL, but new inserts must always be NOT NULL | |||
14:28
raiph joined
|
|||
timotimo | oh | 14:28 | |
well, you could have a trigger ... | |||
moritz | timotimo: sounds like you want [.value.elems]? | ||
timotimo | moritz: ah, that's easier indeed :) | ||
masak | oh, by the way: first time I can recall using `state` as a caching mechanism in "production" code. | ||
moritz | timotimo: I guess I could, but we don't triggers here :( | ||
14:29
anaeem1__ joined
|
|||
moritz | (old mysql stuff) | 14:29 | |
timotimo | oh | ||
14:29
Sysaxed joined
|
|||
arnsholt | And triggers are generally a lot more expensive than NOT NULL checks, IIRC | 14:29 | |
timotimo | you can have a constraint that all rows with index above $n has to have a not-null value | ||
14:29
anaeem1_ left
|
|||
moritz | timotimo: except that mysql doesn't do CHECK constraints :( | 14:30 | |
TODO: switch to a saner RDBMS | |||
(read: postgres :-) | |||
timotimo | god damn it, mysql | ||
well, at least it's webscale | |||
and Good Enough™ | |||
14:30
Ven joined
|
|||
timotimo | No Reason To Ever Switch To Anything Less Bad™ | 14:30 | |
masak | with that use, `state` is really "have the cake and eat it". I get both the scoping I want, and the value re-use. | 14:31 | |
moritz | and I fear that if there hadn't bee mysql back then, our in-house developer would have written his own crappy DB engine :-) | ||
lizmat | masak: well stated | ||
timotimo | well, OK, that's fair i guess, moritz | ||
masak | lizmat: I see what you did there. | ||
14:31
raiph left
|
|||
timotimo | i'm not sure if #perl6 trains expert punists or if it just attracts them | 14:31 | |
jnthn | The pun quality is variable... | 14:32 | |
timotimo | punsters? | ||
lizmat | have an appropriate amount of pun :-) | ||
moritz | timotimo: punstates :-) | ||
sjn | \o | ||
masak | well, it wasn't "my" pun! | 14:33 | |
lizmat has the pun. | |||
14:33
sven_123 joined
|
|||
sjn | question; is there some webpage or equivalent that gives an overview of the people involved here? :) | 14:33 | |
14:33
raiph joined
|
|||
masak | sjn: github! :D | 14:34 | |
sjn | masak: url, plz, kthxbye :) | ||
moritz | sjn: also www.openhub.net/ (used to be ohloh.net) | ||
though it seems to be quite out of date for many projects | 14:35 | ||
timotimo | damn you, reify. at the very top of my profile again. not spesh'd or jitted either! | ||
1068296 entries, 12712.67ms exclusive time :( | |||
m: say "that's {12712.67 / 1068296} miliseconds per entry" | 14:36 | ||
camelia | rakudo-moar 6662cd: OUTPUT«that's 0.0118999509 miliseconds per entry» | ||
timotimo | hm | ||
well, i'd still prefer having it thrown out and replaced by a cleverer solution | |||
dalek | kudo/nom: 8df9b2d | lizmat++ | lib/Test.pm: Make is/isnt handle expected type objects properly Instigated by [Tux]++, it seemed like a good idea to handle type objects as the "expected" value of an is/isnt differently from defined values. So, now the logic is: - if got/expected have a defined/undefined mismatch, it is a Fail - if got/expected are both type objects (undefined), use === for comparison - if got/expected are both defined, use eq for comparison (as before) This change brings out quite some faulty tests out of the woodwork. |
||
nwc10 | lizmat: you didn't flood dalek off. Try harder next time! :-) | 14:37 | |
lizmat | nwc10: will do a merge soon :-) | ||
moritz | lizmat: please update the design docs and doc.perl6.org too; it's quite a change from the current behavior | ||
lizmat | will be fixing those test failures now | ||
14:37
xinming left
|
|||
lizmat | moritz: will do, after I fixed the faulty tests | 14:37 | |
moritz | ++lizmat | 14:38 | |
my $test = $got === $expected; | |||
not sure if that should be === or ~~ | |||
generally returning a subtype of something expected is fine, as long as you stick with Liskov | 14:39 | ||
and since we're special-casing types anyway... | |||
moritz just throws ideas around | |||
masak | does anyone else feel like they know a great precious secret just by being proficient at `next if` and `next unless` in their loops, avoiding oodles and oodles of indentation from conditionals? | 14:40 | |
I don't really see this kind of code in other languages. | |||
timotimo | my script still does about 1k lines per second | ||
14:41
wicope joined
|
|||
colomon | masak: hmm? I’ve been using “if … continue” in C++ loops for decades to avoid all that indentation | 14:41 | |
yoleaux | 07:57Z <FROGGS> colomon: I don't understand how Compress::Zlib::Raw can fail for the smoker... see gist.github.com/FROGGS/229dffa2ef287aa08f83 | ||
masak | colomon: was that before or after you learned Perl? do your colleagues do the same in C++? | 14:42 | |
lizmat | moritz: ~~ seems more of the "like/unlike" domain | ||
colomon | It’s hard to remember, I learned Perl 21 years ago. :) | ||
masak | :) | ||
14:43
xfix joined
|
|||
colomon | … and C++ 26 years ago. | 14:43 | |
masak | wow. | 14:44 | |
colomon | Unfortunately I don’t have a lot of old source code I can go back and check. | ||
moritz | wow. I couldn't even write 26 years ago | ||
masak | colomon: one day I hope to have learned Perl as long ago as you. | ||
moritz | or read, for that matter | ||
14:44
kaare_ left
|
|||
colomon | masak++ | 14:44 | |
colomon did his first programming on a PET in 1982 or so. | 14:45 | ||
14:45
test_ joined
|
|||
geekosaur | masak, there's a cultural component to that | 14:46 | |
14:46
test_ left
|
|||
masak | geekosaur: yes, that's what I was after. | 14:46 | |
geekosaur | some developers consider that to be "goto considered harmful" | ||
colomon | masak: I have heard B&D types rail against it as “goto considered harmful” (as geekosaur said while I was typing this) | ||
masak | wow. I can "understand" that point of view. but boy are they missing out. | 14:47 | |
colomon | as a person who spent years programming in a world where goto was the only option, I think considering “next” to be a “bad” goto is completely insane. | ||
moritz | well, deep nesting can also harm | ||
masak | my brain has it as "make the list simple in the for loop head, then refine with `next` and `last` conditions". | 14:48 | |
geekosaur | I am also thinking of a Linus rant about developers writing convoluted stuff like that which could be simplified massively by a `goto error`. (of course, the other side can point to Apple's `goto fail`...) | ||
rjbs | but of course their goto wasn't the problem | 14:49 | |
moritz | it was more an 'if fail' instead | 14:51 | |
rjbs | yeah | ||
14:51
rmgk_ joined,
rmgk is now known as Guest84389,
Guest84389 left,
rmgk_ is now known as rmgk
|
|||
geekosaur | sadly, it's the age of soundbites, not the age of understanding. I have already heard that reference used that way a number of times :( | 14:51 | |
rjbs | don't worry, there has never been an age of understanding | ||
geekosaur | (that is something to not worry about?) | 14:52 | |
dalek | kudo/nom: 404d228 | lizmat++ | lib/Test.pm: Show error on type objects without warnings |
14:53 | |
lizmat | afk for ~ 2 hours | ||
will continue fixing spectest after that | |||
masak | another pattern: want to give your enum values awesome derived properties? define multis on them! | ||
or a hash, I guess. | 14:54 | ||
dalek | ast: 81a54c8 | lizmat++ | S02-types/undefined-types.t: Fix faulty tests |
||
lizmat | & | ||
Ven | masak: fwiw: when I have "if (x){return}" or "if (x){continue" or "if(x){break" I look at it like a code smell :) | 14:57 | |
( irclog.perlgeek.de/perl6/2015-02-25#i_10177596 <- I was a whole 6 years away from even existing back then. Good times! *g* ) | 14:58 | ||
geekosaur | I don't; short-circuiting can make the following code a lot clearer | ||
15:00
skids left
|
|||
masak | of course it can. nothing code-smelly about it. | 15:01 | |
at least not per se. | |||
sorry, Ven. "at least not in and of itself" | |||
Ven | ymmw. I consider an explicit return a codeself as well, usuaily :) | 15:02 | |
very "pure" school | |||
masak .oO( Your Mileage May... Wary? ) :P | |||
psch | your mentor might worry? | ||
masak | Ven: it's all tradeoffs and waterbeds. | 15:03 | |
Ven | may be wary :P | ||
masak .oO( There's Something About Wary ) | |||
timotimo | there's something about worry? | 15:05 | |
colomon | testers.perl6.org/ — “This webpage is not available” | ||
timotimo | um | ||
FROGGS | :o( | ||
timotimo | i just had that page open on my browser | ||
now it's gone | |||
did i kill it? | |||
there it is | |||
sjn | masak: halp! | 15:06 | |
masak | m: enum E <Foo Bar>; sub x(Floo) {} | ||
camelia | rakudo-moar 8df9b2: OUTPUT«5===SORRY!5=== Error while compiling /tmp/lo3W1q5wvZInvalid typename 'Floo' in parameter declaration.at /tmp/lo3W1q5wvZ:1------> 3enum E <Foo Bar>; sub x(Floo7⏏5) {}» | ||
masak was just bitten by this | |||
timotimo | oh, it doesn't suggest? | 15:07 | |
masak | a case for Lichtenstein^WWittgenstaein^WLevenstein? | ||
15:07
_mg_ left
|
|||
moritz | did you mean: lichtkind? | 15:07 | |
masak submits rakuchdoblog | |||
FROGGS | Stolperstein, even | ||
sjn | masak: I'm realizing I actually *need* a single webpage that lists contributors o_O | ||
masak | sjn: well volunteered! | 15:08 | |
tadzik | :) | ||
sjn | but the perl6 stuff on github is too spread out | ||
timotimo | ... "a single webpage" ... | ||
masak | ... to rule them all ... | ||
FROGGS | stalkbook.com | ||
15:08
laouji joined
|
|||
timotimo | how about "codestalk"? | 15:08 | |
FROGGS | (as a name proposal) | ||
masak | sjn: alternatively: build it, and they will come. | 15:09 | |
sjn could run "git shortlog -s" on the different repos, and aggregate the results | 15:10 | ||
timotimo | perl6 will have many more contributors just because people want to become part of the hip cool new website | ||
sjn | but that would require an updated .mailmap file | ||
for each of those | |||
Ven | :o) | ||
sjn | allright, which repos are considered "core"? | ||
let's start there | 15:11 | ||
sjn starts by assuming everything under github.com/perl6 | 15:12 | ||
anything else? | |||
tadzik | /rakudo too, probably | ||
and /MoarVM | |||
depending on what your website actually lists :) | |||
sjn wants to identify core contributors | 15:13 | ||
15:13
laouji left
|
|||
moritz | also tadzik/panda | 15:13 | |
tadzik | if "2nd core" counts :) | 15:14 | |
PerlJam | good morning #perl6 | ||
nwc10 | the future *is* multicore, after all. | ||
tadzik | hehe | ||
nwc10 | well, the present, actually | ||
PerlJam | the future too :) | ||
(unless there's a nuclear apocalypse that knocks us back to the stone age or something) | 15:15 | ||
psch | o/ PerlJam | ||
15:17
Ven left
15:20
telex left
15:22
gfldex joined,
telex joined
15:24
Ovid__ left
|
|||
tadzik | .u 🙋 | 15:27 | |
yoleaux | U+1F64B HAPPY PERSON RAISING ONE HAND [So] (🙋) | ||
15:28
laouji joined
15:33
laouji left
|
|||
masak | if you're happy and you know it, raise your hand. 🙋🙋🙋 | 15:42 | |
moritz | but... which one? | 15:43 | |
tadzik | ONE HAND | 15:45 | |
15:45
Ovid joined
|
|||
tadzik | like the ONE RING | 15:45 | |
15:45
Ovid is now known as Guest33365
|
|||
masak .oO( what is the sound of one hand ringing? ) | 15:45 | ||
15:50
Rounin left
|
|||
PerlJam | masak: one hand ringing is what it's like when you're married and your spouse isn't around. And when the two come together, the two ringing hands reinforce each other to form a perfect tone. :) | 15:58 | |
MadcapJake | are there any resources out there explaining modularizing your own code? Like what is the diff btwn a .p6/.pl and a .pm/pm6 file? or how do you structure a modularized project folder? | 15:59 | |
tadzik | .pm is what another program might use for something | 16:00 | |
.pl is my own program, not reusable | |||
MadcapJake | so the only difference is the extension? | ||
tadzik | generally | ||
no, it's a conceptual difference | |||
you put different things in these files | |||
MadcapJake | so inside the file, no difference in how you write anything? | ||
psch | by convention, though. nothing prevents you from having a .pl that contains a module | ||
tadzik | oh, it's the same Perl alright :) | ||
psch | it's a useful convention nontheless | 16:01 | |
PerlJam | MadcapJake: right. | ||
MadcapJake | ok, and where do you put a module in your project folder so that you can access it in a main/app.pl file? | ||
PerlJam | MadcapJake: the only place the suffix actually matters I think is when Perl is looking for modules. It'll look for .pm or .pm6 files. otherwise, the suffix doesn't much matter (to Perl) | ||
MadcapJake: the convention is to provide a lib directory, but you can put it where ever you lik | 16:02 | ||
er, like | |||
tadzik | what happened to wiki.perl6.org :( | 16:03 | |
it had a nice article ont hat | |||
timotimo | we had a wiki? | ||
tadzik | yes | ||
PerlJam | maybe still on feather? | ||
psch | PerlJam++ # right about ModuleLoader explicitly checking for the extension | ||
timotimo | was it this? www.perlfoundation.org/perl6/index.cgi | 16:04 | |
MadcapJake | PerlJam: how do i then reference it? because I tried putting it in a lib folder and then used 'use ModuleName;' and it didn't work | ||
tadzik | timotimo: nah, that one was p6 specific | ||
psch | MadcapJake: you need to either «use lib "$path";» or run with -Ilib | ||
i think the former is prefered, although i don't recall the difference | |||
timotimo | MadcapJake: perl6 won' tlook in ./lib or ./blib/lib by default | ||
tadzik | oh, here it is! doc.perl6.org/language/modules | ||
MadcapJake | so `use lib 'lb';` sets the lib path for that file? | 16:05 | |
PerlJam | MadcapJake: read that link tadzik just mentioned | ||
tadzik | well, it doesn't say exactly that | ||
MadcapJake | tadzik: that link isn't what im talking about, i've looked at that | ||
tadzik: that link talks only about modularizing your code for others to use | |||
tadzik | but generally you put scripts in bin/, modules in lib/, and if you want to run them w/o installing you go perl6 -Ilib bin/foo | ||
MadcapJake | not about how to organize a project to reference internally modularized code | ||
tadzik | yeah, you're right, I misremembered | 16:06 | |
PerlJam | MadcapJake: the "organization" is up to you. Mostly there's just conventions that require you know to put stuff in certain locations and to tell Perl that you've done so. | ||
tadzik | now, if you write a distributable module, then the stuff from lib gets installed where perl6 will look for it anyway | ||
so at that point you don't need 'use lib' anymore | |||
MadcapJake | ok cool | ||
PerlJam | MadcapJake: are you familiar with panda? | 16:07 | |
16:07
mr-foobar joined
|
|||
MadcapJake | yeah a bit, i've installed a few modules :) | 16:07 | |
tadzik | :) | ||
PerlJam | MadcapJake: did you know that you can install your own, local modules? | ||
colomon | cpandatesters running *incredibly* slowly at the moment. | ||
nine_ | What madman invented this language?? This unbelievable awesomeness boggles my mind. | 16:08 | |
timotimo | colomon: doesn't it always? | ||
and i'm also not sure if it's multithreaded... | |||
MadcapJake | PerlJam: does it move them out of my project directory though? | ||
PerlJam | "move"? no. But it will copy things to where Rakudo can find them. | ||
timotimo | not move | ||
dalek | rl6-roast-data: f7fc4d6 | coke++ | / (9 files): today (automated commit) |
||
FROGGS | colomon: aye, I need to put some more effort in moving to p5c.org | ||
16:08
Ven joined
|
|||
FROGGS | p6c.org* | 16:08 | |
nine_ | moritz: Apache to Nginx config converter coming along quite nicely: github.com/niner/Apache-To-Nginx/b...r/Nginx.pm | 16:09 | |
timotimo | MadcapJake: and also you'll have compiled versions of the modules available after installation - these will automatically be used | ||
MadcapJake | PerlJam: cus I just like to have separate files inside my project and this is also an idiomatic use of modules right? | ||
PerlJam | MadcapJake: mostly | 16:10 | |
MadcapJake | oh? | ||
gfldex | m: say @*INC; | ||
camelia | rakudo-moar 404d22: OUTPUT«file:/home/camelia/rakudo-inst-2/languages/perl6/lib inst:/home/camelia/rakudo-inst-2/languages/perl6» | ||
colomon | FROGGS: for what it’s worth, I’m running a smoke test with PANDA_SUBMIT_TESTREPORTS=1 set to see if that gives useful information. But I can’t check because testers.perl6.org doesn’t exactly work. | ||
FROGGS | :/ | 16:11 | |
the box it is running on is just crap | |||
timotimo | oh | ||
if that's the case, that's not as terrible :) | |||
MadcapJake | like let's say you're working on a large web app and you want to have your code separated out, what's the more appropriate way of organizing this? | ||
FROGGS | MadcapJake: that is what you use modules for, aye | 16:12 | |
colomon: I'll prioritize moving to p6c then | |||
colomon | FROGGS: yay! | ||
16:13
sqirrel_ joined
|
|||
MadcapJake | ok cool, just trying to make sure im on the right track (no experience with perl 5 so i'm sometimes hitting walls where the docs expect some previous p5 knowledge) | 16:13 | |
FROGGS | bbiab | 16:14 | |
16:14
FROGGS left
16:16
larion left
|
|||
timotimo | pff. someone reported all fosdem videos to be uploaded. nope. just a few of them. | 16:22 | |
PerlJam | timotimo: all of the ones they've processed so far have been uploaded ;) | 16:23 | |
16:23
perl6_newbee joined
|
|||
Ven | m: sub map(@list, &fn) { given @list { when :([$a, *@b]) { say fn($a) } } }; map(^10, *+2); | 16:27 | |
camelia | rakudo-moar 404d22: OUTPUT«5===SORRY!5=== Error while compiling /tmp/q03LB5wah6Variable '$a' is not declaredat /tmp/q03LB5wah6:1------> 3en @list { when :([$a, *@b]) { say fn($a7⏏5) } } }; map(^10, *+2); expecting any of: postfix» | ||
16:27
muraiki left
|
|||
timotimo | wow, what progress. | 16:28 | |
[Coke] | m: say „old/sold/liquidated module“; | 16:29 | |
camelia | rakudo-moar 404d22: OUTPUT«5===SORRY!5===No valid term seen where one is requiredat /tmp/TcnQJOLjtv:1------> 3say 7⏏5„old/sold/liquidated module“;Bogus termat /tmp/TcnQJOLjtv:1------> 3say 7⏏5„old/sold/liquidated module“; expecting any…» | ||
16:32
_mg_ joined
16:33
muraiki joined,
laouji joined
|
|||
timotimo | i wonder what the proper fix for say's performance will be | 16:33 | |
16:38
bayprogrammer joined,
laouji left,
nebuchadnezzar left
16:40
rindolf left,
[particle] joined,
FROGGS joined
|
|||
[Tux] | lizmat++; # new Test shows two missed errors! | 16:40 | |
16:41
[particle]1 left
|
|||
dalek | ast: c55aee4 | lizmat++ | S05-modifier/perl5_ (3 files): Check for Nil if we want to test for Nil |
16:41 | |
16:41
Ven left
|
|||
[Coke] | ^^ TimToady ... just saw that quote style in a work email. | 16:42 | |
16:42
diana_olhovik_ left
|
|||
dalek | ast: 0e7a451 | lizmat++ | S32-array/delete-adverb (2 files): Fix type to check for Was invisible before, because Any and Int both stringify to '' |
16:43 | |
[Coke] | regarding old coders, I had an atari 400 in the late 70s at home I programmed in basic on, and I'm pretty sure I had access to a TRS-80 at school at the same time (or slightly earlier) | ||
lizmat | the rest of the test failures are really about checking against junctions of strings | 16:44 | |
not sure whether this is a problem of Test.pm, rakudo, Moar or something else | |||
investigating now | 16:45 | ||
geekosaur | Ohio Scientific SuperBoard II. the TRS-80 came later, first at school and then at home, then a big jump up to an XT clone in the mid-80s | ||
lizmat | m: use Test; my $a = "foo"; is $a, "foo"|"bar" | 16:46 | |
camelia | rakudo-moar 404d22: OUTPUT«ok 1 - not ok 2 - # Failed test at src/gen/m-CORE.setting line 9356» | ||
lizmat | before my fix to Test.pm it would say: | 16:47 | |
$ 6 'use Test; my $a = "foo"; is $a, "foo"|"bar"' | |||
ok 1 - | |||
16:48
echowuhao joined
|
|||
FROGGS | m: say "foo" ~~ "foo"|"bar" | 16:48 | |
camelia | rakudo-moar 404d22: OUTPUT«True» | ||
FROGGS | why do we get a ok and a nok now? | 16:49 | |
I would not expect that is $a, "foo"|"bar" is worth two tests | 16:50 | ||
lizmat | FROGGS: that's exactly the bug | 16:52 | |
I'm not sure how that happens either | |||
doesn't feel to me I've done something magical | |||
FROGGS | ahh | 16:53 | |
16:53
sqirrel_ left
|
|||
FROGGS | m: say "foo" === "foo"|"bar" | 16:53 | |
camelia | rakudo-moar 404d22: OUTPUT«any(True, False)» | ||
FROGGS | m: say "foo" eq "foo"|"bar" | 16:54 | |
camelia | rakudo-moar 404d22: OUTPUT«any(True, False)» | ||
FROGGS | m: sub foo(Str) { say 42 }; foo("foo"|"bar") | 16:56 | |
camelia | rakudo-moar 404d22: OUTPUT«4242» | ||
16:56
jluis joined
|
|||
FROGGS | lizmat: it autothreads when you pass it a junction | 16:57 | |
lizmat | also on Mu:D or Mu:U ? | ||
that feels to be the difference | |||
FROGGS | - my $test = $got eq $expected; | ||
+ my $test = so $got eq $expected; | |||
that would collapse it | |||
and likely at different places too | 16:58 | ||
lizmat | FROGGS++ | ||
17:00
echowuhao left
17:01
pdcawley left,
pdcawley joined,
andreoss joined
17:05
anaeem1__ left,
jluis left,
rindolf joined
|
|||
dalek | kudo/nom: e7fb7ba | lizmat++ | lib/Test.pm: Fix testing with junctions, FROGGS++ |
17:06 | |
17:06
pdcawley left
|
|||
dalek | ast: d1a6687 | lizmat++ | S12-methods/calling_sets.t: class.*bar returns Parcel, not Nil This test previously passed for the wrong reason |
17:08 | |
17:14
_mg_ left
17:20
diana_olhovik_ joined
|
|||
dalek | c: 2370a3a | moritz++ | util/update-and-sync: update script: delete old .html files |
17:21 | |
c: e15e61f | moritz++ | lib/Type/Cool.pod: Cool.chomp, .ords, .chrs |
|||
c: 8d1d524 | moritz++ | lib/Type/Cool.pod: Document Cool.words |
|||
c: bcb5930 | moritz++ | lib/Type/Cool.pod: Document Cool.split |
|||
17:21
Kristien joined
|
|||
[Coke] | lizmat: how did you fix testing with junctions? | 17:22 | |
did you change the autothreading? | |||
17:22
echowuhao joined,
anaeem1 joined
17:23
xinming joined
|
|||
dalek | kudo/nom: abc54e5 | lizmat++ | lib/Test.pm: Bring junction fixes inline with other code |
17:23 | |
lizmat | [Coke]: I accidentally removed some ? because I thought they weren't necessatu | 17:24 | |
*necessary | |||
afk for a few hours& | |||
moritz | fwiw I've started updating perlgeek.de/en/article/5-to-6 again, this time with links to doc.perl6.org and "last updated" dates | ||
jnthn | moritz++ | ||
17:25
sqirrel_ joined
17:28
virtualsue left
|
|||
flussence just put "use Grammar::Debugger" in a script that I'm piping data into on stdin, and it took a few minutes to figure out why it was spewing errors... | 17:28 | ||
timotimo | hehe | 17:30 | |
17:33
mohij joined
|
|||
timotimo | hm. can nqp benefit from native refs? | 17:33 | |
17:33
anaeem1__ joined
|
|||
timotimo | since we always bind, i guess not? | 17:33 | |
jnthn | Yeah, they're really about l-values and assignment | 17:34 | |
17:35
larion joined
17:36
anaeem1 left
|
|||
moritz | timotimo: and if so, we'd have to drop parrot support from NQP too | 17:36 | |
dalek | ast: 5e15e65 | jnthn++ | S06-traits/native-is-copy.t: Tests for is copy trait on native args. |
17:39 | |
kudo/native-ref: 26714ab | jnthn++ | src/Perl6/World.nqp: Make 'is copy' on natively typed params work. |
|||
kudo/native-ref: e10e20a | jnthn++ | t/spectest.data: Run S06-traits/native-is-copy.t. |
|||
17:40
abraxxa left
|
|||
Kristien | hi | 17:41 | |
yoleaux | 08:42Z <FROGGS> Kristien: do you have something special in mind except for the obvious? - FROGGS: also have fun with union members! | ||
17:43
kjs_ left
|
|||
Kristien | FROGGS: the only guarantee you have is that the size of the union type is equal to the size of its largest member | 17:44 | |
there's no guarantee, for example, that in union { t a; u b; } x;, x.a and x.b have the same address. | 17:45 | ||
and if a union contains a non-static data member with a non-trivial special member function that function is deleted in the union. | 17:46 | ||
though you have to be careful about memcpyability in general | 17:49 | ||
perl6_newbee | moritz: time for a DBIish question? | 17:50 | |
yoleaux | 24 Feb 2015 20:21Z <japhb> perl6_newbee: I implemented (the first version of) the MAIN parser and USAGE generator, as close as I could manage to spec at the time. I am also one of the people that thinks we really should natively support subcommand interfaces, since I think that's actually what people expect now. I was overruled. | ||
perl6_newbee | thx +yoleaux | 17:51 | |
timotimo | perl6_newbee: you can "botsnack" | 17:52 | |
botsnack | |||
actually | |||
.botsnack | |||
yoleaux | :D | ||
perl6_newbee | sorry I am not only a perl6 newbee. ALso irc noob | 17:53 | |
17:53
nebuchadnezzar joined
17:54
Kristien left
|
|||
perl6_newbee | yoleaux is a bot, right? | 17:54 | |
grondilu | it is | ||
perl6_newbee | aahhh | ||
.botsnack | |||
yoleaux | :D | ||
moritz | perl6_newbee: yes | 17:55 | |
perl6_newbee | never too old... | ||
moritz | yes re: time for a DBIish question :-) | ||
grondilu heasitates suggesting adding YOLO to S99 | |||
perl6_newbee | moritz:^^ great. I have following code: $!dbh.do(qq:to/CREATEEND/); | 17:56 | |
> "dms/de77522a520ab2ec481948c35d942497/2569671732b2694006c82723f4e80e41", file_name_hash => "de77522a520ab2ec481948c3│ 3 INSERT INTO CATEGORY(cat_name) VALUES($catlc); | |||
ARGL | |||
sometimes I don't like tmux | |||
$!dbih.do(qq:to/CREATEEND/); INSERT INTO CATEGORY(cat_name) VALUES($category) CREATEEND | 17:57 | ||
$category = 'rechnung' | |||
I always get the error: SQLITE_ERROR no such column: rechnung | 17:58 | ||
if I replace VALUES($category) with VALUES('rechnung') it works | |||
Am I the problem? | |||
timotimo | why are you using string interpolation for this? | 17:59 | |
moritz | perl6_newbee: the problem is that you aren't using placeholders | ||
geekosaur | qq looks wrong there | ||
or, that | 18:00 | ||
perl6_newbee | because of "do". I could use $!dbh.prepare. But that would be more typing | ||
moritz | perl6_newbee: INSERT INTO ... VALUES(?) | ||
dalek | c: 628eb4c | TimToady++ | lib/Language/5to6.pod: s/ing/ed/ |
||
geekosaur | string interpolation for sql is a hack waiting to happen. | ||
18:00
dakkar left
|
|||
geekosaur | (if do is going to encourage that, can we dehuffmanize it?) | 18:00 | |
moritz | perl6_newbee: you can pass bind parameters to .do as well | ||
TimToady | use MONKEY_SEE_MONKEY_DO | 18:01 | |
perl6_newbee | $!dbh.do(q:to/END/, $category) ... ? | ||
geekosaur: I thought perl6 replaces the variables and toss it then to sql | 18:02 | ||
moritz | perl6_newbee: yes | ||
geekosaur | it does | ||
TimToady | use LITTLE_MONKEY_TABLES | ||
geekosaur | literally | ||
it does not quote values, it just substitutes the string | |||
psch | my $category = "; select * from users; --" | ||
geekosaur | which is why you got an error trying to use a value as a column, and why that;s a completely insecure way to write SQL | 18:03 | |
psch | (or somewhat like that) | ||
geekosaur | don;t use variable substitution, use placeholders | ||
perl6_newbee | Hmm. thanks @ all. learned something again | ||
moritz | star: use DBIish; my $dbh = DBIish.connect('SQLite', :database<foo.sqlite3>); $dbh.do('CREATE TABLE foo (c varchar(20))'); $dbh.do('INSERT INTO foo VALUES(?)', 42); say $dbh.fetchall('SELECT * FROM foo#) | ||
camelia | star-{m,p} 2015.01: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfileUnable to parse expression in single quotes; couldn't find final "'" at /tmp/tmpfile:1------> 3; say $dbh.fetchall('SELECT * FROM foo#)7⏏5<EOL> expecting any of: argument l…» | ||
dalek | ast: 40180a9 | jnthn++ | S06-routine-modifiers/native-lvalue-subroutines.t: Add tests for native rw sub semantics. |
||
moritz | star: use DBIish; my $dbh = DBIish.connect('SQLite', :database<foo.sqlite3>); $dbh.do('CREATE TABLE foo (c varchar(20))'); $dbh.do('INSERT INTO foo VALUES(?)', 42); say $dbh.fetchall('SELECT * FROM foo') | 18:04 | |
camelia | star-p 2015.01: OUTPUT«SQLITE_ERROR table foo already exists in method handle-error at /home/camelia/rakudo-star-2015.01/install/lib/parrot/7.0.1/languages/perl6/lib/DBDish/SQLite.pm6:167 in method prepare at /home/camelia/rakudo-star-2015.01/install/lib/parrot/7.0.1/languag…» | ||
..star-m 2015.01: OUTPUT«No such method 'fetchall' for invocant of type 'DBDish::SQLite::Connection' in block <unit> at /tmp/tmpfile:1» | |||
jnthn | Dinner, then I'll make those tests I just added passier :) & | ||
moritz | star: use DBIish; my $dbh = DBIish.connect('SQLite', :database<foo.sqlite3>); $dbh.do('CREATE TABLE foo (c varchar(20))'); $dbh.do('INSERT INTO foo VALUES(?)', 42); say $dbh.fetchrow('SELECT * FROM foo') | ||
camelia | star-p 2015.01: OUTPUT«SQLITE_ERROR table foo already exists in method handle-error at /home/camelia/rakudo-star-2015.01/install/lib/parrot/7.0.1/languages/perl6/lib/DBDish/SQLite.pm6:167 in method prepare at /home/camelia/rakudo-star-2015.01/install/lib/parrot/7.0.1/languag…» | ||
..star-m 2015.01: OUTPUT«SQLITE_ERROR table foo already exists in method handle-error at /home/camelia/rakudo-star-2015.01/install/languages/perl6/lib/DBDish/SQLite.pm6:167 in method prepare at /home/camelia/rakudo-star-2015.01/install/languages/perl6/lib/DBDish/SQLite.pm6:180…» | |||
moritz | star: use DBIish; my $dbh = DBIish.connect('SQLite', :database<foo.sqlite3>); $dbh.do('INSERT INTO foo VALUES(?)', 42); say $dbh.fetchrow('SELECT * FROM foo') | ||
camelia | star-{m,p} 2015.01: OUTPUT«No such method 'fetchrow' for invocant of type 'DBDish::SQLite::Connection' in block <unit> at /tmp/tmpfile:1» | ||
TimToady | or maybe enable do with use FLYING_BUTT_MONKEYES | 18:05 | |
*YS | |||
perl6_newbee | And it works :-) | ||
moritz just too dumb to demonstrate it here | 18:06 | ||
TimToady | or not do, but interpolation into it | 18:07 | |
perl6_newbee | moritz++. hey it works here | ||
TimToady | would be kinda tough to recognize, unless we had some way of requiring single quotes instead of double | ||
geekosaur | yeh, I'm wondering if there's a slang or etc. trick that could detect interpolation there and whack the programmer with a 2x4 | ||
moritz | fwiw there are good use cases for interpolating strings into SQL | 18:08 | |
most notably column and table names | |||
geekosaur | except then I envision the blog posts about how perl6 is impossible to write SQL in, because of course SQL-injection-vulnerable code is the only conceivable way to write it! | ||
moritz | where placeholders simply aren't supported by the RDBMS | ||
TimToady | well, we do allow \qq[] inside double quotes, which is kind of de-huffmanized anyway | ||
*single | |||
18:09
Rounin joined
|
|||
moritz | as disappointing as it is, we can't prevent every possible programming error on the language level :-) | 18:09 | |
TimToady | but really we oughta have a way of doing tainting | ||
we can't pass tainting through natives, of course, but that doesn't mean we can't find a bit somewhere for normal strings | 18:10 | ||
or at least distinguish tainted strings by type | |||
then do can refuse to work with a tainted string | |||
we don't have to make tainting completely orthogonal as it is in P5 | 18:11 | ||
18:11
kjs_ joined
|
|||
TimToady | might be an interesting thing for GSoC, but maybe too easy | 18:12 | |
but a thorough security review for GSoC might be more the right size | |||
kinda hard to judge the results though... | 18:13 | ||
18:13
sqirrel_ left
|
|||
vendethiel | moritz: we can try our best, ofc :) | 18:13 | |
TimToady | and, of course, security should be everyone's concern | ||
18:14
telex left
|
|||
perl6_newbee | so, better I leave befor geekosaur whacks me with a 2x4 ^^ But I have a feeling this was not my last occasion to show my lack of programming skill. cu | 18:15 | |
18:15
Zaydon joined
|
|||
TimToady | we're all in that boat :) | 18:15 | |
geekosaur ex-dba, has a special dislike for sql injection >.> | 18:16 | ||
perl6_newbee | :-) | ||
18:17
perl6_newbee left,
espadrine left
18:19
telex joined
18:20
rindolf left,
pmurias joined
|
|||
pmurias | geekosaur: if we actually had the grammar parse sql instead of using string that would stop the sql injection | 18:21 | |
$dbh.do(sql { INSERT INTO foo values ($this_is_sane_now) }) | 18:22 | ||
geekosaur | that would be nice, yes, except for the person who has to maintain the sql language and all its-per-database-engine polymorphs :) | 18:23 | |
pmurias | somebody has to pay the price of progress | ||
Mouq | .o( sql :$db { … } ) | 18:25 | |
TimToady | oh, more client damage | 18:26 | |
we should handle that one too | |||
18:26
kjs_ left,
anaee____ joined
18:29
anaeem1__ left,
grettir joined
18:33
rindolf joined
|
|||
flussence | m: say 'a'.invert | 18:41 | |
camelia | rakudo-moar abc54e: OUTPUT«Memory allocation failed; could not allocate 58416 bytes» | ||
18:42
ash_gti joined
|
|||
timotimo | yeah, Str.invert does that | 18:43 | |
infiniloops, gobbling up memory | |||
flussence | .oO( correct output is obviously "ɐ" ) |
18:44 | |
18:46
Kristien joined
|
|||
Kristien | good morning | 18:46 | |
TimToady | .oO( is:<===> Str, Str, "Str is Str"; ) |
||
18:46
ash_gti_ joined
18:47
ash_gti left
|
|||
ash_gti_ | hi | 18:47 | |
18:49
pierrot left
18:50
pierrot joined
18:55
pmurias_ joined
|
|||
pmurias | nqp-js: say(('foobar' ~~ /bar/)) | 18:55 | |
camelia | nqp-js: OUTPUT«Trace: NYI: NYI QAST::Regex rxtype = scan at null.<anonymous> (/home/camelia/nqp-js/tmp.js:99:9) at _ [as $call] (/home/camelia/nqp-js/node_modules/nqp-runtime/sixmodel.js:44:33) at null.<anonymous> (/home/camelia/nqp-js/node_modules/QRegex.js:6139:2…» | ||
pmurias | not updated :/ | 18:56 | |
sjn tries to make sense of strip_path_prefix in core/Main.pm (used in gen-usage()) | |||
18:58
ash_gti_ left,
molaf joined
18:59
rindolf left
|
|||
sjn | what's $*SPEC for? | 18:59 | |
timotimo | windows vs linux vs mac line separators and stuff | ||
er | |||
path separators | |||
psch | m: $*SPEC.WHAT.say | ||
camelia | rakudo-moar abc54e: OUTPUT«(IO::Spec::Unix)» | ||
timotimo | i don't think line separators are part of that | ||
18:59
pierrot left
19:00
liztormato joined
|
|||
geekosaur | does anyone care about old mac path separators any more? | 19:00 | |
19:00
sqirrel_ joined,
pierrot joined
|
|||
geekosaur | (or line separators for that matter) | 19:00 | |
timotimo | dunno if they are actually in there a tall | ||
liztormato | Please ignore $*SPEC. It is on the way out | ||
TimToady | oh, we could have "isn't" now :) | 19:01 | |
dalek | c: c4a4516 | (John Gabriele)++ | README.md: Add reference to the Contributing doc. See issue #53. |
||
El_Che | TimToady: your FOSDEM talk may be online soon. | ||
TimToady | oh oh :) | ||
El_Che | oh, do you have plans for Christmas? :) | 19:02 | |
TimToady | I've got a bottle of port I've been saving since Braga :) | ||
probably turned to vinegar by now... | |||
19:02
pierrot left
|
|||
El_Che | talks are slowly being uploaded (it looks quite random). I'll keep the channel posted | 19:03 | |
good for salads! | |||
liztormato | TimToady: any reason for it being a port wine? | ||
TimToady | well, I'll be on the road for much of the next two days, so maybe it'll blow over by then | ||
that's what they make in Braga | |||
and early on I decided to save it for the "real" Christmas | 19:04 | ||
sjn | Ports usually store very well | ||
TimToady | well, I don't exactly have a wine cellar | ||
sjn | (being fortified and all) | ||
19:05
rurban left
|
|||
sjn | TimToady: shouldn't be a problem, unless the bottle cork has been damaged | 19:05 | |
TimToady | maybe I'll also save my bottle of Perl 6 till then too :) | ||
dalek | c: 319d8dc | (Matthias Krull)++ | README.md: Linked documents refered to in the README |
19:06 | |
c: 6598a1c | timo++ | README.md: Merge pull request #54 from mkrull/master Linked documents refered to in the README |
|||
TimToady | in Perl culture we appreciate both the old and the new | ||
19:08
spider-mario left
19:09
ash_gti joined
|
|||
raydiak | postmodernism ftw | 19:09 | |
El_Che | postmodernist would be "the new is the old and we despise them both" :) | 19:11 | |
ash_gti | so, I started working on an update to the perl.tmbundle to have perl6 and nqp syntax based off the vim-perl syntax highlighitng, I should be able to also convert it to an atom package as well, which is what github uses for syntax highlighting | ||
timotimo | oh, way cool! | 19:12 | |
ever since we got perl6 highlighting for a short period of time on github and gist, i'm sorely missing it :( | |||
psch usually turns of highlighting in vim because it's so slow :/ | |||
ash_gti | the vim regular expression syntax is... new to me so its a learning process | 19:13 | |
also, its weird | |||
github.com/ashgti/perl.tmbundle is where its located if anyone wants to comment on it, but again, I am working on building up the syntax from the ground up based off ther vim-perl perl6 syntax so its consistent with that | 19:15 | ||
19:16
pierrot joined,
zakharyas left
|
|||
timotimo | is there some easy place to test your latest code on some perl6 code to see if the coloring is good? | 19:18 | |
ash_gti | um... I have the perl6/roast checked out and just browse that using TextMate | ||
dalek | kudo/nom: 673f50e | TimToady++ | src/Perl6/ (2 files): allow U+02026 HORIZONTAL ELLIPSIS |
19:20 | |
TimToady | it now parses ELLIPSIS but only works as yada, not as sequence | ||
if anyone wants to hunt down why that doesn't work while I'm on the road, feel free | 19:21 | ||
ash_gti | so, atom has a tool for converting TextMate bundles into atom packages | ||
TimToady | gets Cannot find method 'postcircumfix:<( )>' for some reason | ||
ash_gti | and then, I think you can use github/lunguist to check a source file against the grammar | 19:22 | |
FROGGS | Kristien: isnt there a rule that there is no padding before the first member? does that not hold for unions? | ||
raydiak | El_Che: I think you are at least half right, maybe more depending on perspective...and that type of evaluation is (part of) my understanding of postmodernism :) | ||
19:23
laouji joined,
kjs_ joined
|
|||
Kristien | FROGGS: not for unions | 19:27 | |
TimToady | If there are autocorrectors to „old/sold/liquidated module“ then we should probably support that too | ||
Kristien | except (implicitly) for the largest member | ||
TimToady | don't want to be cultural imperialists any more than we have to | ||
19:27
laouji left
19:28
fhelmberger left
19:29
Zaydon left
|
|||
TimToady | well, hitting the road now, so catch y'all on the flip side | 19:30 | |
jnthn | TimToady: Safe travels | ||
jnthn digs back into native-ref hacking | 19:31 | ||
ash_gti | can varaibles contain '<' ? | ||
as part of their name that is | |||
masak | no. | ||
psch shakes his fist at jvm natives | |||
masak | m: my $foo:<+> = 4; say $foo:<+> | ||
camelia | rakudo-moar abc54e: OUTPUT«4» | ||
masak | ash_gti: except like that. | ||
psch | Class.forName("B") NPEs, which makes everything complicated | ||
well, not quite. Type.getElementType() for "[B" NPEs | 19:32 | ||
19:33
espadrine joined
|
|||
jnthn | psch: Ugh... | 19:33 | |
psch | jnthn: yes. i have read about natives making stuff complicated, and now i know one case where it actually happens | ||
i used to think "but autoboxing?" :) | |||
except arrays can't autobox, for reasons | |||
19:33
sqirrel_ left
|
|||
psch | i've implemented three (i.e. 2-and-a-bit — the last one is still buggy) paths to jvm-interop by now | 19:35 | |
1) retry last handle, 2) see if naive marshalling is sufficient and 3) cast arguments around to make them fit | |||
19:35
ash_gti left,
ash_gti joined
|
|||
ash_gti | so, %a<b> should be highlighted like: «syntax-varaible»%a«/syntax-variable»«syntax-hash-access»<b>«/syntax-hash-access» | 19:36 | |
psch | which i think is a decent approach. 2) works for methods that take arguments that fit our REPRs, i.e. Long, Double, String or another interop'd class | ||
ash_gti | forgive my weird markup just trying to think about how that should look in an editor | ||
19:38
amaliapomian joined,
liztormato_ joined
|
|||
psch | ash_gti: i suppose an argument could be made for having <> as quoteword even when it's used for hash access | 19:38 | |
19:39
liztormato_ left
19:40
liztormato left
19:41
raiph left
19:44
rurban joined
|
|||
ash_gti | m: my $foo:«<» = 4; say $foo«>» | 19:44 | |
camelia | rakudo-moar 673f50: OUTPUT«5===SORRY!5=== Error while compiling /tmp/0xG4Fqf7OyVariable '$foo' is not declaredat /tmp/0xG4Fqf7Oy:1------> 3my $foo:«<» = 4; say $foo«>»7⏏5<EOL> expecting any of: postfix shell-quote words» | ||
ash_gti | m: my $foo:«<» = 4; say $foo:«>» | ||
camelia | rakudo-moar 673f50: OUTPUT«5===SORRY!5=== Error while compiling /tmp/ku3HlkN03KVariable '$foo:<>>' is not declaredat /tmp/ku3HlkN03K:1------> 3my $foo:«<» = 4; say $foo:«>»7⏏5<EOL> expecting any of: postfix» | ||
ash_gti | err, oops again | 19:45 | |
m: my $foo:«<» = 4; say $foo:«<» | |||
camelia | rakudo-moar 673f50: OUTPUT«5===SORRY!5=== Error while compiling /tmp/EeBpi11kjvVariable '$foo:<<>' is not declared. Did you mean '$foo:«<»'?at /tmp/EeBpi11kjv:1------> 3my $foo:«<» = 4; say $foo:«<»7⏏5<EOL> expecting any of: postfix» | ||
19:46
_mg_ joined
|
|||
ash_gti | thats... interesting | 19:46 | |
19:46
Sqirrel joined
19:50
zakharyas joined
19:51
pierrot left,
pierrot joined
|
|||
dalek | c: 83ae692 | (Salve J. Nilsen)++ | lib/Language/grammars.pod: Typo fix |
19:55 | |
19:56
ash_gti left
|
|||
dalek | c: dac5dc3 | moritz++ | README.md: README: Add "git grep TODO" as a starting point for contributing |
19:58 | |
kudo/native-ref: 1aaa5ae | jnthn++ | src/ (3 files): Non-rw routines should de-containerize native refs. |
|||
kudo/native-ref: 0f981d8 | jnthn++ | t/spectest.data: Run S06-routine-modifiers/native-lvalue-subroutines.t. |
|||
c: 25d8502 | (Matthias Krull)++ | README.md: Revert "Add reference to the Contributing doc." This reverts commit c4a4516fd7ae9e679c1ca16b0f21866913870153. Already added. Agreed upon by the contributor. |
20:00 | ||
20:12
_mg_ left,
kjs_ left
20:17
pierrot left,
pierrot joined
20:22
espadrine left
|
|||
mohij | m: say so "asdfEnd" ~~ /:ratchet [ xyz | .+! ] End / | 20:22 | |
camelia | rakudo-moar 673f50: OUTPUT«False» | ||
mohij | m: say so "asdfEnd" ~~ /:ratchet [ xyz || .+! ] End / | ||
camelia | rakudo-moar 673f50: OUTPUT«True» | ||
20:22
darutoko left
|
|||
mohij | Can someone explain whay the first one fails? | 20:23 | |
Kristien | why'd you use sed, grep and cut when you have AWK? | 20:25 | |
20:26
pippo joined
|
|||
pippo | o/ #perl6 | 20:26 | |
mohij | Kristien: awk the AWKmighty? | 20:27 | |
Mouq | m: say so "asdfEnd" ~~ /:ratchet [ xyz | ....! ] End / | ||
camelia | rakudo-moar 673f50: OUTPUT«5===SORRY!5===Unrecognized regex metacharacter ! (must be quoted to match literally)at /tmp/oya4EdiENe:1------> 3y so "asdfEnd" ~~ /:ratchet [ xyz | ....7⏏5! ] End /Unable to parse expression in metachar:sym<[ ]>; couldn't find final …» | ||
Mouq | m: say so "asdfEnd" ~~ /:ratchet [ xyz | .... ] End / | ||
camelia | rakudo-moar 673f50: OUTPUT«True» | ||
pippo | m: my $i = 2; while $i > 0 {FIRST say 'Hello'; $i--} | 20:28 | |
camelia | ( no output ) | ||
20:28
bjz left
|
|||
pippo | No FIRST phaser on while loops ? | 20:28 | |
dalek | c: d45aed3 | moritz++ | CONTRIBUTING.md: Mention #perl6 in CONTRIBUTING.md |
20:29 | |
FROGGS | m: my $i = 2; while $i > 0 {once say 'Hello'; $i--} | ||
camelia | rakudo-moar 673f50: OUTPUT«Hello» | ||
FROGGS | dunno... either FIRST ist not about loops or it is buggy | 20:30 | |
pippo | m: my $i = 2; for 1..2 {FIRST say 'Hello'; $i--} | 20:31 | |
camelia | rakudo-moar 673f50: OUTPUT«Hello» | ||
pippo | apparently it is about some loops but not all. | ||
nwc10 | jnthn: only the test failures you expect on nativref | 20:32 | |
t/spec/S32-exceptions/misc.rakudo.moar and t/spec/integration/weird-errors.t | |||
(the latter seems to fail for me, and I still haven't figured out why) | |||
t/spec/S02-lists/tree.rakudo.moar | 20:33 | ||
TODO passed: 10t | |||
(er, where did that 't' come from) | |||
dalek | href="https://perl6.org:">perl6.org: 0f1dff0 | moritz++ | source/getting-started/involved.html: Add link to "help wanted" section of perl6/doc |
||
Kristien | from a concatenation operation | 20:34 | |
pippo | FROGGS: thanks. | ||
20:35
pippo left
20:43
Kristien left
|
|||
dalek | p/native-ref: 1e2d757 | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp: Elide code-gen of many lexicalref/attributeref ops In the case we have a straight assignment, this lowers into a cheap bind operation, as before any of the native-ref work. |
20:45 | |
mohij | Mouq: No idea either, right? | 20:46 | |
20:47
mr-foobar left
|
|||
Mouq | mohij: What I don't understand is why the second one is True | 20:47 | |
mohij | I would have expected the catchall to backtrack and finally match. What do you think should cause the failure? | 20:48 | |
Mouq | m: say "asdfEnd" ~~ /:ratchet [ xyz || .+! ] End / | ||
camelia | rakudo-moar 673f50: OUTPUT«「asdfEnd」» | ||
Mouq | m: say "asdfEnd" ~~ /:ratchet [ xyz || (.+!) ] End / | 20:49 | |
camelia | rakudo-moar 673f50: OUTPUT«Nil» | ||
Mouq | m: say "asdfEnd" ~~ /:ratchet ( xyz || .+! ) End / | ||
camelia | rakudo-moar 673f50: OUTPUT«Nil» | ||
20:49
kjs_ joined
|
|||
Mouq | :? | 20:49 | |
mohij | that definitely looks not right... | ||
Mouq | mohij: Well, you're telling it "don't backtract" twice by saying "ratchet" and then "!" | 20:50 | |
*track | |||
m: say "asdfEnd" ~~ /:ratchet [ xyz || .+! ] (End) / | |||
camelia | rakudo-moar 673f50: OUTPUT«「asdfEnd」 0 => 「End」» | ||
Mouq | That's definitely weird. Maybe some kind of optimization that's breaking things | 20:51 | |
mohij | isn't both ? and ! meant to turn backtracking *on*? | ||
spec says : turns backtracking off and ! is greedy backtracking, ? is frugal backtracking (whatever that means) | 20:52 | ||
moritz | opposite of greedy | ||
mohij | what does greedy mean in context of backtracking? | ||
20:53
andreoss left
|
|||
PerlJam | it doesn't. | 20:53 | |
my read is that it does two things: greed and backtracking. | |||
moritz | mohij: taking as many characters as possible | 20:54 | |
mohij: whereas frugal tries to take as few as possible | |||
mohij | ah! greedy and frugal backtracking means the same as greedy and frugal matching (that's the word I always associated greedy with) | 20:55 | |
20:56
_mg_ joined
20:59
_mg_ left
|
|||
PerlJam | m: say "asdfEnd" ~~ /:ratchet ( xyz || .+! ) (End) /; | 21:00 | |
camelia | rakudo-moar 673f50: OUTPUT«Nil» | ||
PerlJam | That's got to be a bug because changing whether I capture or not shouldn't change whether I match or not | ||
21:00
kjs_ left
|
|||
dalek | ecs: 4693323 | lizmat++ | S24-testing.pod: Document new features of is()/isnt() |
21:03 | |
masak | I'm of two minds about the change to &is. | 21:04 | |
moritz too | |||
lizmat | fwiw, I showed that about 10 tests were passing for the wrong reason | 21:05 | |
masak | yes, this fixes |Tux|++'s use case, but it also introduces a pretty big exception, and makes &is harder to explain. | ||
lizmat: oh, that changes matters a bit. | |||
if people are already expecting it to work as now spec'd. | |||
lizmat | m: use Test; my Int $a; is ($a = Nil),Nil # used to pass | 21:06 | |
camelia | rakudo-moar 673f50: OUTPUT«not ok 1 - # Failed test at lib/Test.pm line 110# expected: (Nil)# got: (Int)» | ||
21:07
kjs_ joined
|
|||
lizmat | so, the change may cause some test breakage in the ecosystem | 21:07 | |
but I'm pretty sure they will point to tests that were passing for the wrong reason | 21:08 | ||
such as *any* type object stringyfying to '' | |||
moritz: now *I* am in 2 minds about documenting this change in doc | 21:09 | ||
should I or shouldn't I | |||
21:11
kjs_ left
|
|||
moritz | lizmat: if you don't revert it in rakudo, document it :-) | 21:11 | |
lizmat | then I'll document it | 21:12 | |
perhaps we should call the Mu:U candidate "type_ok" ? | |||
PerlJam | lizmat: FWIW, I think your version is what people mean to test when they use "is" | ||
lizmat: btw, should we start introducing "cmp-ok", "dies-ok", etc. ? | 21:15 | ||
lizmat | probably :-) | ||
21:16
rhr_ left
21:17
rhr joined,
colomon left
21:18
bjz joined
|
|||
dalek | c: b2b04fa | lizmat++ | lib/Language/testing.pod: Document new features of is()/isnt() |
21:19 | |
moritz | lizmat++ | ||
21:20
kaare_ joined
|
|||
Mouq | mohij: Ohh, yeah. Sorry | 21:24 | |
21:24
zakharyas left
21:31
bjz left
21:32
Kristien joined
21:33
pmurias left
21:34
dolmen joined
|
|||
dalek | kudo/nom: 4e89bb2 | lizmat++ | src/core/List.pm: Make <a b c>.invert no longer infiniloop It feels like someone just forgot to implement List.revert(). This should fix all infiniloops related to .invert |
21:35 | |
lizmat | soon: $ 6 '<a b c>.invert.perl.say' | ||
("a" => 0, "b" => 1, "c" => 2).list | |||
moritz | isn't invert a hash method? | 21:36 | |
timotimo | neato, thanks lizmat | ||
lizmat | moritz: yes, and also an Any | ||
moritz | lizmat: then I'd expect it to coerce to hash | ||
lizmat | however, the Any candidate called .list.invert | ||
moritz | m: say %( <a b c> ).invert.perl | 21:37 | |
camelia | rakudo-moar 673f50: OUTPUT«Odd number of elements found where hash initializer expected in method STORE at src/gen/m-CORE.setting:11141 in method hash at src/gen/m-CORE.setting:1656 in block <unit> at /tmp/YPM8nXlfqr:1» | ||
21:37
colomon joined
|
|||
moritz | that's what I'd expect | 21:37 | |
m: say %( <a b c d> ).invert.perl | |||
camelia | rakudo-moar 673f50: OUTPUT«("b" => "a", "d" => "c").list» | ||
lizmat | sadly the specification of .invert is a bit slushy | 21:38 | |
it currently states: Produces a backmapping of values to keys, expanding list values | |||
into multiple pairs. (The C<< X=> >> expands C<$v> if it is a list.) | |||
[NB: this may need refinement to handle keys that do C<Positional>.] | |||
S32/Containers:1008 | 21:39 | ||
synopsebot | Link: design.perl6.org/S32/Containers.html#line_1008 | ||
lizmat | so I was taking the behaviour of .kv on a List as a guidline | ||
m: <a b c>.kv.perl.say | 21:40 | ||
camelia | rakudo-moar 673f50: OUTPUT«(0, "a", 1, "b", 2, "c").list» | ||
moritz | lizmat: well, if it's a hash method, it should just coerce to hash the normal way | ||
lizmat: ... unless explicitly stated otherwise | |||
lizmat | it is *also* a hash method | ||
moritz | no, it is *primarily* a hash method | ||
lizmat | $ 6 '{ a => 42, b=>65 }.invert.perl.say' | 21:41 | |
(42 => "a", 65 => "b").list | |||
moritz | just like substr is *primarily* a Str method, and only a method Cool for purposes of coercion | ||
and the reason that we have reverse, flip and invert is that we have three major data types that we want to reverse in some way | |||
.flip coerces to Str | 21:42 | ||
.reverse coerces to List/Positional | |||
.invert to Hash/Associative | |||
lizmat | ok, but then how should we handle: | ||
m: "a".hash.perl.say | |||
camelia | rakudo-moar 4e89bb: OUTPUT«Odd number of elements found where hash initializer expected in method STORE at src/gen/m-CORE.setting:11145 in method hash at src/gen/m-CORE.setting:1656 in block <unit> at /tmp/jABsLcIB_8:1» | ||
jnthn | That's the answer I'd expect. | ||
lizmat | Any.invert currently coerced to l.list | 21:43 | |
*.list | |||
from moritz I gather that is wrong, it should coerce to .hash | |||
moritz | well, then Any.invert is currently wrong | ||
jnthn | I guess I could kinda see .invert being defined on anything that can be viewed as having keys/values, and you can .kv a list. | 21:44 | |
lizmat | moritz: what should it be then? | ||
well, that's exactly the approach I took | |||
moritz | lizmat: self.hash.invert | ||
jnthn | But with what moritz is saying, that's still easy to get: @list.kv.invert would do the right thing | ||
lizmat | m: "a".hash.invert # doesn't work | ||
camelia | rakudo-moar 4e89bb: OUTPUT«Odd number of elements found where hash initializer expected in method STORE at src/gen/m-CORE.setting:11145 in method hash at src/gen/m-CORE.setting:1656 in block <unit> at /tmp/HoY8tu7EbO:1» | ||
moritz | lizmat: that's fine | ||
jnthn | lizmat: I'd not expect it to work | 21:45 | |
moritz | lizmat: just like 'mumble'.sqrt doesn't work | ||
jnthn | lizmat: It's meaningless. I think that would given an error. | ||
lizmat | m: <a b c>.hash.invert # doesn't work | ||
camelia | rakudo-moar 4e89bb: OUTPUT«Odd number of elements found where hash initializer expected in method STORE at src/gen/m-CORE.setting:11145 in method hash at src/gen/m-CORE.setting:1656 in block <unit> at /tmp/zRaY6NE4wQ:1» | ||
moritz | p5 makes that a warning only | ||
dunno if we want that | |||
lizmat | m: <a b c>..kv.say | ||
camelia | rakudo-moar 4e89bb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/SpPx2tza3zCalling 'kv' requires arguments (if you meant to operate on $_, please use .kv or use an explicit invocant or argument) Expected any of:  :(Any $x)at /tmp/SpPx2tza3z:1------> 3<a…» | ||
lizmat | m: <a b c>.kv.say | ||
camelia | rakudo-moar 4e89bb: OUTPUT«0 a 1 b 2 c» | ||
moritz | lizmat: not every coercion has to succeed. That doesn't mean have to look for different coercions | ||
lizmat | my reasoning: | 21:46 | |
21:46
xfix left
|
|||
lizmat | 1: .invert reverses keys and values | 21:46 | |
2. this can be thought of as using .kv | |||
dalek | kudo/native-ref: b6f8fb5 | jnthn++ | src/Perl6/Optimizer.nqp: Fix optimizer up to know about lexicalref. |
21:47 | |
lizmat | 3. Any.kv produces a list of values and indices | ||
4. ergo Any.invert is just like that | |||
21:47
molaf left
|
|||
lizmat | it makes a lot of sense to me | 21:47 | |
but I guess I'm alone | |||
moritz | lizmat: I see it more like: | ||
1. most methods are tied to a data type. | 21:48 | ||
2. invert is tied to hashes | |||
3. so we coerce to Hash first | |||
which is consistent with how just about every other coercive method works | |||
lizmat | I see .invert more tied to what it produces, not to which it "belongs" | 21:49 | |
dalek | kudo/nom: 3607d7b | lizmat++ | src/core/ (2 files): Stop Any.invert from infinilooping another way |
21:50 | |
moritz | lizmat++ | ||
21:51
amaliapomian left
|
|||
lizmat | moritz++ # even up the karma, as I don't think I deserved this | 21:51 | |
jnthn | lizmat++, moritz++ :) | 21:52 | |
moritz | lizmat: you let yourself be persuaded. That's a rather rare trait in a human :-) | ||
jnthn | The work on native-ref to get to being mergable now is 1) JVM porting, 2) performance work | ||
lizmat | well, don't get me wrong: I'm not persuaded at all | ||
I think this is blocking a rather useful idiom from being used | 21:53 | ||
but I son't think it is important enough to fight about | |||
*don't | |||
PerlJam | lizmat, moritz: I'm wondering why we don't just fail for now until a concensus is built or TimToady invokes Rule #1 | ||
lizmat | jnthn++ # for *real* work | 21:54 | |
PerlJam: that is effectively the case now: | |||
$ 6 '"a".hash.perl.say' | |||
Odd number of elements found where hash initializer expected | |||
PerlJam | aye. problem solved :) | ||
lizmat | $ 6 '<a b c>.hash.perl.say' | ||
Odd number of elements found where hash initializer expected | |||
it no longer infiniloops | |||
moritz | m: say 'foo'.sqrt | ||
camelia | rakudo-moar 4e89bb: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏foo' (indicated by ⏏) in method <anon> at src/gen/m-CORE.setting:14984 in any find_method_fallback at src/gen/m-Metamodel.nqp:2822 in any find_method a…» | ||
lizmat | $ 6 '<a b c>.invert.perl.say' | ||
Odd number of elements found where hash initializer expected | |||
moritz | same situation here: coercion doesn't success, thus the whole operation fails | ||
I don't see why 'a'.hash should be different in this regard | 21:55 | ||
nor any operation that needs to coerce to hash first | |||
lizmat | sorry, that was a pasto | ||
please see my last paste here | |||
PerlJam | m: <a b c>.kv.invert.perl.say | 21:56 | |
camelia | rakudo-moar 4e89bb: OUTPUT«(0 => 0, "a" => 1, 1 => 2, "b" => 3, 2 => 4, "c" => 5).list» | ||
lizmat | the reason I did this, was reading the backlog and someone mentioning it infinilooping | ||
21:57
anaee____ left
|
|||
lizmat | then reading the synopsis, it seemed to be the right thing to do | 21:57 | |
it's no longer infinilooping: that was the important bit for me | 21:58 | ||
PerlJam | aye, lizmat++ for that. | ||
dalek | kudo/newio: aff3d16 | lizmat++ | src/core/List.pm: Make List.kv completely flatten its values |
21:59 | |
rakudo/newio: 6662cdc | lizmat++ | src/core/array_slice.pm: | |||
rakudo/newio: Make foo[] return self as with foo{} | |||
21:59
dalek left
|
|||
bartolin | could someone on a windows box try to run this test file: gist.github.com/usev6/f9d0f6ca4e213e89b546 ? | 21:59 | |
lizmat | sorry dalek, nwc10: I did it again :-) | ||
21:59
dalek joined,
ChanServ sets mode: +v dalek
|
|||
bartolin | I'm trying to add some repl specific tests to S19-command-line/repl.t but I'm not sure how to do that in a platform independent way | 22:00 | |
lizmat | bartolin: I had a similar issue with t/spec/S17-supply/watch_path.t | 22:01 | |
in the end, I made a single subtest for the environment I *could* test | |||
and then, depending on $*DISTRO.name, execute that one, or pass | 22:02 | ||
moritz | bartolin: the REPL isn't part of the design document, so I'd argue that REPL tests don't belong into roast | ||
bartolin | lizmat: I see. I could follow that way. | ||
lizmat | perhaps that could work for you? | ||
moritz -> sleep | 22:03 | ||
lizmat | and indeed, perhaps it shouldn't live in roast, but in t/02-rakudo ? | ||
good night, moritz | |||
bartolin | moritz: well, I see your point. good night! | ||
I wouldn't mind to have the tests outside of roast. But given that there are quite some tickets about REPL specific behaviour it would be nice to have some tests for that. | 22:05 | ||
lizmat | bartolin++ for working on it | ||
bartolin | t/02-rakudo sounds fine to me. | ||
lizmat | yup | ||
lizmat also calls it a night | |||
bartolin | good night, lizmat | 22:06 | |
[Coke] | ~~ lizmat | 22:07 | |
jnthn | 'night lizmat, moritz | 22:08 | |
Kristien | My GC is as thread-safe as strtok. | 22:12 | |
geekosaur | *eyeroll* | 22:13 | |
vendethiel | *g* | ||
PerlJam tosses a strtok_r at Kristien | |||
22:13
colomon left
|
|||
Kristien | boost::split | 22:14 | |
geekosaur isn't sure strtok() is even single-thread safe, considering that it destructively modifies the string | 22:16 | ||
Kristien | It's a C API. Of course it's not safe. | ||
leont | strtok not being reentrant is a long known issues | 22:17 | |
22:19
kjs_ joined
22:20
kjs_ left
22:28
FROGGS left
22:33
khisanth_ joined
|
|||
mohij | Are the two regex strange-behaviours rakudobug worthy? | 22:33 | |
jnthn | mohij: Only glanced them in passing, but looked so to me. | 22:34 | |
22:35
Khisanth left
|
|||
mohij looks how to get a rt account | 22:35 | ||
jnthn: thanks! | |||
PerlJam | mohij: just send an email to [email@hidden.address] | ||
22:36
mls left
|
|||
mohij | PerlJam: Is there any documentation on formatting and content? | 22:36 | |
PerlJam | mohij: um ... "do what masak does" :) | ||
22:37
mls joined
|
|||
mohij looks up a bug reported by masak | 22:37 | ||
jnthn | mohij: Most important is three pieces of info: 1) what code you ran, 2) what happened, 3) what you expected | ||
22:37
laouji joined
22:39
kjs_ joined
22:44
diana_olhovik_ left
22:47
rurban left
|
|||
Kristien | bye! | 22:49 | |
22:49
Kristien left
22:50
raiph joined
|
|||
masak | mohij: here's my method: I copy-paste the relevant IRC discussion, and then remove everything that does not contribute to what jnthn said. | 22:50 | |
jnthn | Because anything that doesn't contribute to what I say is clearly worthless. :P | 22:51 | |
mohij | masak: Good hint for next time. Both reports are already out though. :-) | ||
22:51
kjs_ left
|
|||
masak | cool. | 22:52 | |
22:52
dolmen left
|
|||
PerlJam | mohij++ | 22:52 | |
masak checks mohij++'s RT tickets | |||
22:52
laouji left
|
|||
masak | very good on the three pieces of info. | 22:53 | |
22:53
pmurias_ left
|
|||
masak | one missing detail which copy/pasting from IRC/camelia gives you automatically is the git commit of Rakudo. | 22:54 | |
though that's not crucial -- the timestamp of the RT ticket works equally well, I guess. | |||
so, all in all, mohij++ :) | |||
22:56
Rounin left
23:03
mls left
23:04
mls joined
23:06
wicope left
|
|||
dalek | kudo-star-daily: 0915755 | coke++ | log/ (9 files): today (automated commit) |
23:12 | |
23:17
pecastro left
23:28
skids joined
23:29
mohij left,
dolmen joined
23:31
grondilu left
23:42
BenGoldberg joined
23:53
laouji joined,
fernando_ joined
23:57
laouji left
|