Parrot 4.8.0 "Spix's Macaw" | parrot.org/ | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 20 September 2012.
pmichaud I just discovered something 00:03
earlier versions of Parrot had stdout as unbufferred
*unbuffered
i.e., completely unbuffered 00:06
4.8.0 is buffering stdout
(and that's why the logic didn't exist in the old system)
gist.github.com/3797212 # sample program 00:09
when I run that program under 4.6.0, the "abc: " appears immediately, followed by "def" two seconds later. 00:10
When I run the program under 4.8.0, "abc: def" appears 2 seconds after the program starts.
kid51 Which -- or what -- is the desired behavior? 00:13
Would different Parrot users -- i.e., different HLLs -- have a different understanding of "desired"?
pmichaud kid51: most systems I've used assume stdout to be line buffered, which is what 4.8.0 seems to be doing. 00:14
however, from a regressions perspective, since stdout has apparently been unbuffered in parrot for several years... I dunno.
kid51 Do we know which commit introduced the buffering? 00:15
pmichaud I suspect it was the io branch merge 00:16
io_rewrite
the fix in 1fe3b78 doesn't seem very standard, though. It appears to flush stdout on *any* call to readline, not just those for the standard input filehandle. 00:22
so, the 4.8.0 behavior isn't what I'd expect either. 00:23
00:31 benabik joined
ttbot Parrot 1fe3b78b MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/98506 00:38
whiteknight pmichaud: I'll take your word for it, but there definitely was some code in the old system to set up buffering on stdout 00:47
so, the old code lied 00:48
Un-buffering stdout can be done trivially if you want
dalek rrot: 959499b | dukeleto++ | docs/binaries/parrot.pod:
[doc] Add copyright line back
00:57
rrot: 2c8d7e2 | dukeleto++ | .travis.yml:
[travis] Add our coding standard and manifest tests
01:05 kid51_ joined 01:08 travis-ci joined
travis-ci [travis-ci] parrot/parrot#604 (master - 2c8d7e2 : Jonathan "Duke" Leto): The build was broken. 01:08
[travis-ci] Change view : github.com/parrot/parrot/compare/1...8d7e24db86
[travis-ci] Build details : travis-ci.org/parrot/parrot/builds/2590709
01:08 travis-ci left 01:37 perlite_ joined
ttbot Parrot 2c8d7e24 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/98550 02:29
03:13 l3l1p joined 03:47 l3l1p joined
dalek rrot/rurban/json-utf16-gh845: 988986b | rurban++ | / (41 files):
Merge branch 'master' into rurban/mime-base64-utf8-gh813+gh814

Fixed conflict in:
  \tChangeLog
03:49
rrot/rurban/json-utf16-gh845: f50380b | rurban++ | / (5 files):
[GH #845] Fix data_json \\unnnn encoding

  \\u needs to be encoded as utf16 char, not utf8 because they
are binary different. E.g. \\u00a2 is 0xc2a2 in utf8.
Add utf16_chr vtable method for the Parrot_utf16_encoding. Add unicode tests to data_json.
04:00 MikeFair joined 05:17 contingencyplan joined 05:51 l3l1p joined
pmichaud gist.github.com/3798179 # comments welcomed. I'm going to bed now but will read scrollback in the morning when I awaken. 06:04
I also added a related comment to issue #874 about the fix that was committed earlier 06:05
afk, sleep
07:27 jlaire joined 07:33 Psyche^ joined 08:46 lucian joined 11:16 preflex joined 12:20 mtk joined 13:10 jlaire joined
dalek kudo/nom: 031a497 | jonathan++ | src/core/traits.pm:
Ensure &trait_mod:<is>.onlystar == True.
13:14
kudo/nom: fdf347b | jonathan++ | src/Perl6/World.pm:
Scatter some native types in Perl6::World.
kudo/nom: 14f0230 | jonathan++ | src/ (3 files):
Implement binding with declarators.

This gets things like 'my (:$a, :$b) := foo()' style things working.
kudo/nom: 6f71e7e | jonathan++ | t/spectest.data:
Run S02-names-vars/signature.t.
kudo/nom: 64a2e83 | jonathan++ | src/ (5 files):
Implement 'is hidden' and 'hides'.
kudo/nom: c2e6b2a | jonathan++ | t/spectest.data:
Run S12-class/interface-consistency.t.
13:15 bluescreen joined 13:21 benabik joined
rurban msg whiteknight please read pmichaud's gist and comment about new IO buffering. He is worried about all handles and streams, and a "correct" fix for readline. readline should check even if write_buffer is empty if the out handle is buffered or not. Only STDOUT is handled now. Do we get a non-empty write_buffer on non-STDOUT? 13:39
aloha OK. I'll deliver the message.
pmichaud rurban: I have another test case coming up. 13:43
rurban msg whiteknight please see also our discussion of STD* buffering on #perl6 13:57
aloha OK. I'll deliver the message.
14:04 benabik joined, Khisanth joined
dalek kudo/nom: fea947c | jonathan++ | docs/ChangeLog:
A couple of ChangeLog entries.
14:04
14:09 benabik_ joined
pmichaud msg whiteknight see also latest updates/comments to ticket #847 14:11
aloha OK. I'll deliver the message.
14:23 brrt joined 14:26 l3l1p joined
brrt blegh, designing an instruction set is hard 14:28
Coke hopes "profit" is one of the instructions. 14:31
brrt that would be awesome
14:33 PacoAir joined
brrt nah, i was hoping to build something in-between m0 and pir 14:38
but thats hard
Coke is there a working m0? I know we had some in progress earlier. 14:43
brrt depends on what you mean by working 14:44
Coke dunno 14:47
if parrot exposed m0 at this point, would w consider that an internal format? would nqp be able to target it, or would there have to be a PIR level? woudl there be a new pir-like level that wasn't pir instead? lower level? 14:48
pmichaud in many ways, nqp isn't really interested in PIR as it exists today. I think that creating an m0 that tries to replicate PIR as it exists now would be more of a distraction than a help. 14:51
brrt basically, my complaint about m0, if any, is that it is so low-level it is basically useless
dalek p: 29b1d0c | jonathan++ | src/QRegex/P5Regex/Actions.nqp:
Toss qalt_nfas from P5Regex.

Alternations are always sequential.
14:53
p: 7033a27 | jonathan++ | src/QRegex/P5Regex/ (2 files):
Basic positional capture support.

Seems to get the numbering done the p5 way, at least for basic cases.
p: 6c47c7b | jonathan++ | t/p5regex/ (2 files):
Some basic p5regex capture tests.
brrt i.e., if different compilers all compiled down to m0, they could never truly be made to interoperate
Coke does m0 proscribe calling conventions?
brrt not if i recall correctly 14:54
Coke if we had something that hid the calling conventions, would that be enough?
brrt not really
tadzik m0 wasn't supposed to be something to target, iirc
brrt you need 'data conventions' too, but that is more tricky than it sounds
tadzik just something easily jitable, due to low number of opcodes
and then there's m1 which compiles to m0, or something 14:55
brrt tadzik: in which case, you need a higher-level representation that may not be easily jittable
but which is easy to compile hll into, and more interestingly, easy to optimise
because if javascript can be made to run quickly, any language can 14:56
14:56 benabik joined
tadzik brrt: that's what m1 is about 14:56
(was?)
brrt m1 would then have to be a reasonable target for compilation 14:59
15:00 benabik_ joined
tadzik that was my understanding, yes 15:01
brrt my understanding was that m1 would be some c-alike
as in, for humans 15:02
tadzik that's how it looks
hm
Coke ... didn't someone already do that also?
tadzik so maybe someone wanted a compiler toolkit generating m0
or something
tadzik shrugs
I don't believe this will happen actually :(
brrt shame 15:03
anyway, that was why i wanted to implement a set that was high-level enough to enforce calling and data conventions 15:08
which is hard
brrt was sure he could find the design document of m0 15:10
github.com/parrot/parrot/blob/m0/d...d32_m0.pod 15:12
here it is
15:16 dmalcolm joined 15:17 l3l1p joined
rurban For me m0 is just a simple LLVM rewrite, without all the infrastructure and optimizations of LLVM. Why bother 15:20
If we want to create jit-near microcode and jit it with llvm, we need to create llvm .bc not m0 bytecode. 15:22
Coke is llvm supported on all platforms we currently target? 15:23
rurban I have no idea
it runs on most processors, but not on vms
mips also not 15:24
brrt i definetly see the value in something low-level to pir
rurban oh, mips is supported. and ia64 also, so vms would run 15:25
dalek rrot: c2c9597 | dukeleto++ | MANIFEST:
[t] Update manifest to make manifest tests happy
rurban uh, utf16->to_encoding(asciistring) => ucs2 ? 15:27
Oh, I see. optimization 15:29
Coke rurban: which parts of parrot coudl be swapped out for llvm tools/code? 15:45
rurban Parts of the runtime 15:46
But I'm mostly seeing potential for a better nqp backend based on vmkit, than parrot. 15:47
It's the calling convention and string handling which is awful. and almost not fixable
ttbot Parrot c2c95972 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/98615 15:52
16:12 preflex_ joined 17:06 NotFound joined 17:07 preflex_ joined 17:10 brrt joined 18:13 tuxit joined 18:20 contingencyplan joined, schmooster joined 18:31 benabik joined 19:18 davidfetter joined 19:23 brrt joined
dalek kudo/nom: 2d0e2de | pmichaud++ | t/spectest.data:
Remove extra copy of integration/rule-in-class-Str.t added by 19d7cd2b9a.
19:24
19:40 preflex joined 19:58 zby_home joined 19:59 bluescreen joined 20:15 benabik joined
dalek rrot/rurban/bitwise_uni-gh848: f88d598 | rurban++ | src/pmc/string.pmc:
[cage] Typo in the string.pmc trans method pod
20:49
rrot/rurban/bitwise_uni-gh848: 04f1986 | rurban++ | src/string/encoding/utf16.c:
Micro-optimize utf16_chr by checking 0 beforehand
rrot/rurban/bitwise_uni-gh848: 6c41a21 | rurban++ | / (4 files):
[GH #848] Support unicode strings for bitwise ops

bands, bors, bxors and bnots understand now more multi-byte strings.
Old docs: Performs a bitwise C<OR> on two Parrot strings, performing type and encoding conversions if necessary. Returns the result as a new string.
Added now: Same encodings are compared bitwise. Different two-byte encodings are first converted down to latin1, and if that fails upgraded to ucs2 and if that fails to ucs4. 2 byte <=> 4 byte conversion is not supported, thus e.g. utf8->utf16 fails. But 2 byte to 1 byte is attempted.
rrot/rurban/json-utf16-gh845: 1313cd4 | rurban++ | compilers/data_json/data_json/pge2pir.tg:
GH #845 use ucs2 not utf16 for json \\u values

This is safer.
rrot/rurban/json-utf16-gh845: 274df5d | rurban++ | src/string/encoding/ucs2.c:
GH #845 Add ucs2_chr for data_json
p: f12484a | pmichaud++ | / (2 files):
Back PARROT_REVISION down to 4.4.0, bump VERSION to 2012.09.1
20:53
rurban I'm off now for a few hours. 20:55
dalek kudo/nom: acf8f17 | pmichaud++ | / (3 files):
Bump NQP revision to 2012.09.1, restore IO::Socket::INET to use older Parrot interface, disable IO::Socket::INET tests in spectest.
21:10
kudo/nom: 5c5b15b | pmichaud++ | / (2 files):
Revert a bit more of 71fc9c to get sockets to work as they did in 2012.08.
kudo/nom: 81cd16f | pmichaud++ | docs/ChangeLog:
Update ChangeLog for 2012.09.1.
kudo/nom: cbe6eea | pmichaud++ | docs/announce/2012.09.1:
Add announcement for 2012.09.1 .
21:21
kudo/nom: 5f876d7 | pmichaud++ | docs/release_guide.pod:
Update release_guide.pod with 2012.09.1 release.
21:22
kudo/nom: 7d227de | pmichaud++ | VERSION:
[release] bump VERSION
21:28
22:52 whiteknight joined
whiteknight good evening, #parrot 22:54
23:00 bluescreen_ joined
whiteknight I cannot, for the life of me, figure out how the previous IO system was accomplishing this buffering behavior 23:09
23:14 l3l1p joined
whiteknight actually, I think I know what it's doing: it doesn't look like stdout is being buffered at all in the old system 23:26
...which makes some sense if I'm reading this right
pmichaud: ping 23:28
dalek rrot: 3260e22 | Whiteknight++ | src/io/api.c:
Undo a prospective fix from rurban++. We don't want to flush stdout every time we read from any filehandle.
rrot: 2922c18 | Whiteknight++ | src/io/api.c:
On second read through, it doesn't appear that the old IO system had a write buffer on stdout. Take that away in the new system to try and fix some rakudo issues reported by pmichaud++
pmichaud whiteknight: pong 23:34
whiteknight pmichaud: those last two commits might fix your stdout buffering issues 23:35
I ran a test locally, when you get a chance can you confirm it with Rakudo?
pmichaud well, it could be tested with the pir code in the issue, too :)
whiteknight yes, that's what I did. If that's enough testing, then we can call the ticket complete 23:36
pmichaud yes. however, we have another problem with standard input that needs resolving too. 23:37
so far I haven't been able to duplicate it on any of my systems, but it's been reported by Coke, jnthn, and TimToady so I'm fairly confident the bug exists
oh, and moritz :) 23:38
I'll try master now
whiteknight okay, those are all trustworthy sources 23:39
what's the bug?
pmichaud when reading lines of input, none of them are delivered to the program until EOF is sent
whiteknight hmm, that would seem to be a definite bug
23:40 travis-ci joined
travis-ci [travis-ci] parrot/parrot#606 (master - 2922c18 : Whiteknight): The build was fixed. 23:40
[travis-ci] Change view : github.com/parrot/parrot/compare/c...22c188143b
[travis-ci] Build details : travis-ci.org/parrot/parrot/builds/2602966
23:40 travis-ci left 23:46 benabik joined
pmichaud whiteknight: 2922c18 seems to leave the standard output unbuffered again. 23:48
(i.e., yes, it's the behavior before 4.8.0, but not necessarily the behavior we'll want)
whiteknight yeah, I'm just trying to get back to the same baseline. io_cleanup1 did not intend to make many breaking changes 23:50
but yes, we want to do the right thing going forward
apparently I have some backlogging to do about expected behaviors 23:51
dalek Heuristic branch merge: pushed 45 commits to parrot/rurban/mime-base64-utf8-gh813+gh814 by rurban 23:52