travis-ci Rakudo build passed. lizmat 'Merge pull request #846 from Leont/less5 01:19
travis-ci.org/rakudo/rakudo/builds/154996006 github.com/rakudo/rakudo/compare/9...cd84801fbf
dalek kudo/nom: aa1ec6f | (Brock Wilcox)++ | / (2 files):
Dissallow control commands (next, return, etc) in toplevel REPL

  * Catch control usage and show error
  * Switch to instance attributes for out-of-band control values
  * Merge partial-eval and repl-eval to simplify
  * Add to repl tests
01:36
kudo/nom: dc83730 | hoelzro++ | / (2 files):
Merge pull request #847 from awwaiid/repl-no-last

Dissallow control commands (next, return, etc) in toplevel REPL 3113465 | (Brock Wilcox)++ | src/core/REPL.pm: Temporarily skip REPL completions for jvm
travis-ci Rakudo build passed. Stefan Seifert 'Make Distribution::Path handle native libraries correctly 02:55
travis-ci.org/rakudo/rakudo/builds/155064619 github.com/rakudo/rakudo/compare/9...e6ecbfca26
Rakudo build passed. Elizabeth Mattijsen 'Fix RT #127803 03:42
travis-ci.org/rakudo/rakudo/builds/155083163 github.com/rakudo/rakudo/compare/6...a2ba77d438
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127803
lizmat good *, #perl6-dev 04:14
seems like ./perl6-m --profile -Ilib t/harness6 --fudge --tests-from-file=t/spectest.data will reliably segfault withing 20 seconds :-(
I guess no profile of prove6 anytime soon :-(
kudo/nom: 74a445a | lizmat++ | src/core/REPL.pm:
Merge pull request #848 from awwaiid/repl-jvm-no-completions

Temporarily skip REPL completions for jvm
kudo/nom: 508192f | lizmat++ | src/core/REPL.pm:
Abstract the resetting logic into a sub
05:35
[TuxCM] This is Rakudo version 2016.08.1-32-g508192f built on MoarVM version 2016.08 06:11
csv-ip5xs 10.046
test 15.299
test-t 7.307
csv-parser 16.346
jnthn lizmat: The SEGV is in some ways the least of the problems. The next one up is that the profiler UI doesn't know how to present data collected from multiple threads so would only give the data from the first one... 08:37
lizmat ah, ok :-( 08:38
nine jnthn: I'm quite sure now that ab6tract's double free crash is because of multiple threads trying to MVM_string_flatten the same string constant concurrently during creation of hashes. 08:40
jnthn Yeah, that function needs to become immutable really
ab6tract o/ :) 08:41
consolidating the discussion :)
nine ETOOMANYCHANNELS :)
lizmat gist.github.com/lizmat/1b3c946ae91...025abb019f # where does my $a live in the REPL??? 09:14
jnthn: if I want to know the encoding of a $PIO, how do I get that ? 10:42
jnthn um 10:45
Not sure if you want, you'd need to keep track of it in the Perl 6 level handle, Ithink
*not sure if you can
gah :)
lizmat ok, because: 10:51
(open "foo", :bin).comb
currently gives a Seq of str 10:52
jnthn Arguably it should give an error :)
I think we kinda let you pretend things opened with :bin can be read as strings though :S 10:53
dalek kudo/nom: 87887da | lizmat++ | src/core/IO/Handle.pm:
Make IO::Handle.encoding actually work

So now you can query the encoding of an IO::Handle. It will return
  "bin" if you specified :bin when opening the handle.
12:01
cygx o/ 12:09
jnthn, lizmat: regarding :bin, cf github.com/rakudo/rakudo/pull/645 and github.com/MoarVM/MoarVM/pull/319
the former was a sort of 'minimal viable product' that uses latin1 to fake proper binary handling 12:10
lizmat hmmm... krunen might be interested in that as well 12:20
cygx: thanks for the reminder 12:21
jnthn This stuff is sorta on my radar 12:24
lizmat jnthn: how do you feel about mixing in a Binary role into IO::Handle to signify binaryness of the handle ?
krunen cygx, lizmat: yeah, $fh.read(1)[0] is not very elegant...
jnthn As discussed yesterday in #moarvm, it's kinda reached the point where a bunch of I/O stuff needs attention
cygx krunen: it was more about the interface, not the implementation 12:25
jnthn And we'll likely pull nearly all string-based I/O ops out.
cygx the idea was to allow read/write/seek on any handle (which necessitates invalidating the decode stream)
jnthn And expose the VM-based decoding stuff for some common encodings
cygx passing :bin would additionally make .getc/.get/... return bytes/blobs instead of strings
dalek kudo/nom: 1a03efe | lizmat++ | src/core/IO/Handle.pm:
Temporary fix for .comb/.split on binary handles

Make it die for now while jnthn / cygx / krunen work out a better way to handle all of this.
12:26
jnthn So essentially MoarVM will just provide binary I/O and we'll pass bytes off to the decoder up at Perl 6 level
Note that this should make it *easier* for more folks to contribute since we'll be doing more of it in Perl 6 :)
lizmat so, please revert the last 2 commits: I see them as stopgaps only 12:27
jnthn A few things are pushing us in this direction. One is the utter fragility of the error handling in async I/O with strings today.
The other is that it'll be much easier to replace libuv for sync stuff - fixing the longstanding problems using sync file handles and sockets between threads - when we only have binary I/O to worry about down in the VM. 12:28
The other goal along with this is to have an encoding/decoding API that others can implement in modules, so that you can use other encodings besides the bundled ones with Perl 6 I/O. 12:29
krunen jnthn, by some wierd coincidence I just suggested a similar thing to lizmat a few minutes ago... 12:30
jnthn Also, having streaming decoders handy and uncoupled from I/O will be nice for implementing streaming protocol stuff, e.g. in HTTP where the headers come in and you want to treat them as ASCII or latin-1, but then decode the body bit by bit as it arrives using something else.
cygx krunen: well, it is kind of the sane way to do it ;) 12:31
jnthn Pretty much
The I/O ops that we have now basically exist because they reflect what was in Parrot, and it was far, far easier to just making existing stuff work than to go doing yet another big design job in the middle of porting. :)
*to just make 12:32
And then cleaning it up never really got near the top of the priority list before now :)
RabidGravy jnthn, so much that - real hoop of fire jumping in HTTP::UserAgent to achieve that 12:33
(switch decoding methods mid-stream that is)
jnthn fwiw, I already have Moar/NQP/Rakudo branches exploring doing this kind of approach for async socket I/O :) 12:34
(And yes, help is welcome :)) 12:35
krunen I'll help 12:43
jnthn OK. The branches in question for exposing the existing decode stream stuff are expose-decode-stream in MoarVM and NQP 12:45
ShimmerFairy jnthn: if binary decoding is passed off to a higher level, where would "text mode" fit in? Is it something an external module would handle, or could the lower levels provide an "alternate" binary stream of the file opened in text mode? 12:48
(I only ask because I recently ran into a situation where I had to ponder the difference between C-level binary and text modes) 12:49
cygx ShimmerFairy: we don't use C stdio, so as far as we're concerned, there's no such thing 12:52
jnthn cygx++ # more succinct answer than I could come up with :)
ShimmerFairy cygx: really? does libuv or whatever just make up its own assembler-level IO then?
jnthn It just calls the same level of OS APIs that a stdio implementation is done in terms of. 12:54
ShimmerFairy right, "assembler" might have been too specific a word choice :)
jnthn Well, sorta kinda, 'cus libuv is mostly dealing in the async APIs.
cygx throws in the relevant term 'POSIX' 12:55
ShimmerFairy that situation, btw, was handling GNU checksum files, where they come with a mode flag for each listed file. And P6's text mode isn't the same as C's, so it seems like something you'd have to do manually. 12:56
cygx ShimmerFairy: also note that on POSIX systems, text and binary mode are the same 12:58
"The character 'b' shall have no effect, but is allowed for ISO C standard conformance."
ShimmerFairy cygx: exactly. GNU's md5sum-style utils use text mode by default on such systems. (But of course that stupidly introduces a problem with Linux->Windows transfer if you're not careful...) 12:59
cygx: my problem atm is that Windows' text mode is practically undocumented. I know of the transforms, but critically not if it's encoding dependent. That is, is its "\r\n"->"\n" transformation logical or always "\x13\x10" -> "\x10"? 13:00
cygx the winapi supports several text modes (_O_TEXT, _O_WTEXT, _O_U16TEXT, ...) 13:02
not sure how that maps to stdio
ShimmerFairy All I've found is that the newlines are transformed to single "\n" chars for programmer-land, and it treats ^Z as EOF. But that's all I've found so far, there's really not much info on how it works. 13:04
cygx stdio only deals in _O_TEXT and _O_BINARY
_setmode vs _set_fmode
disregard that 13:05
you can pass a ccs=UNICODE/UTF-8/... to fopen
ShimmerFairy not helping matters is that I'm 110% unfamiliar with Windows :P 13:06
cygx apparently, there's binary, text and translated mode 13:13
text mode does CR-LF translation, tranlated mode additionally special-cases CTRL+Z
ShimmerFairy interesting
cygx if unicode IO functions are used, text mode also does unicode-to-multibyte translation
ShimmerFairy cygx: right. I just wish it was better documented for Windows, since I don't what would happen if I tried to open in text mode on an EBCDIC Windows system. I'd hate to have to assume that files are always ASCII-compatible :P 13:18
*don't know 13:19
cygx btw, what's up with the IO role? ALl it does is provide the umask method... 13:22
ShimmerFairy cygx: I find core's roles in general to be nigh-useless, where they could/should be more substantial "interfaces". 13:23
e.g. the Positional role does nothing to guarantee the existence of any of the AT-POS family of methods, which feels like an obvious thing. 13:29
jnthn But that'd be vacuously fulfilled anyway 13:33
Because Any implements AT-POS
hoelzro lizmat: from what I remember, mys from previous lines live in outer contexts 14:07
lizmat hoelzro: well, they don't show up with OUTERS::.keys :-( 14:08
hoelzro =/
hmm...it could be that the context used doesn't live in any pseudo stash available to P6 14:09
it uses this CTXSAVE thing to save the context at the end of parsing each line
and then it passes that saved context to the call that evals the subsequent line 14:10
cygx shouldn't that be OUTER::MY::.keys?
nine jnthn: do nqp::objectids survive serialization/deserialization? 14:14
dalek kudo/nom: 575dda1 | (Zoffix Znet)++ | docs/release_guide.pod:
Add 2016.08.1 to the list of past releases
14:15
jnthn nine: no 14:19
awwaiid lizmat: I wonder if this is related to dynamic vars (definition, then use on another line) not working in the REPL 14:50
lizmat awwaiid: fwiw, I moved the dynamic vars into the start block 14:51
gfldex m: "file-001.fa".succ.say 15:30
camelia rakudo-moar 575dda: OUTPUTĀ«file-002.faā¤Ā»
cygx IO frontend redesign, RFC: gist.github.com/cygx/7d792e09b182a...82663dfddb 16:23
[Coke] RT: 1369; @LARRY: 18; BOOTSTRAP: 4; BUG: 491; BUILD: 11; CONC: 50; DOCS: 1; GLR: 5; IO: 15; JVM: 69; LTA: 119; MATH: 6; NATIVECALL: 15; NEW: 848; NYI: 91; OO: 7; OSX: 6; PERF: 26; POD: 18; PRECOMP: 12; REGEX: 34; REPL: 4; RFC: 54; SEGV: 37; SPESH: 1; STAR: 6; TESTNEEDED: 34; TODO: 10; UNI: 30; UNTAGGED: 288; WEIRD: 3 16:35
I wonder if a monthly challenge would help. like, "get under 1300 tickets before the next release" 16:44
hoelzro is there a way to unwind the stack in a CATCH handler other than returning from that handler? 17:00
cygx
.oO( wrap the whole thing in a loop and call last as appropriate... )
17:19
jnthn hoelzro: No; CATCH handlers are (by design) run on the stack top, so you've got the dynamic scope of the thrower in place and so resumable exceptions are dead easy (you just don't unwind after) 17:41
cygx jnthn: if you got a minute, would gist.github.com/cygx/7d792e09b182a...82663dfddb mesh with the moarvm-side refactor? 17:45
*would
hoelzro jnthn: ok, thanks! 18:02
awwaiid: I'm wondering if we should slightly modify your change to REPL.pm to call next outside of the CATCH handler to avoid that "return $!control-exception unless $!exception-handled" code 18:04
it works great, but it just feels a little "action at a distance" to me
cygx nine: precompilation leaks filehandles as slurp-rest does not close the file 18:21
cf github.com/rakudo/rakudo/blob/nom/...tem.pm#L62
should I add a close there, or change slurp-rest? 18:22
perhaps add a :$close parameter to slurp-rest, but with what default? 18:27
probably false, same as .lines 18:32
create-moar-runner.pl no longer does the Right Thing as it checks for $*DISTRO eq 'MSWin32', but minw returns 'mswin32' 18:59
*mine
[Coke] the least intrusive change would be to add an explicit .close 19:06
changing slurp-rest impacts users
cygx: can you open a ticket for that?
(the mswin32 thign)
cygx [Coke]: I'll send some pull requests shortly
[Coke]: the change to slurp-rest is non-intrusive is :$close defaults to false 19:07
*if
[Coke] it's -less- intrusive; but you're changing an already documented method that's part of roast.
(the mswin32 thing could be solved with a $*DISTRO ~~ /i 'MSWIN32' / 19:08
er, /:i
cygx [Coke]: we already rely on distro names being lowercase elsewhere (in particular, Distro.is-win) 19:09
awwaiid hoelzro: yes, I'd love to get rid of that, but so far haven't figured out a way 19:16
/go status 19:17
hoelzro awwaiid: I can't try it right now (packing up my whole life =/), but what about setting a flag in CATCH and saying "next if $flag;" outside of the CATCH block? 19:28
awwaiid hoelzro: hmm. ok yeah. or another return flag -- the CATCH is there for catching both repl-eval issues and repl-print issues. Maybe that was a premature merging. 19:47
hoelzro|phone awwaiid: well, I wanted to merge it earlier rather than let it sit and forget about it during my move =) 19:51
awwaiid hoelzro|phone: oh you merged it? I thought I did :) hehe 19:54
hoelzro|phone hehe 19:57
awwaiid hoelzro|phone: ohh, you meant the PR 19:58
hoelzro|phone: I was talking about merging the CATCH to cover both repl-eval and repl-print 19:59
hoelzro|phone: I very much appreciate the PR merge :)
hoelzro|phone =) 20:27
awwaiid hoelzro|phone: worked, github.com/rakudo/rakudo/pull/852 20:32
dalek kudo/nom: efd880a | timotimo++ | Configure.pl:
strongly point out surprising behavior of --gen-* options

nobody would expect any installation to happen just by calling Configure.pl; much less potential installation into system-wide directories.
20:36
p: 98f93df | timotimo++ | Configure.pl:
Warn about --gen-moar installing at Configure time

You wouldn't expect anything in the system to change just because you're running a Configure.pl script.
20:37
kudo/nom: bc187b1 | timotimo++ | README.md:
point out the potential surprise of --gen-* in README as well.
20:40
hoelzro|phone awwaiid : awesome, I can maybe look later tonight 21:29
dalek kudo/nom: ebf34aa | lizmat++ | tools/build/create-moar-runner.pl:
Fix create-moar-runner.pl for Win32

  $*DISTRO always returns lowercase, without whitespace names
21:39
kudo/nom: ede7c60 | lizmat++ | src/core/CompUnit/Repository/FileSystem.pm:
Make sure we close filehandle after reading

  See irclog.perlgeek.de/perl6-dev/2016-0...i_13097501
21:53
kudo/nom: 0f1d039 | lizmat++ | tools/build/create-moar-runner.pl:
Better win32 test

Plus remove some superstitious parens
21:54
lizmat good night, #perl6-dev!
timotimo gnite lizmat!
jdv79 nite 21:55
jnthn 'night, lizmat 22:02
dalek kudo/nom: 0704970 | lizmat++ | src/core/CompUnit/PrecompilationStore/File.pm:
Implement part of PR 851, cygx++

Previous commit inadvertenty already implemented the other part.
timotimo lizmat devs in her sleep o_O 22:03
dalek kudo/nom: 4efdd94 | cygx++ | src/core/IO/Handle.pm:
Add :close flag to IO::Handle.slurp-rest
22:04
kudo/nom: 763d678 | lizmat++ | src/core/IO/Handle.pm:
Merge pull request #850 from cygx/slurp-rest

Add :close flag to IO::Handle.slurp-rest
kudo/nom: 85cbb6d | (Brock Wilcox)++ | src/core/REPL.pm:
Get rid of dynamic variable by moving CATCH
22:05
kudo/nom: 3a294e9 | lizmat++ | src/core/REPL.pm:
Merge pull request #852 from awwaiid/repl-simplify-catching

Get rid of dynamic variable by moving CATCH
kudo/nom: 6a8278c | lizmat++ | tools/build/create-moar-runner.pl:
Adhere to PR 849, cygx++
22:09
lizmat really sleep now& 22:15