»ö« 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.
sorear whiteknight: hi 00:04
00:25 Chillance left 00:32 smash left
whiteknight hello sorear 00:55
01:01 noganex_ joined 01:04 noganex left 01:12 woosley joined 01:21 envi_laptop joined 01:22 noganex_ left 01:29 noganex joined 01:30 Ali_h left 01:31 Ali_h joined 01:37 bitpart joined 01:40 cotto joined 01:50 bitpart left 01:56 whiteknight left 02:01 dual left 02:05 dual_ joined 02:06 tokuhirom joined, dual_ is now known as dual 02:09 roen joined 02:12 ilogger2 joined, ChanServ sets mode: +v ilogger2 02:14 dual_ joined 02:16 dual_ is now known as dual 02:19 tomaw joined 02:22 sftp joined 02:31 dual left 02:32 sftp left 02:36 cotto joined 02:40 lumi joined 02:42 dual joined 02:45 mtk joined
dalek ecza: 11e843d | sorear++ | / (4 files):
CREATE gets proper P6 semantics, add bless()
02:48
02:50 mberends joined 02:51 cooper|ipad joined 02:52 dual left 02:53 thou joined 02:54 sftp joined 02:58 dual joined, thou left 03:00 noganex_ joined 03:05 dual left 03:11 satyavvd joined 03:13 lumi left 03:17 thou_ joined 03:18 molaf joined 03:19 lumi joined 03:21 dual joined 03:28 dual left 03:29 Su-Shee joined
mberends moritz: nom 'perl Configure.pl --gen-parrot --gen-nqp' works again here :) 03:30
03:31 dual joined 03:38 dual left 03:39 dual joined, jaldhar joined 03:41 molaf left 03:59 dual_ joined
szabgab jnthn: yapceurope.lv/ye2011/talk/3388 has no date on it, maybe edit the text so it will include that too? 03:59
same with yapceurope.lv/ye2011/talk/3283 04:00
04:01 dual left 04:02 larks joined 04:04 dual joined, dual_ left 04:06 lumi left 04:13 thou_ left 04:30 dual_ joined 04:33 dual left, dual_ is now known as dual
sorear hello szabgab 04:43
04:49 birdwindupbird joined 04:51 dual left 04:57 dual joined 05:03 dotIN joined 05:05 dual_ joined 05:06 dual left 05:07 in joined 05:08 koban joined 05:09 dual joined 05:10 dual_ left 05:11 dotIN left 05:12 tokuhirom joined 05:14 dotIN joined 05:16 in left 05:19 in joined
dalek kudo/nom: 4d555ae | mberends++ | src/ (6 files):
[src/binder] correct a spello s/Rakduo/Rakudo/g and fix some gcc warnings
05:20
05:23 dotIN left 05:25 dotIN joined, jrockway joined 05:28 in left 05:30 yinyin joined, in joined 05:31 noganex joined 05:32 lateau joined 05:33 dual left 05:34 dotIN left, noganex_ left
lateau does anyone knows how to execute external commands from rakudo? 05:35
dalek kudo/nom: 730da9d | mberends++ | src/binder/ (2 files):
[src/binder] eliminate all gcc warnings (hope other C compilers are still ok)
mberends lateau: run($command) 05:36
lateau thanks! i'll try it
mberends: is there any methods or functions capture the result of external commands? 05:38
like my $of = `ls` in perl5
dalek ecza: 3638568 | sorear++ | lib/ (3 files):
Do a bit of compose-time processing on the attribute list for new, suprising win
sorear qx[ls]
lateau thx sorear, this is exactly what i want. thanks! 05:39
sorear incidentally this works in Perl 5 too; only the short syntax is gone
05:41 dotIN joined 05:44 in left 05:45 in joined 05:47 nymacro joined 05:48 dotIN left 05:50 dotIN joined, beek joined 05:53 in left
dalek ecza: b40503b | sorear++ | lib/Kernel.cs:
Avoid inferior runloops for attributes with defaults
05:54
sorear has $.x = 12; # no longer 10x slower than has $.x; 05:56
05:57 kboga joined 06:00 in joined 06:03 dotIN left 06:05 dotIN joined 06:07 yinyin left 06:08 in left 06:09 lumi joined 06:10 in joined
dalek ecza: ca4d6f1 | sorear++ | / (3 files):
Implement use of submethod BUILD
06:12
06:13 dotIN left 06:16 dotIN joined 06:18 in left 06:19 wamba joined, in joined 06:20 wamba left 06:21 wamba joined 06:22 fhelmberger joined 06:23 dotIN left, wtw joined
sorear perl6: my $s = "foo"; say ($s ~~ s/o//).perl 06:25
06:25 dotIN joined
p6eval rakudo 484a25, niecza v6-80-g11e843d: OUTPUT«Bool::True␤» 06:25
..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 by operat…
sorear perl6: my $s = "foo"; say ($s ~~ s:g/o//).perl
p6eval rakudo 484a25: OUTPUT«Bool::True␤»
..niecza v6-80-g11e843d: OUTPUT«===SORRY!===␤␤Regex modifier g not yet implemented at /tmp/350yJhu4i8 line 1:␤------> my $s = "foo"; say ($s ~~ s:g⏏/o//).perl␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 469 (CORE die @
..2) ␤ at /home…
..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 by operat…
sorear perl6: my $s = "foo"; say ($s ~~ s/x//).perl 06:26
p6eval rakudo 484a25: OUTPUT«Bool::True␤»
..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 by operat…
..niecza v6-80-g11e843d: OUTPUT«Bool::False␤»
06:27 in left 06:29 in joined 06:33 dotIN left 06:35 dotIN joined, jfried joined 06:36 noganex left 06:38 in left, noganex joined 06:39 wamba left, in joined
dalek ecza: b0fc18e | sorear++ | / (2 files):
Implement s:g///
06:41
06:43 dotIN left
sorear rakudo: pugs: say pi.floor.WHAT; say pi.ceil.WHAT; say pi.round.WHAT 06:45
p6eval rakudo 484a25: OUTPUT«===SORRY!===␤Confused at line 22, near "pugs: say "␤»
06:45 dotIN joined
sorear pugs: say pi.floor.WHAT; say pi.ceil.WHAT; say pi.round.WHAT 06:45
p6eval pugs: OUTPUT«Int␤Int␤Int␤»
sorear rakudo: say pi.floor.WHAT; say pi.ceil.WHAT; say pi.round.WHAT
p6eval rakudo 484a25: OUTPUT«Int()␤Method 'ceil' not found for invocant of class 'Num'␤ in main program body at line 22:/tmp/OP6xxNAMb7␤»
mberends hugme: list projects
somebody(TM): please add me as a committer to nqp 06:46
sorear hugme: add mberends to nqp
ENOHUGS 06:47
mberends: perl6/nqp?
or did you want nqp-rx?
06:48 in left, Mowah joined
sorear oh, it looks like they're the same bit 06:49
mberends: you have committer access
06:50 sftp left 06:51 in joined 06:52 lateau left
sorear rakudo: say (1.5+1.5i).floor 06:52
p6eval rakudo 484a25: OUTPUT«floor is only defined for Reals, you have a Complex()␤»
sorear rakudo: say (1.5+0i).floor 06:53
p6eval rakudo 484a25: OUTPUT«floor is only defined for Reals, you have a Complex()␤»
mberends sorear: thanks, I'll try again.
06:55 dotIN left 06:56 dotIN joined 06:59 in left 07:01 in joined 07:05 dotIN left 07:08 dotIN joined 07:11 in left 07:12 in joined 07:16 dotIN left 07:17 in left 07:18 in joined 07:22 mj41 joined 07:23 dotIN joined 07:26 in left 07:28 in joined 07:29 cooper|ipad left 07:32 dotIN left 07:34 dotIN joined 07:36 in left 07:38 in joined 07:42 dotIN left 07:48 in left 07:49 lateau joined
dalek kudo/nom: 3f62167 | moritz++ | build/gen_ (2 files):
[build] make failure of "make realclean" non-fatal

Without this patch, --gen-parrot and --gen-nqp don't work on one of my machines, though I don't really understand why.
08:06
08:14 beek left
dalek ast: 1a7e180 | sorear++ | S06-signature/arity.t:
Fudge S06-signature/arity for niecza
08:18
ecza: 17f7681 | sorear++ | lib/ (2 files):
Add floor, ceiling, conjugate, round, truncate, sign
ecza: fbd41a7 | sorear++ | / (3 files):
Add .arity to complement .count
08:20 daxim joined 08:25 amkrankruleuen joined
sorear std: our sub A::b { }; A::b 08:28
p6eval std c843201: OUTPUT«ok 00:01 112m␤»
sorear std: our sub A::b { }; A::b(1)
p6eval std c843201: OUTPUT«ok 00:01 113m␤»
sorear std: our sub Niecza::generate-series { }; Niecza::generate-series(1) 08:29
p6eval std c843201: OUTPUT«ok 00:01 113m␤»
sorear hmm
niecza's copy of STD is rejecting this
somehow
08:39 lateau left 08:41 yinyin joined 08:42 jfried left 08:43 dakkar joined 08:48 jfried joined
dalek ecza: 44f7995 | sorear++ | / (3 files):
Steal ... and ...^ from Rakudo
08:56
mberends oooh, that's a big steal! 08:57
sorear fear not, I took only a copy 08:58
moritz :-)
sorear and with that... sleep
moritz good night
mberends 'night sorear 08:59
dalek p: 0a8dc8b | (Martin Berends)++ | src/pmc/stable.pmc:
[src/pmc/stable.pmc] eliminate gcc 'old-style function declaration' warning
09:00
09:01 Chillance joined 09:10 stephanepayrard_ joined 09:16 jfried left 09:17 jfried joined, lumi left 09:25 daniel-s joined 09:28 kboga left
moritz Juerd: I seem to recall you had a page which tested a domain for ipv6 readyness - could you please share the URL again? 09:42
daxim ipv6test.google.com/ omgipv6day.com/ test-ipv6.com/ 09:51
09:53 kboga joined
moritz daxim: that tests the current browser and connections, not a domain (presence of AAAA records, reachability of nameservers via ipv6 etc.) 09:54
daniel-s "Yes. This web browser (at this location) looks safe. You'll just keep using IPv4."
yay! 09:55
09:55 woosley joined 09:56 woosley left
moritz .u þ 09:57
phenny U+00FE LATIN SMALL LETTER THORN (þ)
10:09 amkrankruleuen left 10:10 amkrankruleuen joined
Juerd moritz: ip6.nl/test 10:11
10:18 amkrankruleuen left 10:19 amkrankruleuen joined
dalek p: 43f2fc4 | (Martin Berends)++ | src/ (3 files):
[nqp.ops P6opaque.c HashAttrStore.c] eliminate gcc 'conversion from void *' warnings
10:19
10:22 Mowah_ joined 10:24 mtk left
moritz mberends++ # nqp C cleanup 10:25
mberends long way to go still...
also need other_platform_C_compiler validation 10:26
10:28 tokuhirom left 10:29 simcop2387 left 10:31 simcop2387 joined 10:33 ggoebel joined, mtk joined 10:35 daniel-s left, wamba joined 10:46 cookys joined 10:47 cookys left, cookys joined 10:48 cookys left, cookys joined
jnthn mberends++ # cleaning up my crappy C :) 11:04
11:05 icwiener joined
mberends I just hope I don't break anything in the process ;) 11:08
frettled mberends: you're worried it could become C#? 11:16
mberends frettled: in Soviet Russia, C# becomes You! 11:18
frettled (: 11:19
jnthn mberends: Hopefully not. I'll yelp tonight if you broke MSVC++ :) 11:20
mberends: Main way to break things: declarations don't come first :)
mberends jnthn: your yelps are what I'm worried about... 11:22
jnthn mberends: Well, I'm sure after yelping I'm quite capable of fixing any little breakages too :) So don't worry. 11:23
I'm happy to lose some warnings on other compilers.
fwiw, it *is* clean on my compiler except the ops.
mberends gcc warning "function call has aggregate value" has me stumped. Move on to next kind. 11:24
jnthn wtf. :/
moritz mberends: trac.parrot.org/parrot/wiki/BuildWarnings
"The following warnings appear for me (Infinoid) on x86-64 gentoo linux, but are caused by system headers and thus are not Parrot's fault" 11:25
11:25 pernatiy joined
jnthn oh lol :) 11:26
mberends aye, they appear in nqp in a completely non-Parrot context :/ 11:27
jnthn heh 11:39
I, er, can't imagine how I'd have triggered that
mberends: Does it give a guilty line number? 11:41
mberends I can't imagine how either, because the macros in question do type their return values. I know what the warning is trying to say, but I cannot work out how to remedy it. The source line is src/ops/nqp.ops:1030: storage_spec ss = REPR(var)->get_storage_spec(interp, STABLE(var)); 11:44
an aggregate value is a struct in this case, so it's moaning because it would like it to be seen as a pointer to a struct. But inserting a * breaks it more :P 11:46
jnthn Sure. I mean, it's returning a struct rather than a pointer to one but that's what I wanted.
No need to heap-allocate it. 11:47
I dunno why it warns.
"HEAP! USE THE HEAP!"
moritz also finds that a bit silly
mberends that's why I'm moving on... 11:48
jnthn
.oO( This is where I get glad my compiler is not GCC. :) )
mberends
.oO(typical rationale from the people who brought you FrontPage and Internet Explorer )
11:50
jnthn :P 11:51
11:52 nymacro left
moritz rakudo: print $*IN.read(1) 11:52
p6eval rakudo 484a25: OUTPUT«Buf()<0x1bfd028>»
moritz rakudo: print $*IN.read(1).decode 11:53
p6eval rakudo 484a25: OUTPUT«L»
moritz it's a bit silly that our default IO doesn't support buffers
mberends did Rakudo get binary IO as well, or only UTF-8? 11:55
moritz it got it last summer (masak++)
mberends: but not via a flag on the file handle, but rather via read/write methods
mberends oh nice, I can update my webserver to send favicon files again 11:57
moritz dunno about sockets though
11:58 satyavvd left 12:01 wamba left
arnsholt jnthn/mberends: Some googling seems to indicate that (very) early C compilers didn't allow returning aggregates 12:07
lists.cistron.nl/pipermail/freeradi...00581.html
mberends arnsholt++: thanks! so at first glance we can choose between having a warning-free program that uses the heap to be truly portable, or ignore/disable a warning to use the current faster but not totally portable version. Rotten choices :( 12:11
12:13 slavik joined 12:14 wknight8111 joined
mberends thanks to pmc2c.pl, we have two files (in different folders) called serialization_context.c and serializationcontext.c 12:15
jnthn Heh, this would seem to mean that I'm expected to write code that targets C compilers that are older than me. :P 12:17
mberends lol
arnsholt Well, according to that post, C89 alllows it
And since C89 is the minimum C required by Parrot, it's more a problem of a bit too zealous warning settings in the Makefile I think 12:18
mberends jnthn: if MSVCC compiled without warnings, then either it has a "feature" where every xxx.c gets an invisible #include "xxx.h", or otherwise the concept of function prototypes is alien. 12:20
jnthn mberends: :) 12:22
colomon yeah, I've chaffed at being told (recently) my $code should work with VC++ 6.0 (from circa 1997, I think), but not being about to use C89 features would be a new low. 12:29
12:35 envi_laptop joined 12:38 molaf joined 12:39 wamba joined
frettled Fascinerende. Omtrent kl 11 tok jeg en server ut av DNS, TTL var én time. Trafikken har holdt seg stabilt rundt 1,5-2,5 Mbps siden kl 12 (ned fra ordinære 10-12 Mbps). Det er mange med føkka DNS-cacher der ute. 12:41
oops, wrong channel, embarassing :(
frettled considers going home to sleep. 12:42
mberends fascinating, all the same ;)
dalek p: d42ba1c | (Martin Berends)++ | src/6model/ (5 files):
[src/6model] fix all gcc 'no prototype' warnings
12:44
frettled mberends: yup :) b0rken DNS clients/caches are just so much fun
jnthn mberends++ \o/ 12:50
mberends jnthn: the good news is that these fixes have not exposed any latent bugs in the code. Thus less reward for me, but kudos for you on your crappy compiler :) 12:54
mathw frettled: I like the look of a language which uses é and ø and æ all at once :) 13:11
frettled mathw: \o/ 13:13
mathw: it can get better: gi meg én porsjon crème fraîche med blåbærsyltetøy, takk 13:14
frettled cheated with French loan words, but hey…
jnthn mberends: heh. Generally I understand C well enough to write working code, but do little enough C to have a good grasp on all the ins and outs of what different compilers like. :-)
13:14 daniel-s joined
jnthn tries to guess how "tøy" is pronounced 13:15
13:16 daniel-s left, daniel-s joined
mathw frettled: that's cheating 13:16
really I just have a soft spot for ø 13:17
I don't know why, I always thought it was a cool letter and English should use it for something
frettled mathw: Here, no cheating: du får ikke varige mén av å spise blåbærsyltetøy, det er godt fôr for et karrièremenneske.
mathw: some seem to think of it as a small zero
13:18 wamba left
mathw nice! and the a with an o on the top that I can't figure out how to type 13:19
flussence_ å!
mathw å
oh, like that
moritz compose a a
flussence_ (altgr+{,a for me)
mathw compose a a on this thing gives me @ 13:20
which seems odd
I got it with compose * a
but this is PuTTY's compose key, because Windows is too boring to include one
flussence_
.oO( that's the great thing about keyboard layouts, there's so many to choose from... )
frettled according to folklore, it's supposed to be a small 'a' on top of the 'a', but it got simplified.
It's a cheat for writing the Danish 'aa' as a single character. 13:21
moritz did they want to circumvent twitter's 140 char limit back in the days? :-)
huf why's it look like an a if it's pronounced nothing like it? 13:22
that's gotta be intentional trolling :)
flussence_ or international trolling 13:23
tadzik hello perl6
moritz why does th look like a t and an h, if it's prononounced nothing like either of them 13:24
mberends hi tadzik
huf moritz: yeah, it should look more like an f 13:25
moritz .u thorn
phenny U+00FE LATIN SMALL LETTER THORN (þ)
moritz wonders if thorn and the th have a common-ish origin 13:26
tadzik from Thor!
jnthn I think way back, English had a single letter for th as in the
huf yes, but then they realized they better fit into ascii or there'll be difficulties 13:27
jnthn I think it may have looked like "y" or ended up looking like "y", thus "ye olde tea shop"
huf this being before unicode of course
jnthn Of course, today loads of people read that as literally "yee old-ee tea shop" :)
huf i only learned how to pronounce it sometime in the last 2 years i think 13:28
so yeah
colomon that's actually a sort of tricky question, isn't it? I mean, how many places named themselves "Ye Olde Book Store" thinking it was actually "ye" (rather than a funny spelling of "the")? 13:30
frettled Ye \Ye\, Ye \Ye\ ([th][=e]), an old method of printing the article the (AS. [thorn]e), the "y" being used in place of the Anglo-Saxon thorn ([thorn]). It is sometimes incorrectly pronounced y[=e]. See {The}, and {Thorn}, n., 4. [1913 Webster]
jnthn: thanks, I learned something new and unexpected today as well! 13:31
colomon and as a side note, in the Irish Traditional Music community, seeing someone spell "air" with an "e" on the end is almost always a dead giveaway that they have no clue what they are talking about.
jnthn frettled: Yes, I discovered that a while ago and was amused at how we mostly all get it so wrong in England. :) 13:34
frettled jnthn: and everywhere else, apparently :D 13:35
daniel-s is there any other good documentation for using grammars other than the using perl6 book and the synopses
moritz there are examples 13:36
and I wrote perlgeek.de/en/article/debug-a-perl-6-grammar
PerlJam good morning #perl6 13:45
daniel-s: and you can always ask questions here :)
daniel-s lol, thanks
I'm just working through the using perl book 13:46
and it all seems mostly straightforward, except gammars, which seems to be the most important part
PerlJam daniel-s: ah! What's not straightforward about grammars?
daniel-s have try/catch statements and exceptions been implemented in rakudo? 13:47
PerlJam (and I hardly think that grammars are the "most important part" of perl 6, but they are rather useful :)
tadzik toldya they're tricky :)
moritz daniel-s: yes, but throwing an exception inside a CATCH statement still causes an infinite loop :/
oh, and note that CATCH goes *inside* a try { } block 13:48
colomon I think grammars might be the "most important part" in the sense of being the one of the main killer features of p6
daniel-s moritz, yea, that's something I noticed is different to how Java does them 13:49
there's no documentation in the using perl book
PerlJam colomon: I'll grant that it's one of the main conceptual areas where perl 6 dominates. :)
daniel-s and the wiki book is, well, basically useless: secure.wikimedia.org/wikibooks/en/...d_Handlers
PerlJam daniel-s: so ... you'd like to see a section on exception handling in the book? 13:50
daniel-s PerlJam, well, my plan is to read the synopsis, experiment and figure it out 13:51
PerlJam daniel-s: and then write a section for the book? :)
daniel-s sure, I can do that if you want
actually, I'm unemployed in 2.5 weeks, my contract ends 13:53
I would be happy to use my extra spare time working on perl6
PerlJam daniel-s++
daniel-s I don't really know perl6 that well to be particularly useful developing anything
moritz daniel-s: the main reason I didn't write anything about exceptions yet is that they aren't very robust in rakudo, and because I've been planning for ages to re-work at least parts of them 13:54
at least the built-in exceptions
daniel-s what parts of the using perl6 book are missing that are most urgent?
moritz and I've got a grant for that, and started doing it, but currently I don't spend much time on it (although I should)
jnthn moritz: Grant distractions are the norm, I think. :) 13:59
moritz jnthn: :-)
colomon small children as distractions is certainly a norm. :)
moritz is currently unsure if he should start his exception stuff in nom or master 14:01
colomon ah, yes, that can't be helping matters.
jnthn moritz: Probably nom. It's moving fast.
moritz: Feel free to nudge me on blockers you hit with doing it in nom. 14:02
moritz one thing I didn't really consider so far is severity level of exceptions
14:02 hudnix joined
moritz currently I think we should just have 'fatal' and 'warning' or so 14:02
jnthn Suggested levels: MEH, OHNOES, OMG, OMFG
14:03 MayDaniel joined
moritz OMFGWTF 14:03
14:03 yinyin left
colomon KYAG 14:03
colomon is really annoyed that it takes 18 lines of mindless C++ to do what he could have done in one line of p6 14:05
daniel-s "An leading exclamation mark negates the meaning" 14:06
in the grammar chapter 14:07
moritz s/An/A/ or what is your point?
daniel-s should be a
feel like I need to tell someone 14:08
moritz hopes he remembers until he gets home
daniel-s want me to change it and send pull request?
or just email someone?
moritz daniel-s: what's your github ID? 14:09
daniel-s same as on irc
14:09 hugme joined
moritz hugme: add daniel-s to book 14:09
jnthn hugme: hug me!
hugme hugs me!
14:09 ChanServ sets mode: +v hugme
hugme moritz: ERROR: Can't add daniel-s to book: not authorized 14:09
14:09 moritz is now known as moritz_
moritz_ hugme: add daniel-s to book 14:09
hugme moritz_: ERROR: Can't add daniel-s to book: not authorized
14:09 moritz_ is now known as moritz
moritz oh, maybe it's because perl6 is an organization now :/ 14:10
daniel-s what's the book?
moritz the source repo for the "Using Perl 6" book 14:11
daniel-s: you have commit access now. Feel free to fix it there directly
daniel-s um, sorry, can you undo that 14:12
not to sound like a retard, but I haven't really used git alot... I really don't want to stuff it up
moritz daniel-s: there's nothing you can screw up that we can't repair
frettled famous last words :D
daniel-s lol, ok :)
moritz daniel-s: if you prefer, I can remover your commit bit again, but I really don't see the need - we've had lots of git newbiew 14:13
*newbies
daniel-s accepts that challenge :P
moritz jnthn: first blocker: multi-part names (X::Base) 14:14
workaroundable, but ugly
14:14 jaldhar left 14:15 jaldhar joined 14:20 jaldhar left
jnthn moritz: oh 14:24
moritz: Move them to top of nommap :)
moritz: I can do them this evening, or tomorrow.
14:26 simcop2387 left 14:30 wtw left 14:32 simcop2387 joined
moritz jnthn: are attributes with accessors implemented? 14:33
jnthn moritz: yes 14:34
nom: class Foo { has $.x is rw }; my $y = Foo.new; $y.x = 42; say $y.x
ENONOMBOTYET :)
We may be at the point where nom in evalbot would be useful though :) 14:35
moritz jnthn: oddly enough, my class X-Base { has $.backtrace; has $.message; method Str () { 'OH NOEZ' } } in CORE.setting makes the compilation take very long, I suspect it loops somewhere 14:36
jnthn moritz: take very long as in, not finish? 14:39
moritz jnthn: as in "I got impatient after a few minutes"
jnthn oh
:/ 14:40
ooh, does changing . to ! make the problem go away?
*ooc
moritz commenting out the attributes makes the compilation of the setting finish in ~20s
I'll try
jnthn ETOOSLOW 14:41
moritz yes, with ! it seems to work
14:42 kaare_ joined
jnthn OK, that tells me where to look :) 14:43
mberends daniel-s: gitready.com/ 14:44
dalek kudo/nom: bd689bb | moritz++ | NOMMAP.markdown:
add multi-part names (Foo::Bar) to nommap
14:47
kudo/nom: 22b0fbc | moritz++ | / (2 files):
start to stub in exception classes
14:48 stephanepayrard_ left 14:50 kboga left, koban left
jnthn -> home 14:53
daniel-s mberends, thanks 14:55
14:58 cognominal joined 15:08 dukeleto joined
dalek p: fd52b67 | (Martin Berends)++ | src/6model/knowhow_bootstrapper.c:
[src/6model/knowhow_bootstrapper.c] fix gcc 'return value not used' warnings
15:30
15:31 JimmyZ joined 15:32 sahadev joined 15:35 Chillance left 15:37 thou joined 15:38 Chillance joined 15:42 jfried left
dalek p: 367a3bc | (Martin Berends)++ | src/6model/multi_dispatch.c:
[src/6model/multi_dispatch.c] fix gcc 'parentheses around && within ||' warning
15:45
JimmyZ good evening, #perl6 15:47
15:48 molaf left
pmichaud good morning, #perl6 15:48
JimmyZ good early morning, pmichaud 15:49
15:49 MayDaniel left 15:54 jerome joined 15:57 kboga joined 16:10 thou left 16:19 daxim left 16:22 flatwhatson joined, flussence joined 16:25 cizpre joined
jnthn evening, #perl6 16:26
JimmyZ good night 16:29
JimmyZ sleeps
16:29 JimmyZ left 16:30 thou joined 16:31 thou left
tadzik 'evening 16:37
16:47 pernatiy left, mj41 left 16:49 Lorn joined 16:51 timbunce joined 16:52 timbunce left 16:55 dakkar left 17:12 mj41 joined
dalek p: 60387e7 | (Martin Berends)++ | / (3 files):
odel/reprs/P6opaque*] fix gcc 'incompatible pointer type' warnings, tweak .gitignore
17:13
jnthn Time to see if I can still build :) 17:14
mberends jnthn: aye, I've run out of warnings :)
tadzik and I've run out of memory. Chromium is a pig 17:15
flussence building from source? :) 17:16
17:16 _twitch joined
jnthn mberends++ # nqp still builds :) 17:16
tadzik also, swap is the worst invention I use
mberends \o/
tadzik flussence: yeah, no binary builds for gentoo
17:16 bluescreen10 joined
tadzik I think I'm going debian after exams ;) 17:17
17:17 cooper joined
flussence oh, right, there's chrome but not chromium binaries... 17:17
17:17 mj41 left
TimToady
.oO(virtual memory, which is great except for the virtual part...)
17:17
flussence (Firefox 5 is a *lot* more evil than Chromium - it somehow eats > 3GB of build directory space...) 17:18
17:19 Mowah left
sorear good * #perl6 17:19
mberends hi sorear
jnthn mberends: passes tests too
o/ sorear
colomon \o 17:20
mberends jnthn: what do you think of adding a slight performance penalty to eliminate the 'aggregate value' warnings? 17:21
colomon sorear: don't suppose you have an Android phone?
jnthn mberends: do not want 17:22
mberends: It's a silly warning anyway. Just pragma it away if it bothers you.
mberends jnthn: ok 17:23
jnthn mberends: That code ain't on a hot path at the moment but it could very easily get hotter... 17:24
mberends jnthn: so my 'slightly' didn't fool you ;)
17:25 _twitch left, simcop2387 left
colomon ooooo, nqp just built for me!!! 17:27
17:29 kaare_ left
tadzik nice 17:29
colomon: what C compiler do you use?
colomon tadzik: i686-apple-darwin9-gcc-4.0.1 (GCC) 4.0.1 (Apple Inc. build 5488) 17:30
17:30 mj41 joined
TimToady niecza: .say for 1,2,4 ... 65536 17:31
p6eval niecza v6-87-g44f7995: OUTPUT«1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536␤»
TimToady \o/
colomon++ :) 17:32
colomon TimToady: eh?
TimToady didn't you do the original sequence stuff? 17:33
17:33 simcop2387 joined
colomon I did one iteration of it, yup. 17:33
I didn't do the earliest version, and I only helped with the most recent. :)
TimToady well, then, everyone++ :)
colomon though I was there in the trenches when you kept changing it faster than I could implement it. ;) 17:34
I am excited to see it up and running in niecza! \o/ 17:35
niecza: .say for 1, 2, 3 ... 10 17:36
p6eval niecza v6-87-g44f7995: OUTPUT«1 2 3 4 5 6 7 8 9 10␤»
colomon errr.... interesting
rakudo: .say for 1, 2, 3 ... 10
p6eval rakudo 484a25: OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤»
colomon it's not iterating over the sequence, it's just doing the entire thing as one object? 17:37
TimToady niecza: say("[$_]") for 1,2,3...10 17:38
p6eval niecza v6-87-g44f7995: OUTPUT«[1 2 3 4 5 6 7 8 9 10]␤»
TimToady ayup
niecza: say (1,2,3...10).WHAT
p6eval niecza v6-87-g44f7995: OUTPUT«␤»
sorear mathw: møøse not enough for you?
TimToady o_O 17:39
sorear: something ^^ is odd about sequences
sorear how odd! 17:40
TimToady yes, 1 is always odd...
sorear niecza: say (1,2,3...10).perl 17:41
p6eval niecza v6-87-g44f7995: OUTPUT«(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).list.item␤»
colomon niecza: .say for 1..10 17:42
p6eval niecza v6-87-g44f7995: OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤»
colomon niecza: .say for 1...10
p6eval niecza v6-87-g44f7995: OUTPUT«1 2 3 4 5 6 7 8 9 10␤»
TimToady btw, niecza runs rosettacode.org/wiki/Kaprekar_numbers pleasantly fast
tadzik "it's even, even if some people think it's odd"
sorear niecza: say &Niecza::generate-series([1,2,3],10).perl
p6eval niecza v6-87-g44f7995: OUTPUT«(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).list␤»
17:42 wamba joined
sorear niecza: say &Niecza::series-listop(((1,2,3),10)).perl 17:43
p6eval niecza v6-87-g44f7995: OUTPUT«Unhandled exception: No value for parameter $exclude-limit in CORE series-listop␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (CORE series-listop @ 0) ␤ at /tmp/YJdO4zIzXR line 1 (MAIN mainline @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1768 (CORE
..C830_ANON @ 2) ␤ a…
sorear niecza: say &Niecza::series-listop(((1,2,3),10), False).perl
p6eval niecza v6-87-g44f7995: OUTPUT«(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).list.item␤»
sorear niecza: say @(10).perl 17:44
p6eval niecza v6-87-g44f7995: OUTPUT«(10, ).list␤»
17:52 hudnix left
sorear found it 17:52
colomon niecza: my @a := 1, 2, 4 ... *; say @a[100] 17:54
p6eval niecza v6-87-g44f7995: OUTPUT«Any()␤»
colomon guesses that's related
diakopter niecza: gist.github.com/1014924
p6eval niecza v6-87-g44f7995: OUTPUT«===SORRY!===␤␤Any()Confused at /tmp/wzOGASDnal line 1:␤------> <html><body>⏏You are being <a href="raw.githu␤␤Parse failed␤␤»
sorear niecza: my @a := (1, 2, 4 ... *); say @a[100]
p6eval niecza v6-87-g44f7995: OUTPUT«Any()␤»
sorear probably
diakopter TimToady: how fast 17:55
hm
sorear niecza: raw.github.com/gist/1014924/48b5f8...tfile1.txt 17:57
p6eval niecza v6-87-g44f7995: OUTPUT«===SORRY!===␤␤Any()Confused at /tmp/0WdNzEPavi line 1:␤------> https⏏://raw.github.com/gist/1014924/48b5f8463␤␤Undeclared routine:␤ 'https' used at line 1␤␤Parse failed␤␤»
17:58 hudnix joined
diakopter bah github changed something 17:58
tadzik p6eval bug?
dalek ecza: 904bb14 | sorear++ | / (3 files):
Fix binding to existing @vars
diakopter niecza: <html><body>
p6eval niecza v6-87-g44f7995: OUTPUT«Unhandled exception: Cannot use hash access on an object of type Str␤ at /tmp/FitXkF8mG6 line 0 (MAIN mainline @ 0) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1768 (CORE C830_ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1769 (CORE module-CORE @ 57) ␤
.. at /home/p6…
17:59 masak joined
masak salve, #perl6. 17:59
diakopter niecza: <html><body>masak
p6eval niecza v6-87-g44f7995: OUTPUT«===SORRY!===␤␤Any()Confused at /tmp/9xciz8uZMh line 1:␤------> <html><body>⏏masak␤␤Parse failed␤␤»
tadzik yayitsmasak!
sorear o/ masak
17:59 molaf joined
mberends salvete masak 17:59
diakopter niecza: <html><body><masak>
p6eval niecza v6-87-g44f7995: OUTPUT«Unhandled exception: Cannot use hash access on an object of type Str␤ at /tmp/6cJ9ps6U9p line 0 (MAIN mainline @ 0) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1768 (CORE C830_ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1769 (CORE module-CORE @ 57) ␤
.. at /home/p6…
sorear had something to say to masak but forgot it...
masak diakopter: I'm having difficulty mapping your actions to a rational intent... :P 18:00
maybe I should backlog...
diakopter attention
p6eval's gist downloading broke 18:01
masak ah.
sorear well, .say for 1,2,4...* works
masak #perl6, do you think Perl 6 should have a platform-independent way to do getch? (i.e. grab one keypress) 18:02
if yes, what should be the syntax? if no, how will the various implementations provide that functionality? 18:03
tadzik is there a platform independent way?
colomon masak: seems like it should be provided
tadzik syntax: [] :P
.u square
phenny U+32CC SQUARE HG (㋌)
tadzik also, this :) 18:04
jnthn .u finger
phenny jnthn: Sorry, no results for 'finger'.
jnthn aww
:)
18:04 kst joined
diakopter .u middle 18:04
phenny U+00B7 MIDDLE DOT (·)
masak jnthn: did you just give me the finger in a very elaborate way? :P
flussence .u 2328
phenny U+2328 KEYBOARD (⌨)
mberends masak: it would be nice, but historically platforms have made the promise very difficult to keep in a portable way.
jnthn masak: Would I :P 18:05
sorear masak: use Term::ReadKey; ReadKey()
masak sorear: finebyme.
mberends: I suspected as much. 18:06
sorear: then I guess my question becomes: would Rakudo and Niecza be able to have the same Term::ReadKey?
TimToady perl6: my $x = ⌨;
p6eval niecza v6-87-g44f7995: OUTPUT«===SORRY!===␤␤Any()Bogus term at /tmp/TA5r87G3Ie line 1:␤------> my $x = ⏏⌨;␤␤Parse failed␤␤»
..rakudo 484a25: OUTPUT«===SORRY!===␤Confused at line 22, near "my $x = \u2328;"␤»
..pugs: OUTPUT«decodeUTF8': bad data: '\9000'␤*** ␤ Unexpected "$x"␤ expecting "=", context, ":" or "("␤ at /tmp/2x6HDudne6 line 1, column 4␤»
masak ETOOCUTE 18:07
sorear masak: probably niecza-clr and rakudo/nqpnet could share a Term::ReadKey
based on use System::Console
masak I meant rakudo/parrot. 18:08
mberends masak: I cannot remember the source, but somewhere there is a good explanation of the futility of trying to be too universal.
masak mberends: agree. which is why this is probably a good problem for a module to tackle.
mberends +1
sorear niecza> (@(1..10)).perl
"(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).list"
niecza> (1...10).perl
"(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).list"
niecza> (1...10)[2]
Any
niecza> (@(1..10))[2]
3
masak I'm just wondering whether even making the module VM-independent is too tricky a task...
tadzik masak: you can add it to our awesome wiki page
sorear wtf of the day
TimToady till now I've just used run "stty raw -echo min 1 time 1"; and then push @INPUT, $TTY.read(10)[*]».chr unless @INPUT; :) 18:09
masak TimToady++
hardly platform-independent, but at least it works, today :)
...on Unix.
TimToady wonders whether cygwin provides stty... 18:10
flussence just asked some guy with it, he said yes 18:11
jnthn masak: getch is available on Win32.
18:12 mj41 left, mtk left
tadzik jnthn: t/p6regex/01-regex.t fails for nqp, expected? 18:13
also, (17 TODO tests unexpectedly succeeded) 18:14
sorear it gets weirder!
niecza: say (1...10).shift.perl
p6eval niecza v6-87-g44f7995: OUTPUT«(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).list␤»
18:14 mtk joined
tadzik niecza: say (1...10).shift 18:14
p6eval niecza v6-87-g44f7995: OUTPUT«12345678910␤»
sorear oh 18:15
TimToady something being mutable that shouldn't, seems
sorear it's producing a very un-flat list
with lots of inner parcels
18:15 colomon joined
sorear niecza: say (1,2,4...*).flat.[100] 18:15
p6eval niecza v6-87-g44f7995: OUTPUT«1267650600228229401496703205376␤»
TimToady niecza: say (1,2,3,4,5).shift 18:16
p6eval niecza v6-87-g44f7995: OUTPUT«Unhandled exception: Unable to resolve method shift in class Parcel␤ at /tmp/ULV2u7sN1e line 1 (MAIN mainline @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1768 (CORE C830_ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1769 (CORE module-CORE @ 57) ␤
..at /home/p6e…
18:18 kst left 18:19 kst joined
dalek ecza: e849cf7 | sorear++ | lib/CORE.setting:
Sprinkle .flat in ... impl; my @a := 1,2,4...*; say @a[100] works now
18:19
albot: 8129711 | (Perl 6 Evalbot)++ | lib/EvalbotExecuter.pm:
fix gists
18:21
diakopter evalbot control restart
18:21 sftp joined, p6eval joined, ChanServ sets mode: +v p6eval
diakopter niecza: gist.github.com/1014924 18:22
TimToady it would be nice to find a way not to return extra parcels in the first place, I suppose
colomon sorear++
p6eval niecza v6-87-g44f7995: OUTPUT«1 9 45 55 99 297 703 999 2223 2728 4879 4950 5050 5292 7272 7777 9999␤»
18:23 thou joined
diakopter gists work again 18:23
masak diakopter++
18:24 ChrisDennis joined
frettled skips the obvious pun. 18:27
diakopter what's the obvious pun :)
masak ENOTSOOBVIOUS 18:29
18:32 cizpre left
mberends ENOMEANWHATIMEAN 18:32
frettled Oh, you'll get the gist of it, eventually. :) 18:34
mberends ARGH
frettled zukzez
mberends ++frettled 18:35
18:37 kst left 18:38 kst joined
masak dåligt. :) 18:38
18:40 bluescreen10 left 18:43 wamba left 18:53 birdwindupbird left 18:55 bluescreen10 joined, molaf left 18:56 phenny joined 18:57 phenny left 18:59 phenny joined
sorear I am now embarking on a project to make niecza generate Metamodel::StaticSub objects during the parse itself 19:03
pmichaud I have new build systems for rakudo and nom... shall I push now or after I get back from errands? 19:09
*nqp and nom 19:10
tadzik how about now?
pmichaud I can push now but won't be available to troubleshoot/fix issues for about 45 mins (possibly a little longer)
frettled pmichaud: then them kids will have to cope for themselves for a while ;)
pmichaud I'll push the nqp changes. 19:11
tadzik we will have time for testing
dalek p: 878e8ff | pmichaud++ | / (5 files):
Major refactor of build/Configure system (based on new tools/lib/NQP/Configure.pm being developed for Rakudo's build/Configure system).
frettled \o/
pmichaud I've an update or two to make on nom... will push it when I get back. Testing of nqp build/configure welcome.
jnthn Oh noes...some breakage in nom :( 19:14
(not related to pmichaud++'s push)
darn...this looks bad :/ 19:15
PerlJam jnthn: that's okay ... I have every confidence that you can fix it :) 19:16
jnthn oh ouch 19:17
- if (defined && desired == DEFCON_UNDEFINED ||
- !defined && desired == DEFCON_DEFINED) {
+ if ((defined && desired) == DEFCON_UNDEFINED ||
+ (!defined && desired == DEFCON_DEFINED)) {
wtf
That totally changes the semantics of it
gcc-- # stupid warnings
<- much smarter than the compiler, but thanks. 19:18
sjohnson shakes fist at compiler 19:19
jnthn Seriously, how could the conditional have even been worth warning about? && being higher precedence than || is hardly news. 19:20
19:21 tyatpi joined 19:23 slavik left
TimToady I suppose they thought someone could think of it the wrong way, and add parens in the wrong place for clarity...oh wait... 19:23
jnthn :P 19:24
19:24 daniel-s left
jnthn mberends++ # cleanup - especially my misspelling of Rakudo :) 19:24
19:25 daniel-s joined
tadzik I find it funny that the typo was in so many places. I suppose jnthn++ writes "rak[TAB]" in his ide 19:26
jnthn :) 19:27
Such things tend to pass me by very easily.
Thanks to my crappy eyewight, I'm pretty dependent on reading whole words at once for any kind of decent reading speed. Anything that's the right shape fits.
dalek kudo/nom: 503fbd3 | jnthn++ | src/binder/multidispatch.c:
Fix regression introduced by a fix for a warning that GCC shouldn't have bothered giving anyway. Hopefully doesn't bring the warning back... :-/
19:28
jnthn I realize this when trying to learn new languages that have unfamiliar chars or char clusters. My reading speed becomes depressingly slow if I have to actually read the individual letters. :( 19:29
So, back to the nommap... 19:31
19:33 kboga left
tadzik fwiw, nqp builds for me, when I use "--prefix=`parrot_config prefix`". Maybe that should be the default, and cwd()."install" will be used when we use(d) --gen-parrot? 19:37
flussence masak: your latest blog post seems to be suffering from partial dd/mm/yy-itis... 19:39
19:40 mj41 joined
masak flussence: the date looks wrong, yes. 19:46
fixing. hoping it won't spam planet perl 6.
19:46 lue joined 19:48 slavik joined
frettled masak: hey, if it does, _two_ posts! Can't be worse than the Dear Dave multi-posts @reddit (i.imgur.com/jVvPQ.jpg) 19:52
mberends jnthn: I see that I misread your mind about where the closing paren had to go :)
masak frettled: huh. don't know what that's about, but it looks ambitious in a time-wasting kind of way. 19:54
frettled masak: yup 19:56
masak: basically a bunch of people have submitted the exact same image 19:57
jnthn moritz: ping
frettled masak: so don't worry about a double-post at Planet Perl 6 :D
jnthn mberends: I guess if you didn't write the binder it may be less obvious... :)
moritz jnthn: pong-ish
jnthn moritz: Good news: I just pushed multi-part names. 19:58
moritz: Bad news: only for our-scoped stuff and...you're in the setting.
moritz \o\
19:58 envi_laptop left
jnthn moritz: However, easy workaround 19:58
> my package Foo { class Bar { method m { say 42 } } }; Foo::Bar.m
42
frettled jnthn++ – looking forward to more 19:59
jnthn Or I could just make my class Foo::Bar { } mean that Foo is lexical and it's packages the rest of the way down. :)
dalek kudo/nom: 26dc6d6 | jnthn++ | src/ (5 files):
Get multi-part package names workinger. Note, only for our scope, which probably doesn't help moritz++ quite so much...
jnthn The thing is I'm not quite sure what the spec wants it to mean... :)
Anyway, nested packages in nom are (though almost certainly not yet perfect) a lot less hosed than in master. 20:00
moritz jnthn: I think that's roughly what the spec wants, except that class Foo::Bar { }; Class Foo { } should not give a redeclaration error 20:03
jnthn moritz: Yeah. I know how to fix that one.
tadzik yay
jnthn moritz: Also I golfed the hang you found. 20:05
jnthn tries to get it under the C debugger 20:06
20:06 cooper|ipad joined
jnthn oh wow 20:07
diakopter waits
jnthn I managed to make exception handler search into an infinite loop
frettled nice :)
20:08 wamba joined
jnthn Turns out 30% speedups thought up in the shower can be slippery... 20:08
frettled Well, is the infinite loop 30% faster than it used to? :D
mberends jnthn: so is all that work now down the drain? 20:09
tadzik nehehehehe :)
An Actual Laughter Was Produced
jnthn hehe...I have a call chain that loops back on itself. 20:10
mberends: I think I can clean up the bug...
Better than packing out the change. The optimization puts performance head and shoulders above what it would be otherwise... 20:11
pmichaud back agaub
back again
mberends jnthn: don't throw the baby out with the bathwater!
jnthn Hope it's not too hard to fix, or I might throw in the towel
pmichaud: o/ 20:12
mberends jnthn: you'll manage, you're not wet behind the ears any more
tadzik fwiw, nqp builds for me, when I use "--prefix=`parrot_config prefix`". Maybe that should be the default, and cwd()."install" will be used when we use(d) --gen-parrot?
frettled mberends: very droll :D
tadzik pmichaud: ^
pmichaud tadzik: nqp is supposed to use the prefix of whatever it finds for parrot, iirc. 20:13
is it not doing that? 20:14
tadzik nope. Configure.pl has "prefix = opts<prefix> || cwd()."install/"" or something like that
pmichaud tadzik: I think that doesn't mean anything if a parrot is found/provided, though. 20:15
tadzik pmichaud: see github.com/perl6/nqp/blob/master/C...ure.pl#L38
and then line 64
pmichaud pj. tjat
drat
oh, that's a small bug, yes.
dalek p: 9ec488d | pmichaud++ | Configure.pl:
Also look for any parrot in the search patch (tadzik++).
20:16
pmichaud better?
tadzik lemee see
yeah, it found it instantly now. pmichaud++ 20:17
diakopter the fix had wetter work
pmichaud how were you having it find parrot before?
tadzik pmichaud: --prefix=`parrot_config prefix` 20:18
pmichaud oh, I see. You were setting prefix to the location of your parrot.
got it.
tadzik yep
20:18 wamba left, wamba joined, lichtkind joined
jnthn oh my. In debugging this I'm reading how Parrot looks up exception handlers 20:19
frankly, :'(
masak that bad, eh? :( 20:20
lichtkind oh dear johnny it will be all-right :)
20:21 cooper|ipad left, cooper|ipad joined
PerlJam wonders how the h in Jonathan migrated to just before the first n 20:21
jnthn yeah. It does a Parrot-level, GCable-allocating, signature-string parsing method invocation...on every call frame it finds that has a plausible handler.
...until it finds one... 20:22
masak smooth.
pmichaud jnthn: that's whenever an exception is thrown? 20:23
jnthn pmichaud: oh yes
20:23 dorlamm joined
jnthn pmichaud: scheduler.c:912 20:23
pmichaud oh yeah, that's been there a while. :) 20:25
jnthn *sigh*
jnthn puts "exceptions" onto his "list of Parrot things to re-invent properly" list
tadzik 6ceptions!
jnthn At this rate I'll practically have written a VM. 20:26
masak tadzik: :)
pmichaud that does seem to be the highest-probability outcome at this point. Maybe we could call it something like "nqp" or something like that :-P
masak "your sub call was 6cessful!"
PerlJam jnthn: But it'll be a VM tailored to Perl 6's needs. :) 20:27
jnthn 6 sells!
pmichaud it'll be a vm that is more compatible with perl 6, but can still support other languages (hopefully)
tadzik heh, not only amazon reads my browsing history, it also thinks I'm programing in Ruby
masak "Parrot was in the way so we, um, routed around it." 20:28
jnthn pmichaud: Innevitably, since every other language is just a Perl 6 DSL :)
PerlJam jnthn: I'm going to start telling Ruby people that. 20:29
jnthn PerlJam: I hear they like DSLs, so I expect it'll be well received. ;)
PerlJam indeed :) 20:30
masak PerlJam: in order for them not to take offense, prefix it with "don't take this the wrong way, but..." :P
20:30 wknight8111 left
mberends masak: there, you drove off whiteknight++ 20:30
masak o.O
PerlJam mberends: he's just retreated to a safer position where he can regroup and launch a better parrot for us :) 20:31
mberends PerlJam: that's the Right Stuff :)
tadzik Damn, "Operating Systems Design and Implementation" cost as much as a Kindle 20:34
mberends: do they cost any less than 120$ in Netherlands? 20:35
mberends tadzik: I'll search for that
tadzik thank you 20:36
I now wonder if Tanenbaum wrote it in English originally ;) 20:37
lichtkind moritz: ding :)
mberends tadzik: €71.51 www.selexyz.nl/product/978013505376...mentation/ 20:38
20:39 BinGOs joined
tadzik not much better :/ 20:39
PerlJam tadzik: if only you'd won masak's contest ...
moritz lichtkind: pong 20:40
tadzik gah :(
pmichaud okay, I'm about to push the new rakudo build system :) 20:42
any reason to wait?
Util New RC solution: rosettacode.org/wiki/Non-continuous...ces#Perl_6
tadzik pmichaud: no! :)
moritz tadzik: amazon.de has a used copy for 44.90 Euro + 3 Euro shipment (in .de) 20:43
jnthn pmichaud: yes
pmichaud: oh, darn :)
pmichaud yeah, already pushed :) 20:44
jnthn pmichaud: I was only going to say yes so I could push first ;P
moritz tadzik: or new for 67€
tadzik moritz: thanks, I'll consider that. .de is not far :)
pmichaud jnthn: shouldn't be any big conflicts, I don't think.
jnthn pmichaud: not unless you were patching Terrifying Op also, no. :)
20:45 benabik joined 20:46 bluescreen10 left
dalek kudo/nom: 7ec8cf2 | pmichaud++ | / (6 files):
New Configure/build system, part 1.
20:46
kudo/nom: 1b81860 | pmichaud++ | tools/lib/NQP/Configure.pm:
Clean up some messages during Configure.pl .
kudo/nom: 412a42e | pmichaud++ | Configure.pl:
Update Configure.pl --help text.
kudo/nom: 6c9783d | pmichaud++ | / (2 files):
Add some better error message support and option handling.
kudo/nom: bcc0773 | pmichaud++ | Configure.pl:
Search for nqp executable if not specified. Check NQP revision requirements.
kudo/nom: 39737ca | pmichaud++ | / (2 files):
Clean up verify_install handling.
kudo/nom: 6818837 | pmichaud++ | tools/lib/NQP/Configure.pm:
Re-sync NQP::Configure with version from nqp (bug in gen_parrot failing to return to correct directory).
kudo/nom: 424a6df | pmichaud++ | Configure.pl:
Force a "make clean" after running Configure, output a better 'we are done' message.
kudo/nom: 7f2911c | pmichaud++ | / (6 files):
Merge branch 'nom-build' into nom
kudo/nom: 5e2be40 | jnthn++ | src/ops/perl6.ops:
When lying about call frames, be sure to cover our tracks. :-) (Actually, just don't introduce a loop in the call chain...) Fixes hang reported by moritz++.
20:47 benabik left, daniel-s left, daniel-s joined
tadzik I can has an umbrella? 20:48
masak it's raining nom!
pmichaud perl Configure.pl --gen-parrot # dtrt again :-)
mberends flood!
pmichaud also, one can now do: perl Configure.pl --gen-parrot=master and it builds nqp/rakudo using the master branch of Parrot
tadzik masak: :D
jnthn pmichaud: What does --gen-parrot actually do? 20:49
pmichaud: NQP and Parrot? 20:50
oh, you just said so
:)
pmichaud --gen-parrot automatically implies --gen-nqp
(since it wouldn't make sense to use an already existing nqp on a parrot you just generated)
jnthn k
pmichaud --with-parrot also implies --gen-nqp
PerlJam could you say --gen-parrot=<some sha1> --gen-nqp=<some sha1> ?
pmichaud PerlJam: Yes.
PerlJam cool 20:51
pmichaud anything that's a valid argument to "git checkout "
tadzik niice!
pmichaud it still performs version checks (and still dies if version checks aren't satisfied). I'm likely to do a --no-version-check option to disable version checks
or maybe that's just --force 20:52
dalek kudo/nom: d158f3f | pmichaud++ | build/ (4 files):
Remove some outdated build files and scripts.
kudo/nom: 7291309 | pmichaud++ | src/ops/perl6.ops:
Merge branch 'nom' of github.com:rakudo/rakudo into nom
20:52 pernatiy joined
tadzik pmichaud: nom builds flawlessly for me 20:52
sorear back
pmichaud also, nqp and nom now share essentially the same configuration library (in tools/lib/NQP?Configure.pm)
s{\?}{/} 20:53
frettled pmichaud++ - this is getting cooler and cooler
pmichaud other languages built using NQP can also use that library, so they don't have to duplicate all of the build scripts
it's essentially just Configure.pl and tools/lib/NQP/Configure.pm
(and tools/build/NQP_REVISION) 20:54
jnthn pmichaud: oh, excellent!
pmichaud++ 20:55
moritz just one question I can't resist to ask...
pmichaud: does it have tests? :-)
pmichaud moritz: no. But I'm not a big believer in testing configure/build systems.
I'm fine if someone wants to write them, though.
(they belong in the nqp repo)
jnthn moritz: re "has $.foo" in the setting, turns out there's an underlying issue and the bug I just fixed was hiding the reporting of it. 20:56
moritz suddenly feels like a valuable early adaptor :-) 20:57
20:57 bluescreen10 joined
PerlJam "early adaptor"? 20:59
sorear adopter
jnthn I dunno, he's adapted to the new codebase pretty quickly too :)
moritz++ 21:00
mberends moritz is adepter than most early adopters
slavik ha!
tadzik this would make a good tongue-twister 21:01
slavik clientsfromhell.net/post/6295037815...doing-over
tadzik an early adaptor early adapts to early adopters release
sorear so now, from the todo list TimToady gave me the other day, I have two items left, and both are problematic at an understanding level
tadzik slavik: was that in your company? :) 21:02
slavik tadzik: it wouldn't be my company anymore ;)
tadzik: no, we get dumber people than that
sorear 1. "sorting lists of pairs" - discussion deadlocked on how cmp should work. This is bad...
2. "log" - how best to handle transcedental base arguments? 21:03
21:04 Psyche^ joined, Psyche^ is now known as Patterner
masak sorear: what does "transcendental" mean in a number system that only stores finite precision? 21:04
sorear masak: "function that never returns a precise result" :) 21:06
PerlJam that sounds like you just gave a new name to "floating point"
masak in the sciences, we call it an error bar.
sorear but that's beside the point 21:07
sbp that's where all the washed up theoreticians go to drink
masak I don't think I see the point, yet.
21:07 cooper|ipad left
sorear the point is that all the exp-related functions take an extra argument 21:07
PerlJam sorear: do the most conservative thing possible.
moritz FatRats are arbitrary precision
dalek kudo/nom: 05e5fab | pmichaud++ | Configure.pl:
Parameterize Configure.pl so it can potentially be used by languages other than Rakudo.
sorear like the base for logarithms, or the angle type for sin 21:08
masak moritz: difference between arbitrary precision and infinite precision.
mberends I would not like my log to use this base en.wikipedia.org/wiki/Transcendental_number
moritz masak: I know. But the question remains where to cut off
masak yes, quite.
pmichaud All your transcendental base are belong to us. 21:09
sorear optional arguments are expensive. I don't think "log($num, $base = Num::e)" is viable
moritz mutlis are OK too
21:09 benabik joined
masak I still think we should learn as much from Guido/Python as possible, and not give the user too much precision at the expense of speed. 21:09
pmichaud optional arguments are inherently expensive, or is that implementation dependent?
masak I doubt I will ever need log or exp or sin with finer precision than the ordinary float/double precisions. 21:10
sorear pmichaud: prooobably the latter
masak: where did precision come in to this? 21:11
masak sorear: if that's a stumbling point, let me get back to my "transcendental numbers can't be represented in the computer" point, and we'll go from there. :)
felher I don't know if the following is of any interest since S32::Basics is marked as DRAFT but i think S32-setting-library/Basics.pod has a broken reference in line 198. :) 21:12
masak felher: care to fix it? :)
sorear masak: I tried to start a conversation about efficient handling of "use trigbase" and optional arguments. It got derailed by someone wanting to talk about computable reals. 21:13
pmichaud sees a commitbit preparing for launch
masak sorear: I'm sorry, I misunderstood you completely, then.
sorear: right around "how to handle transcendental base arguments". 21:14
21:14 wamba left
masak oh! you meant the type of function! 21:14
not the type of number.
felher masak: how? Wouldn't that require me to have commit-access to perl6/specs? Or am i misunderstanding something? 21:15
pmichaud felher: we can give you commit access to perl6/specs
sorear felher: what's your github name?
felher pmichaud, sorear: felher
pmichaud, sorear: just as here :) 21:16
masak rakudo: say "OH HAI".substr(-3)
p6eval rakudo 484a25: OUTPUT«HAI␤»
masak rakudo: say "OH HAI".substr(* - 3)
pmichaud felher: you now have a commitbit
p6eval rakudo 484a25: OUTPUT«maximum recursion depth exceeded␤ in 'Cool::Num' at line 1934:CORE.setting␤ in 'Cool::Num' at line 1934:CORE.setting␤ in 'Cool::Numeric' at line 1921:CORE.setting␤ in 'Cool::Numeric' at line 1921:CORE.setting␤ in 'Cool::Num' at line 7674:CORE.setting␤ in 'Cool::Numeric'
..at li…
masak niecza: say "OH HAI".substr(* - 3)
p6eval niecza v6-89-ge849cf7: OUTPUT«Unhandled exception: Cannot use value like Sub as a number␤ at /home/p6eval/niecza/lib/CORE.setting line 568 (CORE die @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 42 (CORE Any.Numeric @ 4) ␤ at line 0 (ExitRunloop @ 0) ␤ at
../home/p6eval/niecza/lib/CORE.setting line 0 (…
mberends sees ETOOMUCHRESPONSIBILITY flashing on felher's console ;) # Ignore it!
felher pmichaud: thanks a lot. 21:17
mberends: :P
masak because none of the implementations are conformant, I'm going to write a blog post that's not up to spec today.
pmichaud felher: please feel free to fix any typos/linkos you happen to find
masak will update it when implementations start to DTRT.
pmichaud ..."not up to spec?"
or "up to spec but NYI"?
masak pmichaud: see the evaluations above.
flussence I guess in the sense of "here's how to use a <marquee> tag"... 21:18
sorear pugs: say "OH HAI".substr(* - 3)
p6eval pugs: OUTPUT«OH HAI␤»
masak pmichaud: neither Rakudo nor Niecza discard negative arguments to .substr. both error out on Whatever.
pmichaud well, WhateverCode, actually.
21:18 Zapelius joined
masak yeah, wh... :) 21:18
pmichaud masak: can you add a test for it? 21:19
21:19 benabik left
pmichaud or is there one already? 21:19
felher pmichaud: thnx, i will. :)
masak pmichaud: will investigate after I've blogged today.
21:19 icwiener left
flussence there's no *s in the substr.t I'm looking at... 21:20
masak TimToady has been quite clear that that's the way it should work. 21:21
sorear masak: oh! I am sorry for the ambiguity.
masak sorear: me too. I could have picked it up way earlier.
21:23 bluescreen10 left
pmichaud pmichaud@kiwi:~/rakudo$ ./perl6 21:33
> say "OH HAI".substr(*-3)
HAI
> say "OH HAI".substr(*-5)
H HAI
>
are the details of the params to substr documented anywhere, either in spec or in test? 21:34
masak possibly not.
pmichaud++
well, there is some wording in S32/Str. 21:35
pmichaud I'm not too comfortable about committing this before it appears somewhere official :)
mberends it's now officially in the irclogs
pmichaud I'd even go for a reference in the irclogs :)
masak I'm sure TimToady has said it in the irclogs. 21:36
but I'm writing a blog post right now, so I won't look it up just now.
flussence the * thing looked odd to me at first, but it's easy to mnemonise it as "the entire string"
pmichaud well, "chars of the string" in this case.
masak flussence: it vibes really well with how arrays work.
21:37 Tene left
pmichaud I don't mind committing the WhateverCode part, but the behavior on negative values isn't specced. 21:37
it's supposed to treat a negative value like zero, then?
masak no idea.
pmichaud yeah, that's what bugs me about no spec or tests :)
masak array indexings treat them like errors. :)
21:38 Tene joined
pmichaud so, lacking a spec otherwise, officially it falls back to "the way Perl 5 does it" :-P 21:38
21:38 Tene left, Tene joined
dalek kudo/nom: 0132c2e | jnthn++ | src/CORE.setting/Exceptions.pm:
Fix up X::Base a little.
21:39
kudo/nom: b95108c | jnthn++ | src/CORE.setting/Attribute.pm:
A little circularity sawing so we can use attributes with accessors in the setting. In theory we shouldn't need to do this; can track down the underlying issue later.
tadzik X-Base sounds like Power Rangers or something :) 21:40
pmichaud All your transcendental X-Base are belong to us.
masak pmichaud: irclog.perlgeek.de/perl6/2010-09-17#i_2838129 21:41
blog post! strangelyconsistent.org/blog/june-8...of-strings
21:42 Psyche^ joined
frettled string him up! 21:42
masak now, about those tests... :)
21:44 Patterner left, Psyche^ is now known as Patterner
lichtkind good night 21:45
masak night, lichtkind. 21:46
it's been a while since I was in roast. I... I suppose the right way to go about this isn't just to indiscriminately change all occurrances for -$N to *-$N, thus breaking all implementations that run S32-str/substr.t ?
21:46 lichtkind left
tadzik like both? 21:47
pmichaud I think indiscriminately change is okay, fwiw 21:48
flussence yeah, the test's wrong in this case
masak changes indiscriminately
sorear wrong tests are BAD
speaking of which, what's "munch"?
the spectests use it, but it's not mentioned in the specs 21:49
pmichaud munch is part of lists.... although it wasn't necessarily intended to be spec
there will certainly be something like it, so .munch is fine
mberends "munch" seemed cute, on that day ;) 21:50
pmichaud iirc, it got a tentative approval
"that day" being very hectic, as it was :) 21:51
masak which is correct, substr($str, 2, -3) or substr($str, 2, *-3) ?
we've only discussed the second argument so far.
pmichaud masak: I thought about that also -- I suspect the latter.
masak me too.
pmichaud since a "length" of -3 doesn't really make sense.
flussence if -3 is a length and not an end point... -3 wouldn't make sense anyway
masak pmichaud: though it doesn't feel as symmetric as the second argument.
mberends -3 would surprise me more 21:52
masak when the third argument is negative, it ceases to denote a length and starts meaning position.
pmichaud well, it means "position from the end" :-P
which involves "length"
but we don't do "length" :-)
21:53 y3llow_ joined
pmichaud so the argument name is incorrect anyway 21:53
21:53 pothos_ joined
masak I'll... just go back to indiscriminate changing :) 21:53
dalek ecs: 451a32f | larry++ | S32-setting-library/Str.pod:
spec WhateverCode in substr
pmichaud oooh!
tadzik wklej.org/id/543382/ -- nom runs this stupid thingy 15x faster than master 21:54
21:54 pothos_ is now known as pothos
tadzik perl6: say (2 < 5).WHAT 21:55
p6eval rakudo 484a25, niecza v6-89-ge849cf7: OUTPUT«Bool()␤»
..pugs: OUTPUT«Bool␤»
tadzik perl6: say ((2 < 5)).WHAT
21:55 y3llow_ is now known as y3llow
p6eval rakudo 484a25, niecza v6-89-ge849cf7: OUTPUT«Bool()␤» 21:55
..pugs: OUTPUT«Bool␤»
mberends about substr, we recently discussed that .chars should more correctly be .graphs 21:56
tadzik otoh, nqp is like 2x slower than nqp-rx on this
TimToady .chars is less confusing, and supposed to represent the current level, which is supposed to be graphs by default 21:57
dalek ast: 813d445 | masak++ | S32-str/substr.t:
[S32-str/substr.t] put in lots of Whatevers

It was decided (and spec'd) that negative string indices and lengths aren't allowed in substr any more. Adapted the tests to reflect this.
masak I'm pretty sure I broke something. but it's hopefully a step in the right direction.
flussence breaking something is the whole point of TDD :) 21:58
(if it ain't broke, add more tests that are)
masak :) 21:59
'night, #perl6
flussence i/
o/ even
tadzik I thought the point of TDD is breaking... nothing
21:59 masak left
flussence when nothing is broke, that's where you do a git-commit :) 21:59
22:00 dorlamm left 22:01 cooper|ipad joined
dalek ecs: c788c3d | larry++ | S32-setting-library/Containers.pod:
treat splice more like substr
22:02
ecs: 2164c2b | (Felix Herrmann)++ | S32-setting-library/Basics.pod:
[S32/Basics] remove broken reference (L<Scalar>)
22:04
kudo/nom: cb756d5 | jnthn++ | src/Perl6/Actions.pm:
Get Num literals in place. We work them out at compile time and then just create the boxed constant once, not re-parse it every time at runtime. Note - the code here is probably duplicating something from HLL::Actions and could do with being in NQP, not PIR, where that's not the case. Please can somebody look at that? kthbx.
22:05
pmichaud omg, no 22:08
pmichaud again cries at the further bloating of handling numeric literals
sorear heh 22:09
jnthn pmichaud: I can't do everything.
sorear numeric literal handling in Niecza is... I wouldn't say _bloated_ but chaotic would be charitable
pmichaud jnthn: I know... it just bugs me that the answer always seems to be "let's add yet another copy of the wrong way to do it into our codebase"
jnthn pmichaud: We now do *all* the computation at compile time.
pmichaud well, we don't compute +"123" at compile time. 22:10
jnthn ?
We could, but that's optimization.
pmichaud (no, we're not supposed to... but I don't want to have two separate sections of "calculate a number" code either)
and this only handles literals that have an 'e', yes? 22:11
jnthn pmichaud: Yes, if they don't have an exponent, they're Rat.
pmichaud that's still going through the runtime calculation, then.
jnthn pmichaud: ? 22:12
pmichaud: What is?
pmichaud a literal like 123.45
jnthn pmichaud: It's not, because the Rat type hasn't even been put back in place yet.
pmichaud: But it shouldn't be computed at runtime when it is.
pmichaud either way, having the str2num functions in Perl6::Actions is wrongish, unless they will also be accessible at runtime. 22:13
jnthn pmichaud: Where should they be? 22:14
pmichaud we should have one set of conversion functions for all string to number calculations
not a separate set for runtime and compile time
jnthn pmichaud: +1
Well, +1ish :)
The actual computation should be the same
For now we may have to cope with the code to stick it in the constant table and the code to produce the value at runtime being slightly different. 22:15
pmichaud why?
jnthn Maybe we can make them completely the same anyway.
22:15 bis0n joined
bis0n Hello all! How to use regular expression to check if a variable contains only one number? 22:16
sorear Question is both underspecified and overspecified.
Step back, explain what you're trying to do.
pmichaud bis0n: in perl 5 or perl 6?
jnthn pmichaud: Because we don't have full-blown serialization just yet. 22:17
pmichaud: I may be able to fathom a way to deal with the issue anyway though.
pmichaud jnthn: I don't understand why that requires two separate ways of doing it
jnthn: no, let me go ahead and write it.
bis0n pmichaud, in perl 5 but I can't join channel perl I don't know why 22:18
pmichaud bis0n: do you mean "number" or "digit"?
bis0n number like [0-9]
sorear bis0n: have you been #perl-help recently?
pmichaud that's a digit
/^\D*\d\D*$/ only matches strings containing exactly one digit 22:19
/^\D*\d\D*$/ only matches strings containing exactly one digit
bis0n thx you, sorry for my poor english
thank you very much
22:20 cooper|ipad_ joined, cooper|ipad left, cooper|ipad_ is now known as cooper|ipad, mj41 left
bis0n if my entry contain only digit can I use /^\d$/ ? sorry, I just want understand 22:20
jnthn pmichaud: OK. 22:21
pmichaud: You'll figure out what I mean when you dig in.
pmichaud jnthn: I can put it in HLL::Compiler, HLL::Actions, or Perl6::Compiler
(or Perl6::Actions)
jnthn pmichaud: I guess that is runtime visible. 22:22
pmichaud I guess I'm asking if they are runtime visible or not.
sorear bis0n: I think what you want to do is if ($test >= 0 && $test < 10)
jnthn pmichaud: Not without an explicit import. 22:23
bis0n oO yes that is simple!
pmichaud bis0n: yes, if your string contains only digits you can use /^\d$/. But if your string contains only digits, you can just check if its length is 1.
sorear bis0n: your problem was saying "regular expressions"
bis0n yes... but I need to check many possibilities... 22:24
sorear it's called an X/Y problem
bis0n but now I think that is ok, I will test, thank you
sorear "How do I use X to do Y?" - classic bad question
jnthn pmichaud: To clarify, that just means use statement in the setting. 22:25
bis0n yes all is ok now, thx!
jnthn pmichaud: e.g. use Perl6::Grammar; use Perl6::Actions; at the start of the setting. 22:26
pmichaud jnthn: yes, that's what I expected. 22:27
sorear Is it acceptable for spectests to mention 'Perl6::Compiler'?
pmichaud sorear: probably not.
jnthn pmichaud: oh...though...I need to clean up module loading a bit first...need a little more unification there 22:28
pmichaud: e.g. so NQP and Rakudo use the same "low level" module loading mechanism. 22:29
pmichaud jnthn: no problem
jnthn pmichaud: At the moment if NQP *and* Rakudo try to load the same module things get messed up.
pmichaud: Actually really we should be able to do use Perl6::Compiler; and it'll bring in both of the above. 22:30
Then we'll ahve the interface to it that we need for implementing eval.
pmichaud saying "use Perl6::Compiler" would import HLL::Compiler?! 22:31
that's.... weird.
oh, you meant Perl6::Grammar and Perl6::Actions
jnthn pmichaud: er, I meant Perl6::Grammar and Perl6::Actions
pmichaud I can live with that.
I'm thinking it might want to live as a method on the Compiler object. 22:32
jnthn pmichaud: HLL::Compiler? Or Perl6::Compiler?
pmichaud "Yes"
on HLL::Compiler, and the overridable if needed by Perl6::Compiler 22:33
(or NQP::Compiler or whatever)
22:33 cooper|ipad left
jnthn pmichaud: I'm just thinking dependency ordering. 22:33
22:33 cooper|ipad joined
jnthn pmichaud: Perl6::Compiler needs to use Grammar and Actions 22:33
pmichaud: So in actions we'd not be able to see Perl6::Compiler
Though of course there's compreg.
pmichaud surely there's a dynvar that points to our current compiler object :-) 22:34
(or there ought to be a ...)
jnthn Oh, that'd also work :) 22:35
Well
but if you come in through pre-comp you may not be in the compiler ;)
22:35 icwiener joined
jnthn oh wait 22:35
that's not a problem :)
pmichaud anyway, there's a method on HLL::Compiler that lets us find any known compiler object 22:36
jnthn oh, cool
:)
I didn't know that. :)
pmichaud HLL::Compiler.compiler("nqp") -- returns the compiler named "nqp" 22:37
jnthn You'll probably encounter SymbolTable.add_constant at some point. That's the thingy that knows how to add something to the "constant table"
pmichaud (yes, it currently does a compreg to find the compiler... but it could just as easily look up in an our %compilers shared variable)
jnthn Yeah, I'm happy we have compreg abstracted away.
pmichaud the adding of constants isn't the part that bugs me :) 22:38
jnthn Note that add_constant also makes the real object too.
pmichaud that part's well abstracted
jnthn So you may want to split add_constant into two parts
add_constant and make_constant or some such, so add_constant calls make_constant
pmichaud and it can be treated as an optimization until we have all of the other pieces (e.g., 'Rat') in place
jnthn Yeah. I expect us to make Rat and Complex constants at compile time too. 22:39
May as well go the whole hog. 22:40
pmichaud I just want to get us out of the habit of creating multiple routines for converting string literals into numeric values.
s/literals/values/
if we're doing it for speed/performance, okay, but so far we've been doing it out of poor design 22:41
jnthn Oh, I'm all for the unification. 22:42
TimToady well, to take it to the logical endpoint, all constant folding should be done by the same set of code that would have been called at run time 22:45
(this is how P5 does it, because that's how P4 didn't...)
pmichaud exactly.
the notion of separate code handling things at compile time is one of the things I want to avoid.
TimToady and the P4 constant folder was always getting out of sync with the runtime code
jnthn Yes, that's exactly the direction I'm going in. 22:46
TimToady all the compiler really has to worry about is purity, and then it's really just a BEGIN <expr>
22:46 cooper|ipad left
jnthn TimToady: It's exactly the same mechanism I already built for trait_mod. 22:47
TimToady: When it goes searching for trait mods, it looks through the lexical scopes, finds the nearest instantiated dispatch and uses that.
pmichaud trait_mod is accessible at runtime?
jnthn TimToady: So all the workings are in place.
pmichaud: Accessible
pmichaud: But never called at runtime
TimToady cool. where P5 fell down, of course, was in having any decent serialization that was any faster than just recompiling :)
jnthn pmichaud: All trait_mods are called at compile time 22:48
pmichaud: They get dynamically compiled if needed.
(e.g. on demand)
pmichaud jnthn: okay. the big difference here then is that not all string to number conversions happen at compile time :)
jnthn pmichaud: Well, not all trait mods do either I guess.
TimToady there's always BEGIN and eval 22:49
jnthn eval...well, OK, that's compile time. :)
buubot_backup jnthn: ERROR: syntax error at (eval 28) line 1, near "; .."
jnthn
.oO( eval fork while 1 # shut up... )
TimToady buubot_backup: eval kill $$
buubot_backup TimToady: 0
jnthn Anyway, my point was that if we want to constant fold, we'll do it with whatever operators are in scope at that point, by calling them just as we would at runtime. Same code. 22:51
pmichaud I'm thinking that constant eval should do the same.
TimToady constant is really BEGIN in disguise 22:52
jnthn "constant eval"?
pmichaud given a literal like 123, we should use whatever the runtime uses to convert that to a numeric sonstant
*constant
mberends jnthn: are we worried about whether there is just one instance of this code or that there may be two instances? 22:53
TimToady perl6: constant @fib = 0,1,*+*...*; say @fib[10];
p6eval rakudo 484a25: OUTPUT«===SORRY!===␤Constant type declarator not yet implemented at line 22, near "= 0,1,*+*."␤»
..pugs: OUTPUT«*** ␤ Unexpected "@fib"␤ expecting "=", context, ":" or "("␤ at /tmp/8PC8xA_7oZ line 1, column 10␤»
..niecza v6-89-ge849cf7: OUTPUT«55␤»
TimToady niecza++
jnthn mberends: I don't think that's the issue.
pmichaud: OK, which moves the question to, what does the runtime use :) 22:54
mberends jnthn: I didn't think so either.
TimToady niecza: constant @fib = 0,1,*+*...*; @fib[10] = 42; say @fib[10]
pmichaud jnthn: right, which is what concerns me about putting it in Perl6::Actions :) 22:55
p6eval niecza v6-89-ge849cf7: OUTPUT«42␤»
TimToady aha!
niecza -= .5
jnthn pmichaud: Well, that's only an issue if the runtime doesn't call that ;-)
pmichaud jnthn: right. anyway, I'll work on it.
TimToady niecza: constant @fib = 0,1,*+*...*; say @fib[10]; @fib[10] = 42; say @fib[10] 22:56
p6eval niecza v6-89-ge849cf7: OUTPUT«55␤42␤»
jnthn pmichaud: I mean, in a sense you can put it in the Str class in the setting, as Str.Num, Str.Int, etc.
pmichaud: But then we can't write any literal numbers/integers in the setting until after that. :)
TimToady you just have to use Church numbers :) 22:57
jnthn Which is probably getting too cute with the circularity saw. :)
pmichaud jnthn: it's not Str.Num or Str.Int anyway
at best, it's Str.Numeric
jnthn pmichaud: Sure, I was more calling out the general issue. 22:58
dalek odel: f6f0936 | (Martin Berends)++ | c/README.markdown:
[c/README.markdown] begin the 6model/c subproject
22:59
pmichaud jnthn: okay, now that I've got the build systems fixed up... what priority next for me? Parcel and List?
jnthn pmichaud: Yes, I think so 23:00
pmichaud okay
I should be able to work on those tonight
23:00 benabik joined
jnthn pmichaud: Provided it was performant, how would you feel about at least Array eventually being a role? 23:00
pmichaud: Same with Hash.
pmichaud why does it need to be a role, ooc? 23:01
jnthn pmichaud: Otherwise any typing stuff becomes quite the cheat.
pmichaud: It needs to do Positional[Foo]
pmichaud and only roles can do that?
jnthn Or Associative[Foo
]
Yes, only roles are parametric.
I mean, OK, we *could* mix in the role to the container at the right point
But that's icky.
23:02 benabik left
jnthn pmichaud: Thing is that we can do all the "resolution" of the role at compile time. 23:02
(now...that wasn't possible before)
pmichaud what would be the declaration so that Array ~~ List ?
mberends pmichaud: if you have time, please look at test failures documented in github.com/jnthn/zavolaj/blob/mast...resident.t 23:03
pmichaud mberends: will do.
mberends :)
pmichaud mberends: that's with latest rakudo release?
mberends yes
pmichaud mberends: okay.
mberends also for you to extend if needed: github.com/jnthn/zavolaj/blob/mast...ustomlib.t 23:04
jnthn pmichaud: role List[::T] does Positional[T] does Iterable { }; role Array[::T = Mu] does List[T] { } # at a guess
sorear *shudder*
pmichaud jnthn: and it's okay if Iterable is a class? 23:05
jnthn pmichaud: Feel free to dig into it as a class in the meantime - it'll probably be the weekend before I've got the roles stuff all in place.
pmichaud: Does Iterable need to be a class?
pmichaud: I thought it was meant to be a role? 23:06
pmichaud jnthn: at some point I get to a class.
jnthn pmichaud: Array gets punned
perigrin is there a strong distinction? Syn 6 suggested they were transmutable.
pmichaud Array ~~ List ~~ Iterable ~~ Cool ~~ Any ~~ Mu
jnthn e.g. into a class
Ah
23:06 icwiener left
pmichaud do all of those have to be roles? 23:06
jnthn role Iterable is Cool { } # makes sure we add Cool as the parent
No
Iterable could be a class as well.
sorear Are you going to make Any a role now too? :/ 23:07
jnthn sorear: What would that gain?
pmichaud jnthn: so, List will need to be a role so that we can do Positional[T] ?
jnthn pmichaud: Feels that way.
pmichaud checking. 23:08
jnthn pmichaud: Only roles can take type parameters.
pmichaud: It'd feel weird if Array could be type parametric, but list couldn't.
*List
23:08 Chillance left
pmichaud well, in general List wants to be List[Mu} 23:09
er, List[Mu]
jnthn Yes.
pmichaud it doesn't have many cases where it cares about the 'of' type
sorear I think the real problem here is that classes can't have parameters.
pmichaud same sort of thing goes for Parcel, which also does Positional
sorear Does anyone else think that int[$x] being a role is completely insane?
jnthn pmichaud: In what way are Array and List related? 23:10
pmichaud: Does Array just add mutability?
pmichaud: And it uses the same underlying storage?
pmichaud has container as elements
Array is a list of Scalar
jnthn pmichaud: I'm thinking ahead to my int @foo 23:11
(e.g. packed arrays)
sorear FWIW, I don't like the Array/List/Seq split
pmichaud I'm certain that Array and List are correct. Seq I'm less certain of.
jnthn sorear: Letting classes have parameters would hugely complicate classes. 23:12
sorear it seems too coarse-grained - what happens with @( @list, @array ) ?
pmichaud sorear: it does exactly what it says :-)
it creates a list from the Parcel containing @list and @array
s/creates/returns/
jnthn sorear: The immutability of roles helps also. 23:13
sorear: Augmenting a parametric class makes me shudder.
23:14 flatwhatson left
pmichaud jnthn: (thinking ahead to my int @foo) I don't know that it's much different from my int $x 23:14
23:14 flatwhatson joined
jnthn (Yes, I did once wonder why classes didn't have type parameters too. 3 or so implementations of roles later, I've concluded it's the Right Thing.) 23:14
pmichaud the major difference is how @foo handles .at-pos
jnthn pmichaud: Well, and the storage is allocates. 23:15
I mean, yes, it could grab the type out of the container descriptor just fine.
daniel-s good morning
jnthn We still need it to "does Positional[T]" though
pmichaud I'm not sure that my int @foo results in @foo being Array[int]
it might need to be something like PackedArray[int]
and perhaps it's not ~~ List 23:16
but simply ~~ Positional. (It could still return Lists where needed, same as Parcel does)
or, perhaps it is Array[int] which is also List[int], and List[int] is smart enough to know that it has different storage requirements. 23:18
jnthn I suspect the way it should really work is that we have a REPR for array storage that, like P6opaque does, looks at the storage requirements and does the Right Thing.
I don't so much want us to do that *now*, I just want to make sure we don't design something now that makes it a horrible refactor to do that later. 23:19
pmichaud anyway, I don't see any immediate problems with making Array and/or List into roles
jnthn OK. I just have a *really* bad feeling about cheating on that.
pmichaud I think it falls out fairly naturally. 23:20
jnthn "it"?
pmichaud (conversion to roles)
jnthn ah, OK
Yes, I think it should.
pmichaud as long as role can inherit from a class, shouldn't be too much problem.
sorear What is the "Code" class used for?
TimToady if we have to start doing type introspection to figure out, say, what's mutable or not, that's maybe a danger sign
pmichaud Code == anything that is executable
jnthn sorear: It's generally not instantiated directly, it's the ultimate base class of executable things. 23:21
Block is the closest thing to it that's directly instantiated.
Routine is also never instantiated directly; it's just the case class of Sub, Method, etc.
sorear jnthn: Is there any circumstance where I might see an $object which is ~~ Code but !~~ Block?
TimToady Code could be the default punning of Callable
jnthn sorear: class Thingy is Code { } # :-) 23:22
sorear: Given an extensible grammar, it only follows on that people will extend meta-objects too.
Or created new sorts of them.
pmichaud I've internally speculated that Code might represent things that are inlinable and aren't blocks 23:23
but no, I haven't come up with any actual Code examples yet.
jnthn pmichaud: Thunks could potentially be Code.
pmichaud jnthn: yes, that too.
jnthn sub foo($a = ...) { ... }
TimToady but surely there are things that are Code that aren't inlineable
jnthn The default value there is potentially Code.
Since it doesn't imply a lexical scope of its own. 23:24
Whereas Block would.
pmichaud TimToady: I meant "instances of Code that aren't blocks", not that "Code represents only inlinable things". Sorry for ambiguity.
TimToady ah
I usually see those...
pmichaud I agree I phrased it badly.
anyway, Rakudo has Code as a class only because the specs mention it in various places 23:25
although it looks like it's not in S02 anymore (I think it used to be...)
TimToady well, the conservative thing is probably to make too many distinctions and then drop the no-oppy ones; splitting up things that have been confused is much harder 23:27
pmichaud agreed fully
jnthn +1
TimToady there's really no way to tell in P5 whether an array was intended to be constant, for instance
s/constant/immutable/ 23:28
dalek ecza/immediate: e94671e | sorear++ | src/ (2 files):
[immediate] preliminaries; comp_unit
TimToady so there are a large number of optimizations that are effectively impossible 23:29
pmichaud TimToady: yesterday you mentioned that you were tired of typing --gen-parrot... what would you like to see instead?
TimToady nothin'
pmichaud i.e., just "perl Configure.pl" does the right thing ?
TimToady that's the idea, at least until we have multiple VMs to pick from... 23:30
pmichaud --gen-parrot is meant to distinguish between "download and build a copy of parrot" versus "use a parrot I already have installed" 23:31
not to distinguish among multiple VMs (at least, not yet)
TimToady yes, but the default optimizes for the uncommon case
that's my plaint
pmichaud "uncommon case" meaning "someone that already has a parrot installed?" 23:32
TimToady yes
jnthn I suspect it's common case for developer vs common case for user.
TimToady it would be interesting to poll everyone here as to whether they have a separate parrot
tadzik I do
sorear pmichaud: ($x = ... as Code) I made the same speculation
jnthn (And the user should be who we really optimize for...)
(Though we want development to be conveneint too :-)) 23:33
tadzik I guess the user is usually a release user/star user
sorear I did, but stopped when I realized that Parrot's support for being installed was buggy
flussence I'm lazy and --gen-parrot is less thinking for me than maintaining a separate parrot install
pmichaud well, the user could be someone that installed "parrot-devel" package (e.g., on Debian)
flussence it's the same sort of situation as with firefox/xulrunner... 23:34
TimToady "Downloading a newer parrot than you have...type ^C to not do that..."
23:34 Moukeddar joined
tadzik I don't mind gen-parrot being default as long as it doesn't gen-parrot if I already have parrot 23:34
pmichaud TimToady: at least on my system, that message scrolls up long before I have a chance to see it.
tadzik sleep & 23:35
TimToady there's gotta be some way to have my cake and eat it too... :)
pmichaud TimToady: that's what I'm trying to get to, yes.
would requiring --gen-parrot only once help out? or is that still too much of a pain? 23:36
flussence
.oO( maybe Configure.pl should have a --* flag that fills in any blanks :)
pmichaud i.e., if there's already a parrot repo in the rakudo dir, assume --gen-parrot ?
TimToady well, if there's no parrot on the system, it would also seem that you need a parrot... 23:37
so maybe either of those conditions
23:37 jaldhar joined
pmichaud unless the problem is simply that we weren't looking in the right place. :-) 23:37
TimToady then the onus should be on the configurer to supply the right place, not on the person who just wants to do the subdir thing 23:38
pmichaud would a prompt be okay? 23:39
"Presss ENTER if you want me to go ahead and download a parrot..."
TimToady well, if isatty
flussence as long as there's a flag to disable it... think of the distro maintainers :)
jnthn pmichaud: Another thing to consider could be having some configure.defaults file that people can set up locally that we look for. 23:40
pmichaud presumably distro maintainers are specifying the flag that says where to find the parrot
jnthn: I'm thinking primarily "fresh repo"
TimToady distro maintainers are not us stupid users
jnthn pmichaud: So folks who have a Parrot to hand to develop against but often want to re-configure often (Makefile.in changes) can also just have perl Configure.pl do the right thing for them.
pmichaud jnthn: oh, that's even easier, at least on *nix 23:41
sh config.status
re-runs Configure.pl with the same options you used the last time.
jnthn oh sh... I'm on Windows. :)
pmichaud I'm open to creating a windows equivalent :)
TimToady surely Configure.pl is, er, a Perl script
pmichaud yes, it is. 23:42
TimToady and Perl knows how to read in other files
pmichaud I went with sh config.status because that's what autoconf typically does
yes, I could do perl Configure.pl --same-options-as-last-time 23:43
TimToady I distinctly remember putting in such capability once upon a time :)
BAD DEFAULT
I think perl Configure.pl should default to same options as last time, unless it's provable that one of them is bad, or is overridden 23:44
pmichaud do most Configure.pl (and other configuration scripts) use that as the default behavior? 23:45
i.e., assume same options as last time?
flussence the standard unixy ones I've encountered don't 23:46
TimToady P5 keeps a Policy.sh
so it saves some of them
23:46 whiteknight joined
TimToady and this definitely has the flavor of policy 23:47
pmichaud it's been a long time since I built a P5 from sources 23:50
23:51 envi_laptop joined
pmichaud anyway, I'll think about all of this some more. 23:54
I definitely would be okay with the idea that "cp config.status config.default" causes Configure.pl to re-use previous options
so then a rebuild is always perl Configure.pl to use whatever options are in config.default 23:55
afk, errands 23:57