»ö« 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:104␤␤use 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:104␤␤use 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 1␤Check failed␤FAILED 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..⏏3␤Check failed␤FAILED 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..⏏3␤␤Unhandled 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>).perl␤␤Unhandled 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