»ö« 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:03 TgMts_ joined 00:05 skids joined, TgMts left
raydiak hi again #perl6 00:07
timotimo hello raydiak
i haven't had the opportunity to play with your assuming implementation 00:08
raydiak to correct something slightly beside the point which I said earlier, slicing it wouldn't flatten, it's the grepping over it that flattens it
timotimo brr. how do i generate a link for review/request for comment with the "new" wordpress editor? 00:11
00:12 davercc joined
timotimo p6weekly.wordpress.com/?p=409&...28775e03e7 00:12
kind of feels like i'm missing at least one thing
raydiak (but since I need the indices, it's all beside the point anyway...mainly I'm wishing there was a way to pre-bind args to CURRIED() into the holes so there isn't a loop in it, as the design docs imply it should work that way) 00:13
timotimo mhm
00:14 TgMts_ left 00:15 TgMts joined
timotimo i should mention the idea collection for GSoC 00:18
annoyingly, the things from the google docs text have not been put into the wiki yet 00:20
p6weekly.wordpress.com/?p=409&...28a912d02b 00:26
well, i just went ahead and published the post 00:35
raydiak looks good; timotimo++ 00:37
00:43 kurahaupo1 joined 00:44 echowuhao left 00:53 Hor|zon joined 00:58 Hor|zon left
masak 'night, #perl6 00:58
raydiak suspects his problem is not solvable without EVAL, language design changes, or maybe some sorta nqp:: stuff
good night masak 00:59
01:03 Alina-malina joined, Alina-malina left, Alina-malina joined 01:07 yeahnoob joined
raydiak well, or maybe encapsulation-breaking metafiddlyness with .set_value() and so forth, though even that seems to fail where it gets a BOOTSTRAPATTR instead of an Attribute, which I assume circles back to nqp::stuff I don't know well 01:09
01:10 TgMts left 01:11 TgMts joined 01:17 coffee` left, MilkmanDan left 01:18 kurahaupo1 left 01:27 adu joined 01:39 MilkmanDan joined
skids r: Buf.new(256, -1).say; say Buf ~~ buf8; say Buf ~~ Buf[uint8]; # Do I misremember? ISTR punned Buf[] used to know it was Buf[uint8]? 01:43
camelia rakudo-{parrot,moar} d99fe0: OUTPUT«Buf:0x<00 ff>␤False␤False␤»
01:46 kurahaupo1 joined
timotimo m: say Buf.new.of 01:49
camelia rakudo-moar d99fe0: OUTPUT«(uint8)␤»
01:58 chenryn joined 02:04 TgMts left 02:06 TgMts joined 02:10 Peter_R left, zacts left 02:12 Peter_R joined
ruoso got the first half of the Grammar::EBNF done, it can parse grammars, now I just need to implement the actions to generate a Perl 6 grammar on the fly... 02:12
github.com/ruoso/Grammar-EBNF 02:13
02:14 kurahaupo1 left
raydiak r: say buf8 ~~ Buf; say Buf[uint8] ~~ Buf; # skids 02:15
camelia rakudo-{parrot,moar} d99fe0: OUTPUT«True␤True␤»
raydiak ooh nice ruoso++ 02:18
ruoso raydiak: thanks..
I'm kind of failing to find how to add a new syntax to the language 02:19
I want to allow something like: ebnf-gramma { ... }
minus the typo
02:20 Akagi201_ left
raydiak like a slang? 02:20
02:20 Mouq joined
ruoso yeah 02:21
02:22 TgMts left
raydiak is looking at other slangs to see how they work 02:24
ruoso wonder if github.com/tony-o/perl6-slang-sql/...ng/SQL.pm6 is a valid example 02:25
raydiak precisely the one I was just looking at :)
do you have something you've already tried which doesn't work? 02:27
ruoso I am trying to mimick the slang-sql right now... but I was hoping to find some doc instead of just blindly copy-n-pasting 02:28
02:28 ggoebel111111114 left, TgMts joined
raydiak I am not sure if we have good docs for that atm; don't know if it's an entirely 'stable' part of the spec yet 02:30
skids radiak: Yeah, it works that way of course. but It should work the way I originally posted, I think.
raydiak skids: I thought it was Narrower ~~ Wider 02:31
skids They should be the same exact class.
02:32 TgMts left
skids Erm, well, role. 02:33
m: role A[$f = 1] { }; say A[1] ~~ A[]; # I would expect this would work as well
camelia rakudo-moar d99fe0: OUTPUT«False␤»
raydiak skids: but different parameterization...e.g. Array[Int] ~~ Array[Str] is False, no?
skids Yes, but with a default it isn't different parameterization. 02:34
raydiak ah right, I see what you meant :)
02:34 telex left, Mouq left 02:36 telex joined, TgMts joined 02:38 kurahaupo1 joined 02:39 ggoebel111111114 joined, TgMts left 02:43 Hor|zon joined 02:45 ilbot3 left
raydiak skids: but then how would we refer to the role generically regardless of parameterization when that's what you're trying to say? e.g. buf16 ~~ Buf 02:46
maybe Buf[*] or something? 02:47
02:47 Hor|zon left 02:48 ilbot3 joined
raydiak m: buf8 ~~ Buf[*] # apparently that already works 02:50
camelia ( no output )
raydiak m: say buf8 ~~ Buf[*]
camelia rakudo-moar d99fe0: OUTPUT«True␤»
02:56 TgMts joined
skids Hrm. I wonder what that does. 02:57
raydiak it seems to do the same as Buf's current meaning, until... 02:59
m: say Buf[*].new
camelia rakudo-moar d99fe0: OUTPUT«Buf[Whatever]:0x<>␤»
03:00 Mouq joined, TgMts left
raydiak guessed someone put it there having already thought about this problem 03:01
skids OK, maybe "Buf ~~ buf8" should be False as is. but "Buf.new ~~ buf8" should be True. Because instantiation has to choose parameterization. 03:03
raydiak definitely agree there 03:04
03:04 noganex joined
raydiak m: Buf.new.WHAT # so this should be "Buf[uint8]" too I guess 03:04
camelia ( no output )
raydiak m: say Buf.new.WHAT # gah
camelia rakudo-moar d99fe0: OUTPUT«(Buf)␤»
skids I would say so. 03:05
raydiak can't think of any reason an object should remember whether it was paramterized via default or not 03:06
03:07 noganex_ left
skids Also having Buf.new.WHAT be seen as Buf[uint8] avoids a YAPAE. 03:07
raydiak or replaces it...how painful is (Buf ~~ Buf.new) === False ? 03:11
well, that probably doesn't do what I thought for a moment anyway :) 03:12
skids What are the smartmatch rules for class/role ~~ object?
raydiak m: say Str ~~ Str.new
camelia rakudo-moar d99fe0: OUTPUT«False␤»
raydiak m: say Array ~~ Array.new 03:13
camelia rakudo-moar d99fe0: OUTPUT«use of uninitialized value of type Array in numeric context in block <unit> at /tmp/ht1iJJLmP2:1␤␤True␤»
raydiak m: say Bool ~~ Bool.new
camelia rakudo-moar d99fe0: OUTPUT«False␤»
raydiak dunno :)
skids I'm trying to think if there's a way to cause trouble with 'role A [...] { }; class B does A[...] { }; role A[...] { }'
(Which actually I am productively using a construct like that) 03:14
ruoso hmmm... I did manage to define the slang, but if I try to delegate the parsing to a separate grammar, it fails with No such method 'OTHERGRAMMAR' for invocant of type 'Perl6::Grammar+{Grammar::EBNF::Slang}' 03:16
raydiak skids: what does it do? be able to refer to B from inside the 2nd A?
ruoso: can you gist it? 03:17
ruoso github.com/ruoso/Grammar-EBNF/blob...ar/EBNF.pm 03:19
skids raydiak: Yes, exactly: github.com/skids/perl6sum/blob/mas...r.pm6#L489
raydiak ruoso: I've cloned; what's the easiest way to reproduce it? 03:28
ruoso perl6 -Ilib t/004_slang.t 03:29
If I replace the foreign-grammar rule with literals, it works
raydiak doesn't see that rule 03:31
ruoso which rule? 03:32
raydiak maybe I don't know what you mean by "foreign-grammar rule"
ruoso I mean <Grammar::EBNF::MetaSyntax::TOP> in the Slang role
03:33 BenGoldberg left, BenGoldberg joined
Mouq ruoso: I came across that a few weeks ago. Let me see if I remember how to fix it 03:33
raydiak ah I see
ruoso Mouq: thanks...
Mouq Oh! yes. Use something like <EBNF=.FOREIGN_LANG: 'Grammar::EBNF::MetaSyntax', 'TOP'> 03:35
ruoso tries it 03:37
Mouq ruoso: Sorry slangs are still a pain to work with. I want to make them first class at some point; they're essentially still a hack :P 03:38
ruoso closer... but now I get Cannot find method '!cursor_init'
Mouq Hm :/ I can't quite figure out how that would happen 03:42
ruoso oh, looking at the code, may be related to the %*LANG hash 03:44
ruoso tries to register the custom lang in there
Mouq Oh duh. you're absolutely correct
This is what I'm going off of, btw (a little messy): gist.github.com/Mouq/bdddda34e4e0c5569b35 03:45
ruoso yeah... that did work 03:47
Mouq \o/
ruoso cool, now I just need to use the MOP to translate the Grammar::EBNF into a regular Perl 6 grammar 03:49
Mouq ruoso: You don't necessarily need to use the MOP to do that 03:53
03:54 echowuhao joined
Mouq ruoso: Potentially, you could construct it the same way regexes are constructed in Perl 6/NQP, ( Particularly, for building the rules: github.com/perl6/nqp/blob/master/s...ctions.nqp ) 03:54
ruoso: Although I don't know if that's what you're interested in/what your goals are 03:55
m: use QAST:from<NQP>; 03:56
camelia ( no output )
03:59 davercc left
ruoso Mouq: I'm not sure, it's probably easier to build them with the MOP instead of using macro-like behavior 04:02
EBNF is a fairly simple language after all 04:04
dalek kudo-star-daily: 4a6dc1b | coke++ | log/ (14 files):
today (automated commit)
04:16
Mouq ruoso: Sure 04:23
04:30 Mouq left 04:31 Hor|zon joined 04:36 Hor|zon left 04:56 chenryn left 05:03 kurahaupo1 left
b2gills m: say 5.base(10,4); say 5.0.base(10,4); say 5e0.base(10,4) 05:14
camelia rakudo-moar d99fe0: OUTPUT«5.0000␤5␤5␤»
dalek kudo/nom: 39d7c52 | coke++ | src/core/Numeric.pm:
Remove parrot ifdef fossils

Document the ones we can't remove
05:17 echowuhao left 05:31 chenryn joined 05:43 BenGoldberg left
[Coke] .ask pmichaud do you have a list of tickets that will/should be addressed by the list work? 05:47
yoleaux [Coke]: I'll pass your message to pmichaud.
[Coke] .ask masak would you say RT #118407 and RT #115626 are dups? 05:48
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=118407
yoleaux [Coke]: I'll pass your message to masak.
[Coke] ^^ synopsebot bug, only picked one? 05:49
r: use MONKEY_TYPING; augment slang Regex { token numish { } }; 05:50
camelia rakudo-{parrot,moar} d99fe0: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Null regex not allowed␤at /tmp/tmpfile:1␤------> G; augment slang Regex { token numish { ⏏} };␤»
05:56 [Sno] left
dalek ast: d8290e4 | coke++ | S32-exceptions/misc.t:
Add test for RT #119293
06:03
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=119293
dalek kudo/nom: 8621d8e | coke++ | src/Perl6/Grammar.nqp:
RT #119293 - treat $] as an obsolete 5var.
06:04
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=119293
06:07 raiph left 06:08 raiph joined
[Coke] r: &&::{}[];; 06:09
camelia rakudo-parrot d99fe0: OUTPUT«===SORRY!===␤QRPA: index out of bounds␤»
..rakudo-moar d99fe0: OUTPUT«===SORRY!===␤MVMArray: Index out of bounds␤»
nwc10 what should the error message be? What does that syntax mean? RT #119999 doesn't give me any clues 06:13
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=119999
06:14 uvb left, Mouq joined
[Coke] it's one of the class of tickets that doesn't describe the desired behavior, but points out that that existing behavior generates an internal error that shouldn't be exposed. 06:19
06:19 bjz joined
[Coke] r: say $*PERL<version> 06:19
camelia rakudo-moar d99fe0: OUTPUT«postcircumfix:<{ }> not defined for type Perl␤ in method gist at src/gen/m-CORE.setting:14785␤ in sub say at src/gen/m-CORE.setting:17542␤ in block <unit> at /tmp/tmpfile:1␤␤»
..rakudo-parrot d99fe0: OUTPUT«postcircumfix:<{ }> not defined for type Perl␤ in method gist at gen/parrot/CORE.setting:14728␤ in method gist at gen/parrot/CORE.setting:1177␤ in sub say at gen/parrot/CORE.setting:17454␤ in sub say at gen/parrot/CORE.setting:17450␤ in bl…»
06:19 Mouq left
[Coke] ^^ that really shouldn't explode, should it? 06:19
06:20 Hor|zon joined
[Coke] (wondering why Perl has to be a class, and not a Hash. 06:20
also, that's blocking RT #79294 06:21
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=79294
06:24 yeahnoob left, ggoebel111111114 left 06:25 Hor|zon left 06:26 grondilu left
dalek ast: b49fcef | coke++ | / (11 files):
use RT #XXXX where possible
06:27
06:28 bjz left 06:32 kaleem joined 06:37 spider-mario left 06:43 ggoebel111111114 joined
dalek p: 7ebbcb0 | raydiak++ | src/vm/parrot/6model/reprs/CArray.c:
Zero-fill CArrays on Parrot

Parrot version of ead76229 (JVM) and
  github.com/MoarVM/MoarVM/commit/83...e42899b9b1
06:45
ast: da05371 | coke++ | integration/weird-errors.t:
Add test for RT #123570
06:47
ast: eaa2708 | coke++ | integration/weird-errors.t:
unfudge passing test
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123570
06:51 FROGGS_ left 06:55 bjz joined
dalek ast: 8314042 | coke++ | S05-capture/dot.t:
Add test for RT #77570
07:03
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=77570
jnthn morning, #perl6 07:07
yoleaux 16 Feb 2015 15:35Z <lizmat> jnthn: on MoarVM, delete_f does not return any value, this makes nqp::unlink flaky afaics. Is there a reason for that ?
16 Feb 2015 19:22Z <lizmat> jnthn: wrt PIO role name, maybe it should be RIO (as in Rakudo Io Object)
07:07 diana_olhovik_ joined
jnthn .tell lizmat It seems that it contains a lot of common things you can do on an IO handle (e.g. basic I/O things), so I wonder a little if a name more like IO::General or IO::ReadWrite or something might be fitting... 07:11
yoleaux jnthn: I'll pass your message to lizmat.
jnthn .tell lizmat I notice seek/tell ended up in that role, but iiuc sockets also do the role; maybe that wnats pulling out into an IO::Seekable? 07:12
yoleaux jnthn: I'll pass your message to lizmat.
dalek kudo/nom: 4078230 | jnthn++ | docs/ChangeLog:
Some ChangeLog additions.
07:20
07:20 vendethiel- left 07:22 gfldex joined 07:23 kaare__ joined, kaare_ left
dalek kudo/nom: 1dcc74e | jnthn++ | docs/ChangeLog:
One more ChangeLog note.
07:25
jnthn Nice ChangeLog this month! :)
arnsholt jnthn: Do you have a plan for how shaped arrays will interact with 6model things? 07:27
(Been mulling over embedded structs/arrays stuff recently) 07:28
jnthn arnsholt: I'm not sure I'd call it a plan yet, but kinda
arnsholt: I'm by this point fairly sure we're going to want a different REPR for them than we use for normal arrays.
arnsholt: Because "this thing can't change its size" is *really* useful to know for optimization purposes. 07:29
07:29 FROGGS joined
raydiak jnthn++: github.com/rakudo/rakudo/blob/nom/...ngeLog#L36 07:31
FROGGS o/
raydiak \o 07:32
jnthn raydiak: uh, wat? :)
How on earhtr did I... :)
FROGGS is that a pasto?
raydiak jnthn: stray "BEGIN time"
jnthn Yeah :)
jnthn goes to make another cuppa... :)
dalek kudo/nom: 5bb1942 | jnthn++ | docs/ChangeLog:
Remove stray text; raydiak++.
07:33
raydiak hope I didn't derail your train of thought :)
FROGGS jnthn: that precomp bug you fixed is *the* precomp bug we hit regularly, right? 07:34
like, on the jvm for URI?
07:34 [Sno] joined
jnthn FROGGS: I don't know that it is... 07:34
FROGGS: I do know that at least one person besides me ran into it while working on CORE.setting 07:35
FROGGS ahh
the bug I talk about also involved our scoped subs I think
jnthn Yeah, there's more pre-comp bugs in my future, I'm sure... 07:36
FROGGS jnthn: are you okay with that? docs.google.com/document/d/120zZBQ...ca6ls/edit 07:37
jnthn: I put your name in there
.tell brrt Please look at that (I put you in there): docs.google.com/document/d/120zZBQ...ca6ls/edit 07:38
yoleaux FROGGS: I'll pass your message to brrt.
arnsholt jnthn: Yeah, that sounds like it makes sense
FROGGS hi arnsholt
arnsholt Oh, hi there!
FROGGS++ # All of the upvotes for moving NativeCall to the Rakudo repo =)
FROGGS *g*
jnthn FROGGS: Yes, it's fine with me :) 07:39
FROGGS and it was a very good thing, for the reason I found/solved bugs in nqp-p's vmarray handling and string passing to foreign functions
there are two issues left: 1) only on jvm on osx the libraries for the nativecall tests are not found, perhaps because CWD is not in the lib search path 07:40
jnthn Hm, I wonder why we didn't see that issue when the things were in the nativecall repo? 07:41
07:41 rindolf joined
FROGGS 2) on the jvm seems to exist a output buffering issue... the printed lines of say() appear sometimes after the lines printed by the called C test functions 07:41
arnsholt Yeah, that's odd
07:41 Rounin joined
FROGGS so, say() does not flush I guess 07:41
jnthn: because nobody looks at tester reports because the site is too slow? 07:42
(and not many use parrot / jvm anyway)
(or osx for that matter :P)
07:43 _mg_ joined
jnthn FROGGS: Oh, it's only JVM + OSX? 07:43
FROGGS for the lib loading problem, yes 07:44
jnthn OK, then I can see how we mighta missed it.
07:48 zakharyas joined 07:49 _mg_ left 07:54 _mg_ joined 07:59 gfldex left 08:05 prime- left 08:06 Ven joined 08:08 rindolf left 08:09 prime joined, _mg_ left, Hor|zon joined 08:10 darutoko joined 08:13 larion left 08:14 Hor|zon left 08:15 _mg_ joined 08:16 sqirrel__ joined 08:21 fhelmberger joined, _mg_ left 08:26 kaare__ is now known as kaare_ 08:28 pierrot left, pierrot joined
[Tux] \o/ nice! github.com/perlpilot/perl6-docs/bl...-intro.pod 08:28
08:30 diana_olhovik_ left, NABB907 joined 08:32 raiph left 08:33 wicope joined 08:36 pierrot left
moritz bonus points for integrating that into doc.perl6.org 08:37
08:38 rurban joined
[Tux] struggles with converting perl5 «$foo =~ s{^"(.*)"$}{$1};» as «$foo ~~ s{^ '"' (.*) '"' $} = $_;» doesn't seem to do what I thought it would do 08:39
hmm, maybe it does 08:40
08:43 abraxxa joined, mrf left
moritz [Tux]: ~~ is a topicalizer, that is, it sets $_ on the right-hand side 08:44
[Tux]: so be careful with $_ on the RHS of a ~~
[Tux] should I use $1 instead?
jnthn Probably want = $0
[Tux] realized this must be about the 10th time he forgot to count form 0 D'uH!!! 08:45
jnthn :)
If it helps, $0 compiles into $/[0], $1 into $/[1], etc.
moritz old habits do die hard
jnthn So it's just shortcut for an array access :)
08:45 mrf joined
jnthn Knowing that's how it works in Perl 6 doesn't prevent muscle memory, sadly... 08:46
08:47 pierrot joined 08:53 ggoebel111111114 left
masak mornin', #perl6 08:57
yoleaux 05:48Z <[Coke]> masak: would you say RT #118407 and RT #115626 are dups?
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=118407
jnthn o/ masak 08:58
08:58 alini joined
masak [Coke]: no. 08:59
08:59 rurban1 joined, Hor|zon joined
masak [Coke]: one used to be a Null PMC access; the other used to be a segmentation fault. I've not known those to be dups. 09:00
in my opinion, though, both should be resolved, as there is no NPMCA anymore, and no segfault.
tadzik regarding yesterday's I Am Groot: imgur.com/VnPtOU8 09:08
09:14 _mg_ joined 09:15 adu left 09:20 dakkar joined 09:23 kjs_ joined 09:28 larion joined
moritz glibc <-> libc, groot <-> root 09:37
09:39 _mg_ left 09:52 wicope left, pecastro joined, wicope joined 09:55 espadrine_ joined 10:06 zakharyas left 10:07 zakharyas joined 10:11 virtualsue joined 10:13 _mg_ joined 10:18 rindolf joined, coffee` joined 10:34 sqirrel__ left 10:36 _mg_ left 10:49 TgMts joined 10:53 Ven left 11:04 Ven joined 11:31 chenryn left 11:32 chenryn joined 11:37 chenryn left 11:38 sqirrel__ joined 11:47 hanekomu joined, rindolf left 11:49 hanekomu left
masak .oO( what a glib comparison ) 11:50
11:54 hanekomu joined, hanekomu left 11:55 donaldh joined 11:59 hanekomu joined
FROGGS timotimo++ # weekly 12:03
12:13 sqirrel__ left 12:14 rurban1 left 12:22 kjs_ left
moritz timotimo++ 12:25
lizmat .tell [Coke] accessing members of an object as a Hash is very P5, isn't it? What.s wrong with $*PERL.version ?? 12:29
yoleaux 07:11Z <jnthn> lizmat: It seems that it contains a lot of common things you can do on an IO handle (e.g. basic I/O things), so I wonder a little if a name more like IO::General or IO::ReadWrite or something might be fitting...
lizmat: I'll pass your message to [Coke].
07:12Z <jnthn> lizmat: I notice seek/tell ended up in that role, but iiuc sockets also do the role; maybe that wnats pulling out into an IO::Seekable?
12:29 telex left 12:30 telex joined, alini left 12:33 rurban1 joined 12:34 bjz left 12:35 bjz joined 12:38 skids left 12:39 alini joined, xfix joined 12:41 pochi left, pochi joined
dalek c: b412b25 | paultcochrane++ | lib/Language/quoting.pod:
Minor corrections to heredoc docs
12:42
12:43 xfix left 12:46 xfix joined, ggoebel111111114 joined 12:49 TgMts left, xfix left 12:51 grondilu joined
moritz [ptc]++ 12:52
grondilu m: say my long $ = 0; 12:58
camelia rakudo-moar 5bb194: OUTPUT«===SORRY!===␤Type 'long' is not declared␤at /tmp/nX0YFBT3N2:1␤------> say my long⏏ $ = 0;␤Malformed my␤at /tmp/nX0YFBT3N2:1␤------> say my ⏏long $ = 0;␤␤»
12:58 rurban1 left
grondilu is confused by the last P6weekly mentioning a new "long" type. 12:59
jnthn grondilu: It's part of NativeCall and maybe called clong...
El_Che grondilu: haven't you heard? p6 is the new c++15 standard ;) 13:00
lizmat m: use NativeCall; my long $a = 42; say $a 13:01
camelia rakudo-moar 5bb194: OUTPUT«42␤»
[ptc] moritz: ach, they were just small changes...
lizmat grondilu: ^^^
grondilu ok, thanks
lizmat almost forgot: timotimo++ for P6W :-) 13:04
[ptc] agreed! timotimo++ # weekly 13:05
grondilu I used to follow progress of the three main implementations from an automatically generated webpage of some sort but I lost the link. Anyone knows what I'm talking about? 13:06
tadzik feature matrix?
grondilu not quite
[ptc] timotimo: btw, "ptc" is fine; you don't need to use the ugly "paultcochrane" thingy
grondilu it was displaying a % of the passing specs or something. 13:07
13:07 kaleem_ joined
grondilu it was all the rage when MoarVM overtook parrot and the JVM for instance. 13:07
13:08 kaleem left
moritz grondilu: github.com/coke/perl6-roast-data/b..._rates.csv this one? 13:11
[Coke]: the perl6_pass_rates link on github.com/coke/perl6-roast-data is broken 13:12
lizmat hmmm.... t/spec/S03-operators/misc.t fails on parrot using make, but runs ok with perl6-p 13:13
same for t/spec/S03-sequence/arity-2-or-more.t
they seem to segfault when run under harness 13:14
afk for a few hours&
moritz the arity-2-or-more.t could be related to the recent #?if parrot removals
grondilu moritz: yes, that's it, thanks :)
13:15 _mg_ joined
grondilu will the js backend join this list or is it too soon? 13:15
moritz grondilu: we aren't at rakudo-js yet; nqp-js first 13:16
pmurias++ and hoelzro++ are working on it
13:17 xfix joined
sergot hi \o 13:18
Ven timotimo++ 13:19
13:19 kjs_ joined 13:30 rindolf joined 13:33 TgMts joined 13:45 _mg_ left
Peter_R Just read on reddit that MoarVM uses a GIL for threading, in particular access to arrays 13:52
Is there any truth in that?
FROGGS I know that there is no GIL, but I cannot give a more detailed answer I fear 13:56
moritz Peter_R: do you have a link to the reddit discussion?
tadzik www.reddit.com/r/perl6/comments/2w3...or_parrot/ here
Peter_R tadzik, ta 13:57
13:57 sqirrel joined
FROGGS quote from rurban: "Why are people leaving python and perl5? Because of the GIL, bad multi-core support. parrot has no GIL, perl6 on moarvm has." 13:58
rurban It's not exactly a GIL, it's worse, It's like mysql table-locking 14:00
moritz is it? how? where?
FROGGS rurban: prove that Parrot's threading support is better
moritz also, table-level locking is much better than global locking of all database instances (what GIL would be) 14:01
also iirc most of the moarvm data structures are actually lockfree 14:03
FROGGS rurban: lexical access is only possible from the main thread in parrot, which means that most of what we'd like to do in theads would need to happen in the main thread, how do we utilize more than one core at all?
grondilu can't find GIL in S99 14:04
FROGGS rurban: I tried that and failed back then, and there was no support from #parrot whatsoever
tadzik grondilu: global interpreter lock 14:05
grondilu I'll add it to S99
tadzik grondilu++
rurban There's no need to prove that the parrot threading model is better. perl6 continously failed to understand that, published desastrous slandering nonsense and came up with the moarvm threading model by themselves. Ask the author, he is here 14:06
moritz rurban: that's just ridiculous. There are people in here who tried to get parrot threads to work with rakudo, and failed 14:07
FROGGS rurban: I tried to understand and I asked questions, and I got back nothing
moritz rurban: so, there is need of a prove.
rurban moritz: in parrot all datastructures are lock-free, just the scheduler needs some fine-grained locks
I answered all questions at #parrot 14:08
moritz rurban: so the problem of accessing lexicals from other threads has long been solved?
dalek ecs: dbee059 | (L. Grondin)++ | S99-glossary.pod:
adding GIL
14:08 sqirrel left
rurban sure. perl6 has its wrong implementation of lexvars, parrot lexvar pmc work okay threaded 14:08
moritz rurban: but rakudo has a different implementation for lexicals because the semantics that parrot offered didn't work for Perl 6 14:09
rurban: has that also been resolved in parrot?
FROGGS rurban: your only input was "LGTM" - github.com/parrot/parrot/issues/889
rurban: you did not even attempt to answer my questions 14:10
14:10 brrt joined
rurban you are talking about nqp and 6model issues 14:10
I know of no parrot problem in this regard. I even provided you with new enum_Cl;ass constants to get run-time access to the dynaloaded types 14:11
FROGGS rurban: no, I am talking about how we could make use of parrot's threading model, so that we actually use more than one core
rurban that's described in the threading doc and is used in the examples. the author is also here 14:12
FROGGS rurban: so why didn't you answer my question back then?
I did read the docs
and I did not find answers to the problems I tried to solve
14:12 ggoebel111111114 left
FROGGS and you did *not* answer questions on irc... irclog.perlgeek.de/parrot/2013-08-03 14:13
in fact I still don't know how to do a non blocking lexical lookup 14:14
(I am just talking about looking up variables, and subroutine to do some computation, I'm not even talking about writing to a lexical) 14:15
14:17 ggoebel111111114 joined
rurban check if the type is a Proxy, follow the proxy then, if not read it directly. if you need to write to a proxy, schedule a writer task 14:17
brrt *ahem* after all this time, i've learned that the offset-argument is used to *store* the offset 14:18
yoleaux 07:38Z <FROGGS> brrt: Please look at that (I put you in there): docs.google.com/document/d/120zZBQ...ca6ls/edit
brrt froggs, thank
s
(the offset argument to sendfile, that is)
oh, i can elaborate on that 14:19
FROGGS rurban: I'll add that to the ticket
brrt we have two things to do on the moarvm jit 14:20
a: better code generation
b: jit-only optimisations
14:20 camelia left
moritz c: world domination! 14:20
brrt under a is everything related to what i've come to call the 'expression compiler', load/store reification, and in general making moar-jit a 'real' compiler 14:21
(i volunteer for that)
14:21 camelia joined
brrt under b are a number of things relating to stuff you can only do at jit time 14:21
14:22 skids joined
brrt such as: nativecall optimizations (inlining, i suppose) 14:22
FROGGS rurban: IIRC the lexical lookup *was* blocking... you say this is not the case anymore? lexical lookup will happily run in any worker thread?
brrt but also: small-bigint-optimization
repr op devirtualisation
FROGGS brrt: can you update the doc?
camelia b : OUTPUT«Can't chdir to '/home/camelia/rakudo/': No such file or directory at lib/EvalbotExecuter.pm line 166.␤ EvalbotExecuter::_auto_execute(HASH(0x1e6c2c8), "jit-only optimisations", GLOB(0xd250790), "/tmp/mIqBAGJb6t", "b") called at lib/EvalbotExecuter.pm line 114␤ Evalbot…»
14:22 ChanServ sets mode: +v camelia
brrt and last but not least, simd ops for tight loops on integers 14:23
yes, will do
FROGGS you can put that better in words than I could :o)
rurban FROGGS: every data access is lock-free, just not wait-free 14:24
moritz it's a long time since somebody last triggered a 'b:' in camelia :-)
tadzik :D 14:25
brrt rurban, i think honestly that this is only true under a rather narrow definition of locks
consider that locks are themselves implemented using queues :-)
skids
.oO(What would having int128/uint128 buy us, future-proofing-wise)
brrt s/are implemnted using/may be backed by/ 14:26
[Coke] moritz: (broken link) so it is. Problem, though: I'm trying to escape the _'s which will turn it into an underline; tried indenting by 4, but that leaves the link unlinked. Any suggestions on how to fix it?
yoleaux 12:29Z <lizmat> [Coke]: accessing members of an object as a Hash is very P5, isn't it? What.s wrong with $*PERL.version ??
brrt skids - maybe SIMD suport?
rurban it's practically lock-free. theoritically not, as the scheduler needs to lock other threads interfering. still thousand times better then moar
FROGGS brrt: well, what I want is to do thing concurrently... so that a computation that usually takes 20s will takes less than <10s when run on four cores... I don't feel like I get there with rurbans help
rurban: no, because my test with lexical lookups used exactly 100% of a single core, wich is pointless 14:27
brrt as in, with an int128 type you can conceivably write a simd-type computation
well... i am not going to claim i know everything there is to know about moarvm's threading :-) 14:28
FROGGS rurban: you need to keep in mind that subroutines (infixes etc) are also lexicals
skids brrt: Maybe. The only place I have found it lacking so far is in the size field of the padding in some checksum algs.
brrt but from what i do know it uses libuv which uses os threads which may use multiple cores
but ... what about the 'unix answer' - forking?
arnsholt If you fork, you need to set up communication to share data over 14:29
rurban FROGGS: I have no idea about the nqp and perl6 compilers. you still need to implement concurrency there
arnsholt (Assuming you can't do it shared-nothing)
brrt which you also need to do if you use threading, just differently
FROGGS but anyway, I won't touch parrot's threads this year anyway... not that I get encouraged by any party to work on that at all 14:30
rurban Well, you killed parrot hereby, so you lost the concurrency game anyway
brrt rurban - for what it's worth, i do see the point of parrots type of concurrency; it is easier to see how it works out with a completely mutable world 14:31
FROGGS rurban: I have not killed anything
rurban but you already killed it it before Austin, with the same non-understanding. it was already over then
not you, diakopter and pmichaud
moritz I see we aren't in the "do we still want parrot?" phase, but in the "who killed parrot?" phase 14:35
FROGGS rurban: if you talk about MoarVM, the decision to do that proved to a very good one
it proved to be the fastest and more feature rich backend
moritz I mean, a healthy project would just go and say "we'll find other users" 14:36
brrt it is really a shame that the whole parrot story became so divisive
FROGGS and I think it is unfair that I get shouted at "you!" when I always speak pro parrot and when I make promises to support it and work on ports to it
moritz hugs FROGGS 14:37
14:37 adu joined
rurban FROGGS: nothing against you. "You" meant perl6 here 14:38
rurban hugs FROGGS also
moritz that's a convenient person to blame, that perl6 14:39
donaldh For what its worth, I tried working on parrot and tried contributing. The experience sucked for me. I haven't contributed a line of code to MoarVM. I actively enjoy contributing to the JVM backend of nqp.
yoleaux 2 Feb 2015 18:36Z <[Coke]> donaldh: - if you can help me get a perl 6 eclipse plugin working, I can start implementing work build stuff in perl6. would be super nice.
FROGGS rurban: a hug now does not help my with my problems when I tried to get a proof a concept working for threads... you need to support your users if you need to keep them
brrt i'm hesitant about adding myself as a potential student for JIT projects, it might discourage others?
tadzik brrt: why would it?
14:39 Mouq joined
tadzik oh, as a candidate for a particular project? 14:40
rurban It's just sad that perl6 will have no concurrency advantage over other languages then. erlang and clojure being the only realistic, fast option, or Go with copying messages.
brrt yes
14:40 kaleem_ left
tadzik well, it might discourage people from applying for the same project as you, yes :) 14:40
brrt right 14:42
rurban FROOGS: sorry, I cannot help with nqp
brrt ok, i'm going to rewrite 2) to be a bit more broad
FROGGS gives up
Ven Go has worse concurrency stuff that some stuff in the 90s 14:46
btyler and yet is wildly popular and finding usages all over the place :)
FROGGS marketing
14:47 rurban1 joined
FROGGS when Samsung would announce a new programming language they had a few thousand hackers for free 14:47
14:48 raiph joined
btyler yeah, maybe. I like to think google hasn't infiltrated my brain so heavily that it is generating the sense of fun and enjoyment I have when writing ssh daemons in go :) 14:48
but very possible I wouldn't have even tried it without the google backing
Mouq is very excited to see Rust stabilizing, though he still hasn't been able to fully grok lifetimes 14:51
moritz I think go has a good compromise between not-too-bad or even good concurrency and familiarity
btyler I only mean to say to Ven -- try not to dismiss things that people like just because better things came before. go is hitting it big for a reason that I don't think is entirely due to google's marketing power
Ven btyler: I'm always too provocative in my one-liner statements 14:52
moritz yes, erlang may have better concurrency support, but it has unfamiliar syntax, unfamiliar vocabulary, and an unfamiliar programming model
btyler those dang one-liners and their lack of nuance
FROGGS Ven: because lax is enabled by default? :o)
Ven *g*
btyler it's worth noting that a lot of the early go publicity consisted of rob pike basically giving lessons on concurrent programming, incidentally using go 14:53
Ven I tried to do some go. But "interface{}" everywhere made me go mad. I can't program without abstractions, and I strictly refuse to use `void*` in 2015 (unless it gets me fired from my school)
psch \o
gist.github.com/peschwa/4fe16e5c5aa2e5b8370c # found this will adjusting the .trans and tr/// PR 14:54
Ven There's so many things I think are *WRONG* in Go I just get annoyed instantly. It just irks me somehow.
psch getlexcaller through a multi method seems to not work correctly is the gist of the gist
Ven It's like when everybody was hyping node's event model and stuff. It felt wrong. If you think about it, really, there's nothing that ought to generate such hype about it 14:55
psch unless there's something else i didn't think of or don't know :)
Ven btyler: Everytime I discuss Go with some friends of mine about its drawbacks and pitfalls, they just say "well it doesn't seem to be an issue for guys like robe pike" and that's incredibly annoying
btyler Ven: except that there was an http server implementation on the front page in 6 lines 14:56
(re node)
brrt Ven - you may have annoying friends
Ven btyler: it was using a (core) library
brrt or possibly, you may be annoying your friends
btyler and that is incredibly compelling if what you know is python and django and php
tadzik one does not implement http server in 6 lines unless you just import a readymade module for it
Ven it's easier in php. I don't think that's compelling
tadzik http server in python, following that logic is just python -m SimpleHTTPServer, done 14:57
btyler I humbly posit that the fact that it uses a library matters essentially not at all
brrt what tadzik said :-)
Ven ^
btyler it comes with the platform, it counts enough as core
Ven if I'm allowed to use libraries, I can probably serve you a static page in 6 lines as well ;-)
in c++*
moritz system('apachectl', 'start')
Ven :D 14:58
btyler again, I'm not saying it makes sense
brrt but... the other hand is that channels really are a pretty good (as in, understandable and effective) way to concurrency
btyler but node was wildly successful in reaching a huge audience
Ven moritz: tinyhack.com/2014/03/12/implementin...intf-call/
btyler and writing it off as hype-driven tech is missing some lessons in how to get people excited about your work
muraiki yeah, I just read an article about the new bbc website. they evaluated using node, clojure, and scala... they went with node, one of the reasons being something like "everyone has to know js anyways, so there's less context switching" 14:59
btyler ditto go
brrt what bugs me about node is that people were given a way to create callback-based network services in javascript, and what they did was build websites for gullible VCs
15:01 TgMts left
brrt (also, conceptually i think supplies and promiser are quite close to go's channels) 15:01
Mouq
.oO( while [ 1 ]; do; echo My Page | nc -l 3000; done )
15:02
Ven btyler: I've been doing node for, maybe 4 years now? I *would* feel much more confident writing it off as a hipster tech than go :)
brrt you know what is hipster tech? 15:03
the whole gulp / grunt / sass / whatever BS that has to run *before* node can even run
Ven *g* 15:04
brrt all problems in CS can be solved by another layer of indirection; too bad somebody didn't realise that 'restarting a web server when a file changes' isn't really a typical CS problem 15:05
brrt goes back to doing useful stuff
btyler what I'm getting at is there needs to be some wariness about falling into smug lisp weenie-ism. writing off major recent examples of successful language adoption as crappy tech is a great way to wind up wondering why nobody is using your cool thing 15:06
Ven btyler: I prefer my concurrency tools in haskell and racket a thousand times more than those in go, really. I don't think there's any revolution. the papers about this kind of primitives are from the 80s or 90s, and got implemented in obscure languages but didn't take off at that time
btyler anyways, apologies, back to productivity
15:06 donaldh left
Ven brrt 15:07
whoops. 15:08
brrt yes? :-)
Ven brrt++: proceed :P
btyler: well, we can certainly use that to prepare our success in the programming languages world
muraiki btyler: I've tried arguing the same thing in this channel before, to a similarly lukewarm reception :) 15:10
Ven btyler: I'm just saying my experience in go has been *very* unpleasant because I always felt cornered by the language. It has this java feeling to it. "there's only one way to write it"
btyler by design, to great and warm reception by the loads of python programmers who try it out :) gofmt is a major -bonus- to many people using go 15:12
Ven btyler: clang-format is pretty good, also :P. I agree about the "gofmt", but that was a bit beyond my point 15:14
I just don't feel, errrr, creative? maybe an overuse of that word
I'm probably not in the correct mindset, though... But when I start writing something, I'm like "this could be abstracted neatly here" but nope, this can't happen in this language 15:15
brrt that's interesting
some people view abstraction as a tool. others view it as an essential prerequisite for self-expression
Ven It's like in java. I feel like I have to go through so much to get my point across 15:16
brrt FROGGS: i'm done, by the way
FROGGS brrt++
15:16 FROGGS left
Ven I'm strongly convinced "factories" wouldn't have been so big in java if the language had had lambdas before. which it really should've 15:16
brrt runtime makes very little distinction between those 15:18
Ven brrt: I feel strongly about "abstraction", but there's a bit difference between a monad and a beansingletonfactoryfactory. 15:20
skids Tht's not real Java without the word "Enterprise" in every identifier 15:21
brrt :-) 15:22
brrt afk
15:22 brrt left
Ven (a "factory" is a bad kind of abstraction, in this case :P) 15:22
lizmat .tell [Coke] reverting 39d7c52bb5db8b fixes failing tests for me on parrot 15:24
yoleaux lizmat: I'll pass your message to [Coke].
moritz ah, we can remove all of them after the release anyway 15:25
15:27 grondilu left
masak I've never quite seen the point of factories. 15:28
moritz std: :10<1*2**-64> 15:30
camelia std f9b7f55: OUTPUT«===SORRY!===␤Base is missing ** exponent part at /tmp/6DYP7PNPam line 1:␤------> :10<1*2⏏**-64>␤Malformed radix number at /tmp/6DYP7PNPam line 1:␤------> :10<1*2**⏏-64>␤ expecting any of:␤…»
moritz masak: that's where your iphone was made :-) 15:31
15:31 Rounin left
moritz masak: also, have you seen that HPMoR Chapter 105 is out? 15:31
skids So, how far is rakudo from running on NaCL? JOOC. 15:32
PerlJam 105? The last one I remember reading was 102
good morning btw
moritz skids: it mostly runs on silicone, I believe :-)
dalek kudo/nom: 7970ff8 | lizmat++ | src/core/Numeric.pm:
Revert "Remove parrot ifdef fossils"

It's breaking some tests on parrot. Keep these until at least after 2015.02
15:38
skids moritz: Well, that would make for some pretty introspectable breast implants I guess. 15:39
hoelzro o/ #perl6 15:40
15:40 spider-mario joined
hoelzro m: try { !!! ; CATCH { default { say $_.WHAT } } } 15:41
camelia rakudo-moar 5bb194: OUTPUT«(X::AdHoc)␤»
hoelzro should .../???/!!! fail/warn/die with a special type of exception? something like X::Stub or something? 15:42
moritz yes, could be a subclass of X::AdHoc 15:43
though of the argument is an Exception already, that should be thrown instead
[Coke] lizmat: I tested all those on OS X before committing, spectested everything, even split up the unfudging so I could track down the ones with the various issues that were documented in the commit. unfortunate.\
yoleaux 15:24Z <lizmat> [Coke]: reverting 39d7c52bb5db8b fixes failing tests for me on parrot
15:43 davido__ left
lizmat [Coke]: fwiw, the failures *only* exist when the test run under a harness, like with "make" 15:44
[Coke] Not saying you should re-commit it, but I'm just sad. :|
lizmat: I ran the tests with 'make spectest' each time.
lizmat running them in the nude, like with perl6-p, they pass
[Coke] (did the full suite after removing each one.)
lizmat I just want to make sure we have a clean relase
*release rather
[Coke] yup, I get it. just sad. :) 15:45
15:45 davido__ joined
lizmat sorry, but when I'm wearing the release manager's hat, I need to be ruthless :-) 15:45
moritz lizmat++
[Coke]++ for removing it in the first place
[Coke]: and we'll get rid of it again soon after the release anyway 15:46
hoelzro moritz: should I open a PR against the spec to add that? 15:47
15:47 Ven left
moritz hoelzro: IMHO that's something that can be prototyped in rakudo first 15:48
hoelzro moritz: oh, ok 15:49
I'll prototype it there, then
dalek kudo/newio: d99fe0b | FROGGS++ | lib/NativeCall.pm:
pass an absolute libname for on jvm/osx

The library loader will not look in CWD for libs, but will instead pre-/append stuff and tries to look it up in system dirs. b95f6de | lizmat++ | src/core/IO.pm: Fix glitch in MAKE-ABSOLUTE-PATH
15:59
15:59 dalek left
lizmat sorry falek 15:59
*dalek
16:00 dalek joined, ChanServ sets mode: +v dalek 16:01 gfldex joined 16:08 FROGGS[tab] joined 16:10 Ven joined 16:12 hanekomu left 16:23 TgMts joined 16:28 kaleem joined
FROGGS[tab] can somebody with perl6-j on osx pass -Djna.library.path=/path/of/rakudo/ to the jvm runner an run a test from t/04/nativecall? 16:28
I have no osx box so I cant test :o( 16:29
lizmat FROGGS[tab]: will try
FROGGS[tab] ohh, thank you
lizmat path of rakudo what do you mean by that ? 16:30
FROGGS[tab] the build dir
lizmat the install dir? or the current dir?
FROGGS[tab] where the .dylibs end up being
cwd
lizmat ok, so as an absolute path, not just "." then
FROGGS[tab] dunno 16:31
lizmat hehe
FROGGS[tab] probably abs path
that's the safe bet at least
lizmat with "runner", you mean the script that is called perl6-j, right ? 16:34
FROGGS[tab] aye
lizmat and a rebuild is not necessary, right ? 16:35
FROGGS[tab] right
lizmat no change
FROGGS[tab] gah
lizmat but specifying a wrong dir, doesn't give any errors 16:36
so I'm not sure
FROGGS[tab] can you paste your runner and the output of the test run?
lizmat ok, I may have patched the wrong runner ? 16:38
FROGGS[tab] depends on which you are using :o)
16:39 aoeuhtns joined
FROGGS[tab] when you run it without ./ you have to patch the installed one 16:39
16:40 alini left 16:41 echowuhao joined
lizmat gist.github.com/lizmat/87b2db1a6d058dc8c21e 16:41
16:43 kaleem left
FROGGS[tab] well, that really looks like you have patched the wrong runner 16:43
can you patch the installed one? 16:44
hoelzro I seem to remember talk of a CI system for Perl 6 modules; did anything ever come of that? 16:45
would the community find value in such a system?
I was thinking that building something like rust-ci.org/ wouldn't be too hard 16:46
FROGGS[tab] I think so
hoelzro and it would be a good motivation to get a Mojolicious port working =)
lizmat FROGGS[tab]: why do you think I patched the wrong one? your extra param is at the end
I even added an echo before to make sure it was the right one
and it showed 16:47
FROGGS[tab] ohh, I expected a linewrap and did not spot the end of the line
kudo/newio: f17f88b | lizmat++ | src/core/IO.pm:
Fix regression in MAKE-CLEAN-PARTS
lizmat the runner is basicallly a single line, didn't want to change that :-) 16:48
FROGGS[tab] lizmat, can you remove the "./" and the ".dylib" from that test file? 16:49
lizmat there's no .dylib in the test file ?? 16:51
FROGGS[tab] true 16:52
ohh, tht
that happens in NativeCall.pm
gah, I ned an osx box -.- 16:53
need*
16:59 echowuhao left 17:02 larion left
masak m: my declared $ = 0 17:10
camelia rakudo-moar 7970ff: OUTPUT«===SORRY!===␤Type 'declared' is not declared␤at /tmp/N7rg2Ntw9D:1␤------> my declared⏏ $ = 0␤Malformed my␤at /tmp/N7rg2Ntw9D:1␤------> my ⏏declared $ = 0␤␤»
masak lies! :P
m: my not-declared $ = 0
camelia rakudo-moar 7970ff: OUTPUT«===SORRY!===␤Type 'not-declared' is not declared␤at /tmp/ewyg1onhB3:1␤------> my not-declared⏏ $ = 0␤Malformed my␤at /tmp/ewyg1onhB3:1␤------> my ⏏not-declared $ = 0␤␤»
masak stares down the compiler 17:11
moritz: ch105 is out. I read it at 02:10 local time.
TimToady The computer strikes --(MORE)--
arnsholt Use-mention, my old nemesis, we meet again!
masak moritz: not as good as ch104, but still good.
TimToady You lose 13 hit points
masak arnsholt: "Use-mention", my old nemesis, we meet again! :P 17:12
timotimo maybe we should try to match the parts of the error message that the user can change against the parts that are static in the exception object and if there's significant match-up we'll add "(haha, i see what you did there)" somewhere
arnsholt masak: Le sigh. English really needs a vocative case =D
17:12 diana_olhovik_ joined
masak arnsholt: O mouse! 17:12
rurban: you should charge money for your "Parrot threads are better" routine. 17:15
17:16 Kristien joined
Kristien hi 17:17
[Coke] I don't think the discussion about parrot threads is really helping anything at this point, folks. 17:20
masak Kristien: oh hai
timotimo i'd like a few voices on the "enormous bootstrapping stage written in nqp" comment rurban made in the reddit comment thread here: www.reddit.com/r/perl6/comments/2w...or_parrot/ 17:23
[Coke] timotimo: I'm not sure it'll do anything other than create smoke. 17:26
timotimo rurban: i don't think i really understand this about the proxies in parrot that are used for threading: at what point does the "owning" thread check if there are any outstanding accesses to objects it owns?
AFK for a bit 17:27
flussence I think the best possible response to any perl6 thread chromatic's involved in is stony silence.
arnsholt flussence: Agreed 17:29
itz flussence++ 17:30
masak some part of me is sad that we lost chromatic. he sure seems to have spare time he could've spent contributing. 17:36
itz I know of at least one "anti-sixer" who returned to the fold in the last year :) 17:37
lizmat itz someone we know ? 17:38
masak .oO( iz it someone we know? ) :P
itz well I spoke to $certain_person last FOSDEM and he was quite negative about 6 and he spoke on it this one :) 17:39
lizmat seriously: I know from personal experience what it means to have your project, on which you spent a good part of your life, go down the drain into oblivion 17:40
it hurts, *every* time
itz . o O ( sorry $certain-person ) 17:43
17:44 Kristien left 17:46 kjs_ left, xfix left 17:48 Ven left 17:49 Ven joined 17:50 rurban left, Ven left 17:51 fhelmberger left 17:52 Rounin joined, perl6_newbee joined 17:53 virtualsue left
perl6_newbee hi all 17:54
can someone explain how to create a module with just sub exported?
tadzik sure 17:55
can I point you to an example?
perl6_newbee off course
17:55 xfix joined
tadzik github.com/tadzik/perl6-Term-ANSIC...lor.pm#L38 this is probably the easiest one I have :) 17:55
or maybe github.com/tadzik/Text-T9/blob/mas...Text/T9.pm 17:56
this one is even smaller
17:56 TgMts left
tadzik basically: have a file that says 'module your-module-name;" on top, and then have a sub foo() is export {} 17:56
perl6_newbee cool thx tadzik
tadzik you're welcome :)
perl6_newbee gread. I love Perl6 :-) 17:57
great
thx
and it just works ^^ 17:58
However, is there a change to get a Perl6 module for COmmand Line Argument parsing like Getopt::Long? 17:59
tadzik yes, that's built-in these days
let me find something for you
perl6advent.wordpress.com/2010/12/...main-subs/ there's some 18:00
perl6_newbee hmm, the sub MAIN(...) handling is handy, but I think it is not so powerfull like Getopt::Long, is it?
tadzik any particular thing you're missing?
18:01 dakkar left
TimToady m: / \ / 18:01
camelia rakudo-moar 7970ff: OUTPUT«===SORRY!=== Error while compiling /tmp/OEzxNtSLvy␤No unspace allowed in regex; if you meant to match the literal character, please enclose in single quotes (' ') or use a backslashed form like \x20␤at /tmp/OEzxNtSLvy:1␤------> [32…»
TimToady japhb: ^^^ you're wrong on the internet :) 18:02
perl6_newbee hmm. not at the moment. If you say its comparable with Getopt::Long, then I am fine with it
tadzik I'm not a poweruser of Getopt::Long, but I never found myself missing some feature in MAIN 18:03
oh, except one thing, actually
github.com/tadzik/panda/blob/maste.../panda#L14 this
dalek kudo/newio: 1c3d562 | lizmat++ | src/core/ (2 files):
Move TRANSPOSE(-ONE) to more suitable place
18:04
tadzik by default flags can only come before positional arguments
perl6_newbee sorry, what does Line 15 do? its grep all strings starting without '-', then greps all string with a '-' and stores them in args array. 18:09
time to start the perl6 REPL :-)
tadzik perl6_newbee: it moves all the words starting with - before the ones that don't :)
timotimo right, the "," operator there can be thought of as "list concatenation" 18:10
perl6_newbee ah I see
clever
tadzik hoelzro, hoelzro, wanna see a sailfish app? :)
timotimo so switches never have arguments to them, tadzik?
tadzik oh, you don't use it anymore, nvm :)
timotimo: heh, apparently :D
or there are undiscovered bugs 18:11
timotimo :)
tadzik multi MAIN ('smoke', :$exclude = 'panda')
the latter
good catch
b2gills I still don't understand the reason switches had to be the first arguments 18:12
tadzik me neither 18:13
timotimo <3
masak that makes three of us.
timotimo i have that same HUH, too 18:14
tadzik timotimo: it makes me think that I should make a module that does it right, so no one else has to make that mistake again
timotimo yeah
tadzik or we can just fix the spec :P
after hearing the rationale
timotimo here's another module i want to write, btw: offering a TUI that consists of a line for input and the rest of the screen is output from the program
so that you can asynchronously push messages to the screen and still have proper line-editing input for the user 18:15
18:15 espadrine_ left, grettir joined
perl6_newbee ok, its a bit off toppic now, but i will stick with MAIN. THX tadzik 18:16
18:17 perl6_newbee left 18:18 kjs_ joined 18:21 Ven joined 18:25 Kristien joined 18:33 khisanth__ is now known as Khisanth, FROGGS joined 18:34 wicope left 18:35 _mg_ joined 18:38 wicope joined
flussence timotimo: that road leads to madness and window managers... 18:39
18:39 rurban joined
dalek kudo/newio: 6a0b40d | lizmat++ | src/core/Str.pm:
Make Str.trans("f","t") 2x as fast

By repurposing the internal TRANSPOSE-ONE helper sub
18:43
18:43 Peter_R left 18:45 Peter_R joined 18:47 kjs_ left 18:50 larion joined
tadzik flussence: nah, we can quit whenever we can! :P 18:51
18:53 Ven left
dalek kudo/nom: 3ab11b4 | lizmat++ | src/core/Str.pm:
Backport TRANSPOSE(-ONE) from newio branch

We probably want the generic speed increases in 2015.02 already
18:53
masak you know what would be hilarious? a bot that activated when dalek gets flood-booted, and prints out the rest of the commit message :P 18:57
sergot :D 18:58
dalek kudo/nom: 0f73e0f | lizmat++ | src/core/Str.pm:
Make Str.trans("f","t") 2x as fast

By repurposing the internal TRANSPOSE-ONE helper sub
18:59
tadzik :D
lizmat+
lizmat++
timotimo m) 19:00
hoelzro tadzik: sure!
timotimo lizmat++
Kristien Thanks to tadzik I want tzatziki. 19:06
timotimo :D
tadzik :D
nwc10 what's up with slowhub? 19:08
it hasn't been slowhub for ages 19:09
tadzik seems to work for me
nwc10 OK, maybe it's "my" machine...
tadzik or your network region
masak or your region of the galaxy 19:10
nwc10 timeouts randomly about 20% of the time
yes, might be my part of the galaxy
timotimo status.github.com seems fine
19:10 telex left
dalek kudo/cpp: 0ec61df | FROGGS++ | / (3 files):
start adding C++ support to NativeCall
19:10
Kristien timotimo: it doesn't here 19:11
19:11 rindolf left 19:12 telex joined 19:13 sqirrel joined, virtualsue joined
timotimo oh? maybe i'm not interpreting the data right, then 19:13
Kristien i.imgur.com/EJO1su3.png 19:14
timotimo huh?
i don't get anything like that
even after reloading afresh
Kristien Me neither. I'm just kidding.
19:14 zakharyas left
nwc10 nor do I 19:14
timotimo ooooh
you got me there %) 19:15
PerlJam Kristien: way to be disruptive! :)
nine_ Would have been easy to find out if they used proper time stamps instead of "user friendly" relative time 19:16
timotimo hehe.
well, you can hover your mouse over it 19:17
and see the exact timestamp
Kristien relative user-friendly timestamps? pfft, ruby hipsters
dalek kudo/cpp: a29d33f | FROGGS++ | t/04-nativecall/11-cpp.t:
fix path to C++ test library source
timotimo rurban: i'm sure i'm not interpreting what you wrote correctly; parrots runloop currently has to start a whole new interpreter for each method? 19:19
the whole paragraph kind of stumps me, to be honest
nine_ We had to add the same crap to our intranet. So a customer calls and has a question about an invoice dated July 13th and the poor accountant had to hover her mouse over a long list of invoices dated "4 months ago" to find the one. Good thing we added a hidden setting (just for me and the test suite) to get the old behavior.
FROGGS nine_: *g*
human friendly done wrong 19:20
nine_ Yes it was our web designers who petitioned for that "feature".
timotimo <3 19:21
19:21 colomon left
FROGGS I also put in a feature like that two weeks ago... 19:23
it is for our technicians and it only shows "n hours ago" in case it is less than 8 hours ago
everything else is displayed as timestamps
jdv79 jira does the same thing - prints vague time string and hover gets the exact 19:24
works great on mobile or touch device i imagine
b2gills Something like that is fine if you are only going to visually scan it
jdv79 i would at least like a user option to flip it 19:25
i need the exact time almost always
usually trying to triage what just went wrong and i need to compare the time with some other source of change
19:30 abraxxa left
muraiki "within the last fortnight" 19:31
19:35 colomon joined
nine_ OTOH I love KDE's fuzzy clock ;) Especially when it tells me that it's "Almost noon" at 9:30 :) 19:35
timotimo :D 19:38
tadzik haha, an optimist clock. "It's almost 17:00!" 19:39
moritz hobbit clock, "time to eat!" 19:41
19:42 Ugator joined
moritz fwiw p-spectest here fails S19-command-line/repl.t 19:43
Badplan, you planned 1 test but ran 0
masak .oO( nanananananana -- Badplan! )
moritz itz: pl6anet.org/ doesn't seem to have picked up pmthium.com/2015/02/suspending-rakudo-parrot/ 19:44
dalek ar: 28cb7b1 | moritz++ | / (4 files):
Remove NativeCall

starting from 2015.02, it ships with rakudo itself
19:51
flussence I like how `dmesg -H` shows timestamps - it's the same as what FROGGS described, but scaled down an order of magnitude. 19:52
19:53 _mg_ left 19:54 grondilu joined
grondilu FROGGS++ work on C++ NativeCall 19:54
hoelzro FROGGS++ 19:56
flussence FROGGS++
FROGGS O.o
itz odd pmthium.com/category/perl6/feed/ doesn't have the posting 19:57
flussence (if that ends up being as straightforward as the C bindings, we may have a "killer feature")
dalek kudo/nom: 9bf52eb | lizmat++ | src/core/Str.pm:
Make Str.subst(Str,Str,:global) about 12x faster

By using the TRANSPOSE helper sub
19:57 _mg_ joined
lizmat not sure if that affects s:g/// as well 19:58
nwc10 itz: might be an implementation bug/artefact. IIRC he psoted it, then pulled it, and then reposted it some days later. I think on the same URL. That might confuse the feed thingy
masak oh, I had missed that.
why was it pulled?
Kristien one problem I always have with FFIs is using types defined in C 19:59
like off_t
FROGGS masak: he wanted to talk to #parrot first
Kristien they're not well-defined so you have to include the headers in which they are defined in order to use them
but FFIs typically don't allow you to do that
hahainternet they don't? 20:00
Kristien can you include a C header in Perl 6?
masak FROGGS: he did. he posted a gist draft at #parrot first.
FROGGS Kristien: this will look like: my native off_t is repr("P6int") is Int is ctype("off_t") { };
hahainternet Kristien: i've no idea, but i am doing so in golang 20:01
itz nwc10: I think its on another RSS feed not the perl6 specific one
hahainternet that's because it creates its own c
Kristien yes Go allows it
FROGGS Kristien: though, atm the VM must be aware of all of these ctypes in beforehand
hahainternet there's no reason p6 can't
Kristien but Haskell doesn't, and neither do Python and Ruby for as far as I know
FROGGS: OK
nwc10 irclog.perlgeek.de/perl6/2015-02-04#i_10060971 - 19:17
itz ah its there now
nwc10 irclog.perlgeek.de/parrot/2015-02-04#i_10061006 - 19:22
Kristien One could possible implement it with libclang though that's quite heavyweight and requires the headers to be available on the machine of the user. 20:02
itz moritz: fixed
20:03 [Sno] left, vendethiel joined
[Coke] is bummed that yapc is again too early to take the family. 20:06
masak yapc::eu?
[Coke] there were about 2 years (a long time ago) when it was after the kids got of school for the summer.
NA
moritz YAPC Not Available :-) 20:07
nine_ masak: thanks to you I now have the Batman theme playing up and down in my head 20:10
20:10 Rounin left
hahainternet nine_: which theme? 20:13
if it's not from the 70s and grey, it's nothing 20:14
moritz hahainternet: please no cultural elitism
hahainternet moritz: :D
now i can't stop the spinning transition chime from playing in my head 20:15
nine_ moritz: the one with the occational POW! :0 20:18
dalek kudo/nom: c81abe2 | FROGGS++ | lib/NativeCall.pm:
fix lib loading for NativeCall on JVM on OSX
20:24
FROGGS lizmat: ^^
-.-
lizmat FROGGS will check right away 20:25
20:26 darutoko left
dalek kudo/newio: 3ab11b4 | lizmat++ | src/core/Str.pm:
Backport TRANSPOSE(-ONE) from newio branch

We probably want the generic speed increases in 2015.02 already
20:26
kudo/newio: 0f73e0f | lizmat++ | src/core/Str.pm:
Make Str.trans("f","t") 2x as fast

By repurposing the internal TRANSPOSE-ONE helper sub
kudo/newio: 9bf52eb | lizmat++ | src/core/Str.pm:
Make Str.subst(Str,Str,:global) about 12x faster

By using the TRANSPOSE helper sub
kudo/newio: c386f34 | lizmat++ | src/core/Str.pm:
Merge branch 'nom' into newio
20:26 kjs_ joined
moritz ok, weird things are weird. It looks like perl6-p REPL prints the 20:27
prints the '>' to STDERR
whereas ./perl6-m >/dev/null hangs and doesn't react to Ctrl+C or Ctrl+Z 20:28
20:28 abraxxa joined, abraxxa left
lizmat FROGGS: much better now, but got things like: 20:29
Parse errors: Tests out of sequence. Found (2) but expected (1)
Bad plan. You planned 3 tests but ran 1.
:-( 20:30
FROGGS lizmat: aye
lizmat which would be the other problem
FROGGS I just wanted to say, there is a buffering problem when we say() from P6 and printf() from C
but, I got that too, I'll will either provide a fix or a workaround
20:30 bjz left
FROGGS I mean, that's not an error with nativecall 20:31
lizmat indeed
FROGGS and it only happens when you run `make j-test`
prove etc does not have this kind of issue
ohh, I perhaps know why it happens...
we merge stdin and stdout in t/harness 20:32
lizmat confirmed that all NativeCall tests run fine by themselves
FROGGS++
FROGGS and that bloody KERNEL/DISTRO thingy! >.< 20:33
I guess I'll memorize the distinction now :o)
20:34 FROGGS[tab] left
lizmat aha! 20:34
ok
maybe needs backporting to the Zavolaj repo ? 20:35
FROGGS lizmat: that got cleared
lizmat ok :-)
problem solved :-)
FROGGS :o)
there is no going back :P
and the future is bright
moritz FROGGS: though next time that you make such a change, please either do it in a branch, or shortly after a release (not before one) 20:36
lizmat :-)
FROGGS moritz: well, it was in a branch 20:37
20:38 sqirrel left
FROGGS the problem is, the issues/mails about: "halp, I cannot build NativeCall or Inline::C" increased 20:38
and keeping that for another month is also not good
and, this way the issues for parrot and jvm got solved (issues that perhaps nobody was aware of, but still)
moritz a non-nom branch 20:39
FROGGS okay, we did know about the parrot problem... (we even had messages in the star announcement)
moritz: ohh, I did not put it in a branch... true 20:43
I mixed up with the other do branches I messed with :o)
(longer and cpp)
Mouq Do we want NativeCall tests to be in Roast? 20:49
20:49 virtualsue_ joined 20:50 virtualsue left
[Coke] depends on if they're spec or just a really really handle rakudo thing. 20:50
*handy
rjbs ? 20:51
oops, ww
timotimo there's a design document that covers NativeCall
lizmat Mouq: no, because they are implementation specific to rakudo
timotimo but it's more or less a description of what NativeCall does
FROGGS lizmat: the api is not rakudo specific
the is native trait is even in the setting, not in rakudo, mind 20:52
lizmat FROGGS: I can't fine "is native" in core setting ?
20:53 virtualsue joined
FROGGS ohh, wait, is nativesize is in there 20:53
lizmat yeah, but not "is native"
20:54 virtualsue_ left
FROGGS yeah... that needs the Native role the NativeCall module provides 20:55
20:56 _mg_ left
arnsholt If we want NativeCall to be part of the core language, we need to include tests for it in Roast 20:57
(Not likely to happen for 6.0 in my estimation)
The problem is figuring out NativeCall tests that can actually go in roast
ATM, we're dependent on being able to compile libs with test functions, which in turn relies on Rakudo (and even backend) specific stuff to get the right commandline to compile stuff 20:58
FROGGS yes, does roast require a C compiler in future for everyone? I hope not 20:59
lizmat arnsholt: there are tests, but in "make test"
that's good enough for me for 6.0
FROGGS so, let's keep it the way we have it now, until we have a strong reason to etst it
change it* 21:00
moritz eats freshly caramelized chestnuts
Kristien When I read "chestnuts" I imagined something very weird. 21:01
21:02 kjs_ left
arnsholt FROGGS: Exactly. And making tests to test eveything using only C stdlib doesn't sound fun 21:03
FROGGS aye
grondilu there are other possibilities than stdlib
21:03 kjs_ joined
nine_ Discussion about Perl 6's infix ^^ operator and short circuiting: lwn.net/Articles/633648/ 21:08
grondilu wth I totally did not know about this one. 21:11
TimToady infix:<^^> is really one()
if you want parity, you can always use ?^ instead 21:12
21:12 kjs_ left
grondilu m: say .WHAT given 1 ^^ 2 21:14
camelia rakudo-moar 9bf52e: OUTPUT«Nil␤»
grondilu it does not return a junction though.
21:14 kjs_ joined
grondilu m: say .WHAT given one(1, 2) 21:14
camelia rakudo-moar 9bf52e: OUTPUT«(Junction)␤»
TimToady oh, I guess that's infix:<^>, duh
grondilu m: say .WHAT given 1 ^ 2
camelia rakudo-moar 9bf52e: OUTPUT«(Junction)␤»
TimToady still, it's "one" semantics, not parity
Mouq m: 1 ^^ 1 ^^ say "oops"
camelia ( no output )
Mouq m: 1 ^ 1 ^ say "oops"
camelia rakudo-moar 9bf52e: OUTPUT«oops␤»
Mouq m: 1 ?^ 1 ?^ say "oops" 21:15
camelia rakudo-moar 9bf52e: OUTPUT«oops␤»
moritz people link to doc.perl6.org \o/
grondilu makes sense since junction operators are one character long.
arnsholt grondilu: What other options do you have in mind?
Mouq m: 1 xor 1 xor say "oops"
camelia ( no output )
TimToady xor is just low precedence ^^
grondilu arnsholt: don't know. gmp, ssl, X11...
Kristien If you put a block of Perl 6 code in a regex can you detect whether it is backtracking? 21:16
arnsholt grondilu: One word: Windows. =)
FROGGS grondilu: on wind... yeah
grondilu yeah I forgot about that indeed.
grondilu tends to forget not everyone uses *nix
TimToady Kristien: blocks are only executed on forward, but you can tell if you revisit a spot going forward
21:17 [Sno] joined
Kristien Ah right. 21:17
arnsholt The existence of jnthn keeps me honest in that regard =)
Kristien Sounds a little cumbersome though.
e.g. when parsing context-sensitive grammars
FROGGS grondilu: and the good and important thing about nativecall is: it just works even on that forgotten platform :o)
TimToady if you want to remember something, it should be stored in the cursor, and then it automatically goes away when the cursor is discarded; therefore throwing things away explicitly is a code smell 21:18
Kristien Oh cool. 21:19
21:19 rjbs left
skids m: role A { my @a := Any }; class B does A { } # LTA error 21:19
camelia rakudo-moar 9bf52e: OUTPUT«===SORRY!===␤Could not instantiate role 'A':␤Type check failed in binding; expected 'Positional' but got 'Any'␤»
skids Oh, that's different. Still not TA 21:20
21:20 coffee` left
skids (As no line number) 21:20
grondilu nativecall might be an extremely useful module in the future. Has it been considered to put it in the core? 21:21
lizmat grondilu: it is now
TimToady it's already been decided to do that
grondilu I mean in a way we don't have to write 'use NativeCall;'
lizmat you just have to activate it, with "use NativeCall"
Kristien lol
lizmat ah, hmmm....
TimToady we might get some relief on that, if it makes sense 21:22
especially if we introduce some kind of 'use native "mylib";' notation
Mouq votes for keeping the use; it's a case where I definitely want to know if there's external dependencies upfront
TimToady: In that case, then I'd be fine with core 21:23
grondilu TimToady: what about something like: use <mylib>, :C ?
(I mean sending :C as an option to "use")
FROGGS that looks sad
TimToady it does :)
grondilu yeah but that could be generalized to other languages 21:24
FROGGS we have :from<C> for that perhaps
arnsholt I'm not sure how we'd implement 'use native "mylib"' though
FROGGS arnsholt: me neither
grondilu oh, yeah, that works too
arnsholt Getting the list of symbols isn't completely impossible, but figuring out the signatures is a different matter
grondilu we may require headers 21:25
TimToady was merely suggesting to factor out the 'is native "mylib"' that is just boilerplate
arnsholt Oh, right!
That's a lot less impossible, yeah!
TimToady you guys keep sayin' how impressive the interface is, and I keep seeing all this violation of DRY
FROGGS TimToady: how do I declare a native sub and a regular sub then, when I leave off the trait?
grondilu DRY? 21:26
FROGGS do I get a new keyword?
moritz grondilu: Don't Repeat Yourself
FROGGS you can't say that again
moritz my &n = curry_native('sqlite3'); n sub foo() { ... } 21:27
geekosaur heh
TimToady possibly it's a different declarator, or possibly it scopes somehow over the declarations it's meant to allow
21:27 kjs_ left
Mouq Could it just be that "is native "mylib"" does 'BEGIN $*NATIVE_LIB = "mylib"' and then subs with the "is native" trait and no arguments to it are assumed to be of $*NATIVE_LIB? 21:28
grondilu having to redeclare in Perl 6 is annoying anyway.
FROGGS Mouq: that's only half awesome :o)
TimToady well, it'd be an improvement
moritz grondilu: I think it's awesome, it lets you 'git grep' for the Perl 6 symbols
grondilu translating the C header to a Perl declaration is a job for a machine, not a human. 21:29
FROGGS and you never just call into C, you always have to abstract a little
moritz grondilu: I have no qualms with generated declarations, as long as there *are* declarations 21:30
TimToady when a C api gives you a string pointer and a length, you really, really want to combine those into a Str or Buf
21:31 Ugator left
TimToady same for arrays 21:31
C's pointer/array confusion is one of the all-time great language design botches
dalek kudo/nom: 9add92b | lizmat++ | docs/ChangeLog:
Add Str.subst being 12x as fast
grondilu on the other hand, I can understand that the Perl declaration must exist somewhere otherwise it's not easy to infer the perl interface from the C one.
FROGGS *g*
grondilu wow 12x improvement on a method as important as Str.subst is quite something. 21:33
FROGGS aye 21:34
lizmat++
21:38 xfix left
grondilu still, being able to use a library of a library from an other language (mainly C) in the same manner as we use a module in Perl 6 would be great. Having the C header being automatically translated in NativeCall Perl 6 declarations would nice, but it'd be even nicer if it was all mostly transparent. 21:38
lizmat grondilu: alas, it does not affect s:g///
for that I need to mingle subst-mutate
grondilu ok
lizmat and a way to indicate that it's called in sink context
m: my $a = "foof"; say $a ~~ s:g/f/bar/; say $a 21:39
camelia rakudo-moar c81abe: OUTPUT«「f」 「f」␤baroobar␤»
lizmat so we can do it without creating match objects
arnsholt TimToady: Yeah, that's really annoying. But I don't think we're able to abstract that away in an FFI API, as I suspect it's basically halting-problem complete to figure out when pointer+int is "one" argument and when it isn't
lizmat grondilu: that would probably be an Optimizer.nqp job
arnsholt The FFI plumbing has to expose it as it is, and then it's up to the wrapper author to provide a better API to the users of the library 21:40
lizmat to find any calls to subst-mutate, and check for :g and sink context, then pass an extra named to subst-mutate
dalek ast: deaf607 | usev6++ | S03-operators/misc.t:
Add test for RT #122654
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122654
grondilu notices that importing from an other language is already specced in S11
lizmat for which we could then do a separate multi
PSA: do we have a suggestion for a release name ?? 21:41
21:41 diana_olhovik_ left
lizmat PSA: possibly a very good one, as it will be the last that many parrot users will see for a long time? 21:42
grondilu in S11 there is a mention of 'use somemodule:from<perl5>'. Is the idea supposed to be limited to perl or can we imagine 'use somelib:from<C>;'?
lizmat grondilu: should be expandable
main problem atm is that it requires meddling with nqp code
I *really* like to see that lifted to P6 level
so that it can be modularized / pandaized 21:43
21:43 rurban left
lizmat on that note, I'm going to make it an early night for a change 21:43
grondilu I would have expected the main problem to be the generation of the P6 declaration from the headers, but you surely know better so ok
lizmat sleep&
moritz lizmat: maybe use a city as release name where parrots are observed in the wild? 21:44
21:45 rurban1 left
skids lizmat: "prolonged squawk"? Or something else from the python sketch I guess. 21:46
Kristien I teach parrots to swear in Dutch.
moritz skids: our release names are names of perlmonger groups, so usually city names 21:47
skids Well, the only geographic reference in the skit is "pining for the fjords" 21:51
21:52 gfldex left
masak .oO( NorwegianBlue.pm ) 21:55
21:56 rjbs joined, rjbs left, rjbs joined
FROGGS ohh dear 21:59
skids
.oO(Unless there's a city homonymous with "Praline")
22:00
22:00 Kristien left 22:03 kjs_ joined 22:05 FROGGS_ joined 22:06 Sqirrel_ left 22:07 FROGGS_ left, skids left
dalek c: fac770f | moritz++ | lib/ (2 files):
grammars: document action methods
22:07
22:08 FROGGS left
moritz beware of typos in the patch above; either my fingers are too tired, or my keyboard has started eating/withholding keystrokes 22:08
masak nine_: wow, so much disinformation in that lwn thread. 22:10
("Perl doesn't know Booleans as a data type", "how can anyone possibly short-circuit xor?")
jercos ...how *do* you short-circuit xor? 22:11
masak maybe doc.perl6.org/language/operators#infix_%5E%5E should have an extra caveat snapping people out of their assumption about how infix:<^^> behaves. 22:12
something like "Note that the semantics of this operator may not be what you assume: infix:<^^> flips to truthy after finding the first true value, and then flips to Nil *forever* after the second, no matter how many more truthy values there are." 22:13
22:13 kjs_ left
masak jercos: I believe that also answers your question. 22:13
jercos Yes it does. 22:14
masak as well as a lot of confusion in that lwn thread.
jercos The answer is "when you have more than two values", because it actually is exclusive or, not boolean parity.
masak right.
jercos Which is clever and useful, but probably unintuitive for a great many people. 22:15
masak it does make sense, insofar as the actual behavior is the one that's harder to emulate in some other way. (but still often useful.)
right.
jercos Oh well, can't make an omlette without breaking a few basic boolean assumptions
masak I confess to not understanding why it returns `Nil`, not `False`. 22:16
but I remember there being discussions (and some back-and-forth) on the matter.
moritz masak: patch doc.perl6.org?
jercos That seems to match the pattern of returning the first true value rather than just `True` 22:17
masak moritz: on it.
moritz ++masak
jercos Or rather, returning *the* true value. 22:18
22:18 betterwo1ld left
masak oh, right. Pod. 22:18
22:18 betterworld joined
masak decides to not be fancy with formatting :) 22:18
grondilu m: say 0 || 0
camelia rakudo-moar c81abe: OUTPUT«0␤»
grondilu ^ that does not return "Nil" 22:19
jercos m: say 0 ^^ False
camelia rakudo-moar c81abe: OUTPUT«False␤»
jercos m: say True ^^ True
camelia rakudo-moar c81abe: OUTPUT«Nil␤»
jercos So I guess it passes through the last value if none match, but Nil if too many match. 22:20
grondilu &<^^> does not always use one of his argument for its return value. It sometimes needs to make one. Thus it should return a true Boolean constant.
imho 22:21
dalek c: e64be53 | masak++ | lib/Language/operators.pod:
Insert caveat about infix:<^^>

Feel free to sharpen the wording further.
masak what dalek said.
grondilu (on the other hand &<||> also needs to make a return value sometimes, so dunno) 22:22
there seems to be an inconsistency here anyway.
masak grondilu: whentimes? 22:23
jercos When does || make a value?
masak both &[&&] and &[||] are monoidal operations, with obvious units (True and False, respectively)
grondilu oh sorry
masak &[^^] is not so clear-cut.
jercos so like...
m: say [||] ()
camelia rakudo-moar c81abe: OUTPUT«False␤»
masak m: say [^^
camelia rakudo-moar c81abe: OUTPUT«===SORRY!=== Error while compiling /tmp/63toQ4cksr␤Preceding context expects a term, but found infix ^^ instead␤at /tmp/63toQ4cksr:1␤------> say [^^⏏<EOL>␤»
masak m: say [^^]() 22:24
camelia rakudo-moar c81abe: OUTPUT«False␤»
masak makes sense, I guess.
grondilu I thought it had to create a False when returning False, but I was dead wrong.
masak but if that one can be False, I don't really see why the too-many case can't be, too.
jercos Well, it does pass specific information about the reason it's false through.
masak pfeh. 22:25
jercos But then it seems like there should be another boolean-false value to indicate a generated falsehood, rather than re-using Nil
masak that sounds like a three-valued logic trap to me.
jercos yeh, true, false, and FILE_NOT_FOUND
22:25 Kristien joined
masak "we must pass along extra information about *why* it failed!" -- no. ask a more specific question. 22:26
jercos Yeah I'm starting to feel like Nil might even be Wrong.
masak if that's *really* important (and I don't think it is), then something like `False but "you can't handle the Truth!"` could work instead of Nil. 22:27
grondilu wonders how to write &[^^](*@a) and thinks of multi &infix:<^^>(*@a) { my $a = shift @a; $a && none(@a) or &infix:<^^>(@a) } 22:35
22:41 kjs_ joined
grondilu realizes that's wrong 22:43
flussence m: unless fail('oh noes') -> $why { say $why }
camelia rakudo-moar 9add92: OUTPUT«Unhandled exception: oh noes␤ at <unknown>:1 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:throw:4294967295)␤ from src/gen/m-CORE.setting:14862 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:sink…»
flussence m: unless fail('oh noes') -> $why { say $why.perl }
camelia rakudo-moar 9add92: OUTPUT«Unhandled exception: oh noes␤ at <unknown>:1 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:throw:4294967295)␤ from src/gen/m-CORE.setting:14862 (/home/camelia/rakudo-inst-1/languages/perl6/runtime/CORE.setting.moarvm:sink…»
flussence I thought failures behaved themselves in a boolean context... 22:44
grondilu
.oO( multi &infix:<^^>(*@a) { my $a = shift @a; $a && none(@a) or !$a && &infix:<^^>(@a) }
)
Kristien funfact: sqrt in C is an impure function 22:48
grondilu why?
flussence it causes an fpu context switch as a side effect
Kristien errno 22:49
:P
masak wasn't aware that C had the concept of "pure function"
Kristien the concept is language-agnostic
grondilu that why it's a concept :)
Kristien Plottwist: errno actually means "err, no" as in "err, no you're not gonna get the answer." 22:50
grondilu so flussence's answer is not the correct one? 22:52
flussence depends if you have an fpu or not
Kristien Is MoarVM embeddable? 22:54
or Rakudo. I still don't know the difference.
and NQP is incredibly abstract to me 22:55
hoelzro Kristien: I don't see why not 22:57
I think that's how nine_ did Inline::Perl6
I just think there's no real documentation on how to do it
Kristien NQP is "a lightweight Perl 6-like environment" but I don't understand what an environment is. 22:58
hoelzro: neat 22:59
hoelzro so, NQP is a Perl 6 like language
it's "not quite" Perl 6
it's enough Perl 6 to implement Perl 6
if you wanted to embed Rakudo, you could embed MoarVM, and tell it where to find the bytecode for NQP and Rakudo 23:00
23:00 tardisx joined
Kristien OK. 23:02
23:04 kjs_ left 23:06 grondilu left 23:07 wicope left
Mouq Kristien: So, as I understand, MoarVM is written in C, NQP is... it's complicated, but there's an implementation of it in C on MoarVM, and Rakudo is written in NQP 23:07
vendethiel somehow :P 23:09
Mouq NQP is bootstrapping, so once you have an implementation on a backend, you can use the NQP implementation of NQP thereon, so NQP development is actually mostly in NQP
vendethiel nqp's grammar is written in perl6 yo
Mouq vendethiel: Not quite :P 23:10
vendethiel then C's grammar ?
.oO( parse ALL the languages, I guess )
23:11
23:11 virtualsue left
Mouq IDK how adding a new backend works, since we use an existing backend so that we DON'T have to re-write NQP in another language from the ground-up, but I don't know how that process works 23:12
s/language/vm|backend|whatever
I could be wrong about a lot of this, though 23:14
masak general question to #perl6: so, Qtrees represent the program source text on an appropriate level. macros are special in that they let you author one (source) Qtree but the compiler generates another (target) Qtree for the program to run. when we introspect Qtrees (for example, inside of macros), what should we expect to see: source Qtrees or target Qtrees? discuss.
(I don't know the answer. genuinely curious to know people's opinions and reasons.) 23:15
Kristien I am more confused than ever.
vendethiel target
if I want to debug stuff, I need to know what the compiler sees
masak vendethiel: that was my preferred default, too.
vendethiel: I just don't feel I have a theoretical basis for that preference. :) 23:16
timotimo ... today has been a bit more draining than the usual day ...
vendethiel masak: I think we're at the "usability" door here: )
Mouq Kristien: Well, none of what I said is actually important in using Perl 6, so feel free to disregard :P
flussence would it make things overly complicated to make that situation depend on when you introspect them? 23:17
masak vendethiel: we're most certainly at the "usability" door.
Kristien I don't see any advantages over stack based VM vs register based VM other than that stack based bytecode tends to be smaller. 23:18
Mouq masak: when does the difference arise?
Kristien Stack-based code is harder to generate, harder to analyse and harder to interpret.
masak Mouq: ok, say I have a `macro foo($x)`. I call it in code: `foo(42)`. the source Qtree is that very call. the target Qtree is whatever the macro generates/returns. 23:19
Mouq hugme hug timotimo
hugme hugs timotimo
timotimo ^- i know this, having put some time into generating jvm bytecode from rakudo/nqp
masak Mouq: the difference arises when a (macro) user introspects the Qtree that we already have in a program: does she see macro calls, or their results?
flussence is trying to think of relevant prior art in web languages, but they don't have any concept of "running while compiling" that isn't document.write... bleh 23:20
Mouq Well, isn't the theoretical basis being that it's what the Qtree is at that point? It seems like there would be a different stage at which the user could get the source Qtree 23:21
Kristien bye 23:22
masak the source Qtree sort of only exists to get passed into the macro.
23:22 Kristien left
Mouq o/ Kristien! 23:22
masak it's possible to link it up with the target Qtree, I guess, so that an intersted introspector could get at it.
but maybe that's unnecessary, or memory-leak-y, or something.
could get horrible in the case of recursive macros. 23:23
Mouq m: foo 1, 2; macro foo ($, $) {}
camelia ( no output )
masak don't do that.
there's an RT ticket about it not dying a horrible death, like it should.
23:23 BenGoldberg joined 23:24 kst` joined
Mouq masak: Why should it? I mean, I'm personally surprised it works at all 23:24
masak it shouldn't.
Mouq m: foo my $a, 2; macro foo ($x, $y) { quasi { {{{$a}}} = {{{$y}}} } } 23:25
camelia rakudo-moar 9add92: OUTPUT«Type check failed in unquote evaluation; expected 'AST' but got 'Any'␤ in method evaluate_unquotes at src/gen/m-CORE.setting:17912␤ in method incarnate at src/gen/m-CORE.setting:17903␤ in macro foo at /tmp/nvQJTdCLP8:1␤ in block <unit> at /tmp/…»
Mouq Ah
masak Mouq: rt.perl.org/Ticket/Display.html?id=123419
23:26 kst` left
Mouq m: foo my $a, 2; BEGIN macro foo ($x, $y) { quasi { {{{$a}}} = {{{$y}}} } } 23:26
camelia rakudo-moar 9add92: OUTPUT«===SORRY!===␤Unknown QAST node type NQPMu␤»
masak doesn't help. 23:27
Mouq masak: So no mutually recursive macros then? :P
masak macros are *called* at BEGIN time.
correct, no mutually recursive macros.
no self-recursive macros either, at least not in the obvious way. 23:28
m: macro bob() { bob() }; say "alive"
camelia rakudo-moar 9add92: OUTPUT«alive␤»
Mouq They are? My understanding was BEGIN == parse, CHECK == actions. Am I wrong there?
masak hrm.
Mouq: BEGIN == parse, for sure.
Mouq m: macro bob() { bob() }; bob
camelia rakudo-moar 9add92: OUTPUT«Memory allocation failed; could not allocate 154272 bytes␤»
Mouq Heh
masak not so sure about CHECK == actions. more like "end of compunit".
oh, right. call the macro. thanks. 23:29
23:41 skids joined 23:47 mohij left