»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by sorear on 25 June 2013. |
|||
jepeway | s/time/Instant/ | 00:01 | |
err...s:2nd/time/Instant/ | |||
jack_rabbit | oh, duh. | 00:02 | |
[Coke] is down to the last bisect.... slooow | 00:03 | ||
00:06
grondilu left
|
|||
jepeway | camelia's CTCP Time'ing requestor seems a keen idea to me...might need a way to say "nope, camelia's time, not mine," too. | 00:06 | |
*requester | |||
TimToady | well, all you're gonna get is their server's time, which in my case is 3 hours off from what I'd want... | 00:07 | |
00:08
grondilu joined,
grondilu is now known as Guest83289
|
|||
jack_rabbit | Where do I get the bitmask for IO::Socket.poll? | 00:10 | |
jepeway | maybe "TZ=US/wherever irssi" (or whichever client) would help there? | 00:12 | |
TimToady | my client is not in my timezone either | 00:13 | |
00:14
nick__ joined
|
|||
nick__ | hello | 00:14 | |
[Coke] | annnnd, TimToady broke rakudo-parrot. :) | ||
98c32aaa8b2219 is the first bad commit. | |||
nick__ | well thats good? | ||
right | 00:15 | ||
jepeway | well, understood, but if you're on a nix/nux box, can't you just declare your timezone with the TZ envariable and client & OS will DTRT? | ||
nick__ | hey i was think an mascot like otter for perl6? any ideas | 00:16 | |
[Coke] | nick__: hello. Whats up? | ||
nick__: we already have camelia. (the butterfly on perl6.org) | 00:17 | ||
nick__ | new guy, pretty new to perl, coming from perl 5... | ||
how much is a diffs in syntax? between the two | 00:18 | ||
so far i don't see much of a diff | |||
00:23
jack_rabbit left
|
|||
jepeway hopes he's not coming across as cheeky | 00:23 | ||
nick__ | so what does everyone think of using otter instead of a camelia | ||
??? | 00:25 | ||
00:25
jerrycheung left
|
|||
jepeway | .tell masak hey, I'm poking at RT 122319; would you have time to peek at clog around irclog.perlgeek.de/perl6/2014-09-01#i_9282046? | 00:28 | |
yoleaux | jepeway: I'll pass your message to masak. | ||
nick__ | Hello? | 00:29 | |
[Coke] | nick__: it's not going to fly, sorry | 00:30 | |
nick__ | why? | ||
jepeway | well, gtg. g'nite (from US/Eastern aka EDT5EST) #perl6 | ||
00:30
jepeway left
|
|||
geekosaur | this may not always work anyway. I'm in EST5EDT but my IRC client I force into UTC | 00:31 | |
nick__ | :/ butterfly, should use the camel instead | ||
[Coke] | nick__: perl6.org/about/ | ||
"Camelia as the logo for Perl 6 and perl6.org is not negotiable. | 00:32 | ||
" | |||
timotimo | t.h8.lv/p6bench/2014-09-02-since_release.html - the json benchmarks really got a nice little boost from the recent jit and optimization improvements | ||
[Coke] | You can imagine that having someone who is not yet part of the community suggest a change about the logo isn | ||
t going to get much traction. | |||
timotimo: nice. | |||
nick__: I do imagine an otter would also be cute, however. | 00:33 | ||
timotimo | i wonder what the otter would symbolize | ||
"this is the otter perl language"? %) | |||
TimToady | .oO(endangered species fighting for existence) |
00:34 | |
timotimo | .tell japhb_ I'm still wondering why the benchmark plots don't disappear when there is 0 data at all, like the non-nqp-implemented benchmarks in a pure-nqp-comparison | ||
yoleaux | timotimo: I'll pass your message to japhb_. | ||
nick__ | otter (Joy Agility Energy Curiosity Creativity Dexterity Protection Friendship Playfulness) , i think it would help and i can comeup with a samples | 00:35 | |
timotimo | does any other language have an otter? | 00:36 | |
nick__ | also i had came to the chat b4, many time to the community | ||
no, that i know of | |||
we can always otter for automation, since perl has been really good for scripts in that area and master text process | 00:37 | ||
timotimo | .tell japhb_ i wonder when it'll be time to re-implement the perl5 portions of p6bench in pure perl6 :) | ||
yoleaux | timotimo: I'll pass your message to japhb_. | ||
nick__ | plus i tired many language for admin,script work,system, and web but perl power seem to a lot of bulltin goodness (not talking the library) but the language itself | 00:39 | |
Fearlessness is another great symbolic attribute of the otter | 00:41 | ||
also Native American Zodiac Sign Meanings A little quirky, and unorthodox, the Otter is a hard one to figure sometimes. Perceived as unconventional, the Otter methods aren't the first ones chosen to get the job done. This is a big mistake on the part of others - because although unconventional, the Otter's methods are usually quite effective. Yes, the Otter has unusual way of looking at things, but he/she is equipped with a brilliant i | 00:42 | ||
allowing him/her an edge over every one else. Often very perceptive and intuitive, the Otter makes a very good friend, and can be very attentive. In a nurturing environment the Otter is sensitive, sympathetic, courageous, and honest. Left to his/her own devices, the Otter can be unscrupulous, lewd, rebellious, and isolated | |||
timotimo | cut off after "equipped with a brilliant i" | 00:43 | |
nick__ | so i truly believe perl, even with a lot people say the syntax or the doing things in more than one way is not good, i disagree. having freedom to write your code give you better option | 00:44 | |
look i know i am new, but i seen how can a simple but yet logo can boost perl6. | 00:45 | ||
i just saying whats on my mind | 00:46 | ||
i.dailymail.co.uk/i/pix/2014/03/06/...34x424.jpg otter fighting | 00:48 | ||
00:49
jerrycheung joined
|
|||
nick__ | otter can eat snake too ;) | 00:50 | |
00:50
kurahaupo joined
01:02
dayangkun joined
01:04
FROGGS_ joined,
xenoterracide left
01:07
FROGGS left
|
|||
TimToady | .oO(Proposed order of subject merit: relationships > jokes > culture > philosophy > principles > features > sugar > bikesheds > mascots > competition > licenses...) |
01:07 | |
01:09
cooper left
|
|||
nick__ | ?? | 01:09 | |
01:09
cooper joined,
cooper left,
cooper joined
|
|||
[Coke] | nick__: I appreciate your desire to make the otter the mascot for perl6. But we already have a mascot, and we're really not likely to switch it at this point. Thanks, though. | 01:18 | |
nick__ | ok, i will come back in 15years,then lol | 01:19 | |
01:19
nick__ left
01:23
xenoterracide joined
|
|||
TimToady | ooh, the old take my marbles and go home ploy... | 01:25 | |
01:28
cooper left
|
|||
TimToady suspects Camelia has succesfully fended off another potential troublemaker | 01:28 | ||
01:29
cooper joined,
cooper left,
cooper joined
01:36
jack_rabbit joined
01:57
firefish5000 left
|
|||
TimToady | [Coke]++ # unfailingly polite | 02:04 | |
02:05
noganex_ joined
|
|||
[Coke] | I'm glad we can take turns being polite. it's hard to do all the time. :) | 02:07 | |
02:07
Guest83289 left
02:08
noganex left
|
|||
TimToady | you said it | 02:08 | |
02:08
grondilu joined
|
|||
grondilu | when given filenames on the command line, isn't perl6 supposed to execute all of them? $ echo 'say "foo"' > foo.t; echo 'say "bar"' > bar.t; perl6 *.t # shows only bar | 02:10 | |
TimToady | no, only the first one | 02:11 | |
the rest are arguments | |||
gotta have something left to stick into $*ARGS | 02:12 | ||
er @ | |||
grondilu | ok | ||
02:12
cooper left
|
|||
grondilu | for some reason I'd swear I had already ran something like perl6 *.t | 02:13 | |
I probably did, without knowing that was wrong :/ | |||
dj_goku_ | so with the work to beable to use p5 in p6 to allow a wider audience use p6 while those big libraries on p5 are built in p6? | ||
02:14
grondilu left
|
|||
TimToady | there are many migration strategies, and that supports some of them | 02:15 | |
jack_rabbit | Are there async socket IO or concurrency implementations available? | 02:18 | |
TimToady doesn't know the status of that offhand; there has certainly been some work on it | 02:19 | ||
dj_goku_ | TimToady: are you still at craiglist? | 02:20 | |
TimToady | yes | ||
they take good care of me | |||
dj_goku_ | so do they have you work on anything other than p6? | ||
TimToady | not yet :) | ||
dj_goku_ | are they using p6? | ||
TimToady | not yet :) | 02:21 | |
02:21
chenryn joined
|
|||
dj_goku_ | either way it is pretty awesome they are supporting that development. | 02:23 | |
TimToady | for sure! | ||
jack_rabbit | Well their goal is to use it I would guess. | ||
TimToady | their goal is to support the concept of paying it forward, and if that works out to pay somthing back in the long run, all the better | 02:28 | |
they're a great bunch of people | |||
dj_goku_ | looking at a job posting. sounds like it. | 02:29 | |
jack_rabbit | sweet. | 02:30 | |
02:34
BenGoldberg left
|
|||
dj_goku_ | TimToady: so I presume you work from home? | 02:35 | |
02:42
pyrimidine joined
|
|||
TimToady | mostly, yes | 02:44 | |
haven't been able to get away from home as much as I expected this year :) | 02:45 | ||
02:53
[Sno] left
02:54
[Sno] joined
02:59
telex left
03:00
telex joined
|
|||
[Coke] | ah, ymd-from-daycount is the likely culprit for parrot breakage. | 03:00 | |
03:07
jerrycheung left
|
|||
dj_goku_ | TimToady: nice. I recently switched jobs back in march, from a perl shop to now python. though I am still a fan of perl. Learning mojolicious and writing web APIs on the side right now. | 03:07 | |
03:08
xinming joined
|
|||
pyrimidine | I kind of get the impression that python is starting to lose a bit of it’s new/shiny. Like, Google basically creating Go as it’s (eventual) python replacement | 03:15 | |
dj_goku_ | pyrimidine: there are a couple things I really like about python, but then there are somethings not so much. | 03:16 | |
TimToady | Go is not really a suitable replacement for any scripting language | ||
pyrimidine | TimToady: I haven’t looked at it to be honest. Just like dj_goku_ I find some things about python nice, others not so much. | 03:19 | |
dj_goku_ | we use pandas a lot, which is really nice, but sometimes with my lack of knowledge I bang my head around. | 03:20 | |
pyrimidine | We actually have been sticking with R for any data analysis. It can be like pokers to the eyes sometimes, but it’s been around long enough | 03:23 | |
TimToady | we might get better leverage making sure p6 works with some python libs than some p5 libs :) | ||
pyrimidine | might | 03:24 | |
xiaomiao | Go ... some good ideas, with added extra braindamage stapled in | ||
pyrimidine | heh | ||
xiaomiao | e.g. static linking to make distro packaging impossible | ||
e.g. "deploy from github" as feature | |||
TimToady | they fixed a lot of things from C, including a fair number of things that didn't need fixing :) | ||
dj_goku_ | pyrimidine: I don't deal with the data analysis portion, just the loading. :D | ||
pyrimidine | dj_goku_: like those guys that set up the dynatmie charges for road work? | 03:26 | |
*dynamite | |||
dj_goku_ | pyrimidine: it feels that way sometimes. | 03:27 | |
pyrimidine | well, as long as you just push the trigger and can stand far enough away to not get hurt :) | ||
not that R is much better. But it was at least written by statisticians (and it shows) | 03:29 | ||
dj_goku_ | since I have started I have mostly building API interfaces to interface with APIs like (facebook, google, salesforce) to pull in all sorts of data for our clients. | 03:30 | |
03:31
tardisx joined
|
|||
dj_goku_ | Adding a lot of tests too. There weren't a lot of tests when I started. | 03:33 | |
pyrimidine: so are you writing R stuff and executing in python? | |||
pyrimidine | dj_goku_: nope. Straight R/Perl/Python. | 03:34 | |
(not in that order) | |||
Basically, ‘whatever is needed for the job at hand’ | 03:35 | ||
dj_goku_ | pyrimidine: sounds like me, but we have other people doing R and the reporting side. | 03:36 | |
pyrimidine | We do genome assemblies, look at gene expression data, etc. The tools vary, can be a mix of C, Perl (with XS), R, Python, Java, and in some cases Ruby | 03:37 | |
We run most tasks on high-performance clusters (local, but sometimes AWS). We even have access to this: bluewaters.ncsa.illinois.edu | 03:38 | ||
xiaomiao | pyrimidine: sounds like great fun | 03:39 | |
pyrimidine | yes, it is. Can be very frustrating as well | ||
ggoebel1111112 | hey dj_goku | ||
xiaomiao | pyrimidine: frustration is part of the job | 03:40 | |
03:40
Woodi_ left
|
|||
pyrimidine | xiaomiao: yep. much of it in my case comes from working with users w/ little to no compute knowloedge | 03:40 | |
03:40
Woodi joined
|
|||
dj_goku_ | ggoebel1111112: hey garrett! how goes it?! | 03:41 | |
pyrimidine: that sounds fun. | |||
pyrimidine | it is | 03:44 | |
xiaomiao | hehe. "It'd be so much easier without users" | ||
pyrimidine | xiaomiao: yeah. Can’t they just leave us alone :) | 03:45 | |
xiaomiao | I'd be happy if all the ADHD kiddies stopped writing code for a while and started creating software instead | ||
users are relatively easy to tolerate, bad code is much more frustrating | |||
pyrimidine | xiaomiao++ | 03:46 | |
couldn’t agree more | |||
we get lots of that now. Everyone is writing up the coolest viz tools in d3.js or similar, but not really thinking through that the damn thing needs to be actually useful at some point. | 03:48 | ||
03:48
[Sno] left
|
|||
pyrimidine | lots of ‘thesis-ware’ | 03:48 | |
xiaomiao | well, I'm seeing that a lot on the linux front now ... | 03:55 | |
deterministic boot? who needs that! | 03:56 | ||
03:57
jerrycheung joined
|
|||
ggoebel1111112 | working through Let's Build A Compiler and translating it to perl targetting MSIL | 04:05 | |
filling in the gaps and looking to delurk in a useful capacity someday | 04:06 | ||
good to hear from you... <and back to being a lurker> | 04:08 | ||
TimToady | ggoebel1111112++ | ||
that makes you, what, ggoebel1111113 or so? | 04:09 | ||
ggoebel1111112 | all those 1's blur together... :-) | ||
probably means its time for bed | |||
04:10
Akagi201 left
04:11
kaare_ joined
04:30
raiph left,
mr-foobar left
04:45
rindolf joined
04:47
xenoterracide left,
pyrimidine left
04:50
dwarring left
04:59
chenryn left
05:01
hagiri joined
05:05
rindolf left
05:06
rindolf joined,
hagiri left
05:12
SamuraiJack joined
05:13
[Sno] joined
05:15
chenryn joined
05:36
rindolf left
05:37
rindolf joined
05:54
mr-foobar joined,
gfldex joined
05:58
virtualsue joined
06:12
rindolf left
06:13
rindolf joined
|
|||
sergot | hi o/ | 06:14 | |
06:16
gfldex left
06:22
vendethiel left
06:42
rindolf left,
fhelmberger joined,
rindolf joined
06:43
fhelmberger left
|
|||
TimToady | where is #75010 | 06:43 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=75010 | ||
06:44
kaleem joined
06:51
rindolf left
06:52
rindolf joined
|
|||
danaj | I still have more testing, cleanup, and API discussion, but looks like my new is-prime is running ~20x faster than the current one. | 06:52 | |
06:53
mberends joined,
kaleem left,
virtualsue left
06:54
mberends left
|
|||
TimToady | danaj++ | 06:55 | |
06:56
rindolf left,
rindolf joined
06:57
rindolf left
06:59
itz_ joined
07:02
itz left
07:06
darutoko joined
07:07
jerrycheung left,
zakharyas joined,
ggoebel1111112 left
07:16
kaleem joined
|
|||
dalek | ast: 7a6c919 | TimToady++ | S32- (2 files): :p is supposed to weed out non-existing |
07:31 | |
ast: 2befb5e | TimToady++ | S32-array/splice.t: unfudge, works now in rakudo |
|||
ast: 79039df | TimToady++ | S12-class/attributes.t: all ranges now autotruncate on subscripting |
|||
ast: 7060722 | TimToady++ | S0 (4 files): parcels no longer autoflatten for .elems or .[] |
|||
kudo/nom: a8df1c9 | TimToady++ | src/core/array_slice.pm: all ranges autotruncate on subscripting overrun |
07:33 | ||
kudo/nom: ef380d2 | TimToady++ | src/core/ (2 files): Parcel no longer autoflattens for .elems or .[] |
|||
07:35
virtualsue joined
07:37
FROGGS_ is now known as FROGGS
|
|||
FROGGS | o/ | 07:37 | |
moritz | \o | 07:38 | |
TimToady: I can imagine those commits make list stuff a bit faster | |||
07:39
bjz joined
|
|||
dalek | ecs: 366eca4 | TimToady++ | S02-bits.pod: Parcels are not so ephemeral anymore |
07:39 | |
nwc10 | after the ASAN build, I'll have another go with optimisation | 07:40 | |
and see how startup now looks | |||
TimToady | moritz: well, possibly, possibly not | ||
07:40
brrt joined
|
|||
TimToady was going for correct semantics first, and we may need the list refactor to make them faster | 07:40 | ||
slicing continues to make far too many decisions at run time that should be made at compile time | 07:41 | ||
moritz | well, not doing a .flat for each .elems call should be a win | ||
07:42
mberends joined
|
|||
nwc10 | good * mberends | 07:43 | |
is this "good Jet Lag, mberends"? | |||
07:44
mberends left
|
|||
TimToady | m: say (1,(2,3),4).elems | 07:44 | |
camelia | rakudo-moar 0a4af1: OUTPUT«4» | ||
TimToady | that will say 3 when my changes recompile | 07:45 | |
07:45
chenryn left
|
|||
TimToady | and you'll have to say .flat.elems if that's what you actually want | 07:45 | |
one fallout of this is that I had to work really hard to get .kv not to return a parcel for each key/value pair | 07:46 | ||
07:46
mberends joined
|
|||
mberends | haha, yes, sitting at AMS waiting to fly on to LJU in a few mins ;-) | 07:46 | |
TimToady | so .kv always flattens itself rather than relying on parcel to do it | ||
nwc10 | good *, mberends | 07:47 | |
mberends | good am, nwc10 | ||
nwc10 | [nick@gcc1-power7 rakudo]$ ./perl6-m -e 'say $*DISTRO' | 07:48 | |
linux (2.6.32.279.19.1.el.6.ppc.64) | |||
with SPESH disabled it fails one spectest. | |||
with SPESH it fails quite a few, but all seems to be the same underlying problem | |||
moritz | nwc10: have you tried it with with spesh, but MVM_SPESH_OSR_DISABLE=1 ? | 07:49 | |
nwc10 | not yet | ||
anyway | |||
mberends: you might find that it builds on more debian platforms than the two usual suspects | |||
mberends | nwc10: excellent! Moar on ARM32 seems viable :-) | 07:51 | |
07:51
ggoebel1111112 joined
|
|||
nwc10 | mberends: you have tested this recently? | 07:51 | |
mberends | nwc10: no, I think tadzik++ reported success on Android. | 07:52 | |
tadzik | nah, that was SailfishOS | ||
and a partial success :) | |||
mberends | ah, thanks | ||
07:53
donaldh joined
|
|||
nwc10 | it was a complete sod to get MoarVM to work on ARM | 07:53 | |
(hidden alignment assumptions in the NQP code) | |||
and I've not re-checked whether something else then broke it | |||
also, a Raspberry Pi is considerably slower than other stuff, even (I believe) more beefy ARM boards | 07:54 | ||
07:54
chenryn joined
|
|||
mberends | a special interest group at DebConf discussed designing a totally open source laptop motherboard with a very beefy ARM V8 (64 bit) to fit into an existing case such as a ThinkPad X220. | 07:57 | |
dalek | kudo/nom: a640aab | (Elizabeth Mattijsen)++ | src/core/Int.pm: Unbreak 98c32aaa8b2219 for parrot (RT #122681) |
08:03 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122681 | ||
FROGGS | "XXX temporary fix" *g* | 08:05 | |
I bet it will still be there in 2020 :o) | |||
08:06
Akagi201 joined
|
|||
FROGGS | ohh, a nativecall test relied on the parcel flattening as it seems | 08:06 | |
08:08
pecastro joined
08:12
kjs_ joined,
domidumont joined
08:13
mberends left
|
|||
lizmat | FROGGS: but will parrot make it to 2020 ? | 08:14 | |
anyway, I thought it would be too early to let breakage of that kind persist | 08:15 | ||
as it was clearly an opt directed towards developments on MoarVM | |||
FROGGS | lizmat: no idea about parrot... I think depends on new devs joining #parrot or not | 08:16 | |
dalek | ecs: c6647e2 | (Elizabeth Mattijsen)++ | S99-glossary.pod: Added "opt" lemma and moved OSR to right place |
08:18 | |
FROGGS | this fails: | 08:21 | |
my $carray = nativecast(CArray[uint32], ReturnArray()); | |||
is $carray[0..2], [1, 2, 3], 'casting int * to CArray[uint32] works'; | |||
but this passes: | |||
is $carray[0,1,2], [1, 2, 3], 'casting int * to CArray[uint32] works'; | |||
ohh, it might be the role IntTypedCArray in NativeCall | 08:23 | ||
nwc10 | of course. Parrot 12.0 will be released on Tuesday 21st Jan 2020 | 08:24 | |
this is the benefit of a predictable release schedule | |||
sometimes I wonder why it's not automated with cron | |||
FROGGS | nwc10: because you cannot automate documentation patches </troll> | ||
moritz | ah, but then we wouldn't notice when the last parrot developer has given up | ||
FROGGS | (yes, I know there were very nice patches during this GSoC) | 08:25 | |
lizmat | as jnthn said in his latest performance presentation: without parrot we wouldn't be with rakudo where we are now | 08:26 | |
FROGGS | that's totally true | ||
you need a solid base to do experiments which let you grow | |||
nwc10 | not specifically in the context of Rakduo VMs - too many people think of GSoC as free labour. And ignore the cost of training. And fail to pay attention to how many students carry on with open source afterwards | ||
moritz | lizmat: I'm not questioning parrot's past contributions, merely its future | 08:27 | |
timotimo | .tell mberends have these debian arm laptop special interest group looked closely at the Pyra? the Open Pandora successor? it'll be quite beefy indeed | ||
yoleaux | timotimo: I'll pass your message to mberends. | ||
moritz | (and iirc I still qualify as a parrot developer, and have a commit bit, and all that) | 08:28 | |
08:30
dakkar joined
|
|||
FROGGS | hmmm, in $carray[0..2] the Proxy.FETCH is only called with $pos==0, and for $carray[0,1,2] its is called with 0, then 2 then 3 | 08:31 | |
err, 0 then 1 then 2 | |||
dalek | ast: 447e63c | (Elizabeth Mattijsen)++ | S02-types/WHICH.t: Separate concurrency to avoid parrot breakage |
08:37 | |
08:37
kjs_ left
|
|||
dalek | ast: c738362 | (Elizabeth Mattijsen)++ | S02-types/WHICH.t: some more tweaks |
08:39 | |
08:39
dakkar left
|
|||
FROGGS | that shows it: | 08:40 | |
m: class Foo { method at_pos($p) { Proxy.new: FETCH => method () { say $p }, STORE => -> | { } } }; my $a = Foo.new; say $a[0..2] | |||
camelia | rakudo-moar a640aa: OUTPUT«0000000True» | ||
FROGGS | m: class Foo { method at_pos($p) { Proxy.new: FETCH => method () { say $p }, STORE => -> | { } } }; my $a = Foo.new; say $a[0,1,2] | 08:41 | |
camelia | rakudo-moar a640aa: OUTPUT«000000011111112222222True True True» | ||
lizmat | afk for a few hours& | ||
FROGGS | o/ | ||
timotimo | m: say (0..2).list.perl | 08:45 | |
camelia | rakudo-moar a640aa: OUTPUT«(0, 1, 2).list» | ||
timotimo | m: say (0..2).list.elems | ||
camelia | rakudo-moar a640aa: OUTPUT«3» | ||
timotimo | :\ | ||
method infinite() { nqp::p6bool(nqp::istype($!max, Num)) && $!max eq 'Inf' } # ← is this a workaround? the eq part? | 08:46 | ||
08:47
jack_rabbit left
|
|||
FROGGS | looks like | 08:47 | |
timotimo gets distracted too easily | 08:49 | ||
FROGGS | m: class Foo { method at_pos($p) { Proxy.new: FETCH => method () { say $p }, STORE => -> | { } } }; my $a = Foo.new; say $a[0..2]; say POSITIONS($a, 0..2) | ||
camelia | rakudo-moar a640aa: OUTPUT«0000000True0» | ||
FROGGS | m: say POSITIONS(my $a, 0..2) | 08:50 | |
camelia | rakudo-moar a640aa: OUTPUT«» | ||
FROGGS | m: say POSITIONS(my $a = [], 0..2) | ||
camelia | rakudo-moar a640aa: OUTPUT«» | ||
FROGGS | m: say POSITIONS(my $a = [0], 0..2) | ||
camelia | rakudo-moar a640aa: OUTPUT«0» | ||
FROGGS | m: say POSITIONS(my $a = [0,1,2,3,4,5], 0..2) | ||
camelia | rakudo-moar a640aa: OUTPUT«0 1 2» | ||
timotimo | m: class Foo { method at_pos($p) { say "atpos $p"; Proxy.new: FETCH => method () { say "fetch $p" }, STORE =>-> | { } } }; my $a = Foo.new; say $a[0..2]; say POSITIONS($a, 0..2) | 08:53 | |
camelia | rakudo-moar a640aa: OUTPUT«atpos 0fetch 0fetch 0fetch 0fetch 0fetch 0fetch 0fetch 0True0» | ||
timotimo | m: class Foo { method elems() { 5 }; method at_pos($p) { say "atpos $p"; Proxy.new: FETCH => method () { say "fetch $p" }, STORE =>-> | { } } }; my $a = Foo.new; say $a[0..2]; say POSITIONS($a, 0..2) | 08:54 | |
camelia | rakudo-moar a640aa: OUTPUT«atpos 0fetch 0fetch 0fetch 0fetch 0fetch 0fetch 0fetch 0True0» | ||
timotimo | m: class Foo { method elems() { 5 }; method exists_pos($p) { 1 }; method at_pos($p) { say "atpos $p"; Proxy.new: FETCH => method () { say "fetch $p" }, STORE =>-> | { } } }; my $a = Foo.new; say $a[0..2]; say POSITIONS($a, 0..2) | ||
camelia | rakudo-moar a640aa: OUTPUT«atpos 0fetch 0fetch 0fetch 0fetch 0fetch 0fetch 0fetch 0True0» | ||
timotimo | m: class Foo { method elems() { say "elems"; 5 }; method exists_pos($p) { say "exists pos $p"; 1 }; method keys() { say "keys"; (0, 1, 2, 3, 4) }; method at_pos($p) { say "atpos $p"; Proxy.new: FETCH => method () { say "fetch $p" }, STORE =>-> | { } } }; my $a = Foo.new; say $a[0..2]; say POSITIONS($a, 0..2) | 08:55 | |
camelia | rakudo-moar a640aa: OUTPUT«atpos 0fetch 0fetch 0fetch 0fetch 0fetch 0fetch 0fetch 0True0» | ||
timotimo | hm. | ||
i don't know how this part of the whole thing works, tbh | |||
FROGGS | me neither | 08:57 | |
09:00
virtualsue left
|
|||
FROGGS | m: class Foo { method at_pos($p) { Proxy.new: FETCH => method () { say $p }, STORE => -> | { } } }; my $a = Foo.new; say $a[0..2]; say $a.gimme(0) | 09:01 | |
camelia | rakudo-moar a640aa: OUTPUT«0000000TrueNo such method 'gimme' for invocant of type 'Foo' in block <unit> at /tmp/8QvcsSRCIm:1» | ||
FROGGS | m: class Foo { method at_pos($p) { Proxy.new: FETCH => method () { say $p }, STORE => -> | { } } }; my $a = Foo.new; say $a[0..2]; say $a.list.gimme(0) | ||
camelia | rakudo-moar a640aa: OUTPUT«0000000True0» | ||
FROGGS | m: class Foo { method at_pos($p) { Proxy.new: FETCH => method () { say $p }, STORE => -> | { } } }; my $a = Foo.new; say $a[0..2]; say $a.list.gimme(1) | ||
camelia | rakudo-moar a640aa: OUTPUT«0000000True1» | ||
FROGGS | m: class Foo { method at_pos($p) { Proxy.new: FETCH => method () { say $p }, STORE => -> | { } } }; my $a = Foo.new; say $a[0..2]; say $a.list.gimme(2) | ||
camelia | rakudo-moar a640aa: OUTPUT«0000000True1» | ||
FROGGS | m: class Foo { method at_pos($p) { Proxy.new: FETCH => method () { say $p }, STORE => -> | { } } }; my $a = Foo.new; say $a[0..2]; say $a.list. | ||
camelia | rakudo-moar a640aa: OUTPUT«===SORRY!=== Error while compiling /tmp/7mykzsYbTIMissing semicolon.at /tmp/7mykzsYbTI:1------> $a = Foo.new; say $a[0..2]; say $a.list.⏏<EOL> expecting any of: method arguments post…» | ||
FROGGS | m: class Foo { method at_pos($p) { Proxy.new: FETCH => method () { say $p }, STORE => -> | { } } }; my $a = Foo.new; say $a[0..2]; say $a.list | ||
camelia | rakudo-moar a640aa: OUTPUT«0000000TrueFoo.new()» | ||
09:08
chenryn left
09:19
kjs_ joined
09:33
dakkar joined,
anaeem1 joined
09:34
spider-mario joined
09:35
spider-mario left
09:38
spider-mario joined,
chenryn joined
09:44
chenryn left
09:48
itz_ left
09:51
virtualsue joined
09:54
itz joined
10:01
chenryn joined
10:02
brrt left
10:04
itz_ joined
10:05
itz left
10:22
chenryn left
10:23
chenryn joined
|
|||
nine | asrabkin.bitbucket.org/papers/oopsla13.pdf "Second, intrinsic features have only secondary importance in adoption. Open source libraries, existing code, and experience strongly influence developers when selecting a language for a project. Language features such as performance, reliability, and simple semantics do not." | 10:32 | |
10:48
salv0 left
|
|||
carlin | m: $*TZ=43200; say DateTime.new("2014-09-01T12:00:00Z").local | 10:48 | |
camelia | rakudo-moar a640aa: OUTPUT«2014-09-02T00:00:00+1200» | ||
carlin | m: say DateTime.new("2014-09-01T12:00:00Z").local | 10:49 | |
camelia | rakudo-moar a640aa: OUTPUT«2014-09-01T12:00:00Z» | ||
carlin | that's easier than getting camelia to do CTCP time requests :p | 10:50 | |
dalek | kudo/nom: 69d7051 | (Elizabeth Mattijsen)++ | src/core/Parcel.pm: Hack a Parcel.WHICH solution Apparently, a Parcel created by the .Parcel method, consists of a ListIter as its only element. Upon inspection, this is flattened, causing a problem with the .WHICH representation, as the immutable Parcel internally mutes. This fix will just expose the ListIter if the Parcel was created with .Parcel, and thereby create a WHICH that indicates the inherit mutability of a Parcel that is created that way. Suggestions for a better solution are welcome. |
11:04 | |
lizmat | $ 6 'my @a=^3; say @a.Parcel.WHICH' | ||
Parcel|(ListIter|140616894388608) | |||
11:07
salv0 joined
11:08
kaleem left
|
|||
moritz | why doens't the assignment flatten out the list? | 11:14 | |
oh, .Parcel | |||
moritz blind | |||
11:30
nuggs joined
|
|||
nuggs | I believe I said a goof here yesterday when I cried about rakudo on ARM. I had built MoarVM with optimizations, which was segfaulting in 'optimize_bb'. Now, having built MoarVM with debug enabled and optimizations disabled, I've built an nqp atop it (andd passed tests), and built a rakudo atop that (and passed tests, currently running spectests). | 11:32 | |
carlin | what's the DateTime incantation to say: give me the second Sunday in March ? | ||
nuggs | My apologies for the bad report. | ||
Which leads me to a question, is there a buildbot farm or a somesuch for the Perl 6 compiler chain that I could attatch an ARM build to? | 11:34 | ||
11:41
chenryn left
|
|||
dalek | ast: 04d38c8 | Carlin++ | S32-temporal/local.t: set $*TZ rather than requiring specific OS setup These tests will now run everywhere |
11:54 | |
ggoebel1111112 | nuggs++ | 11:55 | |
nine++ | 11:56 | ||
hoelzro_ | morning #perl6 | ||
colomon | \o | 11:57 | |
lizmat | nuggs: [Coke] runs the closest thing we have to a buildfarm | 11:58 | |
nuggs | lizmat: groovy. You know if ARM is already in the mix? (I'll try to ping him later) | 12:01 | |
lizmat | pretty sure ARM isn't | ||
nuggs | Cool. I'll try to sync up w/ Coke to see if I can provide some cycles there. Thanks. | 12:03 | |
12:04
PerlJam left,
PerlJam joined,
kaare_ left
12:07
brrt joined,
nuggs left
12:08
nuggs_ joined
|
|||
lizmat | commute to Amsterdam.PM meeting& | 12:10 | |
12:10
lizmat left
|
|||
hoelzro_ | is =pod considered special? or should it be considered as an abbreviated form of =for pod? | 12:12 | |
I've been looking over S26, but that's not helping much =/ | |||
12:13
hoelzro_ is now known as hoelzro
12:18
jerrycheung joined,
nuggs_ is now known as nuggs
12:26
mr-foobar left,
firefish5000 joined
12:27
mr-foobar joined
|
|||
nuggs | make spectest on 32 bit arm, moar backend built without optimizations: | 12:29 | |
tadzik | hoelzro: I don't think =pod is anything special | ||
nuggs | whups, crappy junky paste, here's a gist: gist.github.com/anonymous/1922aa1acd6fdfa6a02c | ||
hoelzro | tadzik: so would you say EVAL "=pod\nsay 1;" should or should not print something? | 12:30 | |
nwc10 | nuggs: t/spec/integration/99problems-51-to-60.t is failing with ASAN on x86_64 | ||
so I'd hope that that would pass with something like | |||
MVM_SPESH_DISABLE=1 ./perl6-m t/spec/integration/99problems-51-to-60.t | |||
tadzik | hoelzro: I don't see why it should | ||
nwc10 | if so, it's "known cross platform problem" | ||
hoelzro | tadzik: well, abbreviated POD blocks are supposed to continue to the next blank line, right? | 12:31 | |
tadzik | hoelzro: yes | 12:32 | |
hoelzro | so wouldn't =pod be the same as =for pod? | ||
tadzik | should | ||
12:33
_thou joined
|
|||
hoelzro | so shouldn't =pod stop at that first newline, and thus the say would not be inside of it? | 12:33 | |
tadzik | ooh | ||
I see it now | |||
yes, it should say "1" | |||
imoh | |||
12:34
nuggs left
|
|||
hoelzro | ok, then I'll update the ticket with that insight =) | 12:34 | |
thanks for sanity checking =) | |||
12:36
nuggs joined
|
|||
PerlJam | good * #perl6 | 12:36 | |
nuggs | nwc10: groovy, MVM_SPESH_DISABLE=1 did the trick there. | 12:37 | |
hoelzro | o/ PerlJam | ||
oh, you know what? that's *not* a blank line | |||
"=pod\n\nsay 666" would be | |||
hoelzro is crazy | |||
commute & | |||
nwc10 | nuggs: what are you building on? | ||
12:39
raiph joined
|
|||
nuggs | nwc10: an Ubuntu 14.04 chroot on a Samsung chromebook 2 (ocatcore thingy-dingy) | 12:39 | |
nwc10 | ah OK | 12:43 | |
I built it back in May on a Rasberry Pi | 12:44 | ||
not that fast | |||
nuggs | *octacore, even. Heh, I bet that Pi build took a minute. | 12:49 | |
12:49
mr-foobar left
|
|||
carlin | NativeCall is amazing, can't say that enough | 12:51 | |
Perl 6 makes C fun | 12:53 | ||
[Coke] | lizmat++ # avoiding failure on r-p | 12:54 | |
dalek | ecs: 9720a17 | (Stéphane Payrard)++ | S99-glossary.pod: S99: entries related to Unicode, whitespace, comments |
||
12:57
anaeem1 left
|
|||
[Coke] | Any Perl 6 L</token>s may or must be separated by tokens. | 13:02 | |
from that commit. I think that whitespace node could a minor cleanup, otherwise looks good. | |||
cognome | WIP | 13:04 | |
13:10
korteland joined
13:13
nuggs left
13:14
chenryn joined
|
|||
dalek | ecs: 10d91b4 | (Stéphane Payrard)++ | S99-glossary.pod: S99: boolean context |
13:21 | |
[Coke] | cognome: tokens must be separated by tokens? | 13:22 | |
cognome | yea, whitespaces are very special. Not sure if the spec call them tokens | 13:23 | |
PerlJam | Why mention tokens at all if they 'may or must'? | 13:24 | |
(i.e. it doesn't seem to relate directly to whitespace unless there are things that must be separated by whitespace) | 13:25 | ||
13:25
kaare_ joined
|
|||
dalek | ecs: 5c16468 | (Stéphane Payrard)++ | S99-glossary.pod: S99: boolean related entries, attempt at fix whitespace |
13:27 | |
ecs: e517b60 | duff++ | S99-glossary.pod: expand on whitespace a little |
13:29 | ||
PerlJam | How about that definition? | 13:30 | |
cognome | I love it | ||
13:31
chenryn left
13:34
guru joined,
guru is now known as Guest12712,
Guest12712 is now known as ajr_,
anaeem1_ joined,
anaeem1_ left
13:35
anaeem1_ joined
|
|||
PerlJam | Is there some unicode character property for "whitespace"? | 13:36 | |
moritz | PerlJam: "Separator", short "Z" | 13:37 | |
(I think) | |||
13:40
ajr_ left,
telex left,
chenryn joined
|
|||
dalek | kudo-star-daily: bb4abf4 | coke++ | log/ (14 files): today (automated commit) |
13:40 | |
13:41
ajr joined,
ajr is now known as Guest91085,
Guest91085 is now known as ajr_
13:42
telex joined
13:47
SamuraiJack left
13:58
kaleem joined
14:00
jerrycheung left
14:13
jerrycheung joined
14:14
brrt left
|
|||
[Coke] | rt.perl.org/Ticket/Display.html?id=72844 is closable now, yes? | 14:16 | |
PerlJam | p6: say() for ^3; | 14:20 | |
p6: say for ^3; | 14:21 | ||
camelia | rakudo-{parrot,jvm,moar} 69d705, niecza v24-109-g48a8de3: OUTPUT«» | ||
14:21
ajr_ left
|
|||
camelia | niecza v24-109-g48a8de3: OUTPUT«===SORRY!===Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/tmpfile line 1:------> say⏏ for ^3;Unhandled exception: Check f…» | 14:21 | |
..rakudo-{parrot,jvm,moar} 69d705: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfileUnsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argumentat /tmp/tmpfile:1------> say ⏏for ^3;…» | |||
PerlJam | [Coke]: looks like it to me (Assuming there are appropriate tests in roast) | ||
14:22
guru joined,
guru left
14:23
raiph left
14:24
guru joined,
raiph joined,
guru is now known as Guest20565
|
|||
PerlJam | huh ... looks like there's an extra space between the semicolon and "in Perl 6" in Rakudo-land as compared with niecza | 14:24 | |
14:28
anaeem1_ left,
Guest20565 left
14:29
brrt joined,
korteland left
14:31
firefish5000 left
|
|||
jdv79 | so here's a probably irritating question but its vaguely important to me - what would it take to get perl6 compilation to not use so much memory? | 14:35 | |
14:35
jerrycheung left
|
|||
jdv79 | the mast stage is where my box ran out of mem | 14:36 | |
14:37
anaeem1_ joined
|
|||
hoelzro | does func; and func(); actually parse differently? | 14:37 | |
dalek | ecs: ca2464c | (Stéphane Payrard)++ | S99-glossary.pod: S99: more entries |
||
TimToady | jdv79: it would take separate compilation of the pieces of the setting, probably | 14:38 | |
hoelzro: you'll have to define your threshold for "differently" | 14:39 | ||
PerlJam | hoelzro: for the case where "func" is really "say", the answer is clearly "yes" ;) | 14:40 | |
Woodi | hallo perlers :) | 14:41 | |
dalek | kudo/nom: 83a5f52 | duff++ | src/Perl6/Grammar.nqp: Remove extra spaces worryobs() and sorryobs() throw X::Obsolete which already puts a space before $.when in the message. |
||
jnthn | jdv79: "Lots of little things" | ||
jdv79: Which is an equally annoying answe rat least | 14:42 | ||
*answer | |||
jdv79: The way we generate bytecode likely will change at some point to something that doens't build a huge tree and then turn it into binary stuff, to instead be something more direct/incremental. | 14:43 | ||
hoelzro: In terms of "grammar rule used to parse it", yes, certainly differen.t | 14:44 | ||
brrt | jnthn: what do you mean? :-) | ||
yoleaux | 1 Sep 2014 16:29Z <timotimo> brrt: if we could see "beginning of inlined frame for function $foobar" in the jit log, that'd be interesting | ||
1 Sep 2014 16:30Z <timotimo> brrt: for example, i see !cursor_pass only jitted like 50% of the time, spesh'd the other 50%, but in the jit log i can only see successful jittings of that frame, so it's probably in-lined versions of that otherwise? | |||
1 Sep 2014 19:46Z <japhb_> brrt: Sorry I missed you, please ping me again when you're back | |||
14:44
[Sno] left
|
|||
brrt | timotimo i see what you mean | 14:45 | |
.tell japhb_ i'm back (for 45 minutes or so) | |||
yoleaux | brrt: I'll pass your message to japhb_. | ||
jnthn | brrt: I think we'll end up with an API more like the ASM code-gen lib on the JVM | ||
brrt | hmmm | ||
as in, moarvm bytecode? | 14:46 | ||
interesting | |||
jnthn | Yes | ||
I don't have a design yet, and it's not high priority | |||
brrt | hmm | ||
wingolog has yet another entry on the use of luajit-as-a-trace-compiler for packet filtering | 14:47 | ||
Woodi | I sometimes feel "forced" in Perl to use hashes instead of standard struct/record-like objects... Parcels could be such struct-like thing. hovewer specced Parcels looks a bit array-ish, maybe like degenerate Capture... | ||
brrt | or in other words, OMG THERE IS SO MUCH WORK STILL TO DO | ||
TimToady | Woodi: you're wanting classes, not parcels | 14:48 | |
PerlJam | heh ... "standard" | ||
TimToady | and we already support native classes to some extent | ||
jnthn | *sigh* why on earth does my SSH connectkion keep getting protocol errors... :/ | 14:49 | |
hoelzro | PerlJam: yes =) | 14:50 | |
TimToady: what PerlJam said | |||
so say is special? | |||
Woodi | TimToady: but class could be overkill sometimes... and discusion at perlcabal.org/syn/S02.html#Parcels,...d_Captures could be simplified just by having record/struct type | ||
parcels/captures/signatures... | |||
TimToady | m: say (1,(2,3),4).elems | 14:52 | |
camelia | rakudo-moar 69d705: OUTPUT«3» | ||
jnthn | hoelzro: say parses differently to say(), but I'd not say that "say" is special in any way...what makes you ask that? | 14:54 | |
TimToady | it's special in the sense that P5 programmers will expect bare say to default to $_ | 14:55 | |
but other than that, not, it's just a listop/function | |||
dalek | ast: 6f52902 | TimToady++ | integration/advent2013-day10.t: :kv no longer returns parcels of (k,v) |
14:58 | |
hoelzro | jnthn: well, PerlJam's experimentation with say vs say() above | 15:00 | |
jnthn: does arbitrary-func parse differently from arbitrary-func(), then? | |||
I mean, is the resulting parse tree different? | |||
brrt | jnthn: great firewall still? | ||
jnthn | hoelzro: Parse tree, yes. QAST tree, no, afaik. | 15:02 | |
brrt: Well, it's only happened since I started using this connection to tunnel stuff over. So maybe it's an attempt to sabotage it. | |||
15:03
chenryn left
|
|||
brrt | ugly stuff | 15:03 | |
jnthn treats it as a great advance in internet connectivity, to go along with the last copule of day's great advancs in democracy in Hong Kong :P | 15:04 | ||
TimToady | hoelzro, jnthn: actually the parse is slightly different these days, insofar as foo() allows semicolons in the argument list, while foo; doesn't | 15:05 | |
jnthn | TimToady: Oh, hm. :) | ||
brrt | uh, i have no news at all from Hong Kong here | 15:06 | |
jnthn | the listop form kinda can't, no? :) | ||
brrt | dutch media has totally ignored anything that might have changed | ||
jnthn | brrt: There was a decision that basically means that there are elections in Hong Kong, but Beijing gets to pick who is elligible to stand for election. | 15:07 | |
15:08
anaeem1_ left
|
|||
jnthn | brrt: It's not a *surprising* ruling, though understandably not one everyone is happy with. | 15:09 | |
brrt | ... i can imagine | 15:10 | |
that really puts the western political landscape into perspective | 15:11 | ||
jnthn | (the "great advance to democracy" comment was actually a quote from the morning news paper :)) | ||
15:12
firefish5000 joined,
pdcawley left
|
|||
[Coke] | m: my $a = class { has $a; }; say $a.new(a => 1).perl; | 15:15 | |
15:15
chenryn joined
|
|||
camelia | rakudo-moar 69d705: OUTPUT«<anon>.new()» | 15:15 | |
[Coke] | moritz, TimToady: what is the expected output of the last bit of code on rt.perl.org/Ticket/Display.html?id=77474 ? | 15:17 | |
FYI, the current output is 1 0 | 15:18 | ||
TimToady | rosettacode.org/wiki/Hamming_numbers | 15:19 | |
but we need the list refactor before that has a hope of working | 15:20 | ||
[Coke] | so, "1 2 3 4 5 6 8 9 10 12 15 16 18 20 24 25 27 30 32 36" is the expected output? | ||
TimToady | yes, if Perl 6 were as good as Haskell at recursive definitions... | 15:21 | |
[Coke] | added [LIST] to that ticket to indicate it's blocked on the list refactor. Feel free to do the same to other similarly blocked tickets. | 15:23 | |
masak: RT #64766 "Possibly ..." | |||
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=64766 | ||
TimToady | I suspect we need to be able to block a gather/take on more than just a take, but also when needed information is not yet generated | 15:24 | |
so practically speaking it might depend on some transformation that runs some of our lazy code with push semantics rather than just pull | 15:25 | ||
but maybe not | 15:27 | ||
jnthn | TimToady: Is there much in the way of a concrete plan for the list refactor? | ||
[Coke] | (just another ticket with a suspiciously vague title) | ||
TimToady | jnthn: lock you and me and pmichaud in the same room for a month maybe? :) | 15:29 | |
I'm feeling my way into it from various directions | |||
jnthn | That sounds effective if it's feasible :P | ||
dalek | rl6-roast-data: 301112e | coke++ | / (6 files): today (automated commit) |
15:30 | |
TimToady | many of my recent changes have been pushing at the list code, from gather/take and the various listop optimizations to the recent .plan and parcel stuff | 15:31 | |
[Coke] | looks like that fix for parrot didn't fix the broken tests. | ||
TimToady | but I still don't understand the reify/REIFY dance | 15:32 | |
jnthn | Yes, I've noticed you've been digging into the code... | ||
TimToady | there's a lot of 3) ??? in there | ||
15:32
zakharyas left
|
|||
jnthn | I think I've sorta learned how it works 3 times by now. Maybe that's a properly of things involving laziness. :) | 15:33 | |
*property | |||
15:33
brrt left
|
|||
TimToady | what I want to get to eventually is that all this dataflow policy is detached from the actual dataflow, so the policy ends up generating functions that have optimized policies baked in, and are just called directly to get the next value or values | 15:34 | |
currently gimme and reify intermix policy and dataflow | |||
so in the absence of heroic speshing, nothing can be optimized | 15:35 | ||
jnthn | The present situation is certainly hard to spesh | ||
It'd be nice if sink-context for loops had an API to iterators where they could make a call to a (small, inlinable) method on an iterator to get the next available value in the common case. | 15:36 | ||
TimToady | an analog is the current slicing, where a great deal of decision making could be done once instead of every time you slice | ||
jnthn | That way, the loop body could be flattened into the surroundings, as well as logic to access the next value in the common cases. | 15:37 | |
TimToady | yes, that's the basic idea | ||
jnthn | C# gets to have it that way somewhere between its 50 passes. :) | 15:38 | |
And the results are pretty speedy. At least, there's not really a "don't use enumerators" meme about. :) | |||
TimToady | policy channels and higher-order functions that can often be known at compile time | ||
jnthn | OK, sonds good. | 15:40 | |
TimToady | or if not known at compile time, at least providing simple run-time functions that can spesh/jit | ||
jnthn | *sounds | ||
15:40
fhelmberger joined
|
|||
TimToady has the skill of sounding good even when he's bad. :) | 15:43 | ||
darn, someone drank my first cup of coffee, gotta go get smoar | 15:45 | ||
PerlJam starts working on a TPF grant to pay for having jnthn, TimToady, and pmichaud kidnapped and locked in a room. | |||
FROGGS | TimToady: have you seen this? | 15:47 | |
m: class Foo { method at_pos($p) { Proxy.new: FETCH => method () { say $p }, STORE => -> | { } } }; my $a = Foo.new; say $a[0,1,2] | |||
camelia | rakudo-moar 83a5f5: OUTPUT«000000011111112222222True True True» | ||
timotimo | is probably less expensive to not kidnap them | ||
FROGGS | m: class Foo { method at_pos($p) { Proxy.new: FETCH => method () { say $p }, STORE => -> | { } } }; my $a = Foo.new; say $a[0..2] | ||
camelia | rakudo-moar 83a5f5: OUTPUT«0000000True» | ||
15:47
mr-foobar joined
|
|||
FROGGS | TimToady: I don't see offhand what need to be fixed... perhaps sub POSITIONS? | 15:47 | |
moritz | FROGGS: method elems? | 15:48 | |
TimToady | slicing ranges requires a working .gimme, and I suspect proxies are missing that | ||
15:48
treehug88 joined
|
|||
FROGGS | moritz: the changed .elems might have introduced the problem, aye | 15:48 | |
15:48
fhelmberger left
|
|||
moritz | FROGGS: I wanted to say that maybe slicing calls .elems (at least in some situations) | 15:49 | |
TimToady | on range slicing we never call .elems because the base list might be too long to calculate it | 15:50 | |
it calls .gimme($_+1) | |||
FROGGS | here github.com/rakudo/rakudo/blob/nom/...lice.pm#L6 | 15:51 | |
TimToady | so it's perhaps not tranforming to a proper list with .list | ||
FROGGS | so we put the pos ~~ Range case in its own branch an do something fancy? | ||
15:51
donaldh left
|
|||
TimToady | you can't call .elems there | 15:51 | |
believe me, i tried | |||
FROGGS | or... I mean... we could check that SELF is a proxy perhaps | 15:52 | |
TimToady | .roll(*)[^100] will never return if you doo | ||
FROGGS | ohh, no, the at_pos returned a proxy, SELF isnt one | ||
TimToady | the current loop assumes that .gimme will return a true value | 15:53 | |
maybe that's not true somehow | |||
.oO(current loop vs RS-232, ancient history...) |
15:54 | ||
FROGGS | TimToady: .gimme($_ + 1) returns 1 for $_ being 1 | ||
so it lasts | 15:55 | ||
RS-232? O.o | |||
TimToady | yeah, that newfangled stuff | 15:56 | |
the ttys like current loop better | |||
m: say Bool.roll(*).infinite | 15:59 | ||
camelia | rakudo-moar 83a5f5: OUTPUT«Nil» | ||
TimToady | another thing that is difficult in the current list model is passing knowledge of the infinite backwards | 16:00 | |
a parcel containing an infinite term does not automatically become infinite, for instance, and doing so appears to be difficult in the current model | |||
dalek | ecs: 197e481 | (Stéphane Payrard)++ | S99-glossary.pod: S99: more entries, typos, reordering |
16:02 | |
TimToady | purity also needs to be propagated along with infinity; infinity says we must do things in batches, while purity says we may do things in batches without much worry about side effects, other than using up too many resource conjecturally | 16:03 | |
(by "must do things in batches" I do not mean that the batches have to be larger than 1, but that they must be smaller than infinity) | 16:04 | ||
PerlJam suddenly gets the feeling we're reinventing lisp | |||
TimToady | WHERE HAVE YOU BEEN!?! | ||
but we're really not | |||
in the sense that Lisp made some bad mistakes, and we're trying to avoid them | 16:05 | ||
PerlJam | sure ... I just don't see that right now :) | ||
TimToady | linked lists are a terribly way to approach parallel processing | ||
*ble | 16:06 | ||
dalek | ecs: b6658f6 | (Stéphane Payrard)++ | S99-glossary.pod: S99: correct many malformed links |
||
TimToady | the FP community is still trying to recover from that | ||
and Lisp itself was pretty cavalier about the subject of purity, compared to some of its offspring | 16:07 | ||
especially Haskell | 16:08 | ||
we probably need a way to mark our gathers as pure or impure, for instance | 16:09 | ||
16:10
domidumont left
|
|||
TimToady | though we can probably detect that some gathers have no external side effects, so are effectively pure from a batching standpoint | 16:10 | |
FROGGS | TimToady: I'm spectesting that now: gist.github.com/FROGGS/402a9735c371aa43d157 | 16:11 | |
the nativecall test passes and also Bool.roll(*)[^100] | 16:12 | ||
16:12
rindolf joined
|
|||
TimToady | you've probably broken autotruncation though | 16:12 | |
FROGGS | yeah, spectests got stuck already >.< | ||
kurahaupo | TimToady: when you say linked lists are a terrible way to approach to parallelism, which ways? Obviously the O(n) access is slow, or is there some other aspect to consider | 16:15 | |
16:15
[Sno] joined
16:16
fhelmberger joined
|
|||
TimToady | kurahaupo: well, xahlee.info/comp/Guy_Steele_paralle...uting.html for instance | 16:17 | |
moritz | kurahaupo: basically, trees are much better suited for divide-and-conquer, and you can parallelize the divided tasks | 16:18 | |
16:19
fhelmberger left
|
|||
FROGGS | dinner & | 16:20 | |
kurahaupo | ok, I'll have a read, thanks | ||
TimToady | historically, most FP languages have enforce a head/tail view of divide/conquer, and that doesn't scale | ||
*enforced | |||
FROGGS | jnthn: when you have some brane cells left, can you take a look at the last line of github.com/jnthn/zavolaj/issues/11 ? | 16:21 | |
TimToady | well, strongly defaulted to, perhaps not enforced | ||
these languages are turing complete, after all | |||
16:21
chenryn left
|
|||
TimToady | kurahaupo: so P6 has lists, but they are not based on => cells | 16:22 | |
of course, in all fairness, we should point out that Guy Steele's new language, Fortress, turned out to be a failure, at least as far as corporate sponsorship goes | 16:23 | ||
fortunately, that's not the only way for a computer language to succeed :) | |||
16:26
dayangkun left
16:28
rindolf left,
grondilu joined
|
|||
TimToady | anyway, that is why good Perl 6 style avoids accumulators, but uses things like reductions and hypers instead | 16:28 | |
16:28
rindolf joined
|
|||
grondilu | m: class Foo { method at_pos($n) { max(0, $n) } }; say Foo.new[-1]; | 16:29 | |
camelia | rakudo-moar 83a5f5: OUTPUT«Unsupported use of [-1] subscript to access from end of Foo; in Perl 6 please use [*-1] in method gist at src/gen/m-CORE.setting:13294 in sub say at src/gen/m-CORE.setting:14249 in block <unit> at /tmp/Xje1UOBXMS:1» | ||
grondilu | ^this is a bit annoying. | ||
TimToady | and why we need to extend hyper semantics from operators to list functions like map | ||
kurahaupo | TimToady: ok, so the wisdom on automatic parallelism hasn't really changed much in 20 years, just been fine-tuned a bit. I just wanted to make sure I wasn't too out of date. | 16:30 | |
grondilu suggest the 'unsupported use of [-1]' error only applies to classes in the core. | 16:31 | ||
TimToady | as usual, the devil is in the details | ||
TimToady suggests not violating the [] contract, but using {} instead, as S09 suggests | 16:32 | ||
P5 got into bad trouble trying to make [] origins other than 0 | |||
grondilu looks in S09 | 16:33 | ||
16:33
virtualsue left
|
|||
TimToady | that part of S09 is NYI, of course :) | 16:33 | |
grondilu | haha | 16:34 | |
oh sorry I thought you meant "not written yet" | |||
kurahaupo wonders what hyper-map would do | 16:37 | ||
TimToady | not care what order the mapping is done, as long as the order of results is conserved | 16:38 | |
if you don't care about the latter, it's called "race" instead of "hyper" | |||
kurahaupo | oh, just ordinary functional map then | 16:39 | |
TimToady | yes, fsdo functional not including various funtional programming languages :) | ||
in the sense that they enforce order despite the supposed purity of the function | 16:40 | ||
16:40
rindolf left
16:41
shlomif joined
|
|||
kurahaupo | hypermap is easier to implement if the return value of the function is of fixed arity | 16:41 | |
16:41
shlomif is now known as rindolf
|
|||
TimToady | well, sure | 16:41 | |
except, in p6think, it's always fixed arity of 1 | |||
since map returns parcels | 16:42 | ||
and a .flat is needed somewhere if you mean it | |||
grondilu | m: class Foo { method postcircumfix:<{ }>($n) { max(0, $n) } }; say Foo.new{-1}; # this is OK, right? | ||
camelia | rakudo-moar 83a5f5: OUTPUT«postcircumfix:<{ }> not defined for type Foo in method gist at src/gen/m-CORE.setting:13294 in sub say at src/gen/m-CORE.setting:14249 in block <unit> at /tmp/EDbHkwYCne:1» | ||
TimToady | m: say (1..3).map({ 'x' xx $_}).perl | 16:43 | |
camelia | rakudo-moar 83a5f5: OUTPUT«(("x",), ("x", "x"), ("x", "x", "x")).list» | ||
kurahaupo needs to go reread the synopses; stuck in P5-land for $DAYJOB | |||
TimToady | m: say (1..3).map({ 'x' xx $_}).elems | ||
camelia | rakudo-moar 83a5f5: OUTPUT«3» | ||
TimToady | see, exactly 3 results (as of last night :) | ||
so it will be perfectly natural to implement hyper-map to return an array of parcels by default | 16:44 | ||
and each thread can just plonk its results into a known position | 16:45 | ||
kurahaupo | TimToady: is there a reason not to have map do "random order" by default? | 16:46 | |
TimToady | because we aren't interested in forcing people to do FP | ||
we want to integrate well with non-FP paradigms as well | 16:47 | ||
so maps can be stateful by default | |||
when it can be proven that a map is not stateful or side-effective, it can be automatically hypered, but we're not going to assume it from the start, unless you call hyper map | 16:49 | ||
kurahaupo | I'd just like to see Huffman favour FP | ||
16:49
domidumont joined
|
|||
TimToady | well, but lazy is also FP :) | 16:50 | |
cognome | { ([\*] 1..*)[*-1] }(20) # should the 1..* computed lazily here? | ||
TimToady | and we assume that, so we can't also assume hyper, which is kind of the opposite | ||
kurahaupo | oh, right | ||
erm, hang | 16:51 | ||
on | |||
TimToady | lazy -> batchy -> eager -> hyper -> race | ||
kurahaupo | not necessarily | ||
TimToady | one could, of course, have a pragma to default it the other way | ||
kurahaupo | lazy at the top level can still chose sequenced/race/all later | 16:52 | |
TimToady | sure, and batching lazy things where we can is considered cache friendly | ||
that's why we're talking about a big list refactor | |||
but this really needs to be negotiated between supplies and demands, not enforced one way or another in the lexical scope | 16:53 | ||
16:54
dakkar left
|
|||
TimToady | in fact, batchy probably wants to be subdivided into constant batches and scaling batches | 16:55 | |
the latter working like TCP slow-start | |||
currently Range objects batch up to about a 1000 values, iirc, but that's wasteful if you're initializing a 10 element array | 16:56 | ||
so an implementation that produces a larger batch each time could scale nicely | |||
both up and down | |||
timotimo is idly wondering if we should have an nqp:: op that initializes a list with values from $start to $end increasing by $step or something like that | 16:57 | ||
TimToady | well, you can go further and constant fold a range, if it's not to memory intensive; I hacked this into P5 at one point | 16:58 | |
*too | |||
PerlJam | In a more magical world lists wouldn't need to reify all of the elements either, just the ones you want ;) | 16:59 | |
timotimo | i *think* we already create the Range instance at optimize-time | ||
which doesn't vivify the list yet | |||
TimToady | well, we're lazy by default :) | ||
timotimo | right | ||
TimToady | but that should just be the default default, in the absence of other information | ||
timotimo | what does "constant folding a range" mean? | ||
TimToady | we're just not very good at distributing the other information yet | 17:00 | |
timotimo | aye | ||
TimToady | 10..20 is a constant, it just happens to contain 11 subvalues | ||
timotimo | mhm | ||
TimToady | you can lay those out in memory at compile time if you like, and not even need an nqp op | 17:01 | |
timotimo | well, a $known_to_be_range[$a] can just be $a.Int + $known_to_be_range.start if $a < $known_to_be_range.end | ||
and having a for loop over a range already turns into a while loop | |||
grondilu | m: say (i**2).WHAT # is there a particular reason not to automatically narrow when possible? | 17:02 | |
TimToady | well, the optimization does not make as much sense these days, when caches are much faster than memory | ||
camelia | rakudo-moar 83a5f5: OUTPUT«(Complex)» | ||
TimToady | otoh, sequential access to memory is usually pretty fast too | ||
what with prefetching | |||
m: say (i*i).WHAT | 17:03 | ||
camelia | rakudo-moar 83a5f5: OUTPUT«(Complex)» | ||
TimToady | well, Complex are intentionally a bit sticky, since otherwise your sqrt will misbehave | ||
m: say sqrt(-(i*i)) | 17:04 | ||
camelia | rakudo-moar 83a5f5: OUTPUT«1+-0i» | ||
TimToady | m: say sqrt(i*i) | ||
camelia | rakudo-moar 83a5f5: OUTPUT«6.12323399573677e-17+1i» | ||
TimToady | if you narrow that, it fails | ||
m: say sqrt (i*i).narrow | |||
camelia | rakudo-moar 83a5f5: OUTPUT«NaN» | ||
17:05
jack_rabbit joined
|
|||
itz_ | m: say $*DISTRO | 17:05 | |
camelia | rakudo-moar 83a5f5: OUTPUT«linux (3.2.0.37.generic)» | ||
itz_ | m: say $*KERNEL | ||
camelia | rakudo-moar 83a5f5: OUTPUT«linux (30.Ubuntu.SMP.Wed.May.1.16.35.23.UTC.2013)» | ||
itz_ | why does the distro name appear in kernel and noit in distro? | ||
17:06
rindolf left
|
|||
grondilu | well, it could be possible to define multi sqrt(Real $x where $x < 0) returns Complex {...} | 17:06 | |
TimToady | it was discussed whether sqrt of a negative number should always just produce a complex, but not everyone wants to suddemly be dealing with the complex plane | ||
grondilu | as opposed to multi sqrt(Real $x) returns Real | ||
17:06
rindolf joined
|
|||
grondilu | ok | 17:06 | |
TimToady | there's a lot of tradition for that decision as well | ||
so we made Complex a bit stickier instead | 17:07 | ||
rather like BigRats are sticky | |||
grondilu | that's fine. I can understand doing otherwise would hurt a principle of least surprise or something like that, with complicated types suddenly showing up. | 17:08 | |
17:11
gfldex joined,
anaeem1_ joined
17:12
kaleem left
17:19
rindolf left,
rindolf joined
|
|||
itz_ | hmmm maybe I should try and compile on Debian GNU/kFreeBSD to check KERNEL v DISTRO :> | 17:24 | |
[Coke] | lots of failing tests in nqp's prove -v t/docs | 17:29 | |
feather.perl6.nl/~coke/ops_need_docs.out | 17:31 | ||
timotimo: ^^ there's another boring job. :) | 17:32 | ||
17:33
muraiki_ joined
17:34
muraiki_ left,
muraiki joined,
BizarreCake joined
|
|||
cognome | [coke] why a documented opcode would fail? | 17:35 | |
FROGGS | [Coke]: not ok 1258 - documented op '' exists in moar | ||
grondilu | m: say (my %h{Int} of Real).WHAT; # how can I give a name to this type? | 17:36 | |
camelia | rakudo-moar 83a5f5: OUTPUT«(Hash[Any,Int][Real])» | ||
grondilu | something like subset Vector of ??? | ||
FROGGS | cognome: what line do you mean? | ||
cognome | not ok 5 - Opcode 'ctxouterskipthunks' (parrot;jvm;moar) is documented | ||
[Coke] | hoelzro: rt.perl.org/Ticket/Display.html?id=71812 | 17:37 | |
look at the tags. | |||
grondilu | (subset Vector of Hash[Any,Int][Real] does not work) | ||
[Coke] | FROGGS: that is slightly less LHF. no idea why that's finding an empty opcode name | ||
cognome: that opcode is not documented, so the test fails. | 17:38 | ||
docs are in nqp's docs/ops.markdown | |||
17:40
rindolf left
|
|||
cognome | [Coke] where is the script that generates these errors | 17:40 | |
17:41
rindolf joined
|
|||
[Coke] | t/docs/opcodes.t | 17:42 | |
there's another one that checks to see if the opcodes are tested. | |||
dalek | ecs: af7df45 | (Kamil Kułaga)++ | S26-documentation.pod: --doc=html s//html/HTML |
||
ecs: 25bbfb5 | (Tobias Leich)++ | S26-documentation.pod: Merge pull request #68 from teodozjan/master --doc=html |
|||
hoelzro | [Coke]: thank you sir =) | 17:44 | |
cognome | [coke] I mean in each repository? | ||
* which | |||
FROGGS | cognome: nqp | 17:45 | |
17:46
kjs_ left
17:48
Ven joined
|
|||
[Coke] | cognome: github.com/perl6/nqp/tree/master/t/docs | 17:54 | |
Ven | well met, #perl6 | 17:55 | |
timotimo | hmm | 17:56 | |
hoelzro | o/ Ven | 18:02 | |
18:02
huf left
|
|||
cognome | \o Ven-erable | 18:02 | |
Ven | oh please. | ||
TimToady | it is the ending of one age, and the beginning of another... | 18:03 | |
18:03
huf joined
|
|||
TimToady | but all I know is my toes are hairy | 18:04 | |
timotimo | TimToeHairy? | ||
Ven | "Free is a lie" is an incredible talk by Aral Balkan | ||
timotimo++ # eh | |||
TimToady | well, at least lies are free :) | ||
well, some of 'em... | |||
.oO("Those words fall too easily from your lips.") |
18:05 | ||
timotimo | "free() is a lie"? | ||
18:06
kurahaupo left
|
|||
Ven | timotimo: yes. please use MVM_free instead | 18:06 | |
TimToady | "MVM_Free!" —MVM_Pseudolus | 18:07 | |
hoelzro | MVM_free your mind | ||
TimToady | MVM_free Beer! | 18:08 | |
18:09
rindolf left,
rindolf joined
18:12
molaf__ joined
|
|||
hoelzro | should it be possible to have an empty table in POD? | 18:12 | |
ex. EVAL "=for table\n" | |||
PerlJam | er, that would have to be "=for table\n\n" wouldn't it? | 18:14 | |
(and IMHO, yes, it should be possible) | |||
hoelzro | alright, just sanity checking =) | 18:15 | |
18:15
molaf_ left,
spider-mario left,
kjs_ joined
|
|||
PerlJam | Maybe as a lint-check or with warnings turned up a little, an empty pod directive should carp about it though. | 18:16 | |
er, perl should carp about it. | 18:17 | ||
18:19
BizarreCake left
|
|||
nine | PerlJam: think about the use case of quickly editing some code, probably copy&pasting and such. Being too strict about senseless constructs can be annoying. | 18:19 | |
18:20
raiph left
|
|||
PerlJam | yeah, I'm all about Postel's Law | 18:21 | |
18:23
rindolf left
18:24
rindolf joined
|
|||
nine | Is there a way to force a GC run? | 18:32 | |
18:34
Ven left,
BizarreCake joined
|
|||
FROGGS | nine: programatically? | 18:37 | |
or just for testing? | |||
18:37
nine left
18:38
nine joined
|
|||
nine | Is there a way to force a GC run? | 18:38 | |
PerlJam | Someone should write a module to expose GC to the Perl 6 programmer. | ||
nine: FROGGS was asking if you wanted this "programmatically" or "just for testing"? | 18:39 | ||
nine | For programmatic testing ;) | 18:40 | |
18:40
raiph joined
|
|||
nine | I want to write tests that check if Perl 6 objects referenced from Perl 5 objects survive a GC run. | 18:40 | |
FROGGS | nine: look at MoarVM/src/gc/collect.h | ||
nine: you can reduce the MVM_NURSERY_SIZE to about 600, then it will collect very often | 18:41 | ||
but do not try to build nqp or rakudo this way, just do it for your test, and undo it afterwards | |||
18:42
lizmat joined
|
|||
cognome | .u ⦄ | 18:43 | |
yoleaux | U+2984 RIGHT WHITE CURLY BRACKET [Pe] (⦄) | ||
cognome | where is the code for yoleaux .u? | 18:45 | |
18:47
virtualsue joined
|
|||
[Coke] guesses github.com/dpk/yoleaux | 18:47 | ||
cognome | Indeed it answers to the requests described in dpk.io/yoleaux | 18:49 | |
.mangle Larry owns the colon | 18:50 | ||
yoleaux | cognome: Sorry, that command (.mangle) crashed. | ||
18:50
virtualsue left
18:51
brrt joined
|
|||
brrt | \o | 18:51 | |
18:51
kjs_ left
18:55
darutoko left
18:56
spider-mario joined,
spider-mario left
18:59
spider-mario joined
19:03
sqirrel joined
|
|||
nine | FROGGS: I could call MVM_gc_collect using NativeCall ;) But then I'd have to get my hands on the MVMThreadContext* somehow and that doesn't seem to be exposed either... | 19:09 | |
19:10
telex left
19:12
telex joined
19:14
BizarreCake left
|
|||
brrt would advise against it | 19:15 | ||
19:17
Ven joined,
vendethiel joined
19:18
Ven left
|
|||
TimToady | teach the memory allocator that a certain huge number means "not really", and then allocate that number of bytes; GC runs, then the allocator says, oops, nevermind :) | 19:18 | |
then you hope that no real code asks for 12345678987654321 bytes, or whatever you picked... | 19:20 | ||
or maybe just do that on a negative request :) | |||
19:23
grondilu left,
domidumont left
19:27
cooper joined,
cooper left,
cooper joined
19:28
anaeem1_ left
19:32
kjs_ joined
|
|||
brrt | yeah, i'm totally no authority on it, but i regard programmatic interface to vm internals of a fairly low priority | 19:34 | |
we may want to change those internals :-) | |||
nine | Well there seems to be a HLL::Backend::MoarVM::force_gc but it's not yet implemented. | 19:40 | |
19:42
BizarreCake joined
|
|||
brrt | hmm | 19:43 | |
19:43
_thou left
|
|||
brrt | i'm not sure if this is an entirely good way to spend an evening, but i suppose it could be hacked together | 19:45 | |
let me ask it another way | |||
what is helped by it? | |||
19:47
virtualsue joined
|
|||
nine | brrt: I'd like to write tests that check if Perl 6 objects referenced only from Perl 5 objects survive a GC run. | 19:47 | |
brrt | hmmm | ||
i see | |||
PerlJam | brrt: I dunno, but it seems like a reasonable thing that people working on making Rakudo interoperate with other languages would want to do in order to test their imeplementation. i.e. It could help the Inline::Ruby and Inline::Python and Inline::Whatever implementors actually make an implementation. | 19:48 | |
brrt | fair enough | 19:49 | |
let me see if i can make something quick for you | |||
(the cost is btw adding an op to moarvm. i'd argue that moarvm has plenty of op-space, but then again, i'm hardly authoritive) | |||
19:51
virtualsue left
|
|||
brrt | hmm | 19:57 | |
the designspace is somewhat bigger than my brane | |||
i'll keep it in mind, though | |||
19:59
brrt left
|
|||
hoelzro | m: try { EVAL "die 'nothing'" ; CATCH {} } | 20:11 | |
camelia | rakudo-moar 83a5f5: OUTPUT«nothing in block <unit> at EVAL_0:1 in any <unit-outer> at EVAL_0:1 in sub EVAL at src/gen/m-CORE.setting:745 in block <unit> at /tmp/kHzZEW2X8y:1» | ||
hoelzro | how does one catch exceptions from an EVAL? | 20:12 | |
timotimo | with try | 20:13 | |
your code is correct except it doesn't mark the exception as handled | |||
m: try { EVAL "die 'nothing'" ; CATCH { default { } } } | |||
camelia | ( no output ) | ||
hoelzro | ah ha, thanks timotimo | ||
FROGGS | you just have to call .Bool on the exception (that is what the default block does) | 20:14 | |
hoelzro | interesting | 20:15 | |
FROGGS | that is how if-clausing a Failure makes it not explode | 20:16 | |
hoelzro | oh, that makes sense | ||
FROGGS | yeah, a very thought through principle | 20:17 | |
timotimo | right | ||
20:18
pyrimidine joined
|
|||
vendethiel | uh, ocaml added open types back in | 20:19 | |
backed in* | |||
20:25
sqirrel left
20:33
japhb_ is now known as japhb
20:36
lizmat left
20:40
BizarreCake left
|
|||
timotimo | is base.t known t ob9rk? | 20:43 | |
b0rk* | 20:44 | ||
# expected: '0.0000000000000000000010' | 20:45 | ||
# got: '0.01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789' | |||
20:45
pecastro left
|
|||
timotimo | and i'm failing a bunch of TZ related tests | 20:45 | |
can folks try the dynamic_gen2_tuning branch of MoarVM against different kinds of workloads? | 20:48 | ||
especially multi-threaded stuff would be good | |||
20:51
Tony_ joined
|
|||
Tony_ | Hello? | 20:51 | |
PerlJam | Tony_: hi! | ||
Tony_ | Cool. | ||
timotimo | hi there | 20:52 | |
cognome | r: say ', 2' ~~ m/',' 2/ | ||
20:52
guru joined
|
|||
Tony_ | So, I'm trying to Perl for a programming languages course. Choosing between 6 and 5. Can you guys tell me the main differences? Pros, cons, etc. | 20:52 | |
camelia | rakudo-{parrot,jvm,moar} 83a5f5: OUTPUT«False» | ||
Tony_ | *to learn | ||
20:52
guru is now known as Guest83313
|
|||
cognome | r: say ', 2' ~~ m/','\s2/ | 20:53 | |
camelia | rakudo-{parrot,jvm,moar} 83a5f5: OUTPUT«「, 2」» | ||
cognome | ho, I am thinking in Perl 5 again :( | ||
need to learn to unlearn or to switch fast :( | 20:54 | ||
PerlJam | Tony_: they are different languages. Perl 5 is more established and has CPAN. Perl 6 is newer and has many things built-in that Perl 5 does not and it does not really have a CPAN yet (it will have CPAN soon, in the mean time it has modules.perl6.org) | 20:55 | |
20:55
Guest83313 is now known as ajr_
|
|||
PerlJam | Tony_: If I were you, I'd probably try Perl 6 for the course. | 20:56 | |
Tony_ | mmmk | ||
cognome | Tony_, without wanting, I just proved that it takes some effort to switch your muscle brain from one to the other. | 20:57 | |
ajr_ | Tony, how experienced a programmer are you? Complete beginner, competent in other languages, multi-lingual ace? | ||
Tony_ | I have decent experience with the major OOP languages, as well as decent experience with a few functional languages. | 20:58 | |
About 2-3 years of experience. Not much, but I'm improving. | 20:59 | ||
cognome | Tony_, the Perl 6 docs assumes in some places that you know Perl 5, but some people were able to go thru them without Perl 5 knowledge. | ||
21:00
kaare_ left
|
|||
ajr_ | OK, so you're not trying to learn programming at the same time as a language. Still, Perl 5's more firmly defined at the moment, and you'll probably find more examples. | 21:00 | |
21:00
pmurias joined
21:01
dolmen joined
|
|||
PerlJam | Tony_: There's also rosettacode.org where you can compare the same problem solution as implemented in several languages. (you'll probably find that useful no matter if you use Perl 5 or Perl 6) | 21:01 | |
Tony_ | I just need to research a new language for my current course and thought perl would be lovely. I definitely know basic programming principals and design patterns. | ||
I also know a bit of bash, if that helps. | 21:02 | ||
21:02
gfldex left
|
|||
huf | i dont think that helps with perl6. it might hinder you if you were learning perl5 :) | 21:02 | |
PerlJam | Tony_: How many languages do you have to interact with in your course? (IIRC, they usually try to get you to use one of each of the main language types) | ||
ajr_ | As an example to describe and explain theories related to programming, 6 would probably be suitable. | 21:03 | |
Tony_ | For this specific course, we only need to research and learn one language. I've done quite a bit of research on my own for other languages though. | ||
pmurias | Tony_: Perl 5 has a really solid ecosystem (tons of libraries, the implementation is well tested and faster, it's widely used), but the language itself is a bit ugly | ||
the core Perl 6 language is much better but it's missing most of the libraries and the implementation is not yet fully done | 21:04 | ||
cognome | like people, languages get less pretty with age. | ||
PerlJam | pmurias: what's "fully done" mean? ;) | 21:05 | |
cognome | When we mark some of the specs as "will be implemented post 6.0" | 21:06 | |
pmurias | PerlJam: "fully done" for a programming language would mean "dead", so it's good it's not the case for both Perls ;) | 21:07 | |
huf | "perfect" :) | ||
cognome | Tony_, some of advanced the stuff like OO and grammars are pretty stable because they have been deemed necessary to cleanly bootstrap the rest. | 21:08 | |
PerlJam | Tony_: Perl (either 5 or 6) lets you program in an OOP style, a FP style, a declarative style, a procedural style or some combination of all of them. This is one of the reasons I have gravitated to Perl. It doesn't force you to think of problems in a certain way in order to solve them. You think of them in some "natural" way and then code a solution that maps well to that way. | ||
Tony_: however, Perl 6 has more built-in language support for some of those styles than Perl 5. :) | 21:09 | ||
pmurias | Tony_: what is your selection criteria for the language to research? | 21:10 | |
Tony_ | Nothing other than we cannot have had any prior experience with the language. | ||
pmurias | and what do you want to base your choice on? | 21:11 | |
Tony_ | Flexibility of language and possible server maintenance interaction. I'm hoping to get into a systems admin career, so learning something in that area would be great. | 21:14 | |
PerlJam | Tony_: Oh, Perl 5 would be perfect for that IMHO. | 21:15 | |
Tony_ | Ah ok. | ||
Thank you. | |||
PerlJam | (Perl 6 too if only it had more admin stuff in the ecosystem) | ||
Tony_ | Well, I'll go ahead and focus on Perl 5, but learn 6 in my free time. | 21:16 | |
PerlJam | cool. | ||
vendethiel does all his pseudo-sysadmin stuff on p6, and is pretty happy about it :-) | |||
PerlJam | Tony_: you can get Perl 5 help from #perl, and Perl 6 help here if ever you need it | 21:17 | |
pmurias | out of curiosity why go into systems admin instead of programming? | ||
PerlJam | vendethiel: Have you written about that in public? Have you shared any P6 programs you use? | 21:18 | |
Tony_ | Systems administration has just always been an area of interest for me. General programming is just a bit too... baby-ish? Poor choice of words, but it summarizes my feelings pretty well. I just feel like I'm actually doing something relevant and needed when I work with servers and the like. | 21:19 | |
Also, one quick question. Installed both and was curious if all I need to do for Rakudo was to add the system path to cmd to do work in it. | 21:21 | ||
PerlJam | Tony_: you don't think the guys that program MRI machines or write the code that pace-makers use are doing something "relevant and needed"? ;) | ||
Tony_ | haha Of course they are. | ||
vendethiel | PerlJam: I even talked about them ;-) | ||
how to add a suffix to every file in the dir? well, 6 'rename($_, "$_.bak") for dir' | 21:22 | ||
Tony_ | Even in regards to those examples, I still feel like that's a lot of research and development, whereas I prefer to grow in efficiency rather than creativity. Odd, but true haha | 21:23 | |
vendethiel | on my github I have p6 scripts I use for my "named cd"/version managing/changelog-from-githistory-generator, etc | ||
on that note, 'night, #perl6! | 21:24 | ||
PerlJam | oops, time for me to depart too. later all! | ||
PerlJam & | |||
Tony_ | Bye all! Have a nice day. | 21:25 | |
21:25
Tony_ left
21:29
kjs_ left
21:33
dwarring joined
21:41
kjs_ joined
|
|||
dalek | p: d1f23dd | (David Warring [email@hidden.address] | examples/rubyish/ (3 files): rubyish - handle revised nqp::for iteration on hashes nqp::for on a hash object now returns an iterator object. nqp::iter_key and nqp::iter_val are used to extract the key and value respectively. |
21:43 | |
21:44
avuserow left
|
|||
timotimo is now running a benchmark suite run with the adaptive full collection code tuning thingie | 21:47 | ||
in one of the tests, it ended up not doing a single gen2 collection for about 200 gc runs, then quitting | 21:50 | ||
22:01
pmurias left
|
|||
timotimo | in the benchmarks, an improvement is kind of hard to spot :\ | 22:04 | |
in all but one benchmark it seems even slower than it was before | 22:05 | ||
that's weird. | |||
so. rc-9-billion-names did one full collection taking 45ms and 450 in total spanning from 9.1ms to 4.8ms | 22:10 | ||
ah, the overview has the data, too | |||
The average nursery collection time was 5.7ms. The average full collection time was 45.42ms. | |||
interesting. for rc-9-billion-names, push takes the 3rd place for exclusive time and is only spesh'd, not jitted. probably because it uses slurpy parameters | 22:12 | ||
TimToady | yes, base.t is known borkuped | 22:13 | |
timotimo | why the hell wouldn't method Bool of List get spesh'd?! | 22:16 | |
it just does self.gimme(1).Bool | |||
22:16
treehug88 left
22:18
pyrimidine left,
_thou joined,
kjs_ left
|
|||
ajr_ | If Tony's still around, I would discourage him from considering a career in system administration. I don't think meaningful sysadmin jobs are going to be around for very long. | 22:20 | |
[Coke] | if you count devops, there's some life innit. | 22:21 | |
TimToady | my brother-in-law told me when I was going into sysadmin that it was a dead-end job :) | 22:23 | |
so I wrote a few little tools I could use in sysadmin, and shared them, and...well, you know the rest | |||
22:31
Psyche^_ joined
22:33
bjz left,
bjz_ joined
22:35
Psyche^ left
22:37
rindolf left
22:38
noganex_ left
22:44
cognome left,
cognome joined
22:45
noganex joined
22:51
lizmat joined
23:00
xragnar_ joined,
xragnar is now known as Guest89767,
Guest89767 left,
xragnar_ is now known as xragnar
|
|||
TimToady | m: (0..9,'A'..'Z').perl.say | 23:08 | |
camelia | rakudo-moar 83a5f5: OUTPUT«(0..9, "A".."Z")» | ||
TimToady | m: (0..9,'A'..'Z').[1].say | ||
camelia | rakudo-moar 83a5f5: OUTPUT«"A".."Z"» | ||
TimToady | yeah, that's the base.t screwup | ||
TimToady looks around for someone else to blame, unsuccessfully... | 23:11 | ||
that's probably gonna screw up a few P5 programmers... | |||
lizmat | m: (0..9,'A'..'Z').WHICH.say # just curious | 23:18 | |
camelia | rakudo-moar 83a5f5: OUTPUT«Parcel|(Int|0)(Int|1)(Int|2)(Int|3)(Int|4)(Int|5)(Int|6)(Int|7)(Int|8)(Int|9)(Scalar|15266784)(Str|B)(Str|C)(Str|D)(Str|E)(Str|F)(Str|G)(Str|H)(Str|I)(Str|J)(Str|K)(Str|L)(Str|M)(Str|N)(Str|O)(Str|P)(Str|Q)(Str|R)(Str|S)(Str|T)(Str|U)(Str|V)(Str|W)(Str|X)(…» | ||
lizmat | hmmm.... that feels... weird ? | ||
TimToady | surely a Range is defined by its endpoints and exclusions? | 23:19 | |
something's .listing it unnecessarily | |||
lizmat | it's doing @(self) | ||
TimToady | well, that's .list in disguise, don't suggest you ask for the .WHICH of 1..1000000000000 | 23:20 | |
lizmat | m: my $p = (1,2,3); say $p.WHICH | 23:21 | |
camelia | rakudo-moar 83a5f5: OUTPUT«Parcel|(Int|1)(Int|2)(Int|3)» | ||
lizmat | need *some* kind of listing for this case | ||
m: (1..10).WHICH.say # this would arguably then also be wrong | 23:22 | ||
camelia | rakudo-moar 83a5f5: OUTPUT«Range|54711744» | ||
lizmat | as a range is immutable? | ||
TimToady | yes, unless you cache range values, in which case a result like that would be okay, as long as identical ranges produce the same WHICH | 23:23 | |
23:24
xenoterracide joined
|
|||
dalek | kudo/nom: bf4b469 | TimToady++ | src/core/Rational.pm: gotta flatten parcel before subscripting, oopsie |
23:26 | |
TimToady | that fixes base.t | ||
lizmat | TimToady: why state ? why not simply a lexical at the class level ? | 23:27 | |
TimToady | it's in a role, so doesn't work | ||
for some reason | |||
lizmat | ah, ok | ||
a workaround for a NYI then | |||
TimToady | tried constant too, and my constant | ||
none worked, except state | |||
lizmat | $ 6 '(1^..^10).WHICH.say' | 23:28 | |
Range|1^..^10 | |||
better for Range for now, I would think, right? | |||
TimToady | yay-ish, modulo the injection bug :) | ||
but that's something for another day | |||
lizmat | yup | 23:29 | |
TimToady | m: my $p = (<a b c>,<d e f>); .perl.say for $p[0..*] | 23:30 | |
camelia | rakudo-moar 83a5f5: OUTPUT«"a""b""c""d""e""f"» | ||
TimToady | hmm | ||
m: my $p = (<a b c>,<d e f>); .perl.say for $p[0,1] | |||
camelia | rakudo-moar 83a5f5: OUTPUT«"a""b""c""d""e""f"» | ||
TimToady | m: my $p = (<a b c>,<d e f>); $p.perl.say | ||
camelia | rakudo-moar 83a5f5: OUTPUT«$(("a", "b", "c"), ("d", "e", "f"))» | ||
TimToady | m: my $p = (<a b c>,<d e f>); $p[0].perl.say | 23:31 | |
camelia | rakudo-moar 83a5f5: OUTPUT«("a", "b", "c")» | ||
lizmat | the * is forcing a listy ? | ||
TimToady | m: my $p = (<a b c>,<d e f>); $p[0].WHICH.say | ||
camelia | rakudo-moar 83a5f5: OUTPUT«Parcel|(Str|a)(Str|b)(Str|c)» | ||
TimToady | yeah, probably | ||
23:32
spider-mario left
|
|||
TimToady | need to iterate parcel elems without using range, I guess | 23:32 | |
m: my $p = (<a b c>,<d e f>); .say for $p.values | |||
camelia | rakudo-moar 83a5f5: OUTPUT«abcdef» | ||
TimToady | maybe we need a special method values in a parcel? | 23:33 | |
dalek | kudo/nom: 49af621 | (Elizabeth Mattijsen)++ | src/core/Range.pm: Preliminary Range.WHICH |
||
TimToady | m: my $p = (<a b c>,<d e f>); .perl.say for $p.lol[0,1] | ||
camelia | rakudo-moar 83a5f5: OUTPUT«$("a", "b", "c")$("d", "e", "f")» | ||
TimToady | well, that's kinda overkill | 23:34 | |
and wrongish for ID purposes | |||
well, at least a parcel always has a finite .elems | |||
so you can just loop | |||
m: my $p = (<a b c>,<d e f>); $p[$_].perl.say for 0..^$p.elems | 23:35 | ||
camelia | rakudo-moar 83a5f5: OUTPUT«("a", "b", "c")("d", "e", "f")» | ||
TimToady | m: my $p = (<a b c>,<d e f>); $p[$_].WHICH.say for 0..^$p.elems | ||
camelia | rakudo-moar 83a5f5: OUTPUT«Parcel|(Str|a)(Str|b)(Str|c)Parcel|(Str|d)(Str|e)(Str|f)» | ||
TimToady | something like that | ||
23:36
nick_____ joined
|
|||
nick_____ | yellow | 23:36 | |
TimToady | m: my $p = (<a b c>,<d e f>); .perl.say for $p[*] | 23:37 | |
timotimo | ohai | ||
camelia | rakudo-moar 83a5f5: OUTPUT«"a""b""c""d""e""f"Mu» | ||
TimToady | m: my $p = (<a b c>,<d e f>); .perl.say for $p[] | ||
camelia | rakudo-moar 83a5f5: OUTPUT«"a""b""c""d""e""f"» | ||
timotimo | huh, where does that Mu come from i wonder ... | ||
nick_____ | any idea when we can use rakudo jvm for frameworks | ||
timotimo | please explain what "for frameworks" means? | ||
TimToady | we've already got a Dancer clone(ish) | 23:38 | |
nick_____ | really cool, i like Dancer | ||
how does it run on jvm | |||
what is the framework called the dancer (ish) one | 23:40 | ||
dancer6? maybe | |||
TimToady | Bailador | ||
haven't tried it, not really a webperson | |||
lizmat | $ 6 'my $p = ((1,2,3),(4,5,6)); $p.WHICH.say' | 23:42 | |
Parcel|(Parcel|(Int|1)(Int|2)(Int|3))(Parcel|(Int|4)(Int|5)(Int|6)) | |||
dalek | kudo/nom: 41d7f71 | (Elizabeth Mattijsen)++ | src/core/Parcel.pm: Don't flatten when creating .WHICH |
23:43 | |
nick_____ | ok, well i want to spread the perl world, bc i really like useful it is, and the fact that it has a lot freedom to write | ||
timotimo | that's cool :) | ||
i'm not a web person myself, but i'm meaning to look into some web stuff when we get an async-io-aware web framework of some kind | 23:44 | ||
nick_____ | any new idea for the mascot, i miss the camel lol | ||
lizmat wonders whether we shouldn't huffmanize the types in .WHICH for value types | |||
I1 instead of Int|1 | |||
23:45
BenGoldberg joined
|
|||
timotimo | ah, you were here last night recommending an otter, was that you? | 23:45 | |
nick_____ | yea, it be honest lol | ||
to be i mean | |||
timotimo | i like the butterfly :P | ||
lizmat | S|foo instead of Str|foo | 23:46 | |
23:46
cooper left
|
|||
nick_____ | i do scripting and unix working with java for living etc.. in other word a admin | 23:46 | |
lizmat | N2.71828182845905 instead of Num|... | 23:47 | |
nick_____ | yea the butterfly is ok, i just want to get the younger crowed they are the future | ||
lizmat | R157/50 instead of Rat|157/50 | ||
BenGoldberg | nick_____, what do you have against butterflies? ;) | 23:48 | |
nick_____ | when its come to programming everyone seem to want the easy way and not understand something | ||
lizmat | anyways, been a long day again with a lot of driving and talking... so going to inspect the inside of my eyelids | ||
gnight, #perl6! | |||
nick_____ | lol | ||
welllllllllllll , i was thinking neutral mascot that all, something that shows the odd but efficacy of perl | 23:49 | ||
like water perl is an language that has a flow to it when you write, it become a bit personal bc not many people what patience to read it etc... | 23:51 | ||
japhb | .ask lizmat What does your '6' alias do? Is it just '/path/to/perl6 -e' ? | 23:52 | |
yoleaux | japhb: I'll pass your message to lizmat. | ||
BenGoldberg | nick_____, On the other hand, "Butterflies are free", and with perl, you are *free* to do what you want :) | ||
lizmat | you rang? | ||
yoleaux | 23:52Z <japhb> lizmat: What does your '6' alias do? Is it just '/path/to/perl6 -e' ? | ||
lizmat | alias 5='perl -E' | 23:53 | |
alias 6='perl6 -MTest -e' | |||
alias 6l='perl6 --ll-exception -MTest -e' | |||
sleep& | |||
timotimo | useful! | ||
hey japhb :) | |||
japhb: i seem to recall i sent some messages your way | 23:54 | ||
japhb | timotimo: Hello there | ||
timotimo | did you get anything? | ||
nick_____ | true, and know butterflies help spread the beauty of the lang, but remember the camel represent ugly but efficiency, survivals etc... | ||
japhb | timotimo: Really? I didn't get highlighted. But sadly I think irssi's default highlighting is not as smart as whatever I had under xchat-gnome. | ||
Why don't we have yoleaux in #moarvm? Having to .ask here when I really want to talk to e.g. brrt about Moar stuff, seems silly and miss-prone. | 23:55 | ||
Thanks, lizmat | 23:56 | ||
timotimo | hold on. | ||
diakopter | japhb: ask dpk | ||
japhb | japhb: I was not asking *how* to request it there, I was asking if there was a reason we *didn't* already. | 23:57 | |
timotimo | ah | ||
i sent them to japhb_ | |||
diakopter | diakoper: maybe there's a reason dpk knows | ||
er | 23:58 | ||
fail at teasing japhb for addressing himself | |||
23:58
tardisx left,
tardisx joined
|
|||
diakopter | .tz | 23:59 | |
yoleaux | diakopter: I don't currently have a timezone preference set for you. | ||
diakopter | .in 0s boo | ||
yoleaux | diakopter: Sorry, I don't understand your duration. Try using units: 1h30m, 1d, etc. | ||
diakopter | .in 1s boo | ||
yoleaux | diakopter: I'll remind you at 23:59Z | ||
diakopter: boo | |||
diakopter | .in 999999999999999999y boo | ||
yoleaux | diakopter: I'll remind you on 2 Sep 999336057550807353 17:06Z |