»ö« 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.
dalek kudo/map2: ecdcc40 | pmichaud++ | src/ (2 files):
Refactor firing of FIRST phasers a bit. There may be a problem

an already-in-progress iterator or other source (problem exists in the code being replaced as well).
02:38
diakopter .u 171 05:13
phenny diakopter: Sorry, no results for '171'.
diakopter .u \d171
phenny U+100B3 LINEAR B IDEOGRAM B171 (𐂳)
U+2A171 CJK UNIFIED IDEOGRAPH-2A171 (𪅱)
U+E019A VARIATION SELECTOR-171 (󠆚)
diakopter eh
.u \da
phenny U+0020 SPACE ( )
U+0021 EXCLAMATION MARK (!)
U+0022 QUOTATION MARK (") [...] 05:14
diakopter phenny: phooey 05:31
moritz \o 05:35
diakopter good morning
moritz ywans
good localtime diakopter
sorear o/ 05:37
diakopter r: my @a = 4; say @a.DUMP 05:40
p6eval rakudo 559c40: OUTPUT«Array<-1253585100>(:items(Mu), :nextiter(ListIter<-1253587167>(:reified(▶Mu), :rest(RPA<-1253587177>(Array<-1253593339>(:items(RPA<-1253626056>(▶4)), :nextiter(▶Mu)))), :list(Array<-1253585100>))))␤»
diakopter scratches his head 05:41
n: my @a = 4; say @a.DUMP
p6eval niecza v18-2-gea3d97a: OUTPUT«Unhandled exception: Unable to resolve method DUMP in type Array␤ at /tmp/_uIdssNpuJ line 1 (mainline @ 4) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3911 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3912 (module-CORE @ 558) ␤ at /home/…
moritz diakopter: it's just for debugging rakudo's lists and iterators 05:45
diakopter rn: say \\.gist; say \.gist 05:46
p6eval rakudo 559c40: OUTPUT«Any()␤Any()␤»
..niecza v18-2-gea3d97a: OUTPUT«\(\("Any()"))␤\("Any()")␤»
diakopter rakudo's capture .gist is empty it seems 05:48
diakopter r: say \().gist; say \().DUMP 05:49
p6eval rakudo 559c40: OUTPUT«␤Capture.new( list => ().list, hash => EnumMap.new())␤»
moritz std: enum X is export <A B C>; 07:47
p6eval std f179a1b: OUTPUT«ok 00:00 40m␤»
moritz std: enum X <A B C> is export; 07:48
p6eval std f179a1b: OUTPUT«===SORRY!===␤Two terms in a row at /tmp/Fp1DMnNHjw line 1:␤------> enum X <A B C> ⏏is export;␤ expecting any of:␤ infix or meta-infix␤ infixed function␤ statement modifier loop␤Parse failed␤FAILED 00:00 42m␤»
dalek ast: 1a247e8 | moritz++ | S (2 files):
fix enum export test, and fudge a new test for rakudo
07:49
moritz nr: say Nil === Nil 08:01
p6eval niecza v18-2-gea3d97a: OUTPUT«Unhandled exception: No value for parameter '$l' in 'infix:<===>'␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (infix:<===> @ 1) ␤ at /tmp/QmdW8XaLSX line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3911 (ANON @ 3) ␤ at /home/p6ev…
..rakudo 559c40: OUTPUT«True␤»
moritz nieczabug?
dalek kudo/nil-assign: f2145d4 | moritz++ | src/Perl6/Metamodel/BOOTSTRAP.pm:
set up Nil in bootstrap
09:23
kudo/nil-assign: 7486672 | moritz++ | src/ (3 files):
propagate Nil to C land
kudo/nil-assign: 066916c | moritz++ | src/ (2 files):
oops, Nil needs to be Iterable
kudo/nil-assign: 9103333 | moritz++ | src/binder/container.c:
special-case assigning Nil
moritz somehow this breaks the backtrace printer 09:26
jnthn morning-ish o/ 09:30
moritz \o jnthn
jnthn How does it break it, ooc? 09:31
moritz method message not found on Any
it seems we return Any a bit too often from the setting 09:32
jnthn Maybe there's something like: my $foo = bar(); return $foo 09:35
And now a Nil that was getting passed along is evaporating. 09:36
moritz yes, I suspect something like that too
List.at_pos returns Nil when the key does not exist 09:37
moritz r: my $x ||= Mu 10:04
p6eval rakudo 559c40: ( no output )
moritz r: my $x = 3; $x &&= Mu
p6eval rakudo 559c40: ( no output )
moritz oh 10:06
in my branch, my $x = Nil produces a Mu in $x 10:07
not Any
jnthn ->of is the type constraint.
moritz yes
how do I get the default type instead? 10:08
does that go through whence? 10:09
jnthn hm. I'm not sure we even store it...besides setting it as the initial value of the scalar. 10:12
moritz oh.
so much for the LFH part :-)
(Nil assignment is still in LHF.markdown) 10:13
jnthn Oh. :)
I guess that the default wants to live on the container desctiptor.
*descriptor
dalek kudo/nil-assign: 71a5632 | moritz++ | src/core/metaops.pm:
//= and friends should be able to handle Mu
10:14
moritz fwiw that makes most of the spectests pass again
moritz just three files fail, t/spec/S02-types/nil.rakudo, t/spec/S03-operators/assign.rakudo and t/spec/S03-operators/flip-flop.rakudo 10:23
all of them exit prematurely 10:24
dalek p/altnfa: 2dc71bc | jnthn++ | src/QRegex/NFA.nqp:
Don't screw up <!alpha>.
10:47
p/altnfa: 0920483 | jnthn++ | src/QRegex/NFA.nqp:
Fix before handling in NFA generation.
dalek p/altnfa: 80306ff | jnthn++ | src/QRegex/P6Regex/Actions.nqp:
Fix handling of complex char classes; gets bigint test file to pass on altnfa.
11:58
p/altnfa: fd66f4f | jnthn++ | src/QRegex/P6Regex/Actions.nqp:
Ensure alt_nfa IDs are sufficiently unique.
p/altnfa: 5f35dc9 | jnthn++ | src/QRegex/NFA.nqp:
Ensure zerowidth subrules really do terminate LTM.
moritz phenny: de en "alt"?
phenny moritz: "old" (de to en, translate.google.com)
moritz shouldn't you be writing a *new* NFA? :-) 11:59
jnthn :P
We now get to around line 3000 of CORE.setting parse again :)
moritz so about 1/4th through 12:00
jnthn Yeah
Well, before my commits last night, we made it to about line 20. And before today only to line 42. So, improvement... :)
hmm, maybe it was 72 actually 12:01
moritz aye :-)
quite some progress
jnthn: I have a static sub (get_thrower) in src/ops/perl6.ops, and want to reuse it in the binder 12:02
jnthn: where should I put it?
I want to throw more typed exceptions from C 12:05
JimmyZ_ moritz++, it's easy to do i10n 12:08
jnthn moritz: Make it unstatic, prefix it Rakudo_ and put it in a .c file in src/binder/ - if there's no appropraite one create a new exceptions.c and exceptions.h 12:09
jnthn And be sure to #include the exceptions.h in bind.c and the ops 12:09
moritz tries if it still compiles 12:15
jnthn Making it to 6000ish now. 12:20
moritz \o/ 12:21
double it once more, and you're there :-)
jnthn std: method foo() { self!_foo() } 12:27
p6eval std f179a1b: OUTPUT«Potential difficulties:␤ 'method' declaration outside of class at /tmp/2KX6dZ962a line 1:␤------> method foo() ⏏{ self!_foo() }␤ok 00:00 41m␤»
pmichaud good morning, #perl6 12:31
jnthn o/ pmichaud
moritz good am, pm
pmichaud ooc, when FIRST/NEXT/LAST phasers were implemented, was there any discussion about assymmetry between the execution order of FIRST and LAST ? 12:32
pmichaud ...and I guess NEXT, too? 12:32
jnthn pmichaud: As in, declaration order vs reverse order? 12:33
pmichaud as in... 12:34
FIRST blocks are executed after PRE blocks, but NEXT/LAST blocks are executed before/after POST blocks
currently we have NEXT/LAST executed after POST
pmichaud and I think it pretty much has to be that way, leading me to wonder if FIRST should occur before PRE to keep proper nesting. 12:35
jnthn Ah...
jnthn waves hands
pmichaud or at least to keep it symmetric
or, even more directly: NEXT and LAST occur _after_ a block has exited, so I wonder if FIRST should occur before a block is entered. 12:36
pmichaud anyway, I was just curious; I'll leave things as they are for now :) 12:37
jnthn How would that work?
moritz it would be helpful to have use cases
jnthn You'd not have captured the lexical scope.
pmichaud I don't know... I just know there's an assymmetry there :)
jnthn *nod*
pmichaud *asymmetry
dalek p/altnfa: 631269d | jnthn++ | src/QRegex/NFA.nqp:
Reflect that <alpha> also matches _ in the NFA we generate for it.
12:47
kudo/altnfa: 539cf11 | jnthn++ | src/Perl6/Grammar.pm:
Move term:sym<type_declarator> higher up.
jnthn Way past line 8000 now 12:53
Gotta go to Stockholm.
back this evening.
moritz have fun!
pmichaud picking up your Nobel Prize already? Seems a bit premature. :-)
jnthn :P
Nah, just to teach TDD :)
moritz I'm almost done getting a typed exception for assignment type check failure 12:54
now I just need to eliminate all the typos :-) 12:55
(which each takes the full 4 minute recompilation cycle)
pmichaud ...where is the &warn handler defined? 12:59
(not the part that throws warnings, the part that catches and displays them)
it's interacting badly with my new list code
moritz probably in Exception.pm 13:00
handle_control or so 13:01
pmichaud print_control, maybe? 13:02
moritz sounds like it, yes 13:03
pmichaud $err.print: Backtrace.new($ex.backtrace, 0).nice(:oneline); 13:08
...what, exactly, is that line doing? 13:09
(Exception.pm, line 157)
moritz it tries to extract the one best line to report as a calling location of the warning 13:10
pmichaud we're passing a Backtrace to Backtrace.new, though? 13:11
moritz well
$ex.backtrace is the RPA that is parrot's idea of a backtrace
moritz an RPA of hashes, iirc 13:11
and from that we create a Perl 6 Backtrace object 13:12
pmichaud method backtrace() { Backtrace.new(self) }
am I looking in the wrong place?
moritz yes
$ex is a parrot exception
pmichaud ah
moritz (feel free to rename the variable if that makes it less confusing for you)
pmichaud yes, for some reason I assumed it was an Exception. okay, it makes more sense now. 13:13
moritz I can see how that leads to confusion :-)
pmichaud okay, I'm guessing the problem I'm having is somehow related to
my class Backtrace is List {
didn't know we had other subclasses of List :)
PerlJam It's too bad there isn't some sort of hungarian notation to distinguish parroty things from nqply things. 13:14
pmichaud well, we can certainly come up with a convention for parroty versus perl6y
pmichaud --ll-exception helps 13:18
moritz though iirc Backtrace doesn't fiddle with List's internals
moritz or maybe it does for construction 13:18
pmichaud it might be related to its use of next/last in the constructor 13:19
the problem I'm having is definitely occuring in the constructor
which is why I'm getting an infinite loop, as Backtrace.new is throwing an exception that is then being caught that is then trying to be handled by something that calls Backtrace.new that ....
it doesn't appear to be a Backtrace/List issue directly; I don't see any worrisome fiddling by Backtrace. 13:20
moritz you might remember some of the "fun" I had at the Oslo hackathon straightening out errors from the backtrace printer
pmichaud the exception I'm getting is from Parrot: 13:21
Multiple Dispatch: No suitable candidate found for 'is_equal', with signature 'PP->I'
so somewhere there's a comparison being done between a pair of PMCs that shouldn't be :-) 13:22
moritz sounds like a coercion is missing around a comparison op
pmichaud ...wish I could find out which one :-)
moritz well, coercion of arguments to comparison op missing
pmichaud (yes, I can... looking at generated source now.) 13:23
called from Sub 'reify' pc 462202 (src/gen/CORE.setting.pir:182144) (src/gen/CORE.setting:5028)
.... it would really help if there was a faster way to determine _which_ Sub 'reify' that is. :-/ 13:24
oh, I guess CORE.setting.5028 tells me 13:25
moritz which reminds me that p6 level backtraces don't include the package name either 13:25
though iirc I put all the necessary infrastructure in place 13:26
pmichaud aha!
found it
type = getattribute exception, 'payload' 13:27
copy-paste error... 'payload' should be 'type' there.
moritz is that from control_print? 13:28
pmichaud no, it's in my new MapIter code.
It's the exception handler for last/next/redo exceptions.
moritz no wonder I didn't notice it before :-) 13:29
pmichaud I'm guessing this is the first time I've run into code that does last/next/redo :)
(in this branch) 13:30
dalek kudo/nom: 531b9d8 | moritz++ | / (4 files):
move C infrastructure for typed exception to a separate file

I want to reuse it later in the binder
kudo/nom: ffdcdf9 | moritz++ | src/ (2 files):
typed exception for assignment type check failure
[Coke] jnthn: are you on 32bit or 64bit windows? 13:33
dalek ast: 6625f6f | moritz++ | S32-exceptions/misc.t:
test X::TypeCheck::Assignment
13:50
[Coke] sorear, colomon: I need c# help - does this github.com/ServiceStack/ServiceStack.Redis look like a library or an app? the docs are unclear, and I am confused. 14:14
gorman Hi, anyone have any good open source repos for perl? I want to read some perl 14:17
daxim modules.perl6.org/
if you're looking for perl5, join #perl-help on irc.perl.org 14:18
gorman ah, that's a great link, thanks :D 14:19
moritz rosettacode also has quite some nice Perl 6 code 14:20
I'm pretty sure there's a link to it from perl6.org or perl6.org/community/
daxim rosettacode.org/wiki/Category:Perl_6 14:21
dalek kudo/nom: b2fa325 | moritz++ | src/core/Exception.pm:
small exception tweak
14:43
colomon [Coke]: looks like a library to me, at a quick glance 15:02
tonginbox help 15:21
moritz hello tonginbox. What do you need help with?
tonginbox i am new in here, just want to learn perl6 what should i start 15:23
moritz tonginbox: perl6.org/ has many pointers to resources
TimToady which one works best depends on what kind of learner you are 15:24
and your background
tonginbox good question, TimToady
TimToady what languages are you familiar with
?
tonginbox i am experienced dev on java and c#
diakopter have you used C# 4.0 dynamic? 15:26
(just curious)
tonginbox no i just use c# and .net mvc for web dev.
TimToady we have an implementation on .net, as it happens 15:27
TimToady I don't think we have any tutorial specially tailored for people coming from an OO background yet 15:28
tonginbox ok
TimToady there's the book moritz et al. are working on
moritz though "Using Perl 6" might still suit you
tonginbox ok 15:29
TimToady there are the specs, which are pretty ferocious, but some people like reading 'em
there are lots of ways to learn by example, such as rosettacode.org
TimToady or by looking at existing modules 15:29
moritz and of course you're welcome to ask here if you can't find answers by reading or experimenting 15:30
TimToady unfortunately rosettacode is somewhat impoverished in Java and C# code
dalek kudo/nom: 8c91e19 | moritz++ | src/Perl6/Actions.pm:
also forbid nqp:: with "use FORBID_PIR"
TimToady I guess those folks are too busy making a living :)
tonginbox rosettacode is the good one i will explore there first to get farmilier with perl6
shall i use perl6 on linux? can you suggest? 15:31
now i'm on win.
TimToady you can use either niecza or rakudo on either linux or windows
tonginbox and i don't mind use linux coz has some exp on ubuntu and archlinux
moritz well, most of us are using it on linux, so there the experience is usually a bit smoother
TimToady niecza runs on mono, so you'd have some familiarity with the .netty bits 15:32
tonginbox yes that's my concern if most ppl use linux then i should use it, i don't want to be alone you know. 15:32
TimToady well, jnthn develops rakudo on windows, but sorear develops niecza on linux (I think) 15:33
I personally like linux better than windows, but maybe that's just me :)
diakopter I like Windows because it has my favorite text editor 15:35
diakopter come to think of it, that's by far the biggest reason 15:36
jnthn uses the same one
TimToady another consideration is which timezone you live in 15:37
diakopter tonginbox: there are a few Perl 6 implementations you can try out.
tonginbox ok 15:38
TimToady the main niecza developer is in the Pacific time zone, but most of the rakudo developers are in the EU
perl6: say "hi"
p6eval rakudo b2fa32, niecza v18-2-gea3d97a, pugs: OUTPUT«hi␤»
TimToady there're three right there
moritz of which only rakudo and niecza are being actively developed 15:39
TimToady pugs is being inactively developed :)
pmichaud (aside) at some point soon we might want a different phrase besides "actively developed" :-) 15:40
something that indicates movement beyond initial development
TimToady actively convergent :) 15:41
diakopter perlito is active, but pretty behind
TimToady and it's not clear yet whether it will be convergent
pmichaud looking at perl6.org/getting-started/, it might be useful to update that page with some of the items mentioned above 15:42
i.e., rosetta code isn't mentioned on the getting-started page 15:43
pmichaud that page looks like it could use a bit of an update/refactor, imho 15:44
TimToady hmm, I was wrong about C# and Java, they both have about as many entries as Perl 6 does on RC 15:45
so that will be useful for comparison to tonginbox, I hope 15:46
fglock o/ 16:39
sorear good * #perl6 17:14
fglock sorear: o/ 17:19
sergot hi o/ 17:35
tadzik hello sergot 17:36
sorear o/ 17:48
[Coke] colomon++ #danke 18:02
sjohnson sorear: hi 18:14
tadzik: *fat face emoticon*
sorear hello sjohnson. 18:15
[Coke] since jnthn++ is always talking about lovely food... just got some dates, with almonds in them, covered in chocolate, from a coworker who just traveled to saudi arabia. MMMM. 18:19
moritz [Coke]: sounds good 18:25
tadzik ( ° ー°)<( Hello sjohnson! )> 18:34
sjohnson heheh 18:36
sorear [Coke]: isn't that illegal? 18:37
moritz erm, what should be illegal? 18:50
TimToady candies are generally considered okay to bring in
and I'd say this is more like candy than like fruit 18:51
moritz fresh fruit might be problematic
TimToady generally most "processed" things are okay if they're in their package
but probably not meats 18:52
TimToady someone might steal your sausage and feed it to a cow! 18:52
which might make them mad, and we want happy cows
sjohnson wants to eat a cheeseburger now 18:56
moritz r: 1 = 2 19:33
p6eval rakudo 8c91e1: OUTPUT«===SORRY!===␤Method 'lvalue' not found for invocant of class 'Integer'␤»
moritz submits rakudobug
r: 1e0 = 2 19:34
p6eval rakudo 8c91e1: OUTPUT«===SORRY!===␤Method 'lvalue' not found for invocant of class 'Float'␤»
moritz r: 1.0 = 2
p6eval rakudo 8c91e1: OUTPUT«Cannot assign to a non-container␤ in block <anon> at /tmp/4FS7Qw_leC:1␤␤»
GlitchMr r: '1.0' = 2 19:36
p6eval rakudo 8c91e1: OUTPUT«===SORRY!===␤Method 'lvalue' not found for invocant of class 'String'␤»
GlitchMr r: ['1.0'] = 2 19:37
p6eval rakudo 8c91e1: ( no output )
GlitchMr ... what?
n: ['1.0'] = 2
p6eval niecza v18-2-gea3d97a: OUTPUT«Unhandled exception: Writing to readonly scalar␤ at /tmp/uSfeCIjdwP line 1 (mainline @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3911 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3912 (module-CORE @ 558) ␤ at /home/p6eval/niecza/lib…
moritz [] returns an Array; I guess rakudo just calls its STORE method or so 19:38
GlitchMr r: < 1.0 2.0 > = 2
p6eval rakudo 8c91e1: OUTPUT«Cannot assign to a non-container␤ in method STORE at src/gen/CORE.setting:4637␤ in block <anon> at /tmp/eE5ghGnPlL:1␤␤»
GlitchMr r: < 1.0 2.0 >.WHAT 19:39
p6eval rakudo 8c91e1: ( no output )
GlitchMr r: print < 1.0 2.0 >.WHAT
p6eval rakudo 8c91e1: OUTPUT«use of uninitialized variable $v of type Parcel in string context in block <anon> at /tmp/WBRXORM4oQ:1␤␤»
dalek kudo/nom: e75a0ae | moritz++ | src/ (2 files):
typed exception for assignment to non-container
19:51
ast: 61b24d9 | moritz++ | S32-exceptions/misc.t:
test X::Assignment::RO, and add tests for RT #113534
ast: 343c92a | moritz++ | fudge:
[fudge] make it recognize throws_like
dalek ast: 7d80d8b | moritz++ | S02-types/subset.t:
test RT #113434, subset type conformance
20:01
jnthn evenin' 20:02
[Coke] sorear: illegal or not, it's DELICIOUS. NOMNOMNOM 20:03
moritz \o jnthn. How was teaching?
kboga hi #perl6 20:04
jnthn moritz: It wasn't today :)
moritz: Today I was just traveling up to Stockholm
Teaching is tomorrow and Fri
Thus why I had some tuits for LTM stuff earlier ;) 20:05
moritz jnthn: oh, ok
hi kboga
hacking rakudo's C in limited ways is not as scary as I initially thought 20:06
jnthn It ain't bad, once you C what to do :) 20:07
moritz slaps jnthn with a large saucepun 20:08
r: try my Int $x = Str; say $!.perl 20:10
p6eval rakudo 8c91e1: OUTPUT«X::TypeCheck::Assignment.new(symbol => "\$x", operation => "assignment", got => Str, expected => Int)␤»
moritz r: try my Int $x = "foo"; say $!.perl 20:11
p6eval rakudo 8c91e1: OUTPUT«X::TypeCheck::Assignment.new(symbol => "\$x", operation => "assignment", got => "foo", expected => Int)␤»
jnthn woo :)
What else could operation be?
moritz it's inherited from X::TypeCheck
could be binding, return value, assignment right now
jnthn Ah. Feels a little like duplication given that is encoded in the type too 20:12
moritz well, there are two different use cases here
the first is "catch me only assignment type check failures" 20:13
for that the subclass is easier
the second is "catch any type check failure, and tell me what it is that failed"
for that the attribute is easier
tadzik good evening
moritz that said I'm not fixed on that particular design
\o tadzik
tadzik moritz: o/
jnthn moritz: Fair point. 20:14
hi tadzik
moritz tomorrow is a holliday, and I have Friday off too
kboga hi moritz, jnthn, tadzik
tadzik same here
time for university projects! \o/
spider-mario now it seems that rakudo segfaults on exit when I trigger an assignment-to-non-container exception 20:18
> my $foo = 'foo'; $foo R~= 'foo';
Cannot assign to a non-container
> ^D
zsh: segmentation fault perl6
moritz here I get 20:23
Null PMC access in get_pmc_keyed()
(with a different trigger for the same bug) 20:24
moritz ah, I can reproduce the segfault too 20:25
[Coke] moritz: hey, question for you onthe grant. 20:32
hooks for localization? 20:33
moritz [Coke]: I had mixing roles with the translated messages in the back of my mind 20:37
*mixing in
[Coke]: but I haven't really experimented with it yet
jnthn That seems workable...plus you could do it as an extra layer of setting. 20:38
moritz jnthn: oh, that's actually a better idea 20:39
or instead of mixins, one could augment the classes (not pretty, I know) and add method message-sv() { ... }; message-de() { ... } 20:41
and have the backtrace printer picke the message-$lang if available, and fall back to message()
$ ./perl6 --setting=DE -e 'sub f() { $^x }' 20:46
===SORRY!===
Platzhaltervariablen können keine bestehenden Signaturen überschreiben
at -e:1
tadzik oooo
PerlJam moritz: what about X::Whatever delegate to DE::X::Whatever or EN::X::Whatever ? 20:47
(if it exists)
moritz PerlJam: that way every exception type would need to be aware of l10n
PerlJam: but if we load an alternate setting, or modify the backtrace printer, we don't need that 20:48
PerlJam ok
sorear wouldn't it make a lot more sense to use something similar to gettext? 20:49
moritz sorear: IMHO yes
sorear wonders if moritz actually has a DE.setting 20:50
moritz sorear: but when I proposed to use something more like a template system instead of interpolating variables into strings I was universally shot down
Tene search.cpan.org/~toddr/Locale-Maket.../TPJ13.pod is a nice article with recommendations on localization libraries.
spider-mario moritz : if I had participated to the vote, you wouldn’t have been *universally* shot down 20:51
moritz sorear: gist.github.com/2884688 20:52
PerlJam I don't quite see the difference between interpolating vars into strings and using a template system except that the in the former something that is arguably "data" is represented by code. 20:53
moritz PerlJam: the question is how easy it is to replace the template
spider-mario templates are more easily translated 20:54
moritz PerlJam: which is tied to the question whether something is data or code
PerlJam Easier to do in datafiles than in code IMHO
moritz aye
sorear moritz: You should have done it while I was awake, I would have backed you up
:) 20:55
PerlJam moritz: There are at least 3 people awake right now who would probably be okay with you shrugging off the universe and using a template system :-) 20:56
moritz well, it would have been helpful to get such feedback not only in hindsight 20:57
kboga Is it in nqp possible to get multiple return values from a function? (besides taking the Q:PIR route) 21:05
moritz isn't aware of a non-Q:PIR way, but that doesn't have to mean anything 21:06
kboga Hmm, I've tried eliminating the Q:PIR blocks in HLL/Grammar.pm but one was more resilient than the others :) 21:08
jnthn So, here's the line of CORE.setting that we now fail at:
(in altnfa)
has $.when = 'in Perl 6'; 21:09
[Coke] altnfa?
jnthn [Coke]: Making alternations do LTM properly
The reason this fails is...interesting :)
Ah, and we're not doing what STD does in terms of longest prefix handling 21:11
jnthn Anyways, it turns out when is a terminator, and ends with <.end_keyword>, which matched the space after the when, and thus it was a longer prefix than the normal variable declaration rule. 21:13
dalek kudo/altnfa: a9e6d32 | jonathan++ | src/Perl6/Grammar.pm:
Tweak some special variables to terminate LTM where STD does. Avoids mis-parses.
21:17
jnthn Now we almost get up to 11,000ish. 21:18
sorear spectests?
jnthn sorear: Line in CORE.setting 21:20
sorear: I'm havin' to fix the grammar up (or sometimes the grammar engine :)) now I've enabled | doing LTM semantics.
jnthn sorear: Which a bunch of the time has been looking at STD for the rules we fail on and adopting STDisms. Which is quite reassuring... 21:21
dalek kudo/altnfa: bdfffc6 | jonathan++ | src/Perl6/Grammar.pm:
Couple of term re-orderings since we're just getting off with the declaration order tie-break for the moment and...we now complete the build.
21:25
tadzik yay! 21:26
jnthn bah 21:27
But every spectest fails
===SORRY!===
Could not find v6 in any of: ...
jnthn oh, token version is full of "oh noes LTM violation" hacks... 21:28
dalek kudo/altnfa: f6dceba | jonathan++ | src/Perl6/Grammar.pm:
Fix token version so it wins in 'use v6'.
21:36
jnthn Gee, my laptop runs the spectests slow... No regressions anywhere in S02 though. 21:40
tadzik yeah, *your* laptop runs spectests slow... ;) 21:41
jnthn My laptop managed to BSOD twice within a presentation a few weeks back. It'd never done so before, and it's never done so since. However, the presentation it did it in not only had a $boss present, but also $boss from $big-client. 21:45
So within an hour of the presentation I had a "so, we need to buy you a new latop" mail :)
tadzik :) 21:46
jnthn Didn't take them up on it yet, though.
Hm. S05 is the first place some regressions show up. 3 tests files have issues. 21:47
WOW. 22:02
Those 3 S05 test files with regressions, along with 1 file in S32 (which may actually be due to missing changes) are the only regressions I have 22:03
Disclaimer: non-ICU build.
sorear Does buying new laptops actually make BSODs less frequent?
jnthn sorear: Highly unlikely. But shhh :P 22:04
oh, all three S05 regressions have the same underlying cause and it looks dead easy to fix... 22:07
grrr...it was meant to look tricky to fix so I'd go to bed like I should...
geekosaur sorear, only, I suspect, because it means a clean install and most BSODs seem to come from leftover garbage in the registry 22:08
sorear geekosaur: I wonder how that causation works... 22:11
spider-mario <jnthn> My laptop managed to BSOD twice within a presentation a few weeks back. It'd never done so before, and it's never done so since. However, the presentation it did it in not only had a $boss present, but also $boss from $big-client. 22:21
well, the more people there are watching you use your computer, the worse it will behave
spider-mario maybe computers are shy 22:21
dalek p/altnfa: 8cdbe8f | jonathan++ | src/QRegex/NFA.nqp:
Be careful not to call .nqpattr on things that doesn't support it. Fixes the three S05 regressions in altnfa in Rakudo.
22:24
jnthn moritz, tadzik, pmichaud: Testing of altnfa branches (need the NQP and Rakudo one) is very welcome. Particularly if you have ICU. A run of the-cheese-I-forgot-how-to-spell would also be interesting. :) 22:25
Sleep time, night o/
geekosaur one of the ways it works is that, the larger a given hive is, the longer it will be locked while programs query or modify it... but drivers also store their configuration in the registry, and if a hive is locked when a driver needs it Bad Things happen. (drivers should probably not be written such that they get into this situation, but not all driver authors seem to understand that) 22:34
at one point microsoft started vetting drivers before permitting them, but that was just too big a job for any one company, even Microsoft 22:35
sergot good night o/ 22:38
flussence that's a great explanation (and absolutely horrible) 22:51
[Coke] jnthn++ 22:59
geekosaur and that's just one of the thimgs that comes up. some things don't lock when they should, some have race conditions, some have time constraints, there are a lot of crappy coders in the world, and the registry code actually tries to work around all of this but as a hive gets bigger it gets harder and harder to compensate for lousy code 22:59
and many programs don't clean up after themselves, so the hives grow more than they need to 23:00
TimToady .o(why does this remind me of all the dotfiles in my hope directory...) 23:01
geekosaur (and then there are the programs that store their state in the wrong hive; a lot of stuff ends up in a system registry hive and thereby potential access conflict with drivers etc. when it really doesn't belong there. microsoft has tried to make this more difficult but had to relax it for backward compatibility with backward programs...) 23:02
indeed
win7 has been microsoft's best chance to date to say "screw it, we're breaking your crap programs so they stop breaking our OS"
TimToady, with one difference: imagine that, for some reason, Unix had to leave /etc world writable in the same way. individual files are secure, but any program can drop files in, including in subdirectories intended for exclusive use by system services 23:06
and Microsoft has been trying to change this for years (decades even) but keeps having to open things back up because some badly behaved program is perceived as being so important that ti must be allowed to work, no matter that it screws with things it has no business touching 23:08
geekosaur wonders how much of the big UI changes in win8 are intended to be a psychological "things change. NOW." aimed at the crap programmers who keep doing things they oughtn't 23:10
kboga phenny: tell jnthn The altnfa test output you requested (nqp test & rakudo spectest) with ICU: gist.github.com/2885393 23:33
phenny kboga: I'll pass that on when jnthn is around.