»ö« 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 failedFAILED 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:1foo» | ||
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 1Unhandled 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).perlParse 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>⏏:.methodParse failedFAILED 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
|