»ö« 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. |
|||
00:05
jnap left
00:06
rurban joined,
stevan_ joined,
ajr_ left
00:07
stevan_ left
00:08
stevan_ joined
00:10
rurban left
00:12
Psyche^ joined
00:16
[particle] joined,
Psyche^_ left
00:17
[particle]1 left
00:25
imrudbu left
00:26
imrudbu joined
00:29
BenGoldberg left
00:32
Guest18828 left
00:35
BenGoldberg joined
00:47
Guest18828 joined
|
|||
japhb__ | r: | 01:06 | |
01:06
rurban joined
|
|||
japhb__ | r: my $f = "foo"; my $b = "BAR"; << $f is a $b >>.perl.say; | 01:06 | |
camelia | rakudo d7e5e1: OUTPUT«(("foo",).list, ("is", "a"), ("BAR",).list)» | ||
japhb__ | Is that ^^^ intended? | 01:07 | |
I would have expected a flattened version. | |||
01:11
rurban left
01:19
prevost joined
01:24
benabik joined
|
|||
dalek | rl6-roast-data: 16f58c2 | coke++ | / (5 files): today (automated commit) |
01:39 | |
01:43
fridim_ joined
01:44
_ilbot left
01:45
_ilbot joined
01:47
hypolin joined
|
|||
Util | Looking for Camelia source art or stickers. Request did not make it to Perl 6 mailing list. | 01:51 | |
In re: lists.parrot.org/pipermail/parrot-d...07592.html | |||
01:55
btyler_ left
|
|||
geekosaur | um, I got it | 01:55 | |
Util | geekosaur: You got it via parrot-dev, or via perl6-users ? | 01:56 | |
01:57
woosley joined
|
|||
geekosaur | I am not on any parrot lists | 01:57 | |
Util | geekosaur: OK, then I was in error about it not making it to the Perl 6 list, probably because my ISP is non-optimal. Thanks! | 01:58 | |
02:02
ssutch left
|
|||
geekosaur | so checking headers, I (as I expected) got it via the perl6-all.perl.org list | 02:02 | |
I don't know how you read mail, but some mail systems (for example gmail and cyrus imapd) suppress duplicates in such a way that you don't get your own list messages back | 02:04 | ||
(in the case of cyrus, only if you save outgoing messages; it considers that the master copy and drops the incoming list copies as duplicates of it) | 02:06 | ||
02:06
gyutyuglf joined
02:07
rurban joined
02:11
rurban left
02:14
REPLeffect left
|
|||
Util | geekosaur: Thanks for the info. | 02:22 | |
02:25
gyutyuglf left
02:34
REPLeffect joined
02:46
rurban joined
|
|||
[Coke] enjoys some perl(er) wine, lizmat++ woolfy++ | 02:47 | ||
02:47
rurban left
02:48
prevost left
03:03
ssutch joined
03:04
LlamaRider joined
|
|||
LlamaRider | Hi. Some of my rakudo code has regressed. Turns out the regex capture variables $0, $1 ... are now of type Match, rather than Str (which is what my old code assumed them to be). | 03:07 | |
I take it I always have to explicitly say "$0.Str" now? I was doing an @array.push($0); where @array was of Str type, which no longer compiles. $0.Str compiles again of course. | 03:10 | ||
[Coke] | ~$0 should do the trick. | ||
or .Str, same thing. | |||
[Coke] wonders how to iterate over the result of an opendir. | |||
(in nqp0 | |||
03:11
araujo left
|
|||
LlamaRider | what is the point of the Match type? and shouldn't it be somehow more compatible with Str ? I need to find a resource to read on that. Will add a note to my P5-to-P6 porting guide. | 03:11 | |
[Coke] | the match is capturing all the information about the match. | 03:12 | |
r: ("asdf" ~~ "s"); say $0.perl | 03:13 | ||
camelia | rakudo d7e5e1: OUTPUT«Any» | ||
[Coke] | r: ("asdf" ~~ "s").perl.say | ||
camelia | rakudo d7e5e1: OUTPUT«Bool::False» | ||
[Coke] | ... I need sleep. ;) | ||
LlamaRider | r: ("asdf" ~~ "s"); say $0.WHAT; | ||
camelia | rakudo d7e5e1: OUTPUT«(Any)» | ||
LlamaRider | r: ("asdf" ~~ /./); say $0.WHAT; | ||
camelia | rakudo d7e5e1: OUTPUT«(Any)» | ||
LlamaRider | of course, no capture | 03:15 | |
r: ("asdf" ~~ /(.)/); say $0.WHAT; | 03:16 | ||
camelia | rakudo d7e5e1: OUTPUT«(Match)» | ||
LlamaRider | r: ("asdf" ~~ /(<[s]>)/); say $0.perl; | ||
camelia | rakudo d7e5e1: OUTPUT«Match.new(orig => "asdf", from => 1, to => 2, ast => Any, list => ().list, hash => EnumMap.new())» | ||
LlamaRider | better :) | ||
03:17
colomon joined
|
|||
LlamaRider | what I am practically whining about is that I was expecting " @string_array.push($0) " to just work, without an explicit cast to $0.Str. But anyway, thanks for the input :) | 03:17 | |
03:19
dayangkun left
|
|||
LlamaRider | And yay, my P6 port of Lingua::EN::Sentence has been successively built with Rakudo on JVM for the first time. | 03:20 | |
[Coke]++ | 03:21 | ||
successfully* (I need sleep too) | |||
03:22
REPLeffect left
03:33
cognominal left
03:35
fridim_ left
03:38
LlamaRider left
03:43
havenwood left,
havenwood joined
03:44
REPLeffect joined
03:48
havenwood left
03:55
preflex left
03:56
preflex_ joined,
ChanServ sets mode: +v preflex_,
preflex_ is now known as preflex
03:58
havenwood joined
04:04
havenwood left
04:21
[Sno] left
04:23
ksh joined
04:51
daniel-s_ joined
04:54
daniel-s left
05:06
ksh left
05:07
zby_home_ joined,
zby_home_ left
05:16
BenGoldberg left
05:22
baest left
05:27
logie left
|
|||
moritz | \o | 05:29 | |
yoleaux | 7 Oct 2013 17:29Z <[Coke]> moritz: did you fix pugs on host07? | ||
7 Oct 2013 20:47Z <lizmat> moritz: simply adding "is default" didn't work (Could not find sub &infix:<does>). too tired now to try doing mixins by hand | |||
moritz | p: say 42 | ||
camelia | pugs: OUTPUT«42» | ||
moritz | [Coke]: what exactly needs (or needed) fixing? I simply did a 'cabal install Pugs' | ||
05:30
xinming left
05:31
[Sno] joined
05:32
xinming joined
05:34
FROGGS left
05:37
SamuraiJack__ joined,
ssutch left
05:53
xenoterracide_ left
05:58
zakharyas joined
06:09
kaleem joined
06:11
jlaire_ is now known as jlaire
06:13
imrudbu is now known as ivanshmakov
|
|||
masak | mood gorning, #perl6 | 06:14 | |
oh, and @gitinfo over at git also responds to things such as 'man git push'. | 06:16 | ||
06:17
darutoko joined
06:21
SamuraiJack__ left
06:22
SamuraiJack joined
|
|||
masak | the bug at irclog.perlgeek.de/perl6/2013-10-07#i_7684699 has been submitted years ago. | 06:25 | |
it's the WAT part of unifying declarations and signatures. | |||
06:27
ssutch joined
|
|||
masak | japhb__: I don't know if irclog.perlgeek.de/perl6/2013-10-08#i_7685424 is intended. would be interesting to have it flatten and see if any spectests break. | 06:29 | |
LlamaRider: $0 did not become of type Match overnight -- it's been that way for... always. | 06:30 | ||
LlamaRider: something else must have changed from under you, not that. | |||
06:31
denis_boyun joined
06:34
denis_boyun left
06:36
denis_boyun joined
06:42
xinming left
06:43
xinming joined
|
|||
moritz | I think what changed is that typed arrays are more strictly checked these days | 06:54 | |
there used to be many loophole through which you could add elements of the wrong type | 06:55 | ||
lizmat++ fixed (nearly?) all of them | |||
lizmat | good *, #perl6! | 07:05 | |
pretty sure not all of them | |||
r: my Int @a=^10; @a[5]:delete; say @a | |||
camelia | rakudo d7e5e1: OUTPUT«0 1 2 3 4 (Any) 6 7 8 9» | ||
lizmat | r: my Int @a=^10; @a[5]:delete; say @a; say @a[5] | 07:06 | |
camelia | rakudo d7e5e1: OUTPUT«0 1 2 3 4 (Any) 6 7 8 9(Int)» | ||
lizmat | iterating over deleted entries in an array, always returns Any atm | ||
07:08
pochi joined,
lizmat_ joined
07:11
Timbus|Away joined,
__sri joined
07:12
broquain1 joined
07:13
nine_ joined
07:15
yeltzooo6 joined,
denis_boyun left
07:16
mtj_ joined
07:17
lizmat left,
nine left,
Timbus left,
denysonique left,
Khisanth left,
broquaint left,
mtj_- left,
tipdbmp left,
yeltzooo left,
Timbus|Away is now known as Timbus
|
|||
lizmat_ | fwiw, it's not yet clear what the solution would need to be | 07:23 | |
my feeling is that if you're using :delete on an array, you're using it as a hash | |||
and thus, when iterating over it, you would not see deleted elements | |||
just like you wouldn't see deleted keys in a hash when iterating over the hash | 07:24 | ||
07:24
lizmat_ is now known as lizmat
|
|||
lizmat | the coming days I will most likely be offline most of the time | 07:24 | |
will attempt to backlog when connected | |||
07:24
lizmat left
07:25
Khisanth joined
|
|||
masak | the difference between the hash and the array, though, is that the array has an ordering. | 07:35 | |
more exactly, the indices are always 0..N-1. | |||
a condition which has no correspondence in the hash case. | |||
which (IMO) explains why there's a "hole" left when you delete something. | |||
now, granted, there's a way to argue for :delete on arrays working more like .splice | 07:36 | ||
but that would be "extra semantics out of nowhere" if you ask me. the hole comes from the fact that non-last elements still need to have an index due to the 0..N-1 thing, even after being removed. | |||
07:44
araujo joined
07:47
PZt left
07:48
woolfy left
07:49
PZt joined
|
|||
masak | or, viewed from a slightly different angle: there are two behaviors here: leave a hole or don't leave a hole. reasonable use cases could be drawn up for both of these. | 07:50 | |
.splice is what we use for the "don't leave a hole" use case. | |||
if :delete is made not to leave a hole, what operation will? | 07:51 | ||
07:52
sqirrel joined
|
|||
moritz | assignment of Nil | 07:53 | |
or maybe the empty list | 07:54 | ||
@a[1,3,5] = () | |||
hoelzro | ahoy #perl6 | ||
preflex | hoelzro: you have 1 new message. '/msg preflex messages' to read it. | ||
08:00
berekuk left
08:04
PZt left
|
|||
masak | moritz: fair enough. | 08:06 | |
but there's also the performance argument: "leave a hole" is cheap, collapsing is O(.elems) | |||
08:06
tipdbmp joined
08:07
iSlug joined
|
|||
moritz | agreed | 08:07 | |
masak | in our JavaScript course, I lightly ridicule 'delete somearray[5]' for the leaving-a-hole semantics. but after this discussion, it kind of makes sense. | 08:15 | |
it's not that it's a useless operation. it's that it's an uncommon operation, and most of the time you want to splice. | 08:16 | ||
TimToady: www.bbc.co.uk/news/science-environment-24429621 # whoa, we'd better hurry! :P | |||
hehe, and on | 08:17 | ||
first comment on HN: "It is an important milestone. But to have a commercially viable fusion reactor, you'll need a factor of 50-100 more energy [...]" | |||
that's exactly like Perl 6 :P | |||
08:19
xinming left,
donaldh left
08:21
xinming joined
08:23
donaldh joined
08:26
FROGGS joined
08:28
zakharyas left
08:31
tipdbmp left
08:33
tipdbmp joined
08:42
denysonique joined,
zamolxes_ left
08:49
zamolxes joined
08:51
dakkar joined
08:57
ivanshmakov left,
ivanshmakov joined
08:59
gyutyuglf joined
09:01
fhelmberger joined
09:08
PZt joined
09:12
xinming left
09:13
xinming joined
09:14
iSlug left
09:31
zamolxes left
09:34
zamolxes joined
09:35
daxim joined
09:37
zakharyas joined
10:10
dmol joined
10:13
stevan_ left
10:14
sqirrel left,
wsri left
10:15
wsri joined
|
|||
mathw | It's interesting that someone bothered to comment with that, because I'm pretty sure the researchers know. | 10:23 | |
But then people seem to think that you guys don't know that Rakudo isn't fast enough yet, so... | 10:24 | ||
10:25
gyutyuglf left
10:30
gyutyuglf joined
10:48
gyutyuglf left
|
|||
moritz | is david wheeler on irc, and if yes, does anybody know his nick? | 10:55 | |
hoelzro | moritz: Theory | 11:06 | |
or JustATheory | |||
some variation on that theme | |||
moritz | hoelzro: thanks | 11:07 | |
11:10
grondilu joined
11:27
sqirrel joined
11:28
berekuk joined
11:37
pmurias joined
11:39
rindolf joined
|
|||
pmurias | if I want to write a tool which bundles a bunch of modules (in node format) into a single script is there a good reason to write it in full Perl6 instead of NQP? | 11:39 | |
dalek | rlito: ab2e61c | (Flavio S. Glock)++ | / (3 files): Perlito5 - perl6 - operators |
||
timotimo | perl6 gives you simpler file i/o and string manipulation and handling of lists of things | 11:41 | |
11:49
pmurias left
11:56
pmurias joined
12:11
denis_boyun joined
12:15
denis_boyun left
12:18
skids left
12:20
sqirrel left
|
|||
grondilu | r: class Foo { method postcircumfix:<( )>($i) { "ok" } }; say Foo.new()(pi) | 12:20 | |
camelia | rakudo d7e5e1: OUTPUT«ok» | ||
grondilu | r: class Foo { method postcircumfix:<( )>($i, $j) { "ok" } }; say Foo.new()(pi, 1) | ||
camelia | rakudo d7e5e1: OUTPUT«Not enough positional parameters passed; got 2 but expected 3 in method postcircumfix:<( )> at /tmp/uqBfHyo5Bt:1 in block at /tmp/uqBfHyo5Bt:1» | ||
grondilu | n: class Foo { method postcircumfix:<( )>($i, $j) { "ok" } }; say Foo.new()(pi, 1) | 12:21 | |
camelia | niecza v24-98-g473bd20: OUTPUT«Potential difficulties: $i is declared but not used at /tmp/4R06k_JLJg line 1:------> class Foo { method postcircumfix:<( )>(⏏$i, $j) { "ok" } }; say Foo.new()(pi, 1) $j is declared but not used at /tmp/4R06k_JLJg line 1…» | ||
grondilu | n: class Foo { method postcircumfix:<( )>($i, $j) { "$i $j" } }; say Foo.new()(pi, 1) | ||
camelia | niecza v24-98-g473bd20: OUTPUT«3.1415926535897931 1» | ||
grondilu | rakudobug? | ||
gfldex | grondilu: known rakudobug | 12:25 | |
grondilu | ok | 12:26 | |
pmurias | what is the recommened rakudo atm, the parrot or jvm one? | ||
12:27
pmurias left
12:28
denis_boyun joined
12:31
denis_boyun left
12:32
denisboyun joined
|
|||
nwc10 | come back pmurias | 12:34 | |
12:38
SmokeMachine left
13:05
PacoAir joined
13:06
zakharyas left
13:09
kay joined,
kay is now known as Guest65723
|
|||
dalek | rlito: 5f06d56 | (Flavio S. Glock)++ | / (3 files): Perlito5 - perl6 - operators |
13:11 | |
arnsholt | [Coke]: Could you add some more in-depth comments to NQP #126? | 13:14 | |
The bug as it stands is a bit hard to decipher for those of us who didn't attend the workshop =) | |||
timotimo: I've looked a bit at NQP #104, and it turns out NQP doesn't have temp at all. Do you mind if I close the bug? | 13:15 | ||
13:16
kaleem left
|
|||
pmichaud | nqp will need :tmp | 13:17 | |
er, :temp | |||
if only because STD.pm6 uses it. | |||
nwc10 | good *, pmichaud | ||
pmichaud | good morning, #perl6 | ||
moritz | \o * | ||
FROGGS | hi pmichaud | 13:18 | |
pmichaud | (so no, don't close #104) | 13:19 | |
timotimo | hi pm :) | 13:20 | |
arnsholt | That makes sense. In that case, I guess we'll also want temp for normal NQP code as well as regexes | 13:21 | |
pmichaud | no, not necessarily. | 13:22 | |
NQP's phillosophy is never "add a feature because we might want it" | |||
arnsholt | Right | ||
pmichaud | Also, I'm not sure that :temp and statement-level 'temp' do precisely the same thing. (They might... I just would want to verify that before automatically conjoining them) | 13:23 | |
dalek | p/buglet: 90050fd | (Tobias Leich)++ | / (13 files): buglet |
13:24 | |
13:25
hummeleB1 joined
|
|||
arnsholt | S05 says :<scope declarator> is "parsed as normal Perl 6 code", so I think it should be identical | 13:25 | |
pmichaud | yeah, but NQP's grammar stuff is bootstrappy, so sometimes things end up being not exactly identical. | 13:26 | |
arnsholt | :my is parsed by delegating back to MAIN's statement as well, which is part of the reason I assumed we'd add temp to running code as well. Keeping :temp and :my the same | ||
Yeah, that's true | 13:27 | ||
Bootstrapping has bitten me a couple of times the last few days as I've tried to close various bugs | |||
pmichaud | oooh, :my is implemented oddly in NQP's grammar. | 13:29 | |
13:29
donaldh left
|
|||
pmichaud | seems like it ought to be part of mod_ident: instead of metachar: (so that it matches :dba, :ratchet, :sigspace, etc.) | 13:30 | |
arnsholt | How so? Rakudo does the same thing, AFAICT | ||
13:31
lowpro30 joined
|
|||
pmichaud | Rakudo could be wrong also. | 13:31 | |
13:31
lowpro30_ joined
|
|||
pmichaud | otoh, it looks like some chap named 'pmichaud' is the one that put the <:my> handling into metachar: ... so perhaps it's right. | 13:32 | |
it just strikes me as being inconsistent with the others somehow. | |||
13:33
denisboyun left
13:34
kaare_ joined
|
|||
arnsholt | Why is that? If it's supposed to be parsed the same as the corresponding declaration in non-regex code, it makes sense to use the same code path, no? | 13:34 | |
13:35
lowpro30 left
|
|||
pmichaud | I think we're talking about two different things now. | 13:35 | |
Yes, I'm fine with :my calling into the main language parser. | 13:36 | ||
I'm pointing out an inconsistency with where <:my> itself is being handled, not the way in which it works. | |||
arnsholt | Indeed. Turns out there's a line I missed in between your first comment about the oddness and my first reply | 13:37 | |
(My bad | |||
13:40
bluescreen10 joined
13:44
benabik left
13:59
grondilu left
14:01
skids joined
14:02
stevan_ joined
14:04
ajr joined,
ajr is now known as Guest31368,
Guest31368 is now known as ajr_
14:08
dmol left,
logie joined
14:10
Guest18828 left
14:15
btyler joined,
broquain1 is now known as broquaint
14:21
cognominal joined
|
|||
dalek | rlito: 92acb9d | (Flavio S. Glock)++ | / (3 files): Perlito5 - perl6 - operators |
14:26 | |
14:33
Guest18828 joined
14:34
Guest18828 left,
denis_boyun joined
14:42
PacoAir left,
denis_boyun left
14:43
colomon left,
donaldh joined
|
|||
dalek | rlito: 1d2c1c6 | (Flavio S. Glock)++ | / (4 files): Perlito5 - perl6 - special vars |
14:44 | |
14:46
sqirrel joined
14:47
xinming left
14:48
xinming joined
14:50
colomon joined
14:55
dayangkun joined
14:56
benabik joined
15:01
xenoterracide_ joined
|
|||
japhb__ | r: say "foo".subst(/(o)/, "a"); for "foo" -> $l { say $l.subst(/(o)/, {"a" ~ $0}) } | 15:04 | |
camelia | rakudo d7e5e1: OUTPUT«faofaoo» | ||
japhb__ | r: say "foo".subst(/o/, "a"); for "foo" -> $l { say $l.subst(/(o)/, {"a" ~ $0}) } | ||
camelia | rakudo d7e5e1: OUTPUT«faouse of uninitialized value of type Any in string context in block at /tmp/PbRK0SUjoF:1fao» | ||
japhb__ | Yeah. There's a bug for ya. | ||
diakopter | r: $11111111111111111111111111111111111 | 15:05 | |
camelia | rakudo d7e5e1: OUTPUT«Cannot use negative index -9223372036854775808 on Nilcurrent instr.: 'throw' pc 402455 (src/gen/CORE.setting.pir:169079) (src/gen/CORE.setting:10512)called from Sub 'sink' pc 438520 (src/gen/CORE.setting.pir:182308) (src/gen/CORE.setting:11902)called f…» | ||
diakopter | that's still my fav | ||
japhb__ hates "spooky action at a distance" bugs even more than localized bugs | |||
diakopter: although yep, that one is a crazy one. | 15:06 | ||
TimToady | well, it's getting closer to Halloween... | ||
15:06
benabik left
|
|||
diakopter | TimToady: note that now that camelia is using a 64-bit parrot, the number is negativer | 15:06 | |
JimmyZ | nqp-m: $11111111111111111111111111111111111 | 15:07 | |
camelia | nqp-moarvm: OUTPUT«Confused at line 2, near "$111111111"panic» | ||
japhb__ | I'm not even sure how the bug I posted *could* be happening | ||
diakopter | it's thinking it's redeclaring $1, but not | ||
timotimo | will Parrot_str_to_cstring stop after a nullbyte is encountered? will a STR register's ->strlen stop at the first nullbyte? is there a length that will not do so? | 15:08 | |
diakopter | oh, that's $l | ||
japhb__: it's confusing $1 and $l, like I did | |||
15:08
dayangkun left
|
|||
JimmyZ | n: $11111111111111111111111111111111111 | 15:08 | |
camelia | niecza v24-98-g473bd20: OUTPUT«Unhandled exception: weird object in sub_finish Int at /home/p6eval/niecza/src/NieczaBackendDotnet.pm6 line 242 (StaticSub.finish @ 11)  at /home/p6eval/niecza/src/NieczaActions.pm6 line 4257 (NieczaActions.comp_unit @ 15)  at /home/p6eval/…» | ||
japhb__ | Yeah, sorry about that confusion, diakopter. The result of golfing the bug. | 15:09 | |
15:10
jnap joined,
dayangkun joined
|
|||
japhb__ | But in any case, why would whether or not the left subst has a capture in its regex have any effect on the subst on the right? | 15:10 | |
diakopter blames the optimizer | |||
15:10
jnap left
15:11
denis_boyun joined
|
|||
masak .oO( spooky pumpkin at a distance ) | 15:12 | ||
japhb__ wonders how the hell to work around the bug in his current code | |||
diakopter | probbaly putting it in an eval() would work. :) | 15:14 | |
japhb__ | >.< | ||
TimToady | use -> $/ { "a" ~ $0 } | 15:15 | |
japhb__ | r: say "foo".subst(/o/, "a"); for "foo" -> $l { say $l.subst(/(o)/, -> $/ {"a" ~ $0}) } | ||
camelia | rakudo d7e5e1: OUTPUT«faofaoo» | ||
japhb__ | ooh. | ||
diakopter | mwahaha | ||
TimToady | .subst doesn't set $/ for the RGH like s/// does | ||
japhb__ | But, um, WTF | ||
TimToady | it's just a normal method | 15:16 | |
japhb__ | Ah! | ||
15:16
cognominal left,
cognominal joined
|
|||
japhb__ | .oO( The problem with magic is you get used to it. ) |
15:16 | |
colomon seems to recall a lot of debate about whether .subst should set $/ | 15:17 | ||
colomon is very happy if it doesn't. | |||
diakopter | TimToady: are macro-methods spec'd? | 15:21 | |
TimToady | but it will be a FAQ if we leave it as is | ||
timotimo | oh crap, now my nqp segfaults :o | ||
TimToady | we already have some, like .VAR | 15:22 | |
diakopter | r: macro method marco { } | ||
camelia | rakudo d7e5e1: OUTPUT«===SORRY!=== Error while compiling /tmp/mWeqoXVZWwMissing blockat /tmp/mWeqoXVZWw:1------> macro method ⏏marco { } expecting any of: statement list prefix or term prefix or meta…» | ||
TimToady | .subst(...) could be parsed as a postcircumfix | 15:23 | |
yoleaux | TimToady: Sorry: that command is a web-service, but it didn't respond in plain text. | ||
timotimo | haha, what | ||
TimToady | yoleaux: you're out of your gourd | ||
15:23
[Sno] left
|
|||
TimToady | r: say $_.VAR.WHAT | 15:24 | |
camelia | rakudo d7e5e1: OUTPUT«(Scalar)» | ||
15:24
xenoterracide_ left
|
|||
diakopter | r: class Foo { macro marco { method boo { } }; method foo { marco() } }; Foo.foo() | 15:25 | |
camelia | rakudo d7e5e1: OUTPUT«===SORRY!===too few positional arguments: 2 passed, 3 (or more) expected» | ||
TimToady | well, I guess .VAR can simply be a postfix, so it's not terribly macroey | ||
timotimo | just adding a new function into nqp.ops shouldn't cause a segfault somewhere later in compilation, no? | ||
diakopter | yeah if there's a missing Makefile dependency | ||
timotimo | but i'm not using the op anywhere, and i make clean'd | 15:26 | |
diakopter | or you didn't do it right | ||
timotimo stashed the changes and rebuilds nqp to make sure master does compile no-problemo | |||
diakopter | but make clean might not be very cleanly | ||
timotimo | weird, that helped. | ||
gist.github.com/timo/b69047cf2b97b7819f16 - anything very obviously wrong about this? | 15:27 | ||
masak is still flummoxed/amused by the first comment on gist.github.com/masak/5768668 | |||
pmichaud | anyone know how long it takes email replies to github issues to show up on github? | 15:29 | |
timotimo | shouldn't take longer than a few minutes, eh? | ||
pmichaud | I sent a reply 30 mins ago and it's still not there. :-/ | ||
timotimo | huh. | ||
pmichaud | I think I'll just post directly to github then... hopefully it won't end up there twice. | ||
TimToady | masak: obviously you should've used .fmt intentionally to thwart such abuse :) | 15:30 | |
arnsholt | Better twice than no times =) | ||
pmichaud | comment added. | 15:31 | |
masak | TimToady: I like sprintf on the statement level... :) it's a bit more up-front. | 15:33 | |
diakopter | masak: I don't know about that code.. :) the answer is plainly 2 hours. | ||
masak | diakopter: :P | ||
TimToady: I found, to my surprise, that I really liked Python 3's formatting syntax. | 15:34 | ||
TimToady: the main reason being that you can "change your mind" mid-string and just start adding directives, and then "...".format() at the end. | 15:35 | ||
timotimo | i can get no info whatsoever out of this core dump :( | ||
diakopter | timotimo: I'm sure the problem is in the to_cstring calls | 15:36 | |
TimToady | masak: that's writer-centric, not reader-centric | ||
diakopter | timotimo: wait. | ||
timotimo: why do you think going to cstrings is how to do it? | |||
TimToady | most readers want to know what you're formatting; the actual format is kinda beside the point | 15:37 | |
timotimo | i looked at another function right next to it and that used that, so ... | ||
if you can tell me how to do it better, i will do it better instead :) | |||
diakopter | well it's just the point is to do it without allocations | ||
timotimo | well, i can do it on java and moarvm without extra allocations, i don't know how to do it on parrot | 15:38 | |
diakopter | show th ejava one? | ||
timotimo | will do | ||
gist.github.com/timo/b69047cf2b97b...tfile2-txt | |||
masak | TimToady: granted, but the {} things stand out pretty well too. | 15:39 | |
diakopter | ok | ||
timotimo | i don't know what interface the parrot string offers, so ... | ||
masak | TimToady: I have long since concluded that no formatting language will ever make everyone happy, but py3k's is pretty non-bad. and it feels more modern than the old C one. | ||
diakopter | commutestrationesquelism& | ||
timotimo | where should i look to find out? | ||
15:40
benabik joined
|
|||
TimToady | on reordering things from the reader's perspective, I wish Rxx reversed the thunkiness | 15:40 | |
timotimo | that would be amazing, but also pretty WAT, imo. | ||
TimToady | r: say 10 Rxx rand | ||
camelia | rakudo d7e5e1: OUTPUT«0.258589441280009 0.258589441280009 0.258589441280009 0.258589441280009 0.258589441280009 0.258589441280009 0.258589441280009 0.258589441280009 0.258589441280009 0.258589441280009» | ||
TimToady | WAT | ||
timotimo | wait. which way do you mean that? | 15:41 | |
15:41
donaldh left
|
|||
TimToady | I mean I want 10 different rands | 15:41 | |
arnsholt | masak: Based on that comment, I assume you frown upon things like %#5.4g? =) | ||
timotimo | oh, that way | ||
15:41
sqirrel left
15:42
jnap joined
|
|||
masak | arnsholt: I... I don't find it as black-and-white as "frown upon". hm. I think dedicated DSLs definitely have their place. and it's hard to get more bang for the buck than '%#5.4g'. | 15:42 | |
TimToady wonders if we can get away with simply saying "this set of operators is thunky, so thunk all the arguments and let the operator sort it out" | |||
masak | arnsholt: just... I feel we might no longer live in the world that spawned that syntax. | ||
TimToady | so something like [||] would just thunk all the args | ||
masak | TimToady: I thought the spec had wording saying something like "metaops de-magic some magic ops" | 15:43 | |
TimToady | that's just a "we haven't figured out how to de-WAT this yet" | ||
masak | ok | 15:44 | |
TimToady | but maybe we're making it too hard | ||
pmichaud | the spec's wording is to give implementor's cover so that users don't expect the WAT behavior :) | ||
s/'s/s/ | |||
TimToady | if xx thunks both sides, and the xx op knows to eval its right side automatically first, it would just work out | ||
otoh, maybe it makes constant folding harder | 15:45 | ||
it's all very well to special case the ops we know are thunky, but it'd be nice if it generalized to user-defineds | |||
arguably xx is an infix macro | 15:46 | ||
and metaops of macros might make sense to keep macroey | |||
arnsholt | masak: Yeah, you're probably right on this not being those same times. I've just learnt to do so many neat tricks like that | 15:47 | |
masak | arnsholt: sprintf syntax is the Makefile of formatting languages :P | ||
TimToady | it's back to that notion of mixed-arg macros I was talking about the day--not every arg to a macro has to be an AST | ||
in the case of infix:<xx>, a thunk and a mundane would do it | |||
masak | arnsholt: i.e. ugly/non-optimal, but Not Going Away Anytime Soon. | ||
arnsholt | Incidentally, I have also learnt to do fun things with make =) | 15:48 | |
masak | TimToady: we're running up a huge stack of (recurring) wishlist items for macros and macro-like things. | ||
TimToady: I suggest we set aside half a day or so sometime to go through them and write them down. | |||
TimToady | I just said this is pretty much the same wish I had the other day :) | 15:49 | |
masak | not anything as heavyweight as a *meeting*, mind. just an increased focus :) | ||
I'm very happy to have it here on #perl6, and act as a secretary. | |||
anyone who's interested is invited. | 15:50 | ||
PerlJam hands masak a magnifying glass | |||
masak | the goal isn't to propose solutions, just to enumerate the desires. | ||
TimToady | For near-sighted people, a magnifying glass decreases focus. :P | ||
PerlJam | are macros a blocker for 6.0.0 ? | ||
pmichaud | macros have been one of those places where a lot of hand-wavy magic gets shuttled | 15:51 | |
GlitchMr | PerlJam, macros already are implemented in Rakudo Perl. | ||
pmichaud | "...we don't know how to do this hard thing...it probably belongs in macros somewhere." :-) :-) | ||
GlitchMr | But yes, they are needed. | 15:52 | |
TimToady | PerlJam: let me make this argument: when 6.0.0 comes out, we're gonna have a lot of people saying "Ooh, macros!", and twisting them into brain pretzels--it would be nice if they didn't have the Wrong Semantics at that point. | ||
japhb__ | Is there any way to get an exit code from a read pipe? | ||
TimToady | or from the other direction, if things like Rxx have the wrong semantics, it's gonna be terribly difficult to retrofit the correct semantics | 15:53 | |
PerlJam | GlitchMr: "implemented" is a strong word :) | 15:54 | |
GlitchMr | Sort of | ||
TimToady | and I would like to carp a little bit about characterizing these as new-fangled ideas; I've been talking about infix macros for roughly a decade now | ||
dalek | rlito: b55f1ec | (Flavio S. Glock)++ | / (2 files): Perlito5 - perl6 - $# => .end |
||
TimToady | from the standpoint of normal macros, the only difference with an infix macro is that it can't retroactively change the parsing of the AST on the left | 15:55 | |
15:57
sqirrel joined
|
|||
TimToady | (ignoring the operational difference that the parse has to recognized that it has reduced a macro and do something about that immediately) | 15:57 | |
benabik | Macros can affect the parse of their arguments? I thought they received ASTs as arguments, which means their arguments are already parsed. | 15:58 | |
TimToady | but if infix:<xx> is really a macro, I see no reason in principle that infix:<Rxx> is not also a macro | ||
benabik: with the NYI 'is parsed' | |||
benabik | Using R with an infix macros means it can no longer affect the parse on the right. Compile time error if is has an is parsed on the rhs, I guess? | 15:59 | |
TimToady | well, thunky macros like xx don't change the parse | 16:00 | |
so yeah, R shouldn't work on a fancier macro | |||
benabik | Heh. I had parsed xx as a placeholder not as a concrete example. D'oh. | ||
TimToady | I dunno, maybe we want a term for thunky operators that is weaker than "macro" | 16:01 | |
thunky ops just need to control time of evaluation, not AST restructuring | 16:02 | ||
PerlJam | that sounds vaguely phaserish | 16:03 | |
timotimo | if i want to add another op to the nqp.ops, do i have to do something to another file, too? | ||
TimToady | I don't think it has to be so inside-out as phasers | ||
timotimo | i put in an op and i'm not even using it anywhere, yet it crashes | ||
TimToady | it's just three types of arguments to an immediately called subroutine | ||
benabik | Scala does that via "pass-by-name" parameters. def lazyFunc(x : => Int) only evaluates x if it gets used. | ||
TimToady | AST arg, thunk arg, normal pre-evaluated value | 16:04 | |
benabik | Although here I guess we want something that gets re-evaluated on each usage? | ||
TimToady | but as I said the other day, if everything comes in as AST, you can emulate the others with methods to compile and eval an AST | ||
16:05
denis_boyun left
|
|||
TimToady | BEGIN reduces to a macro that evaluates its AST immediately for a value | 16:05 | |
benabik | And can write a macro to simplify writing the other macros... | ||
16:07
denisboyun joined,
FROGGS left
|
|||
masak | <TimToady> I dunno, maybe we want a term for thunky operators that is weaker than "macro" | 16:09 | |
+1 | |||
timotimo | "thub" | 16:10 | |
and "methub" | |||
"methud"? | |||
TimToady | inthunk, postthunk... | 16:11 | |
16:12
jnap1 joined,
jnap left
|
|||
PerlJam | that wouldn't work better as a trait? infix:<xx>($a,$b) is thunky { ... } | 16:13 | |
masak | "thop"? | ||
PerlJam | Or is that just too late in the parse | ||
masak | but it'd be nice if the term worked for functions, too. | ||
TimToady | the salient feature is that the parameters are not needing all the power of ASTs | ||
moritz | thunky sub foo($x) { } | ||
masak | moritz++ # nice! | 16:14 | |
moritz | (and needs to be declared befure usage | ||
) | |||
TimToady | and that the parameters can differ in that regard | ||
masak | and we could have thunky macros. | ||
I'm sorry, I must & | |||
please don't say interesting things for an hour or so :P | |||
TimToady | so attaching traits to the entire thing is hanging them on the wrong peg | ||
masak | & | ||
PerlJam | ok | ||
benabik | more `sub infix:<xx>($a is thunky, $b)`? | ||
TimToady | one could also view it on the laziness spectrum | 16:16 | |
TimToady goes back to backlogging so as not to violate masak++'s dictum | |||
timotimo | what are the consequences of the "parsing nqp.ops" stage? | 16:18 | |
TimToady | (but I'm guessing this should be type-based, not trait-based) | ||
16:18
grondilu joined
16:20
fhelmberger left
|
|||
timotimo | oh damnit | 16:21 | |
i think the segfault was because i was writing "invar INT" and "invar STR" rather than "in INT" and "in STR" | |||
great >_< | |||
i think i made this mistake at least once before | 16:22 | ||
TimToady | .oO(an invariant mistake) |
||
timotimo | oh, i was wrong | 16:23 | |
it still segfaults even though it doesn't actually use my code at all | |||
TimToady | \o/ oh wait | ||
timotimo | parrot confuses me and my ignorance makes me mad at it. | 16:25 | |
16:30
FROGGS joined
16:36
[Sno] joined
|
|||
timotimo | bah! | 16:36 | |
even if the op contains nothing but $1 = 0 | |||
it *still* causes trouble somewhere else | |||
FROGGS: you know a little bit about parrot, right? | 16:39 | ||
what's wrong with this: op nqp_string_equal_at(out INT, in STR, in STR, in INT) { $1 = 0; } | |||
benabik | timotimo: looks okay to me... | 16:41 | |
timotimo | maybe the name collides and somebody already implemented that op? that might cause trouble | ||
FROGGS | don't you have INTVAL at some point rather than INT? | ||
or is this in C ? | |||
timotimo | this is nqp.ops | ||
benabik | Name collisions should cause compile or linker errors. | 16:42 | |
timotimo | didn't | ||
FROGGS | no name collision | ||
timotimo | it seems to cause nqp::exists to fail | ||
too few positional arguments: 0 passed, 1 (or more) expected | 16:43 | ||
which makes no bloody sense at all | 16:44 | ||
diakopter | twitter.com/sheeshee/status/387513133134139393 | 16:46 | |
timotimo | well, chromatic doesn't disappoint | 16:47 | |
16:47
kaleem joined,
dmol joined
16:48
sqirrel left
|
|||
diakopter | timotimo: I thought chromatic's comment was plenty fair | 16:49 | |
timotimo | it is fair, yes. | 16:50 | |
the eqat implementation on the jvm works | |||
and parrot just blows up completely when i try the simplest little bit of implementation of it | 16:51 | ||
16:52
fhelmberger joined
|
|||
[Coke] | chromatic++ | 17:00 | |
17:02
PacoAir joined
17:03
dakkar left
|
|||
PerlJam | TimToady++ :-) | 17:04 | |
17:06
havenwood joined
|
|||
[Coke] | today's very slow rakudo.jvm will try without the eval server. | 17:08 | |
arnsholt | [Coke]: Could you flesh out NQP #126 a bit? So that those of us who didn't attend RaNOW know what's going on =) | 17:12 | |
[Coke] | saw that in backscroll. there were some magic constants.... I have to dig. | 17:13 | |
17:23
Rotwang joined
17:24
kaleem left
|
|||
arnsholt | 'k | 17:24 | |
Also, I'm guessing we can close #114? | 17:25 | ||
17:25
denisboyun left
|
|||
arnsholt | And what's the state of #129? AFAICT, there seems to be some kind of eval server stuff going on, but not sure whether that's what #129 is about or not | 17:26 | |
17:26
ajr_ left
|
|||
timotimo | our evalserver seems to only be for perl6, no? | 17:27 | |
moritz | I think there's one for nqp too | ||
timotimo | then we can point it out in the bug and close it :) | ||
moritz | but verify that first please :-) | 17:28 | |
[Coke] closed #114 | |||
moritz | hm | ||
p6eval@host07:~$ find rakudo-jvm/ -name '*eval*' | |||
rakudo-jvm/bin/perl6-eval-server | |||
rakudo-jvm/bin/eval-client.pl | |||
[Coke] | 129 has had no discussion or work. | ||
moritz: that's -rakudo-, not -nqp- | |||
moritz | so if there is an nqp eval server, it's not being installed | ||
arnsholt | \o/ # Single page of NQP bugs | ||
moritz | [Coke]: that's what I was about to say | ||
[Coke] | ah, we're agreeing. | ||
FROGGS | arnsholt++ | ||
[Coke] | arnsholt: great, now I can open all my "this opcode needs a test" tickets. ;) | 17:29 | |
arnsholt | =ppppppppp | ||
Although those sound like good, actionable tickets | |||
[Coke] | arnsholt: github.com/perl6/nqp/issues/103 sounds familiar. worth a test. | ||
arnsholt | Yeah, that one's on my hit-list | 17:30 | |
[Coke] | arnsholt++ | ||
arnsholt | Looks to be reasonably LHF | ||
I'm not unhappy if people snipe the LHF though =) | |||
FROGGS | can you tag it LHF if it is not already? | 17:31 | |
arnsholt | Good idea! | ||
17:33
daxim left,
FROGGS left
|
|||
arnsholt | #110 is similar to some stuff I'd been pondering before I started bug-wrangling as well | 17:33 | |
17:35
jeffreykegler joined
|
|||
TimToady | .tell LlamaRider an array with a declared type of Str only takes strings; you're probably expecting semantics more like the specced but not-yet-implemented Str() type, which would coerce to Str | 17:35 | |
yoleaux | TimToady: I'll pass your message to LlamaRider. | ||
timotimo | i bet this optimization i'm about to implement will not change a thing at all :) | 17:36 | |
actually. i could just as well replace the few spots where nqp::substr($foo, $num, $num2) eq $otherstr appears with explicit nqp::eqat calls | |||
instead of teaching the optimizer to do the transformation | 17:37 | ||
opinions? | |||
TimToady | (optimizer + pessimizer)/2 === nominalizer :) | ||
17:38
jnap1 left
17:40
xenoterracide_ joined
|
|||
[Coke] | how does one check to see if something is a dir in nqp? we have "fileisreadable", etc., but no "fileisdir". is stat the only way | 17:43 | |
? | |||
TimToady | this is #perl6, you should ask on #nqp :P | ||
[Coke] | sadly, there's no one there. | 17:44 | |
TimToady | well, you could get back to yourself later when you know the answer... :) | ||
since there was at least one person there... | 17:45 | ||
timotimo | [Coke]: perl6 does it somehow using nqp, you should look there for the answer | 17:46 | |
TimToady 's absurdity generator is today never the whatever against a frog beautifully sofa ungood | 17:47 | ||
timotimo | hm. updating the bootstrap files in two branches will probably prove problematic ... | ||
17:47
havenwood left
|
|||
[Coke] | stat is doable. just wondering if we need to cleanup nqp ops at some point. | 17:47 | |
diakopter | mm sofa frog | 17:48 | |
[Coke] | Oy, here's a fun error: use // Comment in nqp. :P | 17:50 | |
diakopter | std: // urp | 17:51 | |
camelia | std a0bcfb1: OUTPUT«===SORRY!===Null regex not allowed at /tmp/lTUx60qD5s line 1:------> //⏏ urpTwo terms in a row at /tmp/lTUx60qD5s line 1:------> // ⏏urp expecting any of: feed_separator infix or …» | ||
[Coke] | esp. nice since it's highlighted by whatever syntax parser as a comment. :) | ||
diakopter | std: {}// urp | ||
camelia | std a0bcfb1: OUTPUT«===SORRY!===Null regex not allowed at /tmp/C0UM1c1NCx line 2:------> //⏏ urpTwo terms in a row at /tmp/C0UM1c1NCx line 2:------> // ⏏urp expecting any of: feed_separator infix or …» | ||
diakopter | std: say {}// urp | 17:52 | |
camelia | std a0bcfb1: OUTPUT«===SORRY!===Null regex not allowed at /tmp/JsNJiz9CV0 line 2:------> //⏏ urpTwo terms in a row at /tmp/JsNJiz9CV0 line 2:------> // ⏏urp expecting any of: feed_separator infix or …» | ||
diakopter | o_O | ||
I expected that to work | |||
[Coke] | nqp: my $a := nqp::stat("/etc/motd",2); // Use a constant here. | 17:53 | |
camelia | nqp: OUTPUT«Null regex not allowed at line 2, near "/ Use a co"current instr.: 'panic' pc 14748 (src/stage2/gen/NQPHLL.pir:5229) (src/stage2/gen/NQPHLL.nqp:279)» | ||
[Coke] | weird. not the error I'm getting locally. :) | ||
diakopter | r: say {}// urp | ||
camelia | rakudo d7e5e1: OUTPUT«===SORRY!=== Error while compiling /tmp/oguZx8esiQNull regex not allowedat /tmp/oguZx8esiQ:2------> //⏏ urp» | ||
diakopter | o_O | ||
TimToady | why? line-ending } terminates as statement | ||
17:53
ajr joined
|
|||
TimToady | *a | 17:53 | |
diakopter | n: say {}// urp | ||
camelia | niecza v24-98-g473bd20: OUTPUT«===SORRY!===Null regex not allowed at /tmp/74CjDeoSu5 line 2:------> //⏏ urpAction method quote:sym<//> not yet implemented at /tmp/74CjDeoSu5 line 2:------> //⏏ urpTwo…» | ||
diakopter | really!!?! | ||
that's, um, news | |||
TimToady | no it isn't | ||
diakopter | I thought it was just for block declarations | ||
17:53
ajr is now known as Guest45348
|
|||
TimToady | that is a block | 17:54 | |
17:54
Guest45348 is now known as ajr_
|
|||
diakopter | top-level block declarations, I mean | 17:54 | |
TimToady | no, it's never been like that | ||
the whole point is to allow user-defined constructs to parse the same way | |||
diakopter | p5eval: {}// urp | ||
p5eval | diakopter: ERROR: Unrecognized character \xE2; marked by <-- HERE after {}<-- HERE near column 3 at (eval 7) line 1. | ||
diakopter | oh yeah :) | ||
TimToady | *always been that way in p6 | 17:55 | |
diakopter | oh yeah, p5eval doesn't translate newlines | ||
timotimo | i'm using eqat in three places in QRegex/Cursor.nqp, so hopefully we gain a tiny shred of parsing performance by sometimes not having to do a substring allocation for some parsings | ||
diakopter | mebbe | ||
timotimo | 4 places actually | ||
17:58
rindolf left
18:02
denisboyun joined
18:04
LlamaRider joined,
bluescreen10 left
|
|||
LlamaRider | moritz++ thanks for explaining the bug-as-feature situation with pushing Match objects in Str arrays. I'm still wondering if there shouldn't be some automagic type-casting that invokes the .Str method of an object if it is being pushed in a Str array. | 18:05 | |
yoleaux | 17:35Z <TimToady> LlamaRider: an array with a declared type of Str only takes strings; you're probably expecting semantics more like the specced but not-yet-implemented Str() type, which would coerce to Str | ||
LlamaRider | oh, there you go. I probably do. | 18:06 | |
18:07
fhelmberger left
18:08
darutoko left
|
|||
[Coke] | gist.github.com/coke/6888956 - documented ops that do not appear in the test suite | 18:11 | |
(nqp) | |||
LlamaRider | .tell TimToady I guess the interesting question is which operations should do type-coercion by default (if any). In my example, @string_array.push($0) really feels like coercing to Str would be the DWIM behaviour. | ||
yoleaux | LlamaRider: I'll pass your message to TimToady. | ||
[Coke] | ^^ in case anyone is bored. :) | ||
(very simplistic test which I will check in later) | 18:12 | ||
18:14
SamuraiJack left
|
|||
LlamaRider | interesting soup of ops there :) | 18:15 | |
diakopter | [Coke]: which test suite? | 18:18 | |
18:19
rurban joined
|
|||
PerlJam | Higgs finally got a Nobel prize www.nobelprize.org/nobel_prizes/phy...ates/2013/ | 18:20 | |
pmichaud | well, if Higgs hadn't been hiding out for so long, it might've occurred sooner. :-) | 18:22 | |
rurban | I'm working on github.com/perl6/nqp/pull/76 new-packfile-api. Can someone familiar with latest nqp rebase new-packfile-api? I'll merge parrot also then | ||
pmichaud | I mean, how long did the search take? | ||
rurban | new parrot/new-packfile-api with old nqp/new-packfile-api passes all tests | ||
There are several nqp conflicts which I feel not being able to merge | 18:23 | ||
18:26
not_gerd joined
|
|||
not_gerd | o/ | 18:26 | |
diakopter | o/ | 18:27 | |
rurban | hi not_gerd: I just finished your parrot/new-packfile-api and am now waiting on an updated nqp/new-packfile-api rebase. Could you do that or should we wait for Pm? | ||
pmichaud | I already said I would re-do the nqp version of the patch. | 18:28 | |
rurban | super | ||
pmichaud | (so no, please don't merge the existing patch) | ||
also, we need to coordinate any nqp patch with a parrot release | 18:29 | ||
rurban | I'll wait a bit then. The nqp rebase looked too tricky to me. There are also unrelated g++ strictness issues | ||
pmichaud | right. | ||
I just needed an up-to-date parrot branch to work from. | 18:30 | ||
not_gerd | I remember the bootstrapping being somewhat tricky | ||
I did not really understand what I was doing at the time | |||
pmichaud | the bootstrapping can indeed be tricky. | ||
not_gerd | trial&error until it worked ;) | ||
I think I finally succeeded by bootstrapping the bootstrap via whiteknight's bootrstrap files | 18:31 | ||
or something along these lines | |||
pmichaud | it's one of those things that requires getting all the way to a working Rakudo before we can fully commit | 18:32 | |
diakopter | ah, so that's how the backdoor-injector sneaked in... | ||
pmichaud | was there a September (5.8.0) release? | 18:34 | |
timotimo | what's the benefits of the new packfile api? | ||
not_gerd | it was the first step on whiteknight's internals refactor | 18:35 | |
pmichaud | timotimo: main benefit will be that we can compile hll source directly to .pbc without having to generate a separate .pir file | ||
not_gerd | basically, less magic | ||
pmichaud | (we still go through PIR internally, but don't have to save it to a separate file and then recompile that with Parrot to get a .pbc) | ||
not_gerd | eg you can just annotate subs with arbitrary tags and let a higher layer decide what it wants to do with that information | ||
I removed the ->pir->pbc as an indentive to get whiteknight'S work merged ;) | 18:36 | ||
timotimo | that sounds nice | 18:37 | |
18:39
benabik left,
sqirrel joined
|
|||
not_gerd | personally, I always wodered why there weren't more complaints about the extremely unfriendly module build process | 18:39 | |
I guess everyone was happily using panda | |||
pmichaud | We can create a nqp branch that works with the parrot/new-packfile-api branch, but I don't want nqp to merge that to master until after there's a parrot release with its branch merged. | ||
18:40
nyuszika7h left
|
|||
pmichaud | not_gerd: I suspect it's a bizarre case where people that knew enough to complain didn't want the responsibility of having to do something about it :) | 18:40 | |
18:40
nyuszika7h joined
|
|||
timotimo | my eqat implementation seems to actually be slower than taking a substr and eq-ing it | 18:42 | |
TimToady | does substr know that strings are immutable and avoid copying? | 18:43 | |
yoleaux | 18:11Z <LlamaRider> TimToady: I guess the interesting question is which operations should do type-coercion by default (if any). In my example, @string_array.push($0) really feels like coercing to Str would be the DWIM behaviour. | ||
TimToady | LlamaRider: not if you're expecting it to intuit that only from its name | ||
people seem to want to put numbers into their arrays occasionally too... | 18:44 | ||
so really only an explicit declaration can produce those results | 18:45 | ||
timotimo | i think he means a my Str @string_array | ||
pmichaud | TimToady: in Parrot the substr op knows that it can avoid copying, yes. | ||
Util | pmichaud: There was *not* a September release. (My fault) There is an October release scheduled on the 15th. | 18:46 | |
dalek | albot/host07: 5126e0a | moritz++ | evalbot.pl: use evalserver for rakudo-jvm |
||
pmichaud | timotimo: your eqat implementation is for Parrot or JVM or ... ? | ||
18:46
camelia left
|
|||
timotimo | for parrot | 18:46 | |
the jvm version uses regionMatches method of String objects | |||
and moarvm has its own implementation, which is the prior art for this | 18:47 | ||
pmichaud | good for the jvm version | ||
dalek | albot/host07: 7529097 | moritz++ | evalbot.pl: fix string terminator |
||
timotimo | where do i have to look for the eq implementation atop parrot? | ||
moritz | r: say 1 | ||
18:47
camelia joined
|
|||
moritz | r: say 1 | 18:47 | |
Util | pmichaud: If it follows the patten of last year, then it will be a Supported release. | ||
pmichaud | I'd need to look at the parrot implementation a bit. I worked on a version of eqat once before for Parrot but had to abort due to time constraints | ||
Util: okay, good. | |||
18:47
ChanServ sets mode: +v camelia
|
|||
camelia | rakudo d7e5e1: OUTPUT«1» | 18:48 | |
moritz | do we still care to pretend that some releases are more supported than others? | ||
timotimo | pmichaud: my current version of eqat has two STRING_ITER's running at the same time and i'm just comparing the advance_and_get return values against each other | ||
and i'm short-circuiting on failure | |||
moritz | rakudo-jvm: say 42 | ||
camelia | rakudo-jvm: OUTPUT«Can't exec "/home/p6eval/jvm-rakudo/eval-client.pl": Permission denied at lib/EvalbotExecuter.pm line 183.exec (/home/p6eval/jvm-rakudo/eval-client.pl /home/p6eval_eval/p6eval-token run -e /tmp/IBJYwuEISQ) failed: Permission denied» | ||
18:48
jnap joined
18:49
camelia left
|
|||
dalek | albot/host07: bea1487 | moritz++ | evalbot.pl: need perl 5 to run the eval-client |
18:49 | |
pmichaud | I'll try to have an nqp branch with the new packfile api changes in the next couple of days, so that parrot can make a decision about merging its packfile api branch to master | ||
moritz | nqp: say(42) | ||
18:49
camelia joined
|
|||
pmichaud | timotimo: I think the STRING_ITERs might be a little on the slow side. Also it's important to know what string encoding lies underneath. | 18:49 | |
18:49
ChanServ sets mode: +v camelia
|
|||
moritz | nqp: say(42) | 18:50 | |
camelia | nqp: OUTPUT«42» | ||
moritz | rakudo-jvm: say 42 | ||
camelia | rakudo-jvm: OUTPUT«Error while reading '/home/p6eval_eval/p6eval-token': Permission denied at /home/p6eval/jvm-rakudo/eval-client.pl line 10.» | ||
moritz | rakudo-jvm: say 42 | 18:51 | |
camelia | rakudo-jvm: OUTPUT«===SORRY!=== Error while compiling -eTwo terms in a rowat -e:1------> /tmp/⏏MG_ENJRCWj expecting any of: postfix infix stopper infix or meta-infix statement end …» | ||
18:52
camelia left
|
|||
dalek | albot/host07: 2e7952d | moritz++ | evalbot.pl: do not mix -e and file name |
18:52 | |
moritz | rakudo-jvm: say 42 | ||
rakudo-jvm: say 42 | 18:53 | ||
18:53
camelia joined,
jeffreykegler left,
ChanServ sets mode: +v camelia
|
|||
moritz | nqp: say(42) | 18:53 | |
camelia | nqp: OUTPUT«42» | ||
moritz | rakudo-jvm: say 42 | ||
camelia | rakudo-jvm: OUTPUT«Could not open /tmp/IMTMMZn4mW. java.nio.file.AccessDeniedException: /tmp/IMTMMZn4mW» | ||
pmichaud | timotimo: Parrot's version of testing for string equality is src/string/encoding/shared.c:149 | ||
timotimo | thank you | 18:54 | |
i was trying to find that, but failing | |||
pmichaud | it only falls back to STRING_ITER if the two encodings are different. | ||
which means that for most comparisons, it just does a memcmp | |||
timotimo | the memcmp is probably much faster, yeah | ||
18:55
camelia left
|
|||
dalek | albot/host07: 17cda89 | moritz++ | lib/EvalbotExecuter.pm: make temp files world-reable they just contain code that codes through IRC anyway |
18:55 | |
pmichaud | is your version checked in somewhere that I can look at it? | ||
I might see something quick and obvious | |||
18:56
camelia joined
|
|||
pmichaud | (if not, no biggie) | 18:56 | |
moritz | rakudo-jvm: say 42 | ||
timotimo | i can push it into a nqp branch right now, hold on a sec | ||
LlamaRider | TimToady, as timotimo suggested I meant a predeclared "my Str @string_array"; Then the .push($0) could figure out to coerce to $0.Str | ||
18:56
ChanServ sets mode: +v camelia
|
|||
camelia | rakudo-jvm: OUTPUT«Could not open /tmp/ZvCrQ8TnYT. java.nio.file.AccessDeniedException: /tmp/ZvCrQ8TnYT» | 18:56 | |
pmichaud | unless things have changed, my Str @array specifies a constraint, not a coercion | ||
moritz | BUT I CHMOD'ed IT! | ||
pmichaud | thus @array.push(42) should throw an exception. | 18:57 | |
dalek | p/eqat_op: aa949a8 | (Timo Paulssen)++ | src/vm/ (4 files): add nqp::eqat to jvm and parrot. |
||
p/eqat_op: d0a8aad | (Timo Paulssen)++ | src/vm/parrot/stage0/ (9 files): update bootstrap files |
|||
p/eqat_op: 9bbc310 | (Timo Paulssen)++ | src/ (5 files): use the new nqp::eqat op in a couple of places |
|||
lue | hello world o/ | ||
pmichaud | oh, ouch ouch ouch | 18:58 | |
- if nqp::substr($spec, $pos, 1) eq '!' { | 18:59 | ||
that's much faster using ord, I suspect. | |||
(as would any single-char comparison) | |||
oh, but that's not on a hotpath. never mind. | |||
timotimo | won't eqat give at least a bit of speedup there, though? | ||
pmichaud | only if it's on a hotpath. | 19:00 | |
timotimo | it should be able to skip a bit of initialisation of string boxes | ||
pmichaud | also, I would prefer any form of eqat to be able to handle case insensitivity | ||
LlamaRider | pmichaud that's exactly what I meant by "the tricky part is to figure out when coercions are DWIM and when they're a problem". Never doing implicit coercion is certainly a nice purist position. But coercing a Match to a Str seems generally a DWIM behaviour. | ||
timotimo | how does an implementation of eqat that can do that look like? | ||
pmichaud | basically, I think that eqat ought to expose the same sorts of features that regionMatches does in java | 19:01 | |
moritz | LlamaRider: that's what coercion types (NYI) are for | ||
LlamaRider: or more to the point, when you want coercion to Str, most likely what you actually want is a type constraint of Cool, not Str | |||
timotimo | i can make a second op that is insensitive to case, that's no problem | ||
but how do i do it in one op without pessimizing every use of it? | |||
pmichaud | I'm fine if they're separate ops for now. | 19:02 | |
LlamaRider | moritz: I have to learn what Cool is first, then I can grock what you've said :) | ||
timotimo | very well | 19:03 | |
pmichaud | it's bugged me for a long time that Parrot doesn't offer a case-insensitive compare op | ||
timotimo | how do i properly get the offset turned into whatever i need to add to ->strstart? | ||
i'll need some kind of skipping/scanning operation for that | |||
pmichaud | timotimo: I don't know that part off the top of my head. :-/ | ||
timotimo | that's all right, i'll look at the source code or pester #parrot :) | 19:04 | |
pmichaud | but that's where the eqat operation might want to go lower-level than a parrot op -- i.e., down to the string encoding level. | ||
or, if you want to leave it at the level of a parrot op, then just optimize for known encoding types, such as ucs4 | |||
i.e., if the target strings are ucs4, then you can calculate the offset directly and call memcmp | 19:05 | ||
timotimo | there seems to be something called STRING_scan | ||
it turns into a ->scan on the encoding | 19:06 | ||
pmichaud | there is a way to advance STRING_ITER, yes, and it (should be) already optimized for fixed with encodings | ||
*fixed width | |||
dalek | albot/host07: 85fbf79 | moritz++ | lib/EvalbotExecuter.pm: another chmod |
19:07 | |
timotimo | that gives the number of codepoints in a string, that's not the right thing it seems | ||
dalek | albot/host07: c4fb432 | moritz++ | build.pl: no need to sync on host07 |
19:08 | |
19:08
camelia left
|
|||
TimToady | r: say fc("foo") eq fc("FOO") | 19:08 | |
dalek | albot/host07: 7fb4b53 | moritz++ | lib/EvalbotExecuter.pm: fix syntax error, moritz-- |
||
TimToady | enobot | 19:09 | |
moritz | TimToady: sorry, I'm breaking camelia right now :-) | ||
19:09
camelia joined
|
|||
TimToady | r: say fc("foo") eq fc("FOO") | 19:09 | |
19:09
ChanServ sets mode: +v camelia
|
|||
camelia | rakudo d7e5e1: OUTPUT«===SORRY!=== Error while compiling /tmp/P1ygZwbHJHUndeclared routine: fc used at line 1. Did you mean '&lc', '&uc', '&tc'?» | 19:09 | |
timotimo | indeed, i can extract the bytepos of the iter and memcmp with that | ||
moritz | rakudo-jvm: say 42 | 19:10 | |
TimToady | that is the correct way to do caseless comparison, Unicodically speaking | ||
camelia | rakudo-jvm: OUTPUT«42» | ||
dalek | albot/host07: ed7a1ff | moritz++ | evalbot.pl: rj as alias for rakudo-jvm |
19:11 | |
timotimo | TimToady: all over the code i see comparisons that use lc and eq ... | ||
TimToady | fc is S32/StA:96r | 19:12 | |
bleh | |||
fc is S32/Str:96 | |||
timotimo | pmichaud: how do you feel about turning substr + eq/ne into eqat automatically using the optimizer? | 19:13 | |
(that could also do the ordat + a number comparison at optimize time for single-character strings) | |||
pmichaud | timotimo: I'm not too fond of that. | 19:14 | |
timotimo | roger | ||
pmichaud | that feels like a little too much magic. | ||
timotimo | i've replaced all instances that don't have an lc forced around it for now anyway | ||
so there'd only be wins from new code from here on out | |||
pmichaud | now then, eqat could do the ordat optimization whenever the length is constant 1 | ||
timotimo | is that something the op would do or the optimizer? | ||
pmichaud | either, although having the op do it seems straightforward enough. | 19:15 | |
timotimo | depends. that could very well cause a pessimization at run-time because it has to check all the time | 19:17 | |
at least now i got a compile run where the time was slightly less than in the unmodified version | |||
19:18
havenwood joined
|
|||
timotimo | nqp: say(nqp::ordat("hello", 1)) | 19:18 | |
camelia | nqp: OUTPUT«101» | ||
pmichaud | ...why would that be a runtime pessimization? | ||
timotimo | r: say chr(101); | ||
camelia | rakudo d7e5e1: OUTPUT«e» | ||
pmichaud | eqat can do the ordat optimization whenever the length is *constant 1* | 19:19 | |
at compile time | |||
timotimo | pmichaud: because a check if the string is length-1 could already have been done at compile-time | ||
oh? i don't have to do anything for that? | |||
pmichaud | depends on how the nqp::eqat op is constructed. | ||
timotimo | ah, you mean the part where i add_pirop_mapping? | ||
pmichaud | right, it doesn't have to be a straight-to-pir-op. | 19:20 | |
although the check for length 1 could easily be done inside the Parrot op, too. | |||
and that might be faster than anything else. | |||
anyway, as long as the nqp::eqat API is sane, it's easy to move the optimizations around underneath. | |||
dalek | albot/host07: 59088e0 | moritz++ | build-scripts/rebuild-rakudo-jvm.sh: rebuild script for rakudo jvm |
||
timotimo | ord already knows stuff about encodings and byte lengths and such, right? so i wouldn't have to muck about with encodings manually? | 19:22 | |
of course it does. | |||
19:25
LlamaRider left
|
|||
pmichaud | 18:48 <moritz> do we still care to pretend that some releases are more supported than others? | 19:26 | |
Whether we pretend it or not, the Parrot website still discusses such things, and Debian packagers may still care about it -- which means we have to be aware of it. | 19:27 | ||
We don't want to paint ourselves into a corner of having Rakudo releases for which a "supported Parrot" won't ever be available. | 19:28 | ||
dalek | p/eqat_op: 4cc669c | (Timo Paulssen)++ | src/vm/parrot/ops/nqp.ops: special case same-encoding strings, length-1 needles. |
19:33 | |
timotimo | pmichaud: could you look at the branch that starts with 0 && for the strlen == 1 thing? it caused a strange error to occur which tells me eqat was wrong somewhere and caused a bad decision to be made in a regex or something | ||
i wasn't sure if STRING_ord takes a byte or character index | 19:34 | ||
pmichaud | character, almost certainly. | ||
timotimo | good, in that case i don't have to do the iterator trick, but it was wrong before i added that as well | ||
oh, haha | |||
i didn't set the offset local variable. | 19:35 | ||
19:43
cognominal__ joined
|
|||
dalek | albot/host07: 4c128a7 | moritz++ | runtime/run-rakudo-jvm-evalserver: tool for running the rakudo-jvm evalserver |
19:43 | |
moritz | can somebody with a bit of p5 fu tell me why this script produces a syntax error? | ||
Scalar found where operator expected at run-rakudo-jvm-evalserver line 26, near "wait $pid" (Do you need to predeclare wait?) | 19:44 | ||
but isn't wait a builtin? | |||
pmichaud | I don't think the builtin wait takes an argument. | 19:46 | |
you might be looking for waitpid | |||
moritz | oh right | ||
pmichaud++ | |||
19:46
cognominal left
|
|||
dalek | albot/host07: 4e0ce55 | moritz++ | runtime/run-rakudo-jvm-evalserver: fix run-rakudo-jvm-evalserver, pmichaud++ |
19:47 | |
timotimo | pmichaud: from my current approach, i cannot get visible speed improvements in parsing the rakudo setting (which is my benchmark for this) | 19:49 | |
dalek | albot/host07: 761e5b9 | moritz++ | runtime/run-rakudo-jvm-evalserver: need to delete cookie first |
||
moritz | r-j: say 42 | 19:50 | |
camelia | rakudo-jvm: OUTPUT«42» | ||
moritz | \o/ | ||
pmichaud | timotimo: when I did my early experiments with eqat, I also wasn't seeing significant improvements. | ||
timotimo | though, i could do the thing now that completely replaces the eqat code by an ordat | ||
pmichaud | I suspect they exist... we just haven't found the magic place for the speedup. | ||
TimToady still thinks that should just be j anymore, with p for parrot and m for moar | |||
timotimo | heh :) | 19:51 | |
pmichaud: should i leave the replacements in? i can revert the commit so that later it could be dug out again :) | |||
lue | and N for NQP :) | 19:52 | |
pmichaud | timotimo: whatever you and/or jnthn++ think is best | ||
dalek | albot/host07: fb918f7 | moritz++ | evalbot.pl: report revision for rakudo-jvm |
||
19:52
camelia left
|
|||
timotimo | at this point i'd just leave them in | 19:52 | |
19:53
camelia joined,
ChanServ sets mode: +v camelia
|
|||
moritz | j: say 'lot its me!' | 19:54 | |
camelia | rakudo-jvm d7e5e1: OUTPUT«lot its me!» | ||
TimToady | .oO(LOTCATS THESE DAZE) |
19:55 | |
19:55
sqirrel left
|
|||
moritz | TimToady: they don't even both to shout anymore :-) | 19:55 | |
timotimo | okay, going to test my ordat replacement trick now ... | 20:00 | |
oh, no return in the qastcomp | 20:01 | ||
er, rather, Operations.nqp | |||
er ... | |||
moritz | s/both/bother/ | ||
timotimo | Error while compiling op eqat (source text: "nqp::eqat($name, '!', 0)"): Could not find sub RETURN - ...?! | 20:02 | |
what might i have messed up there? | |||
source text: "return 0 if nqp::eqat($name, '!', 0)" - that may be more helpful | 20:03 | ||
not using return in the operation helped compiling, huh | 20:04 | ||
moritz | enough camelia hacking for today, g'night everybody | 20:05 | |
TimToady | o/ | ||
20:06
xinming left
20:07
slava left
20:08
xinming joined
20:09
lowpro30__ joined
20:12
lowpro30_ left
|
|||
diakopter | pmichaud: right, the benefit of the eqat on moar is it knows the internals | 20:18 | |
er, forgot I was backlogging | |||
pmichaud | diakopter: yes, we should be able to do something similar for Parrot, but haven't found the magic place for it yet. | 20:19 | |
timotimo | huh, what | 20:20 | |
i have a debug say($op.dump) in the beginning of the add_core_op code block for eqat, that is not getting executed | |||
oh! | 20:21 | ||
that gets executed *after* stage ast, of course | |||
diakopter | er | ||
no, it gets executed in BEGIN of nqp... so it's already run when you launch nqp | 20:22 | ||
dalek | p/eqat_op: ec7c8fc | (Timo Paulssen)++ | src/vm/parrot/ops/nqp.ops: STRING_ord takes chars, not bytes. local var thinko. |
||
p/eqat_op: d60ae78 | (Timo Paulssen)++ | src/vm/parrot/QAST/Operations.nqp: replace some eqat with ordat at compiletime. |
|||
20:23
Timbus left,
Timbus joined
20:24
berekuk left,
berekuk joined
|
|||
dalek | p/eqat_op: 2c6e75b | (Timo Paulssen)++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java: fix comment. |
20:25 | |
timotimo | i'll run a spectest to see if anything b0rked | 20:26 | |
20:31
lowpro30 joined
20:33
lowpro30 left,
Rotwang left
20:35
lowpro30__ left
20:36
lizmat joined
20:39
kaare_ left
|
|||
timotimo | some tests are failing, but i'll go to bed in order to get a fresh look at all this tomorrow | 20:40 | |
i'm guessing "Cannot get character past end of string" comes from the guts of parrot? | 20:43 | ||
not_gerd | bye, #perl6 | 20:45 | |
20:45
not_gerd left
|
|||
timotimo | probably just have to check for ranges and bail out if necessary | 20:45 | |
nqp: nqp::ordat("hi", 100) | 20:46 | ||
camelia | nqp: OUTPUT«Cannot get character past end of stringcurrent instr.: '' pc 40 ((file unknown):36113271) (/tmp/9pLSwLi6sM:2)» | ||
timotimo | oh, that needs a range check now, too ... | ||
nqp: nqp::substr("hi", 100, 1) | |||
camelia | nqp: OUTPUT«Cannot take substr outside stringcurrent instr.: '' pc 40 ((file unknown):55417111) (/tmp/3LEbFrm_g0:0)» | ||
timotimo | nqp: nqp::substr("hi", 1, 100) | ||
camelia | ( no output ) | ||
timotimo | hm. | ||
not as bad as i feared | |||
anyway. off to bed i go :) | |||
20:49
ssutch left
20:52
PacoAir left
20:59
donaldh joined
21:04
btyler left
21:06
bbkr_ left,
sivoais left,
skids left,
sivoais joined
21:07
rom1504 joined
21:10
lowpro30 joined
21:12
FROGGS joined
|
|||
FROGGS | o/ | 21:13 | |
mental not: drinking beer with uk-ppl is challenging | 21:14 | ||
note* | |||
21:15
lowpro30_ joined
21:16
btyler joined
21:19
LlamaRider joined,
lowpro30 left
|
|||
lizmat | FROGGS: fwiw, I have the same with a lot of German beer drinking :-) | 21:27 | |
donaldh | hmm, yes, culturally predisposed to volume drinking. | 21:29 | |
21:29
stevan_ left
|
|||
lizmat | zum Wohl! | 21:36 | |
masak: re irclog.perlgeek.de/perl6/2013-10-08#i_7686276, :delete on an array should *not* be like splice, because that would be changing the "keys" on the array | 21:41 | ||
if you delete a key from a hash, the implementation might decide to keep the entry in place and just mark it as deleted | 21:43 | ||
I see doing :delete on an array as the same | |||
also: "normal" users of arrays, would never use :delete on an array, unless they would know what they're doing | 21:44 | ||
the question to me is, *if* iterating over an array with deleted elements would skip those, should .elems not be reflecting that as well? | 21:45 | ||
in other words: .elems would be the number of undeleted elements | |||
.end would still show the last element index | |||
and perhaps we should have a "is sparse" trait on arrays to allow :delete to work | 21:46 | ||
donaldh is failing to grok the priorInvocation replacement in MoarVM. Or rather, failing to map it across to JVM. | 21:47 | ||
rurban | The challenge with uk/us-ppl and beer is to avoid ale and stout. We germans are used to lager and pils | ||
pmichaud | lizmat: the analogous case would be something like my @a; @a[3] = 'abc'; say @a.elems | 21:48 | |
I'd expect that to be 4, not 1. | |||
(so no, don't skip over empty elems) | |||
lizmat | r: my @a; @a[3]=1; say @a[1,2,3]:exists | 21:49 | |
camelia | rakudo d7e5e1: OUTPUT«False False True» | ||
diakopter | donaldh: point me to the relevant diff(s) and I'll explain | ||
lizmat | r: my @a; @a[3]=1; say @a[^3]:exists | ||
camelia | rakudo d7e5e1: OUTPUT«False False False» | ||
pmichaud | r: my @a; @a[3] = 1; say @a[^4]:exists | ||
camelia | rakudo d7e5e1: OUTPUT«False False False True» | ||
lizmat | pmichaud: hence maybe the "is sparse" trait ? | 21:50 | |
pmichaud | I think S09 already addresses something like this. | ||
but I could be wrong about that. | |||
donaldh | diakopter: tbh, I've run out of time before a week's vacation so will need to leave it 'til I return. | 21:51 | |
21:51
sqirrel joined
|
|||
donaldh | diakopter: unless someone else gets there first :-) | 21:51 | |
21:53
ajr_ left
21:56
lowpro30_ left
|
|||
lizmat | pmichaud: S09:589 "The C<.keys> method also returns the keys of all existing elements." | 21:58 | |
synopsebot | Link: perlcabal.org/syn/S09.html#line_589 | ||
lizmat | but that seems to apply to arrays with predefined element lists | ||
but I wonder why those should be different from "normal" arrays, really | |||
on the other other hand, I guess it's not too much problem to say "@a[]:v" instead of @a when iterating | 22:01 | ||
r: my @a; @a[3]=42; .say for @a[]:v | 22:02 | ||
camelia | rakudo d7e5e1: OUTPUT« 42» | ||
lizmat | r: my @a; @a[3]=42; .say for @a | ||
camelia | rakudo d7e5e1: OUTPUT«(Any)(Any)(Any)42» | ||
lizmat | r: my @a; @a[3]=42; .WHAT..say for @a # whoa! | 22:05 | |
camelia | rakudo d7e5e1: OUTPUT«(timeout)use of uninitialized value of type Any in string context in block at /tmp/5yqRh05VK4:1» | ||
lizmat | not sure this warrants a rakudobug | ||
grondilu can not parse .WHAT..say for @a | |||
lizmat | it was a typo | 22:06 | |
but the result parsed apparently in a way that hangs | |||
22:06
BenGoldberg joined
|
|||
grondilu | std: .WHAT..say for my @ | 22:06 | |
camelia | std a0bcfb1: OUTPUT«===SORRY!===Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/1IcZTrCCr2 line 1:------> .WHAT..say⏏ for my @Check failedFAILED 00:01 124m» | ||
lizmat | 100% CPU usage and slow memory growth | ||
grondilu | std: .WHAT..say(Mu) for my @ | 22:07 | |
camelia | std a0bcfb1: OUTPUT«ok 00:01 124m» | ||
grondilu | std: .WHAT .. say(Mu) for my @ | ||
camelia | std a0bcfb1: OUTPUT«ok 00:01 124m» | ||
grondilu | std: .WHAT .. say(Mu) | ||
camelia | std a0bcfb1: OUTPUT«ok 00:01 123m» | ||
grondilu | yeah, why not. | ||
lizmat | the bar is closing, later& | 22:09 | |
22:09
lizmat left
22:12
denisboyun left
22:17
LlamaRider left
22:27
BenGoldberg left
22:35
BenGoldberg joined
|
|||
jnthn | evening, #perl5 | 22:37 | |
yoleaux | 22:27Z <diakopter> jnthn: I saw this, which led me to notice that TCC is almost done switching its license from lgpl to mit-style...! easy assembler! blogs.perl.org/users/david_mertens/...-perl.html | ||
jnthn | uh | ||
#perl6 | |||
22:38
pecastro_ joined,
jnap left
22:39
lizmat joined
22:41
pecastro left,
woolfy joined
22:43
donaldh left
22:46
jnap joined
22:47
PZt left
22:54
LlamaRider joined
22:56
LlamaRider left
23:01
btyler left
23:02
sqirrel left
|
|||
[Coke] waves. | 23:08 | ||
23:11
grondilu left
23:16
grondilu joined
|
|||
dalek | p: 4c66315 | coke++ | t/docs/opcodes.t: remove unneeded use. |
23:18 | |
p: 23768fd | coke++ | t/docs/tests.t: Add test to see if opcodes are tested |
|||
23:18
sqirrel joined
|
|||
[Coke] | that new test is braindead, but an ok start. (many opcodes are untested) | 23:23 | |
23:23
colomon left
|
|||
dalek | p/eqat_op: 84eac7b | coke++ | docs/ops.markdown: add docs for eqat opcode |
23:24 | |
[Coke] | ^^ there is also an "eqat_internal" op. what's up with that? | ||
23:25
woolfy left
|
|||
jnthn has no idea... | 23:26 | ||
TimToady | it's internal, so you're not supposed to know about it | ||
[Coke] | it's just /called/ internal. :P | 23:27 | |
23:28
havenwood left,
sqirrel left
|
|||
[Coke] | I suspect we might want to rename the internal one "parroteqat". | 23:28 | |
to go along with the jvm* ones. | |||
TimToady | The question is, who's to be encapsulated, that's all. --The Encapsulated One | ||
</splat> | 23:29 | ||
[Coke] | jnthn: when testing to see if an opcode is tested, I'm checking to see if "nqp::<op>" appears in t/ - would adding a check for ":op('<op>')" be a good second approximation? | 23:30 | |
23:31
airdisa joined
|
|||
jnthn | [Coke]: If we rely on it as part of the bootstrap then it's at least tested that way | 23:31 | |
23:32
BenGoldberg left
|
|||
[Coke] | sure, that's fine for this level of testing. | 23:32 | |
can you point me at a set of dirs to poke at for the bootstrap file? src/NQP? | 23:33 | ||
jnthn | src/NQP, src/how, src/core, src/HLL, src/QRegex | 23:34 | |
23:35
colomon joined
23:37
slavik left
23:38
BenGoldberg joined
|
|||
[Coke] | jnthn++ #forgot to do it in the commit. | 23:41 | |
dalek | p: 3e2c825 | coke++ | t/docs/tests.t: consider bootstrap and QAST as testing. jnthn++ |
||
[Coke] | (managed to sneak it in .) | ||
jnthn | :) | 23:42 | |
23:44
BenGoldberg left
23:46
slavik joined
|
|||
[Coke] | blogs.perl.org/users/blindluke/2013...ences.html - waiting for the followup perl6 post | 23:47 | |
jnthn: are the boot* opcodes intended to be x-platform? | 23:53 | ||
or jvm specific? | |||
jnthn | [Coke]: No, Moar has them also | 23:54 | |
[Coke]: Parrot doesn't however. | 23:55 | ||
[Coke] ponders how to document that. | 23:56 | ||
diakopter | [Coke]: actually | 23:57 | |
jnthn | [Coke]: "Should be provided by any non-Parrot backend" :P | ||
diakopter | you can test if all the nqp ops are used in the --dump output of the *.moarvm in nqp | ||
[Coke] | diakopter: that doesn't help running the tests on a parrot nqp. | 23:58 | |
23:58
dayangkun left
|
|||
[Coke] | (nor that that's not in master yet. ;) | 23:58 | |
I do like the idea of checking based on the executables, though. | 23:59 | ||
23:59
BenGoldberg joined
|