»ö« 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.
tadzik g'night #perl6 00:03
sorear bye
jnthn 'night, tadzik 00:06
lue Is there a way for me to determine the size of a file without reading the whole thing in and counting the bytes? 00:17
sorear stat 00:18
jnthn Sleep time here, and flight and other travel tomorrow. Not quite sure when I'll be online next... Happy hacking. ;-) & 00:34
dalek ecza: 6533fc0 | sorear++ | / (2 files):
Restore special treatment for negated character classes; add NIECZA_LTM_PROF for less-verbose tracing
01:49
sorear bootstrap now seems to completely work; speed is back to a reasonable range
lue Apparently seek in rakudo comes with one more parameter than stated in the spec. 03:27
std: say $*IN.seek(2);
p6eval std dc62e1d: OUTPUT«ok 00:01 120m␤»
sorear good * #perl6 04:39
sorear spectest run finished, only 3 failing files 04:51
dalek ast: 3341d5b | sorear++ | S03-operators/inplace.t:
[S03-operators/inplace] Clarify niecza fudge so nobody undoes it by mistake
04:53
sorear S02-lexical-conventions/unicode-whitespace is an interesting test... 05:02
rakudo: eval '1 1'; say "pie";
p6eval rakudo 89f54d: OUTPUT«===SORRY!===␤Confused at line 1, near "1 1"␤»
sorear rakudo: say "pie"; eval '1 1'; 05:03
p6eval rakudo 89f54d: OUTPUT«pie␤===SORRY!===␤Confused at line 1, near "1 1"␤»
sorear rakudo: try eval '1 1'; say "pie";
p6eval rakudo 89f54d: OUTPUT«pie␤»
sorear rakudo: say try die "pie"
p6eval rakudo 89f54d: OUTPUT«Exception.new()␤»
sorear niecza: say try die "pie"
p6eval niecza v12-99-g6533fc0: OUTPUT«Any()␤»
dalek ast: 263189e | sorear++ | S02-lexical-conventions/unicode-whitespace.t:
[.../unicode-whitespace] Refudge, s/skip/todo/

Because this file uses vertical whitespace that fudge doesn't handle, skip annotations should never be used in it. I've refactored it so that todo can be used instead. Note that v13 will handle many more of these tests.
05:17
sorear ....where by "many more" I apparently mean "all" 05:18
thinkhy irc://irc.perl.org 05:27
sorear now thinks that getting Str<->number coercions working-in-general should be a priority 05:39
dalek : feca358 | lue++ | misc/perl6advent-2011/schedule:
[advent] Claim the 24th for multi subs
06:02
sorear o/ lue
PerlJam std: role R1 { method foo {} }; role R2 { method foo { } }; class C does R1 does R2 { } 06:03
p6eval std dc62e1d: OUTPUT«ok 00:01 119m␤»
PerlJam perl6: role R1 { method foo {} }; role R2 { method foo { } }; class C does R1 does R2 { }
p6eval niecza v12-99-g6533fc0: OUTPUT«===SORRY!===␤␤Action method trait_mod:does not yet implemented at /tmp/_6Fa1bpmIr line 1:␤------> R2 { method foo { } }; class C does R1 ⏏does R2 { }␤␤Action method trait_mod:does not yet implemented at /tmp/_6Fa1bpmIr…
..pugs b927740: ( no output )
..rakudo 89f54d: OUTPUT«===SORRY!===␤Method 'foo' must be resolved by class C because it exists in multiple roles (R2, R1)␤»
sorear PerlJam: rakudo is correct here 06:04
PerlJam I know. I'm just seeing what the various implementations have to say about it.
sorear well, niecza also gets the right answer, but for *entirely* the wrong reason
PerlJam masak: you are down for <some topic> on Dec 22. Can I suggest DrunkenGymnast be that topic? 06:31
moritz \o 06:39
PerlJam std: class Q { }; class W { is Q; } 06:48
p6eval std dc62e1d: OUTPUT«===SORRY!===␤Couldn't find terminator ; at /tmp/XzNOLSsmt3 line 1 (EOF):␤------> class Q { }; class W { is Q; }⏏<EOL>␤Parse failed␤FAILED 00:01 120m␤»
PerlJam std: class Q { }; class W { also is Q; }
p6eval std dc62e1d: OUTPUT«ok 00:01 119m␤»
felher Hui, JSON::Tiny is way faster than in old ng times :) 06:49
PerlJam that first error is LTA
dalek ecs: 117b63f | duff++ | S12-objects.pod:
small fossil fix
06:51
moritz felher: that's great to do hear; do you happen to have numbers? 07:01
felher moritz: after you asked for numbers i did some measurements. Seems like i remembered the old timings wrong. There is still a "small" speed improvement of 10%, though :) 07:34
moritz felher: hm, that's less than I would have expected :/
felher moritz: what did you expect? :) 07:36
moritz felher: awsomeness, of course :-) maybe a factor 3 or so 07:37
but then I don't think anybody has benchmarked qregex yet :/ 07:38
felher moritz: that really would be awesome :D That would be fast enough for me to start hacking on a interface for the notmuch email client :)
moritz it turns out that parsing a largish JSON file spends 18% in token str { <-["\\\t\n]>+ } 08:13
not sure if that's because it has so long strings without any escapes, or because the negative char class is inefficient
felher moritz: how do you do those benchmarks? 08:19
moritz PERL6LIB=blib/lib parrot --runcore=subprof ~/p6/rakudo/install/lib/parrot/3.11.0-devel/languages/perl6/perl6.pbc -e 'use JSON::Tiny; from-json(open("initial_data.json").slurp)' 2>subprof.log
felher moritz: thanks :)
moritz and then kcachegrind subprof.log
felher seems like there is not visualization tool for callgrind that doesn't depend on KDE... 09:46
daxim superior toolkit is superior 09:56
sorear felher: kcachegrind depends on QT 10:14
felher: you don't have to actually be running the works
just have the libraries available in /usr/lib
daxim kcachegrind is definitely a kde app with direct dependencies on libkdecore4, libkde4, kdebase4-runtime 10:31
felher sorear: there is qcachegrind directory in the tarball. But i'm having trouble with cmake and qt4_automoc currently :) 10:52
mls moritz: try 'perl6 --profile' 10:57
felher: cg_annotate from valgrind might also work for you. But kcachegrind is much nicer 11:00
felher mls: yeah, thnx :) , i know abnout cg_annotate. But i totally agree that kcg is much nicer :) 11:02
cognominal jnthn: is there a reason for zavolaj still being a git repository independant of rakudo? 11:14
sorear sleep 11:20
flussence perl6: class A { my sub b(self) { say $!c }; has $!c = 1; }; A.new.b; # just curious 11:34
p6eval pugs b927740: OUTPUT«*** ␤ Unexpected "self"␤ expecting word character, "|", ":", "*", parameter name or ")"␤ at /tmp/fXDQsthY6i line 1, column 20␤»
..niecza v12-99-g6533fc0: OUTPUT«===SORRY!===␤␤In parameter declaration, typename 'self' must be predeclared (or marked as declarative with :: prefix) at /tmp/4x4vzevB5a line 1:␤------> class A { my sub b(self⏏) { say $!c }; has $!c = 1; }; A.new.b; ␤␤…
..rakudo 89f54d: OUTPUT«===SORRY!===␤Invalid typename in parameter declaration at line 1, near ") { say $!"␤»
flussence perl6: class A { my sub b(::T $obj = self) { say $obj.c }; has $.c = 1; }; A.new.b; # just curious 11:35
p6eval niecza v12-99-g6533fc0: OUTPUT«===SORRY!===␤␤'self' used where no object is available at /tmp/lwfcMtdpnX line 1:␤------> class A { my sub b(::T $obj = self⏏) { say $obj.c }; has $.c = 1; }; A.new.␤␤GLOBAL::T does not name any package at /tmp/lwfcMtdp…
..rakudo 89f54d: OUTPUT«===SORRY!===␤Symbol 'self' not predeclared in b (/tmp/Na1nqBCYoE:1)␤»
..pugs b927740: OUTPUT«*** No such method in class A: "&b"␤ at /tmp/WIQe6l0XKY line 1, column 69-76␤»
flussence oh 11:36
perl6: class A { my sub b(T:: $obj = self) { say $obj.c }; has $.c = 1; }; A.new.b; # not expecting this to work either
p6eval niecza v12-99-g6533fc0: OUTPUT«===SORRY!===␤␤In parameter declaration, typename 'T::' must be predeclared (or marked as declarative with :: prefix) at /tmp/dAvTVdV3DP line 1:␤------> class A { my sub b(T::⏏ $obj = self) { say $obj.c }; has $.c = ␤␤Pa…
..pugs b927740: OUTPUT«*** No such method in class A: "&b"␤ at /tmp/zs2Ckl6nwK line 1, column 69-76␤»
..rakudo 89f54d: OUTPUT«===SORRY!===␤Invalid typename in parameter declaration at line 1, near " $obj = se"␤»
flussence perl6: class A { my sub b(T:: $obj = self) { say $obj.c }; has $.c = 1; }; A.new::b; # might help if I got the code right... 11:37
moritz did you mean ::T instead of T:: ?
p6eval rakudo 89f54d: OUTPUT«===SORRY!===␤Invalid typename in parameter declaration at line 1, near " $obj = se"␤»
..niecza v12-99-g6533fc0: OUTPUT«===SORRY!===␤␤In parameter declaration, typename 'T::' must be predeclared (or marked as declarative with :: prefix) at /tmp/A2n_IHldN4 line 1:␤------> class A { my sub b(T::⏏ $obj = self) { say $obj.c }; has $.c = ␤␤Pa…
..pugs b927740: OUTPUT«*** No such method in class A: "&new::b"␤ at /tmp/QCn2ID6x0o line 1, column 69-77␤»
flussence type binding? yeah, didn't seem to work the first time though
perl6: class A { my sub b($obj = self) { say $obj.c }; has $.c = 1; }; A.new::b; 11:38
p6eval niecza v12-99-g6533fc0: OUTPUT«===SORRY!===␤␤'self' used where no object is available at /tmp/UHz1cg9q3W line 1:␤------> class A { my sub b($obj = self⏏) { say $obj.c }; has $.c = 1; }; A.new:␤␤Qualified references to non-private methods NYI at /tmp/…
..pugs b927740: OUTPUT«*** No such method in class A: "&new::b"␤ at /tmp/oZlFGMw5jj line 1, column 65-73␤»
..rakudo 89f54d: OUTPUT«===SORRY!===␤Symbol 'self' not predeclared in b (/tmp/CBFg79CBux:1)␤»
flussence not sure why I had the T:: at all
moritz also with 'my sub' the A::b will never work
flussence just wondering how much I could shorten lexical sub calls inside classes :) 11:39
flussence
.oO( I should probably wait until I'm properly awake before writing code - I just spent 2 minutes trying to figure out why that line was giving me "bash: syntax error near unexpected token `('" locally... )
11:43
tadzik hmm, any ideas for an advent post? 11:53
flussence if I had anything interesting to write about I'd have done one myself :) 11:55
tadzik :)
I accidentaly volunteered :P
I think about "few useful modules and example usage"
flussence could do one about the ecosystem stuff 11:59
tadzik I think there already was one (maybe last year) 12:00
perl6advent.wordpress.com/2010/12/0...ecosystem/
eww, it uses neutro
maybe there is a need for a new one after all 12:01
moritz there is 12:02
flussence or you could go fix up your perl6-MPD code and recycle my post from last year :D
tadzik true
was there an NCI post?
flussence I did an NCI demo last year, haven't seen one this time around yet 12:03
tadzik yay, segfault 12:07
tadzik is there any up-to-date code working with the new NCI? 12:17
flussence well, I've been fixing up mine... AFAIK the tests in zavolaj haven't been updated yet 12:18
tadzik aye
tadzik is looking through jnthn's gists 12:19
I'm afraid OpaquePointers may be NYI 12:25
or I just dunno how to use them :)
hmm, odd 12:26
flussence: you have mpd lying around?
tadzik gist.github.com/1505856 segfaults. If you leave out the $s parts it works fine 12:27
tadzik so passing connection around works, but song does not 12:29
...maybe because I have no song playing :P 12:30
flussence ergh, lousy connection here
tadzik connection looks ok
flussence irclogs the last few lines
tadzik Richard Cheese/2004 - I'd Like A Virgin/08. Beat It.flac
not bad
new quest: how to check if I got null 12:32
flussence that'll return a type object, iirc
flussence (I'm not entirely sure what happens if you get null from something that's supposed to return a CPointer thing) 12:33
tadzik I suppose NULL is a valid CPointer 12:34
well, if the repr is NULL... you know what I mean, right? :)
[Coke] yawns. 12:37
flussence I've found a string that crashes perl6.vim's highlighting :D 12:45
# -------------------------------------------------
moritz :/ 12:46
flussence: please submit that as a bug report
flussence 'k
tadzik okay, I love new NCI 12:48
flussence oh, wait. updating vim-perl's fixed it 12:55
tadzik whoa 13:01
that does reserve a nice advent post
flussence and on closer inspection I think it was a local edit to my perl6.vim file that caused it. whoops
tadzik gist.github.com/1505856 13:02
look from #69
flussence tadzik++ # wow, that code's tiny! 13:05
(it could be even smaller if we had working DESTROY() :) 13:06
(though come to think of it, would that even work on a CPointer object?)
tadzik no idea 13:07
well, I suppose it would, somehow, somewhat :)(
I'm quite amazed that method new() Just Worked
flussence also xmms2++ I guess, for not segfaulting on my sloppy code that doesn't free pointers properly 13:08
moritz
.oO( now it's xmms3 )
13:26
moritz stupid 13:32
anyway, JSON::Tiny now passes tests to the level that it did on rakudo 2011.07, partially better 13:33
nom: sub f(%h) { }; f(Hash) 13:39
p6eval nom 89f54d: ( no output )
moritz should that work?
nom: sub f(%h) { say %h.values }; f(Hash)
p6eval nom 89f54d: OUTPUT«Cannot look up attributes in a type object␤ in method pairs at src/gen/CORE.setting:5197␤ in method values at src/gen/CORE.setting:5195␤ in sub f at /tmp/My9oCaFPxh:1␤ in block <anon> at /tmp/My9oCaFPxh:1␤ in <anon> at /tmp/My9oCaFPxh:1␤»
moritz I'd argue that %, & and & sigils should always imply :D 13:40
tadzik why is allegro so odd. It'd make an excellent advent post 14:23
but how do you get to know about keyboard input? You check in the global array! Life's good!
colomon ? 14:24
tadzik I wanted to write allegro (drawing library) bindings for Perl 6
arnsholt For a second I was wondering why tadzik was going on about Allegro Common Lisp (and how it'd be good for an advent post)
colomon I was thinking lisp as well 14:25
tadzik heh
colomon tadzik: this allegro? alleg.sourceforge.net/ 14:29
tadzik yeah
colomon tadzik++ 14:31
tadzik allegro--
global variables! _Global Variables!_
eww
tadzik hmm, lua integration 14:36
that'd be too much lua, to little perl 6 14:37
what's some nice C library to write bindings for? :)
colomon ponders 14:39
cedric tadzik: libperl ;) 14:40
tadzik ha! :)
I wish I knew that
colomon LAME? 14:41
tadzik hmm
I was thinking gstreamer or such
colomon OpenGL?
tadzik I don't know almost nothing about it :/ I was thinking about something more-less object oriented, so I can show how nicely you can write classes which are really just CPointers 14:42
have you seen the libmpdclient example?
colomon yes
tadzik something of this sort. But not everyone has mpd and will appreciate the results
drawing a christmas tree with allegro is probably easier to appreciate :)
colomon I don't know libmpdclient, though, so I didn't know how much of the object-orientedness was coming from where.
if you know what I mean 14:43
tadzik yeah
mikemol tadzik: tk? 14:53
cedric tadzik: my ¢2, it could be nice to get bindings for taglib and then see how this approach differs from the CLR support in Niecza (as described by colomon++ in justrakudoit.wordpress.com/2011/11/...mp3-tags/) 14:54
colomon ooo, taglib was fun! 14:58
mux tadzik: libfuse would be interesting 14:59
and useful 15:00
mikemol You could do some weird stuff with libfuse peering into perl6 innards. 15:02
mux also, sqlite
mikemol sqlite certainly wouldn't be a simple one to implement. 15:03
I don't know libfuse's interface. Best option sounds like taglib, for the Niecza comparison cedric notied...
*noted
mux I had missed the "simple" criterion 15:07
mikemol mux: Well, I don't think there is technically a 'simple' criterion, but he was looking for something OO-based. 15:08
mux oh. well I had missed that too
so he wants to write bindings for a _C_ library but that has to be for something vaguely OO?
mikemol Mapping sqlite3 to OO is *not* trivial. I've spent the last four months doing it. >.> 15:09
mux: Not as weird as it sounds. The Win32 API, for example, is largely OO in design, even though it's a C binding. 15:10
tadzik yeah, taglib sounds nice 15:11
mux mikemol: I wasn't saying that you can't write OO in C. I come from kernel land after all, where we do that constantly 15:12
mikemol Generally speaking, one prefers C-style bindings for libraries with OO behaviors. It's far simpler than trying to agree on an object marshalling protocol.
mux the C ABI sure is a hell lot simpler than the C++ one
mikemol There is no standardized C++ ABI, AFAIK. It depends on using the same compiler and, to an extent, using the same version of said compiler with the same flags. 15:13
mux yeah, sure; s/the C++ one/any C++ one/ if you like
mikemol And that was another assumption I was trying to edge around, too; C++ isn't the only compiled-to-native-code OO language out there.
mux sigh. fine.
tadzik taglib seems to be C++ 15:14
mikemol Are there C bindings offered?
cedric according to my /usr/lib64/pkgconfig/taglib_c.pc: "Description: Audio meta-data library (C bindings)" 15:15
colomon perl6: $_ = "abc"; my $i = 1; s:i($i)/a/b/
p6eval rakudo 89f54d: OUTPUT«===SORRY!===␤Value of adverb :i must be known at compile time at line 1, near "/a/b/"␤»
..niecza v12-99-g6533fc0: ( no output )
..pugs b927740: OUTPUT«Error eval perl5: "if (!$INC{'Pugs/Runtime/Match/HsBridge.pm'}) {␤ unshift @INC, '/home/p6eval/.cabal/share/Pugs-6.2.13.20111008/blib6/pugs/perl5/lib';␤ eval q[require 'Pugs/Runtime/Match/HsBridge.pm'] or die $@;␤}␤'Pugs::Runtime::Match::HsBridge'␤"␤*** '<HAND…
colomon perl6: $_ = "abc"; my $i = 1; s:i($i)/a/b/; .say
p6eval niecza v12-99-g6533fc0: OUTPUT«bbc␤»
..rakudo 89f54d: OUTPUT«===SORRY!===␤Value of adverb :i must be known at compile time at line 1, near "/a/b/; .sa"␤»
..pugs b927740: OUTPUT«Error eval perl5: "if (!$INC{'Pugs/Runtime/Match/HsBridge.pm'}) {␤ unshift @INC, '/home/p6eval/.cabal/share/Pugs-6.2.13.20111008/blib6/pugs/perl5/lib';␤ eval q[require 'Pugs/Runtime/Match/HsBridge.pm'] or die $@;␤}␤'Pugs::Runtime::Match::HsBridge'␤"␤*** '<HAND…
mikemol Where I work, we code in C++, but we set up a C ABI for our DLLs, because it simplifies maintenance and compatibility.
Ah, missed cedric's line in the p6eval output. 15:16
colomon mikemol: sorry, I'm trying to figure out one of the spectests 15:17
mikemol I'm about halfway through S02, but I think the conversion to epub isn't quite right, so I'll have to go back and re-read in HTML. 15:18
cedric tadzik: did you find the C bindings in taglib? ref: "and does provide Glib-style C bindings (currently for the generic API only)" developer.kde.org/~wheeler/taglib.html 15:24
tadzik allegro-- 15:34
tadzik this will never end 15:34
allegro_init() is not a function. It's a macro
cedric: looking
cedric: do you see any C api docs? 15:35
cedric is looking for C API docs 15:37
tadzik there's something in github.com/taglib/taglib/blob/mast.../c/tag_c.h 15:40
let's see how it works
cedric I didn't find any other doc than tag_c.h :-/
tadzik looks good enough for me 15:42
daxim search.cpan.org/~dongxu/Audio-TagLib-1.50_01/
colomon sorear: what's the point of niecza_quantifier_max? 15:47
dalek ast: 911d8bd | (Solomon Foster)++ | S05- (2 files):
Fudge for niecza.
15:50
tadzik > perl6 taglib.pl 15:56
Daft Punk - Technologic
yay :)
cedric tadzik++ 16:01
tadzik I'm poking SDL again. The vision of drawing a christmas tree for the advent calendar is too tempting 16:02
masak evenin', #perl6 16:06
tadzik hey masak 16:07
[Coke] colomon: any more fudges planned today? 16:09
(wondering when I should kick off the comparison today. ;)
colomon Go ahead and kick it off, imo
dalek ecza: 7585370 | (Solomon Foster)++ | t/spectest.data:
Turn on S05-substitution/subst.t.
16:11
colomon I don't doubt I'll try for more fudging later if I get the chance. :)
[Coke] that's another 250 tests or so. colomon++ 16:26
almost at 60%. (running rakudo now to see if any change there.) 16:29
tadzik gist.github.com/1506741 16:51
tadzik diplays info about mp3s, flacs, oggs and whatever taglib handles 16:51
moritz [Coke]: rakudo tests have been rather stable the past days; if new tests pass, then because new tests were written 16:52
flussence tadzik++ 16:53
masak tadzik: you, sir, rock. 16:54
flussence btw, I think you left a redundant "class TagFile" at the top
masak tadzik: what happens if one doesn't free the C pointers at the end?
tadzik a blog post will appear quite late today, so if there's anything special you'd like to see there, drop me a link
masak: memleak
nothing more serious I guess
flussence: true, thanks :)
masak tadzik: but the program is ending anyway... :) 16:55
tadzik masak: you should've seen SDL bindings :)
If I knew how to draw a line in sdl, I'd write a post about drawing a tree :) 16:57
mikemol sec 16:58
cedric tadzik++: line 37 -> is there a memory leak here? (die without free())
tadzik cedric: yes, there is, thanks 16:59
mikemol tadzik: wiki.libsdl.org/moin.cgi/CategorySurface 17:01
tadzik I don't grok this surfaces, sadly
those, even
mikemol rosettacode.org/wiki/Fractal_tree#C 17:02
Though that example's a mess with all the ifdefs.
Bah. Nevermind the RC example. It uses a helper library named SGE. 17:03
tadzik it doesn't need to 17:05
I just made it work with Sdl and cairo
and that's good enough for me
mikemol :) 17:06
tadzik I'm afraid it's too much magic :/ 17:09
it goes SDL_surface->pixels, and istr we can only access struct member if they're ints, or something of this sort 17:10
seen jnthn
aloha jnthn was last seen in #perl6 16 hours 36 mins ago saying "Sleep time here, and flight and other travel tomorrow. Not quite sure when I'll be online next... Happy hacking. ;-) &".
tadzik bbl 17:12
mikemol tadzik: Someone implemented rosettacode.org/wiki/Mandelbrot_set#Perl_6
That dumps data to stdout. If you can dump it to an anonymous mmap or some such, and feed the base address of the mmap into an SDL surface (or any other graphics API), then you're double-buffering between p6 space and nativecall space. 17:13
Util Unimplemented and untested: zipwith and crosswith 17:25
$ ack -ail '(?:zip|cross)with' ~/specs ~/roast ~/rakudo ~/niecza
~/specs/S03-operators.pod:3
END_OF_ISSUE
#phasers in 2min? 17:28
colomon sounds right 17:29
GlitchMr perl6: print 018\ 17:50
p6eval rakudo 89f54d: OUTPUT«===SORRY!===␤Confused at line 1, near "print 018\\"␤» 17:51
..pugs b927740: OUTPUT«*** ␤ Unexpected end of input␤ expecting "."␤ at /tmp/gsLECG4x9E line 2, column 1␤»
..niecza v12-100-g7585370: OUTPUT«===SORRY!===␤␤Confused at /tmp/UPbB5N95mf line 1:␤------> print 018⏏\␤Other potential difficulties:␤ Leading 0 does not indicate octal in Perl 6; please use 0o18 if you mean that at /tmp/UPbB5N95mf line 1:␤------> [3…
GlitchMr ... accidental character
perl6: print 018
p6eval pugs b927740, rakudo 89f54d: OUTPUT«18»
..niecza v12-100-g7585370: OUTPUT«Potential difficulties:␤ Leading 0 does not indicate octal in Perl 6; please use 0o18 if you mean that at /tmp/YH7inYRv4e line 1 (EOF):␤------> print 018⏏<EOL>␤␤18»
GlitchMr 0o18... indeed...
mikemol I'm not sure I understand what the purpose of the test fudging is. 18:06
Actually, I'm certain I don't understand... 18:07
dalek p: fe2175d | moritz++ | tools/build/PARROT_REVISION:
bump PARROT_REVISION to 3.11 release
18:14
colomon mikemol: well, your average test file probably has about 100 tests in it. suppose 10 of them don't work in niecza.
Then you can fudge those 10 to say "this doesn't work" and then add the rest of the tests to the list that is run every time you do a spec test 18:15
moritz mikemol: the purpose is to run test file which would otherwise be blocked on some few, advanced tests
colomon that means you get the benefit of the 90 tests that do work.
dalek kudo/nom: f2c8103 | moritz++ | tools/build/NQP_REVISION:
bump to an NQP that requires parrot 3.11
18:16
mikemol Is the fudging of the nature of "don't trust this test for a spectest yet", or "modify this test so that this file doens't hang the interpreter"?
i.e. in my PHPUnit tests, I can say $this->skipTest("This test runs long, and isn't useful for $particular_reason right now");, and have the rest of the tests continue. 18:17
colomon mikemol: let me give you a precise example, from subst.t, which I fudged today for niecza
moritz mikemol: it can be both 18:18
mikemol I'm mostly concerned about long-term consequences of fudging, particularly where it's forgotten to un-fudge them.
colomon niecza: 'a b c d'.subst(/\w/, 'x', :x(*))
p6eval niecza v12-100-g7585370: OUTPUT«Unhandled exception: Unable to resolve method niecza_quantifier_max in class Whatever␤ at /home/p6eval/niecza/lib/CORE.setting line 430 (Cool.subst @ 12) ␤ at /tmp/YrrNb0oolj line 1 (mainline @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2288 (AN…
colomon so that test was a crash. I fudged it to skip, so that the complete file would execute. 18:19
mikemol Reasonable.
colomon If someone forgot to unfudge it?
I guess it's a bug someone might run into one day.
moritz and we have tools for automatically remove fudge markers if the tests pass 18:20
mikemol Well, the big thing is that you'd want some kind of trace saying "skipped $n tests", possibly with a test list.
colomon it's not a particularly useful feature, as :g is equivalent and shorter
mikemol: which we have
mikemol ah, k. :)
colomon there's a lovely script to get the complete breakdown of what is passing and what is fudged in each file. 18:21
and if you want to look at a particular file, running "prove --verbose" on it gives you colored output that points right at the fudged tests. 18:22
[Coke] gist.github.com/1476841 - niecza @ 59.29% of rakudo 18:36
[Coke] moritz: looks like 7 more tests. 18:40
[Coke] ponders turning that into a graph. 18:41
heh. if you go to raw.github.com/gist/1476841/668dd1...ass_rates, chrome says "this page is in polish! Do you want to translate it?" 18:42
someone already made that graph, didn't they?
mikemol: feather.perl6.nl/~coke/niecza_summary.txt 18:45
flussence ohai
mikemol cool 18:46
[Coke] also s/niecza/rakudo/ - that's the output of t/spec/test_summary
flussence github.com/flussence/specgraphs/ra.../impls.png
moritz flussence++
[Coke] flussence: is that showing real passes, or what prove shows as passes? 18:47
(that is, does it include skips?)
flussence I'm using TAP::Archive stuff directly to get the results, but I think that counts skips as passes. will have to double check... 18:48
(I've saved all of the TAP output stuff, so fixing it isn't a big deal)
[Coke] if you can not count skips, I will happily leave all the data collection to you, as you're way ahead of me. ;)
flussence++ # this is awesome. ;) 18:49
flussence: ah, it even says this in the bottom of the readme.
flussence I may be a tad obsessive with this stuff :) 18:50
moritz flussence++ being a tad obsessive 18:59
[Coke] niecza: my $range; '1 3' ~~ /(\d+) \s (\d+)/; $range = $0..$1; say "$range" 19:05
p6eval niecza v12-100-g7585370: OUTPUT«Unhandled exception: cannot increment a value of type Match␤ at /home/p6eval/niecza/lib/CORE.setting line 1130 (List.Str @ 2) ␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1715 (RangeIter.reify @ 5) ␤ at <unkno…
[Coke] niecza: my $range; '1 3' ~~ /(\d+) \s (\d+)/; $range = +$0..+$1; say "$range"
p6eval niecza v12-100-g7585370: OUTPUT«1 2 3␤»
[Coke] sorear: is the fix for that to make range try to coerce its arguments, or to make Match incrementable? 19:06
slavik1 incrementable match, like a global match that returns a one item from the list at a time? 19:08
like a tokenizer of sorts?
[Coke] no.
like, that range object is really just "1..3", but something internally is taking that 1 and trying to ++ it to get 2, and failing when it's a result of a match as opposed to a string or an number. 19:09
rakudo: my $range; '1 3' ~~ /(\d+) \s (\d+)/; $range = $0..$1; say "$range" 19:10
p6eval rakudo f2c810: OUTPUT«Method 'succ' not found for invocant of class 'Match'␤ in sub postfix:<++> at src/gen/CORE.setting:1197␤ in method reify at src/gen/CORE.setting:4198␤ in method reify at src/gen/CORE.setting:4257␤ in method reify at src/gen/CORE.setting:4257␤ in method gimme a…
[Coke] (so, perhaps the spec test is broken. Iunno.)
moritz what should it coerce to? Str? Numeric? 19:19
flussence Scalar? 19:21
sorear colomon: (niecza_quantifier_max) I needed some way to get the endpoint values in x ** {$Int} and x ** {$Range} 19:23
colomon: this predates multi subs, and is probably still faster
moritz flussence: Scalar is a container type
sorear colomon: another option would be a type-case. 19:24
o/ masak
flussence moritz: looks like Range just needs to coerce to a "value" type, whatever that turns out to be. Wouldn't .item work? 19:25
sorear [Coke]: I don't know either. 19:26
flussence (maybe we need a method like .item that gets out a string/number from any object)
sorear mikemol: (there is no standard C++ ABI) this is not quite true. refspecs.linuxbase.org/cxxabi-1.83.html 19:27
mikemol: that one is used by multiple implementations across several platforms 19:28
mikemol: your actual point stands, though, since not everyone uses it and you can't count on having it
colomon sorear: what has me confused is the bit where if the max $Range is Inf, the niecza_quantifier_max is 2_147_483_647 19:29
sorear the return value has to fit in a native int. 19:31
colomon sorear: I had just been about to hack Whatever. niecza_quantifier_max to be Inf when I saw that
ashleydev flussence: what's that spectest graph made with?
colomon sorear: does Whatever. niecza_quantifier_max { 2_147_483_647 } seem reasonable to you? 19:32
sorear colomon: no
colomon: S05:962
colomon sorear: you mean "If you supply a closure, it should return either an Int or a Range object."? 19:34
dalek ast: b3cf6e6 | moritz++ | S05-mass/stdrules.t:
tests for <at>
19:35
ast: 7748996 | moritz++ | S06-routine-modifiers/proxy.t:
fix Proxy tests to not use indirect method syntax, and use methods as callbacks, as per current S06
sorear colomon: yes
colomon sorear: niecza is using niecza_quantifier_max for the :x() argument in subst 19:36
sorear: that can be :x(*) according to the spectests
dalek kudo/nom: 18f12d5 | moritz++ | t/spectest.data:
run Proxy tests
19:38
flussence ashleydev: the graph's done using gnuplot scripts, data files for that are generated using perl5 19:45
(I know about Chart::Gnuplot, but it was pretty limited so I ended up doing it manually) 19:46
sorear colomon: well, that was stupid. 19:57
colomon okay :)
[Coke] yays that auto-unfudge mostly just works.
sorear I guess we need more than one kind of {Range,Int} -> Int thingie 19:58
unsure what the best design would be
[Coke] moritz++ # I think.
dalek ast: da96407 | moritz++ | S12-attributes/mutators.t:
mostly rewrite S12-attributes/mutators.t

The previous revision did funny things like providing an lvalue accessor that unconditionally called the lvalue accessor. It also assumed that initialization via .new(a => 1) called the lvalue accessor. Oh, and it contained most tests twice.
19:59
colomon sorear: At least for the :x-like modifiers, it seems more like a {*,Range,Parcel of Ints,Int} -> Int thingie 20:00
[Coke] niecza: say +Bool::True ~~ Numeric
p6eval niecza v12-100-g7585370: OUTPUT«Bool::True␤»
moritz phenny: tell jnthn at your convenience, please take a look at S12-attributes/mutators.t. It seems to die in $!varies +=2 with "No applicable candidates found to dispatch to for 'Numeric'", which I find quite weird, since $!varies is typed Int 20:01
phenny moritz: I'll pass that on when jnthn is around.
sorear colomon: sounds to me like it would be used only in subst, so best to write it as a given/when 20:02
colomon sorear: sure
sorear Helmut W: "if this works, what can I do for you? 20:03
colomon .... actually, might be used in match as well, no? I think a lot of the same modifiers apply there
sorear :(
colomon still, simple minor subroutine maybe.
sorear colomon: :x in match depends on pmichaud returning 20:04
or someone else who can properly explain lol semantics to me
japhb sorear, re: "05:39* sorearnow thinks that getting Str<->number coercions working-in-general should be a priority" -- Unless you were speaking in a Niecza-specific sense, this brings us back to Failure again 20:11
phenny japhb: 19 Dec 08:33Z <jnthn> tell japhb it's pretty much top of the list; I know exactly how to do it :)
japhb looks forward to jnthn's next CArray commits then. ;-) 20:12
sorear japhb: mm? yes I am speak nieczaishly
niecza: say 3**32
japhb ah, gotcha
p6eval niecza v12-100-g7585370: OUTPUT«1853020188851841␤»
sorear niecza: say +(~(3**32))
p6eval niecza v12-100-g7585370: OUTPUT«1.85302018885184E+15␤»
sorear niecza: say +(~(3**32)).WHAT
p6eval niecza v12-100-g7585370: OUTPUT«Unhandled exception: System.FormatException: Invalid format.␤ at System.Double.Parse (System.String s, NumberStyles style, IFormatProvider provider) [0x00000] in <filename unknown>:0 ␤ at System.Double.Parse (System.String s, IFormatProvider provider) […
sorear niecza: say (+(~(3**32))).WHAT
p6eval niecza v12-100-g7585370: OUTPUT«Num()␤»
japhb Ow. 20:13
japhb I see what you mean 20:13
fsergot hi o/ !
japhb o/
dalek ast: 62db446 | moritz++ | S06-routine-modifiers/lvalue-subroutines.t:
try to bring some sanity to lvalue-subroutines.t

not sure if I succeeded
20:14
sorear niecza: say (+(~pi)) - pi # I'm actually unsure if this will work
p6eval niecza v12-100-g7585370: OUTPUT«0␤»
sorear niecza: my $num = pi ** 3; say (+(~$num)) - $num
p6eval niecza v12-100-g7585370: OUTPUT«-2.48689957516035E-14␤»
fsergot I'm back after a long break :) 20:15
fridim_ I just read the news about the recent donation of Booking.com ! Wah. 20:17
masak booking++ 20:29
Radvendii nom: my @a=[0,1],[2,3]; for @a -> $b, $c {say $b, ": ", $c} 20:30
p6eval nom 18f12d: OUTPUT«0 1: 2 3␤» 20:31
Radvendii b: my @a=[0,1],[2,3]; for @a -> $b, $c {say $b, ": ", $c}
p6eval b 1b7dd1: OUTPUT«0 1: 2 3␤»
Radvendii How do I make it split [0,1] in a for loop 20:32
?
[Coke] sorear: any issues with applying feather.perl6.nl/~coke/autounfudge.patch (created automatically by autounfudge) 20:34
sorear fridim_: what? 20:35
kthakore tadzik: still pooking at SDL?
poking* 20:36
[Coke] (assuming that make spectest doesn't mind.)
[Coke] niecza: say lc('A'..'C') 20:37
p6eval niecza v12-100-g7585370: OUTPUT«a b c␤»
sorear [Coke]: assuming it passes, I don't see anything hroribly wrong.
[Coke] Danke. 20:38
Radvendii how do i for loop over something, without modifying the values (making copies)
Radvendii like for @a is copy {} or something 20:40
nom: my @a=1,2,3; for @a is copy {$_++};say @a; 20:41
p6eval nom 18f12d: OUTPUT«===SORRY!===␤Missing block at line 1, near "is copy {$"␤»
Radvendii nom: my @a=1,2,3; for @a -> $_ is copy {$_++};say @a;
p6eval nom 18f12d: OUTPUT«1 2 3␤»
Radvendii ooh 20:41
Radvendii b: my @a=1,2,3; for @a -> $_ is copy {$_++};say @a; 20:42
p6eval b 1b7dd1: OUTPUT«123␤»
tadzik kthakore: nah 20:43
tadzik kthakore: I couldn't make it display a line 20:44
Radvendii b: my @a=[0,1],[2,3],[4,5]; for @a -> $_ is copy {.shift};say @a;
p6eval b 1b7dd1: OUTPUT«135␤»
Radvendii ah ha!
tadzik but I didn't try very hard 20:45
Radvendii it's not a copy
colomon Radvendii: ?
b: my @a=1,2,3; for @a -> $_ is copy {++$_};say @a;
p6eval b 1b7dd1: OUTPUT«123␤»
colomon niecza: my @a=1,2,3; for @a -> $_ is copy {++$_};say @a; 20:46
p6eval niecza v12-100-g7585370: OUTPUT«1 2 3␤»
Radvendii nom: my @a=[0,1],[2,3],[4,5]; for @a -> $_ is copy {.shift};say @a;
p6eval nom 18f12d: OUTPUT«1 3 5␤»
Radvendii it removes an element
.shift 20:47
even though it's a copy
colomon ah, yes.
Radvendii why? what to do?
niecza: my @a=[0,1],[2,3],[4,5]; for @a -> $_ is copy {.shift};say @a;
p6eval niecza v12-100-g7585370: OUTPUT«1 3 5␤»
Radvendii is that intentional? 20:49
colomon I'm not sure. sorry, I've tangled my brain in knots looking at your problem.
Radvendii hahaha
colomon perl6: my @a=1..3; for @a -> $x is copy { $x = 1 }; say @a; 20:50
p6eval pugs b927740: OUTPUT«123␤»
..rakudo 18f12d, niecza v12-100-g7585370: OUTPUT«1 2 3␤»
colomon so everyone agrees that's a copy
Radvendii yes
colomon perl6: my @a=[0,1],[2,3],[4,5]; for @a -> $x is copy { $x.shift }; say @a
p6eval rakudo 18f12d, niecza v12-100-g7585370: OUTPUT«1 3 5␤» 20:51
..pugs b927740: OUTPUT«135␤»
colomon perl6: my @a=[0,1],[2,3],[4,5]; for @a -> $x is copy { $x = 0 }; say @a
p6eval rakudo 18f12d, niecza v12-100-g7585370: OUTPUT«0 1 2 3 4 5␤»
..pugs b927740: OUTPUT«0 12 34 5␤»
Radvendii it's just shift that is the problme 20:52
try pop?
niecza: my @a=[0,1],[2,3],[4,5]; for @a -> $_ is copy {.pop};say @a; 20:53
p6eval niecza v12-100-g7585370: OUTPUT«0 2 4␤»
Radvendii pop too
colomon I guess it's a very shallow copy
but I don't really like that explanation
Radvendii yeah, it's pretty counter-intuitive what it does
perl6: my @a=[0,1],[2,3],[4,5]; for @a -> $_ is copy {$_[0]=6};say @a; 20:55
p6eval rakudo 18f12d, niecza v12-100-g7585370: OUTPUT«6 1 6 3 6 5␤»
..pugs b927740: OUTPUT«6 16 36 5␤»
[Coke] colomon: test failures for me in radix.t 20:56
Radvendii it's any time you access a part of the element
colomon [Coke]: me too
[Coke] ah, ok. I'll fudge it.
masak 'night, #perl6 21:01
Radvendii goodnight
tadzik g'night masak 21:02
colomon \o
[Coke]: I presume it's related to sorear's rewriting that code. But I haven't stopped to check it out yet. 21:03
[Coke] colomon: fudging every test doesn't help, so I think sorear broke it, yes. 21:04
Radvendii colomon: any ideas regarding the shallow copying?
[Coke] Dies in the setting.
colomon Radvendii: in what sense? I don't like it, but it might be right. 21:05
Radvendii as in, it's what should be happening?
that doesnt make sense...
colomon it's awfully consistent across implementations to be an accident 21:06
sorear Radvendii: copy copies the pointers 21:07
this behavior is par for the course with computer languages that use mutable objects 21:08
Radvendii is there a way to do a deep copy?
besides saying $a=$_ inside the for loop
is there a way to define something like 21:10
"is deepcopy"
?
Radvendii even $a=$_ doesnt work!! 21:13
colomon nope, it's still a shallow copy
Radvendii perl6: my @a=[0,1],[2,3],[4,5]; for @a -> $_ {$a=$_;$a[0]=6};say @a; 21:14
p6eval rakudo 18f12d: OUTPUT«===SORRY!===␤Variable $a is not predeclared at line 1, near "=$_;$a[0]="␤»
..pugs b927740: OUTPUT«*** ␤ Unexpected "=$"␤ expecting "::"␤ Variable "$a" requires predeclaration or explicit package name␤ at /tmp/fqk7tOujp9 line 1, column 42␤»
..niecza v12-100-g7585370: OUTPUT«===SORRY!===␤␤Variable $a is not predeclared (did you mean @a?) at /tmp/to1B1hcFHN line 1:␤------> my @a=[0,1],[2,3],[4,5]; for @a -> $_ {⏏$a=$_;$a[0]=6};say @a;␤␤Variable $a is not predeclared (did you mean @a?) at /t…
Radvendii perl6: my @a=[0,1],[2,3],[4,5]; for @a -> $_ {my $b=$_;$b[0]=6};say @a;
p6eval rakudo 18f12d, niecza v12-100-g7585370: OUTPUT«6 1 6 3 6 5␤»
..pugs b927740: OUTPUT«6 16 36 5␤»
Radvendii so how do i do a deep copy? (without a loop)?
colomon nom: my @a=[0,1],[2,3],[4,5]; for @a -> $_ { my @b = @$_; @b[0] = 6; } ; say @a
p6eval nom 18f12d: OUTPUT«0 1 2 3 4 5␤»
Radvendii great. back to @$... okay 21:15
thanks
ive gotta go
bbl 21:16
bbkr1 rakudo: sub foo ( Bool $t ) { $t.say }; foo( :t ); # am I right by saying that param in bool context without value should evaluate to true? 21:16
p6eval rakudo 18f12d: OUTPUT«Not enough positional parameters passed; got 0 but expected 1␤ in sub foo at /tmp/mPePp4oYTL:1␤ in block <anon> at /tmp/mPePp4oYTL:1␤ in <anon> at /tmp/mPePp4oYTL:1␤»
dalek ast: 0b449f6 | coke++ | S (42 files):
niecza unfudge (mostly from autounfudge)
21:19
bbkr1 nvm, found that, now it's (Bool :$t) - with semicolon
[Coke] colomon: apparently we need to run that more often (touched 42 files!) 21:20
colomon [Coke]: run what?
oh, auto unfudge
[Coke]++
[Coke] phenny: tell mikemol that roast: 0b449f6 was pretty much an automated tool figuring out what tests that had previously been skipped are now passing. 21:21
phenny [Coke]: I'll pass that on when mikemol is around.
mikemol phenny: Tell [Coke] I'm here.
phenny mikemol: 21:21Z <[Coke]> tell mikemol that roast: 0b449f6 was pretty much an automated tool figuring out what tests that had previously been skipped are now passing.
mikemol [Coke]: Cool 21:22
colomon [Coke]: how does it work?
[Coke] it's the same one as from rakudo (that one assumes you have a ./perl6 and a tools/perl6-limited*) ... it finds all the fudged tests you're running, and tries backing out each skip/todo. when it finds one that doesn't cause an error, it saves it to a .patch file 21:23
colomon niecza: say "-1".atan2("2")
p6eval niecza v12-100-g7585370: OUTPUT«-0.463647609000806␤»
colomon [Coke]: sweet
[Coke] so when you're done, you just apply the patch (test if you're paranoid) and done. 21:24
colomon: I think it was a moritz++ special.
colomon did you spectest?
[Coke] aye.
colomon [Coke]++
[Coke] one of the unfudges was bad, and another (todo) one was missed, probably because roast got updated in between. 21:25
so I fixed those 2.
colomon how long did it take to run? 21:26
[Coke] No clue. 21:29
definitely faster for niecza than rakudo.
colomon minutes? hours? days? 21:30
[Coke] no more than hours.
probably less than one.
colomon sweet
tadzik advent post preview! perl6advent.wordpress.com/?p=1037&a...eview=true 21:31
please criticise
[Coke] Error 404 - Not Found 21:32
tadzik not logged in, maybe?
[Coke] ah. 21:33
[Coke] logged in. 404. 21:35
tadzik hrm
[Coke] probably don't have perms. 21:36
colomon: we'll hit 60% tomorrow unless there's a rakudo surge. ;)
tadzik how about now?
[Coke] 404
I may just not have privs, seriously.
tadzik [Coke]: gist.github.com/1507821
[Coke] 404! (jk) 21:37
tadzik ohh, you've got to be kidding me
oh, ok ;)
colomon reading it now
[Coke]: or I get sidetracked making actual improvements to niecza. ;)
[Coke] neceserilly -> necessarily 21:38
tadzik thanks 21:38
[Coke] colomon: nah, we're already there, I think.
tadzik colomon: you wrote a similar thing for niecza, iirc?
yep, found it
colomon taglib, yes
[Coke] "and react appropriately Perl 6 way" ... react *in an* app.. ? 21:40
tadzik probably, I wasn't quite sure about this one. Thanks again :) 21:40
colomon tadzik++ 21:40
[Coke] in the good, old C ~~ s/the// ? 21:41
[Coke] tadzik++ #indeed! 21:41
[Coke] that's awesome. 21:41
colomon [Coke]++'s suggestions are all good.
[Coke] I love the lack of XS. ;)
tadzik :) 21:41
colomon and tadzik, it was great you could get this working so quickly.
tadzik yeah, it's pretty cool.
I've tried like 5 libraries today, mpdclient, taglib, allegro, sdl, cairo...
wanted to draw a Christmas tree :) 21:42
but music's good too
publishing
[Coke] I wonder, if you change the type of that gist to .pod, will it render htmly?
tadzik no eye deer 21:42
tadzik ba-dam! perl6advent.wordpress.com/2011/12/2...e-objects/ 21:43
[Coke] whoops: Deamon -> Daemon 21:44
sorry I missed that one.
tadzik huh
no problem with that
tadzik done 21:44
[Coke] tadzik++, nice post. 21:46
colomon oh, noez, git trouble
ah, dreaded trailing whitespace 21:48
dalek ecza: c184ec8 | (Solomon Foster)++ | lib/CORE.setting:
Allow :x(*) in subst.
21:55
ast: 024f20c | (Solomon Foster)++ | S05-substitution/subst.t:
Unfudge tests that now work.
dalek ast: 4bc3e06 | (Solomon Foster)++ | S12-attributes/instance.t:
Fudge for niecza.
22:36
ecza: 22261b4 | (Solomon Foster)++ | t/spectest.data:
Turn on S12-attributes/instance.t.
22:37
colomon [Coke]: there's another 80 or so. 22:38
Radvendii hello 22:59
colomon o/ 23:01
sorear o/
Radvendii can i do for @a -> @$b {}? 23:02
colomon Radvendii: no
sorear No.
colomon niecza: sub foo($x) { say $x }; foo(:x("blue"))
Improv Hey all, I'm having trouble figuring out how to do "my Int @a" type things (I get recursion errors)
p6eval niecza v12-101-gc184ec8: OUTPUT«blue␤»
sorear niecza: for [1,2], [3,4], [5,6] -> @b { say +@b }
p6eval niecza v12-101-gc184ec8: OUTPUT«2␤2␤2␤»
colomon that's not supposed to work any more, is it? 23:03
sorear Improv: you can't in any current compiler
colomon nom: sub foo($x) { say $x }; foo(:x("blue"))
p6eval nom 18f12d: OUTPUT«Not enough positional parameters passed; got 0 but expected 1␤ in sub foo at /tmp/9ebChJ1Vze:1␤ in block <anon> at /tmp/9ebChJ1Vze:1␤ in <anon> at /tmp/9ebChJ1Vze:1␤»
Improv sorear: Ahh. Ok. Seems there's a lot of sample code on the web showing that :(
colomon nom: my Int @a = 1, 2, 3; say @a
p6eval nom 18f12d: OUTPUT«1 2 3␤»
colomon nom: my Int @a = 1, 2, "Blue"; say @a 23:04
p6eval nom 18f12d: OUTPUT«1 2 Blue␤»
colomon looks like it silently fails in nom?
b: my Int @a = 1, 2, "Blue"; say @a
p6eval b 1b7dd1: OUTPUT«12Blue␤»
sorear colomon: jnthn and I have yet to be adequately convinced that removing the name/pos connection is a good idea
Improv b: my Int @a = 1,2,3; say @a[0] 23:05
p6eval b 1b7dd1: OUTPUT«maximum recursion depth exceeded␤ in 'at_pos' at line 1:src/metamodel/RoleToInstanceApplier.nqp␤ in 'at_pos' at line 8:src/gen/core.pm␤ in 'Any::postcircumfix:<[ ]>' at line 1824:src/gen/core.pm␤ in 'at_pos' at line 5:src/gen/core.pm␤ in 'at_pos' at line 8:src/gen/…
colomon sorear: ah. is that why there are still tests for them in roast?
sorear colomon: the change to the specs repository was done quickly 23:07
Improv What's the actual status of Perl6 anyhow? Are any of the compilers/interpreters in a "released" state?
Or is it still cooking?
sorear Improv: it's hard to say, because the compilers have always been in a released state 23:08
donri it's more ready than you think, but not as much as the people in here who will tell you the question is wrong thinks 23:09
Improv Maybe not ready for production code yet?
donri not for any useful definition of production, no 23:10
Improv Is there a better syntax for specifying an array of Ints?
Or is that syntax right but not supported yet?
donri better than what? 23:11
Improv As in, working.
donri as opposed to what?
sorear Improv: you can't define production code
Improv: we aren't doing a waterfall-model here. There was not and will not be a Great Ribbon Cutting Ceremony
donri ^^^ "question is wrong" ;) 23:12
Improv Sigh.
sorear Perl 6 has been used by people for real things for several years now
it has been better than Perl 5 for some things and worse for others, for years
what part of this is hard to understand? I want to know
Improv sorear: At some point I am hoping to "It's done, most of the features work, CPAN folk should port their stuff soon, everyone should migrate" 23:13
donri there's currently little stability or performance, at least in the case of rakudo
Improv hoping to hear
donri IMHO perl 6 is not perl 5+1 23:14
Improv I know it's a big language shift with lots of syntax and functionality changes, sure.
I just want to know when there is consensus is that it's out of alpha/beta.
slavik1 Improv: christmas 23:15
sorear slavik1: not funny
slavik1: we don't use that on outsiders
slavik1 sorear: that's what Larry has said
oh
Improv slavik1: Christmas which year? :)
slavik1 Improv: and what date is christmas?
;) 23:16
june 27th can be christmas
sorear Improv: there's a slight problem there - Perl 5 is not abandoned
Improv: there are just as many people working on improving 5 as there are on finishing 6
Improv sorear: That is fair. 23:17
sorear so why are you going to ditch one living language for another?
slavik1 sorear: I would if that one living language offered features I found more useful
like Grammars for example ;)
Improv sorear: I think if I told you what I thought, there'd be a large, unfriendly argument that I don't want to have right now.
sorear people used to think that 6 would supercede 5 completely once it was, in a certain sense, done
Improv I guess I'll check back in a year, again. 23:18
sorear Improv: you think I'm wasting my time. I know that, and you're probably right.
Improv wasting your time? I have no idea what that means.
sorear: I don't actually know who you are.
sorear Perl 6 is dead, nothing good will ever come here
Improv: I'm a Perl 6 implementer. 23:19
Improv Oh, ok.
I wasn't aware.
I am just a long-time perl5 user who's hoping to hear someday that perl6 is ready.
donri mostly likes perl6 because he'd like perl5 is it was sane-like-perl6-is-sane; all the packed features are just extra.
s/is it/if it/
bbkr1 who did variadic params dispatch in Rakudo? they are AWESOME! 23:20
Improv I'm hoping that Perl6 is as popular someday as Perl5 used to be, rather than as popular as, say, Plan9
sorear Improv: it's ready, but it may not be worth it
I think that's a much better explanation and I'll use it from now on 23:21
Improv Ok.
Anyhow, happy holidays, all. Sorry if I touched on sensitive topics.
sorear Perl6 is ready to use, if you like the Perl6 improvements enough to put up with slow compilers and sparse-at-best libraries
Thanks, and no worries. 23:22
sorear people still use ircII? 23:23
slavik1 sorear: personally, I am happy as long as there is a state where there are no major syntax breaking decisions being contemplated
donri people still use perlV?
slavik1 ouch
like there was a switch from =~ to ~~ or something like that
sorear slavik1: that's basically already the case. 23:24
slavik1 perfect, I am happy :)
sorear: I lost track of this but are assertions for grammars/regex working now? 23:26
as in: "256" ~~ /(\d{3})/ <?{ 0<= $0 <= 255}> 23:27
that was th old syntax I believe or something like that
rakudo: "256" ~~ /(\d{3})/ <?{ 0<= $0 <= 255}>
p6eval rakudo 18f12d: OUTPUT«===SORRY!===␤Unsupported use of {N,M} as general quantifier; in Perl 6 please use ** N..M (or ** N..*) at line 1, near ")/ <?{ 0<="␤»
slavik1 rakudo: "256" ~~ /(\d ** 3)/ <?{ 0<= $0 <= 255}>
p6eval rakudo 18f12d: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 2␤» 23:28
slavik1 rakudo: "256" ~~ /(\d ** 3)/ <{ 0<= $0 <= 255}> 23:29
p6eval rakudo 18f12d: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 2␤»
slavik1 rakudo: "256" ~~ /(\d ** 3)/ <{ 0<= $0 <= 255 }>
p6eval rakudo 18f12d: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 2␤»
sorear slavik1: the assertions need to go *inside* the regex. :) 23:30
slavik1 rakudo: "256" ~~ /(\d ** 3) <{ 0<= $0 <= 255 }>/ 23:30
p6eval rakudo 18f12d: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 2␤»
sorear and it has to be <?{
slavik1 ahh
rakudo: "256" ~~ /(\d ** 3) <?{ 0<= $0 <= 255 }>/
p6eval rakudo 18f12d: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 2␤»
sorear niecza: say "256" ~~ /(\d ** 3) <?{ 0<= $0 <= 255 }>/ 23:31
p6eval niecza v12-102-g22261b4: OUTPUT«===SORRY!===␤␤Unable to parse quote-words subscript; couldn't find right angle quote at /tmp/fV9YZmG7Tf line 1:␤------> say "256" ~~ /(\d ** 3) <?{ 0<⏏= $0 <= 255 }>/␤␤Parse failed␤␤»
slavik1 rakudo is being mean to me :(
sorear niecza: say "256" ~~ /(\d ** 3) <?{ 0 <= $0 <= 255 }>/
p6eval niecza v12-102-g22261b4: OUTPUT«Match()␤»
sorear rakudo: "256" ~~ /(\d ** 3) <?{ 0 <= $0 <= 255 }>/
p6eval rakudo 18f12d: OUTPUT«use of uninitialized value of type Nil in numeric context␤use of uninitialized value of type Nil in numeric context␤»
slavik1 rakudo: "256" ~~ /(\d ** 3) <?{ 0<= $0 <= 255 }>/I don't get it, what did you do different that niecza worked the second time 23:32
p6eval rakudo 18f12d: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 2␤»
slavik1 gah
I don't get it, what did you do different that niecza worked the second time
sorear slavik1: I added a space after the 0
slavik1 oh
rakudo: "256" ~~ /(\d ** 3) <?{ 0 <= $0 <= 255 }>/
p6eval rakudo 18f12d: OUTPUT«use of uninitialized value of type Nil in numeric context␤use of uninitialized value of type Nil in numeric context␤»
slavik1 rakudo: "256" ~~ /(\d ** 3) <?{ 0 <= $1 <= 255 }>/ 23:33
p6eval rakudo 18f12d: OUTPUT«use of uninitialized value of type Nil in numeric context␤use of uninitialized value of type Nil in numeric context␤»
slavik1 that can't be right ...
it's as if there are is no extraction happening
sorear for sure something's up 23:34
slavik1 niecza: "256" ~~ /(\d ** 3) <?{ 0 <= $1 <= 255 }>/
p6eval niecza v12-102-g22261b4: OUTPUT«Use of uninitialized value in numeric context␤ at /home/p6eval/niecza/lib/CORE.setting line 782 (warn @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 196 (Any.Numeric @ 5) ␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /tmp/HGJjRMpBby line 1 (ANON @…
slavik1 niecza: "256" ~~ /(\d ** 3) <?{ 0 <= $0 <= 255 }>/
p6eval niecza v12-102-g22261b4: ( no output )
slavik1 niecza: say "256" ~~ /(\d ** 3) <?{ 0 <= $0 <= 255 }>/
p6eval niecza v12-102-g22261b4: OUTPUT«Match()␤»
slavik1 rakudo: say "256" ~~ /(\d ** 3) <?{ 0 <= $0 <= 255 }>/
p6eval rakudo 18f12d: OUTPUT«use of uninitialized value of type Nil in numeric context␤use of uninitialized value of type Nil in numeric context␤=> <256>␤ 0 => <256>␤␤»
sorear slavik1: reminder, 256 is not between 0 and 255 23:56