»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:02 mkramer left
dalek odel: f0f4a57 | diakopter++ | lua/compiler/ (4 files):
more DNST->LST renaming
00:04
00:04 mkramer joined 00:11 Exodist left 00:13 daniel-s left 00:18 mkramer left 00:19 mkramer joined
sorear grr. eval_dies_ok has stopped working for no clear reason 00:19
it crashes before it even gets to &eval; fetching the lexical &no-control in Test is NREing now that mainlines are being run
00:20 Exodist joined
jnthn sorear: Seems like a day for bizzare bugs... :S 00:20
00:21 carlin joined, replore joined
jnthn decides its time for some rest 00:22
*it's
night &
00:25 donri left
dalek ecza: 8cfcd18 | sorear++ | lib/Builtins.cs:
Fix warning in compiling Builtins
00:26
diakopter looks forward to the niecza Halloween release 00:27
dalek ecza: 81deb74 | sorear++ | lib/Kernel.cs:
Fix just-in-time sub compilation to not overwrite parts of the protopad
ecza: 122ac5d | sorear++ | lib/ (2 files):
Run mainlines of modules at BEGIN time
sorear _now_ BEGIN semantics should be properly in.
diakopter o_O
evalbot rebuild niecza 00:28
p6eval NOT OK (maybe a rebuild is already in progress?)
sorear except for a couple corner cases like class Foo is ::(<A B>.pick) { ... }
*a few
diakopter niecza: BEGIN { BEGIN { say 4 } } 00:29
p6eval niecza v10-254-g122ac5d: OUTPUT«4␤»
sorear also BEGIN still doesn't return a value.
122ac5d will be the release, if it can pass reboot and spectest 00:30
(except I still need to write the ann)
[Coke] survived Halloween! 00:42
00:54 thou left
sorear 3 files failed. 01:04
01:06 IngisKahn left 01:19 wolfman2000 joined 01:33 thou joined 01:36 snearch left 01:37 drbean left 01:38 Chillance left 01:43 drbean joined 01:56 woosley joined 01:58 ab5tract left 02:12 odoacre_ joined 02:14 odoacre left
[Coke] /install/bin/perl6 foo1.p6 02:16
PARROT VM: Could not initialize new interpreter
PackFile_Header_validate: This Parrot cannot read bytecode files with version 11.0.
er, ./install/...
[Coke] tries a fresh co of parrot. 02:19
02:23 IngisKahn joined, whiteknight left 02:36 diegoviola left
[Coke] was just me. 03:00
03:04 djanatyn is now known as djanatyn|afk
dalek ast: f926610 | sorear++ | S02-magicals/progname.t:
[S02-magicals/progname] Make both tests equally forgiving
03:15
ecza: 86d2c1d | sorear++ | t/spectest.data:
Disable two incidentally broken test files
03:16
03:22 kaleem joined
sorear [Coke]: 89960a0 "alpha sort test listing." # careful trying to maintain a sort, even within ASCII sort order is strongly influenced by LC_ALL 03:27
at various times I've committed spectest.data files that are sorted according to LC_ALL=C and LC_ALL=en_US 03:28
I guess LC_COLLATE
03:34 f00li5h left
dalek odel: 9e66595 | diakopter++ | lua/compiler/ (5 files):
first cut at emitting Lua. generates functions with more than 200 locals. will have to workaround by storing all locals in a table. <sigh>
03:37
03:39 dayangkun joined 03:47 f00li5h joined 03:49 f00li5h left, f00li5h joined
dalek ecza: 7f133f9 | sorear++ | docs/announce.v11:
Add v11 announce
03:56
03:56 risou_awy is now known as risou
sorear looking-over requested.
diakopter looks good to me 03:58
04:03 benabik left, benabik joined
[Coke] +1 04:06
04:07 huf left 04:08 djanatyn|afk left, ruz left, ruz joined 04:09 huf joined, djanatyn|afk joined 04:14 thou left 04:15 envi_ joined 04:17 envi_ left, envi_ joined
japhb sorear, announce looks good to me too. 04:26
04:27 alester joined, _jaldhar joined 04:28 risou is now known as risou_awy, risou_awy is now known as risou
dalek odel: 3fbbe7d | diakopter++ | lua/compiler/ (2 files):
NQPSetting.lua actually compiles. only things I know of remaining: while loops that don't use labels, and try/finally (try/catch already done).
04:29
diakopter heh, a 24,000 line lua file compiles and runs in 0.053s 04:30
that's annoying; I can't have more than 200 "local"s in the same function, but I can have 783 named closures declared in a function (that are accessible and scoped just like locals) 04:33
aww, I can't gist the whole file ;) 04:35
413 Request Entity Too Large
sorear diakopter: lua is designed that way 04:36
unification of concepts: "We don't need a deserializer, we can just make the normal parser/interpreter fast on huge files"
diakopter I'm using luajit, btw 04:37
04:38 alester left
diakopter 'night 04:39
sorear 'night
04:44 cooper left
dalek ecza: 60f5921 | sorear++ | src/NieczaFrontendSTD.pm6:
One more tiny fix to get bootstrap working again
04:45
04:48 risou is now known as risou_awy 04:52 risou_awy is now known as risou 04:56 alester joined 04:57 alester left 05:00 aloha left 05:01 aloha joined
dalek ecza: e1b9adf | sorear++ | FETCH_URL:
Update bootstrap for v11
05:02
sorear mail sent.
05:06 alc joined, risou is now known as risou_awy 05:07 risou_awy is now known as risou 05:08 mkramer left 05:11 risou is now known as risou_awy, risou_awy is now known as risou 05:12 simcop2387 left 05:13 orafu left, orafu joined, simcop2387 joined 05:29 risou is now known as risou_awy, lrnperl joined
sorear What sort of niecza backend would people most like to see next? 05:42
05:42 kaare_ joined 05:47 risou_awy is now known as risou
TiMBuS llvm :3 05:51
or did i misinterpret what you meant by backend 05:53
05:57 wolfman2000 left
sorear TiMBuS: that is the sort of thing I look for 06:03
hrm, I should spend time this month trying to figure out why the niecza parser is so slowww 06:04
TiMBuS well in that case, i vote llvm again. its fast, allows jitting, doesnt need mono. with a lot of effort could even make native binaries from perl6 06:08
06:09 woosley left
TiMBuS ignoring how huge they would be 06:09
06:09 DarthGandalf left 06:18 risou is now known as risou_awy 06:25 dayangkun left, dayangkun joined 06:26 koban joined 06:37 mj41 joined, koban left
sorear -> sleep 06:38
06:45 mj41 left 06:47 zby_home_ joined
japhb phenny, tell sorear Perhaps one of the command-line capable JS engines. Would be nice to see how well Niecza's design fits into that type of VM, and whether the way that JS VMs are tunes can work well with the kind of generated code Niecza would throw at it. 06:48
phenny japhb: I'll pass that on when sorear is around.
moritz \o 06:49
06:51 lrnperl left 06:58 koban joined 07:01 dayangkun_ joined 07:05 dayangkun left, stepnem left
moritz nom: class A { method m() is is_hidden_from_backtrace { } }; A.new.m; say 'alive' 07:14
p6eval nom ee1a1c: OUTPUT«===SORRY!===␤No applicable candidates found to dispatch to for 'trait_mod:<is>'. Available candidates are:␤:(Attribute $attr, Any $rw)␤:(Attribute $attr, Any $readonly)␤:(Routine $r, Any $rw)␤:(Routine $r, Any $default)␤:(Routine $r, Any $info, Any $inlinable)␤:(Param…
moritz nom: say Method ~~ Routine 07:15
p6eval nom ee1a1c: OUTPUT«Bool::True␤»
moritz nom: class A { method m() is hidden_from_backtrace { } }; A.new.m; say 'alive' 07:17
p6eval nom ee1a1c: OUTPUT«alive␤»
dalek kudo/nom: 8780040 | moritz++ | src/core/ (2 files):
throw the first typed exception from within the setting
07:19
07:40 drbean left 07:46 drbean joined 07:55 grondilu joined
grondilu perl6: my $foo; sub test { say $bar and test for (my $bar = $foo++) ?? () !! ^2 }; test(); 07:55
p6eval rakudo ee1a1c: OUTPUT«0␤1␤»
..pugs b927740: OUTPUT«*** ␤ Unexpected " and"␤ expecting "::"␤ Variable "$bar" requires predeclaration or explicit package name␤ at /tmp/gaJOa5hlgD line 1, column 29␤»
..niecza v11: OUTPUT«===SORRY!===␤␤Variable $bar is not predeclared at /tmp/23sUQOtOje line 1:␤------> my $foo; sub test { say ⏏$bar and test for (my $bar = $foo++) ?? ␤␤Potential difficulties:␤ $bar is declared but not used at /tmp/23sUQOtOje line 1:…
moritz known rakudobug 07:56
grondilu perl6: my $foo; sub test { my $bar = $foo++; say $bar and test for $bar ?? () !! ^2 }; test();
p6eval niecza v11: OUTPUT«Any()␤Any()␤»
..pugs b927740: OUTPUT«0␤0␤»
..rakudo ee1a1c: OUTPUT«0␤1␤»
grondilu perl6: my $foo; sub test { { my $bar = $foo++; say $bar and test } for $bar ?? () !! ^2 }; test(); 07:57
p6eval rakudo ee1a1c: OUTPUT«===SORRY!===␤Symbol '$bar' not predeclared in test (/tmp/6NGeuYLE_r:1)␤»
..niecza v11: OUTPUT«===SORRY!===␤␤Variable $bar is not predeclared at /tmp/q1B1mx8h9q line 1:␤------> $bar = $foo++; say $bar and test } for ⏏$bar ?? () !! ^2 }; test();␤␤␤Unhandled Exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.sett…
..pugs b927740: OUTPUT«*** Undeclared variable: ("$bar",MkPad (padToList [("$_",PELexical {pe_type = (mkType "Scalar"), pe_proto = <Scalar:0x7f294e4e03b1>, pe_flags = MkEntryFlags {ef_isContext = True}, pe_store = <ref:0x7f294e4e1eb1>}),("@_",PELexical {pe_type = (mkType "Array"), pe_prot…
grondilu perl6: my $foo; sub test { my $bar = $foo++; { say $bar and test } for $bar ?? () !! ^2 }; test();
p6eval rakudo ee1a1c: OUTPUT«0␤0␤»
..pugs b927740, niecza v11: ( no output )
grondilu perl6: my $foo; sub test { my $bar = $foo++; for $bar ?? () !! ^2 { say $bar and test } ; test(); 07:58
p6eval pugs b927740: OUTPUT«*** ␤ Unexpected end of input␤ expecting ";" or "}"␤ at /tmp/TSGYTxhNmD line 2, column 1␤»
..niecza v11: OUTPUT«===SORRY!===␤␤Unable to parse block at /tmp/Y12WfuY3QW line 1:␤------> my $foo; sub test {⏏ my $bar = $foo++; for $bar ?? () !! ^2 ␤Couldn't find final '}'; gave up at /tmp/Y12WfuY3QW line 1 (EOF):␤------> () !! ^2 { say $bar …
..rakudo 878004: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 1␤»
grondilu perl6: my $foo; sub test { my $bar = $foo++; for $bar ?? () !! ^2 { say $bar and test } } ; test();
p6eval niecza v11: OUTPUT«Any()␤Any()␤»
..pugs b927740, rakudo 878004: OUTPUT«0␤0␤»
grondilu perl6: my $foo; sub test { my $bar = $foo++; say $bar and test for $bar ?? () !!^2 }; test(); 07:59
p6eval niecza v11: OUTPUT«Any()␤Any()␤»
..pugs b927740: OUTPUT«0␤0␤»
..rakudo 878004: OUTPUT«===SORRY!===␤Cannot negate ^ because it is not iffy enough at line 1, near "2 }; test("␤»
grondilu perl6: my $foo; sub test { my $bar = $foo++; say $bar and test for $bar ?? () !! ^2 }; test();
p6eval niecza v11: OUTPUT«Any()␤Any()␤»
..pugs b927740: OUTPUT«0␤0␤»
..rakudo 878004: OUTPUT«0␤1␤»
grondilu isn't 'foo and bar for @array' supposed to be the same as 'for @array { foo and bar }' ?
moritz grondilu: it's hard for me to see what your point is among all the p6eval output above 08:01
grondilu it's something I come up with trying to implement the sudoku algorithm on rosetta.org. On rakudo 'do_this and do_that for @array' does NOT behave as { do_this and do_that } for @array' 08:03
nom: my $foo; sub test { my $bar = $foo++; say $bar and test for $bar ?? () !! ^2 }; test(); # with no {} 08:04
p6eval nom 878004: OUTPUT«0␤1␤»
grondilu nom: my $foo; sub test { my $bar = $foo++; { say $bar and test } for $bar ?? () !! ^2 }; test(); # with {}
p6eval nom 878004: OUTPUT«0␤0␤»
grondilu see ?
moritz nom: my $foo; sub test { my $bar = $foo++; (say $bar and test) for $bar ?? () !! ^2 }; test(); 08:05
p6eval nom 878004: OUTPUT«0␤1␤»
moritz nom: my $foo; my $bar = $foo++; (say $bar and test) for $bar ?? () !! ^2
p6eval nom 878004: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&test' called (line 1)␤»
moritz nom: my $foo; sub test { my $bar = $foo++; do { say $bar and test } for $bar ?? () !! ^2 }; test(); 08:06
p6eval nom 878004: OUTPUT«===SORRY!===␤Unsupported use of do...for; in Perl 6 please use repeat...for at line 1, near "}; test();"␤»
moritz nom: my $foo; sub test { my $bar = $foo++; repeat { say $bar and test } for $bar ?? () !! ^2 }; test(); 08:07
p6eval nom 878004: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&repeat' called (line 1)␤»
moritz meh
sorry, I'm not yet awake enough to comment on it
the code has too many interdependencies for my sleepy brain :-) 08:08
grondilu no worries, feel free to look at it when you have time
08:08 GlitchMr joined
grondilu there is definitely something wrong anyway, at least since pugs and rakudo give a different output 08:09
perl6: my $foo; sub test { my $bar = $foo++; say $bar and test for $bar ?? () !! ^2 }; test(); # with no {}
p6eval niecza v11: OUTPUT«Any()␤Any()␤»
..pugs b927740: OUTPUT«0␤0␤»
..rakudo 878004: OUTPUT«0␤1␤»
grondilu ^ as you can see here
moritz what would you expect? 08:12
grondilu 0 0
moritz right, if $bar is 1, then the for-loop shouldn't run 08:13
so, rakudobug
grondilu the verbose explanation, and how this is related to the sudoku algorithm: pastebin.com/7bnjmjAu 08:14
08:21 dayangkun_ left 08:24 grondilu left 08:25 mj41 joined 08:32 zby_home__ joined, zby_home_ left 08:34 drbean left 08:39 drbean joined
masak morgn, #perl6 08:43
sorear++ # bugfix
moritz good m\w+n, masak
masak :)
geekosaur "mrfl" 08:46
masak geekosaur: sounds like a typical pre-coffee sound... :)
geekosaur exactly :) 08:47
masak sorear++ # release
moritz: did you submit the above rakudobug? 08:48
shall I?
moritz masak: I didn't. Please do.
masak submits rakudobug
moritz nom: my $foo; sub test { my $bar = $foo++; say "bar: $bar" repeat { say $bar and test } for $bar ?? () !! ^2 }; test(); 08:49
p6eval nom 878004: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 1␤»
08:50 snearch joined
moritz nom: my $foo; sub test { my $bar = $foo++; say "bar: $bar"; say $bar and test for $bar ?? () !! ^2 }; test(); 08:50
p6eval nom 878004: OUTPUT«bar: 0␤0␤bar: 1␤1␤bar: 2␤»
moritz nom: do { } for 1
p6eval nom 878004: OUTPUT«===SORRY!===␤Unsupported use of do...for; in Perl 6 please use repeat...for at line 1, near ""␤»
moritz nom: repeat { } for 1
p6eval nom 878004: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&repeat' called (line 1)␤»
moritz masak: care to submit that one too?
std: repeate { } for 1
p6eval std be1f10e: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'repeate' used at line 1␤Check failed␤FAILED 00:01 120m␤»
moritz std: repeat { } for 1
p6eval std be1f10e: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'repeat' used at line 1␤Check failed␤FAILED 00:01 120m␤»
moritz it seems that 'repeat { } for ...' isn't supposed to work, but then the error message shouldn't recommend it 08:51
std: do { } for 1
p6eval std be1f10e: OUTPUT«===SORRY!===␤Unsupported use of do...for; in Perl 6 please use repeat...for at /tmp/_Qqd8qDiST line 1 (EOF):␤------> do { } for 1⏏<EOL>␤Parse failed␤FAILED 00:01 120m␤»
masak submits rakudobug
moritz oh, and stdbug too
moritz submits STDbug
masak moritz++
moritz TimToady: github.com/perl6/std/issues/1 08:54
08:54 ggoebel left
tadzik good morning 08:56
masak morning, tadzik! \o/ 08:57
09:03 risou_awy is now known as risou 09:12 risou is now known as risou_awy
masak laughs at the suggestion in www.perlmonks.org/index.pl?node_id=542341 that it's males that are the "XY problem" 09:23
tadzik ( ° ー°) 09:28
masak unless you're a bird, then males are the ZZ problem. 09:29
(yes, in birds it's males that are the homogametic sex) 09:30
tadzik . o O ( I wish I was a bird, 'cus if I were a bird... ) 09:33
masak :) 09:38
huf hmm? dont leave me hanging like that tadzik 09:46
masak huf: bwong.com/lj/IWishIWere.htm 09:48
huf ahhh 09:49
masak (Da Vinci's Notebook)++
tadzik :P 09:51
09:52 daniel-s_ joined 09:55 koban left
masak recently I've come across lots of things that are "Schwarzian" in nature -- that is, do some computation (like sorting, say) on a list of "secondary" values, but the final result should be the "primary" values. 09:56
this seems like a recurring pattern in some sense. 09:57
for example, sometimes I'm more interested in the keys of an array, and sometimes more in the values. 09:58
for the latter case I can use .grep and .first, but not so easily for the former case.
10:03 im2ee joined, fsergot joined 10:04 im2ee left 10:06 Chillance joined 10:13 DarthGandalf joined
TiMBuS masak, i often wish perl (5) had a way to foreach over a list but also give me the index 10:21
huf i wish it had for my ($k, $v) (%hash) { ... } 10:22
or something like that
TiMBuS yeah
huf and yeah, same would be nice with arrays, altho how that'd work...
also how it'd work with sorting the hash before iterating.. *shrug*
masak I guess utility subs would go a long way. 10:23
TiMBuS huf, in p6 its easy wnough for arrays
masak but in Perl 6 we solved the iteration things nicely.
TiMBuS wait, its easy for all of that!
huf :)
masak rakudo: for <a b c>.kv -> $k, $v { say "$k: $v" } 10:24
p6eval rakudo 878004: OUTPUT«0: a␤1: b␤2: c␤»
huf still i wish p5 stole those features back :)
TiMBuS me too
huf of course, it feels a bit too fundamental to be easily backported
TiMBuS alternate wish: i wish rakudo was "ready"
TiMBuS ducks
huf :)
masak I guess what I'm saying is I wish there were grep :kv and first :key and things like that :)
TiMBuS: we all do :)
10:28 ggoebel joined
flussence
.oO( in hindsight maybe I shouldn't have picked a regex-heavy module to maintain... )
10:28
masak Woodi: the perils of not explicitly declaring your variables: blog.meloncard.com/post/12175941935...our-launch
corresponding HN thread: news.ycombinator.com/item?id=3179505 10:29
10:35 alc left 10:37 benabik left
kboga good morning all 10:37
masak kboga: mornin' 10:38
kboga uhm, here is a quick hack to unbreak the rakudo build with optimizer on level 3: pastebin.com/z669WzH7
it seems like some spectest fail tho 10:39
10:39 replore left
kboga (that is using the nqp reprapi2 branch and rakudo reprapi2 branch) 10:40
ah, the spectests seem to fail because i got debug output in the optimizer left (removing that) 10:41
jnthn morning, #perl6 10:43
kboga hi jnthn, i think i found the reason why the build on reprapi2 is broken 10:44
jnthn kboga: just saw the patch
Thanks!
kboga np :)
jnthn kboga: I suspect your patch actually points at a more general issue, but it pretty much tells me exactly where to look for it. :)
kboga yea, its just a quick hack, i figured that in some cases the $!inline_info attribute was never set 10:46
10:46 cognominal_ joined 10:49 fridim_ joined, cognominal left 11:10 ggoebel left 11:15 wk joined 11:20 fridim_ left 11:25 kaleem left 11:35 kboga left 11:38 kaleem joined, Psyche^ joined 11:41 Patterner left, Psyche^ is now known as Patterner 11:44 benabik joined 11:51 daniel-s_ left 12:01 djanatyn|afk is now known as djanatyn 12:02 koban joined 12:05 kaare_ left 12:09 Chillance left, Chillance joined 12:19 zby_home__ left 12:20 zby_home joined 12:21 bbkr1 joined 12:39 daniel-s joined
dalek p/reprapi2: 42c18a2 | jnthn++ | src/6model/reprs/P6opaque.c:
Add missing initialization logic. Thanks to kboga++ for the hint that led me to this issue.
12:39
12:40 lestrrat left 12:41 fridim_ joined 12:42 lestrrat joined
fsergot Hi! 12:44
bbkr1 hello
jnthn yay, reprapi2 branches of nqp and Rakudo are now both in shape :) 12:46
21 files changed, 908 insertions(+), 930 deletions(-) 12:47
...22 lines more is a small price for the underpinnings of compact structs etc :)
bbkr1 another Segmentation fault happened for me in Buf code, but this one is a hard case to track down :( 12:48
jnthn bbkr1: Ah, maybe you've run into the issue that is why the Parrot ticket is still open... 12:49
bbkr1: Where's the segfault?
grr, Parrot build fails here 12:50
alarm.c
src/alarm.c(22) : fatal error C1083: Cannot open include file: 'sys/time.h': No
such file or directory
:(
bbkr1 I cannot find it yet. It happens for me in MongoDB driver, which has tons of Buf opeartions and socket communication.
jnthn bbkr1: I meant, do you have a gdb backtrace? 12:51
bbkr1 how do I obtain one?
12:52 replore_ joined
jnthn hm 12:54
iirc
gdb perl6
r yourscript.p6
wait for it to crash
then
bt
moritz: ping
bbkr1 checking it now...
[Coke] yawns. 12:55
[Coke] apologizes to jnthn for not testing the parrot build on win32 for the green_threads merge. 12:56
(not that I said I'd do it, but I/m one of the few obvious candidates ;)
12:57 felher left
jnthn [Coke]: Yeah, it looks like that 12:57
There's no easy fix that I can see either
12:57 felher joined
[Coke] we're fixing it now. Please hold. Your HLL is important to us, and all bugs will be answers in the ordered they are received. 12:58
bbkr1 jnthn: bbkr.org/~bbkr/segfault/mongo_segfault_backtrace - does it look familiar to the already known segfault issue?
jnthn [Coke]: Created an issue: github.com/parrot/parrot/issues/189 13:00
13:00 snearch left
jnthn bbkr1: No, that looks new. 13:00
OK, this is kinda a mess. 13:01
13:04 stepnem joined
bbkr1 jnthn: how can I help to track it down? any way to make backtrace more verbose? I can also create devel account with code that causes bug if you want to analyze it. 13:06
13:08 pernatiy joined
dalek p: a743c97 | jnthn++ | src/ (9 files):
Toss clone from the REPR API; it's just implementable in terms of the more primitive allocate and copy_to.
13:10
nqp: e4e4bb4 | jnthn++ | src/6model/ (8 files):
nqp: Add gc_cleanup to REPR API; none of the current reprs need it, but bigint will. Not yet called.
13:10 dalek left
jnthn heuristic merge detection fail ;) 13:11
13:11 dalek joined, ChanServ sets mode: +v dalek
jnthn moritz, mls: Bad news. The green threads branch of Parrot won't build on my platform and the fix doesn't look easy at all. I've reverted a couple of Parrot revision bumps to get things back to a working state. 13:11
13:17 am0c left 13:26 replore_ left 13:43 stepnem left 13:44 bbkr1 left 13:47 stepnem joined
dalek kudo/nom: 6daf5d1 | jnthn++ | tools/build/NQP_REVISION:
Bump to NQP revision that provides reprapi2.
13:54
kudo/nom: 95135c3 | jnthn++ | / (9 files):
Merge reprapi2 into nom.
kudo/nom: 666f399 | jnthn++ | src/core/Num.pm:
After the repr updates, we correctly have native num attrs initialized to NaN. However, Num.new() seems to be expected to give back zero, so add an explicit new that makes this happen. Means we regress no spectests now after reprapi2.
13:55 bluescreen10 joined 13:58 mtk joined 14:06 thou joined, koban left 14:08 alester joined 14:17 _jaldhar left 14:25 thou left 14:27 stepnem left 14:31 stepnem joined 14:32 tokuhiro_ left
moritz \o 15:19
jnthn: pong
15:21 alester left 15:24 lrnperl joined
jnthn moritz: see backlog, but basically, I had to take us back a few Parrot revisions. 15:25
moritz ok
jnthn moritz: There's a Parrot ticket to track the issue.
moritz: I'm doing a bit on my talk at the moment, but will update bigint branch for reprapi2 later today. 15:26
15:27 lrnperl left
dalek kudo/nom: 0f941b3 | moritz++ | src/core/Exception.pm:
hide Exception.throw and .rethrow from backtrace
15:27
15:28 frettled left
[Coke] jnthn: the temporary fix from whiteknight will basically avoid the issue; I'm sure parrot could use an actual windows developer to do it right. 15:31
(not that I am suggesting you have spare time. ;)
moritz just discovered a case where TDD fails 15:36
when it takes longer to compile rakudo than to write down the first version of thing you wanted to write :-) 15:37
15:37 frettled joined 15:38 fsergot left
TimToady sorear: pseudo assigment to a 'my' acts as an assignment only if the signature can be turned into a parcel of lvalues without loss of information; anything signature-y leaves it as a binding (I believe this is how rakudo has done it historically) 15:44
masak moritz: TDD is very dependent on short test runs. 15:46
moritz: that's why I try to develop ourside of CORE when I write things for CORE, for example.
flussence nom: 'abc'.indent(4) 15:49
p6eval nom 666f39: OUTPUT«Method 'indent' not found for invocant of class 'Str'␤ in block <anon> at /tmp/x4Y_skY1GM:1␤ in <anon> at /tmp/x4Y_skY1GM:1␤»
flussence nom: Str.^add_method('indent', method (Int $a) { say ' ' x $a ~ self }); say 'abc'.indent(4) 15:50
p6eval nom 666f39: OUTPUT« abc␤Bool::True␤»
flussence that looks a *lot* easier for messing around than the whole "use MONKEY_TYPING" thing
15:50 thou joined 15:51 cognominal___ joined
flussence how can I add multi methods that way? Or does it "know" somehow? 15:51
masak flussence: it's too easy to add methods that way. probably shouldn't work without MONKEY_TYPING 15:52
15:53 fridim_ left
flussence it feels very javascripty... 15:53
15:54 cognominal_ left
jnthn flussence: Be very clever about adding multis that way. 15:54
flussence: If you do, you'll need to .^add_multi_method instead, and you should explicitly declared the invocant type. 15:55
And then call .^compose
flussence: You really should use augment if it's enough
flussence invocant is that thing with the colon in the signature, right?
moritz right 15:56
the object that the method is being called on
jnthn masak: You're only getting that if you make every use of .HOW and .^ forbidden without use MONKEY_TYPING.
masak: I don't want that.
And I suspect most people don't
moritz called "reciver" in the languages that tink of method calls as messages
"receiver"
jnthn masak: And no, saying "we'll only allow the introspecty ones" doesn't fly. We don't know them all in advance and the MOP is under no obligation to give you copies of stuff. 15:57
15:57 tyatpi_ joined
masak *nod* 15:57
ok, then it sounds like the restriction will have to be cultural. 15:58
jnthn I think if you argue that you need a pragma to do meta-model operations, then we can just as easily argue you need one to write macros or do other things that change the syntax.
masak in some sense, MOP usage is "just as bad" (as in powerful, potentially damaging, anti-social) as MONKEY_TYPING
15:59 daniel-s left
jnthn Well, in a sense it's more dangerous. 15:59
Take the multi example above.
There are 3 things you have to know to get right.
masak aye. 16:00
16:00 fsergot joined
masak oh well. with great power comes great responsibility :) 16:02
people will probably create wild and wonderful things with the MOP in this way.
but I don't consider it one jot more social to Str.^add_method than to augment Str.
moritz and probably also wild and not-so-wonderful things :-) 16:03
16:03 GlitchMr left, literal is now known as neoliteral
jnthn masak: No, it's no more social. 16:03
16:03 GlitchMr joined
flussence masak: in this case .indent's a spec function, so I'm just doing it for my own experimentation. hopefully nobody will need to care what way it's written :) 16:03
(this could be an interesting way to make a module autoload functions on first use...) 16:04
masak flussence: making it in your non-module code is more than fine.
flussence: that's why we're talking about "social" vs "anti-social", because the danger is in when the code is shared. 16:05
flussence oh, I know all about the problems of screwing with other people's modules from Javascript doing it :)
jnthn
.oO( I knew being socialble was dangerous... )
16:06
*sociable
flussence (I'll say nothing about this ruby thing people talk about since I've never really used it)
16:07 daniel___ joined
jnthn moritz: I guess since you committed a moment ago, I can assume current HEAD builds fine for you? 16:08
moritz jnthn: yes 16:09
(the chain of logic doesn't hold, I had tested the commit earlier and forgot to push, and didn't re-test, but it does build for me :-) 16:10
jnthn ;)
Great
That was a slightly fiddly set of refactors. 16:11
jnthn will do a blog post explaining them today, if he gets time
masak \o/ jnthn++
wow, 'my' classes rock. 16:12
16:15 GlitchMr left 16:16 GlitchMr joined
felher yeah, jnthn++ :) 16:17
16:17 GlitchMr left 16:18 GlitchMr joined 16:24 wk left, wk joined 16:25 phenny left 16:29 fsergot left
masak perl6: say 1i; say i 16:33
p6eval niecza v11: OUTPUT«0+1i␤0+1i␤»
..pugs b927740: OUTPUT«0 + 1i␤*** No such subroutine: "&i"␤ at /tmp/pisCFJQz2y line 1, column 13 - line 2, column 1␤»
..rakudo 0f941b: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&i' called (line 1)␤»
16:33 kaleem left
jnthn std: i 16:34
masak who's right? Niecza, or Pugs&Rakudo?
p6eval std be1f10e: OUTPUT«ok 00:01 118m␤»
masak Niecza, apparently :)
jnthn wonders what std parses that as
16:34 mkramer joined, mkramer left
masak though I'm just reading things on HN that makes me thing '1i' is good and 'i' is slightly dangerous. 16:34
maybe we should be thinking about disallowing 'i'.
16:34 daniel___ left
masak I was reading this: news.ycombinator.com/item?id=3179628 16:35
now, this isn't an *immediate* problem in Perl because we have sigils.
but we also have 'constant' declarations, and soon maybe those weird backspace thingies :) 16:36
std: constant foo = 42; { constant foo = 5 }
p6eval std be1f10e: OUTPUT«ok 00:01 121m␤»
masak std: class A {}; { constant A = 5 } 16:37
p6eval std be1f10e: OUTPUT«ok 00:01 121m␤»
masak "all is fair if you do it in an inner scope"?
16:38 pernatiy left, risou_awy is now known as risou
masak std: constant foo = 42; { constant foo = OUTER::foo - 37; } 16:40
p6eval std be1f10e: OUTPUT«ok 00:01 121m␤»
16:47 dual joined 16:48 GlitchMr42 joined 16:51 GlitchMr left, alester joined 16:55 daniel-s joined, stepnem left 16:59 daniel-s left, stepnem joined
masak decommutes 17:00
17:04 mj41 left 17:12 wk left, kaleem joined 17:15 kaleem left 17:21 risou is now known as risou_awy
moritz funnily enough, matlab allows a bare i as the complex unit, but its static code analysis tool points out that 1i is much more efficient 17:38
17:41 MayDaniel joined, carlin left 17:42 thou left 17:46 molaf joined
moritz nom: say Bool.pick 17:48
p6eval nom 0f941b: OUTPUT«Bool::True␤»
[Coke] nom: say 1..i.perl 17:49
p6eval nom 0f941b: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&i' called (line 1)␤»
18:00 fridim_ joined, daniel-s joined
dalek odel: b501c7f | diakopter++ | / (3 files):
minor fixes
18:07
odel: b501c7f | diakopter++ | / (3 files):
minor fixes
18:07 daniel-s left, tlocalhos joined
diakopter sorear: weird, b501c7f got double reported 18:08
moritz double karma for diakopter++ 18:10
18:12 GlitchMr joined 18:14 GlitchMr left, GlitchMr42 left 18:18 zby_home__ joined 18:19 zby_home left 18:22 GlitchMr joined 18:32 simcop2387 left, MayDaniel left 18:33 simcop2387 joined 18:40 bloonix left, bloonix joined 18:47 bloonix left
masak \o/ 18:52
18:59 zby_home joined, zby_home__ left
moritz nom: my %a;␤sub m() { }␤%a<b> = 1; 19:04
p6eval nom 0f941b: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&a' called (line 3)␤»
moritz nom: my %a;␤sub m() { };␤%a<b> = 1;
p6eval nom 0f941b: ( no output )
moritz the absence of a ; makes the line after the it misparse 19:05
std: my %a;␤sub m() { }␤%a<b> = 1;
p6eval std be1f10e: OUTPUT«ok 00:01 124m␤»
moritz doesn't need to be called m either
19:07 mj41 joined
jnthn nom: my @a;␤sub m() { }␤@a<b> = 1; 19:08
p6eval nom 0f941b: OUTPUT«Method 'at_key' not found for invocant of class 'Array'␤ in method postcircumfix:<{ }> at src/gen/CORE.setting:1031␤ in block <anon> at /tmp/NsOQobq6hu:3␤ in <anon> at /tmp/NsOQobq6hu:1␤»
19:09 wolfman2000 joined
jnthn Yeah...% is an infix. Must be some oddity there. 19:09
19:18 fieldsa joined
fieldsa how to slurp in ISO-8599-1? I have set :raw but that doesn't help, I get UTF-8 encoding input error 19:20
19:20 envi_ left
moritz fieldsa: you need to .read and then decode the result as latin-1 19:21
(at least that should work in current rakudo)
fieldsa thanks, will try that.
moritz nom: say $*IN.read(2**30).decode('ISO-8859-1').substr(0, 20)
p6eval nom 0f941b: OUTPUT«Failed allocation of 1073741824 bytes␤Parrot VM: PANIC: Out of mem!␤C file src/gc/gc_gms.c, line 1823␤Parrot file (not available), line (not available)␤␤We highly suggest you notify the Parrot team if you have not been working on␤Parrot. Use parrotbug (located in par…
moritz nom: say $*IN.read(1024).decode('ISO-8859-1').substr(0, 20) 19:22
p6eval nom 0f941b: OUTPUT«Land der Berge, Land␤»
dalek kudo/nom: 0f582d8 | jnthn++ | src/core/metaops.pm:
Couple of small optimizations to meat-ops.
kudo/nom: 0f582d8 | jnthn++ | src/core/metaops.pm:
Couple of small optimizations to meat-ops.
19:23
flussence double word score!
jnthn ...huh, I only did one commit
oh darn, I typo'd it too
cognominal___ provocation against vegan programmers. 19:25
19:30 cooper joined
tadzik question for time ninjas: in how many hours is #phasers? 19:35
I never know with this DST 19:36
19:37 fsergot joined 19:38 SHODAN joined
diakopter lol meat-ops 19:40
moritz tadzik: erm, it's tomorrow 19:43
tadzik: it's 18:30 in my time zone, which is probably the same as yours
19:50 tyatpi_ left
japhb jnthn, why is it an optimization to change 'if @l[$i]' to 'if @l[$i].gimme(1)'? 19:52
19:52 MayDaniel joined
tadzik moritz: I know it's tomorrow :) I'm just wondering whether I have a chance to attend it in the next 4 months, or is it just in the middle of my lectures. Is it ~20:52 on your clock now? 19:53
masak been a long time since we had a semicolon-at-the-end-of-a-line parsing bug. moritz++
tadzik: yes.
moritz tadzik: yes
jnthn japhb: We know that it's a List 19:54
tadzik okay, to it's just in the middle of my lecture, just like before the DST :)
I'll pre-report and stumble in the 15 minute break on 19:00 then
jnthn japhb: List.Bool isn't one of the cheap boolification cases and all it does in .Bool for list is call .gimme(1)
19:55 carlin joined
jnthn japhb: If you're doing that in a tight loop, then you save a method dispatch every time around. 19:55
masak obviously meat-ops are a perfect match for spaghetti code.
jnthn :P 19:56
colomon just discovered two ancient, embarrassing bugs in his $work code, which only came to light because of a instigating bug in someone else's code.
19:56 ashleydev left
japhb jnthn, also, it feels like METAOP_CROSS is overgeneralized, by which I mean it was coded to handle the general case, with no fast paths for common simpler cases. For example, in my code, replacing '@A X~ @B' with 'fcc(@A, @B)' where fcc is: 'sub fcc (@a, @b) { gather { for @a -> $a { for @b -> $b { take $a ~ $b } } } }' resulted in a *big* speedup when generating my Str.Numeric() stress test strings. 19:57
jnthn, ah, OK, so you're essentially just manually inlining the .gimme(1), since that's all that happens anyway. 19:58
jnthn japhb: Yeah, I've been looking at why it's slow.
japhb: It seems that we reify the same list over and over again too.
19:58 bluescreen10 left 20:00 cooper left
japhb perl6: say 0XF00D; 20:00
p6eval pugs b927740: OUTPUT«*** ␤ Unexpected "XF00D"␤ expecting "x", octal digit, "o", "b", fraction, exponent, term postfix, operator, ":" or ","␤ at /tmp/VUm1rt5rSr line 1, column 6␤»
..rakudo 0f582d: OUTPUT«===SORRY!===␤Confused at line 1, near "say 0XF00D"␤»
..niecza v11: OUTPUT«===SORRY!===␤␤Whitespace is required between alphanumeric tokens at /tmp/TEXjb1vTiI line 1:␤------> say 0⏏XF00D;␤␤Whitespace is required between alphanumeric tokens at /tmp/TEXjb1vTiI line 1:␤------> say 0X⏏F00D;…
japhb std: say 0XF00D; 20:01
p6eval std be1f10e: OUTPUT«===SORRY!===␤Whitespace is required between alphanumeric tokens at /tmp/DkD5vviz3L line 1:␤------> say 0⏏XF00D;␤Whitespace is required between alphanumeric tokens at /tmp/DkD5vviz3L line 1:␤------> say 0X⏏F00D;␤…
japhb ENOPHENNY
TimToady, since recent Perl 5 supports 0B, 0O, 0D, 0X in addition to 0b, 0o, 0d, 0x, do you have an objection to supporting that in Perl 6 as well? 20:02
masak "it's ugly"? :P 20:03
20:03 mj41 left
masak ...and somewhat visually non-distinctive... 20:03
japhb masak, I'm not saying recommend it. I'm saying DTRT when you try to use Str.Numeric() on an uppercase radix-notated int. 20:04
(I don't disagree with you, BTW, I just think the DWIM argument is stronger in this case.)
20:05 cooper joined
benabik nom: say 0xF00D 20:06
p6eval nom 0f582d: OUTPUT«61453␤»
japhb BTW, is there a non-historical reason that std: is not part of perl6: ?
moritz yes
it only parses
the other compilers try to compile and run the code
so in case of success, std will always differ 20:07
japhb moritz, I only ask because I often see people get mixed failures with the compilers, and then ask STD who parsed it correctly.
20:08 Trashlord left
japhb
.oO( Maybe include STD whenever on or more of the others parsefail?)
20:08
jnthn brb, dinner
japhb *one or more
20:09 Trashlord joined 20:12 bbkr1 joined 20:18 mj41 joined 20:19 GlitchMr42 joined 20:20 thou joined 20:22 p6eval left, p6eval joined, ChanServ sets mode: +v p6eval, GlitchMr left
moritz std: $x 20:25
20:26 tokuhiro_ joined
moritz std: $x 20:28
www.perlmonks.org/?node_id=935178 people are complaining that we don't catch post-declared variables
jnthn oh 20:29
Really should fix that one.
moritz I guess it shouldn't be too hard these days, should it?
jnthn no 20:30
20:31 Ingis joined 20:32 wolfman2000 left
dalek kudo/nom: 9fc3eb2 | jnthn++ | src/core/IO.pm:
A couple of IO performance improvements. .say for @some_list_of_strings now runs in under half the time, and we shave a little bit off the spectest runtime too.
20:33
20:33 IngisKahn left, _sri left
p6eval std be1f10e: OUTPUT«===SORRY!===␤Variable $x is not predeclared at /tmp/kwZrqpiH7P line 1:␤------> <BOL>⏏$x␤Check failed␤FAILED 00:01 119m␤» 20:33
std be1f10e: OUTPUT«===SORRY!===␤Variable $x is not predeclared at /tmp/3WJ6M1h7Nq line 1:␤------> <BOL>⏏$x␤Check failed␤FAILED 00:01 119m␤»
dalek kudo/nom: 9fc3eb2 | jnthn++ | src/core/IO.pm:
A couple of IO performance improvements. .say for @some_list_of_strings now runs in under half the time, and we shave a little bit off the spectest runtime too.
20:34 __sri joined
diakopter 5 minute p6eval delay? 20:34
moritz woah.
20:34 ashleydev joined
moritz something is very wrong with that box 20:34
tadzik dalek!
moritz or the programs running on it
diakopter poor, poor host04
jnthn quickly gets more coding done while it's 2-for-1 on karma 20:35
20:35 GlitchMr42 left
diakopter maybe someone's DOSing p6eval 20:36
moritz nope
20:37 tyatpi_ joined
moritz load average is pretty low 20:38
20:40 ksi joined
moritz nqp: say($<foo>) 20:43
dalek odel: 0496bb8 | diakopter++ | lua/runtime/Try.lua:
add try/finally emulation; untested.
20:44
odel: 0496bb8 | diakopter++ | lua/runtime/Try.lua:
add try/finally emulation; untested.
tadzik jnthn: 4 in 1, dalek counts #perl6 AND #parrot :) 20:45
I noticed that when I wanted to have my 666 karma, and it jumped from 665 to 667 :(
moritz tadzik: need a -- ? :-)
p6eval nqp: OUTPUT«Symbol '$/' not predeclared in <anonymous>␤current instr.: 'parrot;PCT;HLLCompiler;panic' pc 154 (compilers/pct/src/PCT/HLLCompiler.pir:111)␤» 20:46
tadzik moritz: it's too late already :P 20:47
20:47 donaldh joined
moritz finds that he doesn't understand lexicals handling well enough to catch undeclared variables 20:49
20:54 zby_home left
jnthn It probably wants a .is_declared in SymbolTable 20:56
Which goes looking through the blocks.
japhb: ah, I was wrong. In Xop way over 50% of the time is spent in this line: if $i >= $n { my @x = @v; take $rop(|@x); } 20:58
tadzik ftr: make install 653.33s user 9.07s system 110% cpu 10:00.30 total 21:00
timing spectest now
21:05 fieldsa left 21:10 pothos left 21:11 y3llow left 21:12 thowe joined, y3llow joined, pothos_ joined
dalek kudo/nom: f71cff1 | jnthn++ | src/core/GatherIter.pm:
Avoid a more expensive ! in GatherIter; remove some Q:PIR.
21:15
kudo/nom: cb63745 | jnthn++ | src/core/metaops.pm:
When crossing two lists, we don't need to shove the op through METAOP_REDUCE; it's a binary op already. Just use it.
21:15 pothos_ is now known as pothos
dalek kudo/nom: f71cff1 | jnthn++ | src/core/GatherIter.pm:
Avoid a more expensive ! in GatherIter; remove some Q:PIR.
21:15
kudo/nom: cb63745 | jnthn++ | src/core/metaops.pm:
When crossing two lists, we don't need to shove the op through METAOP_REDUCE; it's a binary op already. Just use it.
21:15 pothos left, pothos_ joined, daniel-s joined 21:16 pothos_ is now known as pothos
jnthn With those patches, "my @a = 'AA'..'ZZ'; my @b = 1..100; .say for @a X~ @b;" now runs in half the time it used to. 21:16
(er, "those" includes the IO ones I did earlier)
Plus I have a real world worked example for my optimization talk :) 21:17
moritz nom: grammar A { token TOP { foo } }; A.parse('foo').print 21:21
p6eval nom 9fc3eb: OUTPUT«foo»
dalek ast: 261cff6 | moritz++ | S16-io/say.t:
test Match.print
21:24
ast: 261cff6 | moritz++ | S16-io/say.t:
test Match.print
moritz nom: say Mu ~ Mu 21:28
p6eval nom 9fc3eb: OUTPUT«No applicable candidates found to dispatch to for 'infix:<~>'. Available candidates are:␤:(Any $x)␤:(Str $a, Str $b)␤:(Buf $a, Buf $b)␤:(Any $a, Any $b)␤␤ in block <anon> at /tmp/VjE0GuoD_F:1␤ in <anon> at /tmp/VjE0GuoD_F:1␤»
dalek ast: 0b7f0f0 | moritz++ | S04-statements/for.t:
test for RT #60780, odd sized list and two iteration variables
21:29
ast: 0b7f0f0 | moritz++ | S04-statements/for.t:
test for RT #60780, odd sized list and two iteration variables
21:40 plobsing left 21:41 plobsing joined 21:47 daniel-s left 21:51 tyatpi_ left
dalek odel: 37485f2 | diakopter++ | lua/compiler/ (4 files):
implement while/until/repeat_while/repeat_until without using labels/gotos :/
21:56
odel: 37485f2 | diakopter++ | lua/compiler/ (4 files):
implement while/until/repeat_while/repeat_until without using labels/gotos :/
22:15 MayDaniel left 22:21 daniel-s joined
donaldh perl6: Str.^attributes 22:22
p6eval rakudo cb6374: ( no output )
..pugs b927740: OUTPUT«*** No such method in class Class: "&attributes"␤ at /tmp/OUhywkhuFI line 1, column 1 - line 2, column 1␤»
..niecza v11: OUTPUT«␤Unhandled Exception: Unable to resolve method attributes in class ClassHOW␤ at /tmp/Mo0v8KCnuL line 1 (mainline @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2223 (ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2224 (module-CORE @ 58) ␤ at /home/p…
22:28 benabik left 22:29 daniel-s left
japhb jnthn++ # optimizing 22:29
jnthn, how does the time for that test compare to using the fcc() sub that I posted earlier rather than X~ ?
(I would think it would be totally dominated by the IO) 22:30
jnthn japhb: Didn't try that yet; have been trying to get some slides done for upcoming workshops ;)
japhb Oh, well don't let me stop you then. ;-)
BTW, I tried doing various lower-level nqp:: variants of fcc(), rather than the pure-Perl 6 code I posted earlier, but most of them actually slowed it down. The only one that was a win was replacing '$a ~ $b' by the appropriate nested nqp:: ops, and then only by about 5% or so. Rakudo++ for not forcing every optimization task to be about writing horrendous strings of ultra-low-level code! 22:33
22:34 donaldh left 22:44 alester left
diakopter one definition of insanity is continuing to try to define insanity the same way, and failing. 22:57
cognominal___ I thought Perl 6 was about to take Perl insanity to another level, the same way but another level. 22:59
23:00 dual left
masak 'night, #perl6 23:07
tadzik 'night
jnthn Sleep time for me...gotta $dayjob tomorrow morning. 23:09
tadzik g'night as well
jnthn Didn't get the bigint stuff updated for the new repr api :( But at least my optimization talk is getting there... :)
tadzik I can't sleep, I have to keep dividing animal food
optimizing, they say
jnthn ;)
night o/
tadzik o/ 23:10
23:15 mj41 left 23:16 danishman joined 23:21 domidumont joined 23:23 domidumont1 left, benabik joined 23:24 ksi left