»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
diakopter well, the initial announcement about something like that was actually an April Fool's Joke 00:00
blez äha
diakopter but parrot does strive to host other "dynamic" languages
00:01 cognominal joined
blez but does it compile? I mean to native binary format 00:02
exe/elf/dwarf
diakopter does it compile what?
I mean, does what compile what 00:03
blez parrot
does it compile perl to binary
perl code*
diakopter not that can be used without parrot, if that's what you're asking
blez aha 00:04
cognominal about the reddit thread: chromatic is to Perl what Daniel Eran Dilger is to Apple. Read it if you want to be a true believer not if you want a balanced option
japhb Perl 6 can be compiled down (using different VMs) to several things. Parrot's furthest compile is to PBC (Parrot Byte Code), which can then be packaged into a "fakecutable", but IIRC that still needs access to the full Parrot libraries
blez "fakecutable" lol 00:05
japhb It looks like a native executable, it acts like a native executable, but its (mostly) not a native exectuable. :-) 00:07
blez ye, like the python2exe thing 00:08
does parrot have JIT?
diakopter unfortunately no
00:08 DarthGandalf left
diakopter niecza does, via mono 00:09
blez aha
does perl have JIT implementation? except the mono one
diakopter not yet
blez I wonder why JS have, but not perl or python 00:10
(and I guess, ruby)
diakopter vastly different numbers of willing/able developers
japhb Python has a JIT implementation. In fact, it has a framework for writting JIT compilers.
er writing 00:11
blez psyco or what was its name?
pmichaud diakopter: I don't think that qrpa grows without bound as a ring buffer.
phenny pmichaud: 27 Sep 23:58Z <diakopter> tell pmichaud when used as a queue (push/shift or unshift/pop), afaict qrpa's storage will grow without bounds as time goes on. I recommend converting it to a ring buffer..
sorear because jit benefits JS but does not benefit Perl
japhb blez, PyPy
diakopter pmichaud: that's not what I said? :P
pmichaud sorr, I mean as a queue
*sorry 00:12
sorear perl to native code compilers have been written several times, never have they worked well enough to be adopted widely
diakopter ah
sorear rurban: ping
pmichaud diakopter: consider 'push'
diakopter oh, I guess I forgot it would reset upon resizing up 00:13
pmichaud correct.
(you said it more elegantly than what I was coming up with :)
but yes, anything that causes the buffer to resize also reclaims space
blez sorear why doesn't perl benefit from JIT? 00:15
sorear blez: polymorphism, allomorphism, and weak typing 00:17
diakopter however, if someone were to write in the primitive/strongly-typed subset of Perl 6 without using tricky control flow, it theoretically could 00:19
shachaf sorear: Aren't those exactly the sorts of thing that a tracing JIT can help with?
diakopter you know, for most microbenchmarks and shootout games :)
shachaf isn't sure what allomorphism is. 00:20
popl shachaf: search.cpan.org/~ovid/Sub-Signature...natures.pm # search for "Allomorphism, despite" 00:21
Er, definition is actually given in the paragraph above it.
japhb blez, shachaf: Part of the problem is that writing a really effective JIT is *hard*, ideally done by a team working full time on it. We don't have anyone who can work full time on it, let alone a team. And a really good JIT is hard enough to do that occasional coding by a loose-knit band of (even very good) programmers isn't enough. 00:22
popl Ther eare probably better definitions. It's not a CS term but I think someone stole the nomenclature and repurposed it.
shachaf japhb: That's not the same as saying that Perl wouldn't benefit from it. :-) 00:23
japhb Lest you doubt the above: Look at how long it took Mozilla, Google, Microsoft, Sun, IBM, ... to do it, even throwing some REALLY bright guys at it.
shachaf (Wasn't LuaJIT pretty much done by one person?)
blez (yes)
japhb shachaf, You'll note I never claimed that it *couldn't* help Perl.
blez japhb why no one have ported perl/python to V8?
V8 is not exactly a JIT
japhb Perl can be compiled to v8 now. It's an incomplete implementation though.
blez aha 00:24
shachaf japhb: I just came in in the middle of the conversation.
japhb shachaf, LuaJIT was indeed written by one person, who is a master of his craft, working full time on just that, and over the course of *years* of continuous effort.
shachaf, No worries. I didn't take offense. :-)
blez I don't think writting JIT is _that_ hard 00:25
japhb Also, Lua is a much smaller language than Perl.
blez, I didn't say writing any JIT is really hard -- Parrot had one in the old days -- rather that writing a really GOOD one is really hard. 00:26
blez good optimizations are hard, yes
also the GC does the slowing down most of the times, not the JIT 00:27
japhb blez, It's more than that. A really efficient JIT requires a much wider set of skills and knowledge than most people realize.
blez that's why mono switched to newer gc
pmichaud moritz, masak, jnthn (and others): we have a regression issue we need to resolve
blez dunno, I've done a simple jit, and I think it can be written by one man 00:28
if he knows some math too
(graphs, register coloring and etc)
pmichaud apparently all output to stdout/tty in Parrot was unbufferred prior to 4.8.0. Starting with Parrot 4.8.0, Parrot is using line bufferring for stdout. How much of a regression issue is this for us? 00:29
japhb blez, Not necessarily so. Witness several iterations of Safari's and Firefox's JS engines that realized that to give a JIT the breathing room it needs, your default *interpreter* has to be really fast. You'll note LuaJIT starts off with a wicked fast interpreter, even without the JIT.
blez it starts with interpreting, then jits?
japhb I don't mean to give the impression that it's impossible to do well by one man (LuaJIT is of course direct proof that it can), but that it's a lot harder than people think. 00:30
diakopter japhb++
00:31 benabik joined
blez yep, it's quite hard 00:31
00:31 _jaldhar_ joined
japhb blez, If I recall correctly, it looks for hotspots first -- you don't want to waste the heavy overhead of the JIT compile on something that only gets run once, or rarely enough not to matter in the big scheme of things (especially if a fast interpreter will take less total time than JIT + native exec) 00:31
blez interpreting is used for fast startup 00:32
but I'd compile method by method
which is fast too
japhb Also, you want to have gathered enough information about the runtime behavior of the code that you can determine the expected faster ordering of the code (which if branch gets the fall through, which types should be assumed and which should have checks, etc.)
Yeah, the most common types I've seen are full-method, trace, and loop. 00:33
But I am not an expert; there are most likely more out there I haven't studied.
blez stackoverflow.com/questions/9607928...translator that was interesting 00:34
there are 4-5 types, trace jits are very hard to implement
shachaf edwardk was working on an amd64->amd64 tracing JIT.
japhb I remember one of the Firefox guys saying approximately "When we stay on trace, we have the fastest code. Unfortunately, we keep falling off trace." 00:35
blez nothing can be faster than V8 00:36
dunno about CLR vs V8 :)
japhb blez, depending on the benchmark you choose, the winner varies. V8 is indeed massively faster than the competition -- at the benchmarks it is optimized for. ;-) 00:37
blez yep
but they directly compile the AST to x86 code 00:38
no bytecode
sorear shachaf: since writing jits is hard work, I think the burden of proof is on you to show that it would actually work.
shachaf: what I have seen in my experience with niecza leads me to believe that the benefit of a JIT for Perl (6) would be marginal at best in typical cases 00:39
japhb blez, Remember that a fast approach/algorithm and a fast *implementation* are not the same. The devil is ... well, you know the rest.
(Not that I think the Google guys are falling down on the job, they're not. But Firefox's original TraceMonkey was a perfect example of something that "should have" been whomping fast, but turned out not to be.) 00:40
To something someone said earlier: Yes, the GC is *at least* as important as the JIT to overall performance. The LuaJIT author is rewriting its GC from scratch yet again because it's now the limit to the VM's overall performance. Google and IBM have also done a lot of research in this area. 00:43
blez well, Lars Bak did the V8, he's the best at this
japhb "There ain't no such thing as the fastest code."
shachaf sorear: I'm not making any claims in particular, only asking. :-)
00:45 _jaldhar_ left 00:48 Targen joined 00:49 _jaldhar_ joined
japhb Oh, to people interested in GC designs, I highly recommend _The Garbage Collection Handbook: The Art of Automatic Memory Management_, by Richard Jones, Antony Hosking, and Eliot Moss. It's a good (and current) survey book with a LOT to think about. 00:49
00:51 popl left 00:52 anuby joined 01:05 kid51_ joined 01:06 kid51 left 01:12 hypolin joined 01:20 kid51_ left 01:24 whiteknight left 01:30 iemelianov joined 01:36 bruges left 01:37 bruges joined 01:46 fgomez left 01:52 thou left 01:54 fgomez joined 01:55 thou joined 01:59 tokuhiro_ left 02:02 gootle joined 02:05 Circlepuller joined, Circlepuller_ left 02:22 stopbit joined 02:24 stopbit left, leprevost left 02:47 DarthGandalf joined 02:48 orafu left 02:49 orafu joined 02:53 leprevost joined 02:55 cognominal left 02:56 leprevost_ joined, cognominal joined, leprevost__ joined, leprevost__ left, leprevost_ left, leprevost left 03:04 cognominal left 03:06 sirrober1 joined, cognominal joined 03:07 fgomez left, sirrobert left 03:18 am0c joined 03:28 fgomez joined 03:44 cognominal left 03:49 cognominal joined 03:55 anuby_ joined 03:59 anuby left 04:00 MikeFair_ joined 04:32 telex left 04:35 thou left 04:37 telex joined 04:38 skids left 04:43 cognominal left 04:47 ServerSage left 04:51 cognominal joined 04:55 thou joined 05:07 thou left 05:12 ServerSage joined 05:13 Targen left
moritz \o 05:22
05:26 thou joined
sorear o/ 05:27
05:33 Targen joined 05:36 grondilu joined
grondilu How do I define how a class behaves in boolean context? 05:37
sorear define the Bool() method. 05:38
grondilu oh yeah. Silly of me.
05:40 GlitchMr joined 05:53 cognominal left 05:56 birdwindupbird joined, thou left 05:57 grondilu left 05:59 cognominal joined 06:01 thou 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
06:13 wtw joined 06:15 thou left 06:16 birdwindupbird left 06:19 taniavs666 joined 06:20 fgomez left 06:21 fgomez joined 06:33 taniavs666 left 06:40 GlitchMr left 06:41 kaleem joined, birdwindupbird joined, GlitchMr joined, mars__ joined 06:45 jlaire left, fhelmberger joined 06:50 taniavs666 joined 06:55 cibs left 07:02 flightrecorder joined 07:03 mucker joined, FROGGS joined
FROGGS guten morgen ;o) 07:04
sorear buena día 07:06
07:09 kresike joined
kresike good morning all you happy perl6 people 07:10
sorear o/ 07:21
07:29 jlaire joined
kresike hello sorear o/ 07:30
tadzik good morning #perl6 07:33
so, Packt is said to give everyone one free ebook to download. Anything by them worth looking at?
07:33 Psyche^ joined
kresike hello tadzik o/ 07:35
07:36 Patterner left, Psyche^ is now known as Patterner, fgomez left 07:38 fgomez joined
Su-Shee tadzik: what's "Packt"? 07:39
good morning everyone
tadzik Su-Shee: www.packtpub.com/ 07:40
kresike hello Su-Shee o/ 07:42
07:49 kurahaupo left 07:57 am0c left 08:11 daxim joined 08:14 am0c joined 08:18 pernatiy left 08:19 fgomez left, jlaire left 08:21 fgomez joined 08:25 Chillance joined 08:27 cognominal left 08:28 Moukeddar joined 08:30 Moukeddar left, Moukeddar joined 08:31 Moukeddar left, Moukeddar joined 08:32 Moukeddar left 08:33 cognominal joined 08:40 kst left 08:54 tty2 joined, taniavs666 left 08:55 GlitchMr left, jerome left, tty2 left 09:13 wamba joined 09:14 wamba left 09:15 cognominal left 09:19 gairola joined 09:23 cognominal joined 09:31 mucker left, cognominal left 09:42 cognominal joined, kst joined 09:50 gairola left 10:02 hypolin left 10:04 leont joined 10:05 preflex left 10:15 Chillance left 10:16 anuby_ left 10:23 cognominal left 10:27 daniel-s joined 10:32 Chillance joined
felher pmichaud: fwiw: i added a comment with my problem to your gist. Hope that helps. 10:41
felher is afk for a while.
10:48 taniavs666 joined 11:05 mars__ left 11:06 Su-Shee_ joined 11:09 Su-Shee left 11:12 Su-Shee_ is now known as Su-Shee, colomon_ left 11:13 preflex joined 11:19 mucker joined 11:36 kurahaupo joined 11:39 kaleem left 11:46 GlitchMr joined 12:00 crab2313 joined 12:02 crab2313 left 12:03 mtk left 12:10 _jaldhar_ left 12:13 chinaxing joined 12:14 cibs joined
masak 'llo, #perl6 12:17
12:18 leont left
moritz \o masak 12:19
12:20 mtk joined
felher o/ masak 12:20
masak pmichaud: re regression issue. I don't know how big it is. do you have a piece of golf'd Perl 6 code handy whose behavior has changed as a result of this? 12:21
pmichaud masak: 12:23
print "Enter a number: ";
my $number = $*IN.get;
sirrober1 hallo 12:24
masak sirrober1! \o/
sirrober1 heh
masak pmichaud: ah, I see it now.
pmichaud: in what direction did it change?
pmichaud previously, that would display "Enter a number" prior to waiting for input.
masak pmichaud: do we even spec manual flushing of $*OUT? 12:25
12:25 sirrober1 is now known as sirrobert, grondilu joined
pmichaud now, the user experience is that the program waits for input, then displays "Enter a number: " on the next output. 12:25
masak right.
grondilu trying LWP::Simple, I get a "could not parse headers"
masak pmichaud: well, to start with the obvious: I like the pre-regression behavior better ;) 12:26
pmichaud masak: the pre-regression behavior is also the p5 behavior
masak oh, ok.
pmichaud as well as the behavior for most unix standard input/standard output programs (e.g., in C)
masak I can't think of a use case where the current behavior is desired.
12:26 FROGGS left
masak is &prompt affected? 12:26
12:27 flightrecorder left
pmichaud it was, but moritz++ added a patch that flushes stdoutput prior to the input 12:28
(which fixes the special case of prompt, but not the general case above)
i.e., I see the prompt fix as a bandaid and not the true fix. 12:29
masak *nod*
12:29 taniavs666 left
pmichaud I'm fairly certain we want to come around to a p5-like and c-like behavior; the immediate question is "how do we get there from here?" 12:30
moritz thought it was only an oddity of his new machine at $work that prompt needed a flush
masak assuming we would want to fix this before releasing Star, (a) what'd we need to do? (b) how much would it delay the release?
pmichaud well, that's what I'm trying to explore (more)
I _think_ if we "just" configure rakudo so that $*OUT starts out unbuffered (which apparently is how Parrot was prior to 4.8.0), then we avoid most if not all of the user-facing regression. 12:32
that would be option (a) in my note above
I haven't had time to test what sort of buffering Parrot was using for filehandles other than stdout, though, to see if that changed in 4.8.0 12:33
if all filehandles were effectively unbuffered prior to 4.8.0, but are now buffered, we'd probably want to address that also. 12:34
12:36 taniavs666 joined
pmichaud I know that the correct behavior is for filehandles to be buffered (line buffered for interactive devices, fully buffered otherwise) -- it's just the sudden semantic change we have to manage. 12:36
*correct eventual behavior
[Coke] phenny: tell pmichaud that another option to his gist is to not release star this month. 12:38
phenny [Coke]: I'll pass that on when pmichaud is around.
[Coke] oh, he's stnding right over there. whoops. 12:39
pmichaud [Coke]: yeah, that's an option as well. Another option is to accept the regression.
phenny pmichaud: 12:38Z <[Coke]> tell pmichaud that another option to his gist is to not release star this month.
pmichaud and, we still have the reported regression that some users have to send EOF prior to having any terminal input accepted. 12:42
although I haven't seen that one golfed yet, nor have I been able to duplicate it in any of my environments.
[Coke] pmichaud: yah, that's happening for me on my mactop 12:44
moritz it happens on at least two of my machines 12:46
pmichaud I could use a code example to test.
moritz say get 12:47
enter a line, press enter, don't press ctrl+D
pmichaud and just to verify, that used to work in 2012.08 but no longer works in 2012.09 ?
moritz I've just tested it on Perl-14-g7d6aa02, and it didn't work there 12:49
no idea when it stopped working though
and if it worked in 2012.08
pmichaud I want to make sure it's not just an instance of RT #112716... i.e., that it's actually a regression and not a bug. 12:50
I mean that it's actually a regression and not a long-standing bug.
moritz I can kick off a build of 2012.08, but it'll take quite a bit of time
pmichaud if it's a regression, we need to address it for the 2012.09 release; if it's a long-standing bug, we need to address it, but it's not a release blocker.
sirrobert r: use JSON::Tiny; my $json = ' {"a":1}'; say from-json($json); say from-json($json.trim); 12:51
p6eval rakudo 9af8f2: OUTPUT«===SORRY!===␤Could not find JSON::Tiny in any of: /home/p6eval/.perl6/lib, /home/p6eval/nom-inst/lib/parrot/4.8.0-devel/languages/perl6/lib␤»
sirrobert oh =)
well, moritz: fyi, JSON::Tiny breaks with preceeding whitespace =) 12:52
moritz star: use JSON::Tiny; my $json = ' {"a":1}'; say from-json($json); say from-json($json.trim);
p6eval star 2012.07: OUTPUT«Any()␤("a" => 1).hash␤»
sirrobert I can put a ticket in
felher pmichaud: about the EOF. The example i added to your gist is pretty golfed down. Or is this not the problem you were talking about?
pmichaud felher: I didn't see the updated gist -- looking.
moritz sirrobert: please do
12:52 birdwindupbird left
felher also, i tested it with 2012.08 and 2012.08 seems to work nice. 12:52
pmichaud felher: it would help to know the os there 12:53
and yes, that example is _exactly_ what I needed, thanks.
felher pmichaud: sorry. gentoo linux :)
12:53 birdwindupbird joined
pmichaud felher: for me that's just a little bizarre, since the example works fine for me in both 2012.08 and 2012.09 12:54
sirrobert moritz: done
pmichaud and I can't imagine that gentoo is too different from kubuntu in this area. :-?
let me fire up my windows instances and see if I see the regression there. 12:55
felher pmichaud: well, my other machine is gentoo-linux too, but i don't see that problem there :)
pmichaud do you access both systems in the same way -- e.g., both via ssh, or ... ? 12:56
[Coke] pretty sure jnthn reported this on his windows build, also.
12:56 Targen left
felher pmichaud: one ssh (the one that doesn't work), the other local machine. :) 12:56
pmichaud felher: could you try ssh into your local machine and see if works there? 12:57
felher pmichaud: sure thing :)
pmichaud: works. Doesn't seem to be a ssh-problem. Also, perl5 and parrot readline without going through perl6 work just fine. I tested it when i first encountered the problem. 12:59
pmichaud felher: yeah, that's really odd-ish, since afaik rakudo just goes through parrot readline to do stuff.
at the moment it's hard for me to troubleshoot because I haven't been able to reproduce 13:00
I haven't been able to reproduce in my windows environment because I can't get a rakudo build because of windows backslash pathnames :-( :-( 13:01
(I have to figure out the correct syntax to use for --with-parrot=... from the windows command line) 13:02
felher pmichaud: yeah, np :) I just tested: after removing >>$!PIO.encoding($bin ?? 'binary' !! PARROT_ENCODING($encoding));<< from src/core/IO.pm in method open it works on the ssh-machine. So i have a working rakudo to play with. I'm not sure why this solved the problem, though. 13:04
pmichaud: also, the patched rakudo doesn't give the curious output when running the readline-script from the gist 13:05
pmichaud felher: that looks like an important clue as well. 13:06
I'm guessing the encoding line is new to 2012.09 also.
*sigh*
moritz the changelog should tell you when we added binary IO 13:07
13:09 thou joined
pmichaud looks like it was 3 months ago 13:10
13:11 jlaire joined
pmichaud so that's not it. 13:11
at least, not directly.
(it could be related to a change in how Parrot responds to the "encoding" method for Handle PMCs) 13:12
I'm afk for a few mins
jnthn evenin' 13:13
dalek ast: 386f6d7 | jonathan++ | S02-names-vars/signature.t:
Correct signature/declaration binding tests.

A declarator is needed to cause actual binding.
felher o/ jnthn
masak jnthn! \o/
jnthn masak! \o/
My talk is given \o/
tadzik \o/
sirrobert =)
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.
masak jnthn: dude, did you write commits during the talk?
jnthn during other people's talks
Also
tadzik hey, get a 5-minute rest, you don't have to start coding immediately after :P
jnthn it missed two :/
I also implemented hides trait and "is hidden" 13:15
tadzik +dalek | rakudo/nom: Implement 'is hidden' and 'hides'.
tadzik hides
H A H A H A
tadzik is hidden
jnthn :P
tadzik I got that built-in :P
13:15 bluescreen10 joined 13:16 leprevost joined
tadzik but in Perl 6 I can hide my parents, cute :) 13:16
class A hides Your_kids, hides Your_wife {}
jnthn no comma needed :) 13:17
13:17 benabik left
Su-Shee wrong semantics. you'll need a hide_from method on yourself which takes an object ;) 13:17
tadzik does the spec say if settings should use this in any case? 13:18
13:19 dayangkun joined, dayangkun left
jnthn tadzik: What? is hidden? 13:20
I doubt it as then you can't subclass and defer to it
13:20 grondilu left, chinaxing left
masak phenny: "离开"? 13:21
phenny masak: "Leave" (zh-CN to en, translate.google.com)
13:21 benabik joined
pmichaud grrrrr, the "say get" example works on my windows system. 13:30
so, I don't yet have a way to reproduce the bug :-(
13:31 benabik left
pmichaud I bet it "works" for me because I'm using gcc (and thus glibc) 13:31
okay, I wonder if it's gnu-readline related. 13:34
13:37 taniavs666 left
jnthn pmichaud: The debugger is where I've seen it go wrong. 13:37
pmichaud: I put github.com/jnthn/rakudo-debugger/c...0cef16a978 in to be able to demo stuff
felher pmichaud: if i find some time tonight i might be able to get you a linux-container on my server and ssh-access to it so you can experiment there.
pmichaud jnthn: the debugger appears to be working for me too.
jnthn pmichaud: Including single-stepping? 13:38
pmichaud jnthn: afaict, yes.
jnthn pmichaud: Wait, are you trying a version without my patch?
pmichaud yes.
13:38 xinming joined
felher pmichaud: if you want to, of course. 13:39
jnthn pmichaud: hmmm
pmichaud jnthn: I was able to single-step a 4-line program using the 2012.09 candidate star tarball
jnthn pmichaud: Try also the debugger REPL
pmichaud jnthn: your patch also leads me to believe the problem is readline-related. 13:40
s/is/may be/
jnthn: I did have a problem with second and subsequent lines in the REPL, yes.
jnthn pmichaud: I think so
pmichaud: ah, ok. Then at least you can reproduce one of the things 13:41
pmichaud although the first line entered in the debugger REPL worked fine for me.
jnthn ok, and the second line did weird things and you needing to hit Ctrl+Z or so?
13:41 colomon left
jnthn Yeah, second line for me also. 13:41
It's odd
rurban blez: parrot had a compilation option to jit or output native machine code. It was removed a few years ago.
pmichaud it's hard for me to determine if the debugger is working, though, because the ansi escape sequences make it really hard to read
rurban blez: perl5 compilation to V8 is done in perlito. 13:42
pmichaud rurban: nobody was able to maintain the jit, so it was disabled/removed.
13:42 xinming_ left
pmichaud rurban: oh, I see, you were responding to someone else. never mind. :-) 13:42
13:42 odoacre left
rurban yes, just reading the backlog... 13:43
about STDOUT readline buffering. I think my fix is right.
pmichaud rurban: afaict, your fix causes STDOUT to be flushed when any filehandle uses readline
13:44 taniavs666 joined
rurban we have a read_buffer and a write_buffer. if the write_buffer is empty, which it is in the STDOUT case it needs to be flushed manually. The rest is handled by the new buffering logic. 13:44
pmichaud okay, none of that made sense to me. :-) 13:45
rurban if any fh uses readline, io_sync_buffers_for_read works
ditto io_sync_buffers_for_write() with write handles 13:46
It was just STDOUT which fell though. whiteknight needs to think of the case reading from another FH 13:47
But the buffering logic was rewritten and lacks some tests, yes.
pmichaud I'm sure whatever you're saying is correct at some level; the terms don't match my understanding of what they normally mean in a unix or stdio world. 13:48
i.e., how does one "flush an empty buffer"?
TimToady I first noticed the ^D problem a few weeks ago writing the rosettacode.org/wiki/Pig_the_dice_game#Perl_6 program
rurban its a NOP
TimToady it still requires ^D on my system
pmichaud TimToady: os?
TimToady though the prompt shows up now
Ubuntu
rurban But I have no idea about ^D and corner cases.
kresike bye folks
13:48 kresike left
jnthn Well, the problem I was seeing seems to be that it is expecting more input after I hit enter in some cases when doing prompt (or more generally $*IN.get) 13:49
And I have to do the ^d
rurban Interesting.
pmichaud we appear to have two problems that are conflated.
TimToady it acts like stdin isn't line buffered
sirrobert how do I do what I mean by: my @abc=[1,2,3]; my ($a,$b,$c) = @abc;
(I want $a to be 1, $b to be 2,...)
moritz sirrobert: my @abs = (1, 2, 3)
pmichaud TimToady: I'm running kubuntu, I'm wondering what is making your system not act line buffered when mine is acting line buffered
13:49 colomon joined 13:50 odoacre joined
kurahaupo rurban: ctrl-D sends the kernel's current line-buffer, excluding the ctrl-D itself. If the buffer is empty, the receiving program will get an empty read, which is interpreted as "end of file" 13:50
pmichaud TimToady: you also sound like you're on Rakudo head, yes?
moritz sirrobert: then you'll have three elements in @abc, not one
TimToady it's also 64-bit, if that's a difference
pmichaud yeah, I'm 64-bit also.
sirrobert moritz: thanks
TimToady yes, a day or so old
pmichaud anyway, there are two conflated issues here.
TimToady well, maybe 3 or 4
kurahaupo rurban: importantly, "end of file" is not a persistent state
rurban flushing STDOUT when any filehandle uses readline doesn't seem completely wrong to me. I am worried when the out fh is not flushed.
pmichaud one is that parrot used to act as though stdout was completely unbuffered, and now it's buffered and not tied to input handling 13:51
13:51 crab2313 joined
rurban oh, eof! 13:51
pmichaud rurban: it's not just .readline that is affected, but also .read
test program coming up.
rurban well, that's all whiteknights domain.
felher i am off now until the evening/night. If you, pmichaud, want access to my server, let me know. I wanted to experiment with linux-containers for quite some time now anyway :) 13:52
pmichaud the other issue is that stdin is acting fully buffered on some systems instead of line buffered
rurban IMHO parrot should not do STDOUT and STDIN buffering. It might be too high-level for us.
pmichaud rurban: *C* does stdout and stdin buffering, it seems like Parrot ought to do the same. More specifically, Parrot needs to be able to abstract away some of the interactive terminal issues, which is what it's failing to do now. 13:53
TimToady irclog.perlgeek.de/perl6/2012-09-13#i_5984999 is where I first mentioned it
kurahaupo C's stdio offers 3 levels: unbuffered, line-buffered, and block-buffered.
rurban I see the problem
pmichaud TimToady: do you have any funky stty settings, ooc? 13:54
TimToady don't think so
pmichaud yeah, I'd be surprised if there were. :)
rurban STD* buffering is always a problem, and only helps if we need to print a lot of text to STDOUT
or STDERR
13:55 yarp joined
pmichaud STDERR should not be buffered. 13:55
rurban yep
I wonder if STDERR is also buffered now
pmichaud that's on my list of things to check.
(which keeps growing longer, sadly.)
rurban And I found some internal encoding bugs with utf8 vs utf16. Hairy stuff 13:56
I'll be happy to pass the buffering problem to whiteknight. 13:57
13:59 stopbit joined 14:00 leont joined
jnthn pmichaud: Other option for the Star release may be to tie ourselves to a Parrot that ain't busted. 14:00
14:00 Khisanth left
pmichaud jnthn: that means doing some reverts to Rakudo 14:01
jnthn pmichaud: aye
pmichaud and hopefully we don't have any NQP changes that rely on the newer Parrot
kurahaupo rurban: failing to block-buffer can result in order-of-magnitude slowdown in some environments. Line buffering is a hack to work nicely in an interactive situation.
jnthn pmichaud: not that I'm aware of
pmichaud (e.g., with QAST and the like)
14:04 benabik joined
dalek kudo/nom: fea947c | jonathan++ | docs/ChangeLog:
A couple of ChangeLog entries.
14:04
jnthn pmichaud: Anyway, it's a kinda last resort option... 14:07
pmichaud well, given the extensiveness of the regressions we're having to track down, it's becoming less last-resortish, I fear.
14:07 aramisf joined
jnthn pmichaud: *nod* 14:07
pmichaud: If you feel it's the best thing to do, then I'm +1. 14:08
14:09 benabik_ joined, benabik left, benabik_ is now known as benabik
pmichaud I suppose a quick test would be to see if NQP 2012.09 will even build using Parrot 4.7.0 14:09
pmichaud tries that. 14:10
14:12 skids joined
moritz fwiw my build of 2012.08 completed. The 'say get' example works fine on it 14:12
pmichaud moritz++ # useful clue, thanks. 14:13
14:15 kurahaupo left 14:16 Khisanth joined
pmichaud nqp builds and passes tests using 4.7.0 14:17
now let's see if I can build a rakudo from that nqp
14:18 hoelzro|away is now known as hoelzro 14:20 mucker left
GlitchMr n: 14:20
n: # i just want << and >>
p6eval niecza v22-6-g9e5350d: ( no output )
GlitchMr n: print 42# i just want << and >> 14:21
p6eval niecza v22-6-g9e5350d: OUTPUT«42»
pmichaud compiling rakudo --without-readline doesn't cause the 'say get' bug to show up on my system.
14:24 kst left 14:26 brrt joined
pmichaud stderr in 4.8.0 appears to be properly unbuffered, so at least that's right. :) 14:26
14:30 mucker joined
pmichaud looks as though rakudo 2012.09 builds fine using parrot 4.7.0 and runs all spectests with the exception of IO-Socket-INET.t 14:33
14:34 PacoAir joined
pmichaud so, if we revert the socket and/or spectest changes since 2012.08, we could likely do a 2012.09.1 release based on 4.7.0 14:34
taking a break here for a bit. 14:35
14:40 benabik left 14:53 xinming left
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.
14:54 sirrobert left 14:55 xinming joined 14:56 benabik joined 15:00 benabik_ joined 15:04 benabik left, benabik_ is now known as benabik, nyuszika7h joined 15:06 crab2313 left 15:07 taniavs666 left 15:09 birdwindupbird left 15:11 benabik left
jnthn 'night, #perl6 15:20
15:20 tokuhiro_ joined 15:26 thou left 15:35 brrt left 15:39 leont left 15:41 yarp left 15:57 mucker left 16:05 thou joined 16:09 thou left, Targen joined, mars__ joined 16:10 thou joined 16:12 preflex left 16:13 preflex_ joined, preflex_ is now known as preflex
GlitchMr std: print $$; 16:14
p6eval std 77327a4: OUTPUT«===SORRY!===␤Unsupported use of $; variable; in Perl 6 please use real multidimensional hashes at /tmp/M48rAzPGc3 line 1:␤------> print $$;⏏<EOL>␤Parse failed␤FAILED 00:00 42m␤»
GlitchMr Uhmmm...
Shouldn't it see $$ variable instead of $;?
16:15 daxim left, Chillance left 16:16 Chillance joined
moritz std: my $a; $$a 16:16
p6eval std 77327a4: OUTPUT«ok 00:00 42m␤»
GlitchMr I know about that
moritz too
GlitchMr But perhaps those errors should mention $$ if it looks like process-ID variable.
So, if unsupported use of variable will happen, but character before that variable is $, it's actually process ID 16:17
moritz I agree that warning about $$ would be better, if it's not too much effort 16:21
though $$; is clearly the longer token than $$
GlitchMr Perhaps $$ should be allowed to only have certain characters after it 16:25
The characters that would make sense
So $$; won't find $; variable
In Perl 5, $$; is $$ variable. If you want to dereference $; variable, you have to use explicit ${$;} 16:26
That makes sense
(actually, if you want to dereference any non-dollar-underscore variable) 16:27
moritz eval: my $a = \1; say $$a
buubot_backup moritz: ERROR: Can't call method "say" without a package or object reference at (eval 20) line 1.
moritz eval: my $a = \1; $$a
buubot_backup moritz: 1
GlitchMr well, ok, $a, $b, @ARGV counts 16:28
well, any punctuation variable
$_ doesn't count in that because it's \w
Except I think that Perl 6 should allow $$!
moritz why? 16:29
GlitchMr And most importantly, it should allow things like $$.hi
moritz why?
if you way $! for $.hi, the $ already implies item context 16:30
if your code is so insane to need *two* .item calls, you should fix your code instead of trying to tweak the language 16:31
pmichaud (2012.09 star release) at the moment, I'm leaning towards putting nqp and rakudo back onto the 4.6.0 parrot release, reverting the socket changes as needed in Rakudo to make that happen.
that seems to be the path of least difficulty for now.
moritz +1 16:32
masak +1
pmichaud: are you going to write to parrot-dev about it, too?
hm, maybe you've already done that. haven't checked... 16:33
GlitchMr +1.000000000000001
pmichaud haven't written parrot-dev about it, no
I can write parrot-dev about it, yes. Unfortunately, I'm not quite sure what to write, since I can't seem to duplicate the input blocker on any of my systems
moritz first do the release, then we can figure out what to say to the parrot folks 16:34
flussence :q
hugme hugs flussence, good vi(m) user!
flussence whoops :)
GlitchMr Wrong program ;-) 16:35
flussence
.oO( I wonder if I can get tmux to recognise that... )
GlitchMr But IRC with vi like typing could be fun
You could bounce in IRC using % key
moritz flussence: to ignore it? or to quite tmux?
flussence : instead of ^B 16:36
moritz if you never want to use vim inside of tmux, that might work
flussence it seems to work, but I'm too lazy to define sensible keybindings to keep it :) 16:40
masak I've seen this Apple Maps-related autopun "walks into a bar" snowclone twice from seemingly different Twitter sources at this point: twitter.com/dwlz/status/250669009803018241 16:48
16:49 stepnem left
GlitchMr oops, I accidentally ate lost of memory by running memory wasteful code. I through I was running it on my machine 16:49
ok, closed
sorry
I had to use 'kill -9' 16:50
16:50 stepnem joined
moritz did somebody work on an ORM for rakudo? 16:51
GlitchMr I've worked, but I stopped 16:52
16:52 hoelzro is now known as hoelzro|away
moritz masak: A man using Apple Maps walks into a bar. Now his head hurt. 16:53
16:53 GlitchMr is now known as Hi, Hi is now known as GlitchMr
masak a bit of a non sequitur, and also not new ;) 16:53
moritz not surprised, it's a bit obvious
16:54 thou left
masak I bet jnthn's DrunkenGymnast has a hurting head from walking into a bar as well :P 16:54
16:55 thou joined 16:58 kst joined 17:02 Targen left 17:03 erkan left 17:05 grondilu joined
grondilu p6: my Buf $a .= new: 65; my Buf $b; say $a ~ $b; 17:07
p6eval niecza v22-6-g9e5350d: OUTPUT«Unhandled exception: Cannot call new; none of these signatures match:␤ Mu, *%_␤ at /tmp/OzAN99LLoA line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4198 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4199 (module-CORE @ …
..rakudo fea947: OUTPUT«Cannot use a Buf as a string, but you called the Str method on it␤ in method Str at src/gen/CORE.setting:6991␤ in method Stringy at src/gen/CORE.setting:776␤ in sub infix:<~> at src/gen/CORE.setting:1076␤ in block at /tmp/ToHztv4FxA:1␤␤»
17:08 preflex_ joined
GlitchMr Isn't "Buf" in "my" only assertion? 17:08
17:08 preflex left
grondilu p6: my Buf $a .= new: 65; my Buf $b .= new: 66; say $a ~ $b; 17:08
p6eval rakudo fea947: OUTPUT«Buf:0x<41 42>␤»
..niecza v22-6-g9e5350d: OUTPUT«Unhandled exception: Cannot call new; none of these signatures match:␤ Mu, *%_␤ at /tmp/RajyC6GCcn line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4198 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4199 (module-CORE @ …
17:08 preflex_ is now known as preflex
GlitchMr But I guess it should work in this case for DWIM 17:08
moritz and what should it do?
GlitchMr perlcabal.org/syn/S12.html#line_65 17:09
That
grondilu I was expecting the concatenation to occur even if one of the buffer is not defined.
moritz grondilu: and what should that do?
grondilu Isn't a non-defined buffer considered to be a zero-length buffer? 17:10
moritz is it?
GlitchMr It should do anything because PHP either does something nonsensical or crashes fatally.
But we aren't PHP.
moritz grondilu: I genuinely don't know, which is why I'm asking
grondilu lol
moritz grondilu: I don't think the spec says anything about Buf type objects 17:11
grondilu r: my Str $a; say $a ~ "foo"
p6eval rakudo fea947: OUTPUT«use of uninitialized value of type Str in string context in block at /tmp/B7GO05HL_3:1␤␤foo␤»
colomon Can you concat Bufs?
17:12 erkan joined, erkan left, erkan joined
grondilu colomon: sure, it does make sense, doesn't it? 17:12
moritz they'd be pretty useless if you couldn't do anything with them, no?
colomon You can only concat (in the infix:<~> sense) things which are stringy or can be cast to stringy, right? Are Bufs stringy? 17:13
grondilu well, I saw above that with string, concatenation with non defined values are not allowed. So I guess it should be forbidden with buffers too.
skids IMO Buf ~ Buf should be kosher, but not between Buf and Str without explcit encoding. 17:14
colomon interesting, concatenation in S03 just says "infix:<~>, string/buffer concatenation" 17:15
grondilu Well, if you don't allow "~" with buffers, it's gonna be tricky to do concatenate buffers :/ 17:16
colomon so maybe Buf ~ Buf should be kosher? S02 makes it pretty clear Str ~ Buf is a no-no.
grondilu "kosher"? 17:17
pmichaud since Buf does Positional, one could concatenate Bufs the way one concatenates arrays (whatever that ends up being)
colomon grondilu: p6 has a LOT of operators. creating a specific Buf concatenate operator would be par for the course. (And indeed, I wouldn't be surprised if it already existed and I don't know about it.)
grondilu: www.thefreedictionary.com/kosher 2a 17:18
grondilu r: say Buf.new(65) ~ Buf.new(66) # buffer concatenation does work already
p6eval rakudo fea947: OUTPUT«Buf:0x<41 42>␤»
skids wishes that 0x<NN NN NN> worked as a literal frequently.
pmichaud anyone know why rule-in-class-Str.t is listed twice in t/spectest.data ? 17:19
17:19 MayDaniel joined
colomon pmichaud: to get extra test passes attributed to Rakudo? ;) 17:19
pmichaud colomon: actually, it cases the harness to carp and stop.
colomon pmichaud: git blame? 17:20
pmichaud looks like jnthn
colomon got to be an oversight, I'd think. 17:21
moritz oversight
pmichaud moritz++ added it on 09-15, jnthn added a second copy on 09-26
okay, fixing.
17:22 am0c left
pmichaud I'm currently planning on releasing 2012.09.1 based on nom's HEAD (rather than as a branch of the 2012.09 release), any objections or comments? 17:24
17:24 leprevost left
pmichaud this also will have the effect of including features added since 2012.09 in the release. 17:25
17:26 kst left, grondilu left, kst joined 17:27 fglock_ joined
moritz why? 17:28
17:28 Targen joined 17:29 fhelmberger left
pmichaud (1) that's the approach we used for 2012.04.1 (2) it helps us maintain consistency among the releases 17:29
my plan is to put nom and rakudo development mainline back onto the 4.6.0 parrot until all of the io issues can be fixed
colomon pmichaud++ 17:31
pmichaud s/nom and rakudo/nqp and rakudo/
17:31 kaare__ joined 17:38 leprevost joined 17:39 tokuhiro_ left
sorear good * #perl6 17:41
sjohnson word up! 17:46
pmichaud I can either revert the tests in S32-io/IO-Socket-INET.* to have their Parrot 4.6.0 semantics, or I can leave them alone and remove them from spectest.data for the time being. 17:48
moritz we have modules that depend on the current behavior, I think 17:49
[Coke] I would remove them from spectest.data for now.
pmichaud well then we're screwed.
I can't get the current behavior from a 4.6.0 parrot, I don't think.
moritz (I could be wrong) 17:50
pmichaud which modules, ooc?
moritz LWP::Simple, maybe some IRC bots 17:51
pmichaud then we either have to revert those back to 2012.08, or we have to figure out how to live with parrot 4.8.0 17:52
dalek rlito: e8d8c18 | (Flavio S. Glock)++ | / (2 files):
Perlito5 - js3 - fix isa(), can(), for
pmichaud fwiw, though, I think my initial tests of 2012.09 star showed that LWP::Simple wasn't passing its tests anyway. 17:55
so we might need to roll it back to the 2012.08 version anyway.
moritz oh
yes
sorear can't we modify io::socket::inet to flush after operations? 17:57
moritz sorear: the socket related changes are mostly unrelated to the readline stuff
sorear: what changed there is that .recv(Int) used to treated the integer as a number of bytes (but retured Str), and now it's a number of codepoints 17:58
s/treated/treat/
18:01 jlaire left
pmichaud so, since lwp wasn't working with 2012.09 anyway, my current best guess is to continue moving back to 4.6.0 parrot, comment out the IO-Socket-INET.t test from spectest.data (at least for the release), and release Star 2012.09 using the 2012.08 version of lwp-simple 18:01
moritz +1 18:02
pmichaud (assuming it works)
but right this moment I need lunch first, so I'm doing that :)
18:04 kst left, erkan left 18:05 erkan joined, erkan left, erkan joined 18:07 spider-mario joined, mars__ left 18:14 kst joined 18:19 kaare__ left 18:30 leont joined 18:31 benabik joined, oi joined 18:32 oi left 18:37 psch joined 18:47 thou left 18:50 cognominal joined
dalek rlito: 4a4bd38 | (Flavio S. Glock)++ | / (3 files):
Perlito5 - new table CORE_OVERRIDABLE
18:54
19:04 thou joined 19:05 birdwindupbird joined
dalek kudo/nom: 2d0e2de | pmichaud++ | t/spectest.data:
Remove extra copy of integration/rule-in-class-Str.t added by 19d7cd2b9a.
19:24
rurban I've implemented now the parrot multi-byte variants for bit_ops strings 19:25
unspec'd are the conversion rules for different encodings, so I came up with some "good" rules 19:26
pmichaud I just want to have the codepoint values anded/ored
rurban band_s_s utf8:"bla" ucs2:"foo" 19:27
I rather want to convert utf8 to ucs2 before doing arith with them. or just the raw bytes?
pmichaud right, it should give back a string with codepoints 0x62 & 0x66, 0x6c & 0x6f, 0x61 & 0x6f 19:28
shachaf Why are you using UCS2 instead of UTF-16?
pmichaud we definitely don't want the raw bytes.. for a raw byte encoding one would first transcode the strings to fixed8 or something
rurban and for utf8, shouldnt it be downconverted to latin1 if possible?
pmichaud parrot has gone back-and-forth about whether it should automatically down-convert strings... I don't remember what the last decision was. 19:29
rurban I have now internal non-exiting latin1, and ucs2 converters
sorear should use ucs4, not utf16 19:30
logically, at least
rurban It was a TODO in the code, but I'm not sure if it makes sense at all.
ucs2 and ucs4 yes, utf8 and utf16 not
19:30 FROGGS joined, flightrecorder joined 19:31 preflex left 19:34 fgomez left 19:35 fgomez joined 19:36 sirrobert joined
sirrobert r: sub f { return { foo => 'a', bar => -> { return 'baz' }(), }, }; say f; 19:38
p6eval rakudo fea947: OUTPUT«baz␤»
sirrobert r: sub f { return { foo => 'a', bar => -> { 'baz' }(), }, }; say f;
p6eval rakudo fea947: OUTPUT«("foo" => "a", "bar" => "baz").hash␤»
sirrobert that seems a little weird to me (that the arrow-block return breaks context) 19:39
moritz which context is broken where?
19:39 benabik left
sirrobert maybe I misunderstood what *should* happen, but the return value of the ->{} block was given for the whole thing 19:40
moritz yes, because blocks are transparent to return
return always actions on routines
sirrobert so is The Right Thing to use implicit return?
moritz yes
explicit return from a block would be 'leave', but I guess that rakudo doesn't implement that yet
sirrobert is there a synonym for "return" that I could use? =) 19:41
inside blocks
moritz r: say (-> { leave 5 }).()
sirrobert well, a near-synonym I mean
p6eval rakudo fea947: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&leave' called (line 1)␤»
moritz n: say (-> { leave 5 }).()
p6eval niecza v22-6-g9e5350d: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'leave' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1437 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37) ␤ at /hom…
moritz huh, doesn't seem so popular :-)
sirrobert heh
moritz but leave should work, afaict
GlitchMr return 2 times following value Mu;
sirrobert r: sub f { return { foo => 'a', bar => -> { leave 'baz' }(), }, }; say f;
p6eval rakudo fea947: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&leave' called (line 1)␤»
19:42 preflex joined
moritz where "should work" means "according to the spec", not by current implementations 19:42
sirrobert fair enough
ok, thanks-- didn't know that about return =)
moritz note that that's very handy for dispatchers 19:43
sirrobert oh yeah: so that means that ->{} blocks are not Routine objects?
moritz correct
sirrobert they are what? Code?
or Block?
moritz r: say (-> { }).WHAT
p6eval rakudo fea947: OUTPUT«Block()␤»
sirrobert right =)
moritz r: say Block.^mro
p6eval rakudo fea947: OUTPUT«Block() Code() Any() Mu()␤»
sirrobert cool, thanks
moritz r: say Sub.^mro
p6eval rakudo fea947: OUTPUT«Sub() Routine() Block() Code() Any() Mu()␤»
sirrobert that's interesting
so a Sub could use "leave" as well (according to spec) 19:44
?
moritz yes
doc.perl6.org/images/type-graph-Code.svg
sirrobert ok, good to know
19:44 leont left
sirrobert is there something I could read about why it's especially good for dispatchers? 19:44
I mean, I could figure out a few things, but if there's some developed thought on it =)
moritz recently for a p5 work project I wanted to implement a text menu 19:45
something along the lines menu 'a' => &add_stuff, d => &delete_stuff, l => &list_stuff
sirrobert nod
moritz and the existing code used my $in = get(); if $in eq 'a' { add_stuff() } ... 19:46
and some of that returned from the outer routine
ie
sirrobert ahhh, cool
moritz if $in eq '-' { return SPECIAL_VALUE }
now, that thing is sadly written in Perl 5, not Perl 6 19:47
sirrobert the dispatcher can off-load it's own return to domain-specific blocks within
moritz in Perl 6 I'd have no trouble returing from the outer routine
sirrobert nod
moritz in Perl 5, there's no sane way to do that, since all callbacks are normal, anonymous subs
sirrobert yeah, I can see what you mean 19:48
moritz in the end I did a very nasty hack: www.perlmonks.org/?node_id=995995
(it being perl, there's always a hack possible; needless to say that Perl 6 makes the hack obsolete :-) 19:49
sirrobert clever hack =) 19:50
It's gotten hard for me to read p5 (even after 10 years doing it)
moritz it's gotten hard for me to write p5 without noting all those places where Perl 6 features would so much help me :-) 19:51
besides the obvious ones, I really love :$foo for passing named arguments
masak too 19:52
moritz needing to write foo => $foo in p5 feels so repetitive and ugly
sirrobert heh nod
masak I'm all for extending the :$foo syntax as far as we possibly can.
:$!foo was a good idea.
maybe :$<foo> would be, too.
moritz I think :.foo doesn't work yet either
masak ooh, it totally should. 19:53
moritz nr: $_ = 'bar'; say (:.foo).perl
p6eval niecza v22-6-g9e5350d: OUTPUT«===SORRY!===␤␤Bogus statement at /tmp/E0e7liA2_6 line 1:␤------> $_ = 'bar'; say (⏏:.foo).perl␤␤Parse failed␤␤»
..rakudo fea947: OUTPUT«===SORRY!===␤Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 2, near ":.foo).per"␤»
sirrobert how do I get the last element of an array? 19:54
moritz .[*-1]
sirrobert thanks
GlitchMr .new is so repeative ugly... what about .n instead? (not really serious)
moritz wonders if we can abuse the R meta operator for indexing from the back, written as @array.R[0]; # last element 19:55
pmichaud ick
that reads like Array.R.[0] to me :-) 19:56
moritz pmichaud: I wasn't entirely serious with that last one
though :.method was something I've wanted once or twice
std: :.method
p6eval std 77327a4: OUTPUT«===SORRY!===␤Bogus statement at /tmp/RfLXU7KekY line 1:␤------> <BOL>⏏:.method␤Parse failed␤FAILED 00:00 42m␤»
19:58 zby_home_ joined, raiph joined 20:00 Targen_ joined, Targen left 20:01 skids left 20:03 GlitchMr left
sirrobert r: my %h = { a => [[1,2],[3,4]] }; for %h<a> -> $b { say $b.perl; }; 20:03
p6eval rakudo fea947: OUTPUT«[[1, 2], [3, 4]]␤»
sirrobert What's the appropriate way to loop through the elements of %h<a> here? 20:04
moritz r: my %h = { a => [[1,2],[3,4]] }; for %h<a>.list -> $b { say $b.perl; }
p6eval rakudo fea947: OUTPUT«[1, 2]␤[3, 4]␤»
sirrobert context is everything
I keep forgetting I can recast
moritz the first few paragraphs of doc.perl6.org/type/List might be helpful 20:05
sirrobert thanks
20:15 benabik joined 20:16 revdiablo left 20:17 revdiablo joined
raiph hi all 20:22
sorear hello raiph 20:23
20:24 zby_home_ left
raiph hey sorear 20:27
20:46 mtk left
flussence question! (@hugearray X~ ', ') is lazy, is there an easy way to keep it that way and omit the trailing comma? 20:47
pmichaud you mean you want a comma concatenated to all of the elements of @hugearray except the last? 20:48
flussence the thing I'm going for is I want to print a long list formatted like that, but without waiting for join() to finish first 20:50
rurban pmichaud: my rurban/bitwise_uni-gh848 branch implements now some bit_ops encoding conversions
pmichaud rurban: cool, I'll take a look later when I get through some of the other issues 20:51
sorear flussence: my @temp := (', ' X~ @hugearray); @temp[0] .= substr(2)
rurban It's not perfect yet with ucs4
sorear not quite the same, but should be usable
flussence hadn't thought of prepending, that works for me :)
dalek p: f12484a | pmichaud++ | / (2 files):
Back PARROT_REVISION down to 4.4.0, bump VERSION to 2012.09.1
20:53
20:55 flightrecorder left
rurban Did step back to 4.4.0 work? 20:56
the step back...
20:56 FROGGS left
pmichaud well, we lose some of the socket improvements from 4.8.0, but better than than regress on all interactive i/o 20:57
*better that
20:57 atrodo left
sirrobert is there a better way to do this: 20:57
r: my $a = [[1,2],[3,4]]; my @firsts; for $a.list -> $b { @firsts.push: $b[0]; }; say @firsts;
p6eval rakudo 2d0e2d: OUTPUT«1 3␤»
sirrobert I want to get the first element of each array in an array of them.
pmichaud $a>>.[0] might work with the latest spec changes, but probably isn't implemented in rakudo yet 20:58
sirrobert doesn't work currently (but doesn't break) 20:59
pmichaud r: my $a = [[1,2],[3,4]]; say $a.map( *.[0] ).perl
p6eval rakudo 2d0e2d: OUTPUT«(1, 3).list␤»
sirrobert ahh map
pmichaud that looks like it works
sirrobert thanks
I knew my version was clunky, but had a hard time streamlining
sorear $a[*;0] should work per spec, I think 21:01
but nobody implements S09 that well
sirrobert What does the ; mean in this case? 21:02
pmichaud sorear: I think that might work only for declared dimensions. But I still haven't assimilated all of S09 yet.
sirrobert as in a 2d array?
ok
flussence r: my @hugearray := ^1_000_000; my @temp := (', ' X @hugearray).Array; @temp.shift; say @temp[^10].perl
p6eval rakudo 2d0e2d: OUTPUT«(0, ", ", 1, ", ", 2, ", ", 3, ", ", 4, ", ")␤»
flussence not as nice, but the other way didn't work...
21:06 kurahaupo joined 21:08 kurahaupo left 21:09 Moukeddar joined
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.
21:10 Moukeddar left
dalek rlito: 4bb1644 | (Flavio S. Glock)++ | / (2 files):
Perlito5 - js3 - replace assign() in runtime
21:15
21:16 benabik left
dalek 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
21:22 fglock_ left 21:25 birdwindupbird left
dalek kudo/nom: 7d227de | pmichaud++ | VERSION:
[release] bump VERSION
21:28
sirrobert can a role define it's own postfixes? 21:31
method postfix<->, for example?
pmichaud postfix is currently defined as an operator (sub), not a method. 21:33
sirrobert ok, so to do stuff like + or - on DateTime objects, I would define a new multi method postfix:<+> (DateTime $a, DateTime $b) {...} type of deal? 21:34
err multi sub
I guess multi sub infix:<+> 21:35
nice, that worked 21:36
thanks, pm
Doing some Date::Manip type stuff.
ok, later p6; have a good weekend =) 21:37
21:37 sirrobert left 21:38 stepnem left 21:39 ServerSage left 21:46 psch left 21:47 psch joined 21:48 cognominal left
pmichaud okay, I've created a 2012.09.1 release for rakudo and nqp. Any testing people can do on the release would be helpful -- especially those folks that have had trouble with reading standard input. 21:49
Note that it may be necessary to eliminate/remove copies of Parrot 4.8.0 to make sure you get a version of Parrot earlier than that.
21:49 spider-mario left
pmichaud I'll work on creating a new 2012.09 star tarball tonight/tomorrow morning, with a planned release tomorrow sometime 21:49
felher pmichaud: what is it that i should test? up-to-date git? 21:53
21:55 thou left 21:56 thou joined 21:57 cognominal joined, cognominal left 21:59 Su-Shee_ joined 22:00 skids joined, Su-Shee left
felher \o/ newest git checkout doesn't have the 'say $*IN.get();' Problem anymore. 22:01
22:02 cognominal joined
felher pmichaud++ 22:03
22:13 stopbit left 22:21 Targen_ left 22:41 arlinius left
pmichaud felher: what version of parrot, ooc? 22:46
22:46 leprevost left
pmichaud (./perl6 --version will tell parrot version :) 22:47
felher ./perl6 --version gives me: This is perl6 version 2012.08-119-g0973612 built on parrot 4.7.0 revision RELEASE_4_7_0-165-g29796c6 22:50
@ pmichaud
22:53 whiteknight joined 23:00 bluescreen100 joined, bluescreen100 left, bluescreen10 left 23:11 MayDaniel left 23:17 daniel-s left 23:18 daniel-s joined
pmichaud felher: thanks. I suspect if you try running rakudo with parrot 4.8.0 the problem reappears. 23:34
felher pmichaud: should i try? And if so, whats the easiest way to do so? 23:35
pmichaud felher: it's up to you if you want to try -- easiest is perl Configure.pl --gen-parrot=RELEASE_4_8_0 23:36
felher pmichaud: thnx :) 23:37
23:46 benabik joined
felher pmichaud: yeah, you were right. On updating to 480 it breaks again. :) 23:47
pmichaud okay, good to know. 23:50
if you have time, perhaps also try 23:51
perl Configure.pl --gen-parrot=master
that will try the parrot bleeding edge, which as of a few minutes ago has a patch or two to address the problem
(maybe address the problem :) 23:52
23:57 tokuhir__ joined 23:59 johnjohn101 joined