»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by moderator on 7 October 2009.
jnthn rakudo: say " ( no ouptput )" 00:01
p6eval rakudo f99cc4: ( no output )
pugs_svn r28704 | lwall++ | [viv] do similarly with postcircumfix and dotty 00:02
jnthn \\o/ # wow p6eval has spell checker!
moritz_ rakudo: say 1
p6eval rakudo f99cc4: ( no output )
jnthn ...oops.
moritz_ I was wondering why the NL was missing from yours
it segfaults during build 00:03
jnthn heh heh
...during build?!
That's...ouch.
moritz_: Where in the build?
moritz_ rather late... but I didn't look closure, instead started a rebuild ;-) 00:04
/home/p6eval//p2/bin/parrot -o perl6_s1.pbc perl6.pir 00:06
make: *** [perl6_s1.pbc] Segmentation fault
jnthn Oh, Parrot SEGV just on compiling? 00:07
Damm.
oh, hmm...I committed...
-41447 00:08
+41772
So I did dump Parrot rev.
Didn't actually need it for this commit, but instead for forthcoming one.
moritz_ I have no idea how clean or unclean the parrot dir on that server is 00:09
jnthn Maybe worth cleaning that up before we panic. :-) 00:10
moritz_ aye 00:11
oh, did somebody fix the parallel build? 00:12
00:12 lumi joined
jnthn moritz_: I tweaked the makefile a little today. 00:13
moritz_: Added one missing dep I'd forgotten before. 00:14
That may have done it.
moritz_ ok, on two of the hosts the build was successful 00:15
now waiting for the p6eval one ;-)
rakudo: say 2 00:18
p6eval rakudo 3a4d14: OUTPUT«2␤»
moritz_ much better ;-)
jnthn \\o/
rakudo: sub foo(::T $x) { }; say &foo.signature.perl 00:19
p6eval rakudo 3a4d14: OUTPUT«:(Any ::T $x)␤»
jnthn \\o/
moritz_ \\o/ indeed
jnthn Now we just need the default closure in there
And then the sig objects probably have everything the new binder will need.
Well, apart from nested signatures.
There's a slut for those. 00:20
But we're not parsing 'em yet.
moritz_ rakudo: sub foo(::T Int $x where { $x % 2 } ) { }; say &foo.signature.perl
p6eval rakudo 3a4d14: OUTPUT«Multiple prefix constraints not yet supported at line 2, near ") { }; say"␤in Main (src/gen_setting.pm:1161)␤»
moritz_ did you mean "slot"?
jnthn didn't I type...oh...wow...ouch
moritz_ :)
jnthn That code should parse - I copied STD though. ;-) 00:21
STD got fixed for that only a day or two ago.
moritz_ rakudo: say 3 !% 2
p6eval rakudo 3a4d14: OUTPUT«0␤»
moritz_ rakudo: say 4 !% 2 00:22
p6eval rakudo 3a4d14: OUTPUT«1␤»
00:25 lumi joined
moritz_ jnthn: is .constraints supposed to be implemented? 00:25
jnthn rakudo: sub foo($x) { }; say &foo.signature.params.constraints 00:27
p6eval rakudo 3a4d14: OUTPUT«Method 'constraints' not found for invocant of class 'List'␤in Main (src/gen_setting.pm:204)␤» 00:28
jnthn rakudo: sub foo($x) { }; say &foo.signature.params[0].constraints
p6eval rakudo 3a4d14: OUTPUT«Use of uninitialized value␤␤»
jnthn rakudo: sub foo($x where 1) { }; say &foo.signature.params[0].constraints
p6eval rakudo 3a4d14: OUTPUT«Use of uninitialized value␤␤»
jnthn hmm
That second one is more unexpected.
Yes, I think it's meant to be.
00:28 SmokeMachine joined
jnthn Maybe bug. 00:28
Or something else odd. 00:29
pugs_svn r28705 | moritz++ | [t/spec] .constraints tests
00:30 NorwayGeek joined
pugs_svn r28706 | moritz++ | [t/spec] non-closure constraints 00:30
00:31 payload joined
moritz_ rakudo: sub h(::T $x, T $y) { }; 00:31
p6eval rakudo 3a4d14: ( no output )
moritz_ rakudo: sub h(::T $x, T $y) { }; say &h.signature.params[1].type.perl 00:32
p6eval rakudo 3a4d14: OUTPUT«Any␤»
moritz_ not quite what I expected, but then I don't know what else it could have returned
rakudo: sub h(::T $x, T $y) { }; say &h.signature.params[0].type_capture.perl 00:33
p6eval rakudo 3a4d14: OUTPUT«Method 'type_capture' not found for invocant of class 'Parameter'␤in Main (src/gen_setting.pm:204)␤»
moritz_ rakudo: sub h(::T $x, T $y) { }; say &h.signature.params[0].type_captures.perl
p6eval rakudo 3a4d14: OUTPUT«["T"]␤»
jnthn moritz_: It transforms that lookup into a constraint. 00:34
moritz_: For the moment, anyway.
pugs_svn r28707 | moritz++ | [t/spec] type_captures
jnthn moritz_: So :(::T $x, T $y) is kinda more like :(::T $x, $y where T) 00:35
moritz_ is it also supposed to be that way?
jnthn I'm really not too sure.
moritz_ I mean it does make a difference for narrowness
jnthn Well, that's an interesting problem.
Remember narrowness matters when we're sorting the candidates.
And that sorting is independent of any particular call. 00:36
So we don't know that T will be when we do the sort.
00:36 rgrau` joined
jnthn So we'd have to assume Any in the above case. 00:37
At sort time.
moritz_ so :(Any, Int) wins against :(::T, T) when called with (1, 2)
jnthn Right.
moritz_ that's fair if you document it, IMHO
jnthn Well, the thing is
:(Any, Int) wins against :(::T, T)
That's *it*. 00:38
Well
If the first can bind of course.
But the sorting - which is call-independent - sees the first sorted before the second.
pugs_svn r28708 | lwall++ | [viv] more strange operator type cleanup, fake infixes, regex_infix, etc. 00:40
jnthn The perhaps nice thing is that :(T, ::T) sorts narrower than :(Any, Any)
Because the constraint makes it narrower.
Which I think is what you want.
moritz_ aye 00:41
00:42 lumi joined
jnthn It's certainly a topic I've pondered quite a bit too, though. 00:43
"is treating it as a constraint really OK"
TimToady would :(Int ::T $x, T $y) be tighter than that?
jnthn TimToady: :(Int ::T $x, T $y) would be tighter than :(T, ::T), yes 00:44
moritz_ I'd expect that to turn into :(Int $x, Int $y where T)
sjohnson Tene: on your slurp function you wrote for me a few months ago, do i need to close the $fh handler you wrote?
>> sub slurp { my $name = shift; open my $fh, '<', $name; local $/; <$fh> }
jnthn moritz_: Actually only (ATM) :(Int ::T $x, $y where T)...hmm
Tene sjohnson: no, because you're using a lexical filehandle.
sjohnson: so it's automatically closed at the end of the scope.
jnthn TimToady: OOps, I meant :(::T, T) above 00:45
moritz_: Though there's a decent argument for what you suggest.
sjohnson Tene: thanks
( `ー´)
moritz_ jnthn: if that's implementable without a major refactor of the dispatcher, that'd be a great compromise 00:47
dalek kudo: 1b83557 | moritz++ | t/spectest.data:
we pass t/spec/S06-signature/introspection.t, jnthn++
moritz_ maximal DWIM but preserving pre-sortability
jnthn moritz_: Well, it's not even a dispatcher issue.
moritz_: It's more a signature construction one.
moritz_ right
jnthn So in many senses, it's kinda easy. :-) 00:48
moritz_ \\o/
jnthn I agree it's a good balance.
moritz_ I'll sneak it in as a TODO test ;-) 00:49
TimToady we just have to say that an en passant type also captures the nominal type
jnthn TimToady: ...in English? ;-)
TimToady en passant is English, as of 1070 00:50
er, 1066
jnthn :-P
moritz_ ;-)
"in passing"
playing chess now and then helps you understand what "en passant" means ;-)
jnthn TimToady: The proposal here is that :(Int ::T $x, T $y), which currently gets transformed to :(Int ::T $x, $y where T) would instead become :(Int ::T $x, Int $y where T) 00:51
TimToady seems right
jnthn TimToady: In other words, it's just shoving along as much as we statically can know about the nominal type.
TimToady what about :(Int ::T $x where *.odd, T $y)? 00:52
moritz_ would be turned into ... Int $y where T & *.odd 00:53
I suppose
jnthn TimToady: Since ::T captures the nominal type, and has no relation to the constraint, I'd not really expect to distribute the constraint from the first parameter too.
moritz_ so here our expectations diverge
jnthn Well, but then things like :(Odd ::T $x) gets fun 00:54
moritz_ but what jnthn says makes sense, also
jnthn Assuming a subset Odd of Int where ...
pmichaud I'm not sure I agree with the transformation
jnthn Because signature construction picks that apart into a nominal type of Int and a constraint.
TimToady that seems to argue for carrying wheres over
00:54 stephenlb joined
jnthn TimToady: Yeah, it can be argued both ways. :-) 00:55
TimToady indeed, what if you want ::T to be *only* the nominal type
and appy a different constraint?
jnthn TimToady: Well, ::T *is* only the nominal type. 00:56
TimToady :(Odd ::T $x, T where Even)
until a tighter type is bound
then it's actual type 00:57
jnthn rakudo: subset Even of Int where { $^n % 2 == 0 }; sub foo(::T $x) { say T.WHAT }; my Even $x = 42; foo($x)
p6eval rakudo 1b8355: OUTPUT«Int()␤»
jnthn TimToady: Well, thingy is...we've been talking so far about this as nothing more than signature syntax sugar.
TimToady s/tighter/derived/
jnthn Rather than analysing relations between the types. 00:58
TimToady en passant is supposed to mean the actual type of the argument
suppose you derive MyInt from Int
if you pass in a MyInt, T is MyInt, not Int
jnthn TimToady: It's whatever .WHAT on the arguemnt hands back. 00:59
TimToady: Oh, for sure, I agree.
TimToady but you said it was only the nominal type, which that ain't
jnthn TimToady: We really need to define some terms somewhere for what we call things. :-) 01:00
TimToady if you say :(Int ::T $x, T $y), then the nominal type is Int, but actual is MyInt
jnthn Nominal is a really bad word for what I want to express here really. I wish we had a better one.
TimToady nominal isn't bad at all if you're thinking about "name equiv" vs "structural equiv" 01:01
jnthn TimToady: Yes, but in :(Int ::T $x, T $y) then I see T as being bound to $x.WHAT
Which I'd say is the nominal type of $x
Well, assuming we found $x already of course. 01:02
TimToady that's the storage type
jnthn heh :-)
TimToady no, $x's storage type may have no name at all
jnthn Right, thus why we need to sort out the terminology on types. :-)
TimToady a storage type is what the subset type is actually stored as
the WHAT type
jnthn I probably when I say "nominal" so often maybe what to actually say "storage type" 01:03
TimToady but that's not what I've been calling nominal type at all
I only mean the declared type in the sig
jnthn Ah, OK.
I think we're meaning the same thing and using different words. :-)
moritz_ rakudo: multi a(::T $x, T $y) { 1 }; multi a($x, $y) { 2 }; say a([], {})
p6eval rakudo 1b8355: OUTPUT«2␤»
jnthn So, ::T captures the storage type? 01:05
Is that fitting with how you'd describe it?
TimToady yes
jnthn OK.
I can accept that way of calling things. :-)
TimToady we already know the nominal type, so no need to capture it
jnthn I've been using nominal type in far wider sense than you. 01:06
Or differently, at least.
TimToady $x.WHAT can very easily give you a nameless type
jnthn Yes. Nominal is a bad word for the thingy I wanted to express.
TimToady not much nominal about that
jnthn Indeed.
It'd probably be worth trying to document our terms for this stuff a bit more somewhere. 01:07
TimToady but fine for the declared type, as in the meaning of nominal: "that which we assume"
as in "Larry is nominally a linguist" :) 01:08
jnthn ;-)
OK, I think we're agreeing. Or at least, agreeing more than disagreeing. :-) 01:09
01:09 lumi joined
moritz_ now if you want to make me happy, put the intersection of your agreeing into the spec somewhere ;-) 01:10
jnthn points at TimToady: he's in a far better timezone for being coherent than me ;-) 01:11
moritz_ speaking of timezones... it's 3AM, I should try to get some sleep too 01:14
TTFN
jnthn aye, 3am here too...I should perhaps do similar :-) 01:15
01:17 orafu joined 01:20 rhr_ joined 01:26 M_o_C joined
pugs_svn r28709 | lwall++ | [S06] 01:42
r28709 | document both nominal and storage aspects of ::T capture
r28709 | clarify that T does not require an exact match
r28709 | rename section to En passant type capture
02:15 TiMBuS joined 02:35 JimmyZ joined 02:55 envi^home joined 03:15 lumi joined 03:18 rhr joined 03:22 TiMBuS joined
pugs_svn r28710 | lwall++ | [Cursor] switch back to YAML::XS because Syck can't load STD.pm.syml 03:31
diakopter o_O 03:34
TimToady why t/spec/S05-grammar/std.t was coredumping 03:35
sorry if you have to download XS 03:36
XS is a bit faster, actually
diakopter viv already used ::XS 03:37
TimToady hah
maybe that's why cursor could load using Syck :)
well, probably not
diakopter runs make again 2C what he canC 03:38
TimToady make clean
diakopter k
./tryfile STD.pm took about 4% less time than r28709 03:42
within the error margin for linux64 in vmware on win64
how would one run a nytprof on ./tryfile STD.pm 03:43
(to get the .html results you pasted awhile back) 03:44
(is there a switch somewhere)
03:44 agentzh joined
TimToady perl -d:NYTProf tryfile STD.pm, I think 03:45
diakopter builds perl-devel-nytprof from svn trunk 03:47
JSON::Any depends on JSON::DWIW, but it doesn't say it does. 03:51
er something. 03:54
pugs_svn r28711 | kyle++ | [t/spec] Tests for "note" based on "say" tests 03:55
r28712 | kyle++ | [t/spec] more testing of bare say
03:57 davidm123 joined
davidm123 is there a robust implementation of perl6 sigils in perl5? (not some source filtering hack) 03:58
TimToady I don 03:59
I don't know of any such
it would be difficult to bypass the lexer without a source filter
that's one of the reasons Perl 6 does it differently :) 04:00
davidm123 the peculiarities of perl5 sigils have been known for many years. 04:01
one might think there were some bandaid (not that we need to wait a decade for perl6 :) )
TimToady alas, we brainwashed people too thoroughly about the righteousness of Perl 5's sigil system
unfortunately, to change the sigils, you have to change how the slices work, and when you do that, there are ramifications on how context must be applied lazily rather than eagerly 04:03
diakopter continues to wait for nytprof tryfile std 04:08
go go gadget cpu fan 04:09
hrm. 400MiB nytprof.out 04:11
04:12 am0c joined 04:14 sparc joined
diakopter methinks for the next attempt I'll export NYTPROF=stmts=0 04:15
TimToady the stmts are the cool part
diakopter ok 08:27 367m - 644785257 2009-10-06 03:51 nytprof.out 04:16
erm. time must be off.
well, not _time_, but the vm's clock. :) 04:17
phenny: where'd you go 04:18
Profile of tryfile for 519s, executing 50114444 statements and 7876888 subroutine calls in 120 source files and 923 string evals. 04:19
only 923? 04:20
how did 44947 calls to Cursor::_STARr take -424s 04:22
(exclusive)
TimToady bbl & 04:24
04:26 KyleHa joined
KyleHa A grep for 'quietly' in the spec turns up exactly one line. It's a list with 'try' and 'void' and stuff. It was added at the same time as 'note'. Does it suppress $*ERR or something? 04:28
04:34 alester joined 04:42 jrtayloriv joined 04:44 araujo joined 04:46 payload joined 04:47 am0c joined 04:48 cotto joined
JimmyZ rakudo: List.HOW.parents(List).perl.say; 05:00
p6eval rakudo 1b8355: OUTPUT«[Any, Object]␤»
05:17 perler joined 05:18 jrtayloriv joined 05:51 eternaleye joined 05:59 sbp joined 06:00 nsh joined 06:08 [particle] joined 06:09 infrared joined 06:10 xinming joined, Grrrr joined 06:12 simcop2387 joined 06:15 rapacity joined, synth joined, yahooooo joined 06:16 pugs_svn joined 06:18 athomason joined, colomon joined 06:21 takadonet joined 06:22 sjohnson joined 06:23 zerhash joined 06:24 arthur-_ joined, buubot joined 06:34 gbacon joined
pugs_svn r28713 | lwall++ | [viv] unbitrot -6 roundtripping; also unbitrot some -5 functionality 06:38
06:57 tak11 joined 07:03 [particle]1 joined 07:14 tak11 joined 07:19 zloyrusskiy joined 07:21 tak` joined 07:32 am0c joined 07:44 [particle]1 left 07:47 rfordinal joined 07:51 Bzek joined 08:17 JimmyZ_ joined 08:37 eiro joined, BinGOs joined 08:50 rfordinal left 09:05 ShaneC joined 09:23 phenny joined
mikehh rakudo (1b83557) builds on parrot r41789 make test / make spectest_smolder (up to 28713 -> #28801) PASS - Ubuntu 9.04 amd64 09:42
09:46 zloyrusskiy joined 09:59 pmurias joined 10:05 meppl joined
mikehh holy ... rakudo spectest_smolder reports tests as 35,121 ok, 0 failed, 520 todo, 6,851 skipped and 0 unexpectedly succeeded 10:06
10:07 abra joined, payload joined, synth joined
carlin almost 7000 skipped? 10:10
10:11 pmurias_ joined 10:16 icwiener joined
pmurias perl6: my @array = [];@array[1] = 23;@array[500] = 4;say @array.elems; 10:16
p6eval sprixel 28713: OUTPUT«Sprixel Error: /_infix__S_Equal_/ not yet implemented; apologies from the crew!␤» 10:17
..elf 28713, pugs, rakudo 1b8355: OUTPUT«501␤»
pmurias S32/Containers.pod mentions that in sparse types elems should return the actuall number of elems, why should the user know about an implementation default? 10:18
moritz_ pmurias: I think "sparse types" are things like hashes 10:19
pmurias Sparse array types 10:20
moritz_ hm 10:22
my @a is SparseArray; ?
pmurias not specced 10:23
moritz_ aye
pmurias what should it change? how elems works? how map works?
moritz_ but it would only make sense in that context
that's an interesting question
I only know sparse vectors and matrices from linear algebra packages 10:24
if you map over one, it wouldn't make sense to iterate over all the missing items
so it would have to indicate which element is currently being processed
so maybe it'd just passin a pair of index => value to the map closure? 10:25
pmurias you mean in SparseArray map would work differently (get an additional index)? 10:27
moritz_ yes
but I think that's not something you worry about when implementing the classical Array type
pmurias wouldn't it be best to just move SparseArray to CPAN and delete the mention?
moritz_ +1 10:28
so feel free ;-)
fglock++ btw 10:29
pugs_svn r28714 | pmurias++ | [mildew-js] t/01-sanity/05-sub.t passes 10:32
r28715 | pmurias++ | remove mention of sparse arrays from S32
pmurias bjj& 10:33
moritz_ perlgeek.de/blog-en/misc/fun-and-no...h-svg.html # for the SVG fans - not quite Perl 6 though :) 10:36
spinclad rakudo: my @s is SparseArray; for @s.kv -> $k, $v { ... } 10:44
p6eval rakudo 1b8355: OUTPUT«No applicable candidates found to dispatch to for 'trait_mod:is'␤in Main (src/gen_setting.pm:204)␤»
10:45 envi^home joined 10:46 envi^home joined
spinclad i don't think map or for should work differently (for @s { ... } would iterate densely), as .kv should already be available to display sparseness. 10:47
moritz_ that's a decision best left to the one who implements it as a module ;-)
spinclad sure 10:48
but i'd design it on those principles
moritz_ well, .map could also do evil magic
like, assume the block is pure
and the result for a missing element 10:49
spinclad ... so @sparse.map would give another sparsearray. yeah, i could see that. 10:53
(in which case i don't yet see why the block would have to know which element.) 10:54
10:56 sundar joined 10:58 meteorjay joined 11:03 abra joined 11:04 FOAD_ joined 11:09 masak joined
masak best weekend salutations, #perl6! 11:10
finally the work week is over, and the real coding begins!
11:12 abra joined 11:26 ferodo joined 11:29 ferodo left 11:31 araujo joined 11:35 huf joined 11:38 abra joined
masak "Complexity is never eliminated, merely reduced or displaced" -- slide 124 of www.slideshare.net/cxpartners/secre...simplicity -- sound familiar? :) 11:38
11:39 abra joined
masak moritz_: (re SVG animations) I find www.codedread.com/yastgame.php to be quite an impressive proof-of-concept. seems much can be done today with SVG and judicious JavaSCript. 11:45
11:51 NorwayGeek joined
jnthn masak: heh, sounds like the waterbed theory of... :-) 11:53
masak indeed.
11:53 NorwayGeek joined 11:56 NorwayGeek joined
jnthn is probably caught up on sleep now 11:56
11:58 ejs joined, NorwayGeek joined
masak jnthn: welcome back! it's so amazing to be part of Rakudo development right now -- even more so now that you're back and doing commits. :) 11:59
sjohnson hey man 12:00
12:00 NorwayGeek joined
jnthn masak: I enjoyed my trip, but it is nice to be back and hacking on stuff again. 12:00
masak sjohnson: yo frood. 12:01
moritz_ masak: \\o/ cool site. But I was actually referring to SVG animations without JS 12:02
www.w3.org/TR/SVG/animate.html
12:03 KyleHa joined
jnthn masak: It's exciting that at the same time both regex/parsing issues and signature binding issues are being worked on - two of the biggest tasks that need doing before Rakudo *. :-) 12:04
jnthn feels like hacking on more Rakudo stuff today 12:05
masak moritz_: I know. but JS is a workaround.
moritz_ just like in the days of Netscape and Mosaic ;-) 12:10
masak except it's on different levels of sophistication. 12:11
jnthn Yeah, now it's three or four browsers instead of 2 that you have to worry about. ;) 12:12
Only two possibilities was so 1990s, man.
moritz_ doing websites just for fun means that I can ignore those pesky not-quite-browsers which refuse to render according to standards 12:13
cosimo moritz_: which ones? 12:17
moritz_ IE\\d for some values of \\d
jnthn I actually have some clients where they consider the cost of supporting IE6 higher than the revenue supporting it would bring in. 12:19
jnthn loves having a business case for not supporting IE6.
On the other hand, there are others where systems are still used by many in the corporate world, many of whom are stuck with IE6, so it has to be supported.
moritz_ some big sites (not sure which ones... digg? youtube?) are slowly dropping IE6 support
jnthn *nod* 12:20
I'm not surprised. They're businesses too.
And need to make moneys.
In general, it goes "don't do anything to purposefully break IE6, but don't worry about any bugs too much either"
12:23 JimmyZ joined
moritz_ my homepage still has 0.5% access with IE 4 *gulp* 12:27
don't know how many of these referrers are forged, though 12:28
12:30 NorwayGeek joined
jnthn 4?! 12:31
moritz_ 4 12:32
pugs_svn r28716 | jimmy++ | [zh-cn/syn/S02-bits.pod] added a bit random translations.
masak I'm seeing false positive "Redeclaration of variable $pub" errors in some moderately complex code I'm toying with. I haven't had time to isolate the cause, but I'm pretty sure it's a rakudobug. 12:35
jnthn Oddness.
But quite possibly.
masak: Does std warn in the same way? 12:36
If not, I expect we'll inherit a fix during switching more to that.
moritz_ now you're starting with pubs too?
masak moritz_: I did it to make you happy!
didn't want to use $foo or something.
moritz_ :-)
jnthn $pub! \\o/
JimmyZ spectest-progress.csv hadn't been updated for some days. 12:37
masak jnthn: sure, but I have my Rakudo user hat on. I prefer to see this bug classified and reported in RT, regardless of its possible fate in the near future.
JimmyZ: I think pmichaud has too much fun with his nqp-rx repo :)
er, too much fun to care about administrivia, not too much fun in general. 12:38
jnthn masak: Oh, I wasn't advocating not reporting it, just speculating on how it might get fixed. :-) 12:39
JimmyZ masak: ;)
masak jnthn: since it has no adverse effects, there's no rush. better to fix the postcircumfix:<{ }> parsin issue, for example. :) 12:40
s/sin/sing/
jnthn We have a postcircumfix parsing issue? 12:41
masak oh, yes.
two, actually. but the second one is run-time, not parsing. 12:42
the parsing issue causes Rakudo to be confused whenever it sees a line-ending closing block curly without a semicolon, as soon as someone declares a method postcircumfix:<{ }>. 12:43
the run-time issue prevents direct use of .{} inside a postcircumfix:<{ }> method. ditto .[] and postcircumfix:<[ ]>.
JimmyZ this issue? I think I had met it. 12:44
masak the second one is workaroundable. I've been meaning to write that in the ticket. 12:45
just do the inner hash or array access in another class.
jnthn masak: oh, ouch 12:46
I think I know how to fix the runtime one
masak the first one is... highly... annoying. things that used to work suddenly stop working when a postcircumfix:<{ }> is introduced.
jnthn The parsing one is, I'm afraid, rather more confusing...
But then, I'm not the parsing whizz.
masak neither
JimmyZ rakudo: class Alpha { has @!a = < beta gamma >; method postcircumfix:<[ ]>($key) { return @!a[$key]; }; }; my $a = Alpha.new; say $a[1]; 12:47
p6eval rakudo 1b8355: OUTPUT«No such attribute '@!a'␤in Main (src/gen_setting.pm:204)␤»
JimmyZ rakudo: class Alpha { has @!a = < beta gamma >; method postcircumfix:<{ }>($key) { return @!a[$key]; }; }; my $a = Alpha.new; say $a{1};
p6eval rakudo 1b8355: OUTPUT«gamma␤»
masak aye, that's the one. 12:48
accesses of the same type as the one the method is declaring don't work.
JimmyZ the parser was confused.
masak well, something was. :) 12:49
the 'No such attribute @!a" comes from the fact that the method makes a _second_ call to itself, with the @!a array as invocant. Naturally, it has no @!a. 12:50
jnthn oh, youch. 12:51
And yes, I think I know how to fix that one.
But I'm currently in the middle of giving signautre objects storage for default value closures and stubbing in storage of sub-signatures.
masak jnthn++ 12:52
no rush.
JimmyZ jnthn++ again.
jnthn After those are done, I think signature objects will have everything the binder could possibly want to know.
masak JimmyZ: how's the translation work going? 12:53
JimmyZ I had somebody else on the working team. Do I describe it rightly ? 12:54
jnthn had or have? :-) 12:55
moritz_ rakudo: say ~{ a=>3 b=>10 c=>4 d=>-7>}.sort: -*.value
p6eval rakudo 1b8355: OUTPUT«Confused at line 2, near "b=>10 c=>4"␤in Main (src/gen_setting.pm:204)␤»
masak JimmyZ: you reqcruited a co-worker?
moritz_ rakudo: say ~{ a=>3 b=>10 c=>4 d=>-7>}.sort: *.value
masak s/q//
p6eval rakudo 1b8355: OUTPUT«Confused at line 2, near "b=>10 c=>4"␤in Main (src/gen_setting.pm:204)␤»
JimmyZ masak: yep
moritz_ rakudo: say ~{ a=>3 b=>10 c=>4 d=>-7}.sort: *.value
p6eval rakudo 1b8355: OUTPUT«Confused at line 2, near "b=>10 c=>4"␤in Main (src/gen_setting.pm:204)␤»
moritz_ rakudo: say ~{ a=>3, b=>10, c=>4, d=>-7}.sort: *.value
masak JimmyZ: or should I say 翻译工作怎么样? :)
jnthn std: say ~{ a=>3 b=>10 c=>4 d=>-7}.sort: *.value
p6eval rakudo 1b8355: OUTPUT«d -7 a 3 c 4 b 10␤»
std 28716: OUTPUT«[31m===[0mSORRY![31m===[0m␤Two terms in a row at /tmp/2ehl3pCybl line 1:␤------> [32msay ~{ a=>3 [33m⏏[31mb=>10 c=>4 d=>-7}.sort: *.value[0m␤ expecting any of:␤ bracketed infix␤ infix stopper␤ standard stopper␤ statement modifier loop␤ terminator␤FAILED 00:01
..110m␤»
masak moritz_: commas.
12:55 KyleHa joined
JimmyZ masak: good ;) 12:55
moritz_ rakudo: say ~{ a=>3, b=>10, c=>4, d=>-7}.sort: -*.value
p6eval rakudo 1b8355: OUTPUT«get_number() not implemented in class 'Sub'␤in Main (src/gen_setting.pm:204)␤»
moritz_ masak: aye
rakudo: say *.value.perl 12:56
JimmyZ masak: a better one. 翻译工作做的怎么样了。
p6eval rakudo 1b8355: OUTPUT«{ ... }␤»
moritz_ rakudo: say *.value.WHAT
p6eval rakudo 1b8355: OUTPUT«Block()␤»
moritz_ that should be a WhateverCode
which explains why -*.value doesn't work
masak JimmyZ: ah. thanks.
JimmyZ: 了 because the work is ongoing?
JimmyZ masak: yep 12:57
masak \\o/
jnthn (paradise lost)++ # nice sig hacking music 13:00
masak today's spec test results are in: PASS. good work, people. 13:01
13:02 abra_ joined
jnthn phew 13:02
masak: Don't worry, I'll probably fail at linker usage and break the build on some platform today. :-/
Actually, maybe I'll do that in a branch. :-)
moritz_ (easy branching)++ 13:03
git++
masak the reason I'm not complaining more about the lack of useful line numbers in Rakudo error messages, is that by now, I'm used to it. 13:04
seems we had useful line numbers for a while, but not long enough for me to get used to that. :P
jnthn So you get un-useful ones now? :-/ 13:05
masak well, I get files that aren't mine and numbers that don't make sense.
13:06 abra_ joined
jnthn ah, that 13:06
moritz_ at gen_setting.pm:1192 or so
13:06 JimmyZ joined
jnthn nod 13:06
moritz_ and there's nothing interesting at that line either ;-)
just a closing curly bracket or so
masak actually, I've been getting lower line numbers lately. 204 or so.
moritz_ wonders if they'll become negative eventually :-) 13:07
colomon Did Rakudo stop returning line numbers for errors in ordinary code somewhere along the line as well? 13:08
moritz_ rakudo: die 'foo'
13:08 abra_ joined
p6eval rakudo 1b8355: OUTPUT«foo␤in Main (/tmp/TRISBPtRJn:0)␤» 13:08
moritz_ wow, line 0
*that* used to work.
colomon Looking at my hacking last night, it seems like the error messages are much better, but lack line numbers.
jnthn Ouch. 13:09
jnthn suspects some Parrot change. :-/
moritz_ typical for things we don't test. 13:11
jnthn Yeahbut we do have some tests for annotations stuff in Parrot at least. 13:12
moritz_ jnthn: how much work would it be to change format from (%s:%d) to (file %s, line %d)?
jnthn Evidently, not good enough ones.
13:12 NorwayGeek joined
jnthn moritz_: little, but motivation? 13:12
moritz_ it currently looks like noise
and I notice that even in perl 5, many newbies ignore the line numbers, even if they contain valuable information 13:13
KyleHa rakudo: say()
p6eval rakudo 1b8355: OUTPUT«say requires an argument at line 2, near ""␤in Main (src/gen_setting.pm:2555)␤»
moritz_ and not explicitly stating that it's a line number will only increase that
JimmyZ rakudo: say 'foo'
moritz_ KyleHa: parse errors still seem to have correct line numbers
p6eval rakudo 1b8355: OUTPUT«foo␤»
JimmyZ rakudo: exit 'foo'
p6eval rakudo 1b8355: ( no output )
jnthn moritz_: Feel free to tweak it. 13:14
moritz_: It's in perl6.pir, there's a sub I think for generating the output.
Light PIR hacking required. :-)
KyleHa Is 'say()' actually an error? 13:15
13:15 rfordinal joined, NorwayGeek joined
jnthn KyleHa: aye 13:15
KyleHa rakudo: say ()
jnthn std: say()
p6eval rakudo 1b8355: OUTPUT«␤» 13:16
std 28716: OUTPUT«ok 00:01 103m␤»
jnthn but not one that std catches.
KyleHa std: say ()
p6eval std 28716: OUTPUT«ok 00:01 106m␤»
jnthn KyleHa: say() and say () are different things.
KyleHa jnthn: Guess so. I'll adjust my tests...
colomon rakudo: say;
jnthn :-)
p6eval rakudo 1b8355: OUTPUT«say requires an argument at line 2, near ";"␤in Main (src/gen_setting.pm:2538)␤»
jnthn moritz_: Oh, I found the constraints introspection bug, btw 13:17
moritz_ \\o/
colomon Is there some good reason we shouldn't support say with no arguments?
moritz_ colomon: perl 5 hackers who think it defaults to $_
jnthn moritz_: I'd typo'd the named parameter when calling the constructor. :-S
colomon moritz_: ..... aye, that's a good reason.
moritz_ colomon: I sometimes find that annoying, and want a 'no perl5_compat;' pragma ;-) 13:18
JimmyZ I just want print "\\n",can't I just use 'say'?
moritz_ JimmyZ: that's what we've just discussed.
colomon well sure, it seems like a horrible kludge to have this elegant say command that replaces print "\\n" in every case except the simplest. 13:19
JimmyZ rakudo: print "\\n";
p6eval rakudo 1b8355: OUTPUT«␤»
13:19 NorwayGeek joined
carlin rakudo: say ''; 13:19
p6eval rakudo 1b8355: OUTPUT«␤»
jnthn rakudo: sub nl() { print "\\n" }; nl
;-)
p6eval rakudo 1b8355: OUTPUT«␤»
pugs_svn r28717 | kyle++ | [t/spec] say() really is an error 13:20
r28718 | kyle++ | [t/spec] much faster test of the same thing 13:22
13:24 ruoso joined
jnthn masak: oh ouch, I found a snag in fixing that postcircumfix bug...it's not quite so easy after all :-/ 13:28
moritz_ pmichaud had an analysis of that bug a few days ago
masak jnthn: don't let yourself get distracted by my ranting. it's not urgent anyway. 13:29
moritz_ irclog.perlgeek.de/perl6/2009-10-05#i_1570424 and onwards
masak: if you remeber the ticket number, maybe you could add that IRC log link to the ticket
masak moritz_: good idea. I will. 13:30
I'll also add my workaround.
rakudo: my %h = a => "b"; my @a = {%h}; say @a.perl 13:31
p6eval rakudo 1b8355: OUTPUT«[{ ... }]␤»
masak by S04:1324, this should be a hash, not a closure.
is this known/ticketed?
jnthn masak: Yeah, I'm gonna leave it.
masak: What I was going to do is a bit of a workaround anyway, though not a really awful one. 13:32
moritz_ masak: it's tested at least
jnthn But it tickles another issue, so needs a tad more thought.
masak moritz_: oki.
jnthn masak: That one should be a hash? ah.
Just means tweaking the thingummy that decides. :) 13:33
It'll be an issue somewhere in method circumfix($/, $key) { 13:34
oh, I think I see what's wrong 13:35
rakudo: my %h = a => "b"; my @a = {%h, a => 42}; say @a.perl
p6eval rakudo 1b8355: OUTPUT«[{"a" => 42}]␤»
jnthn *nod*
And you're sure by the spec {%h} is meant to be a hash, yes?
moritz_ yes 13:37
the spec has that as an example explicitly
$hash = { %stuff };
jnthn Try this patch 13:38
gist.github.com/206842
Bwaha. So env.t has failed on my platform for a little while...probably some weird Parrot and Win32 issue. Anyway, I just glanced the error message. :-) 13:40
t\\spec\\S02-magicals\\env...................................ok 8/14Failed allocation of 1919968627 bytes 13:41
Parrot VM: PANIC: Out of mem!
13:44 synth joined 13:49 icwiener_ joined
moritz_ it tries to allocate 1.8G at once? :-) 13:49
jnthn yeah! 13:51
OK, when I came back from vacation, Rakudo + the version of Parrot we were using then took 1.06s to start and say hello world. Rakudo today with just about latest Parrot is down to 0.79 for me. 13:52
moritz_ cool
jnthn Which is still way too much, but a decided improvement. 13:53
yay 13:56
t\\spec\\S06-signature\\introspection........................ok 5/39 skipped: various reasons, 2/39 unexpectedly succeeded
TODO PASSED tests 33, 36
I'm guessing thow are the constraitns ones.
14:02 icwiener-_- joined
carlin rakudo: my $i = 0; loop { $i++; if $i == 5 { break; } if $i < 10 { die ''; } }; say 'Foo'; 14:14
p6eval rakudo 1b8355: OUTPUT«Died␤in Main (/tmp/nqspaAZxaQ:2)␤»
carlin rakudo: my $i = 0; loop { $i++; if $i == 5 { break; } if $i > 10 { die ''; } }; say 'Foo';
p6eval rakudo 1b8355: OUTPUT«␤Died␤in Main (/tmp/EPevxgOixK:2)␤»
carlin rakudo: say break.WHAT; 14:15
p6eval rakudo 1b8355: OUTPUT«␤Null PMC access in find_method()␤in Main (src/gen_setting.pm:204)␤»
14:16 Psyche^ joined
colomon carlin: isn't it "last" rather than break? 14:17
carlin rakudo: my $i = 0; loop { $i++; if $i == 5 { last; } if $i > 10 { die ''; } }; say 'Foo'; 14:18
p6eval rakudo 1b8355: OUTPUT«Foo␤»
carlin Ah
I was trying to figure out what 'break' was. Seems to just print a newline.
rakudo: break
p6eval rakudo 1b8355: OUTPUT«␤»
14:20 tak11 joined 14:26 justatheory joined
dalek kudo: bd7966f | jonathan++ | src/ (15 files):
Start to store the default value as a closure inside the signature object. Also stub in space for sub-signatures - we don't support them just yet, but it'll be ready for when we do. Also fix a typo that caused constraints introspection to be broken.
14:29
kudo: 4cdac8a | moritz++ | perl6.pir:
make backtraces a bit less noisy

obvious.
14:35
jnthn moritz++ 14:36
Also for tests, which have made me fix up one other thingy. :-) 14:37
pugs_svn r28719 | colomon++ | [spec/t] Start of test file to give a solid workout to the operator overloading facilities.
jnthn moritz_: patch looks good to me 14:41
pugs_svn r28720 | jnthn++ | [t/spec] A little unfudging of some now-passing tests. 14:43
r28721 | jimmy++ | [zh-cn/syn/S12-objects.pod] added Chinese transcript for S12, edgar++ for translation.
r28722 | jimmy++ | [zh-cn/syn] updated README for edgar++ 14:44
dalek kudo: 925fd06 | jonathan++ | src/ (2 files):
Tweak to .constraints to pass another spectest.
14:46
14:47 synth joined 14:48 pmurias joined 14:53 TSa joined
pmurias ruoso: do you have any js experience? 14:53
colomon jnthn: there is an excellent error message when there are multiple matching signatures, listing all the matches. 14:56
jnthn: is there any possibility of getting the same sort of message when you incorrectly call new?
right now you get something like "too many arguments passed (5) - 1 param expected" even though 4 arguments would have been fine... 14:57
14:58 am0c joined
jnthn colomon: Yes. 15:01
colomon: Once I get the binder re-working done, we'll have a *lot* more control over the error messages. 15:02
pmurias perl6: say [].shift 15:07
p6eval rakudo 925fd0: OUTPUT«Undefined value shifted from empty array␤␤»
..sprixel 28722: OUTPUT«Sprixel Error: /_dotty__S_Dot_/ not yet implemented; apologies from the crew!␤»
..elf 28722, pugs: OUTPUT«␤»
pmurias we should spec what shifting an empty array does 15:10
15:11 TopoMorto joined
jnthn pmurias: I suspect failure object (as Rakudo gives) 15:11
pmurias rakudo: if ([].shift) {say 15:12
p6eval rakudo 925fd0: OUTPUT«say requires an argument at line 2, near ""␤in Main (file src/gen_setting.pm, line 2540)␤»
pmurias rakudo: if ([].shift) {say "a"} else {"b"}
p6eval rakudo 925fd0: ( no output )
pmurias rakudo: if ([].shift) {say "a"} else {say "b"}
p6eval rakudo 925fd0: OUTPUT«b␤»
pmurias rakudo: [].shift
p6eval rakudo 925fd0: ( no output )
pmurias jnthn: seems resonable, the spec should mention it though 15:13
jnthn pmurias: Aye. 15:14
Patches welcome. ;-)
pmurias really? i'm thinking just commiting is the resonable thing here ;) 15:15
jnthn :-P 15:16
15:19 zloyrusskiy joined
pugs_svn r28723 | pmurias++ | [S32] Array.shift and Array.pop return a failure if the @array is empty 15:23
jnthn I've just created a branch resig, which is holding the signature binding switch. At the moment all I've done is tweak the build process a bit so we build bind.dll (or whatever your platform's extension is). 15:29
If anyone wants to test commit 42cbb57d621489be216d437d499aac8a996b33d5 and see if it builds on other platforms, and fix it if not, that's be great.
And for the next days this is where I'll be committing stuff / progress. 15:30
masak hm, src/gc/api.c:248: failed assertion 'PObj_is_PMC_TEST(obj)'
that's bad, no?
jnthn Yes. Where'd you hit that?
masak in my awesome program. 15:31
it sort of froze and then did that.
I haven't tried to reproduce it yet.
jnthn I did manage to get that one under the debugger recently but it was a tad heisenbug-ish and didn't happen not under the debugger. :-/
I fear there's a lurking GC-ish bug.
masak oh, doesn't matter. :) it occurs after the test I'm working on anyway. :P 15:32
jnthn Oh wow
moritz_ jnthn: I spectestest your {%h}-is-a-hash patch, and it's all green (+1 passing TODO) - would you commit it?
jnthn moritz_: Oh, I diff'd and then threw it away ;-) 15:33
'cus I had a bunch of other bits going on
Feel free to apply it yourself.
moritz_ ok
jnthn masak: Heh. Crash is in Parrot_gc_mark_PMC_alive_fun it seems.
I don't consdier this very fun. ;-)
masak heh. 15:34
jnthn Hmm
Parrot_gc_mark_PMC_alive(INTERP, ctx->current_sub);
masak aye, that is number 2 in my stacktrace.
jnthn youch
That's quite a deep stacktrace too. 15:35
masak only 31 steps here.
but it went away now.
probably never existed.
moving right along.
jnthn Sadly, it very much exists. :-( 15:36
moritz_ cc: src/binder/bind.ar: No such file or directory
carlin got that too
pugs_svn r28724 | kyle++ | [t/spec] [].shift and [].pop return Failure, per spec r28723 15:37
dalek kudo: 3208e7b | jonathan++ | src/parser/actions.pm:
{%h} constructs a Hash, not a closure
KyleHa loves spectest_smolder 15:38
jdv79++ # smolder spectest reporting 15:39
jnthn moritz_: Hmm. I wonder if I shoulda used $(A) instead of $(AR) ? 15:40
moritz_ no idea... have to run now
jnthn OK
moritz_ will look into it later tonight, hopefully
jnthn moritz_: OK, thanks.
It's probably going to be some days until this branch gets to the point of being ready to merge.
masak: Seems a context holds a junk Sub pointer.
masak jnthn: ok. 15:41
oh ouch, now I got it again, much earlier in the test suite. :( 15:42
guess I'll just insert comments and meaningless print statements until it starts working again. 15:43
nobody promised that Perl 6 coding would be glamorous when I signed up... :)
jnthn masak: Under the debugger, I see it right away at startup. 15:47
masak meanwhile, over here, adding new stuff sporadically helped. 15:48
jnthn masak: Ah, some exploration later, I fear we may just have an "access to uninit'd memory" 15:52
masak that sounds reassuringly non-magical.
jnthn Trying a 15:53
ctx->current_sub = PMCNULL;
masak I was afraid it might be something on the order of "we've freed this thing, but we can't know whether we have or not due to the Halting Problem".
jnthn Since it seems we were init'ing most things, but not that
Granted it will *usually* get filled with something meaningful.
diakopter www.perlcabal.org/syn/S16.html reports an error at the bottom; also Basics.pod refers to S16 by an older name 15:54
also syn/index.html refers to S16 by even another name 15:55
jnthn oh hey, the segfault went away 15:56
jnthn runs Parrot tests, then commits
colomon jnthn: (re better error reporting) yay! 15:58
diakopter anyone: which S16 is correct 16:02
title
TimToady agh, p{} must die, I think 16:04
pmurias diakopter: the most correct S16 lives in the pugs repo
jnthn masak: Fix committed to Parrot.
masak: Bump to PARROT_REVISION coming.
masak jnthn++
jnthn That was a happily easy gc segv to fix.
pmurias TimToady: what's wrong with it? 16:05
TimToady uses up a common letter, unlike q
qp is okay 16:06
Tene What is p{} ?
pmurias path quoting
Tene Ah. 16:07
diakopter pmurias: yes, all three of those titles I mentioned live in the pugs repo
colomon now pondering a song with the lyric "p curly brace must die"...
diakopter in syn/index.html it's called "IO / User / Group", S16 calls itself "IO / Name Services", and S32 Basic.pod refers to it as "IPC / IO / Signals" 16:08
pmurias diakopter: the TITLE section in S16 seems to sugges IO / Name Services
dalek kudo: 27d9f14 | jonathan++ | build/PARROT_REVISION:
Bump PARROT_REVISION to get a fix I just put in for a segfault.
16:11
jnthn masak: ^^
masak thank you.
jnthn Welcome. The fact that I was about to write a bunch of C-code and Parrot segfaulted during Rakudo startup under my debugger was kinda an extra incentive to fix that one. :-) 16:12
16:13 rhr_ joined
masak (aligning goals)++ 16:14
pugs_svn r28725 | colomon++ | [t/spec] Enough tests to roughly establish that is_approx works for Vectors. 16:18
colomon hokey smokes, that was a lot of patching to Rakudo, considering I pulled yesterday... 16:21
jnthn colomon: Myabe you pulled yesterday before I merged a branch. 16:24
colomon I thought I pulled after, but I could have been wrong.
jnthn Well, I've done some other little bits since the branch too. 16:25
However, right now it's branch time again. :-)
ooh...actually, right now is go to the shops to buy something for dinner before they close time...
16:30 SmokeMachine joined
masak good idea. 16:31
16:32 msmatsko joined 16:35 lucs joined
lucs rakudo: say "What is the evalbot's nick?" 16:37
p6eval rakudo 27d9f1: OUTPUT«What is the evalbot's nick?␤» 16:38
lucs Aha.
(Maybe the /topic should mention that.)
masak sure, but why? 16:39
lucs Because I don't use it often, I never remember it, and it pollutes the channel to have to do what I just did :)
(I prefer to /msg it) 16:40
masak oh. now I understand your reason. 16:41
dalek p-rx: a0788f8 | pmichaud++ | src/Regex/Cursor-builtins.pir:
Add some builtin subrules to Cursor.
p-rx: 86f5d68 | pmichaud++ | (8 files):
Add lexical $�.
masak whoz op? could someone add p6eval's nick to the topic? 16:43
16:47 payload joined 16:51 nihiliad joined, pmurias joined
lucs So, suggested /topic: »ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend! 16:52
17:01 gavv joined
jnthn back from shops. 17:03
moderator »ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend! 17:04
jnthn yaz op! 17:04
lucs Thanks :)
masak yayjnthnzop! 17:05
food & 17:06
pugs_svn r28726 | pmurias++ | [mildew-js] say FETCHes it's arguments, basic array support 17:10
jnthn
.oO( how many people are writing a Perl 6 => js compiler now? :-) )
17:15
pugs_svn r28727 | lwall++ | [S04,S06] 17:16
r28727 | Placeholders may never be used in a hash composer.
r28727 | Explain how this means map always works right even if it's map { $_ => 1 }
r28727 | Placeholders @_ and %_ may be used standalone, not just with other placeholders.
r28727 | Explain how this makes P5 subs fall out naturally, more or less
r28727 | Clarify that $_ is a placeholder only in the absence of other placeholders.
r28727 | Mention how if statements don't pass anything to implicit $_ blocks even if
r28727 | they have an optional $_ in the signature.
pmurias jnthn: fglock, diakopter and mberends, and me 17:18
TimToady well, apparently I am too, insofar as STD is being used :) 17:20
and viv
pmurias you are writting 2 js compilers ;) 17:21
s/js/to js/
TimToady stands on a stump and pounds his chest
pmurias as both mildew and sprixel use STD
TimToady wonders why his ribs hurt now
jnthn hehe 17:23
Heh. The day I patch the hash composer, the spec relating to it gets patched too. :-) 17:25
Tene whirlpool, jnthn
TimToady yes, well, I patched the spec because I was backlogging and didn't remember about { %stuff }
jnthn Indeed.
TimToady and noticed I hadn't hacked in the new no-placeholders policy that fixes map 17:26
17:26 KyleHa joined
TimToady most of the changes are simplifications, and the only casualty I can see is the proviso about embedded @_ not seeing the outer @_ 17:26
which seems like a small loss 17:27
since we'll be encouraging people to translate to real signatures anyway
jnthn Aye, it looks sane at first glance.
17:28 gavv left
TimToady and most existing uses of @_ in P5 are not embedded in an inner block anyway 17:28
KyleHa Most.
I bet there's one or two programmers out there who do it All The Time.
Tene OMG DARKPAN 17:29
TimToady and we're immune to the backwards compatibility argument that plagues p5l :)
KyleHa I'm more than happy to irritate those one or two programmers. 8-)
TimToady In fact, we *have* to break a few eggs to prove we're making an omelet.
17:30 diakopter joined
pugs_svn r28728 | pmurias++ | [mildew-js] add true method to integers 17:34
pmurias KyleHa: they'll just switch to using $^a,$^b...$^z ;) 17:35
17:38 melba joined
TimToady Fortunately, being allergic to eggs doesn't make you allergic to egg metaphors. Or maybe unfortunately... 17:43
pugs_svn r28729 | kyle++ | [t/spec] todo test passes now 17:44
jnthn
.oO( what an eggcellent thought )
17:45
TimToady Or maybe not maybe.
17:46 felipe joined
pugs_svn r28730 | diakopter++ | [evalbot] remove sprixel from evalbot during its soul replacement therapy. 17:47
17:48 p6eval joined
diakopter to clarify: during sprixel's soul replacement, not evalbot's soul replacement. 17:48
jnthn hopes the soul is being replaced with heavy metal, not hip-hop 17:50
17:53 melba joined 17:54 lumi_ joined
diakopter gregorian chants ^ symphonic sci-fi soundtracks 17:55
pmurias diakopter: what does the soul replacement therapy consit of 17:56
jnthn diakopter: ooh, not bad
diakopter pmurias: making the sprixel.setting generated by ... stuff 18:01
pmurias doesn't undestand 18:02
18:03 mberends joined, Psyche^ joined
mberends backlogs desperately hurriedly... what's this about sprixel's soul? 18:03
TimToady well, everyone knows that a backend has no soul, unless maybe you're a dinosaur with a hindbrain 18:10
mberends so maybe sprixel needed sole replacement instead? 18:11
diakopter just.. now that the interpreter engine proved itself enough [in my mind at least] and I'm [mentally] comfortable with the way STD/viv is presenting the AST, I'm reworking how the interpreter engine does dispatch entirely... so basically stripping interp.js and builtins.js back down to essentially nothing. Then, we'll be building up the setting in Perl 6 (with jseval (aka Q:PIR {})) in place of most function bodies, until a proper dependency tree is deri 18:14
Then, we'll be building up the setting in Perl 6 (with jseval (aka Q:PIR {})) in place of most function bodies, until a proper dependency tree is derived for the setting files, and then the routine bodies will be able to be replaced with Perl 6 bodies.
sigh
so at first, the only classes that need written in solely JS will be Routine, Signature, Parameter, and their dependencies. 18:15
18:18 slavik joined
mberends diakopter: ok, that's an extension of what you wrote earlier. does that mean that most of the code in builtins.js is obsolete? 18:20
diakopter yes, as well as in interp.js :) 18:21
b/c almost all of those function bodies were keyed by names that are setting-dependent 18:22
that whole dispatch scheme should be viewed only to support a proof-of-concept (where the concept is the interpreter engine) 18:23
it'll be much more efficient to write all of that in Perl 6 in the setting... even as jseval '' embedded heredocs or whatever
no 'hardcoding'
mberends will testing sprixel have to be put on hold until this rewrite reaches a certain minimum functionality again? 18:24
diakopter yes, tho the interfaces shouldn't change... I mean, Test.pm.js will change a lot I'm sure, but your harness/system shouldn't break 18:25
mberends the harness now passes 427 tests here on the old interpreter :) 18:26
diakopter oh :D well cool
18:26 snearch joined 18:27 abra joined
TimToady diakopter: I'm much happier with the type structure of viv now with respect to --p5, thanks for the attitude adjustments :) 18:28
18:29 lumi joined 18:34 tak11 joined
diakopter oh, another big change: now that STD/viv generates/attaches data structures representing the lexical pads (and implied signatures!) to each routine/block, block invocation will use the JS-converted editions of those data structures directly 18:35
essentially I want to get the interpreter engine to the point where it merely handles control flow; all other "node type" dispatch will hopefully be done by in-Perl-6 dispatching 18:36
hopefully the circularity saw can exist in several places at once 18:40
while cutting other places 18:41
mberends is any of it running yet?
diakopter it tries, but I keep catching it and pressing delete 18:42
:)
mberends just don't let it crawl ;) 18:44
18:45 ejs joined
diakopter well, while I'm at it, I might as well create a Continutation_State JS object that's a lot smarter about cloning itself 18:46
instead of cloning the ast nodes themselves 18:47
Continuation_State, I meant
18:52 pmurias joined
diakopter that way, each ast node actually can keep some global state (incl whether (and how "much") that node has been 'compiled' or preprocessed) 18:53
mberends that's interesting, a kind of JIT processing apparently 18:54
diakopter so, each node type can do some initialization work that doesn't need to be repeated for every execution of its 'instance' nodes
sorta; maybe better described as smart caching 18:55
er, flexible caching
mberends yep, some cacheing of metadata generated at runtime as opposed to parse time 18:56
diakopter each cstate (continuation state) object represents an 'activation' of an ast node, and each ast node represents an occurrence (instance) of each node_type (the VAST type as it's received from viv) 19:01
pugs_svn r28731 | lwall++ | [Cursor] sometimes accidentally propagated _ast out of <?before> and <?after> 19:05
r28731 | [viv] get all the way back to being able to translate EXPR to Perl 5 correctly, yay!
mberends lwall++ indeed 19:06
diakopter: then shouldn't node_type construct cstate instead of cloning itself? (different data structures) 19:11
diakopter exactly 19:12
pugs_svn r28732 | mberends++ | [sprixel] harness-fudging.pl can skip complete code blocks, spectest.data skip and todo directives are formatted like function calls 19:13
r28733 | colomon++ | [t/spec] All the basic functions tested. 19:16
colomon Ack, that looks like it needs more info to mean anything in this context. All the basic functions tested in my new operator overloading test. Time to get hyper...
jnthn hands colomon the energy drinks 19:17
19:21 lumi joined 19:23 NorwayGeek joined, abra joined
colomon rakudo: say [&&] 1, 1, 1, 1, Bool::True; 19:26
p6eval rakudo 27d9f1: OUTPUT«say requires an argument at line 2, near " [&&] 1, 1"␤in Main (file src/gen_setting.pm, line 2545)␤»
colomon rakudo: say 1 && 1;
p6eval rakudo 27d9f1: OUTPUT«1␤»
colomon rakudo: say 1 && Bool::True; 19:27
p6eval rakudo 27d9f1: OUTPUT«1␤»
colomon rakudo: say [&&] (1, 1, 1, 1, Bool::True);
p6eval rakudo 27d9f1: OUTPUT«say requires an argument at line 2, near " [&&] (1, "␤in Main (file src/gen_setting.pm, line 2545)␤»
colomon rakudo: say all(1, 1, 1, 1, Bool::True);
p6eval rakudo 27d9f1: OUTPUT«all(1, Bool::True)␤»
quietfanatic Oh, by the way... 19:29
rakudo: say()
p6eval rakudo 27d9f1: OUTPUT«say requires an argument at line 2, near ""␤in Main (file src/gen_setting.pm, line 2562)␤»
quietfanatic rakudo: &say()
p6eval rakudo 27d9f1: OUTPUT«␤»
quietfanatic ^ that.
colomon :O
jnthn lol
std: &say()
std: &say.()
p6eval std 28733: OUTPUT«ok 00:02 134m␤»
std 28733: OUTPUT«ok 00:02 132m␤»
jnthn std: say()
p6eval std 28733: OUTPUT«ok 00:03 103m␤»
jnthn oh, it doesn't check at all. fine.
19:30 __ash__ joined
colomon BTW, just wrote this to implement the heart of is_approx_array: all((@got >>-<< @expected)>>.abs.map({$_ <= 0.00001})) 19:30
Can't decide if it is brilliant or unutterably scary. 19:31
mberends it's neat :)
quietfanatic Makes sense to me.
jnthn Scarilly brilliant?
colomon I haven't really internalized the >>.abs syntax yet. 19:33
Nor "all", for that matter.
jnthn colomon: erm, yeah, ...you're constructing a junction, so >>. is just . 19:34
oh wait
the all is around all of it.
colomon yes.
jnthn Yes, it's right. :-)
jnthn is filling out the new binder :-)
colomon Hmm... turns out my local "is_approx_array" doesn't work because Test.pm doesn't export proclaim (or something like that. 19:35
("local" here means in t/spec/S06-operator-overloading/workout.t)
moritz_ ok() is pretty close to proclaim 19:36
colomon Any wisdom on the best way to handle that?
but it will screw up the test skipping code, won't it?
moritz_ you can add #?DOES 1 before your testing function
then fudge learns that it's a test function like is()
colomon trying that now.... 19:37
yay!
looks like it skips, too. 19:41
moritz_++
19:44 abra joined 19:45 eternaleye_ joined, Chillance joined 19:48 arnsholt_ joined 19:49 TimToady1 joined, jrockway_ joined, shachaf_ joined, sunnavy_ joined
colomon yay! bug! 19:50
I think it's reported, but I don't think it has a test suite entry before this.
pugs_svn r28734 | colomon++ | [t/spec] First wave of hyper tests. 19:56
20:00 jrockway left 20:01 IRSeekBot left 20:03 IRSeekBot joined 20:04 wormphlegm joined
colomon So, one of the weird thing about the hyper operator bugs is how some things fail when you use >> and some when you use ». 20:14
jnthn Wow. 20:15
And...ouch...
mberends that kind of weirdness is similar to www.grymoire.com/Unix/CshTop10.txt 20:17
jnthn mberends: Yeah, but here it's a bug. ;-)
mberends jnthn: Yeah, but that means it gets fixed... eventually ;-) 20:18
jnthn Eventually. ;-) 20:19
pugs_svn r28735 | colomon++ | [t/spec] Test hyper on user-defined (rather than user-overloaded) operators.
jnthn just wrote the first, completely untested, cut of some code that should solve one of the oldest RT tickets we have. :-)
mberends yay! 20:20
colomon If you do svn up on the t/spec/S06-operator-overloading directory and look at the workout.t file, the skipped tests trigger the bugs I'm talking about.
Honestly, I'm surprised at how well the hyper operators are doing with my tests. I was under the impression they were even more fragile. 20:21
jnthn colomon: I really like that we're doing more exhaustive testing of the various permutations. 20:22
For operating overloading and hypers and the various other meta-operators.
__ash__ does perl6 support/willsupport function composition? like if i did something like: &z= &f . &g; maybe? 20:24
so z = f(g(x))
colomon __ash__: you can always do it with closures. 20:25
something like
std: sub Comp(Code $a, Code $b) { return { $a($b($_)); }; }; 20:26
p6eval std 28734: OUTPUT«ok 00:02 115m␤»
colomon I've not tested that, but I think something along those lines ought to work.
jnthn rakudo: sub infix:<comp>(&x, &y) { return -> $a { x(y($a)) } }; sub f($x) { 2 * $x }; sub g($x) { $x + 2 }; my $z = &f comp &g; $x(20)
p6eval rakudo 27d9f1: OUTPUT«Symbol '$x' not predeclared in <anonymous> (/tmp/5KjFpmwii1:2)␤in Main (file <unknown>, line <unknown>)␤»
jnthn rakudo: sub infix:<comp>(&x, &y) { return -> $a { x(y($a)) } }; sub f($x) { 2 * $x }; sub g($x) { $x + 2 }; my $z = &f comp &g; $z(20) 20:27
p6eval rakudo 27d9f1: ( no output )
jnthn rakudo: sub infix:<comp>(&x, &y) { return -> $a { x(y($a)) } }; sub f($x) { 2 * $x }; sub g($x) { $x + 2 }; my $z = &f comp &g; say $z(20)
p6eval rakudo 27d9f1: OUTPUT«44␤»
colomon rakudo++
jnthn rakudo: sub infix:<comp>(&x, &y) { return -> $a { x(y($a)) } }; sub f($x) { 2 * $x }; sub g($x) { $x + 1 }; my $z = &f comp &g; say $z(20)
p6eval rakudo 27d9f1: OUTPUT«42␤»
jnthn \\o/
__ash__ yeah, i figured you could do something like that, just define an operator
jnthn I don't know that you can have '.' though
rakudo: sub infix:<.>(&x, &y) { return -> $a { x(y($a)) } }; sub f($x) { 2 * $x }; sub g($x) { $x + 1 }; my $z = &f . &g; say $z(20) 20:28
__ash__ well, haskell uses infix '.' thats all
p6eval rakudo 27d9f1: OUTPUT«42␤»
jnthn heh heh
std: sub infix:<.>(&x, &y) { return -> $a { x(y($a)) } }; sub f($x) { 2 * $x }; sub g($x) { $x + 1 }; my $z = &f . &g; say $z(20)
p6eval std 28734: OUTPUT«[31m===[0mSORRY![31m===[0m␤Obsolete use of . to concatenate strings; in Perl 6 please use ~ instead at /tmp/2gotXXIWVi line 1:␤------> [32mx }; sub g($x) { $x + 1 }; my $z = &f . [33m⏏[31m&g; say $z(20)[0m␤FAILED 00:02 133m␤»
jnthn Yeah, I thought that is what would happen. :-)
Well... use Haskell; :-) 20:29
colomon I've been toying with the notion of defining a class for math functions using closures like that. 20:30
__ash__ i was asking about perl6, just wonder, its a toy feature of some functional programming languages and since i heard perl6's motto is all your paradigms all belong to us, i thought i'd ask 20:31
i only know a little haskell, its was just an example
how would you get it to handle more paramters? like if they took x and y, instead of just x
rakudo: sub infix:<.>(&x, &y) { return -> $a { x(y($a)) } }; sub f($x, y) { 2 * $x, 2 * $y }; sub g($x, y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20);
p6eval rakudo 27d9f1: OUTPUT«Unable to parse multisig; couldn't find final ')' at line 2, near ", y) { 2 *"␤in Main (file <unknown>, line <unknown>)␤»
__ash__ sub infix:<.>(&x, &y) { return { x(y($_)) } }; sub f($x, $y) { 2 * $x, 2 * $y }; sub g($x, $y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20) 20:32
jnthn __ash__: Well, my answer really is, even if standard Perl 6 doesn't provide such an operator, it provides you a very easy way to write a library that looks pretty natural.
20:32 araujo joined
__ash__ rakudo: sub infix:<.>(&x, &y) { return { x(y($_)) } }; sub f($x, $y) { 2 * $x, 2 * $y }; sub g($x, $y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20) 20:32
p6eval rakudo 27d9f1: OUTPUT«too many arguments passed (2) - at most 1 param expected␤in Main (file src/gen_setting.pm, line 206)␤»
jnthn __ash__: Take the multiple parameters. 20:33
return -> $a, $b { ... }
Or *@params to take as many as you want, and you can flatten with |@params when passing, or similar. 20:34
__ash__ sub infix:<.>(&x, &y) { return -> |@params { x(y(*@params)) } }; sub f($x, $y) { 2 * $x, 2 * $y }; sub g($x, $y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20)
rakudo: sub infix:<.>(&x, &y) { return -> |@params { x(y(*@params)) } }; sub f($x, $y) { 2 * $x, 2 * $y }; sub g($x, $y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20) 20:35
p6eval rakudo 27d9f1: OUTPUT«Confused at line 2, near "-> |@param"␤in Main (file <unknown>, line <unknown>)␤»
20:36 lumi joined
__ash__ I haven't done any of that parameter magic 20:36
how would you do that right? 20:37
quietfanatic I think you have the * and | backwards. 20:38
20:38 SmokeMachine joined
quietfanatic rakudo: sub infix:<.>(&x, &y) { return -> *@params { x(y(|@params)) } }; sub f($x, $y) { 2 * $x, 2 * $y }; sub g($x, $y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20) 20:38
p6eval rakudo 27d9f1: OUTPUT«too few arguments passed (1) - 2 params expected␤in Main (file src/gen_setting.pm, line 206)␤»
quietfanatic Hmm.
20:39 xenoterracide joined
jnthn quietfanatic: yes, you're right 20:39
quietfanatic: I think just wants to be x(y(|@params), y(|@params))
For the two param case.
__ash__ i wonder how to do it so it doesn't matter the number of paramters... 20:40
quietfanatic I think it wants to be something like x(|@(y(|@params)))
if the @() syntax works in rakudo
rakudo: sub infix:<.>(&x, &y) { return -> *@params { x(|@(y(|@params))) } }; sub f($x, $y) { 2 * $x, 2 * $y }; sub g($x, $y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20) 20:41
p6eval rakudo 27d9f1: OUTPUT«4242␤»
__ash__ you can drop the @ after |
quietfanatic rakudo: sub infix:<.>(&x, &y) { return -> *@params { x(|y(|@params)) } }; sub f($x, $y) { 2 * $x, 2 * $y }; sub g($x, $y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20)
__ash__ rakudo: sub infix:<.>(&x, &y) { return -> *@params { x(|y(|@params)) } }; sub f($x, $y) { 2 * $x, 2 * $y }; sub g($x, $y) { $x + 1, $y + 1 }; my $z = &f . &g; say $z(20, 20)
p6eval rakudo 27d9f1: OUTPUT«4242␤»
quietfanatic __ash__ :)
jnthn And the world was filled with happiness. :-) 20:42
20:44 mirage77 joined 20:46 mirage77 left
__ash__ how do you find the length of a string? 20:49
20:49 mikehh_ joined
__ash__ rakudo: say "«".chars; 20:49
p6eval rakudo 27d9f1: OUTPUT«1␤» 20:50
__ash__ hmm
on my terminal that puts 2
weird
20:52 synth joined
Tene __ash__: in the repl or in a script? 20:52
__ash__ okay, that works when you do it from a file, but doing it in a terminal returns 2, must be the encoding of the terminal or something
Tene __ash__: there are issues with utf encoding in the repl
__ash__ okay, got ya 20:53
jnthn omgwtfgithelp! 20:54
github.com/rakudo/rakudo/commits/resig shows no commits since the last time I pushed
However, git push origin resig complains about non-fast-forward.
How might this happen? 20:55
Tene jnthn: you could have branched from an earlier commit. 20:57
jnthn: git fetch; git rebase origin; git push
try that.
20:58 eternaleye joined
jnthn Tene: Ah, did a pull, resolved whatever it thought was the problem and it's let me push now. 20:59
But thanks
jnthn still not quite sure what happened...
Tene ah
spooky. 21:00
jnthn Anyways, github.com/rakudo/rakudo/commits/resig has latest.
Should still build fine for now.
Will continue to fill it out and migrate us to this new binder in the next few days. :-)
Just making it work first, but there'll be a bunch of chances for optimization later too. 21:01
Tene jnthn: if you run gitk, you'll see what happened. 21:02
see how you have "re-work binder into a library of its own" in there twice, with different parents? 21:03
jnthn yeah 21:04
hmm
Tene you must have rebased that commit on top of master, then pushed to the branch, or something.
jnthn I'm still not sure how I managed that one.
oh, I wonder if I pushed to the wrong place at some point. :-S
Tene yeah, that could be it, maybe.
21:04 rhr joined
jnthn Ah, but that patch hasn't ended up in master. Phew. :-) 21:05
moritz_ jnthn: replacing .$(AR) with $(O) makes your branch build on linux 21:30
(tried in Makefile directly, not in build/Makefile.in) 21:31
jnthn erm, with $(O) ?!
oh, erm.
Yes, I can see why that would work.
Trouble is
You've just linked two copies of the same code separately into two other dynamic libraries. 21:32
moritz_ and bloated the binary that way
jnthn Rather than building it once and linking against that one copy.
Yeah
I fear that the two libraries having the same exported symbol will cause...fun...too :-) 21:33
oh, well, maybe not actually
I guess it'll be OK.
moritz_ with that build spectest seems to run fine so far
jnthn Yeah
I'm sorta pondering that building it as a separate library is a bad idea.
moritz_ anyway, have to go to bed now, more investigation tomorrow
21:34 eternaleye_ joined
jnthn I want to bundle it in with the dynpmcs really *but* the dynops need to be able to call it too... 21:34
Anyway, there's a while to find a solution before this merges. Sleep well. :-)
dalek p-rx: b0e696b | pmichaud++ | src/Regex/Cursor.pir:
Remove some obsolete methods from Cursor.
21:36
p-rx: 5ecd319 | pmichaud++ | src/Regex/Cursor.pir:
Partial change of match stack to a cursor stack, update bstack handling.
p-rx: 7b01e97 | pmichaud++ | src/Regex/Cursor.pir:
Manage cstack on mark_fail.
21:42 lumi joined 21:45 Chillance joined 21:49 synth joined 21:50 synth joined 21:56 Whiteknight joined 21:59 crythias joined 22:05 pmurias joined 22:26 FOAD_ joined
diakopter std: {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{say 33}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} 22:32
p6eval std 28735: OUTPUT«Deep recursion on subroutine "LazyMap::lazymap" at Cursor.pm line 824.␤Deep recursion on subroutine "LazyMap::lazymap" at Cursor.pm line 824.␤Deep recursion on subroutine "LazyMap::lazymap" at Cursor.pm line 609.␤Deep recursion on anonymous subroutine at Cursor.pm line 677.␤Deep
..re…
diakopter rakudo: {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{say 33}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} 22:33
p6eval rakudo 27d9f1: OUTPUT«maximum recursion depth exceeded␤in Main (file src/gen_setting.pm, line 206)␤»
jnthn lolfail
KyleHa Lucky we're not writing lisp.
diakopter jnthn: :) I thought you'd like that one 22:34
jnthn diakopter: Parrot sets a default max rec depth to make debugging easier - we can clear that though to support deeply recursive code if we like. :-) 22:35
otoh the depth is 1000
That isn't so many curlies to overall take us to that. :-)
diakopter rakudo: {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{ 22:36
p6eval rakudo 27d9f1: OUTPUT«maximum recursion depth exceeded␤in Main (file src/gen_setting.pm, line 206)␤»
jnthn :-)
diakopter (parsing)
22:36 crythias joined, Whiteknight joined, SmokeMachine joined, shachaf_ joined, slavik joined, lucs joined, ruoso joined, arthur-_ joined, sjohnson joined, colomon joined, pugs_svn joined, yahooooo joined, Grrrr joined, nsh joined, davidm123 joined, PacoLinux joined, cosimo joined
jnthn Yes, it's hitting it in parsing, for sure. 22:36
diakopter (same with std) 22:37
KyleHa rakudo: eval ('{' x 100) ~ 'say "oh hai"' ~ ('}' x 100)
p6eval rakudo 27d9f1: OUTPUT«oh hai␤»
jnthn huh, it works for eval?!
KyleHa rakudo: eval ('{' x 1000) ~ 'say "oh hai"' ~ ('}' x 1000) 22:38
p6eval rakudo 27d9f1: ( no output )
jnthn ah. :-)
KyleHa rakudo: eval ('{' x 500) ~ 'say "oh hai"' ~ ('}' x 500)
p6eval rakudo 27d9f1: ( no output )
22:38 eternaleye joined
KyleHa rakudo: eval ('{' x 250) ~ 'say "oh hai"' ~ ('}' x 250) 22:38
p6eval rakudo 27d9f1: ( no output )
KyleHa rakudo: eval ('{' x 150) ~ 'say "oh hai"' ~ ('}' x 150) 22:39
p6eval rakudo 27d9f1: ( no output )
jnthn rakudo: my $n = 100; $n++ while eval(('{' x $n) ~ ' 1 ' ~ ('}' x $n)); say $n;
p6eval rakudo 27d9f1: TIMED_OUT
KyleHa jnthn++
jnthn aww
TimToady1 what you don't see there is that std actually succeeded in parsing it, since that was just a warning 22:47
diakopter yep; with 'no warnings;' it's hunkily dorily 22:48
rakudo: say ('.' x 200000000 ~~ /.+/).chars 22:50
p6eval rakudo 27d9f1: OUTPUT«200000000␤»
diakopter (impressive)
KyleHa I'm looking at this ticket: rt.perl.org/rt3/Ticket/Display.html?id=65272 22:51
It uses 'A.HOW.dispatch(.., ..)' That doesn't work anymore.
rakudo: class A { method x { say 'A' } }; class B is A { method x() { say 'B' } }; B.new.x; B.x; 22:54
p6eval rakudo 27d9f1: OUTPUT«B␤B␤»
22:54 eternaleye_ joined
jnthn I'm not even sure if the ticket is correct... 22:54
KyleHa Yeah, that's what I was thinking.
jnthn .dispatch is API I guess 22:55
But you're giving it an invocant B to work on, so the metaclass is going to care about its methods, probably.
Anyway, I suspect it dates back to the days before you could write $x.A::x 22:56
KyleHa Closed: crusty. 8-) 22:59
diakopter std: goto: last goto
p6eval std 28735: OUTPUT«ok 00:01 106m␤»
diakopter std: last last last last last last last 23:01
p6eval std 28735: OUTPUT«ok 00:02 104m␤»
KyleHa rakudo: say <<:a(1)>>.perl 23:02
p6eval rakudo 27d9f1: OUTPUT«":a(1)"␤»
diakopter std: last.last.last.last.last.last 23:03
p6eval std 28735: OUTPUT«ok 00:01 103m␤»
diakopter std: .goto.goto.goto.goto ** * 23:04
p6eval std 28735: OUTPUT«ok 00:01 104m␤»
diakopter shrugs
KyleHa This says <<:a(1)>> should interpolate a pair: rt.perl.org/rt3/Ticket/Display.html?id=65304 Is that right? 23:07
quietfanatic rakudo: say (* == 3).WHAT 23:09
p6eval rakudo 27d9f1: OUTPUT«!whatever_closure␤»
quietfanatic rakudo: say (* ~~ 3).WHAT
p6eval rakudo 27d9f1: OUTPUT«Bool()␤»
quietfanatic Should * also produce a WhateverCode for ~~? 23:10
diakopter flips a coin 23:11
KyleHa S02 says yes, <<:a(1)>> should cough up a Pair object. 23:12
23:29 jrtayloriv joined 23:34 eternaleye joined
diakopter as dukeleto said yesterday, whoa nelly... this improved interpreter model gives a 50-100x speedup of arbitrary node evaluation 23:37
pugs_svn r28736 | kyle++ | [t/spec] Mark test for RT #65304 23:45
r28737 | kyle++ | [t/spec] Test for RT #65322 23:46
quietfanatic Does anyone know how Perl namespaces map to Parrot namespaces? 23:48
rakudo: $Place::thing = 4; Q:PIR {$P0 = get_hll_global ['Place'], '$thing'}; QPIR{say $P0}
p6eval rakudo 27d9f1: OUTPUT«4␤»
quietfanatic This gets the right thing
but
rakudo: $Some::Place::thing = 4; Q:PIR {$P0 = get_hll_global ['Some::Place'], '$thing'}; QPIR{say $P0}
This does not.
p6eval rakudo 27d9f1: OUTPUT«Null PMC in say␤in Main (file src/gen_setting.pm, line 206)␤»
quietfanatic rakudo: $Some::Place::thing = 4; Q:PIR {$P0 = get_hll_global ['Some';'Place'], '$thing'}; QPIR{say $P0} 23:51
p6eval rakudo 27d9f1: OUTPUT«4␤»
quietfanatic Okay, I figured it out. :)
diakopter rakudo: say (QPIR{}).WHAT 23:59
p6eval rakudo 27d9f1: OUTPUT«ResizablePMCArray: Can't shift from an empty array!␤in Main (file src/gen_setting.pm, line 206)␤»
diakopter rakudo: say (QPIR{say 3}).WHAT
p6eval rakudo 27d9f1: OUTPUT«The opcode 'descalarref_p' (descalarref<1>) was not found. Check the type and number of the arguments␤in Main (file src/gen_setting.pm, line 206)␤»