»ö« 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:00
rurban left
00:04
denis_boyun joined
00:21
kurahaupo left
00:28
kaare__ left
|
|||
b2gills | .tell boski: just ask... someone will reply, even when not immediately ( we even have ways of telling you later, like this for example ) | 00:28 | |
yoleaux | b2gills: What kind of a name is "boski:"?! | ||
b2gills | .tell broski: just ask... someone will reply, even when not immediately ( we even have ways of telling you later, like this for example ) | 00:29 | |
yoleaux | b2gills: What kind of a name is "broski:"?! | ||
b2gills | ( first time trying to use it ) | 00:30 | |
.tell broski just ask... someone will reply, even when not immediately ( we even have ways of telling you later, like this for example ) | |||
yoleaux | b2gills: I'll pass your message to broski. | ||
00:38
colomon joined
00:40
denis_boyun left
00:44
kurahaupo joined
01:00
broski joined
|
|||
broski | which vm is better, moar or parrot? | 01:08 | |
yoleaux | 00:30Z <b2gills> broski: just ask... someone will reply, even when not immediately ( we even have ways of telling you later, like this for example ) | ||
01:10
gfldex left
01:11
yeahnoob joined
01:17
kurahaupo left
|
|||
skids | broski: moarvm is currently more performant for perl6 purposes. | 01:18 | |
BenGoldberg | There are still some parts of the spec which parrot does more correctly, though. | 01:19 | |
(IIRC) | |||
01:19
kurahaupo joined
|
|||
colomon | BenGoldberg: that's probably true, but there are also areas of the spec which Moar does more correctly. It's not just speed vs. correctness. | 01:21 | |
broski | ok | 01:27 | |
01:35
Mouq left
01:45
davido_ left
01:46
davido_ joined
01:53
adu joined
01:54
adu left
02:05
kurahaupo left
02:13
broski left
|
|||
skids | r: (1, :f, :g).perl.say; (:f :g).perl.say; (1, :f :g).perl.say | 02:14 | |
camelia | rakudo-parrot 04ce88: OUTPUT«WARNINGS:Useless use of "," in expression "1, :f :g" in sink context (line 1)(1, "f" => Bool::True, "g" => Bool::True)duplicate named argument in call in block <unit> at /tmp/tmpfile:1» | ||
..rakudo-moar 04ce88: OUTPUT«(1, "f" => Bool::True, "g" => Bool::True)("f" => Bool::True, "g" => Bool::True)(1, "f" => Bool::True)» | |||
02:18
adu joined
02:21
Rounin joined
02:23
rmgk_ joined,
rmgk left,
rmgk_ is now known as rmgk
02:24
kurahaupo joined
|
|||
japhb | .botsnack | 02:39 | |
yoleaux | 11 Jan 2015 10:30Z <timotimo> japhb: now the log is filled with lines of Run command exited with exit status 1: install/bin/perl6 --optimize=3 /home/timo/oldhome/timo/perl6/bench/perl6/rc-forest-fire 16 16 inf | ||
:D | |||
japhb | 'inf' ...? | 02:40 | |
japhb wonders WTH that is about | |||
02:45
virtualsue left
|
|||
adu | so if I want to slurpify params | 02:47 | |
*@args or @*args? | 02:48 | ||
ah, *@theRest | 02:49 | ||
I love TFM | |||
expected 'Positional[Any]' but got 'Array' | 02:51 | ||
02:51
araujo left
|
|||
adu | I thought Arrays were positional | 02:51 | |
expected 'Positional[Any]' but got 'List' | 02:52 | ||
02:56
kurahaupo left
|
|||
colomon | m: say Array ~~ Positional | 03:00 | |
camelia | rakudo-moar 04ce88: OUTPUT«True» | ||
colomon | m: say Array ~~ List | 03:01 | |
camelia | rakudo-moar 04ce88: OUTPUT«True» | ||
03:02
kurahaupo joined
|
|||
japhb | adu: Show the broken code. | 03:02 | |
.tell timotimo I cannot recreate the rc-forest-fire problem you are seeing, with either rakudo-moar/nom or rakudo-jvm/nom. | 03:03 | ||
yoleaux | japhb: I'll pass your message to timotimo. | ||
skids | m: say so Array ~~ Positional[Any]; say so Array ~~ Positional; | 03:04 | |
camelia | rakudo-moar 04ce88: OUTPUT«FalseTrue» | ||
adu | japhb: github.com/andydude/p6-c-parser/bl...Op.pm6#L62 | ||
skids | You sure the error isn't when assigning to @.children? | 03:06 | |
adu | skids: I'm trying to make a "simple" AST that is a little more complicated that multiple "has"s | 03:07 | |
03:07
vendethiel left
|
|||
adu | skids: it's a different error now | 03:08 | |
how it says "Cannot look up attributes in a type object" | 03:09 | ||
when I do my $x = CAST::Op.new(CAST::Op::OpKind::predec, 1, 2, 3) | |||
skids | Hrm aren't bracketless class definitions only allowed on first line? | 03:11 | |
03:12
vendethiel joined
|
|||
adu | skids: no, they're only allowed if they are the whole file | 03:12 | |
I think maybe I need a better understanding of roles | 03:20 | ||
03:25
davido_ left
03:26
davido_ joined
|
|||
JimmyZ | adu: maybe ([$operator, *@operands]) ? | 03:26 | |
03:29
cognominal joined,
noganex_ joined
03:32
noganex left
|
|||
adu | JimmyZ: in the definition of new? | 03:35 | |
do I have to call bless? | 03:36 | ||
do I have to call BUILD, BUILDALL, BUILDPLAN somewhere? | |||
skids | Oh, yeah, of course... you should be calling bless as the return value of the block. | 03:38 | |
03:38
IllvilJa left
|
|||
skids | e.g. bless(*,:children(@operators) :op($operator)) | 03:38 | |
03:39
vendethiel left
03:40
IllvilJa joined
|
|||
adu | what does bless do? | 03:41 | |
is Perl6 new() like Python __init__ or __new__? | |||
skids | does all the BUILD stuff I think. I think it's been refactored since I last read that part of the spec. | 03:42 | |
JimmyZ | self.bress(:op($operator), :children(@operands)); | ||
*bless | |||
geekosaur | new calls BUILDALL calls BUILD, which is what you normally define instead of new | 03:43 | |
JimmyZ | adu: try change to above | 03:44 | |
adu | so is BUILD like Python __init__? | ||
skids | Don't you need the "*" in the call to bless to pass other nameds from subclasses? | ||
I don't know any python so... | |||
adu | skids: I don't know, I've never done oop in Perl5 or Perl6, so this is all new to me | ||
skids | As far as I know, overloading new is primarily for changing the signature and preprocessing arguments to the constructor, | 03:45 | |
JimmyZ | adu: github.com/japhb/perl6-bench/blob/...class_add1 #here has a BUILD , it doesn't need BUILD by deafult , but here have because rakudo optimization sucks. | 03:46 | |
adu | so python's default T.__new__() is defined as: self = object.__new__(T); self.__init__(), so any object construction must be done in __new__, and any property assignment usually happens in __init__ | ||
03:46
vendethiel joined
|
|||
JimmyZ | since it's a benchamrk | 03:46 | |
*mark | |||
adu | ah, so BUILD is __init__ and new is __new__ | ||
that makes sense | |||
JimmyZ | BUILD is building attr value. | 03:47 | |
you don't need it normally if rakudo's optimization is good enough. | 03:48 | ||
adu | I'm thinking of just going without BUILD and new and just using the default impls | ||
JimmyZ | yeah | 03:49 | |
skids | No it's more like new is a wrapper around bless which is about like python's __new__ | ||
adu | bcuz I like the whole Op.new(:$op, :@children) | 03:50 | |
I wish you could do that in other languages | |||
JimmyZ | rakudo doesn't have pos args of new, you need declarse it yourself | ||
adu | yeah, but I like the keyword args | ||
because that's the same as Op.new(op => $op, children => @children) | 03:51 | ||
JimmyZ | yes | ||
04:06
kaare__ joined
04:10
vendethiel left
04:13
vendethiel joined
04:24
leont left
04:29
novice666 left
04:32
kaleem joined
04:35
vendethiel left
04:46
vendethiel joined
04:50
Rounin left
04:53
kurahaupo left
04:55
kaleem left
|
|||
tony-o | yea it still segfaults | 05:03 | |
oops | |||
05:09
vendethiel left
05:11
mr-foobar left
05:15
vendethiel joined
05:36
vendethiel left
05:37
dayangkun joined
05:38
vendethiel joined
05:40
BenGoldberg left
06:06
dayangkun left
06:13
[Sno] left
06:15
Rounin joined
|
|||
moritz | \o | 06:21 | |
06:24
bartolin left
06:33
flussence left,
flussence joined
06:49
denis_boyun_ joined
06:53
lsm-desktop left
06:55
Ugator joined
06:56
kaleem joined
|
|||
JimmyZ | morning #perl6 | 07:02 | |
07:04
lsm-desktop joined
07:06
jack_rabbit left,
sirdancealot joined
07:11
Psyche^ joined
07:14
raiph left
|
|||
adu | hi moritz JimmyZ | 07:14 | |
07:15
Patterner left
07:16
yeahnoob left
07:17
FROGGS_ left
07:18
yeahnoob joined,
yeahnoob left
|
|||
sergot | morning o/ | 07:19 | |
07:19
yeahnoob joined,
yeahnoob left,
yeahnoob joined
07:20
yeahnoob left,
yeahnoob joined
07:21
yeahnoob left,
yeahnoob joined,
yeahnoob left
07:22
yeahnoob joined
07:28
jluis joined
07:38
yeahnoob left
07:41
adu left
07:44
andreoss joined
|
|||
andreoss | m: multi foo([]) {"empty"}; my @x = 1..*; say foo(@x); | 07:45 | |
camelia | rakudo-moar 04ce88: OUTPUT«empty» | ||
07:46
[Tux] left
07:47
[Tux] joined,
virtualsue joined
07:48
andreoss left
07:51
donaldh left
07:52
yeahnoob joined
07:53
[Sno] joined
08:00
rurban joined
08:01
FROGGS joined
08:04
rindolf joined
08:07
zakharyas joined
08:08
zhanggong joined,
zhanggong left,
denis_boyun___ joined,
zhanggong joined
08:09
zhanggong left,
zhanggong joined,
yeahnoob left,
denis_boyun_ left,
zhanggong left
08:11
yeahnoob joined
08:12
yeahnoob left,
vike left,
yeahnoob joined
08:13
yeahnoob left,
yeahnoob joined,
yeahnoob left,
anaeem1_ joined
08:14
yeahnoob joined
08:21
[Tux] left
08:23
[Tux] joined
08:24
anaeem1__ joined
08:25
anaeem1_ left
08:31
darutoko joined
08:32
Sqirrel left
08:39
andreoss joined
08:46
Ugator left
08:53
yeahnoob left
09:00
salv0 joined
09:11
rurban left
09:14
abraxxa joined
09:16
denis_boyun___ left
09:18
telex left
09:20
uniejo joined,
telex joined,
pecastro joined
09:24
dakkar joined
09:27
virtualsue left
09:35
rurban joined
09:46
kjs_ joined
09:47
kjs_ left,
dj_goku left
09:50
mvuets joined
09:52
kjs_ joined
09:58
IllvilJa left
10:09
TuxCM left
10:18
TuxCM joined,
cognominal left
|
|||
lizmat | good *, #perl6! | 10:18 | |
JimmyZ | good * | 10:19 | |
jnthn | o/ | 10:20 | |
yoleaux | 11 Jan 2015 17:25Z <lizmat> jnthn: looks like nqp::mkdir on moar doesn't fail if the actual mkdir fails, it does on parrot and jvm | ||
11 Jan 2015 17:46Z <lizmat> jnthn: or perhaps I'm not understanding fail() correctly :-( | |||
JimmyZ | \o | ||
lizmat | JimmyZ jnthn \o | 10:21 | |
10:22
jluis left
10:24
dj_goku joined,
dj_goku left,
dj_goku joined,
anaeem1__ left
10:25
bjz joined
10:32
anaeem1 joined
|
|||
dalek | kudo/newio: 5e000da | lizmat++ | src/core/IO/Socket.pm: First steps of making IO::Socket a class |
10:41 | |
kudo/newio: ccf03bf | lizmat++ | src/core/IO/Socket/INET.pm: Disable IO::Socket::INET during re-imagining |
|||
kudo/newio: dafbcd7 | lizmat++ | src/core/PIO.pm: Add PIO.send/poll |
|||
lizmat | jnthn: in PIO constants such as PF_LOCAL, what does the PF stand for ? | 10:44 | |
moritz | the 'F' stands for 'Family', I think | 10:45 | |
lizmat | ok, so PIO Family | 10:46 | |
jnthn | lizmat: Dunno, but perhaps Protocol Family? | ||
lizmat | ah... ok :-) | ||
jnthn | swoolley.org/man.cgi/7/unix | ||
moritz | C code uses the same constants | ||
jnthn | www.gnu.org/software/libc/manual/ht...rmats.html also | 10:47 | |
dalek | kudo/newio: 70f9ad5 | lizmat++ | src/core/PIO.pm: Create ProtocolFamily/SocketType/ProtocolType enums |
10:55 | |
10:59
sqirrel joined
|
|||
dalek | ast/newio: ae17707 | lizmat++ | S02-types/WHICH.t: Add some more classes |
10:59 | |
masak | good noon, #perl6 | ||
11:01
virtualsue joined
11:10
jluis joined
11:13
andreoss left
11:14
andreoss joined
|
|||
moritz | \o masak | 11:24 | |
11:26
donaldh joined
11:27
uniejo left,
Ugator joined,
uniejo joined
|
|||
timotimo | .tell japhb i assume the perl5 part of perl6-bench is increasing the number of steps for the benchmark to do by 2x until it hits inf and then doesn't want to stop for some reason? | 11:32 | |
yoleaux | 03:03Z <japhb> timotimo: I cannot recreate the rc-forest-fire problem you are seeing, with either rakudo-moar/nom or rakudo-jvm/nom. | ||
timotimo: I'll pass your message to japhb. | |||
11:33
cognominal joined,
sirdancealot left
|
|||
timotimo | .tell perl6 .new() isn't like __init__ or __new__, it's like python's .frob or .blubber or .yoink; also, new calls bless calls BUILDALL calls BUILD unlike what geekosaur said, and skids wrongly wrote bless(*, ...), but the * as first argument is wrong nowadays | 11:37 | |
yoleaux | timotimo: I'll pass your message to perl6. | ||
timotimo | damn | 11:38 | |
.tell adu perl6 .new() isn't like __init__ or __new__, it's like python's .frob or .blubber or .yoink; also, new calls bless calls BUILDALL calls BUILD unlike what geekosaur said, and skids wrongly wrote bless(*, ...), but the * as first argument is wrong nowadays | |||
yoleaux | timotimo: I'll pass your message to adu. | ||
11:39
colomon left
11:43
colomon joined,
uniejo left
|
|||
FROGGS | .frob or .blubber or .yoink ?? | 11:44 | |
moritz | .tell adu see perlgeek.de/blog-en/perl-6/object-c...ation.html and doc.perl6.org/language/classtut#Constructors | ||
yoleaux | moritz: I'll pass your message to adu. | ||
timotimo | FROGGS: well, or any other method name you invent | 11:45 | |
FROGGS | timotimo: but these names are typical conventions? | ||
moritz | no | 11:48 | |
just an indication that it's not special | |||
11:48
rurban left,
uniejo joined
|
|||
timotimo | correct, because __init__ is what gets called - eventually - when you do something like MyClass() | 11:51 | |
11:52
kaleem left
|
|||
timotimo | also, in python you have to explicitly call super's __init__, in perl6 the BUILDALL calls all BUILD subroutines for you | 11:52 | |
dalek | kudo/newio: d4357b4 | lizmat++ | src/core/PIO.pm: Streamline PIO.get/getc a bit |
12:00 | |
timotimo leaves again | |||
12:06
uniejo left
12:13
kaare__ left
12:14
uniejo joined
12:18
diegok left
12:21
cognominal left
12:24
diegok joined
12:37
skids left
|
|||
lizmat | m: say List.end | 12:38 | |
camelia | rakudo-moar 04ce88: OUTPUT«Memory allocation failed; could not allocate 163840 bytes» | ||
lizmat | something wrong there :-) | ||
vendethiel | hahahaha | ||
missing a self:D? | |||
lizmat | yeah, probably, looking at the code now | 12:39 | |
dalek | kudo/nom: 27c2d5a | lizmat++ | src/core/EnumMap.pm: Make EnumMap.Bool/elems 5% faster This therefore also applies to Hash.Bool/elems |
12:41 | |
kudo/nom: 6a3fc31 | lizmat++ | src/core/Any.pm: Fix Any.end/elems |
|||
nwc10 | lizmat: do you have any benchmark numbers yet for how awesome the awesomeness is? | 12:42 | |
lizmat | apart from locally run one-liners, no | 12:43 | |
12:43
andreoss left,
sqirrel left
|
|||
moritz | codegen question | 12:44 | |
for | |||
nqp::p6bool(nqp::defined($!storage) && nqp::elems($!storage)); | |||
does that box the return value from nqp::defined($!storage) into an Int? | |||
(because && wants a Perl 6 value)? | |||
or is it smart enough to avoid that? | 12:45 | ||
FROGGS | is that perl6 code or nqp code? | ||
lizmat | I thought && was smart enough not to box ? | ||
moritz | FROGGS: Perl 6 code | ||
FROGGS | then it should not make sense to p6bool the result of an expression that uses && | 12:46 | |
err, I'm wrong | |||
nvm | |||
moritz | any sequence of boxing + boolification (where the boxing is only used for the boolification) could be optimized | ||
if it boxes right now | |||
lizmat | moritz: indeed | ||
12:47
sqirrel joined
|
|||
moritz | and if it boxes right now, nqp::p6bool(nqp::defined($!storage)) && nqp::p6bool(nqp::elems($!storage)); should be even faster | 12:47 | |
because p6bool doesn't allocate | |||
12:47
sunnavy joined
|
|||
lizmat checks | 12:48 | ||
moritz | (unless we have boxed Ints for 0 and 1 cached, which would probably be a really good idea) | ||
(but also requires some care with 'does' not messing up the boxed thing) | |||
12:50
petercommand left
12:51
petercommand joined
12:52
leont joined
12:55
kaleem joined
|
|||
jnthn | moritz: && compiles into a QAST::Op if node. | 12:58 | |
lizmat | indeed, moritz: your approach is slower | ||
not much (like 2% or so) | |||
jnthn: to verify: in nqp::p6bool(nqp::defined($!storage) && nqp::elems($!storage)); the && will not box, right ? | 13:00 | ||
jnthn | lizmat: Hopefully not. :) | 13:04 | |
lizmat: And if it does then we should improve code-gen so it doesn't | |||
lizmat | how can I check? | 13:05 | |
moritz | agreed | ||
jnthn | You'd have to disassemble the generated bytecode | ||
lizmat is not looking forward to that | |||
13:05
rurban joined
|
|||
lizmat | do we have tools for that ? | 13:05 | |
jnthn | moar --dump | ||
And the .moarvm file | |||
timotimo | lizmat: it may very well be asier to cause spesh to become interested in the function you'd like to see and use the spesh log | 13:06 | |
get it interested by making it hot | |||
lizmat | well, it all seems very interesting, but I think I'll keep it to looking at simple benchmarks for now and see what is faster | 13:07 | |
because in the end, that's what we're after | |||
lizmat tries not to get distracted too much | |||
.oO( and is having a hard time not getting distracted ) |
|||
jnthn | Looks, squirrel! | 13:08 | |
*Look | |||
lizmat | what? where? :-) | ||
donaldh | jnthn: could you give me your thoughs on this gist gist.github.com/donaldh/91a212b38725642131be | 13:09 | |
timotimo | donaldh: what the hell is :feature = 'broken' supposed to be :) | ||
m: say (:feature = "broken").perl | |||
camelia | rakudo-moar 04ce88: OUTPUT«Cannot modify an immutable Pair in block <unit> at /tmp/wDMBTo6AJ3:1» | ||
timotimo | m: say(:feature = "broken").perl | 13:10 | |
camelia | rakudo-moar 04ce88: OUTPUT«Cannot modify an immutable Pair in block <unit> at /tmp/LvmR443s6Y:1» | ||
donaldh | a golfed test case | ||
jnthn | donaldh: First of, really good find. | ||
*off | |||
timotimo | it's kinda weird that that even parses :) | ||
moritz | timotimo: why? colonpairs are not special | ||
jnthn | timotimo: It's just term infix term :) | 13:11 | |
donaldh | jnthn: it took me a while, getting misled by unrelated but obvious looking stuff. | ||
lizmat | std: say (:feature = "broken").perl | ||
camelia | std f9b7f55: OUTPUT«ok 00:00 138m» | ||
moritz | donaldh: ah, it dies before throwing X::NYI | ||
even before calling X::NYI.new | |||
timotimo | inside an argument list, though? | ||
13:11
yakudza joined
|
|||
timotimo | well, i suppose | 13:11 | |
an assignment is a term, too | |||
moritz | argument lists aren't (so) special | ||
jnthn | Right, the point really being that it's named args that are causing the issue. | 13:12 | |
donaldh | oh, ignore the colonpair stuff. | ||
jnthn | I suspect a plain X::NYI.new().throw also doesn't serialize a Match | ||
moritz | donaldh: well, it makes your code equivalent to sub f() { | ||
donaldh | Yeah, it's the fatarrow, but only in certain situations. | ||
moritz | die "something"; | ||
} | |||
lizmat | m: say Any.keys.perl; say Hash.keys.perl # the latter feels wrong in view of the former | ||
camelia | rakudo-moar 04ce88: OUTPUT«().listNil» | ||
moritz | lizmat: agreed | ||
jnthn | donaldh: I don't have a good feel for which is the right fix immediately; I'll think about it (though I slept badly last night and seem to have a cold, so I may not get to anything sensible today :)) | 13:13 | |
donaldh | Sanitizing QAST nodes in the annotations will be problematic because I noticed data structure cycles. | 13:14 | |
I'm happy to implement 1 or 2. It really depends on what the desired semantics of shallow_clone should be. | |||
Oh, and 2 exposes a method from QAST::Node in nqp to add_inlining_info_if_possible in rakudo | 13:15 | ||
13:15
sirdancealot joined
|
|||
jnthn | 2 feels rightest at first thought; annotations are typically used during the Actions, and inlining info is used by the optimizer, and annotations are not meant to have an effect on the compilation process really. | 13:18 | |
dalek | osystem: 6e40b4d | (Marcel Timmerman)++ | META.list: Transfer of two modules Update proposal because of transfer of two modules from bbkr to MARTIMM |
||
osystem: 8f56999 | FROGGS++ | META.list: Merge pull request #38 from MARTIMM/patch-1 Transfer of two modules |
|||
FROGGS | ohh.... semver.org <3 | 13:22 | |
arnsholt installs a Ubuntu 32-bit VM | 13:24 | ||
FROGGS | arnsholt++ | ||
13:25
sqirrel left
|
|||
arnsholt | One nice thing about VMs is that reading from CD is a lot faster when the CD is actually just file IO from an SSD =D | 13:25 | |
nine | I have not installed an OS from optical media in a decade... | 13:26 | |
yoleaux | 10 Jan 2015 15:24Z <ab6tract> nine: yes what? was that in response to a pragma which would choke/complain about overlapping signature constraints at compile time? | ||
moritz | FROGGS: fwiw I've generally given people with pull requests to repos in the 'perl6' org pull a commit bit in the 'perl6' team | 13:29 | |
FROGGS: since you are in the 'owners' team too, you could also do that :-) | |||
FROGGS | ahh, I tend to forget that :P | ||
moritz | no harm done | ||
FROGGS | will do that next time hopefully :o) | ||
lizmat | moritz: one could also argue that Any.keys.perl should be Nil | 13:31 | |
arnsholt | nine: True. It's faster than USB too though =) | ||
moritz | arnsholt: aye | ||
13:32
rurban left
13:33
raiph joined
13:35
kjs_ left
|
|||
masak | m: multi foo([]) { "Empty" }; my @x = 1...*; say foo(@x) # RT #123581 | 13:36 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123581 | ||
camelia | rakudo-moar 6a3fc3: OUTPUT«Empty» | ||
masak | m: sub foo([]) { "Empty" }; my @x = 1...*; say foo(@x) | ||
camelia | rakudo-moar 6a3fc3: OUTPUT«Empty» | ||
masak | m: sub foo([]) { "Empty" }; my @x = 1..*; say foo(@x) | 13:37 | |
camelia | rakudo-moar 6a3fc3: OUTPUT«Empty» | ||
masak | that's... an excellent find. I'm a tiny bit envious :> | ||
(Andrei Osipov)++ | |||
13:38
xfix joined
13:40
mvuets left
|
|||
donaldh | I've had brighter days. What's the bug? | 13:42 | |
13:42
zoosha joined
13:43
berekuk left
|
|||
FROGGS | donaldh: the bug title is: "Infinite lists match [] signature" | 13:45 | |
13:45
kjs_ joined
|
|||
masak | "yours truly" -- but the post isn't signed from what I can see... -- p6weekly.wordpress.com/2015/01/05/...-to-party/ | 13:45 | |
donaldh | ah yes. What should match [ ] ? | ||
masak | donaldh: an empty Positional. | 13:46 | |
list, array, etc | |||
jnthn | m: (1..*).Capture.perl.say | 13:47 | |
camelia | rakudo-moar 6a3fc3: OUTPUT«Capture.new(hash => {"excludes-max" => Bool::False, "excludes-min" => Bool::False, "min" => 1, "max" => Inf})» | ||
jnthn | ah | ||
m: (my @a = 1..*).Capture.perl.say | |||
camelia | rakudo-moar 6a3fc3: OUTPUT«Capture.new()» | ||
jnthn | That's a golf. | ||
masak | o.O | ||
masak adds that to the ticket | |||
jnthn | I think the conservative thing to do is to refuse to coerce an infinite thing to a Capture. | ||
masak | +1 | ||
jnthn | That let's us revisit/liberalize in the future | 13:48 | |
But I don't want to have to deal with it this side of 6.0.0 'cus it goes deeper than it first looks... | |||
lizmat | masak: hmmm.... I expected it to say "liztormato" somewhere automagically | 13:50 | |
masak: it actually does, way at the bottom, next to the date | 13:51 | ||
FROGGS | true | ||
masak | lizmat: you don't need to change anything, but... I notice that 007 didn't make the cut... | ||
lizmat | I'll mention it this week :-) | 13:52 | |
masak | lizmat: I guess it's up to me/us now to make it significant for Perl 6. that's definitely the idea anyway. | ||
colomon | moritz++ | ||
lizmat | masak: tbh, I'm not sure of 007's significance for Perl 6, but I am aware of *your* significance :-) | 13:53 | |
masak | from masak.github.io/007/ : "It has been designed with the purpose of exploring ASTs, macros, the compiler-runtime barrier, and program structure introspection." | 13:54 | |
all of which are essentially part of the macro grant/work. | |||
lizmat | m: set(1, 2) «+» set(3, 4) # why is this supposed to be illegal ? | 13:59 | |
camelia | rakudo-moar 6a3fc3: OUTPUT«Type check failed in binding; expected 'Positional' but got 'Any' in any bind_error at src/vm/moar/Perl6/Ops.nqp:224 in sub hyper at src/gen/m-CORE.setting:20210 in block at src/gen/m-CORE.setting:20060 in block <unit> at /tmp/NUpL8519b3:1…» | ||
lizmat | the error is wrong, but the test has a simple dies_ok() | ||
masak | lizmat: it would seem to me that doing hyper there would imply an ordering, which sets don't have. | 14:00 | |
14:00
pmurias_ joined,
pmurias_ is now known as pmurias
|
|||
lizmat | ah, duh :-) | 14:00 | |
m: ("a" «~« set(<pple bbot rmadillo>).perl.say # should this be a Set as well ? | 14:02 | ||
camelia | rakudo-moar 6a3fc3: OUTPUT«===SORRY!=== Error while compiling /tmp/Mj8RGzhSmtUnable to parse expression in parenthesized expression; couldn't find final ')' at /tmp/Mj8RGzhSmt:1------> rl.say # should this be a Set as well ?⏏<EOL> …» | ||
lizmat | m: ("a" «~« set(<pple bbot rmadillo>)).perl.say # should this be a Set as well ? | ||
camelia | rakudo-moar 6a3fc3: OUTPUT«("pple" => "aTrue", "bbot" => "aTrue", "rmadillo" => "aTrue").hash» | ||
lizmat | woah | ||
moritz | uhm | ||
I thought sets were item-like? | 14:03 | ||
lizmat | yeah, ok, TODO test | ||
moritz | and thus hypers shouldn't enter them | ||
masak | moritz: that bothered me as well. | ||
14:03
Rounin left
|
|||
masak | moritz: but I guess the same argument could be made for [] | 14:03 | |
lizmat | ok, I guess I just opened another can of worms :-( | ||
masak | m: say ("a" <<~<< [<apple bbot rmadillo>]).perl | ||
camelia | rakudo-moar 6a3fc3: OUTPUT«("aapple", "abbot", "armadillo").list» | ||
masak | m: say ("a" <<~<< [<pple bbot rmadillo>]).perl | 14:04 | |
camelia | rakudo-moar 6a3fc3: OUTPUT«("apple", "abbot", "armadillo").list» | ||
masak | moritz: [] is item-like, and yet, the above works. | ||
moritz | ah, right | ||
masak | but it's a bit of a slippery slope, what lizmat wants to make work | 14:05 | |
like `"a" <<~<< $set` has a well-defined semantics | 14:06 | ||
but `("a", "b") <<~<< $set` doesn't | |||
lizmat | I'll keep that for another day | ||
14:13
Ovid joined,
Ovid is now known as CurtisOvidPoe
14:14
xinming left
14:20
xinming joined
|
|||
leont is still looking for a roommate for FOSDEM, anyone else looking for one? | 14:21 | ||
woolfy: Schedule? ;-) | |||
nwc10 | leont: was leonerd? I have no idea | 14:22 | |
woolfy | leont: El_Che and I are working on that right now. | ||
leont | Cool | ||
colomon | moritz++ | 14:30 | |
moritz | colomon++ # fixing author listing on smoke.perl6.org/report | ||
14:43
Gruber joined,
Alina-malina left
|
|||
[Coke] | what order are the modules in on smoke.perl6.org/report ? | 14:43 | |
PerlJam | Um, I have a question about smoke.perl6.org/report ... What does "Tests fail" really mean? I noticed that my little Questhub thingy was showing "Passes all tests" until Jan 11, where it showed as "Tests fail". Which tests are these that are failing as that repo has no tests. | ||
14:44
Alina-malina joined,
adu joined
14:46
nyuszika7h joined
14:47
cognominal joined
14:48
adu left
14:49
haroldwu_ joined,
haroldwu_ left
|
|||
dalek | kudo/nom: 49a0bf5 | lizmat++ | src/core/EnumMap.pm: Remove unneeded "as Str" specification |
14:54 | |
kudo/nom: b55db85 | lizmat++ | src/core/ (11 files): Make .keys/kv/values/pairs/invert multi methods This will also make all of these methods return an empty list on a type object. Should we decide that these methods should return Nil on type objects, this can now be easily achieved by changing the U: candidates in Any.pm |
|||
14:58
Alina-malina left
14:59
spider-mario joined,
Alina-malina joined,
Alina-malina left,
Alina-malina joined
15:03
skids joined
15:05
Sqirrel joined
15:14
telex left
15:16
telex joined
|
|||
[Coke] pings masak w/ github.com/masak/ufo/pull/21 | 15:17 | ||
15:18
uniejo left
|
|||
masak | [Coke]: applied. thanks. | 15:20 | |
15:21
adu joined
15:22
adu left
15:24
kaleem left
|
|||
leont | My code is broken by rakudo update | 15:26 | |
Seems the namespace issue I hit when precompiling is now also affecting non-compiled code. Guess I need to clean up my code. | 15:27 | ||
lizmat | leont: can you gist the error? | ||
leont | xABCould not find symbol '&Proc'xBB, I'm nesting namespaces in ways I apparently shouldn't | 15:28 | |
vendethiel told me that much in Salzburg after looking at it, but I never got around to doing it | 15:31 | ||
Guess I have no choice now | |||
15:31
mephinet left
15:32
mephinet joined
|
|||
lizmat | leont: could be a new bug, so a golfed gist would be appreciated | 15:34 | |
leont | ok, will look at it | ||
15:34
Gruber is now known as Grrrr
|
|||
leont | False alarm, was working on an unclean checkout apparently. Sorry for the noise. | 15:37 | |
lizmat | *phew* :-) | 15:38 | |
vendethiel doesn't remember :P | 15:39 | ||
dalek | kudo/nom: af6200a | lizmat++ | src/core/ (10 files): Make all .at_key multi method with signature |
15:40 | |
leont | Async IO still seems the same issues it had 2 months ago though | ||
Should look at openpipe, but I don't see it documented anywhere | |||
15:42
andreoss joined
|
|||
leont | Getting the impression it's a nqp-only thing | 15:42 | |
15:42
sqirrel_ joined
|
|||
andreoss | m: my @x; @x[0] = 1; say @x[0] == @x[0][0]; | 15:43 | |
camelia | rakudo-moar b55db8: OUTPUT«True» | ||
andreoss | why? | ||
FROGGS | m: say 1 == 1[0] | ||
camelia | rakudo-moar b55db8: OUTPUT«True» | ||
leont | Guess I'll have to do with qx and friendsx85 | ||
[Coke] will be near detroit a few days this month if anyone is near there. | 15:44 | ||
andreoss | m: my @x; @x[0][0][0] = 3; say @x[0][0][0] == @x[0]; | ||
camelia | rakudo-moar b55db8: OUTPUT«False» | ||
geekosaur | akron is only conceptually near detroit >.> | ||
andreoss | m: my @x; @x[0] = 3; say @x[0][0][0] == @x[0]; | ||
camelia | rakudo-moar b55db8: OUTPUT«True» | ||
15:48
uniejo joined
|
|||
FROGGS | [0] on an object is always itself, unless it implements [...] differently... | 15:53 | |
lizmat | fwiw, I can see andreoss's point | ||
FROGGS | m: say 1.list == 1 # see also | ||
camelia | rakudo-moar b55db8: OUTPUT«True» | ||
lizmat | m: my $a; $a[0] = 3; say $a | 15:54 | |
camelia | rakudo-moar b55db8: OUTPUT«3» | ||
FROGGS | m: say 42.elems # also | ||
camelia | rakudo-moar b55db8: OUTPUT«1» | ||
andreoss | omg. why such thing was done? | 15:55 | |
vendethiel | you need $a == $a[0] for autovivification | ||
andreoss | who needs indexing on scalars? | ||
vendethiel | it's so that you can treat any scalar as a list | ||
FROGGS | the three shown weirdnesses ([0], .list and .elems) are there to make it easy to iterate recursively of lists that contain items somewhere deeper | ||
so you can always call .list, and don't have to check if it actually is a list when iterating over it | 15:56 | ||
osfameron | k | 16:00 | |
bah, mischan | |||
ugexe | m: my @x; @x[0][0][0] = 3; say @x.perl; my @y; @y[0] = 3; say @y.perl | ||
camelia | rakudo-moar b55db8: OUTPUT«Array.new([[3]])Array.new(3)» | ||
16:02
[Sno] left,
petercommand left,
anaeem1 left
16:03
petercommand joined,
petercommand left,
petercommand joined
16:04
kaleem joined
|
|||
andreoss | m: sub foo(\n,\m) {return if (m <= 0) && (n >= 0);} | 16:08 | |
camelia | rakudo-moar b55db8: OUTPUT«===SORRY!===Unrecognized regex metacharacter = (must be quoted to match literally)at /tmp/ytTvy0wfmf:1------> sub foo(\n,\m) {return if (m <⏏= 0) && (n >= 0);}Unrecognized regex metacharacter (must be qu…» | ||
16:08
molaf joined
|
|||
andreoss | m: sub foo(\n,\z) {return if (z <= 0) && (n >= 0);} | 16:08 | |
camelia | ( no output ) | ||
16:10
andreoss left
16:11
jluis left
16:12
anaeem1 joined
|
|||
dalek | kudo/nom: e320eb4 | lizmat++ | src/core/ (7 files): Make .exists_key a multi and some opts |
16:12 | |
16:13
jluis joined
16:16
uniejo left
|
|||
leont | My code segfaults moar when I precompile -_- | 16:16 | |
16:16
mr-foobar joined
|
|||
colomon is pretty much always near Detroit in the #perl6 sense, though in practice it's 2 hours drive away in the opposite direction as Akron. | 16:16 | ||
lizmat | leont: are you precompiling with CompUnit.new(..).precomp ? | 16:18 | |
leont | Probably not, I'm doing something I copied from panda a few months ago | 16:19 | |
E.g. xABperl6 -Ilib --target=mbc --output=lib/TAP/Entry.pm6.moarvm lib/TAP/Entry.pm6xBB | |||
lizmat | could you try: | 16:20 | |
perl6 -Ilib -e 'CompUnit.new('lib/TAP/Entry.pm6').precomp' | |||
perl6 -Ilib -e 'CompUnit.new("lib/TAP/Entry.pm6").precomp' | |||
16:21
gfldex joined
|
|||
leont | Same result | 16:22 | |
lizmat | is it on github? | 16:23 | |
leont | yes, github.com/Leont/tap-harness6 | 16:24 | |
16:25
rurban joined
|
|||
lizmat | leont: compiles with me on OS X without problem :-( | 16:26 | |
leont | It compiles ok here, but it doesn't run (I was ambiguous before) | 16:28 | |
lizmat | ok, do you have a one liner that I can run myself? | ||
japhb | .botsnack | 16:30 | |
yoleaux | 11:32Z <timotimo> japhb: i assume the perl5 part of perl6-bench is increasing the number of steps for the benchmark to do by 2x until it hits inf and then doesn't want to stop for some reason? | ||
:D | |||
leont | perl6 -Iblib/lib bin/prove6 t/generator.t | ||
(assuming precompiled libs are in blib/lib) | 16:31 | ||
japhb | timotimo: The problem is that, well ... that shouldn't happen with any test that does real work. Which indicates the test itself is failing, but somehow in a way that does not trigger the stress-test cutoff (in which it notices a test always failing at a given SCALE and stops trying). | ||
16:33
kaleem left
|
|||
leont | t/{source-file,string}.t also segfault, t/generator{,-more}.t don't. Haven't figured out yet why. | 16:33 | |
japhb | Ah, I see the issue. Two brainos. | 16:35 | |
lizmat | leont: trying to compile Harness gives me "No such method 'resolve' for invocant of type 'Parameter'" | ||
investigating | 16:36 | ||
hmmm...seems Result needs to be compiled first, so this was an LTA error | 16:37 | ||
dalek | rl6-bench: 7dbbb69 | (Geoffrey Broadwell)++ | timeall: No point in having max_failures >= runs; it would never trigger. |
16:40 | |
japhb | .tell timotimo Try 7dbbb69 . :-) | ||
yoleaux | japhb: I'll pass your message to timotimo. | ||
lizmat | now getting No STable at index 10 | ||
lizmat hopes jnthn will be able to make sense of this | 16:41 | ||
16:43
mvuets joined
16:46
zakharyas left
16:47
FROGGS left
|
|||
lizmat | m: class A { multi method a(int $a) { say "int" }; multi method a($a) { say "other" } }; A.new.a(1) # why is this dispatching to Any ??? | 16:47 | |
camelia | rakudo-moar af6200: OUTPUT«other» | ||
arnsholt | m: 1.WHAT.say | 16:48 | |
camelia | rakudo-moar af6200: OUTPUT«(Int)» | ||
lizmat | m: say int.^mro # but but | ||
camelia | rakudo-moar af6200: OUTPUT«(int) (Int) (Cool) (Any) (Mu)» | ||
arnsholt | IIRC int extends int, so that's why | ||
lizmat | ah, ok | 16:49 | |
lizmat got it topsy tury again | |||
16:49
donaldh left
|
|||
arnsholt | Yeah, this is the kind of stuff that's easy to get askew when it's so obvious what should happen | 16:49 | |
tony-o | m: say 1 ~~ int | 16:51 | |
camelia | rakudo-moar af6200: OUTPUT«False» | ||
lizmat | apparently, there is a whole set of candidates in array_slice that will never get called | ||
because they have "int" in the signature | |||
16:53
pmurias left
16:54
gcole joined
|
|||
japhb | lizmat: That doesn't mean you can't call with int. Checking ... | 16:54 | |
16:55
kaleem joined
|
|||
japhb | m: multi foo(Int $i) { say "Int" }; multi foo(int $i) { say "int" }; my int $a = 1; foo($a); | 16:56 | |
camelia | rakudo-moar af6200: OUTPUT«int» | ||
japhb | There you go. | ||
lizmat | m: multi foo(Int $i) { say "Int" }; multi foo(int $i) { say "int" }; my int $a = 1; foo(1); | ||
camelia | rakudo-moar af6200: OUTPUT«Int» | ||
lizmat | feels to me that should dispatch to "int" | 16:57 | |
japhb | The fact that a constant integer is always interpreted as Int and not int is a different issue, but yeah, seems like you'd want the (presumably) optimized variant. | ||
lizmat | m: multi foo(Int $i) { say "Int" }; multi foo($i) { say "int" }; my int $a = 1; foo($a); | ||
camelia | rakudo-moar af6200: OUTPUT«Int» | ||
lizmat | m: multi foo($i) { say "Int" }; multi foo(int $i) { say "int" }; my int $a = 1; foo($a); | ||
camelia | rakudo-moar af6200: OUTPUT«int» | ||
lizmat | hmmm.... | 16:58 | |
arnsholt | That'd require all kinds of shenanigans in the compiler though | ||
How do you know if a 1 is int or Int? | |||
japhb | arnsholt: static optimization | ||
lizmat | well, I sorta expected that to optimize | ||
yes | |||
jnthn | Note we have to be REALLY careful about literals dispatching to native candidates | 16:59 | |
lizmat | for integers as well ? | ||
arnsholt | Oh, goody. I was about to ask you for a second opinion, jnthn =) | ||
jnthn | integer literals, yes | 17:00 | |
japhb | m: multi foo(Int $i) { say "Int" }; multi foo(int $i) { say "int" }; foo(my int $ = 1); | ||
camelia | rakudo-moar af6200: OUTPUT«int» | 17:01 | |
japhb | ^^ workaround | ||
Kinda hokey though | |||
jnthn | The rule basically is that you should have at least one parameter declared as a native. | ||
japhb: In real code you're probably not doing it with literals :P | |||
We had bugs in the past involving the optimzier too eagerly picking native int candidates, and then getting data loss when Int woulda got the right answer. | 17:02 | ||
japhb | When you say "at least one parameter declared as native", I'm not sure what you mean (because I'm not sure if 1. you meant "argument", or 2. I'm horribly confused) | 17:03 | |
lizmat | but the upshot of this is, that @a[1] is *not* taking the "int" candidate in array_slice | ||
jnthn | japhb: In src/Perl6/Optimizer.pm, search for allomorph | ||
lizmat | so I'm wondering whether it would make sense to create separate Int candidates, or make the current int -> Int candidates | 17:04 | |
jnthn | And read the code around that area. It's not that much, but it's a more precise description than I'm likely to come up with today :) | ||
leont | lizmat: yeah, in my Makefile I have them ordered | ||
jnthn | lizmat: Well, the typical Perl 6 user will likely not be using native types, to the degree that helps... | 17:05 | |
And if they are, they'll probably be using native arrays in with them. | |||
17:06
[Sno] joined,
mvuets left
|
|||
skids | .oO(I know I'm not typical but 95% of what I want to do involves interfacing with native types, mostly packet fields) |
17:07 | |
lizmat | m: my @a; @a["foo"] | ||
camelia | rakudo-moar af6200: OUTPUT«Cannot call 'Real'; none of these signatures match::(Mu:U \v: *%_) in method Real at src/gen/m-CORE.setting:4152 in sub infix:<<> at src/gen/m-CORE.setting:4663 in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:2768 in block <unit> at…» | ||
lizmat | m: my @a; @a["foo".Int] # better error | ||
camelia | rakudo-moar af6200: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏foo' (indicated by ⏏) in method Int at src/gen/m-CORE.setting:13937 in method Int at src/gen/m-CORE.setting:6229 in block <unit> at /tmp/vBuhFTR6JS:1…» | ||
japhb | I wonder if we should s/indicated by/starting at/ to increase the awesome | 17:09 | |
jnthn: If I'm reading that code right, you can only dispatch a literal integer to an int multi if it only has one argument, or if it has two and one of them is typed as int. No more than two parameters can usefully be used for a native-typed variant. | 17:11 | ||
jnthn | japhb: Sounds like it may want generalizing in the future, but yeah, that would be good enough for all of the various native int built-in operators. | 17:15 | |
jdv79 | ugexe: around? | 17:21 | |
ugexe | yeah | ||
jdv79 | what "uri commit" are you refering to in github.com/sergot/http-useragent/issues/38? | 17:22 | |
ugexe | 'quickfix: use URI;' | 17:23 | |
jdv79 | thanks | ||
gtodd | skids: that seems fairly typically atypical | 17:28 | |
++ packets and internetty thingies | 17:29 | ||
17:30
ingy joined
|
|||
ugexe | i get those 'no such method resolve' errors when i precompile modules out of order. for whatever reason you can often precompile a module before precompiling its dependency (but not always) | 17:31 | |
jnthn | It's meant to explicitly disallow it :/ | ||
17:32
sqirrel_ left
17:33
kaleem left
17:35
virtualsue left
17:37
kaare__ joined
17:40
rmgk is now known as Guest40212,
rmgk_ joined,
Guest40212 left,
rmgk_ is now known as rmgk
|
|||
CurtisOvidPoe | Is there a declarative way to say “this object attribute is required”, or must I write a BUILD submethod? | 17:41 | |
TimToady | has $.foo = !!! '$.foo is required'; | 17:42 | |
or die | |||
has $.foo = die '$.foo is required'; | |||
CurtisOvidPoe | Thank you! | ||
TimToady | someone might have attempted a trait to add that | 17:43 | |
arnsholt | Oh, neat! | ||
Didn't know !!! took an argument | |||
TimToady | or we'll probably get some sugar with macros eventually | ||
it's not like it saves keystrokes over 'die' | |||
but perhaps it reads better | 17:44 | ||
being more "stubby" | |||
jnthn is sure he's written that trait at least twice to show folks how to do it... | |||
TimToady | obviously you didn't do it right the first time... :P | 17:45 | |
lizmat | well, if people ask for it so often, maybe it needs to be in core ? | ||
17:45
kjs_ left
|
|||
TimToady | it's kind of on the edge | 17:45 | |
so probably worth a 'use' | 17:46 | ||
17:47
kjs__ left
|
|||
jnthn | It's not like there's one obvious way to do it either, I guess... | 17:47 | |
lizmat | well, that goes for "is cached" as well, and we put that in code | 17:48 | |
*core | |||
TimToady | m: class Foo { has $.foo is rw = ... '$.foo is required' }; my $f = Foo.new; $f.foo = 42; say $f.foo | 17:49 | |
camelia | rakudo-moar e320eb: OUTPUT«$.foo is required in method <anon> at src/gen/m-CORE.setting:13945 in any find_method_fallback at src/gen/m-Metamodel.nqp:2737 in any find_method at src/gen/m-Metamodel.nqp:988 in block <unit> at /tmp/qFwAMd2M6u:1» | ||
TimToady | maybe lazily-loaded traits? | ||
if most programs won't use a trait, maybe loading the bodies can be deferred, just leave the name there as an autoload stub | 17:50 | ||
dalek | p/parrot-rpa: f6d965a | rurban++ | / (7 files): Replace unneeded QRPA with ResizablePMCArray |
||
nqp/parrot-rpa: 796c3be | rurban++ | tools/build/Makefile-Parrot.in: | |||
nqp/parrot-rpa: Makefile-Parrot: simplify ops2c rule, no chdir needed | |||
17:50
dalek left
17:51
dalek joined,
ChanServ sets mode: +v dalek
|
|||
TimToady remembers making p5 rather faster by putting slow stuff out into utf8_heavy | 17:51 | ||
arnsholt | Is nqp/Configure.pl's --with-moar option somehow not working? | 17:52 | |
TimToady | another consideration is that traits are mostly used at compile time, and could probably be thrown away instead of serialized, if any run-time use would just reload | ||
so autoloading traits might debloat both setting and precomps | 17:54 | ||
17:56
gcole left
|
|||
vendethiel | autoloading, as in "you use X::Y::Z, let me look in @*INC for them"? | 17:56 | |
dalek | kudo/nom: 25956c3 | lizmat++ | src/core/array_slice.pm: @a[1] uses Int candidate, @a["foo"] better error |
17:57 | |
TimToady | vendethiel: more like, I already know which one I *would* pull in, if asked for | ||
one of those spots where we try to separate identity from operational defs | 17:58 | ||
any such trait coming from the standard library should have a fixed identity already | |||
and @*INC should have very little to do with it | 17:59 | ||
@*INC is really supposed to be only for developers, not for users | |||
vendethiel | right, implementation detail | ||
TimToady realizes he's fighting a great deal of culture here | 18:00 | ||
well, except insofar as it's the *wrong* implementation :P | |||
lizmat | TimToady: could you elaborate on that? | ||
TimToady | if it doesn't nail down the identity, it's wrong | ||
that's what S11 is mostly trying to say | 18:01 | ||
vendethiel | lizmat++ # weekly | ||
lizmat | vendethiel: thanks for the nudge :-) | ||
TimToady | if the *user* can change the identity of things in the standard libarary, you have no security | ||
and for some reason people are worrying a bit more about security these days | 18:02 | ||
so if PERL6LIB can change which standard library you're loading, you have a lovely 0-day exploit | 18:03 | ||
this is why I keep harping about identity and immutability in the standard library | 18:06 | ||
geekosaur | only if yu can inappropriately inject envars, which is itself a lovely 0day | ||
if I am at a command line, it's a faster version of me downloading and installing my own perl6 | |||
TimToady | well, root priviledge escalation, for setuid stuff | 18:07 | |
geekosaur | your standard library does not execute with elevated privileges, after all | ||
true, root wants to scrub envars... but PERL6LIB is kinda the least of what I'd worry about there | |||
TimToady | but more to the point, the standard library is kind of part of the language definition, and allowing it to be mutable is accidental genericity at the top of your Perl 6 program, which is verbotten | 18:08 | |
you can't maintain a language if the user's are running a different language than you think they are | |||
s/"'"// | 18:09 | ||
er, :2nd | |||
18:09
go|dfish joined
|
|||
TimToady | same reason we've always rejected .perlrc files from the very beginning of the development of Perl | 18:10 | |
vendethiel | perlrc as in "perl config"? | ||
TimToady | yeah | ||
vendethiel | what would that configure, though, even if it existed? | 18:11 | |
TimToady | anything an explicit 'use' could | ||
vendethiel | stuff like old $) $] variables? | ||
alright. | |||
huf | isnt there some .pl file you can drop somewhere in @INC? | ||
TimToady | but implicitly | ||
huf | one that can load whatever it wants | ||
TimToady | if you say "use MyStupidModule;" then you've declared that you want your brain to melt and run out your nose, and that's fine because it's explicitly declared | 18:12 | |
vendethiel | i'm not sure why you consider taht that an exploit | ||
TimToady | writing in a different language than you think you are means you can have breakage of invariants you thought you could rely on for security | 18:13 | |
18:14
kjs_ joined
|
|||
TimToady | maybe it's not an exploit without a little help, but there are lot of folks out there who are willing to help with that... :/ | 18:14 | |
vendethiel | alright. | 18:15 | |
18:15
mvuets joined
|
|||
lizmat | huf: you can create your own CompUnitRepo object and put that in @*INC | 18:16 | |
TimToady | it's the moral equivalent of persuading someone to put "use TrustMe;" at the front of their script without checking it out | ||
18:16
Sqirrel left
18:17
dakkar left
18:20
jluis_ joined
18:21
Sqirrel joined
18:25
adu joined
18:33
leont left,
anaeem1 left
|
|||
arnsholt crosses fingers | 18:38 | ||
I wonder if Rakudo/Moar will build in a VM with a gig of memory | |||
jdv79 | i did it with 1.5 last week | 18:39 | |
arnsholt | Ah, cool. Might work then | 18:40 | |
And it's 32-bit, so pointers are a bit smaller | |||
dalek | kudo-star-daily: a8a8795 | coke++ | log/ (10 files): today (automated commit) |
||
kudo-star-daily: ae543c8 | coke++ | log/ (9 files): today (automated commit) |
|||
rl6-roast-data: 06b2c7a | coke++ | / (5 files): today (automated commit) |
|||
rl6-roast-data: 4b4be1d | coke++ | / (5 files): today (automated commit) |
|||
18:44
bsk176 joined
|
|||
jnthn | arnsholt: Actually, pointers are 32 bits smaller... :P | 18:44 | |
[Coke] | Testing modules/Grammar-Profiler-Simple with /home/coke/sandbox/rakudo-star-daily/star-jvm/rakudo-star-daily/install/bin/perl6-j... | 18:46 | |
java.lang.StringIndexOutOfBoundsException: String index out of range: -3 | |||
18:46
cognominal left
|
|||
[Coke] | looks like lots oof jvm module failures today. | 18:47 | |
*of | |||
(on R*) | |||
moritz | [Coke]: I'd guess this is somebody trying to Match.to from a failed match object for string indexing | ||
18:47
zakharyas joined
18:48
davido_ left
|
|||
[Coke] | why woudl it fail only on JVM & not moar, then? | 18:48 | |
18:48
davido_ joined
|
|||
moritz | no idea | 18:48 | |
TimToady | P6 should never see a failed Match object, since Nil or () is supposed to be returned for match failure | 18:50 | |
moritz | oh right | ||
things changed | |||
[Coke] | these modules have jvm-only failures: Grammar-Profiler-Simple, uri, perl6-lwp-simple, json, Bailador, Template-Mojo | 18:51 | |
18:52
berekuk joined
18:53
anaeem1_ joined
|
|||
nwc10 | arnsholt: of course it will. Did you mean "a gig and no swap" ? :-) | 18:53 | |
TimToady | perhaps "before the heat death of the universe" was implied | 18:54 | |
nwc10 | or even "before Perl 6 is released" | 18:55 | |
TimToady | a slightly lower bar | ||
nwc10 | (which will be much sooner. I hope. In that, I'm not assuming that the heat death is any time soon) | ||
:-) | |||
TimToady | or higher, depending on how you measure | 18:56 | |
nwc10 | Last time I tried, the Raspberry Pi finished within a bounded amount of time | ||
(I forget if it was 8 hours or 24.) | |||
TimToady | "many" | ||
nwc10 | but not so many that the spec moved. | 18:57 | |
TimToady | either Galileo or Einstein might have opinions on that | 18:58 | |
G wrt movement, and E wrt simultaneity... | 18:59 | ||
[Coke] tenses. | |||
TimToady | I'm sure someone has a physick for that | ||
gtodd | Economic Policy Wonks say: with the pace of innovation accelerating .... | ||
" chances are that by 2016 raspberry pi key fobs with perl6 preinstalled will be on amazon ..." | 19:00 | ||
TimToady | and on E-Bay a couple days later | ||
gtodd | hehe | ||
jercos | AM33x isn't really destined for keyfob use imo... neat concept though. | 19:03 | |
19:08
anaeem1_ left
|
|||
gtodd | that never stopped an Economic Policy Wonk :) | 19:09 | |
19:10
virtualsue joined,
FROGGS joined,
anaeem1_ joined
|
|||
jercos | then again, they might put the raspi name on a different device too... | 19:11 | |
just look at all the random chips are are "arduino" now :) | |||
19:13
gcole joined
|
|||
arnsholt | nwc10: To be honest, I haven't a clue if it has swap or not | 19:13 | |
I didn't look to closely, just installed a plain Ubuntu server in a Virtualbox =) | |||
Anyways, it built and passed make test | 19:14 | ||
jdv79 | impressive | 19:15 | |
arnsholt | (Incidentally, that use of "build" is likely idiosyncratic to developer communities and weird to others) | ||
lizmat has started on the p6w, but is going to have dinner first | 19:16 | ||
19:17
araujo joined,
araujo left,
araujo joined
19:18
bsk176 left
19:19
pecastro left
19:25
zakharyas left
19:29
sirdancealot left
|
|||
moritz | what's p6w? | 19:29 | |
PerlJam | perl 6 weekly | 19:30 | |
hobbs | p6weekly.wordpress.com/ | ||
colomon has been forgetting to read that... | 19:35 | ||
timotimo | colomon: i haven't posted for a few weeks now :) | 19:40 | |
yoleaux | 16:40Z <japhb> timotimo: Try 7dbbb69 . :-) | ||
timotimo | lizmat was kind enough to hop in while i'm distracted with life stuff | 19:41 | |
19:42
rindolf left
|
|||
moritz | is there a semantic difference between sub f(Int) { } and sub f(Int $) { } ? | 19:42 | |
(imagine a non-empty body, if necessary) | |||
(and maybe with another type constraint) | 19:43 | ||
19:43
kill joined,
kill is now known as amkrankruleuen,
sqirrel_ joined,
amkrankruleuen left,
amkrankruleuen joined
|
|||
moritz | I'm reviewing github.com/rakudo/rakudo/pull/302 and try to find out whether it makes sense | 19:44 | |
m: class A { method x(*@a) { say 1 for @a } }; class B is A { method x(Any) { nextsame } }; B.x((42, 23)) | 19:45 | ||
camelia | rakudo-moar 25956c: OUTPUT«11» | ||
moritz | m: class A { method x(*@a) { say 1 for @a } }; class B is A { method x(Any $) { nextsame } }; B.x((42, 23)) | ||
camelia | rakudo-moar 25956c: OUTPUT«11» | ||
psch | m: sub foo ($) { }; &foo.signature.say; sub bar(:$) { }; &bar.signature.say # moritz | 19:46 | |
camelia | rakudo-moar 25956c: OUTPUT«:(Any):(Any :($))» | ||
psch | 302 removes that inconsistency | ||
*PR | |||
also hi #perl6 \o | |||
moritz | m: sub f(:($)) { }; say &f.signature.perl | 19:48 | |
camelia | rakudo-moar 25956c: OUTPUT«:(Any :($) (Any))» | ||
19:49
kjs_ left
|
|||
moritz didn't even know :($) was allowed | 19:49 | ||
19:49
dylanwh joined
|
|||
colomon | "<=> on lists should distribute to elements" WAT?!?!!! | 19:50 | |
moritz | colomon: that's basically lexicograph sorting | ||
erm, ordering | |||
($a, $b, $c) <=> ($d, $e, $f) becomes ($a <=> $d) || ($b <=> $d) || ($c <=> $f) | |||
colomon | sure | ||
but doesn't doing that violate standard p6 procedure on operators very badly? | 19:51 | ||
moritz | you mean because <=> should force numeric context? | ||
colomon | yes | ||
moritz | hm, good point | ||
colomon | was infix:<leg> also changed? | 19:52 | |
moritz | psch: your example doesn't seem to be changed by the pull request | ||
psch: I merged it locally, and I still get :(Any $) \n :(Any :($)) \n | 19:53 | ||
psch | moritz: recheck with camelia, currently the anon positional just gets ":(Any)" | ||
moritz | oh | 19:54 | |
hm | |||
I'm not sure it's a win though | |||
the point of anonymous positional parameters is that the names don't matter | |||
but I guess it doesn't hurt either | |||
19:55
geekosaur joined
|
|||
moritz | m: sub f(@) { }; say &f.signature.perl | 19:55 | |
camelia | rakudo-moar 25956c: OUTPUT«:(@)» | ||
dalek | kudo/nom: 1c097d4 | peschwa++ | src/core/Parameter.pm: Return bare $-sigil for anonymous parameters. Parameter.perl previously didn't return a $-sigil for anonymous positional parameters without post-constraints. This patch fixes that. |
||
kudo/nom: 107a5c2 | moritz++ | src/core/Parameter.pm: Merge branch 'more-param-perl' of github.com:peschwa/rakudo into nom |
|||
moritz | psch++ | ||
psch | the anon array was gonna be my next example. i agree that names don't matter but leaving out the sigil seems weird if it's only the scalar case | 19:56 | |
and leaving them out for all is asking for confusion i guess | |||
m: sub f($ where * > 1) { }; &f.signature.say | |||
camelia | rakudo-moar 25956c: OUTPUT«:(Any $ where { ... })» | ||
psch | that's another inconsistency, with post-constraint the $ is back again | ||
...but i guess the points been made :) | 19:57 | ||
moritz++ | |||
moritz | timotimo: you have several open rakudo pull requests | 19:58 | |
timotimo: what's up with them? do they need discussion? | |||
timotimo: if not, you can merge or close yourself :-) | |||
19:59
kjs_ joined
|
|||
timotimo | oh, i do? | 20:01 | |
how many years old? :) | |||
moritz | timotimo: 1.5 | 20:02 | |
20:04
woolfy left
20:08
woolfy joined
|
|||
timotimo | threw out two | 20:08 | |
that makes it a bit better | |||
[Coke] gets a sql error on a 100 line query with no line number. arglebargle. | 20:10 | ||
(sorry, 250 line) | 20:11 | ||
timotimo | wow | ||
20:12
silug left
|
|||
masak has been happily writing Perl 6/DBIish/sqlite3 for the past few days | 20:12 | ||
jnthn | urgh | ||
20:12
silug joined
|
|||
arnsholt | masak++ # Actual Perl 6 code! | 20:13 | |
20:13
bjz left
|
|||
masak | I expect to involve HTML output before long. | 20:13 | |
hoping to blog about it, too. | |||
arnsholt | Even more awesomer! | 20:15 | |
masak | arnsholt: did you see the timings I posted yesterday? gist.github.com/masak/0714a0d412f2ab4e5f12 -- that was fun. | ||
got the script down from 38k requests and 48 minutes to 78 requests and 3.5 minutes. | 20:16 | ||
jnthn | m: class class {}; say class.new.perl | 20:17 | |
camelia | rakudo-moar 25956c: OUTPUT«===SORRY!=== Error while compiling /tmp/11nWiHJu_BUnable to parse class definitionat /tmp/11nWiHJu_B:1------> class class {}; say class⏏.new.perl expecting any of: generic role» | ||
jnthn | std: class class {}; say class.new.perl | ||
camelia | std f9b7f55: OUTPUT«ok 00:01 137m» | ||
arnsholt | masak: With request being DB queries? | ||
masak | arnsholt: yes, right. insert statements, in this case. | ||
arnsholt | Neat! | ||
This november++ you're hacking on, or something else? | 20:18 | ||
20:18
sqirrel_ left
|
|||
masak | something else -- but I bet I'll be able to use this knowledge a bit for November, too. | 20:18 | |
20:18
bjz joined
|
|||
masak | or November++, or whatever. December. | 20:18 | |
arnsholt | I almost called it december, but decided not to in case it was too internal to my own logic =D | 20:19 | |
20:19
darutoko left
|
|||
masak | no, the thought has occurred to me. | 20:19 | |
arnsholt | Very cool at any rate! All of the upboats for large(r?)-scale Perl 6 things | ||
20:23
fwilson left,
clkao left
20:24
mephinet left,
kjs_ left,
flussence left
20:25
fwilson joined,
woolfy left,
[Tux] left,
lsm-desktop left,
bcode left,
yogan left
20:26
dylanwh left,
integral left,
kaare__ left
20:27
bcode joined
|
|||
jnthn | TimToady: In design.perl6.org/S12.html#Invocants it says: | 20:28 | |
Note that the self function is not context sensitive and thus always returns the current object as a single item even in list context. | |||
However, we've more generally in the language concluded that sigilless things do *not* tend to imply any additional context. | |||
20:28
clkao joined
|
|||
jnthn | Thus why |$c became |c | 20:29 | |
moritz | also 'self' is not a function | ||
jnthn | So this bit of spec feels rather fossil-ish to me. Not to mention I've no idea how to implement it. | ||
moritz: Very true also. It's just a normal lexical | |||
20:29
yogan joined
|
|||
jnthn | Which makes it even stranger. :) | 20:29 | |
moritz | let's just say it's a term | ||
jnthn | *nod* | ||
moritz | which is implementation-independent | 20:30 | |
20:30
lsm-desktop joined
|
|||
jnthn | Right. | 20:30 | |
moritz | so, what would be a saner way? | ||
self is just the invocant, without any additional (de)containerization | 20:31 | ||
20:31
flussence joined
|
|||
jnthn | Something like that | 20:31 | |
Or | |||
"The C<self> term refers to the invocant as it was received, without any item or list context being enforced on it." | |||
20:31
dylanwh joined
|
|||
moritz | +1 | 20:31 | |
TimToady | I'm fine with just assuming it was declared \self | ||
20:32
[Tux] joined
|
|||
masak | that sounds very sane. | 20:32 | |
jnthn | TimToady: That's also a nice way to define it. And maps pretty much exactly to how it's implemented. | ||
OK, I'll tweak S12 and then rt.perl.org/Ticket/Display.html?id=111914 can go away | |||
20:33
woolfy joined
|
|||
moritz | ++jnthn | 20:33 | |
20:33
integral joined,
integral left,
integral joined
20:34
mephinet joined
|
|||
timotimo | does our http client lib do redirections properly yet? | 20:35 | |
20:36
vike joined,
kjs_ joined
20:39
molaf left
20:40
bjz left
|
|||
dalek | ecs: 8284cda | jnthn++ | S12-objects.pod: Correct spec of context aspects of the self term. |
20:40 | |
20:40
cognominal joined
|
|||
dalek | ast: 0ffea18 | jnthn++ | S12-methods/instance.t: Test for self not enforcing item context. |
20:44 | |
20:45
kjs_ left
|
|||
masak | timotimo: TIAS? | 20:49 | |
moritz | huh, lots of r-m spectest failures for me :( | ||
20:49
timotimo left
|
|||
moritz | with moar and nqp master | 20:49 | |
jnthn | I get S02-types/array.t, S02-types/set.t, and S06-signature/types.t having failures since my last run a couple of days ago. | 20:52 | |
20:53
timotimo joined
|
|||
moritz | m: say Metamodel::ClassHOW | 20:55 | |
camelia | rakudo-moar 107a5c: OUTPUT«(Perl6::Metamodel::ClassHOW)» | ||
timotimo | i flew off the server :( | 20:56 | |
moritz | m: so so Int.HOW ~~ Metamodel::ClassHOW | 20:57 | |
camelia | ( no output ) | ||
moritz | m: say so Int.HOW ~~ Metamodel::ClassHOW | ||
camelia | rakudo-moar 107a5c: OUTPUT«True» | ||
jnthn | std: class class {}; say class.new.perl | 20:58 | |
camelia | std f9b7f55: OUTPUT«ok 00:01 137m» | ||
moritz | m: say Int.^methods(:all).pick.name | ||
camelia | rakudo-moar 107a5c: OUTPUT«hash» | ||
moritz | m: say Int.^methods(:all).pick.name | ||
camelia | rakudo-moar 107a5c: OUTPUT«sin» | ||
jnthn | TimToady: I can't work out why STD mangaes to parse the "class.new.perl" | ||
TimToady: I just added keyspace to Rakudo's grammar, and then tweaked our package_declarators to call that after the sym | 20:59 | ||
20:59
kjs_ joined
|
|||
jnthn | TimToady: However, now it explodes with "Whitespace required after keyword" | 20:59 | |
21:00
kst` is now known as kst,
telex left
|
|||
timotimo | what is keyspace? | 21:01 | |
21:02
telex joined
|
|||
timotimo | hmm. i don't expect rakudo's grammar would benefit from this optimization at all, but i've been pondering - for a bit now, actually - how to implement "after a fixed length beginning, this regex has a constant string, so we can just go boyer-moore for the literal and skip back a bit" | 21:02 | |
jnthn | A token in STD | ||
std: /$^ / | |||
camelia | std f9b7f55: OUTPUT«ok 00:00 136m» | ||
jnthn | std: /$. / | ||
camelia | std f9b7f55: OUTPUT«===SORRY!===Unsupported use of $. variable; in Perl 6 please use the filehandle's .line method at /tmp/HLmaPIZ9px line 1:------> /$.⏏ /Parse failedFAILED 00:00 136m» | ||
21:03
bjz joined
|
|||
moritz | m: class A { }; A.^add_fallback(-> $, $ { 1 }, -> $, $ { sub (|) { say 42 }); A.blerg | 21:03 | |
camelia | rakudo-moar 107a5c: OUTPUT«===SORRY!=== Error while compiling /tmp/E5fQW2jq0FUnable to parse expression in block; couldn't find final '}' at /tmp/E5fQW2jq0F:1------> $, $ { 1 }, -> $, $ { sub (|) { say 42 }⏏); A.blerg expecting a…» | ||
jnthn | Oddly, STD now accepts the first one, reported in rt.perl.org/Ticket/Display.html?id=77558, but still rejcects the latter in rt.perl.org/Ticket/Display.html?id=77550 :) | ||
moritz | m: class A { }; A.^add_fallback(-> $, $ { 1 }, -> $, $ { sub (|) { say 42 }}); A.blerg | ||
camelia | rakudo-moar 107a5c: OUTPUT«42» | ||
jnthn | moritz: Please use method FALLBACK these days ;) | ||
moritz | jnthn: I know | 21:04 | |
jnthn | (Unless you've a good reason not to, in which case pop the .^add_fallback in a BEGIN block) | ||
moritz | jnthn: I'm documenting the meta model :-) | ||
jnthn | Ah, OK :) | ||
m: $. | |||
camelia | rakudo-moar 107a5c: OUTPUT«===SORRY!=== Error while compiling /tmp/BNGqKHOCZRMissing semicolon.at /tmp/BNGqKHOCZR:1------> $.⏏<EOL>» | ||
jnthn | std: $. | ||
camelia | std f9b7f55: OUTPUT«===SORRY!===Unsupported use of $. variable; in Perl 6 please use the filehandle's .line method at /tmp/59FIRAS8qy line 1:------> $.⏏<EOL>Parse failedFAILED 00:00 134m» | ||
timotimo | i was thinking once the optimizer figures out the fixed length prefix of a regex ends in a literal, it could insert a node that's ignored by the NFA and by declarativity considerations and just creates a little "scan loop" so to speak that lands in the code at the very beginning of the regex (but after the initial scan node) | 21:06 | |
dalek | kudo-star-daily: 568a130 | coke++ | log/ (9 files): today (automated commit) |
||
timotimo | it'd just have to store the literal string and the known length of regex before it | ||
but i have *no* idea about backtracking and stuff | 21:08 | ||
and how to properly handle the position register in this case | |||
21:08
anaeem1_ left
|
|||
lizmat | p6w preview: p6weekly.wordpress.com/?p=299&...iew_id=299 | 21:09 | |
21:09
anaeem1 joined
|
|||
timotimo | colomon added an infix:%lt;%> candidate to fix this | 21:10 | |
damn you, html :) | 21:11 | ||
21:11
rurban left
|
|||
timotimo | lizmat: i recommend you write that the stuff psch worked on is only ("only") for the JVM native interop thingie | 21:12 | |
TimToady | jnthn: STD's keyspace is inside <?before> so includes \s in LTM, so it will always be one longer than <ident> matches | ||
lizmat | timotimo: fixed | ||
TimToady | and it won't match if tied | 21:13 | |
lizmat | re psch , it states that it is for the JVM backend, no? | ||
timotimo | well, the JVM backend can be a great many things | ||
jnthn | TimToady: So I need <?before <.keyspace>> ? | ||
colomon has no idea what timotimo is talking about. was that infix:<%> ? | |||
timotimo | what he's done is just for use ...:from<Java> | ||
jnthn | lizmat: I get page not found trying to access that... | ||
21:14
anaeem1 left
|
|||
timotimo | colomon: correct | 21:14 | |
TimToady | keyspace should contain the ?before | ||
timotimo | lizmat: are you using the shitty new compose post page? | ||
or the old one? | |||
lizmat | timotimo: I think the new one | ||
which I actually quite like :-) | |||
timotimo | because in the old one, there's a "request feedback" button below the text input and there you can "get a link without sending an email" | ||
that should work for everyone | |||
i don't like it at all because it lacks this button | 21:15 | ||
lizmat | ah, ok | ||
21:15
bbkr joined
|
|||
timotimo | which i've been relying on quite heavily during my p6weekly workflow | 21:15 | |
moritz | it also seems impossible to remove the 'uncategorized' category with the new interface, at least after the post is already published | ||
jnthn | TimToady: STD has it as: | 21:16 | |
bbkr | hi. how can I weaken reference? | ||
jnthn | token keyspace { <!before '('> [ <?before <[ \s \# ]> > || <.panic: "Whitespace required after keyword"> ] } | ||
lizmat | new link for preview of p6w: p6weekly.wordpress.com/?p=299&...439914854d | ||
jnthn | I copied it exactly as that. | ||
TimToady | then something must be committing to a shorter LTM before that | ||
jnthn | bbkr: You can't, but since GC is based on reachability, not ref-counting, then you don't need to for cyclic data structures... | ||
TimToady | in STD we call it directly after <sym> | 21:17 | |
21:17
safinaskar joined
|
|||
safinaskar | hi | 21:17 | |
bbkr | jnthn: wow, awesome! thanks | ||
safinaskar | perl6 has "grammar" feature | ||
21:17
bjz left
|
|||
safinaskar | what is it? is it part of language? of std lib? or what? | 21:17 | |
jnthn | TimToady: Yeah, I put those calls in directly after <sym> and it actually hit the panic... | ||
dalek | c: cd28fdf | moritz++ | lib/Type/Metamodel/ClassHOW.pod: start to document ClassHOW |
21:18 | |
jnthn | safinaskar: Part of the language | ||
safinaskar | jnthn: is there something like this in perl5? | ||
jnthn | safinaskar: Well, Perl has always been good at making regexes a fairly first class part of the langauge. Perl 6 just takes this several steps further, providing full grammars. | 21:19 | |
So more interesting parsing tasks can be handled in a neat way. | |||
moritz | safinaskar: newer versions of Perl 5 have the ability to define named regexes within a regex | 21:20 | |
safinaskar: but it doesn't integrate well with OOP in perl 5 | |||
and thus reuse is still tricky | |||
and then there are modules, of course | 21:21 | ||
jnthn | std: $_ = 'oh 2!'; s[\d+] += 40; .say | ||
camelia | std f9b7f55: OUTPUT«ok 00:01 139m» | ||
safinaskar | jnthn: moritz: thanks | 21:23 | |
21:23
safinaskar left
21:24
KCL_ joined
|
|||
b2gills | safinaskar: Grammars are basically Object classes with regular expressions (rules/tokens/regexes) as methods | 21:24 | |
lizmat | Perl6 Weekly live: p6weekly.wordpress.com/2015/01/12/...n-delayed/ | 21:25 | |
moritz | lizmat++ | 21:26 | |
woolfy | lizmat++ | 21:29 | |
21:30
xfix left
|
|||
jnthn | lizmat++ # nice post | 21:39 | |
21:39
A4AA15F9 joined
21:41
donaldh joined
|
|||
pyrimidine | I suppose the closest thing to Grammars in p5 is Marpa | 21:42 | |
21:45
broski joined
|
|||
broski | Hi! | 21:45 | |
I have a qeustion | |||
can you use hyphens for variable names too? | |||
timotimo | yep | ||
broski | @an-array | ||
$an-array | |||
timotimo | m: my @an-array = 1, 2, 3; say @an-array; | ||
camelia | rakudo-moar 107a5c: OUTPUT«1 2 3» | ||
broski | sub i-know-this-works {} | ||
NICE!!! | |||
that's great, I always wondered that because to me hyphens are quicker to type than underscores | 21:46 | ||
i've been reading the documentation, I really like the implementation and I really dig how the @ and % are kept unlike Perl 5 where %hash => $hash{'ref'} | 21:47 | ||
b2gills | I'm fairly sure one of the quick ways to spot Perl6 vs Perl5 code, is by its use of hyphens in identifiers | ||
21:48
uniejo joined
|
|||
b2gills | I like that @hash{'a','b'} isn't a thing in Perl6 | 21:48 | |
timotimo | but you can still write it exactly like that if you want | 21:49 | |
b2gills | I meant the @ | 21:50 | |
jnthn | Note that %hash<a b> is a neater way to write %hash{'a', 'b'} :) | ||
timotimo | oh | ||
good point | |||
b2gills | I was typing the Perl5 code | ||
timotimo | "sigil invariance" | ||
21:51
KCL_ left,
uniejo left
21:53
Ugator left
21:57
cognominal left,
raiph left
22:00
skids left
22:02
leont joined
|
|||
jdv79 | pyrimidine: maybe closer would be Regexp::Grammars? depends on your criteria i guess. | 22:02 | |
dalek | kudo/nom: d3d2ebb | lizmat++ | src/core/operators.pm: Add IS-NAN-OR-INF helper sub This is backend dependent atm, so concentrate backend dependendness |
||
kudo/nom: e4ff687 | lizmat++ | src/RESTRICTED.setting: Make restricted settings a bit more strict - alphabetically ordered like items, for better perusing - added some existing/new internal helper subs - added (new) roles, preventing people from writing their own classes for access |
|||
jnthn | lizmat: Isn't there an nqp:: op for nan or inf? | 22:04 | |
lizmat | yes, but that only works directly on parrot | ||
in moar/jvm you must first check if it's a Num | |||
jnthn | Just go with the maor/jvm version of it everywhere | ||
I can't believe it reliably works out on Parrot without the type check in every case. | 22:05 | ||
lizmat | ok, will do that then :-) | ||
timotimo | a non-num is very, very unlikely to be nan or inf :P | ||
so ... seems legit :) | |||
lizmat | m: nqp::isnanorinf(Str) | 22:06 | |
camelia | rakudo-moar 107a5c: OUTPUT«Cannot unbox a type object in block <unit> at /tmp/6Qj7QWcc06:1» | ||
dalek | kudo/nom: d7338dc | jnthn++ | src/Perl6/Grammar.nqp: Bring a couple of special vars in line with STD. |
||
kudo/nom: 495bc53 | jnthn++ | src/Perl6/ (2 files): Implement s[...] op= foo. |
|||
lizmat | m: nqp::isnanorinf("foo") | ||
camelia | rakudo-moar 107a5c: OUTPUT«This type cannot unbox to a native number in block <unit> at /tmp/moS5DuzxYC:1» | ||
dalek | ast: 35714a7 | jnthn++ | S05-substitution/subst.t: Correct and un-fudge s[...] op= foo tests. |
||
timotimo | jnthn: sweet :) | ||
lizmat | that gives very LTA error messages | ||
jnthn | lizmat: uh, what's LTA about it? | ||
It's an nqp:: op and you broke its usage contract. | 22:07 | ||
And it told you why. | |||
lizmat | it;s usually hidden somewhere | ||
El_Che | lizmat: you b'stard: "The beginning of the Party has been delayed!" :) | ||
a catchy open title | 22:08 | ||
lizmat | :-) | ||
jnthn | Yes, but if you end up hitting the op without giving it something valid, it's a failure to guard using it properly, imo. | ||
lizmat | jnthn: the name is "isnanofinf" , there is nothing about a contract there | ||
not in the name | |||
"foo" is neither NaN or Inf either | |||
hobbs | now is the time for all good men to come to the aid of the party | 22:09 | |
timotimo | only men? | ||
jnthn | lizmat: *All* of the nqp:: ops on native types behave in an unbox-y way, not a coercy way. | ||
That's just the level of abstraction they're at. | |||
hobbs | in the generic sense :) | ||
(in case you're not familiar: www.straightdope.com/columns/read/2...-good-men) | 22:10 | ||
lizmat | jnthn: it may be clear to *you* it requires a Num, but it wasn't to me | ||
and apparently, in parrot's case either :) | |||
but, no worries, I get the point :-) | |||
22:10
broski left
|
|||
El_Che | lizmat: I wonder what an up-to-date version of this talk would sound like: archive.fosdem.org/2013/schedule/e...a_perlito/ | 22:12 | |
jnthn | Yes, the Parrot code-gen, partly due to how Parrot works, is a bit mroe sloppy in that sense. It turned out to be a great place for performance/semantic bugs to hide... | ||
lizmat | shorter, as there are at least 2 casualties in that list | 22:13 | |
jnthn | timotimo: It's one more feature down, and an RT too :) | ||
dalek | kudo/nom: 8ceebf5 | lizmat++ | src/core/operators.pm: Revert "Add IS-NAN-OR-INF helper sub" Turns out we don't need it after all. Just use: nqp::istype(val,Num) && nqp::isnanorinf(val) That should give better performance |
||
22:14
donaldh left
|
|||
jnthn | The RT queue is huge, so I'm going to try and pick off some easy-medium tickets now and then, when I've got bits of time when I'm not concentrated enough to work on the bigger, harder, things. | 22:15 | |
22:16
spider-mario left
|
|||
jnthn | m: my $x; $x [R/]= 1 | 22:16 | |
timotimo | goon on ya :) | ||
camelia | rakudo-moar 107a5c: OUTPUT«===SORRY!===Unknown QAST node type NQPMu» | ||
timotimo | i'm glad | ||
22:18
broski joined
22:30
Vlavv left
22:32
sirdancealot joined
|
|||
dalek | kudo/nom: 0a99f9f | jnthn++ | src/Perl6/Actions.nqp: Fix exception handlers in main program body. These would previously fail to actually catch the exception. Resolves RT#116056. |
22:36 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=116056 | ||
22:36
kjs_ left
|
|||
dalek | ast: 93081cd | jnthn++ | S04-exception-handlers/top-level.t: Add test for program-level handlers. In its own test file rather than catch.t, so as not to cause trouble debugging issues with catch.t tests. |
22:37 | |
kudo/nom: 6ba20d0 | jnthn++ | t/spectest.data: Run S04-exception-handlers/top-level.t. |
|||
jnthn | m: sub foo(Int $x is copy) { $x = 5; } f(1); | 22:41 | |
camelia | rakudo-moar 495bc5: OUTPUT«===SORRY!=== Error while compiling /tmp/I_Qyq5bjdWTwo terms in a rowat /tmp/I_Qyq5bjdW:1------> sub foo(Int $x is copy) { $x = 5; } ⏏f(1); expecting any of: infix stopper infix or me…» | ||
jnthn | m: sub foo(Int $x is copy) { $x = 5; }; f(1); | 22:42 | |
camelia | rakudo-moar 495bc5: OUTPUT«===SORRY!=== Error while compiling /tmp/F64H7KK0E0Undeclared routine: f used at line 1» | ||
jnthn | m: sub foo(Int $x is copy) { $x = 5; }; foo(1); | ||
camelia | rakudo-moar 495bc5: OUTPUT«Cannot assign to an immutable value in block <unit> at /tmp/7Jxz1nmjRL:1» | ||
22:43
Mso150 joined
|
|||
jnthn | m: sub foo(Int $x is copy) { $x = 5; my $omg-prevent-inline; }; foo(1); | 22:43 | |
camelia | ( no output ) | ||
dalek | ast: d0f0a18 | lizmat++ | S06-signature/types.t: Fix changed gist |
||
22:43
Vlavv joined
|
|||
tony-o | that isn't intended behavior? | 22:44 | |
lizmat | tony-o: not if "is copy" si specified | ||
*is | |||
jnthn | tony-o: It looks like the static inlining stuff doesn't account for "is copy", and so messes up the program | 22:45 | |
sub foo(Int $x is copy) { $x = 5; }; foo(1); # works fine with --optimize=0 | |||
tony-o | i saw it happen a few days ago too and thought that it was changed that way intentionally | ||
dalek | kudo/nom: 72228a6 | lizmat++ | src/core/Buf.pm: Streamline Buf.at_pos + add error for Inf/NaN |
22:47 | |
kudo/nom: e56d60d | lizmat++ | src/core/Capture.pm: Streamline Capture.at_pos + error for Inf/NaN |
|||
jnthn | Getting a little tired to fix that one today, so think I'll leave it for tomorrow. :) | 22:51 | |
lizmat feels likewise :-) | |||
22:55
mvuets left
|
|||
dalek | kudo/nom: 0506869 | lizmat++ | src/core/Array.pm: Lose VM dependent code for nqp::isnanorinf |
23:00 | |
lizmat | and with that, I say "good night, #perl6" | ||
japhb | o/ lizmat | 23:01 | |
23:02
Mso150 left
23:03
Mso150 joined
|
|||
jnthn wanders off to relax/rest also :) | 23:08 | ||
See y'all tomorrow o/ | |||
23:09
adu left
23:17
Mso150 left
23:18
Mso150 joined
23:27
jluis_ left
23:28
cognominal joined,
cognominal left
23:31
Mso150 left
23:34
Mso150 joined,
adu joined
23:51
jack_rabbit joined
|
|||
masak | 'night, jnthn | 23:52 | |
23:59
virtualsue left
|