»ö« 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. |
|||
00:02
stephenlb left
00:03
atrodo left,
skids joined,
stephenlb joined
00:04
HarryS left,
HarryS joined
00:09
whiteknight joined
00:10
whiteknight is now known as Guest51241
00:16
jaldhar_ joined,
_jaldhar left
00:31
leprevost left
00:37
tokuhiro_ left
00:48
spaceships joined
00:54
jaldhar_ left,
jaldhar_ joined
01:00
spaceships left
01:05
benabik_ joined,
benabik_ left,
benabik_ joined,
thou joined,
benabik left,
benabik_ is now known as benabik
01:16
scott__ joined
01:25
dukeleto joined
01:28
spaceships joined
01:30
Guest51241 left
|
|||
pmichaud | TimToady (and others who want to contribute): github.com/perl6/specs/issues/18 | 01:43 | |
(just made a minor edit; reload) | 01:44 | ||
colomon | plan? | 01:45 | |
pmichaud | .plan is the lazy form of .push | ||
perlcabal.org/syn/S32/Containers.html#plan | 01:46 | ||
colomon | bless you. | ||
errr, rather, pmichaud++ | |||
pmichaud | afaik it's nyi in rakudo, but can be easily made into yi | ||
colomon | so plan will definitely do the job, right? | ||
pmichaud | yes, but I'm not sure that's really intended to be the canonical way of combining the elements of two lists | 01:47 | |
(or more) | |||
colomon | I don't know about that (don't know enough about .plan to judge yet) but it does kind of feel like there ought to be a graceful operator to do this. | 01:48 | |
pmichaud | oh, and actually plan (as defined in S32) *won't* do it, because it flattens. | 01:49 | |
I'll update the ticket. | |||
updated. | 01:50 | ||
colomon++ | 01:51 | ||
colomon | so, graceful operator? | 01:52 | |
pmichaud | I don't know yet. :-) | ||
colomon | almost seems like the pipe operator should do this? | 01:53 | |
pmichaud | I'm hoping that's not the case. It may be the case. | ||
colomon | (I mean, not that it's implemented that away now, but could be.) | ||
pmichaud | (|@x, |@y) concerns me a little bit because it'll mean we need "lazy Parcels". We might need them anyway, but that will mean I get to start bugging jnthn++ about it :) | 01:54 | |
i.e., the binder would have to know how to deal with Parcels that have "bare" active iterators in them. | 01:55 | ||
01:56
dukeleto left,
Exodist left,
plobsing left,
aloha left,
rsimoes left,
c1sung left,
baest left,
domidumont left
|
|||
pmichaud | ...although I guess it would really end up being (|@x, |@y).list ... which doesn't frighten me _quite_ as much. | 02:03 | |
but our mechanism for piping things is currently eager-ish. | |||
colomon | pmichaud: just so it's clear, I'm proposing we spec an operator to do this. I don't know what we've got now that can implement it, other than brutally using gather / take. | 02:04 | |
pmichaud | colomon: okay, good clarification. I suspect "spec a new operator" falls into TimToady++ realm. | 02:05 | |
colomon | and it seems like a low-level approach is likely to be best, anyway. | ||
pmichaud | yes | ||
colomon | (implementing it, I mean) | ||
colomon suspects infix:<followed-by> is a bit long | 02:06 | ||
pmichaud | in some way it feels similar to the metaops, like reduction or zip or something, since we're doing something to multiple lists | 02:07 | |
colomon | agreed | ||
infix:<ZZ>? | |||
colomon is sure TimToady will swoop in and fix an inelegant solution sooner or later. | 02:08 | ||
pmichaud | well, it's more like a reduction | ||
[followed-by] @a, @b | |||
but without the flattening that reduction implies :-) | |||
anyway, yes, I'll await the swoop. | 02:09 | ||
colomon | [,] @a, @b | ||
? | |||
pmichaud | Knowing the answer to this question may speed me a fair bit along on fixing some of the other List issues | ||
(...and it may not :-) | |||
colomon | ah, I was proposing we just come up with something in the full knowledge we'll probably have to do a search and replace when TimToady++ gets involved. | 02:10 | |
pmichaud | [,] is already specced to mean "make a new Array" | ||
well, I don't need the answer so much for an immediate code problem as I do for the overall question of improving the List implementation | 02:11 | ||
I mean, I could just define a @x.CONCAT(@y) and patch it all up internally and it wouldn't really answer my overall understanding of flattening behavior | 02:13 | ||
that's why the question is more about the canonical answer than "let's just make something that works" | |||
02:14
mucker left
|
|||
colomon | It's just I get the urge to implement something when I realize there's a hole, you know? :) | 02:14 | |
02:14
dukeleto joined,
Exodist joined,
plobsing joined,
aloha joined,
rsimoes joined,
c1sung joined,
baest joined,
domidumont joined,
wolong joined,
apejens_ joined,
Tene joined,
pnu joined
|
|||
pmichaud | I've updated the original issue to clarify that I'm looking for the canonical answer and the underlying reason for the question. colomon++ again. | 02:16 | |
colomon | btw, this conversation is memorialized anyway, no? ;) | 02:18 | |
pmichaud | yes, but it's less formal than a conversation in an issue thread, I think. | ||
it's more conducive to back-and-forth discussion, as we've been having here. | |||
a reply in an issue thread might be taken as "here's the answer" even when it's meant to be more speculative :) | 02:19 | ||
my main intent for putting things into specs/issues is to keep a list of the outstanding questions, so they aren't forgotten | 02:20 | ||
secondarily, they can record the major points of decision and discussion | |||
for back-and-forth discussion and brainstorming/exploration, I feel like IRC is better suited for that | |||
afk, time to walk the dog | 02:21 | ||
02:31
odoacre joined
02:40
orafu left
02:43
orafu joined
03:14
spaceships left
03:23
Su-Shee_ joined
03:27
Su-Shee left
03:32
TomDLux joined
03:34
TomDLux left
03:35
snearch joined
03:40
snearch left
03:48
am0c_ joined
04:15
simcop2387 left
04:17
simcop2387 joined
04:23
snearch joined
04:24
snearch left
04:25
snearch joined
|
|||
thou | tadzik: is this known panda build failure: paste.lisp.org/display/130520 | 04:25 | |
04:25
thelazydeveloper left
|
|||
thou | This is perl6 version 2012.06-87-g499cc68 built on parrot 4.5.0 revision RELEASE_4_5_0 | 04:34 | |
04:35
pupoque joined
|
|||
thou | (and panda github master) | 04:40 | |
05:00
scott__ left
05:01
birdwindupbird joined
05:02
kaare_ joined
05:03
scott__ joined
05:25
snearch left
|
|||
thou | i've found that the problem file will compile OK if I remove one directory from PERL6LIB: paste.lisp.org/display/130520#1 | 05:29 | |
maybe an issue with my using recent git version of nom | 05:30 | ||
05:31
pupoque left
05:33
[particle]1 joined
05:34
[particle] left
05:38
stepnem left
|
|||
thou | anyways, in case someone else runs into it, a workaround is to install the dependencies (File::Tools, JSON::Tiny, Test::Mock) with $SRC/ext in PERL6LIB, and then install panda itself (.) without it in PERL6LIB | 05:50 | |
05:54
samlt joined
05:57
sisar joined
05:58
am0c_ left
05:59
kaleem joined
|
|||
dalek | nda: a5814af | moritz++ | bootstrap.pl: [bootstrap.pl] avoid a warning if $PERL6LIB is not set |
06:06 | |
06:11
wtw joined
06:12
nodmonkey joined
06:14
Su-Shee_ is now known as Su-Shee
|
|||
tadzik | thou: oh, that rings a bell | 06:20 | |
thou | morning, tadzik! | 06:21 | |
tadzik | thou: can you try boostraping on offline-bootstrap branch? | ||
06:21
GlitchMr joined
|
|||
tadzik | good morning thou :) | 06:21 | |
06:26
stephenlb left
|
|||
moritz | \o | 06:27 | |
tadzik: I have a patch that fixes bootstrapping in the master branch for me | 06:28 | ||
based on thou++'s observations | |||
tadzik | great | ||
thou | ==> Succesfully installed panda | ||
tadzik | did you try offline-bootstrap yet? | ||
thou | (with offline-bootstrap) | ||
moritz | no | ||
tadzik | \o/ | ||
okay, I need to go to work now :) | 06:29 | ||
Will catch up with you later | |||
thou | ok! | ||
dalek | nda: 04b6755 | moritz++ | bootstrap.pl: make bootstrap.pl more robust do not add ext/ to lib once ext/ is installed |
||
moritz | thou++ | ||
06:39
stepnem joined
|
|||
thou | hmmm, seems that offline-bootstrap didn't install anything in ~/.perl6, so i'd have to point PERL6LIB at ~/.panda/src/* or some such to get at my modules. FYI, test is simply: rm -rf ~/.perl6 ~/.panda; perl6 bootstrap.pl; perl6 $HOME/.perl6/bin/panda | 06:47 | |
moritz | thou: does panda's master branch work for you after my latest patch? | 06:48 | |
06:48
adu joined,
nodmonkey left
|
|||
thou | i expect it will, i'll verify | 06:51 | |
moritz: yes, works well | 06:53 | ||
moritz | \o/ | ||
moritz -> commute | |||
06:55
thou left
07:03
thou joined
07:04
brrt joined,
birdwindupbird left
07:23
fhelmberger joined
07:38
sisar left
07:46
cosimo joined
|
|||
moritz | do we have a good name for non-native types? | 08:03 | |
brrt | objects? | ||
sorear | boxed types? | 08:05 | |
refernece types? | |||
[1] officially, there is no "str" type, even if rakudo supports it and niecza plans to | |||
hoelzro | are there any known bugs in the regex engine? maybe some that have been fixed since Rakudo * 2012.06? | 08:13 | |
I'm making use of a fairly trivial one, but the program locks up when matching | |||
and the problem is *really* hard to duplicate outside of my program | |||
moritz | hoelzro: the common cause for infinite loops in the regex engine is quantification of zero-width matches | 08:15 | |
hoelzro: if you do <.foo>+ and foo can match zero characters, it loops | |||
08:25
kresike joined
|
|||
kresike | hello all you happy perl6 people | 08:25 | |
hoelzro | =( | 08:31 | |
moritz: the regex is just /^ bot <[:,]>/ | |||
and it only triggers when invoked at a certain point in the call stack | 08:32 | ||
moritz | hoelzro: that's very odd | ||
hoelzro | moritz: you're telling me =) | 08:33 | |
moritz | hoelzro: what string or object are you matching on? | 08:34 | |
hoelzro | moritz: just a string | ||
"yo" | |||
moritz | yo, that's weird | 08:35 | |
hoelzro | indeed | 08:36 | |
any recommendations on how to debug this? | 08:37 | ||
I might try running it with rakudo HEAD when I get home | |||
moritz | try to make it reproducable | ||
and give masak++ or me a tarball | |||
and then one of us will try to golf it down | 08:38 | ||
hoelzro | yeah, I'm trying | ||
the problem is it's an XMPP bot | |||
and when I give the bot a "fake" connection that creates the same messages, the regex magically works | |||
moritz | oh | 08:39 | |
hoelzro: try $str = $str.encode.decode; before matching against $str | |||
hoelzro: it could be some oddity related to internal representation of the string | 08:40 | ||
hoelzro | moritz: thanks, will do | ||
hang on | |||
moritz | r: say nqp::box_s(nqp::unbox_s("foo").encoding) | ||
p6eval | rakudo 74e183: OUTPUT«use of uninitialized value of type Mu in string context in any <anon> at src/gen/BOOTSTRAP.pm:104use of uninitialized value of type Mu in string context in any <anon> at src/gen/BOOTSTRAP.pm:104===SORRY!===error:imcc:The opcode 'repr_box_str_p_s' (repr_box_s… | ||
moritz | r: say nqp::p6box_s(nqp::unbox_s("foo").encoding) | ||
p6eval | rakudo 74e183: OUTPUT«No such method 'encoding' for invocant of type 'String' in block <anon> at /tmp/rByhyF7rpN:1» | ||
hoelzro | moritz: no dice | 08:41 | |
08:41
thou left
|
|||
hoelzro | wait, nvm! | 08:41 | |
that worked! | |||
moritz | \o\ /o/ | ||
hoelzro: do you get that string from $socket.recv? | 08:42 | ||
hoelzro | moritz: sort of; it was created from JSON parsed from a string from a socket | ||
moritz | hoelzro: then it's kinda surprising that the JSON parsing worked, but the regex match didn't :-) | 08:43 | |
hoelzro | it's really odd | ||
I think I was testing for the lock up wrong on this machine | |||
so now I have to go back and check =/ | |||
moritz | anyway, the good news is that there's a parrot branch that makes IO a bit more sane | ||
hoelzro | I was doing say 'before'; return unless $msg.body =~ /$re/; say 'after' | 08:44 | |
ok, cool | |||
moritz | the bad news is that it will be merged after this month's parrot release | ||
hoelzro | meh, I can wait | ||
moritz | so it'll be in rakudo 2012.09 | ||
erm, 08 | |||
hoelzro | I should try to get my getsockname stuff into Parrot while I can | ||
08:55
adu left
08:59
daxim joined,
am0c_ joined
|
|||
cognominal__ | r: say ?!a | 09:02 | |
p6eval | rakudo 74e183: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&a' called (line 1)» | ||
moritz | hoelzro: with the offensive string, please try nqp::p6box_s(pir::encodingname__SI(pir::encoding__Is(nqp::unbox_s($YOURSTRING))); | ||
cognominal__ | r: say ?:!a | ||
p6eval | rakudo 74e183: OUTPUT«True» | ||
moritz | hoelzro: and tell me the result | ||
cognominal__ | did not read the doc, but I would have expected this one to be false. | ||
moritz | (ie, say the result of that expression) | ||
cognominal__: its value is false | |||
cognominal__: not the pair itself | |||
09:03
samlt left
|
|||
cognominal__ | yes, I rephrase: I expected the pair to be false too. | 09:04 | |
09:05
samlt joined
|
|||
moritz | hm | 09:05 | |
cognominal__: do you have a use case where it's useful to be false? | |||
it might be useful behavior. I don't know :-) | |||
cognominal__ | I was asking myself the same question :) | ||
I suppose I could translate my gut feeling by the expectation ?:!a would be a huffmanization of ?:!a.value | 09:07 | ||
or more vaguely that it dwims :) | |||
09:08
bbkr joined
|
|||
moritz | otoh with the current factoring, you can write while my $pair = @queue.shift { ... } | 09:08 | |
and have it DWYM even for false Pair values | |||
cognominal__ | but, it may break important things | ||
meaning? | 09:09 | ||
hoelzro | moritz: for some reason, it's working on this machine =/ | ||
I'll try your solution when I get back home | |||
09:17
samlt left,
samlt joined
09:22
sisar joined
09:24
snearch joined
|
|||
Coleoid | I'm looking at roast/TODO and seeing numbers a la r28344, which I cannot find in rt.perl.org... | 09:40 | |
Have I gone astray in some part of this, or should this work? | |||
sorear | things that match r\d+ are SVN revisions | 09:41 | |
Coleoid | Ahh... | ||
moritz | Coleoid: those notes are probably out of date :( | 09:42 | |
they were commits to the synopsis, at the time when the synopsis were still in svn | |||
sorear | historically #perl6 has used the Parrot SVN repo, which contained Parrot and Rakudo, and the Pugs repo, which contained *everything else* | ||
moritz | (and even before that, the synospis were in their own svn repo somewhere on svn.perl.org) | 09:43 | |
Coleoid | I recall, wayback, the specs being in pugs, and rakudo being in parrot... | ||
sorear | but in the last few years we've 1. split the repos into more managable pieces 2. moved everying onto github | ||
Coleoid | So is there a process to resolve these links, | 09:44 | |
...to current git change IDs, or are many of these likely to be done already? | 09:45 | ||
moritz | you can do a 'git log' in the specs repo, and search for the SVN revision number (without the leading 'r') | 09:46 | |
sorear | github.com/perl6/specs/commit/5665...1378e33874 | ||
on a lark I checked 'specs' first | 09:47 | ||
it's there. | |||
moritz | but it is unlikely to give you good ideas what to work on | ||
Coleoid | Is there a more up-to-date source of test/spec TODOs? | ||
moritz | Coleoid: I think currently the best idea is to look at the last few months of spec commits, and check the tests if they have been updated | 09:48 | |
Coleoid | (Checking...) | 09:51 | |
moritz | usually I have a huge load of roast tasks in the back of mind | 09:52 | |
I'm surprised to find that I can't seem to remember any | |||
Coleoid | Please let me know if some return to roost. | ||
jnthn | good day o/ | 09:54 | |
moritz | \o jnthn | 09:55 | |
10:03
scott__ left
|
|||
jnthn | (roast tasks) there's also the testneeded queue. | 10:05 | |
moritz | aye | 10:07 | |
but many of those are non-trivial | |||
because the tickets only mention what the stuff should *not* do | |||
or much is about how errors are reported, for which you need typed exceptions to do the testing right | 10:08 | ||
10:08
brrt1 joined
10:09
brrt left
|
|||
jnthn | Ah, true. | 10:11 | |
10:11
brrt1 is now known as brrt
|
|||
cognominal__ | putain, je voudrais faire des courses pour bouffer | 10:16 | |
c'est quoi ce temps à la con? c'est la faute au nouveau gouvernement ou c'est l'héritage sarkozien? | |||
moritz | cognominal__: wrong channel? | 10:17 | |
cognominal__ | oops | ||
jnthn | phenny: "putain"? | ||
phenny | jnthn: "whore" (fr to en, translate.google.com) | ||
jnthn | whoa! | ||
I thought it was just "Darn" | 10:18 | ||
tadzik | :) | ||
cognominal__ | that's a standard expletive | ||
jnthn | Political rants...they get ugly :P | ||
cognominal__: At school the worst they taught us was, "zut alors" | 10:19 | ||
cognominal__ | I wonder who I need to blame for the bad weather | ||
jnthn, I hear "zut" twice a year, at most | 10:20 | ||
jnthn | hah! | ||
Typical high school French. Teaching you the untrendy curses. | |||
cognominal__ | but, that's was intended for #perlfr where we curse a lot. | 10:21 | |
10:21
Psyche^ joined
|
|||
cognominal__ | I suppose, if I had a child, I would ask him to say "zut" when talking at the familial table with no illusion about what he would say elsewhere | 10:22 | |
moritz just learned "merde" | 10:23 | ||
cognominal__ | with putain and merde, you can go a long way. | ||
10:24
Patterner left,
Psyche^ is now known as Patterner
|
|||
cognominal__ | I wonder what the french translation of the "Big Lebowsky" use for "fucking" | 10:25 | |
*uses | |||
brrt | ... | 10:27 | |
that is possible to find out | 10:28 | ||
10:29
GlitchMr42 joined
|
|||
arnsholt | cognominal__: I lolled at "c'est la faute au nouveau gouvernement ou c'est l'héritage sarkozien?" | 10:29 | |
=) | |||
As did one of my colleagues, when he came over to see what I was laughing at ^_^ | |||
jnthn | .oO( The new government have already achieved growth...in the number of clouds above France ) |
||
10:30
GlitchMr left,
GlitchMr42 is now known as GlitchMr,
am0c_ left
|
|||
arnsholt | I really need to clean up some warnings in nqp_dyncall.ops just too hard to find the errors among all the warnings | 10:35 | |
jnthn: Is there an easy way we can stash the stuff created for a callback after it's been created? | 10:43 | ||
If there isn't, I think we'd be forced to leak some memory for callbacks | |||
Speaking of memory leaks and such, is there a chance that anonymous subs can get GCed? | 10:45 | ||
jnthn | Anonymous subs certainly can get GC'd, yes. | 10:46 | |
sorear | it depends on how they are created | 10:47 | |
jnthn | And closures taken of them very certainly can. | ||
sorear | anonymous subs created by closure cloning can be GCed | ||
anonymous subs created by the compiler for 'eval' cannot | |||
(don't use eval.) | |||
arnsholt | I was thinking of something like this: native-func(sub(int $ival) { say $ival }) | 10:48 | |
jnthn | Yes, that's at risk. | ||
arnsholt | 'k. Hopefully not a big deal, at least initially | 10:49 | |
jnthn | I mean, if it's called back during the call to native-func it's OK | ||
If the callback is stashed somewhere and invoked by a later native call, that could be more problematic. | |||
arnsholt | Indeed. File under "manually managing memory" I suppose | 10:50 | |
But the other thing: Is there some place we can easily stash a few pointers of data about a sub? | 10:51 | ||
jnthn | Does dyncallback not give you a way to keep some data around and have it passed back to you when the callback is invoked? | 10:52 | |
arnsholt | Sure, that's not the problem | ||
jnthn | Yeah, userdata | 10:53 | |
arnsholt | The problem is that we don't know whether a callback will be invoked several times or only once, so it's not safe to free the data in the callback handler | ||
jnthn | Ah, I see. | ||
So we'd end up leaking that. | |||
arnsholt | Currently we'll allocate a string, a struct and the callback function itself every time a sub is passed as a callback arg | ||
So, depending on the size of the callback function, a few hundred bytes a pop, I guess | 10:54 | ||
jnthn | Well, you can keep an array of pointers to that userdata | ||
Just in a static or something like that. | 10:55 | ||
And maybe some op to free things up afterwards. | |||
In general, we can't know when it's OK to free it. We'll probably have to provide a way in Zavolaj for the user to give hints. | 10:56 | ||
arnsholt | Yeah, we'll probably want a few toggles to mark the C data in structs and arrays as freeable as well I think | 10:58 | |
11:05
brrt left
11:12
thelazydeveloper joined
|
|||
cognominal__ | nqp: say( <e a b g d >.sort) | 11:25 | |
p6eval | nqp: OUTPUT«5» | ||
cognominal__ | hum | ||
I have trouble with nqp. how to get the sorted array instead of the length | 11:26 | ||
tadzik | it probably stringifies it that way | ||
use join | |||
nqp: say( <e a b g d >.sort.join(", ")) | |||
p6eval | nqp: OUTPUT«Method 'join' not found for invocant of class 'ResizablePMCArray'current instr.: '_block1000' pc 58 ((file unknown):171419499) (/tmp/9a4LGju2KR:1)» | ||
tadzik | nqp: say( pir::join(<e a b g d >.sort, ",")) | ||
p6eval | nqp: OUTPUT«,» | ||
tadzik | grr | ||
nqp: say( pir::join(", ", <e a b g d >.sort)) | 11:27 | ||
p6eval | nqp: OUTPUT«a, b, d, e, g» | ||
tadzik | aye | ||
cognominal__ | and that the beginning of it cuz I will need to pass the function that does the sort. | ||
tadzik: where is the "nqp" sort routine defined? | 11:28 | ||
is that pmc stuff? | |||
11:28
xinming left
|
|||
tadzik | I think so | 11:29 | |
moritz | in ResizablePMCArray | ||
tadzik | it may be a Parrot VTABLE, but I'm not sure | ||
moritz | not a vtable, just a method | 11:30 | |
cognominal__ | so when it does not find a regular method it defaults to a parrot vtable method? | ||
moritz | no | ||
vtables and methods are called differently | 11:31 | ||
11:31
fridim_ joined
|
|||
cognominal__ | so concretely where is defined the sort method in my case? | 11:31 | |
moritz | parrot/src/pmc/fixedpmcarray.pmc | 11:32 | |
bbkr | How can I slurp png image into variable? I added :bin flag to open but slurp tells me "This type cannot unbox to a native string" | 11:33 | |
moritz | I don't think we do binary slurp yet | 11:34 | |
you probably need my $f = open :bin, $filename; my $buf = $f.read(1e32); $f.close or so | 11:35 | ||
cognominal__ | apparently I can pass a compare func :) | ||
bbkr | moritz: I need to endode it for transport using Base64, which accepts only string. And binary buf will not decode to Str for the same reason that slurp failed :( | 11:37 | |
moritz | bbkr: erm, what? | ||
bbkr: how are you calling decode? | 11:38 | ||
(the obvious fix is to implement base64 encoding on buffers) | |||
bbkr | I've tried your solution and it also fails on read | 11:40 | |
my $f = open ("/Users/bbkr/Developer/Perl6/MongoDB/logotype/logo_32x32.png", :bin); my $b = $f.read(1e32); $f.close; # trying sample image | |||
This type cannot unbox to a native string | |||
11:41
fridim_ left
|
|||
moritz | huh | 11:41 | |
tadzik | huh, which type | 11:42 | |
moritz | hm, 1e32 might be a bit big | ||
tadzik | r: my $a = 1e32 | ||
p6eval | rakudo 74e183: ( no output ) | ||
tadzik | r: my $a = 1e32; say $a | ||
p6eval | rakudo 74e183: OUTPUT«1e+32» | ||
moritz | bbkr: I can read 1e5 bytes from my 'perl6' binary | 11:43 | |
and it only returns 68435 bytes | |||
bbkr | same issue | ||
moritz | then your rakudo build is broken | 11:44 | |
star: my $f = open('bin/perl6', :bin); say $f.read(1e5).bytes; $f.close | |||
p6eval | star 2012.06: OUTPUT«open is disallowed in safe mode in sub restricted at src/SAFE.setting:2 in sub open at src/SAFE.setting:5 in block <anon> at /tmp/DRhkJxnGlV:1» | ||
moritz | meh | ||
bbkr | opening perl6 binary works fine, opening png fails | 11:48 | |
moritz | works fine here with a 24571 byte PNG image | 11:49 | |
bbkr | can you try to download github.com/bbkr/mongo-perl6-driver..._32x32.png and try? | ||
maybe some byte sequence insice causes this issue | |||
moritz | just a sec | 11:50 | |
bbkr | inside* | ||
moritz | works fine here | ||
11:50
skids left
|
|||
moritz | reads 4837 bytes, same as 'wc -c' | 11:50 | |
kresike | bye all | 11:52 | |
11:52
kresike left
|
|||
bbkr | moritz: I found my mistake - had space after open and bracket :) | 11:53 | |
tadzik | aaaargh | ||
moritz | oh | ||
tadzik | that sounds infuriating | 11:54 | |
moritz | still the error is LTA | ||
tadzik | however you write that | ||
yep | |||
bbkr reports | |||
thanks :) | |||
moritz | it should eithe constrain the type to Str, or should coerce to it | ||
tadzik | the first thing we ever put into Perl::Critic is checking for things like this | 11:55 | |
subcall (foo); "please write me as subcall((foo)) to not confuse everybody" | |||
bbkr | everything works now, including slurp and base64 on binary data | 12:04 | |
felher | I just read that a Hash is a EnumMap. But a EnumMap is supposed to be immutable according to specs, while a Hash isn't. If i create a sub like 'sub some-sub(EnumMap $em) ', i'd expect $em to be immutable. Which it doesn't have to be, because i can put a Hash in it. Is it supposed to be that way? | 12:05 | |
Or maybe i got something wrong? | |||
moritz | felher: well, the expection that $em will be immutable is simply wrong | ||
*expectation | |||
that's not how Liskov works | 12:06 | ||
it only gives weaker assertions of the type "if I can call method m on EnumMap, then I can call it on any subclass of EnumMap too" | 12:07 | ||
12:09
Coleoid left
12:10
Su-Shee left
|
|||
felher | moritz: you're right. That isn't how Liskov works. But i find it to be odd nevertheless. Like if there were a subclass of String in the standard Java library, that is mutable. Well, not that bad, but it may be the same direction. | 12:14 | |
moritz | felher: as long as it's only odd (and not bad) that's OK :-) | 12:16 | |
12:16
JimmyZ joined
12:25
[particle] joined
12:28
[particle]1 left,
plobsing left
|
|||
felher | moritz: okay. What do you think about mentioning it in the EnumMap spec, that Hash is a EnumMap, but not immutable. So that noone comes across EnumMap and thinks it's a good idea to have a class that gets EnumMaps and uses them while relying on them being immutable? | 12:30 | |
moritz | felher: that's something that belongs in user docs, not in the specs | 12:31 | |
12:31
plobsing joined
|
|||
felher | moritz: okay :) | 12:31 | |
moritz | felher: and yes, EnumMap and Hash are still TODO. You can add them if you want :-) | ||
felher | moritz: k. If i have some spare time this weekend. But probably not until next tuesday is over. :) | 12:33 | |
After tuesday, chances are i have some time to spare :) | |||
dalek | c: 9231982 | moritz++ | lib/objects.pod: start "objects" language documentation |
12:42 | |
c: 9439739 | moritz++ | TODO: note that Hash and EnumMap are TODO |
|||
colomon | www-fp.cs.st-andrews.ac.uk/~icfppc/task.pdf | 12:44 | |
moritz | nice :-) | 12:47 | |
now we just have to allow multiple robots at once per level, and have them leave land mines at certain spots... | 12:51 | ||
12:53
samlt left,
samlt joined
12:54
spider-mario joined
12:59
bluescreen10 joined
13:12
bluescreen10 left
13:14
xinming joined
13:17
localhost left
13:18
jaldhar_ left,
localhost joined
13:26
bluescreen10 joined
13:28
wtw left
13:46
atrodo joined
13:59
kaleem left
14:07
fgomez left
14:08
samlt left,
samlt joined
14:09
GlitchMr left
14:13
dukeleto left,
skids joined
14:27
dukeleto joined
14:29
hoelzro joined
|
|||
PerlJam | Some of you probably saw it on #parrot, but I thought I'd mention it here anyway: blogs.perl.org/users/rurban/2012/07...sting.html | 14:29 | |
Seems like a good resource for someone to setup test environments for Rakudo | |||
14:33
hoelzro left
14:34
birdwindupbird joined
14:39
hoelzro joined
14:41
jtpalmer joined
14:45
sirrobert joined
14:50
birdwindupbird left
14:53
cognominal__ left
14:54
fhelmberger left
14:58
MayDaniel joined
15:02
cognominal joined
15:04
mucker joined
15:05
mucker left,
cognominal left,
mucker joined
15:06
cognominal joined
15:13
thou joined
15:15
cognominal left
15:16
cognominal joined
15:20
vmspb joined,
cognominal left
15:21
cognominal joined,
thou left
15:22
thou joined
|
|||
sirrobert | Apparently .can does not recognize fallback methods set up with .^add_fallback (gist.github.com/3105446). Is that intended? | 15:23 | |
jnthn | Hmmm | 15:25 | |
Lemme see what S12 says on .can | |||
Yeah, it probably should. Looks like NYI. | 15:26 | ||
.oO( Not that .^add_fallback is in any way spec'd... ) |
|||
TimToady | does that add a method, or a place to look for methods that can be modified after the fact, as CANDO specs | 15:27 | |
jnthn | TimToady: It's more in CANDO space. | ||
TimToady: It's the guts behind "has $!a handles *;" style wildcarding constructs. | |||
TimToady: Which now seems to have scaped into people's code. :/ | 15:28 | ||
TimToady | ah, good | ||
jnthn | Despite me insistently saying "please, do it with handles if you can" :) | ||
*escaped | |||
TimToady | I mean, the semantics, not the escape :) | ||
jnthn | I'm a bit hazy on CANDO. | ||
TimToady | well, maybe it's an eval-class escape valve | ||
jnthn | Yeah, I guess. | 15:29 | |
Well, I'm a bit hazy on .^can too. | |||
TimToady | we should probably look at where it escaped, and why | ||
diakopter | scaped indeed | ||
jnthn | Well, in at least one case when I enquired the answer was, "oh, I didn't know about handles *" | ||
TimToady | the intent of can is to be lazy with respect to fallbacks | 15:30 | |
jnthn | Do we expect .can to return something you can invoke? | ||
Or something you can iterate that produces things to invoke? | |||
Or both? | |||
15:30
cognominal_ joined
|
|||
TimToady | both is usually nice, except when it isn't... | 15:31 | |
jnthn | In b we tried to make it both and it got horrible. | ||
In nom I stripped it back to "an iterable thingy" | |||
And haven't heard yelps of surprise | |||
Mostly because it gets used in boolean context. | |||
TimToady | iterable is more important than invokable, I suspect | ||
jnthn | And "has no elements" is false, as desired. | 15:32 | |
TimToady | and there's always [0]() | ||
jnthn | Well, you can .^find_method if you just want to get something invokable too :) | ||
I guess a related question is, should .+ and .* operate in terms of .^can? | 15:33 | ||
15:33
cognominal left
|
|||
jnthn | Which'd mean they will consider fallbacks too... | 15:33 | |
TimToady | why not? | ||
jnthn | I don't particularly have reasons for them not to :) | ||
masak | greetings, #perl6 | 15:34 | |
jnthn | In fact, I'd more argue for them doing so :) | ||
15:34
MayDaniel left
|
|||
jnthn | Just wanted to get a feeling of what's expected so I can implemented a righter thing. | 15:34 | |
o/ masak | |||
15:36
[particle] left
|
|||
masak back-clogs | 15:38 | ||
15:39
spaceships joined
15:41
spider-mario_ joined,
spider-mario left,
spider-mario_ is now known as spider-mario
|
|||
colomon | ooo, back clogging is much harder than forward clogging. you have to be careful not to dance into something you don't see... | 15:42 | |
TimToady! \o/ | |||
masak | also, the clogs are really hot. | ||
TimToady | that's from the IR | ||
masak | <Coleoid> I recall, wayback, the specs being in pugs, and rakudo being in parrot... | 15:43 | |
this comment gave me the mental image of Perl 6 unfolding over the years like an intricate flower... | |||
TimToady is only briefly on before commuting to Seattle to see Cid Taliessin Hudspeth. | 15:44 | ||
colomon | Cid++ | ||
one of our local "cloggers": www.nicgareiss.com/Premise.html | 15:45 | ||
15:46
godfrey999 joined
|
|||
masak .oO( because the world needs more Walls ) :P | 15:47 | ||
anyway, Cid++ | |||
15:51
crab2313 joined
15:52
vmspb left
15:53
[particle] joined
|
|||
TimToady | colomon: I admired your malaprop at irclog.perlgeek.de/perl6/2012-07-04#i_5784968 | 15:55 | |
16:06
hoelzro is now known as hoelzro|away
16:13
birdwindupbird joined
16:15
birdwindupbird left,
fridim_ joined
16:21
cognominal_ left,
cognominal_ joined
|
|||
[Coke] | Tear down this Wall? | 16:26 | |
16:30
aindilis left
16:34
sirrobert left,
sirrobert joined
16:35
nodmonkey joined
|
|||
bbkr | Which group has the right to take tickets in RT? I'm currently in Everyone and Unprivileged and I cannot take ticket or assign tags. | 16:35 | |
sirrobert was afk a bit | 16:36 | ||
I don't think I can use 'handles' for what I'm trying to do =) that's why I was using .^add_fallback | 16:37 | ||
I tried... really =) | |||
16:38
cognominal_ left,
cognominal_ joined
16:41
je joined
|
|||
sirrobert | how can I check if a given class/role/package has been defined? | 16:43 | |
ooh... maybe I *can* use handles... | 16:45 | ||
sirrobert is afk. | |||
bbkr | star: class A{}; Any.HOW(A).WHAT.say | 16:46 | |
p6eval | star 2012.06: OUTPUT«use of uninitialized value of type Mu in string context in any <anon> at src/gen/BOOTSTRAP.pm:104use of uninitialized value of type Mu in string context in any <anon> at src/gen/BOOTSTRAP.pm:104===SORRY!===error:imcc:The opcode 'get_how_p_p_p' (get_how<3>) wa… | ||
bbkr | it says for me error is in line 158519259 :) | ||
jnthn | wow :) | ||
sirrobert | heh | ||
jnthn | Yeah, we should catch that bogus syntax rather earlier :) | ||
16:47
JimmyZ left
|
|||
bbkr | I'm not sure how to report it, I mean - what is expected | 16:47 | |
I'll report that get_how_p_p_p method name is leaking to user-level error | 16:49 | ||
reported | 16:52 | ||
flussence | rn: my $x = 'abcde'; my $e = :e<e>; say $x.match(/ $e.value /).perl; | ||
p6eval | niecza v19-13-g442e075: OUTPUT«Match» | ||
..rakudo 74e183: OUTPUT«Match.new(orig => "abcde", from => 5, to => -3, ast => Any, list => ().list, hash => EnumMap.new())» | |||
flussence | rn: my $x = 'abcde'; my $e = :e<e>; say $x.match(/ {$e.value} /).perl; | 16:53 | |
p6eval | rakudo 74e183: OUTPUT«Match.new(orig => "abcde", from => 0, to => 0, ast => Any, list => ().list, hash => EnumMap.new())» | ||
..niecza v19-13-g442e075: OUTPUT«#<match from(0) to(0) text() pos([].list) named({}.hash)>» | |||
flussence | I don't get what I'm doing wrong there. | ||
[Coke] | who wants RT perl6 ticket access? | 16:55 | |
bbkr | me please | ||
I had access before but for some reason i cannot take or assign tag to ticket now | 16:56 | ||
login "bbkr" | |||
[Coke] | ok. just need 30 minutes to find hte damn link. ;) | ||
bbkr | thanks | 16:58 | |
how should "\ " (escaped space) behave in regexp? match literally? | 16:59 | ||
r: say " " ~~ /\ /; | |||
p6eval | rakudo 74e183: OUTPUT«q[ ]» | ||
benabik | r: say " " ~~ / ' ' /; | ||
p6eval | rakudo 74e183: OUTPUT«q[ ]» | ||
17:00
sftp left,
sftp joined
17:03
cognominal_ left,
cognominal_ joined
|
|||
bbkr | std: q\ \ # this should be quoting or routine call? | 17:07 | |
p6eval | std 3b49ac8: OUTPUT«===SORRY!===Undeclared routine: 'q' used at line 1Check failedFAILED 00:00 40m» | ||
[Coke] | bbkr: we removed the implicit old link between parrot commiters and perl6 bugadmins. that might have dropped you if you weren't n channel at the time to speak up. | ||
[Coke] bookmarks this link so he can stop digging through parrot to find it. | |||
bbkr: done. | 17:08 | ||
bbkr | [Coke]: I was not on channel during that | ||
thanks | |||
17:09
thou left
17:10
thou joined
|
|||
bbkr | both taking and tag assigning works ;) | 17:10 | |
17:11
fridim_ left
17:13
daxim left
17:15
patspam joined,
seldon joined
17:18
dukeleto left
17:19
bbkr left
|
|||
moritz | jnthn: the problem with 'handles *' is that it needs something which can make receive arbitrary methods | 17:21 | |
jnthn: so that in turn needs a fallback somehow | |||
jnthn | moritz: Ah...so it's being used as an escape hatch for doing your own dispatch, as such? | ||
moritz | jnthn: yes | 17:25 | |
17:31
dukeleto joined
17:32
GlitchMr joined
|
|||
GlitchMr | Hello | 17:35 | |
17:36
je left,
cognominal_ left
17:37
dukeleto left
|
|||
masak | GlitchMr! \o/ | 17:37 | |
17:38
cognominal_ joined
17:43
fhelmberger joined
|
|||
diakopter | can NQP read environment variables? | 17:43 | |
17:48
icwiener joined
17:49
hoelzro|away is now known as hoelzro
|
|||
hoelzro | moritz: btw, I "fixed" my regex lock up issue | 17:50 | |
moritz | diakopter: yes, via pir::new__Ps('Env') | 17:54 | |
17:55
crab2313 left
|
|||
diakopter | moritz: is that a hash of some sort? | 17:56 | |
PerlJam | It's a PMC | ||
diakopter | that much I knew :) | ||
PerlJam | :) | ||
moritz | diakopter: it has a similar API, yes | ||
PerlJam | yes, it's a very hashy PMC | ||
moritz | ie you can $env<key> | 17:57 | |
*can use | |||
17:57
MayDaniel joined
|
|||
diakopter | kthx | 17:57 | |
moritz | yw | ||
17:59
fhelmberger left
|
|||
diakopter | in NQP how would I get a string that has only the alphanumeric chars from another string? | 18:01 | |
18:03
cognominal_ left,
cognominal_ joined
|
|||
moritz | diakopter: there's a match(string, regex, :global) method | 18:04 | |
so something like nqp::join('', match($string, /\w+/, :global)) | |||
diakopter | how about alphanumerics or spaces? | 18:07 | |
/<[\w' ']>+/ ? | |||
PerlJam | Isn't there also subst? my $foo := subst($string, $regex, '', :global); # ? | ||
moritz | yes | 18:11 | |
diakopter: <[\w\ ]> I think | |||
18:19
patspam_ joined
18:21
patspam left
18:22
patspam joined,
patspam_ left
18:27
nodmonkey left,
nodmonkey joined
|
|||
masak reads homepages.cwi.nl/~ralf/OOHaskell/paper.pdf with interest | 18:37 | ||
benabik | masak++ | 18:40 | |
moritz | r: class A { }; class B is A { has $.x; method new(*%a) { bless(A.new, |%a) } }; say B.new(x => 5).x | 18:41 | |
p6eval | rakudo 74e183: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&bless' called (line 1)» | ||
moritz | r: class A { }; class B is A { has $.x; method new(*%a) { self.bless(A.new, |%a) } }; say B.new(x => 5).x | ||
p6eval | rakudo 74e183: OUTPUT«No such method 'x' for invocant of type 'A' in block <anon> at /tmp/aVF27bmDW7:1» | ||
moritz | is that suppost to work? | 18:44 | |
masak | not sure. | 18:46 | |
I thought the first arg to .bless wasn't an object so much as an underlying representation. | 18:47 | ||
jnthn | It's a candidate. | ||
masak | whether "underlying representation" is what jnthn calls "repr", I don't know. | ||
moritz | so, what exactly is a candidate? | ||
jnthn | Soemthing that CREATE gave you back | ||
moritz | is it an object? | ||
jnthn | Normally you pass * there and it calls CREATE for you. | ||
Yes. | |||
moritz | so, what kind of object? | 18:48 | |
jnthn | It just hasn't had any initialization work done yet. | ||
Whatever type you called CREATE on. | |||
moritz | so, CREATE is the closer equivalent to p5's bless | ||
jnthn | r: class A { has $.x = 42; }; say A.CREATE.x; say A.new.x; | ||
p6eval | rakudo 74e183: OUTPUT«Any()42» | 18:49 | |
moritz | and bless doesn't do any blessing, just initialization? | ||
jnthn | Right, it already knows its type. | ||
moritz | then it's misnamed, IMHO | ||
jnthn | r: class A { has $.x = 42; }; say A.CREATE.WHAT; say A.new.WHAT; | ||
p6eval | rakudo 74e183: OUTPUT«A()A()» | ||
jnthn | What do you want to call it? :) | ||
I agree it's different to what Perl 5 does. | 18:50 | ||
GlitchMr | bless is confusing with Perl 5 | ||
moritz | jnthn: INIT_ATTRIBUTES or so | ||
jnthn | moritz: eww, no | ||
moritz | also | ||
jnthn | moritz: It's what you call in a custom .new | ||
It's quite user facing. | |||
moritz | if the candidate is already a proper object, we could just make .bless a method on that object | 18:51 | |
jnthn | True | ||
moritz | then you could write self.CREATE.init(|%attrs) or so | ||
or maybe s/init/INIT/ | |||
jnthn | It shouldn't be uppercsae since you call it yourself and it isn't magical :) | ||
BUILDALL and BUILD are uppercase 'cus they get called for you and are magical in that sense. | 18:52 | ||
moritz | well, 'bless' is good in the sense that it's unlikely to collide with user-supplied methods | 18:53 | |
jnthn | Today you can write self.bless(*, |%attrs), which means you don't have to chain methods. | ||
Yes, that too :) | |||
moritz | OTOH it's a constant FAQ what that * means, and what you could pass to it instead | ||
jnthn | True. You normally don't care to do anything other than the default | 18:54 | |
19:01
GlitchMr left
|
|||
dalek | c: 9c4688c | moritz++ | lib/Mu.pod: [Mu] document bless and CREATE |
19:02 | |
moritz | so, there's no API for reblessing an object into a subclass, right? | 19:03 | |
19:06
crab2313 joined
|
|||
jnthn | moritz: Right. | 19:08 | |
moritz: .^mixin is currenlty implemented in terms of a 6model primitive for doing so. | |||
19:09
hoelzro is now known as hoelzro|away
|
|||
masak | p6l email about .trans sent. | 19:09 | |
moritz sheds the bike | 19:12 | ||
masak++ | 19:14 | ||
on the surface, the arguments for splitting the methods are convincing | |||
masak | yay | ||
moritz | can't tell you anything about under-the-surface yet | 19:15 | |
masak | understood. knowing that would be highly interesting, of course. | ||
in a way, I'm also only on the surface level of the whole discussion so far. but I thought throwing it out there might help make a dive. | |||
colomon | masak++ | 19:16 | |
moritz | I just thought it would be nice to be able to switch off range-DWIM in .trans | 19:18 | |
masak | I don't immediately see the use case for that. | 19:19 | |
moritz | following the thoughts of design astronautism, one could switch on features with named args | ||
masak: the use case is mostly if the substitutions lists are generated | 19:20 | ||
19:21
patspam left
|
|||
moritz | otoh then one can generate them as lists, not strings | 19:21 | |
so, never mind | |||
masak | right. | 19:23 | |
I'm not proposing scrapping things like "a..z" in .trans, by the way. I rather like that feature. and it's like tr/// | |||
moritz | yes, I understood that | ||
flussence | r: say ([..] <a z>).perl | 19:24 | |
p6eval | rakudo 74e183: OUTPUT«"a".."z"» | ||
flussence | I didn't expect that one to work... :) | ||
jnthn | r: say ([..] <a z>).list.perl | 19:25 | |
p6eval | rakudo 74e183: OUTPUT«("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z").list» | ||
colomon | r: say ([..] <a g z>).perl | ||
p6eval | rakudo 74e183: OUTPUT«"a".."g".."z"» | ||
colomon | errr.... that's wrong, isn't it? | ||
r: say ([..] <a g z>).list | |||
flussence | r: say +([..] <a g z>).list | ||
jnthn | I suspect that it will complain if you try and listify it. | ||
p6eval | rakudo 74e183: OUTPUT«No such method 'succ' for invocant of type 'Range' in sub postfix:<++> at src/gen/CORE.setting:1347 in method reify at src/gen/CORE.setting:4829 in method reify at src/gen/CORE.setting:4950 in method reify at src/gen/CORE.setting:4950 in method gimme at s… | ||
rakudo 74e183: OUTPUT«No such method 'succ' for invocant of type 'Range' in sub postfix:<++> at src/gen/CORE.setting:1347 in method reify at src/gen/CORE.setting:4829 in method reify at src/gen/CORE.setting:4950 in method gimme at src/gen/CORE.setting:5328 in method elems at s… | |||
jnthn | Right. | ||
masak | r: say ("a".."g".."z").min.^name | 19:26 | |
p6eval | rakudo 74e183: OUTPUT«Range» | ||
masak | so it associates to the... left. | 19:27 | |
moritz | std: 1..2..3 | ||
p6eval | std 3b49ac8: OUTPUT«===SORRY!===".." and ".." are non-associative and require parens at /tmp/7khn6N9xv0 line 1:------> 1..2..⏏3Check failedFAILED 00:00 41m» | ||
moritz | r: 1..2..3 | ||
p6eval | rakudo 74e183: ( no output ) | ||
colomon | bug indeed. ;) | 19:28 | |
nr: 1..2..3 | |||
p6eval | niecza v19-13-g442e075: OUTPUT«===SORRY!===".." and ".." are non-associative and require parens at /tmp/8EmLGgsfcy line 1:------> 1..2..⏏3Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 1402 (die @ 5)  at… | ||
..rakudo 74e183: ( no output ) | |||
colomon | n: say ([..] <a g z>).perl | 19:29 | |
p6eval | niecza v19-13-g442e075: OUTPUT«===SORRY!===Cannot reduce with .. because structural infix operators are diffy and not chaining at /tmp/Moczmc98Wi line 1:------> say ([..]⏏ <a g z>).perlUnhandled exception: Check failed at /home/p6eval/niecza/… | ||
colomon | niecza++ | ||
masak submits rakudobug | 19:32 | ||
colomon | masak: not sure what to think about the .trans thing, but I'm still pleased you raised the question | 19:33 | |
masak | like me, then :) | 19:34 | |
19:34
patspam joined
19:35
birdwindupbird joined
|
|||
moritz likes masak | 19:35 | ||
masak flies like an arrow | |||
colomon | I find the spec kind of confusing, and the code implementing it in niecza makes it one of the more complex core functions. | ||
if not *the* most complex. | |||
moritz | 118 lines in rakudo | 19:36 | |
colomon | n: say 2678 - 2561 ~ " in niecza" | 19:37 | |
p6eval | niecza v19-13-g442e075: OUTPUT«117 in niecza» | ||
colomon | wouldn't be surprised if it's more or less the same code... | 19:38 | |
LSM class involved? | |||
moritz | yes | ||
colomon | yeah, probably the same code, then. :) | ||
moritz | written by masak++, iirc | ||
sorear | one of these days I'm going to rip out niecza's .trans and replace it with something that uses the _real_ LTM engine | 19:39 | |
masak | ISTR so too. | ||
sorear | alas niecza-shaped tuits are in short supply these days. | ||
masak | sorear: the Rakudo team has plans for that too. | ||
jnthn | We actually have a real LTM engine now :) | 19:40 | |
moritz | yes, but it's not easy to interface to it | ||
jnthn | It was hard to write, it should be hard to interface to :P | 19:41 | |
I don't know that it's all that bad actually. | |||
moritz | :-) | ||
well, it would be *much* easier if array-variable interpolation was supported | 19:42 | ||
jnthn | Yeah. That's tricky to get right. | ||
due to | |||
a | @a | bc | |||
Style things | |||
moritz | and especially if we had some API that also gives us the index of the matching array element | ||
jnthn: you know that @a doesn't participate in the LTM unless it's a compile-time constant? | 19:43 | ||
jnthn | moritz: Is that in S05? | ||
19:44
kaare_ left
|
|||
moritz | "An interpolated array using junctive semantics is declarative | 19:45 | |
(participates in external longest token matching) only if it's | |||
known to be constant at the time the regex is compiled. | |||
" | |||
S05:1252 | |||
jnthn | Oh. | 19:46 | |
moritz | but TimToady++ said that in general there's still LTM between the array elements | ||
jnthn | Oh, wait | ||
iiuc | 19:47 | ||
moritz | so a | @b | bc is more like [a | b] || [|@b] | ||
jnthn | a | @a | bc / | ||
er | |||
/ a | @a | bc / | |||
I don't think it's saying you don't get LTM semantics even if @a isn't known until runtime | |||
Notice the "external" bit | |||
token x { <y> }; token y { a | @a | bc } | 19:48 | ||
moritz | external = external to the array, in my reading | ||
jnthn | Here, it's not be incorporated into x's LTM | ||
Oh, I read it as "external to this rule" | |||
moritz | we've had that discussion recently | 19:49 | |
jnthn | Hm, it could be either. :) | ||
OK | |||
moritz | with pmichaud++ and TimToady++ | ||
jnthn | I'm happy for it to be the easier one ;) | ||
moritz | let me try to find it in the logs | ||
jnthn | I musta missed it. | ||
dalek | p/toqast: 5c66ca4 | jnthn++ | src/QAST/Operations.nqp: vivify => ifnull; pmichaud++. |
||
19:50
patspam left
|
|||
dalek | kudo/toqast: ecd9c1b | jnthn++ | src/QPerl6/Actions.pm: Chase op name change. |
19:50 | |
moritz | jnthn: discussion starts at irclog.perlgeek.de/perl6/2012-06-28#i_5766030 | ||
19:51
patspam joined
|
|||
jnthn | nmake | 19:51 | |
oops | |||
19:51
patspam left
|
|||
jnthn | moritz: aha | 19:53 | |
19:53
patspam joined
|
|||
jnthn | moritz: Then yes, your interpretation is correct. | 19:53 | |
19:54
patspam left
19:55
sisar left
|
|||
masak | I've golfed the segfault from a few days ago. | 20:04 | |
it might be the strangest I've ever seen. but it's very consistent. lots of components, though. | |||
r: use Test; class A {}; (-> &c, $m { A.new()(); CATCH { default { ok 1, $m } } })(A, "") | |||
p6eval | rakudo 74e183: OUTPUT«(signal SEGV)» | 20:05 | |
masak submits rakudobug | |||
[Coke] | masak++ | ||
masak | feel free to submit shorter versions to the channel if you find any. I will add them to the RT ticket. | ||
gfldex | Segmentation fault (core dumped) # under cygwin | 20:06 | |
masak | note that A is sent in as &c, and that was the original issue: a non-Callable was invoked. | ||
moritz | r: class A {}; (-> &c, $m { A.new()(); CATCH { default { say $m } } } )(Mu.new, '') | ||
p6eval | rakudo 74e183: OUTPUT«Null PMC access in find_method('gist') in block <anon> at /tmp/aD6vfCqowe:1 in block <anon> at /tmp/aD6vfCqowe:1» | ||
masak | that looks like a clue of some sort. | 20:07 | |
moritz | masak: but shouldn't it fail to bind in the first place? | ||
I mean, A to &c | |||
masak | yes. | ||
and maybe it does, I dunno. | |||
moritz | r: sub f(&c) { }; f(class { }) | ||
p6eval | rakudo 74e183: OUTPUT«Nominal type check failed for parameter '&c'; expected Callable but got <anon> instead in sub f at /tmp/a0Rp2HjxT2:1 in block <anon> at /tmp/a0Rp2HjxT2:1» | ||
masak | but the A.new()(); these is necessary. | ||
which indicates the first line gets run. | 20:08 | ||
r: use Test; class A {}; (-> &c, $m { CATCH { default { ok 1, $m } } })(A, "") | |||
p6eval | rakudo 74e183: OUTPUT«(signal SEGV)» | ||
masak | I stand corrected. :) | ||
that explains a lot. the CATCH catches binding errors. | |||
and then the $m never gets bound, because the binder wasn't done! | |||
moritz | erm, what? | ||
masak | I couldn't have trolled Rakudo better if I had wanted to! :D | 20:09 | |
moritz | a CATCH block catches... no way | ||
masak | yes way. | ||
that's what happens. | |||
moritz | I... hope that it's not supposed to catch those. | ||
masak | it's so obvious now. | ||
no, I don't think it is. | |||
moritz | ah, and that's why I got the null PMC access | ||
masak | but I can see why that falls out. I think binding is lexically done inside of the callee. | 20:10 | |
moritz | r: sub f(&x) { CATCH { default { say "OH NOES" } } }; f 3 | ||
p6eval | rakudo 74e183: OUTPUT«===SORRY!===CHECK FAILED:Calling 'f' will never work with argument types (int) (line 1) Expected: :(&x)» | ||
jnthn | Huh, I thought exception handlers weren't set up until after the binding... | ||
moritz | r: sub f(&x) { CATCH { default { say "OH NOES" } } }; f Mu.new | ||
p6eval | rakudo 74e183: OUTPUT«OH NOES» | ||
moritz | that's a short version :-) | ||
masak++ | 20:11 | ||
masak | now without the segv :) | ||
moritz | aye | ||
masak | crypt++ # found it while hacking around with real code | ||
moritz | the rest was probably just necessary to turn a Null PMC Access into a segfault, or so | ||
sorear | masak: man 3 crypt? | 20:12 | |
moritz | sorear: nope, his adventure game | ||
masak | I don't know what I was thinking when naming it... | 20:13 | |
apparently I wasn't thinking of man 3 crypt. :) | 20:14 | ||
moritz | its setting is a crypt? | ||
masak | the innermost room is a crypt, yes. | ||
you haven't played it yet, moritz? :) | |||
20:14
lichtkind joined
|
|||
moritz | masak: no | 20:14 | |
jnthn: looking at the generate code, it seems it 1) does a capture_lex 2) sets up the exception handler 3) calls perl6_take_dipatcher 4) declares $_, $/, $! and call_sig and 5) calls bind_signature | 20:15 | ||
jnthn | hah | 20:16 | |
Good news: block and exception handlers got a divorce in QAST :) | |||
*blocks | |||
moritz | new $P1043, 'ExceptionHandler' | 20:17 | |
set_label $P1043, control_1042 | |||
$P1043."handle_types_except"(.CONTROL_ALL) | |||
I guess the binder does not generate a CONTROL exception | |||
jnthn | Yeah, ain't it f**king wonderful that we have to make a PCC method call to set up an exception handler :/ | ||
I...don't think they should be control exceptions. | 20:18 | ||
Failing to bind is a real exception. | |||
masak | don't swear in an RT ticket! :P | ||
moritz thinks so too | |||
jnthn | It's that the handler shouldn't be set up at that point. | ||
moritz | jnthn: so, that's another GCable just for the call that sets up the exception handler? | ||
jnthn | Yeah | ||
moritz | would it help if i convinced the parrot folks to provide an op that does it instead? | 20:19 | |
jnthn | It'd probably be more efficient that way but...dunno how interested I am in opening the exceptions in Parrot can of worms. | 20:21 | |
lichtkind | jnthn: great grant report | 20:22 | |
does it mean we can have widgets soon? | |||
jnthn | lichtkind: widgets? | ||
moritz: Provided there was such an op I guess it'd be easy to update the code gen to use it. | 20:23 | ||
dalek | p/toqast: 20331f5 | jnthn++ | src/QRegex/ (2 files): Add a way to turn an NFA into QAST rather than PAST. |
20:24 | |
p/toqast: 0eb3cc4 | jnthn++ | / (3 files): Add BlockMemo, a way to segregate the hack we use for caps and nfa storage. |
|||
p/toqast: ecf6316 | jnthn++ | src/QRegex/P6Regex/Actions.nqp: Use QAST::BlockMemo, to hopefully get QRegex::P6Regex::Actions::qbuildsub to be generating valid QAST (though probably still not quite gonna work yet). |
|||
20:25
bruges_ joined
20:27
bruges left
|
|||
lichtkind | jnthn: binding to gui tk with callbacks | 20:27 | |
jnthn | lichtkind: Oh! | 20:28 | |
lichtkind: arnsholt++ is hacking on callbacks at the moment :) | |||
arnsholt | Yeah, I'm kind of hoping to make a GTK demo as a proof of concept/demo | ||
masak | \o/ ++arnsholt | 20:30 | |
tadzik | \o/ | ||
jnthn | That'll be very cool | ||
arnsholt: Are you gonna be at YAPC::EU, btw? | |||
arnsholt | Don't think so unfortunately | 20:31 | |
Fits kind of weirdly with holidays and stuff this year | |||
jnthn | Aww. Was gonna say, if so, maybe submit a Zavolaj talk :) | ||
arnsholt | I've been considering it actually =) | ||
But I've started to look for likely workshops and such this fall, and then I can do one for YAPC::EU next year perhaps | 20:32 | ||
[Coke] | jnthn: parrot seems genuinely interested in doing the right thing by rakudo (re exception can of worms) | ||
masak | it's still a can of worms ;) | 20:33 | |
20:33
godfrey999 left
|
|||
lichtkind | maybe you want come to bologna | 20:34 | |
ipw was fun | |||
20:36
cognominal_ left,
cognominal joined
|
|||
arnsholt | Hmm. That might work | 20:37 | |
jnthn | [Coke]: Figuring out the "right thing" is probably not so easy. I'm not even sure how various bits manage to work at the moment. :) | 20:38 | |
masak | meanwhile, on #postgresql: gist.github.com/3107323 ;) | 20:39 | |
20:41
godfrey999 joined
|
|||
arnsholt | Oooh, sounds like a good 'un | 20:42 | |
20:43
plobsing left,
bluescreen10 left
|
|||
flussence | do they have ir clogs? | 20:44 | |
20:45
plobsing joined
20:49
bluescreen10 joined
20:51
plobsing left
|
|||
[Coke] | jnthn: fair enough. as long as you're avoiding it for a *good* reason. ;) | 20:52 | |
20:53
plobsing joined
21:04
skids left
21:05
atrodo left
21:11
birdwindupbird left
|
|||
pmichaud | good afternoon, #perl6 | 21:17 | |
jnthn | evenin, Pm o/ | 21:18 | |
[Coke] | phenny: help? | ||
phenny | [Coke]: Hi, I'm a bot. Say ".commands" to me in private for a list of my commands, or see inamidst.com/phenny/ for more general details. My owner is sbp. | ||
pmichaud | jnthn: regex { a | @b | @c }; @b and @c participate in ltm only if they're constant at the time the regex is compiled | ||
TimToady++ pointed that out a couple of weeks ago :) | 21:19 | ||
jnthn | pmichaud: Yes, moritz++ pointed me at the conversation :) | ||
pmichaud | good deal. Yes, that makes arrays a lot easier, although we'll need some dynvars to let us know if a given array is in | or || context | ||
(when the regex is being compiled) | |||
dalek | p/toqast: 804bcfa | jnthn++ | src/QAST/ (2 files): Get some box/unbox infrastructure in place. |
21:20 | |
p/toqast: bed7038 | jnthn++ | src/HLL/Compiler.pm: Make sure $*PASTCOMPILER is available (still some regex engine leftovers there...will clear up later. |
|||
sorear | How can you tell if they are constant? | ||
pmichaud | they have to have been declared constant at compile-time | ||
jnthn | To a first approximation, "do we have a compile time value for it" | ||
[Coke] cannot figure out how to get phenny to respond to help queries. | 21:21 | ||
benabik | phenny: help | 21:22 | |
phenny | benabik: Hi, I'm a bot. Say ".commands" to me in private for a list of my commands, or see inamidst.com/phenny/ for more general details. My owner is sbp. | ||
[Coke] | benabik: and the followup from that results in a suggestion to use help which doesn't work. | ||
21:23
[particle] left
|
|||
benabik | [Coke]: Oh. Well, details. | 21:23 | |
21:23
[particle] joined
|
|||
masak | lol I again blog here! strangelyconsistent.org/blog/july-1...u-can-read | 21:24 | |
jnthn | lawl | 21:25 | |
21:25
bluescreen10 left
|
|||
flussence | I wonder | 21:25 | |
.help | |||
21:26
spider-mario left
|
|||
flussence | hm, maybe it's disabled to avoid spamming the channel. | 21:26 | |
21:26
spider-mario joined
|
|||
benabik | Also don't work in PM | 21:27 | |
lichtkind | ahhh due my intense weeks of writing tablets my fingers learned to write gi instead of hg | 21:31 | |
21:31
nodmonkey left
|
|||
dalek | p/toqast: dd04942 | jnthn++ | src/QAST/ (2 files): Fix some bugs in BlockMemo handling. |
21:33 | |
kudo/toqast: 4498bea | jnthn++ | src/QPerl6/Actions.pm: Start using qbuildsub for regex building. |
|||
21:36
godfrey999 left
|
|||
jnthn | rakudo/toqast now has some regex support back in place. Up to 12804 passing spectests. | 21:36 | |
And all sanity tests pass. | |||
masak | whoa. | 21:37 | |
jnthn++ | |||
21:38
thou left
21:39
bluescreen10 joined
21:40
plobsing left
21:42
plobsing joined
|
|||
lichtkind | jnthn++ | 21:56 | |
21:58
samlt left,
samlt joined
22:02
spider-mario left
22:04
samlt left,
samlt joined
22:05
MayDaniel left
22:12
[particle] left
|
|||
dalek | p/toqast: 014837a | jnthn++ | src/QRegex/P6Regex/Actions.nqp: Fix qalt_nfas to recurse to itself. |
22:15 | |
p/toqast: cd6dfc3 | jnthn++ | src/QAST/Block.nqp: Implement QAST::Block.symtable. |
|||
22:18
snearch left
|
|||
dalek | kudo/toqast: 266d7b6 | jnthn++ | src/QPerl6/Ops.pm: First crack at box/unbox wiring. Wins some more tests at least. |
22:19 | |
kudo/toqast: 101c115 | jnthn++ | src/QPerl6/Actions.pm: Fix subset compilation. |
|||
kudo/toqast: 9edea62 | jnthn++ | src/QPerl6/World.pm: Fix BEGIN time and thus roles. |
|||
22:22
cognominal_ joined
22:24
cognominal left
22:32
Coleoid joined,
seldon left
22:37
skids joined
|
|||
masak | good night, #perl6 | 22:41 | |
22:55
PacoAir joined
22:56
cognominal__ joined
22:57
cognominal_ left
23:04
cognominal_ joined
23:07
cognominal__ left
23:08
benabik left
23:12
benabik joined
23:20
icwiener_ joined
|
|||
dalek | p/toqast: 03261ac | jnthn++ | src/QAST/Compiler.nqp: Add qastnode, for an abitrary QAST tree inside a QAST::Regex. |
23:20 | |
p/toqast: f574160 | jnthn++ | src/QRegex/P6Regex/Actions.nqp: Various regex related tweaks to help QAST'd Rakudo work. |
|||
kudo/toqast: 94bb03f | jnthn++ | src/QPerl6/Actions.pm: Fix quotepair. |
23:21 | ||
kudo/toqast: 08c051a | jnthn++ | src/QPerl6/Actions.pm: s/pastnode/qastnode/ in regex handling. |
|||
kudo/toqast: 613d647 | jnthn++ | src/QPerl6/Actions.pm: Various regex fixes; gets a bunch of S05 tests passing again. |
|||
geekosaur 's brain keeps edit correcting that to "toast" | 23:23 | ||
23:24
icwiener left
23:25
lichtkind left
|
|||
dalek | kudo/toqast: f97e527 | jnthn++ | src/QPerl6/Actions.pm: Fix @bar>>.foo compilation. |
23:35 | |
23:35
PacoAir left
|
|||
jnthn | Enough for today. Now up to 14997. :) | 23:35 | |
cognominal_ | nqp: my $a := :a<b>; say ($a) | 23:36 | |
p6eval | nqp: OUTPUT«Confused at line 2, near "say ($a)"current instr.: 'nqp;HLL;Grammar;panic' pc 22385 (src/stage2/gen/NQPHLL.pir:8546) (src/stage2/gen/NQPHLL.pm:326)» | ||
cognominal_ | nqp: my $a := :a<b>; say($a) | ||
p6eval | nqp: OUTPUT«b» | ||
23:36
fgomez joined
|
|||
cognominal_ | nqp: my $a := a => 'b' ; say($a) | 23:36 | |
p6eval | nqp: OUTPUT«b» | ||
cognominal_ | nqp: my $a := :a('b') ; say($a) | 23:37 | |
p6eval | nqp: OUTPUT«b» | ||
cognominal_ | hum. | ||
23:41
vlixes joined
|
|||
flussence | I wish I knew enough to figure out that build error :( | 23:43 | |
23:54
crab2313 left
|
|||
flussence | uh oh | 23:55 | |
I checked out nqp/toqast and reverted 80306ff, and it still failed with the same error | |||
maybe it was some internal resource limit, and that was what initially pushed it over the edge... | 23:57 |