»ö« 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! | tinyurl.com/p6contest
Set by moritz_ on 28 December 2010.
00:01 kst left, kst joined
masak moritz_: maybe your experience with .?including shows that it shouldn't be run on type objects? after all, they are our undefined values nowadays, not just Any. 00:06
00:16 MayDaniel left 00:18 pmurias left 00:21 flatwhatson left 00:22 Trashlord joined 00:24 [particle] left 00:25 [particle] joined 00:28 stkowski left, vmspb left 00:29 ponbiki left
masak I blogged, lol: strangelyconsistent.org/blog/a-quic...tus-update 00:31
'night, #perl6. 00:32
diakopter n
00:32 masak left 00:34 ponbiki joined
dalek p-rx/nom: 94b693e | jonathan++ | src/ (4 files):
Give native attrs a firey baptism by switching $!pos and $!from attributes in Cursor to be native int attributes. This saves a bunch of boxing/unboxing and as a result should reduce GC churn and also be a memory improvement for big parses (since Match objects reference Cursor objects). Note that Match objects still need to store these boxed for now, but that'll be fixed in the future and be a further memory usage and GC churn reduction.
00:41
colomon \o/
(I'm assuming the tests actually pass.... ;)
jnthn No regressions shown up in make test.
colomon jnthn++
00:42 Vlavv_ left
colomon I can't tell you how excited I am to see all these commits from you. :) 00:42
00:42 Vlavv joined
jnthn colomon: Here's what to look forward to: class Complex { has num $!re; has num $!im; ... } # :-) 00:43
colomon hmmm... except it's kind of nice to have any real type allowed internally for Complex. but the speed.... the speed....
jnthn Today a Num is 3 PMCs big, and a Complex totals 8.
With native attrs it can be 1. 00:44
colomon woof.
TimToady well, that would be type complex, not Complex :)
jnthn Meaning they'll use a bunch less memory.
TimToady: ?
TimToady: That'd still be a reference type.
TimToady native complex consisting of 2 nums
jnthn TimToady: I don't know that Complex - just becuase it has reference semantics - needs to store non-native Nums? 00:45
TimToady: Anyway, we can do complex with num and num too. :)
I thought the difference was that complex is more native-structish and Complex is not. 00:46
TimToady certainly if Complex is a role it could use num or Num or Rat
or maybe the role name is sompthing else
flussence that reminds me... I might be able to make my DWIM .Buf thing once this stuff's in place.
jnthn Hm
TimToady we'd certainly like compact arrays of native complexes without refs
heavy-duty PDLish stuff 00:47
jnthn TimToady: Yes, I figured that's what complex will do, and Complex would not.
colomon I personally like the idea that Complex is two Reals, and complex is two nums. That seems like a nice choose between expressiveness and raw firepower.
TimToady which Complex? :)
jnthn TimToady: Anyway, I don't really mind exactly how we factor it, tbh. :)
colomon TimToady: I was implying that Complex is a class, not a role. :) 00:48
jnthn TimToady: I'm just happy that I've got pretty close to supporting those. :)
TimToady indeed
I'm very excited me own self
I very much like the direction all this is going, aka "faster"
jnthn TimToady: In STD do Match objects maintain a reference back to the cursor? 00:49
colomon faster!
jnthn TimToady: They do in nqp-rx, Rakudo, etc. It's fine if it's needed, but we seem to use it in relatively few places and it means that we end up keeping a bunch more objects around. 00:50
TimToady STD doesn't really distinguish Match from Cursor currently; it just pretends they're the same type, and cheats on the mutable/immutable bits 00:51
jnthn Ah, OK.
I'll see what pmichaud++ thinks. :)
TimToady: BTW, one thing to ponder. 00:53
TimToady ponders zero things
jnthn TimToady: If I write class Foo { has int $!a; has int $!b; }
And I then have a my Foo @x;
Is that "magically" a compact array of compact structs? 00:54
That is, does "oh, all the types in there are themselves native or compact" the condition for the whole class being considered a compact struct?
I worry a little that this could be too magical.
TimToady that's kinda how the spec reads currently, but I hear your concern
jnthn Maybe I'm C# brain-damaged, but it has a struct keyword for the one meaning and a class keyword for the other. 00:55
Not especially suggesting that "struct" is the keyword we want
But being clear which semantics you're looking for feels kinda useful
I can also see the case where you have
class Foo { has $!bar; has $!baz } and you want Foo to act like a compact struct with two pointers to other objects. 00:56
Which is an option we preclude at present.
00:57 whiteknight joined
TimToady so maybe that's a distinction on the array rather than the class 01:02
and maybe it defaults to the same nativeness as the inner type, but can be forced opposite 01:03
jnthn Maybe it's a difference of representation. 01:05
Though one representation could easily know to act in either way too. 01:06
Anyway, I'm not going to block on an answer any time soon.
TimToady and might have to for MI
jnthn Well, not *too* soon. :) 01:07
But I hope not too far into the future either. :)
Yes, MI limits object layout possibilities.
01:07 kst left 01:08 kst joined
jnthn Time to rest. I need to do something workish tomorrow. :) o/ 01:10
01:11 drbean joined, cafesofie left 01:28 felliott left 01:34 cafesofie joined 01:36 felliott joined, felliott left 01:40 jevin joined 01:43 cafesofie left
sorear good * #perl6 01:45
phenny sorear: 27 Jan 16:49Z <diakopter> tell sorear pmurias didn't quite use the right syntax for phenny: :) 05:05 < pmurias> tell sorear re -Bnam you mean -Bclisp?
sorear phenny: tell pmurias yes.
phenny sorear: I'll pass that on when pmurias is around.
colomon is suddenly in love with zavolaj 01:49
sorear moritz_: (Perl 6 is MAD) TimToady decided that long ago ;) 01:54
bah I missed jnthn 01:59
I need his help understanding native types
02:06 kst left, kst joined
colomon can you monkey patch a role? somehow that doesn't seem to make sense to me.... 02:07
TimToady roles are immutable 02:18
sjohnson camel patch
colomon shucks. 02:19
I just implemented the math functions in www.johndcook.com/blog/2010/06/07/m...necessary/ using zavolaj.
trivially easy to do. zavolaj++ 02:20
now I'm trying to figure out how to make it a useful module.
I think they should probably be in core in the long run, but I thought implementing it as a module using zavolaj would be a useful exercise. 02:22
02:25 JimmyZ joined
colomon Math::Unusual ? 02:25
Math::ExtendedLibrary ? 02:26
02:31 TiMBuS left 02:34 TiMBuS joined 02:37 felliott joined 02:38 TiMBuS left 02:39 aindilis joined 02:40 woosley joined, TiMBuS joined 02:59 noganex joined 03:02 TiMBuS left 03:03 noganex_ left, agentzh joined 03:06 whiteknight left 03:09 justatheory left 03:12 TiMBuS joined 03:14 cafesofie joined 03:17 TiMBuS left 03:20 JimmyZ left 03:22 TiMBuS joined 03:23 cdarroch left 03:33 TiMBuS left 03:36 TiMBuS joined 03:38 cafesofie left 03:40 am0c joined 03:46 justatheory joined 03:49 envi joined
diakopter sorear: 04:01
.g CompilerGlobalScopeAttribute
phenny diakopter: msdn.microsoft.com/en-us/library/sy...ibute.aspx
sorear good * #perl6 04:04
diakopter * * *
sorear diakopter: what about it? 04:05
diakopter thought maybe it could cross appdomain or assembly boundaries (or just namespace) 04:06
sorear colomon: having lots of methods in a role is a (mild) smell
colomon: since the method table has to be duplicated a lot
diakopter: "This class is used only for communication with debugger tools."
diakopter hm, I didn't see that 04:07
04:27 Su-Shee left 04:28 Su-Shee joined
lue hello zebras! o/ 04:30
colomon \o 04:42
04:48 kst left, kst joined
dalek ecza: 5c57dd5 | moritz++ | t/fudgeandrun:
use mono to run spectests until we have a better solution
04:49
ecza: 9a4634a | moritz++ | t/run_spectests:
run more tests
05:00 felliott left 05:09 satyavvd joined 05:28 flatwhatson joined 05:35 JimmyZ joined 05:36 JimmyZ left
sorear out 05:50
05:52 kaare_ joined 05:53 envi left 05:57 envi joined 06:36 xinming_ joined 06:40 xinming left, orafu left, orafu joined
woosley rakudo: my @a=(24,4);sub fo(@a){say |@a.perl};fo(@a); 06:40
p6eval rakudo 549d2a: OUTPUT«[24, 4]␤»
woosley rakudo: my @a=(24,4);sub fo(@a){ my $b = |@a; say $b.perl};fo(@a); 06:46
p6eval rakudo 549d2a: OUTPUT«\(24, 4)␤»
06:50 justatheory left
woosley rakudo: my @a=(24,4);sub fo(@a){ my $b = |(|@a); say $b.perl};fo(@a); 06:50
p6eval rakudo 549d2a: OUTPUT«\(24, 4)␤»
06:53 agentzh left 07:10 agentzh joined 07:21 drbean left 07:22 justatheory joined 07:30 cjk101010 joined 07:31 amkrankruleuen left 07:32 amkrankruleuen joined, fhelmberger joined 07:41 dju left 07:44 fhelmberger left 07:50 justatheory left 07:59 kfo_ joined 08:02 kfo left 08:04 pnu left 08:09 kst left, kst joined 08:14 pnu joined, jimmy1980 left 08:15 jimmy1980 joined 08:21 masak joined
masak morning, #perl6. 08:22
08:23 amkrankruleuen left, amkrankruleuen joined 08:33 wtw joined 08:42 JimmyZ joined 08:45 timbunce joined 08:50 jimmy1980 left, tzhs joined
woosley rakudo: my $a = ([x => 1, x=>2]); my $b = |$a; say $b.perl; 08:51
p6eval rakudo 549d2a: OUTPUT«\("x" => 1, "x" => 2)␤»
woosley rakudo: my @a = ([x => 1, x=>2]); my $b = |@a; say $b.perl;
p6eval rakudo 549d2a: OUTPUT«\(["x" => 1, "x" => 2])␤»
masak rakudo: my @a = x => 1, x=>2; my $b = |@a; say $b.perl 08:52
p6eval rakudo 549d2a: OUTPUT«\("x" => 1, "x" => 2)␤»
woosley my $a = ([x =>1, x=>2], [x =>3]); say |$a.perl
rakudo: my $a = ([x =>1, x=>2], [x =>3]); say |$a.perl 08:53
p6eval rakudo 549d2a: OUTPUT«(["x" => 1, "x" => 2], ["x" => 3])␤»
woosley akudo: my @a = ([x =>1, x=>2], [x =>3]); say |@a.perl
rakudo: my @a = ([x =>1, x=>2], [x =>3]); say |@a.perl 08:54
p6eval rakudo 549d2a: OUTPUT«[["x" => 1, "x" => 2], ["x" => 3]]␤»
masak woosley: |$a.perl and |@a.perl might not do what you think. 08:55
08:56 jimmy1980 joined
masak woosley: method postfix is tighter than almost anything, including symbolic unary. 08:56
woosley Those things are so confusing...
masak well, they have to be one way or the other. :)
they're less confusing once you look them up.
may I recommend S03, especially the table in the beginning? 08:57
perlcabal.org/syn/S03.html#Operator_precedence
woosley rakudo: say |([x => 1, x=>2]).perl
p6eval rakudo 549d2a: OUTPUT«["x" => 1, "x" => 2]␤»
masak same thing there. 08:58
your essentially flattening the Str from .perl
woosley S06 says: |([x=>1, x=>2]); # List (from an Array), becomes \((x=>1), (x=>2))
08:59 puge left
moritz_ note that the | is not included in the .perl 08:59
because method calls have tighter precedence
woosley Oh, right
masak woosley: this is moritz_. he likes to repeat what I say.
JimmyZ rakudo: say (|([x => 1, x=>2])).perl
p6eval rakudo 549d2a: OUTPUT«\("x" => 1, "x" => 2)␤»
masak and for some reason people understand him better. :P 09:00
moritz_ masak: sometimes it works :-)
masak I'm not complaining; just amused. :)
woosley rakudo: say (|([x => 1, x=>2], [x => 3])).perl
p6eval rakudo 549d2a: OUTPUT«\(["x" => 1, "x" => 2], ["x" => 3])␤»
woosley Interesting 09:01
Why say (|([x => 1, x=>2])).perl is not returning \(["x" => 1, "x" => 2])
moritz_ because f(a, b) is not the same as f((a, b)) 09:02
the former has two positional arguments, the latter one
so maybe you want |(|[...]) 09:03
or not
depending on what you want to achieve
woosley but f((a)), f((a, b)) is something similar
09:03 drbean joined
moritz_ similar, but not the same 09:03
rakudo: say (1) ~~ Positional 09:04
p6eval rakudo 549d2a: OUTPUT«Bool::False␤»
moritz_ rakudo: say (1, 2) ~~ Positional
p6eval rakudo 549d2a: OUTPUT«Bool::True␤» 09:05
moritz_ hm
woosley rakudo: @a = 2, 3, 4; my :($f, $o) := \(|@a); say $f.perl 09:06
p6eval rakudo 549d2a: OUTPUT«===SORRY!===␤Malformed my at line 22, near ":($f, $o) "␤»
moritz_ std: my @a = 2, 3, 4; my :($f, $o) := \(|@a); say $f.perl 09:07
p6eval std 625303c: OUTPUT«===SORRY!===␤Malformed my at /tmp/CMJ6as_O3c line 1:␤------> my @a = 2, 3, 4; my ⏏:($f, $o) := \(|@a); say $f.perl␤ expecting scoped declarator␤Parse failed␤FAILED 00:01 122m␤»
woosley rakudo: @a = 2, 3, 4; my :($f, *$o) := \(|@a); say $f.perl
p6eval rakudo 549d2a: OUTPUT«===SORRY!===␤Malformed my at line 22, near ":($f, *$o)"␤»
moritz_ rakudo: my ($f, $o, @a); @a = 2, 3, 4; :($f, $o) = \(|@a); say $f.perl
p6eval rakudo 549d2a: OUTPUT«Cannot modify readonly value␤ in '&infix:<=>' at line 1␤ in main program body at line 22:/tmp/et1Qk2fhnM␤»
moritz_ rakudo: my ($f, $o, @a); @a = 2, 3, 4; :($f, $o) := \(|@a); say $f.perl 09:08
p6eval rakudo 549d2a: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in 'infix:<:=>' at line 1␤ in main program body at line 22:/tmp/39pL0QTcgl␤»
moritz_ rakudo: my ($f, $o, @a); @a = 2, 3, 4; :($f, $o, $) := \(|@a); say $f.perl
p6eval rakudo 549d2a: OUTPUT«Not enough positional parameters passed; got 1 but expected 3␤ in 'infix:<:=>' at line 1␤ in main program body at line 22:/tmp/eeH_GtWW59␤»
moritz_ that's... curious
woosley moritz_: This code is taken from book using perl6/chap 4/4.6 unpacking
and it is not working
moritz_ woosley: that's bad... care to open a ticket on github for it? 09:09
for the book, that is
or maybe rakudobug? /me not sure
woosley rakudo: my @a=4,5,6; my ($f, *$o) = @a; say $f.perl
p6eval rakudo 549d2a: OUTPUT«4␤»
woosley I don't know how to submit rakudo bug, but sure I can open a ticket on github for the book 09:10
moritz_ I'll do the rakudobug 09:11
mailto:rakudobug@perl.org
rakudo: my ($f, $o, @a); @a = 2, 3; :($f, $o, $) := \(|@a); say $f.perl 09:12
p6eval rakudo 549d2a: OUTPUT«Not enough positional parameters passed; got 1 but expected 3␤ in 'infix:<:=>' at line 1␤ in main program body at line 22:/tmp/x7pZHTnCH2␤»
moritz_ rakudo: my ($f, $o, @a); @a = 2, 3; :($f, $o) := |@a; say $f.perl 09:13
p6eval rakudo 549d2a: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in 'infix:<:=>' at line 1␤ in main program body at line 22:/tmp/tad0HKVRnS␤»
woosley Capture is alway consider to be a scalar?
masak woosley: things stored in $ variables are treated as scalars unles explicitly transformed somehow. 09:15
inclusing lists, arrays, and hashes.
09:16 Mowah joined
moritz_ ... unless the $ var is bound contextless 09:16
rakudo: sub f(\$x) { for $x { .say } }; f(1, 2, 3)
p6eval rakudo 549d2a: OUTPUT«Too many positional parameters passed; got 3 but expected 1␤ in 'f' at line 1:/tmp/DaTJ5CjVXh␤ in main program body at line 22:/tmp/DaTJ5CjVXh␤»
moritz_ rakudo: sub f(\$x) { for $x { .say } }; f((1, 2, 3)) 09:17
p6eval rakudo 549d2a: OUTPUT«1␤2␤3␤»
09:17 kst left
woosley rakudo: my ($a, $b) := 5; 09:17
p6eval rakudo 549d2a: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in 'infix:<:=>' at line 1␤ in main program body at line 22:/tmp/SmnvZnU1ir␤»
moritz_ here $x contains a flattening list. Very confusing
09:17 kst joined
woosley that't what S06 says, |@a returns \(blalala) 09:18
moritz_ colomon: re justrakudoit.wordpress.com/2011/01/28/zavolaj/ what LibM or Math::LibM or Math::Extended or so?
masak Math::Like::The::Natives 09:22
09:31 woosley left 09:32 tzhs left, dakkar joined, daxim joined 09:35 skangas left, skangas joined
tadzik ~~ 09:38
masak hi, koala. 09:40
moritz_ masak: regarding p6cc, will you let the different solutions play against each other? 09:46
masak moritz_: so far, I've been running solutions to find out specific things. don't know if I will bother letting solutions play against each other... it's a cool idea, for sure. 09:48
things I've needed to find out so far have been limited to "is this indeed the wrong algorithm?" and "is this as slow as it looks?" 09:49
09:51 wallberg joined 09:55 JimmyZ left 09:56 mberends joined
mberends masak++ # all the Perl 6 Coding Contest activity :-) 09:59
masak \o/
mberends: nice to see all the progress on nqp-jvm, too!
10:01 agentzh left
mberends it surprises me that with all the work that has gone one, the passing test count sits stubbornly at 45. there should have been some removal of blockers by now, methought. 10:01
*gone in, meh
frettled gone in 60 seconds? :) 10:02
masak jnthn seems to think some LHF is imminent.
frettled masak: There are some nifty tricks played by the contestants, pretty cool.
masak frettled: yes. I don't think I had realized that code exhibition/review would be this big a part of the contest. I'm glad it is. 10:03
frettled Yep, that's the best part of it, I think. 10:04
masak of the tasks, p4 is the Kobayashi Maru. :) 10:05
10:09 drbean left
frettled Oh, really? 10:10
Do you think that Captain Moritz will come up with a novel solution?
tadzik how do I make the class Callable, so it reacts to $obj()? 10:11
10:11 wallberg left
tadzik rakudo: class Foo { method invoke() { 1 } }; my $a = Foo.new; say $a() 10:11
p6eval rakudo 549d2a: OUTPUT«invoke() not implemented in class 'Foo'␤ in main program body at line 22:/tmp/owhF4WKzVM␤»
masak frettled: everyone blew p4, exept arnsholt (who blew the deadline instead).
tadzik rakudo: No, it _is_ implemented!
p6eval rakudo 549d2a: OUTPUT«===SORRY!===␤Confused at line 22, near "No, it _is"␤»
frettled masak: aha :D
masak tadzik: postcircumfix:<( )> 10:12
tadzik so what's with this invoke() thingy?
masak tadzik: a Parrot internalism.
frettled Slightly LTA error message, then.
masak aye.
10:13 wallberg joined 10:15 ab5tract joined 10:17 wallberg left 10:27 kst left, kst joined
mberends github.com currently seems to be heavy overloaded. A clone of mono/mono.git is barely proceeding, and one of perl6/nqp-rx aborted three time with various server error symptoms. Github seems to be a victim of its own success :/ 10:43
10:44 snearch joined
arnsholt Yeah, it was never very snappy, but now it's just ridiculous 10:45
Tene mberends: That's not quite what they're a victim of. >.> 10:46
10:50 tzhs joined 10:53 coldhead left
jnthn morning, #perl6 10:53
mberends ahoy jnthn :) 10:54
tadzik ohay
10:55 coldhead joined
jnthn mberends: Aww...no more test passes yet? 10:57
mberends: Are you still using the hacked down setting?
mberends: Or the Real Thing?
10:57 tzhs left
masak mornin', jnthn 11:00
jnthn mberends: Looks like the one we hacked down for debugging.
masak: ohhai
jnthn slept in quite a bit :)
Stayed up last night hacking on...stuff. :)
masak :)
masak woke up surprisingly early today
jnthn tries pointing nqpjvm at the real setting, out of curiosity. 11:01
Aww. Doesn't quite manage it. 11:02
11:02 satyavvd left
mberends jnthn: nope. I think there is a $*BIND_VALUE missing from some part of PAST2JSTCompiler.pm 11:02
jnthn mberends: The setting provides many of the ops and built-in types, so you can probably pass more tests already by starting to bring bits over from the setting. 11:03
mberends: Yes, I can an error about that too.
mberends: I guess if you bring pieces of the setting over a bit at a time, you'll at the same time golf down an example of what's wrong.
mberends that global is conditionally created, except when it is isn't :/
jnthn Contextual. Not global. :) 11:04
It should hang out in a pair with a true value of $*BIND_CONTEXT though. :)
mberends sits corrected
*should* !!! that's the bug! thanks jnthn ;) 11:05
masak jnthn++ 11:06
11:07 IllvilJa left
jnthn mberends: Just adding a single multi to the NQPSetting.pm in the java dir trigges a related mis-compile too. 11:07
mberends ok, so compiling any multi might be the problem. no time now, but a useful clue for later :) 11:08
jnthn mberends: Your emit_lexical_lookup is RONG. 11:09
Hmm, seems the correct version is there but marked TODO :) 11:10
11:10 JimmyZ joined
mberends that means when it's uncommented, it crashes even worse 11:11
jnthn ah, yes... 11:14
OK.
mberends: Let me know if you want me to debug further. But it looks to me like getting the binding sorting out would get multis there - or way closer - and then it's copy-paste of setting code to get you a bunch more passes. :) 11:21
11:22 kst left 11:23 kst joined, IllvilJa joined
mberends thanks jnthn, I don't want to consume your tuits, and there is enough for me to proceed with :) 11:24
jnthn OK :)
mberends++ # nqpjvm :)
masak jnthn++ diakopter++ mberends++ 11:25
11:28 redicaps joined
tadzik what to hack on, hmm 11:28
mberends neutro for Windows? 11:31
tadzik I made it ready for Windows, there was just no one to test it
flussence ooh, I know! 11:34
add url-installing to it!
tadzik hah, like in the old times! 11:36
do you remember the first version? You'll be giving it the git url, and it'll clone, ufo and make install it :)
not a bad idea
so, anywants want to pick an LHF? 11:37
moritz_ considers learning C#, so that he can help with nqp-on-CLR 11:38
can anybody recommend a good, free ebook? 11:39
11:39 gimix left 11:43 drbean joined
masak moritz_: hm, there's gotta be a C# channel on freenode where they'd know... 11:46
jnthn moritz_: There's one at www.programmersheaven.com/2/CSharpBook but most of it was written by a non-native English speaker. I reviewed/corrected a ton of stuff in it when I worked at PH. 11:47
And isn't up to date with the latest stuff.
But it is free and is an e-book. :) 11:48
moritz_: The WinForms/Data Access chapters can be skipped I expect.
moritz_ jnthn: thanks, I'll take a look 11:49
jnthn Gee, they've really gotten into their ads on that site since I left...
moritz_ didn't see any ads :-)
jnthn :) 11:50
11:53 felliott joined 12:00 pmurias joined 12:02 coldhead left 12:12 ab5tract left
bbkr hi. what is P6 syntax for "try ... finally " exception handling? 12:14
masak try { something-dangerous(); CATCH { fix() } } 12:15
but they try {} is optional.
s/they/the/
12:15 flussence left, ab5tract joined
bbkr CATCH is not the same as finally. i'm trying to write in P6 following short riddle: gist.github.com/800061 12:16
finally in almost all languages is executed always after try block, not when catchable exception occured
tadzik erm, so why not to put it after the try block? 12:18
so try { foo(); CATCH { bar(); }; finally();
jnthn That's not always what's wanted. 12:19
There is meant to be a block that's always invoked when a block is left
s/a block/a phaser/
bbkr jnthn: is right
jnthn POST { } or so
Rakudo doesn't implement it yet though :(
12:20 karupanerura joined
masak LEAVE {} ? 12:20
jnthn Yes, if it's in the spec. :) 12:21
12:21 mtk joined
masak it is. 12:21
jnthn :)
masak and (as opposed to POST), it doesn't fail if the return value of the block is false.
jnthn masak++ # reads the spec :)
colomon \o
masak o/ 12:22
jnthn co/omon!
colomon hello! 12:24
masak he\\o!
colomon hel\o
I started to try to figure out how to implement BigInts using a module and zavolaj last night. 12:25
(and a big int library)
masak cool
bbkr ok, so now when we know that finally is the same as LEAVE{} in P6, how should the following code behave when implemented: sub foo { try { return True; LEAVE { return False } } }; foo()
12:26 llabthgie joined
colomon seem stuck on a procedural detail with library files at the moment, but hopefully it is sortable. 12:26
jnthn bbkr: I don't know that returning from a LEAVE block is going to end too well... 12:28
bbkr: The return will have triggered the invocation of .leave which will in turn have triggered the LEAVE block. 12:29
Wouldn't surprise me if that's a good way to get yourself a nice infinite loop of exception throwing.
12:33 ab5tract left
tadzik moritz_: stackoverflow.com/questions/194812/...ming-books you may want to look hear 12:33
* here
jnthn Pardon? 12:34
:)
masak jnthn: yes. 12:35
:)
masak wonders if jnthn remembers the English/Dutch cross-language pun from Liz&Wendy
12:35 snearch left
jnthn masak: If it's the one that involves horses... :) 12:36
masak that's the one. 12:37
one can almost get it to work in German too, but one would have to say "Pfardon?" :P 12:38
12:40 V15170R joined
moritz_ almost. 12:44
12:45 kensanata joined
colomon oooo, do libraries have to be dynamic to work with zavolaj? that seems like it would make sense... 12:48
12:49 bluescreen joined
jnthn colomon: They need to work with dlopen/dlsym 12:50
12:50 flussence joined
flussence well that's annoying, my home box can't reach the outside world for some reason (even though ssh still works?) 12:51
colomon \o/ 12:53
(making a dylib did it!) 12:54
tadzik pfardon is what a horse says instead of "I'm sorry"? 12:57
jnthn :D 13:03
colomon Any idea how to return a string from a function using zavolaj? 13:04
flussence "sub Str foo()" should work
13:04 JimmyZ left, JimmyZ joined
flussence as long as it returns a char* in C, anyway 13:04
colomon but what happens to the memory pointed to by the char *? 13:05
masak tadzik: the Dutch word for 'horses' is 'pardon'. the rest of the joke is privmsg material, as this is a family channel. :)
JimmyZ tries to use zavolaj link to libevent and get segfault :(
flussence hmm, I'd imagine the common-sense thing would be that Parrot takes a copy of the string before the user code gets to see it... 13:06
(I don't really know what happens)
JimmyZ jimmy@ubuntu:~/rakudo$ ./perl6 event-lib.p6 #some function works, some segfault 13:08
1.4.13-stable 13:09
colomon flussence: I guess I can make it work if I treat the string as an opaque pointer. 13:10
takadonet morning all
jnthn JimmyZ: If they segfault then maybe the signature is wrong. 13:11
colomon is there a way to pass null as an opaque pointer?
jnthn colomon: Hmm...it may be that a type object maps to null...or should do.
flussence There used to be: pir::null__P(). Stopped working recently :( 13:12
13:12 felliott left
JimmyZ jnthn: there are two function returns 'const char *', so I use 'ruturns Str', one works, another segfault 13:12
13:12 redicaps left
JimmyZ *returns* 13:12
13:13 flussence_ joined
jnthn rakudo: my @a = 2, 3, 4; my ($f, *$o) := \(|@a); say $f.perl 13:16
p6eval rakudo 549d2a: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in 'infix:<:=>' at line 1␤ in main program body at line 22:/tmp/acjNyrQf2G␤»
jnthn rakudo: my @a = 2, 3, 4; my ($f, *@o) := \(|@a); say $f.perl
p6eval rakudo 549d2a: OUTPUT«\(\(2, 3, 4))␤»
jnthn rakudo: my @a = 2, 3, 4; my ($f, *@o) := @a; say $f.perl
p6eval rakudo 549d2a: OUTPUT«[2, 3, 4]␤»
13:17 MayDaniel joined
jnthn rakudo: my @a = 2, 3, 4; my ($f, *@o) := \@a; say $f.perl 13:17
p6eval rakudo 549d2a: OUTPUT«\(2, 3, 4)␤»
jnthn rakudo: my @a = 2, 3, 4; my ($f, *@o) := |@a; say $f.perl
p6eval rakudo 549d2a: OUTPUT«\(2, 3, 4)␤»
jnthn Hm
At least one of those should work.
masak aye. 13:18
jnthn rakudo: my @a = 2, 3, 4; my ($f, *@o) := @a.Capture; say $f.perl
p6eval rakudo 549d2a: OUTPUT«\(2, 3, 4)␤»
flussence_ oh, there I am 13:19
13:19 flussence left, flussence_ is now known as flussence
jnthn OK, that last one is surprisng. 13:19
colomon errr, is there a C function which can be cleverly used to convert an opaque char * to a Str?
strdup would do it, but non-standard and leaks memory.
jnthn Doesn't just Str work with that?
colomon jnthn: it's the memory management that has me worried 13:20
13:21 fhelmberger joined
colomon strcat will do 13:22
colomon just did his first successful BigInt math (and printed the result, which was the trickiest bit) 13:26
13:26 mtk left 13:28 learningg joined
learningg Hi! 13:28
Q: how to write this " /usr/bin/time -f %E /usr/bin/wget -p -q -O /dev/null " in perl?
masak learningg: you're probably looking for the channel #perl-help on irc.perl.org, where they will help you with Perl 5 questions such as that one. 13:29
learningg masak Thank You
colomon I reckon I can have a working BigInt library by sometime tomorrow, but it will be a pain in the arse to install.
masak learningg: you're welcome. good luck.
learningg masak, Thank You 13:33
JimmyZ jnthn: does zavolaj support callback fuction args?? 13:34
moritz_ is pretty sure it doesn't 13:35
13:36 JimmyZ_ joined, kaare_ left
jnthn JimmyZ: No 13:37
JimmyZ: They're on the todo list, but not done yet. 13:38
13:38 mtk joined 13:39 JimmyZ left, JimmyZ_ is now known as JimmyZ
JimmyZ great, that would be -O fun 13:41
jnthn suspects implementing them might be -Otricky :P 13:42
moritz_ ETOOMANYBIGOS 13:44
JimmyZ is curious how callback will pass into C lib.
13:44 MayDaniel left
masak moritz_: so you felt you had to add three more? :P 13:47
jnthn afk a little 13:49
tadzik reminds me of plobsing's mail to parrot-dev a while ago
"the cost of building these new annotations is probably between O(God No) and O(F@%#)"
13:50 karupanerura left
moritz_ masak: of course 13:50
masak ;) 13:51
tadzik: I liked that one :P
colomon > say Math::BigInt.new("131414212321313141") + Math::BigInt.new("1000000000000000000000000000000");
tadzik me too :) 13:52
colomon 1000000000000131414212321313141
tadzik hiya!
does it use the Parrot Bigint PMC?
colomon nope
it uses www.di-mgt.com.au/bigdigits.html 13:53
masak colomon++
colomon also, so far it only does .new, .Str, and infix:<+> :)
flussence rakudo: say '0x' X~ ([\~] '0' xx 4) 13:54
p6eval rakudo 549d2a: OUTPUT«0x00x000x0000x0000␤»
flussence rakudo: say '0x' X~ ([\~] '0' xx 4 Z~ '1')
p6eval rakudo 549d2a: OUTPUT«0x01␤»
flussence rakudo: say '0x' X~ (([\~] '0' xx 4) Z~ '1')
p6eval rakudo 549d2a: OUTPUT«0x01␤»
flussence er.g 13:55
rakudo: say '0x' X~ ([\~] '0' xx 4) Z~ '1' xx *
p6eval rakudo 549d2a: OUTPUT«0x010x0010x00010x00001␤»
flussence rakudo: say ('0x' X~ ([\~] '0' xx *) Z~ '1' xx *)[60..64]».Int.join(' ') 13:56
p6eval rakudo 549d2a: OUTPUT«1 1 1 1 1␤»
13:56 learningg left
flussence rakudo: say ('0x' X~ ([\~] '0' xx *) Z~ '1' xx *)[60..64].join(' ') 13:56
p6eval rakudo 549d2a: OUTPUT«0x00000000000000000000000000000000000000000000000000000000000001 0x000000000000000000000000000000000000000000000000000000000000001 0x0000000000000000000000000000000000000000000000000000000000000001 0x00000000000000000000000000000000000000000000000000000000000000001
..0x00000000000000…
flussence trying too hard as usual... :)
rakudo: say ('0x1' X~ ([\~] '0' xx *))[60..64]».Int.join(' ')
p6eval rakudo 549d2a: OUTPUT«-9223372036854775808 -9223372036854775808 -9223372036854775808 -9223372036854775808 -9223372036854775808␤»
flussence rakudo: say ('0x1' X~ ([\~] '0' xx *))[55..60]».Int.join(' ') 13:57
p6eval rakudo 549d2a: OUTPUT«-9223372036854775808 -9223372036854775808 -9223372036854775808 -9223372036854775808 -9223372036854775808 -9223372036854775808␤»
flussence facepalm
rakudo: say ('0b1' X~ ([\~] '0' xx *))[55..64]».Int.join(' ')
p6eval rakudo 549d2a: OUTPUT«72057594037927936 144115188075855872 288230376151711744 576460752303423488 1152921504606846976 2305843009213693952 4611686018427387904 -9223372036854775808 -9223372036854775808 -9223372036854775808␤»
flussence ISTR this broke horribly near the overflow value, but it seems to work now. 13:58
rakudo: say ('0b1' X~ ([\~] '0' xx *) Z~ '1')[59..62]».Int.join(' ') 13:59
p6eval rakudo 549d2a: OUTPUT«Method 'Int' not found for invocant of class ''␤ in main program body at line 22:/tmp/fvwmhZNomh␤»
colomon > my @crazy := Math::BigInt.new("1"), -> $x { $x * Math::BigInt.new("2") } ... *; say @crazy[100]
1267650600228229401496703205376
flussence huh
rakudo: say ('0b1' X~ ([\~] '0' xx *) Z~ '1' xx *)[59..62]».Int.join(' ')
p6eval rakudo 549d2a: OUTPUT«2305843009213693952 4611686018427387904 -9223372036854775808 -9223372036854775808␤»
flussence colomon: can it do factorial 700 yet? :) 14:00
tadzik you don't want Rakudo to do that :) 14:01
14:02 drbean left
moritz_ rakudo: say [*] 1..700 14:02
p6eval rakudo 549d2a: OUTPUT«Inf␤»
moritz_ that's a very good approximation :-)
colomon flussence: baby steps here. 14:03
mberends colomon++
colomon I don't think [*] works with it. hmmm. 14:04
14:04 timbunce left
moritz_ did you declare them as our multi infix:<*> etc? 14:05
colomon moritz_++ # forgot the our, now it works. 14:06
it says 50! is 30414093201713378043612608166064768844377641568960512000000000000, is that big enough for now 14:07
?
(might be an obiwan error in there.)
tadzik rakudo: say 50!
p6eval rakudo 549d2a: OUTPUT«===SORRY!===␤Confused at line 22, near "say 50!"␤»
tadzik blah
14:08 Axius joined
tadzik rakudo: sub postfix:<!> { [*] 1..$^n }; say 50! 14:08
p6eval rakudo 549d2a: OUTPUT«3.04140932017134e+64␤»
colomon oh, hey, that's right, at least to the first approximation
dalek ecza: 619094e | pmurias++ | cl-backend/backend.lisp:
[cl-backend] methods with 0 arguments
ecza: 07888da | pmurias++ | cl-backend/backend.lisp:
[cl-backend] remove bar method only used for testing
ecza: 79f1b8c | pmurias++ | cl-backend/backend.lisp:
[cl-backend] started loggin the stuff all the opcodes get compiled to
flussence colomon++
14:08 Axius left, Axius joined
flussence python2.6 agrees with the long answer 14:09
(it's nice that python has bigints built in, but I find it a horribly verbose language)
14:09 timbunce joined
mberends colomon: no, 50! is not big enough, it's still less than a googol. try 70! ;) ;) 14:09
colomon anyway, that's probably all the hacking time I've got this morning, I've got to get dressed and go with my wife to the surgeon's for a consult. 14:10
11978571669969891796072783721689098736458938142546425857555362864628009582789845319680000000000000000 # just for mberends
flussence nice\! 14:11
mberends :-) good to know you won't be hacking with the surgeon ;)
JimmyZ is failed in using libevent with zavolaj. he wants callback. 14:18
tadzik pokes masak 14:22
masak: how are your modules and their META.infos? 14:23
masak oh :) 14:24
tadzik colomon: poke, poke
masak I will have a slot for them tonight, promise :)
tadzik bah, sorry
cosimo: poke poke
masak tadzik: thanks for the reminder. :)
tadzik I could merge all this stuff in the new ecosystem
14:25 Axius left 14:27 V15170R left
jnthn back 14:29
colomon++ # Math::BigInt with Zavolaj! 14:32
dalek ecza: 0877070 | pmurias++ | cl-backend/backend.lisp:
[cl-backend] strip nam-ann when printing out the op tree
14:36
pmurias phenny: tell sorear the way classes and lexical classes are represented in nam seems very strange, could you look into it and change it and/or document why it makes sense 14:53
phenny pmurias: I'll pass that on when sorear is around.
pmurias: 01:45Z <sorear> tell pmurias yes.
dalek ar: 10444fb | pmichaud++ | skel/docs/announce/2011.01:
Add draft 2011.01 announcement.
14:54
ar: 76b5a91 | pmichaud++ | skel/docs/UsingPerl6-draft.pdf:
Update Using Perl 6 draft.
15:00
ar: 42b8770 | pmichaud++ | / (2 files):
Update Makefiles, Parrot config.
pmurias phenny: tell sorear what does the null nam opcode do? 15:03
phenny pmurias: I'll pass that on when sorear is around.
15:05 felliott joined
dalek ar: 85bd8b2 | pmichaud++ | skel/docs/announce/2011.01:
Update dates in 2011.01 release announcement.
15:05
ar: 465838a | pmichaud++ | skel/docs/announce/2011.01:
Add a note that compiler releases will continue monthly.
15:06 mberends left
jnthn pmichaud is has a commit! 15:08
masak \o/ 15:18
15:18 cafesofie joined
jnthn
.oO( He's a star! :P )
15:19
15:19 MayDaniel joined, kaare_ joined
pmichaud running spectests now 15:20
moritz_ would it be useful to write a command line parser in nqp-rx? 15:21
iirc the current one is written in PIR, and doesn't quite fit rakudo's needs
15:21 wtw left
moritz_ $ ./perl6 -f 15:21
===SORRY!===
Unable to open filehandle from path '-f'
15:21 Trashlord left
moritz_ I'd expect that to die from the unrecognized option 15:21
pmichaud I've always thought that HLL::Compiler's command line parser should work similar to Perl 6's command line parsing 15:22
particle++ even has a grant to work on that
moritz_ not sure I want to implement the full S19 madness :-) 15:23
pmichaud thus "similar to" and not "exactly like" :-)
moritz_ nods :-) 15:24
pmichaud and I still maintain there are parts of S19 that aren't realistic
15:24 Patterner left
moritz_ actually my approach was a bit different 15:27
I wanted to something with the cool new nqp-rx/nom
and stumbled over this big block of PIR for command line parsing
and thought that this might be a good and fun thing to attack 15:28
pmichaud it would be a very good thing to attack
moritz_ good
pmichaud +2 from me
moritz_ should I start in a different repo?
pmichaud I plan to move nqp-nom to be its own perl6/nqp repo
(after this weekend)
jnthn moritz_: No objections to nqp-rx/nom commits on my part 15:29
pmichaud you can manage it however you like.... and what jnthn++ said is what I was going to recommend :)
jnthn Though what pmichaud++ said - that branch is going to shuffle off to a repo of its own.
pmichaud easiest might be to implement it with a different method name for development and testing
jnthn And nqpclr and nqpjvm will move in to join it, I expect.
+1
pmichaud i.e., keep the existing one in parallel during development 15:30
moritz_ sure thing
jnthn That's what I've done for a lot of things. :)
Thus why we had a Cursor2 for a while. :)
pmichaud then there's no real problem with keeping it in master
15:30 Psyche^ joined, Psyche^ is now known as Patterner
pmichaud well, in the -nom branch until it becomes master :) 15:30
15:31 felliott left
jnthn would miss having a branch called nom... 15:31
...but the Rakudo branch to integrate 6model will probably be called that too. ;)
pmichaud \o/ I finally have my email inbox under 25 messages! 15:33
dalek ar: ee87d3c | coke++ | README:
Fix grammar-o
pmichaud coke++ 15:34
[Coke] my inbox is > 10K.
moritz_ jnthn: in nom, when I run 'make test' (and the built is out of date), I get some error during t/p6regex/01-regex.t 15:35
pmichaud mine usually hovers in the 100s, and after a period of absence from handling email it'll easily break 1K
moritz_ Null PMC access in find_method('new_type')
current instr.: 'parrot;Regex;Cursor;' pc 32 (src/Regex/Cursor.pir:38)
called from Sub '' pc 0 (src/HLL.pir:17)
... call repeated 1 times
15:35 wamba joined
moritz_ jnthn: any idea what's wrong? 15:35
pmichaud now I'm under 20 messages :-)
jnthn moritz_: Odd...make test doesn't run those for me... 15:36
moritz_ jnthn: neither does it for me... but it does in master
jnthn moritz_: Oh.
15:36 kst left
jnthn moritz_: Ah...maybe something is not loading the meta-objects. 15:36
moritz_: Or the 6model library
moritz_: Or the setup dynop is not being called
15:37 kst joined
jnthn moritz_: What does the p6regex tests run the test files with? 15:37
pmichaud now under 10 messages :)
(I'll stop here.)
moritz_ jnthn: I have no idea... I'll try to thoroughly clean everything, maybe it's a glob gone mad or so
01-regex.t doesn't appear in Makefile 15:38
"huh"
jnthn moritz_: It's probably be a prove call or something
moritz_ test: all core-test setting-test p6regex-test 15:39
p6regex-test: $(P6REGEX_PBC) prove -r --exec $(PARROT) t/p6regex
pmichaud if we're getting ready to embark on a new rakudo branch, should we see about cleaning up the existing branches in the rakudo repo? Obviously the 'alpha' branch should remain, and I can get rid of a lot of mine
moritz_ +1
jnthn I'll bet $(P6REGEX_PBC) doesn't actually work.
moritz_ P6REGEX_PBC = P6Regex.pbc 15:40
and that one exists
pmichaud I think he means that the .pbc itself fails
jnthn Right but it'll be busted.
moritz_ ok
jnthn I didn't do anything to make it init 6model.
pmichaud i.e., it hasn't been updated to .... right
jnthn If you can track down the .pir file it's made from, try adding the dynop setup call that's in src/NQP/Compiler.pir 15:41
15:41 felliott joined
jnthn (It's already smart enough to not double-init itself.) 15:41
pmichaud src/Regex/P6Regex.pir, likely
moritz_ yep
jnthn pmichaud: Did you see my Cursor patch last night?
pmichaud better is to put the dynop setup call into HLL/Compiler, I would think. 15:42
although perhaps it has to be in all .pbc's that use it
jnthn: no, my schedule topsy-turveyed again yesterday
jnthn pmichaud: OK, no hurry. It's just a nice one. :)
pmichaud: $!from and $!pos are stored as native ints now, which saves a load of boxing/unboxing. :) 15:43
pmichaud oooooh
I really need to get some good benchmarks together
jnthn pmichaud: Sadly Match isn't shuffled over to being a 6model object yet.
15:43 cjk101010 left
jnthn pmichaud: So we still have to box them to stick 'em in the Match object 15:43
But that's fixable.
moritz_ jnthn: copying the init stuff makes the build fail
jnthn moritz_: Joy... 15:44
moritz_: What with?
moritz_ /home/moritz/p6/nqp-rx/parrot_install/bin/parrot --library=src/stage1 src/stage1/nqp.pbc \ --target=pir --output=src/stage2/gen/hllgrammar-grammar.pir \ src/HLL/Grammar.pm
Null PMC access in isa()
current instr.: '_block11' pc 8 (gen/nqp-how.pir:10)
called from Sub '_block1124' pc 7166 (gen/nqp-how.pir:2802)
called from Sub '' pc 7173 (gen/nqp-how.pir:2805)
jnthn: maybe the dependencies on the ops are missing
pmichaud seems likely
here's a semi-big question about our build environment 15:45
jnthn moritz_: Hmm, maybe but that's not the error I'd expect for that.
moritz_: Maybe the dynpmcs are but...hm
pmichaud in the past, we always tied rakudo to specific parrot releases, because improvements to rakudo often required corresponding changes in parrot
s/releases/revisions/ 15:46
are we at a point now where Parrot is "stable" enough that it makes sense for us to tie to specific nqp revisions?
15:46 wallberg joined
pmichaud or will the reworking of nqp and rakudo imply more changes to parrot guts as it has in the past? 15:46
moritz_ pmichaud: I've been very glad in the past few months that it's relatively easy to build rakudo on a specific parrot revision (for bisecting etc.) 15:47
pmichaud: so I'd be unhappy to sacrifice that simplicity
pmichaud well, it might be much the same as now, only we tell nqp to build against a specific revision of parrot rather than tell rakudo to do it (more) 15:48
and the rakudo Configure script could simply pass the --parrot-config option along to the nqp it's building 15:49
the alternative would seem to be that Rakudo has to manage separate parrot and nqp installations 15:51
and I'd rather it be just one
(more)
[Coke] suggests that pmichaud end his sends with » when there's more.
(less typing. ;)
jnthn pmichaud: It's hard to guess how much changes to Parrot will happen, tbh.
er, will need to happen 15:52
[Coke] rakudo: [+] 1..∞
jnthn In order to unblock things.
p6eval rakudo 549d2a: OUTPUT«===SORRY!===␤Confused at line 22, near "[+] 1..\u221e"␤»
pmichaud jnthn: have you needed to do much changing to parrot guts for nqp-nom thus far?
[Coke] rakudo: [+] 1..Inf
jnthn pmichaud: I've not changed anything that I can recall.
p6eval rakudo 549d2a: OUTPUT«(timeout)»
pmichaud jnthn: right, so I'm guessing you've either saved up a lot of stuff to fix, or there's not a lot to change :) 15:53
jnthn pmichaud: Feels more like the latter at the moment.
pmichaud but I *know* that nqp-nom will have some significant changes as we do the new rakudo branch
jnthn pmichaud: Where is PAST etc going to live?
pmichaud so it seems easier to have rakudo depend directly on nqp, rather than have it depend on a version of parrot into which we've imported nqp
15:54 felliott left
[Coke] +1 15:54
pmichaud ultimately I expect nqp-nom will have its own PAST::Compiler
jnthn How soon do you expect that? (more)
I expect to need some additions there at some point soon.
pmichaud I'd expect sooner rather than later, then.
but still, that seems like it can be hidden behind nqp-nom changes (which have to be concurrent) 15:55
15:55 am0c left
jnthn Right. 15:55
pmichaud okay, just checking.
noted that we want an easy way to test parrot changes against nqp and rakudo... I'll preserve that somehow 15:56
I suspect it will be even quicker to locate problems because building nqp will be a prereq to building rakudo in this system
(and nqp often finds problems in parrot as quickly as rakudo does)
s/as quickly/more quickly/
15:57 felliott joined
pmichaud when we did the original ng branch of rakudo, one of the reasons I went ahead and put nqp-rx into parrot and used that was that our configuration system was still relying on subversion sequential revision numbers, and I didn't want to spend a lot of time trying to fix that for git 15:57
that issue no longer exists, of course :) 15:58
jnthn :) 15:59
pmichaud++ # shaving these yaks :)
16:00 Trashlord joined 16:03 JimmyZ left 16:09 kst left, kst joined
pmichaud okay, I've uploaded the 2011.01 star tarball to github... will publish the release note after lunch 16:11
16:11 cafesofie left
pmichaud if anyone encounters any issues with the tarball, let me know :) 16:12
(I just downloaded a copy from github and I'm building/retesting now)
(last month there were some issues with the download file, iirc)
afk, lunch 16:13
sorear good * #perl6 16:17
phenny sorear: 14:53Z <pmurias> tell sorear the way classes and lexical classes are represented in nam seems very strange, could you look into it and change it and/or document why it makes sense
sorear: 15:03Z <pmurias> tell sorear what does the null nam opcode do?
16:17 kensanata left 16:29 vmspb joined
sorear pmurias: the null opcode produces a typed null pointer; most of the nam types support nulls 16:30
pmurias sorear: hi 16:32
16:32 kst left
sorear hi. 16:32
pmurias sorear: what does the argument mean?
sorear It's the type.
pmurias and so what is null('var')? 16:34
a null reference? 16:35
16:35 justatheory joined
moritz_ nqp: [1, 2] 16:36
p6eval nqp: ( no output )
16:36 kst joined
moritz_ nqp: say([1, 2]) 16:36
p6eval nqp: OUTPUT«2␤»
16:37 cafesofie joined
moritz_ is any nqp::foo stuff implementedß 16:40
s/ß/?/ 16:41
16:42 MayDaniel left
jnthn moritz_: Not yet. 16:42
moritz_: Well
moritz_: Not yet in Parrot's NQP
We need a place to document the available NQP ops and then to get mappings of them overall all VMs, I suspect. 16:43
16:47 envi left
sorear pmurias: yes 16:47
pmurias: don't let null('var') escape into Perl6-space
dalek ecza: b708fda | pmurias++ | docs/nam.pod:
partly document nam op methodcall
16:48
ecza: b1d83be | pmurias++ | docs/nam.pod:
Document nam op null.
16:48 Guest54166 left
dalek ecza: 8875eb5 | pmurias++ | docs/nam.pod:
Document nam op const.
16:48
pmurias sorear: what do we need null('var') for?
sorear initializing local variables 16:49
especially, locals in CgOp blocks 16:50
see for instance SAFE.setting line 474 16:51
dalek p-rx/nom: 94c8f60 | moritz++ | build/Makefile.in:
install dynops and dynpmcs
jnthn moritz__++
pmurias sorear: what does rnull do?
sorear there used to be a lot more lines like that, but improvements in the optimizer and expansions of the C# core have squeezed Q:CgOp's role :) 16:52
moritz_ jnthn: you can tell I used nqp from a non-build directory :-)
sorear (rnull A B C) = (prog A B C {Nil})
Q:CgOp has to return a value; use rnull if you don't have a value to return 16:53
rnull should probably be called rnil now; it predates Nil and had to use null('var') once
jnthn moritz_: I hadn't done that yet. :)
moritz_ jnthn: is there an example of how to write a constructor somewhere in nom?
pmurias couldn't we just replace (rnull ...) with (prog A B C {Nil})? 16:54
moritz_ jnthn: nm, found it
sorear pmurias: I was tired of typing the long form 16:55
16:56 MayDaniel joined 16:58 wallberg left
pmurias sorear: is the {} using Nil from the CORE rather then the one from the lexicall scoped specced somewhere? 17:00
jnthn moritz_: BTW classes inherit from NQPMu by default 17:01
moritz_: And get new from it
iirc
17:01 MayDaniel left
moritz_ jnthn: yep, but it's a .new() without arguments 17:01
that's why I want to write my own 17:02
jnthn ah, gotcha. :) 17:03
moritz_ hm, but BUILD doesn't exist in NQPMu
ah, I have to write my own
jnthn moritz_: Yeah, I've still got a few bits to get through there. 17:04
dalek ecza: 6442d8f | pmurias++ | docs/nam.pod:
document nam op rnull
17:04 snearch joined
pmurias sorear: you should check that i don't put incorrect stuff in doc/nam.pod 17:05
17:07 wamba left 17:14 V15170R joined
vmspb perl6: say (1,2 X 3,4).perl 17:16
p6eval pugs, rakudo 549d2a: OUTPUT«((1, 3), (1, 4), (2, 3), (2, 4))␤»
..niecza v1-196-g0877070: OUTPUT«Unhandled exception: Cross products NYI␤ at /home/p6eval/niecza/lib/SAFE.setting line 377 (SAFE die @ 2)␤ at /home/p6eval/niecza/lib/SAFE.setting line 1020 (SAFE infix:<X> @ 2)␤ at /tmp/rQsOXcSoGo line 1 (MAIN mainline @ 3)␤ at
../home/p6eval/niecza/lib/SAFE.setting line 1037 (SA…
vmspb perl6: say (1,2 X 3,4 X 5,6).perl
17:16 zby_home joined
p6eval rakudo 549d2a: OUTPUT«No applicable candidates found to dispatch to for 'infix:<X>'. Available candidates are:␤:(Any $lhs, Any $rhs)␤␤ in main program body at line 22:/tmp/Ee00B27rmj␤» 17:16
..niecza v1-196-g0877070: OUTPUT«Unhandled exception: Cross products NYI␤ at /home/p6eval/niecza/lib/SAFE.setting line 377 (SAFE die @ 2)␤ at /home/p6eval/niecza/lib/SAFE.setting line 1020 (SAFE infix:<X> @ 2)␤ at /tmp/hr1YYo_2ye line 1 (MAIN mainline @ 4)␤ at
../home/p6eval/niecza/lib/SAFE.setting line 1037 (SA…
..pugs: OUTPUT«((1, 3, 5), (1, 3, 6), (1, 4, 5), (1, 4, 6), (2, 3, 5), (2, 3, 6), (2, 4, 5), (2, 4, 6))␤»
masak pugs++
vmspb: it's a bit output-intensive to use 'perl6: ', so unless you're explicitly interested in *all* implementations, please use 'rakudo: ' or similar. 17:17
output-intensive as in, it consumes backlog :P
17:22 daxim left, Zapelius joined
[Coke] rakudo: say π 17:23
p6eval rakudo 549d2a: OUTPUT«Could not find sub &π␤ in main program body at line 22:/tmp/Jnrky0hRPs␤»
[Coke] is sad.
sorear pmurias: as a general rule, I like to only allow shadowing for symbols explicitly mentioned in the source, although there are still a lot of bugs, and I don't think it's specced 17:25
17:26 bluescreen left, kthakore left 17:27 nothingmuch left 17:28 kthakore joined
masak [Coke]: last I looked, π wasn't in latin-1. 17:28
17:29 mberends joined
flussence (it's in greek-1) 17:30
sorear pmurias: most of this started when I was trying to port STD over - it was failing very horribly and opaquely
I eventually figured out that STD::Regex was shadowing CORE::Regex and using the wrong type was breaking things 17:31
V15170R rakudo: multi sub postfix:<π> (Real $n) { 355/113 * $n }; say 2π; 17:32
p6eval rakudo 549d2a: OUTPUT«6.28318584070797␤»
TimToady rakudo: constant π = pi; 17:33
p6eval rakudo 549d2a: OUTPUT«===SORRY!===␤Constant type declarator not yet implemented at line 22, near "= pi;"␤»
V15170R can i define a multi that accepts both real and Int or do I have to declare two subs? 17:34
17:34 nothingmuch joined, GinoMan joined
moritz_ V15170R: role Real accepts Num, Rat and Int 17:34
17:34 cdarroch joined, cdarroch left, cdarroch joined
moritz_ and Numeric the same, plus Complex 17:34
V15170R nice :)
rakudo: multi sub postfix:<π> (Real $n = 1) { 355/113 * $n }; say 2π; say π; 17:35
TimToady perl6: constant π = pi;
p6eval rakudo 549d2a: OUTPUT«6.28318584070797␤Could not find sub &π␤ in main program body at line 22:/tmp/sxEKBwbteg␤»
rakudo 549d2a: OUTPUT«===SORRY!===␤Constant type declarator not yet implemented at line 22, near "= pi;"␤»
..pugs: OUTPUT«decodeUTF8': bad data: '\960'␤*** ␤ Unexpected "="␤ expecting ":" or "("␤ at /tmp/nI2CiiFRBo line 1, column 12␤»
..niecza v1-200-g6442d8f: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'pi' used at line Any()1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/SAFE.setting line 377 (SAFE die @ 2)␤ at /home/p6eval/niecza/src/STD.pm6 line 1174 (STD P6.comp_unit @ 71)␤ at
../home/p6eval/niecza/s…
17:36 rgrau joined
pmurias TimToady: if somebody lexically redefines Nil should empty blocks return the value from CORE or the one defined by the user? 17:39
17:40 bluescreen joined
masak redefining Nil! soon you'll be wanting to redefine builtins or augment core classes! :P 17:43
V15170R rakudo: multi sub postfix:<;> (Real $n) { $n + 1 }; say 3; 17:52
p6eval rakudo 549d2a: OUTPUT«4␤»
pmurias masak: augment core classes?! do i look like a rubyist? ;) 17:54
masak pmurias: but think of the possibilties! we can mix database access into... everything! o.O 17:55
17:55 pmurias left
masak oh noes, I scared away pmurias... :/ 17:55
PerlJam masak: It's all funny until someone takes you seriously. ;-) 17:56
How do you think ActiveRecord and such happened in Ruby?
17:56 mtk left
moritz_ in p6 we have different reprs for that 17:56
PerlJam someone was joking around and someone else thought "hey, that's a good idea" and did it
masak :P
V15170R rakudo: multi sub postfix:<;> (Real $n) { $n + 1 }; say 3; ; sub thisDoesSomething { return 100; }; say thisDoesSomething;
p6eval rakudo 549d2a: OUTPUT«4␤102␤»
17:57 mtk joined
V15170R redefining ; seems like a good way to troll co-workers :) 17:57
masak V15170R: :)
why 102?
moritz_ V15170R: now add a state variable to psotfix:<;>
masak doesn't get it
V15170R the ; after 100 and the ; after thisDoesSomething i guess 17:58
moritz_ aye
17:59 jarfhy joined
pmichaud back from lunch (for a bit) 17:59
17:59 dakkar left
jnthn pmichaud: Got a moment for a question? 17:59
Relates to PAST nodes and natively typed things. 18:00
pmichaud go ahead 18:01
18:01 timbunce left
jnthn It's all about PAST::Var, really. 18:02
PAST::Var with :scope('attribute') at the moment always presumres that we'll be getting an object (in Parrot, a PMC).
What is the correct way to extend PAST to indicate otherwise?
18:03 ggoebel left
jnthn In the future, the same question will apply for PAST::Var with type lexical, and I guess register too. 18:03
pmichaud the primary reason that PAST::Var exists is because of the need to handle vivification and lvalue-ness
otherwise it could all be done with PAST::Op 18:04
jnthn Well, I still want the l-valueness.
V15170R moritz_: a "static" variable?
pmichaud in the sense of a 'bind', yes?
moritz_ V15170R: yep
jnthn pmichaud: Yes, exactly that.
pmichaud okay
moritz_ alpha: sub f { state $x++ }; say f, f, f, f, f
p6eval alpha : OUTPUT«Use of uninitialized value␤1234␤»
pmichaud looking
jnthn pmichaud: On a related matter, at the moment PAST::Var with :scope('parameter') always puts the parameter into a lexical. Unconditionally. 18:05
I ponder that a parameter_register or some such could be good.
Well, something that allows that capability would be good
I'm not in the slightest attached to that naming or way of enabling it. 18:06
V15170R rakudo: multi sub postfix:<;> { state $^a + 1 }; say 3; ; sub thisDoesSomething { return 100; }; thisDoesSomething; 18:07
p6eval rakudo 549d2a: OUTPUT«===SORRY!===␤"state" not yet implemented at line 22, near "+ 1 }; say"␤»
pmichaud what would be generated for fetching a non-PMC, attribute, ooc?
s/,//
jnthn At the moment it's $I0 = repr_get_attr_int obj, type_obj, name
(Note that getting an attribute just by name without saying what class it's associated with is not supported - at least, not by P6opaque...since attributes are always scoped to exactly one class.) 18:08
pmichaud is there something in the PAST representation that associates the attribute name with its type?
or does the compiler have to know and keep track of that?
by 'type' I mean I/S/N/P 18:09
jnthn Not at the moment. (more)
The other part of the story is that I think we need a general :type(...) thing available on all PAST nodes.
:returns just holds a name.
pmichaud what would the :type hold? 18:10
jnthn But we need something that holds a meta-object.
er
type object sorry
pmichaud :returns could hold a type object
jnthn Yeah but...too much history of not doing. :/
pmichaud strings are just shortcut conveniences
jnthn I don't want to have to go and add "is it a string" checks.
pmichaud in general any attribute ought to be able to hold any past
18:10 ggoebel joined
jnthn I'd rather be able to be promised "what is in :type is a type object" 18:10
pmichaud is it a type object, or code to access a type object? 18:11
jnthn Anyway, if you know the type object you can find out from that if it's int/num/str
It's a type object.
pmichaud and I guess we're guaranteed that the type object exists at the time the PAST is being generated?
jnthn The bigger picture here is that when we hit class Foo { we do ClassHOW.^new_type(name => 'Foo') 18:12
Yes, that's where I'm heading with this.
pmichaud what about use Foo;
jnthn That happens at BEGIN time already.
pmichaud what about a precompiled module containing use Foo;
jnthn So after we've parsed it, we then have a way to go and find the type objects we want. 18:13
Well, that's where the whole bounded serialization stuff comes in.
I don't want to try and do that right away.
pmichaud my point being that the precompiled module doesn't contain Foo
jnthn ?
Oh
Yes, for now we'll have to both create it at compile time *and* emit code for the pre-compiled case that can construct it. 18:14
pmichaud locate it
not construct it
jnthn Ideally, yes.
But we need all the serialization stuff in place for that to really work.
pmichaud I don't see what that quite has to do with serialization, but okay. 18:15
jnthn I didn't want to do that in the same refactor.
Imagine we have
class Foo { }
And we pre-compile that code
Because the type object is needed at compile time, we'd have created it as we compiled. 18:16
However, when we load that pre-compiled module Foo needs to exist.
Ideally we'd have serialized the one we make at compile time.
And stashed it away in the bytecode.
Well, we will have to do that somehow 18:17
pmichaud right
jnthn The line between serialization and construction is blurry. :)
pmichaud but the loading module doesn't construct Foo, it simply finds Foo
after it loads it from the serialized bytecode
jnthn Oh, yes, sorry. I mis-read.
Yeah, you're right. I mis-parsed.
pmichaud okay, back to attribute 18:18
so, :type would be on the PAST getting the 'self' object?
jnthn Yes.
Which itself would be a PAST::Var node, I guess.
pmichaud I guess we'd never do attribute fetches on objects returned from other methods or subs? 18:19
jnthn You *can*
You just have to be sure of their type.
Also note that this is for the P6opaque REPR. (more)
It's completely possible to write a REPR that doesn't care for the class handle.
We'll probably have some extra ones that suit other language's views of OO. 18:20
Parrot has always had a PPPs form of get_attribute, and PAST has always had a 2-child form that supports this, fwiw. 18:21
pmichaud okay
jnthn It's just that...we never used it. :)
pmichaud right, I don't have a problem with needing the class information to fetch the attribute
I'm just trying to make sure that requiring the class information doesn't preclude us from operations we need 18:22
jnthn OK. I just wanted to convey that it's needed for Perl 6, but we're not boxing ourselves out of supporting other languages with no such needs.
We actually get attribute inheritance wrong in Rakudo today. :/
pmichaud I know we need it for Perl 6, but there's a difference between saying "we need it to support this part of Perl 6" and "all operations in Perl 6 have to use this interface"
anyway, I think I'm okay with :type except for the name 18:23
jnthn :)
pmichaud not sure what to use instead 18:24
18:24 ggoebel left
jnthn :type_obj 18:24
hmm...not sure I like that
pmichaud I'd prefer :type over :type_obj
jnthn :typeobject is a bit long
pmichaud anyway, let's go with :type for now then -- we can change it later if I think it's important. it may grow on me.
jnthn OK :)
pmichaud so, updating PAST::Var becomes fairly simple then 18:25
jnthn Yeah, that deals with various aspects of it.
Only leaves the "parameter that goes in a register" case.
pmichaud in the 'attribute' method, you just check the :type of the PAST representing 'self' and query that object for the attribute to find out what kind of thing you'll be getting back so you know what instruction to emit
jnthn Which is a separate issue.
Yes, that's a good summary.
pmichaud oh, ooc, would it be a good idea (or too difficulty) to prefix our custom ops with nqp_ or something like that? 18:26
18:26 plobsing left
pmichaud *difficult 18:26
that way parrot could adopt some of them by dropping the nqp_ prefix without any concern for conflict 18:27
18:27 cafesofie left
jnthn Hmm 18:27
pmichaud most of the opcode names ought to be in generated code anyway
jnthn We could do. (more)
I actually want to try and get nqp::foo in place with some mapping functionality
That way the transition is even easier. :)
pmichaud that shouldn't be too hard at all
jnthn Anyway, no objection at all to changing the op names to have a prefix. 18:28
pmichaud just follow the same mechanism that PAST::Compiler does for piroptable
but make it nqpoptable
or nqppirtable
or something like that
18:28 ggoebel joined
jnthn OK :) 18:29
pmichaud and feel free to add a :nqpop to PAST::Op, I think. (not sure if that belongs in PAST or in NQP)
jnthn I'm only so attached to the name :nqpop. (more)
pmichaud there's a bit of a question as to whether PAST or NQP should be doing the translation to the backend
jnthn I'd prefer something that conveys that it's an abstraction over backend/vm operations.
It feels kinda external to NQP.
pmichaud well, "nqp" is abstraction
jnthn True :)
pmichaud if we think of nqp as being our tool for abstracting over vm backends 18:30
jnthn True, I can see it that way too :)
pmichaud (nqp being the entire system, not just the compiler portion)
jnthn *nod*
Focusing on the name NQP is probably good. The name PCT is slightly awkward when we have extra backends. :) 18:31
Or we could just say "oh, the P means Portable" ;)
18:31 _jaldhar left
jnthn is quite excited about the potential to write a compiler once and have it both run on and generate code for multiple backends :) 18:32
pmichaud: Anyway, adding :nqpop will let me eliminate a bunch of differences between nqpclr+nqpjvm vs nqparrot 18:34
pmichaud right
that might need to be something that happens as/when we move our new version of PAST out of the Parrot repo
jnthn OK
What is your expected timeline for us to do that? (more)
On the one hand, I could do with :type to add the natively typed attributes support to NQP. On the other hand, I've tested the functionality from PIR and don't have an immediate use case for accessing it from NQP. 18:35
As in, I can cope a couple of weeks probably without having to do that switch. 18:36
pmichaud I'm not sure of the timeline. a couple of weeks doesn't sound too farfetched, depending on other things in my world
jnthn s/switch/feature/ :)
OK
pmichaud it wouldn't bother me for :nqpop to appear in Parrot's PAST, though, either. 18:37
or perhaps the translation temporarily exists in NQP's actions
with the expectation that it'll ultimately appear in a new PAST
jnthn OK, then we've got a bunch of options.
pmichaud anyway, I'd say don't let it become a blocker for you
jnthn *nod*
18:37 bluescreen left
jnthn The natively typed parameters issue only needs resolving when we go to move Cursor to NQP. 18:38
pmichaud because of speed, or what? 18:39
jnthn Right
GC churn too
It'd be silly to box just for the sake of crossing the call boundary
pmichaud okay
jnthn Especially when we are goign to stick the thing into a natively typed attribute slot :)
*going
Well, it's not "going to" any more either. :) 18:40
We do. :)
Anyway, I think that's all of the things I wanted to ask.
Thanks!
pmichaud Release announcements posted 18:48
jnthn pmichaud++
18:50 bluescreen joined
jnthn pmichaud: Looks good. 18:51
OK, time for me to find some dinner. :) 18:53
18:54 mberends left
sorear jnthn: Doesn't the P stand for Patrick? 18:57
frettled pmichaud: hmm, the subject of the e-mail announcement says Rakudo Star 2010.12 :) 19:00
masak pmichaud++
frettled But it's correct on rakudo.org.
masak if only it were the other way! ;)
frettled That would be easier to fix, yes :D
That reminds of people sending "recalls" of emails. 19:01
19:01 MayDaniel joined 19:03 plobsing joined
pmichaud oops 19:04
19:04 ggoebel left
pmichaud forgot to change the subject line, yes. 19:04
oh well. 19:05
2010.12 was released also
I'll send a followup.
I'll just re-send.
19:05 ggoebel joined
pmichaud re-sent. 19:06
jnthn oh, I didn't even notice that... :) 19:12
19:15 dukeleto left, dukeleto joined 19:18 MayDaniel left 19:24 ggoebel left 19:27 V15170R left 19:31 ggoebel joined
sorear jnthn: I need help figuring out how native types are supposed to work. 19:40
19:46 dukeleto left, dukeleto joined 19:47 MayDaniel joined 19:50 xinming_ left, xinming joined 19:55 cafesofie joined 19:56 cafesofie left 20:00 kst left
moritz_ rakudo: pir::die("OH NOEZ") 20:00
p6eval rakudo 549d2a: OUTPUT«OH NOEZ␤ in main program body at line 22:/tmp/KjUHIdzci3␤»
20:00 kst joined
moritz_ rakudo: say pir::isa(pir::new('Undef'), 'Undef') 20:02
p6eval rakudo 549d2a: OUTPUT«1␤»
20:03 saaki left
jnthn sorear: What aspect of them? 20:03
sorear: Also, note that I'm still working a bunch of stuff out as well :)
sorear jnthn: Aspects of them that require hard thinking. :)
jnthn :P 20:04
sorear You seem to have a rather involved idea set up with inlining and repr fanciness
jnthn sorear: At the moment, I consider the notion of whether something can be stored as a native type as a question that its REPR can answer.
sorear thinks "steal stealable stuff from 6model" would make a good Feb minigoal 20:05
jnthn So P6opaque - which knows how to store native or value-y things - asks the REPR of the type its attributes declare what they want.
The way I have it, stuff where you have a role Foo[::T] { has T $!x } should "just work" and allocate compact storage when a value for T is passed in like, say, int. 20:07
The other piece of the puzzle is
my int $x = ...
What is assignable?
The answer as I have it so far is "things that know how to unbox as an int"
So Int does
But it doesn't preclude people from creating their own types that would do the same thing. 20:08
Things may change as I dig into the Rakudo-on-6model work. 20:09
But what's there now is my best attempt to get it rightish so far. :)
20:09 saaki joined
moritz_ jnthn: I sometimes get "get_attr_str() not implemented in class 'RakudoObject'" on parse or other compile time errors... do you know what that usually means? 20:10
sorear jnthn: I don't *really* understand the role of the REPR in all of this
jnthn: roles parametrized by types don't particularly make sense either 20:11
moritz_ why not?
don't you have that all the time in various languages?
hash<int> etc. 20:12
sorear If I knew why I didn't understand something, I'd understand it
jnthn moritz_: Yes - it's almost always the same thing.
sorear it's not generics in general that baffle me, it's their interaction with other Perl 6 notions
jnthn moritz_: When accessing attributes stored in a P6opaque, one now has to always specify the class where the attr was declared. Not just a name. 20:13
moritz_: I changed most instances where that wasn't already fixed up, but I probably missed some. Either feel free to hunt it down or pass me backtace or info on how to reproduce.
er, how to reproduce the bug
:P
sorear: A role declaration is really declaring a role "factory". 20:14
masak I've always seen REPR as the stuff that objects are made of.
moritz_ jnthn: will golf down
sorear masak: in the presence of native types, the question must be asked, "What do you mean by object?" 20:15
jnthn sorear: As for representations - they're just things with an API of some kind responsible for the storage of an object.
sorear I'm spoiled by Haskell, I'd like to see denotational semantics for all your words :)
jnthn Oh my, it's been a few years since I did those. :P
moritz_: Thanks. 20:16
moritz_ jnthn: nqp -e 'while 1 { '
jnthn sorear: I'll try and blog a bit more on the native type stuff, once it settles down some more in my brane. :)
moritz_ produces that error message 20:17
20:17 coldhead joined
moritz_ jnthn: seems that FAILGOAL in Cursor.pm has $P0 = getattribute self, '$!target' 20:19
colomon john.freml.in/lisp-features -- are these all available in p6 as well? ;) 20:20
dalek p-rx/nom: 4ba2dc2 | jonathan++ | src/Regex/Cursor-builtins.pir:
Fix incorrect attr access spotted by moritz++.
20:21
jnthn moritz_: Yes, that was it. :)
20:22 ggoebel left, ggoebel joined
PerlJam colomon: heck, Perl *5* has 2 of those 20:23
moritz_ \o/ if that means I get better error messages :-)
PerlJam colomon: well, it sorta has #1, so maybe Perl 5 has 1.5 of those :) 20:24
sorear Perl and Lisp have a long history of comparison 20:25
jnthn moritz_: Yes, the error looked a bunch saner. 20:26
sorear don't ask TimToady about "oatmeal with fingernail clippings mixed in"
20:26 y3llow_ joined
PerlJam sorear: that's one of my favorite quotes. It makes me a little giddy to this day :) 20:26
20:26 pothos_ joined
PerlJam as does mjd's RETARDO quote. 20:27
20:27 ChanServ sets mode: +v _ilbot, ChanServ sets mode: +v aloha
colomon RETARDO? 20:27
20:27 ChanServ sets mode: +v phenny 20:28 ChanServ sets mode: +v IRSeekBot, y3llow left, y3llow_ is now known as y3llow, pothos left 20:29 pothos_ is now known as pothos
PerlJam colomon: See en.wikiquote.org/wiki/Mark_Jason_Dominus 20:29
20:29 bluescreen left
colomon nice 20:30
PerlJam I should edit that article. The original uttering was in all caps on IRC. 20:31
masak PerlJam: please do.
PerlJam Well, I ALLCAPPED it, but I can't find my IRC logs where he first said it, so they may have been purged by now. 20:33
coldhead new rakudo, woot
i feel so alive 20:34
PerlJam but you're head is so cold
s/you're/your/
masak PerlJam: he's just not getting hot-headed, that's all.
20:41 ggoebel left, TomH_ joined 20:45 bluescreen joined, TomH_ left 20:46 wooden left, cafesofie joined 20:47 mkramer1 left, ggoebel joined
masak PerlJam: since you like the RETARDO quote, have you heard the quote by Babbage? that one makes me a little giddy each time I think of it. 20:51
it's actually a longer, more eloquent version of the MJD quote. 20:52
'On two occasions I have been asked,—"Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?" In one case a member of the Upper, and in the other a member of the Lower, House put this question. I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.'
I'm sure if Babbage had grokked the term RETARDO, he'd have approved. :) 20:53
20:55 Chillance joined 20:58 cafesofie left
colomon rakudo: say 1234567890098765432100123456789 21:00
p6eval rakudo 549d2a: OUTPUT«5466656383893124373␤»
colomon bother
masak that's not right... :) 21:02
diakopter rakudo: say 123456789009876543210012345678997575839278972398796010192837409871309871039846784749863018970193847 21:05
p6eval rakudo 549d2a: OUTPUT«7759554590699921335␤»
diakopter pugs: say 123456789009876543210012345678997575839278972398796010192837409871309871039846784749863018970193847
p6eval pugs: OUTPUT«123456789009876543210012345678997575839278972398796010192837409871309871039846784749863018970193847␤»
diakopter perlesque: say 123456789009876543210012345678997575839278972398796010192837409871309871039846784749863018970193847
p6eval perlesque: OUTPUT«␤Unhandled Exception: System.OverflowException: Value is too large␤ at System.Int64.Parse (System.String s) [0x00000] in <filename unknown>:0 ␤ at sprixel.perlesqueParser.emitCode (sprixel.Env e, Antlr.Runtime.Tree.CommonTree node, Antlr.Runtime.Tree.CommonTree nextNode,
..sprixel.…
diakopter perlesque: say(BigInteger.Parse('123456789009876543210012345678997575839278972398796010192837409871309871039846784749863018970193847')) 21:08
p6eval perlesque: OUTPUT«123456789009876543210012345678997575839278972398796010192837409871309871039846784749863018970193847␤»
diakopter perlesque: say(BigInteger.Parse('123456789009876543210012345678997575839278972398796010192837409871309871039846784749863018970193847')/BigInteger.Parse('123456789009876543210012345678997575'))
p6eval perlesque: OUTPUT«1000000000000000000000000000000000006798159737749648517056334668␤»
sorear niecza: say 123456789009876543210012345678997575839278972398796010192837409871309871039846784749863018970193847
p6eval niecza v1-200-g6442d8f: OUTPUT«1.23456789009877E+98␤»
sorear I'm suprised that worked 21:09
diakopter :)
masak by my calculations, I have 13 projects up on modules.perl6.org -- I'm now going to traverse them and apply ttjjss.wordpress.com/2011/01/08/per...and-ideas/ to them.
sorear fsvo "worked"
diakopter perlesque: 21:10
p6eval perlesque: ( no output )
diakopter perlesque: say(BigInteger.Parse('123456789009876543210012345678997575839278972398796010192837409871309871039846784749863018970193847123456789009876543210012345678997575839278972398796010192837409871309871039846784749863018970193847123456789009876543210012345678997575839278972398796010192837409871309871039846784749863018970193847')/BigInteger.Parse('12345678900987654321001234567899757512345678900987654321001234567899757583927897239879601019283740987130987
p6eval perlesque: OUTPUT«unhandled node type: <invalid>␤Statement_list 1␤ Statement_list 2␤ Sub_declaration 3␤ METHODNAME say(␤ Statement_list 1␤ Statement_list 1␤ Infix_expr 1␤ Infix_expr 1␤ Infix_expr 1␤ Infix_expr 1␤ Infix_expr 1␤ Infix_expr 1␤
..Ta…
diakopter hm
sjohnson yikes.com
21:10 Mowah left
diakopter perlesque: say(BigInteger.Parse('123456789009876543210012345678997575839278972398796010192837409871309871039846784749863018970193847123456789009876543210012345678997575839278972398796010192837409871309871039846784749863018970193847')/BigInteger.Parse('123456789009876543210012345678997575')) 21:11
p6eval perlesque: OUTPUT«1000000000000000000000000000000000006798159737749648517056334668095037397097658022482563187835010252658843907006108399984473589776279160572358762168414952625921106␤»
diakopter even
<sigh> oh, I got the logic backwards. try Int32.Parse first, then try Int64.Parse only if that fails, then try BigInteger.Parse if that fails.. 21:12
diakopter goes to fix
21:13 bluescreen left 21:15 plobsing left 21:17 pmurias joined 21:19 pjcj left 21:21 MayDaniel left
dalek rixel: 14c24b9 | diakopter++ | sprixel/ (3 files):
enable BigInteger parsing from raw integer literal inputs
21:23
masak tadzik: ping
21:29 snearch left
masak rakudo: say "Holy $_(), Batman! This fake Japanese is really $_()!" given sub fake-japanese { [~] map { <h k r t>.roll, <a i o u>.roll }, ^5 } 21:30
p6eval rakudo 549d2a: OUTPUT«Holy kikorohuro, Batman! This fake Japanese is really korikikora!␤»
colomon somehow defining multi sub infix:<+> in my Math::BigInt class is stopping class methods from being able to see the normal infix:<+> operators.... :\ 21:31
sorear points masak the way of Lingua::JA::Romaji::Valid
masak sorear: thanks ;)
21:36 alester joined, cafesofie joined 21:37 zby_home left
jnthn colomon: Declare it "our multi sub ..." for now. 21:38
colomon: Will be fixed with the other multi changes.
21:42 kst left 21:43 kst joined
colomon jnthn: it is declared "our multi sub" already, alas. 21:45
21:47 pjcj joined 21:49 felliott left
jnthn colomon: Oh. :( 21:52
colomon rakudo: class A { has $.a; method blue($n) { say $.a + $n; }; our multi sub infix:<+>(A $a, A $b) { A.new(:a($a.a + $b.a)); }; }; say A.new(:a(10)).blue(42) 21:53
p6eval rakudo 549d2a: OUTPUT«No applicable candidates found to dispatch to for 'infix:<+>'. Available candidates are:␤:(A $a, A $b)␤␤ in 'A::blue' at line 22:/tmp/OvBw3dlA0t␤ in main program body at line 22:/tmp/OvBw3dlA0t␤»
colomon golfed in one!
dalek vember: 302e4f8 | masak++ | META.info:
[META.info] added
colomon rakudo: class A { has $.a; method blue($n) { say $.a + $n; }; multi sub infix:<+>(A $a, A $b) { A.new(:a($a.a + $b.a)); }; }; say A.new(:a(10)).blue(42) 21:54
p6eval rakudo 549d2a: OUTPUT«52␤Bool::True␤»
jnthn Oh, curious.
But in the second case you've hidden all of the other definitions of + 21:55
OTOH, if you write it like that now and it works, then it'll keep on working when the multis get fixed. :)
colomon taking a slew of "our"s out of my code seems to have made the situation much better.
21:56 felliott joined
jnthn :) 21:56
colomon wonder if that one's been reported before?
jnthn That area is known to be quirky.
If it's not been reported, another ticket = another test case. :)
colomon now the problem is that without the "our"s, it looks like meta-ops don't work with the new infix:<+>s. :\ 21:57
at least, += doesn't appear to be working. 21:58
21:58 cafesofie left 22:01 felliott left
colomon jnthn: would it be fair to say you think both versions should work? 22:02
(writing bug report)
colomon is listening to a lovely, lovely fiddle accordion duet on LiveTrad.com.
tadzik masak: pong 22:03
masak: oh modules! 22:06
masak tadzik: added META.info to csv, druid, gge, html-template, perl6-literate, november, proto, pun, svg, ufo, web, xml-writer, yapsi, and yarn. 22:09
I forgot tardis, but I'm adding that one now.
tadzik masak: whoa whoa 22:10
masak tadzik: I'm curious why your blog post takes your neutro's META.info as an example, yet neturo has no META.info.
tadzik masak: care to add them to the new ecosystem?
masak: it has, in metainfo branch
masak: the "stable" neutro uses the "stable" ecosystem
masak ok.
dalek psi: d524312 | masak++ | META.info:
[META.info] added
masak that explains it.
tadzik masak: I remember mentioning that on the blag (that it's a branch) 22:11
masak ok.
maybe I didn't read it carefully enough, then.
tadzik: "add them to the new ecosystem" -- again, how?
tadzik: also, I understand the purpose of all fields, except one -- version. ooc, what are you planning to use that field for? 22:13
tadzik: nope, ttjjss.wordpress.com/2011/01/08/per...and-ideas/ does not mention any neutro branch. 22:14
tadzik masak: version is to be used once module authors start to version their modules. At this stage it's useless, yes 22:17
masak it seems to me that is the use of the word 'module' that I once tried to call 'project', since a repository can contain many (versioned) modules. 22:18
so the project version of META.info doesn't have to have any connection to the module versions, a la S11? 22:19
22:19 dukeleto left 22:20 dukeleto joined
tadzik *shrug* 22:20
masak I see. 22:21
tadzik ENOTYETPLANNED 22:24
masak I'm not condemning it in any way. I just don't see at present why I should mark up META.info in addition to my modules, should I feel the urge to version them. 22:26
jnthn Having the same thing in two places is just asking for it to get out of sync. 22:28
22:28 kst left, kst joined 22:31 plobsing joined
masak jnthn: if it is the same thing. 22:38
it's also slightly odd to see 'version' without 'authority'. 22:41
in some sense, module versions are meaningless without module authorities. 22:42
S11:506: "Once the authority is selected, then and only then is any version selection done; the version specification is ignored until the authority is selected." 22:43
jnthn src/Perl6/Module/Locator.pm cares about authority first, though I'm not sure it could be said to "select" one if you don't specify which you want. 22:45
masak std: class Dog:<cpan:JRANDOM 1.2.1> emulates :<1.2.0>; 22:46
p6eval std 625303c: OUTPUT«===SORRY!===␤Unable to parse class definition at /tmp/9tc2GftRb_ line 1:␤------> class Dog:<cpan:JRANDOM 1.2.1> ⏏emulates :<1.2.0>;␤ expecting trait␤Parse failed␤FAILED 00:01 118m␤»
masak thought so
jnthn masak: What would the semantics be if I just use Foo; and have one with :auth<jnthn>:ver<42> and a :auth<masak>:ver<5>? :)
masak TimToady: S01:151 and S11:620 contradict each other. 22:48
sorear it should be out of band.
flussence pretending to be an average disinterested user for a moment, I'd assume it'd pick the highest version when I'm not picky about who wrote it 22:49
masak jnthn: 'use Foo;' means 'use Foo:auth(Any):ver(Any);' 22:50
flussence (that's how perl5 works when someone takes over maintenance of someone else's module on cpan, anyway.)
masak jnthn: what happens when both those auth-version pairs are present in the module database, I don't know.
jnthn: something sane. ;)
possibly what flussence said. 22:51
though I can easily imagine that backfiring in some cases.
jnthn Aye
I mean, you may be considered more authoritative. :)
masak heaven forbid. 22:53
jnthn :P
22:54 cafesofie joined 22:58 MayDaniel joined, MayDaniel left, MayDaniel joined 23:00 dorlamm joined 23:04 kaare_ left 23:07 vmspb left
colomon rakudo: class A { has $.a; method blue($n) { say $.a + $n; }; multi sub infix:<+>(A $a, A $b) { A.new(:a($a.a + $b.a)); }; }; say A.new(:a(10)).blue(42); my $a = A.new(:a(10)); $a += A.new(:a(42)); say $a.a; 23:09
p6eval rakudo 549d2a: OUTPUT«52␤Bool::True␤Can't take numeric value for object of type A␤ in 'Any::Numeric' at line 1456:CORE.setting␤ in 'infix:<+>' at line 7454:CORE.setting␤ in main program body at line 1␤»
colomon rakudo: class A { has $.a; method blue($n) { say $.a + $n; }; our multi sub infix:<+>(A $a, A $b) { A.new(:a($a.a + $b.a)); }; }; my $a = A.new(:a(10)); $a += A.new(:a(42)); say $a.a;
p6eval rakudo 549d2a: OUTPUT«Can't take numeric value for object of type A␤ in 'Any::Numeric' at line 1456:CORE.setting␤ in 'infix:<+>' at line 7454:CORE.setting␤ in main program body at line 1␤»
colomon hmm.
23:15 shi joined 23:17 cafesofie left 23:25 pmurias left
masak night, #perl6 23:31
23:31 masak left
colomon my big int library seems to thing 1 - 100000000000000000 == 18346744073709551617 :\ 23:39
dalek ecza: a87fbf8 | sorear++ | docs/announce.v2:
Add a draft for the v2 announce
23:43
23:43 plobsing left
colomon Bother: "Added the new functions mpIsNegative, mpChs and mpAbs in anticipation of adding full signed integer functionality in the next version." 23:44
dalek p-rx/nom: 0de3800 | jonathan++ | src/stage0/ (4 files):
Update bootstrap with cursor using natively typed attributes.
23:47
sorear colomon: Why aren't you using GMP? 23:53
colomon GMP won't build on my machine. 23:54
their "solution" to the problem is essentially "get a new compiler toolchain". 23:56