»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by moritz on 25 December 2014. |
|||
00:04
laouji joined
00:08
laouji left
00:12
skids joined
00:30
mr-foobar left,
Rounin left
|
|||
TimToady | well, I already implemented tests, but only for exchange on Pair, which, er, was the only one specced... | 00:31 | |
and I asked for use cases for anything else... | |||
er...speculated... | 00:33 | ||
00:33
spider-mario left
|
|||
TimToady | it is not, in particular, clear whether .exchange is the opposite of .pairs, or the opposite of .invert | 00:35 | |
if people expect the latter on a list of pairs, they'll be very surprised to get extra keys | 00:36 | ||
in particular, I was thinking about it as the opposite of invert, not the opposite of pairs, or I'd've named it something different | 00:37 | ||
00:44
skids left
|
|||
dalek | ast: c349a13 | TimToady++ | S02-types/pair.t: unfudge .exchange tests |
00:50 | |
TimToady | maybe .antipairs is what lizmat++ implemented | 00:52 | |
then .exchange would only work on a Pair or list of Pair | 00:55 | ||
01:10
fernando_ joined
01:11
Hor|zon joined
01:14
jack_rabbit left
01:16
Hor|zon left
01:19
davido__ left
01:20
davido__ joined
01:25
dayangkun joined,
dayangkun left
01:28
gfldex left
01:42
aborazmeh joined,
davido__ left,
aborazmeh left,
aborazmeh joined
01:43
davido__ joined
01:52
skids joined
01:55
raiph joined
01:59
grondilu left
02:01
Hor|zon joined
02:06
Hor|zon left
02:12
echowuhao left
|
|||
dalek | ecs: db834e7 | TimToady++ | S32-setting-library/Containers.pod: distinguish antipairs from antipair/invert |
02:21 | |
02:22
aborazmeh left
02:23
xinming left
02:29
grettir left
02:37
xinming joined
02:38
dolmen joined
02:41
aborazmeh joined,
aborazmeh left,
aborazmeh joined
02:43
skids left
02:46
ilbot3 left
02:48
ilbot3 joined
02:50
skids joined
02:54
chenryn joined,
laouji joined
02:59
laouji left
|
|||
dalek | ecs: 1968457 | skids++ | S03-operators.pod: Negative binary shifts are indeed tested in roast, so whirl them useful on infix:«<+», so mention that. (The :signed and :unsigned adverbs are currently only in spec not in roast/implementation) |
03:04 | |
TimToady | alternately, we should make that decision based on the left-hand type | 03:05 | |
skids | Yes it makes no sense for Int. | 03:08 | |
But maybe better as a runtime error, rather than requiring tight typing? | 03:09 | ||
TimToady | actually, shifts are fine for Int | 03:10 | |
skids | Yes, but :unsigned isn't | 03:11 | |
erm :!signed | |||
dalek | ok: 5a4285b | (Christopher Bottoms)++ | src/operators.pod: Minor grammar fix |
03:14 | |
03:14
Houndcat left
|
|||
TimToady | with Int we just assume an infinite number of 0's or 1's to the left | 03:15 | |
m: say -1 +< 30 | |||
camelia | rakudo-moar 3eb446: OUTPUT«-1073741824» | ||
TimToady | m: say 1 +< 30 | 03:16 | |
camelia | rakudo-moar 3eb446: OUTPUT«1073741824» | ||
skids | Right so :!signed would either be mute, or should be an error. | ||
*moot | |||
TimToady | would like to avoid adverbs entirely if we can make it type based | ||
likewise if we ever get rotate instructions | 03:17 | ||
skids | The point of the adverb is kind of to override signedness of the type, I thought. | ||
TimToady | see rosettacode.org/wiki/Bitwise_operations#Perl_6 | 03:18 | |
03:18
Patterner joined
|
|||
TimToady | notice how we cheat on the unsigned rightshfit | 03:18 | |
and the rotates | |||
that could easily be determined by the native size of the left though | |||
well, called to dinner & | 03:19 | ||
skids | I think that's the intent of the language in specs -- the left hand type determines which adverb would be needed to break the rules. | 03:20 | |
03:22
Psyche^ left
|
|||
skids | FWIW if anyone ever wants to rewrite asm in perl6 they would probably also want a "with carry" option on shifts and rotates. | 03:22 | |
03:24
dolmen left
03:35
fernando_ left
03:36
noganex joined
03:37
dolmen joined
03:40
noganex_ left
03:51
Hor|zon joined
|
|||
skids | .oO(Texas ⥀ ... ^< Texas ⥁ ... ^>) |
03:51 | |
03:54
raiph left,
aborazmeh left
03:55
Hor|zon left
|
|||
TimToady | well, probably rol and ror are fine Texas versions | 03:57 | |
b2gills | m: subset Test of Str where 0 < *.chars < 256; say '0' ~~ Test; say '1' ~~ Test; say 'a' ~~ Test | 03:58 | |
camelia | rakudo-moar 3eb446: OUTPUT«FalseTrueCannot call 'Real'; none of these signatures match::(Mu:U \v: *%_) in method Real at src/gen/m-CORE.setting:4685 in sub infix:<<> at src/gen/m-CORE.setting:5193 in block <unit> at /tmp/EdXKXiyxUm:1» | ||
skids modernizes gist.github.com/skids/4998260 | 03:59 | ||
b2gills | m: subset Test of Str where {0 < $_.chars < 256}; say '0' ~~ Test; say '1' ~~ Test; say 'a' ~~ Test | ||
camelia | rakudo-moar 3eb446: OUTPUT«TrueTrueTrue» | ||
b2gills | star-m: subset Test of Str where 0 < *.chars < 256; say '0' ~~ Test; say '1' ~~ Test; say 'a' ~~ Test | 04:00 | |
camelia | star-m 2015.01: OUTPUT«FalseTrueCannot call 'Real'; none of these signatures match::(Mu:U \v: *%_) in method Real at src/gen/m-CORE.setting:4236 in sub infix:<<> at src/gen/m-CORE.setting:4746 in block <unit> at /tmp/mxH8DNt_Ga:1» | ||
TimToady | looks kinda like a bug | ||
m: say 0 < 'a'.chars < 256 | 04:01 | ||
camelia | rakudo-moar 3eb446: OUTPUT«True» | ||
TimToady | actually, looks like it's ignoring the .chars | ||
04:01
FROGGS_ joined
|
|||
TimToady | since they should all be True | 04:02 | |
oh, the real closure works | |||
so it's just not handling * with chained ops | |||
b2gills | I think that it is seeing that the *.chars is in Real context and is trying to convert it too soon | 04:03 | |
TimToady | m: say (0 < *.chars < 256).WHAT | ||
camelia | rakudo-moar 3eb446: OUTPUT«(WhateverCode)» | ||
TimToady | m: say (0 < *.chars < 256)('a') | 04:04 | |
camelia | rakudo-moar 3eb446: OUTPUT«Cannot call 'Real'; none of these signatures match::(Mu:U \v: *%_) in method Real at src/gen/m-CORE.setting:4685 in sub infix:<<> at src/gen/m-CORE.setting:5193 in block <unit> at /tmp/aYgm5iSKst:1» | ||
04:04
FROGGS left,
Sqirrel left
04:05
leont left
|
|||
b2gills | ignore what I just wrote, it doesn't explain the `0` case | 04:06 | |
04:06
seaker joined,
seaker left
|
|||
dalek | ast: 9c69eb1 | TimToady++ | S (2 files): antipairs and inversions |
04:08 | |
kudo/nom: 06f9b89 | TimToady++ | src/core/ (12 files): untangle antipairs vs invert |
04:09 | ||
TimToady | m: say (0 < (*.chars) < 256)('a') | 04:10 | |
camelia | rakudo-moar 3eb446: OUTPUT«Cannot call 'Real'; none of these signatures match::(Mu:U \v: *%_) in method Real at src/gen/m-CORE.setting:4685 in sub infix:<<> at src/gen/m-CORE.setting:5193 in block <unit> at /tmp/0GxAW99xbc:1» | ||
TimToady | m: say (0 < *.chars)('a') | ||
camelia | rakudo-moar 3eb446: OUTPUT«True» | ||
TimToady | m: say (*.chars < 256)('a') | ||
camelia | rakudo-moar 3eb446: OUTPUT«True» | ||
TimToady | yeah, it's just the chaining fouling it up | 04:11 | |
04:16
jack_rabbit joined
|
|||
TimToady | something tells me it's probably even reported already | 04:17 | |
skids | m: (0 < (*,).chars < 256)("a").say | 04:18 | |
camelia | rakudo-moar 3eb446: OUTPUT«Cannot find method 'postcircumfix:<( )>' in block <unit> at /tmp/_WL6_uLKcS:1» | ||
TimToady | that'll never work | 04:19 | |
04:19
ash_gti joined
|
|||
TimToady | a list with a Whatever in it is just a list with a Whatever in it | 04:19 | |
skids | Yeah. Can't blame a guy for trying :-) | 04:20 | |
TimToady | the autopriming is really only defined on unary and binary ops | ||
b2gills | rakudobrew really doesn't work right when called as a symbolic ref | 04:24 | |
skids | RT#123144 maybe, hit internally? | 04:25 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123144 | ||
04:27
echowuhao joined
04:37
chenryn left
04:38
ash_gti left
04:43
laouji joined
|
|||
colomon | \o/ | 04:46 | |
04:47
laouji left
|
|||
colomon was o/ the 15 minutes on Raspberry Pi 2 note. backlogging is confusing. | 04:50 | ||
04:50
echowuhao left
|
|||
TimToady | let's do math | 04:50 | |
04:50
echowuhao joined
05:00
jack_rabbit left
05:03
Sqirrel joined
05:04
chenryn joined
05:40
Hor|zon joined
|
|||
raydiak | m: sub foo (|args) { args[*] }; foo :bar # known? | 05:40 | |
camelia | rakudo-moar 06f9b8: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏bar' (indicated by ⏏) in method Int at src/gen/m-CORE.setting:15021 in method Int at src/gen/m-CORE.setting:6832 in sub postcircumfix:<[ ]> at src/gen/…» | ||
05:44
Hor|zon left
|
|||
raydiak wonders if replacing all the SELF.keys in src/core/array_slice.pm with ^SELF.elems or so might fix it | 05:45 | ||
06:01
BenGoldberg_ left
06:02
dj_goku left
06:05
dj_goku joined
|
|||
moritz | \o | 06:25 | |
raydiak | o/ | 06:26 | |
TimToady | o— | ||
TimToady is testing a fix for local overriding of quote keywords so that my m = 42; say m / 100; prints 0.42 | 06:27 | ||
m: say { a => [1,2] }.invert.perl | 06:32 | ||
camelia | rakudo-moar 06f9b8: OUTPUT«(1 => "a", 2 => "a").list» | ||
TimToady | m: say { a => [1,2] }.antipairs.perl | 06:33 | |
camelia | rakudo-moar 06f9b8: OUTPUT«([1, 2] => "a",).list» | ||
TimToady | 'antipairs' being somewhat dehuffmanized on purpose | ||
m: say <a b c>.invert | 06:37 | ||
camelia | rakudo-moar 06f9b8: OUTPUT«Memory allocation failed; could not allocate 57696 bytes» | ||
TimToady | yowser | ||
m: say <a b c>.pairs.invert | |||
camelia | rakudo-moar 06f9b8: OUTPUT«Memory allocation failed; could not allocate 640 bytes» | 06:38 | |
TimToady | hmm | ||
m: say <a b c>.pairs | |||
camelia | rakudo-moar 06f9b8: OUTPUT«0 => a 1 => b 2 => c» | ||
TimToady | m: say <a b c>.pairs>>.antipair | ||
camelia | rakudo-moar 06f9b8: OUTPUT«a => 0 b => 1 c => 2» | ||
TimToady | well, something screwy on List.invert still | 06:39 | |
japhb | Does Rakudo have any way to take a path containing .. and properly resolve it? For example, given ('../foo/bar' relative to '/a/b/c/d/e'), which absolutifies to '/a/b/c/d/e/../foo/bar', where any segments of that path could be links (symbolic or otherwise), allows you to do .parent.parent.parent and get a sane result? | ||
TimToady | probably | ||
but I dunno what it is | |||
06:40
laouji joined
|
|||
TimToady | m: say <a b c>.pairs>>.invert | 06:40 | |
camelia | rakudo-moar 06f9b8: OUTPUT«a => 0 b => 1 c => 2» | ||
moritz | japhb: IO::Path.absolute or something like that | 06:41 | |
lizmat only implemented .exchange last night | 06:42 | ||
off for some swimming& | 06:43 | ||
japhb | moritz: .absolute oddly gets you a Str of the relative base and relative path concatenated by the directory separator. So it gets you that thing I said "absolutifies to" above. | ||
raydiak | m: ".".IO.absolute.perl.say | 06:52 | |
camelia | rakudo-moar 06f9b8: OUTPUT«"/home/camelia"» | ||
raydiak | m: ".".IO.abspath.perl.say | ||
camelia | rakudo-moar 06f9b8: OUTPUT«"/home/camelia"» | ||
raydiak | m: ".".IO.canonpath.perl.say | 06:56 | |
camelia | rakudo-moar 06f9b8: OUTPUT«No such method 'canonpath' for invocant of type 'IO::Path' in block <unit> at /tmp/ibumoZm_J8:1» | ||
raydiak | m: $*SPEC.canonpath(".").perl.say | 06:57 | |
camelia | rakudo-moar 06f9b8: OUTPUT«"."» | ||
raydiak | m: ".".IO.resolve.perl.say | ||
camelia | rakudo-moar 06f9b8: OUTPUT«Failure.new(exception => X::NYI.new(feature => "IO::Path.resolve"))» | ||
japhb | Sigh, NYI | 06:59 | |
dalek | kudo/nom: f786d89 | TimToady++ | src/Perl6/Grammar.nqp: quoters now lexically overridable by terms/subs |
07:00 | |
ast: 6d85d5a | TimToady++ | S0 (2 files): quoters now lexically overridable by terms/subs |
07:01 | ||
07:03
perl6_newbee joined
|
|||
dalek | c: d12c47b | moritz++ | t/pod-convenience.t: Fix a test |
07:05 | |
moritz | [ptc]: github.com/perl6/doc/issues/56 | 07:09 | |
dalek | kudo/nom: 6f9016e | TimToady++ | src/core/ (2 files): fix infinite regress on List.invert |
07:13 | |
TimToady | m: my \s = 'sigma'; say s; | ||
camelia | rakudo-moar f786d8: OUTPUT«sigma» | ||
moritz | TimToady++ | ||
TimToady | can override by using any option to get back to the qouter | 07:14 | |
*uo | |||
m: my \m = 'millipede'; say m ~~ m:s/\w*/ | 07:15 | ||
camelia | rakudo-moar f786d8: OUTPUT«「millipede」» | ||
TimToady | m: my \m = 'millipede'; say m ~~ ms/\w*/ | ||
camelia | rakudo-moar f786d8: OUTPUT«「millipede」» | ||
TimToady | m: my \m = 'millipede'; say m ~~ m/\w*/ | 07:16 | |
camelia | rakudo-moar f786d8: OUTPUT«5===SORRY!5===Regex not terminated.at /tmp/y9RJoxQNZw:1------> 3my \m = 'millipede'; say m ~~ m/\w*/7⏏5<EOL>Regex not terminated.at /tmp/y9RJoxQNZw:1------> 3my \m = 'millipede'; say m ~~ m/\w*/7⏏5<EOL>Unable to parse r…» | ||
07:16
gfldex joined
|
|||
TimToady | m: my \m = 'millipede'; say m ~~ m /\w*/ | 07:16 | |
camelia | rakudo-moar f786d8: OUTPUT«5===SORRY!5===Regex not terminated.at /tmp/JK9sCZV9qB:1------> 3my \m = 'millipede'; say m ~~ m /\w*/7⏏5<EOL>Regex not terminated.at /tmp/JK9sCZV9qB:1------> 3my \m = 'millipede'; say m ~~ m /\w*/7⏏5<EOL>Unable to parse…» | ||
moritz | colomon: something's off with the smoker. smoke.perl6.org/project/Questhub says Questhub failed its test, but it doesn't even have a t/ directory | ||
colomon: and in the second-to-last report, it succeeded, so it can't be general failure of counting absense of t/ as test failure | 07:17 | ||
raydiak | bugfix PR github.com/rakudo/rakudo/pull/375 | 07:18 | |
moritz | I'd like to leave that for lizmat++ to evaluate, since she wrote the code and is probably aware of performance tradeoffs | 07:20 | |
raydiak | sounds good, I'd not be surprised if that is a slower-than-necessary way to write it | 07:21 | |
07:28
Hor|zon joined
07:33
Hor|zon left
|
|||
moritz | maybe we should have positional-keys and associative-keys methods | 07:34 | |
(and still have .keys, but [] could use .positional-keys) | 07:35 | ||
raydiak | kv, pairs, elems, etc too? | ||
moritz | hmmm | 07:37 | |
there's a bite more to it than I initially thought :/ | |||
raydiak | yeah the overlap is actually pretty sizable | 07:38 | |
my patch relies on the fact that things which do both seem to delegate .elems to the array part | 07:39 | ||
FROGGS[mobile] | TimToady++ # overridable quoters | 07:41 | |
07:41
wicope joined,
echowuhao left
07:42
rindolf joined
|
|||
dalek | ast: 08174d6 | TimToady++ | S02-types/pair.t: test invert on list of pairs |
07:46 | |
07:48
diana_olhovik_ joined
07:49
maettu left
|
|||
TimToady | m: say <a b c>.pairs.invert | 08:01 | |
camelia | rakudo-moar 6f9016: OUTPUT«a => 0 b => 1 c => 2» | ||
TimToady | m: say <a b c>.invert | ||
camelia | rakudo-moar 6f9016: OUTPUT«Cannot call 'invert'; none of these signatures match: in block <unit> at /tmp/emLQR3RLBd:1» | ||
TimToady | m: say <a b c>.list.invert | ||
camelia | rakudo-moar 6f9016: OUTPUT«No such method 'value' for invocant of type 'Str' in block at src/gen/m-CORE.setting:10239 in method reify at src/gen/m-CORE.setting:9438 in block at src/gen/m-CORE.setting:9270 in method reify at src/gen/m-CORE.setting:9244 in block …» | ||
TimToady | maybe that failure mode is a bit LTA | 08:02 | |
it *should* fail though | |||
since invert is now only defined on lists of pairs and on hashes | |||
08:04
tinyblak joined,
prime- joined
08:05
prime left
|
|||
dalek | kudo-star-daily: e3ff6cd | coke++ | log/ (9 files): today (automated commit) |
08:10 | |
08:13
diana_olhovik_ left,
colomon left
|
|||
timotimo | moritz: would you like to walk me through how to update star-m: on camelia? or just do it yourself (or check what went wrong with the automatic update - if it exists) | 08:15 | |
08:15
darutoko joined
08:19
rindolf left
|
|||
moritz | timotimo: there is no automatic upgrade | 08:21 | |
timotimo: and camelia run on nine_++'s box, so you need to ask him for an account first | 08:22 | ||
08:22
xfix joined
08:23
rindolf joined
|
|||
raydiak | I think we should have a few range constructor methods in Int or Cool, or even just a single coercion, such that 5.Range eqv ^5 | 08:26 | |
08:26
colomon joined
08:29
Hor|zon joined
|
|||
raydiak | m: say 5.&prefix:<^> # this works, though it feels clumsy | 08:29 | |
camelia | rakudo-moar 6f9016: OUTPUT«0..^5» | ||
08:34
Hor|zon left
|
|||
raydiak | 5.Range.map looks and feels better in some ways than (^5).map...or maybe something more like .from-zero for ^5, .from-zero-to for 0..5, and s/zero/one/ variants for 0^.. | 08:36 | |
08:38
yeahnoob joined
08:42
gfldex left,
dolmen left
|
|||
timotimo | oh, right, it's nine's box | 08:43 | |
i knew that, but i forgot about it briefly | 08:44 | ||
moritz | I guess I should just document it | 08:46 | |
dalek | kudo/nom: 4f854b3 | raydiak++ | src/core/array_slice.pm: Attempt to fix array slicing of Capture |
08:47 | |
kudo/nom: e35414b | lizmat++ | src/core/array_slice.pm: Merge pull request #375 from raydiak/arrayhashslicefix Fix array slicing of Capture, Match, etc. Brings about a ~5% performance gain on [*] slices |
|||
timotimo has a look at the whatever currying problem | 08:50 | ||
raydiak | thank you lizmat :) | ||
lizmat | raydiak: thank you! | ||
timotimo | thank you, raydiak and lizmat :) | ||
raydiak | timotimo: what I had before for the currying is on the assumingwhatevs branch of my rakudo fork if it's any use | 08:51 | |
timotimo | oh | 08:52 | |
no, not that | |||
i mean this: | |||
m: say (0 < *.chars < 255)("a") | |||
camelia | rakudo-moar 6f9016: OUTPUT«Cannot call 'Real'; none of these signatures match::(Mu:U \v: *%_) in method Real at src/gen/m-CORE.setting:4683 in sub infix:<<> at src/gen/m-CORE.setting:5191 in block <unit> at /tmp/6dZ75MJkVg:1» | ||
timotimo | the .chars gets dropped somewhere in the inlining process | ||
raydiak | ah I see | 08:53 | |
08:53
geekosaur left
|
|||
timotimo | a couple of months ago i built some code that would generate a single code object from this rather than three nested ones that were sort-of recursively called | 08:53 | |
08:53
geekosaur joined
|
|||
timotimo | i'm a tiny bit annoyed that there was no test that caught this problem back then | 08:54 | |
but also apparently no code in the ecosystem stumbled upon this | |||
masak | good morning, #perl6 | ||
raydiak | good morning masak | 08:55 | |
timotimo | i think i have a clue what's happened, but not 100% sure | ||
nine_ | sjn: a little example of what actions can do: github.com/niner/Grammar-Highlighter | 08:56 | |
masak | m: say prefix:<^> 5 | ||
08:56
camelia left
|
|||
masak | come back, camelia! :/ | 08:56 | |
anyway, locally I get `0..^5` | |||
I like it. | |||
it seems we already have a listop for this :) | 08:57 | ||
raydiak | I was looking for a way to get it as an easier-to-type postfix, b/c e.g. (^5).map feels awkward | 08:58 | |
if you have method(s), you don't have to type any circumfix at all | |||
dalek | kudo/nom: 35de750 | lizmat++ | src/core/Any.pm: Fix copy-pasto |
08:59 | |
raydiak | but 5.&prefix:<^> is no better | ||
masak | m: sub up($n) { ^$n }; say 5.&up | ||
raydiak: that works, too. | |||
timotimo | raydiak: do you know about map ^5:; ? | ||
m: say map ^5: *.say; | |||
er | |||
map ^5: *.say works, anyway. | 09:00 | ||
i'm beginning to like indirect method call syntax | |||
raydiak | masak: yes that's not a terrible way to do it, but I probably won't bother if it's not in core | ||
timotimo: neat, I hadn't thought of that | |||
masak | raydiak: that's my point. you can define something locally to make it easier for you. | 09:02 | |
timotimo | nine_: some time ago i wrote this fun piece of code: github.com/timo/text_to_cell/blob/...r.h#L21-23 | 09:03 | |
masak | raydiak: why do people get so hung up on "if it's [not] in core"? I don't understand. | ||
timotimo | nine_: it's kind of sort of similar to the grammar highlighter | ||
masak | you have this wonderfully extensible language where, at the snap of your fingers, you can turn it into what you want. | ||
and then people want to stuff their favorite DSL into core, or they refuse to play. | |||
>:-( | |||
09:06
rurban joined
|
|||
raydiak | mostly out of a desire to not write code which is difficult for people who are not me to follow. if I came up with an idea with a more tangible benefit, I'd likely use it, but for .&up, which is hard for me to type in the dark anyway which was my original problem? no, the ratio does not meet my own personal threshhold. sorry if that makes anyone frown. | 09:07 | |
masak | sorry for the rant. it's not just you. | 09:08 | |
of course "it doesn't cross my personal threshold for ease/readability" *is* a respectable argument. | |||
raydiak | no biggie. I know it's a common thing, and I'm sure more than none of it is still the same stuck-in-the-past thinking which you're rightly opposed to | 09:09 | |
masak | but I do recommend freely creating ops and functions in small scopes when you need them. it becomes addictive, and it changes the way you think about the code :) | ||
09:09
_mg_ joined
|
|||
masak | like, if you really wanted a postfix:<upto>, there's nothing to stop you from defining one. | 09:10 | |
09:11
virtualsue joined
|
|||
raydiak | yeah the syntactic mutability is something I am really attracted to, though I sometimes make a mess quickly when I start down those paths, so I often go to the opposite extreme; still looking for a good balance, as with all things | 09:12 | |
09:16
yeahnoob left
09:17
telex left
09:18
telex joined
09:24
FROGGS_ left
09:28
Kristien joined
|
|||
raydiak | good night #perl6 | 09:33 | |
timotimo is micro-optimizing whatever_curry, as it seems to be called quite often in stage parse | |||
vendethiel | TimToady: smalltalk doesn't have "leave", but return ("^") from a lambda returns from the outerlying function, that's what I was referring to | 09:41 | |
timotimo | why must my stage parse measurements be so noisy? | 09:43 | |
09:45
_mg_ left
|
|||
vendethiel | psch: yes, that was *basically* the use-case | 09:47 | |
timotimo | huh. my "optimizations" seem to have made it worse | ||
09:48
molaf left,
laouji left
|
|||
Kristien | I don't like functions that return from their definer. | 09:51 | |
timotimo | .o( that's me in a nutshell: starts looking at correctness, tries performance tweaks instead ) | 09:55 | |
09:56
jack_rabbit joined
|
|||
psch | vendethiel: the «public String evalP6(…) { }» bit, right? not the bit about nesting p6 with interop i hope :) | 09:57 | |
also hi #perl6 \o | 09:58 | ||
10:04
Rounin joined
10:05
diana_olhovik_ joined
|
|||
masak | hi psch | 10:10 | |
10:17
_mg_ joined
10:18
Hor|zon joined
10:20
smls joined
|
|||
smls | o/ | 10:20 | |
10:21
jack_rabbit left,
_mg_ left
10:23
Hor|zon left
|
|||
smls backlogs (had very little computer time these last 4 days due to health issue) | 10:24 | ||
10:27
wicope left,
spider-mario joined
|
|||
smls | "* vendethiel would really, really like to have :D as the default" -- same here, though I agree with TimToady that the :_ syntax is not great. | 10:30 | |
Especially since the concept of "whatever / I don't care / all of the above" is usually encoded using an asterisk in Perl 6, not an underscore. | |||
Although :* won't win any beauty contests either. | |||
masak | I always thought it was a bit of a nod to p5 that the thing passed in can be either a type object or a concrete object. | 10:31 | |
smls | Maybe call it :UD or :DU instead? | ||
timotimo | :DUI? | ||
smls | ;) | ||
or :U:D to make it look like stacking adverbs | 10:33 | ||
masak | doesn't feel quite right, though. | 10:34 | |
timotimo | i dislike how that collides with the final : for invocant | ||
then you could have Dog:, Dog:D:, Dog:U:, Dog:D:U and Dog:D:U: | |||
masak | I think the consequences of making :D the default should be seriously thought through. regardless of what syntax ends up replacing :_ , if any. | 10:35 | |
smls | if the invocant : requires a space after it, it might not be so bad | ||
masak | feels to me that making :D the default "hides" type objects quite a bit further back in the language. | ||
smls: that feels weird, especially for invocant-only methods. | |||
smls | one disadvantage of making :D the default in function signatures, is that it doesn't make sense to also make it the default for my declarations | 10:36 | |
which, in the general case, are also signatures | 10:37 | ||
so either it's inconsistent, or one of them is suboptimal | |||
my ($x, $y); # a "type check failed" error here would be rather WAT | 10:38 | ||
timotimo lacs | |||
er | |||
timotimo lacks permission to restart cameli | 10:39 | ||
camelia | |||
10:48
laouji joined
10:52
Maddingu1 left,
Maddingue joined
10:53
laouji left
|
|||
dalek | c: ab78bc1 | paultcochrane++ | t/pod-htmlify.t: Don't run pod-htmlify if URI::Escape isn't installed |
10:56 | |
smls | Being able to say "my-method(:U: $foo)" insead of "my-method(Current::Class::Name:U: $foo)" is nice. moritz++ | 10:57 | |
timotimo | did moritz already implement that, or only suggest? | 10:58 | |
smls | he spec'd it | ||
timotimo | OK | 10:59 | |
10:59
Kristien left
|
|||
smls | timotimo: Once good Perl 6 syntax highlighting proliferates, the different kinds of : will hopefully be less confusing. | 11:01 | |
e.g. "Dog:U:" --> "<typespec>Dog:U</typespec><interpunctuation>:</interpunctuation>" | 11:02 | ||
timotimo | i disagree with requiring to have syntax highlighting to make code understandable | ||
smls | Well there are different levels of understanding | 11:03 | |
If newbies can recognize a construct and even use it without understanding the more general rule of how it is contructed from its parts, that's ok imo | |||
vendethiel | psch: the problem is -- "evalp6code" will be a real performance problem :) | 11:04 | |
psch | vendethiel: to the extend that 'perl6-j' is a performance problem, yes | 11:08 | |
vendethiel | *g* | 11:09 | |
no, to the extend that the jvm can't optimize it | |||
(in the long run, that is) | |||
psch | why not? | ||
vendethiel | because it's re-eval'd everytime | ||
dalek | albot/timo-require-config-file-exists: 067570b | timo++ | evalbot.pl: exit the program if the config file wasn't found also writes the cwd to the console. |
||
timotimo | can has review, please? i don't has perl5 skills | 11:10 | |
psch | i don't know if that's true. caching CompUnits (e.g. CORE.setting) might be possible? | ||
timotimo: curlies don't interpolate in qq in p5, afair | 11:11 | ||
11:12
chenryn left
|
|||
timotimo | OK. how do i do it instead? | 11:12 | |
psch | i'd do «"...not found in " . getcwd();» | ||
although those parens might be superstitious | 11:13 | ||
smls | "wasn't found in @{[ getcwd ]}." would also work, though it's a hack. | 11:14 | |
jnthn | afternoon, #perl6 | 11:15 | |
timotimo | test test | ||
psch | o/ jnthn | ||
dalek | albot/timo-require-config-file-exists: 56af077 | timo++ | evalbot.pl: qq doesn't interpolate curlies in perl5 by default psch++ |
11:16 | |
timotimo | looks mergable? | 11:18 | |
11:19
Hor|zon joined
11:21
tinyblak left
11:22
tinyblak joined
11:23
Hor|zon left
11:24
tinyblak left
11:25
tinyblak joined
|
|||
[ptc] | is there a "panda uninstall [package-name]"? | 11:26 | |
11:27
virtualsue left
|
|||
dalek | c: b0c06de | timotimo++ | t/pod-htmlify.t: simplify URI::Escape requirement in pod-htmlify.t |
11:27 | |
timotimo | there is not | ||
[ptc] | pity | 11:28 | |
is there a simple way to uninstall a package? | |||
timotimo | only rm'ing the files in the install directory | 11:29 | |
[ptc] | ok. been there, done that. However wondered if I was missing something | 11:30 | |
timotimo | Mouq: are you attentive? | 11:31 | |
jnthn | TimToady++ # fixing the s and m term thing | 11:32 | |
jnthn is gonna have to update the native-ref branch with nom before his next test run, after all these patches :) | 11:33 | ||
But first, get the JVM porting done... :) | |||
itz | is native-ref to be used for NSA? | 11:35 | |
timotimo | itz: indeed | ||
Mouq: you're wrapping $past with &HYPERWHATEVER near the bottom of whatever_curry after the annotations have been set that are used for inlining curries into each other; do you know if that has negative effects? | 11:36 | ||
itz | [ptc]: I was wondering whether panda should record installed files with SHA256 sums maybe in a JSON structure | ||
jnthn | itz: Yeah, it's one of the main building blocks I needed for native arrays, but it also takes care of many language usability issues with native types | 11:37 | |
Like the infamous "wtf I can't $native-int++" | |||
timotimo | yes! | 11:38 | |
psch | coercing to string here github.com/rakudo/rakudo/blob/nom/....nqp#L6733 fixes this todo github.com/perl6/roast/blob/master...ders.t#L66 | ||
timotimo | and "cannot use 'is rw' on a native attribute" | ||
11:38
tinyblak left
|
|||
psch | i'm unsure if moar is doing the right thing (i.e. not getting hung up on Mu vs Any) or jvm (i.e. getting hung up on *) | 11:38 | |
11:38
tinyblak joined
|
|||
psch | 'cause $*IN_DECL, which is what gets annotated into .ann('IN_DECL') on nqp level should be Mu on both backends, right? | 11:39 | |
(coercing to string seems a bit like fixing the symptoinstead of the system | 11:40 | ||
s/oin/om in/ | |||
smls | jnthn: If @a is a compact array of native int's, what will @a[0] return? Some kind of Proxy container? | 11:43 | |
timotimo | a native reference to the int in the array | 11:44 | |
it is "a kind of container", but not really | |||
smls | Is that specunspecified on a language level and users are told to think of @[0] = 4 as magic syntax and not introspect it? | ||
jnthn | Well, it is a container in the same sense Scalar is | ||
itz | m: my int $i=2; $i++ | ||
jnthn | Just doing a rather different thing when you store into it | ||
timotimo | itz: camelia needs a restart right now, nine isn't at the computer to do it right now, though | 11:45 | |
jnthn | The key thing is that for common cases, the compiler can elide a lot of the reference takes. | ||
itz | ah | ||
11:45
Kristien joined
|
|||
jnthn | And Moar will be able to eliminate a bunch more, especially in combination with inlining. | 11:45 | |
11:46
lizmat left
|
|||
jnthn | smls: Well, you can expect some kind of "first class" l-value thing | 11:46 | |
smls | ok | ||
jnthn | smls: But the spec doesn't nail down details beyond that. | ||
smls | Currently @a[$i] already returns a proxy for out-of-bounds elements, right? | ||
to make autovivification work | |||
jnthn | Yes | 11:47 | |
> my int $a = 42; my $b := $a; $b++; say $a; | |||
43 | |||
That's one example of the "first class" nature of the refs | |||
smls | nice | 11:48 | |
timotimo | that's supposed to work for compact arrays, too, right? | ||
jnthn | Not quite sure how horribly that will fall out of the optimizer, but in combination with lowering to locals and the stuff spesh does, the answer may well be "just fine" | ||
timotimo: Yeah, and already does in native-ref if you count Buf as a kind of native array | 11:49 | ||
timotimo | neato! | ||
jnthn | > my $b = Buf.new(1, 2, 3); my $x := $b[1]; $x++; say $b; | ||
Buf:0x<01 03 03> | |||
colomon | moritz: I think the problem is emmentaler / panda cannot tell the difference between a module failing tests and one of its dependencies failing tests. Questhub depends on HTTP::UserAgent, which also failed... | 11:50 | |
vendethiel | nine_++ # highlighter | 11:54 | |
timotimo | vendethiel: take a screenshot please! | ||
vendethiel doesn't have one :P | |||
timotimo | OK | 11:55 | |
i'd like a parallel version of that that outputs pretty html | 11:57 | ||
11:58
virtualsue joined
|
|||
timotimo | jnthn: can we have a way to throw out blocks that have been added into the $*W at some point? | 11:59 | |
i'm a bit too distracted to figure the whatever currying stuff out right now | 12:02 | ||
12:03
_mg_ joined
|
|||
jnthn | timotimo: Umm...at some point maybe | 12:03 | |
timotimo: Do we need to do it often? | 12:04 | ||
timotimo | i should measure before i make more "demands" | ||
whatever_curry "inlining" creates many, many throw-away blocks | |||
well, one for each operator that's involved | |||
jnthn | Ah, I see | 12:05 | |
dalek | p/native-ref: ceb047a | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/ (2 files): HLL entries for native ref types. |
12:06 | |
12:17
virtualsue left
12:21
spider-mario left
12:25
leont joined
12:26
Kristien left
12:33
Kristien joined
12:37
grondilu joined
12:38
laouji joined
12:42
laouji left
12:43
kjs_ joined
12:46
laouji joined
12:48
vendethiel left
|
|||
moritz | star-m: say "version?" | 12:54 | |
ENOCAMELIA | |||
12:55
tinyblak left
12:56
tinyblak joined
|
|||
timotimo | moritz: do you have permission to systemctl restart [email@hidden.address] ? | 12:59 | |
moritz | timotimo yes, but it doesn't help :( | 13:00 | |
timotimo | oh? | ||
moritz | missing module, it seems | ||
timotimo | did you see the log? | ||
yeah | |||
dalek | p/native-ref: 89d2119 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/NativeRef (5 files): Fill out native lexical reference REPR bits. |
||
p/native-ref: de6e270 | jnthn++ | src/vm/jvm/QAST/Compiler.nqp: Native ref lexical ops need to receive the tc. |
|||
p/native-ref: 228f135 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java: Fix native ref type HLL config thinko. |
|||
13:01
tinyblak left
|
|||
moritz | timotimo: installing stuff now.. | 13:01 | |
timotimo | thanks. and can you review my pull-request in perl6/evalbot? | ||
it adds a early program abort if the specified config file doesn't exist | |||
moritz | github.com/perl6/evalbot/pulls is empty | 13:02 | |
where can I find it? | |||
timotimo | moritz: how did you get permission to systemctl? | ||
moritz | timotimo: sudo | ||
timotimo | oh | ||
i didn't make an actual pull request | |||
github.com/perl6/evalbot/compare/t...ile-exists | |||
moritz | timotimo: +1 | 13:03 | |
timotimo: and +2 if you explicitly import getcwd from Cwd | |||
timotimo | oh | 13:04 | |
i can do that | |||
13:04
camelia joined
|
|||
dalek | albot/timo-require-config-file-exists: 78eaa68 | timo++ | evalbot.pl: explicitly pull in getcwd from Cwd |
13:04 | |
timotimo | there we go | ||
moritz | m: say 42 | ||
13:05
ChanServ sets mode: +v camelia
|
|||
camelia | rakudo-moar 35de75: OUTPUT«42» | 13:05 | |
moritz | star-m: say 'version?' | ||
camelia | star-m 2015.02: OUTPUT«version?» | ||
dalek | albot: a9ae692 | moritz++ | README: Document how to update the star build |
13:06 | |
timotimo | moritz: if the run script for the evalbot would output (at least errors) to stdout/stderr, journalctl and "systemctl status" would display that helpfully when something goes wrong | 13:07 | |
though it seems like the evalbot will log everything executed? | |||
13:08
Hor|zon joined
|
|||
moritz | timotimo: it usually does output errors to stderr | 13:08 | |
(or to IRC, if the errors are with compiler invoked) | |||
timotimo | right, i only meant errors like "crashed due to out of memory" | 13:09 | |
or stuff like that | |||
13:13
Hor|zon left
|
|||
timotimo | oh, when updating star i forgot to echo YYYY.MM > install/VERSION | 13:15 | |
13:16
tinyblak joined,
tinyblak left,
dj_goku left
13:19
dj_goku joined
13:20
_mg_ left
13:24
spider-mario joined
|
|||
timotimo | fosdem videos still very sparsely uploaded; not a single main-track-languages or devroom-perl video appeared :( | 13:24 | |
13:25
dj_goku left
|
|||
dalek | p/native-ref: 52f64dd | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java: Implement lexical native ref taking ops. |
13:27 | |
13:31
dj_goku joined,
dj_goku left,
dj_goku joined
13:43
raiph joined
13:48
espadrine joined
13:54
vendethiel joined
|
|||
timotimo | jnthn: whatever_curry gets called crazy often; maybe there'd be a way to prevent calling it very early? | 13:55 | |
masak .oO( Breaking News: the Haskell community rages over the insensitive tone of the internal Rakudo routine `whatever_curry` ) | 13:56 | ||
13:57
tinyblak joined
|
|||
timotimo | m) | 13:57 | |
masak .oO( in retaliation, they rename `foldr` to the incredibly immature and not at all well-thought-out `yeahRightWall` ) | 13:58 | ||
timotimo | i'm not sure if that was a good joke or i'm just easily amused :) | 14:04 | |
masak | :) | 14:05 | |
Kristien | masak: does the Haskell community every not rage about everything not Haskell? | 14:07 | |
masak | yes, but only inside a RageIO monad. so you'll never really notice from the outside. | 14:08 | |
timotimo | i didn't know the haskell community rages a lot | ||
masak | raging is a side effect. | ||
vendethiel | there are 2 sides of the haskell community... | 14:10 | |
timotimo | my sides! | ||
vendethiel | hence the #haskell and #nothaskell split,btw... | ||
vendethiel would love to toss names around, but won't :) | |||
masak | vendethiel: I did not know about that. | ||
timotimo | video.fosdem.org/2015/STATUS.txt - cool | ||
masak | vendethiel: what do they talk about in #nothaskell, I wonder? | 14:11 | |
colomon | haskell, I imagine. :) | ||
vendethiel | masak: being open ;-) | ||
masak: it's mostly the same, really, they're just more open about people. and don't treat you like a p*** of sh** because you don't know everything about CT | 14:12 | ||
masak | :/ | ||
vendethiel has watched smalltalk videos yesterday | |||
timotimo | what's CT again? | ||
vendethiel | category theory | ||
masak | Category Theory. | ||
timotimo | ah | ||
masak | vendethiel: I will never understand why people choose to be mean/derogatory based on lack of knowledge. | 14:13 | |
vendethiel | one of the people that's hated by the #nothaskell community is the scalaz guy, that also split the scalaz community | ||
timotimo | there was even an XKCD about that topic and that still didn't help! | ||
masak | timotimo: *rolls eyes* "what, you didn't even know about the xkcd strip about the topic?" | ||
:P | |||
timotimo | :D | 14:14 | |
vendethiel is really sad aobut this :( | |||
and the problem is that most people are "afraid" to call them out because they "paved the way". (I've been asked to leave #scalaz once because of that..) | 14:15 | ||
timotimo | but you're an angry frenchman, i can understand why people would ask you to leave places! :P | ||
masak | vendethiel: sometimes it seems to me that *transmitting knowledge*, teaching and learning really efficiently, is a still-uncracked challenge. and that whoever cracks it is going to be fairly influential going forards. | ||
vendethiel | right. | 14:17 | |
timotimo: you know it ;-) | 14:18 | ||
timotimo | *hug* | ||
vendethiel has heard that for real, though... | |||
*hug* | |||
masak | *hug* | 14:19 | |
timotimo | ugh | 14:20 | |
i kind of wish the whatever code inlining code could be simplified | |||
i'm still splitting my attention between it and watching a zero-k tournament being cast, but ... | |||
14:21
Kristien left
|
|||
timotimo | and looking at the code the whatevercode inliner generates ... holy crap that's ugly | 14:21 | |
14:22
tinyblak left
|
|||
masak | you're not supposed to look directly at it :P | 14:22 | |
timotimo | probably | ||
14:23
tinyblak joined
14:24
tinyblak_ joined,
tinyblak_ left,
tinyblak left
14:25
tinyblak joined,
tinyblak left,
tinyblak joined
14:30
FROGGS joined
14:34
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
FROGGS | "This representation can not unbox another" :o( | 14:36 | |
14:40
colomon left,
colomon joined
14:43
dj_goku left
|
|||
b2gills | m: say Int.Range; say 8.Range | 14:44 | |
camelia | rakudo-moar 35de75: OUTPUT«-Inf..InfInvocant requires a type object, but an object instance was passed in method Range at src/gen/m-CORE.setting:5531 in block <unit> at /tmp/I0Vfs5Mkv5:1» | ||
timotimo | m: say Int.range | ||
camelia | rakudo-moar 35de75: OUTPUT«No such method 'range' for invocant of type 'Int' in block <unit> at /tmp/Mw0J1Xbn8d:1» | ||
timotimo | m: say int8.range | ||
camelia | rakudo-moar 35de75: OUTPUT«No such method 'range' for invocant of type 'int8' in block <unit> at /tmp/2soVLIS3SR:1» | ||
timotimo | m: say int8.Range | ||
camelia | rakudo-moar 35de75: OUTPUT«-128..127» | ||
timotimo | m: say uint8.Range | ||
camelia | rakudo-moar 35de75: OUTPUT«0..255» | ||
masak | m: say Str.Range | 14:45 | |
camelia | rakudo-moar 35de75: OUTPUT«No such method 'Range' for invocant of type 'Str' in block <unit> at /tmp/IC9SzQKqm3:1» | ||
masak | shouldn't that one also be -Inf..Inf ? | ||
m: say Num.Range | |||
camelia | rakudo-moar 35de75: OUTPUT«No such method 'Range' for invocant of type 'Num' in block <unit> at /tmp/WS62og84QG:1» | ||
masak | and that one? | ||
m: say Real.Range | |||
camelia | rakudo-moar 35de75: OUTPUT«No such method 'Range' for invocant of type 'Real' in block <unit> at /tmp/EzDNPPmyB6:1» | ||
masak | and probably that one, too? | ||
m: say Rat.Range | |||
camelia | rakudo-moar 35de75: OUTPUT«No such method 'Range' for invocant of type 'Rat' in block <unit> at /tmp/OhsQCuYc9h:1» | ||
masak | seems there are a couple of them missing :) | ||
b2gills | All of them are missing except Int | 14:46 | |
I tried `$_.?Range // ^$_` and it didn't work | 14:47 | ||
14:47
Kristien joined
|
|||
timotimo | m: say Num.?NoSuchMethod | 14:48 | |
camelia | rakudo-moar 35de75: OUTPUT«Nil» | ||
timotimo | m: my $_ = 1; say Str // $_.WHAT.say | ||
camelia | rakudo-moar 35de75: OUTPUT«Potential difficulties: Redeclaration of symbol $_ at /tmp/qzYZFfyrtk:1 ------> 3my $_ 7⏏5= 1; say Str // $_.WHAT.say(Int)True» | ||
timotimo | m: my $_ = 1; say (Str // $_.WHAT.say) | 14:49 | |
camelia | rakudo-moar 35de75: OUTPUT«Potential difficulties: Redeclaration of symbol $_ at /tmp/QZUrvHhVCc:1 ------> 3my $_ 7⏏5= 1; say (Str // $_.WHAT.say)(Int)True» | ||
timotimo | ah | ||
jnthn | timotimo: Not sure we need to prevent calling it, more try to make sure it does the most common/cheap check first to quickly return. | 14:51 | |
timotimo | right, i've looked into that | 14:52 | |
i put one of the checks earlier and it catches about 1/10 of cases | |||
geekosaur | hmmm. older perl 6 links go into the ether | ||
timotimo | but for the rest of the cases we still need to iterate over all arguments to check if they .returns WhateverCode | ||
14:53
rmgk_ joined,
rmgk left,
rmgk_ is now known as rmgk
|
|||
geekosaur | I have dev.perl.org/perl6/syn/ in my history which goes to feather.perl6.nl/syn/ which is 404. likewise the top level links on feather.perl6.nl | 14:53 | |
timotimo | ah | ||
14:54
Hor|zon joined
|
|||
timotimo | perl6.feather.nl seems *very* outdated | 14:54 | |
at least partially? | |||
it still refers to pugs, for example | 14:55 | ||
at least pl6anet.org is being linked to instead of the old planetsix | |||
somehow every WhateverCode we compile still ends up with one lexical per argument | 14:56 | ||
but there's also locals for lowered params and lowered lexes | 14:57 | ||
moritz doesn't know why feather still runs at all | |||
jnthn | timotimo: We have to keep the lexicals around too | ||
timotimo | oh | ||
jnthn | timotimo: We don't use them normally | ||
timotimo | but they aren't being used :) | ||
OK, fair enough | |||
moritz | Juerd: services have been migrated away from feather, so if you want, you can take it down | ||
timotimo | so i won't energy into trying to remove them | 14:58 | |
jnthn | timotimo: But if we get a bind failure, we fall back to the slow path binder, and it gets upset if they ain't there. | ||
timotimo: We might be able to be smarter in the future on that. | |||
timotimo | understood. is thatsomething we'd want to fix at ... yeah | ||
14:58
laouji left
|
|||
jnthn | But it was the most expedient thing :) | 14:58 | |
14:58
Hor|zon left
|
|||
jnthn | (Yes, I did learn this the hard way. ;)) | 14:58 | |
14:58
dj_goku joined,
dj_goku left,
dj_goku joined
|
|||
timotimo | FWIW, CORE.setting.moarvm contains 1002 instances of "Execution of block eliminated by optimizer" | 15:00 | |
15:00
laouji joined
|
|||
colomon | …. huh? | 15:01 | |
timotimo | colomon: is that huh for my last line? | 15:02 | |
colomon | timotimo: yes | 15:03 | |
timotimo | ah | ||
i can explain | |||
vendethiel | "i can explain!" | 15:04 | |
Juerd | moritz: Great, thanks! | 15:05 | |
timotimo | except my internet connection has the hiccups again | ||
ok, i'm back | |||
so when the optimizer (which works with QAST nodes) inlines a block into another, the original block isn't needed any more | 15:06 | ||
masak | vendethiel: "it's not what it looks like!" | ||
timotimo | before removal it'd've been something like call(clone(QAST::BVal(reference_to_block))) | ||
unfortunately, the compiler gets very upset when a block had been added to the World and it's no longer around when we get to compiling | 15:07 | ||
so what we do is replace the block's contents with just a quick die statement | |||
15:07
diana_olhovik_ left
|
|||
timotimo | it doesn't use up a lot of memory, but since we have 1000 of them in our core setting, whatever memory it uses per block will get moved from bytes to kilobyte or from kilobytes to megabytes :) | 15:08 | |
jnthn | We inline 1000 of them? Wow, nice :) | ||
timotimo | it's better than having calls in their places, for sure | 15:09 | |
jnthn | Very | ||
timotimo | especially since inlined blocks allow more lexical vars to become local vars etc etc | ||
but also call overhead etc | |||
15:09
diana_olhovik_ joined
|
|||
jnthn cranks the music and gets back to native-ref JVM porting | 15:10 | ||
timotimo | don't be so cranky, jnthn | ||
masak | don't listen to the cranks, jnthn | ||
jnthn | :P | ||
masak | their music sucks | ||
15:11
perl6_newbee left
|
|||
colomon | timotimo++ | 15:12 | |
15:12
perl6_newbee joined
15:16
colomon left
|
|||
dalek | kudo/nom: d2604ea | timotimo++ | src/Perl6/Actions.nqp: fewer QAST nodes when eliminating blocks in *-curry |
15:16 | |
kudo/nom: 67a75c1 | timotimo++ | src/Perl6/Optimizer.nqp: possibly the smallest time save ever achieved. |
|||
skids | m: role g[::T $t] { multi method foo (T $a) { "OHAI".say }; multi method foo($a) { "ONOES".say }; }; g[Int(Str)].new.foo("100") | 15:19 | |
camelia | rakudo-moar 35de75: OUTPUT«ONOES» | ||
jnthn | Bah, I knew somebody would try that :P | 15:21 | |
vendethiel | *g* | ||
jnthn | I only did coercion types so far sufficient that we could migrate away from the deprecated "as" in sigs. | ||
15:21
darutoko left
|
|||
jnthn | That one should be possible to make work, anyways. :) | 15:21 | |
It's just a bit fiddly. | 15:22 | ||
skids laughs maniacally | |||
15:22
aborazmeh left
|
|||
Juerd | Who can update the topic? | 15:22 | |
timotimo | any op | 15:23 | |
er | |||
that's not what you're asking, is it? :) | |||
Juerd | I want names! :P | ||
timotimo | you can /msg ChanServ access #perl6 list | 15:24 | |
skids | jnthn: I can RT that if you like. | ||
Juerd | timotimo: Thanks | ||
15:25
colomon joined
|
|||
Juerd | jnthn: You appear to be an op. Could you add to the topic that feather will shut down permanently 2015-03-31? | 15:25 | |
jnthn | skids: Feel free | 15:26 | |
FROGGS | "P6opaque representation can not unbox NativeCall" sounds better than "This representation can not unbox another" | 15:27 | |
timotimo | can someone please /msg ChanServ access add timotimo +Avorit | 15:28 | |
jnthn, you could do this | |||
jnthn | I'm kinda trying :P | ||
timotimo | (gives me a few not very dangerous permissions) | ||
15:29
ChanServ sets mode: +o jnthn
|
|||
Juerd | Is "/msg ChanServ access add timotimo +Avorit" the new "op me plx"? :P | 15:29 | |
jnthn | »ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! | feather will shut down permanently on 2015-03-31 | 15:29 | |
Juerd | jnthn++ | 15:29 | |
timotimo | Juerd: except easier to sneak something malicious into :P | ||
moritz: dalek's whois shows 2001:780:101:ff00::2:9; is there no reverse-dns for that ipv6 yet? | 15:32 | ||
15:36
xfix left
|
|||
FROGGS has the feeling that 'is box_target' does not work correctly on jvm | 15:37 | ||
15:37
xfix joined
|
|||
dalek | p/native-ref: cef0fd2 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/NativeRef.java: Implement NativeRef REPR composition. |
15:37 | |
p/native-ref: 959164f | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/NativeRef.java: REPR data serialize/deserialize for NativeRef. |
|||
jnthn | FROGGS: It's very possibly "interesting" | 15:38 | |
FROGGS | jnthn: I try to fix Inline::C, which applies roles to a routine, and then passes it off to &trait_mod:<is>($r, native => $!dll) | ||
and the result is: "P6opaque representation can not unbox NativeCall" | 15:39 | ||
(with improved error message) | |||
jnthn | FROGGS: Could be a missing decont... | ||
FROGGS | I tried nqp::buildnativecall(nqp::decont(self), ... | 15:40 | |
so, that explodes right now: call = (NativeCallBody)target.get_boxing_of(tc, ncrepr.ID); | |||
15:41
laouji left,
Kristien left
|
|||
FROGGS tries to pass $!call instead of self | 15:41 | ||
java.lang.RuntimeException: Cannot access a native attribute as a reference attribute :o( | 15:42 | ||
dalek | p/native-ref: b22a0e7 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/NativeRef.java: Fix copy-pasta. |
15:48 | |
p/native-ref: 47a347c | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/NativeRefContainerSpec.java: Native fetch/store for native_ref cont spec. |
|||
p/native-ref: 8bebd81 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/NativeRefInstance (3 files): Correct inheritance for lex ref types. |
|||
15:53
mr-foobar joined
15:57
grondilu left
|
|||
dalek | p/native-ref: 52188d6 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/NativeRefContainerSpec.java: Non-native fetch/store to native_ref conts. |
15:58 | |
jnthn | Whee, get quite a bit further into the CORE.setting compile now. | ||
15:58
Kristien joined
15:59
ChanServ sets mode: -o jnthn,
grondilu joined
16:01
zakharyas joined
16:12
BenGoldberg joined
16:15
xtreak joined
16:17
perl6_newbee left
|
|||
xtreak | p6: my $a = (1, 2, 3, (4, 5,6)); $a.say; | 16:17 | |
camelia | rakudo-moar 67a75c: OUTPUT«1 2 3 4 5 6» | ||
xtreak | Doesn't perl6 differentiate a parcel and a normal list element visually? It seems like a 6 element list now | 16:18 | |
16:19
perl6_newbee joined
|
|||
jnthn | Depends how you output it | 16:20 | |
p6: my $a = (1, 2, 3, (4, 5,6)); $a.perl.say; | |||
camelia | rakudo-moar 67a75c: OUTPUT«$(1, 2, 3, (4, 5, 6))» | ||
xtreak | What does .perl do? | 16:21 | |
skids | Prints something that has a chance of being valid perl code that would recreate the same thing. | ||
geekosaur | .perl generates something resembling the perl code to produce a value (think Data::Dumper in perl5); .say uses .gist which generates a simplifies "just the facts" representation | 16:22 | |
timotimo | we have no documentation about exception handling in doc.perl6.org/language yet? | ||
xtreak | Thanks. I have installed rakudo star. Is there a way to view documentation for perl 6 like perldoc? | 16:23 | |
jnthn | I think it's called p6doc, and believe it's included with r* | 16:26 | |
timotimo away for most of $evening | |||
BenGoldberg | p6: :foo.perl.say | 16:28 | |
camelia | rakudo-moar 67a75c: OUTPUT«"foo" => Bool::True» | ||
BenGoldberg | m: sub foo (|bar) { bar[*] }; foo "quux" => Bool::True | ||
camelia | ( no output ) | ||
BenGoldberg | m: sub foo (|bar) { bar[*] }; foo :quux | 16:29 | |
camelia | ( no output ) | ||
dalek | p/native-ref: 75d83a9 | jnthn++ | src/vm/jvm/QAST/Compiler.nqp: Implement attributeref scope compilation. |
||
BenGoldberg | m: sub foo (|args) { args[*] }; foo :bar | ||
camelia | ( no output ) | ||
xtreak | Thanks jnthn. It will be better if it has tab completion like perldoc. As I don't know how things are structured. May be am missing something | ||
b2gills | xtreak: the only reason you would have tab completion for perldoc is someone added it to your shell | 16:31 | |
Is `$*PERL.version` supposed to be the version of the language? | 16:32 | ||
jnthn | It's probably still worth us looking at what was done to make it work nicely for perldoc, so we can replicate it in p6doc :) | ||
b2gills: I think so | 16:33 | ||
skids | xtreak: you might be better of with doc.perl6.org for starters | 16:34 | |
b2gills | star-m: say $*PERL.version; say $*PERL.compiler.version; # I don't have star installed locally | ||
camelia | star-m 2015.02: OUTPUT«vunknownv2015.2» | ||
dalek | p/native-ref: 11b846e | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/NativeRef (2 files): Extend NativeRef REPR to include attribute refs. |
16:35 | |
p/native-ref: 253b419 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java: Implement getattrref_[ins] ops. |
|||
16:36
gfldex joined
|
|||
jnthn | b2gills: Given we didn't settle on the exact naming scheme for lang versions yet, unknown is basically true ;) | 16:36 | |
One of those things we need to nail down in the next few months. | 16:37 | ||
b2gills | I'm working on a fix for the $] error message | ||
m: $] | |||
camelia | rakudo-moar 67a75c: OUTPUT«5===SORRY!5=== Error while compiling /tmp/8heIuDchb5Unsupported use of $] variable; in Perl 6 please use $*PERL_VERSIONat /tmp/8heIuDchb5:1------> 3$]7⏏5<EOL>» | ||
[ptc] | silly question time: how does one slurp a text file into an array, a la in perl5 $fh = open "file"; @lines = <$fh>; ? | 16:38 | |
b2gills | I was wondering if it should say `... use $*PERL.version or $*PERL.compiler.version` | ||
[ptc] | I've tried "file".IO.slurp.split(/\n/), but that gives me one more element than I expect | ||
jnthn | [ptc]: $fh.lines | ||
[ptc] | I know I've got a thinko in here somewhere... | ||
jnthn | [ptc]: Or $filename.IO.lines | 16:39 | |
[ptc] | jnthn: thanks, I'll document that one | ||
jnthn | [ptc]++ | ||
[ptc] | jnthn: actually, I want to check the (in this case) the last 3 elements of a file for a particular pattern | ||
so, I'd like to split the string on newlines and look at the output (feels sort of like the natural thing to do) | 16:40 | ||
16:40
Hor|zon joined
|
|||
[ptc] | however, split() doesn't do what one as perl5 hacker would expect | 16:40 | |
jnthn | [ptc]: Last 3 elements = last 3 lines? | ||
[ptc] | jnthn: yes | ||
jnthn | $fh.lines[*-3 .. *] may do it | 16:41 | |
[ptc] | interestingly enough, split() on an empty file returns a 1 element list, but I've been there before ;-) | ||
jnthn: I'll give it a go | |||
16:41
laouji joined
|
|||
[ptc] | Index out of range. Is: -3, should be in 0..Inf | 16:42 | |
skids | *-3 ..^ * | ||
jnthn | b2gills: Are $[ and $^V the same thing in Perl 5, ooc? | 16:43 | |
skids | hrm. | ||
b2gills | No but they are close enough | ||
jnthn | OK | ||
nwc10 | m say $^V | ||
m: say $^V | |||
camelia | rakudo-moar 67a75c: OUTPUT«5===SORRY!5=== Error while compiling /tmp/7dHEmEpx71Unsupported use of $^V variable; in Perl 6 please use $*PERL_VERSIONat /tmp/7dHEmEpx71:1------> 3say $^V7⏏5<EOL>» | ||
nwc10 | m: say ${^PERL_VERSION} | ||
camelia | rakudo-moar 67a75c: OUTPUT«5===SORRY!5=== Error while compiling /tmp/2ZOsyAHUNYUnsupported use of ${^PERL_VERSION}; in Perl 6 please use $(^PERL_VERSION)at /tmp/2ZOsyAHUNY:1------> 3say ${^PERL_VERSION}7⏏5<EOL>» | ||
dalek | kudo/nom: cebde22 | (Brad Gilbert)++ | src/core/Exception.pm: Update error message for $] to use $*PERL.version |
16:44 | |
kudo/nom: 6959323 | jnthn++ | src/core/Exception.pm: Merge pull request #376 from b2gills/nom Update error message for $] to use $*PERL.version |
|||
16:44
colomon left
|
|||
timotimo | m: say "".split("\n").perl | 16:44 | |
camelia | rakudo-moar 67a75c: OUTPUT«("",).list» | ||
b2gills | $^V is supposed to be an object, while $] is a flot | ||
[ptc] | ah, if the file has fewer than 3 lines, it barfs | ||
timotimo | we've had a lengthy discussion about this at some point, didn't we? | ||
16:44
Hor|zon left
|
|||
[ptc] | timotimo: do you mean me? | 16:45 | |
jnthn | We've probably had lengthy discussions about most things by this point... :P | ||
16:45
zakharyas left,
colomon joined
|
|||
timotimo | i mean about the behavior of split on empty strings | 16:45 | |
m: say "abacaba".split("b").perl | |||
camelia | rakudo-moar 67a75c: OUTPUT«("a", "aca", "a").list» | ||
16:46
laouji left
|
|||
timotimo | (just making sure i don't have the arguments to split reversed between invocant and needle) | 16:46 | |
m: say ("",).list.join("\n").perl | |||
camelia | rakudo-moar 67a75c: OUTPUT«""» | ||
timotimo | well, at least the behavior is consistent between split and join | 16:47 | |
[ptc] | m: say "abcd".split("e").elems | ||
camelia | rakudo-moar 67a75c: OUTPUT«1» | ||
timotimo | that's very important. | ||
[ptc] | that's something that confuses me. The behaviour is documented though | ||
since it's documented I'm ok with it. Nevertheless, I expect this to trip up more than just a few people (just saying) | 16:48 | ||
16:48
xtreak left
|
|||
[ptc] | I also agree that the consistency with join is important | 16:49 | |
b2gills | jnthn: $ perl -E'say $^V; say $]'v5.20.15.020001 | ||
jnthn | b2gills: OK, thanks. | 16:50 | |
b2gills | So perhaps it would be a little more accurate for $] to say `$*PERL.version.Numeric or $*PERL.compiler.version.Numeric` | ||
jnthn | I'd probably write it as +$*PERL.version | 16:51 | |
I can't tell if changing this is helpful or oddly specific. :) | |||
b2gills | The only reason $] still is a float is for backwards compatibility | 16:52 | |
dalek | p/native-ref: 7008cc2 | jnthn++ | src/vm/jvm/QAST/Compiler.nqp: Add missing add_lexicalref method. |
||
16:53
darutoko joined
|
|||
b2gills | It's probably better in the long run to leave off the `+` | 16:55 | |
16:56
smls left
|
|||
BenGoldberg | I would expect perl6 versions, when made into numbers, to be Rats, not floats. | 16:59 | |
dalek | p/native-ref: 9b7f462 | jnthn++ | src/vm/jvm/QAST/Compiler.nqp: Fix thinko in lexicalref late-bound comp. |
17:00 | |
jnthn | native-ref branch now spits out a CORE.setting.jar on JVM | ||
...which explodes on loading. | |||
TimToady | m: my $a = (1,2,3); say $a[].WHAT | 17:04 | |
camelia | rakudo-moar 67a75c: OUTPUT«(Parcel)» | ||
TimToady | that is borken, supposed to be List | ||
m: my $a = (1,2,3); say $a.list.WHAT | |||
camelia | rakudo-moar 67a75c: OUTPUT«(List)» | ||
BenGoldberg | m: my $a = (1,2,3); say $a.perl | ||
camelia | rakudo-moar 67a75c: OUTPUT«$(1, 2, 3)» | ||
japhb | Is there a way in the Rakudo setting to detect whether a particular nqp:: op exists? I'd like to do "feature detection" to implement methods like IO::Path.resolve that work if the underlying backend supports the right ops (nqp::readlink, in this case), and NYI's if not. | 17:05 | |
BenGoldberg | m: my $a = (1,2,3); say $a.list.perl | ||
camelia | rakudo-moar 67a75c: OUTPUT«(1, 2, 3).list» | ||
TimToady | $a[] is supposed to be equivalent to @$a | ||
17:05
_mg_ joined
|
|||
TimToady | m: my $a = (1,2,3); say @$a.WHAT | 17:05 | |
camelia | rakudo-moar 67a75c: OUTPUT«(List)» | ||
japhb | jnthn: ^^^ (my question above) | ||
TimToady | 'cause we been bragging that we don't have to use ->@* and such, just [] | 17:06 | |
(broke one of my quizzing programs too) | |||
timotimo | well, if you write a spectest ... :) | 17:07 | |
japhb | Was pmichaud able to do GLR work, or did the "if I can't, someone else do it" clause get activated? | ||
jnthn | japhb: nqp::getcomp('QAST').operations gets you the object that'd be able to answer the question, if only it had a method to do so... | ||
japhb | *snort* | 17:08 | |
jnthn | japhb: However, I don't quite like doing it that way...it's very cross-comp unfriendly if we end up there | ||
japhb | How is it cross-comp unfriendly, since it's querying what I presume would be the cross-comp? | 17:09 | |
jnthn | japhb: nqp::getcomp('perl6').backend.supports-nqp-op('...') would be a nice API for it. | ||
japhb: Trouble is it isn't... :) | |||
japhb | Oh, I think I understand your point. | ||
jnthn | You want to know the backend of the compiler you're using. | ||
japhb: I actually need to do a similar thing quite soon anyway | |||
japhb | Oooh, can haz priority bump? | 17:10 | |
jnthn | japhb: Yeah, I'll be in exactly the right places to do it. | ||
japhb | Thanks muchly. | ||
17:10
leont left
|
|||
jnthn | Added it to my todo list next to the other thing :) | 17:11 | |
japhb | heh | ||
jnthn | (The other thing is a soft dependency for native-ref merge, so you're likely to get it this weekend.) | ||
japhb | Nice | ||
jnthn | Depends whether I've got a second 80% to do on native-ref JVM port, or if the 20% remaining really is 20% :) | 17:12 | |
japhb | :-) | ||
Hmmm, that leaves me with a question, though ... such a feature allows me to detect if an op is supported ... but what happens on a backend that doesn't support it? Will the *compiler* complain that nqp::readlink isn't a known op, even if I make sure it never gets executed on that backend? | 17:15 | ||
Or have I wandered into macro land? | 17:16 | ||
japhb waves at amasak | |||
japhb waves at masak | |||
jnthn | japhb: Uh...yeah, it'll complain it's missing | 17:17 | |
So not immediately sure how to use it...hmm. | |||
japhb | Yeah, I'm wondering if this is one of those cases where I really do need to use a macro or something macro-ish | ||
raydiak | .tell tadzik minor patch to fix another warning: github.com/tadzik/rakudobrew/pull/30 | 17:18 | |
yoleaux | raydiak: I'll pass your message to tadzik. | ||
raydiak | \o #perl6 | ||
japhb | o/ | ||
17:19
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
dalek | p/native-ref: b7388c6 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java: Implement decont_[ins]. |
17:20 | |
17:24
telex left
|
|||
japhb | FROGGS: Is there currently a way to specify a 'use lib' that is script-relative instead of $*CWD relative? | 17:26 | |
17:26
telex joined
|
|||
dalek | kudo/native-ref: 631219a | jnthn++ | src/vm/jvm/Perl6/Ops.nqp: Use decont_* ops to do unboxing. |
17:27 | |
17:28
_mg_ left
|
|||
raydiak | japhb: I usually use $?FILE.IO.parent or along those lines | 17:28 | |
japhb | raydiak: This falls into the un-.resolve-d path problem I've been banging my head on. | 17:31 | |
raydiak | japhb: have you looked through S32 IO? I saw like half a dozen different methods which looked pertinant | 17:32 | |
japhb | raydiak: I'm thinking I just need to implement the beast myself, but 1) I want to make sure I'm not duplicating something that already exists, possibly in one of the S11 branches, and 2) I run up against stuff like the aforementioned "nqp::readlink only exists in nqp-m" problem. | 17:33 | |
raydiak: .resolve is NYI. :-/ | |||
tadzik | raydiak: thanks :) | 17:34 | |
yoleaux | 17:18Z <raydiak> tadzik: minor patch to fix another warning: github.com/tadzik/rakudobrew/pull/30 | ||
raydiak | tadzik: you're welcome :) | ||
japhb: does .canonpath help? I think it already exists (was playing with these things a bit last night, but was too tired to recall now what I saw) | 17:35 | ||
japhb | raydiak: .canonpath explicitly doesn't resolve ../ | ||
Because symlinks. | |||
(I do appreciate the ideas, though. You just haven't yet hit on one I haven't tried so far. ;-) | 17:37 | ||
dalek | ast: 51c3b8e | TimToady++ | S02-types/array.t: make sure .[] decontainerizes |
||
raydiak | japhb: so you're trying to get to the actual hardlinked location so that .. might take you somewhere other than where you appeared to start from (in case you were in a symlinked path)? | 17:39 | |
17:43
_mg_ joined
|
|||
japhb | raydiak: Well, there's two problems: 1. I need a true absolute path to feed to CompUnitRepo::Locally.new (because otherwise it assumes $*CWD-relative), 2. Someone might call my script using a relative path that contains ../, which means $?FILE and $*PROGRAM_NAME and such contain that, 3. I'm inside a symlinked tree, 4. IO::Path.parent is broken WRT to ../ path components. | 17:44 | |
17:47
cschwenz joined
|
|||
japhb | *multiple problems, I guess | 17:48 | |
raydiak | m: .IO.parent.say for <.. ../foo foo/.. foo/../bar > | 17:52 | |
camelia | rakudo-moar 695932: OUTPUT«"/home/camelia/../..".IO"/home/camelia/../../foo".IO"/home/camelia/foo".IO"/home/camelia/foo/..".IO» | ||
17:53
rurban left
|
|||
raydiak | yeah no brilliant ideas here, guess implementing .resolve is the shortest real solution | 17:55 | |
18:03
diana_olhovik_ left
|
|||
BenGoldberg | m: ".".IO.say | 18:04 | |
camelia | rakudo-moar 695932: OUTPUT«"/home/camelia".IO» | ||
BenGoldberg | m: ".".IO.parent.say | 18:05 | |
camelia | rakudo-moar 695932: OUTPUT«"/home/camelia/..".IO» | ||
japhb | m: my $a = '../foo/bar'.IO.absolute.IO; $a.perl.say; $a.parent.parent.parent.perl.say; | 18:08 | |
camelia | rakudo-moar 695932: OUTPUT«q|/home/camelia/../foo/bar|.IO(:SPEC(IO::Spec::Unix))q|/home/camelia|.IO(:SPEC(IO::Spec::Unix))» | ||
japhb | BenGoldberg: ^^ that is my pain right now | ||
18:08
echowuhao joined
|
|||
japhb | Also, .IO.absolute.IO is ugly. | 18:08 | |
18:09
_mg_ left
|
|||
raydiak | star-m: use NativeCall; sub realpath (Str:D $, Str $) returns Str is native {*}; realpath("..").IO # japhb: well, there's this... | 18:11 | |
camelia | ( no output ) | ||
raydiak | star-m: use NativeCall; sub realpath (Str:D $, Str $) returns Str is native {*}; realpath("..").IO.say | ||
camelia | star-m 2015.02: OUTPUT«"/home/camelia/rakudo-star-2015.02".IO» | ||
18:11
perl6_newbee left
|
|||
raydiak | star-m: use NativeCall; sub realpath (Str:D $, Str $) returns Str is native {*}; realpath(".").say | 18:11 | |
camelia | star-m 2015.02: OUTPUT«/home/camelia/rakudo-star-2015.02/install» | ||
raydiak | star-m: say '.'.IO.absolute | 18:12 | |
camelia | star-m 2015.02: OUTPUT«/home/camelia/rakudo-star-2015.02/install» | ||
raydiak | star-m: say '..'.IO.absolute | ||
camelia | star-m 2015.02: OUTPUT«/home/camelia/rakudo-star-2015.02/install/..» | ||
18:18
cschwenz left
18:20
echowuhao left
|
|||
[ptc] | timotimo++ # for the pod-htmlify.t improvement | 18:22 | |
dalek | c: 88af0dc | paultcochrane++ | lib/Type/IO (4 files): Link to related roles/classes in IO roles/classes |
||
c: bb3a7f5 | paultcochrane++ | lib/Language/5to6.pod: Mention .lines when reading a text file |
|||
c: ae5d229 | paultcochrane++ | t/pod-htmlify.t: Merge branch 'master' of github.com:perl6/doc |
|||
japhb | raydiak: Why do you need star-m there? | ||
Also, yeah, I considered the realpath method (though I couldn't remember the C name, thanks) | 18:23 | ||
raydiak | japhb: oh yeah forgot nativecall is in core now duh | ||
timotimo | [ptc]: eine meiner leichtesten übungen ;) | 18:25 | |
dalek | p/native-ref: 40d219c | jnthn++ | src/vm/jvm/QAST/Compiler.nqp: Elide many lexicalref/attributeref takes. |
18:28 | |
18:28
Hor|zon joined
|
|||
dalek | kudo/native-ref: ac026be | jnthn++ | tools/build/create-jvm-runner.pl: Fix JVM runner generation on Windows. %CLASSPATH% may end up with spaces in, and also needs the correct separator. |
18:29 | |
18:29
aborazmeh left,
rurban joined
18:30
laouji joined
|
|||
[ptc] | timotimo: ich wünschte mir, ich hätte die Lösung gesehen :-/ | 18:31 | |
timotimo: I'm still learning | |||
timotimo | that's very all right | ||
i've needed almost this exact pattern in the past | |||
at that point i wanted to react to the presence or absence of Term::ANSIColor | 18:32 | ||
[ptc] | timotimo: I kept having the problem that, even though I'd put the "use" inside a "try" it kept failing at compile time, hence the choice of BEGIN | ||
timotimo | ah, i understand that part | ||
[ptc] wonders where this perl of wisdom should be written | |||
timotimo | but "EVAL" should have obsoleted the BEGIN | 18:33 | |
Kristien | vendethiel: is LiveScript still being improved? | ||
18:33
Hor|zon left
|
|||
[ptc] | timotimo: I had: try { use URI::Escape, CATCH { default { say "Need URI::Escape" }}} and that kept failing at compile time | 18:34 | |
timotimo | yeah | ||
damn you, perl6, for failing so early! | |||
[ptc] | timotimo: I also knew it was more complicated than necessary, but couldn't find a way out | ||
timotimo | er, hold on | 18:35 | |
18:35
laouji left
|
|||
timotimo | running "plan 0;" and "exit" at BEGIN time may not be a good idea if you're in a module, because those get precompiled when modules are installed via panda | 18:36 | |
but you could have done something like my $has_escape = BEGIN { ... } | |||
[ptc] | yeah, the "plan 0" solution was to stop "prove" from complaining that no tests were planned/run | 18:38 | |
timotimo: could you try something out for me? Without URI being installed, run "prove --exec=perl6 -r t" in perl6/doc | 18:41 | ||
timotimo: for me it fails by not being able to run the subtests (and tries to load URI::Escape in the process) | 18:42 | ||
vendethiel | Kristien: idk | ||
18:42
Ben_Goldberg joined
|
|||
dalek | p/native-ref: 6559876 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/reprs/NativeRef (2 files): Extend NativeRef REPR to include positional refs. |
18:43 | |
p/native-ref: 42da59a | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java: Implement atposref_[ins]. |
|||
vendethiel | Kristien: I pretty much gave up on LS, around a year ago | 18:44 | |
Kristien: tho someone is adding sourcemaps | |||
Kristien | ok :p | ||
vendethiel | Kristien: actually -- that's unfair. I gave up on JS in general. | ||
so I stopped working on both | |||
Kristien | Currently working on a lens library in LS | 18:45 | |
18:46
BenGoldberg left
|
|||
vendethiel | Kristien: I think we have one already:P! | 18:46 | |
sorella (notlolita) has done a fair amount of ls stuff | |||
18:47
diana_olhovik_ joined
|
|||
timotimo | [ptc]: gimme a minute | 18:48 | |
[ptc] | timotimo: np | ||
afk for a while # dinner & | 18:49 | ||
timotimo | i get an error from "use-ok" not being defined, because rakudo too old | 18:50 | |
18:51
virtualsue joined
|
|||
nine_ | timotimo: github.com/niner/Grammar-Highlight...341587f800 | 18:52 | |
18:56
raiph left
|
|||
raydiak wonders why compress::zlib::raw fails to build on the smoker but wfm | 18:59 | ||
raydiak also wonders what happened to cpandatesters | |||
19:02
jack_rabbit joined
|
|||
timotimo | nine_: if you have style="..." already, i'd suggest you use the hsl function together with a pseudorandom spread over 0..255 to get nice colors | 19:03 | |
also, inside of postcircumfix:<[ ]> you can have a WhateverCode that gets passed the number of elements, so i'd suggest $color % * | 19:04 | ||
pseudorandom can also mean "actually random but cached with the name of the rule as the key" | |||
nine_ | Finding good, distinct colors is a surprisingly difficult problem. | 19:05 | |
timotimo | oh, agreed | 19:07 | |
19:07
jack_rabbit left
|
|||
timotimo | [ptc]: you're right, it seems like it's fatal | 19:07 | |
oh, derp :) | |||
it "use"s that module a few lines later | |||
19:07
jack_rabbit joined
|
|||
timotimo | i have to hit the road right now, unfortunately | 19:08 | |
you can wrap it in EVAL q{ ... } | 19:09 | ||
19:09
Gitu joined
|
|||
timotimo | for now | 19:09 | |
[ptc] | timotimo: the use-ok isn't as ripe ase it could b | ||
*be | |||
I'll give it a go | |||
vendethiel just learned that groovy copied the " println (4 + 5) * 3" problem from perl5... | |||
timotimo | use-ok is all right | ||
the use directly below it is problematic | |||
ttyl :) | |||
Gitu | Hello | 19:11 | |
vendethiel | o/ | 19:13 | |
dalek | ast: feca340 | TimToady++ | S02-types/ (2 files): make sure $hash{} decontainerizes too |
||
Gitu | My first question here: Can Perl 6 generate Windows executables? Also, can it be used to create COM servers (for Windows)? | 19:14 | |
19:14
raiph joined
19:16
jack_rabbit left,
tinyblak left
|
|||
nine_ | @colors[$color % *] is really sweet :) | 19:18 | |
TimToady | even sweeter will be when you can put the modmap into the declaratoin | 19:19 | |
which S09 speculates | 19:20 | ||
19:20
tinyblak joined
|
|||
TimToady | though perhaps with a bogus syntax | 19:20 | |
FROGGS[mobile] | Gitu: with a little bit of work we can create executables in future, but, the win32 api is not yet there as a module | 19:21 | |
Gitu: so com servers would be quite some work... | |||
Gitu | Froggs: Thank you. | 19:23 | |
dalek | ast: 35b8f69 | TimToady++ | S02-types/array.t: deconting array doesn't necessarily imply List |
19:24 | |
FROGGS[mobile] | Gitu: a very good first step would be to port the win32 module from Perl 5 | 19:25 | |
19:25
xtreak joined
|
|||
Gitu | Froggs: That module is able to create just COM clients, not servers. Under Perl, only ActiveState's PDK commercial solution can create COM servers. (Or am I wrong?) | 19:27 | |
FROGGS[mobile] | ohh :o( | ||
avuserow | has anyone started a grammar for parsing SQL? in particular I'm wanting to parse .sql files output from mysqldump and similar tools. | ||
FROGGS[mobile] | I dont know | ||
19:28
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
FROGGS[mobile] | avuserow: tony-o made a slang::sql | 19:28 | |
IIRC | |||
look in the irc logs | |||
19:29
Hor|zon joined
|
|||
avuserow | FROGGS[mobile]: I saw that one, but it doesn't appear like it actually generates an AST or similar from the SQL | 19:30 | |
it has a note in the README saying that it doesn't validate SQL yet :( | |||
raydiak | nine_: for the palette, just picking regular intervals around the hue circle can work well...multiplied by a desaturated and/or darkened variant of each hue plus a few greys I wouldn't be surprised if you could generate 20 or 30 adequately distinct colors | 19:31 | |
FROGGS[mobile] | ohh.. | ||
19:32
laouji joined
19:34
Hor|zon left
19:36
FROGGS[mobile] left,
laouji left
19:41
xtreak left
19:42
Gitu left
19:43
BenGoldberg joined
|
|||
b2gills | I think for a COM server you would need at least a C shim | 19:45 | |
19:46
Ben_Goldberg left
|
|||
dalek | c: 06ada66 | (Matthias Krull)++ | htmlify.p6: Fixed generated links to Github files |
19:49 | |
19:53
zakharyas joined
19:54
grondilu left
|
|||
dalek | ast: d2134c7 | TimToady++ | S02-types/hash.t: correcter decontainerized test |
19:54 | |
kudo/nom: 9d41570 | TimToady++ | src/core/ (2 files): decontainerize bare Zen slices |
|||
19:55
_mg_ joined
20:01
aborazmeh left
20:04
_mg_ left
|
|||
japhb | OK, I've got a locally working IO::Path.resolve, but right now it only works on POSIX filesystems. | 20:13 | |
20:14
sivoais left
|
|||
japhb | Anyone with both Windows and Linux access interested in fixing it to work on both? I can make guesses, but they'd probably be dead wrong ... | 20:17 | |
FROGGS | m: use lib $?FILE.IO.dirname ~ '/lib' # japhb | 20:19 | |
camelia | ( no output ) | ||
dalek | ast: c5379ec | TimToady++ | S02-lists/tree.t: yes, the test is correct, since Zen should decont |
20:20 | |
20:26
tmch joined
|
|||
jnthn | NQP_VERBOSE_EXCEPTIONS | 20:29 | |
oops | |||
20:30
Kristien left
20:32
Kristien joined
20:33
darutoko left
|
|||
japhb | FROGGS: I need to handle the case that the script, the lib/, and the user are all in separate directories, possibly multiple levels apart with symlinks between. I'm planning basically 'use lib ($?FILE.IO.dirname ~ "/../../../lib").IO.resolve' | 20:35 | |
FROGGS | japhb: that's not pretty but it works | 20:36 | |
japhb | Actually, more like 'use lib ($?FILE.IO.dirname ~ "/../../../foo/bar/lib").IO.resolve' | ||
itz | www.topcoder.com/blog/if-programmi...-were-beer | ||
japhb | Am I the only one that finds the odd mixture of IO::Path methods that return Str or IO::Path rather odd (and *cough* PHP-like)? | 20:38 | |
.oO( odd mixture is odd) |
|||
psch | japhb: newio exists, and lizmat++ looks like she knows what she's doing in there | 20:39 | |
*the branch | |||
20:39
zakharyas left
|
|||
japhb | nod | 20:41 | |
What should .resolve do with paths that don't exist past some point? realpath(3) will error, realpath(1) can work in "resolve symlinks, error on fake paths" or "don't resolve symlinks, but don't error on fake paths" mode. | 20:42 | ||
20:43
Ben_Goldberg joined
|
|||
japhb | I was thinking about a DWIM: Start in "Resolving symlinks, handling real paths" mode, and the first time it hits a path element that doesn't exist, just append the rest of the path elements as-is except for dropping // and /./ | 20:44 | |
This has the downside of possibly leaving /../, but iff that could not be successfully resolved. | |||
Which means if the missing intermediate path element were created later, the partially-resolved path would still be correct, and (more-)fully-resolvable. | 20:45 | ||
20:46
BenGoldberg left
|
|||
japhb | So if /usr/bin/X11 -> /usr/bin, then /usr/lib/../bin/X11/foo/../baz would return /usr/bin/foo/../baz, which could later be resolved completely if /usr/bin/foo were created as a directory or as a valid symlink. | 20:48 | |
20:48
sivoais joined,
Celelibi left,
sivoais left,
sivoais joined
|
|||
japhb | Seem sane, or YTICN? | 20:48 | |
20:53
Celelibi joined
|
|||
Kristien | We should call singletons "sigiltons" | 20:53 | |
20:53
Rounin left
20:55
jack_rabbit joined,
rindolf left
|
|||
japhb | Hmmm, there's also the case of /dir/dir/file/bar/baz to contend with ... :-/ | 20:58 | |
Oh, actually, we probably want to let that slide, because 'file' can be a ZIP or TAR file that the filesystem can mount as a dir ... | |||
geekosaur | there's also streams in NTFS and HFS+ | 20:59 | |
japhb | Yeah, the more I think about this, the more I think it's a good idea to be more lax ... after all, if the user wants to be sure the resolved thing is "real", they can always .IO.e on the result. | 21:06 | |
Ben_Goldberg | On windows "//" right at the beginning of a path name has a special meaning. | 21:10 | |
Specifically, all named pipes start with \\ or, equivilantly, // | 21:12 | ||
geekosaur | UNC paths | 21:13 | |
/host/share/path | 21:14 | ||
er | |||
//host/share/path | |||
right, my mental automatic doubling at the start of the line doesn't quite work if it's starting with // for other reasons :p | |||
Ben_Goldberg | Err, actually, \\ is the windows equivilant of unix's /dev/ | 21:15 | |
Windows named pipes start with "\\<ComputerName>\pipe\" .... and there are other devices in addition to pipes in the \\ namespace. | 21:16 | ||
geekosaur | right, it's a variant of UNC paths | 21:17 | |
"pipe" is a virtual share in UNC syntax | 21:18 | ||
21:18
Hor|zon joined
21:20
beastd joined
21:23
Hor|zon left
21:35
xfix left
21:37
Kristien left,
rurban left
|
|||
masak | m: my $now = DateTime.now; $now.later | 21:44 | |
camelia | rakudo-moar 9d4157: OUTPUT«use of uninitialized value $unit of type Any in string context in block <unit> at /tmp/RmyvdH1jbH:1use of uninitialized value $unit of type Any in string context in block <unit> at /tmp/RmyvdH1jbH:1use of uninitialized value $unit of type Any…» | ||
masak | that goes on for a while. ends with "Error while creating error string: No exception handler located for warn" | 21:45 | |
masak .oO( who implemented this stuff? ) :P | 21:46 | ||
dalek | p: b91a78d | FROGGS++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/SixModelObject.java: improve error messages for repr mismatch |
||
masak | I see there's a &die in there for "More than one time unit supplied". there should be one for "No time unit supplied" as well, I guess. | ||
masak attempts a quick fix | 21:47 | ||
by the way, that method has the coolest given block I've ever written. any discussion about the variation in given statements should invlude that given statement as a matter of course. :) | 21:49 | ||
include* | |||
21:53
Celelibi left
21:56
Celelibi joined
|
|||
[ptc] | .tell timotimo unfortunately the require version wasn't working at all (errors with and without prove). The check needs to take place at compile time. Don't know what the best solution is though... | 21:56 | |
yoleaux | [ptc]: I'll pass your message to timotimo. | ||
21:56
cognominal joined
|
|||
jnthn | yays, native-is-rw.t and native-is-copy.t nowp ass on JVM \o/ | 21:59 | |
uh, now pass | |||
colomon | \o/ | ||
nowp ass! | |||
dalek | c: b481d52 | paultcochrane++ | t/pod-htmlify.t: Wrap check for URI::Escape in BEGIN block The "unless try" was a good solution, however the check for URI::Escape needs to happen at compile time, since the later "use" will be checked and thus fail since URI::Escape isn't there. What a better solution is, I don't know, however the test works again now. |
||
p/native-ref: e6b895e | jnthn++ | src/vm/jvm/QAST/Compiler.nqp: Fix a few thinkos in lexicalref compilation. |
22:00 | ||
p/native-ref: 134199d | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java: Don't confuse primitive type and reference kind! |
|||
kudo/native-ref: 7b24f43 | jnthn++ | src/vm/jvm/runtime/org/perl6/rakudo/Binder.java: Update JVM binder impl for native is rw params. |
22:01 | ||
jnthn | Leaves me with native-lvalue-subroutines.t to fix. | 22:02 | |
FROGGS | jnthn++ | 22:05 | |
jnthn | Ah, think I got that one too :) | 22:10 | |
colomon | :) | ||
colomon is glad someone is being productive today, as he is being spectacularly useless. | 22:11 | ||
22:14
echowuhao joined,
echowuhao left
|
|||
dalek | kudo/native-ref: b57292d | jnthn++ | src/vm/jvm/runtime/org/perl6/rakudo/RakOps.java: Fix native return value decontainerization. |
22:16 | |
22:17
laouji joined
22:18
Celelibi left,
ruoso left
22:21
laouji left
22:23
Celelibi joined
|
|||
bartolin | in case someone is interested: I think I found a reasonable way to write tests for 'multi line input' for the REPL (which works on Windows and Unix platforms): gist.github.com/usev6/f9d0f6ca4e21...nt-1403334 | 22:25 | |
FROGGS | bartolin: ohh nice! | 22:26 | |
bartolin | .oO ( AWS to the rescue ) | 22:28 | |
22:30
aborazmeh joined,
aborazmeh left,
aborazmeh joined
22:40
jack_rabbit left
|
|||
dalek | pan style="color: #395be5">perl6-examples: 1edd74c | paultcochrane++ | rosalind/ (43 files): Add vim coda to rosalind example files |
22:43 | |
pan style="color: #395be5">perl6-examples: 1f15ddd | paultcochrane++ | rosalind/ (7 files): Add use v6 pragma to rosalind examples |
|||
22:47
aborazmeh left
|
|||
dalek | osystem: 85c5876 | FROGGS++ | META.list: remove zavolaj (NativeCall) from ecosystem, it lives in rakudo |
22:49 | |
FROGGS | jnthn: btw, we have now a way to compare module smoke tests across compiler versions... | 22:50 | |
jnthn | FROGGS: ooh :) | 22:51 | |
FROGGS | panda puts not every module test into a file to deduplicate test reports, and this file is created once per compiler version | ||
jnthn | JVM spectest is a tad messy, but looks mostly assignable to me missing patches from nom | 22:52 | |
FROGGS | so, do a smoke run, copy the file to some place, switch rakudo branch, rerun and do a diff | ||
that's how such a file looks like: gist.github.com/FROGGS/2a08ad542c1ebe08e4b2 | 22:53 | ||
(I am doing an ecosystem smoke run right now) | |||
jnthn | Yay, the couple of tests I suspected I'd busted something on r-j are also due to missing patches from nom :) | 22:54 | |
FROGGS | that are the easy ones :o) | ||
jnthn | FROGGS: Ah, cool :) | ||
22:55
lizmat joined
|
|||
FROGGS | gnight | 22:55 | |
jnthn | 'night, FROGGS++ | ||
lizmat | gnight FROGGS | ||
jnthn | So, I'm down to the r-m perl6-bench performance regressions to look at ahead of native-ref being mergeable, it seems :) | 22:56 | |
I'll look at those tomorrow. | |||
masak | 'night, #perl6 | 22:59 | |
dalek | pan style="color: #395be5">perl6-examples: bb55df5 | paultcochrane++ | rosalind/afrq-grondilu.pl: Use default data input for afrq rosalind example |
23:00 | |
lizmat | gnight masak | ||
dalek | pan style="color: #395be5">perl6-examples: b91954a | paultcochrane++ | rosalind/afrq-grondilu.pl: Document afrq example origin and expected output |
23:02 | |
23:04
gfldex left
23:05
virtualsue left,
espadrine left
23:07
Hor|zon joined
23:11
Celelibi left,
sirdancealot joined
23:12
Hor|zon left,
Celelibi joined
23:15
virtualsue joined
|
|||
lizmat | japhb: re .resolve, I'd be very interested in trying that out | 23:19 | |
as a status update re the newio branch: I sort of hit a blocker on how to handle symlinks that point to non-existing dir entries | 23:20 | ||
now that stat() is the default on Moar (as opposed to lstat before) | |||
one of my assumptions was that any dir() entry that I get, by definition exists | 23:21 | ||
this is no longer true if it is a symlink to a non-existing dir entry | |||
in that case -e is false, and -le is trie | |||
*true | |||
now, one of my speedups was that one would not have to check existence on dir() entries | 23:22 | ||
and now one needs to :-( | |||
which sort of kicks the legs out from under the whole idea for speedup that I had | |||
still pondering on how to continue... | |||
23:24
virtualsue left,
bayprogrammer left
|
|||
jnthn | lizmat: Where exactly do we need to check existence on them? | 23:25 | |
lizmat | just before you want to check if something is a regular file or a directory, e.g. | 23:26 | |
m: (a => 0).Bag.perl.say # arguably, this should say (a=>0).Bag | 23:30 | ||
camelia | rakudo-moar 9d4157: OUTPUT«().Bag» | ||
lizmat | m: (a => 0).BagHash.perl.say # this is correct, in think | ||
camelia | rakudo-moar 9d4157: OUTPUT«().BagHash» | ||
lizmat | I'm thinking, that *if* you're creating an immutable structure, the removal of a key is removal of information | 23:31 | |
m: (a => -1).Bag.perl.say # but should this be true for any non-positive value? | 23:33 | ||
camelia | rakudo-moar 9d4157: OUTPUT«Type check failed for return value; expected 'Baggy' but got 'Failure' in any return_error at src/vm/moar/Perl6/Ops.nqp:649 in method new-from-pairs at src/gen/m-CORE.setting:19715 in method Bag at src/gen/m-CORE.setting:2130 in block <unit…» | ||
lizmat | interesting | 23:34 | |
ok, something to look at after some sleep& | |||
jnthn | 'night, lizmat | ||
jnthn also heads off to relax & | |||
23:36
bayprogrammer joined
23:44
diana_olhovik_ left
23:48
spider-mario left
23:50
raiph left
|
|||
dalek | Iish: 21fdbe8 | (Adrian Kreher)++ | / (2 files): [mysql] Connect via socket Add connection option to connect to a server via a (non-default) socket on the filesystem. |
23:50 | |
23:51
ash_gti joined
|