»ö« 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 gfldex: while you probably have your own TODO list, maybe you can take a look at github.com/perl6/doc/issues/38 ? 00:02
gfldex: it is the oldest issue right now, but it does not look very hard
but it is very confusing… 00:03
gfldex: to me it seems like you can add “This is not a real operator” sentence to docs.perl6.org/routine/$LESS-THAN_...ix_%3C_%3E and we can close the issue 00:04
by the way, I am going through older tickets again. Please don't mind my annoying comments 00:08
dalek c: 38036e1 | (Wenzel P. P. Peppmeyer)++ | doc/Language/quoting.pod6:
untangle index entry for < >
00:16
gfldex m: say &circumfix:«< >»; 00:19
camelia rakudo-moar c9dcc9: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared routine:␤ circumfix:«< >» used at line 1. Did you mean 'circumfix:<{ }>', 'circumfix:<:{ }>', 'circumfix:<[ ]>'?␤␤»
gfldex m: say &circumfix:«( )»; 00:22
camelia rakudo-moar c9dcc9: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared routine:␤ circumfix:<( )> used at line 1. Did you mean 'circumfix:<{ }>', 'circumfix:<:{ }>', 'circumfix:<[ ]>'?␤␤»
gfldex m: say &circumfix:<( )>;
camelia rakudo-moar c9dcc9: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared routine:␤ circumfix:<( )> used at line 1. Did you mean 'circumfix:<{ }>', 'circumfix:<:{ }>', 'circumfix:<[ ]>'?␤␤»
gfldex ENOSUCHOPERATOR 00:23
dalek c: 22ddf6d | (Wenzel P. P. Peppmeyer)++ | doc/Language/operators.pod6:
( ), < >, { } are terms (at least they are not circumfixes)
00:26
c: b3dc4f2 | (Wenzel P. P. Peppmeyer)++ | doc/Language/operators.pod6:
add index entry for the empty list
00:28
dalek c: 58b051d | (Wenzel P. P. Peppmeyer)++ | doc/Language/quoting.pod6:
fix index typo
00:30
dalek c: 2eb85f3 | (Wenzel P. P. Peppmeyer)++ | doc/Language/operators.pod6:
untangle index entry for .( ), .{ }, .[ ]
01:01
dalek c: dcab8da | (Wenzel P. P. Peppmeyer)++ | html/js/main.js:
remove #__debug__ and add [Debug: off] to footer
02:23
c: 461a54c | (Wenzel P. P. Peppmeyer)++ | html/js/main.js:
add embedded svg link check
dalek sectbot: 20c5d19 | MasterDuke17++ | committable.pl:
Group commits by output (#10)
03:06
sectbot: a1fd6fc | MasterDuke17++ | committable.pl:
Fix debugging value left in accidentally
03:09
dalek sectbot: 841ee41 | (Aleks-Daniel Jakimenko-Aleksejev)++ | Perl6IRCBotable.pm:
Use nickname as a description for gists
04:01
sectbot: c6b2106 | (Aleks-Daniel Jakimenko-Aleksejev)++ | Perl6IRCBotable.pm:
Indentation
sectbot: 7c22ea4 | (Aleks-Daniel Jakimenko-Aleksejev)++ | Perl6IRCBotable.pm:
Comments, refactoring

Nothing important really, just code mangling
sectbot: c763c0c | (Aleks-Daniel Jakimenko-Aleksejev)++ | / (2 files):
bisectable: more magic and rainbows

  * More detailed bisect log (show exit codes, script output, etc.)
  * If the output is identical, then show it. Gist it if it does not fit.
dalek sectbot: 111cebb | MasterDuke17++ | committable.pl:
Switch order of revision(s) and output
04:30
osystem: 41b277b | (Sam Morrison)++ | META.list:
Add Uzu to ecosystem
04:35
osystem: 896d3f1 | azawawi++ | META.list:
Merge pull request #226 from scmorrison/master

Add Uzu to ecosystem
dalek sectbot: 48693da | MasterDuke17++ | committable.pl:
Sort output

The ordering doesn't have any meaning, but multiple runs with the same input will now have the output in the same order
04:41
holyghost Hello 04:46
holyghost is going to learn swift 04:48
I looks as swift uses syntax of haskel where perl uses CLOS
s/per/perl6/
I might be wrong though 04:49
dalek sectbot: 40fb215 | (Daniel Green)++ | / (3 files):
Clean up alt_nicks
05:00
holyghost and the other way round as far as I can see 05:07
geekosaur I'd say ML instead of Haskell, since it's the generic parts that all the ML family languages have 05:09
holyghost geekosour, ML ? 05:23
geekosaur, Markup Languages ?
parabolize en.wikipedia.org/wiki/ML_(programming_language)
geekosaur that, yes 05:24
holyghost ok I understand now
geekosaur although the language family itself is larger and includes Haskell, Curry, Mercury, F#, etc.
holyghost and gofer 05:25
geekosaur and historical pre-Haskell languages Gofer and Miranda
holyghost a functional language
we had to learn about gofer as a functional language at school
geekosaur and Lazy ML although about the only thing it was used for was to write the first version of ghc >.>
holyghost I read the gofer source code once, it's quite ellegant 05:26
where lua is just based on C's var args, gofer has its own system 05:27
It also compiles everywhere
I think I have a tarball around somehwere with my gofer modifications, I could' have lost it though
ML is of the 70ies ... then it is older than haskel (Ediburgh?) 05:28
s/Ediburgh/Edinburgh/ 05:29
ok now I remember, you actually use lambda calculus for functionality
geekosaur yes. ML predates Haskell. I mentioned Lazy ML (essentially a basic ML with laziness) as a precursor already 05:31
holyghost I see 05:32
geekosaur the folks experimenting with laziness and purity were starting to fragment around LML, Gofer, Miranda, etc. and decided to make a common language
holyghost it's some sort of inference engine's rule firing then 05:33
TEttinger and then they couldn't decide on whether it would be Miranda 5 or Miranda 6 so they called it Haskell
geekosaur well, only sort of, since Miranda was closed spec as well as closed source 05:34
TEttinger wow
closed spec, that's a hell of a relic
holyghost Haskel <-> 1985
AFAIK it's haskel vs. scheme at first year in uni 05:35
geekosaur basically it was Research Software Ltd.'s baby, which was part of why they wanted to define a new language with an open spec and open process
holyghost scheme is of 1986
TEttinger hm, are there any major closed-source PLs these days?
parabolize why didn't ML take off? the wiki page shows guards, lets, tail recursion all sorts of good stuff. Did ML have that stuff in the 70s?
TEttinger yep
like lisp, ahead of its time
but a bit nicer syntax for people not used to it, I'd say 05:36
TEttinger also like plankalkul, which was just about literally ahead of its time 05:36
masak or maybe everyone else was/is way behind
:) 05:37
hi, #perl6
geekosaur TEttinger, I'd argue Verilog (VHDL is a rather weak open clone) and Matlab (Octave likewise)
TEttinger (around the time of the enigma machine, a professor in (nazi and not nazi) germany made what's very similar to APL with no implementation until 1990s)
holyghost plankakul is probably what the mainframes in the armies of WWII used
TEttinger nope
masak they did not 05:38
TEttinger no implementation at his time
they were still writing in machine code by flipping individual gates
holyghost I could be wrong though, an army man told me they had an assembler in WWII
masak Plankalkül was quite pioneering when it came to abstract data types
dalek sectbot: 4b7b3b4 | (Aleks-Daniel Jakimenko-Aleksejev)++ | committable.pl:
committable: LIMIT constant, limit bumped to 300

Note that it does not run anything in parallel, so it is a bit slow.
sectbot: 32cdbc8 | (Aleks-Daniel Jakimenko-Aleksejev)++ | committable.pl:
committable: much better output

Also, keep results in the same order
masak there's a nice paper about it by Knuth and some others
TEttinger it's shocking that the guy was able to see so far ahead and without any way to prove that his notation was useful 05:39
konrad zuse
holyghost I see
TEttinger it was long before ASCII was a thing :) 05:40
holyghost Ada then ?
TEttinger it used "real math" symbols, cough like a certain other language can, cough :)
(plankalkul)
holyghost I meant the lady "*Ada*"
TEttinger oh yes 05:41
holyghost It's somewhat of a saga :-)
TEttinger Countess Ada of Lovelace
holyghost she programmed machine code I though
s/though/thought/
masak holyghost: from what I've seen, Ada Lovelace didn't so much use a programming language, as describe algorithms in words and math operations
TEttinger I think her machine was analog, not electronic at all of course
holyghost sure
TEttinger yeah, founded programming I suppose 05:42
though you can argue it goes back much further
masak arguably
holyghost machine code in the sense that she used numbers (ALU)
masak algorithms go back to Al'Kwarismi at least ;)
TEttinger before or after al-jabr? 05:43
"that algebra guy"
holyghost Arabians also invented the cypher '0'
ASCII is based on it in 8x8 rows
TEttinger and you can look at an algorithm as a recipe and suddenly everyone has invented recipes
right, ciphers are definitely a sort of algorithm 05:44
was it da vinci who had lots of ciphered journals?
holyghost Later on the school of Athens did "number theory"
TEttinger (I suppose lots of people back then were concerned about theft of their ideas) 05:45
geekosaur note that she also "wrote programs for" a machine that did not exist. (iirc when someone finally did build a difference engine, they tried her programs... and found *one* bug.)
TEttinger nice.
was that babbage's engine?
geekosaur yes
TEttinger (I guess named after the person who constructed one, or after the person who devised the plans?)
holyghost that's mentioned in the dictionary 05:46
babbage's engine
geekosaur it was ... well beyond the technology of the time. and by the time the tech had caught up, people were doing things in other ways, so an actual difference engine was only built within the past decade
TEttinger oh wow
parabolize Lovelace's first program: upload.wikimedia.org/wikipedia/com...umbers.jpg
TEttinger I wonder what kind of bug it was
MasterDuke wasn't the difference engine built longer ago? but the analytic engine was only built recently? 05:47
geekosaur Charles Babbage built some simpler "computing engines", but only planned out the difference engine; metalworking was not up to actually building it
TEttinger looms were also programmable in the 1800s, with common implementations and actual standards... kinda amazing 05:49
holyghost TEttinger, what's a loom ? 05:49
TEttinger (they still needed orphans to risk getting their arms chopped off for them to function, but I guess not much has changed, cough shenzhen) 05:50
holyghost: weaves fabric in automated patterns
holyghost right as a carpet
TEttinger like for mass-manufacturing rugs
yeah
TEttinger they needed to be able to reproduce some rather complex motions and used an early punch card system 05:51
geekosaur yeh, the original Jacquard loom is still considered one of the earliest programmable machines
holyghost I cannot find the link tp babbage engine in the dictionary anymore, must be an older version (I cannot parse every TNHD tarball ;-) 05:52
TEttinger en.wikipedia.org/wiki/Joseph_Marie...quard_loom
holyghost node scripture ? 05:53
I mean, there's this writing where you use knots in a piece of rope 05:54
(It's not in freeciv though :-)
TEttinger quipu, yeah
en.wikipedia.org/wiki/Quipu "talking knots"
dalek sectbot: 5671d64 | (Aleks-Daniel Jakimenko-Aleksejev)++ | committable.pl:
committable: no need to chdir here

It would be great to get rid of all “chdir”-s, but unfortunately it is not always possible. However, this one is not the case.
05:55
sectbot: b04f37b | (Aleks-Daniel Jakimenko-Aleksejev)++ | committable.pl:
Missed one occurrence of LIMIT
holyghost flood, 'do not mingle in the affairs of bots' I guess :-) 05:57
s/mingle/meddle
holyghost I am downloading 'star trek - voyager', I am going to watch some so I am a bit away from the computer 06:02
holyghost all seasons 06:02
Also, I am going to buy some beer in an hour 06:06
My oldest daughter becomes 15 of age
tomorrow
dalek sectbot: 5d7fd25 | (Aleks-Daniel Jakimenko-Aleksejev)++ | committable.pl:
committable: handle uncompilable commits properly

Also print warnings in exactly the same manner as other output.
06:11
holyghost I bought her an mp3 player with a good interface, 4Gb of space and 4 albums on it
holyghost She has a Vaio portable where she can put her music on it 06:12
AlexDaniel if anybody is wondering what all these bisectbot changes are about, see my explanation on #perl6-dev here: irclog.perlgeek.de/perl6-dev/2016-0...i_12844444 06:23
holyghost personal.ee.surrey.ac.uk/Personal/L...gon/jargon 06:24
Search for Babbage on that page
I though I'd share
s/though/thought
and www.catb.org/~esr/jargon/html/E/engine.html 06:25
holyghost apparently a truck drove in on a crowd in Nice, France 06:56
DrForr Heard earlier this morning. :(
holyghost We're at 2 happenings such a month in Europe 07:03
dalek osystem/MARTIMM-patch-1: 0d68a2c | (Marcel Timmerman)++ | META.list:
new module Semaphore::ReadersWriters
07:18
CIAvash holyghost: Khwarizmi was Persian/Iranian 07:21
holyghost ok
en.wikipedia.org/wiki/Main_Page 07:23
excuse me, en.wikipedia.org/wiki/Muhammad_ibn...-Khwarizmi
I once read a book on Islamic philosphy, Abu Sienna <-> Avicenna 07:24
Ibm means droid AFAIK
s/Ibm/Ibn/ 07:25
c. 780-850, after the installation of muslims by Aristoteles 07:26
Aristoteles was one of their prime figures for philosphy, I am not sure
Avicenna was the name in Latin of Abu Sienna, he was the greatest ph. of them all the book said 07:27
However there were other ph. who didn't speak freely because of the islam
holyghost "Islamititsche Filosofie" - author Leezenberg 07:28
I am driking to my daughter's best wishes for her birthday, so I might fluctuate somewhat 07:29
15 years old
Please take your time
holyghost I also read Arabian nights for 600 pages, which good in magic (the game) but not too good when you see some strains through the book 07:31
The only publisher we have in Dutch is "Bulaaq" for translations 07:32
holyghost Finding the book in English would be difficult 07:32
Then, I had a course on standard modern arabic which I gave to my father who is more into religion -> philosophy
holyghost I even studied japanese for a month, I know some hiragana, katakana and kanji by heart 07:33
I try to read up on these things on wikipedia
I have 2 japanese to english dictionaries, where one is from Oxford the other's bigger 07:34
It's 4 years ago
holyghost I really need to relearn the hiragana, vocabulary and grammar 07:34
holyghost If you know that, you can read most Japanese websites 07:35
holyghost here's what I mean : en.wikipedia.org/wiki/Hiragana 07:36
The characters are thereon
holyghost You just look up the word by english pronounciation e.g. fugu (fu and gu) and you have the english translation 07:44
xiaomiao hey - if anyone has a minute or two to spare and wants to entertain me, I'd be interested in a simple perl6 program that just fetches one URL in a loop (say, 100 times) and prints the reply 08:08
masak "prints the reply" -- the reply being the body of the response? 08:09
moritz xiaomiao: add a loop around the example in github.com/sergot/http-useragent#usage 08:52
xiaomiao moritz: ah, good idea 08:53
xiaomiao now let's see if perl6 is faster than Go <_< 08:56
timotimo haha, no. 08:57
TEttinger but is it faster than INTERCAL? 09:02
gfldex Perl 6 is mean to make the programmer faster, not the computer. 09:03
timotimo well, we're hoping the speed penalty is going to go down even more with time
hahainternet Go's a fairly unique language anyway 09:22
its niche is limited in a computer science sense, but very large volume of actual use
profan TEttinger: only if you say please enough 09:23
masak and not too much 09:24
DrForr Much as Perl 5 was. 09:34
konobi go is also dangerous 09:36
Zoffix .ask ugexe should the "New repository version 2 and new Distribution interface" be added to Rakudo's ChangeLog or is that entirely an internal change? If it should be added, would you let me know what to write into ChangeLog? github.com/rakudo/rakudo/commit/f4...6f7cd99e66
yoleaux Zoffix: I'll pass your message to ugexe.
konobi dtrace.org/blogs/wesolows/2014/12/2...-is-trash/ 09:37
DrForr Hey, I play quite a bit... Oh, the language :)
hahainternet it's actually fine as a language, it's extremely enjoyable and very pragmatic 09:38
but people hate the people behind it, and the fact it's so simple
it's certainly not a language to end all language development, but in its niche it is superb
konobi and there was a recent fairly high profile article on how golang totally broke a running system because the authors make way way way too much assumption about what is "safe" 09:38
masak it seems more enjoyable than C :)
profan that tends to come with the memory safety 09:39
hahainternet konobi: could you link me to that article please?
profan: threading and syncing too, also nice things like unicode strings
konobi masak: i'm playing with terralang for the same sort of stuff
hahainternet terra's very cool but a very very different language
it targets the lowest level features it can, Go is much higher level
Lua is a closer comparison to Go than Terra imho
profan hahainternet: i think they slipped abit on the threading bit
konobi github.com/golang/go/issues/1435
profan i mean cps is nice, but go still has the shared memory history bit too 09:40
hahainternet profan: 'shared memory history'? 09:41
konobi you can do cps in perl though
hahainternet profan: do you mean the ability to share memory without intending to?
profan hahainternet: i mean, you still have race conditions and all that fun even with the channels
hahainternet oh absolutely you ca
it in no way is fully safe in almost any regard, i see it as a valuable companion to Perl
making a language that embodies all of these safety principles results in so many compromises in other areas you lose the simplicity that makes things enjoyable 09:43
i think that's one of the greatest achievements of Perl 6 to me 09:44
it has a simple appearance, and can be used in a simple way, but that simplicity is obtained by extremely thorough design, rather than naivete (sp)
konobi i wonder if you could create an nqp runtime using the language/token/lexer features in terralang 10:11
pmurias konobi: in order to run Perl 6 on it? 10:13
konobi pmurias: yeah
konobi pmurias: how's the JS backend working? 10:15
pmurias konobi: it compiles rakudo to JavaScript and a few % of the setting. I'm working on making nqp-js emit faster code as the rakudo compiled to js is too slow and compiling the setting would take ages 10:17
konobi pmurias: (terralang.org/api.html#the-language...lexer-api)
pmurias: habe you looked at using node-inspector to do the JS profiling?
it covers not just timing info, but you can use heap snapshotting too... and it'll take you down to the line of code that individual objects were defined at (using diffs to narrow it down) 10:18
pmurias konobi: I have used devtool to profile things but it has problems with native extensions 10:19
konobi pmurias: node-agent-devtools? 10:20
pmurias konobi: just the devtool package from npm 10:21
konobi ah... you probably want node-inspector... it's the only one being actively developed now, since it's part of one of IBMs offerings 10:22
pmurias konobi: I'll check that out 10:25
konobi pmurias: oh! and built in flamegraph support
github.com/node-inspector/node-inspector 10:27
pmurias devtool seems to have the same profiling as chrome does but it runs inside of electron so it doesn't like native extensions 10:28
konobi this uses the remote debugging protocol within V8, so native addons won't affect anything 10:30
timotimo blogs.dropbox.com/tech/2016/07/lep...-at-15mbs/ - kinda cool, but not interesting for us, probably 10:34
konobi i'd have thought lz4 with shared dictionaries would have been better there 10:36
gfldex timotimo: that means, if you upload jpegs to dropbox, make sure you have the legal right to change them. If you don't you better encrypt them. 10:37
timotimo go ahead and try it? :) 10:38
gfldex: did you see it's actually lossless?
gfldex timotimo: lossless, after decoding. If you compare the files, they are diffrent. There are plenty of agreements between companies that make that illegal. 10:39
timotimo wait, really? 10:40
gfldex if the file get's 20% smaller, they must differ
timotimo no. 10:41
if you zip a text file, it "gets smaller", but when you unzip it again, it's the same content again
gfldex as I understood the article they reencode the jpegs
timotimo no, they do not 10:42
gfldex sorry, i'm misstaken then
timotimo "Lepton achieves a 22% savings reduction for existing JPEG images, by predicting coefficients in JPEG blocks and feeding those predictions as context into an arithmetic coder. Lepton preserves the original file bit-for-bit perfectly."
that's all you need to know
also this paragraph makes clear you don't get the lepton'd file, you get the original file 10:43
"Lepton can decompress significantly faster than line-speed for typical consumer and business connections. Lepton is a fully streamable format, meaning the decompression can be applied to any file as that file is being transferred over the network. Hence, streaming overlaps the computational work of the decompression with the file transfer itself, hiding latency from the user."
gfldex github.com/dropbox/lepton actually makes it clear with a lot less words :) 10:44
timotimo *shrug* 10:45
anyway, now we all know what's what. and that's good 10:46
sammers hi from Japan 11:43
rjbs o/ 11:44
moritz \o 11:46
timotimo o/ 12:05
pmurias konobi: re running on top of terra if you want to port Perl 6 to some VM, what you likely want to do is not to implement nqp the language on it but add QAST (which is Perl6/nqp already parsed into a tree) backend 12:26
melezhik hi Perl6 gurus! Does anybody know how to comment a _whole block_ of perl6 code, not commenting by `#' every single line? 12:51
psch melezhik: we have #`[ ] as block comment form 12:52
melezhik: note that the amount of brackets is up to you, as long as it's matching
moritz also pod
=begin comment
...
=end comment
DrForr #`( ... ) 12:52
melezhik thanks, sounds good
melezhik I anticipated that perl6 has the same way with pod comments (: 12:53
psch oh, right, #` doesn't care which type of parenthesis you use
m: say #`<< nothing >> "something"
camelia rakudo-moar 51a611: OUTPUT«something␤»
gfldex also ^VI#^[ :-P
psch m: say #^[ bar ] "foo" # uhh? 12:55
camelia rakudo-moar 51a611: OUTPUT«5===SORRY!5===␤Argument to "say" seems to be malformed␤at <tmp>:1␤------> 3say7⏏5 #^[ bar ] "foo" # uhh?␤Other potential difficulties:␤ Unsupported use of bare "say"; in Perl 6 please use .say if you meant $_, or use an explicit invo…»
moritz #^... is a whole-line comment 12:56
so it complains about bare say
m: say
camelia rakudo-moar 51a611: OUTPUT«5===SORRY!5===␤Argument to "say" seems to be malformed␤at <tmp>:1␤------> 3say7⏏5<EOL>␤Other potential difficulties:␤ Unsupported use of bare "say"; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument, …»
psch yeah, which just means that the ^ does nothing, doesn't it
moritz right
timotimo m: say #`/ test / "yo"
camelia rakudo-moar 51a611: OUTPUT«5===SORRY!5===␤Argument to "say" seems to be malformed␤at <tmp>:1␤------> 3say7⏏5 #`/ test / "yo"␤Other potential difficulties:␤ Unsupported use of bare "say"; in Perl 6 please use .say if you meant $_, or use an explicit invocant or…»
Frameless timotimo: curious, is hack.p6c.org/~timo/coverage/ being updated on regular intervals? 13:00
And related question: how can I run that stuff locally?
melezhik: it's worth noting most editors support keyboard shortcuts to comment out selected text. Like CTRL+D 13:01
timotimo it is not
the process is a bit involved
timotimo so, you start by having the "line_based_coverage_3" (or some number) branch of moarvm checked out and built 13:02
Frameless Alright. I may be interested in increasing coverage in about a month
timotimo that'll give you access to a new environment variable
i think it's MVM_COVERAGE_LOG or something
set it to a filename that includes a %d somewhere for the PID
and then run the test suite. multi-thread is allowed because of the PID thing 13:03
Frameless Sounds simple enough :) Thanks.
timotimo it's not all yet :) 13:04
Frameless heh
timotimo the crapton of files you end up with would ideally go through sort, uniq, and grep for CORE.setting before you feed it to the tool
the next step is the dumped moarvm file. you get that from moar --dump CORE.setting.moarvm
and all that feeds together into moarvm's tools/parse_coverage_report.p6 13:05
melezhik huh, #`[ ... ] even better then pod :) 13:06
thanks to all for advices!
perlpilot melezhik: serves a different purpose than pod
melezhik yeah, I know
timotimo what i like about pod is that my editor will highlight pod markup in pod comments :) 13:12
perlpilot is slightly surprised the #`/ ... / comment above didn't complain about the delimiter 13:16
timotimo well, it would have to parse all comments starting immediately with a ` as "failed attempt at block comment"
perlpilot That seems preferable to silently treating everything to end of line as a comment. 13:17
If someone has #` in their code, they were most likely trying to do an embedded comment. 13:18
dalek c: 55332b8 | titsuki++ | doc/Language/terms.pod6:
Fix a typo from "Pi" to "pi"
c: 3a6e347 | (Itsuki Toyota)++ | doc/Language/terms.pod6:
Merge pull request #708 from titsuki/fix-typo

Fix a typo from "Pi" to "pi"
Frameless
.oO( pie... )
13:20
holyghost *smile* those bots are funny sometimes 13:26
s/*smile*/*lol* whatever/ 13:27
Frameless huggable: hug holyghost 13:30
huggable hugs holyghost
holyghost *lol* 13:31
I really need to write an IRC bot once 13:33
I don't know what I would put into it but on #perl and #perl6 nobody would mind too much though
huf meh. put an irssi in a screen and script it 13:34
holyghost right 13:35
dalek -six-help: eb9b799 | coke++ | summary.p6:
track and report on new @LARRY tag
13:52
[Coke] is it intentional that the TOC is colored when shown above the content, but black when to the left? (docs) 13:57
gfldex [Coke]: it is intentional 13:57
[Coke] what's the purpose? 13:58
gfldex the internet seams to agree that ToC like navigation elements on the left side of the screen do not require blue links 13:59
i tried the same for the ToC on top and it look very out of place
ugexe Zoffix: gist.github.com/ugexe/5de557c23058...3af52a1609 # changeloggy notes on distribution stuff 14:01
yoleaux 09:36Z <Zoffix> ugexe: should the "New repository version 2 and new Distribution interface" be added to Rakudo's ChangeLog or is that entirely an internal change? If it should be added, would you let me know what to write into ChangeLog? github.com/rakudo/rakudo/commit/f4...6f7cd99e66
[Coke] I'd rather it was consistent, but not enough to make a PR for it, so I guess it's fine. :) 14:02
Frameless ugexe: thanks 14:04
gfldex [Coke]: if you look at developer.mozilla.org/en-US/docs/W.../undefined you will see that the site is split into two parts. The allways-there-alway-navigation-part and a main body. In the main body clickable elements are marked with blue. Likely because the clickyness is the exception, while in the left part it is not.
[Coke] I think "TOC" overrides "position on screen". links embedded in paragraphs are different than a TOC, sure 14:05
holyghost Now that I thought of it, there's this new VRML thing : Babylon javascript for developing 3D browser apps, thought I'd let you know 14:06
AlexDaniel sometimes I wonder how much stuff I have 「git stash」-ed in a gazzilion number of repos all over my filesystem… 14:42
lucs If in Perl 5 I would do 「$foobar = Foo::Bar->new or die "$@"」, in Perl 6, given 「use Inline::Perl5; use Foo::Bar:from<Perl5>; my $foobar = Foo::Bar.new」, how do I get P5's 「$@」? 14:45
gfldex if Foo::Bar.new returns a Failure it would be in $foobar and you could .Str that. 14:47
geekosaur ideally you got a Failure back from Foo::Bar.new and can extract it. otherwise you'd have to trap the exception it threw 14:48
hoelzro how could Foo::Bar return a Failure if it's from Perl 5 land?
Frameless lucs: FWIW, you don't need explicit use Inline::Perl5
lucs (trying...)
geekosaur $@ for that was considered a hack, but equivalent to the latter (if p5's eval caught an exception, it stuffed it in $@)
lucs Frameless: Oh, just the 「⋯:from<Perl5>」 is enough? 14:49
Frameless lucs: yes
lucs Frameless: Thanks.
geekosaur hoelzro, presumably Inline::Perl5 would be doing that translation. except, I don't know if it actually does or not...
hoelzro ah, fair point 14:50
gfldex if it doesn't a bug report might help
geekosaur the main problem is that $@ there is often "fake", as it was being set without using eval. so te Inline::Perl5 machinery would have to know to check p5-land $@ itself 14:51
lucs Tried this, print 'Any': 「use Net::LDAP:from<Perl5>; my $ldap = Net::LDAP.new('junk'); say $ldap.perl」 14:53
*prints
geekosaur figured. the $@ abuse is custom, which Inline::Perl5 doesn't know about. file a bug to have it check $@ when .new fails? 14:55
lucs Okay, thanks. 14:56
perlpilot better might be to find a way to provide $@ in P6 somehow as new is not the only thing that will fail to set it. 14:59
lucs perlpilot: I'll try to formulate the issue in those terms. 15:00
gfldex maybe expose it as %*PERL5<$@>, together with all the other globals 15:07
perlpilot aye, that would be nice. 15:08
lucs gfldex: Can I quote you on that in the issue I'm preparing?
gfldex lucs: you can, as a likely bad idea with unforseeable consequences 15:09
perlpilot gfldex: I'm thinking this is a "hard" problem or nine would have done it already :) 15:10
gfldex maybe he just forgot
Frameless lucs: you can also link to IRC discussions using time stamp links on irclog.perlgeek.de/perl6/today like irclog.perlgeek.de/perl6/2016-07-15#i_12847309
gfldex what would result in a swift fix
lucs Frameless: Ah, cool, thanks again. 15:12
dalek c: 38a88ae | (Wenzel P. P. Peppmeyer)++ | doc/Language/functions.pod6:
hide "Infix Form" from /routine-operator
15:17
gfldex and yes, that's how you do that
Frameless again mentions the need for a guide on how to add/remove stuff to docs index 15:19
gfldex Frameless: that would require someone who actually understands how it works
perlpilot documenting what works empirically whether or not you understand how it works would still be useful. 15:22
maybe add a HOWTO.md to the repo and fill it with "here's what I've figured out" 15:23
dalek c: 3fda059 | Altai-man++ | doc/Language/glossary.pod6:
Glossary page indexation
perlpilot plus, even if it's "wrong" it gives people that may know better a place to put their knowledge when they realize that you're wrong ;) 15:24
dalek c: 1fb0a75 | (Wenzel P. P. Peppmeyer)++ | CONTRIBUTING.md:
- doc change how to activate debug mode
15:30
Frameless \o/ 15:32
timotimo "none-multi's"? 15:34
i think that wants to be "non-multis"?
timotimo "Several wrapper file fixes" - i have no clue what that means :| 15:34
ruoso So... for anyone looking for something to profile and optimize... :) github.com/ruoso/Debian-IndexParse ... if you run t/002* with /var/lib/dpkg/available as an argument it takes way longer than I expected 15:37
timotimo i wonder if you've heard of the % regex operator yet 15:39
ruoso I probably have not 15:41
timotimo on the other hand, that's just a grammar, so our typical abilities to optimize stuff are very strongly limited
ruoso yeah, when I ran the profiler I couldn't see anything really useful... 15:42
timotimo OTOH, it could be that there's some backtracking or so. we don't have a good tool for analysing that kind of thing yet
Frameless: were you able to run a coverage report yet? 15:43
ruoso maybe this is a case to go down to callgrind, as jnthn posted a few weeks ago
Frameless timotimo: I've not tried :) I'll do it in about a month, unless I get bored with other stuff. :) 15:44
(in which case sooner)
timotimo OK!
you could do that, aye
perlpilot ruoso: is the only difference between the two character classes in the name token that the second one adds - and # characters? 15:45
ruoso yes
Frameless timotimo: I bookmarked the log of you explaining how to do it.
gfldex ruoso: if you replace `map|foo -> $e { $e.do-it }` with `map|foo` { .do-it }` you make it a wee bit faster
timotimo cool
gfldex: what, really?
gfldex timotimo: yes 15:46
[Coke] wee enough that it's noise?
perlpilot probably.
[Coke] rephrase: how wee is the bit?
ruoso woudlnt' the optimizer do that already?
I guess I'll try preventing some backtracking and see how much it helps 15:48
also, remove the silly recursive thing in continuation line
perlpilot gfldex: where's your evidence that it's a wee bit faster? ;)
Frameless m: for ^1000000 -> $e { $e.uc }; my $l1 = now; for ^1000000 { .uc }; say "First {$l1 - INIT now}; Second {now - INIT {now} - ($l1 - INIT now)}" 15:54
camelia rakudo-moar 78ba3d: OUTPUT«First 1.34327975; Second 1.1736792740916␤»
Frameless m: for ^1000000 -> $e { $e.uc }; my $l1 = now; for ^1000000 { .uc }; say "First {$l1 - INIT now}; Second {now - INIT {now} - ($l1 - INIT now)}"
camelia rakudo-moar 78ba3d: OUTPUT«First 1.2949267; Second 1.1468783930180␤»
Frameless m: for ^1000000 -> $e { $e.uc }; my $l1 = now; for ^1000000 { .uc }; say "First {$l1 - INIT now}; Second {now - INIT {now} - ($l1 - INIT now)}"
camelia rakudo-moar 78ba3d: OUTPUT«First 1.3389298; Second 1.16844597241␤»
timotimo camelia is very noisy
timotimo huh. 15:55
there is a difference there
ruoso I don't think my code is suffering from backtracking at all... Let me see how much the code blocks in the grammar cost... 15:56
timotimo by using an action class instead?
ruoso well, first by just removing them 15:57
10%
gfldex with 10 samples the avg went from 7.4938s to 7.448s
ruoso Way less than I expected
gfldex precomp cache was primed in both cases
ruoso: diff gist.github.com/gfldex/239bf4dcb76...1247754e2a 16:00
timotimo i wonder if .map is faster than map as a sub 16:01
gfldex map as a sub should be inlined
timotimo hopefully
AlexDaniel commit: HEAD for ^1000000 -> $e { $e.uc }; my $l1 = now; for ^1000000 { .uc }; say "First {$l1 - INIT now}; Second {now - INIT {now} - ($l1 - INIT now)}"
committable AlexDaniel: |«HEAD»: No build for this commit
AlexDaniel commit: HEAD~10 for ^1000000 -> $e { $e.uc }; my $l1 = now; for ^1000000 { .uc }; say "First {$l1 - INIT now}; Second {now - INIT {now} - ($l1 - INIT now)}" 16:02
committable AlexDaniel: |«HEAD~10»: First 1.2712164; Second 1.165069157072
AlexDaniel commit: HEAD~10 for ^1000000 -> $e { $e.uc }; my $l1 = now; for ^1000000 { .uc }; say "First {$l1 - INIT now}; Second {now - INIT {now} - ($l1 - INIT now)}"
committable AlexDaniel: |«HEAD~10»: First 1.270743642; Second 1.1404619790154
timotimo maybe we're turning one of those into a loop and one stays a map call?
ruoso gfldex: not measurable difference...
the cost of the block is being dwarfed by the cost of the match itself 16:03
gfldex also use \foo instead of $foo where you can
ruoso even if I add the no-backtrack modifier everywhere, it doesn't make any difference
I think it's just the building of the match data structure that may be too expensive
timotimo both are turned into loops with a simple int-based counter
Frameless ruoso: tokens don't backtrack 16:05
timotimo ah, i didn't look if it were tokens or ruler os what have you
does perl6-debug currenty work? and Grammar::Debugger? 16:06
ruoso the grammar works
timotimo and why did nobody do the awesomesauce that would be a gtk-based or web-based debugger that can handle multithreaded execution? :3
ruoso it matches correctly
Frameless I used Grammar::Tracer a couple of days ago. Worked then
ruoso it just takes forever doing so
timotimo Grammar::Debugger would have shown if it does any backtracking, but since you're using "token", it wouldn't backtrack anyway 16:08
ruoso The format of the grammar also isn't structurally prone to backtracking 16:09
i.e.: there is no possible ambiguity at any moment
timotimo right 16:12
jkramer Ahoy! 16:12
Frameless \o
ruoso I just realized...
I am running the default from rakudobrew 16:13
which is probably not from HEAD
so I'm probably missing all recent rakudo optimizations
Frameless Pretty sure it is head
timotimo those are almost all in core setting subs, operators, and methods
jkramer Is there some shortcut/operator that compares two strings but doesn't complain when one of them is undef so I don't have to type $foo.defined && $bar.defined && $foo eq $bar?
timotimo you're unlikely to benefit from them in the performance of your grammar
psch m: say quietly "foo" eq Str 16:14
camelia rakudo-moar 78ba3d: OUTPUT«False␤»
Frameless m: my $foo; my $bar = 42; say quietly so $foo eq $bar;
camelia rakudo-moar 78ba3d: OUTPUT«False␤»
jkramer Woah, nice
Frameless m: sub infix:<deq> { $^a.defined and $^b.defined and $^a eq $^b }; my $foo; my $bar = 42; say $foo deq $bar;
camelia rakudo-moar 78ba3d: OUTPUT«False␤»
jkramer m: my $foo; my $bar; say quietly so $foo eq $bar; 16:15
camelia rakudo-moar 78ba3d: OUTPUT«True␤»
jkramer Meh. I need false when both are undefined :(
Frameless m: sub infix:<deq> { $^a.defined and $^b.defined and $^a eq $^b }; my $foo; my $bar; say $foo deq $bar;
camelia rakudo-moar 78ba3d: OUTPUT«False␤»
ruoso Frameless: you're right... it is rakudo and maorvm HEAD (of a couple days ago) 16:16
psch m: say quietly "foo" eq "foo" ne Str
camelia rakudo-moar 78ba3d: OUTPUT«True␤»
psch m: say quietly Str eq Str ne Str 16:16
camelia rakudo-moar 78ba3d: OUTPUT«False␤»
psch jkramer: how's that?
timotimo maybe you want !eqv?
Frameless m: say quietly "Str" eq "Str" ne Str
camelia rakudo-moar 78ba3d: OUTPUT«True␤»
timotimo or maybe !===
jkramer psch: That looks good :) 16:17
Frameless I thought eq stringified...
m: say "Str" eq Str
camelia rakudo-moar 78ba3d: OUTPUT«Use of uninitialized value of type Str in string context␤Any of .^name, .perl, .gist, or .say can stringify undefined things, if needed. in block <unit> at <tmp> line 1␤False␤»
Frameless m: say Str.Str
camelia rakudo-moar 78ba3d: OUTPUT«Use of uninitialized value of type Str in string context␤Any of .^name, .perl, .gist, or .say can stringify undefined things, if needed. in block <unit> at <tmp> line 1␤␤»
Frameless Ah
timotimo yeah, but Str stringifies to "" after it warns
psch jkramer: what timotimo says is the only remaining pitfall - if you want empty Str treated differently to undefined Str you have to more work 16:18
Frameless m: say quietly "" eq "" ne Str
camelia rakudo-moar 78ba3d: OUTPUT«False␤»
gfldex m: multi fancy(Any:D $a, Any:D $b){ $a eq $b }; multi fancy(Any:U $a, Any:_ $b){ False }; multi fancy(Any:_ $a, Any:U $b){ False }; say [fancy("abc, "abc"), fancy(Any, "abc), fancy("abc", Any);
camelia rakudo-moar 78ba3d: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Unable to parse expression in argument list; couldn't find final ')' ␤at <tmp>:1␤------> 3, Any:U $b){ False }; say [fancy("abc, "7⏏5abc"), fancy(Any, "abc), fancy("abc", An␤ expecting any of:…»
psch +do
gfldex m: multi fancy(Any:D $a, Any:D $b){ $a eq $b }; multi fancy(Any:U $a, Any:_ $b){ False }; multi fancy(Any:_ $a, Any:U $b){ False }; say [fancy("abc", "abc"), fancy(Any, "abc), fancy("abc", Any);
camelia rakudo-moar 78ba3d: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Unable to parse expression in argument list; couldn't find final ')' ␤at <tmp>:1␤------> 3"abc", "abc"), fancy(Any, "abc), fancy("7⏏5abc", Any);␤ expecting any of:␤ infix␤ in…»
gfldex m: multi fancy(Any:D $a, Any:D $b){ $a eq $b }; multi fancy(Any:U $a, Any:_ $b){ False }; multi fancy(Any:_ $a, Any:U $b){ False }; say [fancy("abc", "abc"), fancy(Any, "abc"), fancy("abc", Any); 16:19
camelia rakudo-moar 78ba3d: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Unable to parse expression in array composer; couldn't find final ']' ␤at <tmp>:1␤------> 3), fancy(Any, "abc"), fancy("abc", Any);7⏏5<EOL>␤»
jkramer psch: That's alright, can't be empty
Frameless gfldex: missing closing ]
gfldex m: multi fancy(Any:D $a, Any:D $b){ $a eq $b }; multi fancy(Any:U $a, Any:_ $b){ False }; multi fancy(Any:_ $a, Any:U $b){ False }; say [fancy("abc", "abc"), fancy(Any, "abc"), fancy("abc", Any)];
camelia rakudo-moar 78ba3d: OUTPUT«[True False False]␤»
ruoso Is there an idiomatic way to convert a list of hashes with keys "name" and "value" to a hash where the values of "name" become the key?
gfldex jkramer: basically, you filter the undefined Strs out with a multi long before you get to the eq
ruoso in p5 I would just build the hash out of the list of pairs 16:20
Frameless ruoso: a slice maybe?
hm
psch doesn't understand the question
Frameless shrugs
ruoso given [ { name => foo, value => bar }, {name => baz, value => qux }], generate { foo => var, baz => qux } 16:21
psch oh 16:22
Frameless : my $l = [ { name => "foo", value => "bar" }, {name => "baz", value => "qux" }]; my %h; %h{ $l».<name> } = $l».<value>; say %h 16:23
psch m: my @a = [ { name => "foo", value => "bar" }, {name => "baz", value => "qux" }]; say @a>>.values.map({ $_[0] => $_[1] });
camelia rakudo-moar 78ba3d: OUTPUT«(foo => bar baz => qux)␤»
Frameless m: my $l = [ { name => "foo", value => "bar" }, {name => "baz", value => "qux" }]; my %h; %h{ $l».<name> } = $l».<value>; say %h
camelia rakudo-moar 78ba3d: OUTPUT«{baz => qux, foo => bar}␤»
ruoso I was looking for something that wouldn't require an intermediate value 16:24
psch m: my @a = [ { name => "foo", value => "bar" }, {name => "baz", value => "qux" }]; say [Z=>] @a>>.values
camelia rakudo-moar 78ba3d: OUTPUT«(foo => baz bar => qux)␤»
psch hm, no :|
oh, the Z is bogus
ruoso can a list of pairs be read as a hash?
Frameless yes
psch you can assign it to a %-sigiled var and it does the right thing, yeah
Frameless m: my %h = :42foo, :72bar; dd %h 16:25
camelia rakudo-moar 78ba3d: OUTPUT«Hash %h = {:bar(72), :foo(42)}␤»
ruoso is there a method to hash-ify? 16:27
or do I need an intermediate variable?
psch .hash, .Hash, %()
the latter is a circumfix, not a method
m: my @a = [ { name => "foo", value => "bar" }, {name => "baz", value => "qux" }]; say %(@a>>.values.map({ $_[0] => $_[1] })).WHAT 16:31
camelia rakudo-moar 78ba3d: OUTPUT«(Hash)␤»
ruoso just did a round of improvements based on the conversations here... 16:33
jdv79 Zoffix: does github support pod6 yet? i think i saw some emails about it recently. 16:35
Frameless jdv79: it doesn't. What you may have seen is a conversation about renaming .pod Pod6 files to .pod6 to prevent GitHub attempting to parse them as Perl 5 Pod and showing errors instead of the document 16:37
So now—even though you can't see the rendered document—at least you can see the source, without having to go to 'Raw' mode
jdv79 progess++ 16:38
gfldex ruoso: you could also write { $/<paragraph>.map({.made}).&make; } to maintain the order of execution 16:39
ruoso I actually like the traditional map notation 16:39
moved all the transformations to the top token, that made it a wee bit faster 16:40
but it still takes 20 secnods to parse a 2.7M file 16:41
gfldex nobody made the grammar engine fast yet 16:42
Frameless ruoso: and what's your goal time?
[Coke] ruoso: do you have a way for a tester to grab that 2.7M file? 16:43
ruoso I parse that in p5 in half a sec
Frameless Sounds about right.
ruoso using an dxplicit loop with an explicit state machine to parse it 16:44
Frameless ques in obligatory FAQ on speed docs.perl6.org/language/faq#Is_Per...gh_for_me?
[Coke] right, six is definitely still slower than five.
ruoso [Coke]: just grab the Packages file from debian's unstable
ruoso is not trying to use this in production, fotr, just playing, so yes, I know it's slower, but it seems like an interesting optimization avenue 16:45
ruoso ftp.us.debian.org/debian/dists/unst...ackages.gz 16:46
that file is larger than the one I have now
ruoso but the format is the same 16:47
gfldex ruoso: could you do `time perl6 -e 'say [+] lines.map: *.chars' < /var/lib/dpkg/available` please?
ruoso 72k lines totalling 2.7Mb 16:48
jdv79 is somebody investigeting speeing up the grammars yet? 16:49
that would be cool
ruoso with 4.2k paragraphs
gfldex jdv79: i believe the grammar engine is written in C 16:50
jdv79 i don't thinkg so
think its just nqp 16:51
gfldex i just checked, it's nqp
ruoso I think we may need a nqp profiler, not just a rakudo profiler, then 16:52
Frameless jdv79: none one that I know of.
ruoso heh/// running my test with the profiller increased the time to run by only 6 seconds... that probably seem to indicate there's not a lot of useful information in there 16:54
jdv79 i haven't looked in a long time but the profiler really doesn't cover nqp? 16:55
ruoso hm, it does... 16:56
jdv79 i'm not sure the grammar suffers from much low hanging fruit
[Coke] given that we're using the grammar engine to run everything, right. 16:57
psch probably hardly any, and if it's more likely semantics bugs
jdv79 last i remember TimToady said something about wasted scanning or something
psch the biggest improvement for any kind of parsing is probably method invocation overhead
ruoso following the call graph
psch but well, it's also a pretty tough thing to get into and understand 16:58
jdv79 well, "everything" that isn't terrible perf dependent at least
psch and doesn't really lend itself to the kind of optimizations that e.g. lizmat++ does regularly
jdv79 the glr helped alot with a grammar of mine 16:59
its still an order of mag or so slower than p5 17:00
Frameless New blog post: "[Part 2] A Date With The Bug Queue or Let Me Help You Help Me Help You": perl6.party/post/A-Date-With-The-Bu...ou--Part-2 17:02
jdv79 that seems like awkward grammar right there 17:03
3 helps, 2 yous, and 2 mes too much
ruoso hmm.. the match code is not being jitted 17:04
at least that's what I think I'm seeing from the profiler output 17:07
does the JIT have a recursion limit? 17:09
when MATCH calls itself, the recursive call is no longer jitted 17:10
and then the entire time is spent on that non-jitted execution 17:15
Frameless *sigh* someone brought their stupid kids to work 17:23
The noise is really interfering with my slacking off. I may just sue. 17:24
AlexDaniel Frameless: headphones? 17:25
Frameless AlexDaniel: then I can't hear when someone is coming over to my desk so I could preten I'm working in time :) 17:27
m: "🤓".uninames.say 17:28
camelia rakudo-moar 78ba3d: OUTPUT«(NERD FACE)␤»
Frameless Heh
perigrin w37 17:42
lucs Wingo! 17:44
tbrowder Zoffix: excellent bug posts! need to post on the site somewhere... 18:34
hoelzro Zoffix: excellent post; I especially enjoyed "This isn't the interface for the latest NASA space probe" 18:37
Frameless Thanks. 18:44
ugexe just tail -f a log file to always look busy 19:31
Frameless 80% of my job is designing marketing materials, so tail -f log can look suspicious :) 19:34
dalek c: 598a7ab | (Aleks-Daniel Jakimenko-Aleksejev)++ | doc/Language/glossary.pod6:
Glossary: remove items with no description if doced elsewhere

For example, remove stuff that is tied to a type (per discussion on #622)
19:51
c: fcddb93 | (Aleks-Daniel Jakimenko-Aleksejev)++ | doc/Language/glossary.pod6:
Glossary: remove items even if they have description

Perhaps it made sense to document these things in the glossary back then, but now that we have proper documentation for these things (which, by they way, is often much more detailed than these descriptions in the glossary), we do not have to keep it anymore.
  ⚠ Deletionism alert! Feel free to revert this commit partially.
dalek c: caaaf24 | Altai-man++ | doc/Language/glossary.pod6:
Move bots to IRC section
21:00
dalek c: 75a689d | Altai-man++ | doc/Language/glossary.pod6:
Deletion of Hash definition, which is alraedy greatly described in Class section.

Feel free to revert.
21:20
dalek sectbot: db49d66 | (Daniel Green)++ | benchable.pl:
Bring benchable in line with the others
22:21