»ö« 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:04 stephenlb joined 00:05 atrodo left 00:10 plobsing left 00:12 preflex left 00:14 preflex joined 00:16 plobsing joined 00:26 tokuhirom joined 00:34 jimmy1980 left 00:39 kurahaupo joined 00:40 jimmy1980 joined 00:42 leprevost left
adu o/ 00:49
I just converted someone to perl6! 00:50
colomon \o/ 00:52
00:55 leprevost joined 01:03 xinming left 01:04 xinming joined 01:22 mikemol left
dalek kudo/nom: 29607d8 | duff++ | docs/ (2 files):
update release announcement
01:24
01:25 kurahaupo left 01:33 thou left 01:38 cog__ left 01:40 cognominal joined 02:10 adu left 02:25 tokuhirom left 02:26 orafu left, orafu joined 02:27 jaldhar left 02:34 PZt joined 02:42 DarthGandalf joined
pmichaud rn: "hello".index("").say 02:49
p6eval niecza v18-7-ga660099: OUTPUT«0␤»
..rakudo 29607d: OUTPUT«Int()␤»
pmichaud ummmmmmm
gist.github.com/3bbd7a08c1c220fbf0e3 02:51
parrot bug, maybe? 02:53
PerlJam so ... I get a bunch of spectest failures in t/spec/S03-operators/overflow.t 02:54
03:00 kurahaupo joined 03:01 kaleem joined 03:12 sisar joined
pmichaud PerlJam: I'll test locally. 03:20
I'm also going to try to fix Str.index here; think I can get the fix in before you cut the release? 03:21
(I'm planning to actually fix the index opcode.)
PerlJam sure. I'm trying to get people to bed so that I can have some peace :) 03:23
pmichaud well, maybe I'll just fix it in Rakudo for now. Fixing the index opcode (by adding the correct logic into nqp) is likely to slow down the index opcode a fair bit. :-( 03:25
03:25 tyatpi left 03:32 jaldhar joined
pmichaud PerlJam: I didn't get the failures in overflow.t, fwiw. 03:36
dalek kudo/nom: 2427656 | pmichaud++ | src/core/Cool.pm:
Fix handling of Str.index() for empty needle strings.
03:40
ast: ef83a7b | pmichaud++ | S32-str/index.t:
Unfudge some nom regression tests that now pass again.
03:41
pmichaud PerlJam: Okay, I made my patch. Also, overflow.t passes for me.
moritz \o 03:48
03:53 tyatpi joined 04:03 kurahaupo left
PerlJam builds a rakudo 04:05
Watching wife and daughter play chess and it's hard not to jump in to help my daughter :) 04:06
04:06 raining_ joined 04:07 skids joined
sisar pmichaud: overflow.t fails on 32-bit machines (probably) 04:07
PerlJam: are you on 32-bit ?
04:07 Chillance left
PerlJam oh. My laptop is 32 bit I do believe 04:07
sisar nice to get a confirmation. :) 04:08
PerlJam yep.
sisar so what should we do about it ? Should this go in the release announcement, do we fudge the tests for now ? 04:09
moritz sisar: could you fudge it?
sisar: please skip with #?rakudo skip 'fails on 32bit' 04:10
04:10 raining_ left
moritz (don't TODO them) 04:10
sisar moritz: i'll to, is there a time limit for it ?
coz we need a release...
moritz limit?
sisar: PerlJam does the release; ask him :-) 04:11
sisar moritz: ok
PerlJam do it :)
sisar PerlJam: i'll do it
04:14 thou joined
sisar if I want to say skip the next 42 tests, whats the syntax ? 04:16
#?rakudo skip 42 ?
moritz #?rakudo skip 42 'reason' 04:19
erm
#?rakudo 42 skip 'reason'
sisar moritz: thanks 04:20
04:20 drbean left 04:24 drbean joined 04:25 skids left
sisar moritz: um... after adding #?rakudo skip wherever needed, what else do i need to change? 04:27
the plan doesn't need to be changed, right ? 04:29
04:33 baest left
moritz correct 04:37
sisar what is the expected output after the changes ? coz i still get you failed 28 out of 98 tests... 04:38
moritz sisar: how did you run the test file? 04:39
sisar after the changes, i do `perl6 overflow.t`
moritz well, you need to fudge it first
make t/spec/S03-operators/overflow.t 04:40
perl t/fudge rakudo t/spec/S03-operators/overflow.t; ./perl6 -Ilib t/spec/S03-operators/overflow.rakudo # roughly equivalent 04:41
04:43 baest joined
sisar PerlJam: are my pending changes to roast a blocker for your release? 04:50
PerlJam sisar: well, either you fudge the tests or I do. 04:51
sisar PerlJam: i think you shoud do it. 04:52
Sorry
sisar needs to understand this fudging process 04:53
moritz sisar: it's a preprocessor 04:54
if you run fudge on the test file, and there are fudge directives in there, it generates a modified copy of the test file
.rakudo instead of .t
sisar what is the standard way to run a full spectest? `make spectest` ? 04:56
`make spectest` in ~/rakudo/ ?
moritz make spectest in your rakudo dir 04:57
sisar um, what does make do here? convert .t files to .rakudo ? 04:58
moritz yes
in particular, 'make spectest' calls perl t/harness --fudge --keep-exit-code --icu=1 --tests-from-file=t/spectest.data 04:59
and t/harness calls t/spec/fudgeall <testfiles>
erm
and t/harness calls t/spec/fudgeall rakudo <testfiles>
and fudgeall calls fudge for each file 05:00
sisar if I run a spectest the 2nd time, with the same test files and and the same version of rakudo, does make regenerate all the .rakudo files ?
moritz and returns the original file name if there were no fudge directives, or the .rakudo file name otherwise
sisar: no, fudge or fudgeall compares timestamps
sisar moritz: now I understand it, roughly. What happened is that I had some new commits by jnthn++ and pmichaud++ from last night in my repo, so when I ran `make t/spec/S03-overflow.t`, it started compiled rakudo. 05:03
*compiling
moritz sisar: right; make builds dependencies first 05:04
sisar and since my laptop is horribly slow, i got stuck in the complation
*compilation
moritz++ #explanations 05:06
can I make the commit to roast without testing it? (what could possibly go wrong, eh? ) ;-) 05:07
moritz that's not a good idea 05:08
PerlJam everything is slow on my system right now for some reason.
sisar moritz: ok 05:09
05:09 lorn left
PerlJam (still waiting on a compile) 05:09
sisar too is waiting on a compile 05:10
moritz PerlJam: swapping?
PerlJam I don't know what's going on. It shouldn't be swapping
05:13 lorn joined, simcop2387 left 05:14 simcop2387 joined 05:16 cognominal left, cognominal joined 05:17 leprevost left
sisar moritz: With my changes (gist.github.com/2970393, lines 195, 236, 239, 243), it has fudged more than 28 tests (gist.github.com/2970388). What am I doing wrong ? 05:20
moritz sisar: dunno... maybe try to put the skip inside the block 05:24
sisar tries that
moritz: that worked ! 05:27
i'll push the changes now
PerlJam sisar++
05:31 birdwindupbird joined 05:35 sivoais left
dalek ast: f09f27f | (Siddhant Saraf)++ | S03-operators/overflow.t:
[S03/overflow.t] fudge 28 tests for rakudo. They fail on 32-bit machines.
05:35
sisar moritz, PerlJam: please check the commit ^^ 05:36
05:38 jimmy1980 left
PerlJam Is t/spec/S02-types/instants-and-durations.t supposed to be completely commented out? 05:50
05:51 adu joined
moritz huh? it passes here 05:51
sorear good * #perl6 05:53
moritz is that another 32bit issue? 05:54
\o sorear
PerlJam no. 05:55
apparently it's a my-checkout issue. 05:56
05:57 sporous left, sporous joined
adu good * 06:06
06:09 fhelmberger joined
moritz \o adu 06:13
adu o\
o no wrong slash
dalek kudo/nom: 26c9da1 | duff++ | tools/build/NQP_REVISION:
[release] bump NQP revision
06:21
kudo/nom: 193256c | duff++ | VERSION:
[release] bump VERSION
kudo/nom: 9006475 | duff++ | docs/release_guide.pod:
use generic YYYY.MM for VERSION
06:30 sivoais_ joined 06:31 sivoais_ left, sivoais_ joined 06:33 sivoais_ left 06:34 sivoais joined, stephenlb left 06:36 adu left
tadzik yay release! 06:36
PerlJam++ 06:37
PerlJam and now it's bed time. 06:38
g'night all
sisar PerlJam++
moritz PerlJam:++ 06:44
PerlJam++
06:45 cog_ joined
Woodi hallo :) 06:47
06:48 thou left, Vlavv joined, cognominal left 06:51 cog__ joined, cog_ left
Woodi just watched sql injection example that use Perl5 automatic scalar/list syntax conversion: { public => 1, name => $req->param1 } This exploded when $req->param1 returned list from specially crafted request: page.html?param1=joe&param1=public&param1=0 06:54
perl5 translated it to: { public => 1, name => joe, public => 0 } which override hardcoded "public => 1" 06:55
question is: do in Perl6 it works same way ? automatic hash keys creation on assigment list to particular hash ? 06:56
*hash key ? 06:57
from YAPC::NA :)
moritz it's not SQL injection; it's a bog-standard logic error
Woodi presentation included it in sql inyection section :) and that code was part of SQL::Anything sql command creation 06:58
but is it work in Perl6 same way ? 06:59
moritz I can't say, because I haven't seen the code that caused it 07:02
Woodi and there was some time ago bug "not included" in Perl5 hash engien but present in PHP, Ruby, ..., and Perl6 - no randomization of hash keys. is it healed now in Perl6 ?
k, I will try golf answer
moritz nr: my %h = a => 1, b => 2; sub f(*%a) { say %h.perl }; f |%h, a => 5 07:03
p6eval niecza v18-7-ga660099: OUTPUT«Potential difficulties:␤ %a is declared but not used at /tmp/21lMRBvQw7 line 1:␤------> my %h = a => 1, b => 2; sub f(*⏏%a) { say %h.perl }; f |%h, a => 5␤␤{"a" => 1, "b" => 2}.hash␤»
..rakudo 242765: OUTPUT«duplicate named argument in call␤ in block <anon> at /tmp/TzCtTNSyeH:1␤␤»
moritz nr: my %h = a => 1, b => 2; sub f(*%a) { say %a.perl }; f |%h, a => 5
p6eval niecza v18-7-ga660099: OUTPUT«{"a" => 5, "b" => 2}.hash␤»
..rakudo 242765: OUTPUT«duplicate named argument in call␤ in block <anon> at /tmp/mEGl9qTEL2:1␤␤»
Woodi exploit part was a assigning list to hash key, which "injected" keys after that key 07:04
moritz nr: my %h; %h<a> = (1, 2, 3 ); say %h.keys 07:10
p6eval rakudo 242765, niecza v18-7-ga660099: OUTPUT«a␤»
moritz well, that won't happen in Perl 6
nr: my %h; %h<a b> = (1, 2, 3, 4, 5 ); say %h.keys
p6eval rakudo 242765, niecza v18-7-ga660099: OUTPUT«a b␤»
07:17 adu joined
moritz fwiw I've patched ufo to not shell out to find(1) 07:23
based on the dirwalk code from not_gerd++
07:24 [particle] left 07:25 [particle] joined 07:35 noam_ left 07:38 kresike joined
kresike good morning all you happy perl6 people 07:39
adu hey 07:41
tadzik hello
adu I'm not happy, I'm so angry ;)
diakopter definitely an angry wink 07:42
sorear good morning kresike.
kresike adu, being angry usually doesn't help :)
tadzik, sorear, o/
adu :D
I meant to say I'm tired 07:43
good night
kresike good night adu :)
adu :) 07:44
07:44 adu left 08:15 sergot joined
sergot hi o/ :) 08:16
tadzik \o
08:20 [particle]1 joined
tadzik .u ˙ 08:23
phenny U+02D9 DOT ABOVE (˙)
08:23 [particle] left
szabgab good daytime 08:30
tadzik hello szabgab 08:31
szabgab I was wondering if the current statet of the art in module installaion was to follow the panda?
sorear yo, szabgab
I think I have not seen you for a while
moritz szabgab: yes
szabgab sorear: indeed I have not been around perl6 a while 08:33
moritz: ty
tadzik eiro: ping
szabgab moritz: and is there something newer in the work? 08:34
moritz szabgab: no; the plan is to evolve panda rather than replace it
08:38 simcop2387 left 08:42 simcop2387 joined 08:43 simcop2387 left 08:44 simcop2387 joined 08:48 Patterner left
szabgab sorry for another obvious question, how do I read the pod of the modules I installed? 08:55
besides using vim, that is
08:56 JimmyZ joined
tadzik perl6 --doc path/to/file 08:56
I should really make it work for module name as well
moritz p6doc can do it
tadzik the side effect would be that you could do perl6 Some::Application as well 08:57
szabgab where is p6doc?
moritz github.com/perl6/doc
to be bundled with the next star release 08:58
szabgab sorry , phone 09:00
09:00 tadzik is now known as phone
phone szabgab: no problem :) 09:00
09:00 phone is now known as tadzik 09:01 BaggioKwok joined 09:03 alvis` left 09:05 Psyche^ joined, Psyche^ is now known as Patterner 09:07 BaggioKwok left 09:16 JimmyZ left 09:17 JimmyZ joined
tadzik declaring you own sub import doesn't work, right? 09:18
09:19 cog_ joined 09:21 shk joined 09:22 cog__ left 09:23 kurahaupo joined 09:25 shk left, sisar left 09:26 sisar joined 09:27 snearch joined 09:33 JimmyZ left
tadzik moritz: ping 09:46
jnthn morning o/ 09:48
...ish :)
masak *yawn*
tadzik hello hello
sergot o/ 09:49
tadzik I'm confused. What's the best way to declare a sub, which will be called upon 'use', and that could use callframe to get the file name that's loading it? 09:50
masak rn: ('hello' xx 2).say; say "I don't know why you say {.value}, I say {.key}" given hello => 'goodbye'
p6eval rakudo 900647, niecza v18-7-ga660099: OUTPUT«hello hello␤I don't know why you say goodbye, I say hello␤»
masak tadzik: so you want a use-time hook in the used module?
tadzik right
use Bailador; Bailador::import; doesn't look appealing 09:51
masak well, check how 'use' and 'require' and 'need' are implemented in Rakudo.
that might give some ideas, at least.
tadzik use calls EXPORT, but only if there are arguments to use
masak hm.
tadzik and EXPORT is a weird business
masak but there are default exports...
tadzik lib.pm declares EXPORT but it does so outside of the whole module 09:54
jnthn I'd guess that it's expected to be in UNIT 09:56
tadzik aargh. I don't get it at all :) 09:57
but according to spectests, import() ought to work too
masak tadzik++ # digging into this 09:58
hopefully it'll end up looking neater for it.
it doesn't sound like a contrived use case at all.
tadzik I got away with github.com/tadzik/Bailador/commit/...63b80b3dab so far 09:59
masak yeah, you'd want it implicit, otherwise the onus is on the client. 10:02
tadzik right
btw, blogs.perl.org/users/ben_bullock/20...-name.html inspired me a bit
it _is_ annoying, when you try to install something and you wonder if it's Some::FunnyModule or Some::Funnymodule or Some::funnymodule
and I'm tempted to make it case insensitive in panda 10:03
masak nonono 10:20
no offense to Postel, but that's not a good idea long-term.
jnthn
.oO( I'm a Windows user and I support this idea! :-P )
tadzik (: 10:21
moritz +0.5, if done carefully 10:24
ie if there are two modules of the same name but different case, it shouldn't work case insensitively 10:25
... anymore
jnthn If there are two modules of the same name but different case, installing them on case-insensitive file systems is gonna be fun too :) 10:27
moritz we can name them Module.123.pm 10:32
we (should) allow some wiggle room in file names for versioned modules anyway
10:34 am0c_ joined
masak wonders where the mapping will live 10:35
I'm squarely against making panda case-fuzzy. it's tantamount to providing a vulnerable spot where bad things can grow and cause problems down the line. 10:36
or, more precisely, allowing case-DWIMmery will create an ecosystem with sloppy case handling. 10:37
10:42 [particle] joined
masak tadzik: what about a CHECK phaser in the use-d module? wouldn't that do what you want? 10:42
10:43 [particle]1 left 10:44 woosley joined
moritz wh 10:45
sorry
what are you trying to do?
CHECK is run at the end of compile time
masak <tadzik> I'm confused. What's the best way to declare a sub, which will be called upon 'use', and that could use callframe to get the file name that's loading it?
using callframe from CHECK probably won't work. but maybe there's another introspective way that does. 10:46
or maybe we should have one. a kind of callframe for usage relations.
moritz I don't think callframe will work through 'use' anyway
tadzik caller() works in Perl 5, and Dancer relies on that 10:47
masak it sounds like a fairly non-contrived use case. we should probably have a feature there. 10:48
10:48 daxim joined
moritz well 10:48
the proper solution is to have 'use' call a macro
so that you don't need caller(), you're in the right context right away
what does dancer use it for, ooc? 10:50
tadzik the script location, so templates are loaded relatively to it
also, configuration and other stuff. Generally, for later reading files in location relative to the script
moritz $*PROGRAM_NAME ?
masak I refuse to believe the proper solution is to have 'use' call a macro, until I see either a very detailed spec of it that I understand, or a working implementation. 10:51
moritz I think it's a good way 10:52
masak I know moritz++ doesn't use macros as a god-of-the-gaps argument, but it's still easy to be overconfident before we actually know what macros will do for us.
moritz because it allows things like installing CATCH blocks
masak installing phasers into the mainline does seem to be on the table. 10:53
moritz for installing custom backtrace printers, for example
masak even though I asked all y'all what you would prefer the semantics to be there, and y'all said "both" :P
I'm overriding that and going with "the quasi hands phasers over to the mainline"
if you want a phaser in the macro itself, put it outside of the quasi. 10:54
I know I'm a bit late to the game, but full ACK on www.modernperlbooks.com/mt/2012/05/...table.html 10:58
much of my evolution as a programmer in the past 2..3 years has been informed by similar insights.
tadzik wow 11:01
I wrote a blog engine in Bailador using DBIish and sqlite, and it can serve more than one request per second!
Requests per second: 1.39 [#/sec] (mean), to be exact 11:02
colomon \o/ 11:03
masak \o/ 11:04
tadzik++ # wrote a blog engine in Bailador using DBIish and sqlite!
moritz \o/
tadzik++
somebody uses DBIish!
tadzik I wanted to use especially that :) 11:05
11:05 kaleem left
tadzik and datetime in sqlite works nothing like I'd expect 11:07
masak how so? 11:08
moritz everything is a string in sqlite
(except primary key integer columns)
tadzik: any feedback on DBIish? 11:09
tadzik oh, that'll expect it
moritz: it works well :)
it feels like DBI mostly
moritz well, mostly it is :-) 11:10
tadzik wtf, why does github prefer https over ssh these days? :( 11:12
moritz has no idea 11:13
masak that surprised me as well.
tadzik Existing Git Repo? git remote add origin github.com/tadzik/zblog.git
so, the code's here: github.com/tadzik/zblog 11:14
moritz git://github.com/tadzik/zblog.git
I guess :-)
tadzik no, that one's read-only :) 11:15
and it's not even [email@hidden.address]
there, poof! Proof of concept
so the next step is sessions probably 11:16
moritz [email@hidden.address] iirc
masak dives into the source code 11:17
it's 27 lines of code! tadzik++
you could implement this in a lightning talk! :D 11:18
moritz the file name starts with a character that I don't know how to type :-)
masak oh, I missed that :D
moritz źblog.pl
masak źubr! tadzik++
no, wait. 11:19
that's żubr :)
sergot masak: żubr
masak right.
sergot right :)
masak damn you, Polish! you win this time!
tadzik: you could have awesome tag lines. "Blogging with an accent." "The ź is not silent." 11:20
Timbus <tadzik> wtf, why does github prefer https over ssh these days? :( 11:22
masak "Using it is easier than pronouncing it!"
Timbus because most workplaces block ssh
masak workplaces--
Timbus agreed 11:23
tadzik masak: I plan to :) 11:25
masak: ohhh, that one's awesome (tagline)
moritz which one? :-) 11:26
tadzik both! :)
moritz there were three :-)
tadzik haha
indeed
I guess writing it is easier than pronouncing it too
masak :P 11:28
"Just because you don't know how it's pronounced doesn't mean it's not awesome!"
11:29 JimmyZ joined
masak tadzik++ # hoopy frood 11:29
11:31 spider-mario joined, spider-mario_ joined
tadzik :) 11:34
11:34 spider-mario left 11:36 Moukeddar joined
masak Moukeddar! \o/ 11:38
nr: say (class :: { has @.foo }).new(foo => [1, 2, 3]).foo.elems 11:41
p6eval rakudo 900647, niecza v18-7-ga660099: OUTPUT«3␤»
masak \o/
sorear++ # v18 11:45
11:47 GlitchMr joined, JimmyZ left 11:48 JimmyZ joined
masak moritz++ # perlgeek.de/blog-en/perl-6/2012-gra...s-may.html 11:49
jnthn r: say 318 / 2 11:51
p6eval rakudo 900647: OUTPUT«159␤»
11:51 fhelmberger left
masak moritz: I'm looking at the exceptions catalogue for the first time. liking what I see. 11:57
if I were afforded one comment, it would be that I'm surprised that X::IO::Copy and X::IO::Rename get one type each, but X::Phaser::PrePost have been fused. :) 11:58
masak really liked www.modernperlbooks.com/mt/2012/06/...mming.html too 12:05
12:09 tokuhirom joined 12:25 sergot left
masak PerlJam++ # 2012.06 "Strasbourg" 12:25
12:33 leprevost joined 12:37 spider-mario_ is now known as spider-mario 12:38 sergot joined 12:39 cog__ joined 12:42 cog_ left 12:44 Moukeddar left
masak r: rmdir <foo> 12:49
p6eval rakudo 900647: OUTPUT«Failed to remove the directory 'foo': rmdir failed: No such file or directory␤ in block <anon> at src/gen/CORE.setting:7216␤ in sub rmdir at src/gen/CORE.setting:7211␤ in block <anon> at /tmp/diixVlgdRO:1␤␤»
masak rmdir should *probably* not be runnable on p6eval.
[Coke] masak: *probably* ? 12:50
masak (and I should probably not be naive enough to advertise this fact. should handle it over privmsg with moritz or someone.)
heh, S29 claims that 'rmdir' can be found in the IO modules. :) 12:52
which may be true. but it's also a builtin function, just like in Perl 5.
jnthn masak: Or just update SAFE.setting. 12:53
masak has a look 12:55
jnthn++ 12:56
dalek kudo/nom: bbc5b70 | (Carl Mäsak)++ | src/SAFE.setting:
[SAFE.setting] restricted &rmdir
colomon n: rmdir <foo> 12:58
p6eval niecza v18-7-ga660099: OUTPUT«Unhandled exception: rmdir may not be used in safe mode␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (rmdir @ 0) ␤ at /tmp/g5fmqVmVF2 line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3917 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CO…
masak anyone opposed to me changing the return type of &dir ? 12:59
it currently returns strings with basenames. no paths.
that feels a bit like trying to eat a dinner through a straw.
13:00 spider-mario left
masak I'd prefer if it returned IO objects, which stringify to the "full path" (fsvo) 13:00
and then you could get the basename easily if that's what you want.
tadzik yes
masak ok, good.
doin' it.
tadzik File::Find has similar objects
masak: github.com/tadzik/perl6-File-Tools...Find.pm#L5 13:01
bleh, I was using tabs back then
masak hehe :)
that shouldn't be as necessary after this change.
the File::Find::Result class, I mean. not the tabs.
tadzik :) 13:02
masak today feels like the first day I'm back for realz to #perl6. 13:03
gonna make good use of it :)
13:09 Psyche^ joined
masak t/spec/S06-routine-modifiers/lvalue-subroutines.rakudo .... Failed 6/14 subtests 13:09
is this known? 13:10
tadzik . o O ( "It is known, khaleesi" ) 13:11
masak :> 13:12
13:13 Patterner left, Psyche^ is now known as Patterner
masak r: class A { say $?CLASS } 13:18
p6eval rakudo bbc5b7: OUTPUT«A()␤»
masak r: class A { say ~$?CLASS }
p6eval rakudo bbc5b7: OUTPUT«use of uninitialized value of type A in string context in <anon> at /tmp/CiCsTKLDeJ:1␤␤␤»
masak r: class A { say $?CLASS.^name }
p6eval rakudo bbc5b7: OUTPUT«A␤»
masak r: class Khal { has $.name; method gist { "$?CLASS.^name() $.name" } }; say Khal.new(:name<Drogo>) 13:19
p6eval rakudo bbc5b7: OUTPUT«Khal Drogo␤»
masak \o/
tadzik :D
13:25 birdwind1pbird joined 13:26 leprevost left, atrodo joined, skids joined 13:28 sergot1 joined 13:30 sergot left
colomon ack, trying to use perl5 is a series of little annoyances... 13:31
dalek kudo/nom: 69e6ec2 | masak++ | src/core/IO.pm:
[core/IO.pm] return IO objects from &dir

There's a tension between wanting the full path and wanting just the file name from this function. That indicates that we really want to return a data structure that can easily be turned into either form. Made it so.
ast: bef1742 | masak++ | S32-io/dir.t:
[S32-io/dir.t] changed the expectations around

  - No longer expecting a single file name 't' but a path './t'
  - No longer expecting a list of Str but a list of IO
masak food & 13:32
[Coke] masak: what about windows? is "./t" the canonical form everywhere? 13:34
masak good point.
flussence I hope so, for sanity reasons
masak do we have a $?PATH_SEPARATOR variable or something?
if not, I'm inclined to leave it as it is for now. 13:35
[Coke] flussence: that's fine, but I don't know if that's spec. 13:36
13:39 JimmyZ left 13:40 larks joined 13:46 woosley left
flussence spec seems pretty... non-specific there. There's mention of different path styles for qp{} but it doesn't say if those do automatic conversion or not. 13:49
13:53 fgomez left 13:54 Pleiades` joined
szabgab r: try { die "die" CATCH { say 42 } } 13:59
p6eval rakudo bbc5b7: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}'␤»
szabgab one of us is confused, either rakudo or me 14:00
jnthn missing semicolon
sergot1 r: try { die "die"; CATCH { say 42 } }
p6eval rakudo bbc5b7: OUTPUT«42␤die␤ in block <anon> at /tmp/MlfxLSm5x4:1␤␤»
szabgab so it was me :) 14:01
14:01 fgomez joined
szabgab r: try { die "die"; CATCH { say 42 } }; say "ok" 14:02
p6eval rakudo bbc5b7: OUTPUT«42␤die␤ in block <anon> at /tmp/BGNRQyyfoe:1␤␤»
szabgab and why does it not catch it?
Pleiades` ir: try { die "die"; CATCH { say 42 } }; say "ok"; 14:03
er
r: try { die "die"; CATCH { say 42 } }; say "ok";
p6eval rakudo bbc5b7: OUTPUT«42␤die␤ in block <anon> at /tmp/VFhJoX5vTt:1␤␤»
jnthn szabgab: It does, but the CATCH block doesn't do anything to indicate that it handled it.
szabgab oh, right I see the 42 ow 14:04
now
jnthn szabgab: Either smartmatch against the type of exception you want to catch with a when block, or put a default { ... } in there.
szabgab but I still don't see the ok
jnthn r: try { die "die"; CATCH { default { say 42 } } }; say "ok";
p6eval rakudo bbc5b7: OUTPUT«42␤ok␤»
jnthn szabgab: Ah, I was unclear. It ran the CATCH block, but that isn't enough to say "yes, I handled it" 14:05
szabgab thanks
jnthn Note that a CATCH need not be in a try; it just applies to the enclosing block.
Also note that try with no CATCH in catches everything.
[Coke] r: try { die "die"; CATCH { say 42 ; return () } } ; say "ok"; 14:06
p6eval rakudo bbc5b7: OUTPUT«42␤ok␤»
14:06 Pleiades` left
jnthn Uh. :) 14:06
14:06 Pleiades` joined
[Coke] "The exception thrower looks up the call stack for a catch lambda that returns () to indicate all exceptions are handled, and then it is happy, and unwinds the stack to that point." 14:06
jnthn Oh
[Coke] otherwise it ain't happy, I guess.
r: try { die "die"; CATCH { say 42 ; Nil } } ; say "ok"; 14:07
p6eval rakudo bbc5b7: OUTPUT«42␤die␤ in block <anon> at /tmp/ldKqs4Syyg:1␤␤»
[Coke] r: try { die "die"; CATCH { say 42 ; return Nil } } ; say "ok";
p6eval rakudo bbc5b7: OUTPUT«42␤ok␤»
[Coke] looks like the explicit return is required, at least in rakudo.
my initial reaction is "ew" to the needing "return Nil" there, but when you /want/ to propagate the exception, this is cleaner. I just wonder how often we'll see something like "return Nil; # Handle the (&#@$ exception so perl6 shuts up)" 14:08
jnthn [Coke]: You're not meant to do that, you're meant to wrap it in default { } really 14:09
[Coke]: And if you just want to catch it and ignore it then a plain old try { ... } is OK. 14:10
Without a CATCH
masak in some sense, '/' vs '\\' in paths is a non-issue. the choice of path separator isn't important, as long as the path indicates the desired file.
Perl DWIMs line endings. it could DWIM path separators, too. 14:11
[Coke] jnthn: I don't want to catch and ignore, usually, i want to catch it, DO SOMETHING, and have it be handled.
for example: log the fact that an error occurred, but move on to the next task.
jnthn [Coke]: Yes, but generally you care about what type of failures you're handling.
szabgab IMHO ignore-ing sould be explicit to be clear to the reader 14:12
14:12 snearch left
jnthn default { } is your way to say "handle everything" 14:12
when X::IO { } is your way to say "handle any IO exceptions"
etc.
[Coke] jnthn: so you're saying you don't need the return if you catch an explicit type?
jnthn [Coke]: Yes, it's the same semantics as a given/when block
[Coke]: Something just has to proceed. 14:13
er
suceed.
14:13 sergot1 left
jnthn wtf...succeed 14:13
:)
[Coke] r: try { die "die"; CATCH { default { say 42 } } ; say "ok"; 14:14
p6eval rakudo 69e6ec: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}'␤»
[Coke] r: { die "die"; CATCH { default { say 42 } } ; say "ok";
p6eval rakudo 69e6ec: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}'␤»
jnthn One too few }
oh, no
yes
r: try { die "die"; CATCH { default { say 42 } } }; say "ok" 14:15
[Coke] r: { die "die"; CATCH { default { say 42 } } } ; say "ok";
p6eval rakudo 69e6ec: OUTPUT«42␤ok␤»
[Coke] jnthn: the compiler that cried wolf. I don't even look for missing }'s at this point. ;)
hurm.... will have to let that grow on me. 14:16
masak anyone against making &unlink a method on IO?
pmichaud good morning, $perl6 14:17
*#perl6
masak (as well as a sub, not instead of)
pmichaud! \o/
jnthn o/ pmichaud
colomon o/
masak things are inconsistent right now. &copy is both a sub and a method. &rename is just a sub. 14:18
we do need an IO champion who cares about this mess.
well, someone who cares about making it less of one ;) 14:19
having a .dir method on IO might be nice, too. 14:20
pmichaud somehow it feels like having these on the IO base class is wrong
masak in fact, most of these builtins might be handy to have around as methods on IO.
pmichaud: the thing that feels wrong about it to me is that IO conflates two important concepts in Perl 6.
pmichaud: "something to read from/write to" and "whatever's pointed to by a file path" 14:21
14:21 majrmovies joined, birdwind1pbird left
masak but we've always had that problem, and I don't see it going away or being resolved. 14:21
in some senses, I guess it's a useful confusion.
pmichaud I don't mind the conflation too much; we have similar situations with Any and Cool 14:22
[Coke] thinks we should split it up, but Coke spends a lot of time in java.
[Coke] is used to Files, Readers, Writers, Buffered*, Paths, File, ...
pmichaud i.e., if IO is seen more as an abstract class (like Any/Cool), then it becomes easier to split up the specific meanings
masak I'm all for that.
14:22 birdwind1pbird joined
szabgab when I get an exception on the screen, how can I know what exception object was that? eg. I get 14:23
Failed to get the directory contents of '/home/gabor/work/panda/bin/panda': readdir failed: Not a directory
14:23 mikemol joined
szabgab I figured it out but I had to guess 14:23
pmichaud szabgab: sounds like we want a pragma or dynvar that causes an exception to also (only?) display its type when printed 14:24
dalek p: 777e36f | jnthn++ | src/how/NQPClassHOW.pm:
Tentatively add a way to re-parent a class to NQP's class meta-object, so we'll (hopefully) be able to get Perl 6's meta-objects to say they're ~~ Any.
p: 0db5015 | jnthn++ | src/ (2 files):
Get NQP to use a BUILDPLAN just like Rakudo does. Improves build methods support also.
p: fcc9a23 | jnthn++ | src/how/NQPClassHOW.pm:
Implement attribute introspection in the non-:local case.
14:24 PacoAir joined
szabgab why isn't the name of the exception class part of the printed text? 14:24
by default
pmichaud I'm guessing because it makes for harder-to-read error messages for some people 14:25
either that or we just didn't think of it :)
szabgab :) 14:26
pmichaud what error message would you have liked to have seen (e.g. in the "Not a directory" example above)?
14:26 tokuhirom left
szabgab X::IO::Dir exception received: 14:26
and the rest as it is now 14:27
I think
pmichaud It may also be the case that we'll want several levels of exception reporting - e.g., just the exception type, the exception type with a message, the exception type with a message and backtrace, exception with a really long explanatory message, etc. 14:28
14:29 mtk left
szabgab probabaly 14:29
r: try { die "hi"; CATCH { when X::IO::Dirx { say "ok" } } }
p6eval rakudo 69e6ec: OUTPUT«===SORRY!===␤Missing block␤at /tmp/U3n4TH_a40:1␤»
pmichaud anyway, moritz++ is the exceptions champion at the moment; we should probably ask him
14:30 mtk joined
szabgab that's a very strange error message for typo in the class name 14:30
TimToady I still like "Dump the backtrace to somewhere other than the screen"
pmichaud TimToady: yes, and that too.
[Coke] if you have some place to dump it, sure.
szabgab in this age we should expect several screens to be attached to a computer :)
pmichaud szabgab: yes, we still need a lot of work on our error messages for parse issues. now that we have ltm in the parser (within the last three weeks) we should be able to make some good progress there. 14:31
TimToady "and maybe drop a cockpit voice recorder and data recorder there as well"
[Coke] I would really want that to be configurable,
.
masak szabgab: I know it's of little consolation, but here's what happens: the typo'd X::IO::Dirx is taken to be a sub name (because that's what the parser assumes unknown identifiers are) and thus a listop, and therefor the block is taken to be an argument. meanwhile, the 'when' expects a block, but this was just eaten by the assumed-sub listop. so the parser dies after the '}' of the 'when' block. 14:36
szabgab: STD does this better, I believe. it assumes there was a typo and the block was mistakenly gobbled. 14:37
therefore*
pmichaud returning to a topic from yesterday: irclog.perlgeek.de/perl6/2012-06-21#i_5746394 14:39
(matching actions to parse rules)
14:39 birdwind1pbird left
[Coke] std: try { die "hi"; CATCH { when X::IO::Dirx { say "ok" } } } 14:39
p6eval std 30385f8: OUTPUT«===SORRY!===␤Function 'X::IO::Dirx' needs parens to avoid gobbling block at /tmp/t2B3kDqtG5 line 1:␤------> try { die "hi"; CATCH { when X::IO::Dirx⏏ { say "ok" } } }␤Missing block (apparently gobbled by 'X::IO::Dirx') at /tmp/t2B…
pmichaud how about a pragma, dynvar, or equivalent that warns whenever a matching rule doesn't find its corresponding action?
szabgab masak: excuses :) I added to my private list of complaints
kresike bye all 14:40
szabgab just wondering aloud: would it be possible - in case of a parsing error - to go back a bit and try something else? 14:41
14:41 kresike left
szabgab so that might give a better error message of the parsing error? 14:41
pmichaud STD does this, yes.
szabgab ok, so that was not *that* carzy of an idea :) 14:42
masak: and btw, thanks for the explanation
14:45 wtw left
szabgab ... as a workaround I can print $_.WHAT in the CATCH block to get the exception class 14:49
14:56 Chillance joined
pmichaud TimToady: STD currently has the "gobbled block" handling in "token pblock"; is there a particularly compelling reason for it to be there instead of in "token xblock" ? 15:00
in other words, I'm thinking of moving the "block is missing" logic up to the callers of pblock (there seem to be only four of them) 15:01
oops, five. 15:02
15:02 fgomez left 15:03 araujo left 15:04 thou joined 15:05 MayDaniel joined
TimToady well, then the other places would have to handle the simple "Missing block" case, meseemeth 15:07
pmichaud yes, but they might be able to do so more informatively
"Missing block after 'else'" instead of just "Missing block"
"Missing block -- 'repeat' requires 'while', 'until', or block" (or somesuch) 15:08
anyway, I may try it in rakudo today or tomorrow. 15:10
TimToady I'm all for good error messages, though in most cases it'll be obvious what wants the block; repeat is a good use case though
pmichaud std: if 1 { say 'yes' } else say 'no'; # just curious 15:11
p6eval std 30385f8: OUTPUT«Use of uninitialized value $x in pattern match (m//) at STD.pm line 66584.␤Use of uninitialized value $x in concatenation (.) or string at STD.pm line 66623.␤===SORRY!===␤Missing block at /tmp/jkqJGvQUyV line 1:␤------> if 1 { say 'yes' } else …
masak a recent idea of mine is that it'd be possible to produce excellent error messages if the editor analyzed deltas between compiles.
15:11 araujo joined, araujo left, araujo joined
pmichaud "'else' requires a block" might be better there? 15:12
anyway, I'll give it a try. :-)
TimToady masak: "Then don't do that!" 15:13
masak TimToady: :P
harmil on rakudo nom with —gen-parrot and —parrot-option=—with-llvm, does that get me an llvm-backed rakudo, or is that not yet there?
pmichaud the other places can likely do just: [ <pblock> || <.panic: "Missing block"> ] to get roughly equivalent functionality
TimToady pmichaud: yes, that's better in the case of recovering C programmers 15:14
pmichaud or PHP programmers
TimToady I'm using C as a base class there...
pmichaud :-)
harmil: if you do "--with-llvm", you should get a Parrot linked to LLVM, yes. 15:15
harmil pmichaud: thanks
jnthn I don't think it actually does a great deal with it, however.
pmichaud yeah, I didn't even know that Parrot had a --with-llvm option. :-)
I don't think I'd call it a "llvm-backed rakudo" :-) 15:16
harmil heh, fair enough. My parser is just unacceptably slow, so I'm trying to find ways to fix that. I'm using it to rapid-prototype something at $job, but parsing a trivial program is taking upwards of 2-5 seconds.
pmichaud it's more like "rakudo with Parrot's llvm library linked", in all probability.
harmil Oh, I thought it enabled llvm-based jitting in the parrot vm
pmichaud --with-llvm Link to LLVM if it is available 15:17
I don't think it does that, no.
harmil ah
15:17 araujo left 15:18 am0c_ left
dalek kudo/nom: a56bf75 | jnthn++ | src/Perl6/Metamodel/ (2 files):
Provide a way to cleanly set name/ver/auth.
15:18
kudo/nom: 04ec0c0 | jnthn++ | tools/build/NQP_REVISION:
Bump to latest NQP for meta-model improvements.
kudo/nom: f740e37 | jnthn++ | src/core/PseudoStash.pm:
Fix a thinko that somehow wented undetected; guess we only cared about the .WHO of the created thing so it sorta worked out.
kudo/nom: 86b3009 | jnthn++ | src/ (12 files):
Make the various Metamodel:: classes be re-parented to inherit from Any. This means you can 'say 42.HOW' now, but more usefully you can write custom metaclasses without having to do the extra multiple inheritance from Mu/Any.
harmil blog.bacek.com/ — that guy seems to have stopped working on it (or at least blogging about it) last year...
rjbs I'm having a look at STD.pm6 and have a few questions.
TimToady uh-oh 15:19
pmichaud rjbs: o/
rjbs (1) ident v. identifier; I understand the difference in definition, but what's the deal? :)
Is ident just there to make it easier to define identifier in terms of it?
pmichaud <ident> is a builtin for all regexes 15:20
rjbs (I ask because if so, ident is referred to a few times elsewhere.)
TimToady ident is the standard CSy definition, so it seemed people might find it useful someday
15:20 sergot joined
pmichaud it's the standard "start with letter followed by letters/digits" definition 15:20
identifier is the Perl6-y "and also allow apostrophes and underscores" variant 15:21
s/underscores/hyphens/
rjbs Okay. And how is \w defined in p6?
pmichaud \w is underscore + <.alpha>
rjbs btw, allow me to make a joyful noise about the use of hyphen
pmichaud plus digits 15:22
TimToady includes Unicode, of course
pmichaud (I need to not type while distracted, sorry)
harmil Good call on \w BTW. I'd have been terminally confused if \w+ included "-"
rjbs TimToady: Right. Is it [_\pL\pN] ?
or [_\p{Alnum}]?
(There's been noise about non-ASCII variable names in p5 for a while now, and so I'm curious what you folks are doing. Unfortunately, the biggest nasty bit right now is punctuation variables, which you seem to have ejected into the sun. :-) 15:24
Also, perhaps more importantly, where could I find the definition of \w ?
TimToady it's one of those things that is still handwavingly defined in terms of P5, I suspect, alas
rjbs Okay.
TimToady
.oO(which P5?)
15:25
rjbs Have you considered using the Unicode ID_* props?
TimToady but the intend is that \w match all the standard alphanumerics in Unicode plus _
pmichaud I'd presume that \w is _ + \pL + \pN
TimToady I haven't looked at the ID_* props enough to opine 15:26
pmichaud (that's the set of regex chars that aren't meta, too)
rjbs pmichaud: That'd be better, since alnum includes marks.
Thanks! 15:27
TimToady well, by default marks mostly won't exist in NFG, which is the ideal we're aiming for
rjbs Oh, right. I forgot about that. :-) 15:28
TimToady not sure whether we'll represent isolated marks as themselves or as modifiers to a "missing" value somehow
rjbs Is NFG a p6 thing? My vague memory was that it was a Parrot thing.
TimToady yes
rjbs Cool.
pmichaud NFG is a p6 thing that we want to eventually see in Parrot.
TimToady parrot has documented it better, but p6 had the idea first
15:28 araujo joined, araujo left, araujo joined
rjbs Right now p5 lets you say $̈ = 10; 15:28
which is pretty awesome, but also terrible
pmichaud rakudo: $ = 10; say 'alive' 15:29
p6eval rakudo 69e6ec: OUTPUT«===SORRY!===␤Non-declarative sigil is missing its name␤at /tmp/DVOZ2zqblz:1␤»
rjbs pmichaud: you forgot the combining diaresis
pmichaud rakudo: ($) = 10; say 'alive'
p6eval rakudo 69e6ec: OUTPUT«===SORRY!===␤Contextual $*GOAL not found␤»
TimToady I guess since isolated marks are represented as themselves in NFC, and NFG is upwardly compatible in some sense, we might do that too
rjbs rakudo: ($̈) = 10; say 'alive'
p6eval rakudo 69e6ec: OUTPUT«===SORRY!===␤Non-declarative sigil is missing its name␤at /tmp/SRXOc7LAYg:1␤»
TimToady std: ($̈) = 10; say 'alive' 15:30
p6eval std 30385f8: OUTPUT«===SORRY!===␤Non-declarative sigil is missing its name at /tmp/gm4wK38ke8 line 1:␤------> (⏏$̈) = 10; say 'alive'␤Use of uninitialized value $first in string eq at STD.pm line 66369.␤Use of uninitialized value $first in string lt …
TimToady std: my ($̈) = 10; say 'alive'
p6eval std 30385f8: OUTPUT«===SORRY!===␤Unable to parse declarator at /tmp/1_DbgInaun line 1:␤------> my ⏏($̈) = 10; say 'alive'␤Couldn't find final ')'; gave up at /tmp/1_DbgInaun line 1:␤------> my ($⏏[31m̈) = 10; say 'alive'␤ expecting …
rjbs suggests the "identifier too metal" error. 15:31
pmichaud btw, at yapc::na we had a unicode expert express interest in implementing NFG for Rakudo/Parrot
so... I'm hopeful. :)
rjbs pmichaud: Cool! If it was Karl, and he leaves us for you, though, I will try salty tears.
:)
pmichaud (where 'express interest' == "held a longish hallway discussion with me about it"). It wasn't Karl. :)
TimToady yes, Karl was pumping me for everything I know about NFG, and a few things I don't know yet... :) 15:32
rjbs I'll reread about NFG sometime soon. I think all I ever read was lathos' first post about it.
TimToady pmichaud: who were you talking to?
15:33 brrt joined
pmichaud TimToady: Nick Patch. act.yapcna.org/2012/talk/82 15:33
TimToady maybe we should have them fight for the priviledge :)
pmichaud noway
I don't want to cause rjbs to tear up. :-) 15:34
timotimo so in order to support udp properly, it seems i have to do lots of stuff to IO::Socket :|
TimToady s/have to/get to/ :)
pmichaud timotimo: feel free to do lots of stuff to IO::Socket :-) Or, you could write a IO::Socket2 prototype and let us all look at it.
15:35 Pleiades` left
pmichaud (the nice thing about writing a new class is that you don't have to recompile rakudo each time to test it :) 15:35
timotimo ... do i have to recompile rakudo when i change the new class i made? :)
or do i just make a third new class?
pmichaud I'll explain with an example -- when redesigning MapIter, I just created a MapIter2 class and ran/tested it until I got the behavior I wanted. Then I did s/MapIter2/MapIter/ and copied it on top of the existing MapIter.pm file. 15:36
dalek ecs: 1b5ae87 | jnthn++ | S12-objects.pod:
Add a section on custom meta-objects.
pmichaud that way I could modify/test MapIter2 without a full CORE.setting recompile on each iteration 15:37
15:37 Pleiades` joined
harmil Now this is a fun error: Can not get non-existent attribute '$!ex' on class 'Exception' 15:38
15:41 jaldhar left
timotimo that sounds useful to me 15:41
first i'll have to fix my parrot, though 15:42
well, it actually depends. is it bad to have the sockets proto be 0 if 0 was supplied, rather than parrot setting the correct value if 0 was used in the constructor? 15:44
[Coke] jnthn: wented! ;)
15:44 kurahaupo left
jnthn [Coke]: ...what? 15:44
oh!
d'oh! 15:45
[Coke] looks like that error wented unnoted also. ;) 15:46
15:48 fgomez joined
skids timotimo: If you aren't already, you may want to catch up on whiteknight's recent posts to parrotcode.org, as he's got an IO system rewrite branch spun off right now. JFYI. 15:49
15:49 fgomez left, fgomez joined
timotimo oh, then i might want to not do anything right now 15:51
TimToady is thinking of verbs that start with Y
TimToady pictures timotimo yodeling 15:52
[Coke] TimToady: verbs.woxikon.com/english-verbforms-with-y ! 15:54
15:55 JimmyZ joined
[Coke] (the internet is ready for your questions.) 15:56
skids timotimo: or maybe talk the proto==0 over with him so he knows what that looks like from the HLL side and see whether the new branch is yet usable.
15:57 kurahaupo joined
pmichaud timotimo: I wouldn't expect the io system rewrite to significantly change things at the rakudo level. 15:57
TimToady pictures timotimo yachting it
pmichaud (i.e., I wouldn't use that as a reason to halt working on things)
afk, lunch 15:58
16:06 [hds] joined
harmil Not sure why this fails: IO("foo.test", :w).say("hello, world") 16:07
16:07 brrt left
harmil Gives me "Too many positional parameters passed; got 2 but expected 1" 16:07
in print 16:08
$*OUT.say("hello world") seems to work fine. Am I opening the file wrong?
TimToady IO() is a coercion
so takes only one argument
IO.new() might do better, or open()
harmil So IO.open threw a different error, let me get that... 16:09
TimToady nr: $*OUT.say: 'howdy'
p6eval rakudo 69e6ec, niecza v18-7-ga660099: OUTPUT«howdy␤»
harmil "IO.open("foo.test", :w).say("hello, world")" gives: Cannot bind attributes in a type object
16:10 fgomez left
TimToady s/IO.// 16:10
not sure what the method form thinks it's doing there 16:11
IO("/dev/tty").open(:w).say('howdy')
16:11 kurahaupo left
TimToady nr: IO("/dev/tty").open(:w).say('howdy') 16:11
p6eval niecza v18-7-ga660099: OUTPUT«Unhandled exception: Unable to resolve method postcircumfix:<( )> in type IO␤ at /tmp/669anUoBG2 line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3917 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3918 (module-CORE @ 562) …
..rakudo 69e6ec: OUTPUT«IO is disallowed in safe mode␤ in sub restricted at src/SAFE.setting:2␤ in block <anon> at src/SAFE.setting:18␤ in <anon> at src/gen/Metamodel.pm:2260␤ in any find_method_fallback at src/gen/Metamodel.pm:2258␤ in any find_method at src/gen/Metamodel.pm:828␤ i…
moritz harmil: just use the sub form, as the docs and all examples do 16:12
open($file, :w)
harmil open("foo.test", :w).say("hello, world")
that exits without error and creates the file, but does not write anything to it....
16:12 fgomez joined
moritz save the file handle, and .close it 16:13
16:13 fgomez left
harmil ok 16:13
moritz it's a rakudo+parrot bug
16:13 fgomez joined
harmil works 16:13
TimToady++, moritz++
TimToady given open("foo.test",:w) { .say("howdy"); .close } 16:14
moritz given open(:w, 'foo.test') { LEAVE .close; .say 'howdy' }; # should also work 16:15
TimToady in Ingyland, IO("foo.test").say would intuit that "foo.test" is to be opened for writing when it sees the 'say', or when you feed to it
sorear good * #perl6 16:16
TimToady o/ 16:17
moritz kinda thinks Ingyland is too magical
masak it is if there's some kind of drawback to it intuiting. 16:18
I still think the biggest reason we don't have a "reverse slurp" spec'd is that there's no name for it that isn't disgusting.
moritz we *could* just name it writeall 16:19
masak (and the second biggest reason is that write operations have more failure modes)
moritz re IO($fn).say opening for write, I'm a bit worried about things like IO($fn).seek(...), which isn't specific either for reading or writing
harmil right now, all output methods on IO return Bool::True (or True, somewhat inconsistently). Perhaps they should return number of bytes written? Also there appears to be no buffering control… 16:20
Just things I'm noticing as I go.
16:20 ggoebel left
moritz or return the IO handle 16:20
so that you can chain methods
that would bey ingyish too
masak re the thing pmichaud proposed earlier about having IO and two subclasses. how about 'File' and 'FileHandle'? 16:21
hm, but $*IN isn't really a file handle, is it.
maybe 'File' and 'Stream'.
or 'IOStream'.
or 'IO::File' and 'IO::Stream'.
harmil Perhaps return the IO handle with a write-status mixin that knows how to tell you the number of {various character-count operations} written? 16:22
masak sorry, just thinking out loud here ;)
harmil masak: same
I just worry about how heavy-weight my suggestion would be when you find yourself trying to do lots and lots of writes (e.g. in a Web server)… I don't know how much overhead there is in creating a mixin 16:23
16:24 JimmyZ left
masak good question. 16:24
I think it's a one-time cost in some sense.
jnthn uh, wait, are we talking "but" or "does" here? 16:25
masak r: role A {}; my $b = 42; say $b.WHICH; say ($b but A).WHICH; say ($b but A).WHICH
p6eval rakudo 86b300: OUTPUT«Int|42␤Int+{A}|42␤Int+{A}|42␤»
16:25 ggoebel joined
masak r: role A {}; my $b = 42; say $b.WHERE; say ($b but A).WHERE; say ($b but A).WHERE 16:26
p6eval rakudo 86b300: OUTPUT«170014355␤-1969658456␤-1974245204␤»
jnthn I don't know that it's a good idea though.
No, we don't cache mixin types yet.
masak r: role A {}; my $b = 42; say ($b but A).WHAT.WHERE; say ($b but A).WHAT.WHERE
p6eval rakudo 86b300: OUTPUT«1842980956␤1832714850␤»
jnthn It's on my todo list.
masak ah.
++jnthn
jnthn r: say 42.HOW
p6eval rakudo 86b300: OUTPUT«Perl6::Metamodel::ClassHOW.new()␤»
jnthn No .gist whining any more :)
masak \o/ 16:27
moritz \o/ indeed
jnthn r: say 42.HOW ~~ Any
p6eval rakudo 86b300: OUTPUT«True␤»
masak things just keep getting... *better*
jnthn Also the extra "is Mu" in various modules can go away.
masak I tell you, this is extra visible if you go on three weeks vacation from this place.
jnthn should totally go on three weeks vacation
masak jnthn: ooh! why can 'is Mu' go away?
jnthn masak: Because all the Perl 6 meta-objects now inherit from Mu (via Any) already. 16:28
masak: I was meaning the "is Metamodel::ClassHOW is Mu" stuff in things like Grammar::Tracer fwiw.
masak yes.
I know.
anyway, najs!
I guess it wasn't trivial due to general bootstrappery.
jnthn Indeed. 16:29
16:29 [hds] left
jnthn I'll have to go through my talk that I'll be doing at FPW and clean the code up a bit. 16:29
(It's same one as at GPW, but I can neaten a few things now.) 16:30
16:30 kurahaupo joined
moritz jnthn: so you're closing up your Hague grant? 16:30
jnthn moritz: Right :)
Thus the spec commit also :)
moritz thought so
jnthn Doesn't mean there won't be more meta-model improvements of course. Just that I should really clear up the grant.
moritz I have the impression you did a factor 5 more than what the grant required 16:31
or maybe more
16:31 FireFly left
jnthn It's safe to say that Rakudo is a rather different beast now than it was before the grant. :) 16:32
masak jnthn++ # so meta 16:35
16:37 FireFly joined 16:38 erkan left
masak FireFly: greetings. 16:38
new here?
harmil I wrote a buffering-management section to IO.pm so that this works: my $f = open("foo.test", :w); $f.buffer_type(:line); $f.say("hello, world") 16:41
Question: should line buffering be the default, and is this something I should pull request?
buffer_type is the Parrot function, so I didn't rename it. I also implemented flush() 16:42
masak my only objection is that S16 doesn't need gradual improvements, it needs a serious tug in the direction of pragmatics, reality, and usefulness. 16:43
but I guess gradual improvements are better than nothing ;)
harmil Yeah, I didn't even glance at S16 to be honest, I just grabbed the parrot methods on IO and mocked them up into Perl
Have to go do $job, but I'll deal with the default question tonight and then put this in a pull request 16:44
masak well, "just mocked Parrot up as Perl 6" triggers some warning bells. but as we expect all of this to move around and change anyway... 16:45
harmil fair enough. I don't imagine that this is the final implementation, but it would be nice if filehandles were flushable in some way today. 16:46
Though for flush, I really don't see it ever being much more than method flush(IO:D:) { $!PIO.flush() } 16:47
masak there you go, then. :)
pmichaud back from lunch 16:54
16:55 sudokode left
[Coke] should do something for lunch that doesn't involve sitting at his desk. 16:56
cog__ jnthn: it seems that some of your changes broke panda. gist.github.com/2973968
[Coke] we need to get that running on windows so jnthn can run it. :P 16:57
pmichaud cog__: that looks to me like an out-of-date binary/.pbc somewhere
especially the "Missing or wrong version of dependency 'src/gen/CORE.setting' 16:58
eiro masak, jnthn: what comes first ? macros or metaprogramming ?
masak eiro: is that, like, a koan? 16:59
:)
eiro swedish or english ?
a koan ?
pmichaud well, since we already have a good bit of metaprogramming, I suspect it's first :)
masak 'koan' is Korean, I think.
Woodi had 2 weeks vacation month+ ago and it resulted in *surprising* energy/lack of reluctance to do work...
masak Woodi: yeah, same.
eiro: I guess you're actually asking about the FPW schedule. 17:00
eiro (i'm writing schedule for fpw and i don't know if it make sense to schedule your talk on macros *after* metaprogramming in perl6
masak eiro: for me it doesn't much matter.
eiro masak, right
ok
pmichaud I'd think order doesn't make a lot of difference for those two.
masak eiro: we'll both blow people's brains out anyway. (but hopefully in a nice, tender way.)
17:01 birdwindupbird left
eiro masak, jnthn tadzik : by the way: the french law is very strong about internet acces in schools: if you want network during the conference, i need your passport number 17:02
harmil *boggle
masak same as in Italy, then.
eiro (sorry about that... we live in nazi prick country ... 5 years of Sarkozy is a huge brain damage)
jnthn How delightful.
eiro sure 17:03
jnthn Agree with masak that the order doesn't matter.
eiro prick ? is this the correct spell ? (/me google)
ok then
masak yes, although 'nazi prick' is not a common compound.
jnthn Uh...don't google prick :P 17:04
harmil googling for that might not get you what you wanted ;) try to avoid image search...
masak phenny: sv en "prick"?
phenny masak: "dot" (sv to en, translate.google.com)
masak :)
jnthn hah!
Another multi-language pun opportunity...
harmil If you prick me, do I not bleed? If you macro me, am I not meta? 17:05
masak jnthn: oh no what have I done
eiro :)
jnthn> Another multi-language pun opportunity... << \o/
back to the schedule... i'm late 17:06
huf i thought the romans put an end to those pesky puns
apparently not...
jnthn
.oO( aujourd'хуй )
masak jnthn: the established multi-language pun in these part for that particular linguistic coincidences involves a former prime minister of Sweden explaining that his first name has an ö in it. "My name is Göran with two... dots."
coincidence* 17:07
jnthn :D
masak I'm pretty sure he never actually said that, though. 17:08
but the joke is spot on because he was perceived as a kind of a... dominant character. some would say a prick. 17:09
Woodi there was SAFE mentioned earlier - is it a mechanism like chroot but more effective ? :) to this day chroot cannot "trap" Perl5 scripts and working alternative is vm...
masak SAFE is an ultimately ineffective way to prevent vandalism through p6eval. 17:10
Woodi hmm, can it be effective ? :) 17:11
[Coke] masak: well, that's what we're using it for.
p6eval: mkdir a
r: mkdir "a"
p6eval rakudo 86b300: OUTPUT«mkdir is disallowed in safe mode␤ in sub restricted at src/SAFE.setting:2␤ in sub mkdir at src/SAFE.setting:10␤ in block <anon> at /tmp/medYLgWr9a:1␤␤»
[Coke] r: eval 'mkdir "a"'
p6eval rakudo 86b300: OUTPUT«mkdir is disallowed in safe mode␤ in sub restricted at src/SAFE.setting:2␤ in sub mkdir at src/SAFE.setting:10␤ in block <anon> at eval_0:1␤ in <anon> at eval_0:1␤ in sub eval at src/gen/CORE.setting:483␤ in block <anon> at /tmp/E7y3b2Kcyf:1␤␤»
Woodi r: cd /etc
p6eval rakudo 86b300: OUTPUT«===SORRY!===␤Preceding context expects a term, but found infix / instead␤at /tmp/j8ipwjhmw8:1␤»
[Coke] seems legit.
pmichaud now that it's mentioned, I'd really prefer that we call it something other than "safe mode".
The name is completely wrong. 17:12
[Coke] *completely* ?
masak call it "Ministry of Safety".
pmichaud yes.
[Coke] You might need to explain why that is.
pmichaud I know from bitter experience with PHP's "safe mode".
huf sandbox mode? 17:13
pmichaud PHP has a setting called "safe mode" that supposedly makes thing safer. It absolutely does not do that; indeed, in many ways it causes scripts to do things that are more unsafe than if it hadn't been enabled (more)
however, because of the name "safe mode", administrators love to enable the feature because "it makes things safer".
masak Woodi: can it be effective? in a word, no.
pmichaud without ever really going much beyond that.
Woodi are there any thoughts about sandbox or other things like that ? 17:14
masak Woodi: I know of no way to strip away enough dynamism in Perl 6 that it becomes impossible to think (and execute) bad thoughts.
pmichaud I don't mind if we call it sandbox. That's much better than "safe"
masak of course, you could place the language runtime into a sandbox of some sort. that's probably a better idea. we already use chroot, IIRC.
pmichaud better might be to use a name with "disable" in it somehow. 17:15
because really what the module does is disable certain functions
but it in no way catches them all.
masak "narrow mode" :)
pmichaud "narrow" has potential. 17:16
Woodi I think that "anonymous ftp" was successfull in doing few its work good... maybe something like that ?
17:16 sudokode joined
pmichaud so, I'm now on a crusade to deprecate "SAFE.setting" in favor of a different name. 17:19
[Coke] +1 to SANDBOX setting.
pmichaud ah
RESTRICTED
[Coke] meh. ok. 17:20
pmichaud (after the sub that it implements)
[Coke] masak: so, given the current SAFE.setting, how does one run mkdir?
not eval.. pir:: something?
pmichaud r: Q:PIR { say 'aha!' }; 17:21
p6eval rakudo 86b300: OUTPUT«aha!␤»
flussence this got me thinking... a real safe mode may be possible using the same method(s) Chromium uses to sandbox tabs
[Coke] nqp: pir::say(3)
p6eval nqp: OUTPUT«3␤»
pmichaud r: nqp::say('aha!');
p6eval rakudo 86b300: OUTPUT«aha!␤»
pmichaud r: pir::say('aha!');
p6eval rakudo 86b300: OUTPUT«aha!␤»
[Coke] ok. seems like Q:PIR and pir should be added to the restricted list. (unless we want to block specific pir:: or nqp:: opcodes. 17:22
pmichaud r: eval('shell("ls")');
p6eval rakudo 86b300: OUTPUT«shell is disallowed in safe mode␤ in sub restricted at src/SAFE.setting:2␤ in sub shell at src/SAFE.setting:7␤ in block <anon> at eval_0:1␤ in <anon> at eval_0:1␤ in sub eval at src/gen/CORE.setting:483␤ in block <anon> at /tmp/eAvSMwIEm5:1␤␤»
[Coke] (and nqp) 17:23
(and we should also put parrot in restricted mode, which I don't think is doable atm.) 17:24
pmichaud we might add a restricted mode to nqp, but to me that's lowish priority.
17:25 raiph joined
Woodi on the less restrictive and more "open" topic: before one of talks on YAPC::NA (probably) chromatic announced trat there is open.org (probably) parked and not used... anyone know was that problem resolved ? 17:25
pmichaud I think it was merlyn who advertised open.org 17:26
Woodi ah, k
pmichaud they were taking proposals for what to do with it
Woodi but on open.org "something" is visible, but probably not much popular 17:27
where I can get email for someone involved with this ? 17:28
pmichaud Woodi: [email@hidden.address]
Woodi want to propose yet another blog site but with twist :)
thank you pmichaud++ 17:29
17:29 fgomez left 17:31 cognominal joined, adu joined
dalek kudo/nom: f2e4257 | pmichaud++ | / (2 files):
Deprecate SAFE.setting in favor of RESTRICTED.setting.
17:31
kudo/nom: 3888832 | pmichaud++ | docs/announce/2012.07:
Add draft announcement for 2012.07 release.
pmichaud if someone can modify p6eval to use RESTRICTED instead of SAFE, I'd be very happy. 17:32
17:34 cog__ left 17:38 fgomez joined
cognominal pmichaud/jnthn: made a real clean and a rm -rf ~/.panda. Recompiled. Still have the problem. 17:40
jnthn cognominal: Assume you did "make install" too?
cognominal yes 17:41
It does not seem I have stray .pbc in my system that could have been pulled by mistake. 17:42
jnthn It still looks like old pre-compiled stuff hanging around :S
Well, stray .pir is just as bad. 17:43
masak tadzik: don't know why I didn't think of this right away -- the correct behavior for panda is to be case-sensitive, but to give excellent suggestions if there's a module available that differs only by case. could even do typos, as long as it doesn't default to DWIMming. 17:44
cognominal jnthn: btw, I am on a mac and the filesystem is not case sensitive 17:45
harmil cognominal: yes, it is… it's selectively case insensitive for asciish values of case insensitive 17:48
masak cognominal: the Macs come preformatted in a case-insensitive mode. first thing I do with a new Mac is always reformat the drive. 17:49
harmil But that being said, yes, you can't rely on everyone being able to distinguish "x" from "X" on their local FS 17:50
masak right.
there's a lot of things you can't assume about file names and paths.
I think Perl's line there has always been "Unix-centric but others-compatible"
Perl 6 slightly less Unix-centric than Perl 5, perhaps. 17:51
17:51 [particle]1 joined 17:53 [particle] left 18:00 [particle]1 is now known as [particle] 18:08 tyatpi left 18:09 FireFly left, FireFly joined
moritz backlogs 18:12
fwiw it's intentionally that nqp:: and pir:: opcodes work in p6eval 18:13
we have a pragma to disable them
but they are useful for some demonstrations
masak ok. 18:14
18:14 daxim left
[Coke] r: my $a = pir::new("OS") && $a.cwd(); 18:15
p6eval rakudo 388883: OUTPUT«get_bool() not implemented in class 'OS'␤ in block <anon> at /tmp/0nrXusC82o:1␤␤»
[Coke] r: my $a = pir::new("OS") ; $a.cwd();
p6eval rakudo 388883: OUTPUT«Cannot assign a non-Perl 6 value to a Perl 6 container␤ in block <anon> at /tmp/42TtZluBC8:1␤␤»
moritz r: my $a := pir::new("OS") ; $a.cwd(); 18:17
p6eval rakudo 388883: ( no output )
moritz r: my $a := pir::new("OS") ; say nqp::p6box_s $a.cwd();
p6eval rakudo 388883: OUTPUT«/home/p6eval␤»
18:20 GlitchMr left
dalek albot: 2e02a78 | moritz++ | evalbot.pl:
s/SAFE/RESTRICTED/
18:21
[Coke] r: pir::new("OS").cwd.say
p6eval rakudo 388883: OUTPUT«/home/p6eval␤»
moritz evalbot control restart 18:22
18:22 p6eval left, p6eval joined, ChanServ sets mode: +v p6eval
moritz r: say 1 18:24
p6eval rakudo 388883: OUTPUT«1␤»
18:30 erkan joined, erkan left, erkan joined 18:36 sirrobert joined
sirrobert Is there a cookbook or tutorial for grammars? 18:36
moritz sirrobert: there's a chapter about them in the 'Using Perl 6' book (PDF freely available) 18:37
sirrobert ah, I forgot to look there!
moritz sirrobert: there's also a bit on the perl 6 advent calendar
sirrobert: and for debugging, Grammar::Tracer is very helpful IMHO 18:38
masak oh! I've decided what to do for the July blogging.
sirrobert working on a selenium testing module
18:38 fgomez left
sirrobert moritz: thanks =) 18:38
moritz there's also perlgeek.de/en/article/debug-a-perl-6-grammar
(which might be a bit out of date; I should update it)
sirrobert I'll check it out =)
masak gonna do the 'crypt' adventure game from scratch, with tests this time, and lots more explanations. that way, it'll tie into last year's blogging, but it'll be new material. in retrospect, I believe there's easily a month of material in there for the adventure game. 18:39
the game will probably come out factored differently. but it'll have the same basic plot and descriptions.
sirrobert masak: cool
18:40 cognominal left
masak yes, I hope so. :) 18:41
18:41 cognominal joined
moritz ma 18:41
erm
masak: sounds nice
sirrobert heh I'm super excited about using grammars. 18:42
for DSL purposes
moritz grammars are nice
18:43 araujo left, fgomez joined
masak I look forward to being able to inject sublanguages into the program currently compiled. 18:45
is that blocking on something, besides tuits? shouldn't we be *very* excited about making that work in Rakudo or Niecza? 18:46
jnthn masak: qbootstrap is done now :) That's gonna help :) 18:47
18:48 vmspb joined 18:49 araujo joined
jnthn Main issue is that from the spec I find it hard to know exactly what a slang would look like or how it'd be used. 18:50
Somebody trying to flesh out some example code would that they think should work would to a lot to move things forward.
dinner &
pmichaud I'm looking at spectests marked with "nom regression". I think that S03-smartmatch/any-array-slice.t is incorrect wrt current spec and could just be removed. Anyone care to concur?
moritz pmichaud: I think that whole file should go 18:52
the rest of the tests are only correct by pure accident 18:53
pmichaud removing S03-smartmatch/any-array-slice.t 18:54
dalek kudo/nom: d677c0e | pmichaud++ | t/spectest.data:
(nomreg cleanup) Remove S03-smartmatch/any-array-slice.t
18:55
ast: 3526efc | pmichaud++ | S03-smartmatch/any-array-slice.t:
Remove out-of-spec any-array-slice.t tests.
18:56
ecza: f91bc64 | moritz++ | t/spectest.data:
track deletion of test file
pmichaud We win back a fair number of nom regressions if we can get $x ~~ (1, *, 4) to work again. github.com/rakudo/rakudo/blob/nom/...st.pm#L275 18:57
masak jnthn: here's a first attempt at fleshing out an example: gist.github.com/2974519
moritz pmichaud: you probably know that not everything labeled as "nom regression" is one; it is what the fudgers (including me) used when a test didn't pass on nom that passed on b; though spec changes were sometimes the reason too 18:58
pmichaud moritz: yes, I know, thanks for the reminder though. Cleaning those up just felt like something easy to do for me at the moment. :)
especially since I've stumbled upon several recently that are no longer regressions. I figure I'll hit some lhf today. 18:59
masak pmichaud: S03-smartmatch/any-array-slice.t looks very suspect to me. 19:00
moritz pmichaud: I've done a run through some of them roughly two months ago, but I guess that our LHFs differ a bit :-)
masak somewhere on a spectrum between "contrived" and "pointless".
[Coke] moritz: aye. that was more of a timestamp than any true regression test.
moritz no, just written against an old spec
[Coke]: I know. I've used it too.
masak ah well. that may be it. 19:01
[Coke] hopes none of these removals are detracting from pugs ever dwindling numbers. ;)
19:01 MayDaniel left
moritz masak: from a time where smart-matching had quite some syntactic special cases 19:01
masak aye. 19:05
jnthn masak: slang is, according to STD, a package declarator :) 19:06
19:07 tyatpi joined
jnthn masak: That is, I think it's the thing that declares a sublanuage rather than the thing to enter one. 19:08
sirrobert I don't seem to get heredocs... this doesn't work: my $foo = q :to 'EOSTR';
What am I missing?
moritz sirrobert: not yet implemented in rakudo
sirrobert (it says colons may not be used to delimit
moritz works in niecza though
sirrobert ah, that explains it =)
jnthn wonders if we can get those in for the July release :) 19:09
sirrobert we switched our code to p6 btw (for my company)
our two main projects are in clojure and p6.
flussence !
sirrobert =) 19:10
flussence (I still haven't convinced my $dayjob to get with the times and start using p5.10's features...) 19:11
sirrobert heh 19:12
moritz wow
sirrobert at my last job we used 5.8 forever.
masak sirrobert: kudos!
sirrobert masak: thanks =)
masak sirrobert: let us know how it goes.
sirrobert will do. starting to write some utility modules now 19:13
for selenium testing (web ui integration tests), etc.
moritz and please blog about
it 19:14
sirrobert it was a close race between javascript (node) and p6, but we decided to go ahead and go the more interesting (and rough-and-tumble) route =)
hmm good idea
pmichaud if we can't get :to in for the July release, perhaps we can at least get a NYI message.
moritz and post the URL here
sirrobert moritz: sure, will do
19:15 araujo left
flussence r: say 'abc'.indent(4) # nom can haz? 19:15
p6eval rakudo d677c0: OUTPUT« abc␤»
sirrobert I'll talk with my marketing guy... we might keep it anonymous for a while (though I'll still blog about it)
moritz pmichaud: I think it wouldn't be too hard to do a 'q' [<colonpair> <.NYI(...)>]? or some such
flussence oh, I completely missed when that got re-added!
moritz flussence: I think there's still one or two regressions in the tests 19:16
but the big lump was rather easy to port
[Coke] sirrobert++ #adventurous
sirrobert: definitely let us know what parts are painful so we can help you fix them. (This is not a promise of support. ;) 19:17
sirrobert heh ok
moritz there are some things that might be painful for you but pretty easy to add, like missing small IO features or so
so never hruts to ask 19:18
sirrobert is there some kind of ... ticket system?
or better to mention it here?
[Coke] for rakudo: email to [email@hidden.address]
moritz mailto:rakudobug@perl.org
sirrobert ok
pmichaud rakudo.org/tickets
rakudo.org/tickets
moritz goes to rt.perl.org/rt3/
[Coke] mentioning things in the presence of masak on IRC also helps.
sirrobert cool
[Coke] note that due to historical reasons, you can only open tickets via email, though.
webterface is great for searching and tracking status, though. 19:19
sirrobert got it
moritz fsvo "great"
pmichaud btw, schwern suggested using [easy] for easy tickets instead of [lhf]. "Nobody knows what LHF means."
moritz :-)
masak sirrobert: if you don't want to submit the issues yourself, just mention them here and someone will pick them up and submit them.
19:19 araujo joined
sirrobert masak: cool, thanks. 19:19
moritz pmichaud: +1 19:20
pmichaud looks like we have only one such open ticket now anyway.
pmichaud fixes. 19:21
[Coke] easy++
[Coke] hurls inception.davepedu.com/
moritz pmichaud: fwiw I've tried to track down the "Method 'message' not found for invocant of class 'Any'" after warning-in-REPL 19:23
pmichaud: I failed. My ack-fu found only two instances of .message 19:24
pmichaud moritz: okay; maybe I'll track it a bit later. I was just a bit surprised by it.
okay, now switched LHF -> EASY in most locations I'm aware of. rakudo.org/rt/lhf now forwards to rakudo.org/rt/easy
moritz well, three actually 19:25
19:25 [particle]1 joined
moritz two are internal error messages where I see on way how they could be triggered 19:25
and on is a call on self, which is of type Exception, not Any
dalek kudo/nom: 5f0f3f0 | pmichaud++ | src/core/EnumMap.pm:
Update EnumMap.ACCEPTS(Positional) to test hash slice existence.
19:27
flussence that talk about bugs reminds me I got hit by #113660. I want to try and help fix it but it seems like there's not enough people affected to find any obvious cause in common :(
19:27 [particle] left
dalek ast: fdeefa8 | pmichaud++ | S03-smartmatch/array-hash.t:
Unfudge no-longer-nom-regression.
19:27
[Coke] flussence: maybe setup a VM somewhere that devs can remote into? Iunno. 19:31
flussence that's the thing, I can't reproduce it outside my netbook :(
[Coke] you're running ubuntu 8!? 19:32
isn't it up to ...11?
pmichaud 12.04 is the most recent
flussence no! the bug reporter is
I've got gentoo on here, everything's up to date 19:33
masak jnthn: ('slang' being a declarator) -- oh right. yes, it was an ill-chosen keyword on my part. gist now updated: gist.github.com/2974519
flussence I guess that rules out external software versions affecting it, at least... 19:34
19:36 mikemol left
flussence I notice he's running on a laptop too, so it might be some hardware issue. 19:37
(though I generally haven't had out-of-memory issues building rakudo before...)
[Coke] is it an OOME? do you happen to be running top at the time? 19:40
and, how much memory do you have? we can always do a build in a ulimit'd env. 19:41
flussence OOM errors usually look different to this one... I'll go try and cause it again but it'll take a while. something along the lines of "invoke not defined", then a long internal-sounding backtrace 19:42
19:43 ggoebel left
[Coke] I don't see the backtrace in the ticket. 19:43
adding it would be helpful.
flussence yeah, doesn't look like it's there. I'll go do it. 19:44
[Coke] I will try a build on my underpowered ubuntu netbook.
jnthn I tried it on my 32-bit laptop today and it worked.
[Coke] take the ticket so he doesn't forget.
*takes
19:48 ggoebel joined
jnthn flussence: Can you give me the output of parrot_config --dump on the box that it fails on? 19:51
flussence will do 19:54
19:54 birdwindupbird joined
dalek ast: a656379 | pmichaud++ | S03-smartmatch/regex-hash.t:
Unfudge no-longer-nom-regression.
19:55
kudo/nom: 1b6636f | pmichaud++ | src/core/EnumMap.pm:
Update EnumMap.ACCEPTS(Regex), removing another nom regression.
moritz pmichaud: I've made some progress on diagnosing the error 19:58
(error after warning in REPL)
it's from the internal error error reporting in the backtrace printer 19:59
oh, because I'm stupid.
using $! inside a CATCH handler 20:00
well, it's a codepath that's hard to test (reporting internal errors) 20:01
flussence [Coke], jnthn: here you go - gist.github.com/2974816
(and I could've sworn that said "not implemented in class '$'" last time...) 20:02
pmichaud rn: say 3.14.Rat.perl;
p6eval niecza v18-7-ga660099: OUTPUT«<157/50>␤»
..rakudo d677c0: OUTPUT«157/50␤»
moritz I think I've also seen a "in class '.'" or so in some nopaste 20:03
pmichaud I think the correct answer should be "3.14"
moritz we've gone back and forth on this one so many times 20:04
20:04 vmspb left
[Coke] that's a generated file, yes? 20:04
pmichaud I'm just reading current spec.
[Coke] flussence: can you also post src/stage1/NQPCORE.setting ?
20:05 bruges_ joined
moritz I thnk that one is a straight-forward combination of source files; shouldn't go wrong much 20:05
[Coke] no, but.
flussence [Coke]: done, same page. github isn't very helpful with the order it sorts added files in... 20:06
[Coke] I wonder if it's something crazy like git crlf settings. :P
20:06 bruges left
[Coke] flussence: what version of nqp are you on? 20:07
flussence --gen-parrot on rakudo git, so whatever that's using...
[Coke] can you do a git log in nqp dir? 20:08
(or whatever to get the latest commit hash?)
flussence sure - fcc9a2398189c6fccf77a355461bf29638dd36e5
jnthn flussence: Thanks...nothing looks odd in the config there. 20:09
flussence (I wonder if it's some obscure, horrible memory corruption bug in a lower level...)
jnthn flussence: Yeah, that's my fear. 20:10
moritz you might want to fix some easy-to-reproduce segfault, and hope this one goes away :-) 20:11
[Coke] heh
20:14 UncleFester6 joined
jnthn It fails on the call to is_dispatcher. This is somewhat interesting in so far as that means it's having to do the dynamic compilation thing. 20:14
Since is_dispatcher is defined in the same compilation unit.
UncleFester6 Hi I'm the reporter. If you look around here in IRC irclog.perlgeek.de/perl6/2012-06-15#i_5730212 you can find a few back trace dumps I believe. 20:17
I can reproduce it every time.
moritz UncleFester6: is the error message exactly the same each time? 20:18
dalek kudo/ex-hardening: b9a332b | moritz++ | src/core/Backtrace.pm:
improve robustness of internal error reporting
20:21
kudo/ex-hardening: b68a884 | moritz++ | src/core/Backtrace.pm:
be more tight about :D in invocant
UncleFester6 Both grondilu and I got invoke() not implemented in class '??' but the thing in quotes after class seems to vary.
[Coke] UncleFester6: having those on the ticket makes it much easier to diagnose this stuff when tuits present themselves.
dalek p: 4019f2a | jnthn++ | src/NQP/Grammar.pm:
Remove a leftover from the now-gone regex engine.
[Coke] the gist we're working from now is prolly OK, though.
I see no diffs between my build of src/stage1/NQPCORE.setting and the one in the gist. 20:22
UncleFester6 does that mean you reproduced the error? 20:23
moritz flussence did 20:24
jnthn UncleFester6: A few people have reproduced it. I can't, and I'm struggling to spot a pattern.
UncleFester6: Are you building on a 32-bit of 64-bit platform?
*or 20:25
20:25 MayDaniel joined, MayDaniel left, MayDaniel joined
UncleFester6 I am actually just a bit unsure. For some reason I thought I installed 64 bit but when I researched I found the command 'getconf LONG_BIT' which reads 32 20:26
jnthn Hm, ok
afaik everybody who reported it so far that I could get an answer on this from said 32 bit.
moritz UncleFester6: what does uname -a say? 20:27
UncleFester6 Linux ron-laptop 2.6.24-24-generic #1 SMP Tue Jul 7 19:46:39 UTC 2009 i686 GNU/Linux
20:27 birdwindupbird left
flussence that's a 32-bit userspace 20:27
moritz ... and kernel 20:28
flussence the kernel can be 64-bit but lying about it :)
moritz does tha happen often?
flussence I think it's the default behaviour for 32-on-64 since gcc gets horribly confused otherwise... but then again I don't know many distros which install that way either. 20:29
20:29 birdwindupbird joined
flussence (I read recently that debian supports installing an x86-64 kernel on a 32-bit install, but it's not done by default) 20:30
iow, we're all on 32-bit it seems
UncleFester6 If there is a test I can run, just let me know, I'll be happy to run it. 20:33
20:39 birdwindupbird left
dalek kudo/ex-hardening: 57d251f | moritz++ | src/core/Backtrace.pm:
fix previous commit
20:40
sirrobert perl6: say ("a" ~~ /a/) ?? "yes" !! "no"; 20:41
p6eval pugs: OUTPUT«Error eval perl5: "if (!$INC{'Pugs/Runtime/Match/HsBridge.pm'}) {␤ unshift @INC, '/home/p6eval/.cabal/share/Pugs-6.2.13.20120203/blib6/pugs/perl5/lib';␤ eval q[require 'Pugs/Runtime/Match/HsBridge.pm'] or die $@;␤}␤'Pugs::Runtime::Match::HsBridge'␤"␤*** Can't locate P…
..rakudo 1b6636, niecza v18-7-ga660099: OUTPUT«yes␤»
sirrobert perl6: say ("a b" ~~ /a b/) ?? "yes" !! "no";
p6eval pugs: OUTPUT«Error eval perl5: "if (!$INC{'Pugs/Runtime/Match/HsBridge.pm'}) {␤ unshift @INC, '/home/p6eval/.cabal/share/Pugs-6.2.13.20120203/blib6/pugs/perl5/lib';␤ eval q[require 'Pugs/Runtime/Match/HsBridge.pm'] or die $@;␤}␤'Pugs::Runtime::Match::HsBridge'␤"␤*** Can't locate P…
..rakudo 1b6636, niecza v18-7-ga660099: OUTPUT«no␤»
sirrobert What happened there? 20:42
moritz rn: say so 'a b' ~~ /:s a b/
p6eval rakudo 1b6636, niecza v18-7-ga660099: OUTPUT«True␤»
moritz sirrobert: whitespace is ignored by default
flussence r: say ("a b" ~~ m:sigspace/a b/)
p6eval rakudo 1b6636: OUTPUT«q[a b]␤␤»
sirrobert ah 20:43
I was somehow thinking it was both ignored and not ignored (when I felt like it? =)
perl6: say ("a b" ~~ /a \s b/) ?? "yes" !! "no";
p6eval pugs: OUTPUT«Error eval perl5: "if (!$INC{'Pugs/Runtime/Match/HsBridge.pm'}) {␤ unshift @INC, '/home/p6eval/.cabal/share/Pugs-6.2.13.20120203/blib6/pugs/perl5/lib';␤ eval q[require 'Pugs/Runtime/Match/HsBridge.pm'] or die $@;␤}␤'Pugs::Runtime::Match::HsBridge'␤"␤*** Can't locate P…
..rakudo 1b6636, niecza v18-7-ga660099: OUTPUT«yes␤»
sirrobert thanks 20:44
moritz seriously considers taken pugs out of the 'perl6' target 20:45
adu moritz: isn't it always 20% behind rakudo/niecza? 20:47
20:48 spider-mario joined
au moritz: go for it :) 20:48
20:49 jlaire joined
moritz adu: ignore the spectest counts; they are irrelevant 20:50
dalek albot: 61a54c0 | moritz++ | evalbot.pl:
remove pugs from p6/perl6 targets
20:52
albot: afadf23 | moritz++ | evalbot.pl:
add aliases for executing pugs, rakudo and niecza at once
20:59
moritz evalbot control restart
20:59 p6eval left, p6eval joined, ChanServ sets mode: +v p6eval 21:00 skids left
au p6: say ("a b" ~~ m:sigspace/a b/) 21:00
moritz the first execution after a restart sometimes takes ages
I have no idea why
p6eval rakudo 1b6636: OUTPUT«"load_bytecode" couldn't find file 'RESTRICTED.setting.pbc'␤current instr.: 'nqp;Perl6;ModuleLoader;_block1268' pc 5717 (src/gen/perl6-moduleloader.pir:2690) (src/Perl6/ModuleLoader.pm:259)␤called from Sub 'nqp;Perl6;ModuleLoader;load_setting' pc 5465 (src/gen/perl…
..niecza v18-7-ga660099: OUTPUT«#<match from(0) to(3) text(a b) pos([].list) named({}.hash)>␤»
21:01 birdwindupbird joined
au p6: say ("a b" ~~ m:sigspace/a c/) 21:01
p6eval rakudo 1b6636: OUTPUT«"load_bytecode" couldn't find file 'RESTRICTED.setting.pbc'␤current instr.: 'nqp;Perl6;ModuleLoader;_block1268' pc 5717 (src/gen/perl6-moduleloader.pir:2690) (src/Perl6/ModuleLoader.pm:259)␤called from Sub 'nqp;Perl6;ModuleLoader;load_setting' pc 5465 (src/gen/perl…
..niecza v18-7-ga660099: OUTPUT«False␤»
moritz ugh, the RESTRICTED setting isn't built :( 21:02
but SAFE is deprecated 21:03
I'll switch back p6eval until RESTRICTED actually works
21:04 atrodo left, p6eval left, p6eval joined, ChanServ sets mode: +v p6eval
dalek albot: e42ce24 | moritz++ | evalbot.pl:
Revert "s/SAFE/RESTRICTED/"

This reverts commit 2e02a788c940a916038bc8721d6d907604214b30. because RESTRICTED setting doesn't work yet (isn't built)
21:04
21:14 birdwindupbird left 21:15 birdwindupbird joined, majrmovies left
pmichaud oh yes, I can set up RESTRICTED. Fixing. 21:22
21:34 fgomez left, cog_ joined 21:35 cognominal left 21:46 alester left
dalek kudo/nom: b7bf63d | pmichaud++ | / (2 files):
Update build process for RESTRICTED.setting, other refactors.
21:47
pmichaud when is it (pardon pun) "safe" to restore the SAFE->RESTRICTED patch? 21:48
(to evalbot.pl)
dalek kudo/nom: 06a7305 | pmichaud++ | src/SAFE.setting:
Add deprecation notice to SAFE.setting.
21:49
pmichaud commits; forgiveness > permission 21:50
masak \o/
g'night, #perl6
dalek albot: 2097ac3 | pmichaud++ | evalbot.pl:
Restore s/SAFE/RESTRICTED/ .
22:11 adu left 22:16 birdwindupbird left 22:24 toadsted joined 22:26 sergot left, toadsted left, mathw left 22:29 MayDaniel left 22:37 UncleFester6 left, UncleFester6 joined 22:38 spider-mario left 22:40 tyatpi left, tyatpi joined 22:51 skids joined, kurahaupo left 23:00 sjn left 23:09 kurahaupo joined 23:28 tyatpi left 23:29 tyatpi joined 23:36 tyatpi left 23:37 sisar left, sisar joined 23:40 cog_ left 23:41 cognominal joined 23:42 tyatpi joined 23:44 sisar left 23:50 cog_ joined 23:51 cognominal left 23:53 cog__ joined
[Coke] remotes into feather from an old freebsd box with 40M of memory and a 4G hard drive. 23:55
and apparently no utf8 support at the moment.
23:57 cog_ left 23:58 UncleFester6 left, UncleFester6 joined