»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
AlexDaniel I don't really see any reason why it cannot work with $x ~~ 00:00
00:00 rindolf left
AlexDaniel this LTA error message is trying to say something but honestly I don't get it 00:00
oh, and it's just a warning
00:01 llfourn left 00:02 RabidGravy left 00:03 AndyDee joined
AlexDaniel and given that I'm not the first person to try this I think that I'll just submit a bug report. Well, if I'm asking for something wrong then it can always be closed with some justification :) 00:04
00:06 Ben_Goldberg joined
timotimo it's telling you that S/o/u/ will return a string 00:07
but unless your substitution doesn't do any change at all, it won't smartmatch afterwards
if it does no change, it was useless in the first place :P
AlexDaniel oooooh 00:08
timotimo literally 00:09
the smart match with S/// can never succeed
and that's because the subsequent string match will fail
AlexDaniel hahaha
timotimo: perhaps we can add little timotimo to this warning 00:10
timotimo the error message could suggest "given", though
AlexDaniel so that he can explain that to people like me…
00:10 wamba left
timotimo if i get teleported to the programmer when such an error occurs, i may be able to get to know a lot of nice people at their most irritated moments ... 00:10
00:11 mcmillhj_ joined
AlexDaniel so, basically what you are saying is that “S///” is executed alone and then the result is smartmatched, right? 00:11
why don'twe see the same thing happening with $x ~~ s/// ? 00:12
timotimo yeah
because s/// mutates rather than returning a copy
that way it has a direction to shove the result off to
AlexDaniel riiight
timotimo other than returning, what cat S/// do when it doesn't mutate?
AlexDaniel … can't it just shove the result through smartmatch? 00:14
timotimo "through"?
AlexDaniel yeah, so that the smartmatch returns a string 00:15
as weird as it sounds, but it's not like smartmatch is limited to some datatype
timotimo that's how matches with :g return whole lists
00:15 firstdayonthejob left
Zoffix I had the same problem with S///. The error tells me nothing about how to use it properly and I couldn't find it in the docs 00:16
timotimo mhm
00:16 adu joined
AlexDaniel yeah, so that's who it was :) 00:16
timotimo so a suggestion for "given" like alex showed, would that help enough?
AlexDaniel well, a DWIM solution would be to make it return a string…
I mean the whole smartmatch in this case 00:17
Zoffix zwu, a capture
AlexDaniel perhaps that's ugly in some other sense, but at least that's what I would expect as a user
timotimo hmpf. how do we actually do that and still make it work in other cases?
Zoffix zwu, doc.perl6.org/type/Capture
timotimo i mean, if it returns a Str that can also handle smart match, that'll be a weird string to keep around 00:18
AlexDaniel timotimo: are there any other cases when you do ~~ S/// ?
ah
Zoffix "Smartmatch with S/// can never succeed because the string it returns on successful match will fail"
or something like that
timotimo i wouldn't mention "successful match" 00:19
Zoffix the "subsequent" is what I have issue parsing
timotimo maybe "successful substitution"?
Zoffix sure
m: ('hack Perl6', 'play warframe').pick
camelia ( no output )
Zoffix m: ('hack Perl6', 'play warframe').pick.say
camelia rakudo-moar 49fcd5: OUTPUT«hack Perl6␤»
Zoffix Dammit. Now I'll never know what the first answer was :P
timotimo cool.
i have an off-topic question ... 00:20
Zoffix Whatisit?
00:20 woodruffw joined
timotimo am i the only one who constantly gets very bad buffering in the steam shop's video widget? 00:20
Zoffix My buffering's fine
timotimo like, i haven't been able to watch a single video in the shop from start to finish without waiting at least as long as the video itself is for it to buffer
Zoffix :o 00:21
No, definitely not like that forme
00:21 Zoffix left 00:23 lichtkind left 00:24 jack_rabbit joined 00:26 xdg joined
xdg what's the equivalent of "perldoc"? Is is the "p6doc" module? 00:26
leont perl6 --doc, I think 00:27
00:27 mcmillhj_ left, atweiden left, mcmillhj_ joined
xdg `perl6 --doc say` ---> "Could not open say. Failed to stat file: no such file or directory" 00:28
timotimo perl6 --doc is how you extract the documentation out of a file 00:29
you want to run p6doc, i think that's what the script is called
but then you need to install the module that has it
dalek kudo/nom: ac4f9f8 | timotimo++ | src/Perl6/Actions.nqp:
Make ~~ S/// message a bit simpler and more helpful

  Zoffix++, AlexDaniel++
00:30
AlexDaniel ahhh
xdg hmm... is this a rakudobrew thing or a rakudo thing or a perl6 thing about $0? www.dropbox.com/s/9q677dso9p103en/...1.png?dl=0
00:31 virtualsue left
xdg And "perl6 --doc" just drops me into the REPL with no error 00:31
AlexDaniel deletes a huge text for a bug report that he has just crafted
timotimo++…
yeah, the fix was easier than a bug report
timotimo xdg: yeah, it'll run the repl in "doc extraction" mode for you 00:33
helpful, eh?
yeah, totally.
the filename thing is a rakudo thing
about how we install things and fail to give the pre-uniquified name
xdg timotimo, where should bugs/usage-snafus be reported? 00:35
The uniquification is particularly nasty in stack traces. E.g. www.dropbox.com/s/qeiz17arobp846z/...7.png?dl=0 00:36
timotimo yeah. no need to report it, i think it happens everywhere and we know :|
AlexDaniel xdg: you mean that the stacktrace is unreadable because of the hashes instead of filenames? 00:38
timotimo yeah
AlexDaniel or the “already installed” problem
xdg AlexDaniel, (a) exception on "already installed" is surprising; (b) hashes instead of filenames is confusing 00:39
AlexDaniel xdg: b) rt.perl.org/Public/Bug/Display.html?id=126908
00:39 peter__ joined
xdg glad there's a ticket 00:39
AlexDaniel xdg: not that it helped much. We just need somebody to work on it, I guess 00:40
xdg lots of rough edges still, I guess
timotimo especially the new precompilation code is rather new 00:41
landed very soon before the 2015.12 release
00:41 n0tjack joined
AlexDaniel xdg: for a) there is this report which is somewhat associated: github.com/tadzik/panda/issues/274 00:41
xdg: ah, here is the right one: github.com/tadzik/panda/issues/269 00:42
xdg ah, mst is on the case
00:43 mohij joined
AlexDaniel xdg: anyway, ugly stacktraces is a rakudo problem because rakudo does the precompilation 00:43
xdg: and “already installed” thing is a panda problem
00:44 patrickz left
AlexDaniel that's to answer your question “where should bugs/usage-snafus be reported?” 00:44
xdg (sigh) `p6doc p6doc` --> "Cannot locate p6doc in any of the following paths:..."
timotimo urgh :)
00:46 n0tjack left
xdg I'm getting the sense that I should just toss out any p5 expectations. 00:46
does no one who works on p6 regularly read command line docs the way p5 people use perldoc? 00:47
00:47 mohij left, laouji joined
gfldex xdg: you have answered that question yourself already 00:48
we can't read what isn't there
TimToady a lot of work has gone into the docs, but they certainly aren't complete yet, and the web interface was given priority over command-line 00:49
xdg TimToady, o/ 00:50
timotimo aye, especially since you can check out the web interface version of the docs even when you didn't get yourself a rakudo yet
TimToady and vendors rarely give you the command-line docs anyway unless you do something special 00:51
00:51 peter__ left
TimToady and yes, it's not really Unix-think :) 00:52
it's one of those different mistakes we decided to make this time, where the definition of 'decided' doesn't have much consciousness attached to it :) 00:53
00:53 n0tjack joined
TimToady what you have currently is a summing up of what 800 people decided to work on over 15.5 years :) 00:53
00:54 bpmedley joined
TimToady the next 800 people will likely work on what they want instead :) 00:55
AlexDaniel m: say DateTime.now.earlier(years => 15.5)
camelia rakudo-moar ac4f9f: OUTPUT«2031-01-05T01:55:56.631077+01:00␤»
AlexDaniel what? 00:56
hmmm WHAT?
is it 2046 already? 00:57
TimToady speaking of different mistakes...
AlexDaniel m: say DateTime.now.earlier(years => 15)
camelia rakudo-moar ac4f9f: OUTPUT«2031-01-05T01:57:22.872850+01:00␤»
gfldex m: say DateTime.now.earlier(years => 1)
camelia rakudo-moar ac4f9f: OUTPUT«2017-01-05T01:57:23.861752+01:00␤»
AlexDaniel wtf :DD
TimToady sign wrong?
gfldex time arrow points the wrong way it seams
m: say DateTime.now.earlier(years => -1)
camelia rakudo-moar ac4f9f: OUTPUT«2015-01-05T01:57:42.487076+01:00␤»
AlexDaniel m: say DateTime.now.later(years => 15)
camelia rakudo-moar ac4f9f: OUTPUT«2031-01-05T01:57:47.730487+01:00␤»
00:57 llfourn joined
AlexDaniel m: say DateTime.now.earlier(years => 15) 00:57
camelia rakudo-moar ac4f9f: OUTPUT«2031-01-05T01:57:52.358746+01:00␤»
TimToady I guess we only tested later :) 00:58
gfldex m: say DateTime.now.later(years => -1)
camelia rakudo-moar ac4f9f: OUTPUT«2015-01-05T01:58:19.012859+01:00␤»
AlexDaniel ehhh… anybody going to fix it right now?
00:58 Ben_Goldberg left
gfldex m: say DateTime.now.later(years => 1) 00:58
camelia rakudo-moar ac4f9f: OUTPUT«2017-01-05T01:58:25.178936+01:00␤»
AlexDaniel gfldex: later with negative numbers is also a very interesting thing
gfldex nagative later is a workaround it seams
TimToady suspects this one has to get fixed "retroactively" as it were
00:59 yeahnoob joined
gfldex from the standpoint of the current earlier implementation is has been fixed already 00:59
AlexDaniel yes, it was working earlier
TimToady that one needs a big fat RT just so we can hold it up as an example to past generations 01:00
AlexDaniel sure
01:02 llfourn left
TimToady it would appear there is no test for earlier with a years argument 01:03
01:03 yqt left
TimToady we test seconds, minutes, hours, days, and weeks though, so that's something 01:03
AlexDaniel m: say DateTime.now.earlier(days => 30) 01:04
camelia rakudo-moar ac4f9f: OUTPUT«2015-12-06T02:04:01.942518+01:00␤»
AlexDaniel haha
TimToady m: say DateTime.now.earlier(days => 365.24 * 15.5)
camelia rakudo-moar ac4f9f: OUTPUT«2000-07-06T02:04:35.300058+01:00␤»
01:04 n0tjack left
TimToady a veritable workaround! 01:04
AlexDaniel right
zwu thanks. Capture is cool! 01:06
TimToady m: say Capture ~~ Cool
camelia rakudo-moar ac4f9f: OUTPUT«False␤»
TimToady no it ain't :P
AlexDaniel It is probably not fat enough but there you go: rt.perl.org/Public/Bug/Display.html?id=127160 01:07
TimToady thanks
01:07 BenGoldberg joined
dalek ast: 295f51d | skids++ | S06-multi/value-based.t:
Add tests for RT's 127025 127024 127129, with a couple fudges
01:07
01:08 kid51_ joined, risou is now known as risou_awy, peter__ joined
AlexDaniel sooo… what about negative amounts 01:08
01:08 risou_awy is now known as risou 01:09 protium left, n0tjack joined
AlexDaniel m: say DateTime('2016-03-30') 01:10
camelia rakudo-moar ac4f9f: OUTPUT«Cannot find method 'DateTime'␤ in block <unit> at /tmp/77c7cMSSsg line 1␤␤»
AlexDaniel hmm *method* 'DateTime'
01:11 kid51 left, kid51_ is now known as kid51
AlexDaniel m: say DateTime.new(‘2016-01-31T05:00:00Z’).earlier(months => -1) 01:12
camelia rakudo-moar ac4f9f: OUTPUT«Month out of range. Is: 0, should be in 1..12␤ in block <unit> at /tmp/CfLpbWf_RV line 1␤␤»
AlexDaniel err? 01:13
m: say DateTime.new(‘2016-01-31T05:00:00Z’).earlier(years => -1)
camelia rakudo-moar ac4f9f: OUTPUT«2015-01-31T05:00:00Z␤»
AlexDaniel m: say DateTime.new(‘2016-01-31T05:00:00Z’).earlier(days => -1)
camelia rakudo-moar ac4f9f: OUTPUT«2016-02-01T05:00:00Z␤»
AlexDaniel m: say DateTime.new(‘2016-01-31T05:00:00Z’).earlier(seconds => -1)
camelia rakudo-moar ac4f9f: OUTPUT«2016-01-31T05:00:01Z␤»
AlexDaniel m: say DateTime.new(‘2016-01-31T05:00:00Z’).later(seconds => -1) 01:14
camelia rakudo-moar ac4f9f: OUTPUT«2016-01-31T04:59:59Z␤»
AlexDaniel m: say DateTime.new(‘2016-01-31T05:00:00Z’).later(months => -1)
camelia rakudo-moar ac4f9f: OUTPUT«Month out of range. Is: 0, should be in 1..12␤ in block <unit> at /tmp/jdJBjXGCdA line 1␤␤»
AlexDaniel so you can't go 24 months forward?
01:16 peter__ left
BenGoldberg skids, You should also have a dies-ok test, for when you try to have a class which composes two different roles with conflicting constrained methods... Say, role BB { multi method f(3) { 33 } }; dies-ok { class C7 does B does BB }; 01:16
01:16 peter__ joined
skids BenGoldberg: good point 01:16
TimToady m: class Foo {}; say Foo("bar")
camelia rakudo-moar ac4f9f: OUTPUT«Cannot find method 'Foo'␤ in block <unit> at /tmp/CKAbMyOuSL line 1␤␤»
TimToady that's what's going on there 01:17
01:17 [particle] left, peter__ left
TimToady it knows Foo is a type, so it figures string must have a coercion to Foo type, which is bogus 01:18
it's basically assuming that any Foo type that has no coercion from string will have monkey-typed Str, is why it's bogus
skids BenGoldberg: oh actually, there's never a conflict.
BenGoldberg Why not? 01:19
skids Because signatures cannot be asked to solve the halting problem
TimToady they can, but they might not answer...
01:20 Ch0c0late joined
BenGoldberg m: role B { multi method f(3) { 3 } }; role BB { multi method f(3) { 33 } }; class C does B does BB; say C.new.f(3); 01:20
camelia rakudo-moar ac4f9f: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Fp27J6H8LE␤Too late for unit-scoped class definition;␤Please use the block form.␤at /tmp/Fp27J6H8LE:1␤------> 3d f(3) { 33 } }; class C does B does BB;7⏏5 say C.new.f(3);␤»
BenGoldberg m: role B { multi method f(3) { 3 } }; role BB { multi method f(3) { 33 } }; class C does B does BB {}; say C.new.f(3);
camelia rakudo-moar ac4f9f: OUTPUT«33␤»
BenGoldberg m: role B { multi method f(3) { 3 } }; role BB { multi method f(3) { 33 } }; class C does BB does B {}; say C.new.f(3);
camelia rakudo-moar ac4f9f: OUTPUT«3␤»
skids Though if it is later decided that using a where clause to implement the value constraint is cheating, it could be done. 01:21
m: sub a(3) { }; &a.signature.say
camelia rakudo-moar ac4f9f: OUTPUT«(Int $ where { ... })␤»
01:22 AndyDee left, AndyDee joined
AlexDaniel m: say DateTime.new(‘2016-02-29T05:00:00Z’).later(years => -1) 01:22
camelia rakudo-moar ac4f9f: OUTPUT«2015-02-28T05:00:00Z␤»
AlexDaniel m: say DateTime.new(‘2016-02-29T05:00:00Z’).later(years => -1, days => 1)
camelia rakudo-moar ac4f9f: OUTPUT«More than one time unit supplied␤ in block <unit> at /tmp/FhINrn8K5I line 1␤␤»
AlexDaniel pfffffffft
TimToady that's by design 01:23
AlexDaniel well, it makes sense because order matters
TimToady you have to stack .later for that
BenGoldberg m: say DateTime.new(‘2016-02-29T05:00:00Z’).later([ years => -1, days => 1 ])
camelia rakudo-moar ac4f9f: OUTPUT«Too many positionals passed; expected 1 argument but got 2␤ in block <unit> at /tmp/J28gnKqZzU line 1␤␤»
TimToady say wot? 01:24
01:25 n0tjack left
AlexDaniel “Instead of taking low quality medication try visiting our really trusted and popular pharmacy!” 01:25
could have been a nice title for a bug report about wrong sign in DateTime.earlier(years => …) 01:26
anyway: rt.perl.org/Public/Bug/Display.html?id=127161
if anybody wants to submit one hunder bug reports then go search for bugs in DateTime. I'm sure that you can do it in a week or so 01:28
01:29 n0tjack joined, peter__ joined
AlexDaniel by the way, is there any way I can manage my bug reports myself? e.g. close them 01:31
flussence why does .later allow "year" and "years", but DateTime.new doesn't?
AlexDaniel flussence: that's one
01:32 AndyDee left 01:33 adu left
AlexDaniel m: say DateTime.new(years => 25) 01:34
camelia rakudo-moar ac4f9f: OUTPUT«Cannot make a DateTime object using .new␤ in block <unit> at /tmp/39unjgUFR4 line 1␤␤Actually thrown at:␤ in block <unit> at /tmp/39unjgUFR4 line 1␤␤»
AlexDaniel m: say DateTime.new(year => 2015, month => 1, day => 25);
camelia rakudo-moar ac4f9f: OUTPUT«2015-01-25T00:00:00Z␤»
AlexDaniel m: say DateTime.new(year => 2015, month => 1); 01:35
camelia rakudo-moar ac4f9f: OUTPUT«2015-01-01T00:00:00Z␤»
AlexDaniel m: say DateTime.new();
camelia rakudo-moar ac4f9f: OUTPUT«Cannot make a DateTime object using .new␤ in block <unit> at /tmp/9_WkH1deQg line 1␤␤Actually thrown at:␤ in block <unit> at /tmp/9_WkH1deQg line 1␤␤»
AlexDaniel m: say DateTime.new(year => -9⁹);
camelia rakudo-moar ac4f9f: OUTPUT«-387420489-01-01T00:00:00Z␤»
AlexDaniel m: say DateTime.new(years => -9⁹);
camelia rakudo-moar ac4f9f: OUTPUT«Cannot make a DateTime object using .new␤ in block <unit> at /tmp/DsgP3DYMsL line 1␤␤Actually thrown at:␤ in block <unit> at /tmp/DsgP3DYMsL line 1␤␤»
AlexDaniel m: say DateTime.new(year => -9⁹).later(years => 9⁹);
camelia rakudo-moar ac4f9f: OUTPUT«0000-01-01T00:00:00Z␤»
AlexDaniel flussence: once upon a time somebody noticed exactly the same issue. I mean, that “Xs” variant was not allowed somewhere else 01:36
flussence: and then it was decided that we should remove “years” and stuff like that from everywhere 01:37
at least that's how I remember it, I could be wrong
I remember lizmat commits that removed some of those… I'm not sure if there was any final decision though (and if those were reverted)
flussence: are you going to submit a bug report? 01:39
01:39 AndyDee joined
flussence I don't care enough about the date stuff to get involved :) 01:40
AlexDaniel flussence: well… me too. But I guess that somebody has to do it, so I think that I'll just submit it 01:42
m: say DateTime.new(years => -50).later(years => 50); 01:45
camelia rakudo-moar ac4f9f: OUTPUT«Cannot make a DateTime object using .new␤ in block <unit> at /tmp/iztv4txQHa line 1␤␤Actually thrown at:␤ in any at gen/moar/m-Metamodel.nqp line 3041␤ in block <unit> at /tmp/iztv4txQHa line 1␤␤»
01:47 peter__ left
skids AlexDaniel: if you have enough permissions on RT to login and comment on RTs through the web interface you may be able to close them while making a comment by selecting "resolved" from the dropdown. 01:47
AlexDaniel I don't think that I have such permissions 01:48
anyway: rt.perl.org/Public/Bug/Display.html?id=127162 01:49
01:50 leont left
AlexDaniel skids: I've tried creating an account once but RT becomes unusable once you login 01:52
Juerd I've found that the only realistic way of interacting with RT is to send emails. Unfortunately that only works on threads you started. 01:53
skids AlexDaniel: yeah I have to log in/out al the time so I can search outside my own tickets.
AlexDaniel Juerd: I figured that you can write comments by sending emails too 01:54
Juerd: just include [perl #127162] in the title and boom…
Juerd Oh, that's great
AlexDaniel VERY intuitive
Juerd Well, it doesn't need to be intuitive. Anything that doesn't make me angry is better than trying to log in. 01:55
AlexDaniel it makes me angry. I'd much rather login than have to do that stuff with emails
Juerd I feel very comfortable with email
AlexDaniel I've also figured a way to see all my bug reports 01:56
here's a link to bookmark: rt.perl.org/Public/Search/Simple.h...il.com+any
Juerd :)
AlexDaniel it will yell about CSRF but just click “click here to resume your request”
Juerd RT used to be great. I used to have it for my web hosting business. I don't understand what exactly is wrong with the one on rt.perl.org, but I'm quite convinced that the whole bitcard thing is part of the issue. 01:57
[Coke] jnthn: lots of stmop
01:58 xpen joined, llfourn joined 02:01 Actualeyes joined
[Coke] bitcard is for auth; that's it. If your problem isn't with auth, I'd be surprised if the problem is with bitcard. 02:01
02:04 llfourn left
Juerd My problem is mainly with authentication. 02:04
[Coke] there is a ticket queue for RT itself, btw; I've found the perl rt admins quite responsive when asked.
Juerd Apparently the user 'juerd' exists, but I can't reset the password for it. When you create a new user account, it needs an email address that's never been seen by the system before. 02:05
That's when I just gave up.
[Coke] For issues related to this RT instance (aka "perlbug"), please contact perlbug-admin at perl.org 02:07
^^ I'd email them.
japhb jnthn++ # 6guts post 02:08
02:08 molaf_ joined
Juerd [Coke]: When I find a system very frustrating, I try not to use it. In this case, using the system that annoys me to report that it annoys me seems like a good way to ruin my day :) 02:11
gfldex where is the doc for META.info? 02:12
02:12 molaf left, kaare_ joined
gfldex found it 02:13
02:13 atweiden joined 02:16 laouji left 02:18 mojca left, Actualeyes left
japhb m: role Foo { has $.s = 42; has @.a = 7, 8, 9; }; class Bar does Foo { }; class BarDate is Date does Foo { }; dd 02:18
camelia rakudo-moar ac4f9f: OUTPUT«block <unit>␤»
japhb m: role Foo { has $.s = 42; has @.a = 7, 8, 9; }; class Bar does Foo { }; class BarDate is Date does Foo { }; dd Bar.new.a; dd BarDate.today.a; 02:19
camelia rakudo-moar ac4f9f: OUTPUT«Array @!a = [7, 8, 9]␤Array @!a = []␤»
japhb Anyone have any idea why ^^ is happening?
02:19 [particle] joined
gfldex BarDate.today returns a new object that is of the wrong type 02:20
or the right type, depends on how you see it
m: role Foo { has $.s = 42; has @.a = 7, 8, 9; }; class Bar does Foo { }; class BarDate is Date does Foo { }; dd Bar.new.a; dd Bar.today.a;
camelia rakudo-moar ac4f9f: OUTPUT«Array @!a = [7, 8, 9]␤Method 'today' not found for invocant of class 'Bar'␤ in block <unit> at /tmp/WFIIjIxEW3 line 1␤␤»
gfldex m: role Foo { has $.s = 42; has @.a = 7, 8, 9; }; class Bar does Foo { }; class BarDate is Date does Foo { }; dd Bar.new.a; dd BarDate.new.today.a;
camelia rakudo-moar ac4f9f: OUTPUT«Array @!a = [7, 8, 9]␤Cannot make a BarDate object using .new␤ in block <unit> at /tmp/afkTiZ_W4I line 1␤␤Actually thrown at:␤ in any at gen/moar/m-Metamodel.nqp line 3041␤ in block <unit> at /tmp/afkTiZ_W4I line 1␤␤»
japhb gfldex: But clearly whatever it's returning has an (uninitialized) @!a field .... 02:21
gfldex that must mean it's calling the constructor of Date but not Foo 02:23
japhb Oh, I wonder if this is a side effect of lizmat's optimizations 02:24
02:25 Zoffix joined 02:30 sprocket_ left
Zoffix m: sub foo { 'meow' ~~ /$<foo>=(meow)/; say "(\$<foo> is now $<foo>)"}; 'foobar' ~~ /$<foo>=(foo) $<bar>=(bar)/; say $<foo bar>; foo; say $<foo bar> 02:31
camelia rakudo-moar ac4f9f: OUTPUT«(「foo」 「bar」)␤($<foo> is now meow)␤(「foo」 「bar」)␤»
Zoffix This is neat. I kinda went it with an assumption that $<whatever> would get clobbered by the next regex match, but it DWIM! :D 02:32
02:36 colomon_ joined 02:37 colomon left, colomon_ is now known as colomon 02:39 AlexDaniel left 02:41 cdg joined 02:46 sprocket_ joined, kid51 left 02:47 secwang joined 02:48 skids left
Zoffix m: sub foo { ^2 }; my @facts = foo or fail 'Nada'; 02:48
camelia rakudo-moar ac4f9f: OUTPUT«5===SORRY!5=== Error while compiling /tmp/sJS_o9IZAb␤Undeclared routine:␤ or used at line 1␤␤»
Zoffix m: sub foo { ^2 }; my @facts = foo() or fail 'Nada';
camelia ( no output )
Zoffix Weird, eh?
gtodd hmm so if Perl6.z is ever needed there's a holiday called "Zarathosht Diso" 02:49
Juerd Zoffix: $/ is lexical, so the sub has its own.
Zoffix Juerd, cool
m: fail or fail; 02:50
camelia rakudo-moar ac4f9f: OUTPUT«5===SORRY!5=== Error while compiling /tmp/_93RbEmClx␤Undeclared routine:␤ or used at line 1␤␤»
02:51 sgt_baker joined
autogen Hey guys, I've been reading through rakudo source, and I must comment on how impressed I am 02:51
It's extremely clear, concise, and great to learn from 02:52
Zoffix m: fail && fail;
camelia rakudo-moar ac4f9f: OUTPUT«5===SORRY!5=== Error while compiling /tmp/U_9D2pIK_l␤Two terms in a row␤at /tmp/U_9D2pIK_l:1␤------> 3fail &&7⏏5 fail;␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ state…»
diakopter which repos? rakudo, nqp, or moarvm?
[Coke] autogen: thanks.
gtodd so if roast changes occur every 10-15 years the Perl6 spec could go on for 100s of years
[Coke] nite, everyone.
Juerd Good night
Zoffix night
autogen [Coke]: is this your doing? :D
gtodd m: say "can you do Inline::Perl5" 02:53
camelia rakudo-moar ac4f9f: OUTPUT«can you do Inline::Perl5␤»
gtodd m: use Inline::Perl5
camelia rakudo-moar ac4f9f: OUTPUT«===SORRY!===␤Could not find Inline::Perl5 in:␤ /home/camelia/.perl6/2015.12-96-gac4f9f8␤ /home/camelia/rakudo-m-inst-1/share/perl6/site␤ /home/camelia/rakudo-m-inst-1/share/perl6/vendor␤ /home/camelia/rakudo-m-inst-1/share/perl6␤ …»
gtodd ok :)
Zoffix autogen, I think the release credits have about 900 people :P
autogen Zoffix: my initial thought, but hey, my gratitude is up for grabs :) 02:54
All I wanted for x-mas was Perl6.
autogen is happy.
Zoffix Filed: rt.perl.org/Ticket/Display.html?id=127163 02:56
star: use Inline::Perl5; 02:57
camelia star-m 2015.09: OUTPUT«===SORRY!===␤Could not find Inline::Perl5 in any of:␤ file#/home/camelia/.perl6/2015.09/lib␤ inst#/home/camelia/.perl6/2015.09␤ file#/home/camelia/star-2015.09/share/perl6/lib␤ file#/home/camelia/star-2015.09/share/perl6/vendor/lib␤ file#/home…»
Zoffix star: use Bailador
camelia ( no output )
Zoffix gtodd, ^ well, that's supposed to have R*, but I guess IP5 failed to install
oh, still 2015.09 >_< 02:58
gtodd ok
awwaiid: ... that's just soo ... gist.github.com/awwaiid/01fe0e56e2c1220548a1 02:59
Zoffix ahaha
awwaiid++
03:00 llfourn joined
gtodd nuts! :-) ... should be part of standard Perl6 install ;-) 03:00
errm rakudo
03:00 vendethiel joined 03:02 adu joined 03:03 kaare_ left 03:05 llfourn left
Zoffix m: class Foo { method bar { return ^0; } }; Foo.new.bar or fail 03:05
camelia ( no output )
Zoffix m: class Foo { method bar { return (); } }; my $x = Foo.new.bar or fail; say $x ~~ True 03:06
camelia rakudo-moar ac4f9f: OUTPUT«Failed␤ in block <unit> at /tmp/FyBShztynR line 1␤␤»
Zoffix m: class Foo { method bar { return (); } }; my $x = Foo.new.bar; say $x ~~ True
camelia rakudo-moar ac4f9f: OUTPUT«True␤»
Zoffix whatshappening?
03:06 noganex joined
Zoffix ah 03:07
m: say False ~~ True
camelia rakudo-moar ac4f9f: OUTPUT«True␤»
Zoffix I see
03:09 noganex_ left
timotimo "smartmatch against True always matches" 03:12
m: say "hello" ~~ True
camelia rakudo-moar ac4f9f: OUTPUT«True␤»
timotimo there's a warning in Actions.nqp, but it doesn't seem to fire
m: my int $foo; say $foo ~~ True
camelia rakudo-moar ac4f9f: OUTPUT«True␤»
Juerd Zoffix: Did you want 'so $x' instead of $x ~~ True?
Or what did you expect $x ~~ True to do? 03:13
Zoffix Juerd, I thought ~~ was thinking $x was true so I was surprised the 'or fail' was executing 03:14
mst, I'm starting to like coding P6 without highlights... It's so much easier to notice when your code is a mess ^_^ 03:15
Juerd Zoffix: The problem with testing whether something "is true", is that True and False aren't the only true and false values, respectively. To test whether some value is Bool::True, your best bet is $x =:= True, but such a test doesn't make sense in actual software you'd write... 03:17
Regarding syntax highlighting... I really miss it on IRC and in the REPL. 03:18
03:18 psy_ joined
Juerd And in Vim it's far from perfect. It doesn't even understand things like "foo { bar("baz") }" 03:19
Zoffix It's totally broken in Sublime Text 2, so right now, this is what I'm staring at: i.imgur.com/cX2Frjw.png
Juerd Yeah, that does look like a mess. But so does anything with lots of inline regexes. 03:20
03:21 colomon_ joined, cpage_ left
Juerd Could the if/elsif tree on %res<what> be a given/when? 03:21
03:21 colomon left
Zoffix Juerd++ ah! my Perl5-ism 03:21
Juerd That would at least get rid of the repeated %res<what>, which contributes to the visual mess. 03:22
Zoffix Add a new indent level tho :(
03:22 protium joined 03:23 cpage_ joined
Juerd Another thing that clears up code a lot is to move your database queries to functions 03:23
03:23 colomon_ is now known as colomon, user74747 left
Zoffix Already doing it 03:23
We need an ORM :( 03:24
Juerd Ugly things don't look as ugly if they're grouped by kind :)
Zoffix heh
Juerd Regexes with regexes, sql with sql, etc.
03:24 vendethiel left
Juerd This is why I don't clean my desk. Clutter doesn't look out of place amidst more clutter ;) 03:26
But I do group the kinds of clutter by appearance. Sheets of paper get stacked, pens and screwdrivers are sufficiently alike that they can go together, cables are together in one corner. 03:27
I keep discovering that I use a lot of the same patterns in code and in real life.
I hate cleaning up when I'm busy doing other things because it makes me lose focus, but in general I don't mind to clean up when I'm done with the other stuff. In code, I also tend to process data in a tight loop, and clean everything up afterwards instead of in the loop body. 03:29
Zoffix :)
Juerd Another pattern is that I hate boilerplate code, and I hate tasks that require preparation. 03:30
I want my tools nearby and ready for grabbing, not in toolboxes that I first need to fetch from a neatly organized rack. 03:31
Only if the tool is very specific it gets put in a box. General purpose stuff, however, is okay to "contaminate" my main workspace. Or namespace, in code.
03:35 cpage_ left
gtodd feeds 03:35
I used to do this: 03:36
time perl6 -e 'my @arr := "/usr/share/dict/web2".IO.slurp.lines(:eager); @arr ==> grep({m/<<zygote>>/}) ==> my $stuff; say $stuff'
to see how snappy things were :)
but not I get "Type check failed in binding; expected Positional but got Seq" 03:37
errm now
is that a change from long ago GLR ?
Zoffix @("/usr/share" ... :eager)) 03:38
gtodd ok :)
Zoffix Seems to be cleaner with given/when and subs: gist.github.com/zoffixznet/662d9e8c923d97746b4e 03:40
timotimo :eager is gone already :) 03:41
it's also possibly a bit faster to do .lines than to do .slurp.lines
gtodd I was wondering when it started to fail ... I don't know why I didn't notice this not working :-) 03:42
probably GLR and Xmas rush
timotimo also, if you want the old behavior of "i want to store this iterator", you'll assign to a $-sigiled var in today's code 03:43
so my $lines = "/usr/...".IO.lines; $lines ==> ...
03:43 ELBeavers left
gtodd hmm ok 03:43
timotimo i *would* suggest you use the shiny new hyper, but alas hyper and grep don't work together right now :(
Zoffix :(
03:43 cpage_ joined
timotimo i'm now daring enough to upgrade from fedora 22 to fedora 23 03:43
wish me luck! 03:44
Zoffix Good luck
hoelzro Hals und Beinbruck =)
Zoffix Didn't even realize they still made Fedora :)
Juerd Zoffix: Instead of ~$<foo>, you could have Str() in the signature instead of Str, and it will stringify whatever you give it.
hoelzro doesn't know if that expression applies here
Zoffix I've used it once, just when it split off Red Hat
03:44 bpmedley left
gtodd good lukc ... and don't worry there's always freebsd :) 03:44
Zoffix Juerd++ thanks
03:44 AndyDee left
Zoffix Hm 03:45
Juerd Zoffix: I think that in many cases, Str() is a more logical thing to use than Str
timotimo Total download size: 3.4 G
oh lord
Zoffix But then why declare the sig at all?
s/sig/type/
I think the way I have it now will cry when I give it a non-string.
Which can catch some bugs
Juerd Well, there are things that can't be stringified
m: sub foo (Str() $foo) { say $foo }; foo(-> { ... }) 03:46
camelia rakudo-moar ac4f9f: OUTPUT«Block object coerced to string (please use .gist or .perl to do that) in sub foo at /tmp/hX1gx1U8f3 line 1␤␤»
Zoffix K, gonna try using Str() and see how that stuff fairs
Juerd I don't like that you can't really use :D with Str(), not sure if that's a bug or a feature. 03:47
That is, the () appear to be ignored if you use :D
gfldex m: role Foo[::T where T ~~ Str] {} 03:48
camelia rakudo-moar ac4f9f: OUTPUT«5===SORRY!5=== Error while compiling /tmp/12EWCmOpF4␤Cannot do non-typename cases of type_constraint yet␤at /tmp/12EWCmOpF4:1␤------> 3role Foo[::T where T ~~ Str7⏏5] {}␤»
gtodd hmn just naively goofing around with feeds (==>) got slower but I'm likely doing it wrong
Juerd Zoffix: If you build your code specifically for this use case, you could also use Str(Match), in which case it will accept Str or Match, stringifying the latter.
gfldex and how do i do typename cases of type_contraint?
gtodd time perl6 -e 'my $arr = "/usr/share/dict/web2".IO.lines; $arr ==> grep({m/<<zygote>>/}) ==> my $stuff; say $stuff' ... 27 seconds
:-\
cognominal m: my &[==] = &[<]
camelia rakudo-moar ac4f9f: OUTPUT«Cannot modify an immutable Sub+{<anon|65623632>}+{Precedence}␤ in block <unit> at /tmp/qnnsl1lO9w line 1␤␤»
Juerd cognominal: Is this part of some evil plan? 03:49
cognominal Juerd, I am surprised I can't lexically redefined an op with that syntax
03:49 bpmedley joined
cognominal m: sub infix:<==> { $^a < $^b }; say (1 == 2 ) # I know I can do that 03:50
camelia rakudo-moar ac4f9f: OUTPUT«True␤»
Juerd cognominal: I didn't even know that syntax existed until two minutes ago :)
m: my &infix:<==> := &infix:«<»; say 2 == 4; say 4 == 2;
camelia rakudo-moar ac4f9f: OUTPUT«True␤False␤»
03:50 cdg left
Juerd I'm going to bed. Good *, * 03:51
cognominal I know that redefining == as < is stupid, but that's not the point.
geekosaur isn't that &[==] just a trivial case of the reduce syntax?
03:51 cpage__ joined
geekosaur so it would not be expected to work for assignment 03:51
03:51 cpage_ left, cpage__ is now known as cpage_
Zoffix m: my &infix:«==» := &infix:«<»; say so 3 == 5 03:51
camelia rakudo-moar ac4f9f: OUTPUT«True␤»
cognominal m: say( &[==] =:= &infix:<==> ) 03:52
camelia rakudo-moar ac4f9f: OUTPUT«True␤»
timotimo just 1.5 hours until the download is done ...
hoelzro timotimo: time to play disgaea? 03:53
=)
cognominal m: say &[==] .^name
camelia rakudo-moar ac4f9f: OUTPUT«5===SORRY!5=== Error while compiling /tmp/aVXmI3Vx8W␤Malformed postfix call (only alphabetic methods may be detached)␤at /tmp/aVXmI3Vx8W:1␤------> 3say &[==] .7⏏5^name␤»
cognominal m: say &[==].^name
camelia rakudo-moar ac4f9f: OUTPUT«Sub+{<anon|65623632>}+{Precedence}␤»
03:55 cpage_ left 03:56 cpage_ joined
timotimo hoelzro: watching AGDQ right now; ori and the blind forest race between grimelios and ankamius 03:57
hoelzro oooo I need to play that game
timotimo it looks very pretty 03:58
hoelzro I started it a few weeks back, but I haven't felt the urge to boot into Windows to continue =/
it's soooo pretty
timotimo windows only :(
hoelzro I want to play it on my TV, but my wife is deep into Fallout 4 right now
yeah ='(
03:59 adu left
hoelzro it's a shame that Linux can't serve as a steam link host 03:59
so even if I want to play a Linux game, if it's on the TV, I have to boot into Windows 04:00
jeek It's a shame that Chromecast can't serve as a Steam link host.
04:01 llfourn joined
hoelzro jeek: host? or client? 04:01
timotimo either would be cool, really 04:02
hoelzro yeah
timotimo just interconnect all the things
jeek Client, I guess. 04:04
I have a Steam Controller, I have a pile of computers, one even running Windows.
Kind of bummed that I pretty much just have to leave the Windows computer plugged into the TV.
My wife is hogging it right now to play Life is Strange, so I'm setting up a VM for playing with perl 6 on my lab at the office. 04:05
04:05 llfourn left 04:08 secwang left 04:09 n0tjack left 04:10 secwang joined
timotimo mhm 04:10
At least 325MB more space needed on the / filesystem. 04:11
ah well ...
a-ha! i can just kick out the journal :P 04:14
hoelzro heh 04:15
who needs it?
timotimo it'll grow back. no worries :)
hoelzro =) 04:16
you know, it's been months since the GLR landed and I *still* haven't figured out how to flatten nested arrays
m: my @rows = [1, 2, 3], [4, 5, 6]; say +(flat @rows);
camelia rakudo-moar ac4f9f: OUTPUT«2␤»
hoelzro the best I can do is flat @rows.map(*.list), which just feels *wrong* 04:17
timotimo my @rows = [1, 2, 3], [4, 5, 6]; my @result = gather @rows>>.take; say @result.perl 04:18
m: my @rows = [1, 2, 3], [4, 5, 6]; my @result = gather @rows>>.take; say @result.perl
camelia rakudo-moar ac4f9f: OUTPUT«[1, 2, 3, 4, 5, 6]␤»
04:18 atweiden left
hoelzro hmm, that works too 04:18
timotimo m: my @rows = [1, 2, 3], [4, 5, 6]; say @rows.map(*.Slip).perl 04:19
camelia rakudo-moar ac4f9f: OUTPUT«(1, 2, 3, 4, 5, 6).Seq␤»
hoelzro timotimo: there's nothing that just involves flat, though? because Arrays don't flatten, ever?
timotimo m: my @rows = [1, 2, 3], [4, [9, 9, 9], 6]; say @rows.map(*.Slip).perl
camelia rakudo-moar ac4f9f: OUTPUT«(1, 2, 3, 4, $[9, 9, 9], 6).Seq␤»
timotimo something like that 04:20
hoelzro thanks for the input timo! 04:21
timotimo YW
TT showed me the take trick some time ago
orbus is there a good writeup on thread safety in perl6 anywhere? 04:31
04:31 cpage_ left
orbus There's a little bit in doc.perl6.org/language/concurrency#...y_Concerns 04:31
but not much
I've read some advent calendar posts that seem to imply there's some internal locking around things like scalars and hashes, but not much detail on what is and is not safe to do 04:32
04:34 cdg joined 04:41 sprocket_ left 04:43 cdg left 04:47 g4 joined, g4 left, g4 joined 04:49 BenGoldberg left 04:51 Psyche^ joined
jeek say [+] grep * < 4000000, (0, 1, *+* ...4000000) 04:53
How do I cap off the list of fibonacci numbers?
04:55 Psyche^_ left
jeek Got it 05:00
say [+] grep * %% 2, (0, 1, *+* ...^ * >= 4000000) 05:01
b2gills timotimo: @a>>.take is not safe, as it can get called out of order
05:02 llfourn joined
b2gills jeek: if you want to include 4000000 you want ...^ * > 4000000 05:03
jeek So, inverse match to make the lazy list generator stop? 05:04
05:07 llfourn left 05:11 _mg_ joined 05:13 DrArch left 05:14 nige1 joined 05:15 _mg_ left 05:16 psy_ left 05:17 khw left 05:18 secwang left 05:24 thesparta joined 05:25 sprocket_ joined, thesparta left 05:26 cpage_ joined, DrArch joined 05:27 protium left 05:33 zwu left 05:37 secwang joined 05:39 Cabanossi left 05:41 Cabanossi joined 05:44 zengargoyle joined 05:46 zengargoyle left 05:48 telex left 05:50 krunen left, telex joined 05:55 secwang left 05:56 DrArch left 05:57 molaf_ left
sammers hello 06:00
how do I use a variable ($foo) as the key name in something like this: HTTP::Request.new($method => URI.new($uri)) 06:02
06:03 llfourn joined 06:04 Ch0c0late left 06:05 sgt_baker left 06:06 secwang joined 06:08 llfourn left
sammers ok, figured it out: HTTP::Request.new(|($method => URI.new(uri))) 06:12
TimToady if you're intending to pass a named option, you I suspect you could say HTTP::Request.new(|($method => URI.new($uri))
yeah, that :)
sammers ha
yeah, thanks... was scratching my head there for a bit. so I guess this is referred to as dynamic named arguemnt? 06:13
TimToady you're the first person to ask for it :)
sammers ha
finally, I am first as something!
06:19 cdg joined 06:23 cdg left 06:25 secwang left 06:26 n0tjack joined 06:28 krunen joined 06:30 n0tjack left 06:32 secwang joined 06:34 sprocket_ left, sprocket_ joined 06:35 sprocket_ left
gfldex m: multi f(:$named){ note &?ROUTINE.signature }; multi f(:$also-named){ note &?ROUTINE.signature }; for 'named', 'also-named' -> $n { f(|($n => rand))} 06:36
camelia rakudo-moar ac4f9f: OUTPUT«(:$named)␤(:$also-named)␤»
06:37 krunen left 06:39 Tonik joined 06:40 sprocket_ joined 06:45 FROGGS left, sprocket_ left 06:50 sjoshi joined 06:53 llfourn joined
dalek c: 30c4baf | (Wenzel P. P. Peppmeyer)++ | doc/Type/Signature.pod:
doc casting a Hash or Pair into named arguments (sammers++)
06:54
c: 004c7b7 | (Wenzel P. P. Peppmeyer)++ | / (6 files):
Merge remote-tracking branch 'upstream/master'
c: 3d81284 | (Wenzel P. P. Peppmeyer)++ | doc/Type/Signature.pod:
better wording for casting a Pair into named arguments
c: 8e29886 | (Wenzel P. P. Peppmeyer)++ | doc/Type/Signature.pod:
Merge pull request #315 from gfldex/master

doc casting a Hash or Pair into named arguments (sammers++)
06:55 CIAvash joined 06:56 geraud left 06:58 peter__ joined 07:00 domidumont joined 07:05 domidumont left 07:06 domidumont joined
[Tux] csv-ip5xs 50000 19.544 19.429 07:10
test 50000 24.363 24.248
test-t 50000 13.311 13.196
csv-parser 50000 50.393 50.279
I get this (as I wrote that almost intuively:
m: say [+] ^64
camelia rakudo-moar ac4f9f: OUTPUT«2016␤»
[Tux] m: say [+] (3..6).map(* **3) 07:11
camelia rakudo-moar ac4f9f: OUTPUT«432␤»
[Tux] m: say [+] (3..9).map(* **3)
camelia rakudo-moar ac4f9f: OUTPUT«2016␤»
[Tux] but why is
m: say [+] (3..9).map(***3)
camelia rakudo-moar ac4f9f: OUTPUT«7␤»
[Tux] 7?
llfourn m: say [+] (2..8).map(***3) 07:12
camelia rakudo-moar ac4f9f: OUTPUT«7␤»
llfourn m: say (2..8).map(***3) 07:15
camelia rakudo-moar ac4f9f: OUTPUT«((6) (9) (12) (15) (18) (21) (24))␤»
llfourn I guess because it has seven elems each of which is a one elem list which ends up being 1 + 1 + 1...
07:17 peter__ left
gfldex that's a very fancy way of counting that is 07:22
m: say [+] (3..9).map((*)**3) 07:23
camelia rakudo-moar ac4f9f: OUTPUT«2016␤»
gfldex m: say [+] (2..9).map(***3) 07:24
camelia rakudo-moar ac4f9f: OUTPUT«8␤»
llfourn m: (2..9).map(**+0).perl.say 07:25
camelia rakudo-moar ac4f9f: OUTPUT«((2,).Seq, (3,).Seq, (4,).Seq, (5,).Seq, (6,).Seq, (7,).Seq, (8,).Seq, (9,).Seq).Seq␤»
gfldex - QAST::Op(call &HYPERWHATEVER) :BY<methodop/longname wa> :WANTED 07:26
[Tux]: the longest token matcher matches the longest token. see design.perl6.org/S02.html#The_HyperWhatever_Type 07:27
[Tux] thnx 07:28
gfldex --target=ast -e 'very-short-example()' can be very helpful 07:29
07:30 FROGGS joined
dalek c: d094daf | (Wenzel P. P. Peppmeyer)++ | doc/Language/faq.pod:
doc --target=ast see irclog.perlgeek.de/perl6/search/?ni...rget%3Dast
07:36
c: 4c2cb34 | (Wenzel P. P. Peppmeyer)++ | /:
Merge remote-tracking branch 'upstream/master'
c: 8a88776 | (Wenzel P. P. Peppmeyer)++ | doc/Language/faq.pod:
Merge pull request #316 from gfldex/master

doc --target=ast
07:37 RabidGravy joined 07:39 nige1 left
dalek line-Perl5: a33ac33 | (Stefan Seifert)++ | / (2 files):
Fix possible type mismatch of NVs

It's possible that NVs are not doubles, so better check their real size. As Perl 5 also supports 80 bit NVs and NativeCall doesn't, we bail out in that case with an error message pointing to this situation.
07:40
07:40 _mg_ joined 07:42 pierre-vigier joined
FROGGS TimToady: morning, here is something to muse about :o) - rt.perl.org/Public/Bug/Display.html?id=127165 07:44
07:45 peter__ joined 07:46 TimToady left 07:47 peter__ left 07:48 TimToady joined 07:51 nige1 joined
stmuk_ .tell Zoffix this is an odd one :) par.perl.org/ 07:55
yoleaux stmuk_: I'll pass your message to Zoffix.
08:01 jack_rabbit left 08:03 firstdayonthejob joined, sno left
RabidGravy yawn! 08:06
08:07 pierre-vigier left 08:08 zakharyas joined, pierre-vigier joined 08:12 _mg_ left 08:17 darutoko joined
lizmat good *, #perl6! 08:21
RabidGravy MARNIN!
08:21 pierre-vigier left
lizmat m: dd |( 42 => 42) 08:22
camelia rakudo-moar ac4f9f: OUTPUT«This type cannot unbox to a native string␤ in block <unit> at /tmp/uoPZkjvlxc line 1␤␤»
08:22 xdg left, pierre-vigier joined 08:23 araujo_ left
gfldex m: (|(41 => 41)).WHAT.say 08:23
camelia rakudo-moar ac4f9f: OUTPUT«(Slip)␤»
08:27 pierre-vigier left
DrForr Re: the LWP videos it's wonderful to see we've got an intro sequence, even if it feels a bit blurry :) 08:30
08:32 peter__ joined, peter__ left 08:34 SwellJoe left 08:36 brrt joined 08:38 pierre-vigier joined, firstdayonthejob left
dalek kudo/nom: 18957e3 | lizmat++ | src/core/DateTime.pm:
Fix for RT #127160
08:40
08:41 virtualsue joined 08:44 pierre-vigier left, luiz_lha joined 08:45 luiz_lha is now known as Guest64716 08:49 sno joined 08:55 nige1 left 08:57 pierre-vigier joined 09:02 n0tjack joined 09:03 _mg_ joined, AlexDaniel joined
dalek kudo/nom: d1ff735 | lizmat++ | src/core/Setty.pm:
Fix for RT #127166
09:04
09:05 veeru joined, veeru left 09:06 wamba joined, n0tjack left 09:07 abraxxa joined
stmuk_ I was very disappointed by the LWP quality 09:08
err LPW video quality I mean .. wasn't any better than the London Tech Meet Iphone video experiments
gfldex PR send to have Backtrace::AsHTML tests fixed 09:09
dalek ast: b774bcc | lizmat++ | S02-types/set (2 files):
Add tests for RT #127166
09:10
09:19 pierre-vigier left
dalek ast: afe667b | lizmat++ | S32-temporal/Date.t:
Add tests for #127160 and #127161
09:20
AlexDaniel lizmat++ 09:21
09:21 vytas joined 09:23 pierre-vigier joined
RabidGravy are there any modules in the ecosystem that bind to c++ libraries? 09:26
nine .seen flussence 09:27
yoleaux I saw flussence 01:40Z in #perl6: <flussence> I don't care enough about the date stuff to get involved :)
FROGGS RabidGravy: not is the ecosystem yet and I have lots of unpushed changes: github.com/FROGGS/p6-Box2D 09:28
AlexDaniel oh wow, Box2D 09:29
FROGGS++
RabidGravy :)
I'm going to attempt to redo (the unreleased) Audio::SoundTouch without the C wrapper 09:30
lizmat afk for a few hours&
FROGGS RabidGravy++ 09:31
09:36 yeahnoob left 09:41 secwang left
gfldex m: role R {}; R.^add_method('foo', method (){}) 09:44
camelia rakudo-moar d1ff73: OUTPUT«Method 'add_method' not found for invocant of class 'Perl6::Metamodel::ParametricRoleGroupHOW'␤ in block <unit> at /tmp/cHW4pjhJvi line 1␤␤»
gfldex that makes tests for Crust fail
09:44 secwang joined
gfldex last commit to Crust was on 2015-12-22 see github.com/tokuhirom/p6-Crust/commits/master 09:45
09:47 pierre-vigier left 09:49 pierre-vigier joined 09:52 _mg_ left, _mg__ joined 09:54 Peter_WR joined, nige1 joined
RabidGravy well that's a quick way to get a coredump 09:56
nine Oh how I hate packaging issues 09:58
09:58 leont joined
AlexDaniel “The default mode for C++ is now -std=gnu++14 instead of -std=gnu++98” – well, that's a big step 10:00
10:03 lnrdo joined 10:05 kailash19 joined, kailash19 left 10:07 espadrine joined, virtualsue left
RabidGravy FROGGS, I think to save having to put an "is symbol('soundtouch::SoundTouch::foo')" on every method there may be an "is symbol" on a class that guess_name_mangler can use 10:08
FROGGS RabidGravy: it will take the class name into account if you do it right 10:09
if the class is a CPPStruct
RabidGravy yeah, but then you have to name your class like the C++ class and namespace and in this case it is ugly 10:11
10:12 pierre-vigier left, pierre-vigier joined
gfldex are there any tests for the MOP? 10:12
RabidGravy i.e the C++ is "namespace soundtouch { class SoundTouch { ... } }"
so it works if I have "module soundtouch { class SoundTouch is repr('CPPStruct') { ... }}" but eugh 10:14
nine Is anyone here who managed to package rakudo and/or panda for a distribution?
10:14 Sqirrel_ joined 10:15 rindolf joined
RabidGravy so you can put "is symbol('soundtouch::SoundTouch')" on the CPPStruct and it will use that instead of the package name 10:17
10:17 talexb__ joined 10:18 Sqirrel left
FROGGS RabidGravy: no, an 'is symbol' trait is not (yet) supported on classes 10:19
10:20 talexb_ left, secwang_ joined 10:21 secwang left 10:24 leont left
FROGGS gfldex: that might be a starting point: gist.github.com/FROGGS/1a5122a8db23a49d128b 10:24
10:27 _mg__ left 10:28 virtualsue joined 10:31 lnrdo left, lnrdo joined
gfldex can i import a symbol with an aliased name? 10:34
FROGGS gfldex: not yet implemented sadly 10:40
gfldex there goes my workaround :( 10:41
moritz nine: pre-curli, yes
star is such a distribution 10:42
nine moritz: it's post-curli that gives me a headache :)
I fear that all distributions people have so far created packages for use some chroot trickery during package build. openSUSE doesn't. 10:44
But if the others don't either, I'd really like to know how people solved the problems with absolute paths in precomp .deps files 10:45
gfldex nine: some archlinux guy wrote here he uses chroot 10:46
10:47 araujo joined, araujo left, araujo joined, araujo left, virtualsue left 10:48 araujo joined, araujo left, araujo joined
nine I know we added RAKUDO_PREFIX for packaging and the docs say: "This is intended as an escape hatch for build-time bootstrapping issues, where Rakudo may be built as an unprivileged user without write access to the runtime paths in NQP's config." 10:48
But I can't figure out how this solves the problem with the absolute paths.
My guess is: it doesn't and the non-chroot packages built so far carry the same bug.
10:49 araujo left 10:50 araujo joined
RabidGravy FROGGS, I know :) I was proposing to make it but worded in such a way that anyone who was more motivated could leap in and do so before I did :) 10:51
FROGGS aha!
:D
10:52 araujo left, araujo joined, araujo left, araujo joined 10:54 araujo left
gfldex m: use MONKEY-TYPING; role R {}; augment role R { method m(){} } 10:59
camelia rakudo-moar d1ff73: OUTPUT«5===SORRY!5=== Error while compiling /tmp/nNvF99UZji␤Cannot augment R because it is closed␤at /tmp/nNvF99UZji:1␤------> 3MONKEY-TYPING; role R {}; augment role R7⏏5 { method m(){} }␤ expecting any of:␤ generic role␤»
grondilu m: use MONKEY-TYPING; augment class Int { method foo { say "bar" } }; 3.foo 11:00
camelia rakudo-moar d1ff73: OUTPUT«bar␤»
grondilu m: role R {}; { use MONKEY-TYPING; augment role R { method foo { say "bar" } } }; R.foo 11:01
camelia rakudo-moar d1ff73: OUTPUT«5===SORRY!5=== Error while compiling /tmp/glz6fuhJhy␤Cannot augment R because it is closed␤at /tmp/glz6fuhJhy:1␤------> 3 {}; { use MONKEY-TYPING; augment role R7⏏5 { method foo { say "bar" } } }; R.foo␤ expecting any of:␤ gen…»
11:01 brrt left
grondilu m: class C {}; { use MONKEY-TYPING; augment class C { method foo { say "bar" } } }; C.foo 11:02
camelia rakudo-moar d1ff73: OUTPUT«bar␤»
11:02 znpy joined 11:04 n0tjack joined
DrForr Are people planning to be around the day or two before FOSDEM or after? 11:06
11:08 n0tjack left
FROGGS grondilu: I guess it is this one: github.com/rakudo/rakudo/commit/09...68db03604e 11:09
lizmat DrForr: we'll be arriving on Fri and probably leaving late Sun 11:10
llfourn so is it META.info or META.json? 11:11
(or either)
DrForr lizmat: Good to know, especially since I want to hook up with you so I can get my game collection back :)
RabidGravy llfourn, META.info or META6.json I think 11:12
llfourn RabidGravy: thanks!
RabidGravy Oooh, applying a role which has a "public" attribute to a ClassHOW I get "Method 'declares_method' not found for invocant of class 'NQPClassHOW'" which I guess is from Attribute.compose 11:15
bug or PEBKAC? 11:17
dalek c: 9a28a00 | lizmat++ | doc/Language/unicode_texas.pod:
Add τ and π, fix table formatting
moritz m: constant t = Int.^HOW but role { };
camelia rakudo-moar d1ff73: OUTPUT«5===SORRY!5=== Error while compiling /tmp/E2wlB1spDD␤Cannot use .^ on a non-identifier method call␤at /tmp/E2wlB1spDD:1␤------> 3constant t = Int.^HOW7⏏5 but role { };␤ expecting any of:␤ method arguments␤»
moritz m: constant t = Int.HOW but role { }; 11:18
camelia rakudo-moar d1ff73: OUTPUT«5===SORRY!5=== Error while compiling /tmp/p6RPcYr4wH␤An exception occurred while evaluating a constant␤at /tmp/p6RPcYr4wH:1␤Exception details:␤ 5===SORRY!5=== Error while compiling ␤ Method 'package' not found for invocant of class 'NQP…»
moritz RabidGravy: seems that mixing Perl 6 roles into NQP classes doesn't work at all
RabidGravy: a saner approach is to inherit from ClassHOW; or is that what you're doing alreday? 11:19
arnsholt Yeah, NQP and Perl 6 classes have completely different HOWs, so that sounds painful, yeah... 11:21
11:21 araujo joined
RabidGravy well I'm trying to do: 11:21
m: role Bar { has Str $.bar; }; sub trait_mod:<is> (Mu $t, Str :$bar!) { $t.HOW does Bar; $t.^native_symbol = $bar; }; class Foo is bar('goo') { } 11:22
camelia rakudo-moar d1ff73: OUTPUT«5===SORRY!5=== Error while compiling /tmp/93s31yikZ8␤Method 'declares_method' not found for invocant of class 'NQPClassHOW'␤at /tmp/93s31yikZ8:1␤»
Zoffix pets the robot
yoleaux 07:55Z <stmuk_> Zoffix: this is an odd one :) par.perl.org/
Zoffix Weird
moritz RabidGravy: uhm, that sounds *very* dangerous 11:24
RabidGravy which is kind of the only way I can think of adding "is symbol" to classes for the suppport of weirdly namespaced C++ classes 11:25
11:25 molaf joined
moritz RabidGravy: the MOP is allowed to have only one meta class instance for several types (to support prototype-style OO, for example) 11:25
RabidGravy: so mixing into a meta object might cause *all* types of that kind to get the new behavior 11:26
Zoffix stmuk_, seems to be an Apache mod_rewrite. A change I make on perl6.org is instantly visible on par.perl.org 11:27
moritz RabidGravy: you could either create a new HOW type (much like GrammarHOW extends ClassHOW to add some functionality), or keep a global-ish object hash from type to native symbol name
nine Zoffix: no rewrite necessary: par.perl.org is an alias for par.perlcabal.org. par.perlcabal.org has address 213.95.82.53 perl6.org has address 213.95.82.53 11:28
11:29 joydo joined
dalek href="https://perl6.org:">perl6.org: d0be197 | (Zoffix Znet)++ | source/downloads/index.html:
Fix markup alignment / Modules box placement
11:30
kudo/nom: 4b443f2 | lizmat++ | src/core/Pair.pm:
Make sure we can flatten a Pair with a non-Str key

Changes the output of 'say |(42 => 42)' from:
   This type cannot unbox to a native string
to:
   Unexpected named parameter '42' passed
11:31
Zoffix nine, that's really weird. I'd think par.perl.org was about the par project. That whole "compile your perl script"
RabidGravy Hmm. let's have a poke around and see if there's anything else that does something similar 11:32
11:33 xpen left
dalek href="https://perl6.org:">perl6.org: 4dcf169 | (Zoffix Znet)++ | / (2 files):
Fix markup errors
11:33
11:34 adhoc left
dalek href="https://perl6.org:">perl6.org: f9dd2f4 | (Zoffix Znet)++ | source/downloads/index.html:
Use consistent markup
11:35
11:35 _mg_ joined, adhoc joined
daxim Zoffix, I want to possibly reopen github.com/perl6/doc/issues/286 1. default key for me is RShift+RCtrl, for you AltGr+Shift - which one is correct? 2. we should provide an XCompose file with all Perl6 and their texas mnemonics for key sequences input so that each user does not need to tediously configure it for himself, and every user gets the same key sequences 11:37
what do you think?
Zoffix +1
And well-volunteered! :D 11:38
daxim okay, let's first figure out why it's AltGr for you. do you get ™ when you type AltGr+Shift+8? 11:39
11:40 LeoNerd joined
LeoNerd I'm told here's the place to come to talk to the FOSDEM/perl organisers..? 11:40
lizmat m: my int $a = -10; say $a % 12 # wrong
camelia rakudo-moar d1ff73: OUTPUT«-10␤»
LeoNerd Ah - hi lizmat :)
lizmat m: my Int $a = -10; say $a % 12 # right
camelia rakudo-moar d1ff73: OUTPUT«2␤»
Zoffix daxim, I just put whatever nemo gave me. I redefined my compose to right Windows key
arnsholt RabidGravy: Sounds like maybe what you what it to modify the WHAT, not the HOW? 11:41
Zoffix And I get nothing for Compose+Shift+8
oh, maybe I should be... it's broken again -_-
lizmat LeoNerd: possibly, woolfy is offline atm, but if you have a proposal, you could gist it and let me know where to find it
LeoNerd Oh, not as such. More just wondering how full the schedule is looking currently. If you're short on speakers I could submit something, but I'm not -oooverly- keen ;) 11:42
Zoffix oh, fixed.. No nothing for that sequence. I do get ⁸ with Compose+^+8 tho
LeoNerd If you've got plenty then I won't mind
lizmat LeoNerd: I think there's no shortage of proposals, afaik
LeoNerd Ah OK.. then I'll sit this one out and just listen for a change ;) 11:43
RabidGravy arnsholt, in the case of a class trait wouldn't the WHAT be the same as the type that is passed as the first argument? 11:44
or maybe I'm missing some subtlety
nine The results of the past 3 hours: precompilation at install time is almost impossible to combine with distribution provided module packages
daxim tell nemo: re m8y.org/tmp/perl6.txt default key for me is RShift+RCtrl, for you AltGr+Shift - which one is correct?
how do I use the tell bot? 11:45
arnsholt RabidGravy: Yeah, probably
moritz daxim: .tell somebody text here
daxim .tell nemo: re m8y.org/tmp/perl6.txt default key for me is RShift+RCtrl, for you AltGr+Shift - which one is correct?
yoleaux daxim: What kind of a name is "nemo:"?!
arnsholt Oh, but you're trying to do an is trait on a class? I'm not sure if that's possible
daxim .tell nemo re m8y.org/tmp/perl6.txt default key for me is RShift+RCtrl, for you AltGr+Shift - which one is correct?
yoleaux daxim: I'll pass your message to nemo.
arnsholt Since the is syntax is already used for inheritance
LeoNerd OK, thanks lizmat - I'll leave you to it :) 11:46
11:46 LeoNerd left
RabidGravy oh it works fine, 'is' inheritance is just a trait that does add_parent or something to the class 11:46
HOW that is
arnsholt Ah, cool
11:47 pierre-vigier left
Zoffix m: my Int $y = 10; my int $x = -10; $x % $y == $x - floor($x / $y) * $y 11:47
camelia rakudo-moar d1ff73: OUTPUT«WARNINGS for /tmp/PUUh8TSrZ0:␤Useless use of "==" in expression "% $y == $x -" in sink context (line 1)␤»
Zoffix m: my Int $y = 10; my int $x = -10; say $x % $y == $x - floor($x / $y) * $y
camelia rakudo-moar d1ff73: OUTPUT«True␤»
11:48 adhoc left
Zoffix m: my Int $y = 10; my int $x = -10; say floor($x / $y) * $y 11:48
camelia rakudo-moar d1ff73: OUTPUT«-10␤»
dalek kudo/nom: d80c728 | lizmat++ | src/core/Date.pm:
At least temporary fix for RT #127161

Which is really caused by RT #127168
11:51
11:52 secwang_ left
nine New conclusion: precompilation is impossible to combine with distribution provided module packages 11:53
dalek ast: 233d409 | lizmat++ | S32-temporal/Date.t:
Unfudged now passing tests for RT #127161
11:54
lizmat nine: :-(
sergot m: use File::Find; 11:55
camelia rakudo-moar 4b443f: OUTPUT«===SORRY!===␤Could not find File::Find in:␤ /home/camelia/.perl6/2015.12-99-g4b443f2␤ /home/camelia/rakudo-m-inst-1/share/perl6/site␤ /home/camelia/rakudo-m-inst-1/share/perl6/vendor␤ /home/camelia/rakudo-m-inst-1/share/perl6␤ Co…»
11:55 znpy left
sergot when File::Find is installed it seems to crash p6 programs with "P6M Merging GLOBAL symbols failed: duplicate definition of symbol Find" 11:56
nine Our architecture assumes that we can write to the installation repository and can recompile modules at will while distro packages really only want to copy files.
arnsholt nine: Why is that?
Ah, right
sergot hmm, maybe not... 11:58
nine sergot: that has been fixed in rakudo nom and current panda
Considering that the precompiled files in the install repository are usually never even used (because the home repository is first in the chain), I'm quite tempted to rework this architecture...again. 12:00
I sometimes think that doing a hackathon for this may be the best way to finally nail it. 12:01
lizmat maybe we should organize something before FOSDEM? 12:02
12:02 bpmedley left
nine lizmat: the coming weekend is the only one before FOSDEM where I'd have time 12:03
And jnthn is not even back in busineess yet (will reappear presumably next week)
12:07 Skarsnik joined
Skarsnik Hello 12:07
12:09 pmurias joined
DrForr Afternoon. 12:09
sergot nine: thanks 12:12
12:12 vividsnow left
sergot nine: I updated rakudo, but forgot about panda 12:12
12:12 vividsnow joined 12:13 pierre-vigier joined 12:14 pierre-vigier left 12:17 joydo left 12:19 bioexpress joined 12:20 bioexpress left, _mg__ joined, cognominal left 12:21 cognominal joined 12:22 _mg_ left, _mg__ is now known as _mg_
dalek c: 35bf77f | RabidGravy++ | doc/Type/Blob.pod:
Mark unpack and pack as experimental

Closes #317
12:22
12:22 lnrdo left, lnrdo joined 12:23 Sqirrel_ left, g4 left 12:25 zakharyas left, dakkar joined, kid51 joined
pmurias nine: you mean it's impossible to combine precompilation in it's current form or in general? 12:25
nine pmurias: in its current form 12:26
12:26 vividsnow left 12:27 vividsnow joined
nine The best I can think of while keeping the current architecture is splitting install and recompilation and do the recompilation in a postinstall-script. 12:27
RabidGravy I was just going to say something to that effect
nine The devil is as always in the details. And there are so many different use cases with their very own details connected to all of this 12:28
12:29 vividsnow left
pmurias nine: is there a description of how precompilations works other than the source code? 12:30
12:31 vividsnow joined 12:33 lnrdo_ joined 12:35 lnrdo left, skids joined 12:36 _mg__ joined 12:37 lnrdo joined
nine pmurias: docs/module_management.md 12:37
12:38 lnrdo_ left 12:39 _mg_ left, _mg__ is now known as _mg_ 12:41 kid51 left 12:42 lnrdo left 12:47 skids left
sergot is there any documentation for "special" variables, like $*CWD? 12:48
12:48 nige1 left
RabidGravy doc.perl6.org/language/variables#Sp..._Variables :) 12:49
sergot thanks RabidGravy++ I didn't know how to type it into the searchbox
probably, just variables or so
RabidGravy I think perhaps in the fullness of time that stuff should go in its own document so they can be expanded upon 12:50
12:51 nige1 joined 12:57 pmurias left
pnu can someone please check this: github.com/tadzik/panda/pull/285 12:58
RabidGravy pnu, looks reasonable to me 13:00
nine pnu: merged it 13:02
pnu nine: ok, thanks.. I'm adding perl6 support (from my heroku-buildpack-rakudo) to the generic perl buildpack and this was blocking it.
13:03 iH2O joined
tadzik pnu++ 13:05
good catch
13:07 zakharyas joined 13:09 lichtkind joined 13:11 iH2O left
Peter_WR Does anyone know if there will be any Perl 6 talks at FOSDEM? 13:11
nine There will be
El_Che Peter_WR: 100% sure there will be :) 13:12
_nadim Good day!
Is ther sometihing brewing in the IPC/serialization, distrbution side? 13:13
RabidGravy wahay! "*** Error in `/home/jonathan/.rakudobrew/moar-nom/install/bin/moar': corrupted double-linked list: 0x000000000420f020 ***"
Ulti o___O 13:14
|Tux| RabidGravy, utf8-c8?
RabidGravy not entirely sure, this was just "say" on a "const char *" returned from a C++ method 13:16
oh weird, on a second and subsequent run it doesn't do that 13:17
13:17 _mg_ left
RabidGravy and actually works and everything 13:17
Skarsnik can you write doc on c++ nc support if you feel like? x) 13:21
13:21 kaare_ joined
RabidGravy oh, no it does it every once in a while 13:21
13:21 pmurias joined
pmurias nine: making recompilation integrate with npm seems like it will be a bit tricky 13:22
13:22 asie left, _mg_ joined 13:24 asie joined 13:27 _Vi joined, zakharyas left
dalek kudo/nom: 75c6b9e | lizmat++ | src/core/Dateish.pm:
Make Date/DateTime.new(years => 10) fail less LTA

Cannot call DateTime.new with these named parameters: years
As a reaction to RT #127162
13:27
13:29 zakharyas joined, Perl6IRC left 13:31 pierre-vigier joined 13:33 lnrdo joined 13:34 znpy joined 13:40 xinming joined 13:42 sammers left 13:43 xinming_ left, xpen joined 13:45 woolfy joined, xinming left
AlexDaniel lizmat: thanks for your work 13:45
13:46 xinming joined 13:47 lnrdo_ joined, lnrdo left
lizmat commute to Amsterdam& 13:49
13:49 lizmat left
dalek rl6-roast-data: 8eff548 | coke++ | / (7 files):
today (automated commit)
13:51
13:52 araujo left 13:53 sammers joined 13:54 sprocket_ joined 13:58 woolfy left 14:00 araujo joined, araujo left, araujo joined, araujo left
pmurias Rotwang: I consider build scripts simply horrible, luckily automatic compilation in the modern languages is slowly getting rid of them 14:04
profan ^ god bless progress 14:05
nine pmurias: embrace the Makefile!
[Coke] wow, turning on pygmentize slows down the doc build by a LOT. 14:07
[Coke] looks forward to the next Perl 6 event hosted in the tri state area. 14:08
abraxxa anyone fancy looking at RT#127001?
[Coke] . o O ( where I will reveal my latest invention, the Gramminator! )
RT#localhost
abraxxa [Coke]: yes ;)
RT#::1 14:09
[Coke] FYI, that ticket is about nativecall types.
pmurias nine: great idea, we can just embrace the Makefiles and make precompilation manual, things will be so much easier ;) 14:10
14:11 sprocket_ left
nine Manual precompilation! A stroke of genius! 14:11
tadzik abraxxa: it sounded like a name of a conference :) 14:12
abraxxa tadzik: that's localhost in IPv6
nine: why would you precompile a manual? :P
tadzik abraxxa: oh, I was talking about the former, and in the context of your question :) 14:13
14:14 rindolf left
RabidGravy Hmm so I get that MoarVM panic from even just instantiating a CPPStruct just a lot less frequently 14:16
masak "Though we continue to invest in Angular 1, we've pushed the features possible within its architecture about as far as we can. Angular 2 represents growth in capabilities." -- the analogy ng1:ng2::p5:p6 continues 14:17
Skarsnik RabidGravy, I had the idea of having some debug trace for what was NC related. maybe it can be useful to catch bugs/weird stuff? any thought x) 14:22
RabidGravy in this case I don't think it would help as moar is getting into a tizz when it tries to Free some memory 14:28
but go for it
but I think I know what it is, the native size of my CPPStruct is 48 and sizeof(soundtouch::SoundTouch) is 64 14:29
abraxxa no precompilation; in StatementHandle.pm6 IS a workaround for RT#127001
14:29 sftf joined
abraxxa i'm using that for now so I can continue on DBDish::Oracle until it's fixed 14:30
Skarsnik Oo
sergot To module makers: I've just created a tool that generates META.info for you, also (To everyone)it can install every dependency when you work on an existing project. Here it is: github.com/sergot/bamboo --- feedback very appreciated, please :))
14:30 rindolf joined
sergot if you run the tool after writing some code and before publishing it to github - it generates "depends" and "provides" section for you 14:31
Skarsnik I think autarch and some people are working on an module authoring tool
Ah that nice :)
nine I thought panda can do the same?
sergot no way, really? :))))
maybe it does, I wasn't awere of this
Skarsnik: module authoring tool, what do you mean? 14:32
nine panda gen-meta and panda installdeps
Skarsnik stuff to handle work on modules, generate basic files, generate meta.. stuff like that? 14:34
sergot yeah, installdeps I know, didn't hear about gen-meta
14:35 Peter_WR left 14:36 Melezhik joined
sergot I'm not sure if gen-meta works the same tho 14:36
:)
14:36 sprocket_ joined
Melezhik Hi ! Happy new year to all. A little question about perl6. If perl6 has something similar to "do 'file.pl' " in perl5 ? 14:38
Skarsnik what do 'file.pl' does?
nine Melezhik: it does: EVALFILE. But why would you need that? 14:39
DrForr Most times that people think they want "do 'file.pl'" they're after a configuration system, for which a module is usually more appropriate.
nine Especially in a language with such great parsing capabilities as Perl 6
DrForr If you want to load functions from that file, then just like in Perl 5, what you usually want to do is create your own module and export functions. 14:40
Juerd Yet most of the time when I needa configuration system, I chose Perl ubiquitous, and I don't want to install *any* configuration module because they're not quite as ubiquitous as Perl itself.
RabidGravy sergot, I made github.com/jonathanstowe/META6 if you don't want to track the META spec yourself ;-)
Juerd So I've used "do FILE" a lot, for configuration.
Especially because my %config = do 'config.pl'; is nice.
No module gets such a simple syntax. And it's great that you can use things like 24 * 60 * 60 in a config file. Somewhat more self-documenting than 86400. 14:41
Melezhik Yeah, thanks, guys. My code is based on do " /path/to/file" - perldoc.perl.org/functions/do.html , to unconditionally execute the same piece of code which located at file . 14:42
Juerd So I disagree that config should always be done with a module. Something (I don't know what, yet) in the core will be good enough, and I'll use that instead :)
nine Juerd: as long as you are the only users, that may be enough. As a user who had to deal with "configuration" files in Erlang and PHP, I really don't consider this friendly
Melezhik I do not need export or something like that, just to execute the same code in main process, without forking
Juerd nine: I keep them pure k/v lists. 14:43
nine Melezhik: what kind of code is in this file?
Melezhik And that is what do file in perl5 does exactly
Perl code
Juerd Melezhik: EVALFILE does this. 14:44
1;0 juerd@cxie:~$ echo "foo => 'bar'," > config.p6
1;0 juerd@cxie:~$ perl6 -e'my %config = EVALFILE "config.p6"; say %config<foo>'
bar
14:44 virtualsue joined
Melezhik I mean perl5 'require' is not enough . Yeah Juerd, I got it, thanks! 14:44
nine Melezhik: I know that it's Perl code. But what does this code do? 14:45
RabidGravy Juerd, didn't that ask you for a "MONKEY-SEE-NO-EVAL" ?
Juerd RabidGravy: No, that would be weird. 14:46
Melezhik Nine, call some routines, end call some others ' do's
Juerd RabidGravy: MONKEY-SEE-NO-EVAL is for EVAL with interpolation
nine Melezhik: ok, I'll phrase it differently: why can't you move this code into a proper module?
RabidGravy but you've got even less control over what might be in a file
Juerd RabidGravy: That's not unlike 'require'. 14:47
Melezhik Nine, because this is type of code which is better to not keep as module, at least at current design
nine Melezhik: I'm really curious. I can't imagine any code that's not suitable for a module but needs to be EVALFILEd
pmurias nine: it will be interesting to try to combine precompilation with npm ;) 14:48
Juerd nine: Configuration and simple few-line plugins are my use cases
nine pmurias: does npm support post-install scripts?
Melezhik Nine, I know this sounds weird a :))) , still it sounds weird for me too!
Juerd nine: I have some daemons that execute some code when specific events happen. I want that compiled and executed only once each time. 14:49
nine Melezhik: then probably it _is_ weird and you should re-think your architecture.
Juerd The daemons have lots of startup overhead and I want to change what happens during runtime.
RabidGravy anyway, I'm beginning to regret trying to bind this C++ library, I've found the missing 16 bytes it's in the privates of the superclass
Juerd nine: I do similar things with Irssi, to use it as an IRC bot.
Skarsnik RabidGravy, oh you get struct size issue? 14:50
Melezhik Say I have an abstract legal code, which I want to be executed upon some conditions. And this is not only functions and methods calls
nine Juerd: if you need to reduce overhead, you _have_ to do it as proper modules, so you can benefit from precompilation. And there's nothing keeping you from requireing modules at run time. Requireing a second time won't load them again.
Melezhik I mean Perl code, not legal
Juerd Okay, granted, I'm not using 'do' here: juerd.nl/i/f91fea75500b5766e65d8c5448a670fd.png
Melezhik It was a typo , sorry 14:51
RabidGravy well a CPPStruct, "class SoundTouch : public FIFOProcessor" the missing 16 bytes are FIFOProcessor
Juerd nine: Read what I said again.
nine: I do need them to be loaded again.
pmurias nine: it seems to
14:51 peter__ joined
RabidGravy I foresee goat sacrificing 14:51
Juerd nine: I don't see why you're not a fan of timtowtdi anymore :P 14:52
Skarsnik do a RT?
pdcawley m: sub foo {...} sub bar {...}
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/pnpUyxjFBs␤Strange text after block (missing semicolon or comma?)␤at /tmp/pnpUyxjFBs:1␤------> 3sub foo {...}7⏏5 sub bar {...}␤ expecting any of:␤ infix␤ infix stopper␤ …»
Melezhik Modules are fine if code you want to reuse is "packed" in functions and methods, but if this is just a code you need to execute repeteously upon some conditions, modules are not fine for this
pdcawley Right... More repl hackery needed then... 14:53
sftf I agree with Juerd: does not require write your own parser each time since perl parse and create data structures for you, does not require manipulate @INC to load the module from somewhere, the freedom of action in the "configuration" file...
Juerd Melezhik: I agree completely. Sometimes even writing "sub ... { ... }" around the code is simply too ugly.
[Coke] is "C<=>>" properly rendered in html as <code>=</code>&gt; ?
nine Melezhik: why wouldn't modules be fine for this? I can execute a sub repetously upon some condition just fine.
Juerd nine: Because that requires extra code that distracts 14:54
nine: pastebin.com/Fjj4tPx0
[Coke] nine: I agree with you, but this is a matter of taste, I think.
Juerd nine: This irc bot has a few dozen of such small files. Could be modules but I don't want them to be.
The great upshot is that now, even unexperienced Perl programmers will write commands for this bot 14:55
pdcawley "sub foo {...}\\\nsub bar {...}\n" collapses to 'sub foo {...} sub bar {...}' which fails to parse. Need to reinstate the \n
Juerd And if one tiny file fails to compile, the rest keeps working
And it'll just be loaded again when it's needed again, so that's great for ad-hoc development
14:55 peter__ left
Juerd No need to reload the bot 14:55
14:56 peter__ joined
Melezhik yeas, exactly as Juerd told sometimes I do not want to force people to write code via functions or methods, I want that people just write a code, because these files are kind of public stuff, which everyone could write 14:56
sftf Where is documentation about EVALFILE on doc.perl6.org/ ?
Juerd This approach is great for when you have a long living daemon and want people to work on different parts of the runtime execution.
Melezhik All I I can do with them is to execute , that is it
Juerd It's completely unacceptable to have a syntax error break the long living daemon. 14:57
So it must be eval'ed
It's also slightly unwanted to have 'sub main { ... }' or something like that in every file.
This structure encourages having lots of tiny files that don't try to interact with eachother.
In any case, if I wanted a programming language that prescribed what I should and shouldn't do, I'd probably use Python :) 14:59
abraxxa Skarsnik: can you please take a look at my DBIish fork repo can the test changes I made in 99-common.t?
nine and have no proper interface at all and are written to a precise implementation
Juerd Fortunately, Perl 6 probably has everything I need, just like Perl 5. 15:00
Melezhik <Juerd> you sure on my way :))))
Juerd I'm just afraid that I'll get used to Perl 6 even more, and will get frustrated with 5 for dayjob code.
Skarsnik abraxxa, I think the is-deeply not working came form NC giving sometime str with the explicitlymanaged role
abraxxa Skarsnik: ah!
15:00 sprocket_ left
abraxxa Skarsnik: I'd change the test to explicitly test the type and value of each column 15:01
instead of testing the whole struct
Skarsnik gist.github.com/Skarsnik/7f2fee97d56c5acc1587
abraxxa OR change the expected struct to match what's returned
15:02 znpy left
Skarsnik expect/got is inverted x) 15:02
Melezhik Juerd, thanks lot, again will take a look at evalfile
Skarsnik but you get the idea
15:02 FROGGS left
abraxxa Skarsnik: where does that output come from? 15:02
Skarsnik Data::Dump 15:03
Juerd Melezhik: nine suggested EVALFILE
abraxxa we should return Str instead of the NativeCall-roled ones
nice format
Juerd Melezhik: I just checked whether it would do what you wanted
Skarsnik abraxxa, it's kind of related to that: github.com/perl6/DBIish/issues/44
15:05 n0tjack joined
abraxxa Skarsnik: yeah, I've read that 15:05
Skarsnik abraxxa, you can write mycroutine().Str to get a Str copy probably
abraxxa the NativeCall docs are missing what happens with the memory after you mark a Str as explicitly-managed
Skarsnik The gc does nothing with it
abraxxa how can it be freed then? 15:06
is there a free($exp-managed-str) function?
Skarsnik I am not even sure if that could not lead to some weird leak, like the c memory is free but the perl6 part that describe the Str is not freed 15:07
It count on the lib offering something to free these data
[Coke] opens a LHF doc ticket: github.com/perl6/doc/issues/318
Skarsnik like mysql free what it give you when you call mysql_finish 15:08
15:09 bpetering joined, Melezhik left, n0tjack left
Skarsnik what did you change in 99.t? aside the magic_cmp that seem weird 15:09
15:10 skids joined
abraxxa I've added two new records, one only with an integer, one only with a float 15:10
this had an impact on all tests after that
and I've changed the comparisons regarding types & values
bpetering .tell timotimo I don't know about keccak in Perl 6 yet, but in addition to libgit2 I'm working on bindings for libsodium, which lets you do more modern hashing 15:11
yoleaux bpetering: I'll pass your message to timotimo.
RabidGravy yep getting size of the CPPStruct right prevents the panic :)
Skarsnik RabidGravy, how did you do that? x)
RabidGravy find the superclasses definition, add a new class with their member variables and inherit from it :) 15:13
Skarsnik abraxxa, all the fetch_ returns Str value on all the other drivers
yes, I think the cpp part of nc handle to herit other class x) 15:14
dalek c: 07feca7 | (Zoffix Znet)++ | doc/Language/subscripts.pod:
Fix incorrect C<> escaping

Fixes #318
abraxxa Skarsnik: so only DBDish::Oracle returns what you've pasted?
Skarsnik there is a row and allrows method that return typed value, the fetch* are 'old' stuff to stay closed to p5 DBI 15:15
abraxxa Skarsnik: i'd also like to discuss finish because I'd like to not expose it in the API but do it internally in the required places
Skarsnik *close
RabidGravy Skarsnik, yes it does and the previous crashy methods now work over many many iterations :) 15:16
abraxxa imho that makes no sense
Perl 6 is a new, incompatible programming language, why would it have the same API than DBI?
Skarsnik You are not forced to have them 15:17
15:18 xpen left, lucasb joined
Skarsnik abraxxa, my issue with finish was like mysql free stuff on finish and if a copy of the data is not returned... it's not good x) 15:19
15:19 Ch0c0late joined 15:20 regreg joined
lucasb I came here just to bikeshed that S/// message :) 15:21
m: say 'foo' ~~ S/o+/oo/ 15:22
camelia rakudo-moar 75c6b9: OUTPUT«Potential difficulties:␤ Smartmatch with S/// can never succeed because the string it returns will fail to match. You can use given instead of ~~.␤ at /tmp/sGoxTuaW_Z:1␤ ------> 3say 'foo' ~~ 7⏏5S/o+/oo/␤True␤»
TimToady or with, assuming it's defined
lucasb well, that snippet just succeed and successfully matched
abraxxa Skarsnik: I'll try to fix the types for Oracle by returning copies 15:23
geekosaur because it was a null change. but it has to be a short message, not a dissertation about how if it does succeed it's because it was a no-op 15:24
TimToady hmm, shouldn't've matched, methinks
oh, wait, it didn't change anything
lucasb yes, no change.
TimToady so yes, it can match, but rather uselessly
lucasb yes, uselessly. but sometimes I use 's/\s+/ /' to clean whitespace in files... 15:25
TimToady but if it changes anything, it won't match
smartmatch with a string is always an 'eq' 15:26
lucasb yes, agree with everything. I just thought the generalization 'can never succeed' was poor worded 15:27
TimToady but the new message is more problematic in a different way 15:28
m: given "foo" { when S/o+/o/ { say "here" } }
camelia rakudo-moar 75c6b9: OUTPUT«Potential difficulties:␤ Smartmatch with S/// can never succeed because the string it returns will fail to match. You can use given instead of ~~.␤ at /tmp/U9ppRNVMKi:1␤ ------> 3given "foo" { when 7⏏5S/o+/o/ { say "here" } }␤»
TimToady it assumes use of ~~, and smartmatch is used lots more places than that 15:29
abraxxa Skarsnik: interesting that the first Str isn't +{NativeCall::ExplicitlyManagedString}
Skarsnik I am not even sure why x)
TimToady lucasb: in that respect the old message was better 15:30
and you'll note my example *already* has a given, which is even more confusing... 15:31
15:31 wamba left 15:32 user3 joined
user3 when is release 1.0 expected for the rakudo compiler? 15:33
TimToady we don't count versions that way
user3 when is perl 6 release 1.0 expected?
TimToady we don't count versions that way!
user3 O_O
abraxxa user3: Perl 6.c has already been released, look at 'rakudobrew list-available'
user3 will you ever have a release 1.0 of some kind? 15:34
TimToady we don't count versions that way!!!!!
you can think of Perl 6c as 1.0 if you like
you can think of rakudo 2015.12 as 1.0 if you like
flussence
.oO( how do these people get here and completely miss the huge box at the top of the website? )
15:34 sjoshi left
nine flussence! 15:35
abraxxa Skarsnik: I just saw that you test floats for Num, I've opted for Rat as that's what Perl 6 generates on my $foo = 4.85;
flussence nine!
lucasb yoleaux!
yoleaux lucasb!
jast flussence: to be fair, the box can still be interpreted as "this is not a really-for-real-release", since the versioning scheme can easily be taken for releases that are more ephemeral. the term "release" has been overloaded a lot by various projects, after all.
user3 ok, seriously i tend to shun color text (cuz its usually spamming) 15:36
ok
Skarsnik abraxxa, write 4.85e0 but as you can see I marked this test as todo because Num make probably more sense than Rat for float value. But Rat offer more precision probably 15:37
abraxxa flussence: it's not large enough
hoelzro o/ #perl6
abraxxa seriously
Skarsnik m: say Num ~~ Rat
camelia rakudo-moar 75c6b9: OUTPUT«False␤»
nine flussence: how did you solve the problem of absolute paths in .deps files in your rakudo package?
15:37 araujo joined, araujo left, araujo joined
abraxxa the title is way larger 15:37
bpetering user3: are there specific features you're looking for?
Skarsnik m: say Rat ~~ Num
camelia rakudo-moar 75c6b9: OUTPUT«False␤»
jast font-size: 5000em; 15:38
abraxxa m: say Num ~~ Rat;
camelia rakudo-moar 75c6b9: OUTPUT«False␤»
15:38 lnrdo_ left, araujo left, lnrdo joined
flussence nine: I... didn't actually do anything there beyond making all the fatal errors stop. Should I be worried? 15:38
nine flussence: does your package build process use chroot? 15:39
flussence nope, just a limited user
nine openSUSE's rpmlint notified me of BUILDROOT paths contained in installed files. They are contained in precomp files and their .deps files, so the out of date check for precomp files will not find the corresponding source files. 15:41
abraxxa loves {} to call functions/method inside of ""
flussence ohh... yeah, that might be a problem.
lucasb related to release confusion, I'm sorry to say this again, but I really think the rakudo tag 6.c should be removed. I saw a directory like ~/.perl6/v6.c-93-g812a48b scroll by somewhere, so some tool is not giving preference for 2015.12 style git tags 15:42
nine flussence: I fear nothing short of a redesign will fix this 15:43
15:43 nige1 left, n0tjack joined 15:44 user3 left
lucasb m: say True ~~ True 15:44
camelia rakudo-moar 75c6b9: OUTPUT«True␤»
lucasb m: given True { when True {} }
camelia rakudo-moar 75c6b9: OUTPUT«Potential difficulties:␤ Smartmatch against True always matches; if you mean to test the topic for truthiness, use :so or *.so or ?* instead␤ at /tmp/wAv0uvlIPS:1␤ ------> 3given True { when 7⏏5True {} }␤»
abraxxa Skarsnik: i don't know why but the expected is really the one that containts the Str+{NativeCall::ExplicitlyManagedString}
15:44 pwr joined, Peter_WR joined 15:45 Peter_WR left, pwr left
lucasb back to the smartmatch thing, why the message triggers with given/when but not with ~~ ? 15:45
TimToady dunno
15:45 Melezhik joined, Peter_WR joined
Skarsnik abraxxa, displaying the @ref show NC stuff in it?! 15:45
abraxxa Skarsnik: i've added diag Dump(@ref-aoh); after defining the array in line 221 and it dumps that
lucasb ah, ok. because you showed that the S/// is triggering with both constructs, and it should only trigger with ~~. (right?)
TimToady no, it *should* trigger on any smartmatch 15:46
abraxxa Skarsnik: github.com/abraxxa/DBIish/blob/mas...n.pl6#L219
right after that statement
lucasb oh, yes. I confused myself.
TimToady m: say False ~~ False
camelia rakudo-moar 75c6b9: OUTPUT«False␤»
abraxxa haha 15:47
lucasb the issue is with suggesting given when already using given
Skarsnik abraxxa, I don't even...
nine flussence: I'm currently testing a band aid of removing the precomp files after the build, so they won't get installed at all. They are pretty useless as-is anyway, even if the paths were correct. 15:48
15:48 kubrat joined
Peter_WR m: multi fib (0) { 0 } say fib 0; 15:48
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/uNKt89ZZ5m␤Strange text after block (missing semicolon or comma?)␤at /tmp/uNKt89ZZ5m:1␤------> 3multi fib (0) { 0 }7⏏5 say fib 0;␤ expecting any of:␤ infix␤ infix stopper␤ …»
TimToady lucasb: the fundamental problem is a semipredicate problem of distinguishing certain values as success/failure but not others 15:49
Peter_WR m: multi sub fib (0) { 0 } say fib 0;
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/A0GSTwCb1Y␤Strange text after block (missing semicolon or comma?)␤at /tmp/A0GSTwCb1Y:1␤------> 3multi sub fib (0) { 0 }7⏏5 say fib 0;␤ expecting any of:␤ infix␤ infix stopper…»
15:49 khw joined
Skarsnik m: use NativeCall; my $str1 = "lol"; explictly-manage($str1); my Str $str2; my Str $str3; say $str3.^name; 15:49
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/dfLsk0GAa2␤Undeclared routine:␤ explictly-manage used at line 1. Did you mean 'explicitly-manage'?␤␤»
Skarsnik m: use NativeCall; my $str1 = "lol"; explicitly-manage($str1); my Str $str2; my Str $str3; say $str3.^name;
camelia rakudo-moar 75c6b9: OUTPUT«Str␤»
flussence nine: couldn't it just omit the full path when writing a deps file in the same directory?
TimToady lucasb: in that sense, True/False and S/// are on opposite sides of the fence
15:50 lnrdo left
TimToady because Bool always indicates success/failure, and strings never do 15:50
15:50 xpen joined, lnrdo_ joined
Skarsnik m: use NativeCall; my $str1 = "lol"; explicitly-manage($str1); my $str2 = "bb"; my $str3 = "aa"; say $str3.^name; 15:50
camelia rakudo-moar 75c6b9: OUTPUT«Str␤» 15:51
15:51 psy_ joined, peter__ left
AlexDaniel Skarsnik: I have a problem with DBIish. I have a function that returns TABLE. However, when I try to fetch results from it I just get Str 15:51
Skarsnik: that is, all columns are smashed into a comma-separated string
nine flussence: in the .deps file we record the precomp id of a dependency and the path to the source file, so we can quickly check if the precomp file is out of date. The dependency may come from any repository, so nothing short of a full path will be enough to unambiguously locate the source file.
15:51 lnrdo_ left
dalek p: ff1c436 | (Pawel Murias)++ | src/vm/js/ (10 files):
[js] Use a Map instead of an Object to implement the nqp hash.

This fixes a bug with using hasOwnProperty as a hash key.
15:51
Skarsnik abraxxa, that make no sense, why string outside NC receive this the EM role 15:52
15:52 Melezhik left, gregf_ left
Peter_WR m: multi sub fib(0) { 0 } say fib 0; 15:52
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/RHQQJ0q9Ed␤Strange text after block (missing semicolon or comma?)␤at /tmp/RHQQJ0q9Ed:1␤------> 3multi sub fib(0) { 0 }7⏏5 say fib 0;␤ expecting any of:␤ infix␤ infix stopper…»
15:52 lnrdo_ joined
Skarsnik could it be the GC reusing a previous variable in a bad way? 15:52
Peter_WR m: multi sub fib(0) { 0 }; say fib 0;
camelia rakudo-moar 75c6b9: OUTPUT«0␤»
lucasb TimToady++ thanks for clarifying. My brain needs some minutes to think :)
nine flussence: the only other solution I could think of is record an id of the repo that contains the source file + a relative source file path and for the repo id we could use a logical name like 'site' if there is any. That way we could move the site repo later on. 15:53
Peter_WR m: multi sub fib(any(0,1)) { 0 }; say fib 0;
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/aR6lxHvWTT␤Invalid typename 'any' in parameter declaration. Did you mean 'Any'?␤at /tmp/aR6lxHvWTT:1␤------> 3multi sub fib(any7⏏5(0,1)) { 0 }; say fib 0;␤»
Skarsnik AlexDaniel, seem fine, everything fall back to Str when 'unknow'. What is the TABLE type?
nine flussence: but building packages for modules will still not work because when installing a module to an Installation repo, we need to re-compile the reverse dependencies.
15:53 virtualsue left
flussence should go re-read how git's internals do things like this... 15:54
abraxxa Skarsnik: NativeCall isn't even loaded in 99-common.t 15:55
Peter_WR m: multi sub fib($ where * < 2) { $_ }; say fib 0; 15:56
camelia rakudo-moar 75c6b9: OUTPUT«(Any)␤»
Peter_WR m: multi sub fib($n where * < 2) { $n }; say fib 0;
camelia rakudo-moar 75c6b9: OUTPUT«0␤»
Peter_WR m: multi sub fib($n where * < 2) { $n }; say fib 1;
camelia rakudo-moar 75c6b9: OUTPUT«1␤»
Peter_WR m: multi sub fib($n where * < 2 && * >= 0) { $n }; say fib 1;
camelia rakudo-moar 75c6b9: OUTPUT«1␤»
Peter_WR m: multi sub fib($n where * < 2 && * >= 0) { $n }; say fib 2; 15:57
camelia rakudo-moar 75c6b9: OUTPUT«2␤»
AlexDaniel Skarsnik: so I do 「.allrows(:array-of-hash)」 and I get 「my_function => "(somevalue, othervalue, etc)"」 multiple times
nine flussence: seems to work: rm -rf $RPM_BUILD_ROOT/usr/share/perl6/precomp/* ; rm -rf $RPM_BUILD_ROOT/usr/share/perl6/site/precomp/*
Peter_WR m: multi sub fib($n where * < 2 ) { $n }; say fib 2;
camelia rakudo-moar 75c6b9: OUTPUT«Cannot call fib(2); none of these signatures match:␤ ($n where { ... })␤ in block <unit> at /tmp/A3xSvOU41f line 1␤␤»
AlexDaniel Skarsnik: no it's not ok because there's no way to parse that
flussence nine: right, I'll throw that in the gentoo stuff for now
Skarsnik AlexDaniel, what was the query? 15:58
AlexDaniel Skarsnik: www.postgresql.org/docs/9.2/static/...NING-TABLE
nine flussence: build service is rebuilding: build.opensuse.org/package/live_bu...ory/x86_64
ilmari m: multi sub fib ($ where * < 2) { $^a }; say fib 1
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/L8fvMCpOTi␤Placeholder variable '$^a' cannot override existing signature␤at /tmp/L8fvMCpOTi:1␤------> 3multi sub7⏏5 fib ($ where * < 2) { $^a }; say fib 1␤»
Peter_WR m: multi sub fib(1) { 1 }; multi sub fib(0) { 0 }; multi sub fib($n) { return fib($n-1) + fib($n-2) }; say fib 2;
camelia rakudo-moar 75c6b9: OUTPUT«1␤»
Peter_WR m: multi sub fib(1) { 1 }; multi sub fib(0) { 0 }; multi sub fib($n) { return fib($n-1) + fib($n-2) }; say fib 3;
camelia rakudo-moar 75c6b9: OUTPUT«2␤»
AlexDaniel Skarsnik: 「SELECT sum_n_product_with_tab(42)」
Peter_WR m: multi sub fib($n where * == any(0,1)) { return $n }; multi sub fib($n) { return fib($n-1) + fib($n-2) }; say fib 3; 15:59
camelia rakudo-moar 75c6b9: OUTPUT«2␤»
dalek osystem: 9f68e8e | LLFourn++ | META.list:
Add CompUnit::Util to ecosystem

  github.com/LLFourn/p6-CompUnit-Util
15:59 gregf_ joined
Skarsnik AlexDaniel, well fill an issue on DBIish, I am not even sure if we can catch this type of thing with libpq ~~ 16:00
16:00 bpmedley joined
AlexDaniel Skarsnik: perhaps the workaround is to SELECT from SELECT… Let's see… 16:00
16:00 YP-QMUL-W joined
llfourn nine: github.com/LLFourn/p6-CompUnit-Util may be relvant to you interests! 16:01
relevent to your* 16:02
relevant to your # urgh
Peter_WR m: multi sub fib($ where * == any(0,1)) { return $ }; multi sub fib($n) { return fib($n-1) + fib($n-2) }; say fib 3; 16:03
camelia rakudo-moar 75c6b9: OUTPUT«Use of uninitialized value of type Any in numeric context in sub fib at /tmp/LGTvdk4Aos line 1␤Use of uninitialized value of type Any in numeric context in sub fib at /tmp/LGTvdk4Aos line 1␤Use of uninitialized value of type Any in numeric context i…»
Peter_WR m: multi sub fib($ where * == any(0,1)) { return $_ }; multi sub fib($n) { return fib($n-1) + fib($n-2) }; say fib 3;
camelia rakudo-moar 75c6b9: OUTPUT«Use of uninitialized value of type Any in numeric context in sub fib at /tmp/Q_NtdSpWA6 line 1␤Use of uninitialized value of type Any in numeric context in sub fib at /tmp/Q_NtdSpWA6 line 1␤Use of uninitialized value of type Any in numeric context i…»
nine llfourn: looks to me like it only uses interfaces that we actually intend to support.
lucasb Peter_WR: you can also play with camelia in a private window
Peter_WR Sorry :(
lucasb it's ok :) 16:04
nine llfourn: but a warning about possible changes might be good anyway until we find a solution to the packaging mess.
llfourn nine: well it uses $*W and $*UNIT though I guess they aren't going anywhere!
yes I should probably add that I may have my hand forced to change things 16:05
16:06 pmurias left 16:07 cdg joined 16:08 pmurias joined
Skarsnik abraxxa, if you don't want to bother with this, mark the test as todo and fill an issue x) 16:10
16:10 adu joined
AlexDaniel Skarsnik: I figured it out. For example this is going to work: 「SELECT * FROM sum_n_product_with_tab(42)」. 16:11
TimToady $*W is possibly in the category of things that should've come in through the cursor rather than as a dynamic variable, but that's not quite as certain as it is for $*LANG or other variables involved in implementing lexically scoped languages 16:12
abraxxa Skarsnik: what exactly?
16:12 YP-QMUL-W left
AlexDaniel Skarsnik: not that it is justified for DBIish to join data like this… 16:12
TimToady er %*LANG that is
flussence nine: wait, I don't need to rm these to workaround do I? I can just sed the buildroot out of the paths
AlexDaniel Skarsnik: but at least I have a workaround. If I manage to get some time I'll submit an issue. Thanks!
16:13 domidumont left
flussence oh wait, the mbc files hardcode it too. never mind... 16:13
llfourn TimToady: well I'm kinda glad it didn't I think because otherwise it's kinda hard to use it to hack things in from modules. (unless there is a $*CURSOR I don't know about)
Skarsnik abraxxa, the EM role that appear like that in the ref data 16:14
TimToady llfourn: that scares me, on some level
abraxxa Skarsnik: again a rakudo/moarvm bug that's hard to golf
16:15 xpen left, YP-QMUL-W joined
nine We haz openSUSE packagez! download.opensuse.org/repositories/....1/x86_64/ 16:16
llfourn TimToady: It's mostly to do things that rakudo probably will provide an interface for in the future (I hope)
flussence okay, that's weird. I just blew away my ~/.perl6 and I somehow still have Linenoise in the repl...
TimToady if people hang their coats on something that is fundamentally the wrong peg, eventually people will start losing their coats
Hotkeys Not necessarily 16:17
Perhaps the wrong peg is really good at being a peg
llfourn TimToady: I agree. But we don't have a way to install a lexical symbol to CALLER at compile time yet so $*W.install_lexical_symbol will have to do for now :\
16:18 lizmat joined
llfourn (apart from sub EXPORT of course but that doesn't cover everything) 16:18
TimToady in particular, it assumes the dynamic scope is basically the same pass as the original compilation pass, not a subsequent optimization pass, say, that might be called from outside the original dynamic scope of $*W 16:20
I mean, such a pass can fake it by setting $*W again, but that's a handoff that can get dropped easily
I ran into similar problems with the @!BLOCKS attribute in World assuming a single pass 16:21
(and had to hack around it with a dynvar, oy vey!)
but that was the basis for the loop bug I fixed after 6.c came out 16:22
well, "fixed"
llfourn TimToady: yes I hope rakudo provides an interface to do set lexical symbols to the caller because whatever you just said is a bit over my head :)
TimToady the real fix will be to unify the different outer lookups
during the initial pass it does outer lookups by counting down layers in the @!BLOCKS stack 16:23
later it follows 'outer' annotations
16:23 pierre-vigier left
TimToady but the whole 'wanted' pass is interleaved with the initial pass, so sometimes @!BLOCKS is not accurately representing the current lexical scope in that pass 16:24
doubtless searching @!BLOCKS is faster currently than looking up annotations, but that just means we probably shouldn't be using the annotation system for looking up outers, or we need a faster annotation system 16:25
llfourn: that's okay, it was way over my head too until I stared at it for about 4 days... 16:26
fortunately, although we've got conflicting "simplest ways that could possibly work", unifying those will probably help with compiler performance too 16:27
16:27 araujo joined, araujo left, araujo joined
lucasb TimToady: talking about loopy list comprehensions, ({ 42 } while $condition) should return a list of Ints, not Blocks, right? 16:27
TimToady probably 16:28
in particular, -> $value { $value } while $condition should probably return $condition 16:29
llfourn I thouhgt: { 42 } while $condition should return a list of blocks, do while $condition { 42 } should return a listof ints 16:30
TimToady m: say do while ++$_ < 5 -> $parm { $parm } 16:31
camelia rakudo-moar 75c6b9: OUTPUT«Too few positionals passed; expected 1 argument but got 0␤ in code at /tmp/kYL7GkUX7y line 1␤ in block <unit> at /tmp/kYL7GkUX7y line 1␤␤»
mst gather while $condition -> $value { take $value } ?
TimToady mst: you can do it that way too
m: say do if ++$_ < 5 -> $parm { $parm }
camelia rakudo-moar 75c6b9: OUTPUT«True␤»
TimToady looks like a bug on while's param there too 16:32
llfourn: the { 42 } there is technically a bare block, so should run immediately
m: say do { 42 } for 1..5 16:33
camelia rakudo-moar 75c6b9: OUTPUT«42␤42␤42␤42␤42␤»
TimToady there it does
but that's the while bug lucasb++ is pointing out, that while doesn't do the same
m: say do -> $parm { $parm } for 1..5
camelia rakudo-moar 75c6b9: OUTPUT«(1 2 3 4 5)␤»
TimToady m: say do -> $parm { $parm } while ++$_ < 5 16:34
camelia rakudo-moar 75c6b9: OUTPUT«(-> $parm { #`(Block|76827112) ... } -> $parm { #`(Block|76827184) ... } -> $parm { #`(Block|76827256) ... } -> $parm { #`(Block|76827328) ... })␤»
TimToady that should do the same
llfourn m: say ( { 42 } for 1..5 )
camelia rakudo-moar 75c6b9: OUTPUT«(42 42 42 42 42)␤»
TimToady well, except that would be a bunch of Trues, since < doesn't return anything terribly interesting
llfourn ok point taken bug then :)
TimToady it's all tricksiness to try to get list comprehensions to just "naturally" fall out of the looping constructs 16:35
and secondarily to demonstrate that the list comprehension syntax used by Python is bass-ackwards
16:36 YP-QMUL-W left
TimToady the way we have it, the guard naturally goes inside the loop 16:36
m: say do -> $parm { $parm } when * %% 2 for 1..5 16:37
camelia rakudo-moar 75c6b9: OUTPUT«(-> $parm { #`(Block|55065256) ... } -> $parm { #`(Block|55065328) ... })␤»
TimToady hmm, another bug?
m: say do -> $parm { $parm } if $_ %% 2 for 1..5
camelia rakudo-moar 75c6b9: OUTPUT«(-> $parm { #`(Block|66933472) ... } -> $parm { #`(Block|66933544) ... })␤»
TimToady yeah
m: say do $_ if $_ %% 2 for 1..5
camelia rakudo-moar 75c6b9: OUTPUT«(2 4)␤»
TimToady m: say do $_ when * %% 2 for 1..5 16:38
camelia rakudo-moar 75c6b9: OUTPUT«(2 4)␤»
TimToady m: say do -> $parm { $parm if $parm %% 2 } for 1..5 16:39
camelia rakudo-moar 75c6b9: OUTPUT«(2 4)␤»
TimToady at least that works
(due to the wonders of Slip)
nemo Zoffix: heh. I see it made it into the doc typos, unlinked URLs and all ☺ 16:41
yoleaux 11:45Z <daxim> nemo: re m8y.org/tmp/perl6.txt default key for me is RShift+RCtrl, for you AltGr+Shift - which one is correct?
nemo yoleaux: *shrug* I remapped mine ages ago 16:42
oh
yoleaux is a bot?
daxim: en.wikipedia.org/wiki/Compose_key#GNU.2FLinux " On Xorg the default Compose Key is ⇧ Shift+AltGr"
llfourn m: say (-> $parm { $parm } when * %% 2 for 1..5)' # this looks fine to me :S 16:43
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/HzNRlMJ_Bk␤Two terms in a row␤at /tmp/HzNRlMJ_Bk:1␤------> 3-> $parm { $parm } when * %% 2 for 1..5)7⏏5' # this looks fine to me :S␤ expecting any of:␤ infix␤ infix stopper␤…»
llfourn m: say (-> $parm { $parm } when * %% 2 for 1..5) # this looks fine to me :S
camelia rakudo-moar 75c6b9: OUTPUT«(-> $parm { #`(Block|61539760) ... } -> $parm { #`(Block|61539832) ... })␤»
japhb m: role Foo { has $.s = 42; has @.a = 7, 8, 9; }; class Bar does Foo { }; class BarDate is Date does Foo { }; dd Bar.new.a; dd BarDate.today.a; 16:44
camelia rakudo-moar 75c6b9: OUTPUT«Array @!a = [7, 8, 9]␤Array @!a = []␤»
japhb Ah, still an issue.
nemo daxim: "As this is rather inconvenient (especially for keyboards without an AltGr) it is common to select a keyboard layout where another key such as the right-hand Ctrl or ⊞ Win is mapped to the Compose key" 16:46
daxim: so I guess that explains yours
daxim can anyone who has not remapped compose confirm what's written in wikipedia? 16:47
nemo and with an AltGr key ☺
daxim: given how often I type digraphs, a 2 key combo was just silly. admittedly I mostly just use 'em for emoji and french, but perl6 seems likely to change that 16:48
dalek nqp: b200648 | pdcawley++ | src/HLL/Compiler.nqp:
nqp: Retain newlines in continued code
nqp:
nqp: Say we want to define a class in our REPL, we might input:
nqp:
16:48 dalek left
mspo nice 16:48
16:49 dalek joined, ChanServ sets mode: +v dalek
mspo someone got the blank line stuff in from yesterday for the repl? 16:49
AlexDaniel daxim: I see no reason for this to be true universally. It is probably different in different distrubutions, DEs, whatever…
16:50 SwellJoe joined, muraiki joined
TimToady uses the Win key 16:50
nemo TimToady: I need my win key for the mac command key ♥ synergy
daxim I don't think my /usr/share/X11/xkb/symbols/* files were modified, let me check with upstream repository
nemo TimToady: also I occasionally use the win key to actually do MATE stuff like opening the app menu 16:51
dalek c: cc4bf1c | (Zoffix Znet)++ | doc/Language/nativecall.pod:
Fix grammar
AlexDaniel I don't have a dedicate key for compose, unfortunately :( traditional keyboards have so many keys in useless positions and so few in convenient ones. That is, besides all usual stuff I also heavily rely on Super and Hyper keys, so my thumb row has no place for compose really :( 16:55
TimToady well, the silly lenovo carbon 2 put ~ and ` on the thumb row where a useful key should be instead 16:56
alpha123 TimToady: WTF
dalek c: 282b9bd | (Zoffix Znet)++ | doc/Language/unicode_entry.pod:
Add formatting to XCompose section
alpha123 who does that
TimToady and they put home/end where capslock used to be
'course that should be a control :)
alpha123 man, lenovo keyboards used to be so good
I'm a fan of remapping caps lock to ctrl if another key is pressed with it and escape otherwise 16:57
TimToady and the function key row is just a capacitive strip that never does what you want
alpha123 *twitch*
nemo alpha123: escape... I can see that. bit faster in vim
AlexDaniel haha capacitive strip!
how convenient! 16:58
alpha123 nemo: exactly
AlexDaniel :(
TimToady when it does work, it sets off stray function codes when you fingers are on the number row
AlexDaniel TimToady: did they already make japanese version of this keyboard?
16:58 hyan left, znpy joined
nemo alpha123: what do you use for Compose then? 16:58
TimToady AlexDaniel: dunno 16:59
japhb TimToady: How are you not defenestrating this laptop?
TimToady so basically I prefer to disable the function key strip entirely, which makes a bunch of things harder
alpha123 nemo: right alt 17:00
17:00 pi4 left, nige1 joined
RabidGravy somewhere I've got an an HP laptop that has an extra column of special function keys down the left side of the keyboard, totally messes up the touch typing 17:00
AlexDaniel well, japanese keyboards usually have a couple of extra thumb buttons, which is basically the only upgrade you can make on a laptop keyboard
nemo alpha123: oh... hm.. yeah. I guess I rarely press right alt
17:00 pi4 joined
nemo alpha123: right ctrl I need for virtualbox 17:00
alpha123 same 17:01
nemo TimToady: I'm currently using a mac aluminium keyboard my boss gifted me. It required heavy remapping to be functional 17:02
TimToady: for example the idjits replaced a bunch of actually useful keys with an additional F13-F19
mspo alt/option seems to allow for utf8 input
17:02 pmurias_ joined
nemo TimToady: which is pretty crazy given every mac user I've met argues function keys are useless and that's why they should be hidden behind an alt in subservience to stuff they use way more like adjusting screen brightness 17:02
alpha123 wut, what on earth does F13-19 even do 17:03
nemo alpha123: not much, since no apps seem to exist that take advantage of it
mspo for many symbols, anyway: «Ω» √
nemo guess you could use it in gimp
17:03 zakharyas left
nemo alpha123: that is, map common functions to 'em 17:03
alpha123: and to offer those keys, they removed things like Insert and Print 17:04
TimToady with my current setup I can only change screen brightness via command line, since that's on the disabled function strip
nemo alpha123: backspace was replaced w/ an eject button - not that anything ever ejects media anymore
TimToady no F11 for full screen either
nemo mspo: alt/option on what? 17:05
mst huh. mine overloads stuff (f5/f6 are brightness up/down) but holding the fn key switches mode for those keys
AlexDaniel TimToady: you can probably map any other shortcut to do these
nemo mst: see. I get having those as options, what I don't get is making them the default. I adjust screen brightness like never. so why not hide *that* behind the fn
dalek c: d4c1e5f | (Zoffix Znet)++ | doc/Language/nativecall.pod:
Fix typo (ilmari++)
17:06
nemo mst: but luckily the MATE/GNOME2 kbd prefs includes an option to fix that
17:06 pmurias left
nemo mst: actually you can fix it in OSX too if you dig around in prefs a bit 17:06
mst nemo: Fn+Esc toggles FnLk on/off so the default is pickable
TimToady just hopes that he can use Xcompose with anthy someday... 17:07
mst also, honestly, I adjust the sound volume more than I use anything else from that row
17:07 pmurias_ left
nemo TimToady: huh. there's no xim bridge for anthy? 17:07
"Anthy is commonly used with an input method framework such as ibus, fcitx or SCIM" 17:08
TimToady none of those have ever worked with .Xcompose, though I could be behind the times
17:08 lizmat left
mspo nemo: on a mac keyboard 17:08
nemo TimToady: ibus dæmon seems to have xim support...
AlexDaniel æ hm… 17:09
nemo TimToady: github.com/ibus/ibus-anthy 'Add a new /etc/xdg/autostart/ibus.desktop to invoke 'ibus-daemon --xim''
TimToady: random searching
AlexDaniel: habit
AlexDaniel nemo: great one, I like it :) 17:10
nemo AlexDaniel: at this point it would actually require a bit of reflex to inhibit hitting capslock first
TimToady my ibus-daemon already has --xim
AlexDaniel loves more unicode in regular texts
nemo AlexDaniel: similar to typing ç for c,
TimToady: hm. wonder if you have to toggle modes or something. dunno
TimToady: my japanese was always abysmal so I abandoned input managers years ago. just didn't have time for it
TimToady well, I haven't fiddled with it for a year or so
been busy with something else, for some reason... 17:12
dalek kudo/query_repos: 62bcf18 | (Stefan Seifert)++ | src/core/CompUnit/ (3 files):
Centralize more precompilation code
alpha123 Is there anything like xcompose for tmux? 17:13
AlexDaniel alpha123: why tmux when you can have it system-wide? 17:14
alpha123 AlexDaniel: well that's fine too
i.e. Xcompose when you don't have an X session running
nemo alpha123: so... screen has digraph support 17:16
alpha123: when I switched to tmux, I made some crappy scripts that try to find digraphs
alpha123: it is possible someone out there has made a non-crappy script
I wouldn't want to inflict these on anyone
alpha123 googling hasn't been the most productive so far 17:17
nemo bind v split -l 0 '~/bin/compose.pl && tmux pasteb -t.- -d'
bind V command-prompt -p compose 'if-shell "~/bin/compose2.pl \"%%\"" "pasteb -d" '
that's for ctrl-a v and ctrl-a V
(yeah, I switched to ctrl-a so I wouldn't have to relearn that stuff too)
alpha123 I switched to Ctrl-a even though I started with tmux because it's easier to press :p
nemo heh
alpha123: I've started needing this more as I actually use my phone as a computer 17:19
although luckily inside the linux chroot I have digraphs
AlexDaniel by the way, another valuable option to input unicode characters is to use custom keyboard layout. e.g. altgr+(key) and altgr+shift+(key) basically give you another two layers of keys (most of them are free by default). This also works without X session :) 17:20
this, of course, is not an alternative to xcompose. But it is a good way to input commonly used characters 17:21
alpha123 'murica keyboards don't have altgr, how do I remap right alt to that without xmodmap?
AlexDaniel 「」«»‘’“”∞–… are good candidates for that :)
alpha123: well, if you are going to create your own keyboard layout then it's not a problem 17:22
alpha123: because you can basically set any key as altgr
nemo AlexDaniel: I just find digraphs more intuitive
AlexDaniel: like. way easier to remember that >> becomes » or -> becomes → 17:23
AlexDaniel nemo: sure, for stuff that is not common it makes sense
nemo AlexDaniel: yeah, but I use even for like c, ç - I don't think I could get used to doing that w/ like altgr c or something
AlexDaniel nemo: everything else does not have to be intuitive. e.g. your keyboard layout is not in alphabetical order (although that could have been intuitive)
17:23 n0tjack left
nemo AlexDaniel: fair 'nuff, but after 3 decades qwerty is pretty much burned into my muscles ☺ 17:24
17:24 pierre-vigier joined
AlexDaniel not that QWERTY is better than a layout that has all letters sorted… 17:24
nemo AlexDaniel: eh. mildly disagree there
that is, the claim that dvorak is easier on the hands...
AlexDaniel nemo: well, qwerty IS in alphabetical order, mostly 17:25
alpha123 dvorak is probably easier on the hands but i don't think there's sufficient evidence to say that it's faster
17:25 pi4 left 17:26 pi4 joined
nemo hardware.slashdot.org/comments.pl?s...d=40613155 17:26
an old argument I recalled and ran a search for 17:27
AlexDaniel nemo: well, it does not take much to understand that it is. Basically if you move all common letters on the home row (makes sense, right?) and reduce the amount of words that you have to type with just one hand (e.g. by having vowels on one side, also makes sense?) then you are going to get a better layout. Whether that makes a significant difference – that's a whole different question, but… 17:28
17:28 pierre-vigier left
flussence uses dvorak layout on phone, just to keep things interesting 17:29
alpha123 I wonder what a layout optimized for gesture typing would be like
AlexDaniel flussence: this is actually not a bad idea due to hand alternation
flussence: unless you use swipe-ish kind of input :)
in which case it just makes it worse :D 17:30
flussence nope, none of that on mine :)
nemo AlexDaniel: well. depends what causes stress on the hand for me, for example, is using pinkie fingers
17:30 adu left
nemo AlexDaniel: so having stuff on home row vs top row pretty irrelevant 17:30
AlexDaniel: I just want most common keys in centre of kbd 17:31
AlexDaniel nemo: yeah, in that sense the placement of letters is pretty much irrelevant. Most symbols, however, are typed with pinkies, so… 17:32
nemo: here comes the question about physical design of the keyboard
alpha123 I tried dvorak for a while, couldn't type `ls` quickly, and gave up
nemo alpha123: hardware.slashdot.org/comments.pl?s...d=40615469 17:33
AlexDaniel nemo: easy to solve, just get a keyboard with a bunch of thumb buttons and extra columns in the middle, but of course no such thing for laptops :(
alpha123 also vim was annoying with dvorak and I was too lazy to remap everything
[Coke] minor doc issue; having the timestamp in the page makes it very hard to compare two versions of the generated HTML to insure I haven't broken anything.
also, it's the time -that particular page- was generated.
moritz [Coke]: feel free to add a --no-timestamp option or so
[Coke] (rather than when htmlify was kicked off) 17:34
moritz [Coke]: but in general, it's a good thing to have
nemo AlexDaniel: personally when I use my phone (galaxy note 4) as a mini laptop, I use this nifty bluetooth kbd for heavy duty typing...
AlexDaniel: www.amazon.com/TOZO-Ultra-slim-Smar...B0124TNLK0
[Coke] ideally, it'd be an app and we'd include that bit of static content rather than dupe it in every page.
nemo there's a whole ton of companies selling this model on amazon.
17:34 Ch0c0late left
flussence moritz: I'm being pedantic, but that bit would be better kept in the HTTP headers... 17:34
nemo AlexDaniel: other nice thing about the note 4 is the stylus works great as a lightweight mouse - like, supports hover for easy menu navigation in a linux chroot 17:35
moritz flussence: patches welcome
mspo Last-Modified??
moritz flussence: or maybe not; it'd make it harder to find the date on the page
mspo both is probably the way to go :) 17:36
AlexDaniel nemo: here is a good example of what I mean when I speak about thumb buttons and extra middle columns: ergodox.org/Images/ErgoDox_001.png (that's if you want to reduce strain on your pinkies)
nemo ah. interesting 17:37
mspo the modified date should go in the html footer for humans to read, and Last-Modified: for computers to read
nemo AlexDaniel: well. the other thing to keep in mind ofc is the more esoteric a layout you train on, the more helpless you are when plunked in front of a random machine ☹
or the more your coworkers hate you when they have to be at your desk for some reason
17:38 aindilis left
AlexDaniel nemo: after years on heavily modified dvorak I still can type on QWERTY :) This, however, is a real problem if you never really learned QWERTY… 17:38
lucasb the server do send a Last-Modified header for static html files
AlexDaniel nemo: my kids will probably hate me for this :)
alpha123: by the way, I use vim-like keys in emacs. Not a big problem besides hjkl (which I wouldn't use anyway, I have altgr-ed arrow keys that work everywhere…) 17:42
alpha123 AlexDaniel: evil-mode? 17:43
AlexDaniel alpha123: yeah
alpha123 AlexDaniel: I don't actually use vim anymore though, I use the similar-but-imo-more-awesome kakoune (kakoune.org/) which I don't think there's an emacs mode for (*gasp*)
AlexDaniel alpha123: oh, how interesting 17:44
alpha123: bookmarked, I will definitely check it out later
alpha123 AlexDaniel: It's probably one of the best designed pieces of software I've used, really fantastic editor
AlexDaniel alpha123: perl6 mode?
alpha123 AlexDaniel: primitive at best :( 17:45
AlexDaniel eh!
Skarsnik I should learn to use advanced stuff in editor x)
17:46 lucasb left
alpha123 AlexDaniel: its syntax highlighting for perl6 is a little hit-or-miss, basically, and there's nothing more than that 17:46
that said, it's easy enough to write modes for ;)
17:47 virtualsue joined
nemo alpha123: medium.com/@mkozlows/why-atom-cant...3852f4b4d1 applies to emacs too IMO ☺ 17:48
alpha123 lol atom
nemo eh. his main point is composability 17:49
'By contrast, Emacs and its philosophical descendants (including Sublime Text and Atom) use monolithic, special-purpose commands.'
alpha123 eh, that's only the default for emacs, you can change it (and evil-mode does). I don't really have anything against emacs, I just like regular vim more than evil-mode 17:50
and non-modal editing is basically useless for me now
nemo alpha123: well. that's just saying "emacs has a mode to emulate vi" 17:51
alpha123 nemo: that's basically the point of emacs isn't it
nemo doesn't take away from main point about how emacs approached things natively
alpha123 "emacs has a mode to …"
nemo heh
17:52 lichtkind_ joined
abraxxa i've also switched to Atom after using Komodo Edit 9 for some month after I got annoyed of Padre deleting all files in the perlbrewed bin directory every few days 17:52
nemo heck, I'm sure "extensible vi layer" accronym was not accidental 😝
17:53 DrArch joined, FROGGS joined 17:56 abraxxa left 17:58 dakkar left, psy_ left
[Coke] github.com/perl6/doc/issues/300 looks good here; Will apply that tonight if no objections. (feel free to apply it sooner if you like) 17:59
18:04 lichtkind left, lichtkind_ is now known as lichtkind 18:05 psy_ joined 18:08 sftf left, adhoc joined 18:09 firstdayonthejob joined
AlexDaniel FIRST++ # useful! 18:09
[Coke] m: FIRST #'{comment} 18:10
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/mXpFyqqpAZ␤Missing block or statement␤at /tmp/mXpFyqqpAZ:1␤------> 3FIRST #'{comment}7⏏5<EOL>␤»
AlexDaniel m: FIRST { #'{comment} } 18:11
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/gMRMi4R8gz␤Missing block␤at /tmp/gMRMi4R8gz:1␤------> 3FIRST { #'{comment} }7⏏5<EOL>␤»
AlexDaniel m: FIRST { #'{comment} } { }
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/6hd8jszYGH␤Missing block␤at /tmp/6hd8jszYGH:1␤------> 3FIRST { #'{comment} } { }7⏏5<EOL>␤»
AlexDaniel m: { FIRST { #'{comment} } }
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Iy6IYzE417␤Missing block␤at /tmp/Iy6IYzE417:1␤------> 3{ FIRST { #'{comment} } }7⏏5<EOL>␤»
AlexDaniel missing loop perhaps?
18:12 lizmat joined
lizmat waves from TechInc in Amsterdam 18:12
18:13 bpetering left
lizmat m: dd ^10 .map(** * 5) # WAT ? I have *no* idea what's going on here 18:13
camelia rakudo-moar 75c6b9: OUTPUT«((0,).Seq, (5,).Seq, (10,).Seq, (15,).Seq, (20,).Seq, (25,).Seq, (30,).Seq, (35,).Seq, (40,).Seq, (45,).Seq).Seq␤»
18:14 nige1 left
gfldex m: (**).WHAT.say # see: www.youtube.com/watch?v=RHVSshgPlQs 18:15
camelia rakudo-moar 75c6b9: OUTPUT«(HyperWhatever)␤»
lizmat aahhhh
duh :-)
AlexDaniel perhaps HyperWhatever should be *more* documented?
how many times I've seen that question 18:16
lizmat yeah... and get burned into my brain :-)
AlexDaniel (I've even asked it once myself…)
gfldex if you tell me what it acutally does, i will be happy to doc it
moritz it's somewhere in the design docs
S02 most likely
AlexDaniel gfldex: it is in S** somewhere
yeah
alpha123 it's in S02, but the section is very short
design.perl6.org/S02.html#The_Hype...tever_Type 18:17
gfldex design.perl6.org/S02.html#The_HyperWhatever_Type
i know where it is in the design docs but still don't know what it actually does
AlexDaniel “In general a Whatever should be interpreted as maximizing the degrees of freedom in a dwimmy way, not as a nihilistic "don't care anymore--just shoot me".” – priceless
troydm don't consider it offense but I kinda like p5 more, it has it has nostalgic unix flavour 18:18
Skarsnik lol what
AlexDaniel or this “Other uses for * and ** will doubtless suggest themselves over time.” instead of explaining how is it supposed to be used. 18:19
18:19 xinming_ joined
[Coke] AlexDaniel: well, we did retroname those the speculations. 18:19
alpha123 I think I'm beginning to understand it
AlexDaniel troydm: and that's totally OK! Perl 5 was going strong for quite some time, I think that it will continue to grow for some years :)
troydm plus p6 syntax looks weird sometimes
AlexDaniel m: say (* * *)(4,2) # like when?
camelia rakudo-moar 75c6b9: OUTPUT«8␤»
alpha123 AlexDaniel: That makes sense though 18:20
why did * get used instead of _ for whatever though
(_ * _)(4, 2) seems nicer
but... whatever
AlexDaniel m: say ༧༪² × ½ # weird? Like?
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/ccf2R4V3nY␤Bogus postfix␤at /tmp/ccf2R4V3nY:1␤------> 3say ༧7⏏5༪² × ½ # weird? Like?␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end…»
AlexDaniel m: say ༪² × ½ # weird? Like? 18:21
camelia rakudo-moar 75c6b9: OUTPUT«0.125␤»
AlexDaniel alpha123: because _ is used for translations and other stuff
alpha123 Okay, I think HyperWhatever basically just automatically turns a regular operation involving a Whatever into a mapped Whatever
18:21 xinming left
alpha123 it's like a funky list monad except not 18:21
AlexDaniel alpha123: though we should probably have some unicode version of whatever 18:22
18:22 _Vi left
AlexDaniel though maybe not, since you can do this: 18:22
m: (* × *)(4,2).say
camelia rakudo-moar 75c6b9: OUTPUT«8␤»
troydm so after many years p6 is finally out?
18:23 hankache joined
AlexDaniel troydm: yeah 18:23
gfldex m: my &c = (** * 1); dd &c(1) # so it can listify things
camelia rakudo-moar 75c6b9: OUTPUT«(1,).Seq␤»
18:23 xinming_ left, vendethiel joined
troydm seems like I'm in Back To The Future movie 18:23
18:24 xinming joined
alpha123 troydm: Perl6 seems weird but it's loaded with so many brilliant ideas I can't help but like it :) 18:24
troydm only in 10 years past
mspo troydm: #3?
flussence troydm: it's been out for years; some people simply refuse to accept that unless there's a big official press release telling them it is.
alpha123 AlexDaniel: Maybe double low line makes sense... kinda sorta... (‗ * ‗)(4,2) 18:25
gfldex troydm: it's 15 years. Before you complain, when you where 15 years old, where you production ready?
troydm so how much of p5 community is going to migrate to p6?
AlexDaniel alpha123: or maybe ⍰
Peter_WR Is it wrong to describe Perl and 6 on programming languages when asked why it looks the way it does by people? :P
*huffman encoding on programming 18:26
gfldex .oO( Perl 6 is sweet 16 and ready to rock! )
masak troydm: if I were a heavy Perl 5 user, I would perhaps look into Perl 6, but I wouldn't abandon all my Perl 5 code overnight.
japhb troydm: That will take quite a long time. Perl 5 is quite good at what it does, and there is a LOT of Perl 5 code out there.
alpha123 troydm: They serve different purposes, and are pretty much different languages entirely, so I'm not really sure migrating makes sense
[Coke] gfldex: not cool.
troydm alpha123: without CPAN there is not much progress in usability 18:27
gfldex [Coke]: if I failed to be funny, please accept my apology
alpha123 AlexDaniel: bother, seems either tmux, weechat, or putty is messing up the encoding for that
flussence I wonder how much of the C community migrated to C++. GCC took a quarter century.
troydm and CPAN is created by ppl's needs
masak gfldex: Perl 6 won't be 16 until July 18th this year.
mspo flussence: they should have been migrating to D
gfldex just a thought then 18:28
flussence mspo: they need a compiler for that first :D
alpha123 mspo: yuck, I wouldn't use D for most of the things I use C for
[Coke] so, troydm, if you'd like to see our previous responses to this conversation, please feel free to dig through the IRC log.
troydm if there is no needs there won't be any 15k modules for all purposes
[Coke] Or check the FAQ.
mspo I have some p5 stuff I'd like to write in 5, but there are no modules :)
AlexDaniel alpha123: █ * █ :)
18:30 wamba joined
troydm I think I'll go and watch some Warmingthon's presentations on P6, that dude is entertaining 18:30
frew I'm trying to build the latest star (from november) under alpine linux and am getting this error: gist.github.com/frioux/b8e055c7a71a1fabe862
is this something that using a checkout would fix?
moritz mspo: did you confuse 5 and 6 here at least once?
mspo moritz: yes 18:31
sorry
flussence frew: that's odd... what GCC are you using?
frew 4.9.2
mspo basically I have some web stuff I'd like to be working on but mojolicious is difficult to not use
frew but muslibc, not glibc
mspo even though it would be more fun to be learning perl6 at the same time 18:32
moritz mspo: are you aware of Inline::Perl5?
troydm will there be a port of mojolicious to p6?
flussence frew: I have a feeling there's some assumption GCC5 is in use, they changed the default --std in that. You might be able to get it building with CFLAGS=--std=c99 or so
frew flussence: I'll try that
Skarsnik troydm, do it :)
frew flussence: I need to do that at configure time or make time?
troydm Skarsnik: nah, u first 18:33
flussence should work if you pass it to the make command
alpha123 has a tendency to just edit makefiles with random GCC flags until things build
18:33 peter__ joined
frew I very rarely compile stuff like this these days 18:33
but I got annoyed at using python for little things and figured I'd go the opposite direction 18:34
flussence troydm: go ask #mojo that question
alpha123 has also been spoiled by BSD ports system
frew hah
c99 made it fail sooner
flussence :(
alpha123 try gnu11 then!
troydm iirc there is Sinatra kinda framework for p6 eady?
already* 18:35
flussence frew: oh, it's -std not --std, that might be why. my bad
frew huh
I wonder why it even made a difference then?
alpha123 can't remember how he built Star on FreeBSD, but it involved messing with GCC flags for a while
troydm isn.'t FreeBSD using clang? 18:36
[Coke] (mojo) there won't be a thing called mojo, no; they want to keep that branding for their own product. There will be something mojolike, for sure.
flussence just checked the manpage, -std=gnu11 is the default for gcc5.3
hankache troydm yes it's called "Bailador"
[Coke] note that bailador was more of a translation of Dancer, as I understand it.
alpha123 troydm: some things rely on GCC extensions that clang hasn't implemented
[Coke] but "some web framework", fersure.
alpha123 troydm: but yes, the base system is compiled with clang and ships with clang by default
18:37 peter__ left
troydm alpha123: those things will eventually be ported? 18:38
hankache [Coke]++
alpha123 troydm: well, eventually the goal is for clang to implement all of GCC's extensions, but that doesn't really have much to do with FreeBSD
gfldex it may not be the best idea to port a Perl 5 framework to Perl 6 as none of them are very 6ish.
RabidGravy this is my view too 18:39
muraiki gfldex++
18:39 peter__ joined
hankache gfldex++ 18:39
none of them are very 6xy :D 18:40
frew hm
Skarsnik 6xy is a nice word :)
frew so none of those flags worked 18:41
muraiki haha, 6xy :)
frew I'll try just rakudo, not star
18:41 pierre-vigier joined
gfldex i have a few idea how to 6xify a web framework but got discracted by modules in the eco system failing tests 18:41
18:42 ZoffixW joined
ZoffixW troydm, the port of Mojolicious is currently undecided. But why do we need a "port"? Mojolicious is a toolkit, much of whose bits are provided by the Perl 6 core 18:42
muraiki good point zoffixw 18:43
18:43 peter__ left
mspo bottle.py is probably a good thing to port :) 18:43
ZoffixW m: 'foobar' ~~ / 'f' 'o' ~ 'a' $<foo>=(.+)/; say $<foo> 18:44
camelia rakudo-moar 75c6b9: OUTPUT«「ob」␤»
frew gives up for now 18:45
ZoffixW I'm not entirely sure of the workings of ~ in regexes and I don't see it documented anywhere. Specifically, does the rest of the regex have to be between the stuff shown by the ~?
frew if anyone wants to work together to get perl6 building on alpine let me know.
ZoffixW Spotted it here: github.com/tadzik/perl6-Config-INI...INI.pm#L16 18:46
timotimo mspo: isn't bottle kind of in Bailador territory?
yoleaux 15:11Z <bpetering> timotimo: I don't know about keccak in Perl 6 yet, but in addition to libgit2 I'm working on bindings for libsodium, which lets you do more modern hashing
timotimo .tell bpetering great to hear we're getting libsodium bindings :)
yoleaux timotimo: I'll pass your message to bpetering.
mspo timotimo: it's more like Mojolicious::Lite ?
ideally I'd like to see something like gun + cowboy + $frameworks 18:47
ZoffixW I wanna see something higher-level. Something you write business logic in and you get the web interface for free.
18:47 peter__ joined
ZoffixW With all the websites looking the same these days, I doubt something like that is too outrageous to think about. 18:47
mspo ZoffixW: like an auto-CRUD? 18:48
18:48 domidumont joined
timotimo like the django auto-admin-interface? 18:48
ZoffixW mspo, like making websites without having to write any HTML/CSS/JS :)
alpha123 I'd like to see something higher-level also, like a sort of XSL in perl6 that specifies how you want to translate models into views 18:49
18:49 peter__ left
mspo ZoffixW: use CGI! 18:49
ZoffixW mspo, I don't see the connection...
mspo print b("I'm a block); 18:50
etc
ZoffixW mspo, you mean CGI.pm from Perl 5? :) Way to be vague
mspo ZoffixW: 'use' is overloaded
18:50 cdg left
awwaiid yeah. you'd need: use CGI:from<Perl5> 18:50
18:50 peter__ joined
awwaiid (muahahaha) 18:50
alpha123 perl6 grammars use packrat parsing right? 18:51
_sri allright, i'll bite, what makes mojolicious "not very perl6-ish"?
alpha123 was there ever any consideration to generalized parsing? like earley or gll etc
_sri are there any perl6 features that completely change how one would design a web framework? 18:52
muraiki Zoffix: you might find inspiration in Magritte: book.seaside.st/book/advanced/magritte
awwaiid alpha123: I believe it is recursive-descent, but I could be wrong
ZoffixW m: 'zomg [foobar] blah' ~~ /'zomg ' '[' ~ ']' 'blah'/; say $<foo>
camelia rakudo-moar 75c6b9: OUTPUT«Nil␤»
_sri and remember that mojolicious is heavily async
ZoffixW m: 'zomg [foobar] blah' ~~ /'zomg ' '[' ~ ']' 'foobar'/; say $<foo>
camelia rakudo-moar 75c6b9: OUTPUT«Nil␤»
AlexDaniel _sri: multiple dispatch perhaps, maybe not
18:52 spider-mario joined
_sri AlexDaniel: that already fits in well 18:52
muraiki ZoffixW that is. whoops 18:53
_sri the router dispatches to methods on controller objects, unpacking query parameters or whatever to take advantage of multiple dispatch is super easy
awwaiid alpha123: I think there has been some posts at jeffreykegler.github.io/Ocean-of-Awareness-blog/ critical of the built-in rakudo parsing (from the author of Marpa, an Earley variant). You can definitely use other parser engines from Perl 6, and I think there is even a p6-Marpa binding as an example (though maybe it isn't all sugared up) 18:54
18:54 n0tjack joined
timotimo ZoffixW: would you expect that to have a value? if so, why? 18:55
awwaiid alpha123: like you could totally either dynamically extend the rakudo grammar (macro stuff) to add some cool BNF stuff that serves as a DSL 18:56
mspo _sri: it's not very 6-ish because it's written in 5 :)
awwaiid afk
mspo _sri: so feel free to start 6ojo; I'll use it
ZoffixW timotimo, I don't know what '~' is in the regex
_sri some folks like RabidGravy seem to think that all perl5 code is outdated legacy garbage
alpha123 awwaiid: Thanks! 18:57
mspo 6jos web framwork, use six coffee cups as a logo
ZoffixW timotimo, well, I can understand '[' ~ ']' means "from [ to ]", but what about the named capture specified AFTER the '[' ~ ']', why does it get the value from between ~ ?
alpha123 doesn't think there's anything wrong with top-down parsing in general, but has a slight distrust of PEG
(when PEG parsers break it's usually in mysterious ways without telling you)
lichtkind why 1 is not recognized as Num?
ZoffixW lichtkind, because it's an Int
lichtkind, you want 1e0
RabidGravy er, _sri I think *citation needed - I don't believe I have ever said that 18:58
mspo ☕ ☕ ☕ ☕ ☕ ☕
lichtkind ZoffixW i thought Num is like base class for all number
timotimo ZoffixW: the syntax of ~ is "a ~ b c" turns into "match a, then match c, then match b"
basically
hankache m: say 1.WHAT
camelia rakudo-moar 75c6b9: OUTPUT«(Int)␤»
arnsholt alpha123: Earley's algorithm is also (fundamentally) top-down, so I wouldn't think that's the argument against the Perl 6 formalism
lichtkind 1 is recognized as Real
ZoffixW lichtkind, I believe that's Numerical
m: my Real $x = 1; say $x
camelia rakudo-moar 75c6b9: OUTPUT«1␤»
ZoffixW m: my Real $x = 1; say $x.WHAT
camelia rakudo-moar 75c6b9: OUTPUT«(Int)␤»
18:59 xinming_ joined
lichtkind there is no type numerical 18:59
flussence m: say Int.^roles
camelia rakudo-moar 75c6b9: OUTPUT«((Real) (Numeric))␤»
lichtkind there its numeric
thanks
hankache m: my $x = 1.Num; say $x.WHAT
camelia rakudo-moar 75c6b9: OUTPUT«(Num)␤»
_sri RabidGravy: allright, then maybe you could elaborate on what would make a perl5 framework more perl6-ish?
ZoffixW lichtkind, Numeric
alpha123 arnsholt: I think I'd argue that Earley is more bottom-up than top-down
ZoffixW lichtkind, looking at the type graph, I see that Int is not a descendant of Num, but is a decendant of Real: docs.perl6.org/type/Real 19:00
arnsholt No, it's definitely top-down. IIRC, it's usually termed top-down with bottom-up filtering, or some such
hankache m: say 1 ~~ NUm
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/onqWLZJ5Ci␤Undeclared name:␤ NUm used at line 1. Did you mean 'Num', 'num'?␤␤»
hankache m: say 1 ~~ Num
camelia rakudo-moar 75c6b9: OUTPUT«False␤»
mspo _sri: probably using the built-in HTTP types and stuff
RabidGravy _sri, I haven't said a word about Perl 5 frameworks
_sri mspo: "built-in"?
hankache m: say 1 ~~ Real
camelia rakudo-moar 75c6b9: OUTPUT«True␤»
alpha123 what is 'Numeric' anyway 19:01
does it just include stuff closed over addition or what
or multiplication
arnsholt Numeric is a role for anything that can be a number
doc.perl6.org/type/Numeric
mspo _sri: oh sorry I thought Grammar::HTTP and HTTP::Server were built-in but they're not 19:02
_sri RabidGravy: irclog.perlgeek.de/perl6/2016-01-05#i_11834256
arnsholt Num OTOH is for floating point numbers
19:02 xinming left
hankache _sri anyone can port whatever they want to Perl 6. I think what they meant is that they'd rather build something *New* instead of porting an existing way of doing things. 19:02
19:02 psy_ left
_sri gfldex: you too, what makes a web framework perl6-ish? 19:03
19:03 peter__ left, lnrdo_ left
_sri hankache: what i hear is that you'd rather not have experienced framework developers join the community 19:03
ZoffixW _sri, I believe the comments were made because, say Mojolicious, implement their own stuff (like event loop), but in Perl 6 that's in core. So there's no point in "porting" the event loop. 19:04
hankache _sri where did you here that?
ZoffixW I think there's confusion between the meaning of word "port" here.
_sri ZoffixW: imo that's silly, of course you only port the basic ideas and concepts behind the framework, using perl6 idioms 19:05
hankache _sri because we actually want everybody to join the community experienced or not
_sri porting something line for line would be a huge waste of time
muraiki I think my ++ there was as one of the "not experienced" people. :) I think my main concern is to make sure a p6 framework takes advantage of new abstractions, like supplies, in its design
_sri hankache: every time i see RabidGravy say something i'm getting that vibe 19:06
muraiki it was certainly not meant as a dismissal of anybody's work
and I apologize if it was interpreted in that manner
gfldex _sri: type safety for a start, use introspection to deduce binding of arguments that come over the wire. see the following fairly old blog post gfldex.wordpress.com/2010/08/04/wh...t-1-maybe/
hankache _sri we like to joke a lot and have fun. One doesn't have to over analyze what people say 19:07
_sri guess what, when a bunch of rails core folks joined the elixir community they built a rails clone, and over tie it has grown into phoenix
19:07 Tonik left
_sri *time 19:07
hankache _sri if anyone decide to port anything they are more than welcomed, we actually encourage that 19:08
mspo github.com/msporleder/6coffees
_sri no, you really don't
and you're going to regret that soon i believe 19:09
hankache _sri how so ?
FROGGS O.o
mst _sri: if you don't feel welcomed, you're welcome to leave
continuing to attack people for not being welcoming enough
_sri like i regretted discouraging too simple mojolicious plugins back in the days :)
FROGGS mst: kssshhh!
mst is going to make them increasingly disinterested in trying
and I'd rather we saved our efforts for people who want to contribute rather than make vague complaints
_sri choo choo, the mst hate train arrived
muraiki I think in the back of my mind I was thinking about Seaside. it takes advantage of some unique features of Smalltalk and does things in a Smalltalky way. I like that it does that, even if that makes it fairly unorthodox in design. 19:10
it'd be neat to see such a thing with p6, but I honestly haven't connected the dots fully :)
mst FROGGS: sri's had this same rant before already, and still won't explain what he wants people to do differently, sadly
FROGGS I see
ZoffixW _sri, so join the Perl 6 community and build the Mojolicious clone :) You're most qualified 19:11
hankache _sri I don't get it, I tell you we encourage people to port stuff, you tell me we don't. Yet here I am telling you that we do.
alpha123 arnsholt: Does anything assume that multiplication on Numerics is commutative?
FROGGS _sri: usually ppl pop in here and want to work on their projects which are often "small ports" of existing stuff... we help them getting with little thinkos and the design...
_sri for the record, i really wanted to know what the community thinks would make a web framework perl6-ish 19:12
mst I'd love to see _sri explain in concrete terms what we can do to avoid him feeling that we'd "rather not have experienced framework developers"
esp. since there's a fair few of us already in here, myself included
ZoffixW mst, well, I can point to these comments: irclog.perlgeek.de/perl6/2016-01-05#i_11834253
Which also rebuke hankache's comments above.
El_Che perl6 needs whatever libs it can get to get traction, new and ports (imho)
ZoffixW I can see how that can be interpreted as "we don't want P5 folks porting their stuff to P6"
_sri well, for starters, i'd feel way more welcomed if the community didn't let mst attack me with a huge wall of rants 19:13
FROGGS _sri: a nice extendable API, using the concurrency primitives etc...
19:13 psy_ joined
FROGGS _sri: I mean, it is not easy to define "sixish" 19:13
alpha123 maybe some nifty grammar stuff for routes
ZoffixW Grammars are slow
FROGGS I'd also have trouble defining P5ish
alpha123 *for defining routes
flussence isn't interested in welcoming people who only ever show up to pick fights. *plonk*
Skarsnik FROGGS, any idea how non NC Str end with the nc:explicitmanaged role? gist.github.com/Skarsnik/7f2fee97d56c5acc1587 (The expected Data are not from NC call, but hard put in the code)
_sri FROGGS: right, and mojolicious for example uses concurrency very extensively 19:14
arnsholt alpha123: I have no idea! Hopefully not =)
FROGGS Skarsnik: hmmm, no, no idea... that's quite surprising
flussence you can only hug trolls so many times before it becomes obvious they have no intention of changing
19:15 peter__ joined
_sri FROGGS: the perl6 primitives don't really bring much new to the table, besides a little syntax sugar 19:15
FROGGS _sri: still that does not make it very 6ish or 5ish or so
RabidGravy FROGGS, as a complete aside, would you say that multis from C++ overloads is going to work?
Skarsnik RabidGravy, it could work, since they are mangled 19:16
FROGGS RabidGravy: I'm not sure, also because I lack a lot of C++ knowledge... but if you'd add a testcase to t/04-nativecall...
arnsholt Are C++ overloads late-bound or early-bound though?
19:16 colomon left
muraiki _sri: a bit of a tangent, but have you taken a look at p6sgi/p6w? it could use some input, especially re: websocket. github.com/zostay/P6SGI 19:16
FROGGS arnsholt: I'd guess the latter 19:17
hankache _sri let's backtrack a bit. Do you see any advantages of Perl 6 over Perl 5?
RabidGravy yeah the mangling somehow encodes the signature, but how I don't know
nine _sri: I'm curious as I've never tried mojolicious. How can it do concurrency well, when Perl 5 doesn't have any useful threading? You mean async network handling?
alpha123 arnsholt: Just from a cursory reading of the docs, it seems to suggest Numerics consist only of Real and Complex
FROGGS RabidGravy: if we are talking about multi methods in Perl 6 that map to their overloads in C++, then I'd say they should work
arnsholt FROGGS: Then generating a multi would give semantics from the C++ side. I'd be *very* careful about that 19:18
_sri hankache: yes, i don't believe in that kind of abstraction, it's antiquated
hankache: you just have to look at rails right now, they are in so much trouble because rack is holding them back
FROGGS arnsholt: I think I was thinking something else... render my sentence rubbish 19:19
muraiki _sri: did you mean those comments for me? heh
_sri nine: concurrency, not parallelism
19:19 pi4 left
_sri oops, i meant nine 19:20
argh
masak :)
ZoffixW :D
19:20 pi4 joined
_sri let me sort through the conversations ;p 19:20
FROGGS .oO( time for a cuppa? )
masak take your time
PerlJam _sri: the one thing you'll find lots of on #perl6 is ... forgiveness :)
masak we ran out of permission long ago 19:21
_sri muraiki: yes, i actually did mean you there :)
19:22 pierre-vigier left
muraiki _sri: hehe, thanks. I'd be really interested in knowing more about the ruby/rack situation, if you could point me in any kind of direction. I also am not fully sure about the advantages of that abstraction, but I'm just a framework consumer, not author 19:22
_sri hankache: that is a very interesting question, and actually, so far, i do not see any features in perl6 yet that would be a huge advantage for a web framework
nine _sri: ok, so concurrency as in async. What about parallelism? Wouldn't that bring interesting new possibilities to a framework?
FROGGS tadzik: ping
PerlJam nine: I don't think so (regardless of what _sri will tell you :) 19:23
(assuming you mean "web framework" there)
_sri nine: it could make a few things easier, but it's not actually groundbreaking
19:23 peter__ left
hankache _sri how would one know if they never tried ? 19:24
_sri nine: like i said before, bigh performance web servers in C tend to use the "prefork a bunch of event loops" architecture
masak that makes sense
_sri hankache: because there's a lot of experience already out there from implementing web servers in all kinds of ways 19:25
FROGGS sure, you dont need any interaction between the workers
PerlJam hankache: the problem is that at the level of "web framework" the problem space has been well-expored. You'd have to build something at a higher level of abstraction for Perl 6 to do anything ground breaking (IMHO)
*explored
ZoffixW nods
PerlJam should just stop typing and let _sri speak for him ;) 19:26
_sri and note that i specifically mention web servers, because if you don't implement your own web server, you'll prolly not be able to benefit much from your concurrency/parallelism primites anyway
ZoffixW And not at the Yet Another CMS level. Something lower than that
muraiki PerlJam: yeah, that's why I mentioned Seaside for Smalltalk. for instance, if you hit a bug in a method, you can fix that method -- whether from the smalltalk environment or even in your browser -- and then resume execution as if the error hadn't occurred
nine I would love to be able to render page content on a different thread than the surrounding layout.
hankache indeed but this is an opportunity
alpha123 nine: I feel like that causes more potential problems than it solves, plus rendering is hardly much of a bottleneck anyway 19:27
DrForr Vote for YAPC::EU keynote speakers at blog.cluj.pm/post/vote-your-keynote...urope-2016
_sri muraiki: while seaside was a breath of fresh air, it ultimately failed
nine Or even different parts of the layout on different threads and combine them later.
alpha123: well it is in our case
muraiki _sri: yes, a failure I lament :( I think it was bad timing... it explicitly was "heterodox" as the world moved to things like REST
19:27 sprocket_ joined, peter__ joined
alpha123 nine: Oh? What are you doing that takes so long? 19:28
PerlJam muraiki: hasn't that *always* been smalltalks problem? ;)
19:28 peter__ left
_sri muraiki: naah, you want to avoid server-side state, it just doesn't fit 19:28
muraiki PerlJam: haha :) yeah, things like not being able to use your existing tools (unless smalltalk works with gnu smalltalk) are a big barrier
nine alpha123: it's...complicated and would take too long to explain, as I should be with my girlfriend right now :) Parts are explained in niner.name/DTML_Compiler.pdf though
muraiki _sri: yup
alpha123 nine: Alright, have fun 19:29
_sri regarding threads, how expensive is a thread in perl6 these days memory wise?
these days you have to assume 10-100k concurrent sockets 19:30
PerlJam I dunno if anyone has done a memory profile of threads yet
_sri is actually regularly running mojolicious benchmarks with 20k sockets
19:31 ZoffixW left
_sri if you throw a bunch of threads at every socket, you migth get in trouble fast 19:31
worse if you sockets are http/2, then you might have a few dozen streams multiplexed on every socket, each using a bunch of threads for rendering a template or whatever ;p 19:32
muraiki is there any info on how p6 threads work? IIRC supplies use a thread pool. are these full os level threads, or something more lightweight?
lizmat afaik, the ThreadPool is a pool of OS threads 19:33
now, scheduling something to be executed asyncly, just means that: it's scheduled
19:33 yqt joined
lizmat it will be executed when a thread becomes available from the ThreadPool 19:33
_sri i'd also be interested in more information about garbage collection in perl6 and threads... historically garbage collection pauses are a big problem for web servers 19:34
nine _sri: we usually have just a couple of page requests per second. Our challange is to make individual requests faster, not handle Millions
timotimo right. additionally, you're free to build your own scheduler, or use one of the pre-made ones, like the CurrentThreadScheduler
lizmat timotimo might know the most about gc
and delays caused by it
timotimo right, i can give you an overview
don't know very much about delays; our gc is somewhat fast, in general 19:35
we don't have "proper" multi-threaded profiling yet, though
each thread has its own nursery of 4 MB (inspired by the typical size of the l3 cache)
19:35 colomon joined
timotimo when one nursery runs out, the corresponding thread will signal all other threads that a GC run is supposed to start 19:36
_sri nine: modern browsers can open 6 sockets to your web server for one page
nine: not to mention websockets of course
timotimo then all threads will collect stuff in their nurseries in parallel, and there's some "work stealing" that i haven't bothered to look at yet
when one thread is currently "blocked" (for example, executing native code via NativeCall, or doing something else that makes it unable to participate in GC), it'll have its work done by another thread 19:37
lizmat are these cleanup jobs scheduled like other jobs?
timotimo it's an entirely separate system that does GC "orchestration" 19:38
it's also per-os-native-thread
lizmat ah, because it's on MoarVM level, rather than Perl6 :-)
timotimo right 19:39
_sri timotimo: does the gc algorithm have a fancy name i can google? :)
[Coke] _sri: I'm not sure people think mojolicious isn't six-ish. I just recall a conversation where you said basically, don't use the mojo name on whatever you end up working on in Perl 6, and I respect that.
(this in relation to your first send today)
timotimo _sri: jnthn gave a presentation on GCs and says a whole lot about MoarVM's GC in that talk
_sri [Coke]: right, i was not referring to that
timotimo jnthn.net/papers/2013-bs-secret-life-of-gc.pdf 19:40
www.infoq.com/presentations/termino...-collector
[Coke] _sri: hokay. Just wanted to me sure you and I were OK.
timotimo in general, moar's GC is a "bump-the-pointer compacting" nursery with a non-moving generation two with a free-list. on top of that, it's parallel, but not concurrent 19:41
and the nurseries are separate
arnsholt _sri: Basically, it's a hemi-space copying GC for the nursery, with an older generation that is collected less frequently
nine _sri: so 6 sockets * 10 requests per second * 5 threads is still a very manageable 300 tasks per second that can be distributed to 24 threads for our 24 core server. 19:42
Really afk now...
19:42 vendethiel left, vendethiel joined
timotimo oh, semi-space, i forgot that word 19:43
mspo hemi-space would be more awesome 19:44
timotimo hemi-spheres?
arnsholt Well, hemi- is Greek and semi- is Latin for the same, so not a big difference, really 19:45
mspo en.wikipedia.org/wiki/Hemispherica...on_chamber
timotimo ah, ok
what's the latin word for this kind of "space"?
arnsholt But I think timotimo is right that the actual term is semi-space, not hemi-space
_sri nine: 10 rps is very very slow, i think for a real app 600 rps is a better goal 19:46
arnsholt Latin for "space" is "spatio"
timotimo this isn't about which word is right
but which word is cool
muraiki timotimo++
El_Che locus?
timotimo so, hemi-spatio garbage collection? :P
arnsholt No, locus is place
semi-spatio =)
timotimo demi-spatio?
El_Che place and space are synonims
arnsholt For hemi- we'd need the *Greek* word, which I have no idea what is, sadly =)
timotimo El_Che: except if one means location and the other means expanse
El_Che firmamentum is pretty cool 19:47
_sri arnsholt/timotimo: interesting, is there another language runtime that uses something similar?
timotimo arnsholt: in this case it's the same joke as "polyamorism is wrong!! you can't mix greek and latin like that!"
_sri: no idea.
El_Che (still use in spanish and french for space/universe)
19:48 DrArch left
arnsholt _sri: Semi-space copying is what most Lisp machines used, AIUI 19:48
timotimo: Pretty much, yeah =)
_sri [Coke]: absolutely, i was only referring to the pattern i see repeating here every other day... someone asks for a framework port, some folks say that no framework out there is perl6-ish, so ports make no sense, and then nobody elaborates on what that actually means 19:49
and what always bugs me a little is the anti-perl5-ish undertone 19:50
arnsholt: wait, like cheney's algorithm? 19:52
tadzik FROGGS: pong
hankache _sri most of the time people are joking, really don't take it word for word
FROGGS tadzik: I want to add a --bin-prefix option to panda
arnsholt _sri: Skimming the Wikipedia page for that, that's it yeah 19:53
_sri arnsholt: ah!
i thought that was considered antiquated now 19:55
tadzik FROGGS: what for? Please don't say "for bins" :P
FROGGS *g*
tadzik: for rakudo star actually... we install into a common bin folder
_sri (not that i know anything about gc algorithms)
FROGGS tadzik: so the modules go into site, but the scripts dont
tadzik I see 19:56
I guess it makes sense
FROGGS I think so... 19:57
arnsholt _sri: Not too antiquated I think. Most importantly it's an improvement over stop-the-world for very little additional algorithmic complexity, I think
Not to mention that I think jnthn has prioritized correctness over speed =)
FROGGS even when you have other repositories... you potentially want to put just a few bin directories in path
timotimo the thing is, if you don't have stop-the-world, you need to check much more often in your C code whether or not an object you've been working on has been moved in the mean time 19:59
19:59 pierre-vigier joined
gfldex is there a buildin to hexdump a Buf or Blob? 20:00
timotimo so the C code becomes more complicated and easier to do wrong
gfldex: you can .fmt("%x", "")
PerlJam gfldex: I wrote github.com/perlpilot/p6-HexDump-Tiny a while ago 20:01
20:01 _Dave_ joined
gfldex m: my Buf $rn .=new("\r\n".encode); say $rn.fmt("%x"); 20:02
camelia rakudo-moar 75c6b9: OUTPUT«Method 'fmt' not found for invocant of class 'Buf'␤ in block <unit> at /tmp/wdBgSoOKoT line 1␤␤»
timotimo PerlJam: it doesn't look like your code would actually work on a buf or blob?
oh, sorry, it'd have to be .list.fmt("%x")
m: my Buf $rn .=new("\r\n".encode); say $rn.list.fmt("%x"); 20:03
camelia rakudo-moar 75c6b9: OUTPUT«d a␤»
timotimo m: my Buf $rn .=new("\r\n".encode); say $rn.list.fmt("%2x");
camelia rakudo-moar 75c6b9: OUTPUT« d a␤»
timotimo m: my Buf $rn .=new("\r\n".encode); say $rn.list.fmt("%02x");
camelia rakudo-moar 75c6b9: OUTPUT«0d 0a␤»
gfldex m: my Buf $rn .=new("\r\n".encode); say $rn.list.fmt("%X");
camelia rakudo-moar 75c6b9: OUTPUT«D A␤»
timotimo m: my Buf $rn .=new("\r\n".encode); say $rn.list.fmt("0x%02x");
camelia rakudo-moar 75c6b9: OUTPUT«0x0d 0x0a␤»
PerlJam timotimo: I actually don't remember, but if someone wants to *make* it work on a Buf or a Blob ... :) 20:04
timotimo should be easy with a little bit of multi sub 20:05
gfldex i'm trying to fix HTTP::Server::Async and got 2 bugs fixed and am now stuck with the last test that fails 20:08
github.com/tony-o/perl6-http-serve...uestecho.t is giving me troubles and i have no idea if the test is faulty or not
i don't understand how \r\n and :bin work together 20:09
hance the need for hexdump :)
CIAvash _sri: I'v been waiting for a Mojolicious port since your interview :) 20:12
www.josetteorama.com/all-about-mojo...el-part-2/
RabidGravy gfldex, I had a look at that too, I'm pretty certain that's what it is, but I think the chunk parser is a little fragile anyway 20:13
gfldex RabidGravy: i had to add a .trim in the chunk parser to get rid of leading newlines. That may however not be a fix at all because .write is the binary form of .print . 20:15
RabidGravy FROGGS, I think the GNU symbol mangler needs a few extra cases, as I'm seeing different param letters than there are 20:16
FROGGS RabidGravy: quite likely 20:17
RabidGravy e.g. uint32 -> 'j'
I'll add some new tests
Skarsnik :) NC could need some more test x)
RabidGravy is there an equivalent to 'nm' for Windows so one can see the mangled names? 20:18
timotimo it'd surprise me if gnu nm doesn't support windows executables 20:19
FROGGS RabidGravy++ 20:20
_sri CIAvash: heh, is there anything specific in perl6 that you're looking forward to using?
FROGGS RabidGravy: dumpbin /exports 11-cpp.dll 20:21
timotimo: I guess you can't use nm if the dll was compiled with MSVC
timotimo oh 20:22
FROGGS but I never tried actually
20:23 darutoko left
mspo _sri: it might be nice to able to use multi subs somehow in ->to() 20:23
RabidGravy I don't have windows but I am going to add some tests that will almost certainly fail on windows 20:24
_sri mspo: i think the route would maybe define how to unpack parameters into arguments
mspo: and you just define your .to('foo#bar') as usual 20:25
mspo _sri: http 2 support would be nice
not 6 specific, though
20:25 Twirl joined
_sri mspo: as it happens, multiple dispatch is actually used in phoenix framework 20:26
20:26 domidumont left, ZoffixW joined
mspo _sri: I'd like to see an erlang gun-style split for protocol picking 20:26
ZoffixW I think this conversation sprung up a few times in the past, but... is there a way to reload a module without restarting the whole program?
My usecase is an IRC bot that I have to restart and reconnect to just to have it crash due to a syntax error in one of the modules it uses. 20:27
mspo _sri: and since perl-ish is super flexible it could be http/1.1, http/2, and eventually zeromq etc
ZoffixW Would be nice to have something that'd let it stay connected while I develop that module.
mspo basically 20:28
flussence ZoffixW: that's kind of a rare feature in any language
_sri mspo: i'm not actually familiar with gun
mspo I want easier/better erlang :)
_sri elixir is pretty great
mspo _sri: sorry I mean ranch
flussence ZoffixW: best you could probably do is have a syntax check in the restart command
mspo _sri: ninenines.eu/
FROGGS RabidGravy: I can test these with MSVC and gcc on windows
ZoffixW flussence, I've seen python bots do that and I'm sure it's possible to do in Perl 5 too.
mspo to be able to connect to my web server and reload code, restart stuff, insepct things, live change configs 20:29
_sri: cowboy is what phoenix is using
_sri: but that's all on the network and web server side, not the framework side
flussence ZoffixW: maybe my definition of "reload a module" is too picky here :)
Skarsnik Zoffix, for the crash part a try could maybe work?
but with precomp I am not sure if you can for the reload of a module 20:30
mspo _sri: I'd like to see more hooks in the execution cycle and I'm also a fan of the "middleware" concept found in golang web dev :)
Skarsnik *force
ZoffixW Skarsnik, that doesn't help, since I want it to use the updated code, once I fix the error
20:30 grondilu left
Skarsnik Zoffix, my guess is like in perl5, remove the module from the loaded list and require the file again 20:30
awwaiid middleware all the things!
_sri mspo: ah, we are actually redesigning that part of mojolicious right now :) 20:31
mspo _sri: which part?
_sri mspo: socket/protocol stack
Skarsnik I am not sure how you can clear the symbol loaded from the file thouh
mspo _sri: is that *in* mojo or somehow split in hypnotoad/morbo?
20:32 grondilu joined
_sri mspo: the issue doesn't look very fancy, but it's just that, more pluggable protocols github.com/kraih/mojo/issues/876 20:32
ugexe GLOBAL::<Symbol>:delete
CIAvash _sri: That's hard to answer :) I like a lot of new features that are in Perl 6, and that Perl 6 looks much cleaner. It's like what you said: "I love Perl6 the language, it solves all the problems I have with Perl5"
mspo cool
_sri mspo: if you want to help, jberger is leading the effort atm
ZoffixW ugexe, you make it sound so easy :) 20:33
GLOBAL::<IRC::Client::Plugin::Factoid>:delete; require IRC::Client::Plugin::Factoid; isn't working 20:36
Skarsnik You need to remove the file from the loaded stuff
too
ZoffixW Skarsnik, what's "loaded stuff"? Any docs? 20:37
Skarsnik that how it work in perl5, you delete the entry in @INC
20:37 pjscott joined
Skarsnik the undocumented? $*REPO stuff maybe? 20:37
20:40 itaipu joined
gfldex RabidGravy: i think i found the problem "34 0d 0a 00 57 69 6b 69 0d 0a" that's a hexdump from inside the chunk parser and i'm quite sure those zero bytes don't belong there. Sadly I have no idea where they might come from. 20:40
ZoffixW :o whatsthis? github.com/rakudo/rakudo/blob/nom/...ion.pm#L23 20:41
Looks mighty scary
ugexe its the wrapper for bin files, so when the bin files get precompiled eventually there is a perl6 entry point to load it
20:43 zakharyas joined
ZoffixW Ah 20:43
dalek ar/release: 27046e3 | FROGGS++ | / (5 files):
first working post 6.c star
20:44
20:44 wamba left
ZoffixW woooo 20:44
muraiki yay
20:44 Ch0c0late joined
FROGGS it contains two patches though, one for panda and one for rakudo 20:44
hankache FROGGS++ 20:45
20:46 pjscott left
Skarsnik Zoffix, hm, does not look there is something public to remove an entry 20:46
ZoffixW :9 20:47
*:(
Ah well.
20:47 CIAvash left
Skarsnik ask nine x) 20:48
RabidGravy gfldex, no I don't know where it comes from either
_sri mspo: cowboy looks pretty well designed, i'd really like to get more of that kind of abstraction into mojolicious
mspo _sri: yeah it's generally considered best of breed in that world 20:49
20:50 ZoffixW left 20:51 pjscott joined
dalek jo6: 014fb0a | coke++ | README.md:
update status
20:52
kudo-star-daily: a66c76e | coke++ | log/ (10 files):
today (automated commit)
20:53 kaare_ left
[Coke] _sri: ^^ in case anyone finds the mostly abandoned mojo6 repo. 20:53
_sri [Coke]++ 20:54
20:56 geraud joined, Twirl left 20:58 pjscott left 20:59 pjscott joined 21:00 bzipitidoo joined
AlexDaniel m: for ^10 { FIRST { say ‘first!’ }; SECOND { say ‘second!’ }; .say } 21:02
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/RJf6pMd8Zs␤Undeclared name:␤ SECOND used at line 1␤␤»
AlexDaniel :)
21:02 espadrine left 21:07 pjscott left, aartist joined
[Coke] I am actually really looking forward to getting a web framework in place. My previous requirement of having to run in a j2ee container is gone (we have docker now), so I could pretty easily spin up a prototype at work using Perl 6. (My biggest concern is DB stuff, which I hope will be set by the time I get there. :) 21:10
21:10 ennio joined
[Coke] I hope after the next monthly release I'll have time to hack on Perl 6 apps and modules, not just project-y stuff. 21:10
gfldex RabidGravy: found it in 'method listen' we find '$data ~= $bytes;' that are of type (Buf) and (Buf[uint8]) resulting in \0 injected into $data. I'm not sure if string concatenation should be allowed with Buf in the first place.
Skarsnik It's weird we don't get more contribution in the 'main' modules yet 21:11
like DBIish
moritz but we do 21:12
a year ago, DBIish was nearly dormant
21:12 leat joined
Skarsnik I mean since the release 21:12
RabidGravy FROGGS, my working hypothesis for GNU name mangling is that the unsigned foo gets the next letter from foo
gfldex m: my Buf $buff1 = "abc\r\n".encode; my Buf[uint8] $buff2 = "123\r\n".encode; $buff1 ~= $buff2; $buff1.list.fmt("%02x").say;
camelia rakudo-moar 75c6b9: OUTPUT«Type check failed in assignment to $buff1; expected Buf but got utf8␤ in block <unit> at /tmp/BXq3iF8sSZ line 1␤␤»
RabidGravy Skarsnik, I've even had issues and PRs on my modules and nobody uses them :) 21:13
gfldex i need $buff2 to be of type Buf[uint8], any idea how to cast that?
leat build failing with No writeable path found in block <unit> at tools/build/install-core-dist.pl line 12 (2015.12) bpaste.net/raw/df1d3069d00a
moritz gfldex: can't you type that as Blob[uint8]?
gfldex moritz: it has to be that to golf a bug
FROGGS RabidGravy: there are tables on wikipedia about name mangling
RabidGravy I've gone so far as Buf[uint8].new($buff1.list) before :) 21:14
gfldex moritz: it's comming from from a IO::Socket::Async so it may even be some vmish stuff spilling into Perl 6
Skarsnik interesting document www.agner.org/optimize/calling_conventions.pdf 21:15
RabidGravy FROGGS, oh right, I'm quite liking my experimental approach at the moment
:)
moritz gfldex: but why does it need to be a Buf and not a Blob?
FROGGS :o)
gfldex moritz: because that's the type that spills out of the socket (into the .tap callback). I can hardly golf that with the wrong type. 21:16
21:19 pjscott joined
gfldex m: my Buf $buff1 .= new("abc\r\n".encode.list); my Buf[uint8] $buff2 .= new("123\r\n".encode.list); $buff1 ~= $buff2; $buff1.list.fmt("%02x").say; 21:19
camelia rakudo-moar 75c6b9: OUTPUT«61 62 63 0d 0a 31 32 33 0d 0a␤»
gfldex ENOREPRODUCE
21:19 pjscott left
gfldex :-/ 21:19
21:21 aenaxi joined
gfldex m: my Buf $buff1 .= new("abc\r\n".encode.list); my Buf[uint8] $buff2 .= new("123\r\n".encode.list); $buff1 ~= $buff2; $buff1.list.fmt("%02x").say; say " length of buff1: {$buff1.elems} length of buff2: {$buff2.elems} "; 21:23
camelia rakudo-moar 75c6b9: OUTPUT«61 62 63 0d 0a 31 32 33 0d 0a␤ length of buff1: 10 length of buff2: 5 ␤»
gfldex rakudo is bad at counting!
21:24 xfix joined, ilbelkyr is now known as u
gfldex or does it store utf8 in Buf as uint16? 21:24
Skarsnik why? 5 and 10 seems right
gfldex nvm 21:25
aartist Is there windows installation of Perl 6 ?
Skarsnik abc\r\n is five 123\r\n is 5 too x)
aartist, yes but we only have old msi file, you will need to build rakudo yourself
21:26 pierre-v_ joined
gfldex aartist: windows msis tend to be released a week after a Rakudo Star release 21:27
moritz ... and we're still working on the star release for 2015.12
21:27 pierrot_ joined 21:28 pierrot left
aartist thanks. Any aprox. date? 21:28
21:28 pierre-vigier left
moritz "this month" 21:29
lizmat Amsterdam.pm shutting down&
21:29 lizmat left, zakharyas left
RabidGravy right, unsigned long, and unsigned long long and I think we're good 21:29
aartist moritz: Thank you. 21:30
RabidGravy I assume uint32 and uint64 21:31
aartist Is perl6 a comfortable journey, if you are coming from perl5 background? 21:32
moritz aartist: on the language level, yes. The tooling still tends to be a bit on the adventurous side 21:33
gfldex aartist: that's a very subjective question
chansen_ aartist: It depends on prior experience with other languages besides Perl5
21:34 sno left
aartist chansen_: which language? 21:34
alpha123 perl6 borrowed a lot from Haskell, so maybe that 21:35
and maybe common lisp or some other language with multimethods 21:36
21:36 firstdayonthejob left
moritz you don't need any Haskell knowledge to learn Perl 6 21:36
aartist More interesting question is that does Perl6 provide a good experience to an experienced programmer.
alpha123 Obviously that's a very subjective question but in my experience the answer is YES! 21:37
21:37 hankache left
moritz it gives you lots of ways to express yourself (and also enough rope to hang yourself, obviously) 21:37
alpha123 moritz: No, but it might make it more comfortable
aartist alpha123: Thanks. Hopefully it will be an industry standard soon. 21:38
alpha123 hopes one day Perll6 and Idris will take over the world
21:39 u is now known as ilbelkyr
ugexe windows handling of %*ENV and/or run seem to be slightly off. on my installation of windows anyway %*ENV<PATH> == Any, and %*ENV<Path> contains the path info. S02-magicals has a few tests that use %*ENV<PATH> 21:40
chansen_ aartist: Haskell/lisp, knowledge about traits/roles help. The Perl6 language is large, much larger than Perl5.
21:41 rindolf left
alpha123 In some ways it's also smaller, if you know what things desugar to (since a lot of P6 is written in P6) 21:42
aartist chansen_: Please explain/point to "much larger" part.
alpha123 (Perl6 has a LOT of features)
Skarsnik unsigned int I ui ui Ui j j (2 last value are gnu3+) 21:44
chansen_ aartist: I don't know how to quantify it besides pointing you to the spec/design <design.perl6.org>
21:44 patrickz joined
aartist Thanks alpha123 Loooking at : www.perlfoundation.org/perl6/index....ature_list 21:44
Skarsnik RabidGravy, www.agner.org/optimize/calling_conventions.pdf you have the mangling list x) 21:45
patrickz Hey! Anyone going to FOSDEM this year? Or even giving a talk?
yoleaux 31 Dec 2015 08:57Z <ugexe> patrickz: gist.github.com/ugexe/d57168ebc0ac0e6261a0
moritz aartist: Perl 6 has so much built in that Perl 5 doesn't have, or only through modules: a decent OO system, grammers, concurrency constructs, Unicode operations etc.
21:45 cognominal left
RabidGravy Skarsnik++ yay! 21:45
21:46 cognominal joined
aartist moritz: Nice to know, definitely a good learning curve. 21:46
Is Perl6 expected to replace other langauge or discourage growth of any other languages like PHP, Pyhon, Ruby with its superior featre list? 21:50
Zoffix aartist, jobs are always a competition :)
moritz aartist: we don't want to discourage anybody from using the languages they love 21:51
21:51 _Vi joined
moritz aartist: we just want to encourage everybody to love Perl 6 best :-) 21:51
21:51 firstdayonthejob joined
RabidGravy :) 21:51
Skarsnik, the actual type encodings are best described here 21:52
mentorembedded.github.io/cxx-abi/ab...l#mangling
chansen_ aartist: Perl6 is the language other dynamic languages like Ruby/Python will steal from in the future, just as they did when Perl5 was young
Skarsnik RabidGravy, put the link on the test file if you write one ^^ 21:53
21:53 sno joined
alpha123 is already stealing from Perl6 in his scripting language.... 21:53
At the very least it sets a new standard for less-broken Unicode support 21:54
21:54 lostinfog joined
PerlJam chansen++ well put :) 21:55
aartist What is the chance of an expert perl6 programmer finding a good place on the industry solely based on Pel6 knowledge?
alpha123 give or take about 0%
PerlJam aartist: right now? pretty close to 0
chansen_ alpha123: Apple has Swift deployed on billion of devices which implements strings pretty decent!
Zoffix aartist, yes, if you forget all of your Perl 5 :) RE: <aartist> Is perl6 a comfortable journey, if you are coming from perl5 background?
PerlJam aartist: Unless your name is Jonathan Worthington :)
alpha123 chansen_: Yeah swift also has less broken unicode, though it is at a lower level than Perl6 21:56
Zoffix aartist, the first production release of Perl 6 happened a week and a half ago :) It's too soon talking industry jobs. Give it a 1-3 years
aartist, ...which you could use to become an expert perl6 programmer ^_^
21:57 zengargoyle joined
aartist Zoffix: THhanks: It is an investment time. 21:57
[Coke] Someone should find... jnthn's? comparison of swift strings vs. moar strings. ISTR that swift has a runtime penalty working on long strings because of how you have to deal with your position in the string.
zengargoyle good * #perl6 21:58
zengargoyle setting up new laptop *yay* 21:59
Skarsnik :)
22:01 SwellJoe left
chansen_ alpha123: Theoretical or practical broken? Why is Perl6's model superior the Unicode specification? 22:01
ennio Hello! is there a way to define something like shared traits? like to avoid repeating "is native(foo) is export" on every line of a module using NativeCall? 22:02
alpha123 chansen_: I didn't say it was, but Perl6 unicode is more pleasant to work with largely thanks to excellent grapheme support 22:03
PerlJam ennio: macros might do it when they are mature.
alpha123 While theoretically swift is quite sound, and I understand the choices it makes, sometimes you want some string functions that make reasonable assumptions
Zoffix alpha123, are you saying Swift has more or less broken Unicode than Perl 6? 22:04
ennio PerlJam: thx... I'll be patient then :)
PerlJam ennio: you might be able to do some "meta-programming" where, as part of the module installation, you iterate over the routines you want "is native" and "is export"
(and make them so)
alpha123 Zoffix: I'm saying swift has less broken unicode than most languages, as does P6
Zoffix Got it.
chansen_ alpha123: What's excellent with Perl6's grapheme support? 22:06
PerlJam ennio: and I'll stress *might* in what I said above as I'm not sure when the "is native" part needs to happen. (I think it's easy-ish for exporting though)
22:06 donaldh joined
alpha123 chansen_: Well, most languages work on characters or codepoints (and thus are broken) and dont have a notion of graphemes 22:07
so substr(), regexes, etc 22:08
all work properly in p6
chansen_ alpha123: Let me rephrase the question: What's spectacular with Perl6's grapheme support? 22:10
22:11 skids left
PerlJam chansen_: even for those languages that do have a notion of grapheme, they may still compare strings that a human would consider equivalent as being different because of the specific combining characters used to generate the strings. 22:11
chansen_: NFG fixes that and does so efficiently.
alpha123 chansen_: Well, it has grapheme support, for one thing. Most string operations work on the grapheme level. It handles combining characters correctly too. 22:12
22:14 SwellJoe joined
alpha123 oh and '.' in regexes matches a grapheme by default 22:15
22:15 leont joined 22:16 pierre-v_ left
Mouq chansen_: Makes it harder to accidently cut a visual character in two at the byte level 22:18
bzipitidoo rakudo: say "hi" 22:21
camelia rakudo-moar 75c6b9: OUTPUT«hi␤»
22:26 yurivish left 22:33 _mg_ left 22:35 cpage_ left
chansen_ PerlJam: I'm not familiar with NFG 22:36
gfldex m: multi sub trait_mod:<is>(Routine $r, :$foo!){}; multi sub trait_mod:<is>(Routine $r, :$bar!){}; multi sub trait_mod:<is>(Routine $r, :$combined!){ (&trait_mod:<is>)($r, :foo); (&trait_mod:<is>)($r, :bar) }; sub target () is combined {} 22:37
camelia ( no output )
gfldex ennio: see ^^^
traits are subs with a funny syntax
Skarsnik RabidGravy, do you want me to add c++ support on gptrixie? x) 22:40
bzipitidoo m: grammar Test { 22:41
rule TOP { ^ <content>* $ }
rule block { '(' ~ ')' <content>* }
rule content { <-[()]>+ || <block> }
}
22:41 bzipitidoo left
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/G9zuFTpbSc␤Missing block␤at /tmp/G9zuFTpbSc:1␤------> 3grammar Test {7⏏5<EOL>␤» 22:41
22:41 wamba joined, bzipitidoo joined
chansen_ Mouq: I agree, I have read both Unicode and ISO 10646 and not familiar with the NFG, guess it's an invented Perl6 acronym 22:42
timotimo correct
gfldex m: gist.github.com/gfldex/17854500ab8050a228ed
camelia ( no output )
timotimo it's the normalization form grapheme
ennio gfldex: nice!
gfldex bzipitidoo: camelia speaks gist ^^^
bzipitidoo eh, suppose I'll test code some other way
22:43 xfix left
Skarsnik You can use camelia with private message 22:44
22:45 muraiki left
Zoffix bzipitidoo, you can create a gist and execute it like this: 22:45
m: gist.github.com/zoffixznet/0b5a4f27246ef235a8bc
camelia rakudo-moar 75c6b9: OUTPUT«Hallo!␤»
bzipitidoo m: gist.github.com/anonymous/4beb237a975e65e6e775 22:48
camelia rakudo-moar 75c6b9: OUTPUT«(a (b))(c (d))␤␤* * * * *␤␤[[a [b]] [c [d]]]␤»
chansen_ timotimo: Why, just why? We all know the effect of the embrace and extend syndrome!?
Zoffix bzipitidoo, and you can /notice or /msg camelia 22:49
Zoffix wonders why /notice m: say "42"; results in an ACTION response in /msg rather than a /notice back :S 22:50
Mouq chansen_: As in en.wikipedia.org/wiki/Embrace%2C_e...extinguish ? NFG is internal to Perl 6 programs…
bzipitidoo well, that's a little different result than parrot 6.6.0 gave: [a [b]] [c [d]] Why did camelia add more brackets?
alpha123 chansen_: Wait, what are we embracing and extending here? 22:51
flussence chansen_: we can do it the sane way, or the ICU way.
timotimo chansen_: NFG is the only normalization form that gives you string algorithms with O(1) access to individual graphemes
BBIAB, food time 22:53
nine _sri: you misunderstood: I meant that we get a couple of user requests per second. We just don't have more traffic. But we'd like to serve those users faster.
22:53 wamba left
chansen_ timotimo: Only O(1)? 22:53
alpha123 .. 22:54
rjbs "We'll get it down to O(0) in the next release."
RabidGravy it's all going to be O(0) when someone gets round JITing on a black hole
alpha123 I wonder if there are any O(1/n) algorithms for anything at all 22:55
RabidGravy what larks
rjbs alpha123: stackoverflow.com/questions/905551/...algorithms
22:55 SwellJoe left
Mouq bzipitidoo: How is that even happening… ?? 22:56
alpha123 saw a dank O(√n) for everything data structure once, wish he could find that 22:57
Mouq OH!
m: gist.github.com/Mouq/7eb9d723d7f05a511529 22:58
camelia rakudo-moar 75c6b9: OUTPUT«(a (b))(c (d))␤␤* * * * *␤␤[a [b]][c [d]]␤»
Mouq m: say ("[a]","[b]")
camelia rakudo-moar 75c6b9: OUTPUT«([a] [b])␤»
Mouq m: say ["[a]","[b]"]
camelia rakudo-moar 75c6b9: OUTPUT«[[a] [b]]␤»
lucs alpha123: Some quantum algorithms allow linear search in O(N**1/2) 23:01
alpha123 head explodes
23:01 jshy joined
RabidGravy FROGGS, github.com/rakudo/rakudo/pull/675 - you may want to check on Windows MSVC as I can't test that 23:03
masak 'night, #perl6
Mouq 'night masak :) 23:04
RabidGravy toodles
23:04 cpage_ joined
ennio so I played a little bit with NativeCall and libldap, and my conclusion is that it's not too hard to make them talk to each other :) 23:05
github.com/scriplit/Native-LDAP
RabidGravy no not at all
a few libraries are a bit iffy but hey 23:06
23:10 leont left 23:11 SwellJoe joined 23:13 znpy left, AlexDaniel left, kid51 joined
Skarsnik ennio, the ldap lib does not have a version number? 23:14
23:15 cpage_ left
Skarsnik Or put $*VM.platform-library-name('ldap'.IO).Str; in a constant. otherwise it get call for each routine x) 23:16
23:16 n0tjack left
FROGGS RabidGravy: will do tomorrow 23:16
RabidGravy :)
23:17 pierre-vigier joined
ennio actually is uses libldap_r-2.4.so.2 23:17
23:17 n0tjack joined
_nadim hi, a silly question, what was the thinking behind the 'multi' keyword, when multiple methods/sub have the same name, 'multi' is redundant. 23:17
ennio there is a libldap symlink to that
_nadim RabidGravy: any idea about why?
alpha123 without multi don't overloads single-dispatch? 23:18
RabidGravy I guess that that it simplifies the parsing, but I have no inside insight 23:19
Mouq _nadim: redeclaration errors are generally considered a good thing where applicable
(is my guess)
Skarsnik ennio, hm that a weird lib you can put is native('ldap_r-2.4', v2) if it always a weird name like that
RabidGravy Skarsnik, ennio, yeah I have that library too 23:20
sprocket_ hello, p6
RabidGravy constant LIB = ('ldap_r-2.4', v2); and is native(LIB) to save typing
23:21 pierre-vigier left
RabidGravy hello sprocket_ 23:21
Skarsnik I should probably remove the Callable stuff in the doc. it's pretty bad in insight x)
23:21 n0tjack left
sprocket_ RabidGravy: hey! was that your RPI module that landed the other day? 23:21
RabidGravy yeah 23:22
sprocket_ great
how’s that project going anyways?
RabidGravy the SMBus thing works as much as I need it to, I only have the one i²c device 23:23
sprocket_ gotcha
Skarsnik ennio, and Perl 6 have enum if you want to group the ldpa define ^^
RabidGravy, you need to make a video or your led thing working!
*of
RabidGravy maybe I'll find something at Maplins that I can test it with
oh yeah I forgot about that
23:25 itaipu left
ennio Skarsnik, RabidGravy: thanks for suggestions! I'm still learnins :) 23:27
* learning
23:28 jshy left
gfldex m: my Buf $b = Buf.new("123".encode.list); $b=Buf.new($b[0..3]); dd $b 23:28
camelia rakudo-moar 75c6b9: OUTPUT«Buf $b = Buf.new(49, 50, 51, 0)␤»
gfldex RabidGravy: it was wrong. It's not a problem with concatenation but if off by one array subscript in github.com/tony-o/perl6-http-serve...c.pm6#L136 23:29
s/if/of/ 23:30
RabidGravy I suspected that may have been the case
gfldex that took me only 4 hours to find!
Skarsnik !(
gfldex i check $data before and after that line, it kindly add a 0 23:31
Skarsnik ennio, you could give a try to github.com/Skarsnik/gptrixie if you want to not bother write NC stuff
I should add is export on sub x)
gfldex that leaves the question if [] on a Buf should fail silently like that
RabidGravy I'm thinking that we might want to split off a really good http chunked encoding parser into the ecosystem
gfldex RabidGravy: really good and fast may be a contradiction 23:32
23:32 patrickz left
RabidGravy indeed, the one in HTTP::UA that takuhirom contributed is pretty robust 23:33
Skarsnik Maybe http::ua should be split in HTTP::Stuff 23:36
gfldex there are other problems with that stuff
23:37 FROGGS left, skids joined
gfldex let me finish HTTP::Server::Async (all tests are passing OK) and i will elaborate 23:37
23:37 perlawhirl joined
RabidGravy gfldex++ # fixing stuff 23:38
Skarsnik nice
23:41 leont joined 23:42 itaipu joined
perlawhirl hi perlers 23:47
have a question with sorting hashes in a for-loop
23:47 donaldh left
perlawhirl for loop on hash returns pair 23:48
m: for { foo => 'bar' }.sort() { say .WHAT; say .perl; }
camelia rakudo-moar 75c6b9: OUTPUT«(Pair)␤:foo("bar")␤»
perlawhirl and does the same if the hash is sorted
m: for { foo => 'bar' }.sort() { say .WHAT; say .perl; }
camelia rakudo-moar 75c6b9: OUTPUT«(Pair)␤:foo("bar")␤»
timotimo you accidentally pasted the same code twice
perlawhirl erm
m: for { foo => 'bar' }.sort().kv -> $k, $v { say "KEY: $k, VAL: $v"; }
camelia rakudo-moar 75c6b9: OUTPUT«KEY: 0, VAL: foo bar␤»
perlawhirl calling .kv after the sort does not do what i expect 23:49
timo: oops
m: for { foo => 'bar' } { say .WHAT; say .perl; }
camelia rakudo-moar 75c6b9: OUTPUT«(Pair)␤:foo("bar")␤»
Mouq perlawhirl: sort() returns a list of pairs — there's no 'sorted hash' type
timotimo that calls .kv on the list that .sort results in
perlawhirl so can i call .kv without nesting loops, ie for {...} -> $h { for $h.kv -> $k, $v {} } 23:50
timotimo you may be confused
perlawhirl i know i can call the .key and .value methods on the iterable after a sort... just wondering if there's another way 23:51
Mouq m: for { foo => 'bar' }.sort -> (:key($k), :value($v)) { say "KEY: $k, VAL: $v"; }
camelia rakudo-moar 75c6b9: OUTPUT«KEY: foo, VAL: bar␤»
23:51 joydo joined, vendethiel left
perlawhirl alright that seems fine. thanks Mouq 23:52
23:52 Xor_ joined
skids m: for { foo => 'bar' }.sort -> $p (:key($k), :value($v)) { say "PAIR: $p KEY: $k, VAL: $v"; } 23:52
camelia rakudo-moar 75c6b9: OUTPUT«PAIR: foo bar KEY: foo, VAL: bar␤»
perlawhirl timo: yes i realise the sort returns a list, by virtye of the fact that it's sorted at all ;)
Skarsnik m: %!_qdb-fields.keys.sort -> $k { my $v = %h{$k}}
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/7E64IJ8m92␤Variable %!_qdb-fields used where no 'self' is available␤at /tmp/7E64IJ8m92:1␤------> 3%!_qdb-fields7⏏5.keys.sort -> $k { my $v = %h{$k}}␤»
leont ennio: I would prefer a Net::LDAP style extensible LDAP/ASN.1 framework, but having LDAP in general sounds very useful, yes 23:53
23:53 Kcop left
Skarsnik m: my %h = { a, 1, c, 3, b, 2 }; %h.keys.sort -> $k { say %h{$k}} 23:53
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/HtgipIyZ1e␤Unexpected block in infix position (missing statement control word before the expression?)␤at /tmp/HtgipIyZ1e:1␤------> 3 %h = { a, 1, c, 3, b, 2 }; %h.keys.sort7⏏5 -> $k { say %h{$k}}␤…»
Skarsnik m: my %h = { a, 1, c, 3, b, 2 }; for %h.keys.sort -> $k { say %h{$k}} 23:54
camelia rakudo-moar 75c6b9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/2tdzcvdykq␤Undeclared routines:␤ a used at line 1␤ b used at line 1␤ c used at line 1␤␤»
Skarsnik m: my %h = { a => 1, c => 3, b => 2 }; for %h.keys.sort -> $k { say %h{$k}}
camelia rakudo-moar 75c6b9: OUTPUT«Potential difficulties:␤ Useless use of hash composer on right side of hash assignment; did you mean := instead?␤ at /tmp/4bwSI0262V:1␤ ------> 3my %h = { a => 1, c => 3, b => 2 }7⏏5; for %h.keys.sort -> $k { say %h{$k}}␤1␤2␤3␤»
Skarsnik m: my %h = a => 1, c => 3, b => 2; for %h.keys.sort -> $k { say %h{$k}}
camelia rakudo-moar 75c6b9: OUTPUT«1␤2␤3␤»
gfldex is it wise right now to tell travos to care about JVM builds? 23:55
leont Probably not yet 23:57
Unless something changed in the past 2 months (I doubt it)
23:58 n0tjack joined 23:59 spider-mario left