»ö« 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.
brokenchicken m: sub infix:meow<foo>sym«bar» {} 00:03
camelia rakudo-moar cfae23: OUTPUT«===SORRY!===␤Cannot find method 'wanted' on object of type NQPMu␤»
brokenchicken :sym<> is colonpair! 00:05
brokenchicken This word game I got is weird... Lets you use "yolo", "rape", and "porn", but tells you "shit" is not a word! 01:49
This one: store.steampowered.com/app/373970/ good to pass time while spectesting :) 01:50
MasterDuke hm, i feel like i could spend more time than i should in that game 01:51
brokenchicken It's pretty good. 01:52
MasterDuke i play/have played lots of word games 01:54
Geth pecs: d98ee5412c | (Zoffix Znet)++ | v6d.pod
Add reminder for 6.d

To properly reserve all C<< :sym<> >> colonpairs on subroutines Impl[^1] (commented out) and tests[^2] (fudged) already exist.
  [1] github.com/rakudo/rakudo/commit/48abeeef26
  [2] github.com/perl6/roast/commit/53d6e8491d
02:08
brokenchicken
.oO( why is that document in Perl 5 POD and not, say, Markdown... )
travis-ci Doc build errored. Antonio Quinonez 'more updates to regexes pod' 02:49
travis-ci.org/antquinonez/doc/builds/196063097 github.com/antquinonez/doc/compare...912f83e0f9
travis-ci Doc build passed. Antonio Quinonez 'Merge remote-tracking branch 'upstream/master'' 02:50
travis-ci.org/antquinonez/doc/builds/196064952 github.com/antquinonez/doc/compare...a6f5acf98f
travis-ci Doc build passed. Antonio Quinonez 'Merge branch 'master' of github.com/antquinonez/doc' 03:07
travis-ci.org/antquinonez/doc/builds/196066687 github.com/antquinonez/doc/compare...4de47095dc
haxmeister is it possible to go back to the previous command in perl6 repl? 05:06
BenGoldberg m: sub postfix:<!>($n) { [*] 2..$n }; sub infix:<C>($n, $k) { $n! / ($k * ($n-$k)!) }; say 5 C 2 05:15
camelia rakudo-moar c6e37e: OUTPUT«10␤»
haxmeister eh? 05:17
Geth oc: antquinonez++ created pull request #1166:
some more edits/re-writes
05:38
dj_goku haxmeister: try the up arrow? zef install Linenoise maybe too? 05:40
haxmeister up arrow just gives me codes.. not previous command 05:41
linenoise does this? 05:42
dj_goku I think so yes.
haxmeister ok ty
LeCamarade Hello, all; 06:28
Has anyone built Rakudo Star on FreeBSD 32-bit ARM
?
I get one last step failing thus: 06:29
linking libmoar.so
clang: error: no such file or directory: '3rdparty/dyncall/dyncallback/libdyncallback_s.a'
clang: error: no such file or directory: '3rdparty/dyncall/dynload/libdynload_s.a'
*** Error code 1
It dies there. So close, yet so far ... :-\ 06:30
samcv is there a variable I can check to get the line in the source file my program is on? 07:12
moritz m: say $?LINE 07:31
camelia rakudo-moar c6e37e: OUTPUT«1␤»
moritz samcv: ^^
samcv nice
parv if moar vm (and/or nqp) is (are) installed extrernally, does the building rakudo phase require them to be present in $PATH, or could the respective install directories be given when starting Configure.pl? 07:54
parv README.md on github does not say anythig in that regard. 07:55
LeCamarade I think it requires them to be in --prefix. 08:04
When I give it a --prefix where they aren't, it complains when I also give it --backends=moar 08:05
parv (reading Configure.pl) --sdkroot option could be used to provide alternate path (so that rakudo could be installed, via --prefix, in a separate dir). At least there is proper --with-nqp option for the path, but none for moar vm. 08:17
toolforger Hi everybody 08:22
What do I do when I see roast going into an endless loop on rakudo-j? 08:23
lizmat toolforger: you try to find out where the loop occurs and golf it down to a small piece of code you can put in a rakudobug report ? 08:34
parv does link to rlwrap -- utopia.knoware.nl/~hlub/uck/rlwrap/ -- tend to timeout? 08:35
toolforger parv: yes, for me it does (connecting from CH) 08:36
parv toolforger, thanks 08:37
toolforger lizmat: I have the name of the looping test somewhere, but my Perl knowledge is pretty limited so I'm not too sure about my ability to golf it down
Is there a simple way to run an individual test? 08:38
toolforger parv: utopia does not even react to pings. The host is probably not down but seriously misconfigured. 08:41
lizmat toolforger: do you mean a single test file ? or a single test inside a file?
toolforger lizmat: both :-)
lizmat the former is: make t/spec/foo/bar.t
lizmat the latter is: comment out the lines you don't want to test and ignore the "incorrect number of tests" message :-) 08:42
toolforger lol 08:45
okay
sounds like a viable plan
how to I put in a rakudobug report?
lizmat email to [email@hidden.address] 08:46
toolforger that works :-) 08:47
I do not know which of the tests fail, there is no output apart from the test file name and the line of dots - is there a way to quickly converge on which line is actually looping? 08:48
lizmat you can run it directly as a script 08:49
perl6 t/spec/foo/bar.t
or if it has been fudged:
LeCamarade
lizmat perl6 t/spec/foo/bar.rakudo.jvm 08:50
and maybe perl6-j
toolforger oh, wait 08:51
I see that "make t/spec/..." gives me more detailed output
I am trying "make t/spec/S3*/*", which seems to emit some useless error messages but then I'm after an endless loop, not a specific error message 08:53
but it doesn't seem to run the tests on the jvm 08:54
unless it runs jvm after moarvm 08:55
no it doesn't :-( 08:58
lizmat which backends did you build ? 09:03
fwiw, I always keep 2 clones of the rakudo repo: one for jvm and one for moarvm
toolforger I have backends=moar,jvm 09:10
lizmat ok, I have no (recent) experience with that setup :-( 09:11
toolforger I think I'll just rerun make spectest
I was under the impression I need a moarvm installation to build rakudo-j, that's why I was doing the two in one installation 09:12
lizmat ah, no, you don't need MoarVM to be able to build the JVM backend :-) 09:13
toolforger ok, I'll try that then
though it was helpful to have both 09:14
I wouldn't have noticed that rakudo-on-jvm is considerably slower than rakudo-on-moar
toolforger oh right 09:17
I was running the internal commands as reported by make -n
to be able to skip the github updates, because I am offline a lot 09:18
Hmm... make -n tells me it runs both backends 09:19
toolforger make -n t/spec/S22-package-format/local.t runs only --moar 09:20
toolforger it is also doing dubious things, like copying perl6-m over perl6 and chmodding it 755 09:20
running a test suite shouldn't touch the current installation, just on principle 09:21
lizmat agree 09:22
toolforger preparing a rakudobug for that
lizmat toolforger++ 09:23
toolforger thx
RabidGravy there are a lot of good things about travis-ci but when I find myself spending time working around the environment in the tests I do wonder 09:30
El_Che just a crazy idea, but the docker support is very nice if you're able to encapsulate the build. That is what I do for the built of rakudo packages: github.com/nxadm/rakudo-pkg/blob/m...travis.yml 09:33
RabidGravy yeah, actively considering that right now 09:45
El_Che ping me in case you need input 09:46
RabidGravy: github.com/nxadm/rakudo-pkg/blob/m..._rakudo.sh . That script is called from the container to download released tar balls. It's trivial to do a git checkout instead 09:48
RabidGravy with Audio::Liquidsoap there are multiple problems on travis, prime among them is that ubuntu packages a stupidly old liquidsoap and building one (it's written in ocaml) would be way too painful 09:57
El_Che you could build them using a ubuntu 16.10 build? 09:59
RabidGravy wonders whether docker is being funny when it generates a container name "backstabbing_knuth" 10:01
El_Che haha
that's one of the better names so far 10:02
moritz tkrt 10:13
toolforger lizmat, rakudobugs are in and confirmed
lizmat toolforger: thanks 10:34
AlexDaniel samcv: you may also be interested in callframe 10:49
m: say callframe
camelia rakudo-moar 960a78: OUTPUT«<tmp> at line 1␤»
RabidGravy bad fedora no cookie 11:50
dalek Iish: c8a3351 | (Kaare Rasmussen)++ | / (2 files):
If a pg type isn't found, it becomes an Any type. Can't typecast those.
12:05
Iish: 16d9a25 | RabidGravy++ | / (2 files):
Merge pull request #86 from kaare/master

Except Any types from casting, and add an enum example for PostgreSQL
yoleaux 24 Jan 2017 15:38Z <AlexDaniel> dalek: Please switch this bot to Geth
AlexDaniel .tell dalek Please switch this bot to Geth 12:05
yoleaux AlexDaniel: I'll pass your message to dalek.
AlexDaniel who can change the settings of github.com/perl6/DBIish ?
moritz AlexDaniel: I can 12:07
AlexDaniel Geth: help
Geth AlexDaniel, Source at github.com/perl6/geth To add repo, add an 'application/json' webhook on GitHub pointing it to geth.perl6.party/?chan=#perl6 and choose 'Send me everything' for events to send | use `ver URL to commit` to fetch version bump changes
AlexDaniel moritz: ↑
timotimo could this abizy thing just fucking stop >_< 12:08
moritz AlexDaniel: done; please test 12:09
AlexDaniel er, the only way to test it is to commit something I guess 12:10
let's see
Geth BIish/gethtest: 33bf0516fb | (Aleks-Daniel Jakimenko-Aleksejev)++ | testfile
Just testing Geth
12:11
AlexDaniel moritz: \o/
hankache hello #perl6 12:13
lizmat hankache o/ 12:13
hankache hiya lizmat
JJMerelo This is probably a dumb question 12:14
yoleaux 27 Dec 2016 12:57Z <tbrowder> JJMerelo: i'm happy to use
27 Dec 2016 13:00Z <tbrowder> JJMerelo: i'm happy to make my fork more usable, but i am NOT a lisp-literate person, either; would be great to hear more from henrik about his plans
4 Jan 2017 15:57Z <tbrowder> JJMerelo: see new wiki
JJMerelo But why are number radices limited to 36?
lizmat JJMerelo: (0..9,"a".."z").elems = 36 12:15
JJMerelo github.com/rakudo/rakudo/blob/b548...r.pm#L1304
hankache windows users, what terminal do you use? Any alternative to cmd.exe?
JJMerelo OK, makes sense as long as you limit yourself to using those letters... 12:16
lizmat JJMerelo: right, so what would one use beyond 36 ?
JJMerelo @lizmat that's not so much an issue as actually using that expression instead of the number 36 12:17
Because in the "Exception.pm" the number 36 also shows up magically
github.com/rakudo/rakudo/blob/ee2e...n.pm#L1497 12:18
AlexDaniel JJMerelo: oh, so you mean the error message is LTA?
JJMerelo Sorry, no comprendo LTA
AlexDaniel Less Than Awesome
JJMerelo Hum, not really.
timotimo JJMerelo: did you see my tweet? 12:19
m: say :60[6,6,6]
camelia rakudo-moar 960a78: OUTPUT«21966␤»
JJMerelo More that maybe it would be better to have a constant, somewhere, saying ADMISSIBLE-CHARACTERS-IN-NUMBERS
@timotimo no, but that's awesome
And then have Str.pm and Exception.pm use that constant. It's more of a documentation issue, really, but only for the sake of avoding dummy questions such as my own. 12:20
lizmat JJMerelo: github.com/rakudo/rakudo/commit/9d0a6c00f7 12:21
JJMerelo @lizmat that's awesome :-)
Geth BIish: f4067d88cc | (Jonathan Stowe)++ | 9 files
Retab and fix indentation
13:56
BIish: 8e0cb3ea80 | (Jonathan Stowe)++ | lib/DBIish/CommonTesting.pm6
Use a Bool
timotimo actually, do y'all think the error in :60<123> should suggest using :60[1, 2, 3] syntax? 14:24
RabidGravy [446/940] and I'm already concerrned about my laptop going on fire 14:40
Ardour is a great program but it's a behemoth 14:41
cale2 How up to date is this book: cloud.github.com/downloads/perl6/b....23.a4.pdf 14:47
Using Perl 6
I guess it says 2012 lol. Not sure if there is an updated version 14:48
lizmat cale2: I think you can consider leanpub.com/perl6 an up-to-date reboot of that 14:50
AlexDaniel huggable: books 14:51
huggable AlexDaniel, "Perl 6 At A Glance" deeptext.media/perl6-at-a-glance/ (print only for now); "Perl 6 By Example": leanpub.com/perl6 (can order preview digital copies)
cale2 lizmat: That's not done yet :)
and none of the other ones are done either :)
AlexDaniel false
cale2 i'm not buying a print book, sorry
lizmat deeptext.media/perl6-at-a-glance # a print book
but done :-)
cale2 If there's a github for the Using Perl 6 book, I can go through it and update any code examples that don't work anymore 14:52
lizmat cale2++
MasterDuke github.com/perl6/book 14:53
cale2 thanks 14:58
brokenchicken m: :60<123> 15:05
camelia rakudo-moar a83294: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Radix 60 out of range (allowed: 2..36)␤at <tmp>:1␤------> 3:60<123>7⏏5<EOL>␤»
brokenchicken m: say :60[1, 2, 3]
camelia rakudo-moar a83294: OUTPUT«3723␤»
brokenchicken timotimo: not really :) 15:07
sena_kun by the way, what does the second line? 15:09
brokenchicken m: say 60²*1 + 60¹*2 + 3
camelia rakudo-moar a83294: OUTPUT«3723␤»
timotimo it does 30 + 2 * 60 + ... yeah
sena_kun hmm... okay, thanks. 15:10
timotimo m: say :100[1, 2, 3, 4, 5]
camelia rakudo-moar a83294: OUTPUT«102030405␤»
timotimo why did i write 30 + there and not 3 +? oh well
brokenchicken m: say 60²*1 + 60¹*2 + 60⁰*3 # even 15:11
camelia rakudo-moar a256ef: OUTPUT«3723␤»
RabidGravy okay a question of taste: Archive::LibArchive or Archive::Libarchive ? 15:23
brokenchicken LibArchive 15:24
sena_kun +1 for LibArchive 15:25
RabidGravy I think that's the one I prefer too but I keep flipping
timotimo lIBaRCHIVE 15:26
RabidGravy m: say "libarchive".comb.map({ Bool.pick ?? uc $_ !! $_}).join("") 15:28
camelia rakudo-moar a256ef: OUTPUT«libaRChIVe␤»
cale2 Is there an `in` operator that checks if an element is in a list? 16:07
returns true or false
brokenchicken sortof 16:08
m: say 42 ∈ ^100
camelia rakudo-moar a256ef: OUTPUT«True␤»
brokenchicken BUT
m: say 42 ∈ [<42>]
camelia rakudo-moar a256ef: OUTPUT«False␤»
brokenchicken It cares much about object identity 16:08
See also .first
or junctions 16:09
m: say 42 == any ^100
camelia rakudo-moar a256ef: OUTPUT«any(False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, …»
brokenchicken m: say so 42 == any ^100
camelia rakudo-moar a256ef: OUTPUT«True␤»
cale2 hm... 16:10
I guess I could use a junction if the list is small, right?
can I convert a list of strings to a junction?
brokenchicken You can make a junction out of a list of string yes. Same as above
m: say "meow" eq any <foo bar meow moo> 16:11
camelia rakudo-moar a256ef: OUTPUT«any(False, False, True, False)␤»
brokenchicken m: say so "meow" eq any <foo bar meow moo>
camelia rakudo-moar a256ef: OUTPUT«True␤»
brokenchicken m: say so "meow" eq <foo bar meow moo>.any
camelia rakudo-moar a256ef: OUTPUT«True␤»
brokenchicken (there are also `one`, `none`, and `all` junctions, depending on your need)
cale2 This doesn't really seem very "make the easy things easy" if you ask me 16:13
brokenchicken Really?
cale2 `if elem in list`
now that's easy
brokenchicken `if elem ∈ list`
I don't see what the winge is here about
cale2 I'm working on updating the Using Perl 6 book. It's only the first chapter and I don't want to introduce Junctions 16:14
And I also don't want to explain why the reader can't type this bizarre character
brokenchicken if list.first: elem { ... }
`if elem (elem) list`
`if elem eq any list`
"I like the Python way and Perl 6 is yuky" is what I hear TBH 16:15
cale2 brokenchicken: You're really just writing off any criticism
`if elem ∈ list` that requires explaining how to type unicode for people that prob have never had to before 16:16
`if elem eq any list` that requires explaining junctions
profan there isnt a non-unicode equivalent to the character?
cale2 `if elem in list` requires explaining a for loop, which we already have done.
brokenchicken cale2: I already pointed out the (elem) Texas version
cale2: if elem in list requires explaining what sort of comparison `in` does. Is "42" in [42] ? 16:17
cale2: I may be dismissing critisism, but you're dismissing things you already understand as not requiring any explanation and therefore superior.
profan: It's (elem). All fancy ops have a Texas versions. docs.perl6.org/language/unicode_texas.html 16:18
profan right
cale2 Is "42" in [42] ? I don't know, you'd have to explain this in P6 as well.
dalek line-Perl5: c125bfc | niner++ | / (2 files):
Rewrite publication of wrapper packages

Previously we relied on hacks and implementation details to get our wrapper packages into the user's namespace. This did not work all that well anymore after module loading became lexical in rakudo. This rewrite replaces those hacks with an implementation that uses the same mechanism that handles symbols from native Perl 6 modules.
16:36
yoleaux 12:05Z <AlexDaniel> dalek: Please switch this bot to Geth
AlexDaniel nine: hey 16:37
Geth: help
Geth AlexDaniel, Source at github.com/perl6/geth To add repo, add an 'application/json' webhook on GitHub pointing it to geth.perl6.party/?chan=#perl6 and choose 'Send me everything' for events to send | use `ver URL to commit` to fetch version bump changes
AlexDaniel nine: ↑ ?
.tell dalek Please switch this bot to Geth
yoleaux AlexDaniel: I'll pass your message to dalek.
AlexDaniel can't do it myself unfortunately 16:38
ah, it's not even in perl6 org
nine AlexDaniel: updated. Thanks for the reminder! 16:39
cale2 brokenchicken: you can see my PR. I used the membership operator as it looks like Junctions are touched on much later. 16:48
brokenchicken sees no PRs 16:49
cale2 When is this page gonna be updated for the january release of R*? perl6.org/downloads/ 16:52
brokenchicken When it occurs 16:53
There was an RC recently, so I'd guess the release will happen soon
MasterDuke brokenchicken: github.com/perl6/book/pull/85 16:54
Geth nline-Perl5: 208f97d1d0 | (Stefan Seifert)++ | META6.json
Version 0.23
16:55
brokenchicken cale2: I invited you to perl6 org so you can merge that PR yourself. One note: the <...> don't assume everything inside are strings 17:01
m: dd <42 42e0 .5 1+0i>
camelia rakudo-moar 4e7ab2: OUTPUT«(IntStr.new(42, "42"), NumStr.new(42e0, "42e0"), RatStr.new(0.5, ".5"), ComplexStr.new(<1+0i>, "1+0i"))␤»
brokenchicken ^ they create allomorphs
m: dd <:16<FF>> # and have magics 17:02
camelia rakudo-moar 4e7ab2: OUTPUT«IntStr.new(255, ":16<FF>")␤»
cale2 brokenchicken: I'm wondering if we should link to the docs at times like that. I don't know how to create nice links in POD format though
brokenchicken L<some text|some.link>
cale2 thanks
Geth hateverable: 962dc22caa | (Daniel Green)++ | Benchable.p6
Be smarter about the messages Benchable gives

  * Only say we're zooming/bisecting if there are in fact any performance
   differences found
  * Report the preliminary results before starting to bisect
  * Report any results so far if the total timeout is hit
Closes #38 and #62
17:35
cosystem: titsuki++ created pull request #293:
Add Algorithm::LibSVM to ecosystem
cosystem: e8291b3c53 | titsuki++ | META.list
Add Algorithm::LibSVM to ecosystem

See github.com/titsuki/p6-Algorithm-LibSVM
cosystem: f014dd3fc8 | (Itsuki Toyota)++ | META.list
Merge pull request #293 from titsuki/add-libsvm

Add Algorithm::LibSVM to ecosystem
Geth ook: 9815903579 | Cale++ | src/basics.pod
Updated the Basics chapter (#85)

  * Add file extension to open('scores')
Did not compile without this.
  * Update basics.pod
Not sure if I formatted the text correctly. I just put in new lines when the line was getting too long.
  * Add links to docs
17:38
brokenchicken just re-delivered that one to ensure Geth bug got fixed
cale2 One part of the book says that the <,> operator "constructs a Parcel, which is a sequence of objects". I think it's better to go with what the docs say. "Constructs a List from its arguments" 17:39
brokenchicken Yeah, Parcel is no longer a thing 17:40
RabidGravy gosh
I'd actually forgotten about Parcel
cale2 How exactly is the POD format converted to PDF? 18:01
Can it also be converted easily to other formats?
cale2 For example, I'm wondering if we could convert POD files to Markdown 18:01
brokenchicken whoa... metacpan.org got majorly logo-fied lol 18:02
brokenchicken cale2: yeah. I'm guessing the book is written in Perl 5 pod? There's a whole bunch of converters: metacpan.org/search?q=Pod+to+pdf 18:03
buggable: eco pod
buggable brokenchicken, Found 12 results: Pod::To::HTML, Pod::Parser, Pod::Perl5, Pod::PerlTricks, Pod::Strip. See modules.perl6.org/#q=pod
brokenchicken And if it's Perl 6 pod, we have ::HTML and ::Markdown
brokenchicken The README has "To build the PDF version of this book...." section 18:06
And the README starts with "This repository is retained only for archival purposes. The project is currently considered dead..."
cale2 brokenchicken: If it's not possible to generate a new book file, then I won't bother. Otherwise I can keep updating 18:08
brokenchicken Presumable the instructions describe a way to build that's still works. 18:10
cale2: you could check with moritz++ if he is looking for any helping hands for his book instead. 18:12
(there's #perl6book that used to be for perl6/book but from what I understand now is for moritz's book) 18:13
cale2 ah good call 18:16
The example code from the operators chapter is a bit odd, to be honest.
m: my @scores = 'Ana' => 8, 'Dave' => 6, 'Charlie' => 4, 'Beth' => 4; say 1 + [max] @scores».key».chars; 18:17
camelia rakudo-moar 4e7ab2: OUTPUT«8␤»
cale2 I'm wondering why not just use a % for scores instead though...
m: my %scores = 'Ana' => 8, 'Dave' => 6, 'Charlie' => 4, 'Beth' => 4; say 1 + [max] %scores.keys».chars;
camelia rakudo-moar 4e7ab2: OUTPUT«8␤»
brokenchicken m: my @scores = 'Ana' => 8, 'Ana' => 42; dd @scores 18:19
camelia rakudo-moar 4e7ab2: OUTPUT«Array @scores = [:Ana(8), :Ana(42)]␤»
brokenchicken m: my %scores = 'Ana' => 8, 'Ana' => 42; dd %scores
camelia rakudo-moar 4e7ab2: OUTPUT«Hash %scores = {:Ana(42)}␤»
cale2 moritz: what do you think? Should I stop updating the old book and help proof yours instead? 18:20
cale2 brokenchicken: I guess Arrays don't dedup and they maintain their order. Perhaps it would be good to explain when to use each, idk. Difficulty is in having a strong focus on who the audience is 18:24
TimToady m: say [1,2,42,3,4] ~~ (**, 42, **) # another way 18:32
camelia rakudo-moar 4e7ab2: OUTPUT«True␤»
brokenchicken m: say 2 ≤ 3 ≥ 1 ≠ 2 18:33
camelia rakudo-moar 4e7ab2: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Confused␤at <tmp>:1␤------> 3say 27⏏5 ≤ 3 ≥ 1 ≠ 2␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ statement modifier␤ …»
brokenchicken hehe... Perl 7 gives true for ^ that :P It's now officially more advanced than all the other Perls :P 18:34
brokenchicken m: say 2 <= 3 >= 1 != 2 18:35
camelia rakudo-moar 4e7ab2: OUTPUT«True␤»
brokenchicken m: say 2 <= 3 >= 1 != 1
camelia rakudo-moar 4e7ab2: OUTPUT«False␤»
brokenchicken m: sub infix:<≤> { [<=] @_ }; say 2 ≤ 4 ≤ 5 18:37
camelia rakudo-moar 4e7ab2: OUTPUT«True␤»
brokenchicken m: sub infix:<≤> { [<=] @_ }; say 2 ≤ 4 ≤ 3
camelia rakudo-moar 4e7ab2: OUTPUT«True␤»
brokenchicken Close enough... :P
Ah, it ends up comparing Bool (which is 1) with 3 18:38
m: sub infix:<≤> is assoc('chain') { [<=] @_ }; say 2 ≤ 4 ≤ 3
camelia rakudo-moar 4e7ab2: OUTPUT«False␤»
brokenchicken m: sub infix:<≤> is assoc('chain') { [<=] @_ }; say 2 ≤ 4 ≤ 5
camelia rakudo-moar 4e7ab2: OUTPUT«False␤»
TimToady same problem really, we parse them as binaries when they should be processed as alternative values and functions
brokenchicken Ah, I see
m: sub infix:<≤> is assoc('chain') { dd @_ }; say 2 ≤ 4 ≤ 5
camelia rakudo-moar 4e7ab2: OUTPUT«[4, 5]␤[2, Nil]␤Nil␤»
TimToady though I guess it works there 18:39
oh, wait, it dint
brokenchicken m: sub infix:<≤> is assoc('list') { [<=] @_ }; say 2 ≤ 4 ≤ 5 18:40
camelia rakudo-moar 4e7ab2: OUTPUT«True␤»
brokenchicken m: sub infix:<≤> is assoc('list') { [<=] @_ }; say 2 ≤ 4 ≤ 3
camelia rakudo-moar 4e7ab2: OUTPUT«False␤»
brokenchicken yey
(though it'd break when other ops are mixed I think)
m: sub infix:<≤> is assoc('list') { [<=] @_ }; say 2 ≤ 4 > 3 18:41
camelia rakudo-moar 4e7ab2: OUTPUT«False␤»
brokenchicken yup
moritz m: indir '/tmp' { say $*CWD } 19:05
camelia rakudo-moar 4e7ab2: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Unexpected block in infix position (missing statement control word before the expression?)␤at <tmp>:1␤------> 3indir '/tmp'7⏏5 { say $*CWD }␤ expecting any of:␤ infix␤ infix …»
moritz m: indir '/tmp', { say $*CWD }
camelia rakudo-moar 4e7ab2: OUTPUT«"/tmp".IO␤»
BenGoldberg m: sub infix:<≤> is assoc('list') { [<=] @_ }; say 2 ≤ 4 < 5; 19:07
camelia rakudo-moar 4e7ab2: OUTPUT«True␤»
BenGoldberg m: sub infix:<≤> is assoc('list') { [<=] @_ }; say 2 ≤ 2 < 5;
camelia rakudo-moar 4e7ab2: OUTPUT«True␤»
BenGoldberg m: dd $/.VAR 19:08
camelia rakudo-moar 4e7ab2: OUTPUT«Invocant requires an instance of type Mu, but a type object was passed. Did you forget a .new?␤ in block <unit> at <tmp> line 1␤␤»
BenGoldberg m: my $introspect = $/.VAR; dd $introspect;
camelia rakudo-moar 4e7ab2: OUTPUT«Invocant requires an instance of type Mu, but a type object was passed. Did you forget a .new?␤ in block <unit> at <tmp> line 1␤␤»
BenGoldberg m: my $introspect = $/.VAR;
camelia ( no output )
BenGoldberg m: say $/.VAR;
camelia rakudo-moar 4e7ab2: OUTPUT«Nil␤»
BenGoldberg m: say $*/.VAR; 19:09
camelia rakudo-moar 4e7ab2: OUTPUT«5===SORRY!5===␤Unrecognized regex metacharacter ; (must be quoted to match literally)␤at <tmp>:1␤------> 3say $*/.VAR7⏏5;␤Unable to parse regex; couldn't find final '/'␤at <tmp>:1␤------> 3say $*/.VAR;7⏏5<EOL>␤␤»
BenGoldberg m: say $?/.VAR;
camelia rakudo-moar 4e7ab2: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Unsupported use of $? variable; in Perl 6 please use $! for handling child errors also␤at <tmp>:1␤------> 3say $?7⏏5/.VAR;␤»
brokenchicken What are you trying to do? 19:10
BenGoldberg I was looking at some old examples, one of which was examining default values by doing $foo.VAR.default; One of the examples was $/.VAR.default, which doesn't work, cause $.VAR is Nil. 19:15
perl6advent.wordpress.com/2013/12/...ial-state/ 19:16
timotimo $.VAR will be a reference to self.VAR 19:19
moritz m: say $/.VAR.default
camelia rakudo-moar 4e7ab2: OUTPUT«Nil␤»
moritz loooks correct to me
a failed match returns Nil
m: my $x = 42; say $x.VAR.default 19:20
camelia rakudo-moar 4e7ab2: OUTPUT«(Any)␤»
moritz m: say ('x' x int.Range.max + 1).chars 19:22
camelia rakudo-moar 4e7ab2: OUTPUT«0␤»
BenGoldberg m: dd Nil; 19:31
camelia rakudo-moar 4e7ab2: OUTPUT«Nil␤»
BenGoldberg m: dd int.Range
camelia rakudo-moar 4e7ab2: OUTPUT«-9223372036854775808..9223372036854775807␤»
BenGoldberg m: say int.Range.pick
camelia rakudo-moar 4e7ab2: OUTPUT«2413258564425961281␤»
BenGoldberg . o O (Next time someone says, pick a number, any number, ^ that's what i'll do ;)) 19:32
TEttinger BenGoldberg: I pick phi. that is, the base-36 number where the digits are p, h, i 19:33
moritz m: say :36<phi> 19:35
camelia rakudo-moar 4e7ab2: OUTPUT«33030␤»
moritz not bad
BenGoldberg m: 'phi'.parse-base(36).say;
camelia rakudo-moar 4e7ab2: OUTPUT«33030␤»
TEttinger nice
BenGoldberg m: 'perl'.parse-base(36).say; 19:36
camelia rakudo-moar 4e7ab2: OUTPUT«1185537␤»
TEttinger do radices above 36 work somehow?
BenGoldberg m: 'perl'.parse-base(37).say;
camelia rakudo-moar 4e7ab2: OUTPUT«Radix 37 out of range (allowed: 2..36)␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
TEttinger m: 'perl'.parse-base(30).say;
camelia rakudo-moar 4e7ab2: OUTPUT«688431␤»
TEttinger m: 'perl'.parse-base(28).say; 19:37
camelia rakudo-moar 4e7ab2: OUTPUT«560553␤»
TEttinger m: 'perl6'.parse-base(28).say;
camelia rakudo-moar 4e7ab2: OUTPUT«15695490␤»
agentzh i'm writing a perl 6 program with 8K LOC and 46 compilation units. the biggest hurdle i'm facing is that everytime i edit a single .pm6 file, it takes for total 6 ~ 12 sec to compile and load in rakudo :( 20:12
yoleaux 26 Jan 2017 02:34Z <MasterDuke> agentzh: according to timotimo, 'will probably have to "up" a few times until you find a frame that has "tc" in it', before the `print MVM_dump_backtrace(tc)`
agentzh MasterDuke: maybe it can be automated by a gdb python extension? like this? github.com/openresty/openresty-gdb-utils#lbt 20:13
i wonder if anyone has ever worked on a perl 6 (not nqp) project of this size. 20:14
the delay on compilation is unbearable i'm afraid.
my laptop is a mid-2015 15 inch macbook pro with the best CPU and biggest ram in that model. 20:15
without the .precomp cache, it takes more than 30 sec to compile and load everythign.
i have another perl 5 project of 16K LOC planned to be ported to Perl 6. but now it seems that even the current 8K LOC perl 6 project is not feasible for simple editing and hacking :( 20:17
will anyone give me some insights here?
RAKUDO_MODULE_DEBUG=1 shows that rakudo is precompiling other unchanged compilation units. 20:18
gfldex Rakudo is far from fast yet, there is a lot of work to be done.
agentzh solely compiling the current edited compilation unit is fast enough.
gfldex also, you may have written your Perl 6 project in Perl 5.
brokenchicken agentzh: do the unchanged depend on the changed? 20:19
agentzh wondering if it's possible to convince rakudo to avoid recompiling other unchanged compilation units.
brokenchicken: yes.
brokenchicken agentzh: well, that's why it's recompiling them.
agentzh brokenchicken: can this be disabled?
brokenchicken: since i seldom or never change the API 20:20
brokenchicken agentzh: but you'd get broken then
*broken code
gfldex agentzh: do you code functional?
agentzh brokenchicken: wondering if it's possible to do API validation automatically.
in C, we have the header files for the API protocol.
so if the header files do not change, no need to recompile other cu.
gfldex: i use OO exclusively. 20:21
gfldex C got a linker while Perl 6 cant 20:21
agentzh just need suggestions to get over the compilation time hurdle.
it makes me feel like hacking on the oldest machine in the world :)
gfldex I try to avoid OO with Perl 6 because functional tends to be less self-entangling 20:22
brokenchicken agentzh: Have a preprocessor shove all of them into a single file before compilation?
agentzh gfldex: i can't avoid OO since the whole thing is a compiler that relies on OO for AST representation and transformation.
brokenchicken That's what we do with rakudo's files 20:23
agentzh turning it into functional style like in Haskell results in a lot of "copying rules" and code duplication which i learned from my haskell compiler.
brokenchicken: why a single file? 20:24
brokenchicken: i do not have a preprocessor.
gfldex Rakudo will scan quite a few directories every time you `use Module;` 20:25
agentzh gfldex: i don't think those scans can take several seconds will they? 20:26
i have a very fast PICe SSD.
gfldex the problem is not the storage system
agentzh tell me more :) 20:27
it seems to be CPU intensive.
100% of moar most of the time. 20:28
100% CPU
gfldex IO didn't get optimised much yet and the compiler isn't smart enough yet to avoid creating loads of objects just to thow them away after using them once
it's mostly memory bound actually
but a CPU waiting for the cache to deliver will wait 100% of the time 20:29
agentzh so the workaround is to concatenate everything into a single pm6 or p6 file?
gfldex yes
agentzh seems like i also need to rewrite "unit class foo" in my .pm6 file preprocessor :) 20:30
okay, i'll try.
thanks for the suggestion.
timotimo it'd be a lot of work to make our serialization scheme work with re-using old versions if "nothing changed"
well, really you want to have existing code work with new versions of their dependencies without recompiling the new thing
... i might be misunderstanding
but we essentially have a bunch of references to IDs of things rather than some identifier that might stay the same 20:31
agentzh timotimo: i just want rakudo only to recompile CUs that do not change since the last compilation. 20:37
timotimo: i just want rakudo avoid recompiling CUs that do not change since the last compilation. 20:38
timotimo right. when a CU doesn't change, it won't be recompiled
gfldex that's a lot harder then one might think
timotimo but if its dependency is no longer available, it has to change
gfldex for one you can't trust filesystem much
timotimo well, we already check sha1sum i believe 20:39
gfldex GNU Make acutally tries to detect clock skews when running on nfs
brokenchicken agentzh: OOC you don't have any extra dirs you add with `use lib` or -I, other than the dir that just has modules, right? 20:41
agentzh: for filysystem CUR, rakudo collects all the files in -I and shas them. That can be very slow if the path has lots of files in it 20:42
gfldex i wonder if Rakudo could steal gits sha1s 20:43
zfs and btrfs got them already too, but sadly they wont tell 20:44
agentzh brokenchicken: right, i only have -Ilib on the perl6 command line. and no use of "use lib". 20:48
MasterDuke agentzh: could you compile with --profile-compile and see what exactly the slow parts are? 21:04
agentzh MasterDuke: --profile-compile leads to an infinite loop as reported here: rt.perl.org/Public/Bug/Display.htm...et-history 21:06
also checked with the latest git nom branch version, same result. 21:07
agentzh seems like the all-in-one processor is trickier than i thought. 21:07
also need to take care of the dependency relationships in the CUs myself. 21:08
otherwise it's complaining about unknown parent classes.
cale2 I think I found a gap in the documentation
MasterDuke hmm, that sucks. how about a perf record of the compile?
cale2 m: say ~<hello world>.sort; 21:09
camelia rakudo-moar af4902: OUTPUT«hello world␤»
cale2 Can't find where it explains this
brokenchicken cale2: the precedence table should be it. 21:10
agentzh MasterDuke: oops, sorry, i forgot to remove the RAKUDO_MODULE_DEBUG=1 env on my side.
MasterDuke: now loading the profile html file in my chrome browser.
expected to take a long time due to the file size.
MasterDuke you might want to try the QT viewer 21:11
Geth ook: WildYorkies++ created pull request #86:
Update Preface and Operators
gfldex cale2: word quoting is explained here (kind of) docs.perl6.org/language/quoting#Wo...g:_%3C_%3E
Geth ook: 970a2c4722 | Cale++ | 2 files
Update Preface and Operators (#86)

  * Add file extension to open('scores')
Did not compile without this.
  * Update basics.pod
... (14 more lines)
gfldex cale2: prefix ~ is explained here docs.perl6.org/language/operators#prefix_~ 21:12
cale2 specifically the tilde on front though
gfldex and .sort comes from Any
cale2: postfix . is explained here docs.perl6.org/language/operators#postfix_. 21:14
cale2 No, putting the ~ in front of <>
and it automatically strings them together
gfldex that just prefix ~
cale2 G2G
gfldex we may be missing .Str tho 21:15
gfldex we are 21:18
gfldex no we don't but it's not in the index 21:21
Geth oc: 7d4cc9859b | (Wenzel P. P. Peppmeyer)++ | doc/Language/operators.pod6
link to method Str
21:23
Geth oc: cd0f6ff9b2 | (Wenzel P. P. Peppmeyer)++ | doc/Type/List.pod6
- get a bunch of routines into the index
21:31
gfldex cale2++
samcv Parameter '$aliases' expected a writable container, but got Hash value 21:57
what is the weirdness of % sigil items? i cann't have my signature be: sub ($hash is rw and pass a hash in?
gfldex samcv: did you try `\hash is rw`? 21:59
samcv nope. will try that
i know i've done this before hmm
Can only use 'is rw' on a scalar ('$' sigil) parameter 22:00
do i have to choose 'is rw' if the variable i'm passing to the sub is file scoped? 22:01
gfldex well, %-sigiled containers are never ro anyway
the error message is LTA tho 22:02
the Hash object is but it's mutator methods are not 22:03
so a rw on the outer container doesn't make much sense
samcv so what do I need to do?
gfldex either use %-sigiled containers in your sig or allow the container to be ro 22:04
the content of the Hash will never be ro
samcv allow the container to be ro? i don't understand that part
gfldex use a HashSet if you need immutable Hashy containers
gfldex or is it SetHash 22:05
`?
samcv it is a normal hash
gfldex no wait SetHash is mutable 22:06
samcv: what do you actually want to achieve? 22:09
samcv i just want to be able to write to the hash inside the sub, write to the hash i pass through
so you are saying hash's never need to set rw, because they always are?
gfldex m: sub f(%h){ %h<a> = 1 }; my %h; dd f %h; 22:10
camelia rakudo-moar af4902: OUTPUT«1␤»
gfldex well, the inner containers are mutable and autovivifying, the outer container (%h in the sig) can not be rebound. 22:11
samcv what do you mean by can not be rebound? 22:12
gfldex %-sigiled and @-sigiles containers are always containers of containers. So you need to tell the compiler (and us) what containers you refer to
MasterDuke m: sub f(%h){ %h<a> = 1 }; my %h; f %h; dd %h # i think this is a little more obvious
camelia rakudo-moar af4902: OUTPUT«Hash %h = {:a(1)}␤»
gfldex m: sub f(%h){ %h := Hash.new; }; my %h; dd f %h;
camelia rakudo-moar af4902: OUTPUT«{}␤»
agentzh MasterDuke: --profile-compile result: The profiled code ran for 6813.8ms. Of this, 188.8ms were spent on garbage collection and dynamic optimization (that's 2.77%).
is that helpful?
gfldex huh? 22:13
m: sub f(%h){ %h := Hash.new; }; my %h = a => 1; dd f %h;
camelia rakudo-moar af4902: OUTPUT«{}␤»
gfldex :-|
MasterDuke agentzh: in the routines view, what on top if you sort by exclusive time?
brokenchicken doesn't see a problem
brokenchicken samcv: Hashes/Arrays and ilk are objects. Subs making them read-only would mean some black magic that would freeze attributes and know which methods mutate things inside. Hence why $param doesn't need `is rw` if you're just modifying hash contents. Assigning to %foo or @foo would call methods on them so is rw doesn't make sense on them 22:15
jdv79 lets say i have a role that provides a private attr and i want another role to be able to access it
samcv kk
jdv79 how do i do that?
brokenchicken Whereas with $ assignment would change the container's value, and so `is rw` is there to controll that
samcv i understand it 22:16
agentzh MasterDuke: loading the routines view.
gfldex m: sub f($h is readonly){ $h<b> = 2 }; my %h = a => 1; f %h;
camelia ( no output )
agentzh hmm, the all-to-one preprocess also has to deal with exported subs in some CUs.
seems like we need to share such preprocessors :) 22:17
gfldex jdv79: jdv79 did you try `trusts`?
brokenchicken jdv79: don't think you can (at least without nqp) 22:19
m: use nqp; role Foo { has $!x = 42; }; role Bar { method foo { nqp::getattr(self, ::?CLASS, '$!x') } }; class :: does Foo does Bar {}.new.foo.say 22:21
camelia rakudo-moar af4902: OUTPUT«42␤»
agentzh alas. exported functions are hard to deal with in the all-in-one script generator.
any tricks for this?
Geth oc: 3d3b2b8c29 | (Wenzel P. P. Peppmeyer)++ | doc/Type/Signature.pod6
doc is readonly
22:23
gfldex samcv++
samcv hmm?
brokenchicken gfldex: explicitely
gfldex In #perl6 you get bonus points for not knowing stuff and asking questions. 22:24
samcv ah.
Geth oc: 7e6e6d946a | (Wenzel P. P. Peppmeyer)++ | doc/Type/Signature.pod6
fix spelling
MasterDuke gfldex: "To explicitly as for", should be "ask", right? 22:26
gfldex yes
i don't got much sleep last night
Geth oc: 7bac7a1053 | (Wenzel P. P. Peppmeyer)++ | doc/Type/Signature.pod6
fix more typos
22:27
Geth oc/master: 17 commits pushed by gfldex++
review: github.com/perl6/doc/compare/7bac7...c122064ab7
22:32
jdv79 the way priv attrs are handled seems quite restrictive 22:38
aka annoying
let's say i have a class, A, that does 2 roles, B and C - is there no way for that trio to share a priv attr? 22:39
or do i have to combine B and C just for that reason?
gfldex I don't think they should. Private really means private. 22:40
jdv79 seems that would lead to god roles
gfldex don't make them private then
jdv79 private in this context to me is jut not accessble outside the instance
what mechanism is there for that then?
gfldex in that case you can overload the accessor method
jdv79 ok. seems hacky but that'll do. 22:41
gfldex m: class C { has $.a = 42; method a {!!!} }; say C.new; say C.new.a 22:41
camelia rakudo-moar af4902: OUTPUT«C.new(a => 42)␤Stub code executed␤ in method a at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
brokenchicken jdv79: what you're doing sounds hacky :) Your question framed differently: "how can I make a role that accesses an undeclared symbol that may or not be there when the role is composed" 22:43
jnthn Could also declare a private method, fwiw 22:44
agentzh MasterDuke: in the exclusive time sort view of routines, get SETTING::src/core/IO/Handle.pm:128 takes 88% of the time.
brokenchicken Ah, right! jnthn++
jnthn I'm generally glad of Perl 6's tight scoping rules on private attributes.
agentzh the 2nd ranked one is SET_BLOCK_OUTER_CTX gen/moar/stage2/NQPHLL.nqp:1213 which takes 0.57%.
agentzh it's strange that IO::Handle takes most of the time. 22:45
in the rakudo compiler.
agentzh seems like a low hanging fruit for rakudo developers? 22:45
MasterDuke line 128 is get() 22:46
agentzh MasterDuke: yes
jdv79 brokenchicken: the role is composed where hte attr exists
well, it would be if that worked
MasterDuke which has been optimized at the rakudo level
agentzh err
brokenchicken agentzh: more like nqp/moarvm developers. That method is a pretty bare collection of nqp ops
agentzh where should i report it? 22:47
MasterDuke agentzh: it now needs work at the moarvm level, but there are fewer people who can do that
agentzh at #moarvm ?
jdv79 yeah, priv method might be better 22:51
jnthn: thanks
gfldex I just realised that I'm turning the docs from being holely to being holy. :-> 22:52
gfldex I better go to bed before my sleep deprived mind gets me to start a new religion. 22:54
good * #perl6
brokenchicken night 22:55
RabidGravy on a quick test an RPi 3 compiles rakudo twice as fast as a RPi 2 23:34
jnthn RabidGravy: How long, ooc? 23:36
RabidGravy about 15 mins on the 3 23:37
travis-ci Doc build errored. Wenzel P. P. Peppmeyer 'Merge pull request #1166 from antquinonez/master 23:39
travis-ci.org/perl6/doc/builds/196228767 github.com/perl6/doc/compare/7bac7...22064ab7f0