»ö« 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! | Rakudo Star Released!
Set by diakopter on 6 September 2010.
plobsing msg arthur-_ Are you sure you have libjit_fb installed correctly? I ran your code and got past where you were blocking (I hit a rakudobug, but that's a different story). Try adding a check to the loadlib line (something like pir::loadlib__ps('libjit_fb') or die "Couldn't loadlib 'libjit_fb'";) 00:20
plobsing what's the resident msgbot around here, and how do I get it to deliver msgs? 00:21
sorear phenny: tell plobsing here's one 00:25
phenny sorear: I'll pass that on when plobsing is around.
sorear aloha: msg plobsing and the other
plobsing oh hai
phenny plobsing: 00:25Z <sorear> tell plobsing here's one
sorear aloha: tel plobsing and the other
aloha: tell sorear hi
Am I just hallucinating that aloha had a message system
plobsing pheny: tell arthur-_ Are you sure you have libjit_fb installed correctly? I ran your code and got past where you were blocking (I hit a rakudobug, but that's a different story). Try adding a check to the loadlib line (something like pir::loadlib__ps('libjit_fb') or die "Couldn't loadlib 'libjit_fb'";) 00:26
aloha?
ENOBODYHOME
sorear there are two ns in phenny 00:27
plobsing phenny: tell arthur-_ Are you sure you have libjit_fb installed correctly? I ran your code and got past where you were blocking (I hit a rakudobug, but that's a different story). Try adding a check to the loadlib line (something like pir::loadlib__ps('libjit_fb') or die "Couldn't loadlib 'libjit_fb'";)
phenny plobsing: I'll pass that on when arthur-_ is around.
sorear aloha: help
aloha sorear: Ask me for help about: seen, karma (say 'help <modulename>').
sorear aloha: help message
aloha sorear: I don't know anything about 'message'.
sorear aloha: help tell
aloha sorear: I don't know anything about 'tell'.
sorear aloha: help msg
aloha sorear: I don't know anything about 'msg'.
lichtkind hai 01:55
anybody awake here?
what you think about a Perl slogan: no artificial walls!
rkazak Hi, is there a parrot specific channel? 03:42
plobsing rkazak: #parrot is parrot-specific 03:44
rkazak Hmm, #parrot - when I connect to it has just one member... 03:45
plobsing checks his irc config 03:46
#parrot on irc.parrot.org 03:47
sorear aka irc.perl.org, aka MAGnet
rkazak ta 05:30
dalek ecza: 8bd2f47 | sorear++ | / (4 files):
Pass :dba and Frame to lexers
07:12
sorear I'm looking through the #perl6 logs for examples of STD.pm6 error messages using the 'Expected any of' mechanism 08:46
is it just me, or does it add almost nothing?
a few choice examples
std: rx { }
p6eval std a194beb: OUTPUT«===SORRY!===␤Null pattern not allowed at /tmp/GwcGLbwaoM line 1:␤------> rx { ⏏}␤ expecting quantifier␤Parse failed␤FAILED 00:01 119m␤»
sorear std: say (q)
p6eval std a194beb: OUTPUT«===SORRY!===␤Use of a closing delimiter for an opener is reserved at /tmp/hStugQhTTx line 1:␤------> say (q⏏)␤ expecting any of:␤ argument list␤ prefix or term␤ semicolon list␤ statement end␤Parse failed␤FAILED 00:01 119m␤»
moritz_ std: 1 + + 08:47
p6eval std a194beb: OUTPUT«===SORRY!===␤Prefix requires an argument at /tmp/dDqwDHRBaC line 1 (EOF):␤------> 1 + +⏏<EOL>␤Parse failed␤FAILED 00:01 119m␤»
moritz_ std: 1 + %
p6eval std a194beb: OUTPUT«===SORRY!===␤Non-declarative sigil is missing its name at /tmp/wIaxeJoNjs line 1:␤------> 1 + ⏏%␤Bogus term at /tmp/wIaxeJoNjs line 1:␤------> 1 + %⏏<EOL>␤ expecting twigil␤Parse failed␤FAILED 00:01 120m␤»
moritz_ sorear: I know that I've wanted the "expecting ..." messages for custom parsers I've written 08:50
though in these examples they aren't really helpful
sorear the way they are implemented is... not very pretty
it records all lexer invocations at the high water mark 08:51
with a very ugly API
the lexer writes into contextuals named $*HIGHWATER and $*HIGHEXPECT
the Niecza lexer is unaware of the Perl 6 call stack and I'd like to keep it that way :/ 08:52
do you have an example in mind of a version of "expecting ..." that would be helpful?
moritz_ std: if 42 08:53
p6eval std a194beb: OUTPUT«===SORRY!===␤Missing block at /tmp/KVhpNSzWYK line 1 (EOF):␤------> if 42⏏<EOL>␤Parse failed␤FAILED 00:01 118m␤»
moritz_ hm
sorear you say you wanted it for a parser 08:55
you must have an idea in mind of how it should work
moritz_ for example my JSON parser had a very ugly error for trailing commas by default 08:56
the parsing rule is basically <atom> ** \, 08:57
so I'd like to get an "expecte: atom" for an input string like [1,]
I'd expect the grammar engine to capture the name of an unsuccessful rule, or list of alternative rules somehow 08:58
arthur-_ phenny: tell plobsing : indeed, it does not load the lib : Couldn't loadlib 'libjit_fb' , but I don't know how to fix that/look for what is not done right
phenny arthur-_: I'll pass that on when plobsing is around.
arthur-_: 00:27Z <plobsing> tell arthur-_ Are you sure you have libjit_fb installed correctly? I ran your code and got past where you were blocking (I hit a rakudobug, but that's a different story). Try adding a check to the loadlib line (something like pir::loadlib__ps('libjit_fb') or die "Couldn't loadlib 'libjit_fb'";) 08:59
moritz_ sorear: and probably throw an exception somehow, which includes that information
but I really don't know what would be a good API
arthur-_ I get a SIGSEGV from a perl6 script, what's the name of that tool you feed a command and gives you a list of low level traces of the program's execution ? 09:04
moritz_ debugger? 09:05
gdb
arthur-_ gdb
mmh
I try
no that's not it
it works like that :
thatprogram perl6 script.pl 09:06
then gives me all sort of debug low level stuff as the programm runs
moritz_ gdb perl6
run script.pl
arthur-_ so I can see what happens just before the SIGSEGV
ok I try
moritz_ and after the segfault, type bt
sorear the tool you're looking for is called strace 09:07
but gdb will probably work better
arthur-_ Program received signal SIGSEGV, Segmentation fault.
0x00000000023d2770 in ?? ()
sorear ltrace might also be useful
arthur-_ ok I try these 09:08
sorear summons cognominal
arthur-_ fsync(1) = -1 EINVAL (Invalid argument) 09:09
fsync(2) = -1 EINVAL (Invalid argument)
moritz_ did you obtain the backtrace?
arthur-_ with strace yes 09:10
moritz_ I meant the backtrace you get from gdb
strace doesn't give you backtraces
just system calls
arthur-_ moritz_: I'm not familiar with gdb 09:11
moritz_ 10:06 < moritz_> and after the segfault, type bt
arthur-_ oh ok
thanks
sorear learning gdb is not optional
if you're going to do NativeCall stuff, you need to be able to debug at a low level
arthur-_ pastebin.com/CfLGeWhU 09:12
moritz_ so it segfaults while throwing an exception. Superb. 09:15
sorear no, it segfaults during global destruction 09:16
which is really to be expected
parrot global destruction is incredibly fragile
arthur-_ oh 09:17
moritz_ but global destruction is the result of an exception, no?
arthur-_ moritz_: no, just normal end of the script
sorear I would say that "... while throwing an exception" ends when die_from_exception catches it
arthur-_ last line is : 'done'.say;
and it is said ok
moritz_ ok, then it's really global destruction 09:18
sorear you seem to have thrown an exceptin from inside a callback
moritz_ try to add an exit(0) at the end
sorear or otherwise escaped
moritz_ nested runloops?
sorear yes
moritz_ yikes
sorear wait, no
arthur-_ same error with exit(0)
sorear there's only one runops 09:19
jnthn note that exit works by throwing an exception...
moritz_ jnthn: still rakudo uses that trick at the end of programs
arthur-_ bt with exit(0) : pastebin.com/MJqqh4Ga 09:20
moritz_ src/Perl6/Compiler.pir line 232
last I tried to remove it, several spectests looped
jnthn How...odd. :/ 09:21
moritz_ well, it's there for a reason :( 09:22
sorear ok 09:25
I have two meta-issues left before STD can be 100% functional on niecza
1. Interaction of variables an LTM, whcih I asked TimToady about this morning but have not yet gotten a responce 09:26
2. JSYNC spec nits, which I asked ingy about last night but have gotten no more than a "let me get back to you"
sorear -> sleep
cxreg what's the interaction between variables and LTM? 09:27
wasn't that part of the purpose of LTM?
arthur-_ moritz_: so any chances I can fix this from my side or is this a rakudo||parrot bug ? 09:28
sorear It's a Parrot bug that #parrot denies the existance of 09:29
one that I've battled in the past and am still bitter over
arthur-_ oh
sorear cxreg: S05:1225 09:30
I need clarification of that
cxreg i havent actually cloned the new github repo 09:31
good time to do so
specs, that is?
sorear yes
cxreg moritz++ 09:33
moritz_ huh, why do I get karma?
cxreg githubbing the specs
moritz_ sorear++ has been asking all the interesting questions :-)
oh, that's old history
cxreg lol
i've been lazily evaluating perl 6 news 09:34
sorear: that seems awfully squishy 09:35
istr ingy saying something about this when he had his pegex revelation 09:36
cognominal sorear? 11:10
masak oh hai, #perl6 11:51
phenny masak: 07 Nov 23:17Z <lue> tell masak Here's your Yapsi patch: gist.github.com/667105
masak looks 11:52
wow. I'm impressed. 11:53
colomon o/
masak phenny: tell lue thanks for the patch at gist.github.com/667105 -- I see one tiny error on L28 (which is easy to correct), and I'd like to discuss how strings interact with ++ and --. apart from that, it looks very good. 11:55
phenny masak: I'll pass that on when lue is around.
jnthn o/ masak 12:12
masak another glorious day in #perl6. :) 12:13
jnthn The sun is shining and I just ate Falafel. 12:15
masak my weather widget says rain, but that's because I've forgotten to reset it from Vienna to Uppsala. outside, the sun is shining. 12:16
jnthn masak: Generally, looking out of the window is more reliable, yes. :) 12:36
masak :) 12:37
jnthn Heh. Some of the folks I work with are complaining its too cold. Others of us (me included) think it's just fine. :) 12:38
colomon how cold is it?
jnthn 4C 12:39
colomon luxury!
0C here
jnthn :)
colomon (well, 32F, but, you know. ;)
jnthn Yeah, 4C is fine by me. :)
masak this is nothing. 12:40
we're just, um, warming up.
maybe we'll have another Extreme Winter, like we did last year. 12:41
jnthn Was it really that extreme? :) 12:53
moritz_ extremely mild?
masak jnthn: it caused prolonged traffic havoc in Stockholm. 12:54
jnthn Huh, we have railway traffic chaos most days here in Skane. :P 12:57
masak so it seems. apparently the Stockholmers are used to higher standards. there was much wailing and gnashing of teeth. 12:59
moritz_ because every day the railroad company is surprised how many people want to take the train?
masak they seemed surprised about the cold, the snow, and the ice, in this case. 13:00
moritz_ snow and ice in sweden. Inconceivable!
masak you keep using that word. :) 13:01
moritz_ according to irclog.perlgeek.de/search.pl?channe...onceivable this was my first use in #perl6 13:02
masak yeah, sorry; quoting a movie. 13:03
www.imdb.com/title/tt0093779/quotes?qt0482717
jnthn masak: I can't say I disapprove of the Stockholmer's higher expectations. Especially if they usually get delivered on. :) 13:04
masak lunch & 13:05
moritz_ masak: ah, cultural reference. A college of mine keeps using it though :-) 13:06
szabgab gentlman, so I amhappy to let you now we have the budget for the Perl 6 hackathon at FOSDEM
That means we can finance the travelc cost and the accomodation of a few of you 13:07
moritz_ \o/
jnthn \o/
szabgab++
moritz_ szabgab++
jnthn szabgab: When should talks be submitted by? I was gonna submit one...
frettled Woohoo!
szabgab++
szabgab can now go to ha lunch with enough karma in his pocket
jnthn: talks, you can start submitting them to the events mailing list 13:08
I look at the deadline soon
moritz_ oh... FOSDEM is 4 days after ETA for the offspring
szabgab moritz_: so it is time to get away :) 13:09
moritz_ lol
szabgab let me setup a page on the wiki where you can add your names if you are committed to come and to let me know how much sponsoring you need 13:10
jnthn OK. I never did FOSDEM before, so quite keen to come. :) 13:11
colomon hmmm, the fifth day after H's birth was probably the hardest for us.
moritz_ lightning talks are up to 15min it seems
jnthn colomon: Did you go to an open soruce conference? ;-)
Slowest lightning ever!
colomon no, and thank heavens.
moritz_ my wife would kill me. And I'd totally understand that 13:12
takadonet hey all 13:13
colomon o/ 13:16
what's the current state of text wrap? 13:17
szabgab We cannot run the hackathont at the same space where FOSDEM is going to happen
szabgab though I am sure you can find a corner to sit and hack there too 13:17
The hackathon can be 2-3 days either before or after FOSDEM
any preferences?
moritz_: I think we'll organize another one for you too :) 13:18
www.socialtext.net/perl5/index.cgi...011_fosdem
moritz_ ++szabgab
szabgab please add your name to the wiki under the hackathon section if you are interested to come 13:19
colomon githhub problems? 13:50
colomon or neutro problems? 13:50
gist.github.com/667707 13:52
looks like github's switch to https broke neutro. 13:53
plobsing ping arthur-_ 13:54
phenny plobsing: 08:58Z <arthur-_> tell plobsing : indeed, it does not load the lib : Couldn't loadlib 'libjit_fb' , but I don't know how to fix that/look for what is not done right
colomon masak: for sure there is stuff in Rakudo that is slow just because it is poorly coded. some of it doesn't matter much, and some of it is probably adversely affecting performance. without a lot of timed end-user code, and no profiler, it's hard to figure out these things. 14:13
plobsing phenny: tell arthur-_ did you run parrot setup.pir build / parrot setup.pir install? you should be able to find the extension in parrot's dynext library directory (find $PARROT_LIB_PATH -name libjit_fb.so)
phenny plobsing: I'll pass that on when arthur-_ is around.
moritz_ also note that my primary motivation for having .trans was to be able use it in the book :-) 14:14
masak colomon: I was talking about the parts that are evidently under-performant.
moritz_: what do you mean? we had .trans before, as PIR. 14:15
moritz_ masak: in alpha, yes
masak oh.
moritz_ and I was loath to port some code that I didn't understand at all 14:16
and nobody else did it :-)
masak ooh! twitter.com/parrotvm/status/1637910096904192 14:18
colomon masak: but generally, parts aren't evidently under-performant until they are actually used.
dukeleto masak: :)
moritz_ sadly parrot-dev is down, so notifying all devs is a bit of a gamble 14:19
masak colomon: that's not entirely true. had I been doing a code review of the core with a view towards performance, I probably would have found the thing in .trans
colomon masak: sure, obnoxious things can be identified without timing them. 14:21
but I'd argue you don't know what they really mean without some sort of real world analysis.
moritz_ masak: then maybe you should do a performance oriented code review of src/core/*.pm 14:22
masak moritz_: yes. I'm considering doing that. 14:22
ggoebel: hi! 14:23
moritz_ masak++ # having error bars in the chart in the last blog post
masak it has been said that averages alone aren't worth much without some kind of measure of how spread-out the distribution is. 14:24
moritz_ otoh... it seemed the drift was mostly systematic error, not statistical deviations 14:25
masak hard to be sure. 14:27
it wasn't a strict increase either.
moritz_ there's an easy-ish way to find out 14:28
run the experiment $n times, and average over all times from all experiments 14:29
if it's a strictly statistic error, the standard deviation should grow like $n.sqrt 14:30
masak you mean average all runs 1, all runs 2, etc?
moritz_ no, the values from all runs
masak ok. 14:31
well, I'm pretty sure the error is partly systematic.
question is how big a part.
moritz_ if the values mostly increase during each run, you won't get the accumulation around the mean value that you usually get in standard deviations
afk
dukeleto Public Announcement: Parrot SVN is read-only. We are working on making Github canonical. 14:35
jnthn mmmm...$dayjob provided cake
moritz_ jnthn: funny, that's happening here too 14:36
masak moritz_: ah, so run the experiment $n times without restarting Rakudo between runs?
moritz_ no, with restarting 14:37
if it's a mainly statical error, you'll get a Gaussian distribution
masak so, 10 runs each time, $n times. restart between each 10-run experiment.
moritz_ right
masak average all runs. 14:38
moritz_ correct
masak accumulatively, so to speak. i.e. do a new average after each completed experiment.
moritz_ right
masak check whether the standard deviation grows like $n.sqrt.
moritz_ and a new standard deviation
right
masak I'm tempted to do it now. :) 14:39
moritz_ resist!
arthur-_ plobsing: it looks like it is installed, I think ... see : pastebin.com/eh5iEdSt 14:44
phenny arthur-_: 14:13Z <plobsing> tell arthur-_ did you run parrot setup.pir build / parrot setup.pir install? you should be able to find the extension in parrot's dynext library directory (find $PARROT_LIB_PATH -name libjit_fb.so)
dnl moins0rn 14:55
moritz_ moinon be with you, dnl 14:56
masak moin, mon. 14:57
plobsing arthur-_: unless you've set $PARROT_LIB_PATH, it expands to '', meaning find will look in $CWD. since you're running that command from the build directory, it'll find the built (but potentially not installed) copy. 15:05
I used $PARROT_LIB_PATH in hopes that you would expand it yourself. I had no information at this time about where your parrot was installed. 15:06
You'll want to run 'find /usr/lib/parrot -name libjit_fb.so'. 15:07
mkramer I want coffee much too much 15:25
I need to do something about this
mkramer the problem is, I can't do any at all, including quit caffeine, until I've had a cuppa 15:25
arthur-_ plobsing: /usr/lib/parrot/2.9.1-devel/dynext/libjit_fb.so 15:26
plobsing arthur-_: what is the result of running this PIR script? nopaste.snit.ch/25395 15:33
arthur-_ arthur@aquarelle /t/parrot-libjit-fb> parrot test.pir 15:36
Undef
plobsing so it isn't loading the lib for some reason.
can you confirm that there other things (eg: bit_ops.so) under /usr/lib/parrot/2.9.1-devel/dynext/ 15:40
and that these are loadable (eg: change loadlib line from 'libjit_fb' to 'bit_ops') 15:41
colomon huh. neutro works on Linux, fails on OS X? 15:49
oh, nope, fails on both 15:50
colomon woah, when did we get LWP::Simple in p6?! 16:02
moritz_ a few months ago 16:03
cosimo++
jnthn I'm guessing it doesn't support SSL?
moritz_ nope, don't think so
colomon any bright ideas how to quickly fix the neutro issue? (which, yeah, looks to boil down to https:// support.) 16:09
moritz_ use a command line clinet with SSL support
jnthn Host a HTTP => HTTPS proxy somewhere
cosimo jnthn: no, it doesn't... 16:10
jnthn Does GitHub really give no way at all to say "I can't do HTTPS, give me HTTP"
?
colomon moritz_: I was having issues with wget as well. 16:13
though I'm not exactly a power wget user, so maybe I was missing something.
moritz_ wget --no-check-certificate github.com/ 16:14
colomon moritz_: that didn't actually work
well, let me try it to double check 16:15
I take that back, it works beautifully. :) 16:16
dukeleto Can I ask somebody in here to test out the new parrot repo at github.com/parrot/parrot/ ? We are about to let the masses start cloning it, but would like some Rakudo/Perl 6 eyes on it 16:38
moritz_: ^^^
basically just clone it and make sure that it doesn't set your dog on fire
masak .oO( hate when that happens )
moritz_ dukeleto: I'm cloning it right, but have to run soon, and will be offline for 2.5H or so
dukeleto moritz_: thanks! I am asking a few different peeps, so no worries :) 16:39
moritz_ at least Configure.pl doesn't complain about the parrot-installed-from-github 16:42
colomon rakudo: qx/ls/ 16:49
p6eval rakudo 2c66f9: OUTPUT«Operation not permitted in safe mode␤ in 'Safe::forbidden' at line 2:/tmp/L92AS6Fx1A␤ in main program body at line 10:/tmp/L92AS6Fx1A␤»
colomon qx{wget --no-check-certificate github.com/perl6/ecosystem/raw/mas...cts.list}; instead of the LWP::Simple.new.getstore call will fix neutro 16:51
dukeleto Parrot.git is live. Commence enjoyment. 16:53
colomon \o/
arnsholt Gaudeamus igitur!
dukeleto Beware: our languages repo is not converted to git, and none of the split-out languages on github should be considered stable, yet. But the main parrot.git repo is ready for public consumption. 16:54
arthur-_ plobsing: arthur@aquarelle /t/parrot-libjit-fb> ls /usr/lib/parrot/2.9.1-devel/dynext/ 17:00
bit_ops.so* debug_ops.so* deprecated_ops.so* dynlexpad.so* file.so* gziphandle.so* io_ops.so* libjit_fb.so* math_ops.so* obscure_ops.so* os.so* rational.so* sys_ops.so* trans_ops.so*
masak dukeleto++ 17:01
arthur-_ plobsing: with the gziphandle lib, your test script gives : arthur@aquarelle /t/parrot-libjit-fb> parrot test.pir 17:01
ParrotLibrary
colomon Hmmm, I can get my Linux version of neutro working fully with the above hack, it's failing install in perl6-File-Tools on OS X. 17:12
masak goes swimming 17:14
colomon ack! 17:17
giving up on neutro for now. :( 17:18
dalek ecs: c96afc6 | TimToady++ | S05-regex.pod:
Regex vars declarative iff declared constant

Making the LTM engine track whether a variable has changed is not friendly to most VMs. The spec was engaged in P5-Think of the there's-only-one-implementation-so-we-can-get-fancy kind. sorear++
17:27
TimToady wonders whether .perl should default to pretty, or whether there should be a different method for that 18:27
colomon Despite using it every day, I haven't really figured out what .perl is for yet. :) 18:28
takadonet colomon: glad I'm not the only one 18:29
colomon .... which leads me to think "pretty"
sorear Good * #perl6 18:36
takadonet sorear: yo 18:40
TimToady o/
TimToady is recovering from the Hackers Conference....
flussence .perl should probably be minimalist, then anyone can write a multi that does .perl(:indented) or whatever 18:42
sorear see S02
I wrote some conjectural stuff there about a .pretty method
which is intended for debugging 18:43
colomon what's the use case for .perl if not for debugging?
sorear colomon: serialization
colomon sorear: I've been told repeatedly that that is a very bad idea, and I'm convinced that is correct. 18:44
sorear So am I. 18:46
sorear TimToady: How does a variable get declared as a constant? 18:47
flussence is ro?
TimToady with the constant declarator 18:48
flussence: ro is something else 18:49
sorear I think you just broke STD
TimToady hmm, as in starters and stoppers? 18:50
sorear Possibly
I don't remember exactly what's going on, but I remember _PARAMS
TimToady yes, that's the starter/stopper role stuff
sorear When I was redoing LTM using automatons earlier, STD couldn't bootstrap until _PARAMS was working
TimToady but I think we can consider that those are constants instantiated in an eval-ish way 18:51
flussence
.oO( "is ro" isn't even a real thing... /facepalm )
18:51
TimToady well, it'd be 'is readonly'
::= is the usual sugar 18:52
sorear Can you remember what the case is where stopper LTM is needed? 18:53
«foo» parsing seems to work fine without it
TimToady stdstopper and infixstopper 18:54
both call <?stopper> 18:55
sorear hmm, / <foo: 2 + 2> / isn't doing it 18:58
TimToady the roles at line 377 should be treating those as constants somehow, since roles instantiated with a constant parameter should consider those parameters to be consatnts
TimToady _PARAMS was just a hack to get around the fact that Moose doesn't (or at least didn't) do parameterized roles 18:59
TimToady if it isn't doing it, how does it avoid parsing that > as a greater than? 19:00
anyway, the usage of those in STD should be considered "constant" by the last spec change 19:02
ggoebel masak: using the new version of psyde. Noticably faster :) 19:04
masak: I sent you back a copy of psyde, post.html and default.atom which perform substitutions putting author in the right places... 19:05
dalek ecs: 8d7691d | TimToady++ | S05-regex.pod:
generics can produce constants without declarator

For the purposes of determining whether a variable is declared constant, it is not enough to consider whether the C<constant> declarator has been used. Generic code that instantiates parameters with constant arguments can also produce variables that are known by the compiler to be immutable.
19:28
sorear std: / <foo: anon $> / 19:44
p6eval std a194beb: OUTPUT«===SORRY!===␤Unsupported use of $> variable; in Perl 6 please use $*EUID at /tmp/oJ9Pb8F6uP line 1:␤------> / <foo: anon $>⏏ /␤Parse failed␤FAILED 00:01 122m␤»
plobsing arthur-_: this should not be happening without some kind of error message giving a reason for the failure to load the library. this feels like a parrotbug. 19:53
arthur-_: can you describe your platform (OS/OS version/distro/c compiler/cc version/parrot revision/rakudo sha1/anything else you might think is relevant) so that I can replicate it for debugging? 19:54
masak ahoy! 19:59
moritz_ o/
colomon \o
takadonet o/ 20:00
sorear masak! 20:02
masak I'm only staying for a brief while; then I'm going eating, then I'll come back to blog.
takadonet has been waiting for masak to write his blog 20:03
masak I'm writing in it daily :) 20:04
by the way, ggoebel++ submitted a patch to psyde today, so he's per definition a co-author of psyde.
takadonet waiting for today post! 20:04
masak will be a few more hours. 20:05
sorear TimToady: How much hope is there for PL_sawampersand stuff in Perl6?
TimToady hope? 20:06
sorear I saw some stuff in the Perl4 changelog to turn $foo =~ /x/ into index($foo, "x") if sawampersand == FALSE 20:07
I'm wondering if I can do that here
TimToady if the caller doesn't use $/, and uses the return value as boolean, sure; $/ isn't global like P5's current match, so there's no need for a global sawampersand pessimizer 20:10
this is why $/ is lexically scoped now, so we take at most one dynamic caller into account 20:11
that's my story, and I'm sticking to it (for now)
sorear will have to think about this 20:21
unrelatedly, I'm pondering the most elegant way to do add_categorical without eval
arthur-_ plobsing: Ubuntu Linux 10.10 ( not fresh, 5 succesive updates ), gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5), parrot/rakudo are latest from git ( yesterday ), tell me if you need anything else, I'm not sur what is relevant. 21:11
thanks a lot for looking into this
plobsing arthur-_: x86/amd64/other? (sorry, forgot to ask before) 21:20
masak mmm, nom. 21:21
arthur-_ plobsing: amd64 21:32
( when you get asked questions like that, it means it's serious business ... ) 21:33
dalek : 4adeadd | sorear++ | misc/dalek-conf.json:
Commit a new dalek-conf with wiki scrapings
21:34
masak we should be doing more of this with Perl 6: bieh.net/2010/11/08/xkcd-576/ 21:52
colomon I'm not sure I'd yet trust Perl 6 to spend my money. ;) 21:52
frettled masak: use xkcd.com instead, so you get the mouseovers. 21:53
masak: xkcd.com/576/
colomon frettled: no, the point is the article around the xkcd comic.
masak frettled: I wanted to link to the actual implementation deatils.
frettled colomon: oh.
colomon not that the comic isn't cool.
frettled /o\
frettled looks suitably embarassed.
masak hugs frettled 21:54
frettled thanks masak.
colomon masak: mind you, it is exactly the sort of thing that Perl 6 could look good doing. do we have a twitter module yet?
masak not to my knowledge.
colomon that seems like it would be a good project to tackle just in terms of publicity like this. 21:55
masak yes.
colomon and tackling modern things to do early on instead of just duplicating all of CPAN. :) 21:56
rakudo: my %hash = a => 1, b => 2; say (%hash >>+>> 1).perl 21:57
p6eval rakudo 2c66f9: OUTPUT«{"a" => 2, "b" => 3}␤»
colomon is glad that works.
colomon rakudo: my $a = Set.new(1, 2, 3, 4); say $a.perl; 21:58
p6eval rakudo 2c66f9: OUTPUT«set(1, 2, 3, 4)␤»
colomon rakudo: my $a = Set.new(1, 2, 3, 4); say ($a <<+>> Set.new(2, 42)).perl;
p6eval rakudo 2c66f9: OUTPUT«{"2" => 2}␤»
colomon okay, that's officially not at all what I expected 21:59
masak huh?
masak submits rakudobug
colomon masak++ 22:00
rakudo: my $a = Set.new(1, 2, 3, 4); say ($a <<||>> Set.new(2, 42)).perl;
p6eval rakudo 2c66f9: OUTPUT«{"2" => Bool::True}␤»
colomon oh, that almost makes sense
masak try the (|) and (&) operators.
if you're trying to do what I think you are. 22:01
colomon it loses its Set-hood because hyper doesn't do that yet.
masak probably, yes.
colomon masak: I'm just trying to see what happens, no goal yet.
masak I'll put in the bug that hypers don't make sense yet.
colomon for sure, unless someone did a major upgrade to the hypers while I wasn't looking.
for what it's worth, I think the p6l stuff commentary has been misguided. 22:02
at least as I understand things.
Set and Bag do associative, and hypers treat associative things like Hashes. 22:03
masak aye.
colomon (I mean, for sure they do now in Rakudo, but I think they do / should do in theory as well.)
masak the discussion, like lots of p6l discussion, is misguided but well-meaning.
masak I've been cheering it on anyway, because I think that space needs to be explored. 22:04
colomon masak: you assume no one there is trying to actively sabotage p6. ;)
masak Set and Bag are great, but they haven't "landed" yet. they probably won't in a couple years.
colomon: yes, I do.
colomon oooo, there is a specific example in the spec of Bag not working like a hash 22:05
masak part of the problem with Set and Bag, besides giving them a natural-feeling semantics, is that the advantage they give over hashes and arrays is very slight.
colomon Bag(3,8,[2,Seq(9,3)],8) >>->> 1; # Bag(2,7,[1,Seq(8,2)],7)
masak so they work more like arrays in that case.
colomon yes 22:06
apparently Iterable-ness overrides hash-y-ness
unless you are actually a Hash
masak someone (not me) should declare themselves resident Set-and-Bag monk, enter a monastery for two years, and then come back and tell us what to do. 22:07
middle step optional.
jnthn Optional? That's the fun bit!
mkramer re: Thomas's reply: are sigils actually about storage?
jnthn No, sigils are about an interface contract.
masak no.
but he's got a point.
I agree with him more than I usually do.
well, tbh, usually he just confuses the heck out of me. 22:08
mkramer I have no idea why people are talking about >>/<< in the thread
I never mentioned >>
masak that's a fearsome operator. I've never used it.
mkramer I'm pretty sure >> behavior is undefined for bags, no matter how they wind up
masak rakudo: .say for (1, 2, 3) >>/<< (2, 1, 0) 22:09
p6eval rakudo 2c66f9: OUTPUT«0.5␤2␤Inf␤»
masak mkramer: see colomon's spec quotation above.
colomon even though the quotation really makes my brain hurt. It's obviously a glitch in the spec
because what does Bag.new(1, 2, 3) >>/<< Bag.new(2, 1, 0) do?! 22:10
masak colomon: and you're willing to fix it? colomon++
colomon masak: I'm more than willing to fix it, as soon as I know how. :)
masak bags are unordered, so obviously it does something quite wild.
hey! I got a MAILER-DAEMON message back from rakudobug. 22:11
mathw good way to make sure people don't depend on ordered bags: insert debug-mode code which explicitly randomises them every time the elements are accessed :)
masak somebody please fix this really soon, or I'll explode. :( 22:12
jnthn masak: Excessive usage? ;-)
mathw lol
masak hardly.
it's not even high season for bugs.
mathw that means jnthn isn't writing enough code :)
mkramer masak: What's his point?
mathw jnthn: how's 6model going?
jnthn mathw: Slowly in recent days due to $dayjob-panic :/ 22:14
masak mkramer: the spec mentions >>->> on Bags.
mkramer if sigils are an interface contract, what do they promise?
mathw jnthn: :(
jnthn mathw: Recent high points include sorting out the multi stuff, getting the underlying primitive for "use" working on the 6model on .Net implementation and getting an Mu in place, so I can actually pass class tests now there. 22:15
mathw nice
I did see the multi stuff going by
jnthn Yeah
mathw at least, the spec changes
jnthn Oh, I got an implementation together of the spec changes.
masak mkramer: not much. basically .[] and .{} methods
jnthn It worked out *really* nicely.
Now I "just" need to port it over to Parrot... 22:16
mathw heh
moritz_ mkramer: @ and % sigils promise flattening
mathw jnthn: I must admit I'm very excited that this could be the groundwork for a .NET implementation
running Rakudo on multiple VMs is a very cool thing 22:17
mkramer moritz_: yay. Ok, that's what I was thinking they promised
mathw but something I always assumed would be ridiculously difficult and not worth the effort 22:17
mkramer So what I promised makes sense if @ promises flattening, but not if @ promises []
*was suggesting
colomon rakudo: say Bag.new(1, 1, 2, 3, 4).perl 22:18
p6eval rakudo 2c66f9: OUTPUT«Could not find sub &Bag␤ in main program body at line 22:/tmp/I_ztzT1uLe␤»
jnthn mathw: It's turning out that the .Net runtime layer I have is very hackable and making it easy to add stuff. 22:19
mkramer Bags aren't implemented heh
mathw jnthn: that's cool
jnthn: it's always nice to have a good, flexible playground
colomon Bags are implemented, they're not integrated. :)
mathw jnthn: been trying to set up something akin to that at work but it's not so easy in C++
mkramer moritz_: just to be clear though, what does flattening mean? 22:20
I think I know, but I don't want to assume
moritz_ rakudo: my @a = 1, 2, 3; .say for @a 22:21
p6eval rakudo 2c66f9: OUTPUT«1␤2␤3␤»
moritz_ rakudo: my $a = (1, 2, 3); .say for $a 22:21
mkramer Ok, that's what I thought
p6eval rakudo 2c66f9: OUTPUT«1 2 3␤»
mkramer Bags definitely need to flatten 22:22
Tene what order do they flatten in? 22:22
moritz_ Bags do Positional, no?
mkramer no
moritz_ erm, Associative, sorry
Tene No, Positional implies Ordered
mkramer yes
moritz_ so they can be stored in % - variables
which then control the flattening 22:23
mkramer rakudo: my %h = < foo bar baz qux >; .say for %h;
p6eval rakudo 2c66f9: OUTPUT«foo bar␤baz qux␤»
masak rakudo: grammar G { regex foo { foo } }; given "foo" { when G.parse("foo", :rule<foo>) { say "OH HAI" } } 22:24
p6eval rakudo 2c66f9: OUTPUT«OH HAI␤»
masak this works, but I feel it's a bit redundant. any suggestions for improvements?
masak is patching up Druid 22:25
Tene masak: That program can be reduced hugely... just: say "OH HAI"; 22:26
;)
colomon is going to make the spec explicitly say that you cannot use a Bag on one side of a hyper and anything with more than one element on the other. errr, probably post- nom and getting a working clone of Spec.
masak Tene: you're always such a big help. :)
colomon++ 22:27
Tene masak: is the topic supposed to be affecting the name of the rule matched?
colomon if someone disagrees with that, they're welcome to try to come up with something consistent and sane. ;)
masak Tene: it was in my original code. regardless, I still need something much like a given/when.
Tene masak: Did you mean, perhaps, G.parse($_, :rule<foo>); or maybe G.parse('foo', :rule($_)); ? 22:28
masak colomon: that's usually a good way to move forward.
mkramer Sure, put it in there, but it should go without saying
mkramer that's odd 22:28
masak Tene: the former. thanks. 22:29
Tene Ah, yes, that's better.
colomon mkramer: if you're talking to me, it definitely doesn't go without saying.
masak Tene++
Tene masak: you could add a TOP to the grammar, and then just: when G { ... };
colomon and I think it turns up a hole in the type system. 22:29
dalek : 4a96328 | sorear++ | misc/dalek-conf.json:
Add Parrot to tracked git repositories
masak Tene: yeah, but I have several whens and several rules. 22:30
colomon because I don't think we have a generic way of saying "Iterable but not ordered"
mkramer Iterable but not Positional? 22:30
Tene masak: If there are many alternatives, you could add a TOP to the grammar that alternates over them, and then dispatch on the match, if that's all you're alternating on.
masak colomon: why? does Iterable imply Positional?
colomon Iterable does not imply positional. 22:31
mkramer It doesn't
masak Tene: that's an idea worth exploring.
Tene grammar G { token TOP { ... | ... | ...}; ... }; given "foo" ~~ G { when $_<foo> { ... }; };
like that.
colomon But there are two things here: Iterable and every time you get the same ordering, and Iterable and the ordering is arbitrary
Tene That doesn't help if you want to vary over anything else, though.
mkramer I think Positional means ordered and nothing more or less, please correct me if I'm wrong 22:32
of course, ordered means [], but that's an implementation detail 22:33
Tene masak: Write a macro to handle it for you, implementing a grammar-test keyword: grammar-test G, 'foo' { when 'foo' { ... } }
masak Tene: I think I can get away with doing it like that. 22:34
jnthn mkramer: Positional implies the existence of a postcircumfix:<[ ]> method.
masak :)
colomon what jnthn said
jnthn Which wouldn't make much sense if the thing wasn't ordered, I guess. :-)
masak @ sigil implies Positional implies a .[] method 22:35
mkramer the spec leaves it up in the air whether @ implies Positional or Iterable
masak I'm getting error messages at a higher line number every time, which is a good sign...
mkramer This is the point I'm trying to raise here
I guess it would be annoying not to be able to look at a @thing and know that I can index that @thing with postcircumfix:<[]> 22:36
*and not to know that
masak no, @ implied Positional. 22:37
s/d/s/
jnthn Rakudo certainly believes it means Positional. Additionally, it's tied into typed arrays.
We'd be breaking a lot of nice symmetries and probably cause other issues if it implied Iterable.
colomon Iterable needs to be able to include things that aren't ordered, for sure. 22:38
jnthn (e.g. all of @, % and & imply roles which in turn imply the existence of given postcircumfixes)
masak alpha: say elems [1,2,3]
p6eval alpha : OUTPUT«1␤»
colomon Positional implies postcircumfix:<[]>
masak alpha: say elems 1, 2, 3
p6eval alpha : OUTPUT«3␤»
masak rakudo: say elems 1, 2, 3
p6eval rakudo 2c66f9: OUTPUT«Could not find sub &elems␤ in main program body at line 22:/tmp/LRif7w_7pN␤»
masak submits rakudobug
colomon it seems to me we need something in between that implies "stable iterable"
masak ha-haa! 22:39
oh wait :(
someone please fix the rakudobug email addy :(
:( :( :(
who should I contact? what must I do?
rakudo: say elems: 1, 2, 3 22:41
p6eval rakudo 2c66f9: OUTPUT«===SORRY!===␤Confused at line 22, near "say elems:"␤»
masak rakudo: say elems: (1, 2, 3)
p6eval rakudo 2c66f9: OUTPUT«===SORRY!===␤Confused at line 22, near "say elems:"␤»
mkramer colomon: why doesn't Positional serve?
masak std: say elems: (1, 2, 3)
p6eval std a194beb: OUTPUT«ok 00:01 121m␤»
mkramer colomon: for "stable iterable"
jnthn masak: I'd guess whoever looks after RT, which may be robrt or ask.
masak czechs
jnthn masak: Given it's used for Perl 5 bug submission too, I'd imagine it'll get picked up
Well 22:42
colomon mkramer: because then you're forcing anyone who wants to create a stable iterable class to overload postcircumfix:<[]>
jnthn Provided it's a general issue with the mail to RT gateway
Note that hashes are iterable
mkramer colomon: why would any class that iterates in a single, well-defined order not also implement []?
jnthn If you made @ mean Iterable then a hash could bind the @foo :-)
Tene colomon: if it's stable iterable, why doesn't [] make sense?
colomon because requiring people to overload a postcircumfix operator is a pain in the tuckus 22:43
mkramer compared to what?
colomon compared to not.
sorear users should never define postcircumfix:sym<[ ]> - define at_pos instead 22:44
or at-pos, which I call it, because my parser isn't limited to _
timbunce Anyone seen this kind of failure before: "Couldn't load class (Catalyst::Exception::Basic) because: Can't use an undefined value as a HASH reference ..." www.cpantesters.org/cpan/report/53d...d4f05f9827 22:45
colomon I rest my case. :)
sorear also postcircumfix:sym<[ ]> is a sub
but rakudo implements it as a method for some reason
masak sorear: isn't it an underscore because it's "low-level"?
timbunce slaps head for posting to wrong channel
masak hugs timbunce 22:46
timbunce smiles thankfully while waiting for his third flight in a day 22:47
masak timbunce: getting lots of coding done while waiting? 22:47
timbunce masak: no, just tinkering with loose ends, like test failures 22:48
masak same here.
I think I exhausted myself swimming today.
either that, or I fried my brain in the sauna.
o.O all Druid tests successful?! 22:49
\o/
that's it. I'm committing and blogging. :)
sorear thinks he's done hacking dalek for a bit
masak yay, and the ./druid script works now! 22:50
but... boy, have lists gotten slower. 22:51
or something. it was never thigs slow.
someone willing to help me confirm a slowness? volunteer? anyone?
colomon easy or hard, mas? 22:52
masak?
masak colomon: easy. just git pull a thing, make, and run it.
colomon what? 22:53
masak druid, branch ng-compat
sorear has an implementation of lists that is 900 times faster than Rakudo 2010.07, and encourages stealing
colomon with normal rakudo? 22:54
masak yes.
sorear .09 sorry
masak sorear: I have no trouble believing that.
colomon .09 times faster? That's really slow!
masak this is the first evidence of a significant slowdown of anything that I've seen going from alpha to ng. 22:54
colomon: :) 22:55
colomon masak: can you get me the git info? (busy cooking and setting table at the moment)
masak colomon: no, it's just not that much faster :P
masak colomon: sure. hold on. 22:55
colomon: git://github.com/masak/druid.git
the branch is called ng-compat. 22:56
ufo && make && ./druid # should do it
colomon git branch ng-compat?
git checkout -b ng-compat (I hope) 22:57
masak that creates a new local branch, no?
masak tries to recall how this was done
colomon oh, maybe.
arnsholt checkout branch, no? 22:58
masak 'git checkout -b ng-compat origin/ng-compat'
might be there are simpler ways.
jnthn masak: Got any idea of the area of the code that seems especially slow? 23:00
masak jnthn: yes, it's the one that prints the small boards. 23:01
jnthn: I could point you to the lines in question. hold on.
jnthn ok
colomon want me to time ./druid? 23:03
masak colomon: no, just run it and look. and tell me what you see.
jnthn: github.com/masak/druid/blob/ng-com...xt.pm#L194 23:04
colomon ./druid: Permission denied 23:08
;)
masak env PERL6LIB=... perl6 druid 23:09
jnthn masak: Grr. I'll have to look at it more carefully when I haven't got a headache. 23:10
masak nodnod.
I might make it tomorrow's blogging quest.
jnthn masak: If an isolated script could be extracted that simulates this though...
masak yeah.
jnthn It'd be far easier to look at.
colomon masak: there's a board, and now it says "vertical"
masak colomon: right, there are three boards, no. 23:11
two small ones.
colomon yes
masak were the small ones printed at great speed?
colomon I didn't notice, I was running around the kitchen. 23:12
masak ah.
please ^C, do it again, and notice :)
colomon no, pretty un-snappy, I'd say
masak right.
definitely slower than in alpha.
thanks. colomon++
colomon not terrible terrible, but not instant by any means.
masak it wasn't always that slow, that's my point.
it's too slow to be taken seriously. I would have reacted if it were that slow when I wrote it. 23:13
jnthn rest & 23:21
masak my email to perlbug-admin bounced :( 23:33
masak cries
masak blog post! strangelyconsistent.org/blog/novemb...ck-in-town 23:36
takadonet: just for you this time :)
sorear ask on #toolchain or #p5p 23:42
masak thanks. I'll try that. 23:43
dalek ecza: 4b41ecf | sorear++ | / (3 files):
Implement non-string-parametrized roles
23:45