»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
00:01 woosley joined
Tene tadzik: I still care about language interop on parrot. 00:28
00:29 ponbiki left 00:31 dark_x joined 00:37 skangas left 00:40 beppu left 00:41 beppu joined 00:42 raiph joined, skangas joined 00:45 raiph left 01:00 dual joined 01:07 dark_x left 01:09 REPLeffect left 01:14 Chillance left 01:24 REPLeffect joined
colomon sorear: errr, what sqrt function did you change? 01:24
ah, may not have properly gotten my niecza updated 01:25
01:27 whiteknight left, Tedd1 left 01:28 Tedd1 joined
colomon sorear: ah, nothing like removing a line of code to get closer to the spec. :) 01:37
01:39 woosley left
colomon niecza: say 0.sqrt 02:00
p6eval niecza v9-8-gd3b0031: OUTPUT«0+0i␤»
colomon yeah, that's just silly. :)
as is: is sqrt(-0/1), -0/1 02:03
dalek ast: 8d1cec6 | (Solomon Foster)++ | S32-num/sqrt.t:
Result of a sqrt should never be a Rat.
02:10
02:17 isBEKaml left
colomon nom: say -0/1 02:31
rakudo: say -0/1 02:32
p6eval rakudo 5aac38: OUTPUT«0␤»
colomon so is sqrt(-0/1), -0/1 was extra silly, because we don't actually support -0/1 as a Rat distinct from 0/1 02:33
of course, that probably means I just broke sqrt.t on rakudo.
dalek ast: a25a620 | (Solomon Foster)++ | S32-num/sqrt.t:
sqrt(-0/1) was a silly test in the first place, because -0/1 == 0/1. Therefore, this test never tested what its author thought it was testing, and I'm deleting it.
02:37
02:40 envi joined
colomon BTW, niecza runs sin.t in 3.2 sec on my MBP, including fudging and niecza start up time 02:46
02:46 diegoviola left 02:51 plobsing left 03:05 abercrombie joined 03:06 colomon_ joined, colomon left, colomon_ is now known as colomon 03:08 JimmyZ joined 03:09 colomon left, colomon joined 03:10 woosley joined 03:13 colomon left 03:24 agentzh joined 03:27 Su-Shee left 03:29 Su-Shee joined 03:42 plobsing joined 03:47 agentzh left 04:03 JimmyZ left 04:05 jaldhar left, agentzh joined 04:10 Limbic_Region left 04:19 abercrombie left
TimToady perl6: say sqrt(16/9).perl 04:22
p6eval pugs: OUTPUT«1.3333333333333333␤»
..rakudo 5aac38, niecza v9-8-gd3b0031: OUTPUT«1.33333333333333␤»
04:22 jaldhar joined
TimToady 4/3 would be more exact :) 04:23
sorear TimToady: the rule we're using is that sqrt always returns a Num, except when it returns a Complex 04:27
we're collectively operating under the assumption that identifying perfect squares is not worth it 04:28
TimToady well, it's practical, but I'm just pointing out there's arguments for Rat too
04:28 cognominal left 04:29 cognominal joined, JimmyZ joined 04:36 isBEKaml joined
isBEKaml b: say 0.sqrt 04:41
p6eval b 1b7dd1: OUTPUT«0␤»
isBEKaml perl6: say 0.sqrt
p6eval niecza v9-8-gd3b0031: OUTPUT«0+0i␤»
..pugs, rakudo 5aac38: OUTPUT«0␤»
isBEKaml niecza seems to be extra careful about correctness. niecza++ 04:42
niecza: say (-1).sqrt
p6eval niecza v9-8-gd3b0031: OUTPUT«0+1i␤»
TimToady except sqrt isn't supposed to promote Num to Complex
isBEKaml Well, I was just saying that sqrt of 0 is meaningless and falls under Complex domains. 04:43
TimToady: btw, what's the base type for all numbers? Isn't that Num? 04:45
sorear it seems to me that that case is a bug
0.sqrt is 0
TimToady isBEKaml: define "base" and "type" first :) 04:46
but it certainly isn't Num
isBEKaml TimToady: all numbers are X, Int and Real are subclasses of X.
TimToady Numeric
so's Complex
but Numeric isn't a class, of course 04:47
sorear isBEKaml: strictly speaking, Real is a role, not a class
isBEKaml: it has no superclassers
Numeric is the "tag" role for all numeric types
however, Numeric has no semantics of its own; all numeric logic is handled by multisubs in CORE 04:48
isBEKaml ah. I see... So Numeric's just a place holder of sorts?
TimToady it's a role, and if there's any API that's common to all numbers, it'd be defined there
isBEKaml that is, without any semantics, enforcing bounds is done by respective types. ? 04:49
sorear Numeric exists so you can use it as a type constraint
especially in a MMD context
TimToady bounds?
isBEKaml range bouns.
*bounds
TimToady Complex is not ordered
sorear multi foo (Numeric $x) { }; multi foo (Str $x) { }
isBEKaml: types are not involved in the range-checking process 04:50
isBEKaml: &infix:<+> looks at the result and then decides what kind of object to make
isBEKaml sorear: oh, I see... I guess I was just confused when I saw Num and Numeric. Sorry, I'm so off base here.. :/ 04:55
sorear Num is the class for inexact real numbers
it's expected that on most current systems Num will box a 64-bit IEEE.754 value 04:56
isBEKaml sorear: I see Num.pir defined in builtins and later augmented in src/core using role Real. HOw does Niecza do it? 04:58
sorear num is defined as a class in CORE.setting 04:59
Num I mean
but Num is not what you are after
isBEKaml sorear: btw, I had long wanted to ask this question about Niecza -- do you have primitive types or are types boxed in there too?
04:59 mattp_ left
sorear in Perl 6, the numeric classes are very passive 05:00
05:00 mattp_ joined, sivoais left
sorear isBEKaml: bad question. "boxing" is simply the procedure that allows you to store 1.5 in a variable of type Any; *every* Perl 6 implementation has to do it 05:01
05:01 sivoais joined
sorear isBEKaml: Niecza does not support primitive types. Yet. 05:01
however, Rakudo does
rakudo: my int $x; say $x
p6eval rakudo 5aac38: OUTPUT«57840944␤»
isBEKaml niecza: my int $x = 42; my Int $y = 42;
p6eval niecza v9-8-gd3b0031: OUTPUT«===SORRY!===␤␤Malformed my at /tmp/TGQ8IeNevx line 1:␤------> my ⏏int $x = 42; my Int $y = 42;␤␤Parse failed␤␤»
sorear Rakudo's answer is instructive
isBEKaml sorear: No, I was thinking about how some p6 implementation of numbers on the JVM would look like. It had to have numbers "boxed" into their respective classes than primitives on the jvm.(Integer, not int. Double, not double) That's what I'm referring to. 05:04
s/numbers/numeric types/ 05:05
sorear isBEKaml: ah. in that case the answer is probably "yes". $x = 2 + 2; allocates a single long-lived object as far as the CLR GC is concerned 05:06
it allocates an object of type Niecza.BoxObject<int> with layout struct { MonoObject header; STable* sTable; MonoArray* extend; int value; } 05:07
isBEKaml sorear: sTable and extend are pointers? I didn't know C# had pointers! 05:08
sorear: never mind. first link in google. :) 05:10
05:10 masonkramer left
sorear isBEKaml: the layout sample was C 05:11
isBEKaml: in C#, it looks like: class BoxObject<T> { STable mo; object[] extend; T value; }
isBEKaml sorear: msdn.microsoft.com/en-us/library/y3...80%29.aspx
sorear isBEKaml: MonoObject and MonoArray are types defined in Mono :p
05:11 natureboy left
sorear isBEKaml: so? 05:12
I know C# has pointers. I just wasn't using C# there.
isBEKaml sorear: I knew it had to be generic enough. :P 05:13
sorear ... you must have touched a button. Sorry, that responce was uncalled for.
isBEKaml sorry, I didn't mean to be offensive. 05:20
05:27 Sarten-X left, isBEKaml left 05:34 woosley left
sorear oops, I scared them off 05:35
05:37 Sarten-X joined 05:40 wooden left 05:44 isBEKaml joined, sivoais left 05:49 xinming joined 05:50 sivoais joined, TiMBuS left 05:51 TiMBuS joined 05:52 xinming_ left 05:56 sivoais left 06:02 sivoais joined
mberends fwiw, fastest current nom test execution times: 9 microseconds on a 2.67GHz i7 for S02-builtin_data_types/num.rakudo test 58, S02-literals/radix.rakudo tests 7 and 24 (on Debian 64 bit) 06:05
many more at 10 and 11 microseconds, it's down to noise at that level 06:06
sorear: are you interested in measuring Niecza per-test execution times? It involves some instrumentation in Test.pm and a harness such as rakudo/tools/test_summary.pl. 06:09
sorear mberends: the evidence I have so far supports a theory that Niecza's per-test execution times are dominated by Niecza per se's load time 06:12
mberends sorear: yes, I think so too
sorear mberends: how are you measuring microsecond timing? I guess you're not measuring the entire process time
ah. Test.pm instrumentation 06:13
mberends it's hires wall clock time before and after the test
sorear I'd be very suprised if Rakudo can parse "use Test;" in less than 100 microseconds
mberends 'use Test;' is not being measured. The timestamps are taken by ok(), is() etc 06:14
I mean per-test times, not per-script times 06:15
sorear Oh 06:16
mberends I suspect that Niecza executes some tests in nanoseconds, less than 1 microsecond
sorear doubtful 06:17
Niecza takes a significant fraction of a microsecond to call a function with 0 arguments
06:18 wamba joined
sorear and ok() is 3 calls currently 06:18
mberends I see
sorear make that 8 or so, I'd forgotten how much work my ok() does
mberends hmm 06:19
sorear there's plenty of room to optimize Niecza's Test.pm
mberends I plan to measure an empty test as well, to establish a base time that could be subtracted from other test times. 06:20
sorear but, uh, when the parser takes around 10000µs per line, there's not much point
actually more like 7500 now, and it'll be even lower for you, but still »1 06:21
mberends startup time dominates some perl applications, execution time others
sorear or is that >>1
(I arrive at that figure by dividing 45 seconds by 6000 lines for STD.pm6)
mberends back to my question, are you interested, considering that it would affect Test.pm? 06:25
sorear Not really 06:26
mberends ok, then I'll not pursue it
06:40 isBEKaml left 06:43 wamba left 06:48 jamtech joined 06:51 wamba joined 07:04 phenny left, jfried left 07:05 jfried joined
dalek ecza: d637b5c | sorear++ | lib/ (2 files):
First draft of new MMD kernel
07:42
tadzik Tene: (language interop) sorry, I seemed to recall you stopped working on it because no one else cared 07:48
07:48 wamba left
sorear tadzik: ey cares but does not currently work 07:49
tadzik understood 07:50
07:51 wamba joined
sorear I wish I had looked in the C++ spec *first*. not only does it use the same core overloading algorithm as C#, but it gives a linear time no-precalculation algorithm in a footnote 07:53
sorear out 07:54
08:11 jamtech left 08:13 wamba left, wamba joined
Tene tadzik: that's approximately correct 08:15
08:24 wamba left 08:27 wamba joined 08:32 agentzh left 08:38 wamba left, wamba joined 08:53 mj41 joined 08:54 pmurias joined 09:05 molaf joined 09:09 REPLeffect left 09:10 woosley joined, orafu left 09:11 orafu joined 09:14 masak joined
masak top o' the morning to you, #perl6. 09:14
tadzik oh hai masak 09:15
masak has been out for a morning run and feels all... fresh and healthy :) 09:16
tadzik ate a proper breakfast and feels healthy as well 09:17
masak is happy to hear tadzik is eating properly 09:18
tadzik I weighted 69 kgs last time I weighted myself
achievement (almost) unlocked :)
masak excellent. we'd be loath to see you wither away. ;) 09:19
tadzik wow, according to BMI I'm no longer underweight already! 09:20
masak \o/
tadzik (: 09:21
bacon++
09:23 im2ee joined, REPLeffect joined
JimmyZ \o 09:24
tadzik o/
im2ee Hello! :) 09:26
09:28 kaare_ joined
daniel-s hey guys 09:29
are there really smart people around?
daniel-s needs advice
tadzik everyone is too humble to answer, you better just ask away 09:32
masak there are really smart people in here. 09:34
09:38 wamba left 09:40 MayDaniel joined 09:43 MayDaniel left 09:53 xinming left
masak rakudo: enum Empty <>; say "alive" 09:57
p6eval rakudo 5aac38: OUTPUT«===SORRY!===␤Unsupported use of <>; in Perl 6 please use lines() to read input, ('') to represent a null string or () to represent an empty list at line 1, near "<>; say \"a"␤»
masak rakudo: enum Empty (); say "alive" 09:58
p6eval rakudo 5aac38: OUTPUT«alive␤»
10:19 sayu joined 10:24 phenny joined 10:25 xinming joined 10:51 Grimnir_ left 10:55 colomon joined, Grimnir_ joined
masak jnthn++ # parrot-dev message 10:57
11:05 pmurias left 11:07 pmurias joined 11:23 im2ee left 11:24 im2ee joined
TiMBuS daniel-s, always ask. never ask to ask 11:34
masak ...mostly because it wastes time, not because we'll like you less (we won't) ;) 11:35
tadzik I had a physics teacher who used to say "the one who asks is stupid, but the one who doesn't remains stupid" 11:36
masak reminds me of the South Park teacher who says "there aren't any stupid questions, only stupid pupils". :P
TiMBuS i thought of that too 11:37
hah
im2ee How to get index of some value in an array? :) 11:38
E.g. i have ('a', 'b', 'c') array, and i want to get index of 'c'. :)
masak tadzik: Swedish students are very timid when it comes to asking questions. there's something about "standing out" that doesn't resonate well with them. I don't like that mentality, so I often ask lots of little questions. :)
im2ee Does exist any function in p6 to do this? :) 11:39
masak im2ee: I asked that a while back, and got lots of good answers.
im2ee: hold on, I'll get you the backlog linky.
im2ee masak, ok. :)
tadzik rakudo: <a b c>.indexof('b').say
p6eval rakudo 5aac38: OUTPUT«Method 'indexof' not found for invocant of class 'Parcel'␤ in <anon> at /tmp/YbfOT1V_nd:1␤ in <anon> at /tmp/YbfOT1V_nd:1␤␤»
tadzik maybe I remember wrongly :0
:)
doesn't our List::Utils have first()? 11:40
11:40 agentzh joined
tadzik doesn't seem so 11:40
masak rakudo: my @array = <a b c>; my $value = 'c'; say @array.keys.first({ @array[$_] eq $value }) 11:41
p6eval rakudo 5aac38: OUTPUT«2␤»
masak github.com/masak/crypt/blob/master...pt.pl#L126
tadzik oh, nice
im2ee great :) 11:42
masak that's the solution I ended up with, courtesy of moritz++
im2ee thanks masak :)
tadzik rakudo: my @array = <a b c>; my $value = 'c'; say @array.first($value)
p6eval rakudo 5aac38: OUTPUT«c␤»
tadzik ach
masak :)
mberends masak: do you have a URL for jnthn's parrot-dev message please?
masak perhaps .first :key could be made to work...
mberends: sure, sec.
tadzik mberends: lists.parrot.org/pipermail/parrot-d...06173.html
mberends ty 11:43
masak groups.google.com/group/parrot-dev/...93392e3634
tadzik masak: how does crypt like nom? 11:44
masak tadzik: don't remember if I tried it.
bet there's still a few pieces missing, though.
masak tries it
jnthn afternoon, #perl6 11:52
masak jnthn! \o/
11:53 molaf left
tadzik afterdinner, jnthn 11:53
11:56 cognominal left, cognominal joined
JimmyZ is there a method/sub to exchange keys and values? array/hash 11:58
yath reverse 11:59
oh
sorry, thought i was in #perl :)
tadzik invert I think
rakuod: { a => 1, b => 2}.invert.perl.say
rakudo: { a => 1, b => 2}.invert.perl.say 12:00
p6eval rakudo 5aac38: OUTPUT«(1 => "a", 2 => "b").list␤»
tadzik rakudo: <a b c d>.invert.perl.say
p6eval rakudo 5aac38: OUTPUT«Method 'invert' not found for invocant of class 'Parcel'␤ in <anon> at /tmp/mKvKEqkYjM:1␤ in <anon> at /tmp/mKvKEqkYjM:1␤␤»
tadzik b: <a b c d>.invert.perl.say
p6eval b 1b7dd1: OUTPUT«Method 'invert' not found for invocant of class 'Parcel'␤ in main program body at line 22:/tmp/_U_kvH8kVr␤»
tadzik b: <a b c d>.hash.invert.perl.say
p6eval b 1b7dd1: OUTPUT«("b" => "a", "d" => "c")␤»
tadzik b: <a b c d>.kv.invert.perl.say
p6eval b 1b7dd1: OUTPUT«Method 'invert' not found for invocant of class 'List'␤ in main program body at line 22:/tmp/18VAYm0Kcf␤»
tadzik then .kv.hash will work :) 12:01
im2ee Hmm, what is better for perl6? vim or emacs? :)
Or something else ?
jnthn Notepad++!
;)
im2ee jnthn, on windows? :) 12:02
jnthn Yes :)
mberends gedit in Perl 5 mode ;)
im2ee I'm using gentoo linux. :)
hmm, mistake. I use gentoo linux. :)
mberends im2ee: both statements were completely correct :) 12:04
im2ee ok :) 12:05
JimmyZ b: (<a b c d>.kv.hash.invert)['c'].say
p6eval b 1b7dd1: OUTPUT«a 0␤»
12:05 whiteknight joined
tadzik im2ee: I use vim 12:06
don't know about perl6 hilighting for emacs but the one for vim is a bit less than awesome
JimmyZ rakudo: (<a b c d>.kv.hash.invert.hash)<c>.say
p6eval rakudo 5aac38: OUTPUT«2␤»
tadzik <a b c d>.kv.hash.invert<c>.value.say 12:07
rakudo: <a b c d>.kv.hash.invert<c>.value.say
p6eval rakudo 5aac38: OUTPUT«Method 'at_key' not found for invocant of class 'List'␤ in method postcircumfix:<{ }> at src/gen/CORE.setting:927␤ in <anon> at /tmp/JBayFnUe4Y:1␤ in <anon> at /tmp/JBayFnUe4Y:1␤␤»
tadzik pff
woosley rakudo: {a => 1, b => 1}.invert.perl.say
p6eval rakudo 5aac38: OUTPUT«(1 => "a", 1 => "b").list␤»
im2ee tadzik, i use vim too. And i have some problems with syntax highlighting. There are problems with highlighting when i use a function with more than 2 arguments. :) 12:08
tadzik im2ee: do you 'setf perl6'?
woosley {a => 1, b => 1}.invert.keys.perl.say
JimmyZ b: my @array = <a b c>; my $value = 'c'; @array.invert.perl.say
p6eval b 1b7dd1: OUTPUT«Method 'invert' not found for invocant of class 'Array'␤ in main program body at line 22:/tmp/KdvB3e1BUO␤»
tadzik I went full hardcore and have au BufRead,BufNewFile *.pl,*.pm,*.nqp,*.t set filetype=perl6 in my .vimrc :)
woosley b: {a => 1, b => 1}.invert.keys.perl.say
p6eval b 1b7dd1: OUTPUT«(0, 1)␤»
im2ee tadzik, yes i do.
tadzik that's strange 12:09
JimmyZ perl6 doesn't have a invert method for array?
woosley rakudo: {a => 1, b => 1}.invert.keys.perl.say
p6eval rakudo 5aac38: OUTPUT«(0, 1).list␤»
tadzik b: <a b c d>.flip.perl.say
p6eval b 1b7dd1: OUTPUT«"d c b a"␤»
woosley b: {1 => a, 1 => c}.keys.perl.say 12:10
p6eval b 1b7dd1: OUTPUT«Could not find sub &a␤ in main program body at line 22:/tmp/Sf_LTIAMNI␤»
tadzik b: <a b c b>.kv.hash.invert.perl.say
p6eval b 1b7dd1: OUTPUT«("a" => "0", "b" => "1", "c" => "2", "b" => "3")␤»
tadzik close enough
woosley b: {1 => 'a', 1 =>'c'}.keys.perl.say
p6eval b 1b7dd1: OUTPUT«("1")␤»
JimmyZ b: (<a b c b>.kv.hash.invert)<c>.say
p6eval b 1b7dd1: ( no output ) 12:11
woosley interesting
JimmyZ b: (<a b c b>.kv.hash.invert.hash)<c>.say
p6eval b 1b7dd1: OUTPUT«2␤»
woosley b: {a => 1, b => 1}.invert.keys.perl.say
p6eval b 1b7dd1: OUTPUT«(0, 1)␤»
im2ee When i have an array in hash. { "key" => <a b c> }, to push a value to "key" array should i write %hash{"key"}.push(...) or @hash{.... 12:16
? :)
I know how to do this in p5, but how in p6? :)
masak im2ee: % 12:18
12:18 woosley left
masak im2ee: as a rule, the sigil doesn't change in Perl 6 when you want to access an array or hash in different ways. 12:18
mberends invert for a search looks terribly inefficient 12:19
im2ee masak, ok, but when i use % i get:
masak rakudo: my %hash = "key" => <a b c>; %hash{"key"}.push("d"); say %hash.perl 12:20
p6eval rakudo 5aac38: OUTPUT«Method 'push' not found for invocant of class 'Parcel'␤ in <anon> at /tmp/3T2S0WU1Ad:1␤ in <anon> at /tmp/3T2S0WU1Ad:1␤␤»
masak rakudo: my %hash = "key" => [<a b c>]; %hash{"key"}.push("d"); say %hash.perl
p6eval rakudo 5aac38: OUTPUT«("key" => ["a", "b", "c", "d"]).hash␤»
masak \o/
rakudo: my %hash = "key" => [<a b c>]; %hash<key>.push("d"); say %hash.perl
p6eval rakudo 5aac38: OUTPUT«("key" => ["a", "b", "c", "d"]).hash␤»
im2ee Method 'push' not found for invocant of class ''
masak im2ee: see above :)
12:21 daniel-s left
im2ee so it have to be reference to an array? :) 12:22
JimmyZ invert for a search is always simple and useful when it's a small array
JimmyZ would like to see a invert method array too, not only in hash :) 12:23
s/array/in array/ 12:24
mberends by the time invert has done its work, first will always have returned the answer. They both iterate, but first is allowed to stop early.
masak im2ee: <a b c> isn't an array, it's more like a list. lists can't be pushed to. 12:25
im2ee: [<a b c>] puts the list into an array.
JimmyZ mberends: hash iterate too? 12:26
mberends JimmyZ: yes, iiuc 12:28
JimmyZ thought %foo<bar> doesn't iterate 12:29
mberends JimmyZ: it doesn't. 12:30
JimmyZ mberends: (<a b c b>.invert)<c> only iterate once 12:31
mberends JimmyZ: I thought you meant something processing the entire hash, when you wrote 'hash iterate'
JimmyZ want @array.invert method because it's very useful for WEB development ;) 12:32
JimmyZ always use that
mberends JimmyZ: I agree with you there, it's more elegant source code, but costs more CPU cycles and GC pressure to execute. 12:33
JimmyZ mberends: only use for some small array, most are less than 30 elements
mberends: it's not issues in WEB because most performance issues are in database :) 12:36
mberends JimmyZ: +1 :) 12:37
JimmyZ: +2 if you store the inverted array in a hash and re-use it as a cache ;) 12:38
JimmyZ mberends: yeah, cache is important 12:40
im2ee masak, so [] is empty array? 12:49
masak im2ee: yes. 12:50
im2ee Hm, one more question. :) delete() (on array) expected an index or value? 12:51
masak an index.
just like hashes.
rakudo: my @a = <a b c>; @a.delete(1); say @a.perl 12:52
p6eval rakudo 5aac38: OUTPUT«Method 'delete' not found for invocant of class 'Array'␤ in <anon> at /tmp/ShJfDidpRg:1␤ in <anon> at /tmp/ShJfDidpRg:1␤␤»
masak provided Array has .delete. I'm not so sure.
b: my @a = <a b c>; @a.delete(1); say @a.perl
p6eval b 1b7dd1: OUTPUT«["a", Any, "c"]␤»
masak ah. seems it does.
im2ee Any? So it still is, but without type? 12:53
b: my @a = <a b c>; @a.delete(1); say $_ for @a;
p6eval b 1b7dd1: OUTPUT«a␤Any()␤c␤»
im2ee rakudo: my @a = <a b c>; @a.delete(1); say $_ for @a; 12:54
p6eval rakudo 5aac38: OUTPUT«Method 'delete' not found for invocant of class 'Array'␤ in <anon> at /tmp/AHANjcYRq1:1␤ in <anon> at /tmp/AHANjcYRq1:1␤␤»
im2ee hm, i use rakudo on my machine/
masak im2ee: Any here means something like "undef".
im2ee :)
masak im2ee: you probably have what's now known as 'b' on your machine. 12:55
im2ee: bring this odd naming up with pmichaud :P
im2ee: what goes under the name 'rakudo: ' here on the channel is the branch 'nom'. 12:56
there's no master branch any more.
12:56 molaf joined 13:01 agentzh left, agentzh joined
im2ee masak, ok. :) 13:05
13:06 agentzh left 13:08 im2ee left 13:11 im2ee joined 13:12 im2ee left 13:13 im2ee joined, LoRe_ left, LoRe_ joined, Helios left 13:14 Helios joined
tadzik ooh, wherefore-gc-bug seems not to fail anymore 13:14
13:19 wamba joined 13:22 agentzh joined
im2ee b: my $s = 'abc def'; say $s.split(/\s/); 13:30
p6eval b 1b7dd1: OUTPUT«abcdef␤»
im2ee b: my $s = 'abc def'; say $s.split(/\s/).perl;
p6eval b 1b7dd1: OUTPUT«("abc", "def")␤»
13:36 pmurias left 13:38 pmurias joined, donri joined, daniel-s joined 13:47 pmurias left 13:49 pmurias joined 13:50 whiteknight left 13:51 whiteknight joined
tadzik Method 'WHY' not found for invocant of class 'Perl6::Grammar' 13:51
okay, the gc bug is not gone at all :P
dalek Heuristic branch merge: pushed 43 commits to rakudo/nom-buf by tadzik 13:53
Heuristic branch merge: pushed 215 commits to rakudo/wherefore-gc-bug by tadzik
13:56 wamba left 14:04 whiteknight left 14:29 MayDaniel joined
dalek p: 41e1fd8 | jonathan++ | src/HLL/SerializationContextBuilder.pm:
Make check for if we're in precompilation mode cheaper. Saves walking a load of call frames if we're quite deep in the parse, though probably only a small saving overall.
14:32
p: f8a2d0a | jonathan++ | src/6model/knowhow_bootstrapper.c:
Have KnowHOW publish a method cache, which should avoid a bunch of method cache misses and the resulting .^find_method call.
p: 903eaae | jonathan++ | src/6model/sixmodelobject.c:
Avoid a use of Parrot_ext_call, so if we do have to go to .^find_method to locate a method then at least we don't have to do the whole signature string parsing thing.
14:36 SHODAN joined
jnthn tadzik: Few more tweaks, probably only make a small improvement though. 14:39
tadzik will check 14:40
14:47 pmurias left 14:48 pmurias joined 14:52 abercrombie joined 14:53 kaare_ left, birdwindupbird joined 15:00 whiteknight joined 15:01 djanatyn left
tadzik jnthn: settings compilation is 3 minutes now 15:10
make 425.54s user 5.14s system 113% cpu 6:19.45 total 15:12
jnthn tadzik: Whoa, what, that shaved 30 seconds off?! 15:13
tadzik 1600* @tadzik | make 456.76s user 6.35s system 110% cpu 6:59.09 total 15:14
yeah, 31
jnthn That's the build overall, not just the setting, I guess?
tadzik yes
setting itself was 3:20 or 3:30, is about 3:00
15:15 pmurias left
jnthn OK, so we're now down to about a third of the time we used to spend compiling the setting? :) 15:15
tadzik 0.3 to be certain
jnthn Well, that's nice. :) 15:16
tadzik that's pretty awesome :)
jnthn: are the measures actually helping you technically, besides being a morale boost?
jnthn tadzik: Yes.
tadzik: Well, actually they mostly make me more curious.
tadzik: I'm interested which of the patches contributed most of that.
tadzik right, yesterday the separation you are working on now added 5 seconds to the build time
15:17 pmurias joined
felher reading masak++ blogpost about -n -p switch i wonder: what is PAST? AST is an abstract syntax tree i guess, whats the 'P' for? 15:17
jnthn tadzik: If you have time, maybe try it at 41e1fd8166.
tadzik jnthn: I'm running the spectest now 15:18
felher: Parrot I guess
jnthn tadzik: So we know if the it was the precomp mode check improvement that did it, or the other one.
tadzik jnthn: I'll try that when I finish the spectest
so in like 20 minutes or more
or I can try it now, if you prefer 15:19
felher tadzik: hm, yeah. that'd make sense, thnx.
jnthn tadzik: No, in 20 is fine :)
tadzik ok cool
jnthn Nice to know spectest time change too, if any.
tadzik ohbtw
Pod:: nodes are but simple objects, if we added them to the bootstrap, would we be able to document the setting?
I know, I'm going to lenghten the setting compilation just after you shortened it, but... ;) 15:20
jnthn tadzik: Hm, maybe. Lemme think on that one a little.
felher another question: What execatly is that 'setting' you're benchmarking quite a few times now? Is it 'src/gen/CORE.setting' ? 15:21
tadzik felher: yes
felher: it's a Standard Library, in some sense 15:22
felher tadzik: ah, i see. Thnx again. :)
tadzik you're welcome :)(
15:23 agentzh left, dual left
tadzik heh, I bought 4 new shiny DVDs to backup my pictures, and apparently I need 5 :/ 15:24
mberends the off-by-one error strikes again! ;)
15:25 mj41 left 15:31 pmurias left 15:33 pmurias joined 15:36 benabik_ joined, benabik left, benabik_ is now known as benabik
felher Yeah. There are only two hard problems in computer science. Naming, caching and off-by-one errors. 15:37
jnthn wonders if he'll understand knowhow_bootstrapper.c one day...
15:38 colomon_ joined, colomon left, colomon_ is now known as colomon
tadzik make spectest 1465.13s user 72.10s system 98% cpu 25:52.77 total 15:40
was 1831 yesterday
b: say (1831 - 1465) / 1831
p6eval b 1b7dd1: OUTPUT«0.199890770070999␤»
tadzik not bad
flussence bah, I have this really neat script to pull TAP archives off smolder.parrot.org, and the server's down :(
jnthn tadzik: Before any of the improvements?
tadzik: Or at the end of yesterday? 15:41
tadzik well, wait
15:41 pmurias left
tadzik 2351* tadzik | jnthn: make spectest 1742.80s 15:41
the oldest measure I have
b: (1742 - 1465) / 1742
p6eval b 1b7dd1: ( no output )
tadzik b: say (1742 - 1465) / 1742
p6eval b 1b7dd1: OUTPUT«0.159012629161883␤»
jnthn OK, so we spectest 15% or so faster. 15:42
tadzik jnthn: 41e1fd8166 in which repo?
jnthn nqp
tadzik: I pushed 3 commits to NQP. The were kinda in two "sets" 15:43
15:43 pmurias joined
jnthn tadzik: The first one did one thing 15:43
tadzik: The next two were related.
tadzik okay
jnthn tadzik: I'm curious if the first one (the caching of comp mode) or the second one (reducing method cache misses) made the bigger difference. 15:44
tadzik checking
jnthn OK. I'm just about to land some further (hopeful) improvements also.
dalek p: a29c8a7 | jonathan++ | src/ (3 files):
Add a way to mark the method cache as being authoritative. Can't use this in Rakudo's meta-objects yet, but we can in NQP ones.
15:45
p: c66f98e | jonathan++ | src/how/NQPClassHOW.pm:
Mark NQP classes as having an authoritative method cache.
p: cf40a26 | jonathan++ | src/stage0/ (6 files):
Update bootstrap files.
p: fbcf303 | jonathan++ | src/6model/knowhow_bootstrapper.c:
Mark method cache put out by KnowHOW and authoritative, and give the bootstrapped KnowHOW itself a method cache. We now get no method cache misses during the entire NQP build of itself.
tadzik wow 15:46
moritz that sounds both great and scary
scary because if there are no cache misses, it mean there's a codepath that isn't exercised anymore :-) 15:47
jnthn moritz: Don't worry, Rakudo misses :)
moritz jnthn: :-)
jnthn We miss a bunch when compiling the setting.
But all because we call methods on types we didn't define yet
er, didn't compose yet 15:48
There was one especially painful case in NQP before those patches
When we parse and reduce a rule, we always call an action method
If there is one...which we determine with can 15:49
The rule ws has no action method.
So every time we parsed whitespace, we got the cache miss, then did a nested runloop to make sure the meta-object didn't know better than the cache.
We...parse quite a lot of whitespace when compiling the setting, I guess. ;) 15:50
So above set of patches should help a little.
mberends wow, that must have been very time consuming
jnthn I rebootstrapped nqp so it builds itself faster thanks to this also :) 15:52
moritz how fast or slow is another runloop? 15:53
jnthn moritz: It's not something you want to be doing often.
moritz: It's not *that* bad, but it certainly isn't cheap.
It's fine if you're going to do quite a lot of work in it.
tadzik jnthn: make 455.77s user 5.37s system 111% cpu 6:54.60 total 15:54
jnthn tadzik: For...?
tadzik that's on 41e1fd8
jnthn OK, and it was 6:59 before that patch?
tadzik hmm, don't remember :P 15:55
will backlog
mberends another data point, compiling the setting now uses 607MB RAM instead of 787MB a week ago (both on 32 bit Linux) 15:56
tadzik 2321 tadzik | make 617.03s user 4.91s system 111% cpu 9:19.77 total 15:57
I think that was the "before"
jnthn oh, so that was quite dramatic then.
JimmyZ is that with whiteknight++'s branch? 15:58
tadzik yes
oh, yes, I'm still on whiteknight's branch
jnthn tadzik: Yeah, me too
That should hopefully get merged soonish :)
mberends: Thanks, that's also great to know.
mberends: It's movement in the right direction, even if it's still high. 15:59
mberends jnthn: :)
jnthn tadzik: Tests of my latest patches to nqp (still on the whiteknight branch) would be nice to have.
tadzik: Both for make, setting and spectest time ;)
tadzik jnthn: make goes now 16:00
jnthn \o/
tadzik++
moritz jnthn: compiling nom's setting with the new nqp now
whiteknight it gets merged sooner, the more tests we get on it
whiteknight hints dubtly
subtly*
jnthn :)
whiteknight: The only downvote I've heard is that it breaks the g++ build.
whiteknight I haven't had a chance to review that yet 16:01
whatever it is, I'm sure it's a trivial fix involving a void* cast
jnthn mls++'s fix for the leak also just went into Parrot 16:02
16:03 envi left 16:04 mj41 joined
tadzik make 404.89s user 5.60s system 108% cpu 6:18.96 total 16:05
result not found :(
another 20 seconds it seems
16:05 buubot_backup left 16:07 pmurias left
jnthn tadzik: It's 20 seconds faster with latest nqp? 16:07
tadzik jnthn: it seems, yes
jnthn Nice
What's setting time now?
16:08 pmurias joined
tadzik like 2:50 or so 16:09
jnthn Woo, below 3 mins :)
benabik tadzik must have a faster machine than me. 16:10
tadzik benabik: it's some cheap c2d 16:11
with 2GBs of ram
benabik tadzik: I have an expensive c2d. :-D
tadzik :P
jnthn benabik: Note that we're getting these with whiteknight's is_pmc_ptr branch of Parrot
benabik jnthn: Ah. Significant difference? 16:12
tadzik 167.66s user 1.87s system 99% cpu 2:50.32 total
benabik: yeah, like 25%
the memory usage was just below 60%
(of 2GBs)
JimmyZ what? 404 down to 167? 16:13
tadzik JimmyZ: no, that's just SEttings.pir 16:14
masak jnthn++ tadzik++ # optimization exploration 16:16
JimmyZ compile setting takes 4:34 here with parrot master
16:17 pmurias left, kboga joined 16:19 pmurias joined, buubot_backup joined, MayDaniel left
jnthn should blog about the weekend's improvements :) 16:20
felher jnthn: yeah, that'd be nice 16:21
JimmyZ maybe after the branch merge :)
16:21 buubot_backup left 16:22 buubot_backup joined, MayDaniel joined
jnthn JimmyZ: Yeah, I plan to do dinner and stuff soon. So it won't be for another little bit yet. 16:23
JimmyZ plans to sleep, it's 0:23am here
good night 16:24
jnthn night o/
16:24 JimmyZ left 16:25 daniel-s left
dalek kudo/nom: 3654b00 | jonathan++ | tools/build/NQP_REVISION:
Bump NQP_REVISION to get various performance improvements.
16:26
sorear good * #perl6 16:29
masak top o' the *, sorear 16:30
16:31 wamba joined 16:33 pmurias left 16:34 pmurias joined 16:35 MayDaniel left 16:37 wamba left
sorear On closer examination, the C++ algorithm hides large constant factors and the algorithm I already have is probably better in realistic cases. 16:39
mberends good * sorear
masak sorear: this change you've made, does it implement the MMD improvement you talked about yesterday?
sorear masak: no.
masak oh, ok. 16:40
sorear it is a step in that direction
but it is also a step towards CLR interop
masak sounds good. 16:44
16:44 pmurias left
pmichaud good morning, #perl6 16:45
jnthn hi, pmichaud
16:46 pmurias joined
pmichaud nice work on the performance improvements :) 16:46
haven't tried them out here yet, but will be looking very much forward to it.
pmichaud tries them out now.
masak hi, pmichaud
mberends good morning pmichaud
jnthn pmichaud: Note, build Parrot with appropriate branch to see full effect :) 16:47
pmichaud is that the whiteknight/... one? 16:48
moritz whiteknight/pmc_is_ptr or so 16:49
jnthn that one
moritz jnthn: fwiw nom spectest on top of latest nqp (but parrot master) is PASS here 16:50
jnthn moritz: nice to know - thanks 16:51
16:52 pmurias left, DarthGandalf left, DarthGandalf joined 16:53 pmurias joined
sorear hello pmichaud, jnthn 16:54
16:55 im2ee left
jnthn o/ sorear 16:55
16:55 thou joined
jnthn shopping & 16:55
tadzik hello pmichaud
16:56 im2ee joined 16:58 pmurias left
pmichaud CORE.setting on my system goes from 164s to 118s after the nqp and other improvements (still on parrot master) 16:59
haven't tried the pmc_is_ptr branch yet... trying that now.
16:59 pmurias joined
benabik Merft. Setting still takes 9:02 for me. Although I think that's several minutes faster than before. 17:03
pmichaud yes, I think we need to figure out a way to reduce the size of the PAST tree. 17:04
sorear I still think the fact that it's built of hashes is to blame
pmichaud I don't disagree, but in what ways do you see that as a problem? 17:05
sorear hashes have a high memory overhead
if PCT::Nodes were 6model objects, the PAST tree would take up much less space 17:06
pmichaud well, except we'd still need hashes on some of them
17:06 pmurias left
pmichaud but yes, converting PAST to 6model is on our to-do list. 17:06
sorear Only some of them, I think/hope 17:07
pmichaud correct, only some of them.
latest nom built on pmc_is_ptr branch is 94sec
sorear nice
moritz latest nom spectest on whiteknight/pmc_is_ptr merged into master (locally) is PASS 17:08
sorear wonders how much overhead PCT is taking from PMCProxy, since PCT::Node inherits from parrot;Capture
17:09 pmurias joined
pmichaud so the pmc_is_ptr branch gives a 20% speedup (on top of the 28% speedup given by the other nqp improvements) 17:09
benabik Would it be too hard to add an RPA and a hash to PCT::Node to compare with Capture?
benabik would try it himself, but classes start tomorrow...
sorear pmichaud: I am somewhat suprised that the PAST is bigger than the POST
pmichaud ...PAST is bigger than POST?
how do you mean? 17:10
masak more sizable. bulkier. inherent of more granditude.
:P
pmichaud benabik: I think that adding an RPA + hash to PCT::Node means that we end up with inferior runloops instead of PMCProxies.
benabik pmichaud: … LTA 17:11
pmichaud i.e., we end up having to do vtable overrides for hash accesses
and array accesses
pmurias sorear: how will the mapping between C# and Perl 6 types be specified? 17:12
sorear: or will the Perl 6 code be exposed to things such as an ArrayList?
sorear pmurias: currently I expect the latter
C# code doesn't expose Perlish APIs anyway; I expect Perl6-side wrappers for most stuff 17:13
in the specific case of ArrayList, because it's mutable, Perl 6 code has to be exposed to it 17:14
17:14 REPLeffect left
sorear converting an ArrayList (which is actually just spelled List in C#) to a Perl6 Array would lose aliasing 17:14
17:18 pmurias left
jnthn nom: say 164 - 94 17:18
rakudo: say 164 - 94
p6eval rakudo 3654b0: OUTPUT«70␤»
17:18 pmurias joined
jnthn rakudo: say (164 - 94) / 164 17:19
p6eval rakudo 3654b0: OUTPUT«0.426829268292683␤»
jnthn pmichaud: Glad it's a win on your box too. :)
pmurias sorear: we could wrap ArrayList in a Array like interface which passes on the methods
jnthn pmichaud: Got stage timings?
pmichaud Stage parse: 50.694
Stage past: 0.000
Stage post: 33.058
Stage pir: 10.033
jnthn pmichaud: That's more pleasing. 17:20
We're back to parse dominating
pmichaud yes, but the 'post' number is still a little high
jnthn Yeah, agree.
pmichaud anyway, parse should come way down soonish
I actually have some better profiling tools and stuff at my disposal now. 17:21
although I guess the pmc_is_ptr branch likely doesn't have the sub-profiler branch stuff in it
jnthn Yeah, if we can understand where we spend time during the post stage, that'd be a huge help.
pmichaud: No, but I have high hopes for that merging soon. 17:22
pmichaud well, the post stage is likely almost entirely a function of the number of past nodes
but I can find out the number of past nodes now
jnthn pmichaud: Yeah but that doesn't mean that all past nodes are equal in compilation cost.
17:22 donri left 17:24 pmurias_ joined, plobsing left, pmurias left
pmurias_ if i'm having irc problems only the stuff that gets logged on irclog.perlgeek.de actually gets sent to the channel? 17:25
17:25 pmurias_ is now known as pmurias
pmurias sorear: is there something like CPAN for C#/.NET so i can look at how the common APIs look like? 17:25
17:27 REPLeffect joined
jnthn pmichaud: Note also that a bunch of those PAST nodes are tied up with the deserialization code, which goes away when we get the serializer. Which I plan to start work on this month. 17:27
pmichaud jnthn: yeah, I suspect that'll be a big win.
anyway, sub-100sec CORE.setting compilation time I can live with. 17:28
jnthn pmichaud: I'm not sure how much of the tree that is, but it wouldn't surprise me if it still amounts to between a third and a half o fit.
pmichaud it's still quite a bit longer than what we had with ng, but parsing updates should get us back in the same ballpark
17:28 plobsing joined
pmichaud I wonder how much faster ng compilation will be with the pmc_is_ptr branch. 17:29
jnthn Probably a bit.
17:29 pmurias left
jnthn tadzik++ measured us as having won 15% on spectest time too. 17:30
pmichaud that seems likely
I fail S32-trig/pi.t on my box; I'm guessing that's expected though. 17:31
17:31 pmurias joined
pmichaud afk, lunch 17:33
17:36 pmurias left 17:38 pmurias joined 17:40 abercrombie left, im2ee left 17:41 im2ee joined 17:42 MayDaniel joined 17:45 kboga left 17:47 wamba joined
moritz pmichaud, jnthn: if rakudo is supposed to pass spectest without gmp installed, maybe --gen-parrot should pass along --without-gmp to parrot's Configure.pl? 17:47
17:48 plobsing left
pmichaud we're not using gmp for anything, right? 17:51
...but we also need to be passing spectests when it is installed.
moritz well, I think gmp is the reason that pi.t passes on my system, but fails on yours 17:52
17:52 MayDaniel left
pmichaud very well could be, yes. 17:52
but I'm not sure that turning off gmp is the answer.
at least, not as a "we always test against parrot without gmp" sort of thing 17:53
afk again 17:54
18:01 donri joined 18:03 mj41 left 18:13 kaare_ joined 18:14 avi_ joined 18:15 avi_ left, pmurias left 18:16 _avi joined 18:17 pmurias joined 18:23 risou is now known as risou_awy 18:24 risou_awy is now known as risou 18:26 sayu left
dalek ast: 177516f | moritz++ | S0 (5 files):
rakudo unfudges
18:33
18:35 Youdaman joined, Youdaman left 18:41 risou is now known as risou_awy 18:44 mj41 joined, pmurias left 18:45 cognominal left 18:46 pmurias joined
im2ee Hmm, do you use perl to making websites etc.? 18:46
moritz well, in first approximation websites are just text 18:47
and text is easy to do in perl :-)
for example www.strangelyconsistent.org/ is generated with Perl 6, but I forgot what software exactly masak++ uses 18:48
im2ee moritz, i mean making engines, blogs. generaly web-developing : 18:49
:)
18:49 Grimnir_ left
im2ee Does it have sense? Or better is make e.g. blog on WordPress? :) 18:50
moritz im2ee: rakudo isn't fast enough yet to generate dynamic pages on the fly 18:51
im2ee I used to use Django for web programming. But ... it is "heavy" ...
moritz im2ee: that's why there's not much dynamic web stuff for Perl 6 yet 18:52
felher I'm sure i only ask that question because i don't know enought but i wonder: with all that speed-improvements on nom and such, how come that a small perl6 programm like '.say for ^10000;' takes ~8secs on master and ~32secs on nom? (both are latest master and latest nom)
moritz felher: seems we've also have had lots of performance regressions :( 18:53
18:53 wamba left
mberends felher: 'say' in particular was re-specced to add lots of user-friendly extra formatting. Try 'print' instead. 18:53
felher moritz: yeah, seems so. 18:54
mberends: hm, k, checking that out.
moritz mberends: but it's not *that* much more
mberends: I mean it just calls .gist, and for an Int that's the same as .Str 18:55
masak moritz, im2ee: I'm using a program called psyde. github.com/masak/psyde
moritz mberends: so about another method call per say()
im2ee so, how do You think - what is better, making own websites or using free software? :)
masak, thanks. :)
masak, can You answer this question too? :) 18:56
felher hm, k. using print results in 6.3 vs 19.7. Thats at least better. :)
moritz less worse
felher yeah ^^ :)
im2ee It's channel about p6, but we can talking about other topics? :)
masak im2ee: yes. 18:57
im2ee: with moderation and good judgment.
mberends thanks moritz. I thought .gist was quite expensive, but it probably isn't
moritz im2ee: fwiw I'm writing a backend for a blog engine in p5 these days 18:59
ouch
$ time ./perl6 -e '1 for ^10_000'
real 0m1.428s
$ time ./perl6 -e '1 for ^100_000'
real 0m36.667s
rakudo: 36.6/1.4
p6eval rakudo 3654b0: ( no output )
moritz rakudo: print 36.6/1.4 19:00
p6eval rakudo 3654b0: OUTPUT«26.1428571428571»
jnthn moritz: A good chunk of that 1.428 will be startup time
moritz iterating over 10x the elements take 26x the time
if startup time was dominatring, the factor would be <10
*dominating 19:01
masak jnthn: that makes the time even less proportional.
jnthn masak: right
moritz masak: maybe you should link to psyde on www.strangelyconsistent.org/about
masak ooh, good idea. 19:02
masak does so
jnthn It's also slowly leaking, which won't be helping.
19:02 Grimnir_ joined, pmurias left
moritz for 50k items it's still linear 19:02
19:03 kst` joined
im2ee $ time perl6 -e '1 for ^100_000'; 19:03
real2m13.565s
huh, my computer sucks
:D
moritz (that was nom, fwiw) 19:04
(with the nesest patches on the newest most awesome parrot branch)
19:04 pmurias joined 19:05 kst left
tadzik im2ee: I do :) 19:07
as long as you mean Perl 5 :P
19:08 _avi left
im2ee So, perl5 is now better for webdev? :)) 19:08
tadzik I have a feeling it's more suitable. We don't have a good web framework for Perl 6 yet
masak moritz: linked to psyde from strangelyconsistent.org/about - moritz++ 19:09
im2ee: Perl 5 will certainly make life easier for you at this point.
pmichaud anyone object to me doing the branch rename (master->ng) now? 19:10
masak im2ee: those of us who choose to doing web development with Perl 6 will invariably face a number of tradeoffs.
at this juncture.
19:11 pmurias left
im2ee so maybe just wordpress? :) 19:11
19:11 jrockway left
im2ee but.. perl is better than php :) 19:12
mberends im2ee: that's ok, or blogs.perl.org
jnthn uses wordpress, fwiw. And happy so far.
19:13 pmurias joined
im2ee thanks. :) 19:13
masak im2ee: I also think Perl is better than PHP. but that doesn't stop Wordpress and MediaWiki from being fine pieces of usable software. 19:15
im2ee right :) 19:16
19:16 whiteknight left 19:17 pmurias left 19:19 pmurias joined
masak I'm very happy with psyde for my blog, even though I should've implemented comments ages ago. :) 19:20
19:21 jrockway joined, Reaganomicon joined
lue hello world o/ 19:23
sorear pmurias: I recommend looking at msdn.microsoft.com/en-us/library/gg145045.aspx
masak hellue! 19:26
19:28 wooden joined, wooden left, wooden joined
lue can't decide which fun P6 project to work on today 19:30
masak have you written a Little Animal Farm AI yet? :) 19:31
sooner or later, you will -- you know you will :)
19:31 birdwindupbird left 19:34 cognominal joined
lue I actually have a couple ideas for that, a paranoid AI (named Marvin naturally) being the main one. 19:34
masak looking forward to that.
eiro: how'd your IA go? 19:36
19:37 am0c left
lue Hm. Do 3 rabbits mean 1 pair and 1 "left over", which would yield a total of 1 rabbit? [Or does the game do nothing with "left overs"?] 19:38
19:39 pmurias left
sorear masak: ia? 19:39
sorear wants to parse "eiro" as rōmaji
masak sorear: in French, all acronyms are reversed.
sorear I have a PDF here that says CLI / ICL 19:40
masak lue: 3 rabbits yield one rabbit, yes. the game ignores odd rabbits when mating them. :)
sorear infrastructure commune de langage
not quite reversed...
masak sometimes they don't get reversed all the way, no.
19:41 pmurias joined
masak AIDS becomes SIDA, for example. 19:41
"permuted" is perhaps more accurate.
lue well, word order is reversed (which *usually* results in reversed acronyms from an english POV)
masak but it mostly stems from adjectives wanting to come before nouns in French.
oh, and genitives being reversed, of course. 19:42
19:42 molaf left
sorear not all combinations of words reverse in the same way 19:42
lue can't wait to start French 3 in a few days
sorear I like Japanese, it's very consistant about this 19:43
all phrase-modifiers are prefixes
masak lue: "French 3" is great. not as good as the book, though.
sorear pmurias: I recommend looking at msdn.microsoft.com/en-us/library/gg145045.aspx
lue I get the feeling my idea of "French 3" is different from your's... [or there's a parsefail in my head] 19:44
masak lue: I'm just joking with you.
lue So it *was* a parsefail! 19:45
19:46 wolfman2000 left
sorear btw, learning French is on my todolist 19:53
masak or, as the French say, "ma liste de choses à faire" :) 19:54
sorear well my mom speaks it so. 19:55
masak oh right. Canada.
sorear Canada?
masak no wait, you're from the US.
mis-association.
all you people from the Americas. hard to keep you straight! :P 19:56
sorear I live as far from Québec as is possible while still living in an English-speaking North American country
masak ah.
sorear my county borders the Pacific Ocean on the west and Mexico on the south.
19:57 pmurias left
masak Texas? 19:57
no wait. :)
California!
sorear secure.wikimedia.org/wikipedia/en/...ego_County 19:58
masak I used to listen to ads from the San Diego area.
when I was listening to the Dr Demento Show on Sunday evenings.
of course, over here it was five in the morning on Mondays... :) 19:59
(but so worth it!)
19:59 pmurias joined
sorear <3 Dr Demento 19:59
pmurias: I recommend looking at msdn.microsoft.com/en-us/library/gg145045.aspx
phenny: tell pmurias I recommend looking at msdn.microsoft.com/en-us/library/gg145045.aspx
phenny sorear: I'll pass that on when pmurias is around.
19:59 im2ee left 20:00 im2ee joined 20:02 jevin left 20:03 jevin joined 20:04 kaare_ left
im2ee good night! :) 20:04
masak night, im2ee 20:05
im2ee or day .
bye o/ :)
jnthn dobru noc, im2ee
oh wait, .pl, not .cz :)
jnthn must keep the tlds straight :)
im2ee dobranoc - in pl. :)
jnthn nice :)
masak dobranoc, im2ee.
im2ee dobranoc! 20:06
:)
20:06 im2ee left
tadzik branoc 20:06
masak that looks almost like Swedish :) 20:07
jnthn heh :) 20:08
sorear aren't Polish and Czech very closely related? 20:12
jnthn sorear: Pretty closely, but not as closely as Czech and Slovak.
sorear: All three are in the western slavic group though. 20:13
sorear wonders how hard Slavic was for jnthn 20:14
sorear tried to learn Russian once but declension was too much for eir poor brain
masak typographically, Polish believes more in 'z's, and the other languages in that group believe more in hats. :) but that's mostly a surface difference.
sorear Polish has some odd typographical features like in Soŝnierz 20:15
tadzik Sośnierz, actually :)
masak was just going to point that out :)
tadzik .u
phenny tadzik: You gave me zero length input.
tadzik .u ŝ
phenny U+015D LATIN SMALL LETTER S WITH CIRCUMFLEX (ŝ)
tadzik .u ś
phenny U+015B LATIN SMALL LETTER S WITH ACUTE (ś)
tadzik CUTE!
sorear ś is so odd it's not even in my default terminal fon
masak ŝ is in the Esperanto alphabet. it's more like 'sz' than like 'ś' in its pronunciation, though. 20:16
jnthn sorear: It was, and remains, kinda hard, though the declension becomes "automatic" after a while. I had the benefit of living in that part of the world for a couple of years, and thus daily practice. :-) Now I don't have that, and it's kinda slipping away a bit. :-S 20:17
masak .oO( declension's on the decline )
jnthn I'd date a Russian girl, but they all decline me. :P 20:18
tadzik masak: by 'z's, do you mean "ogonki"?
jnthn
.oO( that'd make an amusing linguistic cartoon... )
sorear remembers jnthn(?)s bit about Slovak hamburgers and the Headache["very bad"] role mixin
masak tadzik: no, I meant the letter Z.
tadzik I see 20:19
I wonder if we actually have more tails than hats
sorear .u ż
phenny U+017C LATIN SMALL LETTER Z WITH DOT ABOVE (ż)
masak I don't know of any hats in Polish.
tadzik yeah, dots
we have no hats
masak dots don't count :P
they're hardly there! 20:20
tadzik with dots instead of hats we're a bit like Teletubbies
masak *and* you can write them as cross-bars on the 'z'! how weird is that!
tadzik like in ł
but ł cannot have the hat on top
sorear .u ǫ
phenny U+01EB LATIN SMALL LETTER O WITH OGONEK (ǫ)
masak dot, you mean.
jnthn .u ł
phenny U+0142 LATIN SMALL LETTER L WITH STROKE (ł)
sorear is ogonki the plural of ogonek, tadzik? 20:21
jnthn ah, stroke
tadzik sorear: yes
sorear: it means "little tails"
masak little tails of misery and woe :)
tadzik oooh, they're actually OGONEK in Unicode itself
although ǫ is not a Polish letter 20:22
jnthn tadzik: I guess "ogon" is a (non-little) tail?
tadzik jnthn: si
jnthn Cute :)
masak tadzik: it's not!?
tadzik: it's just an adorned 'o'?
sorear what do you call multiple ogon?
tadzik ogony
masak oh the ogony...
tadzik masak: I sometimes wonder where did ǫ go. Ę is "eu", but Ą is "ou", not "au" 20:23
masak oh right!
now I see what you mean.
tadzik I seem to recall where did "au" go over the ages
masak yes, Ą should clearly have been ǫ instead. 20:24
tadzik eww, parsefail
I seem to recall there was "au" once, but it's gone now
sorear .u č
phenny U+010D LATIN SMALL LETTER C WITH CARON (č)
masak ĉapelo.
tadzik .u ć
phenny U+0107 LATIN SMALL LETTER C WITH ACUTE (ć)
tadzik Polish is ACUTE 20:25
masak but never grave.
sorear .u ő
phenny U+0151 LATIN SMALL LETTER O WITH DOUBLE ACUTE (ő)
tadzik ooh
masak now we're in Hungary all of a sudden.
tadzik that's like "uuuu"
masak bőőőőring
tadzik there's no such letter like that in Polish alphabet though 20:26
masak: that's like "buuuuring"
ó is just u, fancy written
sorear the Slavs have so many beautiful diacritics and accents.
tadzik funny things is that ogonki and ACUTEs never indicate accent in Polish
masak tadzik: it's more like the Russian ы, IIRC.
no, wait. it isn't. 20:27
it's just a very dark ö.
20:31 natureboy joined 20:35 kst` is now known as kst 20:37 pmurias left
sorear masak: what is darkness? 20:37
masak an imprecise description of vowel quality... :/ 20:38
20:39 pmurias joined
masak Wikipedia says ő is pronouneced /ø/ in Hungarian. 20:41
tadzik not pronounced? 20:42
masak no, that's a vowel sound.
doesn't mean "empty set" or anything funny like that :)
tadzik ...empty sound? :P 20:43
masak of one hand clapping, naturally.
by the way, has anyone ever replied to the question "what is the sound of one hand clapping?" by clapping with one hand? 20:44
I mean, to a Zen master.
20:47 uvtc joined
uvtc I notice that, in Perl 6, most methods on lists return a new list. Such that you can do things like: @a.sort.uniq.reverse (in contrast, you can't do that in Python because sort() sorts the array in place and doesn't return it). 20:51
Python's reverse also reverses in-place. 20:52
In Perl 6, is there any convention about methods that mutate vs. methods that return a new object?
sorear no
you could write @a.=sort if you wanted 20:53
uvtc What is ".="?
sorear like +=, *=
uvtc Oh, "@a = @a.sort".
masak uvtc: there's a slight cultureal encouragement to make your method non-mutating, and then use the .= form to mutate things. 20:54
20:55 soh_cah_toa joined
uvtc Ok, that sounds good. Not only because it's easy enough to use ".=", but also because it allows you to do things like @a.sort.frobnicate.fossilize.etc 20:55
I noticed that someone the other day asked something like "is Perl 6 ready?". It seems to come up every once in a while. 20:58
It's interesting, because I don't hear that question asked often about other languages.
20:58 tlocalhos joined
uvtc I think, when people ask it, what they're really asking is 3 related questions: 20:58
1. Is the design of the language fairly stable now (will not be changing under my feet -- for my basic needs)?
2. For a given "main" implementation: 20:59
* Are the basic usual features most people most commonly need implemented?
* Does it have few enough bugs so as to not make my life *too* terribly difficult?
20:59 localhost left
uvtc * Is its performance at least in the same ballpark as Perl 5 | Python? (slower is fine and expected -- just not more than, say, a factor of 5) 20:59
and
3. Is there some user reference documentation for Perl 6 available? That is, some at-least-fledgling perldoc manpages for Perl 6.
masak yes, yes, yes, no, fragmented and too little. 21:02
uvtc masak, the feature comparison matrix indicates that nom does not yet handle "DateTime, Date". 21:05
masak sounds like a rife lowish-hanging fruit to pick. 21:07
jnthn rife or ripe? :)
masak er, just s/rife // 21:08
:)
didn't meant what I thought it meant...
uvtc rife with low-hanging fruit, ripe for the picking
jnthn right :)
masak right.
tadzik wrong :) 21:15
everyone who tried will tell you it's not low-hanging
masak oh! 21:16
'night, #perl6
21:17 masak left
pmurias sorear: how high would the overhead of calling perl5 code from C#? 21:19
phenny pmurias: 19:59Z <sorear> tell pmurias I recommend looking at msdn.microsoft.com/en-us/library/gg145045.aspx
pmurias sorear: how much sensible would niecza/perl5 interop be?
s/much// 21:20
21:21 jamtech joined
sorear pmurias: supporting perl5 VM-VM interop is insane. I did it once for Parrot and I have no intention of doing it again for the CLI 21:22
21:22 SHODAN left
sorear pmurias: otoh, I do have plans to build a Perl5 language-compatibility mode into the Niecza parser 21:22
uvtc: yes, yes, yes, yes, yes iff you count the Synopses 21:23
soh_cah_toa i really wouldn't consider the synopses user documentation though 21:27
21:27 pmurias left, pmurias joined
pmurias i might attempt perl5 VM-VM, i did it for SMOP and everything seemed to fit together nicely 21:28
uvtc sorear, I'm not sure I'd count the Synopses as user docs. Will have to look at them again & more. 21:32
21:33 pmurias left
soh_cah_toa agreed, they're really only meant for implementers and are be greek to non-compiler developers 21:34
i'm trying to help reduce p6's lack of user docs through the "using perl 6" book though
uvtc soh_cah_toa, I'd like to chat about this more, but need to get offline (family). Will look for you later. 21:37
21:37 uvtc left 21:38 mj41 left
lue Are there any (dis)advantages to using runtime importation vs. compile-time? I'd like to split my project into multiple files w/o cluttering the module namespace, and it seems only require would let me do that. 21:41
22:21 PacoLinux left, PacoLinux_ is now known as PacoLinux
soh_cah_toa perl6: my $foo = 'foobar'; my $rx = '<alpha>*ob<alpha>*'; say 'FOOBAR!' if $foo ~~ rx/$rx/ 22:25
p6eval rakudo 3654b0: OUTPUT«===SORRY!===␤Method 'rxtype' not found for invocant of class 'PAST;Regex'␤»
..niecza v9-9-gd637b5c: ( no output )
..pugs: OUTPUT«Error eval perl5: "if (!$INC{'Pugs/Runtime/Match/HsBridge.pm'}) {␤ unshift @INC, '/home/p6eval/.cabal/share/Pugs-6.2.13.16/blib6/pugs/perl5/lib';␤ eval q[require 'Pugs/Runtime/Match/HsBridge.pm'] or die $@;␤}␤'Pugs::Runtime::Match::HsBridge'␤"␤*** '<HANDLE>' trapped b…
22:27 jamtech left
soh_cah_toa how do i get that working? i want to interpolate a variable containing literal metacharacters into a regex and match it against something 22:28
tadzik soh_cah_toa: use b: for now 22:29
soh_cah_toa: nom cannot interpolate variables in regexes yet 22:30
soh_cah_toa tadzik: where? b:/$rx/
tadzik soh_cah_toa: no, no :)
b: say 'foo'
this b:
p6eval b 1b7dd1: OUTPUT«foo␤»
tadzik b is the old master branch
soh_cah_toa darn 22:31
i thought the rx// operator to create a Regex object was how that's done since variables are interpolated literally
22:31 jamtech joined
soh_cah_toa i'm working w/ rakudo btw. not nom 22:31
tadzik hmm
jnthn soh_cah_toa: "literal metacharacters"? 22:33
Do you mean, you want the thing you're interpolating to be treated as a regex?
soh_cah_toa jnthn: yes 22:34
jnthn ah
<$foo>
/$foo/ # matches exact contents of $foo
soh_cah_toa right
jnthn /<$foo>/ compiles $foo as a regex
soh_cah_toa i thought rx// did that?
jnthn (and then tires to match it)
No
22:37 jamtech left
tadzik 'night #perl6 22:37
jnthn 'night tadzik
soh_cah_toa jnthn: see S05 at 'Variable (non-)interpolation' 22:40
"However, if $var contains a Regex object, instead of attempting to convert it to a string, it is called as a subrule, as if you said <$var>. (See assertions below.) This form does not capture, and it fails if $var is tainted."
/ $var / is like a Perl 5: / \Q$var\E / 22:41
jnthn ah
soh_cah_toa and rx// creates a Regex object
jnthn hm, interesting. I ddin't know that bit :)
pmichaud: ^^ is worth noting when putting regex interpolation stuff back into nom 22:42
soh_cah_toa speaking of nom, whatever happened to the august release? 22:43
jnthn soh_cah_toa: rakudo.org/2011/08/19/rakudo-2011-0...se-status/ 22:44
soh_cah_toa yeah, i read that
specifically the "We definitely will have some August 2011 releases" part ;)
i'm guessing those issues just haven't been resolved yet? 22:45
jnthn ah, hm :) 22:46
I'm guessing not
Well, I and @other have been working on resolving a bunch of the issues this weekend :)
Though there's some more to go.
soh_cah_toa great 22:48
last i heard the release was delayed b/c of issues that weren't really detailed and then pmichaud disappeared and i haven't heard anymore ;)
wasn't sure what was going on
22:52 orafu left 22:53 skangas left, orafu joined
jnthn sleep & 22:57
23:21 skangas joined 23:27 risou_awy is now known as risou 23:38 Patterner left 23:40 Psyche^ joined, Psyche^ is now known as Patterner 23:45 Reaganomicon left