»ö« 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. |
|||
[Coke] | gist.github.com/coke/6893912 - that look ok for annotation of what goes on what vm? | 00:00 | |
no annotation, assumed cross platform? | |||
diakopter | timotimo@host07:~/nqp$ install/bin/moar --dump nqp.moarvm >foo.out | 00:02 | |
Segmentation fault | |||
apparently the bytecode dumper has bitrotted. | |||
also, why am I suddenly timotimo | |||
[Coke] | hacxksz0r | ||
jnthn | sleep & | 00:08 | |
00:11
dayangkun joined
00:12
Psyche^_ joined
00:14
PZt joined
00:15
grondilu left,
Psyche^ left
00:17
prevost joined
00:31
prammer left,
prammer joined
00:38
skids joined
00:48
xenoterracide_ left
01:00
logie left,
logie joined
01:15
benabik joined
01:16
jnap left
|
|||
pmichaud | r: say $*VM | 01:19 | |
camelia | rakudo d7e5e1: OUTPUT«("name" => "parrot", "config" => {"git_describe" => "RELEASE_5_5_0", "sha1" => "9c5c7927a9aa6e3a949a83a5d13efb88101b8c02", "a" => ".a", "ar" => "ar", "ar_extra" => "", "ar_out" => "", "archname" => "x86_64-linux-gnu-thread-multi", "arflags" => "cr", "as" => "as…» | ||
01:22
jnap joined
|
|||
dalek | p: 3e8834f | coke++ | / (2 files): Add vm-specific opcode information Now vm specific ops will not complain they are not defined on a non-targeted backend. (e.g "bootint") |
01:25 | |
[Coke] | only 196 more ops to document for the jvm. If 10 people did one a day... | 01:32 | |
01:39
prevost left
01:43
btyler joined
|
|||
dalek | p/pm-packfile-api: cbd4843 | pmichaud++ | src/vm/parrot/HLL/Backend.nqp: Update HLL::Backend::Parrot to use new EvalPMC/PackfileView API. Resolves issue #76, but requires a Parrot newer than RELEASE_5_7_0-20-g07dfdb4. See issue #76 for more details. |
01:43 | |
TimToady | j: say $*VM | ||
p/pm-packfile-api: 4aedfed | pmichaud++ | src/vm/parrot/stage0/ (9 files): Update bootstrap for use with new PackfileView API. |
|||
camelia | rakudo-jvm d7e5e1: OUTPUT«("name" => "jvm", "properties" => {"java.vm.version" => "24.0-b56", "sun.jnu.encoding" => "UTF-8", "java.vendor.url" => "java.oracle.com/", "java.vm.info" => "mixed mode", "user.dir" => "/home/p6eval_eval", "sun.cpu.isalist" => "", "java.awt.graphics…» | ||
01:45
zakharyas joined
|
|||
pmichaud | anyone going to mind if I bump NQP_REVISION ? | 01:46 | |
sorry | 01:47 | ||
rephrase: anyone going to mind if I bump PARROT_REVISION ? | |||
currently it's at REVISION_5_5_0 | |||
I'll take answers in scrollback | |||
01:52
stevan_ joined
|
|||
[Coke] | pmichaud: bump away. | 01:54 | |
nqp-jvm: class A { method barf() } ; say(nqp::can(A, "puke")); | |||
camelia | nqp-jvm: OUTPUT«Routine declaration requires a signature at line 2, near "() } ; say" in panic (src/stage2/gen/NQPHLL.nqp:279) in method_def (src/stage2/gen/NQP.nqp:1117) in routine_declarator:sym<method> (src/stage2/gen/NQP.nqp) in !protoregex (src/stage2/gen/QRegex…» | 01:55 | |
[Coke] | nqp-jvm: class A { method barf() {} } ; say(nqp::can(A, "puke")); | ||
camelia | nqp-jvm: OUTPUT«0» | ||
[Coke] | weird. from reading the code I'd expect that to throw an exception. | ||
nqp-jvm: class A { method barf() {} } ; say(nqp::findmethod(A, "puke")); | 01:56 | ||
camelia | nqp-jvm: OUTPUT«java.lang.NullPointerException in (src/stage2/gen/NQPCORE.setting:672) in print (src/stage2/gen/NQPCORE.setting:671) in say (src/stage2/gen/NQPCORE.setting:678) in (/tmp/CGjQpjKx5o:1) in (src/stage2/gen/NQPHLL.nqp:1098) in eval (src/stage2/…» | ||
diakopter | nqp-m: class A { method barf() {} } ; say(nqp::findmethod(A, "puke")); | 02:02 | |
camelia | nqp-moarvm: OUTPUT«Method puke not found in cache, and late-bound dispatch NYI at /tmp/vxY1ToM6Nt:2 (<ephemeral file>:frame_name_0:4294967295) from nqp-src/NQPHLL.nqp:1084 (./NQPHLLMoar.moarvm:frame_name_671:97) from nqp-src/NQPHLL.nqp:1070 (./NQPHLLMoar.moarvm:eval:87…» | ||
diakopter | moar++ | ||
dalek | p: 96ac0ce | coke++ | docs/ops.markdown: document more ops |
||
02:18
jnap left
|
|||
dalek | p/pm-packfile-api: 465b6e4 | pmichaud++ | tools/build/PARROT_REVISION: Bump PARROT_REVISION to require packfile api for EvalPMC. (Issue #76) |
02:28 | |
02:40
BenGoldberg left
02:46
odoacre_ left
02:58
odoacre joined
|
|||
[Coke] | nqp-jvm: my @a := nqp::split(" ", "a b c"); say(nqp::reprname(@a)); | 03:04 | |
camelia | nqp-jvm: OUTPUT«VMArray» | ||
03:05
BenGoldberg joined
|
|||
JimmyZ | nqp-m: my @a := nqp::split(" ", "a b c"); say(nqp::reprname(@a)); | 03:06 | |
camelia | nqp-moarvm: OUTPUT«VMArray» | ||
03:07
ggoebel5 joined
03:08
ggoebel4 left
03:13
d4l3k_ joined
|
|||
[Coke] | nqp-*: my @a := nqp::split(" ", "a b c"); say(nqp::reprname(@a)); | 03:14 | |
03:15
DrEeevil joined
03:16
Lorn joined
03:17
frettled_ joined,
japhb___ joined,
orevdiabl joined,
larks_ joined
03:18
bloonix_ joined,
ugexe_ joined,
airdisa left
03:22
prammer left,
dalek left,
Lorn_ left,
japhb__ left,
larks left,
hugme left,
ugexe left,
frettled left
03:23
d4l3k_ is now known as dalek,
fgq611 joined
03:24
prammer joined
|
|||
fgq611 | hi | 03:24 | |
03:24
hugme joined,
fgq611 left,
ChanServ sets mode: +v hugme
03:27
eternaleye left,
eternaleye joined
03:28
BenGoldberg left
03:30
PZt left
|
|||
[Coke] could use a help on why we have associative_get vs. atkey opcodes (same in jvm) | 03:42 | ||
03:54
preflex_ joined,
ChanServ sets mode: +v preflex_
03:55
preflex left,
preflex_ is now known as preflex
|
|||
dalek | p: 0d90396 | coke++ | docs/ops.markdown: minor formatting updates mark async* as jvm only for now. |
04:10 | |
p: 5543a71 | coke++ | docs/ops.markdown: doc more ops |
|||
[Coke] | 169 JVM ops left to document... | ||
diakopter | [Coke]: moarvm remaps associative_get to atkey_o | 04:12 | |
[Coke] | what does _o mean? | 04:13 | |
lue | Is there an easily obtainable list of camelia's compiler: commands? | ||
diakopter | camelia: halp | 04:14 | |
camelia: help | |||
camelia | diakopter: Usage: <(rakudo-jvm|nqp-jvm|star|pugs|nqp|std|niecza|rakudo|b|nqp-moarvm|nom|r|j|nqp-m|nqp-mvm|pnr|p6|nr|npr|n|perl6|rj|prn|rn|r-j|r-jvm|p|rnp|nrp|rpn)(?^::\s) $perl6_program> | ||
lue | duuur :) | 04:15 | |
[Coke] updates gist.github.com/coke/6799633 with a list of nqp ops needing docs or possible implementations on other vms. | 04:16 | ||
04:16
xenoterracide_ joined
|
|||
[Coke] | -> sleep | 04:16 | |
lue | .oO(Do we still need b: on the list?) |
04:17 | |
[Coke] | b: say "I will cut you." | 04:18 | |
camelia | b : OUTPUT«sh: 1: install/bin/perl6: not found» | ||
diakopter | [Coke]: _o means it grabs an object | 04:20 | |
(its output register is an object register) | 04:21 | ||
04:23
[Sno] left
04:24
PZt joined
|
|||
japhb___ | To any jakudo hackers: Pretty please can I have pipe open? :-) | 04:40 | |
04:51
btyler left
04:57
SamuraiJack joined
05:17
sftp_ joined
05:21
sftp left
05:22
Vlavv` left
05:25
sftp joined
05:26
[Sno] joined
05:27
Vlavv` joined
05:29
sftp_ left
|
|||
moritz | \o | 05:34 | |
r: subset Even of Int where * %% 2; multi f(Int) { 'Int' }; multi f (Even) { 'Even' }; say f 42 | |||
camelia | rakudo d7e5e1: OUTPUT«Even» | ||
05:42
FROGGS left
05:47
xenoterracide_ left
05:51
xenoterracide_ joined
06:07
kaleem joined
|
|||
masak | mng, #perl6 | 06:14 | |
r: subset Even of Int where * %% 2; subset Quaddy of Int where * %% 4; multi f(Even) { 'Even' }; multi f(Quaddy) { 'Quaddy' }; say f 42 | |||
camelia | rakudo d7e5e1: OUTPUT«Even» | ||
06:15
japhb__ joined
|
|||
masak | r: subset Even of Int where * %% 2; subset Quaddy of Int where * %% 4; multi f(Even) { 'Even' }; multi f(Quaddy) { 'Quaddy' }; say f 44 | 06:15 | |
camelia | rakudo d7e5e1: OUTPUT«Even» | ||
masak | huh. I thought it would ambiguous-dispatch on me. | ||
06:16
japhb___ left,
jnthn left
|
|||
masak | r: subset Even of Int where * %% 2; subset Quaddy of Even where * %% 4; multi f(Even) { 'Even' }; multi f(Quaddy) { 'Quaddy' }; say f 44 | 06:16 | |
camelia | rakudo d7e5e1: OUTPUT«Even» | ||
masak | :/ | ||
06:16
sciurius_ joined
06:17
sciurius left
|
|||
arnsholt | For a second I was worried you wanted it to infer that Quaddy was stricter. Good that I was mistaken =) | 06:18 | |
06:18
bloonix_ left,
bloonix joined
|
|||
masak | arnsholt: no, I'm aware of the depth+epsilon semantics. | 06:20 | |
06:20
jnthn joined
|
|||
masak | arnsholt: I'm just not seeing it here as I expect. | 06:20 | |
TimToady: re irclog.perlgeek.de/perl6/2013-10-08#i_7688648: | 06:22 | ||
TimToady: Has Anyone Really Been Far Even as Decided to Use Even Go Want to do Look More Like? | 06:23 | ||
diakopter | masak: | 06:24 | |
06:26
darutoko joined,
go|dfish left
|
|||
masak | LlamaRider: re irclog.perlgeek.de/perl6/2013-10-08#i_7688805 | 06:26 | |
LlamaRider: your wish is a common one, but generally it's not a good idea to add arbitrary automatic typecasting rules on top of a type system. | 06:27 | ||
06:27
baest joined
|
|||
masak | LlamaRider: the WAT makes the DWIM not worth it, most of the time. | 06:27 | |
baest! \o/ | |||
baest | masak: :) \o | 06:28 | |
masak | LlamaRider: `my Str(Match) @results;` should do what you want. | 06:31 | |
LlamaRider: you don't need to know what Cool is to understand the above. | 06:33 | ||
06:35
Lorn left
06:36
Lorn joined,
xenoterracide_ left
06:39
prammer left,
prammer joined
|
|||
masak | j: say 'oh wow' | 06:40 | |
camelia | rakudo-jvm d7e5e1: OUTPUT«oh wow» | ||
masak | j: say $*PERL.perl | ||
camelia | rakudo-jvm d7e5e1: OUTPUT«{"name" => "rakudo", "compiler" => {"codename" => "", "name" => "rakudo", "release-number" => "", "ver" => "2013.09-146-gd7e5e1d", "build-date" => "2013-10-08T19:30:31Z"}}» | ||
masak | j: say $*OS.perl | 06:41 | |
camelia | rakudo-jvm d7e5e1: OUTPUT«"Linux"» | ||
masak | j: say $*VM.perl | ||
camelia | rakudo-jvm d7e5e1: OUTPUT«{"name" => "jvm", "properties" => {"java.vm.version" => "24.0-b56", "sun.jnu.encoding" => "UTF-8", "java.vendor.url" => "java.oracle.com/", "java.vm.info" => "mixed mode", "user.dir" => "/home/p6eval_eval", "sun.cpu.isalist" => "", "java.awt.graphics…» | ||
masak | awesome. | ||
moritz++ | 06:42 | ||
06:43
Lorn left,
xenoterracide_ joined
|
|||
masak | lizmat: we agree on the expected semantics of :delete, nice. | 06:45 | |
lizmat: re array slots existing, we don't agree until you say <lizmat> and perhaps we should have a "is sparse" trait on arrays to allow :delete to work | |||
lizmat: basically, I feel that the case for outright removing array slots is much, much weaker for arrays because of their ordering/0..N-1 semantics. | 06:46 | ||
06:46
Lorn joined
|
|||
masak | lizmat: that is, if all :delete ever did was restore that slot to Any (or whatever default of the array), that would not be surprising to me. | 06:47 | |
lizmat: the slot winking out of existence would be surprising to me. .elems not returning N would be *very* surprising to me. | |||
lizmat: but most of all, I don't see a use case for that behavior. IMO, sparse arrays in that sense shouldn't be the default. what people want from arrays most of the time is push/pop/shift/unshift, indexing, and maybe slicing/splicing. sparse arrays come very far down on the wishlist. | 06:48 | ||
r: my @a; @a[3] = 1; say @a[^4]:exists | 06:50 | ||
camelia | rakudo d7e5e1: OUTPUT«False False False True» | ||
masak | in summary, I'd expect that to say "True True True True". | ||
lizmat | good morning, masak | 06:51 | |
masak | morning :) | 06:52 | |
I don't know if that's current consensus semantics -- probably not. and I might change my mind based on more discussion. but talking about array elements "not existing" doesn't seem useful to me. | |||
now, granted, you've been delving deeper into the internals of these things than I have... | |||
...so you might have some extra insight in it that I'm missing. | 06:53 | ||
moritz | \o | ||
masak | o/ | ||
lizmat | If you want those semantice, then :delete would not make an array element unexits | ||
masak | correct. | ||
lizmat | it would merely set it to the default value | ||
masak | right. | ||
that's what I'm arguing for. | |||
same as assigning Nil, then. | |||
lizmat | that was my oriignal avenue of implementation | ||
which was vetoed by jnthn | 06:54 | ||
masak | did it run into trouble? | ||
oh! | |||
interesting. | |||
jnthn: ping :) | |||
lizmat | I think the point of :delete is that it well free up the element | 06:55 | |
anyway, first breakfast & | |||
06:55
xenoterracide_ left
|
|||
lizmat | well, maybe not: | 06:56 | |
Perl6 makes hashes and arrays a bit more the same | |||
hashes have .elems | 06:57 | ||
arrays have keys | |||
all the adverbs you can use on slices, work on both in a similar way | |||
masak | agreed. | ||
lizmat | if you use arrays just for push/pop/shift/unshift | ||
masak | only question is where the divergence happens. because it does happen. | ||
lizmat | you will never run into the "problem" of missing elements | 06:58 | |
masak | arrays in Perl 6 are decidedly *not* sparse, like they are in JavaScript. | ||
lizmat | what makes them sparse in JS? if you iterate over them, the absent elements don't show ? | 06:59 | |
masak | jnthn and diakopter will know more, but I suspect making the assumption that on a low level they are (or may be) has un-funny performance characteristics. | ||
lizmat | on a low level, something needs to be done anyway | ||
if an element is bound to nqp::isnull, you would have to go chase the default value anyway | 07:00 | ||
so the performance penalty is already there, really | |||
removing absent elements from iterations would actually increase efficiency, I think | |||
masak | lizmat: in JS, arrays are slightly modified hashes/objects. biggest difference is that keys that intify are presented in incresing order. | 07:01 | |
lizmat | well, fwfw, I can see value in those semantice :-) | ||
07:01
FROGGS joined
|
|||
masak | r: my @a; @a[5] = 'hi'; .say for @a | 07:02 | |
camelia | rakudo d7e5e1: OUTPUT«(Any)(Any)(Any)(Any)(Any)hi» | ||
masak | this is *very* much what I expect as a user. | ||
for the elements to be *iterated* over, even though I didn't fill them with anything. | |||
moritz | agreed | ||
masak | from my perspective, they *exist*. | ||
any notion that says they don't is a *distraction*. | 07:03 | ||
FROGGS | except when they were explicitly deleted? | ||
masak | FROGGS: in my view, that only resets them. | ||
in arrays. | |||
FROGGS: it's really the same situation as the above. | |||
FROGGS: "never filled" vs "just deleted" | 07:04 | ||
FROGGS | yeah, makes sense | ||
masak | if jnthn comes with a bulldozer wanting to tear down my .elems house, I will simply lie down here in the mud, in my bathrobe, until we've talked this through :) | ||
lizmat | I'll stick up my thumb for you | 07:05 | |
masak | ;) | ||
07:08
denisboyun joined
|
|||
FROGGS | masak: how do you think about that? gist.github.com/rjbs/9cbd2f1841bb8f26faf6 | 07:09 | |
moritz | formats 2.0! | 07:10 | |
lizmat | really breakfast& | 07:15 | |
masak looks | 07:18 | ||
honest opinion? it breaks too many parser assumptions in favor of visual cuteness. | 07:19 | ||
timotimo | ohai | ||
masak | timotimo! \o/ | ||
moritz doens't reall think that was a serious proposal | 07:20 | ||
FROGGS | masak: do you think so? I think the opener is rather unique | ||
timotimo | the "eqat_internal" op only exists because i don't know how to properly emit a call directly into a pir-bound op when all i have is the $qastcompiler | ||
FROGGS | moritz: but I like it | ||
masak | FROGGS: here's what the parser sees: OPENER string CLOSER LISTOP OPENER string CLOSER SEMICOLON OPENER string CLOSER | 07:21 | |
FROGGS | because: when you have a block-form-class (in contrast to semicolon form), and your methods are indented, then using heredocs or "abc\n" \n ~ "abc\n" is just ugly | ||
masak: we would just need the lhs | |||
masak | FROGGS: also, I wouldn't want to maintain that code. give me heredocs any day -- they are nicely separated and easy to edit. | 07:22 | |
that proposal isn't. | |||
FROGGS | but but | ||
masak | :) | ||
FROGGS | I want indentable heredocs! | ||
masak | you have them. | 07:23 | |
FROGGS | I really don't like this 'END' at the very left | ||
I have? | |||
masak | complaining about the 'END' in heredocs sounds more like misunderstanding heredocs than anything else. | ||
FROGGS: yes, if you indent the 'END', that amount of indentation is removed in the heredoc. | 07:24 | ||
FROGGS: see S02. | |||
FROGGS | ohh, is that so? | ||
hmmm | |||
masak | just so. | ||
timotimo | it used to be slightly crappy with regards to interpolating values, but i made it work superbly! | 07:25 | |
masak | timotimo++ \o/ | ||
timotimo | one of the few of (hopefully many more to come of) my achievements | ||
masak | that's an interesting parenthetical construction. | 07:26 | |
FROGGS | r: r: say q:to 'END' hallo END# so, why do I argue at all? | 07:27 | |
camelia | rakudo d7e5e1: OUTPUT« hallo» | ||
masak | right. | 07:28 | |
r: we_have_labels: say "yay!" | |||
camelia | rakudo d7e5e1: OUTPUT«yay!» | ||
masak | r: one_label: two_labels: say "does this work, then?" | 07:29 | |
camelia | rakudo d7e5e1: OUTPUT«does this work, then?» | ||
masak | huh. | ||
std: one_label: two_labels: say "does this work, then?" | |||
camelia | std a0bcfb1: OUTPUT«ok 00:01 121m» | ||
masak | weeeeyrd. | ||
moritz | why does that surprise you? | 07:30 | |
masak | I guess I mentally have 'statement := label the_rest', not as 'statement := label statement' | 07:31 | |
does the same hold in Perl 5, ooc? | 07:32 | ||
moritz | p5eval: bla: blub: '42' | ||
p5eval | moritz: 42 | ||
masak | seemingly. | ||
moritz | looks like it, yes | ||
masak | ok, I fold on that one, and adjust my expectations :) | ||
timotimo | seems like putting the bounds check where it will always run causes the eqat op to behave correctly in all cases ... who would have thought %) | 07:38 | |
masak | something making sense? heaven forbid! | 07:40 | |
FROGGS | timotimo: btw, I moved the bounds check to interp.c, so index(n)at can return -1 for both, "out of bounds" and "not found", and I can properly check that something is not in the string | 07:44 | |
07:44
daniel-s_ is now known as daniel-s
07:51
sqirrel joined
07:59
fhelmberger joined
|
|||
dalek | p/eqat_op: e77d5ba | (Timo Paulssen)++ | src/vm/parrot/ops/nqp.ops: fix eqat bounds check for good. |
08:03 | |
arnsholt | timotimo: "For good" sounds very definitive =) | 08:08 | |
masak | maybe it's part of the new "stable spec" regime? :P | 08:10 | |
moritz | bounds checking of stable spec regions? | ||
timotimo | :) | ||
08:18
go|dfish joined
|
|||
lizmat | commuting& | 08:29 | |
08:29
lizmat left
08:34
daxim joined
|
|||
timotimo | unless somebody teaches me how to emit a QAST that directly calls a pir-based op, i'd put my eqat_op branch up for review & merging | 08:39 | |
moritz | timotimo: QAST::VM.new(:pirop(...)) | 08:41 | |
timotimo | oh, that seems easy enough | ||
JimmyZ | I thought it's :parrot(...) | 08:42 | |
moritz | JimmyZ: that's just what a quick 'git grep pirop' in rakudo revealed | ||
masak | ooh, 'git grep' | 08:50 | |
08:56
woosley left
|
|||
moritz | seen on twitter: "There are two kinds of people in the world: those who can extrapolate from incomplete data." | 08:56 | |
timotimo | that was the autopun of the day a few days ago i believe | 08:57 | |
nwc10 | seen on #perl6: irclog.perlgeek.de/perl6/2013-10-05#i_7674854 | ||
so, where did it start? | |||
masak | I saw it on Twitter, too. | 08:58 | |
nwc10 | great Ms think alike? | ||
masak | probably the same tweet. | ||
nwc10: moritz and I are known to be attuned to an unscientific degree. :P | |||
timotimo | note to future and/or past self: "cannot shift from empty array" means: put a second underscore into your pirop | 08:59 | |
masak | moritz: #58392! | ||
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=58392 | ||
masak | :) | ||
I can't believe I still remember that ticket number... | |||
moritz | masak: :-) | 09:00 | |
masak | ah, memories... | ||
dalek | kudo/nom: 06556e9 | moritz++ | src/core/ (2 files): get "is default" working in the setting and use it to get rid of some postcircumfix:<[ ]> candidates. Adventurous minds can get rid of many more |
||
09:01
donaldh joined
|
|||
moritz | ok, I'm kinda scared. Rakudo spectest has 5 failing test files | 09:01 | |
that's... way more than usual | |||
masak | :/ | ||
09:01
dakkar joined
|
|||
moritz | and they all die the same that Mu.[0] does on my machine (OOM + attempted coredump) | 09:03 | |
DrEeevil | ... ulimit to the rescue! | 09:04 | |
(srsly) | |||
timotimo | that's not the rescue, to be honest | ||
moritz | DrEeevil: yes, I have a ulimit of 2GB virtual memory set | ||
DrEeevil | well, it avoids OOM-killer and associated pain | ||
moritz | DrEeevil: which is good, because otherwise it'd kill my desktop | ||
DrEeevil | ah :) | ||
moritz | DrEeevil: BUT IT DOESN'T MAKE THE TESTS PASS | ||
DrEeevil | :( | ||
dalek | p/moarboot: da02211 | (Tobias Leich)++ | / (12 files): un-hang qregex tests due to indexnat op Test is not clean though. There seems to be three issues:a) a heisenbug b) an issue resolving frame labels and c) a problem with "baabbbb" ~~ /a**2..4/ |
09:08 | |
moritz | we do NAT for indexes? | 09:09 | |
timotimo | i wish we had instruction pointer v6 | 09:10 | |
09:10
darutoko- joined
|
|||
FROGGS | moritz: yes, unless you bridge' it :o) | 09:10 | |
moritz wants VLANs too | 09:11 | ||
FROGGS | hmmm, so we need to tag our strings | ||
JimmyZ | NAT vs Bridge? | ||
09:13
darutoko left
|
|||
moritz | JimmyZ: aye | 09:14 | |
masak | interesting reading: www.oftenpaper.net/sierpinski.htm -- more about the Sierpinski triangle than I've ever seen in one place. | 09:15 | |
too much to take in in one reading. | |||
HN comments: news.ycombinator.com/item?id=6516114 | 09:16 | ||
"There's so much in here, they even have a cow which fires lasers being dropped from a space shuttle." | |||
09:20
pecastro_ is now known as pecastro
|
|||
moritz thinks he found a bug in the rakudo multi dispatcher | 09:21 | ||
09:23
zakharyas left
|
|||
moritz | I have | 09:24 | |
multi sub postcircumfix:<[ ]>( \SELF, $pos ) is rw is default { | |||
and | |||
multi sub postcircumfix:<[ ]>( \SELF, $pos, *%adv ) | |||
and it complains Unexpected named parameter 'exists' passed | |||
with the line number of the first candidate | |||
OH | 09:25 | ||
moritz finds his error, and stops blaming the good ol' dispatcher | |||
erm, not | |||
moritz confused | |||
masak | moritz: did you see irclog.perlgeek.de/perl6/2013-10-09#i_7691647 ? do you agree that's a rakudobug? do you know if it's filed already? | 09:26 | |
moritz | r: subset Even of Int where * %% 2; subset Quaddy of Int where * %% 4; multi f(Quaddy) { 'Quaddy' }; multi f(Even) { 'Even' }; say f 44 | 09:30 | |
camelia | rakudo 06556e: OUTPUT«Quaddy» | ||
moritz | masak: it prefers the textually first | 09:31 | |
masak: which I dimly recall being intentional, but I'm not sure at all | |||
masak | yeah, I thought it would be something like that. | 09:33 | |
09:33
bbkr joined,
bbkr left
09:34
bbkr joined
|
|||
masak | I've heard arguments for that behavior. in this situation, it feels like a fairly crappy failure mode. | 09:34 | |
moritz | iirc it being used for regexes | 09:35 | |
S05: "If the alternatives are in the same grammar file, the textually earlier alternative takes precedence" | 09:36 | ||
masak | yes, S12:1238 discusses exactly this. | ||
synopsebot | Link: perlcabal.org/syn/S12.html#line_1238 | ||
masak | it's because Even and Quaddy both have constraints that they are preferred in textual order. | 09:37 | |
but it's weird to me. intuitively, it feels to me that basing Quaddy on Even should make it strictly more narrow. | |||
i.e. in a way that the "epsilon" model doesn't catch. | 09:38 | ||
moritz | so, if two multis come from the same source file, you never get an ambiguous dispatch? | ||
masak: yes, that would require counting epsilons, not just boolean presence of epsilons | |||
masak | no, I'm not talking about counting epsilons. having to do that would be bad, I agree. | 09:41 | |
but a type match consists of a "nominal" part and a "procedural" (?) part. | |||
to me, saying `subset Quaddy of Even` makes Even part of the nominal part, and so its epsilon "disappears", and we can say "Quaddy is narrower than Even" without having to resort to epsilons. | 09:42 | ||
moritz | yes, but the Even isn't a nominal type | ||
because you have to run Perl 6-level code to type-check it | |||
masak | what I want to say is that for the purposes of narrowness checking between Even and Quaddy, it ought to be a nominal type. | 09:43 | |
i.e. it would make us type things better with no negative side effects. | |||
moritz | but it can't be, because nominal types are always types that can topo-sorted | ||
*can be | 09:44 | ||
maybe they could be, if one was sufficiently clever | |||
09:45
grondilu joined
|
|||
masak | I posit that they can be, in this case. | 09:45 | |
because we're explicitly *saying* "Quaddy is based on Even". | |||
there's no guessing needed. | |||
moritz | S06/Signature Introspection/ talks about that, fwiw | ||
masak | moritz: the 'Odd of Int' part? | 09:47 | |
I don't see it as talking about that in particular. if we went on to do 'VeryOdd of Odd', it would be talking about that. | 09:52 | ||
to be clear, I don't exclude the possibility that there is a very good reason not to treat 'Even' as a nominal type in this case. if there is, jnthn will probably point it out to me in excruciating clarity. :) | 09:53 | ||
but I don't buy "we just don't treat subtypes as nominal types" as a strong enough reason. | 09:54 | ||
09:56
sqirrel left
|
|||
masak | btw, s/procedural/constraint/ in what I said above. | 09:58 | |
10:08
FROGGS left
10:14
sqirrel joined
10:17
woosley joined
|
|||
moritz | masak: well, the 'Odd of Int' part talks specifically about Odd not being a nominal type | 10:18 | |
10:30
FROGGS joined
|
|||
masak | moritz: yes, but in the context of deconstructing it in a signature. | 10:33 | |
moritz: I'm talking in the context of asserting type narrowness. | |||
though, hm. | 10:34 | ||
I do see that they're related. | |||
10:35
ivanshmakov left
|
|||
moritz | type narrowness is nominal ordering + epsilons | 10:35 | |
and both 'Odd' and 'Quad' are nominal Int + epsilon | |||
10:38
ivanshmakov joined,
lichtkind joined
|
|||
masak | yeah. | 10:44 | |
thinking some more of it. | |||
I don't think I'll be able to change that... | |||
10:45
sqirrel left
|
|||
dalek | p: 7d220ef | moritz++ | tools/build/Makefile-JVM.in: give JVM Makefile an optional DESTDIR ... as proposed by (Gerd Pokorra)++ |
10:46 | |
10:48
stevan_ left
10:49
stevan_ joined
11:04
dansamo joined
11:05
salv0 left
11:06
salv0 joined,
ggoebel6 joined
11:09
ggoebel5 left,
FROGGS left
11:25
FROGGS joined
11:38
hummeleB1 left
11:44
FROGGS left
11:53
Rotwang joined
|
|||
masak | only nominal types get storted into the type DAG, once and for all at, hm, CHECK time, I guess. | 11:56 | |
sorting constraint types into the DAG doesn't make sense, because they have a runtime component. | |||
11:57
risou_awy left
|
|||
masak | the talk about epsilon is kind of about giving the constraint types a placeholder place in the DAG. | 11:58 | |
so 'Even' and 'Quad' would both hang off of 'Int', in a conceptual sense. | |||
japhb__ | (Specifically without looking at the spec, to keep an innocent mind) I don't buy that. Your argument that "subset" is defining an ordering relationship between two types makes way more intuitive sense. | 12:02 | |
I can see that defining Even and Quaddy as subsets of Int would make Even and Quaddy non-comparable, but if Quaddy is a subset type of Even, then it doesn't make sense for them *not* to be comparable. | 12:05 | ||
moritz | japhb__: currently we have the nice design property that everything that can be ordered at compile time can also be check at compile time | 12:08 | |
masak | japhb__: yes, the intuitive line is what I'm arguing here. | ||
moritz | we'd lose that if started with relative ordering of subset types | ||
masak | moritz: and my argument hinges on this being possible at compile time. | ||
arnsholt | moritz: That patch aboe is related to #110, right? | ||
masak | moritz: it's just... it would be different than what we currently have. whether that would break anything we like, is the important question. | 12:09 | |
moritz | arnsholt: it's first of all related to an email that gerd sent me | ||
masak | what I'm arguing could be framed as a slightly later binding of some things (but still compile time), or, equivalently, retaining some more information that makes intuitive sense for the developer. | ||
12:10
darutoko joined
|
|||
moritz | masak: I'm sure it would make the dispatcher more complex. No idea if that's worth it | 12:10 | |
masak | *nod* | 12:11 | |
I guess my fundamental issue is that I don't like the tiebreaking mechanism for multi subs, whether or not it makes sense for grammars. | |||
and being slightly smarter with subtypes would fix that for this case, at least. | 12:12 | ||
12:13
darutoko- left
12:15
skids left
|
|||
japhb__ | Is rakudo-jvm fully supported by panda at this point? | 12:16 | |
donaldh | japhb__: It should be. Unless something has regressed in the last month. | 12:22 | |
japhb__ | donaldh: OK, thanks. | 12:24 | |
12:24
nyuszika7h left
|
|||
pmichaud | good morning, #perl6 | 12:24 | |
japhb__ | o/ | ||
moritz | good am, pm | ||
pmichaud | anyone have an objection to bumping PARROT_REVISION? It's currently set to REVISION_5_5_0 . | 12:25 | |
12:25
nyuszika7h joined
|
|||
masak | no objection. | 12:26 | |
let's just hope there's an October Parrot release, otherwise the NQP release process will enter an impossible state :) | 12:27 | ||
12:27
nyuszika7h left
|
|||
pmichaud | I've been assured there will be an October Parrot release. | 12:27 | |
I'm okay with waiting for it to occur to bump PARROT_REVISION, though. | |||
masak | doesn't preclude testing Rakudo/NQP before that, of course. | 12:28 | |
12:28
nyuszika7h joined
|
|||
japhb__ | Who could I bribe to implement read pipes in rakudo-jvm? I've got a use case involving concurrency and read pipes that is enough on my mind to wake me up at 4 AM. | 12:28 | |
hoelzro | pipes++ | 12:29 | |
japhb__ | (I'm not sure whether I care about this more because I want the program to work, or because I want to sleep through the night ....) | ||
masak | :) | 12:30 | |
arnsholt | japhb__: Have we made any real progress on NQP #101? | 12:37 | |
donaldh | japhb__: the primitives are there, just no pipe implementation in rakudo yet. | ||
12:38
zakharyas joined
|
|||
donaldh | japhb__: when you say read pipes, do you mean openpipe('cmd') then read... | 12:39 | |
japhb__ | arnsholt: 1) Link? 2) I'm the wrong person to ask. I've only recently gotten perl6-shaped tuits back. | 12:40 | |
12:40
pmurias joined
|
|||
pmurias | hi | 12:40 | |
japhb__ | donaldh: Well, 'my $pipe = open $command, :w, :p; my @lines = $pipe.lines;', but yeah. | 12:41 | |
arnsholt | japhb__: github.com/perl6/nqp/issues/101 | ||
12:41
nyuszika7h left
|
|||
arnsholt | I'm asking because you're the submitter =) | 12:41 | |
12:42
denisboyun left,
nyuszika7h joined
|
|||
donaldh | japhb__: yep, NYI in rakudo, but the nqp::openpipe op is available on JVM. | 12:43 | |
japhb__ | Oh, you're asking if I can add that test to perl6-bench? Yeah, I could find some tuits for that. | ||
donaldh: ooh, that's tantalizingly close. | |||
arnsholt | A test in perl6-bench would be cool. I was mostly asking in case you knew if we had made progress or not | 12:44 | |
japhb__ | When I did pipe-open for rakudo-parrot, it was pretty much exposing already-existing functionality then, too. | ||
arnsholt | I'm doing some autumn cleaning in the NQP issues queue =) | ||
japhb__ | arnsholt++ # cleaning the queue | 12:45 | |
No, I don't happen to know, but that would be very worth investigating. | 12:46 | ||
donaldh | japhb__: fwiw, qx{$cmd} works on JVM. | ||
japhb__ | I wonder how much could be gained by applying the same sort of transforms done recently to the Perl6 grammar. | ||
donaldh: hmmm. I suppose I could split the lines myself .... | 12:47 | ||
12:47
Rotwang left
|
|||
japhb__ | That would only help me for the subprocesses that follow the "think think think ... produce all output at once" model, rather than the "think, partial output, think, partial output" model | 12:48 | |
donaldh | indeed. | 12:49 | |
pmichaud | 12:28 <masak> doesn't preclude testing Rakudo/NQP before that, of course. | 12:50 | |
well, the reason for bumping PARROT_REVISION would of be to introduce a backwards-incompatible change in NQP :-/ | |||
s/of// | |||
I suppose I could do the bump without introducing the nqp change and have it tested that way. | 12:51 | ||
I'll do that. | |||
donaldh just completed panda bootstrap on rakudo JVM # it still works | 12:52 | ||
japhb__ | donaldh: Yeah, once you said it works, I did that, did some searches, and installed a couple modules. Looked to be working. I haven't actually tested that the installed modules were working properly, mind ... but I'm hopeful. :-) | 12:54 | |
dalek | p: 1441a25 | pmichaud++ | tools/build/PARROT_REVISION: Bump PARROT_REVISION to prepare for pm-packfile-api merge. Parrot will be switching from EvalPMC to PackfileView; for testing we'll go ahead and bump PARROT_REVISION to get some testing of nqp/rakudo prior to merging the pm-packfile-api branch that can handle the switch. |
12:55 | |
12:55
lizmat joined
12:56
benabik left
12:57
benabik joined
|
|||
donaldh remembers why he didn't finish implementing IO::Pipe. | 12:58 | ||
japhb__ | donaldh: oh? | ||
donaldh wanted Rakudo::Debugger and got distracted by that. And then got distracted by performance and heap usage on JVM. | |||
japhb__ | heh | 12:59 | |
donaldh is still distracted by peformance. | |||
japhb__ | It's a good thing to be spending time on .... | 13:00 | |
donaldh | oh, jnthn++ fixed Rakudo::Debugger on JVM. | ||
donaldh ==> Successfully installed Rakudo::Debugger | |||
lizmat is just distracted while gazing at the Irish Sea | |||
japhb__ | Looks like it tried to run parrot while installing Rakudo::Debugger for JVM, huh. | 13:03 | |
13:07
hummeleB1 joined
|
|||
masak read that as "while grazing at the Irish Sea"... o.O | 13:09 | ||
13:15
SamuraiJack left
|
|||
donaldh | yeah, it's not quite there. It does compile CommandLine.pm to jar but there's no easy mechanism to compile perl6-debug.nqp and no magic shell script wrapper to give a handy perl6-debug | 13:15 | |
jnthn | afternoon, #perl6 | 13:16 | |
yoleaux | 09:14Z <FROGGS> jnthn: the indexnat op is now in master/moarboot, if you want to uncover the gc-bug just strip the "# heisenbug!!!" comments | ||
lizmat | .oO( why am I reminded of Copy On Write ?) |
||
jnthn | donaldh: I hand-hacked the perl6-debug build while getting it working | 13:17 | |
Still needs build stuff doing for JVM | 13:18 | ||
But I fixed the other bits, at least. | |||
dalek | rl6-roast-data: 188539e | coke++ | bin/rakudo.jvm.sh: Don't use eval server for rakudo.jvm Avoids condition where the invocations using the same server would start to fail at some point, with occasional information about an OOME. |
||
rl6-roast-data: ba6d5f7 | coke++ | / (3 files): today (automated commit) |
|||
jnthn | Basically, you need to compile perl6-debug.nqp using nqp but run with the same settings as perl6 is | ||
And then make a runner that looks similar | 13:19 | ||
13:19
PacoAir joined
|
|||
jnthn | [Coke]: wow, JVM at 99.90% :D | 13:20 | |
Ulti | up from 61.42% two days ago impressive! | 13:22 | |
timotimo | jnthn must have done something while we weren't looking | 13:23 | |
13:23
pmurias left
|
|||
jnthn | No, [Coke]++ switched it over to not use the evalserver | 13:24 | |
masak: The "don't go for textually first match" with multis has already been argued against; I had Rakudo try them all and complain on ambiguity. I lost that argument. So, we've already done this design decision, I think. | 13:27 | ||
masak: So, textually first matching constraint wins. | 13:28 | ||
masak | aye :/ | ||
jnthn | If you're struggling to express what you want in multi-dispatch rules, you probably should just use a different language construct. | 13:29 | |
lizmat | r: my @a=^10; say @a[my int $a=4]:kv # moritz, your patch broke stuff, which apparently isn't picked up by the spectest | 13:30 | |
camelia | rakudo 06556e: OUTPUT«Unexpected named parameter 'kv' passed in sub postcircumfix:<[ ]> at src/gen/CORE.setting:2243 in sub postcircumfix:<[ ]> at src/gen/CORE.setting:2240 in block at /tmp/2WtH4D8yHN:1» | ||
13:30
bluescreen10 joined
|
|||
lizmat | apparently, [4] does not select the [int $pos] candidate | 13:30 | |
masak | jnthn: not struggling; just seeing how it could have ever so slightly better reach if it worked differently. | ||
jnthn | masak: Yeah, but the more complex we make the dispatch rules, the harder it is to understand/teach/explain/debug. | 13:31 | |
The fact that *I* can't tell you what the exact arity-related rules are right now 'cus they've evolved out of people's ideas of what should work, is probably already enough reason to worry. :) | 13:32 | ||
dalek | kudo/nom: dfe582d | pmichaud++ | tools/build/NQP_REVISION: Bump NQP_REVISION to get PARROT_REVISION update. |
13:33 | |
pmichaud | feel free to revert that commit if things go bad. | 13:34 | |
lizmat | moritz:I reverted your patch locally, but cannot push while at sea (apparently) | 13:35 | |
I guess the satellite doesn't want to know github :-) | |||
jnthn | pmichaud: That's for the "just spit out a PBC" change/ | 13:37 | |
? | |||
lizmat | jnthn: if I say @a[0] (using a literal integer number as an index), shouldn't that select the native int $pos candidate in src/core/array_slice ? | ||
pmichaud | jnthn: eventually, yes. | ||
jnthn | lizmat: Not sure | 13:38 | |
pmichaud | jnthn: more importantly, it (along with the pm-packfile-api branch in nqp) future-proofs us for whenever Parrot makes the switch to PackfileView | ||
jnthn | lizmat: We have to be careful with those things. | ||
pmichaud: ah, ok | |||
lizmat: If somebody passes something declared as a native int we're all good | |||
pmichaud | if Parrot makes that switch before we're ready, then nqp/parrot bootstrap gets really complicated | ||
13:38
lowpro30 joined
|
|||
jnthn | lizmat: If we just assume it's good to pass things native, we might end up with huge overhead it we're passing it to a thing that boxes | 13:39 | |
lizmat: 'cus it'd then go and box it on every single call | |||
lizmat | but this is about a *candidate* that uses native int as a parameter | ||
jnthn | lizmat: So at present things tend to lean in a "pass the boxed thing from the constant pool" | ||
lizmat: Right, which means that compile-time analysis isn't smart enough to pick the native candidate yet. | |||
13:40
benabik left
|
|||
jnthn | lizmat: I'll have to spend some time looking at why that is. I thought we'd followed enough of the "rules" wrt to the named params for it to get it already... | 13:40 | |
lizmat | ah, so you're saying, once we start optimizing [] access calls, *then* the candidate with the native int would be selected | ||
pmichaud | jnthn: if you could briefly review github.com/perl6/nqp/commit/cbd484...4076994ed7 and let me know if you see a problem with it. | ||
jnthn | lizmat: Yes, then we can certainly do it. | ||
masak | jnthn: "death by a thousand good ideas", yes, sure. | 13:41 | |
lizmat | the thing is, that the current spectests are *not* checking the native int candidate at oresent | ||
pmichaud | the .all_subs() and .is_initialized() methods were added to EvalPMC yesterday. | ||
jnthn | lizmat: Does my int $x = ...; @a[$x] hit them? | ||
lizmat | present, which is why moritz didn't see he broke things | ||
yup | 13:42 | ||
jnthn | pmichaud: I assume "load" is still triggered automatically by loadbytecode? | ||
lizmat | r: my int $x=4; my @a=^10; say @a[$x]:kv | ||
camelia | rakudo 06556e: OUTPUT«Unexpected named parameter 'kv' passed in sub postcircumfix:<[ ]> at src/gen/CORE.setting:2243 in sub postcircumfix:<[ ]> at src/gen/CORE.setting:2240 in block at /tmp/40DCAjRktq:1» | ||
pmichaud | afaik, yes. | ||
jnthn | pmichaud: anyway, looks like the right change in the right place | ||
pmichaud | I did test the packfile branch of Parrot and all Rakudo spectests pass. | ||
(with these patches in place) | |||
13:43
btyler joined
|
|||
jnthn | And you didn't need to change NQP and Rakudo anywhere, just HLL::Backend::Parrot? | 13:43 | |
13:43
kaleem left
|
|||
pmichaud | HLL::Backend::Parrot, and updated nqp stage0 files | 13:43 | |
jnthn | Great, that's how I thought it'd be | ||
Better than before, when both NQP and Rakudo needed identical changes :) | |||
pmichaud | yeah, I didn't change anything in Rakudo. | 13:44 | |
well, other than NQP_REVISION :-P | |||
jnthn | ;) | ||
13:44
lowpro30_ joined
|
|||
jnthn | pmichaud: Think we're on course for MoarVM backend support in this month's NQP release too :) | 13:47 | |
13:48
lowpro30 left
|
|||
hoelzro | happy birthday to October birthday-having Perl 6 enthusiasts, then =) | 13:48 | |
13:48
darutoko left,
kaare_ joined
|
|||
donaldh | jnthnL I ain't going to get to priorInvocation before the 18th Oct. | 13:48 | |
jnthn: even | |||
13:49
SmokeMachine joined
|
|||
jnthn | donaldh: np | 13:49 | |
donaldh | jnthn: I've not figured out how the Moar priorInvocation removal would translate across to JVM and I go on vacation tomorrow. | 13:50 | |
jnthn | donaldh: Well, plus we have the added fun that after removing it, we need to work out how that affects Rakudo too :) | ||
13:51
ajr joined,
ajr is now known as Guest87327
|
|||
PerlJam | greetings #perl6 people | 13:51 | |
13:52
Guest87327 is now known as ajr_
|
|||
donaldh | jnthn: I reckon it is beyond my current skill level in NQP guts. | 13:52 | |
masak | PerlJam! \o/ | 13:53 | |
13:53
darutoko joined
|
|||
PerlJam | masak! :) | 13:54 | |
dalek | rlito: a64c91d | (Flavio S. Glock)++ | / (3 files): Perlito5 - grammar - optimizer fix |
13:59 | |
jnthn | donaldh: It is kinda fiddly. | 14:01 | |
14:08
prevost joined
|
|||
pmichaud | o/ PerlJam | 14:12 | |
14:14
bluescreen100 joined
|
|||
donaldh | japhb__: This was my previous hack on IO::Pipe gist.github.com/donaldh/6901992 | 14:15 | |
PerlJam | pmichaud: greets! | 14:17 | |
donaldh | japhb__: I realised that to align with the spec would require a refactor of IO to some extent. | ||
diakopter | I think that was the longest 8 hour backlog ever, by a few multiples | 14:18 | |
yoleaux | 09:14Z <FROGGS> diakopter: the indexnat op is now in master/moarboot, if you want to uncover the gc-bug just strip the "# heisenbug!!!" comments | ||
14:18
bluescreen10 left
|
|||
pmichaud | 13:47 <jnthn> pmichaud: Think we're on course for MoarVM backend support in this month's NQP release too :) | 14:19 | |
wow. | |||
won't the nqp release be a week from tomorrow? | |||
jnthn | Sounds about right | 14:20 | |
diakopter | pmichaud: did you see the camelia nqp-mvm target? :) | ||
(moritz++) | 14:21 | ||
jnthn | We could in theory merge moarboot now, though probably good to fix the heisenbug first... | ||
diakopter | heisenbug(s) of course | 14:22 | |
(my name is legion, for we are many) | |||
pmichaud | diakopter: I didn't see the nqp-mvm target yet, no. I'm still waaaay behind on a lot of things. | 14:23 | |
diakopter | nqp-m: say('hi pmichaud it is moar'); | ||
camelia | nqp-moarvm: OUTPUT«hi pmichaud it is moar» | ||
pmichaud | moar roars | 14:24 | |
Let's hear it for the Mother of All Runtimes! :-P | |||
lizmat | nqp-m: say("moar") xx 10 | ||
camelia | nqp-moarvm: OUTPUT«Confused at line 2, near "say(\"moar\""panic» | ||
lizmat | :-( | 14:25 | |
nqp-m: say("moar") for ^10 | |||
camelia | nqp-moarvm: OUTPUT«Confused at line 2, near "say(\"moar\""panic» | ||
pmichaud | nqp is not quite Perl. | ||
jnthn | lizmat: *nqp* :P | ||
PerlJam | .oO( with a rebel yell, she cried, "moar! moar! moar!" ;-) |
||
grondilu | xx is not defined in NQP, is it? | ||
jnthn | pmichaud: Gah, that backronym :P | ||
pmichaud | PerlJam: you're my idol. | ||
lizmat | nqp-m: for 0..9 { say('moar') } | ||
camelia | nqp-moarvm: OUTPUT«Missing block at line 2, near "..9 { say("panic» | ||
pmichaud | no xx, no .. | 14:26 | |
lizmat | nqp-m: for 0,1,2,3,4,5,6,7,8,9 { say('moar') } | ||
camelia | nqp-moarvm: OUTPUT«moarmoarmoarmoarmoarmoarmoarmoarmoarmoar» | ||
lizmat | *phew* | ||
PerlJam | perhaps nqp should be called "impoverished perl" | ||
pmichaud | PerlJam: not quite. | ||
masak googles and gets "Billy Idol" | |||
TIL. :) | |||
pmichaud wonders what google query produced "Billy Idol" :-) | 14:27 | ||
PerlJam | probably "with a rebel yell" would be enough | ||
pmichaud | yeah | ||
masak | pmichaud: actually it was duckduckgo, and "with a rebel yell she cried" | ||
14:29
skids joined
|
|||
pmichaud | masak: wfm | 14:29 | |
I guess PerlJam and I are showing our age with that one. | |||
PerlJam | speak for yourself old man | 14:30 | |
masak | :) | 14:31 | |
lizmat mumbles "eyes without a face" | |||
masak | or I should just listen to more Billy Idol. | ||
lizmat considers copying ~200 tests just to make sure the native int candidates for [] and {} are tested | 14:33 | ||
pmichaud | lizmat: +1 | ||
PerlJam | lizmat: Can't hurt ... much. | ||
jnthn | tests++ | ||
pmichaud | if they can (should) take different code paths, worth testing. | ||
jnthn | Well, adding tests for something we *know* got accidentally regressed certainly sounds a good idea. | ||
arnsholt | pmichaud: Do you have any thoughts on NQP #110? IIRC you wrote most of the config stuff, no? | 14:34 | |
pmichaud looks. | |||
14:34
zakharyas left
|
|||
lizmat | .oO( would be nice if I could use macro's for that ) |
14:34 | |
diakopter | nqp-m: my$a:=1000000;say('foo')while $a-- | 14:35 | |
camelia | nqp-moarvm: OUTPUT«foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo…» | ||
diakopter | nqp-m: my$a:=500000;say('foo')while $a-- | ||
camelia | nqp-moarvm: OUTPUT«foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoo…» | ||
diakopter | nqp: my$a:=500000;say('foo')while $a-- | ||
camelia | nqp: OUTPUT«foofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoof…» | ||
diakopter | d'oh. was trying to find where each times out | ||
pmichaud | arnsholt: my plan for the summer was to fix up the entire build/config subsystem | ||
but my summer got hosed | 14:36 | ||
lizmat | r: my int $x=4; say $x.WHAT # Int??? not int ? | ||
camelia | rakudo dfe582: OUTPUT«(Int)» | ||
14:36
blah joined
|
|||
jnthn | lizmat: .WHAT forces boxing. | 14:36 | |
lizmat | is that because .WHAT will coerce the int | ||
ok | |||
pmichaud | r: my int $x=4; say WHAT($x); # curious | ||
camelia | rakudo dfe582: OUTPUT«(Int)» | 14:37 | |
14:37
blah left
|
|||
jnthn | I think that just becomes .WHAT in the end | 14:37 | |
lizmat | sub WHAT(\x) { x.WHAT } | 14:38 | |
japhb__ | masak: Yes, more Billy Idol is the appropriate response. :-) | 14:39 | |
pmichaud | arnsholt: my thoughts on #110 are essentially that I hope the entire rakudo/nqp configure+build system will get a substantial refactor, but I don't know exactly when that will take place. | 14:40 | |
PerlJam | WHAT boxing is just an implementation detail that'll go away once WHAT becomse a macro, right? | ||
pmichaud | things become even more interesting when we add moarvm to the mix. | 14:41 | |
jnthn | PerlJam: It already is macro-like | ||
PerlJam: That doesn't change the fact that WHAT is an object-model operation. | |||
PerlJam: Meaning that it needs an object | |||
PerlJam | okay, that's why I was asking. | ||
japhb__ | donaldh: Can you explain what you mean by needing to refactor IO to align IO::Pipe with spec? | 14:42 | |
masak | japhb__: understood. will fix. | 14:43 | |
14:43
pmurias joined,
benabik joined
|
|||
pmurias | pmichaud: re build system, having a unified build system for nqp would be helpfull for nqp-js | 14:44 | |
14:44
rindolf joined
|
|||
japhb__ | donaldh: Does nqp::openpipe always open a R/W pipe? | 14:44 | |
pmichaud | pmurias: yes, that also -- thanks for reminding me. | 14:45 | |
14:45
jnap joined
14:46
kaleem joined
|
|||
lizmat | so what *is* the shortest way to force '4' to a native int? | 14:47 | |
pmurias | work on nqpjs should resume once I get an internet access in my room instead of having to hang around in the university corridors for free wifi ;) | ||
lizmat | the shortest I could come up with, was "my int$=4" | ||
diakopter | tha'ts the only one I knew of | 14:48 | |
masak | std: my int$=4 | ||
camelia | std a0bcfb1: OUTPUT«ok 00:01 123m» | ||
jnthn | lizmat: Think that's it | 14:49 | |
TimToady | I know, let's define a postfix i for that :P | 14:50 | |
lizmat | Wouldn't that make things very complex ? | ||
TimToady | so I imagine | 14:51 | |
jnthn | bah, the parser can just read the programmer's mind, right? | ||
diakopter | if we're dumb enough | 14:52 | |
14:52
darutoko- joined
|
|||
masak .oO( new advances in artificial stupidity ) | 14:53 | ||
lizmat | r: ub postfix:<n> (\x) { my int $ =x }; my @a=^10; say @a[my int $=4]:kv # sigh, returns a boxed int, so no error | 14:55 | |
camelia | rakudo dfe582: OUTPUT«===SORRY!=== Error while compiling /tmp/tlTv47TNivUnexpected block in infix position (two terms in a row, or previous statement missing semicolon?)at /tmp/tlTv47TNiv:1------> ub postfix:<n> (\x) ⏏{ my int $ =x }; my @…» | ||
lizmat | r: sub postfix:<n> (\x) { my int $ =x }; my @a=^10; say @a[my int $=4]:kv # sigh, returns a boxed int, so no error | ||
camelia | rakudo dfe582: OUTPUT«Unexpected named parameter 'kv' passed in sub postcircumfix:<[ ]> at src/gen/CORE.setting:2243 in sub postcircumfix:<[ ]> at src/gen/CORE.setting:2240 in block at /tmp/hIgf71uvuo:1» | ||
14:55
darutoko left
|
|||
lizmat | ah? | 14:55 | |
r: sub postfix:<n> (\x) { my int $ =x }; my @a=^10; say @a[4n]:kv # sigh, returns a boxed int, so no error | |||
camelia | rakudo dfe582: OUTPUT«4 4» | ||
diakopter | nqp subs in moarvm can return native ints but I don't think anything else can | 14:56 | |
jnthn | They can on other platforms to, but whether they do or not is another matter | ||
Oh... | |||
On Parrot it forces boxed return | |||
On JVM I think it doesn't | 14:57 | ||
But if the sub gets inlined it'll probably undo the boxing... | |||
lizmat: try putting "returns int" on that postfix | |||
diakopter wonders where to put "returns int" | 14:58 | ||
jnthn | in the cloud! | ||
lizmat | r: sub postfix:<n> (\x) returns int { my int $ =x }; my @a=^10; say @a[4n]:kv # nope, no diff | ||
camelia | rakudo dfe582: OUTPUT«4 4» | ||
jnthn | aww | ||
diakopter | jnthn: I thought jvm always transparently boxed/unboxed returns | 14:59 | |
er, at least Java | |||
jnthn | diakopter: I think it will avoid boxing if the QAST:Op node that makes the call has a :returns(...) set | ||
No, you can return natives in Java | |||
TimToady | j: sub postfix:<n> (\x) returns int { my int $ =x }; my @a=^10; say @a[4n]:kv | ||
pmurias | pmichaud: in what direction do you want to bring the build system? | ||
camelia | rakudo-jvm dfe582: OUTPUT«(timeout)» | 15:00 | |
TimToady | heh | ||
diakopter | d9es n stand for native there? | ||
lizmat | diakopter: yes, that would be the idea | 15:01 | |
jnthn | lizmat: Why not just declare a my int $x = 4; or so and then use it in the various tests? :) | ||
lizmat | jnthn: I would that for 5, 6 , 7, 8, etc as well | 15:02 | |
15:04
xenoterracide_ joined
|
|||
pmichaud | pmurias: not quite sure how to answer that yet | 15:04 | |
donaldh | japhb__: IO::Handle does IO::FileTestable which does not make a lot of sense for pipes, or sockets for that matter. | 15:05 | |
15:06
benabik left,
kaleem left
|
|||
japhb__ | donaldh: Ah yes, I see. So it wasn't a JVM issue, more of a general "this needs refactoring" | 15:07 | |
donaldh | yep. | ||
and, yes, nqp::openpipe opens a rw pipe at the moment. | 15:08 | ||
need to explicitly divert in, out, err when using java.lang.ProcessBuilder. | 15:10 | ||
grondilu notices that 1, [*] ... appears both in rosettacode.org/wiki/Hamming_numbers#Perl_6 and rosettacode.org/wiki/Factorial#via_...t_Sequence He wonders if [*] should not include the degenerate case [*](), so that [*] @a would be ([*]()), ([*]@a[0]), ([*]@a[0..1]), ... | 15:11 | ||
15:12
pmurias left
|
|||
TimToady | it would be harder to teach | 15:13 | |
and there are probably cases where you don't want it | |||
and it's easier to add values than to take them away | |||
grondilu | yeah the third point it the most convincing indeed | 15:14 | |
15:17
Rotwang joined
15:18
jnap left
15:19
benabik joined
|
|||
grondilu | I also wonder why we don't have the equivalents of lisp's car and cdr | 15:20 | |
TimToady | we do | ||
15:20
jnap joined
|
|||
grondilu | do we? | 15:20 | |
TimToady | but you have to cons using => | ||
.key is car, .value is cdr | |||
dalek | ast: 18ff411 | (Elizabeth Mattijsen)++ | S32-array/delete-adverb-native.t: Add [] tests for single int candidate and :delete adverb |
||
hoelzro | sub 🚓 (Pair $p) { $p.key } | 15:21 | |
grondilu | yeah but as you say we have to do the conversion | ||
PerlJam | hoelzro: heh! | ||
lizmat | +138 tests, and that's only for @a[int]:delete and friends | ||
15:21
[Sno] left
|
|||
grondilu | r: sub cdr(@a) { @a[1..@a.end] } # I was thinking of this | 15:21 | |
camelia | ( no output ) | ||
jnthn | lizmat: I like how you're pushing up the Rakudo JVM percentage without us actualy fixing anthing :P | ||
lizmat | seems the other []:adverb tests need some flesihng out first | 15:22 | |
TimToady | grondilu: Lisp lists are not conducive to parallelism | ||
lizmat | jnthn: yw :) | ||
at the expense of niecza and pugs, I might add :) | |||
TimToady | r: my \list = [=>] 1,2,3; say list.value.perl | ||
camelia | rakudo dfe582: OUTPUT«2 => 3» | ||
grondilu | oh yeah, I forgot that the conversion is quite easy thanks to [=>] | 15:23 | |
TimToady | the whole point of making => right associative was to make sure it worked like . in Lisp | 15:24 | |
grondilu | and how do you do the inverse conversion? | ||
r: say flat [=>] 1, 2, 3 | |||
camelia | rakudo dfe582: OUTPUT«1 => 2 => 3» | ||
jnthn | r: say ([=>] 1, 2, 3)>>.value # maybe, depends on nodal stuff I guess | 15:25 | |
camelia | rakudo dfe582: OUTPUT«("1" => 3).hash» | ||
grondilu thinks and does not see any simple way | |||
jnthn | oh, wait...no | ||
dalek | kudo/nom: 2df2426 | (Elizabeth Mattijsen)++ | src/core/ (2 files): Revert "get "is default" working in the setting" This breaks the @a[my int $a=4]:adverb case :-( |
15:26 | |
kudo/nom: 50cecfd | (Elizabeth Mattijsen)++ | t/spectest.data: Also test @a[int]:delete |
|||
TimToady | grondilu: see rosettacode.org/wiki/Singly-linked_...sal#Perl_6 | ||
lizmat | eh, the satellite worked :-) | ||
15:26
jnap left
|
|||
moritz | dammit, I was too slow | 15:26 | |
TimToady | lizmat: and you've now probably used up your bandwidth quota :) | 15:27 | |
moritz | I wanted to revert only the part of the patch that touches postcircumfix:<[ ]> | ||
lizmat | not a lot of people in the lounge here | ||
TimToady | what is the name of the water under you? | ||
lizmat | so plenty of bandwidth now | ||
Irish Sea | 15:28 | ||
jnthn | Does it have whisky in, like an Irish coffee? | ||
masak | whisky and lots of salt. | ||
lizmat | no, but it glows in the dark | ||
masak | oh, lots of seas do that... :) | ||
lizmat | the Irish Sea is supposed to be the most radio-active sea in the world, thanks to UK's Sellafield | 15:29 | |
of course, this was all pre-Fukushima | |||
PerlJam | hopefully it's glowing from phosphorescent algae | ||
lizmat | it's still daylight here, not much glowing to see just yet :-) | 15:30 | |
en.wikipedia.org/wiki/Irish_sea#Radioactivity | 15:31 | ||
15:31
jnap joined
|
|||
TimToady | maybe the sun's light is really from glowing algae | 15:32 | |
hoelzro | is "sym" the only thing that come after "token my-token:"? or are there other "token my-token:widget<thing>" things? | ||
PerlJam | .oO( I didn't know Whitman did Perl 6! ) |
15:33 | |
15:33
rindolf left
|
|||
TimToady | other names are well-formed, but sym is magical in setting up <sym> and other internal things | 15:33 | |
hoelzro | TimToady: so anything's legal, but sym is special? | 15:34 | |
diakopter | it says eating the most seafood from that area of anybody only increases your radiation consumption 10% | ||
TimToady | nr: sub foo:bar<baz> ($x) { $x.say }; foo:bar<baz>(42) | ||
camelia | niecza v24-98-g473bd20: OUTPUT«42» | ||
..rakudo dfe582: OUTPUT«===SORRY!=== Error while compiling /tmp/sF8lEi4PpLCannot add tokens of category 'foo'at /tmp/sF8lEi4PpL:1------> sub foo:bar<baz> ⏏($x) { $x.say }; foo:bar<baz>(42) expecting any of: pair value …» | |||
TimToady | niecza++ | 15:35 | |
15:36
jnap left
|
|||
TimToady | according to STD, extended names are not just for syntactic categories, so rakudo is making an unwarranted assumption there | 15:38 | |
timotimo | my eqat_op branch is not behaving right in the jvm version :| | ||
PerlJam | r: sub infix:bar<baz> ($x) { $x.say }; infix:bar<baz>(42); # can it do one of the know *fixes ? | ||
camelia | rakudo dfe582: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&infix' called (lines 1, 1)» | ||
TimToady | not after walking into a bar | 15:39 | |
15:40
jnap joined,
rindolf joined
|
|||
TimToady | 'sym' is magical, and '' is differently magical | 15:40 | |
nr: sub foo:<baz> ($x) { $x.say }; foo:<baz>(42); # curious | 15:41 | ||
camelia | niecza v24-98-g473bd20: OUTPUT«===SORRY!===Cannot extend category:foo with subs at /tmp/hdU32wWA3X line 1:------> sub foo:<baz> ⏏($x) { $x.say }; foo:<baz>(42); # curioUnhandled exception: Check failed at /home/p6eval/nie…» | ||
..rakudo dfe582: OUTPUT«===SORRY!=== Error while compiling /tmp/AVUmQvmyxkCannot add tokens of category 'foo'at /tmp/AVUmQvmyxk:1------> sub foo:<baz> ⏏($x) { $x.say }; foo:<baz>(42); # curio expecting any of: colon pair…» | |||
masak | I gotta say. this Billy Idol fellow is pretty smooth. | ||
TimToady | the implementations agree when the key of the pair is '' | ||
pugs: sub foo:<baz> ($x) { $x.say }; foo:<baz>(42); # curious | 15:43 | ||
camelia | pugs: OUTPUT«***  Unexpected ":<baz" expecting "::", "handles", "is", bare trait, subroutine parameters, trait or block at /tmp/uA3Bdi7mPT line 1, column 8» | ||
TimToady | well, most of 'em | ||
15:46
jnap left,
jnap joined
15:47
Rotwang left
|
|||
grondilu | TimToady: what would you think of this instead? gist.github.com/grondilu/6903405 | 15:49 | |
grondilu realizes there's no need for gather/take there :/ | 15:51 | ||
15:51
jnap left,
jnap joined
|
|||
TimToady | grondilu: most VMs are not friendly to tail recursion | 15:51 | |
15:51
ajr_ left
|
|||
grondilu | :/ | 15:52 | |
grondilu thought Perl was a functional language :/ | |||
15:52
ajr joined
|
|||
TimToady | it is, among other things, which includes portability to many VMs | 15:52 | |
geekosaur | tail recursion is not the essence of functional programming | ||
15:52
ajr is now known as Guest29035
|
|||
geekosaur | it's the essence of one particular approach to it | 15:53 | |
TimToady | we can probably get the optimizer to fix some tail recursion, but maybe it'll take a hint or two | 15:54 | |
15:55
jnap left
|
|||
masak | grondilu: there's less consensus of the positive aspects of tail recursion than you might currently believe. | 15:56 | |
grondilu: I used to think it was a 100% good thing too... but there are tradeoffs involved. | |||
TimToady | it is not yet clear whether most ports of Perl 6 will end up with continuations underneath, so we're reserving judgment on how aggressive we can be on various FPish optimizations | ||
grondilu | ok | 15:57 | |
masak | grondilu: as a first step of explanation, tail-recursion elimination isn't completely orthogonal to introspection. and Perl 6 does like its introspection. | ||
15:58
jnap joined,
darutoko- left
|
|||
TimToady | see also much of Guy Steele's writings on why Lisp-style lists are bad for parallel processing | 15:58 | |
though we'll hope we're more successful there than Fortress... | 15:59 | ||
moritz | didn't Fortresses parallelism work out? | 16:01 | |
TimToady | I think that's the part that worked out well; it was the rest of the language that didn't :) | 16:02 | |
16:02
Rotwang joined
16:03
xalbo joined
|
|||
masak | Fortress managed to avoid success at all costs. I don't think it's more complicated than that. | 16:04 | |
TimToady | but mostly, they went the funding route, and then ran out of funding | ||
16:05
jnap left
|
|||
TimToady | if you think your language depends on funding, then it does :) | 16:05 | |
masak | yeah, we're not making *that* mistake! :P | ||
16:05
jnap joined
|
|||
TimToady | fast, good, pick one | 16:05 | |
cheap is assumed | |||
masak: dunno if anyone answered you, but constrained multis are always evaluated in order, so it's always going to pick Even there | 16:07 | ||
so you'd have to reverse them to get them to pick Quaddy | 16:08 | ||
masak | TimToady: yeah, we had a long, sad discussion about it after that point. you'll get to it. | ||
TimToady | okay | ||
lizmat | on that note: is a multi *without* named parameters narrower than one with only optional named parameters ? | ||
TimToady | not by current spec | 16:09 | |
lizmat | I'm not sure I grok why | ||
16:09
jnap left
|
|||
lizmat | because of this, there is now a candidate for each possible named parameter in array/hash sliices | 16:10 | |
instead of one that handles all | |||
jnthn | iirc, the presence of named parameters counts as a constraint | ||
TimToady | then maybe it's just a bug :) | ||
moritz | r: multi a(:$b) { 1 }; multi a() {2}; say a() | ||
camelia | rakudo dfe582: OUTPUT«1» | ||
jnthn | that's consistent with what I said about them being constraint-y | 16:11 | |
moritz | it takes the first, not the one without named ones | ||
16:11
jnap joined
|
|||
jnthn | Thus making them epsilon tigheter. | 16:11 | |
*tighter | |||
r: multi a() { 1 }; multi a(:$b) { 2 }; say a() | |||
camelia | rakudo dfe582: OUTPUT«2» | ||
lizmat | well, the reason for my asking, is that I think the candidate that handles the no frills [] and {} access, should be the first and simplest | ||
(it now is) | |||
jnthn | No, it's not ordering, it consistently picks the one with the optional named arg | 16:12 | |
lizmat: I presumre that each of the other candidates has at least one *required* named argument? | |||
xalbo | Does that make the one with no args unreachable? | ||
lizmat | at the moment, yes | ||
no, it's reachable | |||
jnthn | lizmat: Because that's what the static dispatcher needs. | ||
lizmat | please look at the yuckiness that src/core/array_slice.pm is | 16:13 | |
16:14
xinming left
|
|||
lizmat | for each set of candidates, I would like to collapse the last 6 into one | 16:14 | |
jnthn | lizmat: What's yucky? | 16:15 | |
16:15
xinming joined
|
|||
jnthn | lizmat: Yes but if you do that we can't rule out the named-param-taking candidate statically and inline the simple one :/ | 16:16 | |
lizmat | anybody in the future wanting to handle multiple adverbs, will need to expand each candidate with at least one obligatory named param | ||
let me put it this way: *I* can live with the yuckiness in array_slice.pm | 16:17 | ||
but I feel it is a deficiency in the language that such a setup is needed | |||
anyways, land ahoy! | |||
will be commuting to the Limerick Open Source Meetup, hosted by Tim Bunce, shortly | 16:18 | ||
jnthn | enoy :) | ||
*enjoy | |||
TimToady | Open Source Limericks, yum! | 16:19 | |
say hi to M Bunce for us | |||
lizmat | we will probably spec Perl6 DBI when we're there | ||
:-) | |||
will do | |||
16:19
jnap left
|
|||
moritz | and the commit the introduced it causes it to bomb out on certain tests on my machine | 16:20 | |
moritz replied to stale backscroll | 16:21 | ||
16:21
jnap joined
|
|||
moritz | that was about the src/core/array_slice.pm yuckiness | 16:21 | |
TimToady | I'm sure you can find some staler backscroll than that to reply to :) | ||
lizmat | moritz: sorry for any miscommunication | 16:22 | |
commuting& | 16:23 | ||
16:23
lizmat left
|
|||
TimToady | just don't miscommute | 16:23 | |
I guess that counts as stale frontscroll... | 16:24 | ||
16:25
dwarring left
16:27
jnap1 joined
16:28
jnap left
16:32
jnap1 left,
jnap joined
16:37
jnap left,
jnap joined
|
|||
[Coke] | pugs: use Test; ok(1 eq "1", "does this work?"); | 16:38 | |
camelia | pugs: OUTPUT«pugs: *** Unsafe function 'use' called under safe mode at /tmp/MhXvkSkqeM line 1, column 1» | ||
[Coke] | pugs: say [+] 1..100; | ||
camelia | pugs: OUTPUT«5050» | ||
16:41
[Sno] joined,
jnap left
|
|||
dalek | p/moarboot: 85ab267 | jonathan++ | src/vm/moar/QAST/QASTRegexCompilerMAST.nqp: Fix x**0 compilation for MoarVM backend. |
16:42 | |
16:46
jnap joined
16:49
segomos left
16:50
ugexe_ left
16:51
ssutch joined
|
|||
TimToady | jnthn: perhaps there's a good static model where mandatory parameters are considered tigher but optional parameters are considered looser than the no-param case | 16:51 | |
*tighter | 16:52 | ||
16:53
jnap left
|
|||
jnthn | TimToady: Perhaps so...I seem to recall that last time I tried to work out such a model I couldn't get it. I forget why. :( | 16:53 | |
16:53
Rotwang left
|
|||
jnthn | TimToady: Maybe I was just having a not-very-smart day :) | 16:53 | |
.oO( that'd be most of 'em... ) |
|||
TimToady gets one of those from year to year | 16:54 | ||
16:54
jnap joined
|
|||
jnthn | At the moment we have just one epsilon for all the things | 16:54 | |
(nameds, unpacks, constraints, etc.) | |||
16:55
darutoko joined
|
|||
jnthn | I *think* what I might have run into is combinatorics...somehow. | 16:55 | |
moritz | maybe we also need ἕ | ||
jnthn | Or some kind of "what's the pecking order" thing | 16:56 | |
17:01
jnap left
17:04
dakkar left
17:05
jnap joined
17:09
jnap left
17:10
jnap joined
|
|||
TimToady | we already have +Inf and -Inf, so ±ε should be trivial :) | 17:12 | |
17:15
jnap left
17:16
jnap joined
|
|||
sjn | .u HEBREW LETTER ALEPH | 17:19 | |
yoleaux | No characters found | ||
sjn | .u HEBREW LETTER ALEF | ||
yoleaux | U+05D0 HEBREW LETTER ALEF [Lo] (א) | ||
sjn | TimToady: How about the Aleph numbers? :) | 17:20 | |
jnthn | ooh, sjn | 17:21 | |
sjn | (perhaps of limited usefulness, but if Inf is in, why not Aleph null, one, etc. :) | ||
jnthn | sjn: I will be in Oslo next week. :) | ||
sjn | hey, cool! | ||
when? | 17:22 | ||
jnthn | I'm free on Thursday evening with the caveat that I'll have to get up early the next morning. | ||
17:24
jnap left,
jnap joined
|
|||
sjn has no plans for next thursday, it seems o/ | 17:26 | ||
jnthn | Cool. I won't be able to stay out until midnight doing beer, but can happily have some dinner and a couple of pints :) | 17:27 | |
sjn | sounds good | 17:28 | |
dalek | p/moarboot: c204a57 | jonathan++ | src/HLL/Grammar.nqp: Fix starter/stopper contextual check. It was always not checking for the right thing. Somehow we got away with it on Parrot and JVM, but Moar tripped. So, correct it. It will save some spurious calls to !LITERAL on all backends. |
||
17:29
jnap left
17:33
jnap joined
|
|||
diakopter | jnthn: heh. | 17:33 | |
how many of those "moar is moar strict" things have we encountered? :) | |||
jnthn | fewer than I encountered with JVM :) | 17:34 | |
diakopter | oh, heh. | 17:35 | |
TimToady | how much fewerness is because you encountered the JVM first? :) | ||
17:36
PZt left
|
|||
jnthn | TimToady: Probably most of them :) | 17:37 | |
TimToady: JVM also has a "pure" 6model factoring of things | |||
17:37
jnap left
|
|||
jnthn | Though built atop of other things rather than native like in Moar... | 17:37 | |
17:37
jnap joined
|
|||
diakopter | nativer, anyway | 17:38 | |
jnthn | Anyway, if the JVM port hadn't come first then we'd have found a bunch more in Moar. | ||
diakopter | .oO( or given up in horror at encountering so many... ) |
||
jnthn | We're already getting huge benefit from the porting work that already took place :) | ||
17:39
Guest29035 left
|
|||
jnthn | We're 73 tests in 5 test files from NQP on MoarVM passing all the things | 17:40 | |
I may be able to get than down to 10ish later this evening... | |||
But first, dinner & | 17:41 | ||
17:42
jnap left
17:44
jnap joined
17:50
prevost left
17:51
jnap left,
jnap joined
17:55
jnap left,
jnap joined
17:59
SamuraiJack joined
18:01
daxim left
18:02
jnap left
18:03
jnap joined
18:10
jnap left
18:13
jnap joined
18:21
jnap left
18:23
jnap joined
18:25
jnap left
18:27
jnap joined
|
|||
diakopter | . | 18:28 | |
18:30
darutoko left
18:33
jnap left
18:36
jnap joined
18:37
PZt joined
18:42
jnap left
18:47
xinming left
18:50
rindolf left
|
|||
lue | hello world o/ | 18:53 | |
18:54
fhelmberger left,
xinming joined
19:02
jnap joined
19:06
jnap left,
jnap joined
19:07
lizmat joined
|
|||
lizmat | decommute | 19:08 | |
landed at the LOSMU | |||
Tim Bunce is saying high back! | 19:10 | ||
19:13
jnap left
19:14
jnap joined
19:15
dansamo left
19:21
grondilu left,
ajr joined,
ajr is now known as Guest68482
19:22
jnap left
19:23
jnap joined
19:27
Guest68482 is now known as ajr_
|
|||
jnthn returns | 19:29 | ||
19:29
jnap left,
jnap joined
|
|||
lizmat | hello from Limerick | 19:31 | |
19:32
SamuraiJack left
|
|||
nwc10 | lizmat: just curious - how did you get from whereever the ferry landed to Limerick? | 19:33 | |
jnthn | .oO( I hope the ferry docked rather than landed :P ) |
19:34 | |
19:36
jnap left
|
|||
lizmat | nwc10: just followed the navigator, on the highway from Dublin to Limerick | 19:38 | |
(yes, there is one nowadays) | 19:39 | ||
and yes, the ferry docked.... | |||
on the way back, we'll take the one that sort of flies 1m above water….. sort of :-) | |||
19:39
jnap joined
|
|||
jnthn | oh my... | 19:40 | |
I hope the sea ain't rough if you're taking one of those :) | |||
lizmat | we'll find out next week :-) | 19:41 | |
it's a catamaran, not a hovercraft … hovercrafts are worse: they're the worst of both worlds | 19:42 | ||
jnthn | I've never done a hovercraft | 19:43 | |
I did have a bad experience with a catamaran on the English channel... | |||
19:44
jnap left
|
|||
diakopter | my last hovercraft was full of eels | 19:44 | |
19:44
jnap joined
|
|||
jnthn | oh reely? | 19:45 | |
diakopter | www.omniglot.com/language/phrases/hovercraft.htm | 19:47 | |
19:48
jnap left
19:49
jnap joined
19:53
jnap left,
jnap joined
19:54
DarthGandalf joined,
jnap left
20:17
araujo left,
araujo joined
20:21
stevan_ left
20:24
SmokeMachine left
|
|||
ajr_ | A hovercraft at speed on a rough sea feels like a Land-Rover being driven across a ploughed field, (at right angles to the furrows). | 20:33 | |
20:39
hummeleB1 left
|
|||
japhb__ | jnthn: Just wanted you to know -- rakudo-jvm concurrency is now actively saving me time in my dayjob. Being able to run multiple (high timing variance) data-gathering tasks concurrently greatly reduces the time I need to gather data for a common task. So, thanks. :-) | 20:40 | |
(Other Googler: "How are you doing that? Python can't do that ...." "It's Perl 6 on JVM." "Oooooh, that's cool!") | 20:41 | ||
jnthn | japhb__: Wow :) | 20:42 | |
20:42
dmol left
|
|||
jnthn | japhb__: I have a chunk of time allocated at the end of the month to work on further Rakudo JVM concurrency improvements :) | 20:43 | |
japhb__ | Thank you Thank you Thank you Thank you. In advance. ;-) | ||
jnthn | :) | ||
I'm happy to see it being used to good effect. | |||
20:44
PZt left
|
|||
jnthn | Please do let me know where the most noticable rough edges are. | 20:44 | |
japhb__ | Well, pipes were one problem, but thanks to the donaldh hint I worked around it with qqx// and File::Temp. | 20:45 | |
jnthn | ah, ok. Not a concurrency issue per se, but a missing bit of IPC support. | ||
japhb__ | I know I need sockets and good buffer handling (the latter is there already, yes?) | ||
jnthn | Sockets are too, providing you don't need non-blocking yet. | 20:46 | |
But yeah, Buf got a bunch of work not so long ago. I won't claim it's perfect, but at least types like buf8 exist now.. | |||
japhb__ | Well, I can fake that with concurrency, though you made a mildy hand-wavey comment about filling the thread pool that way. | ||
jnthn | Yeah | 20:47 | |
japhb__ | How big is the thread pool? | ||
jnthn | 16 by default | ||
But you can do as you wish | |||
japhb__ | Right now I'm at <10 concurrency, but I expect I'll want more than that sooner rather than later. | ||
How do you expand the pool? | |||
jnthn | The current design is that the effective scheduler is in $*SCHEDULER | ||
So at the start of your program just re-bind that. | 20:48 | ||
japhb__ | How complex is it? Big pain or copy/pasta to override? | ||
jnthn | my $*SCHEDULER = ThreadPoolScheduler.new(initial_threads => 4, max_threads = 128); # or whtaever you like) | 20:49 | |
japhb__ | If it's non-trivial, having some basic tunables for it would be nice, so that overriding $*SCHEDULER becomes rarer. | ||
Ulti | hey has anyone tried playing with this since 2002??? www.perlmonks.org/?node_id=179755 | ||
japhb__ | Oh, that's easier, gotcha. | ||
Ulti | someone made an XML grammar from the EBNF spec | 20:50 | |
jnthn | Yeah, it's easy. *but* I don't promise to keep the scheduler API as it is today. | ||
japhb__ | The value I'm getting is worth some bitrot risk, | ||
s/,/./ | |||
jnthn | Promise and Channel are, API wise, fairly OK. | ||
Scheduler I *know* is not what I want, but it's the least user exposed bit and I was tied for time. | 20:51 | ||
And yes, I may well make it so you can just tune it | |||
japhb__ | What about talking to Java or C++ libraries? I vaguely recall the first being doable, and arnsholt tanking on the second .... | 20:52 | |
jnthn | First is doable, but you'll find caveats | 20:53 | |
japhb__ | (First Rule of Crypto: Don't write your own crypto.) | ||
20:53
kaare_ left
|
|||
jnthn | rj: say('is this it?') | 20:54 | |
20:54
cognominal__ left
|
|||
japhb__ | What kind of caveats are we looking at? | 20:54 | |
camelia | rakudo-jvm 50cecf: OUTPUT«is this it?» | ||
jnthn | rj: use java::util::zip::CRC32:from<java>; my $crc = CRC32.new(); for 'Hello, Java'.encode('utf-8') { | ||
camelia | rakudo-jvm 50cecf: OUTPUT«===SORRY!=== Error while compiling /tmp/eUDavU250JUnable to parse expression in block; couldn't find final '}'at /tmp/eUDavU250J:1------> w(); for 'Hello, Java'.encode('utf-8') {⏏<EOL> expecting any of:…» | ||
jnthn | oops | ||
rj: use java::util::zip::CRC32:from<java>; my $crc = CRC32.new(); for 'Hello, Java'.encode('utf-8') { $crc.'method/update/(B)V'($_) }; say $crc.getValue(); | |||
camelia | rakudo-jvm 50cecf: OUTPUT«No such method 'method/update/(B)V' for invocant of type 'Scalar' in block at /tmp/OhlA2Bdyu2:1 in block at src/gen/CORE.setting:7151 in block at src/gen/CORE.setting:7015 in method gimme at src/gen/CORE.setting:7433» | ||
jnthn | well, oops | 20:55 | |
rj: use java::util::zip::CRC32:from<java>; my $crc := CRC32.new(); for 'Hello, Java'.encode('utf-8') { $crc.'method/update/(B)V'($_) }; say $crc.getValue(); | |||
camelia | rakudo-jvm 50cecf: OUTPUT«No such method 'method/update/(B)V' for invocant of type 'java.util.zip.CRC32' in block at /tmp/70GIANduRP:1 in block at src/gen/CORE.setting:7151 in block at src/gen/CORE.setting:7015 in method gimme at src/gen/CORE.setting:7433» | ||
japhb__ | ... and is there a guide somewhere for how to do the translation to get that funky method invocation syntax? | ||
diakopter | just make it up; rakudo figures out what you want | ||
jnthn wonders why that ain't working... | |||
diakopter: wtf :) | |||
japhb__: I normally just dump them | |||
lue | Ulti: wh-wh-what is this? Why are there \s* everywhere in a *rule* ? Why are there unescaped = signs that can't be assigning anything (\s* = \s*). What is (?: trying to do? blurghghgh | ||
jnthn | japhb__: Moment, lemme figure it out... | 20:56 | |
japhb__ | jnthn: What's the command that would dump them? Then I can just use that output and the docs and hack until happy, I suppose. | 20:58 | |
jnthn | nqp-jvm: my $interop := nqp::jvmbootinterop(); my %h := $interop.getInterop($interop.typeForName('java.util.zip.CRC32')); for %h { say($_.key) } # something like this | 20:59 | |
camelia | nqp-jvm: OUTPUT«Cannot unbox a type object in callout org.perl6.nqp.runtime.BootJavaInterop method/getInterop/(Lorg/perl6/nqp/sixmodel/SixModelObject;)Lorg/perl6/nqp/sixmodel/SixModelObject; in (/tmp/Mdz7VEmHKO:1) in (src/stage2/gen/NQPHLL.nqp:1098) in eval (src/st…» | ||
jnthn | hmm | 21:00 | |
japhb__ | Something done got broke? | ||
Ulti | heh lue no idea but this was 11 years ago :] the idea of translating from EBNF to Perl6 grammars is kind of a good one though! | ||
jnthn | I just got a new laptop and don't have a JVM build here nor my cheat file :) | ||
nqp-jvm: my $interop := nqp::jvmbootinterop(); my %h := $interop.getInterop('java.util.zip.CRC32'); for %h { say($_.key) } # something like this | 21:02 | ||
camelia | nqp-jvm: OUTPUT«getValuemethod/wait/(J)Vmethod/notifyAll/()Vmethod/getValue/()Jmethod/hashCode/()IhashCodemethod/update/([B)Vmethod/toString/()Ljava/lang/String;method/reset/()Vmethod/getClass/()Ljava/lang/Class;/box/isinstnotifyreset/TYPE/…» | ||
jnthn | There we go | ||
I misread :) | |||
japhb__ | Nice when the fix is to remove some code .... | ||
I'm assuming this mangle encoding is a JVM spec? | 21:04 | ||
jnthn | The rule basically is that it will give you the short name when it's unambig. | ||
21:04
dayangkun left
|
|||
jnthn | Yeah | 21:04 | |
japhb__ | OK, I'll look for that. | ||
jnthn | It's the same type name codes and format that class files have | ||
The eventual goals is to implement something so that if it is ambig we calcuate a dispatcher ) | |||
Which is just a little fiddly to write ;)) | 21:05 | ||
japhb__ | heh | ||
21:07
lichtkind left
|
|||
japhb__ | Ulti: I suspect that when Perl 6 starts going more mainstream, a bunch of grammar translators will pop up, to do the grunge work of rote conversion so humans can just tune the results. | 21:07 | |
jnthn has pondered how a Grammar::Infer could work... | |||
(Infer a grammar from example data...somehow :)) | 21:08 | ||
jnthn saw a cool talk once about using I think it was dependent types to infer a database schema... | 21:09 | ||
japhb__ | There must be some corpus of research on this ... | ||
Ulti | rosettacode.org/wiki/Parse_EBNF#Perl_6 this is really cool | ||
jnthn | japhb__: Surely :) | ||
21:10
denisboyun joined,
lowpro30__ joined
|
|||
jnthn | You tend to need some kind of underlying formalism to attack such things, or at least it helps | 21:10 | |
japhb__ | Ulti: wow, that is indeed quite cool. | 21:11 | |
jnthn | Grammar::Generative was based on a handwavey understanding of mathematical duals, for example :) | ||
21:12
lowpro30_ left
21:13
skids left
21:15
grondilu joined
21:17
dayangkun joined
21:20
airdisa_ joined
|
|||
felher | r: say [[1, 2], [2, 3]]>>.[0]; | 21:22 | |
camelia | rakudo 50cecf: OUTPUT«No such method 'postcircumfix:<( )>' for invocant of type 'Int' in sub METAOP_HYPER_CALL at src/gen/CORE.setting:16516 in block at /tmp/tA5RKhJHyC:1» | ||
felher | Shouldn't that give something like "1 2" | ||
Ah, is this that nodal-thingy, that is NYI? | 21:23 | ||
Ulti | Not Yet Implemented | ||
oh it was a question if its implemented sorry | 21:24 | ||
:Z | |||
felher | Ulti: yeah, well, I phrased that kinda bad. "Is this that nodal-thingy which is NYI?" would have been better :) | 21:26 | |
timotimo | sorry about the nodal nyiness | 21:29 | |
i kind of have been working on that | |||
never gotvaround to finishing it | |||
jnthn | nyin nyin nyin # reminds me of nyan cat :) | 21:30 | |
21:30
BenGoldberg joined
|
|||
felher | r: say [[1, 2], [2, 3]].map: *.[0]; # timotimo : np, this should do the job :) | 21:30 | |
camelia | rakudo 50cecf: OUTPUT«No such method 'count' for invocant of type 'Whatever' in method reify at src/gen/CORE.setting:7113 in method reify at src/gen/CORE.setting:7030 in method reify at src/gen/CORE.setting:7030 in method reify at src/gen/CORE.setting:7030 in met…» | ||
timotimo | on my branch that circumfix hyper usedbtobwork but that was before the switch from method to sub | 21:31 | |
hmm that does not properly curry | |||
felher | r: say [[1, 2], [2, 3]].map: { .[0] }; # next try... | 21:32 | |
camelia | rakudo 50cecf: OUTPUT«1 2» | ||
felher | here we go :) | 21:33 | |
i'll use that for now. :) | |||
21:37
ajr_ left
21:38
lowpro30__ left
|
|||
BenGoldberg | r: say $_.[0] for [1,2], [3,4]; | 21:38 | |
camelia | rakudo 50cecf: OUTPUT«13» | ||
BenGoldberg | r: say *.[0] for [1,2], [3,4]; | ||
camelia | rakudo 50cecf: OUTPUT«**» | 21:39 | |
BenGoldberg | n: say *.[0] for [1,2], [3,4]; | ||
camelia | niecza v24-98-g473bd20: OUTPUT«{ ... }{ ... }» | ||
grondilu | r: say *.[0]() for [1,2], [3,4]; | 21:40 | |
camelia | rakudo 50cecf: OUTPUT«No such method 'postcircumfix:<( )>' for invocant of type 'Whatever' in block at /tmp/SlyTsE4pHK:1» | ||
grondilu | r: say *().[0] for [1,2], [3,4]; | ||
camelia | rakudo 50cecf: OUTPUT«No such method 'postcircumfix:<( )>' for invocant of type 'Whatever' in block at /tmp/CPPQV19y_z:1» | ||
grondilu | r: say (*.[0])() for [1,2], [3,4]; | 21:41 | |
camelia | rakudo 50cecf: OUTPUT«No such method 'postcircumfix:<( )>' for invocant of type 'Whatever' in block at /tmp/dilbiWDya8:1» | ||
grondilu | r: say (*.[0])($_) for [1,2], [3,4]; | ||
camelia | rakudo 50cecf: OUTPUT«No such method 'postcircumfix:<( )>' for invocant of type 'Whatever' in block at /tmp/LGyeUb6aCG:1» | ||
grondilu gives up | |||
21:43
dayangkun_ joined
|
|||
lizmat | commuting again& | 21:44 | |
21:44
lizmat left
21:46
donaldh left
21:47
dayangkun left
21:49
bluescreen100 left,
Pzt33 joined
21:50
Pzt33 is now known as PZt
22:01
dmol joined,
ssutch left
22:11
ssutch joined
22:12
denisboyun left
22:13
dmol left
22:21
PacoAir left
22:23
BenGoldberg left
22:32
airdisa_ left
22:53
fridim_ joined
|
|||
dalek | rl6-roast-data: ec21c8d | coke++ | / (5 files): today (automated commit) |
23:19 | |
23:20
xinming left
23:22
xinming joined
23:23
cognominal joined
|
|||
dalek | gs.hs: cf3f65b | coke++ | t/spectest.data: deleted file ; file we can no longer pass |
23:36 | |
23:42
stevan_ joined
|