timotimo you know 00:02
we can totally steal lots of python libraries
and just replace the Py in their names with P6
P6glet, P6Game, P6Qt, ...
P6Plot :P
not sure what other modules are fame 00:05
samcv hehehe 00:06
steal their fame?
timotimo well, not really 00:07
we're not taking away from them
just getting ourselves inspired by how API could be done 00:09
and of course also seeing what couldbe done nicer when you have what perl6 has
i wonder if it'd make sense to build a module that works very much like requests, for example 00:10
okay, should get bed-ready, else lseep won't be so restful 00:14
RESTful :P
samcv heh. night! 00:27
01:49 ilbot3 joined
samcv timotimo, btw idk why you allowed failure on coverage branch. it won't fail for pull requests i planned for this :) 02:46
it also won't fail either if you fork moarvm and build travisci on another repo
if [ "$TRAVIS_REPO_SLUG" != 'MoarVM/MoarVM' ]; plus also if [ "$TRAVIS_PULL_REQUEST" != "false" ] || [ "$TRAVIS_BRANCH" != "$TARGET_BRANCH" ]; 02:47
or it should. hold on 02:48
ah ok. i will fix this 02:49
Geth MoarVM: samcv++ created pull request #583:
Make sure that coverage Travis CI executes normally except for uploading
02:56
05:21 geekosaur joined
samcv ugh fucking travis 08:00
08:19 Sylvain31 joined
Sylvain31 Hi, I'new to perl6 related stuff, is MoarVM a kind of base on top of which you can build any programming language? I mean with a syntax different of Perl6 or NQP? Does it offers debugger primitive or mechanism? 08:24
samcv hey Sylvain31 08:52
MoarVM is written in C, not in NQP or in perl 6
it is the base on which nqp and on which perl6 run 08:53
but you could use it to build another programming language for sure
but people have created new languages using perl 6 grammars, and using the perl 6 engine to create their own languages with different syntax. but you could effectively create another language seperate from perl 6 that complies into MoarVM bytecode and runs on MVM 08:56
Sylvain31 samcv: thanks. Do you have some examples? 09:02
samcv are you interested in creating a language and playing with that?
higher level language creation that is
Sylvain31 samcv: It a long time passion, parsing, lexer, and such. I play with it recusively ;) 09:03
samcv oh cool
have you read yet about perl 6's grammars? 09:04
there was a talk at fosdem fosdem.org/2017/schedule/event/informal_dsl/ 09:07
which was good
Sylvain31 I'm looking for a language for devOps, with light syntax. I experienced jinja hack in saltstack, quite awfullā€¦ I'm discoreving perl6 because I'm comparing a bunch of languages engine: bash, perl, ruby, lua, v8. I've not particular strong gloal, just for fun. I also discovered fugue with ludwigā€¦
samcv there's this modules.perl6.org/dist/007
ah
well perl 6 is very fun!
argh is the perl 6 docs site search not working... argh 09:08
well here docs.perl6.org/language/grammar_tutorial
if you like parsing that will be fun
and perl 6 parses itself 09:09
so it uses grammar to parse the source files
Sylvain31 samcv: I only watched some video since 3 days, I fell it with a lot of punctationā€¦ I need to learn more.
I saw that perl6 has an grammar engine embedded, I'm also searching that too. 09:10
samcv but that talk i linked above. talks about creating domain specific languages using perl 6
Sylvain31 Hi, I'new to perl6 related stuff, is MoarVM a kind of base on top of which you can build any programming language? I mean with a syntax different of Perl6 or NQP? Does it offers debugger primitive or mechanism?
samcv and that grammar page is an alright tutorial on grammars 09:11
it's a virtual machine
you can program in nqp. or perl 6. but moarvm is like the rock
it is programmed in C. and mostly just meant to be used to interpret moarvm bytecode. which as of today only nqp and perl 6 are compilers for MoarVM 09:12
Model on A Runtime Virtual Machine (MoarVM
so it has basic objects, but perl 6 and nqp add their own abstractions on top of the moarvm type object's. 09:13
like how java runs on the JVM
perl 6 runs on moarvm (though it also does run on the jvm, but it has less features and is slower to start and doesn't have several things) 09:14
Sylvain31, as for a debugger. we usually use gdb for debugging moarvm level things though there's something in the works to enable printing moarvm objects to screen 09:15
as well as just debugging it as you would normal c code
Sylvain31 debugger I mean debugging the top language runing in the VM. 09:16
samcv ah
ok
well there's a grammar debugger module. and uhm. i thought there was some perl6-debugger program but been like ages since i used it 09:17
perl 6 error messages are usually pretty good.
github.com/jnthn/grammar-debugger here is the grammar debugger 09:18
Sylvain31 error messages aren't sufficient to trace a program behavior. Often programmer use print statement altering the code, because They don't know debugger, or it is not convinient to use. I 'm in favor to have the debugger at first. The debugger just brings you to the error step by step when you know how to use it. But I'm not here to debat on debugger or not. Is it the goal of the VM to provide debugging 09:22
behavior break point or such?
samcv yeah
i don't think we have that, though jnthn might know better our status on that 09:23
you should ask in #perl6
there's many more people in that room, than in this which mosly just has people on the moarvm dev team and people fairly involved in the community. cause vm's are boring or whatever myabe ;) idk 09:24
Sylvain31 I'm found this post: 6guts.wordpress.com/2013/05/31/moa...nd-rakudo/
which seems to explain some goals, quite old thought. 09:25
samcv yep that seems about right
but you can set break points in the virtual machine code. but that's not super useful when you're writing higher level perl 6 code. unless you want to see the actual functions going on inside the vm or you are a developer (i'm on the team) 09:26
but nqp and perl6 are bootstrapping compilers for moarvm and jvm 09:27
Sylvain31 I'm a sysadmin devOps, I'm used with invisible stuff that seems /boring or whatever/ ;)
samcv parrot is basically totally gone. and moarvm is the premier vm, and jvm is second tier
heh
Sylvain31 Thanks confirming, I had the feeling that parrot also gone away. But I'm not following especialy, so I'm discoveringā€¦ I first installed my perl6 rakudo on Friday or Saturday, cool to see something special raised outā€¦ :) I still don't know what NQP is really. 09:32
I'm interested if you have some minimal example, that could show me how a minimal language can run on top of MoarVM? 09:34
samcv heh nqp is like a basic perl 6 without fancy concurrency features, and many nqp functions are 1:1 mappings to MoarVM functions 09:36
i would say most of them
so that is why it exists
uh i do not
well nqp is the simplest example
then there's perl 6 which is more complex
Sylvain31, also if you are hungry to learn the internals github.com/edumentab/rakudo-and-nq...als-course 09:37
Sylvain31 Thanks, seems great! 09:40
samcv i recently got coverage reports continuously created for the nqp test suite on Moarvm's code. which is fun
we have mostly accurate coverage for perl6 (rakudo's) code for the roast test suite for the perl 6 language perl6.wtf/ 09:41
moarvm.github.io/coverage/ but i got this up and running and Travis CI pushing it to github pages after each commit to moarvm. which is pretty nice
moarvm has very high level of unicode support 09:42
reminds me i need to write a chapter on that for somebody's perl 6 book
Sylvain31 I saw a Larry Wall video introducing perl6
samcv how old was it.
Sylvain31 which seems to eat UTF8Ā verry well, ;) 09:43
samcv was that around the time of perl 6 being declared stable?
might be interested on my blog post i recently made cry.nu/perl6/indexing-unicode-things/
at least i think it's exciting :X
but at least even people unexcited by it still get their case insensitive regex 1.8-3x faster 09:44
Sylvain31 www.youtube.com/watch?v=BJIfPFpaMRI with a Vim pres, very interesting ;)
samcv the end of the world!
samcv panics
samcv backs up perl 6 and sends into a space capsule for aliens to find
but uhm i have several fun blog posts on some neat things in perl 6 09:45
creating custom operators: cry.nu/perl6/creating-your-own-ope...in-perl-6/
and here's part one of two parts on a intro to how multithreading in perl 6 works cry.nu/perl6/multithreading-in-perl6/
and some of the concurrency features and promises
Sylvain31 cool. You gave me enough material to make a fest. I will prepare my offline read, when traveling this week. Thanks a lot. 09:47
you need to have a fun keyboard layout to introduce those lovely UTF8 chars? 09:49
samcv i use my compose key 09:50
are you on linux?
if so here's my XCompose file github.com/samcv/dot-files/blob/ma.../.XCompose 09:51
but ā€œyeahā€ it's nice to have it Ā§o Ā¢ā„“oƟe on the keyboard
m: say ļ½¢look ma no \escaping!\\\\ļ½£ 09:52
camelia look ma no \escaping!\\\\
samcv which is the same as Q[blah] or Q whatever delimiter you want to use. any brackets that are matched or quotation marks that are matched really 09:53
Sylvain31 I currently use bƩpo layout on linux, but my vim is so blasted, I will fall back to qwerty US international during the next 2 months.
samcv or q does escaping as done by ' ' and qq does "" type escaping. but Q quoting is nice
blasted? 09:54
but āˆ‹ set operators work in perl 6 for Set or Setty objects
Sylvain31 bepo.fr/wiki/Accueil I miss hjkl :~( 09:56
samcv: thanks a lot. I will read and test all that. I leave. have a nice day. 09:59
samcv cool :) glad to help 10:04
timotimo samcv: there's even some example langs in the nqp repository 10:05
samcv oh?
how are you timotimo :)
timotimo okay, there is *one* example lang :)
and i have no idea if it actually runs
Geth MoarVM: b7ce36de28 | (Samantha McVey)++ | .travis.yml
Make sure that coverage Travis CI executes normally except for uploading

Make sure that the MoarVM options still are set and built properly, but as before, it does not try and decrypt the key and other such things that only should happen on non-Pull-Requests and when it's in MoarVM/MoarVM.
10:06
MoarVM: 32b8c547f7 | (Samantha McVey)++ (committed using GitHub Web editor) | .travis.yml
Merge pull request #583 from samcv/pull-request-coverage

Make sure that coverage Travis CI executes normally except for uploading
samcv much better. no more failures here
made the .travis.yml more tidy too
timotimo nice.
samcv made it all just one multi line key github.com/MoarVM/MoarVM/commit/b7...fa651f6394 10:10
err it's a muli line value not a multi line key. but i couldn't figure out how to have more than one value for a key, if any of them is a multi line one 10:11
cause i don't think there's any way to end them other than starting a new key.
timotimo could very well be
yml is ... magicaly
samcv it is weird 10:12
at least json i know all the rules
but yaml is nicer to not have to escape things like crazy. but would be better if it had heredocs
timotimo yeah, the flow stuff is heredoc-like, but at the same time it's not
and yeah, perl6-debug-m is currently busted, potentially due to recent slang api changes 10:16
huh. i wonder if i accidentally threw out my telemeh analysis script 10:17
nope, there it is
samcv yay 10:19
timotimo it's not actually useful, the script 10:21
samcv oh 10:23
Geth MoarVM: c767f49124 | (Samantha McVey)++ | .travis.yml
[travis] echo and identify the beginning of different stages of build
MoarVM: 315601d131 | (Samantha McVey)++ | .travis.yml
[travis] make indentation consistent
MoarVM: ad99a1e876 | (Samantha McVey)++ | .editorconfig
Add .editorconfig file to set indentation usage of files
timotimo i had a neat idea for said script, but it can't be done as magically as i had hoped 10:30
gist.github.com/timo/42cce4904647f...c7d29dfe5a - see the StatsAbsorber class? that's what i came up with and i thought it was pretty cool
but on its own it's not as useful as i had hoped 10:31
10:36 Ven joined
samcv oh hmm 10:37
it gets written to how? stdin?
hm
timotimo what is? 10:38
samcv err reads 10:42
sorry
the telemeh gist
timotimo it takes a filename, it defaults to stdin 10:44
samcv k 10:45
timotimo it gives you a few different percentiles of start time, for example 10:47
which ... wow, that's so useful
holy shit fraser are you serious 10:52
erinnerst du dich an die kurbel direkt wenn man rein kommt?
moritz timotimo: wrong channel?
timotimo hah, yeah
samcv i don't remember 10:53
so is yoru script useful or something totally unrelated
timotimo well, at least it gets the printed data back into a datastructure you could use 10:54
Geth MoarVM: 8d5d0362b7 | (Jonathan Worthington)++ | src/io/syncstream.c
Mark thread GC blocked when doing sync writes.
12:24
jnthn Turns out there was some way to get a deadlock 12:25
dogbert17 jnthn: are you finding all these problems while writing $work code? 12:31
jnthn This one came from $work code, and the FSA performance issue affected it also 12:32
dogbert17 cool
is the $work code still hitting any bugs or have you managed to squash them all? 12:34
jnthn Well, certainly the majority of bugs these days aren't Moar/Rakudo's fault :) 12:35
The current one I'm hunting could turn out to be anywhere 12:36
dogbert17 yeah, stability has improved greatly the last few months 12:37
interesting, what is it?
12:38 zakharyas joined
jnthn It's...odd 12:38
Hm, slurping a large file is giving an empty Buf 12:40
timotimo that's a good starting point, then. completely empty? 12:41
jnthn Yes, but if I just write a one-liner at the command line to slurp it up...works out totally fine
timotimo wouldn't make too much sense, but what if you activate an eventloop thread, or just put an empty start at the beginning? 12:42
how big is the file you're talking about?
jnthn 100MB or so 12:43
If I do it on 10 threads at once it works fine
Having an event loop thread running makes no difference 12:44
dogbert17 could it be some kind of regression relating to Zoffix++ io work? 12:46
Zoffix jnthn: using $_ here like this is safe, is it? github.com/rakudo/rakudo/blob/nom/...th.pm#L594
I mean just using $_ := instead of creating a new variabl
jnthn Should be 12:47
Interesting to note that if I don't slurp $filename, :bin and instead do open/.slurp(:bin)/.close it works
Zoffix oh, that narrows down the issue :} 12:48
jnthn: how can I repro the problem?
jnthn: can you change IO::Path.slurp to this version and see if you still have the bug? gist.github.com/zoffixznet/4d20494...e28f634ab7 12:50
Replace this code with the gist's version: github.com/rakudo/rakudo/blob/nom/...#L577-L619
jnthn Still trying to get a repro that doesn't involve a thousands of lines app wiht thousands more lines of deps
Also I'm not at HEAD 'cus of YAMLish bustage earlier
But I've seen this kind of problem happening before, only just now getting to investigating
oh wow 12:51
It only happens if you've got a thread busily at work in the background o.O
OK, can even get it to happen occasinally with a smaller file 12:53
perl6-m -e 'start { my $i; for ^100000000 { $i++ } }; await (start { slurp("/usr/share/dict/words", :bin).elems.say } xx 50)'
Run that. It occasionally spits out a zero
timotimo yeah, multiple zeroes there 12:54
interesting 12:55
telemetry log says it reads 4b9650 bytes every time
jnthn d'oh 12:56
See MVM_io_read_bytes
dogbert17 uh oh
jnthn Anyone spot the bug?
timotimo acquires mutex, but doesn't set thread blocked? 12:58
Zoffix <jnthn> Interesting to note that if I don't slurp $filename, :bin and instead do open/.slurp(:bin)/.close it works 12:59
Doesn't work for me.
It should be .open(:bin)/.slurp/.close tho
jnthn Zoffix: That maybe just hid the issue 13:00
Zoffix jnthn: so what's the bug in MVM_io_read_bytes? :)
jnthn timotimo: That, but that's a deadlock rather than a data loss 13:01
timotimo OH!
ssize = bytes_read
that's ... quite something
Zoffix I'm guessing the '((MVMArray *)result)' stuff at end
Zoffix has no idea what any of that code means
timotimo no, that's not the individual size of elements 13:02
jnthn It's that we can allocate inside of reading
But result isn't anchored
So can move
timotimo ah, missing root, then
jnthn Right
timotimo so we store the data into a different object
jnthn Thus why another hard-working thread in the background shows it up
Because it causes GC
Zoffix Ah :) 13:03
timotimo yeah i absolutely didn't see that
dogbert17 Nice find
jnthn Though yeah, the whole mechanism is a bit deadlock-vulnerable because of that mutex acquisition
timotimo and just before the release, too <3
jnthn So I should harden those too
timotimo yeah
jnthn but yep, no zeros now 13:04
Zoffix \o/ 13:05
timotimo hm. we could totally mark all of the old generation as unadressable with valgrind macros
when the gc is done with it, i mean
that would have made the assignment to the .slots.u8 explode in valgrind 13:06
jnthn yeah
timotimo only if gc happened in the mean time, but that's provokable with smaller nursery size
doesn't require multithreading then
... i don't think, at least
Geth MoarVM: 34d5a46e0d | (Jonathan Worthington)++ | src/io/io.c
Add missing MVMROOT when reading bytes.

This could occasionally lead to loss of the data being read, and was most likely to crop up when reading a large file in a program with a bunch of threads that were doing work, thus causing GC more often.
13:07
dogbert17 jnthn: count RT #129882 be related?
synopsebot6 Link: rt.perl.org/rt3/Public/Bug/Display...?id=129882
dogbert17 s/count/could/ 13:08
jnthn No, I think that's just the "can't share a handle between threads" issue 13:09
dogbert17 ah :( was looking around in RT to see if your fix might close a bug or two 13:10
ok, could there be other routines in 'src/io/io.c' which does similar things? 13:15
i.e. other functions which might run into the same problem as MVM_io_read_bytes 13:17
jnthn Potentially, yeah
I need to give the whole thing I closer look at some point
Though need to focus on $dayjob project for now
dogbert17 perhaps you $dayjob code works perfectly now 13:18
jnthn Well, *that* part does
There are more issues I need to fix though :) 13:19
(None of which are Moar/Rakudo's fault)
13:19 MasterDuke_ joined
dogbert17 more like thinkos perhaps 13:21
jnthn In one case, just something that wasn't considered :) 13:22
MasterDuke_ a bunch of the other read_* functions in io.c look like read_bytes before your fix. e.g., read_(bytes|chars)_async 13:25
jnthn The async ones don't call stuff that does I/O though, they're callbacks 13:26
MasterDuke_ ah. and i do see that the read_bytes in src/io/asyncsocket.c has MVMROOTs in it 13:29
`use nqp; start { my $i; for ^1000000000 { $i++ } }; await (start { my $f := nqp::open("1k.txt", "r"); nqp::setinputlinesep($f, "a"); nqp::readlinefh($f).chars.say } xx 500)` sometimes finishes instantly, sometimes it just pauses and chews up all 8 cores 14:24
jnthn Yeah, that's the possible deadlock I mentioned earlier 14:26
MasterDuke_ ah. and that's fixed by setting the thread blocked? 14:28
timotimo could it be that simple ... 14:38
marking a thread blocked means others will do GC for it 14:39
because it doesn't know if it can reach a GC-safe-spot
jnthn It's "that simple", it's just that this also means GC can occur at the block point 14:49
So more MVMROOT will be needed
timotimo jnthn: any reason to keep telemetry out of the release we'll make today-ish? 14:53
MasterDuke_ well i have no idea what i'm doing, but putting `MVM_gc_mark_thread_blocked(tc);` and `MVM_gc_mark_thread_unblocked(tc);` around github.com/MoarVM/MoarVM/blob/mast...#L146-L148 just gave me a MVM_panic 15:01
timotimo what kind of panic was that? 15:03
MasterDuke_ `MoarVM panic: Invalid GC status observed while blocking thread; aborting` 15:05
timotimo oh interesting
it doesn't output what the status is, though?
i suggest putting a breakpoint in MVM_panic and outputting the value it checks against 15:06
to see what might be up
MasterDuke_ nope, that just happens immediately
let me give that a try
timotimo right, we already read bytes during startup i bet
loading modules and such perhaps? 15:07
MasterDuke_ brake/broke/whatever at MVM_panic. what should i print? 15:08
timotimo what does "up" "list" look like? 15:09
MasterDuke_ gist.github.com/MasterDuke17/1f8c1...0d34ae63ee 15:10
which i think is from src/gc/orchestrate.c:276
15:12 dogbert2 joined
timotimo aha 15:13
the thread was already marked blocked when your code tried to block it
that's unacceptable
yeah
MMV_io_readline calls read_line calls read_to_buffer 15:14
MVM_io_readline is the one you just added blocking to
MasterDuke_ yep 15:15
timotimo read_to_buffer has always marked the thread blocked
MasterDuke_ ah. any idea what else to try then? 15:17
timotimo not sure 15:19
MasterDuke_ and btw, does anyone else find it annoying that perl6-gdb-m has `--ex=run` in it? i always end up calling gdb directly, or editing perl6-gdb-m to remove it
timotimo nah, i just ctrl-c when it starts
also, maybe the block and unblock belongs only around the lock acquisition 15:28
not before lock acquisition and after lock release
15:47 lizmat joined
MasterDuke_ doesn't panic, but still hangs 15:50
15:52 dogbert17 joined 17:02 domidumont joined 17:27 zakharyas joined
timotimo i'm far too distracted here to even look into the deadlock thing 18:50
MasterDuke_ cat got your hands? 18:51
timotimo watching my friend play persona 5, but in addition to that, cats 19:01
t.h8.lv/cats_on_laptop.jpg - not from today, but it generally looks like that 19:02
samcv hello 19:03
timotimo hello samcv
samcv nice cats
timotimo pups have the benefit of not climbing onto your desk in front of you :D
samcv nope my puppy does that
like
so much
tries to climb on all the tables
and counters
timotimo :D :D
i didn't even know 19:04
samcv i had a dog as a kid, my parents tell me that dog (both golden retreivers) never wanted to climb on every sigle damn thing lol
if you leave a chair not pushed into a table she'll climb on the table and just like. chill out there. or if ther's napkins there like try and eat them 19:05
geekosaur doggoats?
timotimo :D 19:06
i've seen multiple examples now on the 'net where dogs have grown up around cats and behave like cats :D
that's really amusing to me 19:07
samcv hah. she isn't growing up around any cats but. idk. she's a quirky one
here is said dog i.imgur.com/Ov6gjuG.jpg
timotimo we had a dog when i was younger, she didn't climb much at all either
we got her when you could easily hold her in two hands, she got a bit over cat-sized when grown up 19:08
Geth MoarVM: f5704b989c | (Jonathan Worthington)++ | docs/ChangeLog
ChangeLog for 2017.04.
20:24
MoarVM: deb9b489aa | (Jonathan Worthington)++ | VERSION
Bump VERSION.
Zoffix \o/ 20:25
Perfect timing.
jnthn Poof weeding of ChangeLog welcome :) 20:26
timotimo looks good 20:30
jnthn Alright, will cut the release shortly 20:31
timotimo and after that i'll merge telemetry, because otherwise it'll be a nightmare to constantly rebase all those intervals into the code :) 20:33
jnthn moarvm.org/releases/MoarVM-2017.04.tar.gz 20:36
Zoffix: ^^
Zoffix jnthn++ thanks
jnthn I'm too tired to do the website update right now, so that can happen tomorrow 20:37
[Coke] jnthn++ 20:39
samcv omg 20:50
version bump
i thought we were in a time loop 20:51
22:11 lizmat joined 23:51 AlexDaniel joined
lizmat and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2017/04/17/...-the-road/ 23:51