»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by masak on 12 May 2015. |
|||
TimToady | .tell abc-xyz Currently rakudo uses a grammar written in NQP that you can get at, but it's not called STD, and it's not fully bootstrapped in Perl 6. It may be bootstrapped in some future version, but for now it's more valuable to implement it in NQP as a portability layer. | 00:00 | |
yoleaux | TimToady: I'll pass your message to abc-xyz. | ||
00:01
ShimmerFairy joined
|
|||
ugexe | testers.perl6.org is not accepting reports | 00:02 | |
dalek | Heuristic branch merge: pushed 226 commits to rakudo/glrish by TimToady | 00:04 | |
00:04
freeze left
|
|||
dalek | Heuristic branch merge: pushed 24 commits to rakudo/glrish by TimToady | 00:05 | |
00:05
cognominal left,
freeze joined
00:06
ShimmerFairy left
00:14
freeze left
00:16
freeze joined
00:18
ShimmerFairy joined
00:22
BenGoldberg joined,
BenGoldberg left,
BenGoldberg joined
00:23
freeze left
00:24
laouji joined
00:30
freeze joined
00:32
llfourn left
00:35
yqt left
00:37
espadrine left
00:39
laouji left,
laouji joined
00:42
laouji left,
laouji joined
|
|||
dalek | kudo-star-daily: de710b5 | coke++ | log/ (8 files): today (automated commit) |
00:50 | |
01:07
khw joined
01:22
rmgk is now known as Guest12097,
rmgk_ joined,
Guest12097 left,
rmgk_ is now known as rmgk,
alexande3 joined
01:29
aborazmeh joined,
aborazmeh left,
aborazmeh joined
01:33
dolmen joined
01:34
namenick joined
|
|||
namenick | p6: "aa" ~~ / .+ % <?same> /; | 01:35 | |
camelia | rakudo-moar debcfc: OUTPUT«Method 'same' not found for invocant of class 'Cursor' in block <unit> at /tmp/tmpfile:1» | ||
01:36
yeahnoob joined
01:53
dayangkun joined
01:55
aborazmeh left
01:56
gfldex left
02:12
awwaiid joined
02:15
Khisanth joined
02:23
chenryn joined
02:29
llfourn joined
02:33
llfourn left
02:34
hoelzro joined
02:51
noganex joined
02:52
raiph left
02:53
namenick left
02:54
chenryn left,
noganex_ left
03:01
huf joined
03:11
jack_rabbit joined
03:16
chenryn joined
03:29
llfourn joined
03:32
skids left
03:33
llfourn left
03:35
BenGoldberg left
03:37
jack_rabbit left
03:39
atroxaper joined,
ShimmerFairy left
03:40
jack_rabbit joined
03:43
leont left
03:47
atroxaper left
03:50
jack_rabbit left
03:51
ShimmerFairy joined
03:57
chenryn left
04:01
jack_rabbit joined
04:09
kaare_ joined
04:12
dayangkun left
04:14
dayangkun joined
04:15
raiph joined
04:21
atroxaper joined,
khw left
04:30
jack_rabbit left
04:50
prammer joined,
cognominal joined
04:51
[Sno] left
04:52
TEttinger left
04:56
vendethiel joined
04:58
chenryn joined
05:04
chenryn left
05:14
baest left
05:16
atroxaper left
05:17
baest joined
05:20
cognominal left
05:21
vendethiel left
05:23
atroxaper joined
05:27
atroxaper left
05:29
llfourn joined
05:31
Alina-malina left
05:32
TEttinger joined
05:34
llfourn left
|
|||
lizmat | good *, #perl6! | 05:40 | |
alas, I will be afk for most of the day& | |||
05:46
ChoHag joined
05:50
diana_olhovik_ joined
05:56
rurban joined
|
|||
ChoHag | I believe utf-8 may be my friend too today. | 05:59 | |
timotimo | ☺ | ||
ChoHag | But my new nemeses: Tiny fonts. | ||
nemesis | 06:00 | ||
timotimo | oh yes. | ||
ChoHag sighs | |||
One problem per day is enough. | |||
timotimo | i hear you | ||
06:00
chenryn joined
06:03
atroxaper joined
06:04
raiph left
06:10
brrt joined
06:14
Guest92532 joined,
[Sno] joined
06:17
Guest92532 left
06:23
sunwenjie joined
06:24
domidumont joined
|
|||
timotimo | .tell smls could you be super nice and fetch the newest dll files for gtk-simple for me to put onto hack? or maybe give me a script or instructions where they can be found, exactly? also, if you could grab gtksourceview-3 in addition to what we already have, that'd be swell :) | 06:25 | |
yoleaux | timotimo: I'll pass your message to smls. | ||
brrt | \o | 06:26 | |
06:30
FROGGS joined
06:34
RabidGravy joined
06:38
mr-foobar left
06:39
jkva joined,
agre joined
06:41
zakharyas joined
06:42
domidumont left
06:46
agre left
06:50
agre joined
06:55
agre left,
jkva left
|
|||
timotimo | m: class One { our sub test { say "yay" } }; class Two { import One; method foo { test() } }; Two.foo; | 06:59 | |
camelia | rakudo-moar debcfc: OUTPUT«5===SORRY!5=== Error while compiling /tmp/wB6qd38T5tUndeclared routine: test used at line 1» | ||
timotimo | how to do this right? | ||
07:00
dolmen left
|
|||
moritz | m: class Oone { sub test is export { say "yay" } }; class Two { import One; method foo { test() } }; Two.foo; | 07:01 | |
camelia | rakudo-moar debcfc: OUTPUT«5===SORRY!5=== Error while compiling /tmp/uOKaPNBIogCould not find module One to import symbols fromat /tmp/uOKaPNBIog:1------> 3 { say "yay" } }; class Two { import One7⏏5; method foo { test() } }; Two.foo;» | ||
moritz | m: class One { sub test is export { say "yay" } }; class Two { import One; method foo { test() } }; Two.foo; | ||
camelia | rakudo-moar debcfc: OUTPUT«yay» | ||
moritz | timotimo: use "is export" if you want to import :-) | ||
timotimo | ok | ||
07:03
coffee` joined
07:04
amurf left
07:05
jkva joined
07:08
Ven joined
07:11
abraxxa joined
07:13
dolmen joined
07:15
azawawi joined
07:27
coffee` left
|
|||
azawawi | hi #perl6 | 07:30 | |
07:30
llfourn joined
07:31
espadrine joined
|
|||
cdc | brrt++ # blogging | 07:34 | |
brrt | thanks :-) | 07:35 | |
07:35
llfourn left
|
|||
ChoHag | Can I consume a role/extend a class where the final class/subclass changes (or defines) the default of an attribute? | 07:35 | |
Or any other aspect of a consumed attribute for that matter. | 07:36 | ||
07:42
telex left,
mr-foobar joined,
atroxape_ joined
07:44
telex joined
07:45
atroxaper left
07:52
atroxaper joined,
atroxape_ left,
darutoko joined
|
|||
moritz | the consumer can set the default in a BUILD submethod | 07:54 | |
or you can write a role that requires the consumer to provide a method which returns the default | 07:55 | ||
07:55
coffee` joined
|
|||
RabidGravy | someone be a love and make URI so I can manipulate the uri | 07:56 | |
07:57
virtualsue joined
|
|||
[TuxCM] | [Coke], lizmat, tux.nl/Files/uchar-nopro | 07:57 | |
timotimo | don't we have some URI module already? | ||
moritz | sure we do | ||
[TuxCM] | that is a slightly stripped version, as my original contains company code | ||
RabidGravy | yeah, but it's parse only, don't want to get sidetracked into making mutations | 07:58 | |
07:58
zakharyas left
|
|||
azawawi | lizmat: ping | 08:00 | |
08:01
atroxaper left
08:03
Mhoram joined
|
|||
azawawi | .tell lizmat why is .send deprecated? Any reason behind that? Thanks for all your hard work. github.com/rakudo/rakudo/commit/26...ccd9d9b801 | 08:04 | |
yoleaux | azawawi: I'll pass your message to lizmat. | ||
timotimo | azawawi: because hoelzro renamed it to "print" | ||
08:05
gfldex joined
|
|||
azawawi | oops thought it was lizmat :) | 08:05 | |
so does it make it sense? socket.print ? | |||
timotimo | i think so? | 08:06 | |
RabidGravy | consistency | ||
azawawi | you're printing to a socket... that's new :) | ||
timotimo | well, tcp is stream-based | 08:07 | |
so yeah, you *are* writing to a socket | |||
RabidGravy | send(2) does something slightly different in that it allows you to specify flags | ||
timotimo | we don't have anything for UDP sockets yet | ||
RabidGravy: our old "send" didn't have any support for flags, either | |||
RabidGravy | zackly | 08:08 | |
timotimo | in unix, the difference between "write" and "send" is that send lets you pass flags | ||
in perl6 you can't flags anyway | |||
so we don't let you send (yet) | |||
azawawi | cool | 08:10 | |
azawawi must be a rakudo 2025 feature :) | |||
timotimo | i've been very very slow with the udp socket support :( | ||
RabidGravy changes HTTP::UserAgent | 08:12 | ||
timotimo | thank you kindly | ||
azawawi | timotimo: well I have been very very slow with farabi6 :) | 08:13 | |
timotimo | i disagree | 08:14 | |
08:16
dakkar joined
08:18
virtualsue left
08:19
alexande3 left
|
|||
RabidGravy | I think I have reached an all time high in the number of modules I have in progress | 08:20 | |
[TuxCM] | test 50000 47.312 47.217 | 08:21 | |
test-t 50000 47.420 47.325 | |||
08:26
xinming_ left,
xinming joined
08:27
virtualsue joined
08:28
yeahnoob left
|
|||
timotimo | hum. | 08:36 | |
i do "require Cairo;" and then attempt to access the cairo_t class via ::('cairo_t'), but i get "no such symbol cairo_t" ... i think this must have worked at some point | |||
i ought to give the require statement a list of names to fetch i guess | 08:37 | ||
Trying to import symbols cairo_t, Cairo from 'Cairo', but it does not export anything | |||
:| | |||
jnthn peers at the RT queue | 08:39 | ||
timotimo | ah, it doesn't "is export" that | ||
there's not a single "is export" in the cairo module | 08:40 | ||
nwc10 | jnthn: is that a wise thing to do? :-) | ||
timotimo | but it already worked at some point :\ | ||
fixed the mistake apparently, yay | 08:41 | ||
08:43
g4 joined
|
|||
jnthn | Well, it gives me something to do while the coffee starts working better :) | 08:46 | |
RabidGravy | really with send -> print recv wants to be changed too as they used to be kinda sorta symmetrical | 08:47 | |
08:47
TEttinger left
08:53
amurf joined
08:57
amurf left
08:58
Ven left
|
|||
nwc10 | pete pasted this text "Characters should actually be grapheme clusters, though current implementations erroneously count codepoints instead." which I think is from doc.perl6.org/routine/chars | 09:02 | |
is that text out of date now, due to NFG? | 09:03 | ||
dalek | kudo/nom: 30089ad | jnthn++ | src/core/ (2 files): Tighten up types on things that must be callable. This avoids whining (potentially at a distance) about missing .count, .arity, and so forth, and instead showing a more helpful error about how we can't bind the signature here. |
||
ast: 8a54a62 | jnthn++ | S32-exceptions/misc.t: Test for RT #125675. |
|||
ast: 01d0210 | jnthn++ | S32-list/sort.t: todo => skip on some very dubious tests. |
|||
jnthn | nwc10: On MoarVM at least, yes | 09:04 | |
09:05
xfix joined
|
|||
nwc10 | does the masakbot create github issues, as well as RT tickets? :-) | 09:05 | |
09:05
xfix left,
nightfrog left
|
|||
nwc10 | more usefullly, does dha++ fix stuff like this if made aware of it? | 09:05 | |
09:06
nightfrog joined
09:08
espadrine left
|
|||
jnthn | m: use Test; sub foo($r = rx{foo}) { ok $r ~~ Regex }; foo(); | 09:12 | |
camelia | rakudo-moar debcfc: OUTPUT«===SORRY!===Cannot call method 'match' on a null object» | ||
09:16
sergot joined
|
|||
sergot | hi o/ | 09:17 | |
09:17
salva left
09:18
zakharyas joined
09:19
mr-foobar left
|
|||
RabidGravy | yo sergot | 09:19 | |
rurban | Why did you call arrays declared with a fixed size "shaped" and not "sized"? I think I'll call them sized_arrays in perl5, i.e. AvSIZED. Is it because of multidimensional support? | 09:20 | |
jnthn | Yes. | ||
rurban | Should I also call them shaped? | ||
jnthn | I dunno, are you going to do multi-dim support? | ||
rurban | perl5 has no multidim support | ||
I die on multi dims so far | 09:21 | ||
but maybe I can add it later. | |||
JimmyZ | Does JVM have multidim support? | ||
looks like not? | |||
rurban | Not sure if the parser allows that. my int @a[2,10]; hmm | ||
jnthn | JimmyZ: Already ported MultiDimArray REPR to JVM. | 09:22 | |
brrt | perl5 has multidim faking, and it's awesome ^^ | ||
jnthn | So so far as Perl 6 needs, "yes" ;) | ||
brrt | or at least, it's useful | ||
09:22
araujo left
|
|||
dalek | kudo/nom: c8c1b67 | jnthn++ | src/Perl6/Actions.nqp: Avoid boolifying code objects in compiler. Some of them react to boolification by trying to match against $_, when we only want to check if we have one. Fixes RT #125670. |
09:22 | |
ast: 9263645 | jnthn++ | S06-signature/defaults.t: Test for RT #125670. |
|||
JimmyZ | I meant JVM itself :) | 09:23 | |
jnthn | JimmyZ: iirc yes, though I may be remembering the CLR :P | ||
Well, there's two RTs down... :) | 09:24 | ||
rurban | I just thought of being less confusing to the casual user. Ok, Shaped then. I really dislike this name. Sized sounds good for multidim also. But this is too late unfortunat. | ||
09:24
Mhoram left
09:25
itz joined
|
|||
itz | morning | 09:25 | |
brrt | morning itz | ||
timotimo | it's itz! | ||
09:25
Mhoram joined
09:31
llfourn joined
|
|||
dalek | kudo/nom: d922521 | jnthn++ | src/Perl6/World.nqp: Always decont things used as type constraints. Fixes RT #125715. |
09:34 | |
09:34
espadrine joined
|
|||
dalek | ast: 985d992 | jnthn++ | / (2 files): Test for RT #125715. |
09:35 | |
09:36
llfourn left
09:48
chenryn left
09:49
chenryn joined
09:56
rurban_ joined,
Ven joined
10:03
brrt left
10:06
Ven left,
mr-foobar joined
|
|||
dalek | kudo/nom: 915e445 | jnthn++ | src/Perl6/Actions.nqp: Remove comment about decision already made. |
10:08 | |
kudo/nom: 0a1da50 | jnthn++ | src/Perl6/ (2 files): Fix private method call in role code-gen. We can't just assume $*PACKAGE holds the type we should locate the private method in. Rather, ::?CLASS must be used in this case. |
|||
ast: b7f4121 | jnthn++ | S14-roles/stubs.t: Test for RT #125694. |
|||
10:08
Ven joined
10:14
chenryn left
10:23
inokenty joined
10:28
llfourn joined
|
|||
jnthn | m: (1,2,3).map({ die 'oh noes' }) | 10:29 | |
camelia | rakudo-moar d92252: OUTPUT«Unhandled exception: oh noes at <unknown>:1 (/home/camelia/rakudo-inst-1/share/perl6/runtime/CORE.setting.moarvm:throw:4294967295) from src/gen/m-CORE.setting:792 (/home/camelia/rakudo-inst-1/share/perl6/runtime/CORE.setting.moarvm:die:86) fro…» | ||
jnthn | Didn't we have an RT about error of last statement in a problem sucking if it occurs while sinking? | 10:43 | |
jnthn can't find it | |||
itz | rt.perl.org/Public/Bug/Display.html?id=124434? | 10:50 | |
jnthn | m: Failure.new(Exception.new); 1 | 10:51 | |
camelia | rakudo-moar 0a1da5: OUTPUT«Exception exception produced no messageActually thrown at: in block <unit> at /tmp/CeOq_nzqJJ:1» | ||
jnthn | That one does look fixed, but isn't what I meant :) | 10:52 | |
skids++ work probably fixed that one recently | |||
10:55
ShimmerFairy left
10:57
RabidGravy left
|
|||
dalek | kudo/nom: fac28d3 | jnthn++ | src/ (3 files): Test for concise error on sinking last statement. If the last statement in a file used to need sinking, and doing so threw an exception, we'd spit out an epic low-level backtrace rather than a nice high-level one. Fix that by making non-EVAL and non-REPL stuff we compile put the last statement in sink context in the code we generate rather than having MAIN do the sinking. Also means a trailing 0; in a file now warns. |
10:57 | |
ast: bcebafd | jnthn++ | S10-packages/precompilation.t: Fix test to not produce a sink warning. |
|||
ast: 364c287 | jnthn++ | integration/weird-errors.t: Test we get concise error on last statement sink. |
|||
11:08
ShimmerFairy joined
|
|||
dalek | ast: ed5d178 | jnthn++ | S17-promise/start.t: Test for RT #125346. |
11:10 | |
jnthn | m: my $p = (0..3).map: *+1; say await $p; | 11:13 | |
oops | |||
m: my $p = start { (0..3).map: *+1 }; say await $p; | |||
camelia | rakudo-moar 0a1da5: OUTPUT«(timeout)» | ||
rakudo-moar 0a1da5: OUTPUT«» | |||
jnthn | hmm | ||
FROGGS | m: await 42 | 11:14 | |
yoleaux | 29 Jul 2015 16:22Z <lizmat> FROGGS: looking at debugging 'Proc::Async.new("perl6", "-e", "exit 2").start.result.perl.say' | ||
camelia | ( no output ) | ||
yoleaux | 29 Jul 2015 16:22Z <lizmat> FROGGS: it looks like the "done" callback is not being called, and thus the exit code is never set | ||
11:14
dayangkun left
|
|||
jnthn | Wonder why we lose the result of the map... | 11:15 | |
m: my $p = start { (0..3).map: *+1 }; say $p.result; | |||
camelia | rakudo-moar 0a1da5: OUTPUT«1 2 3 4» | ||
FROGGS | m: my $p = start { (0..3).map: { say "huh"; $_+1 } }; say await $p; | ||
camelia | rakudo-moar 0a1da5: OUTPUT«huhhuhhuhhuh1 2 3 4» | ||
FROGGS | m: my $p = start { (0..3).map: { $_+1 } }; say await $p; | 11:16 | |
camelia | rakudo-moar 0a1da5: OUTPUT«» | ||
FROGGS | hmmmm | ||
jnthn | That really is a wtf... | 11:18 | |
11:18
chenryn joined
|
|||
jnthn | Hm, and it really is lunch time. | 11:19 | |
bbiab | |||
FROGGS | what the lunch | 11:20 | |
11:20
brrt joined
|
|||
jnthn | Apparently, nothing unless I go to the shop... | 11:21 | |
11:21
jkva left
11:24
laouji left
11:32
llfourn left
11:48
azawawi left
11:51
leont joined
|
|||
nine | brrt: I'm sure you are being asked that every other day, but I don't recall reading about it: would it be possible to appropriate llvm's or gcc's optimization passes for MoarVM? | 11:53 | |
brrt | i'm not asked that often, in fact :-) | ||
but it's a good question | |||
the answer, unfortunately, is no | 11:54 | ||
nine | That begs the question: why? :) | ||
brrt | ehm... let me think about that for a bit | 11:55 | |
the most basic reason is that it's a question of (in-memory) code representation | 11:56 | ||
11:56
araujo joined
|
|||
brrt | if you want gcc or llvm to do something clever with your code, you must first convert your code to llvm ir or gcc ir | 11:57 | |
possibly textually, which is not really awesome | |||
nine | That's a given, yes. But I don't see how that would be impossible? | ||
Of course, if it would actually be worth it, would be another question. | |||
But since it seemed to quite quite some work just to use all x86_64 registers and how much more work it will probably be to make _good_ use of them, the answer may not be clear. | 11:58 | ||
brrt | well, what you're talking about would amount to replacing the entire moarvm jit 'backend' with a gcc/llvm backend, and that's certainly possible | ||
if you want to use *just* the optimization passes, then you'd have to convert your code to llvm ir, then have it optimize it, then convert it back; but i'm unsure what the point of that would be | 11:59 | ||
because clearly llvm and gcc have just fine code generators | |||
the main problem with such an approach - from my admittedly biased view - is that both gcc and llvm are made for c and c++ semantics | 12:00 | ||
that means that to get perl6 semantics out of that (or more specifically moarvm semantics) you'll have to add in all sorts of constraints to the IR | 12:01 | ||
unfortunately, such restraints prohibit llvm from optimizations | 12:02 | ||
12:02
salv0 joined
|
|||
[TuxCM] | .tell [Coke] tux.nl/Files/uchar-nopro | 12:03 | |
yoleaux | [TuxCM]: I'll pass your message to [Coke]. | ||
brrt | a very simple example would be the interaction with GC; it requires that at certain points all values are flushed to memory | ||
a moarvm-specific JIT may be able to lift some of those constraints because it has full knowledge of the code, but llvm would not be able to | 12:04 | ||
moreover, llvm is large and slow | |||
12:05
virtualsue left,
llfourn joined
|
|||
brrt | gcc is of course GPL | 12:07 | |
which is a licensing headache | 12:08 | ||
Ven | ...and is a headache to use as a library :P | 12:09 | |
arnsholt | Well, you're not really supposed to be able to use GCC as a library, are you? =) | 12:10 | |
brrt | it exists arnsholt | ||
not sure if it's called libjit or that's something else | |||
arnsholt | Oooh, right. I'd forgot about that | 12:11 | |
brrt | bbiab | ||
12:11
brrt left
12:13
brrt joined
|
|||
brrt back | 12:13 | ||
12:14
Ven left
|
|||
brrt | anyway, nine, was that a reasonable answer? :-) | 12:14 | |
12:15
smls joined
|
|||
sergot | .seen masak | 12:21 | |
yoleaux | I saw masak 27 Jul 2015 16:28Z in #perl6: <masak> yeah, but two `whenever`s can work in parallel without any extra instructions, which is nice. | ||
12:21
chenryn left
12:22
Ven joined
12:30
muraiki joined
12:34
ab6tract joined
|
|||
ab6tract | o/ #perl6 | 12:34 | |
doing a hackathon with flock, comparing some speed metrics of his perlito5-java backend vs rakudo | 12:35 | ||
*fglock | |||
12:35
mr-foobar left
|
|||
ab6tract | the difference between Int and int on jvm is.... a bit unbelievable, to be honest | 12:35 | |
brrt | between perlito5-java and rakudo or within rakudo? | 12:36 | |
\o ab6tract | |||
12:40
Ven left
|
|||
ab6tract | brrt: within rakudo | 12:40 | |
gist.github.com/ab5tract/1c394b6ef32bbf27374c | |||
gist is incomplete, just showing where I am currently | |||
I haven't had the patience so far to let the non-native version finish | 12:42 | ||
with native int, though, we are ~100% faster than p5 :D | |||
brrt | \o/ | 12:43 | |
(i'm at 0.48 seconds for the native run) | |||
pretty cool | |||
i'm wondering how that will do after the new codegen is in place | 12:44 | ||
(and after that, what happens when we have whole-routine register allocations and optimization) | |||
ab6tract | brrt: 0.48 seconds on moarvm ? | 12:45 | |
12:45
Ven joined
|
|||
brrt | yeah | 12:45 | |
4.6s for perl5 | |||
ab6tract | that's fracking awesome :D | ||
brrt | use integer reduces that (for perl5) to 3.7s | ||
ab6tract | damn.. you... autocorrect.... fracking is not cool. fricking cool is fricking cool | 12:46 | |
brrt | actually, one of the open projects is reducing big integer operations to small integers | ||
fracking gets quite hot, i've heard | |||
(for moarvm) | |||
and possibly to use escape analysis to (locally) unbox Int to int | 12:47 | ||
jnthn | On Windows the difference between the two benchmarks in gist.github.com/ab5tract/1c394b6ef32bbf27374c is more notable: 0.67s including startup for Rakudo on Moar, vs. 7.35s for Perl 5 (dropping to 6.53s with use integer) | 12:50 | |
ab6tract | that would be sweet | ||
jnthn: nice! | |||
jnthn | Remove the native "int" types, and it's darn slow, alas | 12:51 | |
brrt | MVM_JIT_DISABLE=1 increases runtime to 2.8s; MVM_SPESH_DISABLE=1 to 2.9s | 12:52 | |
jnthn | Despite all the allocation going on, causing 593 GC runs, the time doing GC only amounts to 2.5% of runtime. | 12:54 | |
Oh... | |||
ab6tract | i get 280 seconds here | ||
jnthn | ab6tract: 46s for r-m without the "int" annotations for me | ||
ab6tract | (for the non-native version) | ||
jnthn | But...we're not inlining any stuff o.O | ||
Oh...darn, I bet I upset a bunch of that when I fixed &?ROUTINE. | 12:55 | ||
jnthn should sort that out | 12:56 | ||
brrt | of course | ||
it's much easier to perform if you just do the wrong thing :-P | |||
jnthn | Right ;) | ||
ab6tract | prelate's generated java code runs in 0.9 seconds :) | ||
brrt | well, that was on your machine that took 5s for the moarvm code, right | 12:57 | |
ab6tract | s/prelate/flavio/ # only having these autocomplete issues in webchat.freenode.net | ||
jnthn | That's quite a correction :P | ||
ab6tract | brrt: no, I'm doing jam testing | ||
brrt | i don't comprehend? | 12:58 | |
ab6tract | brrt: everything should be smoother now, I've gotten the autocorrect crap disabled | 12:59 | |
so, "no I | |||
"no I'm doing jvm testing" | |||
brrt | ah, ok | ||
:-) | |||
autocorrect makes people confused | |||
FROGGS | that exclaims things :o) | 13:00 | |
ab6tract | seriously... i think typos are easier to parse | ||
FROGGS: :) | |||
jnthn | Perl 6. It runs on MoarVM and jam. :P | ||
ab6tract | jnthn: so, interestingly, when I use for instead of while, the native type hints don't seem to have much of an impact at all | ||
jnthn | ab6tract: How do you write that with "for"? | 13:01 | |
brrt | i think that's probably because for takes a closure | ||
jnthn | Indeed | ||
nine | brrt: yes, thank you very much for explaining. | 13:02 | |
brrt | you're welcome :-) | ||
13:05
ab6tract left
13:07
ab6tract joined
|
|||
ab6tract | jnthn: gist.github.com/ab5tract/1c394b6ef...ark-for-p6 | 13:08 | |
13:10
skids joined
|
|||
brrt | yeah, that's blocky | 13:12 | |
jnthn | ab6tract: I highly doubt that way of writing it will perform well at the moment. | 13:14 | |
13:17
raiph joined
|
|||
DrForr | tadzik: Deprecation warning in Panda::Ecosystem. | 13:18 | |
tadzik | DrForr: oh. Will look, thanks | 13:22 | |
DrForr | Added a GH issue as well. | ||
13:23
llfourn left
|
|||
ab6tract | jnthn: preliminary investigation agrees :) | 13:23 | |
jnthn: am I doing something particularly suboptimal there? | |||
13:24
llfourn joined
|
|||
jnthn | ab6tract: using "for" on a native array | 13:24 | |
Things should improve after the GLR | 13:25 | ||
Though not sure if that alone will cut out any boxing. | |||
13:25
Mhoram left
13:26
donaldh joined
13:27
aborazmeh joined,
aborazmeh left,
aborazmeh joined,
FROGGS left
13:28
abraxxa left
13:29
spider-mario joined
|
|||
ab6tract | jnthn: a bit of a saddy that we will again have performance implications of for-vs-where | 13:29 | |
13:29
abraxxa joined
13:34
aborazmeh left
|
|||
dalek | ast: 6e4fb04 | jnthn++ | S32-io/IO-Socket-Async.t: Fix deprecation in test. |
13:34 | |
ab6tract | jnthn: so the for-vs-while performance difference is just for native arrays? or will for always be slower because closures | 13:35 | |
jnthn | ab6tract: Not sure about "always", but they won't be going away any time soon. | 13:36 | |
13:36
RabidGravy joined
|
|||
jnthn | ab6tract: Though the difference should hopefully reduce far enough that you have to really care about performance to bother about it. | 13:36 | |
RabidGravy | boom! | 13:37 | |
nine | Boom. Boom boom boom. Boom boom. Boom! Have a nice day. | 13:41 | |
DrForr waves to nine. Woops :) | 13:43 | ||
13:49
cognominal joined
13:52
rindolf joined
13:53
TimToady left
13:55
brrt left,
TimToady joined
|
|||
ab6tract | jnthn: so I got 2498.388 seconds for the naive for version :) | 13:56 | |
13:57
rurban left,
Ven left
13:58
araujo left
14:01
khw joined
|
|||
ab6tract | does anyone know of example Java interop code? The stuff from the advent calendar is all quite old | 14:03 | |
jnthn | m: use Test; sub doit() { if True { LEAVE 1; return 'ls'; } }; is doit(), 'ls', 'return in nested block with LEAVE works'; | 14:05 | |
camelia | rakudo-moar fac28d: OUTPUT«const_iX NYI in sub doit at /tmp/RaWLP57F6m:1 in block <unit> at /tmp/RaWLP57F6m:1» | ||
jnthn | ab6tract: I know psch++ worked on it most recently, and may have posted some examples somewhere | 14:06 | |
ab6tract | pinging psch++ :) | 14:09 | |
timotimo | ab6tract: do you know that a for ^1000 will actually generate an int over native integers? | 14:12 | |
dalek | p: 3c8c39d | jnthn++ | tools/build/MOAR_REVISION: Bump MOAR_REVISION for various fixes. |
14:14 | |
14:15
Ven joined,
smls left
|
|||
dalek | kudo/nom: b1a56a2 | jnthn++ | tools/build/NQP_REVISION: Bump NQP_REVISION. Gets a MoarVM with a race condition in frame validation fixed, along with a bug in extop/exception interaction fixed. |
14:15 | |
ast: 21837e8 | jnthn++ | S04-phasers/enter-leave.t: Test for RT #125480. |
14:16 | ||
timotimo | well, there's at least an optimization in place that's supposed to do it, but it broke multiple times in the past | 14:18 | |
ab6tract | timotimo: that's why I was doing my int @range = ^400. that was my attempt to enforce nativity | 14:20 | |
timotimo | ah | ||
you mean naivity? | |||
ab6tract | :) | 14:21 | |
it was a naive attempt to enforce a native array | |||
jnthn | You got a native array | 14:22 | |
It's just that doing a "for" over one isn't particularly smart. | |||
timotimo | right, it'll probably box each of those ints | 14:23 | |
and then unbox it again | |||
jnthn gets tired of seeing rt.perl.org/Ticket/Display.html?id=68572 and its dependents, and decides he's smart enough today to decide for good that our-scoped stuff inside of roles is just going to be forbidden. | 14:28 | ||
cognominal | timotimo: nativity is delayed until christmas | 14:29 | |
[Coke] finds that uchar needs xrdb, and wonders about making a uchar6 which might not need it. | 14:31 | ||
yoleaux | 12:03Z <[TuxCM]> [Coke]: tux.nl/Files/uchar-nopro | ||
[Coke] | Tux++ | ||
14:32
smls joined
14:38
yqt joined
|
|||
ab6tract | perl6 appears to respect CLASSPATH (at least, it chokes when it is malformatted in any way). however, loading modules from the CLASSPATH doesn't seem to be working... that is, what works in perlito5 with hte same enviornment is not loadable from perl6 | 14:42 | |
14:58
rurban_ left,
virtualsue joined
|
|||
jdv79 | what is the failure mode for >>.? should all other tasks be cancelled asap or let them complete? | 15:00 | |
i couldn't find it in the spec | |||
when >>. is async that is | |||
15:03
hoelzro_ii joined
15:05
salv0 left
15:06
spider-mario left
|
|||
[Coke] | .ask tux if uchar has been tested on OS X? (I just installed quartz, xrdb, and now it runs without x errors, but if I run "uchar -d STUFF" it just prints out the original word. | 15:10 | |
yoleaux | [Coke]: I'll pass your message to tux. | ||
15:14
zakharyas left
15:17
nowan joined
15:20
donaldh left
15:21
donaldh joined
|
|||
ab6tract | .ask psch any clues on what might be borking module loading from non-SDK modules which also happen to be in CLASSPATH? | 15:23 | |
yoleaux | ab6tract: I'll pass your message to psch. | ||
raiph | .tell moritz Did you mean `use Perl6::Grammar:from<NQP>` (ie no space before `:from`)? | 15:25 | |
yoleaux | raiph: I'll pass your message to moritz. | ||
raiph | star: use LWP::Simple; LWP::Simple.get('api.ipify.org').say; LWP::Simple.mirror('api.ipify.org') # Perl 6 LWP::Simple clone doesn't support `mirror`, so... | 15:26 | |
camelia | star-m 2015.03: OUTPUT«78.47.60.231No such method 'mirror' for invocant of type 'LWP::Simple' in block <unit> at /tmp/4OekuvQXz3:1» | 15:27 | |
15:27
Ven is now known as Guest11249,
Guest11249 is now known as Ven_
|
|||
raiph | star: use LWP::Simple:from<Perl5>; LWP::Simple.get('api.ipify.org').say; LWP::Simple.mirror('api.ipify.org') # ... thought I'd try this but does the `:from<Perl5>` actually work? | 15:27 | |
camelia | star-m 2015.03: OUTPUT«78.47.60.231No such method 'mirror' for invocant of type 'LWP::Simple' in block <unit> at /tmp/siur_BbOHa:1» | ||
ab6tract | raiph: I think you need to use Inline::Perl5 first | 15:28 | |
timotimo | star: use LWP::Simple; LWP::Simple.get('api.ipify.org').say | ||
camelia | star-m 2015.03: OUTPUT«78.47.60.231» | ||
timotimo | hm, doesn't seem rigght | ||
raiph | timotimo: LWP::Simple is bundled with Star | ||
timotimo | mhm | 15:29 | |
[TuxCM] | [Coke], not tested on OSX | ||
timotimo | it'd be sensible to have it throw an exception if the :from isn't supported or something? | ||
star: use LWP::Simple:from<lua>; | |||
camelia | ( no output ) | ||
[TuxCM] | developed ages ago on HP-UX for testing diacriticals we needed for our GBA | ||
ab6tract | timotimo: agreed | ||
raiph | is this because camelia's star is too old? | ||
itz | . o O ( HP-SUX ) | ||
[TuxCM] | itz, why? | 15:30 | |
[TuxCM] would understand such a snark remark about AIX | |||
itz | foldoc.org/HP-SUX :) | ||
[TuxCM] | have you ever works on it? | 15:32 | |
ab6tract | star: use Thing:from<nonlang> | ||
camelia | star-m 2015.03: OUTPUT«===SORRY!===Do not know how to load code from nonlang» | ||
ab6tract | star: use Thing:from<lua> | ||
camelia | star-m 2015.03: OUTPUT«===SORRY!===Do not know how to load code from lua» | ||
ab6tract | funny :) | 15:33 | |
timotimo | yeah, it only errors out if it finds no module at all | ||
geekosaur only familiar with an ancient version of hp/ux where an open file couldn't be deleted (unlike most unixlikes, but like windows) | |||
timotimo | it seems like the :from is more or less a tiebreaker in its implementation | ||
itz | not since the early 90s | ||
15:33
g4 left
|
|||
[TuxCM] | geekosaur, still true for share libraries that are used from memory. I don't recall it ever being true for files opened with an editor or somesuch | 15:34 | |
geekosaur | also, AIX was a great OS. just don't make the mistake of thinking it's a unixlike :) | ||
[TuxCM] | AIX sucks on *all* levels except its file system implementation | ||
geekosaur | [TuxCM], this was in the context of the unix anonymous temp file hack: open/create and immediately unlink, leaving only the fd | ||
ugexe | lizmat: i was looking to implement absolutify() inside CURLy so CURLI could absolutify `provides` and `bin` paths. so i'm clear on its purpose, is it correct that $p1.absolutify($p2) would work would like rel2abs? or is absolutify meant to work with no arguments? | 15:35 | |
[TuxCM] | which fool thought it would be a great idea to put 64bit objects and 32bit objects in the same library? | ||
geekosaur | and, um, this was in the late 1980s | ||
[TuxCM] | and allow the same object names for both | ||
15:36
xfix joined
|
|||
timotimo | why not? | 15:36 | |
sounds like FatELF and what osx has | |||
ab6tract | timotimo: well, fwiw, :from<Java> is essentially broken for me | ||
[TuxCM] | because you cannot see from outside if there is any valid content in it | ||
15:36
spider-mario joined
|
|||
geekosaur | (having my first serious C program be a BBS meant some interesting long distance calls at odd hours...) | 15:36 | |
[TuxCM] | just testing for the file is void. loading the lib needs specific ENV vars | ||
and it makes porting OSS very hard, as most of the projects remove the library before the add the objects | 15:37 | ||
that means you have to build for 32bit, safe the lib, rebuild for 64bit | 15:38 | ||
ugexe | without an argument to absolutify i dont see how, with its current attributes/methods, to determine the actual absolute path | ||
[TuxCM] | use ENV and ar flags to add the objects from the saved lib to add those to the newly created lib | ||
15:39
yqt left
|
|||
[Coke] | jnthn: how might I get a list of all the characters that are combiners? | 15:42 | |
jnthn | m: (^1000).grep({ uniprop($_, 'Canonical_Combining_Class') != 0 }).map(&uniname).say | 15:43 | |
camelia | rakudo-moar b1a56a: OUTPUT«COMBINING GRAVE ACCENT COMBINING ACUTE ACCENT COMBINING CIRCUMFLEX ACCENT COMBINING TILDE COMBINING MACRON COMBINING OVERLINE COMBINING BREVE COMBINING DOT ABOVE COMBINING DIAERESIS COMBINING HOOK ABOVE COMBINING RING ABOVE COMBINING DOUBLE ACUTE ACCENT CO…» | ||
jnthn | But look beyond the first 1000, of course ;) | ||
timotimo | m: say 100.&uniprop('Canonical_Combining_Class') | 15:45 | |
camelia | rakudo-moar b1a56a: OUTPUT«0» | ||
15:48
spider-mario left
|
|||
[Coke] | weird, getting Cannot convert string to number: base-10 number must begin with valid digits trying to compare to 0. | 15:50 | |
jnthn | Oh, maybe you're tripping up on unassigneds... | 15:51 | |
Or "Not_Reordered" or so | |||
jnthn forgot the Unicode data isn't all integers | |||
timotimo | turns out i didn't find any gnome introspection stuff for gtksourceview because it's called "GtkSource-3.0.typelib" | ||
and i saw it and was like "... that's not it for sure" | 15:52 | ||
15:52
telex left
|
|||
[Coke] | jnthn: '888':'Not_Reordered' | 15:52 | |
easy enough to fix. :) | |||
jnthn | .grep({ +uniprop($_, 'Canonical_Combining_Class') }) may do it | ||
TimToady | m: .say for (^1000).grep({ uniprop($_, 'Canonical_Combining_Class') ne 0 }).map(&uniname) | ||
camelia | rakudo-moar b1a56a: OUTPUT«COMBINING GRAVE ACCENTCOMBINING ACUTE ACCENTCOMBINING CIRCUMFLEX ACCENTCOMBINING TILDECOMBINING MACRONCOMBINING OVERLINECOMBINING BREVECOMBINING DOT ABOVECOMBINING DIAERESISCOMBINING HOOK ABOVECOMBINING RING ABOVECOMBINING …» | ||
jnthn | Or that... | 15:53 | |
hoelzro | o/ #perl6 | ||
15:54
telex joined
|
|||
hoelzro | jnthn++ # fixing RT issues | 15:57 | |
15:59
RabidGravy left
|
|||
dalek | ecs: 91635d4 | jnthn++ | S14-roles-and-parametric-types.pod: Elaborate on meta-structure of roles. This also explains and justifies making `our` declarations inside of roles a compile-time error. |
15:59 | |
ast: 42f32cc | jnthn++ | S (2 files): Remove tests out of line with current design. |
16:02 | ||
ast: a722e02 | jnthn++ | S14-roles/basic.t: Update test to match current design. While the ticket complained about our $.x and my $.x in roles, only the former was covered in the test. This changes it to cover the latter, which is valid. |
|||
kudo/nom: 05edaa4 | jnthn++ | src/ (2 files): Don't allow our packages inside of roles. |
|||
kudo/nom: e80b49a | jnthn++ | src/Perl6/ (2 files): Disallow our-scoped subs in roles. |
|||
kudo/nom: 31a083f | jnthn++ | src/Perl6/Actions.nqp: Disallow our-scoped variables in roles. |
|||
16:04
spider-mario joined,
sunwenjie left,
sunwenjie joined
|
|||
ab6tract | .ask psch the module loader code for NQP... is there no native-Java way to find a class? can't we just s/::/./ and load the class? I know that CLASSPATH issues are notoriously common in Java, but still... | 16:05 | |
yoleaux | ab6tract: I'll pass your message to psch. | ||
[Coke] | m: say "a" ~ chr(774); | 16:06 | |
camelia | rakudo-moar b1a56a: OUTPUT«ă» | ||
ab6tract | at present, even though I have '.' in my CLASSPATH, I cannot load a ./Module.class or ./Module.java via use Module:from<Java> (using a short, stupid name for the sake of example) | ||
dalek | c: fd4b367 | jdv79++ | lib/Language/concurrency.pod: Start of section on safety. |
16:08 | |
ast: f205c13 | jnthn++ | S14-roles/namespaced.t: Test RT #73390, RT #100468, RT #88750, RT #76450. |
16:09 | ||
jnthn | There's another of those 6-year-old tickets dealt with :) | 16:11 | |
16:11
RabidGravy joined,
chansen_ joined
|
|||
TimToady | jnthn: what's your feeling on when we should start hacking seriously on GLR? | 16:12 | |
16:12
clkao joined
|
|||
jnthn | TimToady: "Soon" :) | 16:13 | |
TimToady: I have very few $dayjob responsibilities this month | 16:14 | ||
TimToady: Uh, for Aguust I mean :) | |||
*August | |||
TimToady | do you think we can get it out for the Aug release? | ||
jnthn | If we can be decisive enough about things. | ||
I was pondering the various types and their relationships on the flight home last night | 16:15 | ||
16:16
donaldh left
|
|||
TimToady | we definitely need to make a harder distinction between iterators and lazy arrays-of-non-containers | 16:16 | |
jnthn | Indeed | ||
[Coke] | tux, lizmat, jnthn : here's uchar -d: gist.github.com/coke/a6185c6ecdeec5e83bd3 | ||
m: say "3" neq "4" | 16:17 | ||
camelia | rakudo-moar b1a56a: OUTPUT«5===SORRY!5=== Error while compiling /tmp/iFFgkRq0Q3Two terms in a rowat /tmp/iFFgkRq0Q3:1------> 3say "3"7⏏5 neq "4" expecting any of: infix infix stopper postfix statement end sta…» | ||
[Coke] | I wonder if adding a helpful message there about using "ne" instead of "neq" would help. | 16:18 | |
jnthn | I pondered a bit what happens if we make List be what Parcel is now, only Array gets .shift and friends, and we have some type (I called it Generator to have a working name) for things that produce values but aren't committed to keeping them around. | ||
TimToady | what's "neq"? | ||
jnthn | And it turned out that nearly everything produced a Generator... :P | ||
TimToady | did you mean !eq? | ||
[Coke] | TimToady: it's how pascal-like languages spell ne. | ||
16:18
pnu joined
|
|||
jnthn | And then it wasn't clear what type thigns like .eager, .hyper, etc. produced. | 16:19 | |
[Coke] | just took me a second to figure out I wasn't writing coldfusion. :) | ||
16:19
ggherdov joined
|
|||
TimToady | jnthn: I think of those as negotiators | 16:19 | |
jnthn | Do you have a feel for how "deep" they go? | 16:20 | |
.map(...).map(...).hyper # is the hyper just about that final map? | |||
TimToady | I'm hoping it goes deeper, for optimization purposes | 16:21 | |
you'd like to be able to hand nested mappings to a single processor, so you don't have pipelining overhead along with threading | 16:22 | ||
(my gut tells me) | |||
jnthn | Right, that's the desirable thing about it going deeper | ||
16:22
FROGGS joined
|
|||
jnthn | The problematic bit is @thing-i-don't-know-about.map(...).hyper | 16:22 | |
16:23
zoosha joined
|
|||
jnthn | And I've no idea if the thing I don't know about can have any unevaluated things safely evaluated over many threads. | 16:23 | |
In other words, I'm worrying about composability. | |||
As a data point, PLinq (the .Net parallelized implementation of map, grep, etc.) makes you mark out where in a pipeline it's safe to parallelize, and then lets you opt out of it again deeper in. | 16:24 | ||
16:24
Spot__ joined
|
|||
jnthn | So it has a "region" it knows you've declared safe. | 16:24 | |
TimToady | well, everything would need to know the range of its capabilityes, and the negotiation restricts that actual possibilities to the intersection of the output and input capabilities | 16:25 | |
I also see interational ops as returning a negotiator, and it's not till someone actually starts pulling stuff that you actually set up the whole pipeline | 16:26 | ||
jnthn | Sure, but sub foo() { my %h; $file.words.map({ %h{$_}++ }) }; foo.map(...).hyper # how do we know the map inside of the thing returned from the sub will be upset by parallelism during the neogiation? | ||
TimToady | perhaps that's like what you're saying about opting out later | ||
jnthn | Oh, I can easily agree on not setting up the pipeline until we actually start pulling stuff. That's exactly the way Supply pipelines work. | 16:27 | |
TimToady | good question | ||
jnthn | I think my question is orthogonal (and better captured by the example I just gave) | 16:28 | |
TimToady | I suppose in that particular case we've got to notice that the map refers to something extern that is not threadsav^Hfe | ||
sorry for typos, laggy connection... | |||
jnthn | np | ||
16:28
FROGGS left
|
|||
jnthn | Well, it's really easy for not threadsafe things to get disguised though... Which is why we've tended towards explicit things like .hyper and .race to opt in and say "I promise this is safe" | 16:29 | |
TimToady | so maybe we need to separate the markers for can-hyper vs want-hyper somehow | 16:31 | |
or can-whatever-this-pipeline-can | |||
jnthn | Maybe something like that, yeah. | ||
I'd really like to take care of .hyper and .race during the GLR work, anyways. So we are sure we have the API to do them. | |||
(Or didn't do anything to stop us having them.) | |||
16:31
ab6tract left
16:32
dakkar left
|
|||
TimToady | if we do one level to start, let's at least not preclude deeper | 16:32 | |
16:34
araujo joined
|
|||
jnthn | *nod* | 16:34 | |
16:34
araujo left
|
|||
TimToady | if we negotiation a strictly lazy pipeline, can we get to the point where our getters are just nested closures, or does that buy us anything over an OO approach? | 16:34 | |
jnthn | Well, at the moment we do far better at optimizing chains of method calls than nested closures | 16:35 | |
16:35
araujo joined
|
|||
jnthn | Both on Moar and on JVM | 16:35 | |
We can inline method calls successfully already. | |||
TimToady | okay | ||
a bunch of metaops are done with FP currently though | 16:36 | ||
jnthn | We don't do well at inlining things that close over outer state so far. | ||
Yeah, we may want to refactor some of that. The operators themselves don't tend to close over anything, so should be inlinable. | |||
Well, not sure they are now, but that's an achievable amount of work, I think. | 16:37 | ||
(In the context of meta-ops, I mean. We can inline most operators in "normal" use.) | 16:38 | ||
Anyway, I'd lean to a more object-y API for iterators. | |||
TimToady | well, most of 'em need state anyway | ||
smls | jnthn: In your GLR idea, what would be the difference between Generator and Iterator? | 16:39 | |
yoleaux | 06:25Z <timotimo> smls: could you be super nice and fetch the newest dll files for gtk-simple for me to put onto hack? or maybe give me a script or instructions where they can be found, exactly? also, if you could grab gtksourceview-3 in addition to what we already have, that'd be swell :) | ||
jnthn | Aye, but if that's carried in attributes, we're really good at optimizing access to those. | ||
smls | hm, timotimo's message was not meant for me was it? | 16:40 | |
jnthn | smls: Generator = a think that produces values if iterated | ||
*a thing | |||
16:41
captain-adequate joined,
diana_olhovik_ left
|
|||
timotimo | smls: not? | 16:41 | |
jnthn | And the Iterator is the thing you actually use to obtain values. | ||
smls | timotimo: Well, I don't understand what it's about | ||
timotimo | you are right | 16:42 | |
i really wanted retupmoca | |||
i just lazily looked at the GTK::Simple git log | |||
smls | ah :) | 16:43 | |
dalek | rl6-roast-data: 51374e9 | coke++ | / (9 files): today (automated commit) |
||
16:43
espadrine left
|
|||
TimToady | jnthn: I dunno, stackoverflow.com/questions/1022564...-generator seems to say it kinda the other way around | 16:44 | |
in any case, the concepts kinda blur when you're mixing FP and OO | |||
I never could keep them straight :) | |||
jnthn | If you know who C# does it, then I'm using Iterator for something like IEnumerator (but we'll need to fold a good bit more into ours) and Generator for IEnumerable | 16:45 | |
*how | |||
But really, I'm using Generator for "the type of thing you get from .map, xx, lines, etc." - something you actually normally encounter as a programmer | 16:46 | ||
[TuxCM] | [Coke], mine also takes into account which of those are supported by the current font. That might be why you got those X errors | ||
TimToady | by the SO definition, a generator is just an iterator with an implicit object somewhere, and an iterator is an object that supplies a generator-like method | ||
jnthn | And Iterator as the API used to pull things through the pipeline. | ||
16:47
rurban joined
|
|||
jnthn | Well, I'm mostly trying to say that the type genCountingNumbers() returns is something user-visible, but the thing your implementation of map (or for) obtains in order to actually walk through the values is something else. | 16:48 | |
(It *is* user-visible I guess, but you rarely need to work at that level.) | |||
TimToady | right, map/for really interrogate their argument (singular) for an iterator to pull from | 16:50 | |
jnthn | So for $value -> $x { ... } is roughly my $tmp1 = $value.iterator; my $tmp2 = -> $x {...}; while $tmp1 { $tmp2($tmp1.pull) } | ||
TimToady | right | 16:51 | |
and we'll have to teach p5 programmers that there aren't really any lists, syntactically speaking, just singular objects that can behave like lists | 16:52 | ||
well, except insofar as comma is syntactic | 16:53 | ||
smls | jnthn: "Iterator as the API used to pull things through the pipeline" -- isn't that Iterable (the role) rather than Iterator (the class)? | ||
jnthn | smls: Iterator probably is a role | ||
smls | oh | ||
jnthn | Like IEnumerator is | ||
smls | m: say Iterable; say Iterator; | ||
camelia | rakudo-moar 31a083: OUTPUT«(Iterable)(Iterator)» | ||
timotimo | "Iterable" sounds more like something you can grab earlier values out of - or perhaps only "start again from the beginning"? | ||
jnthn | smls: I'm not talking about how things are now, but how I think they should be post-GLR, fwiw. | 16:54 | |
TimToady | smls: if you're asking about how it is now, it's confused now | ||
16:54
smls left
|
|||
jnthn | And Iterable is just something like role Iterable { method iterator() { ... } } | 16:54 | |
16:54
smls joined
|
|||
TimToady | we overloaded .list for too many things | 16:54 | |
jnthn | Indeed, and the List type. | ||
smls | ok | ||
jnthn | Anyway, I'll maybe avoid using the word Generator 'cus it's perhaps loaded in ways I didn't intend. | 16:55 | |
16:55
raiph left
|
|||
jnthn | I mostly mean "a thingy that, when iterated, may forget its values" | 16:56 | |
TimToady | but if we think of a gather/take as a generator, it kinda fits into the notion that you have code producing values rather than an object | ||
jnthn | Well, gather/take is one of the things I'd have said returns a Generator in the way I used the word, yes | ||
smls | pmichaud proposed 'Seq' as a provisional name for that, didn't he? | ||
jnthn | But it turns out that almost every list operation then will | ||
smls: Yes | 16:57 | ||
TimToady | internal types don't really need short names though | ||
jnthn | I could live with that name for it too | ||
Well, I don't see it as internal | |||
my $thing := gather ...; # $thing would be whatever the type we're talking about is called | |||
TimToady | okay | 16:58 | |
16:59
itz left
|
|||
jnthn | The "what happens when the thing gets a name so can be iterated multiple times" question is the fun one. | 16:59 | |
TimToady | does it make sense for me to continue trying to prototype things from the top down? or will everything naturally rewrite itself from the bottom up in time for us to play with it? | 17:00 | |
jnthn | Which led me to wonder if the thing gather and friends return has some .memoize() method, and ::='ing it into an @foo would call that for you, at which point it has to remember. | ||
TimToady | I don't think iterators ever promise to be reiterable, but maybe I could be wrong sometimes | 17:01 | |
jnthn | It's not the *iterator* that promises | ||
It's the source of values the iterator lets you move through. | |||
TimToady | well, if you're bind it to something that promises, then you have to remember the values | ||
but you're not talking about caching values here? | 17:02 | ||
timotimo | you really mean ::=? | ||
compile-time bind? | |||
smls | Btw, what is the motivation for having it as a different type from List (rather than a property that a List may have)? | ||
jnthn | TimToady: I mean "what signature binding does", which we already know is distinct from := | ||
TimToady | ::= isn't compile-time bind | ||
jnthn | uh, ^ was for timotimo :) | ||
TimToady | smls: what is "it"? | 17:03 | |
smls | Generator | ||
timotimo | oh, that's :::= ? | ||
TimToady looks worriedly at timotimo | 17:04 | ||
ChoHag | Did I stumble into a Gilette board meeting? | ||
timotimo | .. didn't we have something like that at some point? | ||
jnthn | sub foo(@x) { say @x.elems; for @x { .say } }; foo(lines()) | ||
17:04
Hor|zon left
|
|||
TimToady | give away the handle, sell the razors | 17:04 | |
timotimo: are you confusing the readonly that ::= does with compile time? | 17:05 | ||
jnthn | I'm saying that the above isn't going to work if we don't at some point do something to make whatever we bind to @x remember the values produced by lines | ||
TimToady | readonly is still a runtime concept | ||
timotimo | ... maybe? i remember something like that from somewhere ... sorry for the noise | ||
jnthn | And we need to pick carefully any places that happens "magically" | ||
sub foo(\x) { say x.elems; for x { .say } }; foo(lines()) # I'd maybe expect this to *not* work out well, for example | |||
TimToady | my inclination is to attach that to the @ sigil | 17:06 | |
jnthn | Mine too | ||
TimToady | maybe we can sell razor subscriptions as well, and encourage people to change their razors more often than they otherwise would | ||
jnthn | I suspect we're probably at the point where I need to start writing the bottom-up code so we have something more concrete to work around. | 17:07 | |
TimToady | it would relieve my anxiety a bit if we got started on it :) | ||
b2gills | TimToady: really it should be looked at from both bottom up and top down ( thinking like that has helped John Deere at their manufacturing plants ) | 17:08 | |
jnthn | TimToady: Yes, mine too ;) | 17:09 | |
And now I'm successfully married, relocated, don't have a course to finish writing, and don't feel dizzy half the time any more, I'm in a decent place to work on it :) | 17:10 | ||
17:11
njmurphy joined
|
|||
ChoHag | jnthn: Recently married? | 17:11 | |
I suggest not having kids if you like programming. | |||
TimToady | hey, I had four | ||
ChoHag | You got the rest of the world to do your programming for you. | 17:12 | |
timotimo | thing is, babbies don't come with JTAG | ||
jnthn | :) | ||
TimToady | actually, I made enough programming that I could afford a stay-at-home wife | 17:13 | |
but yes, in the sense that the real programming is mostly out on CPAN, I agree | |||
Perl was the razor handle, and CPAN the blades | 17:14 | ||
jnthn needs a keyboard break, not to mention a dinner break... | |||
I'l bbl | |||
TimToady should go get his car smogged... | |||
jnthn | I thought it was the car that made the smog? :) | ||
TimToady | desmogged | ||
jnthn | Maybe that's just in Beijing... | ||
Anyway, back in a bit :) | 17:15 | ||
TimToady | one of those classes of words where the negation means the same thing; I peeled the banana, I unpeeled the banana | ||
ChoHag | Speak of the devil (is that the right phrase...?) my daughter's back. | ||
jnthn | .oO( I untyped on IRC ) |
17:16 | |
17:22
xfix left,
preyalone joined
17:24
mr-foobar joined
17:26
diana_olhovik joined
17:46
abraxxa left,
llfourn left
17:56
Hor|zon joined
|
|||
ChoHag | What's the 'right' way to get the class name of self? | 17:59 | |
self.WHAT.perl works but looks like it a 'wrong' way. | |||
timotimo | self.WHAT.name sounds like a better idea | 18:00 | |
m: say "foo".WHAT.name | |||
camelia | rakudo-moar 31a083: OUTPUT«Method 'name' not found for invocant of class 'Str' in block <unit> at /tmp/JbfgZkudu1:1» | ||
timotimo | er | ||
m: say "foo".WHAT.^name | |||
camelia | rakudo-moar 31a083: OUTPUT«Str» | ||
timotimo | is what i meant | ||
m: say "foo".^name | |||
camelia | rakudo-moar 31a083: OUTPUT«Str» | ||
18:03
Ven_ left
|
|||
ChoHag | Thanks. | 18:04 | |
18:07
rurban left
18:10
cognominal_ joined,
jinxter joined
18:13
cognominal left
18:21
domidumont joined
18:23
dwarring joined
18:25
domidumont left
18:26
domidumont joined
18:29
cognominal__ joined
18:32
flussenc1 joined,
TEttinger joined
18:34
sergot_ joined,
nowan_ joined,
zoosha_ joined,
chansen_ left,
flussence left,
robinsmidsrod left,
cognominal_ left,
zoosha left,
rindolf left,
sergot left,
nowan left
18:36
rindolf joined
|
|||
leont | Awesome, moar is crashing with a "double free or corruption"x85 | 18:37 | |
18:37
vendethiel joined
|
|||
tadzik | Lovely :) | 18:37 | |
18:38
jinxter left,
jinxter joined
|
|||
RabidGravy | noice | 18:38 | |
18:41
flussenc1 is now known as flussence
|
|||
timotimo | ouch | 18:42 | |
you can Configure.pl your moarvm with --asan | |||
that'll give you lots of diagnosis info | |||
18:42
chansen_ joined
18:43
diana_olhovik left
18:46
diana_olhovik_ joined
18:51
[Sno] left
18:55
jinxter left
|
|||
leont | It's in mutli-threaded code, so the mistake may be mine, but if so it's subtle | 18:56 | |
timotimo | right, i'm just now handling a segv in a six-threaded program | 18:57 | |
jnthn | Well, we still shouldn't SEGV ever, unless you screw up with NativeCall | ||
The one timotimo has was hit by someone else not long ago too | 18:58 | ||
18:59
robinsmidsrod joined
|
|||
timotimo | well, this is also with nativecall | 19:00 | |
but nativecall shouldn't cause the gc to stumble over a nulled STable | |||
19:00
dolmen left
|
|||
jnthn | Right, this is clearly a GC bug | 19:00 | |
19:02
Ven joined
|
|||
[Coke] sees a lot of non-git-friendly commit messages in the past 2 weeks or so. | 19:03 | ||
timotimo | hm? | ||
[Coke] thinks git friendly has the gist of the commit in the first...50ish characters. | |||
timotimo | oh, text on the second line? | ||
hobbs | short first line, blank line, paragraphs after | 19:04 | |
jnthn tries to stick to that | |||
I edit the messages with Vim which does pretty colors to tell me off if I'm getting it wrong :) | |||
timotimo has trouble making the first line very short most of the time | |||
yup | |||
ChoHag | "Hacked on stuff. See below." | 19:07 | |
timotimo | that's not helpful :) | ||
ChoHag | Accurate though. | ||
timotimo | that's both true for so many things :) | 19:08 | |
19:08
Ven left
|
|||
flussence | the summary line is supposed to reflect what's in the commit itself, so if the summary itself is too big... | 19:10 | |
.oO( ...use a smaller font size ) |
|||
19:13
dolmen joined
19:14
zakharyas joined
19:22
baest left
|
|||
timotimo | sometimes i already struggle with a one-line-change | 19:24 | |
19:25
yqt joined
19:27
virtualsue left
19:41
esaym153 joined
|
|||
ChoHag | I guess there's always tweet-speak. | 19:41 | |
esaym153 | so, totally off topic... what cell phone does Larry Wall (TimToady) use? :) | ||
timotimo | is that very different from txtspk? | 19:42 | |
ChoHag | I don't really know the details. I'm too old for both. | ||
I just know it's basically compression. | |||
timotimo | hm-hm | ||
ChoHag | Lossy. | ||
19:42
preyalone left
19:43
llfourn joined
19:46
amurf joined
19:47
llfourn left
19:50
amurf left
19:56
Ven joined,
Ven left
20:00
darutoko left
20:02
virtualsue joined
20:07
virtualsue left,
virtualsue joined
20:08
virtualsue left,
virtualsue joined
20:09
virtualsue left,
virtualsue joined
20:11
[Sno] joined
|
|||
dalek | pan style="color: #395be5">perl6-examples: 7e9c6c0 | (Steve Mynott)++ | categories/cookbook/17sockets/17-01tcp_client.pl: .sock to .print |
20:18 | |
itz__ | .send that is :/ | ||
20:24
rurban joined
|
|||
dalek | c: 45a260a | paultcochrane++ | lib/Type/IO/ArgFiles.pm: Document $*ARGFILES |
20:25 | |
20:26
lucasb joined
|
|||
lucasb | m: fail | 20:28 | |
camelia | ( no output ) | ||
lucasb | should that... fail? | 20:30 | |
20:30
zakharyas left
|
|||
timotimo | hm, the last statement gets sunk | 20:31 | |
it should throw, shouldn't it? | |||
lucasb | yeah, I was expecting it to fail; I'm on an outdated revision locally, and it throws here | 20:33 | |
20:34
virtualsue left
20:37
ChoHag left
20:38
raiph joined
20:43
llfourn joined
20:48
llfourn left
20:49
coffee` left
20:50
Khisanth left
20:51
Khisanth joined
|
|||
ab5tract_ is still marvelling at moar's speed when while looping with native integers | 20:52 | ||
*when while-looping | 20:53 | ||
21:01
skids left
21:03
dj_goku_ joined,
dj_goku_ left,
dj_goku_ joined
21:04
mattp__ joined
21:05
leont left,
Psyche^_ left,
dj_goku left,
apejens joined,
Psyche^ joined
21:06
leont joined
|
|||
ab5tract_ | ugexe: I'm enjoying your posts about zef! | 21:07 | |
21:08
virtualsue joined
|
|||
ab5tract_ | my @basenames = @processes.flatmap(*.flat).flat>>.id>>.IO>>.basename; # this line makes me sad though | 21:11 | |
I was going to try to convince you that `@processes.map: *.id.IO.basename;` was an even cleaner why to write what you wanted. | 21:12 | ||
but it looks like you've already had to adjust the code for flattening | 21:13 | ||
21:14
raiph left
21:17
jjido joined
21:20
lucasb left
21:22
raiph joined
|
|||
tony-o | hail zef | 21:22 | |
21:27
muraiki left,
diana_olhovik_ left
|
|||
ab5tract_ | m: module N { our $foo = "thingy"; our $thingy = "other thingy"; }; say N::<<\${N::<$foo>}>>; say my $other ="\${N::<$foo>}"; say N::<<$other>>; | 21:30 | |
camelia | rakudo-moar 31a083: OUTPUT«(Any) (Any)$thingyother thingy» | ||
ab5tract_ | ah, wait.. I'm misunderstanding << >> in this context | 21:31 | |
tony-o | what are you sinking it means? | ||
ab5tract_ | tony-o: well, actually I was misholding it for every context. | ||
m: module N { our $foo = "thingy"; our $thingy = "other thingy"; }; say N::<<"\${N::<$foo>}">>; | 21:32 | ||
camelia | rakudo-moar 31a083: OUTPUT«other thingy» | ||
21:33
domidumont left
|
|||
ab5tract_ | I was thinking of it as qq{ } rather than qw( ) (to explain it in p5 terms) | 21:34 | |
ugexe | ab5tract_: thanks. that line is so convoluted because now my processes structure looks like [[1,2,3],[4],[5,6]] (chunks to process in parallel), so i had to shoehorn that in to get by for now | 21:55 | |
TimToady | hopefully this gets more betterer after GLR | 21:57 | |
timotimo | many people are counting on it :P | 21:58 | |
22:04
geekosaur joined
22:16
rurban left
|
|||
tony-o | ===> Precompiling [done] | 22:16 | |
oops | |||
22:18
telex left
22:20
telex joined
|
|||
dalek | kudo-star-daily: 525a101 | coke++ | log/ (9 files): today (automated commit) |
22:25 | |
22:31
smls left
22:32
rangerprice joined
22:34
rangerprice left
|
|||
ab5tract_ | ugexe: I see.. I wonder if this snippet offers anything useful: | 22:36 | |
m: my @f.push: [<oo ooo oooo>] xx 20; ( @f.values.map: { [ @($^g)>>.succ ] } ).perl.say | |||
camelia | rakudo-moar 31a083: OUTPUT«(["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["…» | ||
22:38
vendethiel left
|
|||
ab5tract_ | that's the (arguably, of course) cleanest approach for operating on every element of a uniformly [ [],[],[],.. ] LoL | 22:39 | |
it was certainly the cleanest that I was able to muster | |||
22:43
skids joined
22:44
hoelzro_ii left,
llfourn joined
|
|||
ugexe | my @basenames = @processes.values.map: { @($^a)>>.id>>.IO>>.basename } # same number of characters, but agree its cleaner. ab5tract_++ | 22:48 | |
22:48
llfourn left
|
|||
jjido | ab5tract_: funny. I guess operating on the first character instead of last would not be as "clean" | 22:48 | |
ugexe | >>.reverse>>.succ>>.reverse :o | 22:49 | |
ab5tract_ | jjido: not sure what you mean | 22:50 | |
jjido | m: my @f.push: [<oo ooo oooo>] xx 20; ( @f.values.map: { [ @($^g)>>.succ>>.reverse ] } ).perl.say | 22:51 | |
camelia | rakudo-moar 31a083: OUTPUT«(["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["op", "oop", "ooop"], ["…» | ||
jjido | m: my @f.push: [<oo ooo oooo>] xx 20; ( @f.values.map: { [ @($^g)>>.succ]>>.reverse } ).perl.say | ||
camelia | rakudo-moar 31a083: OUTPUT«((("op",), ("oop",), ("ooop",)), (("op",), ("oop",), ("ooop",)), (("op",), ("oop",), ("ooop",)), (("op",), ("oop",), ("ooop",)), (("op",), ("oop",), ("ooop",)), (("op",), ("oop",), ("ooop",)), (("op",), ("oop",), ("ooop",)), (("op",), ("oop",), ("ooop",)),…» | ||
jjido | oh well. I was joking about "poo" | 22:52 | |
ab5tract_ | ugexe: you know, I've been really enjoying how concise >>. is. then as soon as I have to do something like >>.method>>.chain>>.for>>.days, I start to wish for something even more precise! | ||
#perl6-problems | |||
ugexe | i know your pain | 22:53 | |
ab5tract_ | jjido: haha! it's late here, that was my fault for not getting the joke ;) | ||
speaking of which, I think I'm going to call it a night | |||
jjido | ok good night | ||
22:57
RabidGravy left
|
|||
ab5tract_ | not to poo all over the place but.. | 23:03 | |
m: "ooo".succ.comb.reverse.join # this works | |||
camelia | ( no output ) | ||
ab5tract_ | m: "ooo".succ.comb.reverse.join.say # this works | 23:04 | |
camelia | rakudo-moar 31a083: OUTPUT«poo» | ||
ab5tract_ | @(["ooo" xx 20])>>.succ>>.comb>>.reverse>>.join.say # should I expect this to work? | ||
if not, how can we determine under which conditions a hyper-chain of methods would differ from it's non-hyper behavior | 23:06 | ||
m: @(["ooo" xx 20])>>.succ>>.comb>>.reverse>>.join.say # oop s ;) | |||
camelia | rakudo-moar 31a083: OUTPUT«o o p o o p o o p o o p o o p o o p o o p o o p o o p o o p o o p o o p o o p o o p o o p o o p o o p o o p o o p o o p» | ||
ab5tract_ | okay, that was too muc time spent on 'poo'.. out for real now :) | 23:07 | |
23:11
amurf joined
23:13
raiph left
23:15
inokenty left
23:18
Sgeo_ joined
|
|||
Sgeo_ | Does (1|2|3) + (4|5|6) make sense? By analogy with Haskell's List monad, I would expect 5|6|7|6|7|8|7|8|9 or 5|6|7|8|9 if duplicates automatically get removed | 23:19 | |
23:19
virtualsue left
23:21
Peter_R joined
|
|||
TimToady | m: say (1|2|3) + (4|5|6) | 23:29 | |
camelia | rakudo-moar 31a083: OUTPUT«any(any(5, 6, 7), any(6, 7, 8), any(7, 8, 9))» | ||
TimToady | it doesn't dedup at the moment | ||
23:30
jjido left
|
|||
Sgeo_ | Would that nesting cause it to behave differently from 5|6|7|6|7|8|7|8|9? | 23:30 | |
TimToady | well, junctions aren't ordered, but if you wrote that junction, it should work the same, I think | 23:31 | |
Sgeo_ | m: say so 8 == ((1|2|3) + (4|5|6)) | ||
camelia | rakudo-moar 31a083: OUTPUT«True» | ||
TimToady | m: say 5|6|7|6|7|8|7|8|9 | ||
camelia | rakudo-moar 31a083: OUTPUT«any(5, 6, 7, 6, 7, 8, 7, 8, 9)» | ||
TimToady | doesn't dedup even there really | ||
Sgeo_ | Not as interested in the dedup as I am in the nesting | 23:32 | |
I can't make my own not-Anys that twist around the meaning of calls that have them as arguments that are expecting Any, can I? | 23:33 | ||
TimToady | well, the outside of Any is reserved for future concepts, so the intent is to support that sort of thing eventually | 23:35 | |
we only use it for Junction currently | |||
so I don't know how hardwired the Junction dispatch is, or whether it would handle other types | 23:37 | ||
ShimmerFairy | IIRC "Each" once existed and was outside of Any too, and it was similar to Junction. | 23:39 | |
23:40
spider-mario left
|