»ö« 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.
sprocket hello #perl6! 02:27
teatime heyo. catch any fraggles lately? 02:28
sprocket i have a question about NativeCall and am wondering if someone might offer some insight…
i’m trying to use a shared lib but am getting the “Cannot locate native library” error 02:29
teatime - sadly no, no fraggles :) 02:30
sprocket oh, answered my own question; didn’t have the path in $LD_LIBRARY_PATH:. 02:35
wander4096 m: 'my $x; # 5' ~~ m:s/^ [\s* (.*? ';') ['#' <-[\n]>* ]? ]* $/ 02:41
camelia ( no output )
wander4096 m: say 'my $x; # 5' ~~ m:s/^ [\s* (.*? ';') ['#' <-[\n]>* ]? ]* $/
camelia 「my $x; # 5」
0 => 「my $x;」
wander4096 m: say 'my $x; # 5' ~~ m:s/^ [\s* (.*? ';')['#' <-[\n]>* ]? ]* $/
camelia False
wander4096 the difference is that i delete the space between ) and [
how can that cause different meaning? 02:42
wander4096 many times i got confused in such annoying situation, should i always add space between separator? 02:46
between => around
raschipi Are you sure the whitespace doesn't match there? 02:49
geekosaur probably safest. I'm not sure that's supposed to happen in that context, but some regex constructs *do* allow postcircumfixes (indexing)
wander4096 raschipi: you are right 02:50
wander4096 maybe i should read docs.perl6.org/language/traps#Whitespace 02:52
crazy >_< 02:53
geekosaur: yes, so when write `<statements>` it finds the rule or token `statements` but `< statements >` doesnt 02:56
HoboWithAShotgun Good sunday morning you wonderful people. 07:26
And if you are german: Go vote!
Also, how do I get/create a supply that emit keyboard events to me? 07:28
andrzejku_ AfD! 07:29
Zoffix HoboWithAShotgun: providing you switched your terminal to non-buffering, I imagine $*IN.encoding: "latin1"; and then $*IN.getc stuck in a Supply will do the trick 07:35
There's a .Supply method on IO::Handle that takes a :size too, but `size` might be removed, I think. 07:36
Zoffix docs.perl6.org/type/IO::Handle#routine_getc 07:39
japhb .tell HoboWithAShotgun See github.com/ab5tract/Terminal-Print...wInput.pm6 (or github.com/ab5tract/Terminal-Print...dInput.pm6 if you want it decoded) 07:50
yoleaux japhb: I'll pass your message to HoboWithAShotgun.
japhb .tell Zoffix Pretty please point people with the terminal input question to github.com/ab5tract/Terminal-Print...inal/Print (Terminal::Print::RawInput and Terminal::Print::DecodedInput) 07:52
yoleaux japhb: I'll pass your message to Zoffix.
japhb heads to bed
HoboWithAShotgun very nice, japhb++ 08:01
yoleaux 07:50Z <japhb> HoboWithAShotgun: See github.com/ab5tract/Terminal-Print...wInput.pm6 (or github.com/ab5tract/Terminal-Print...dInput.pm6 if you want it decoded)
Zoffix .
yoleaux 07:52Z <japhb> Zoffix: Pretty please point people with the terminal input question to github.com/ab5tract/Terminal-Print...inal/Print (Terminal::Print::RawInput and Terminal::Print::DecodedInput)
HoboWithAShotgun in his code, this line "start react { ... }", that start method is which one, the one from Thread? i can't tell from docs.perl6.org/routine/start 08:02
Zoffix That module's missing documentation.
HoboWithAShotgun: from Promise 08:03
HoboWithAShotgun ah yes, because foo something is the same as something.foo 08:03
Zoffix HoboWithAShotgun: second half of this section discusses it: docs.perl6.org/language/concurrency#Promises
HoboWithAShotgun: no, it's not the same. There just exist subroutines with the same name as methods in many cases. In this case, IIRC `start` is a statement prefix. 08:04
Zoffix .tell japhb a terminal input should be listed here: docs.perl6.org/type/IO::Handle#routine_getc However, what you linked to doesn't appear to have any documentation (at least one that talks about disabling buffering), so linking to it would just add more confusion. 08:06
yoleaux Zoffix: I'll pass your message to japhb.
Zoffix .tall japhb *terminal input module I meant 08:07
.tell japhb *terminal input module I meant
yoleaux Zoffix: I'll pass your message to japhb.
Zoffix
.oO( wonder if japhb is tall... )
HoboWithAShotgun moans
Zoffix `react {}` doesn't return until stuff inside of it is done. `start react {}` pops it into a separate thread, so code after it is executed right away, instead of waiting until react is done 08:09
HoboWithAShotgun so start react {} creates starts the react block in a new thread 08:10
s/creates//
Zoffix Yeah
HoboWithAShotgun i see
Zoffix m: react whenever Supply.interval(⅓) { .say; done if $++ > 3 }; sleep ½; say "meow"
camelia 0
1
2
3
4
meow
Zoffix m: my $p = start react whenever Supply.interval(⅓) { .say; done if $++ > 3 }; sleep ½; say "meow"; await $p 08:10
camelia 0
1
meow
2
3
4
Zoffix m: start react whenever Supply.interval(⅓) { .say; done if $++ > 3 }; sleep ½; say "meow"; sleep 2 08:14
camelia 0
1
meow
2
3
4
HoboWithAShotgun there's so much to keep in your head at once. i read about that magic state variables and forgot outright
Zoffix HoboWithAShotgun: kinda. In other languages you'd just be learning a separate parallelism/async library instead of start/react blocks. Same amount of learning and less polish. 08:15
Zoffix HoboWithAShotgun: there's a book project set to prove that point and only teach what's needed, progressively :) rakudo.party/post/The-Rakudo-Book-Project 08:15
Check back in a year and a bit ^_^ 08:16
HoboWithAShotgun I would prefer a new Camel over a Lhama 08:17
Zoffix has no idea what that means... 08:19
HoboWithAShotgun oh come on
sec
shop.oreilly.com/product/9780596004927.do over shop.oreilly.com/product/0636920018452.do 08:20
Zoffix still has no idea what that means... 08:21
I'm guessing one is more beginner oriented.
HoboWithAShotgun How can you do Perl stuff and not know about these books? 08:22
teatime the camel book is the best technical book I have ever read.
HoboWithAShotgun That's like reading Sci-Fi and not knowing about Heinlein :)
Zoffix HoboWithAShotgun: I do Rakudo stuff :) Some core devs never coded Perl 08:25
HoboWithAShotgun: also "Modern Perl" > *
As in modernperlbooks.com/ 08:26
stmuk camel=definitive larry reference for perl 5, llama=definitive learning perl 5 09:08
typically a perl 5 programmer would buy the camel give up on it, read the llama start to understand and then return to the camel able to follow it :) 09:10
TEttinger where's the alpaca book 09:16
guanaco book
stmuk en.wikipedia.org/wiki/Intermediate_Perl <=- alpaca 09:17
never heard of guanaco is that the cookbook? 09:21
HoboWithAShotgun m: package Site { sub login { return "cookie"; } }; say Site::login() 09:32
camelia Could not find symbol '&login'
in block <unit> at <tmp> line 1
HoboWithAShotgun what am i missing here? 09:33
geekosaur 'our' 09:46
m: package Site { our sub login { return "cookie"; } }; say Site::login() 09:47
camelia cookie
Geth doc: e53c6f1159 | (Tom Browder)++ (committed using GitHub Web editor) | doc/Language/enumeration.pod6
add missing right curly brace
10:08
Geth doc: b5be80cb3a | (Tom Browder)++ (committed using GitHub Web editor) | doc/Language/enumeration.pod6
add missing right curly brace at the correct place
10:10
chakli hi, i was installing JSON::Fast using zef install JSON::Fast 11:25
chakli but i get an error 11:25
===> Testing [OK] for JSON::Fast:ver<0.9.3> ===> Installing: JSON::Class:ver<0.0.9>:auth<github:jonathanstowe> ===> Install [FAIL] for JSON::Class:ver<0.0.9>:auth<github:jonathanstowe>: ===SORRY!=== Could not find JSON::Fast at line 4 in:
i found this irclog.perlgeek.de/perl6-toolchain/2017-07-22, but not sure if it is the same issue. 11:26
Zoffix chakli: sounds like you need to update your zef 11:28
chakli i just installed it using rakudo brew, brand new 11:28
Zoffix chakli: is it the first time you installed rakudo on this system? 11:29
zef keeps cache
zef --force install github.com/ugexe/zef/archive/master.zip 11:30
chakli yes, its the first time i installed on this system
Zoffix chakli: what's the full error? 11:32
HoboWithAShotgun geekosaur: tyvm good sir 11:33
timotimo "zef install JSON::Fast" shouldn't be installing JSON::Class
yoleaux 03:55Z <MasterDuke> timotimo: instead of github.com/rakudo/rakudo/pull/1171, could nqp::join return the input string if there was only one?
Zoffix timotimo: it does, if Test::META isn't installed 11:34
timotimo oh
right, that's new in the test-depends
Zoffix Yeah, I can't install it either: "Could not find JSON::Fast:ver<0.4+> at line 62 in:" 11:35
On HEAD
timotimo oh
JSON::Class depends on JSON::Fast, doesit?
and JSON::Fast depends on JSON::Class
yeah, that's not so cool.
chakli full error text ---> pastebin.com/uSrRBVZe 11:36
Zoffix hah, yeah indeed they both depend on each other :P
timotimo: move Test::META tests to xt :)
chakli: try zef --/test install JSON::Fast 11:37
timotimo i already have moved it
but it's in the test-depends, and zef installs those by default
Zoffix chakli: basically JSON::Class and JSON::Fast ended up depending on each other by accident, through test dependencies
timotimo i'm going to remove the dependency from the meta file for now
chakli lol :D
timotimo i just pushed a fixed version 11:39
please try again
chakli ===> Install [FAIL] for Test::META:ver<0.0.13>:auth<github:jonathanstowe>: ===SORRY!=== Could not find JSON::Fast at line 4 in:
Zoffix chakli: zef install github.com/timo/json_fast/archive/master.zip
chakli now it installed :) 11:40
Zoffix timotimo: not 100% sure, but might need a version bump too?
'cause I think zef keeps version somewhere and installs from those commits
timotimo that would probably be a good idea anyway 11:41
done
timotimo now to check why travis didn't figure out that it was a bad idea to depend on Test::META 11:44
:\
it uses zef install --force --/test Test::META first 11:45
Zoffix heh
timotimo "avoid circular tests" is the commit message that puts in that line 11:46
HoboWithAShotgun I'd like to add a method to Str, so i can write $s.chimp instead of $s.flip.chomp.flip 12:00
is that doable?
lizmat would you like to add this to *all* Str objects, or a specific number of Str objects in your program? 12:01
HoboWithAShotgun all 12:02
otherwise i'd use a role
lizmat use MONKEY; augment class Str { method chimp() { ... } }
HoboWithAShotgun cool. tx 12:03
wander4096 HoboWithAShotgun: `.trim-leading`, it's different from .flip.chomp.flip, but maybe what you want 12:13
timotimo why not just .substr(1)? 12:14
m: .flip.chomp.flip.perl.say andthen .substr(1).perl.say given "hello you" 12:15
camelia "hello you"
"rue"
timotimo oh, heh.
m: (.flip.chomp.flip.perl.say; .substr(1).perl.say) given "hello you"
camelia "hello you"
"ello you"
timotimo oh, chomp only removes newlines, right
HoboWithAShotgun i am consuming a supply like so: whenever Perlmonks.message -> %message, now I want to call unique on that using %message<text> as the equality comparison 12:21
i am not sure how to express that
HoboWithAShotgun i am also hungry :) back in a minute 12:23
Geth doc: 7f4839590f | (Steve Mynott)++ | doc/Language/faq.pod6
Explicit answer to "is Perl 6 released". I was told on twitter it

wasn't by someone citing the FAQ as evidence.
12:31
chakli I installed Bailador on rakudobrew and when i just do "bailador --name=test new" i get an error "--name=Project-Name is a required parameter" 12:38
Geth doc: 4f4b366c0a | (Steve Mynott)++ | doc/Language/faq.pod6
Tweak column length, released answer and update 6.d answer.
12:39
chakli but if i call Bailadorw/o the wrapper it works "perl6 rakudobrew/moar-nom/install/share/perl6/site/resources/F3147CDB5FA175F21CCAC05B6B29A24EF5EAED7B --name=test new"
ufobat i need to leave, but if you create a ticket for it i'll take care of it :)
chakli ok 12:40
Zoffix All the more reason not to use rakudobrew :) 12:44
HoboWithAShotgun meh, pc went on hibernate. what did i miss? 12:47
Zoffix HoboWithAShotgun: irclog.perlgeek.de/perl6/2017-09-24#i_15209509
teatime but, in short, nothing.
chakli @Zoffix what else would you suggest for a quick setup? 12:48
HoboWithAShotgun suggests nesquick as there can never be enough chocolate 12:49
Zoffix HoboWithAShotgun: Supply has .unique method. Just use .unique(:as{.<text>}) and I think that'll work
chakli: just built from sauce directly
huggable: sauce
huggable Zoffix, Install untested latest development version of Rakudo from source: github.com/zoffixznet/r#table-of-contents
teatime Zoffix: that's not what you wanted, is it? 12:50
thought the whole problem w/ rakudobrew is it installs the latest untested version by default
stmuk hmm better advice would be to build the last release surely?
Zoffix That builds latest dev version. Stick `git checkout 2017.08` after `git pull` in that bash alias (I'm yet to update it to make it automatically figure out latest release tag)
teatime: no, the whole problem with rakudobrew it uses wrappers that mess with stuff 12:51
teatime I see.
MasterDuke or the binary packages 12:52
Zoffix chakli: oh yeah, we have those
huggable: debs
huggable Zoffix, CentOS, Debian, Fedora and Ubuntu Rakudo packages: github.com/nxadm/rakudo-pkg/releases
MasterDuke huggable: debs
huggable MasterDuke, CentOS, Debian, Fedora and Ubuntu Rakudo packages: github.com/nxadm/rakudo-pkg/releases
Zoffix
.oO( too many options )
moritz docker!
stmuk Zoffix: something like github.com/tadzik/rakudobrew/pull/117 might help with the "last release"
El_Che moritz: actually, the binary pkgs were built with Docker in mind (and they are built with Docker as well) :) 12:53
stmuk (likely to go into my likely to be forked rakudobrew)
Zoffix stmuk: why change $cmd_sep on windows? `&&` does a truthy check while `&` just chains the comands, don't it? 12:54
stmuk I thought '&&' didn't work on windows at all (but could be wrong) 12:55
at least on cmd.exe I don't use powershell
Zoffix C:\Users\zoffi>perl6 -e "exit 1" && echo bar 12:56
C:\Users\zoffi>perl6 -e "exit 0" && echo bar
bar
That's Win10 cmd.exe
stmuk ok
Zoffix and yeah, `&` just chains them
and ignores exit codew
stmuk OK submit a PR 12:57
Zoffix A PR to PR? :D 12:58
stmuk :)
maybe I should remove the extra rakudobrew shims and leave the user to set PATH
timotimo HoboWithAShotgun: you just .unique(:as(*<text>)) on the Perlmonks.message 13:00
timotimo oh, someone already told you 13:02
cool
wander4096 gist.github.com/W4anD0eR96/b9e30fa...ce8cacd95e 13:06
wander4096 `say $/.made` in `method TOP` doesn't run 13:07
timotimo i think it has to be :actions instead of :{ction
yes, indeed
wander4096 oops 13:08
unclechu hey guys, when i use `run` can i close pipe (not just redirect it to `$*SPEC.devnull`) in declaration of `run` command? i wan't smth like `run 'someapp', :in(:close), :out(:close)` 13:11
MasterDuke unclechu: i think :!in, :!out might do what you want 13:13
unclechu MasterDuke: i just tested it, it doesn't closes pipes 13:15
timotimo i'm afraid you'll probably have to let it give you the pipe and close it manually
unclechu what exclamation mark means here?
timotimo m: say (:foo); say (:!foo)
camelia foo => True
foo => False
MasterDuke ah, my bad. i guess doing that just doesn't make those available to your program 13:16
wander4096 any example to distinguish `/ '(' ~ ')' <expression> /` from `/'(' <expression> ')'/`? 13:34
i have seen docs.perl6.org/language/regexes#in...structures 13:35
but don't get a good understanding
or they are same
timotimo not the same. the ~ one will call the FAILGOAL method of your grammar (or the default one you inherit) if the final thing isn't found immediately after what you matched inside 13:41
m: say "(hello world lol)" ~~ / '(' ~ ')' [ \w+ \s \w+ ] / 13:42
camelia Nil
timotimo oh, did i misremember?
m: grammar TwoWordsBetweenParens { regex TOP { / '(' ~ ')' [ \w+ \s \w+ ] / } }; say TwoWordsBetweenParens.parse("(hello world lol)");
camelia 5===SORRY!5===
Unrecognized regex metacharacter / (must be quoted to match literally)
at <tmp>:1
------> 3mmar TwoWordsBetweenParens { regex TOP {7⏏5 / '(' ~ ')' [ \w+ \s \w+ ] / } }; say T
Unrecognized regex metacharacter (must be qu…
timotimo m: grammar TwoWordsBetweenParens { regex TOP { '(' ~ ')' [ \w+ \s \w+ ] } }; say TwoWordsBetweenParens.parse("(hello world lol)"); 13:43
camelia Nil
timotimo i seem to be mistaken
wander4096 emmmm... 13:49
so if matched, they are the same?
moritz m: grammar TwoWordsBetweenParens { regex TOP { '(' ~ ')' [ \w+ \s \w+ ] } }; say TwoWordsBetweenParens.subparse(("(hello world lol)") 13:50
camelia 5===SORRY!5=== Error while compiling <tmp>
Unable to parse expression in argument list; couldn't find final ')'
at <tmp>:1
------> 3eenParens.subparse(("(hello world lol)")7⏏5<EOL>
moritz m: grammar TwoWordsBetweenParens { regex TOP { '(' ~ ')' [ \w+ \s \w+ ] } }; say TwoWordsBetweenParens.subparse("(hello world lol)")
camelia #<failed match>
moritz m: grammar TwoWordsBetweenParens { regex TOP { '(' ~ ')' [ \w+ \s \w+ ] } }; say TwoWordsBetweenParens.subparse("(hello world)")
camelia 「(hello world)」
moritz you need a FAILGOAL method if you want to extract a proper error message
timotimo i thought there's a default failgoal that throws an exception for you 13:51
moritz there used to be. Now it just fails. 13:52
timotimo i see!
wander4096 got it 13:55
unclechu hey guys, is there anything that help me declare short aliases for autogenerated arguments by `MAIN` subroutine declaration? i mean i can declare `--foo` but how i should declare `-f` alias for `--foo`? 14:23
moritz unclechu: try sub MAIN(:f(:$force)) { } 14:24
unclechu moritz: thanks, it works as i expected. it's time to improve documentation :) 14:26
moritz unclechu: sure. What's your github username? 14:27
unclechu moritz: @unclechu but is this importatnt? i'm just going to make pr here github.com/perl6/doc 14:28
moritz unclechu: I sent yuo an invitation so that you can push directly, if you prefer 14:29
unclechu okay, thanks 14:33
audiatorix How does NativeCall go about getting the signatures of functions in a library? 14:35
timotimo you give it to it :)
audiatorix oh... OH 14:36
oh my goodness
But wait, what about functions of the same name and different arity?
A compiled binary has no information on arity unless there's some outside information along with it 14:37
timotimo same name and different arity is not something that is possible
C++ does it by not having the same name
audiatorix Oh, that's not possible in C, right 14:37
thanks a ton 14:38
timotimo fwiw, NativeCall also supports name mangling for C++ classes
wander4096 gist.github.com/W4anD0eR96/3690249...a2cc51aaa0 14:40
can i parse it right without adding rules/tokens? 14:41
moritz rule expression { 14:43
| <expression>+ % '+' { make [+] $<expression>.made }
this is left recursion, and a very bad idea
if you don't care about precendence, just have it be 14:44
rule expression { <number>+ % <operator> }
and token operator { <[+-]> }
also regarding { make [+] $<expression>.made }
since <expression> is quantified, $<expression> is an array 14:45
m: say [].made
camelia No such method 'made' for invocant of type 'Array'. Did you mean any of these?
map
max
name
race

in block <unit> at <tmp> line 1
moritz in 3 to 4 months I'll have a book published on that stuff... 14:46
basically when you do recursion, you need to make sure that at least one character is consumed on the recursion path
dogbert11 moritz: do you know the codebase in htmlify.p6? 14:49
Geth doc: 788ca954d2 | (Viacheslav Lotsmanov)++ (committed using GitHub Web editor) | doc/Language/functions.pod6
MAIN sub: added example of argument short alias
14:50
moritz dogbert11: I used to 14:51
but now git blame says only 5% of the lines are my own anymore, so all bets are off
audiatorix Where is the source for NativeCall? 14:52
dogbert11 ok, I'm looking at docs.perl6.org/type.html, as you can see there's no description for backtrace event though one is available in the pod file
I'm 99 percent certain the reason is that htmlify gets confused by this header docs.perl6.org/programs/01-debuggi...race_class 14:53
moritz audiatorix: rakudo repo, lib/NativeCall*
audiatorix thanks
dogbert11 triggering this code github.com/perl6/doc/blob/master/h...fy.p6#L583 14:54
should that code be run when going through the 'programs' directory? 14:55
moritz dogbert11: on docs.perl6.org/build-log/ you can check if that note was called
Geth doc: b0737a5ded | (Steve Mynott)++ | doc/Language/faq.pod6
Warn about vendor versions less than 2015.12 since the code fragment to

do this was deleted.
14:56
moritz Backtrace does not have an =SUBTITLE
moritz from docs.perl6.org/build-log/build-201...+00:00.log
dogbert11 it is called, I have already checked :)
in the Backtrace.pod file in the type dir there is a SUBTITLE but not in Debugging.pod 14:57
moritz dogbert11: no idea; until now I didn't even know that docs/Programs/ existed
but back then[tm] the idea was that everything under doc/ gets processes 14:58
dogbert11 which might lead to problems if it encounters a heading in a debugging pod containing 'class' and 'Backtrace' 14:59
moritz there's class Backtrace::Frame 15:00
dogbert11 or the following docs.perl6.org/language/typesystem...Parameters
yes, and that looks ok on the type page, i.e. the SUBTITLE/description is shown
dogbert11 if I changed the title from say 'The Backtrace class' to e.g. 'Backtraces' or some such the problem would be worked around 15:02
probably not the ideal solution though :) 15:03
piojo Speaking of docs, is there any magic we can do to help google searches for "perl6 argument unpacking" go to the docs for "destructuring"?
moritz piojo: SEO is a thing 15:04
piojo moritz: yeah, but I'm also asking about the philosophy of the docs and the terms
since "unpacking" means something else,
but it's such an intuitive term that it was used in the perl6 design docs 15:05
piojo (S06) 15:05
moritz I think it's OK to mention that term in the docs
piojo If it were up to me, I'd let "unpacking" mean both things, and I'd rewrite the "destructuring" section so both terms were used prominently, and as synonyms
(with perhaps a note that says "for the 'unpack' function, see here")
moritz do it, see if somebody protests :-) 15:06
forgiveness > permission is one of our mottos
piojo moritz: okay, I will. Thanks
piojo haha 15:06
When I first learned the basics of perl6, I had trouble with these terms since I couldn't remember "destructuring"
though it is a kind of cool word
Non-native speakers might also not like it as much 15:07
dogbert11 moritz: I'll do it and mention it to [Coke] when he turns up, perhaps he knows where to place a proper fix
piojo s/non-native/nonsfluent/ 15:09
s/nonsfluent/non-fluent/
Geth doc: 982982d1b0 | (Steve Mynott)++ | doc/Language/faq.pod6
fix doubled more
15:10
Geth doc: a3d65f2c65 | (Jan-Olof Hendig)++ | doc/Programs/01-debugging.pod6
Change headline so that it does not contain the word class and a type

This is a workaround for a problem in which htmlify.p6 can be tripped up when it encounters what looks like a type heading in a file which is not present in the type directory. This will lead to subtitles, i.e. descriptions, going missing on docs.perl6.org/type.html. See irclog.perlgeek.de/perl6/2017-09-24#i_15210015
15:16
dogbert11 The 'Parameters' type suffers from the same problem and the "role" 'auto-punning' shows up on the type page since it is believed to be a type when it really isn't 15:21
dogbert11 also, the following TITLE, "class X<utf8|utf, class>", from doc/Type/utf8.pod6, doesn't sit well with htmlify.p6, which can be seen on the very first line of docs.perl6.org/type.html 15:29
Geth doc: f1321d84f8 | (Steve Mynott)++ | doc/Language/faq.pod6
point all users not just beginners at star, more info about source build
15:42
sprocket hi #perl6 - just wanted to say that i LOVE the NativeCall library - it just saved me so much time and frustration compared to when i was faced with writing binding in C :)
so thank you, NativeCall wizards!
Geth doc: 8952df26d3 | (Steve Mynott)++ | doc/Language/faq.pod6
mention existance of p6doc
15:45
Zoffix \o/ 15:46
Geth doc: 9ba98366d3 | (Steve Mynott)++ | doc/Language/faq.pod6
define CPAN and perldoc for non-perl 5 users
15:56
Geth doc: 90389e3485 | (Steve Mynott)++ | doc/Language/faq.pod6
link cheat sheet
16:00
doc: e8097195f7 | (Jan-Olof Hendig)++ | doc/Type/utf8.pod6
Fix broken TITLE in utf8.pod6
16:11
unclechu hey guys, how i can spawn a process and make it live after my app died? 16:36
in background
Zoffix doesn't know 16:52
timotimo hm, you'll want to read up on "daemonize", right?
teatime yeah... that is a good question...
timotimo there's some kind of trick called "double fork" or something?
but really you'll probably want to rely on some tool ... daemonize? daemon-tools? 16:53
Zoffix Well, this worked :P perl6 -e 'shell qw/perl6 -e '\''loop { sleep 1; say $++}'\'' &/; say "exiting"; ' 16:54
buggable: eco daemon 16:55
buggable Zoffix, Found 2 results: Monitor::Monit, UNIX::Daemonize. See modules.perl6.org/s/daemon
Zoffix buggable: eco daemonize
buggable Zoffix, UNIX::Daemonize 'configurable daemonizing tool written in Perl 6': github.com/hipek8/p6-UNIX-Daemonize
unclechu timotimo: not that kind of daemonize, i'm just writing simple utility, i don't want to overcomplicate it
unclechu i want to just run some gui application and die 16:55
Zoffix shell q/some-gui-application &/; 16:58
HoboWithAShotgun greets the assembled genuises by ommiting the mother of all belches
unclechu Zoffix: okay, not the best way i could imagine but at least it works 16:59
teatime unclechu: if you exit your shell, though, will not your gui app die from SIGHUP? 17:00
unclechu answer would be: "perl6 can't do it, but you can delegate it to shell"
Zoffix unclechu: the above module suggests perl6 can do :) You'd just use a module that wraps the gnarly bits for you :) 17:01
unclechu teatime: no, but i think it depends on application
Zoffix m: use NativeCall; sub fork returns int32 is native {}; fork() and exit; loop { say $++; sleep 1 } 17:04
camelia 0
Zoffix This also works.
Zoffix has no idea what the double-fork trick is about. 17:05
teatime one optional means of disassociating oneself from a controlling terminal, I think 17:06
man, I used to think I knew how the unix process model worked. either I never did, or I forgot a lot. 17:07
Zoffix Ah 17:08
ugexe teatime: there is a libuv flag when spawning processes for making it detached 17:10
teatime is perl6 using libuv? 17:12
moritz yes
teatime I guess I should say, is rakudo
MasterDuke rakudo on MoarVM and JS is 17:13
unclechu hey guys, i'm confused about how i should declare explicit imports from external modules? how should i import only specific subroutine? 17:15
moritz a module can tag exports (sub foo is export(:bar, :baz) { }); then the use can import only certain tags (use MyModule :baz;) 17:21
unclechu moritz: so, there is no way to explicitly import exported subroutine if it isn't tagged by developer? 17:22
MasterDuke tbrowder++ has a blog post about exporting/importing blogs.perl.org/users/tom_browdef/20...erl-6.html
timotimo .o( how hard could it be to implement ) 17:23
unclechu Zoffix: i just tried UNIX::Daemonize, it isn't really detaching process, it's just forking my app and then keeps this fork alive while child application is alive, and this fork eats about 60MiB of my RAM, not cool, i see only raising shell for that is appropriate for me 17:24
Zoffix Too bad. 17:41
What's the difference between `need` and `use`? 17:45
Zoffix the docs mention `use` is like `need + import` but `need` on its own seems to import symbols, so why is import also needed? 17:47
Zoffix unclechu: there's a way to do it at runtime but the compile time is still on the drawing board, it looks like: rt.perl.org/Ticket/Display.html?id...et-history 17:48
m: require Test <&ok>; ok 42; # runtime being this 17:49
camelia ok 1 -
Zoffix Oh, wait, `need` doesn't import anything. I may have been using `-MFoo` in my test 17:50
Zoffix m: need Test; my &ok = &Test::EXPORT::DEFAULT::ok; ok 42 17:52
camelia ok 1 -
unclechu Zoffix: `need` works kinda `import qualified` in haskell, am i right?
Zoffix I guess that's another way.
Zoffix unclechu: I don't know Haskell. But the "qualified" stuff just passes positional args to sub EXPORT and named args are treated as tags, so it's all dependant on the author of the module. The ticket I linked to proposes reserving :ONLY tag and if it's specified to only import those symbols 17:53
:ONLY<&foo $meow> should be easy enough to implement. Just need to add handling here, I think: github.com/rakudo/rakudo/blob/ebd6...#L845-L897 18:00
Though maybe instead of :ONLY do :SYMBOLS and exclude :MANDATORY from the list if it's provided but include any other tags that are given 18:01
:SYM even
Zoffix is too lazy to do this 18:02
I mean… buzy… :)
Need to do 6.d prep
m: say Date.new('2017-12-25') - Date.today 18:03
camelia 92
Zoffix .in 91d what's happening with the :SYM<> import, bruh? irclog.perlgeek.de/perl6/2017-09-24#i_15210457 18:04
yoleaux Zoffix: I'll remind you on 24 Dec 2017 18:04Z
Zoffix q/and exclude :MANDATORY from the list if it's provided/ <-- I meant don't implictly include it. If the user provided it on the tags list, then do include it. 18:12
unclechu Zoffix: i realized i could do explicit import this way: `require UNIX::Daemonize <&daemonize>;` 18:32
Zoffix Yeah, that'll work. Though it's runtime, not compile time 18:58
japhb . 19:02
yoleaux 08:06Z <Zoffix> japhb: a terminal input should be listed here: docs.perl6.org/type/IO::Handle#routine_getc However, what you linked to doesn't appear to have any documentation (at least one that talks about disabling buffering), so linking to it would just add more confusion.
08:07Z <Zoffix> japhb: *terminal input module I meant
japhb Zoffix: I don't understand your complaint about documentation. People ask how to get individual keystrokes from the user. That code is how. If they want to know the details, they read the code. If they just want it to work, they load the module and call the function. 19:05
Zoffix rolls eyes 19:06
japhb If you're saying we should document the details of how to do that on different operating systems, that's a reasonable point -- but are we doing OS-specific docs on doc.perl6.org?
Zoffix A module without documentation is not a module. It's just a bundle of code.
I wasn't complaing about it. I was responding to your "Pretty please point people with the terminal input question to". 19:07
japhb Zoffix: That module is better than all the people that say something like "I'm not sure. Something to do with termios? And input buffering?" Nobody should be told to look at termios docs. They should just be given working code as a better-than-nothing-until-docs-are-written answer. 19:09
If we always waited until things were perfect before pointing people at the working-but-not-perfect thing, we'd be doing people a disservice.
Also, that code has proper variable names, it has explanatory comments, it has a .WHY ... and it's less than 50 lines. I'm not sure it's as bad as you're making it out to be. 19:11
Zoffix japhb: but you only say that because you used that code and know what it's about. It's 300 lines of code. I know the language well and I still don't know what you want me to look at there. 19:14
Zoffix How hard is it to write proper documentation? 19:15
Zoffix It's not code meant for users. There's no support offered for it. So I'm not gonna suggest people use it. 19:22
Zoffix &
epony Zoffix Even if code is the end produce that users consume, documentation is integral part of it, otherwise it's nothing. 19:24
Morfent going back to undocumented code i wrote years ago and having no clue what's going on is fun
epony Sometimes it's only documentation that helps diagnose and fix the original intent. 19:25
Without documentation it's nothing, just scribbles with no maintenance and no reason to look at.
:-) Literate documentation 19:26
(reproducible)
I'd go even further as to apply standards as the succession to documentation and the essence to reproduce back the documentation and software. But don't try apply this strictness everywhere, it does not apply to projects at design stage (unless they really are ambitious and intend to complete historically significant objectives). 19:30
Geth doc/master: 4 commits pushed by (Will "Coke" Coleda)++ 19:39
[Coke] japhb: one annoyance, all the subs are foo_bar instead of foo-bar 19:41
Morfent idk i wouldn't try to treat documentation like code 19:42
different writing styles and all
japhb Zoffix: Do you consider examples to be documentation? Do you consider a sensible API and a .signature that makes sense to be documentation? Do you consider proper comments to be documentation? Do you consider proper variable and constant naming to be documentation? Do you consider .WHY to be documentation?
Morfent some general guidelines are fine though
japhb Zoffix: Because if none of those count, then ... it will be a long time before you recommend anything I write, because I do all of those things *before* writing Pod. 19:43
[Coke]: All of mine are kebab-case. What are you referring to? 19:44
japhb I only have a limited amount of keyboard time that my RSI will allow. I spend some of it conversing in these channels (but most regulars will note, not that much and not that often). Of the remaining time, I can either write good code, or good docs. But I basically can't do both. I write in Perl 6 in large part because I can write a lot more functionality in less code, so I can be efficient at that. 19:47
But I put a lot of thought into the code that I do write. And it is insulting to be told that the limited effort I have to give to the Perl 6 community is worthless because my RSI won't let me write long Pod docs. 19:48
[Coke] japhb: in NCurses. 19:49
Zoffix japhb: no. I consider documentation something a user can read for a few minutes and know how to accomplish their task. Usually the SYNOPSIS would even contain copy-pasteable common-case, so those few minutes would be few seconds. There's no sensible API--there's only a collection of routines. In fact, the existing documenation suggests I should not be using the undocumented routines, but only those that are 19:49
japhb [Coke]: Ah, thank you, now your comment makes sense. :-)
Zoffix documented
japhb Zoffix: OK, I understand your view, I think. 19:50
[Coke] also, having never really had to learn curses before, I don't want to have to learn how to use it now for this project either. 19:52
epony no docs - no users, wrists wasted with no use 19:59
thou Hi, I'm trying to fix a bug in YAMLish, and I've shrunk it to a small test case: gist.github.com/softmoth/5a3e34b04...c7d86f617b The bug can be seen by trying to parse a file with just "foo: no good\n". The problem is that "no" is a token and it's not backtracking in token element() to enable the inline-plain routine to match. 20:02
Xliff thou: You should be able to fix that by using quotes. 20:03
thou In my little test case I can change all the methods to "regex" and it still fails unless I change TOP to regex.
Xliff Ala: 'yes' | 'no'
Xliff If I understand this correctly. 20:04
thou Xliff, I don't think that's the issue; it matches fine if it's just "foo: no\n"
Morfent i was wondering what to do for a first project, but i got it 20:05
a utility to strip all comments out of a project
idk i'm short on ideas atm 20:07
thou Xliff: I just checked, quotes don't change behavior here, unfortunately. I'm not sure how to force it to backtrack into the plain() routine after inline() fails. In my gist, it's only the middle string that fails to parse ("no bar").
Geth doc: tbrowder++ created pull request #1579:
PR for new program p6doc info is ready
20:08
Xliff OK. I misunderstood.
unclechu Zoffix: i realized that i can spawn process that will be alive after my app is done by starting this process using Proc::Async instead of just Proc 20:09
unclechu so, it is possible in perl6 20:09
Xliff thou: I just added "foo: no good\n" to the loop in your gist and I can match it just fine. What version of perl6 are you using? 20:12
tbrowder .tell Morfent check existing module Pod::Strip which is supposed to do the same thing
yoleaux tbrowder: I'll pass your message to Morfent.
Morfent oh 20:13
yoleaux 20:12Z <tbrowder> Morfent: check existing module Pod::Strip which is supposed to do the same thing
timotimo maybe it's supposed to strip regular comments, too?
thou Xliff: Yes, my stripped down test is only the bit after the colon 20:14
Xliff: "foo: no good" fails with YAMLish itself. "no good" fails with the little grammar I made. 20:15
thou "foo: so good" succeeds w/ YAMLish, likewise "so good" succeeds with my example. 20:16
Xliff: I've filed a bug report, hopefully YAMLish devs are more clever than I at sorting it out. 20:17
github.com/Leont/yamlish/issues/17
tbrowder Morfent: sorry, asleep again, thinking pod comments, not Perl 6 comments... 20:18
but still, there may well be perl comments inside pod comments... 20:19
Zoffix unclechu: that's weird, given Proc uses Proc::Async under the hood 20:20
Zoffix Ah. If you wait long enough for Proc to start up, it works too: start run «perl6 -e "loop \{ sleep 1; say \$++ }"»; sleep 1 20:22
(sleep for this purpose is no good; use Proc::Async :) )
unclechu yep, sleep is too dirty for that 20:23
unclechu Zoffix: i have now this helper pastebin.com/cSAtfaKM 20:29
Geth doc: b140908fa9 | (Tom Browder)++ | doc/Programs/02-reading-docs.pod6
PR for new program p6doc info is ready
20:35
doc: 2c866a2f96 | (Tom Browder)++ (committed using GitHub Web editor) | doc/Programs/02-reading-docs.pod6
Merge pull request #1579 from tbrowder/p6pod

PR for new program p6doc info is ready
Morfent is .pm or .pm6 the typical convention for how you name perl module files? 20:36
timotimo i use .pm6 20:37
unclechu i use `.pl6` 20:38
Geth doc: ee22b967b3 | (Tom Browder)++ (committed using GitHub Web editor) | doc/Programs/02-reading-docs.pod6
correct typo
20:40
jdv79 what if i just want the first line out of a supply? is there a better way than .lines.tap,(get one line),tap.close? 20:59
timotimo isn't there a .head method? 21:01
timotimo yup, there is. it should do what you want 21:01
jdv79: ^ 21:02
jdv79 thanks 21:03
tbrowder .tell stmuk please check the docs (Programs | Reading the docs | p6doc - the Perl 6 pod reader) and see if the blurb needs changes 21:07
yoleaux tbrowder: I'll pass your message to stmuk.
tbrowder p6doc isn't indexed...will fix 21:08
Geth doc: e1a42aba75 | (Tom Browder)++ (committed using GitHub Web editor) | doc/Programs/02-reading-docs.pod6
need an indexing header
21:13
travis-ci Doc build failed. Tom Browder 'need an indexing header' 21:29
travis-ci.org/perl6/doc/builds/279302339 github.com/perl6/doc/compare/ee22b...a42aba75bd
buggable [travis build above] ☠ Did not recognize some failures. Check results manually. 21:29
thou Morfent: For fun I checked ecosystem-api.p6c.org/projects.json, and for files listed in "provides" there are 2,543 ".pm6" and 788 ".pm". There are no ".pl6".
Morfent ah 21:41
i'll go with .pm6 then
thanks
rngoodn Is it possible to get one of the stuffed Camelia's somewhere or did you have to be at a conference or something like that to get one? 21:42
lizmat rngoodn: we usually only sell them at Perl / open source events 22:07
rngoodn lizmat: Ok, thanks. 22:09
lizmat next events: Amsterdam.pm meeting on 3 Oct, 7 Nov, NR.PM (in Cologne) on 19 Oct, 16 Nov
London Perl Workshop
emergency social in Bruxelles on 6 Oct 22:10
rngoodn: so where would you need one ?
jdv79 where is say implmented?
method say in Mu is say(self)
lizmat src/core/io_operators I believe 22:11
jdv79 oh
lizmat or do you mean .say ? 22:11
that would IO::Handle 22:12
jdv79 so there's no IO::Socket.Async.say() then
even though its inherited from Mu and that prints to stdout
seems very weird
rngoodn lizmat: I live in Albuquerque, NM and am just a CS student learning the language as a hobby. Thought it would be cool to own one if they were available for purchase online somewhere.
lizmat well, maybe we should make them available for purchase online :-) 22:13
lemme discuss that with woolfy 22:14
please ping me again in about 18 hours or so
time for me to hit the sack now :-) 22:15
afk&
rngoodn lizmat: Will do. Thanks!
kyan Why's Grammar::Tracer sometimes give output with lots of extra spacers at the beginning? 23:35
E.g., one parse in my test suite has as its first line: "| | | | | | | | | | | | | | | | | | TOP"
I wonder if it's because there are a couple of tests that deliberately throw exceptions previously in the program — maybe the indentation level isn't reset correctly after an exception is thrown? 23:36
AlexDaniel kyan: do you have some code to reproduce the issue? I'd like to play with it
kyan AlexDaniel: I don't have a minimal test case, but I can put one together in a few 23:37
kyan Hm, well, my hypothesis about exceptions isn't the cause 23:41
kyan I've gotten it down to a specific pair of tests that are triggering it, now to pair down the grammar to the minimum... 23:50
kyan AlexDaniel: I haven't really been able to pare down the grammar that much, but: gist.github.com/ethus3h/26a84e752c...87d186c465 23:55
kyan It does seem like some exceptions are causing it to act up, after all 23:56
timotimo kyan: i know where to point you 23:59