»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend! Set by lichtkind on 5 March 2010. |
|||
TimToady | kde tends to read it anyway, gnome tends to ignore it completely | 00:02 | |
00:02
ash_ joined
00:03
slavik left
00:06
ash_ left
00:08
sorear left
|
|||
eternaleye | TimToady: The xmodmap call alone is sufficient to make caps lock the compose key | 00:08 | |
Under any DE or none at all | |||
00:09
sorear joined
|
|||
eternaleye | .XCompose is just sugar for it | 00:09 | |
because xmodmap talks directly to X xand xkb | |||
*and | |||
Tene | eternaleye: .XCompose lists additional compose maps. How does xmodmap affect that? | 00:10 | |
eternaleye | Tene: Oh, I misunderstood | ||
00:13
SmokeMachine left
|
|||
eternaleye | TimToady: What custom maps do you need? | 00:14 | |
00:14
lest_away is now known as lestrrat
00:17
isBEKaml left
|
|||
TimToady | well, I was asking about vim digraphs, and Tene was pointing me at a pretty set of keybindings for many of the common mathematical symbols, which I downloaded, but have been unable to get working under gnome and ibus | 00:20 | |
00:20
cdarroch left,
kolibrie left,
dalek left,
literal left,
jnthn left,
zamolxes left,
dalek joined
|
|||
TimToady | googling for help with either of those gets people asking about .XCompose and being largely ignored. | 00:21 | |
00:21
wknight8111 joined
00:22
cdarroch joined,
kolibrie joined,
literal joined,
jnthn joined,
zamolxes joined,
card.freenode.net sets mode: +o jnthn
|
|||
sjohnson | TimToady: i take it you aren't much of a win32 kinda guy | 00:24 | |
lue | jnthn is. He develops rakudo on it! | 00:25 | |
eternaleye | TimToady: There is code.google.com/p/ibus/wiki/LaTeX in ibus-table | 00:26 | |
lue | Timtoady: Makes you wish for a 300 key keyboard almost. (or maybe even the fabled Unicode keyboard!) | 00:27 | |
eternaleye | lue: Space Cadet keyboard! | ||
Carpal tunnel free with every order! | |||
lue | I forget the number of unicode glyphs, but I want a keyboard with that many keys. | 00:28 | |
Yes, it'd include all four astral planes. Yes, it'd be big. Yes, it'd be *worth it*. | 00:29 | ||
00:29
yinyin joined
|
|||
eternaleye | lue: Optimus maximus, using each shortcut key as an extra shift level? | 00:29 | |
lue | hmm... 0x1000-0x1FFF access key [and so on] | 00:32 | |
.oO(Quick! Where's the 0x2000-0x2FFF key!? I need snowman/comet!!) |
|||
sjohnson | lue: i'm a win32 kind of guy as well | 00:34 | |
for desktop use i mean. i find *nix unusable in a desktop setting, but pretty ideal for a server setting. | 00:35 | ||
lue | Linux for me. I have a Powerbook that wasn't going to get new OS X version upgrades anymore. | 00:41 | |
00:42
meppl left
|
|||
eternaleye | rakudo: our sub infix:<∈>( @a, @b ) { all( @a ) ~~ any( @b ) ?? True !! False }; say (1, 3) ∈ (1, 2, 3, 4); | 00:43 | |
p6eval | rakudo f6374a: OUTPUT«0» | ||
eternaleye | Hm. Still, that means ibus-table LaTeX is working | 00:44 | |
\in ∈, \ni ∋, \cap ∩, \cup ∪, etc | 00:45 | ||
00:46
rv2733 joined
|
|||
eternaleye | rakduo: multi sub infix:<⊕>( Int $a, Int $b ) { $a +^ $b }; say 2 ⊕ 7 | 00:53 | |
00:53
justatheory left
|
|||
eternaleye | ergh | 00:53 | |
rakudo: multi sub infix:<⊕>( Int $a, Int $b ) { $a +^ $b }; say 2 ⊕ 7 | |||
p6eval | rakudo f6374a: OUTPUT«5» | ||
00:55
cdarroch left,
rv2733 left
00:58
rgrau_ left
01:00
alester joined
|
|||
dalek | meta: r278 | diakopter++ | trunk/Sprixel/ (4 files): [perlesque] enable single-inheritance class derivation and custom constructors, |
01:01 | |
diakopter | perlesquel: class Baz { method new (--> Baz) { say('hihi') } }; class Foo is Baz { has int $a; method new (str $a --> Foo) { }; method Bar (--> int) { say('in Bar ' ~ (self.a)); return self.a } }; my $blue = Foo.new('hihihi'); say($blue.Bar()); say($blue.a); $blue.a = 5; say($blue.Bar()) | 01:02 | |
p6eval | perlesquel: OUTPUT«hihiin Bar 000in Bar 55real 0.05user 0.04sys 0.02» | ||
01:04
stephenlb left
01:06
patspam left
|
|||
diakopter | oky doky | 01:08 | |
perlesque is basically done | 01:09 | ||
time to port Cursor.pm to it | |||
01:17
wknight8111 left
|
|||
pugssvn | r30723 | sorear++ | [STD] Document LazyMap better | 01:28 | |
sorear | TimToady: you might want to look over that; I've dumped most of what I gleaned from you, there | 01:29 | |
01:30
mikehh left,
plobsing joined,
meppl joined
01:34
mikehh joined
01:37
masonkramer left,
masonkramer joined
|
|||
sorear | ((), $C)[-1] | 01:38 | |
really? | |||
diakopter | sorear: thanks :) that's very helpful. JIT for my porting of Cursor/LazyMap | ||
lue | afk | 01:42 | |
sorear | diakopter: you know we're working on basically the same project, right? | 01:43 | |
diakopter | orly | ||
you're porting Cursor/LM to something? | 01:44 | ||
sorear | almost | 01:45 | |
I'm working on viv | |||
diakopter | yeah | ||
emit_p5, right? | |||
sorear | I'm trying to get to the point where STD-parsed STD can be turned into P5 | ||
diakopter | I'm trying to get to the point where STD-parsed STD can be turned into perlesque | ||
sorear | once that's done, it'll be trivial to retarget it to generate perlesque | ||
diakopter | oh | ||
:D | 01:46 | ||
sorear | we ought to work together | ||
diakopter | yeah but Cursor/LazyMap still need ported | ||
sorear | VAST is a very horizontal thing; it should be possible to avoid stepping on each others toes too much | ||
yes | |||
diakopter | and their interfaces designed, since they'll likely be different | ||
sorear | I'd like to create a lower-level viv IR | 01:47 | |
01:47
[mark] joined
|
|||
diakopter | cool | 01:47 | |
sorear | which will be *after* regex desugaring | ||
which means that there needs to be a "Cursor" API to an extent independant of backend | |||
diakopter | yes | ||
sorear | also, I'll be gone Fri-Mon | 01:48 | |
diakopter | I have kindof a full demarcation of parse operations, modeled after p6 regexes (different names in some cases tho) here: csmeta.googlecode.com/svn/trunk/Spr...c/Grammar/ | 01:49 | |
and the various Cut operations I implemented in jsmeta but not csmeta yet | |||
there are probably 15-20 operations yet to be added | 01:50 | ||
or are you talking even lower level.... | |||
sorear | actually in the long run I plan to rewrite Cursor et al in Perl6 | 01:53 | |
and share a single implementation between the backends | |||
diakopter | doesn't everybody :P | ||
perlesque can be a stepping stone to that. you just gotta put up with functional/OO style only (lacking Perl's "fluent"/inline style) | 01:55 | ||
01:55
colomon joined
|
|||
diakopter | wait. what? Cursor.pmc is considerably bigger than I remember | 01:57 | |
<frown> | |||
hrm | 01:59 | ||
ok, yes, I'm definitely going to proceed with the 'extend my own grammar engine' idea instead of porting Cursor by hand. lol. | 02:00 | ||
it'll be much easier to match the semantics | |||
I'll need an "interpreter mode" for each of those combinators | 02:01 | ||
which is fine | |||
it'll probably be faster anyway | |||
02:02
snarkyboojum left
|
|||
diakopter | sorear: you still around? | 02:05 | |
sorear | yes | 02:08 | |
02:08
snarkyboojum joined
|
|||
diakopter | decommuting& | 02:08 | |
02:25
masonkramer_ joined
02:31
occamshatchet joined
|
|||
colomon | o/ | 02:31 | |
02:34
meppl left
02:37
JimmyZ joined
02:42
eternaleye left
03:09
buu joined
|
|||
lue | ohai again | 03:09 | |
anything in the pugs examples folders that's missing/not working/should be there? | 03:21 | ||
03:32
pencilk joined
03:35
{shade} is now known as \shade\
03:40
masonkramer_ left
03:45
justatheory joined
03:52
viklund_ joined
03:53
meteorja1 joined
03:57
lisppaste3 left,
meteorjay left,
saaki left,
araujo left,
mtve left,
cj left
04:00
viklund left,
cotto left
04:06
cotto joined,
Arroz_ joined
04:08
araujo joined
04:16
lestrrat is now known as lest_away
|
|||
lue | afk | 04:19 | |
04:19
snarkyboojum left,
snarkyboojum joined
|
|||
diakopter | I blogmothd again: diakopter.blogspot.com/2010/05/perl...ained.html | 04:25 | |
dalek | meta: r279 | diakopter++ | trunk/Sprixel/ (2 files): [perlesque] added tests of single inheritance and fields and field mutators and |
04:30 | |
meta: r280 | diakopter++ | trunk/Sprixel/t/class.t: [perlesque] fix class.t |
04:35 | ||
04:35
alester left
|
|||
sorear | diakopter: why is it called cs *meta* ? | 04:40 | |
TimToady: What do you remember about the art of regex compilation for Cursor? | |||
diakopter | cs==csharp ; cuz theoretically it'll be a metaprogramming environment | 04:41 | |
pugssvn | r30724 | colomon++ | [t/spec] Refudge / tweak / add number tests. | 04:42 | |
diakopter | 'The statement that it is better to ask for forgiveness than to obtain permission is true 90% of the time. The key to success is knowing where the other 10% is.' blogs.msdn.com/oldnewthing/archive/...13610.aspx | 04:43 | |
04:44
araujo left
04:45
araujo joined
|
|||
dalek | kudo: 8292d45 | (Solomon Foster)++ | src/core/Numeric.pm: Add stub for Numeric.roots. |
05:00 | |
diakopter | ne1 know how goes rakudo's closure-fixing? | 05:05 | |
diakopter looks at you, sixperlers | 05:06 | ||
sorear | pmichaud is supposedly Looking At It | 05:12 | |
we all know how many tuits he has these days, though ;( | |||
05:15
kaare joined
05:16
kaare is now known as Guest55831
|
|||
diakopter | my tuits are especially round lately | 05:21 | |
no masak today? | 05:24 | ||
afk& | |||
arnsholt | diakopter: It's only 0730, so I think he might not be up yet | 05:25 | |
05:26
justatheory_ joined,
justatheory left,
justatheory_ is now known as justatheory
05:34
ejs joined
05:37
sjohnson left
05:51
Khisanth left
05:53
Khisanth joined
05:55
lisppaste3 joined
05:58
cj joined
05:59
mtve joined
|
|||
sorear | diakopter: uh. Don't mess with Cursor... | 06:01 | |
Cursor contains, in addition to the uh cursory stuff, the half of STD which cannot be expressed using gimme5 | |||
06:03
uniejo joined
06:12
uniejo left
06:14
uniejo joined
|
|||
diakopter | sorear: whaddya mean "don't mean with cursor" | 06:20 | |
is that a threat? | |||
mess | |||
I didn't think I said I'd mess with Cursor... | |||
sorear | you blogged about rewriting cursor... | ||
diakopter | erm | 06:21 | |
sorear | and it was a warning, not a threagt | ||
diakopter | "goal of either extending Sprixel's grammar engine to cover all of Cursor's capabilities or manually porting Cursor to perlesque" | ||
I don't see "rewriting Cursor [in perl 5, which I assume you meant]" in there | 06:22 | ||
sorear | frankly, I don't understand 80% of Cursor's capabilities | ||
Cursor is already in Perl 5 | |||
diakopter | and? | ||
sorear | I meant reimplementing its functionality in any language | ||
and, therefore rewriting it in perl 5 would make no sense | |||
diakopter | ok, that wasn't obvious at all. People rewrite software in the same language all the time. | 06:23 | |
sorear | I have never heard of "rewrite" implying "in the same language" | ||
ever | |||
diakopter | that's the only usage I've ever heard | 06:24 | |
ever | |||
snarkyboojum | can definitely mean either :) | 06:25 | |
sorear | right, it's always meant either to me | ||
snarkyboojum | though often if it's a rewrite in a different language that's specified "rewrite in <xyz>" as opposed to "rewrite" implying the same lang :) | 06:26 | |
snarkyboojum butts out now | |||
sorear | when I say "rewrite" I mean "rewrite (and I haven't specified yet whether it's the same language or a different one)" | 06:27 | |
life would be so much easier if English meant the same thing to everyone. | 06:28 | ||
I need to figure out how to get less worked up over it not doing so | |||
diakopter | sorear: I'm sorry for even imagining that I'm qualified to understand Cursor.pm6, let alone rewrite/reimplement it. What would you recommend would be a better use of my time? | ||
until you let me know, I won't even consider messing with Cursor | |||
06:29
eternaleye joined
|
|||
sorear | ... | 06:30 | |
diakopter | Cursor.pmc, I meant | 06:31 | |
sorear | you make me want to stop talking to other programmers | ||
06:32
Su-Shee joined
06:33
justatheory left
|
|||
diakopter | ok. if "uh. Don't mess with Cursor..." was in any way meant to be light-hearted/jolly, I didn't catch it, and I regret that. | 06:35 | |
maybe I've been mistaking my benefit-of-the-doubt canister for my round-tuit canister lately. :| | 06:37 | ||
sorear: I did already realize that Cursor contains a very large portion of the grammar engine. I suppose I could've made that fact more clear in my blog post. But I have spent a lot of time with STD.pm and parsers/grammars in general the past few years and I'm pretty confident in my ability to reimplement those routines and to mimic the overall architecture. | 06:42 | ||
otoh, if it proves reasonable to do a mostly-automatic translation of Cursor.pmc to perlesque or something else, all the better. | 06:43 | ||
sorear | diakopter: As long as you realize what you are getting yourself into, I have nothing further to say | 06:45 | |
diakopter | I very frequently oscillate between indulging NIH/JFDIY on the one side and ... some other option that I don't understand at all. | 06:47 | |
hrm, maybe that's part of my problem. | 06:48 | ||
sorear | I'm not familiar with JFDIY | ||
diakopter | just ------ do it yourself ... a just-coined variant of JFDI, after which Jifty is named, I think. | 06:49 | |
06:56
iblechbot joined
|
|||
sorear re-reads S05 on cut-like operators | 07:02 | ||
moritz_ | here in #perl6 we also say JDFI, which means "just duckin' fu it!" | 07:03 | |
diakopter: in your latest blog post, you have an untyped my $bar = Bar.new(4, 6) | 07:04 | ||
diakopter: is that type inferred? | |||
diakopter: or did you drop the requirement of strict type declarations? | |||
07:05
BrowserUk joined
|
|||
sorear | it's inferred | 07:07 | |
like C++, perlesque supports upward type inference | 07:08 | ||
if the types of variables are known, the type of any expression is | |||
so, if you use an initializer, you don't need to restate the type | |||
BrowserUk | ? | 07:19 | |
07:20
xinming left
|
|||
sorear | BrowserUk: yes/ | 07:21 | |
? | |||
07:23
ejs left
|
|||
spinclad | BrowserUk: '?'! | 07:23 | |
snarkyboojum | ? | 07:25 | |
spinclad | exactly | ||
snarkyboojum | heh | 07:26 | |
BrowserUk | Sorry. Just a cheap way of having pheeny tell me if it has anything for me. | 07:27 | |
spinclad | aha. | ||
BrowserUk | *phenny even | ||
spinclad | phenny: tell BrowserUk '!' | ||
phenny | spinclad: I'll pass that on when BrowserUk is around. | ||
snarkyboojum knew that, but thought he'd join in | |||
BrowserUk | ? | ||
phenny | BrowserUk: 07:27Z <spinclad> tell BrowserUk '!' | 07:28 | |
BrowserUk | SHame it (he? she? ) is so verbose. Could be fun. | ||
07:29
jonasbn joined
|
|||
spinclad re-lurks among the cricquets | 07:32 | ||
BrowserUk | phenny:tell ruoso, we could to & fro for ever about whether IO needs a kernel thread or not, and the benefits or otherwise. I spent yesterday knocking up a crude runnable demo to try and give us some feel for the likely benefits. It might be done already were it not that I always have trouble implementing ring buffers. Still chasing a once-per-cycle out-by-one error :( | 07:33 | |
07:37
sjohnson joined,
agentzh joined
|
|||
sorear | BrowserUk: I think you need a space after the colon | 07:42 | |
BrowserUk | phenny: tell ruoso, we could to & fro for ever about whether IO needs a kernel thread or not, and the benefits or otherwise. I spent yesterday knocking up a crude runnable demo to try and give us some feel for the likely benefits. It might be done already were it not that I always have trouble implementing ring buffers. Still chasing a once-per-cycle out-by-one error :( | ||
phenny | BrowserUk: I'll pass that on when ruoso is around. | ||
sorear | BrowserUk++ taking initiative | 07:43 | |
BrowserUk | Thanks sorear. I hadn't even noticed that phenny hadn't responded | ||
07:43
SmokeMachine joined
07:45
TiMBuS joined
|
|||
sorear | I /think/ I understand the Cursor API well enough to start the viv regex compiler | 07:45 | |
07:47
Trashlord joined,
plobsing left
|
|||
sjohnson snorts [Coke] | 07:54 | ||
08:03
rv2733 joined
08:04
rv2733 left
08:22
agentzh left
08:24
stepnem joined
|
|||
moritz_ wonders if there'll be any takers for this week's contribution challenge | 08:28 | ||
if there's none this evening, I'll try to increase the buzz factor (perlmonks, maybe TPF blog, perlbuzz, reddit) | |||
08:29
arnsholt left,
arnsholt joined
08:30
cls_bsd left,
cls_bsd joined
08:32
ejs joined
08:37
ejs left
08:38
ejs joined
08:39
frooh joined
|
|||
moritz_ | rakudo: (1..1000).map({.say}).eager | 08:39 | |
p6eval | rakudo 8292d4: | 08:40 | |
..OUTPUT«1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | |||
moritz_ | rakudo: (1..1_000_000).map({.say}).eager | ||
p6eval | rakudo 8292d4: | ||
..OUTPUT«1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | |||
08:41
dakkar joined
|
|||
moritz_ | vim: .say for 1..1_000_000 | 08:41 | |
sorear | moritz_: if you can't hook any newbies I'll take it | 08:43 | |
moritz_ | sorear: that's nice, but I'd like to wait a week | 08:44 | |
mathw | masak and I have an agreement next week to recommence work on Form.pm :) | 08:49 | |
So tempted though I am to have a go at the command-line thing, I shall not, as I do have my own project | 08:50 | ||
But first I need to survive tomorrow night | |||
09:06
constant left
|
|||
moritz_ | btw perl 6 development makes me sensible for several kinds of LTA error messages | 09:07 | |
take matlab | 09:08 | ||
>> ones(2, 3) + ones(3, 3) | |||
??? Error using ==> plus | |||
Matrix dimensions must agree. | |||
why not include the mis-matching matrix dimensions in the error message? | |||
09:10
constant joined,
constant left,
constant joined
09:20
masak joined
|
|||
masak enters channel in mid-air, spins, lands on his feet | 09:21 | ||
phenny | masak: 17 May 01:19Z <[Coke]> tell masak that I have a working example now of his poker code. | ||
masak: 17 May 01:19Z <[Coke]> tell masak it's just the same code he posted earlier, though. (need some .value()s) | |||
masak: 17 May 03:57Z <eternaleye> tell masak is irclog.perlgeek.de/perl6/2010-05-17#i_2337529 and subsequent a bug? | |||
masak: 17 May 18:10Z <[Coke]> tell masak that I forked his gist at gist.github.com/244255 and that my version adds royalflush and actually seems to work under rakudo-latest. | |||
masak | [Coke]: cool. | ||
eternaleye: will check. | |||
a bit of a backlog awaits me :) | |||
moritz_ observes a particular masak fondness in phenny :-) | 09:22 | ||
09:22
SmokeMachine left
|
|||
masak | :) | 09:22 | |
pugssvn | r30725 | sorear++ | [viv] A first swing at regex translation | 09:49 | |
mathw | Everybody loves masak | 09:52 | |
Even IRC bots | |||
sorear hugs masak | |||
moritz_ sings "everybody loves masak, what's the matter with you" and apologizes by Don McLean | 09:53 | ||
mathw starts a campaign to get 'Everybody Loves masak' scheduled to replace 'Everybody Loves Hypnotoad' | |||
09:59
clintongormley joined
10:02
yinyin left
|
|||
pugssvn | r30726 | sorear++ | [viv] Translate <.foo> and <foo> | 10:02 | |
moritz_ | perlgeek.de/blog-en/perl-6/perl-survey.writeback | 10:13 | |
do we want a Perl 6 survey? | |||
what kind of questions would we try to answer with such a survey? | |||
m6locks | "when is rakudo star coming out?" | 10:14 | |
moritz_ | m6locks: that's a question to ask the developers, not the users | ||
m6locks | aye, it's still a faq | ||
10:15
agentzh joined
|
|||
moritz_ | FAQs are not what you ask in survey. | 10:15 | |
"how do I count the lines in file?" | 10:16 | ||
10:16
agentzh left
|
|||
m6locks | how about asking them why are they not already enthusiastically programming with perl6 | 10:16 | |
moritz_ | but speaking of releases... today is the Thursday after parrot release! | ||
m6locks | after which parrot release? | ||
moritz_ | the one on Tuesday, 2.4 | 10:17 | |
m6locks | is it like the most advanced and optimized parrot ever? | ||
moritz_ | I think so | ||
m6locks makes note to build rakudo again | |||
moritz_ | rakudo startup time is down to 0.4s | 10:18 | |
m6locks | pretty cool | ||
moritz_ | and build resource usage is also more acceptable than at the last release | 10:19 | |
m6locks | just to make sure, the version is Parrot r46771 ? | ||
moritz_ | s/version/revision/ yes | ||
m6locks | check | 10:20 | |
pugssvn | r30727 | sorear++ | [viv] Generate regex circumlogues | ||
sorear | I now have viv functionally translating 'token foo { <a> <b> <.c> }' | ||
moritz_ | sorear: wow, that commit message has a nice, cryptic feeling to it :-) | ||
sorear: translating to what? | 10:21 | ||
sorear | moritz_: perl 5 | ||
moritz_ | sorear: so you're re-implementing gimme5 in viv? (or parts/supersets of it) | ||
sorear | moritz_: that is the plan, yes | 10:22 | |
viv was created by TimToady++ as a successor to gimme5 | |||
it's not done | |||
moritz_ | bootstrapping++ | ||
sorear | also, (killing 1000 lines of p5regex)++ | ||
colomon | o/ | ||
moritz_ | :-) | ||
10:23
moritz_ sets mode: +oo colomon sorear
|
|||
moritz_ | it's the release manager! | 10:23 | |
10:23
sorear sets mode: +o masak
|
|||
snarkyboojum | at least planetsix.perl.org/ made it to the "Which of the following Perl news sites do you read" question | 10:23 | |
moritz_ | aye, it did | ||
lunch& | 10:24 | ||
10:29
meppl joined
|
|||
sorear | phenny: msg TimToady : metachar:normspace parsing appears to be broken; 'rule foo { <a> <b> <c> }' and 'rule foo {<a><b><c>}' generate the same AST modulo all-caps flags | 10:31 | |
phenny: tell TimToady : metachar:normspace parsing appears to be broken; 'rule foo { <a> <b> <c> }' and 'rule foo {<a><b><c>}' generate the same AST modulo all-caps flags | 10:32 | ||
phenny | sorear: I'll pass that on when TimToady is around. | ||
10:35
JimmyZ left
|
|||
colomon is starting to get annoyed at the Perl survey. | 10:39 | ||
snarkyboojum | colomon: annoyed why? | ||
colomon | so far, a lot of questions which don't acknowledge the existence of Perl 6 | 10:41 | |
which makes it harder to answer the remaining question | |||
*questions | 10:47 | ||
snarkyboojum | well moritz_ could start a Perl 6 survey :) e.g. gist.github.com/407440 | ||
or rather #perl6 could start a survey :) | |||
snarkyboojum hides | |||
colomon | so, anyone out there working on last minute patches, or is the current code releasable? | 10:55 | |
moritz_++ for working on the changelog | 10:56 | ||
masak | snarkyboojum! | 11:03 | |
\o/ | |||
snarkyboojum | masak-san! \o/ | ||
welcome back (I guess)? | |||
masak | thank you. | 11:04 | |
yep, came back from Russia late last night. | |||
'It's a sad fact that parts of the Perl community haven't realized that Perl 6 is more than a dream, but comes with programs you can run today. -- moritz_++ | |||
snarkyboojum | I heard you did a cool talk on tardis/sigmund in "the large" conference room? | ||
masak | the room was large, yes :) | 11:05 | |
snarkyboojum | :) | ||
excellent | |||
masak | and people seemed to enjoy the talk. | ||
hope to have occasion to give it again once we've gooten further with yapsi/tardis/sigmund. | 11:06 | ||
snarkyboojum | will the talk make it's way online at some stage? :) | ||
its | 11:07 | ||
masak | I'll put it online today. | ||
snarkyboojum | o/ | ||
masak | just thought I'd backlog first. :) | ||
colomon | "Erlangen" an okay release name? | 11:12 | |
masak | think so. what's the motivation? | 11:13 | |
colomon | ummm. | 11:15 | |
something about you giving a talk there, I think? | |||
the discussion was a few days back.... | |||
snarkyboojum | Erlangen a German city, not any relation to the Erlang programming language I s'pose :) | ||
colomon | moritz_ gave the talk. | 11:16 | |
m-confusion settled! | |||
moritz_colomon: that's easy, you can name Erlangen.pm | |||
12:59colomon: after my home .pm group where I held a Perl 6 talk this month | |||
.oO(it is too early in the morning to be thinking) |
11:17 | ||
11:21
ejs left
11:26
ejs joined
11:37
iblechbot left
|
|||
jnthn | o/ | 11:43 | |
masak: Welcome back! :-) | |||
masak | \o/ thanks | ||
moritz_ | masak: how was your talk? | 11:44 | |
masak | it was a bit on the short side, but I think it was well-received. | ||
the feedback coming back was positive. | |||
jnthn | masak: How'd you like Russia? :-) | ||
masak | I felt a kinship of a sort with Moscow. | 11:45 | |
it's hard to describe. | |||
11:45
fridim joined
|
|||
jnthn | :-) | 11:46 | |
masak | there were simple things, such as biting into a bread and realizing that my granny used to make that kind of bread... | 11:47 | |
I'm also reasonably proud that what little Russian I know helped me naviagte the metro without a problem. | 11:48 | ||
moritz_ | .oO( "It's possible!") |
||
masak | :) | 11:49 | |
jnthn | masak: Yes, a little Russian - especially being able to read - goes a long way down there. :-) | 11:50 | |
masak | I missed being able to speak better, though. will have to fix that somehow. | ||
jnthn | Yeah...I'm hacking on my Russian quite a lot at the moment. Having been to Moscow recently and having Kiev coming up Real Soon is a good motivator, but now I've dug into a routine I'm really enjoying it too. | 11:51 | |
moritz_ misses the new talk on feather.perl6.nl/~masak/ | |||
masak | moritz_: I'll get there sometime today. still wading in backlog. | ||
moritz_ | masak: ping me when you've uploaded it | 11:52 | |
takadonet | morning all | ||
masak | jnthn: sounds gread. I'll try that too. | ||
takadonet: \o | |||
moritz_ | o/ | ||
masak | moritz_: sure thing. | ||
jnthn | masak: Aye, it's quite a distraction from Swedish though. | ||
11:56
jonasbn left
|
|||
moritz_ | www.w3.org/International/tutorials/...-char-enc/ woah, a lot of effort went into that document | 11:57 | |
colomon | jnthn, masak, moritz_: can you guys take a look a the changelog (just pushed update) and see if there is anything more to be added? thanks! | ||
moritz_ | ++ turned on an additional 47 test files | 11:58 | |
woah | |||
jnthn | moritz_: Wow...that looks like a good read. | ||
colomon: Will do shortly. | |||
moritz_ | if somebody paid me for that, I could imagine spending half of my work time on writing such documents :-) | 11:59 | |
masak | oh, right. release day today. :) | ||
moritz_ | colomon: I've already put in those changes that I thought essential... so if you added more stuff, it's what I missed in the first place :-) | ||
colomon | moritz_++ | 12:00 | |
is there a git equivalent of "svn cp" for creating new files from old? | |||
dalek | kudo: d855135 | (Solomon Foster)++ | docs/ChangeLog: Add a few more bits to the changelog. |
||
moritz_ | colomon: cp, git add $newflie | 12:01 | |
colomon: git automatically detects that it's a dupe of an existing file | |||
or a nearly-dupe, if you change it | |||
colomon | git++ moritz_++ | ||
jnthn | colomon: + implemented lexical classes | ||
masak | there's an interview that Andrew Shitov did with me on Tuesday: perl6.ru/interviews/carl-masak-on-perl6/ | ||
jnthn | colomon: It was also lexical roles too | ||
masak | snarkyboojum++: you're mentioned :) | ||
moritz_ | ah, I was not quite sure | ||
12:01
fridim left
|
|||
colomon | jnthn: what should I say about those? | 12:01 | |
moritz_ | "classes and roles" | 12:02 | |
jnthn | colomon: Well, "implemented lexical and anonymous classes and roles" | ||
We never had anonymous roles before either :-) | |||
snarkyboojum | masak: really? cool! :) | ||
colomon | jnthn++ | ||
(added that line locally) | |||
snarkyboojum | masak: thanks for the mention :) | ||
jnthn | colomon: Otherwise looks pretty good. | 12:03 | |
masak | snarkyboojum: it's the least I could do. I should have emphasized your role more in the talk as well. | 12:04 | |
colomon | moritz_: what can I say to justify the name "Erlangen"? | 12:05 | |
snarkyboojum | awww masak++ :) | ||
moritz_ | colomon: it's the home .pm group of a regular Rakudo contributor, and had a Perl 6 talk in May | ||
colomon | Is it your home group? | ||
moritz_ | yes | 12:06 | |
12:06
fridim joined
12:07
[mark] left
12:11
ejs left,
sjohnson left,
viklund_ left,
sorear left,
yahooooo left,
xomas_ left,
simcop2387 left,
cognominal left,
pjcj left,
jjore left,
hatseflats left,
spinclad left,
bloonix left,
dhoss left,
moritz_ left,
pmurias joined
12:14
iblechbot joined,
ejs joined,
sjohnson joined,
viklund_ joined,
sorear joined,
yahooooo joined,
xomas_ joined,
simcop2387 joined,
cognominal joined,
pjcj joined,
jjore joined,
hatseflats joined,
spinclad joined,
bloonix joined,
dhoss joined,
moritz_ joined,
card.freenode.net sets mode: +oo sorear moritz_
12:21
bluescreen joined,
bluescreen is now known as Guest43078
|
|||
masak | haven't backlogged yet, so I don't know if this is news: onionstand.blogspot.com/2010/05/get...t-mst.html | 12:24 | |
:) | 12:25 | ||
pmurias | transparent seems like a fun option | 12:27 | |
phenny | pmurias: 19 May 22:03Z <diakopter> tell pmurias re: has int $.foo , yeah, I should change that I guess. I don't see the point of the extra . though | ||
pmurias: 19 May 22:04Z <diakopter> tell pmurias re: subroutine not returning, I don't know... | |||
12:27
Guest43078 left
|
|||
masak | www.shadowcat.co.uk/blog/matt-s-tro...-man-lost/ | 12:27 | |
12:28
justatheory joined
|
|||
moritz_ | we should ask Andrew to also publish the English version of the interview | 12:30 | |
12:30
ive joined
|
|||
moritz_ | november-wiki.org/recent gives an internal server error | 12:33 | |
12:34
justatheory left
12:35
justatheory joined
|
|||
bbkr | rakudo: sub Str {}; say "test" ~~ Str; # how this should behave according to spec? compile error? compare to Str type or enter Str sub and compare to it's output? | 12:36 | |
p6eval | rakudo 8292d4: OUTPUT«1» | ||
12:36
justatheory left
|
|||
moritz_ | bbkr: call sub Str, smart-match against its result | 12:36 | |
12:36
justatheory joined
|
|||
bbkr | then it's a bug, isn't it? | 12:37 | |
moritz_ | yes | ||
bbkr submits | |||
masak | bbkr++ | ||
12:38
pmurias left
|
|||
jnthn | moritz_: ...oh rly? | 12:38 | |
std: sub Str {}; say "test" ~~ Str; | |||
p6eval | std 30727: OUTPUT«ok 00:01 114m» | ||
masak | yeah, I'm also curious why. | ||
why does a lexical sub take precedence over a type name? | |||
jnthn | Anyway, I think typename beats sub. | ||
Probably has to | 12:39 | ||
Since we decide at parse time. | |||
moritz_ | but the sub is also known at parse time | ||
jnthn | And we don't know about post-declared lexical subs are parse time. | ||
masak checks with viv | |||
moritz_ | std: sub Str { }; Str ~~ 1 | ||
p6eval | std 30727: OUTPUT«ok 00:01 111m» | ||
moritz_ | std: sub foo { }; foo ~~ 1 | ||
p6eval | std 30727: OUTPUT«===SORRY!===Preceding context expects a term, but found infix ~~ instead at /tmp/h4QlShACCM line 1:------> sub foo { }; foo ~~⏏ 1Parse failedFAILED 00:01 112m» | ||
moritz_ | ok, I was wrong | ||
12:39
Guest43078 joined
|
|||
moritz_ | not a bug | 12:39 | |
moritz_ apologizes | |||
jnthn | Heh. I really don't want "sub Str {}; say "test" ~~ Str;" and "say "test" ~~ Str; sub Str {};" to behave differently. | 12:40 | |
masak | indeed not. | ||
pmichaud | good morning, #perl6 (briefly) | ||
masak | morning, pm. | ||
jnthn | pmichaud! \o/ | ||
pmichaud | any urgent questions needing my attention in the next 2 hours or so? | ||
masak | viv is silent on the matter. it only says term__S_identifier. | ||
12:40
ejs left
|
|||
moritz_ | masak: the STD.pm6 run clearly shows that it's parsed as a type name | 12:41 | |
12:41
the_sniff joined
|
|||
moritz_ ponders blogging about the story behind github.com/rakudo/rakudo/commit/603...2e2be6f061 | 12:41 | ||
12:41
ruoso joined
12:42
the_sniff left
|
|||
pmichaud | + pir::set__vps($meth, $meth_name); | 12:42 | |
...really? | |||
moritz_ | why not? | ||
pmichaud | what kind of object is $meth? | ||
moritz_ | a parrot Sub | ||
pmichaud | weird | 12:43 | |
moritz_ | it's the clunky interface to set the sub name | ||
pmichaud | right | ||
that's what I find weird | |||
has it always been that way? | |||
moritz_ | that's what the closure earlier in the method compiles down to | ||
jnthn | pmichaud: Yes, 'fraid so. | ||
pmichaud: Like, for ages. | |||
moritz_ | is NQP not supposed to build parrot Subs? | ||
pmichaud | moritz_: no, what is being done there is fine. | 12:44 | |
12:44
justatheory left
|
|||
pmichaud | I was just surprised to see that the 'set' opcode was the way to set a sub's name. :-| | 12:44 | |
jnthn | pmichaud: I don't think there's a method set_name to do it. | ||
pmichaud: I agree it'd be preferable. | |||
pmichaud | that's fine | ||
maybe a comment in the rakudo source that makes it clear we're setting the sub's name | 12:45 | ||
because that's a little.... obscure | |||
jnthn | +1 | ||
moritz_ | ok, I can add that | ||
pmichaud | also, pir::clone__PP can be just pir::clone, I think. | ||
(okay to leave with signature for now) | |||
moritz_ | is there a general rule about when the sig can be left out? | ||
12:45
ejs joined
|
|||
pmichaud | not really | 12:46 | |
the opcodes that pct knows about don't require the signature | |||
masak | moritz_ and others: ping. talk is now up at feather.perl6.nl/~masak/ | ||
jnthn always ers on the side of "pct won't know it" | |||
pmichaud | in some cases, the opcodes have to have the signatures because there are multiple variants and pct can't be sure which one is intended | ||
well, eventually we'll have to replace all of those pir:: signatured opcodes with something else if we want to port to a different backend | 12:47 | ||
moritz_ | well, there's not much point in cloning non-PMCs | ||
pmichaud | (used to be able to clone strings, but can't any more, and it was rare to begin with) | ||
moritz_ | yes, I know | ||
pmichaud | and the pir:: opcodes will likely become nqp:: or something else for common things | ||
like clone, and add, and ... | |||
jnthn | masak: Heh, I didn't expect *that* comment of mine to make it into the talk. :-P | 12:48 | |
masak | :D | ||
pmichaud | is colomon++ still up for today's release? | ||
masak | it was a good opener :) | ||
pmichaud | ...talk? | ||
moritz_ | pmichaud: yes, he worked on the ChangeLog a few minutes ago | ||
pmichaud | colomon++ | ||
masak | pmichaud: bottom of feather.perl6.nl/~masak/ | ||
pmichaud | masak++ | 12:49 | |
I like the adoption curve, esp. the "We are here" part | 12:50 | ||
12:51
proller left
|
|||
moritz_ | that should make it into the release anouncement of R* :-) | 12:51 | |
masak | feel free. | 12:52 | |
jnthn | masak: Yes, I was just on that slide too. It's nice. | ||
12:53
xinming joined
|
|||
pmichaud | well, today I'll be several hours at the treatment center with my wife... should have some good hacking time then if she's not needing me for anything | 12:53 | |
jnthn | masak: The time travelling debugger "The Problem" slide is nice too. | ||
pmichaud | yesterday didn't go at all as planned | ||
12:53
proller joined
|
|||
masak | jnthn: heh, the translator wanted my slides beforehand, and I replied "um, ok... here they are. I don't know how useful they'll be, though. not too many words." :) | 12:53 | |
jnthn | pmichaud: Sorry to hear that. :-( | 12:54 | |
masak: I wonder if we had the same translator. | |||
dalek | kudo: 2e71bc8 | moritz++ | src/metamodel/Attribute.nqp: beautified code a bit, and add comment about pir::set_vps($meth, $meth_name) No functional changes. |
12:56 | |
masak | jnthn: no, don't think so. | ||
pmichaud | okay, I'm heading off to the center. Should be back online in a couple of hours. | 12:57 | |
jnthn | o/ | 12:58 | |
moritz_ | ~\o | ||
jnthn | masak: Nice slides...I can imagine it woulda been a great talk. :-) | ||
12:59
ive left
|
|||
masak | jnthn: :) | 12:59 | |
moritz_ | did you comment on the degree of completeness of the tools you've talked about? | ||
masak | I did, in fact. | ||
someone asked how much of sigmund exists today, and I confessed 'not much'. | 13:00 | ||
13:00
fridim left
|
|||
masak | also, Andrew tried to get Yapsi working, and came back asking 'what's /usr/bin/alpha?'. so I need to update the README for Yapsi. :) | 13:00 | |
[Coke] | rakudo: for <1 2 3> Z <4 5 6> Z <7 8 9> -> $a, $b, $c { say "$a $b $c"}; | 13:02 | |
p6eval | rakudo d85513: OUTPUT«No applicable candidates found to dispatch to for 'infix:<Z>'. Available candidates are::(Iterable $a-iterable, Iterable $b-iterable):():(Any $a, Any $b)current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
[Coke] | (I do miss tcl's style of looping over multiple lists simultaneously that doesn't involve having to Z anything.) | 13:03 | |
also, bug? | |||
moritz_ | yes (and well-known) | ||
[Coke] | day 07. =-) | 13:04 | |
takadonet | for <1 2 3> Z <4 5 6> -> $a, $b { say "$a $b"}; | ||
[Coke] | willskip. | 13:05 | |
takadonet | rakudo: for <1 2 3> Z <4 5 6> -> $a, $b { say "$a $b"}; | ||
p6eval | rakudo d85513: OUTPUT«1 42 53 6» | ||
moritz_ | rakudo: multi infix:<Z>(*@a) { say @a>>.WHAT }; <1 2 3> Z <4 5 6> Z <7 8 9> | ||
p6eval | rakudo d85513: OUTPUT«Str()Str()Str()Str()Str()Str()Str()Str()Str()» | ||
moritz_ | rakudo: multi infix:<Z>(\$a) { say $a.perl }; <1 2 3> Z <4 5 6> Z <7 8 9> | ||
p6eval | rakudo d85513: OUTPUT«No applicable candidates found to dispatch to for 'infix:<Z>'. Available candidates are::(Any $a)current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
13:06
ejs left
13:07
proller left
|
|||
colomon | pmichaud: I'm back working on the release again, just had to watch my boy a bit. | 13:08 | |
13:08
proller joined,
proller left
|
|||
colomon | "Rakudo now passes 32,347 spectests. We estimate that there are about | 13:08 | |
39,500 tests in the test suite, so Rakudo passes about 82% of all tests." | |||
blocking on the rest of the change and improvement list in the announce | 13:09 | ||
jnthn: can you give me a longer blurb for "implemented lexical and anonymous classes and roles" for the announcement? | |||
moritz_ | as the showcase-improvement you can use anon class and roles | ||
:-) | 13:10 | ||
colomon | we're on the same wavelength again. ;) | ||
moritz_ | colomon: you can also check in what you have now, to give others the chance to edit it | ||
colomon | oo, good thinking. | ||
masak rejected #75214 | 13:11 | ||
moritz_ | masak++ | ||
13:11
ejs joined
|
|||
moritz_ | moritz_-- | 13:11 | |
[Coke] | is there a mailing list where all rakudo RT traffic is sent? | 13:13 | |
masak | p6c. | ||
but not all is sent there, only new tickets and comments explicitly cc:ed. | |||
moritz_ | the spammy list | 13:14 | |
dalek | kudo: 65893e1 | (Solomon Foster)++ | docs/ (2 files): Work on release announcements. |
||
moritz_ | I filter all RT mails into another folder in order not to miss the other mails on p6c :-) | ||
[Coke] | what's this construct called: ^4 ? | ||
masak | [Coke]: range. | 13:15 | |
moritz_ | "prefix range"? | ||
[Coke] | does it get a modifier to the name since it's only got one explicit endpoint? | ||
moritz_ | that's why I'd add "prefix" | 13:16 | |
13:17
viklund_ left
13:18
justatheory joined
|
|||
jnthn back | 13:19 | ||
colomon: checking what you have | 13:20 | ||
[Coke] | moritz_: yah, that was typed out before I saw your reply ^_^ | ||
jnthn | s/and the Perl 6 talk they had Moritz/and the Perl 6 talk that Moritz/ | 13:21 | |
moritz_ | [Coke]: there's not yet a term fully coined, so we have the chance to do it | ||
13:21
ejs left
|
|||
colomon | seems like implemented lexical and anonymous classes and roles | 13:21 | |
basic enum implementation | |||
jnthn | s/give/gave/ | ||
colomon: I'd say something like (for announce) | |||
colomon | are both worth mentioning. | ||
13:22
Guest55831 left
|
|||
jnthn | "Leixcal classes and roles were implemented. Additionally, anonymous classes - which were never quite right in alpha - are now implemented more correctly, and anonymous roles are also supported." | 13:22 | |
colomon | jnthn++ # changes made locally. | ||
jnthn | That's probably enough detail on them. | ||
moritz_ | btw I've pushed the list of contributors | 13:23 | |
colomon | moritz_++ | ||
I've incorporated jnthn's paragraph and said something about numeric / real changes. | |||
jnthn | colomon: Probably also worth noting in the release announce there's been quite a lot of nume...oh, you beat me. :-) | ||
moritz_ | "Basic support for enummerations of the form 'enum Weekday <Monday Tuesday ...>' has been restored" | 13:24 | |
*named enummerations | |||
colomon | just pushed my latest. | ||
moritz_++ | 13:25 | ||
(suddenly paying attention to spelling errors reported by my editor...) | |||
dalek | kudo: 9307272 | moritz++ | docs/announce/2010.05: [announce] list contributors since last release |
||
kudo: 1c6eb2d | (Solomon Foster)++ | docs/announce/2010.05: Incorporate jnthn++'s suggestions. |
|||
jnthn | Maybe it's worth to mention the use :from<perl5> and eval :lang<perl5> that are now suported, so people can try out Blizkost. | ||
13:26
ejs joined
|
|||
moritz_ | good idea | 13:26 | |
(colaborative editing)++ | |||
colomon | jnthn: wasn't sure what to say about those. | ||
should also add it to the changelog probably. | |||
moritz_ | somebody on perlmonks pointed out that Perl 6 needs a 'do $homework' operator :-) | ||
colomon | moritz_++ # like the "following people contributed" message. | 13:27 | |
moritz_ | "Basic interoperation with Perl 5 through the external Blizkost [1] project is now supported" | ||
pugssvn | r30728 | coke++ | Add code from day07 - one skip; 2 bits of code still need testing. | ||
moritz_ | and then a link to blizkost | ||
jnthn | maybe like "First cut of use Foo:from<perl5> and eval('foo', :lang<perl5>); needs Blizkost[1] to be installed to work." | ||
colomon | link to Blizkost? | 13:29 | |
jnthn | github.com/jnthn/blizkost | ||
[Coke] | moritz_: day07 should be rakudo-clean to run (fudged, still needs 2 things made into tests.) | ||
dalek | kudo: c984346 | Coke++ | docs/announce/2010.05: fix typo, minor formatting. |
13:31 | |
diakopter | moritz_: yes, sorear is correct; upward type inference | ||
13:33
envi^home joined
|
|||
lisppaste3 | colomon pasted "Current changes and improvements list" at paste.lisp.org/display/100230 | 13:34 | |
colomon | (that's been pushed, as well) Anything else I should add? | ||
dalek | kudo: 24e28a1 | (Solomon Foster)++ | docs/ (2 files): Some spell checking, mention Blizkost. |
13:36 | |
13:37
masonkramer left
13:38
rgrau_ joined
|
|||
colomon | pmichaud: can you (should you?) updated spectest-progress.csv before release? | 13:40 | |
anyone want to volunteer to be release manager for #31 (July 22nd)? | 13:43 | ||
[Coke] | Sure. | 13:44 | |
colomon | [Coke]++ | ||
13:47
iblechbot left
|
|||
masak liked blogs.perl.org/users/rodrigolive/20...raise.html | 13:47 | ||
dalek | kudo: 296a56c | (Solomon Foster)++ | docs/release_guide.pod: Add #29 Erlangen to the release list, and mark that [Coke] has the July release. |
13:48 | |
13:51
gbacon_ joined
|
|||
moritz_ lols at Perl::Critic --praise | 13:51 | ||
13:53
alester joined
13:54
sahadev joined
13:56
envi^home left,
justatheory left
|
|||
moritz_ | rakudo: my @a = 'a' .. 'g'; say 0, *+2 .. @a | 13:57 | |
p6eval | rakudo d85513: OUTPUT«Method 'succ' not found for invocant of class 'Block'current instr.: '!dispatch_.=' pc 438 (src/glue/dispatch.pir:117)» | ||
moritz_ | rakudo: my @a = 'a' .. 'g'; say 0, *+2 ... @a | ||
p6eval | rakudo d85513: ( no output ) | ||
colomon | moritz_: infinite list | 13:58 | |
diakopter determines to implement literal sequences/series *last* in Sprixel | |||
moritz_ | colomon: wouldn't it DWIM better to use numeric comparsion for numbers? | ||
colomon | diakopter: the series code is entirely in perl 6, you can just copy it if you've got enough of Perl 6 running. | ||
diakopter | NIH | 13:59 | |
moritz_ | std: my @a; @a[0, *+2 ...] | ||
p6eval | std 30728: OUTPUT«===SORRY!===Bogus term at /tmp/dkABTxL4Up line 1:------> my @a; @a[0, *+2 ...⏏]Parse failedFAILED 00:01 115m» | ||
moritz_ | std: my @a; @a[0, *+2 ... *] | ||
p6eval | std 30728: OUTPUT«ok 00:01 112m» | ||
masak | a tweet from [the kind person whose laptop I borrowed]++ for the talk, and a picture of me giving the talk :) twitter.com/sharifulin/status/14157475435 | 14:00 | |
seems his full name is (Анатолий Шарифули)++ | |||
moritz_ | std: <a b c d e f g>.pairs.grep({.value !% 2})>>.value | 14:01 | |
p6eval | std 30728: OUTPUT«ok 00:01 111m» | ||
diakopter | was the talk given in an underground bunker? | ||
moritz_ | rakudo: <a b c d e f g>.pairs.grep({.value !% 2})>>.value | ||
p6eval | rakudo d85513: ( no output ) | ||
14:01
justatheory joined
|
|||
colomon | rakudo: say ("4" + 2).WHAT | 14:01 | |
p6eval | rakudo d85513: OUTPUT«Num()» | ||
moritz_ | rakudo: say <a b c d e f g>.pairs.grep({.value !% 2})>>.value | 14:02 | |
p6eval | rakudo d85513: OUTPUT«abcdefg» | ||
colomon | moritz_: I don't know. | ||
14:02
uniejo left
|
|||
moritz_ | rakudo: say <a b c d e f g>.pairs.grep({1; .value !% 2})>>.value | 14:02 | |
p6eval | rakudo d85513: OUTPUT«abcdefg» | ||
moritz_ | rakudo: say <a b c d e f g>.pairs.grep({.key !% 2})>>.value | ||
p6eval | rakudo d85513: OUTPUT«aceg» | ||
colomon | moritz_: and (I just realized) what did you mean? | ||
say 0, *+2 ... @a is not at all the same thing as say 0, *+2 ... +@a | 14:03 | ||
moritz_ | why not? | ||
colomon | series takes an array on the RHS. | ||
moritz_ | oh. | ||
colomon | (at least by spec) | 14:04 | |
only the first element of the array figures in the series calculation, and the rest of the array is simply appended to the end of the series. | |||
moritz_ | rakudo: say <a b c d e f g>.pairs.classify({$_ % 2}).Hash.<0>>>.value | 14:05 | |
p6eval | rakudo d85513: OUTPUT«Method 'Num' not found for invocant of class 'Pair'current instr.: 'perl6;Mu;' pc -1 ((unknown file):-1)» | ||
colomon | so if numeric comparison was used in your example (and series worked properly with RHS arrays, which I'm not sure it does at the moment), the result would have been | ||
moritz_ | rakudo: say <a b c d e f g>.pairs.classify({.key% 2}).Hash.<0>>>.value | ||
p6eval | rakudo d85513: OUTPUT«Method 'Hash' not found for invocant of class 'GatherIterator'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
colomon | 0, 'b', 'c', 'd', 'e', 'f', 'g' | ||
moritz_ | rakudo: say %(<a b c d e f g>.pairs.classify({.key% 2}))<0>>>.value | 14:06 | |
p6eval | rakudo d85513: OUTPUT«Method 'hash' not found for invocant of class 'GatherIterator'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
moritz_ | that's a bug | ||
14:06
plobsing joined
|
|||
moritz_ | the hash contextualizer should work with every list-y object | 14:06 | |
14:11
pencilk left
|
|||
masak | diakopter: no, it was given in a giant newly-built 'expo' building. | 14:11 | |
colomon | Hmmm.... interesting that there are zillions of non-zero exit status failures on OS X, but make spectest works perfectly on my 64-bit Linux box. (though this reminds me why I normally use tools/test_summary.pl to spectest.) | ||
masak | diakopter: totally modern, actually, with shining floors and all. | ||
moritz_ | masak: rt.perl.org/rt3/Ticket/Display.html?id=75174 did you see that one before? | 14:12 | |
it sounds far too trivial to have escaped your attention for long | |||
masak | moritz_: I was surprised too. | 14:13 | |
moritz_: no, haven't seen it before. | |||
diakopter | see the 2nd publication on www.thorn-lang.org/ | ||
ruoso: see the publications on www.thorn-lang.org/ | |||
masak | it must have slipped between our fingers as a sufficiently uncommon thing to do. | ||
rakudo: my @a; for 1 { @a = gather { take 42; last; take 5 } }; say @a.perl | 14:14 | ||
p6eval | rakudo d85513: OUTPUT«[]» | ||
masak | that's wrong too, isn't it? | ||
moritz_ | I suspect so | 14:15 | |
masak submits rakudobug | |||
rakudo: my @a; for 1 { @a = gather { take 42; } }; say @a.perl | |||
p6eval | rakudo d85513: OUTPUT«[42]» | ||
masak | oh wait. | ||
no, it's not wrong. | |||
unsubmit rakudobug. :) | |||
moritz_ | the last; exits the for-loop | ||
masak | right. | 14:16 | |
so no assignment is ever made. | |||
moritz_ | so it's not assigned yet | ||
masak | unless the assigment is made before, to an iterator of some sort. | ||
but I don't know the specifics of the semantics there. | |||
moritz_ | if laziness was guarantueed, then assignment would have to happen after the first take | 14:17 | |
but since it isn't in the case of finite lists... | |||
dalek | kudo: 1c32466 | Coke++ | docs/release_guide.pod: remove extra punctuation. |
14:19 | |
masak | well, what's the semantics of `@a = gather for 1..* { take $_ }` ? | ||
moritz_ | it's supposed to return a lazy, infinite list | 14:20 | |
but it's not guarantueed to return control flow after the first take() | |||
it's allowed to return after 10th take() if the compiler thinks that's more efficient | 14:21 | ||
colomon | masak: I don't think we actually know yet. | 14:22 | |
masak | colomon: ok. | ||
mathw | Laziness is cool, but difficult | ||
masak | in my browser on proto.perl6.org/ -- the heading 'Project list' is closer to the thing above than it is to the thing below. that looks wrongish. | ||
moritz_ | .oO( patches welcome ) |
14:23 | |
colomon | oh, hey, just remembered I've forgotten to look at the roadmap | ||
masak | also, I'm still on the lookout for a good suggestion for where to place to project icons. I don't like that they displace the project name and break the nice left margin. | ||
moritz_ | masak: then displace all project names | 14:24 | |
masak: and make the left margin a bit smaller | |||
ruoso | diakopter, the thorn language seems to use a kind of explicitness about threading that we're trying to avoid... | ||
phenny | ruoso: 07:42Z <BrowserUk> tell ruoso we could to & fro for ever about whether IO needs a kernel thread or not, and the benefits or otherwise. I spent yesterday knocking up a crude runnable demo to try and give us some feel for the likely benefits. It might be done already were it not that I always have trouble implementing ring buffers. Still chasing a once-per-cycle out-by-one error :( | ||
masak | moritz_: I should try that. I fear it might look bad; but I really should withhold judgment and just go for it. | ||
moritz_ | or just use a table | 14:25 | |
it's tabular data, after all | |||
and it's easy to get the layout right with a table | |||
masak | the rationale for using a table is indeed bigger now that we effectively have four columns rather than two. | 14:27 | |
ruoso | BrowserUk, that's an interesting exercise... I'll be waiting for your conclusions | ||
moritz_ | masak: or more, if you put each badge into a column on its own | 14:28 | |
ruoso | diakopter, have you seen a presentation on that subject in the Moose site? | ||
pugssvn | r30729 | moritz++ | [u4x] remove markup that makes it invalid 5POD | 14:29 | |
ruoso | diakopter, sartak.org/talks/osdc.tw-2010/nonhi...al-oop.pdf | ||
masak | moritz_: it would be fruitful to see what degrades nicer in a Lynx-like browser; a table or a dl. I suspect the latter. | 14:30 | |
moritz_ | masak: last I tried 'links' (another text-only browser) non-huge tables looked fine | 14:32 | |
colomon is ready to make release.... | |||
moritz_ wonders why u4x.perl6.org/glossary.html still doesn't render properly | |||
colomon | "make release" as in the command, that is. | 14:33 | |
moritz_ | \o/ | ||
14:34
iblechbot joined
|
|||
masak | moritz_: well, links goes a little further than other text-based browsers in positioning things the way they would be if t'were graphics. I'm amazed at what good a job it does sometimes. | 14:34 | |
dalek | kudo: 9021d4c | (Solomon Foster)++ | docs/ROADMAP: Paradoxically update ROADMAP to note when the last real update to it was. |
14:36 | |
masak | rakudo: my (@a, @b) = [1, 2], [3, 4]; say @a.perl; say @b.perl | 14:37 | |
p6eval | rakudo d85513: OUTPUT«[[[1, 2], [3, 4]]][[]]» | ||
masak | disregarding the double arrays... | ||
this is correct, yes? | |||
moritz_ doesn't think so | 14:38 | ||
masak | why not? | ||
moritz_ | if the RHS was (1, 2; 3, 4), then yes | ||
because assignment is not (signature) binding | |||
masak | so what should @a and @b contain, respectively? | ||
moritz_ | I'm not quite sure | 14:39 | |
perl6: my (@a, @b) = [1, 2], [3, 4]; say @a.perl; say @b.perl | |||
p6eval | elf 30729: OUTPUT«syntax error at (eval 125) line 3, at EOFsyntax error at (eval 125) line 6, near "} =" at ./elf_h line 5881» | ||
..rakudo d85513: OUTPUT«[[[1, 2], [3, 4]]][[]]» | |||
..pugs: OUTPUT«[[1, 2], [3, 4]][]» | |||
PerlJam | masak: sub foo (@a,@b) { ... }; foo( [1,2], [3,4] ); # same thing that they would contain here. | ||
masak | PerlJam: no, that's binding. | ||
moritz_ | masak: I kinda suspect that pugs is correct | ||
PerlJam | sure, but that's my guess :) | 14:40 | |
masak | moritz_: so, 'yes' to my original question. | ||
moritz_ | oh | ||
14:40
ejs left
|
|||
moritz_ mis-read the output | 14:40 | ||
yes | |||
masak | good. | ||
uasi++ on Twitter was asking. | |||
colomon | wth? | 14:41 | |
make test just failed on my release. :( | |||
t/01-sanity/._99-test-basic........ Dubious, test returned 1 (wstat 256, 0x100) | |||
No subtests run | |||
moritz_ | reproducible? | ||
colomon | t/01-sanity/99-test-basic..........ok | ||
there shouldn't even be a ._99-test-basic, should there? | 14:42 | ||
moritz_ | right | ||
colomon | reproducible on this build? yes. | ||
moritz_ | colomon: a left-over backup file from an editor in your source tree? | 14:43 | |
colomon | hmmmmm.... | ||
nope, it's not in the source tree that generated the release tar. | 14:45 | ||
moritz_ | is it in MANFIFEST? | ||
colomon | but the file is in the tarball | ||
14:45
patspam joined
|
|||
colomon | no | 14:46 | |
PerlJam | moritz's back-file idea still sounds plausible. | 14:47 | |
14:47
plobsing left
|
|||
PerlJam | were you editing that file when you made the tarball? | 14:47 | |
moritz_ | not if you know how the tarball is made | ||
git ls-files >> MANIFEST | |||
and then the tarball from the MANIFEST | |||
colomon | I have not looked at that file in months. | 14:48 | |
PerlJam | oh, hmm. | ||
colomon | weird tar bug? | ||
moritz_ | hm | 14:49 | |
colomon | I'm trying to make release on my Linux box instead.... | ||
that appears to lack the file. | 14:50 | ||
moritz_ tries a local release | |||
colomon | now to build... | ||
moritz_ | MacOS specific weirdness? | ||
colomon | could be, I guess. | 14:52 | |
14:57
justatheory left
|
|||
colomon | make test passes now | 14:57 | |
14:58
justatheory joined,
justatheory left
15:00
isBEKaml joined
|
|||
colomon | make spectest has todo passes. | 15:05 | |
ship it! | 15:06 | ||
15:07
orafu left,
orafu joined
|
|||
colomon | okay, uploaded to github.com/rakudo/rakudo/downloads | 15:08 | |
if a couple people could check that and make sure it works for them, I'll go ahead and do the announcement. | |||
isBEKaml | oh, hai, #perl6! | 15:12 | |
colomon | o/ | 15:13 | |
moritz_ | trying it out now | ||
colomon | moritz_++ | ||
PerlJam too | 15:14 | ||
moritz_ bemounds the fact that perl Configure --gen-parrot uses serial make for building parrot | 15:16 | ||
*bemoans | |||
can't type today | |||
colomon | I like bemounds as a word. | 15:17 | |
[Coke] | parrot tries hard to be -j safe. | ||
moritz_ | and it mostly is | ||
[Coke] | seems like you could allow the user to override that in Configure. | ||
moritz_ | (although I just got a failure for make -j3 install in the parrot release) | 15:18 | |
but that could be related to me Ctrl+C'ing the previous build attempt | |||
[Coke] | moritz_: does it fail on just 'make' or specifically on the install? | ||
moritz_ | [Coke]: I configured parrot, ran 'make', aborted, and then ran 'make -j3 install' | 15:19 | |
and it seemd to build parrot (at least it linked some binaries), but didn't install | |||
[Coke] | if you can duplicate it on a 'realclean, config, make -j3 install' open a ticket, i'll fix it. | 15:21 | |
moritz_ | sure; testing the rakudo release first | ||
build and 'make test' were clean | 15:22 | ||
PerlJam | same here. still waiting for make spectest | 15:23 | |
[Coke] | I died on the build with: | 15:24 | |
/Users/coke/bird/bin/parrot -o perl6.pbc src/Perl6/Compiler.pir | |||
error:imcc:syntax error, unexpected IREG, expecting '(' ('$I30767') in file 'src/gen/core.pir' line 7951 included from 'src/Perl6/Compiler.pir' line 1 | |||
(using installed parrot of most recent vintage.) | |||
moritz_ | [Coke]: most recent parrot is bogus | ||
[Coke] | I'll do the --gen-parrot. | 15:25 | |
moritz_ | at least without further rakudo patches | ||
because post-release the gcd opcode as moved to a dynop | |||
15:26
ejs joined
|
|||
isBEKaml | hey folks, is there anything I can do to help today (apart from building the release rakudo that I'm doing & )? | 15:26 | |
moritz_ | if the parrot folks want to remove that opcode, we should implement it as a dynop in rakudo (as sorear++ suggested) | ||
isBEKaml: you could generate an index file for u4x.perl6.org | 15:27 | ||
[Coke] | isBEKaml: grab an advent day and test it? | ||
isBEKaml | moritz_: don't know how to do that... | ||
moritz_ | isBEKaml: the code that renders the pod into HTML is in docs/u4x/web in the pugs repo | ||
isBEKaml: just generate an index.html with links to the other generated HTML files | |||
or.. what [Coke]++ suggested | 15:28 | ||
isBEKaml | moritz_: yeah, I worked on it some too. :) | ||
15:29
uniejo joined
|
|||
isBEKaml | [Coke]: I just make realcleaned my base parrot install, so no perl6 for me, as of now(until this build completes) :( | 15:29 | |
moritz_ | perfect time to write some tests :-) | ||
isBEKaml | So I will just prolly get the indexing working.. ;) | ||
15:30
justatheory joined
|
|||
isBEKaml | :-) | 15:30 | |
colomon had a momentary surge of pride thinking that the Advent mandelbrot script might have gone into the official p6 test suite. Then remembered I probably was already responsible for thousands of lines of the test suite anyway... | |||
masak | isBEKaml++ | ||
moritz_ | lol | ||
isBEKaml | yo, masak! how was Russia? | ||
masak | colomon++ | ||
isBEKaml: Russia was highly satisfactory. | 15:31 | ||
isBEKaml | lol, colomon! some things are so easy to forget.. ;) | ||
moritz_ | in sovjet russia masak was talking | ||
or so :-) | |||
erm, masak talked to *you* | |||
masak | but I accidentally the return ticket one day late... :/ | ||
which was potentially disastrous. | |||
jnthn | masak: So you got an extra bonus day? | ||
isBEKaml | masak: so you'd end up saying "Rossiya Matushka" ? ;) | 15:32 | |
masak | jnthn: no, because the Visa wasn't as confused as I was when I ordered the ticket. | ||
15:33
gbacon left
|
|||
masak | jnthn: fortunately I got a ticket for the right day. I bought it just in time, one hour before departure. | 15:33 | |
15:33
gbacon_ left
|
|||
colomon | does building a release do something funky to your t/spec directory? | 15:33 | |
15:33
gbacon joined
|
|||
moritz_ | colomon: yes, it nukes it | 15:33 | |
colomon | bother. | ||
moritz_ | colomon: and replaces it by a 'svn export' | 15:34 | |
I have a local commit that warns about that | |||
moritz_ feels bad for not having it pushed earlier | |||
masak | jnthn: I shudder to think what the Russian authorities would have had in store for me had I deviated from the visa departure date. :-/ | ||
colomon | moritz_: no worries. | ||
isBEKaml | masak: Then there would one too many Russian scowls... :D | 15:35 | |
15:35
ejs left
|
|||
isBEKaml | uniquely Russian scowl... | 15:35 | |
masak | isBEKaml: aye. the ones I got were quite enough, thank you. | ||
isBEKaml | masak: No, I meant you, for you already said "Russia was highly satisfactory". Wait, did you just practise that unique Russian scowl? ;) | 15:36 | |
masak | I don't scowl. life is too short for scowls. | 15:37 | |
moritz_ | t/spec/integration/advent2009-day02.t (Wstat: 0 Tests: 10 Failed: 1) Failed test: 8 | ||
I've seen that failing once before | |||
hash order? | |||
masak | I did, however, sigh loudly two or three times before the departure stuff sorted itself out. | ||
jnthn | masak: When I do the visa application I tend to deliberately off-by-a-couple it on the start and end date. | 15:38 | |
masak: Just In Case. | |||
masak | jnthn: is that possible, given that they synch it with the hotel stay? | ||
jnthn | masak: Erm...well. :-) :_0 | ||
15:38
Lorn left
|
|||
jnthn | masak: Depends how much you're paying for the visa I guess. :-) | 15:39 | |
masak | apparently there are aspects of all this that I've yet to learn. :) | ||
15:39
ejs joined
|
|||
jnthn | ;-) | 15:39 | |
[Coke] | 'make spectest' should not do an 'svn up' in a release tarball. | 15:40 | |
15:40
christine left
|
|||
masak | moritz_: I don't see any way that test file could be a victim of hash order. | 15:41 | |
moritz_ | masak: neither do I... except if I typo'ed one of the alternatives (and that is seldom chosen) | ||
15:41
iblechbot left
|
|||
isBEKaml | moritz_: index.html would just be displaying all the html files along with their corresponding pods, right? | 15:42 | |
masak | moritz_: 'seldom' has to be 50% here. | ||
isBEKaml | masak: seldom is "almost none" | ||
:) | |||
moritz_ | isBEKaml: link to, not display them | ||
masak | well, the test file only contains 50% cases. | ||
moritz_ | masak: nobody says that hash order is *truely* random | 15:43 | |
it's only possibly random | |||
isBEKaml | moritz_: well, I was just referring to linking them (native tongue kicked in, I guess :) ) | ||
PerlJam | release tarball built and tested just fine here. | ||
masak | fwiw, 'e4x' (just like 'proto') is an internal name, not meant for public use. so please use 'doc' or 'docs' or something rather than 'e4x' in public URLs. | ||
moritz_: true. | 15:44 | ||
15:44
christine joined
|
|||
isBEKaml | The kowner himself just mis-spelt u4x! :O | 15:44 | |
or there's e4x too?? | 15:45 | ||
masak | how embarrassing :) | ||
no, it should be 'u4x'. | |||
been a while :P | |||
moritz_ | masak: I asked here if I should call the domain 'u4x' or 'doc' or 'docs'... | ||
jnthn | .oO( embarassment 4 christmas ) |
||
masak | moritz_: I missed that. | ||
[Coke] has some failures in spectest. | |||
masak | moritz_: haven't backlogged yet. | ||
moritz_ | masak: and I kinda liked the answer "u4x", because it's not yet sufficiently complete or good to act as official 'doc' site, IMHO | 15:46 | |
colomon | "Bad file descriptor at tools/test_summary.pl line 367." | ||
isBEKaml | and it's *special* with loads of X'mas spirit! | ||
moritz_ | masak: but adding another alias to is is just one line of apache config file | ||
colomon | so how are the release tests coming? (he asked hopefully....) | ||
moritz_ | colomon: all pass, except that one advent integration test | 15:47 | |
isBEKaml thinks something should be done to remove the core.pir bottleneck in a future release... | |||
colomon | shall I announce? | ||
moritz_ | wfm | ||
masak | moritz_: I don't like the thought of using the name 'u4x' for anything official. the tale behind the name 'proto' shows how easily things get established, and how hard they are to change after the fact. also, see 'pugs repo'. | 15:48 | |
moritz_ | got a point there | ||
colomon | and where? akudo.org, use.perl, perl6-language, perl6-announce, perl6-users, and others seems a little perl6 mailing list heavy. | ||
moritz_ | $ ./perl6 -e 'my $c = 0; for ^1000 { my %h = a => 1, b => 2; $c++ if %h.keys.[0] eq "a"}; say $c' | ||
colomon | (oh, wait, should tag, too.) | ||
moritz_ | 0 | ||
or 1000 | |||
masak envisions a Perl 6 implementation called 'Akudo' :) | |||
for maximum confusion :P | 15:49 | ||
moritz_ | so currently rakudo hashes seem to chose one hash key at startup, and stick to it | ||
15:49
s1n left
|
|||
isBEKaml | with Aikido! :) Akudo ^^human parsing&& Aikido (PASS!) :) | 15:50 | |
PerlJam wonders if kudo-ra means anything interesting | |||
moritz_ | colomon: [email@hidden.address] if you care | ||
colomon | how do I update rakudo.org? | 15:52 | |
moritz_ | you log in | 15:53 | |
15:53
rgrau_ left
|
|||
moritz_ | and then 'create content' in the left bar | 15:53 | |
colomon | no account. can I easily create one, or do I need someone else to do this to get it done quickly? | 15:54 | |
moritz_ | colomon: I think Andy Lester has to give you authoring privs | 15:55 | |
colomon: don't know if anybody else got that power... maybe pmichaud? | |||
alester | Yeah, it's pretty simple. | ||
moritz_: What's wrong with me, huh? Huh? | |||
Let's fight! | 15:56 | ||
moritz_ | alester: ah, you're present... didn't see you in the nick list | ||
alester: sorr | |||
y | |||
alester | Come on, we'll arm wrestle. | ||
colomon: What are you thinkin' of updating/ | |||
? | |||
masak | the release announcement. | ||
colomon | alester: rakudo release announcement | ||
alester | Go create an account, tell me what it is, and I can give you privs. | 15:57 | |
colomon | alester: it's colomon | ||
moritz_ 's arm is pretty weak | |||
but the fingers are strong, easy to write /kick alester if he insits on fighting :-) | 15:58 | ||
alester | The old "might makes right" strategy! | ||
TimToady | 'akudo' would mean Way of Evil, so that fits. | ||
phenny | TimToady: 10:32Z <sorear> tell TimToady : metachar:normspace parsing appears to be broken; 'rule foo { <a> <b> <c> }' and 'rule foo {<a><b><c>}' generate the same AST modulo all-caps flags | ||
moritz_ | alester: the old "we surpress the powerless domain admins" stratgy... oh wait | ||
alester | Did I set up a a separate admin account? | 16:00 | |
16:00
Lorn joined
|
|||
TimToady | or it could be the Way of Bitterness | 16:01 | |
moritz_ has no idea | |||
16:01
moritz_ sets mode: +o alester
|
|||
alester | aha, I did. | 16:02 | |
moritz_ decommutes | 16:03 | ||
alester | colomon: Done. | ||
colomon | alester++ | 16:06 | |
okay, announced at rakudo.org. Rakudo wikipedia page updated. | 16:15 | ||
jnthn | colomon++ | 16:17 | |
masak | \o/ | 16:18 | |
colomon | should I just send the announce message to all of perl6-language, perl6-announce, perl6-users at once? | 16:19 | |
masak | I would. | 16:20 | |
16:24
ash___ joined
|
|||
BrowserUk | ? | 16:26 | |
TimToady thinks about async IO solutions that depend on polling :) | 16:28 | ||
PerlJam | colomon++ hit perlmonks and use.perl too, if you can. | 16:29 | |
PerlJam wonders what sort of reaction we'd get posting release announcements to p5p ;> | 16:30 | ||
16:35
cdarroch joined,
cdarroch left,
cdarroch joined
|
|||
colomon | would use.perl involve more than just a post to my use.perl account? | 16:37 | |
16:37
madalu joined
|
|||
PerlJam | colomon: nope. | 16:37 | |
colomon | okay, that's easily done. | ||
wait, story or journal entry (for use.perl)? | 16:38 | ||
16:38
ash___ left
16:40
justatheory left
|
|||
[particle] | story, iirc, this is news | 16:41 | |
PerlJam | aye | ||
jnthn | I think story is what gets it on the front page. | ||
Or at least submitted to be added to the front page. | |||
BrowserUk had to think about polling asynch IO for serveral long seconds (thinking Oh! No!), before the P(h)enny dropped :) | |||
ruoso hadn't understood until BrowserUk's comment | 16:43 | ||
BrowserUk | ruoso: (As your around), I tried to use go to produce the demo I mentioned, but it's still to flakey. I've coded it in Perl 5, but the GIL and slow shared mem implementation do do it justice. I'm now trying Erlang, but progress is slow. | 16:48 | |
*you're | |||
*do do (appropriate:) don't do... | 16:49 | ||
ruoso | what I'm thinking now is that we should assume the interpreter should support different strategies | ||
and some hint in the code to help it decide which one to choose | 16:50 | ||
TimToady | [Coke]: I think of ^ as the "upto" operator | ||
masak | nom & | 16:52 | |
16:52
masak left
|
|||
ruoso | basically it can go from co-routine-based-cooperative-threading for intensive IO | 16:52 | |
colomon | use.perl story submitted. | 16:53 | |
ruoso | to as-many-os-threads-as-necessary | ||
16:53
Eevee joined
|
|||
BrowserUk | Outside of a working demo, the best explaination I can come up with is Amdahl's Law. Starting a whole new kernel thread to support a single IO (sequence)--when that thread would spend most of it's time just waiting for disk/socket/etc., will produce negligable extra gains once you've already threaded the two exspensive calculations. | 16:53 | |
ruoso | sure sure... the idea is not mixing the strategies in the same code | 16:54 | |
16:54
dakkar left
|
|||
ruoso | but choosing one or the other depending on the code | 16:54 | |
BrowserUk | However, having a single kernel thread sitting around in every process that cooperatively threads all IO requests, and deals with signals/system messages(on Win), is a good idea. | 16:55 | |
ruoso | hmm... | 16:56 | |
but you're just moving the problem from one place to another | |||
BrowserUk | How so? | 16:57 | |
(And which problem?) | |||
ruoso | because the code that will deal with the data coming/going from/to the IO requests will still need to deal with the communication from that thread to they (as opposed to from the OS to them) | ||
colomon | perl6 mailing lists "spammed". according to release guild, now time to celebrate. | ||
PerlJam | colomon++ yay! | ||
BrowserUk | Isn't that where ==> comes in? | 16:58 | |
ruoso | ==> is just a pipe | ||
BrowserUk | (Or <==) | 16:59 | |
ruoso | you're just moving the buffer from the OS to the program memory | ||
but you still need a buffer | |||
so, no gain | |||
TimToady | er, avoiding the OS can be a huge performance gain | 17:00 | |
ruoso | considering ==> could operate directly in the OS buffe | ||
TimToady, but it's not avoiding... it's just doing that in a single thread | |||
diakopter | ruoso: no I didn't see that | ||
BrowserUk | Yes, but if IO requests (attached to a pipe), pass their end of that pipe to an appropriate routine in the IO/Event thread | ||
17:00
silug left
|
|||
BrowserUk | Moving which buffer from the OS? | 17:01 | |
ruoso | considering the following code... | ||
@a <== map { expensive_op_1($_) } <== { expensive_op_2($_) } <== $*IN | 17:02 | ||
17:02
lokpest joined,
\shade\ is now known as {shade},
lokpest left
|
|||
ruoso | you can't have the expensive_op_2 happening in the IO thread | 17:02 | |
since it's too expensive for cooperative-threading | 17:03 | ||
17:03
{shade} is now known as \shade\
|
|||
ruoso | so, if you have a thread that does all the IO operations | 17:03 | |
you still need to have a buffer with the data read from the OS and still to be sent to the worker thread | 17:04 | ||
BrowserUk | No. It doesn't Expensive_op_2 runs in a Kernel thread and has one end of that last pipe. $*IN actuall sends a message to the coop thread stating the IO req parameters and passing teh other end of that last pipe. | ||
And the IO thread uses asynchronous read | 17:05 | ||
ruoso | hmm... so you wouldn't be doing all IO requests cooperatively threaded | ||
BrowserUk | Yes I would. | 17:06 | |
17:06
TiMBuS left,
ash___ joined
|
|||
ruoso | since the read op would be done in the worker thread directly | 17:06 | |
BrowserUk | coop thread == IO thread | ||
ETOOMANYTHREADS :) | |||
Where does "worker trhead" come from? | |||
ruoso | it's the thread running the expensive operation | ||
dalek | kudo: e3fe329 | moritz++ | docs/release_guide.pod: [docs] warn about potential damage from "make release" |
17:07 | |
TimToady must wander off, alas; play nicely, kids... :) | |||
BrowserUk needs to produce demo.... | |||
17:08
ejs left
|
|||
BrowserUk | The thred running teh expesive operation read from the last pipe. The IO thread writes to it, once the data arrives from disk | 17:09 | |
ruoso | the point is, why not have the original pipe in the therad running the expensive operation? | ||
BrowserUk | But pipes are *between* threads aren't they? Not "in" them? | 17:10 | |
ruoso | I mean... why not having the thread running the expensive operation to read on the original pipe | ||
BrowserUk | If the expensive tread wants to read directly from the disk, it doesn't need a pipe. | 17:11 | |
ruoso | I think we lost ourselves in the discussion... | ||
BrowserUk | I don;t know what you mean by "original pipe". | ||
Indeed. | |||
isBEKaml | moritz_: ok, I banged up some code. Looks a little hackish, though and needs cleaning up modules.. | 17:12 | |
moritz_ | isBEKaml: great | ||
ruoso | BrowserUk, considering the snippet I posted... I see today two different scenarios... | ||
BrowserUk | I'll draw a diagram of why *I* mean and paste it somewhere... | ||
Okay; belay that! Listening. | |||
ruoso | 1) all the code runs in event-based-cooperative-threading (usefull for non-expensive operations) | 17:13 | |
2) the code runs in different threads (usefull for expensive operations) | |||
BrowserUk | Why just those two? What not 3) All IO runs in the IO thread (cooperatively sharing a single kernel thread for operations that are mostly waiting), and expensive operations (can) start a new kernel thread for their duration. | 17:15 | |
I have to go for a while: bbl | 17:16 | ||
ruoso will try to reorganize the ideas | |||
17:17
justatheory joined
|
|||
sorear appears | 17:17 | ||
17:18
ash___ left
|
|||
diakopter | sorear: do you have some sample yaml output of STD's parse of itself handy? | 17:21 | |
ruoso | maybe it's a good idea to have a different "map" that spawns a worker thread to process the input... | ||
diakopter | (such as the simple token sequence you committed) | ||
ruoso | @a <== map { non_expensive_op_1($_) } <== amap { expensive_op($_) } <== map { non_expensive_op_2($_) } <== $*IN | 17:25 | |
where amap stands for "async map" | |||
but it's not really async... | |||
maybe pmap "parallel map" | |||
mtmap -- "multi-thread map" | 17:26 | ||
sorear | diakopter: yaml? no | 17:31 | |
moritz_ | hyper map | 17:33 | |
already exists | |||
don't invent new stuff for the sake of inventiing :-) | |||
BrowserUk | aMap is what I've called my Perl5 version: See pastebin.com/6mqwGK1q pastebin.com/v07TPASV pastebin.com/N8jWwuiN. (Going to eat now) | 17:40 | |
ruoso | moritz_, hyper map? what is the syntax? | 17:41 | |
17:43
stephenlb joined
|
|||
pugssvn | r30730 | svatsan++ | [u4x] Generate index.html | 17:43 | |
isBEKaml | moritz_: Done. Can you look over it and see if it's okay? | 17:44 | |
moritz_: I have not written a lot of p5 code, this would be a good time to learn how. :) | 17:46 | ||
[Coke] | TimToady: (upto) ah, catchy. thanks. | 17:50 | |
spectest results on tarball: nopaste.snit.ch/20605 | 17:51 | ||
moritz_ | ruoso: hyper map $block, @list | 17:52 | |
ruoso: hyper is a statement prefix, like sink, gather etc. | |||
isBEKaml: will look at after dinner | 17:53 | ||
pugssvn | r30731 | coke++ | ^ should be called upto' (TimToady++) | ||
ruoso | moritz_, hmmm... nice... | 17:55 | |
17:59
Jedai left
18:00
ShaneC joined,
ShaneC left
18:01
proller joined
|
|||
[Coke] | Advent Testing, claim a day: 9,10,12,13,15-18,20-24 | 18:01 | |
BrowserUk | ruoso: re:@a <== map { non_expensive_op_1($_) } <== amap { expensive_op($_) } <== map { non_expensive_op_2($_) } <== $*IN What is the function of the <== in that if amap starts a thread? | 18:02 | |
Why not just: @a <== map { non_expensive_op_1($_) } amap { expensive_op($_) } map { non_expensive_op_2($_) } $*IN | |||
With the remaining <== becoming simply = | 18:03 | ||
ruoso | BrowserUk, indeed... so probably the feed means openning a new thread | ||
18:03
Jedai joined
|
|||
ruoso | and I think I'm back to the "implicit event-based programming" | 18:04 | |
which basically means... unless some specific operators define it, it goes in cooperative-threading for its regular operations... | 18:05 | ||
BrowserUk | I thought that <== (originally) meant "lazy". So ... <== $*IN doesn't construct a list, but rather supplies values on demand. | ||
ruoso | BrowserUk, it's not *just* lazy | 18:06 | |
it also means it is lazy | |||
but, in fact, the eagerness in @a = map { .. }, $*IN happens in the list assignemtn | 18:07 | ||
not in the map arguments | |||
in that case... | 18:08 | ||
@a := map { inexpensive_op($_) }, $*IN; | |||
hmm... | |||
BrowserUk | Before you posted that lot I'd started to type : For example, I can't see the purpose of @a <== map{ ... ? | ||
ruoso | the purpose is allowing the interpreter to batch process @a while the code is still flowing... | 18:09 | |
for instance... | |||
[Coke] | moritz_: do you have a fix for the gcd thing, or do you want me to fix it? | ||
ruoso | @a = map {... # the list assignment forces mostly eager evaluation | ||
@a := map {... # is mostly lazy, but the interpreter won't have time to process yet | 18:10 | ||
@a <== map {... # is mostly lazy, and the interpreter will spawn that processing in parallel | 18:11 | ||
BrowserUk | Hm. (I thinking-but not yet arguing) That's backward. | ||
ruoso | I think I'm getting to cooperative-event-based unless explicitly said otherwise (with <==, or any hyper operator) | 18:13 | |
moritz_ | [Coke]: have a fix locally, just waited for spectest to finish before I pushed | ||
[Coke] | moritz_: ah. it was a comment in a commit. Anyone mind if I bump parrot REVISION? | ||
moritz_: oh, you have it. hokay. | |||
moritz_ | .. and pushed | 18:14 | |
BrowserUk | At compile-time, @=map{... you know the destination is @a. So why not have map populate @a directly, rather than having to apply smarts to @a to take values individually? | 18:15 | |
dalek | kudo: e6863e4 | moritz++ | (2 files): bump PARROT_REVISION, and load obscure_ops |
18:16 | |
ruoso | BrowserUk, my saying doesn't deny that... it's just *when* it happens | ||
plain assignemnt makes it happen at that moment (except when infinite) | |||
bind is replacing the variable for the map return buffer | 18:17 | ||
feed explicitly says that it should be done in parallel | 18:18 | ||
[Coke] | moritz++ | ||
moritz_ | isBEKaml: I've run the script -- it sets the CSS path to a local path | ||
18:18
ash___ joined
|
|||
moritz_ | u4x.perl6.org/Pair.html | 18:18 | |
<link rel="stylesheet" href="/var/www/u4x.perl6.org/style.css" type="text/css" /> | |||
BrowserUk | I'll need you to explain "ruosoI think I'm getting to cooperative-event-based unless explicitly said otherwise (with <==, or any hyper operator)" a bit more. And maybe in a paste/post/or email? one line at a time interspersed with other stuff is confusing (To me anyway). I'm still thinking about one line and ten more appear. | ||
BrowserUk is going to go away and draw my little pictures and try to illustrate what I envisage "end-to-end". | 18:20 | ||
ruoso | just trying to summarize (will need to go away for a while): Inside one thread, several coroutines may run in cooperative-threading, they get suspended when they try to read a lazy-and-still-not-evaluated value, they are resumed when the data they are expecting gets ready | ||
some operators (feed and hyper operators) explicitly tells the interpreter to spawn a worker thread to handle that code | 18:21 | ||
isBEKaml | moritz_: yes.. that's from pod2html, thingy.. you can just remove the variable referred to in --cssfile and try again? | 18:22 | |
BrowserUk | And would those worker threads run cooperative shcedulers? | ||
ruoso | BrowserUk, possibly, yes.... | ||
isBEKaml | moritz_: I assume you're pointing to the location in the document root ? | ||
moritz_ | yes | ||
isBEKaml | if so, --css=/style.css would do, I guess.. | ||
moritz_ | right | ||
ruoso | BrowserUk, in fact, almost certainly, yes... because the code to be ran in parallel might have other lazy values, and, therefore, they might get suspended and resumed using the same principle | 18:23 | |
isBEKaml | if that works, I can push that in. I was using it for debugging the script here and generating it to a different folder.. | ||
BrowserUk | So, you end up with lots of kernel threads, each running cooperative threads. I hate to think about trying to reason about how that lot will interact. | 18:24 | |
moritz_ | too late | ||
pugssvn | r30732 | moritz++ | [u4x] fix css path | ||
isBEKaml | anyway, \o/! | 18:25 | |
ruoso | the interesting part is that I'm back to my original idea :) | ||
BrowserUk | Ruoso: Besides IO, what else do you see using cooroutines? | ||
18:26
mantovani left
|
|||
BrowserUk | :) | 18:26 | |
18:26
mantovani joined
|
|||
ruoso | BrowserUk, lazy evaluations | 18:26 | |
moritz_ | gather/take? | ||
BrowserUk | Full circle. | ||
Too non-specific. Exampes please? | |||
moritz_ | rakudo: .say for gather { for 1..4 { say "taking $_"; take "$_"; } } | 18:27 | |
p6eval | rakudo 9021d4: OUTPUT«taking 1taking 2taking 3taking 41234» | ||
moritz_ | oh wait, for is still eager | ||
ruoso | it wasn't supposed to be | 18:28 | |
moritz_ | rakudo: (gather { for 1..4 { say "taking $_"; take "$_"; } }).map({.say}).eager | ||
p6eval | rakudo 9021d4: OUTPUT«taking 11taking 22taking 33taking 44» | ||
moritz_ | it's a known limitation | ||
and one that we should soon be able to fix | |||
ruoso | cool | ||
moritz_ | as soon as we detect sink context | ||
which pmichaud++ plans to do at PAST level very soon | 18:29 | ||
BrowserUk | What is gather doing there that wouldn't work without it: for ( 1.. 4) { say } | ||
ruoso | BrowserUk, for 1..* | ||
18:30
mantovani left
|
|||
moritz_ | BrowserUk: it's syntactic sugar for building lazy lists. It's not always that easy to inline as in the example I gave | 18:30 | |
18:30
mantovani joined
|
|||
BrowserUk | rakudo: say for gather{ 1..* }.take 10 | 18:32 | |
p6eval | rakudo 9021d4: OUTPUT«Confused at line 11, near "say for ga"current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)» | ||
BrowserUk | Don't laugh! | ||
moritz_ | BrowserUk: take() must be (dynamically) inside the gather | ||
BrowserUk: it throws a control exception to pass its value to the outside | |||
BrowserUk | Seems like a complicated way to deliver iterators... shuflle shuffle! | ||
ruoso | rakudo: my @a := gather { for 1..* { say "taking $_"; take $_ } }; say @a[5]; | 18:33 | |
p6eval | rakudo 9021d4: OUTPUT«:= binding of variables not yet implementedcurrent instr.: '&die' pc 18058 (src/builtins/Junction.pir:381)» | ||
ruoso | rakudo: my @a = gather { for 1..* { say "taking $_"; take $_ } }; say @a[5]; | ||
moritz_ | and 'for' is still eager in rakudo, so anything you do 'for' and 1..* is bound to loop | ||
ruoso | oops | ||
p6eval | rakudo 9021d4: ( no output ) | ||
ruoso | rakudo: my @a = gather { map { say "taking $_"; take $_ }, 1..* }; say @a[5]; | ||
p6eval | rakudo 9021d4: OUTPUT«» | ||
ruoso | okay... that's a bug.... | 18:34 | |
isn't it? | |||
18:35
hercynium left
|
|||
ruoso | rakudo: my @a = gather map { say "taking $_"; take $_ }, 1..*; say @a[5]; | 18:35 | |
p6eval | rakudo 9021d4: OUTPUT«» | ||
moritz_ | aye | 18:36 | |
laziness is still fragile in rakudo | |||
BrowserUk | rakudo: my @a = gather map { say "taking $_"; take $_ }, 1..*; say @a; | ||
p6eval | rakudo 9021d4: OUTPUT«» | ||
ruoso | is that a known bug? | ||
moritz_ | yes | ||
ruoso closes the mail window | |||
isBEKaml | [Coke]: can I take up day 10? Don't know if I will turn in something... :D | 18:37 | |
[Coke] | isBEKaml: there isn't really a sign up sheet or anything. have fun. =-) | ||
BrowserUk | Seems to me that @a = gather ... is synonymous with @a <== ... | ||
ruoso | except that "@a <== " explicitly tells to go in parallel | ||
gather is just "go lazy" | 18:38 | ||
isBEKaml | [Coke]: yeah, sure! | ||
moritz_ | rakudo: sub f($x) { take $x }; say gather for 1..3 { f $_ } | ||
p6eval | rakudo 9021d4: OUTPUT«123» | ||
BrowserUk seems to remember that lazy list in Hassel didn't require gathering. | |||
ruoso | neither it does in Perl 6 | ||
gather is just one way of doing it | |||
moritz_ | BrowserUk: it's just the example that's best implemented in Rakudo | 18:39 | |
BrowserUk | Ok. | ||
cognominal | Haskell? don't know about Hassel | ||
BrowserUk said what he meant :) | |||
cognominal | that was a pun? | ||
BrowserUk nods. Not enamoured with Hass(k)ell :) | 18:40 | ||
ash___ | aren't there multiple ways of making lists lazy? | ||
moritz_ | sure | ||
ruoso | yes, there are | ||
map itself generates one | |||
moritz_ | ranges | ||
series | 18:41 | ||
ruoso | it's actually harder to produce an eager list then a lazy one | ||
moritz_ | 1, 2, *+*, ... * # infinite, lazy list of fibonacci numbers | ||
18:41
iblechbot joined
|
|||
BrowserUk | so (something like) @a = take 3, 1..*; ought to work? | 18:41 | |
moritz_ | rakudo: say (1, 1, *+* ... *).batch(6) | ||
p6eval | rakudo 9021d4: OUTPUT«112358» | ||
moritz_ | BrowserUk: yes, but without the take | 18:43 | |
(you only need that together with gather) | |||
ruoso | rakudo: my @a = 3, 1..*; say @a[10]; | 18:45 | |
p6eval | rakudo e6863e: ( no output ) | ||
ruoso | pugs: my @a = 3, 1..*; say @a[10]; | 18:46 | |
p6eval | pugs: OUTPUT«Stack space overflow: current size 8388608 bytes.Use `+RTS -Ksize' to increase it.» | ||
ruoso | ouch | ||
moritz_ | rakudo: say (3, 1..*)[10] | ||
p6eval | rakudo e6863e: OUTPUT«Any()» | ||
moritz_ | ouch. | ||
ruoso | moritz_, that is correct | 18:47 | |
moritz_, because you're not going through any flatenning operator | |||
list assignemnt also flattens | |||
ash___ | (3, 1..*) what would that do? 3, 1, 2, 3, ...? i assume | ||
moritz_ | rakudo: say (3, 1...*)[10] | 18:48 | |
BrowserUk did the same thing in Pure a few seconds ago--still don;t get the syntax. | |||
p6eval | rakudo e6863e: ( no output ) | ||
moritz_ | now *that* should print 10, no? | ||
BrowserUk | What does the 3, bit mean/do? | 18:49 | |
I meant for take 3, 1..* to take the first 3 elements of the infinite list. | |||
ash___ | rakudo: say 1...10 | ||
p6eval | rakudo e6863e: OUTPUT«12345678910» | ||
ash___ | rakudo: say 3, 1...10 | ||
ruoso | BrowserUk, ahh... that's not what take does | 18:50 | |
moritz_ | BrowserUk: that would be (1...10).batch(3) | ||
p6eval | rakudo e6863e: ( no output ) | ||
BrowserUk | Or (1..*).batch(3)? | ||
moritz_ | probably, but NYI in rakudo | 18:51 | |
BrowserUk | That why I didn't try it...didn't want to crunch it again. | ||
moritz_ | that's ok, p6eval is used to dying :-) | 18:52 | |
rakudo: say (1..*).batch(3) | |||
p6eval | rakudo e6863e: OUTPUT«Method 'batch' not found for invocant of class 'Range'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
BrowserUk is definitely going to draw pictures...bbl | |||
ruoso .oO ( Actually, I'm not back exactly to my original idea, I'm adding automatically marking values as shared to it ) | 18:56 | ||
isBEKaml | [Coke]: Can I test individual test files? (I'm not familiar with testing) | ||
ruoso .oO( where marking as shared means it is thread-safe ) | |||
ash___ | isBEKaml make t/path/to/test.t should run the test | ||
if you want to run only a single file | |||
isBEKaml | ash___: thank you. | 18:57 | |
[Coke] | ash___: does that fudge it? | 18:58 | |
(i've been manually fudging and then running with my installed perl6.) | 18:59 | ||
moritz_ | [Coke]: yes | ||
and don't complain that nobody told you before - it's in the README :-) | 19:00 | ||
[Coke] | moritz_: which readme? | 19:01 | |
isBEKaml | [Coke]: I believe he's referring to t/spec/README | ||
19:01
ejs joined
|
|||
moritz_ | rakudo's README | 19:01 | |
[Coke] | moritz_: ... that doesn't help when I'm editing them IN PUGS. :P | 19:02 | |
[Coke] reads rakudo's readme. | |||
moritz_ | [Coke]: if you don't run them with rakudo, then this particular piece of advice doesn't apply anyway | ||
[Coke] | I am running them with my /installed/ rakudo. | 19:05 | |
but I see your point. I was more addressing the "no one told me." =-) | |||
moritz_ | ok, point taken (installed rakudo) | 19:06 | |
19:07
silug joined
19:19
clintongormley left
|
|||
isBEKaml | rakudo: my $t=any(3|5|7); say $t; | 19:22 | |
p6eval | rakudo e6863e: OUTPUT«any(any(3, 5, 7))» | ||
isBEKaml | rakudo: my $temp = 5; say "any" if $temp = any(3|5|7); | 19:23 | |
p6eval | rakudo e6863e: OUTPUT«any» | ||
[Coke] | moritz_: I was happy I figured out how to manually run fudge on my own. =-) | ||
moritz_ is happy to get an IMCC error message with a line number that's inside the file | 19:24 | ||
even though I really don't see why it would expect an '(' at the end of a line that returns .return (self) | 19:25 | ||
s/returns/reads/ | |||
[Coke] | moritz_: the only time I see imcc barf that horribly (out of file) is when there's an include involved. but I thought c' fixed most of those. | ||
moritz_ | [Coke]: three levels of includes, and the liine numbers are wrong on all levels | ||
[Coke] | moritz_: shouldn't; sounds like an line number error. | ||
moritz_ | trac.parrot.org/parrot/ticket/1652 | ||
isBEKaml | rakudo: my $temp = 5; say "any" if $temp == any(3|5|7); | 19:26 | |
p6eval | rakudo e6863e: OUTPUT«any» | ||
19:44
\shade\ left
19:47
Eevee left
|
|||
ash___ | can you use a closure or a * with a junction? like: * % 2 & * % 3 to find a number both divisible by 2 and 3? | 19:53 | |
19:55
ejs left
|
|||
ash___ | that might be neat if that worked... | 19:55 | |
or maybe i have the syntax wrong | |||
jnthn | rakudo: my $x = { $^n % 2 } & { $^n % 3 }; say 3 ~~ $x; say 4 ~~ $x; say 6 ~~ $x; | ||
p6eval | rakudo e6863e: OUTPUT«000» | ||
jnthn | oh, but guess maybe wanted | 19:56 | |
rakudo: my $x = { $^n !% 2 } & { $^n !% 3 }; say 3 ~~ $x; say 4 ~~ $x; say 6 ~~ $x; | |||
p6eval | rakudo e6863e: OUTPUT«001» | ||
jnthn | The you go. | ||
bkeeler | Heyas #p6! | ||
ash___ | ah, cool | ||
neat, that works | |||
moritz_ | \o/ bkeeler | ||
19:56
ejs joined
|
|||
jnthn | And yes, * % 3 would work one day too, when we has the curry magic. | 19:56 | |
o/ bkeeler | |||
ash___ | would be neat if you could use * to do that, is that possible? | ||
jnthn | Just NYI. | ||
bkeeler | moritz_: Howdy. How goes that match object stuff of yours? | ||
ash___ | got ya, so its possible, just nyi | ||
jnthn | Aye. :-) | ||
Then it'll look really cute. | 19:57 | ||
moritz_ | bkeeler: not at all :( | ||
jnthn | !% makes it even more so. :-) | ||
bkeeler | moritz_: oh? It sounded promising | ||
moritz_ | bkeeler: I have a prototype in a branch, but it's not the Real Thing | ||
bkeeler: and I gave up my struggle with the vtables for now | |||
jnthn | Infinite recursion. It's a pain. :-/ | ||
bkeeler | This is the mob4 branch in rakudo? | 19:58 | |
moritz_ | yes | ||
if you look at the last commmit, you see what an evil hack I used | |||
19:58
rgrau_ joined
|
|||
bkeeler | I see | 19:59 | |
19:59
sorear left
|
|||
bkeeler | This is working around Capture not doing Associative and Positional? | 19:59 | |
19:59
sorear joined
|
|||
bkeeler | IIRC the plan was to make Match derive from Capture | 20:00 | |
moritz_ | nope; I worked around that by deriving from Array and Hash instead | ||
which is another evil hack | |||
jnthn | rakudo: say Capture ~~ Positional | ||
p6eval | rakudo e6863e: OUTPUT«0» | ||
jnthn | :-/ | ||
bkeeler | It doesn't sound like that much work to make Capture do the appropriate roles | ||
moritz_ | rakudo: class A is Array { }; my $x = A.new; $x[0] = 'foo'; say $x[0] | 20:01 | |
p6eval | rakudo e6863e: OUTPUT«Null PMC access in invoke()current instr.: 'perl6;Proxy;!STORE' pc 15276 (src/builtins/Routine.pir:117)» | ||
bkeeler | Is it more complicated than it would seem? | ||
moritz_ | and that's another problem | ||
bkeeler: no idea... you can give it a shot | |||
bkeeler | I might just do that | 20:02 | |
moritz_ | jnthn: how can I set up a class in PIR that does role Associative? | 20:06 | |
20:08
uniejo left
|
|||
jnthn | moritz_: You don't | 20:09 | |
20:09
jaldhar joined
|
|||
jnthn | moritz_: In the setting do like augment ThatClass does Associative { ... } | 20:09 | |
moritz_: Associative is defined in core these days. | |||
20:09
\shade\ joined
|
|||
moritz_ hopes that's early enough for enums in setting | 20:09 | ||
jnthn: thanks, will try | 20:10 | ||
jnthn | "halp my circularity saw sliced straight through my workbench!" | 20:11 | |
20:11
jaldhar left
|
|||
moritz_ | :-) | 20:11 | |
wow, I got further this time | 20:12 | ||
Method 'succ' not found for invocant of class 'Integer' | |||
current instr.: '!create_anon_enum' pc 985 (src/glue/enum.pir:45) | |||
ash___ | how do you do binary logical ands and ors? like 0101 AND 0111 == 0100 | 20:13 | |
jnthn | ?& iirc | ||
moritz_ | rakudo: say 0b101 +& 0b111 | ||
p6eval | rakudo e6863e: OUTPUT«5» | ||
jnthn | ah, yes | ||
rakudo: say 0b101 ?& 0b111 | |||
p6eval | rakudo e6863e: OUTPUT«1» | ||
ash___ | ah, so the numeric and? got ya | ||
moritz_ | ?& is logical (returns True or False) | ||
jnthn | Yeah | 20:14 | |
rakudo: say 0b101 ~& 0b111 | |||
p6eval | rakudo e6863e: OUTPUT«5» | ||
ash___ | so + & is numeric and, whats ~& do? | ||
jnthn | And stringy | ||
moritz_ | ash___: coerce to string first | ||
ash___ | rakudo: say 'aaa' ~& 'bcb'; | ||
p6eval | rakudo e6863e: OUTPUT«`a`» | ||
jnthn | moritz_: Though is ?& coerce to string *after*? | ||
gah | 20:15 | ||
20:15
jaldhar joined
|
|||
moritz_ | and the circularity chain strikes again... :( | 20:15 | |
jnthn | too bool | ||
*to | |||
moritz_: Aww. Where this time? | |||
moritz_ | enums call $thing.'succ' | ||
to get the value of the next item | |||
and guess where succ is defined... | |||
ash___ | the period table of operators calls ~& "buffer and" whatever that means... it also could be out of date | ||
jnthn | moritz_: Is that an enum in the setting? | ||
moritz_ | jnthn: yes | 20:16 | |
jnthn | Ah. | ||
That...will be a problem. :-( | |||
moritz_ | unless... | ||
we force all enums in the setting to have explicit values | |||
jnthn | Or | ||
eval it inside INIT | |||
;-) | |||
(not too serious suggestion) | |||
20:24
Su-Shee left
|
|||
moritz_ | do we have any way to find out if we're inside the setting? | 20:25 | |
(except searching for '!YOU_ARE_HERE') | 20:26 | ||
jnthn | moritz_: Well, I guess just about everything should be run within the setting... | ||
That'd be "the way" I guess. | |||
moritz_ | except that damned .'succ'() call | ||
jnthn | But it's kinda Rakudo-specific and maybe a bit fragile | ||
colomon | just peeking back in for a moment -- any release emergencies I've missed? | 20:27 | |
jnthn | That's a method call... | ||
colomon | (apparently I celebrated the release by getting a new phone (Droid) and phone number.) | ||
jnthn | Nice! | ||
moritz_ | jnthn: ok, if we're compiling the setting is what I want to know | ||
jnthn | moritz_: Ah, I see. | ||
moritz_ | colomon: no emergencies I'm aware of | ||
colomon | moritz_: thanks. :) | ||
bkeeler | colomon: Oooh nice indeed | ||
20:27
Guest43078 left
|
|||
colomon | bkeeler: I want to be able to write Perl code for it. That would be worth going back to Perl 5. :D | 20:28 | |
moritz_ | rakudo: my $x = 3; pir::succ($x); say $x | ||
p6eval | rakudo e6863e: OUTPUT«error:imcc:syntax error, unexpected PREG, expecting '(' ('$P47') in file 'EVAL_1' line 72syntax error ... somewherecurrent instr.: 'perl6;PCT;HLLCompiler;evalpmc' pc 987 (compilers/pct/src/PCT/HLLCompiler.pir:542)» | ||
moritz_ | rakudo: my $x = 3; $x = pir::succ__ii($x); say $x | ||
p6eval | rakudo e6863e: OUTPUT«error:imcc:syntax error, unexpected IREG, expecting '(' ('$I50') in file 'EVAL_1' line 22837770syntax error ... somewherecurrent instr.: 'perl6;PCT;HLLCompiler;evalpmc' pc 987 (compilers/pct/src/PCT/HLLCompiler.pir:542)» | ||
jnthn | moritz_: succ is a Perl 6 level thing | ||
moritz_: inc is the PIR op | 20:29 | ||
moritz_ | rakudo: my $x = 3; $x = pir::inc__ii($x); say $x | ||
jnthn | Though inc is in place. | ||
p6eval | rakudo e6863e: OUTPUT«The opcode 'inc_i_i' (inc<2>) was not found. Check the type and number of the argumentscurrent instr.: 'perl6;PCT;HLLCompiler;evalpmc' pc 987 (compilers/pct/src/PCT/HLLCompiler.pir:542)» | ||
moritz_ | jnthn: does inc call .succ through vtable overrides? | ||
jnthn | rakudo: my $x = 3; $x = pir::inc__p($x); say $ | ||
p6eval | rakudo e6863e: OUTPUT«Confused at line 11, near "say $"current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)» | ||
jnthn | rakudo: my $x = 3; $x = pir::inc__p($x); say $x | ||
p6eval | rakudo e6863e: OUTPUT«rtype not setcurrent instr.: 'perl6;PCT;HLLCompiler;panic' pc 152 (compilers/pct/src/PCT/HLLCompiler.pir:108)» | ||
bkeeler | I can't wait til I get out of my current contract. I'll probably get a Droid or whatever the latest Android phone is a year from now | ||
20:29
pmurias joined
|
|||
pmurias | diakopter: hi | 20:29 | |
jnthn | rakudo: my $x = 3; pir::inc__p($x); say $x | ||
p6eval | rakudo e6863e: OUTPUT«rtype not setcurrent instr.: 'perl6;PCT;HLLCompiler;panic' pc 152 (compilers/pct/src/PCT/HLLCompiler.pir:108)» | ||
moritz_ | rakudo: my $x = 3; $x = pir::inc__vp($x); say $x | ||
jnthn | rakudo: my $x = 3; pir::inc__vp($x); say $x | ||
p6eval | rakudo e6863e: OUTPUT«error:imcc:syntax error, unexpected ')' (')') in file 'EVAL_1' line 22837770syntax error ... somewherecurrent instr.: 'perl6;PCT;HLLCompiler;evalpmc' pc 987 (compilers/pct/src/PCT/HLLCompiler.pir:542)» | ||
rakudo e6863e: OUTPUT«4» | |||
diakopter | pmurias: hi | 20:31 | |
moritz_ | rakudo: class A { has $.x; method succ { $.x + 2 } }; my $x = A.new(x => 5); pir::inc__vp($x); say $x.x | ||
p6eval | rakudo e6863e: OUTPUT«Cannot assign to readonly valuecurrent instr.: '&die' pc 18058 (src/builtins/Junction.pir:381)» | ||
moritz_ | \o/ it compiles much longer than before | 20:32 | |
pmurias | diakopter: nice job on the recent perlesque commits | ||
moritz_ | like, it actually compiled the setting | ||
20:33
Eevee joined
|
|||
diakopter | pmurias: thanks :) | 20:33 | |
pmurias | diakopter: re has $.foo, has $foo actually also sets $foo as a lexical alias for $.foo | ||
diakopter | ah, oh | ||
moritz_ | for $.foo or $!foo? | ||
jnthn | for $!foo akshually, I think | ||
moritz_ | ok, good | ||
pmurias | $!foo, sorry | 20:34 | |
diakopter | $.foo is public; $!foo is private ? | ||
moritz_ | $.foo is a method call | ||
pmurias | $.foo is self.foo | ||
moritz_ | $!foo is a private attribute | ||
pmurias | all attibutes are private | ||
moritz_ | jnthn: pushed branch enum-in-setting | ||
pmurias | some just have accesors | ||
jnthn | $(self.foo) # pendantic | ||
pmurias | jnthn++ # striving for correctness ;) | ||
moritz_ | jnthn: it gets as far as the iterating in '!setup_named_enum' | 20:35 | |
diakopter | how does one give an attribute a public accessor | ||
moritz_ | Method 'iterator' not found for invocant of class '' | ||
current instr.: 'perl6;Mu;' pc 2601 (src/builtins/Mu.pir:496) | |||
called from Sub '!setup_named_enum' pc 1003 (src/glue/enum.pir:58) | |||
has $.foo; # public getter | |||
pmurias | diakopter: has $.foo creates method foo() is rw {$.foo} | ||
s/$.foo/$!foo/ | |||
moritz_ | has $.foo is rw; # public rw accessor | ||
pmurias -- | 20:36 | ||
diakopter confuzzled still | |||
ok | |||
I think I get it | |||
class Foo { has int $.b }; my $f = Foo.new(); $f.a += 3; # how is this spelled | 20:38 | ||
pmurias | that's correct | ||
TimToady | no | ||
20:38
kel_ joined
|
|||
pmurias | i'm incorrect | 20:38 | |
TimToady | has int $.b is rw; | ||
pmurias | has int $.a is rw | ||
moritz_ | jnthn: how would I port method EnumMap.iterator to PIR? :/ | 20:39 | |
diakopter | yeah, b, oops | ||
pmurias hopes he doesn't get banned for giving incorrect answers | |||
TimToady | well they both better be a or both b :) | ||
20:39
Guest43078 joined
|
|||
[Coke] | moritz_: where is that defined? | 20:40 | |
diakopter | class Foo { has int $.b is rw }; my $f = Foo.new(); $f.b += 3; | ||
moritz_ | [Coke]: src/core/EnumMap.pir | ||
jnthn | s/pir/pm/ ? | ||
moritz_ | erm, yes | ||
pmurias | rakudo: class Foo { has int $.b is rw }; my $f = Foo.new(); $f.b += 3; | ||
p6eval | rakudo e6863e: OUTPUT«Malformed has at line 11, near "int $.b is"current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)» | ||
diakopter | moritz_: what did this mean: <@moritz_> $.foo is a method call | 20:41 | |
[Coke] | if you can explain gather/take to me, I can translate it. =-) | ||
pmurias | it calls the foo method | ||
diakopter | oh, you're saying the setter/getter are method calls | ||
jnthn | moritz_: Do you just want to iterate over it? | ||
moritz_: If so | |||
pmurias | diakopter: yes | ||
PerlJam | pmurias: rakudo doesn't grok "int" yet | ||
jnthn | $P0 = getattribute the_enum_map, '$!storage' | ||
$P1 = iter $P0 | |||
And then see some PIR iterator code somewhere else in the codebase | 20:42 | ||
moritz_: Bit evil, but you know its an EnumMap, so... | |||
moritz_ | jnthn: I just want to return an iterator... | ||
so returning $P1 in your example | |||
pmurias | diakopter: has $.foo defines both a $!foo and a getter foo method | ||
jnthn | diakopter: It's a bit "fun" becuase has $.foo # declaring a method as well as an attribute | ||
moritz_: Ah...where? | |||
moritz_ | in EnumMap | ||
wait | 20:43 | ||
jnthn | We don't have a .iterator() method on EnumMap? | ||
jnthn was sure that was implemented | |||
moritz_ | we have | ||
[Coke] | if you just want the pir iterator, you have the pir:: call right there. | 20:44 | |
moritz_ | wait.. is method iterator() in Perl 6 land suppose to iterate, or to return an iterator? | ||
[Coke]: that's the method I want to translate to PIR | |||
diakopter | ok, so if I just say that all attributes are by default rw in perlesque, it'll all be kosher-ish | ||
jnthn | moritz_: To return one | 20:45 | |
moritz_ | and gather/take is a form to construct an iterator | ||
ok | |||
jnthn | Right. | ||
But we have to be careful here | |||
moritz_ | now it starts to make sense... more or less | ||
20:45
hercynium joined
|
|||
jnthn | Because Parrot iterators and Perl 6 iterators work quite differently. | 20:45 | |
(Perl 6 signals the end with EMPTY sentinal) | |||
[Coke] | so you do want a more literal translate of that from p6 to pir. | 20:46 | |
*lation | |||
pmurias | diakopter: is accessing an attribute much faster than calling a method on the CLR? | ||
PerlJam | diakopter: What, exactly, is perlesque? | ||
moritz_ gives up for today, and retires to bed | 20:47 | ||
diakopter | PerlJam: in this order: diakopter.blogspot.com/2010/05/jsme...smeta.html diakopter.blogspot.com/2010/05/what...whats.html diakopter.blogspot.com/2010/05/perl...tions.html | ||
PerlJam: in particular, the parts after the code on the first one. | 20:48 | ||
20:49
isBEKaml left
|
|||
PerlJam | diakopter: thanks. | 20:49 | |
diakopter | PerlJam: it's just that I've written out a summary here in irc like 20 times, so now I'm pointing folks to the blog posts. :) | 20:51 | |
PerlJam | diakopter: that's great. I know you've talked about it before, but I've only paid about 1/4 attention in the past :) | 20:52 | |
20:53
pmurias left,
supernovus joined,
pmurias joined
|
|||
supernovus | What is the "Integer" class? Is it bleedthrough from Parrot? | 20:55 | |
moritz_ | yes | 20:56 | |
jnthn | Yes | ||
supernovus | interesting | ||
rakudo: use MONKEY_TYPING; augment class Int { method hi { say "hi" } }; 1.hi | |||
p6eval | rakudo e6863e: OUTPUT«Method 'hi' not found for invocant of class 'Integer'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
jnthn | Ah, *that* issue. | ||
(methods in an augmented class don't get shoved over to the mapped Parrot type) | 20:57 | ||
diakopter is notably not at GoogleIO10 | 20:59 | ||
pmurias | diakopter: see failing test | 21:02 | |
dalek | meta: r281 | pawelmurias++ | trunk/Sprixel/t/self.t: added failing test for self |
21:03 | |
bkeeler still can never remember to put the comma after the block in map :( | |||
diakopter | pmurias: actually that's a parsing issue | 21:05 | |
for some reason a semicolon is required between the methods | |||
and after the class | |||
PerlJam | bkeeler: use the OOPy form and no comma is required | ||
21:06
ejs left
|
|||
bkeeler | $foo.map { ...} ? | 21:06 | |
sahadev | hello, #perl6 | ||
PerlJam | bkeeler: $foo.map : { ... } | ||
er, s/ :/:/ | |||
sahadev | can i bother you to take a look at gist.github.com/408099 ? | 21:07 | |
i tried to change src/core/metaops.pm in order to fix a couple of tests in t/spec/S03-metaops/hyper.t | |||
pmurias | diakopter: does that fix the error? | ||
sahadev | but I broke a couple of tests that were originally passing. | 21:08 | |
i am not sure if what i did is the right fix. | |||
diakopter | pmurias: I don't know; I assume so. | ||
looking | |||
pmurias: oh | 21:11 | ||
it's b/c the bar method has to be declared before it's used | |||
pmurias | diakopter: still doesn't fix that | 21:12 | |
diakopter | hrm | 21:13 | |
supernovus | Well, hmm, now I've got another interesting bug... if I have some libraries precompiled to .pir I get a syntax error when trying to run/compile another. There is no syntax error otherwise. | 21:14 | |
21:15
mikehh_ joined
|
|||
supernovus | Hmm, Unable to parse blockoid, couldn't find final '}' at line 19 | 21:16 | |
21:16
mikehh left
21:17
mikehh_ is now known as mikehh
|
|||
diakopter | pmurias: for extreme debugging, set debug to true in Grammar/PatternRef.cs :) and rebuild | 21:17 | |
dalek | meta: r282 | pawelmurias++ | trunk/Sprixel/t/self.t: update the test to take account perlesque's limitations |
||
21:19
masak joined
21:20
wknight8111 joined
|
|||
masak | hey #perl6. :) | 21:20 | |
I'm trying to grok how lexical scopes work. I've been doing thing for a few weeks now, but I thought I'd ask some pointed questions tonight, and maybe reach enlightenment. | 21:21 | ||
jnthn | лолетомезак! | ||
masak | :) | ||
that's not a з in my name... | |||
and it's more of an э than an е. | 21:22 | ||
21:22
quietfanatic joined
|
|||
jnthn | How do you like to translit it? | 21:22 | |
мэсак? | |||
masak | da. | ||
jnthn: maybe you can be my guide through the lexical scopes jungle? | |||
jnthn | Maybe... ;-) | 21:23 | |
masak | I believe my questions at least partly touch them there protolexpads. | ||
jnthn | Ah yes. | ||
Those things we so need but so don't have in Rakudo. | |||
masak | nod. | 21:24 | |
so, here's where I'm a bit fuzzy right now. | |||
from a discussion earlier this month with TimToady, I gathered that a loop block scope is in some sense 'the same' through each iteration. | |||
maybe it gets reset between iterations, but it's definitely the same something each time around. | 21:25 | ||
on the other hand, in a fibonacci-like function, it cannot be the same, because then fibonacci really wouldn't work. | |||
so my question is: when do I know when different dynamic scopes map to 'the same' static block, and when they don't? | 21:26 | ||
jnthn | I see it as more of a class vs object analogy. | ||
masak | ok. | ||
jnthn | That is, there's a bunch of stuff that's the same, but you get an "instance" per call frame. | ||
Apart from in a sense it's more of a clone. | |||
masak | ok, so a new call frame gives you new lexical scopes. | 21:27 | |
jnthn | I guess you could see every object instance as being "like a clone" of the proto-object though I guess. | ||
pmurias | diakopter: look at pugs.blogs.com/pugs/2007/10/a-graphical-tra.html | ||
masak | aye. | ||
jnthn | masak: It gives you a new instance of the storage of the things for that particular "occurence" of the scope, essentially. | ||
masak | yeah, but a loop iteration is an "occurrence" of a scope, too. | 21:28 | |
jnthn | Right. | ||
Since | |||
my @x; loop (my $i = 0; $i < 10; $i++) { push @x, { $^n + $i } } | |||
Needs to do the Right Thing. | |||
masak | C-style loops are never the Right Thing. :P | 21:29 | |
sorry, I see what you mean. :) | |||
diakopter | pmurias: ok..? | ||
jnthn | This happens because the closure inside gets cloned at the point you take the closure. It then also has pointers back down the chain to the outer call frame, so that this does not get garbage collected, like it would if we'd taken no closure. | 21:30 | |
And that's how stuff ends up referring to the right lexicals in a closure situation. Because they're pointing back to "historical" instances of the scope. | |||
masak | TimToady says the closure gets cloned at the entry of the surrounding block. but I guess that amounts to the same in this case. | ||
BrowserUk | Is rakudo CPS? | ||
jnthn | It's all in a days time travel. | ||
21:30
elmex left
|
|||
jnthn | BrowserUk: Parrot is CPS, and Rakudo is build atop of Parrot, so yes. :-) | 21:31 | |
masak: Well, I'm not sure how distinguishable those would be at runtime anyway. | |||
masak | jnthn: ok, so there *has* to be 10 instances of the outer scope here, just for the different values of $i to have somewhere to reside. | ||
jnthn: right. | |||
jnthn | Right. | ||
masak | this helped a lot. thanks. | ||
jnthn | Phew, today I was a good guide. :-) | 21:32 | |
.oO( though as a guy, I feel I shoulda been a scout... ) |
|||
masak | so, in essence, both recursion and iteration needs to clone their lexical scopes. | ||
jnthn | Well, in Parrot, every time you create an invocation record, you get a fresh LexPad along with it. | ||
masak | so that closures taken inside them will have something to point into. | ||
jnthn | (Context in Parrot terminology) | ||
masak | what's the main difference between a sub and a lexpad? | 21:33 | |
jnthn | has-a | ||
masak | nodnod | ||
jnthn | Well, not even that | ||
masak | but that's just a design thing. | ||
pmurias | diakopter: any ideas how to enable something like that for perlesque's grammar? | ||
jnthn | I mean | ||
masak | why can't a sub just *be* its lexpad? | ||
BrowserUk | rakudo: sub x; sub x($I) { --$i and x( $i ) }; x( 10 ); | ||
jnthn | In Parrot you have a sub which is static | ||
p6eval | rakudo e6863e: OUTPUT«Symbol '$i' not predeclared in xcurrent instr.: 'perl6;PCT;HLLCompiler;panic' pc 152 (compilers/pct/src/PCT/HLLCompiler.pir:108)» | ||
jnthn | And a LexInfo which is the static bit of the lexpad. | 21:34 | |
BrowserUk | rakudo: sub x; sub x(my $I) { --$i and x( $i ) }; x( 10 ); | ||
p6eval | rakudo e6863e: OUTPUT«Invalid typename in parameter declaration at line 11, near " $I) { --$"current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)» | ||
21:34
justatheory left
|
|||
jnthn | And then when you invoke the sub, you get a Context which references both of those and has in it a LexPad | 21:34 | |
Those are the runtime parts. | |||
masak | BrowserUk: $i, not $I | ||
jnthn | A Sub (at the Perl 6 level) is quite a bit more | 21:35 | |
It has a Signature, a do (a reference to the low-levely thingy that is the code we run), etc. | |||
masak | jnthn: the LexInfo says which variables are in the lexpad, yes? I sorta discovered the need for that when doing lexpads for Yapsi :) | 21:36 | |
jnthn | masak: Right. | ||
masak: In theory, the LexInfo knows all the staticly knowable things. | |||
masak | jnthn: well, an ordinary block also has a Signature, doesn't it? | ||
jnthn | And the LexPad is just a storage area. | ||
masak: Sure | |||
masak | jnthn: uh, I guess that's my question. what's the data model difference between a sub and a block? | ||
jnthn | a Sub isa Block at the class hierarchy level | 21:37 | |
Additionally, a Sub is mutable. | |||
(in general, a Routine is mutable) | |||
You can call .wrap on a Routine. | |||
masak | ah, right. | 21:38 | |
jnthn | You can ne do that on a Block. | ||
masak | ne. | ||
hm, do the Sub and Block things participate in exception catching? | 21:39 | ||
or is that purely up to runtime parts of Parrot? | |||
jnthn | I guess that's mostly an implementation detail. | ||
masak | yeah. just thinking about how much to put subs and (other kinds of) blocks in different stacks. | 21:40 | |
jnthn | Probably it's fair to say that a block is probably in a has-a relationship. | ||
(has-a relationshp with exception handlers, I mean) | |||
That's what it is in Parrot, afaik. | |||
masak | aye. | ||
jnthn | And would seem to me to be a sane model. | 21:41 | |
masak | sounds reasonable. | ||
21:41
elmex joined
|
|||
masak | elmex: hallo! | 21:41 | |
BrowserUk | rakudo: sub x; sub x(my $i) { --$i and x( $i ) }; x( 10 ); | ||
p6eval | rakudo e6863e: OUTPUT«Invalid typename in parameter declaration at line 11, near " $i) { --$"current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)» | ||
masak | jnthn: again, thanks. I'm out of questions. | ||
rakudo: sub x; sub x($i) { --$i and x( $i ) }; x( 10 ) | 21:42 | ||
p6eval | rakudo e6863e: OUTPUT«Symbol '$ss_SS_S_S__S_S_s' not predeclared in <anonymous>current instr.: 'perl6;PCT;HLLCompiler;panic' pc 152 (compilers/pct/src/PCT/HLLCompiler.pir:108)» | ||
masak | whoa. | ||
std: sub x; sub x() {} | |||
p6eval | std 30732: OUTPUT«===SORRY!===Malformed block at /tmp/XzRKUWU2So line 1:------> sub x⏏; sub x() {} expecting any of: new name to be defined routine_def traitParse failedFAILED 00:01 113m» | ||
masak | rakudo: sub x($i) { --$i and x( $i ) }; x( 10 ) | ||
p6eval | rakudo e6863e: OUTPUT«Cannot assign to readonly valuecurrent instr.: '&die' pc 18058 (src/builtins/Junction.pir:381)» | ||
masak | oh, indeed. | 21:43 | |
21:43
ruoso left
|
|||
masak | rakudo: sub x($i is copy) { --$i and x( $i ) }; x( 10 ) | 21:43 | |
p6eval | rakudo e6863e: ( no output ) | ||
masak | rakudo: sub x($i is copy) { say $i; --$i and x( $i ) }; x( 10 ) | ||
p6eval | rakudo e6863e: OUTPUT«10987654321» | ||
jnthn | masak: Glad it helped. :-) | ||
masak | BrowserUk: there you go. there were some Perl 5 assumptions in there. :) | ||
cognominal | jnthn, I managed to fill the void you left by "deserting" fpw2010 : journeesperl.fr/fpw2010/user/138 Well I wrote the abstracts, now I need to write the talks. | 21:44 | |
BrowserUk | masak: Bound to be I'm afraid. Thanks | ||
jnthn | Perl 6: Whatever, la classe joker | 21:45 | |
BrowserUk | moritz did say it was okay to crash rakudo? | ||
jnthn | Talk title win :-) | ||
cognominal | jnthn, but you will get due credit for you signature implementation among other things | ||
jnthn | cognominal: Sorry I can't make it. One day, I'll master the art of being in two places at once. :-) | 21:46 | |
masak | BrowserUk: there's no 'sub x' to predeclare subs any more. (and no need.) if you modify a parameter, you have to 'is rw' to modify the original or 'is copy' to modify a copy. | ||
BrowserUk | rakudo: sub x($i is copy) { say $i; --$i and x( $i ) }; x( 1000 ) | ||
p6eval | rakudo e6863e: | ||
..OUTPUT«1000999998997996995994993992991990989988987986985984983982981980979978977976975974973972971970969968967966965964963962961960959958957956955954953952951950949948947946945944943942941940939938937936935934933932931 | |||
jnthn | cognominal: Looks like some good talks you'll be giving. :-) | ||
cognominal++ | 21:47 | ||
BrowserUk | rakudo: sub x($i is rw ) { --$i and x( $i ) }; x( 1000 ) | ||
p6eval | rakudo e6863e: OUTPUT«Cannot assign to readonly valuecurrent instr.: '&die' pc 18058 (src/builtins/Junction.pir:381)» | ||
cognominal | well, your talks are my inspiration | ||
BrowserUk | rakudo: sub x($i is copy ) { --$i and x( $i ) }; x( 1000 ) | ||
jnthn | :-) | ||
p6eval | rakudo e6863e: OUTPUT«maximum recursion depth exceededcurrent instr.: 'parrot;P6object;HOW' pc 54 (runtime/parrot/library/P6object.pir:97)» | ||
cognominal | sometimes the master is way younger than his pupil | ||
masak | BrowserUk: 'is rw' there is trying to modify the constant 1000. | ||
jnthn | cognominal: I have a white beard to compensate for my youth. | 21:48 | |
;-) | |||
cognominal | :) | ||
masak | BrowserUk: since the param/argument connection has binding semantics, not assignment semantics. | ||
BrowserUk | masak: yes of course. | ||
cognominal | you need to also get a bigger belly to be a unix wizard. | ||
jnthn | cognominal: I was doing well at that, but then I moved to Sweden and beer is more expensive. | 21:49 | |
21:50
hercynium left
|
|||
cognominal | for english people , beer is expensive everywhere comparatively. We got complaint from english people at yapc in Paris. | 21:51 | |
masak | There's More Than One Way To Get A Unix Wizard Belly. | ||
jnthn | cognominal: Nah. I found cheaper places than England. :_) | ||
cognominal | ...like we could do something about it. | ||
jnthn | masak: Eating lots of köttbullar? | 21:52 | |
masak | jnthn: for example. | ||
21:53
iblechbot left
|
|||
bkeeler | What does a pint go for in England these days? | 21:54 | |
masak | jnthn: unlike LexInfo, a protolexpad can store values, can't it? | ||
cognominal | jonathan has attended or will attend 26 act conferences... | 21:55 | |
masak | jnthn++ | ||
21:55
sahadev left
|
|||
cognominal | I should ask the act admin to run a sql request but I think he is a clear winner | 21:55 | |
jnthn | cognominal: 26?! | 21:56 | |
:-O | |||
bkeeler: Depends where in the UK. 2.50 GPB maybe... | |||
masak: Yeah, well notably containers | |||
masak: Since traits should be applied to 'em once. | 21:57 | ||
cognominal | and that's only for the conferences managed by act. | ||
jnthn | cognominal: Aye, though most of Europe is managed by act these days. | ||
bkeeler | Interesting | ||
jnthn | Er, most European Perl conferences. :-) | ||
masak | jnthn: containers are another thing I don't yet fully grok... :/ | ||
[Coke] reviews and sees jnthn calling parrot "sane". WOOT. | |||
masak | [Coke]: a minor part of Parrot. but still. :P | 21:58 | |
jnthn | [Coke]: Implementing an insane language on a sane VM is such a drag. | ||
;-) | |||
bkeeler | jnthn: So it's about doubled since I left in '92. In the states it hasn't increased as much I think | ||
21:58
kel_ left
|
|||
jnthn | masak: If you work them out, please let me know. :-) | 21:58 | |
cognominal | World domination starts by Europe and usually fails at that stage due to the russian or the bloody english | ||
masak | :) | ||
21:59
Guest43078 left
|
|||
jnthn | bkeeler: It does depend muchly on where you are. One of the big chain pubs (Weatherspoons) in my home town up north still serves some ales for 1.60 or 1.70 or so | 21:59 | |
bkeeler | Not bad | ||
jnthn | Yeah, it works out better at that place to have taste^W^Wlike ale. | 22:00 | |
bkeeler | I think I went to a Weatherspoons when I was last over. Seems like the Starbucks of pubs | ||
jnthn | Yeah | ||
Apart from with a reputation for good prices | |||
Whereas Starbucks always struck me as expensive. | |||
But in terms of the "big chain", yes, certainly. | 22:01 | ||
bkeeler | I don't think much of Starbucks myself | ||
BrowserUk | rakudo: sub x($i is rw ) { --$i and x( $i ) }; my $n = 1000; x( $n ) | ||
p6eval | rakudo e6863e: OUTPUT«maximum recursion depth exceededcurrent instr.: 'parrot;P6object;HOW' pc 54 (runtime/parrot/library/P6object.pir:97)» | ||
22:01
madalu left
|
|||
BrowserUk | rakudo: sub x($i is rw ) { --$i and x( $i ) }; my $n = 100; x( $n ) | 22:01 | |
p6eval | rakudo e6863e: ( no output ) | ||
jnthn | Weatherspoons isn't *bad*, but it's hardly a substitute for a proper cosy traditional pub. | ||
bkeeler | But then I have my own Espresso machine and buy from one of the local Portland roasters ;) | ||
BrowserUk | rakudo: sub x($i is rw ) { --$i and x( $i ) }; my $n = 500; x( $n ) | ||
p6eval | rakudo e6863e: ( no output ) | ||
jnthn | ooh, nice. | ||
cognominal | I don't think much of coffee not served in real cup. | 22:02 | |
bkeeler | Yeah, paper cups don't do it for me either | 22:03 | |
22:03
quietfanatic left,
Maddingu1 joined
|
|||
jnthn only tends to drink coffee at home on a morning, or when he makes morning visits to clients. | 22:03 | ||
Swedish companies often seem to invest in a decent coffee machine. | |||
cognominal | or dishwater called cofee served in a bif bowl in american restaurant. | 22:04 | |
22:04
arnsholt_ joined
|
|||
jnthn | One of the nice things about working here. :-) | 22:04 | |
cognominal | on the other hand, it is often done as a welcome gift so I appreciate the intention. | ||
BrowserUk | rakudo: sub x($i is rw ) { --$i and x( $i ) }; my $n = 988; x( $n ) | ||
p6eval | rakudo e6863e: ( no output ) | ||
BrowserUk | rakudo: sub x($i is rw ) { --$i and x( $i ) }; my $n = 989; x( $n ) | ||
p6eval | rakudo e6863e: OUTPUT«maximum recursion depth exceededcurrent instr.: 'parrot;P6object;HOW' pc 54 (runtime/parrot/library/P6object.pir:97)» | ||
jnthn | BrowserUk: Parrot (for debugging purposes) currently has an (artifical) recursion limit. | 22:05 | |
Hmm. Perhaps we should lift that for Rakudo *. | |||
BrowserUk | That's not a hard wired limit is it? Stack overflow? heap exhaustion? | ||
cognominal | but I will accept books on an iPad so I am not a passeist for everything | ||
BrowserUk | Jnthn: I hit enter before looking up. | 22:06 | |
masak | rakudo: say (grammar { regex TOP { foo } }).parse("foo") | ||
p6eval | rakudo e6863e: OUTPUT«foo» | ||
jnthn | :-) | ||
masak | \o/ | ||
BrowserUk | But 989 is a weird number for a preset limit? | ||
[Coke] | you can override the default setting parrot has for call depth. | ||
[Coke] finds the code.... | |||
22:07
gabiruh_ joined,
huf_ joined
|
|||
masak | BrowserUk: it's conceivable that 12 levels were used up by Rakudo internals... | 22:07 | |
snarkyboojum | it's actually 1000 in the parrot source from memory | ||
22:07
Psyche^ joined
|
|||
bkeeler | There are probably a further 11 parrot subs above | 22:07 | |
masak | snarkyboojum! | ||
snarkyboojum | masak o/ | ||
BrowserUk | mask: good thought. | ||
[Coke] | github.com/partcl/partcl/blob/maste...b.pir#L326 | ||
22:08
frooh left,
arnsholt left,
Arroz_ left,
colomon left,
Patterner left,
Maddingue left,
huf left,
gabiruh left,
oskie left,
sunnavy left,
krakan left,
frettled left,
Psyche^ is now known as Patterner
|
|||
[Coke] | jnthn: I can apply that to rakudo if you like. | 22:08 | |
bkeeler | Actually, ever sub you write generates two parrot subs I think, so the limit might be 2000 parrot subs? | ||
22:09
colomon joined
|
|||
BrowserUk | [Coke] link says 10,000 -- or was that a proposal? | 22:09 | |
[Coke] | that's what partcl does. | ||
(to override parrot's builtin limit.) | |||
22:09
patrickas joined
22:10
Arroz_ joined
|
|||
patrickas | hello | 22:10 | |
BrowserUk has no idea what "partcl" is...but I'll take your word for it :) | |||
jnthn | [Coke]: Yeah, a lot of people hit it. And it's easy to change again when we need to debug stuff that fails that way and want it to bottom out faster. | 22:11 | |
BrowserUk | I don;t suppose there's anyway to get the memory used figure for a non-faulting run? | ||
snarkyboojum | bkeeler: #define RECURSION_LIMIT 1000 in include/parrot/sub.h | ||
BrowserUk .oO( Download, build, install, run; check memory) | 22:13 | ||
22:15
peter_ joined,
peter_ is now known as Guest91312
|
|||
BrowserUk | Is setup-parrot-2.4.0-rakudo-29.exe all I need for win32? | 22:18 | |
masak | dunno. depends on what you need, I guess. | 22:20 | |
diakopter | BrowserUk: I think that's just the rakudo install, it mentions parrot-2.4 in the filename to indicate its dependency; you also need parrot | ||
masak | diakopter++ | 22:21 | |
jnthn | Yes, what diakopter++ said. | ||
BrowserUk | Oh, okay. | 22:22 | |
But it says "The repository of the binaries for Windows of Parrot (Perl6 VM). The Parrot speaks your language but lives on www.parrot.org/" above the dwnload link? | 22:23 | ||
diakopter | yeah | ||
dog and mirrors | |||
BrowserUk confused. No mention of "rakudo"...no hint that this isn't Parrot. | 22:25 | ||
diakopter | oh | ||
well, install it :) and if it install parrot along with rakudo, great! | |||
but if not, also download/install the parrot installer .exe | 22:26 | ||
22:26
Guest91312 left
|
|||
masak | rakudo: my &marine = *; marine(marine, marine(marine)); say 'done' | 22:26 | |
p6eval | rakudo e6863e: OUTPUT«done» | ||
diakopter | heh heh heh | ||
masak | diakopter++ # filling my day with examples like this | 22:27 | |
"it's not just weird, it's... diakopter-weird!" | |||
diakopter thought of a new infix logical operator "whether" | 22:28 | ||
masak | spelled '?!' | ||
then `if * ?! * { ... }` would read 'if Whatever whether Whatever, yadda yadda yadda' :P | 22:29 | ||
diakopter | std: say 1 if 2 if 3 { say 3 } | 22:30 | |
cognominal | jnthn, maddingue who has root access to the act service run a sql script to see the top attendants : nopaste.snit.ch/20606 | ||
p6eval | std 30732: OUTPUT«ok 00:01 111m» | ||
masak | o.O | 22:31 | |
cognominal | so I miscounted, that 27 for you | ||
jnthn | :-) | ||
masak runs to viv to check that | |||
diakopter | rakudo: say 1 if 2 if 3 { say 3 } | ||
p6eval | rakudo e6863e: OUTPUT«13» | ||
jnthn | o_O | 22:33 | |
Well, at least we're consistent. | |||
(with STD) | |||
:-) | |||
diakopter | o!O | ||
rakudo: say 1 if 0 if 1 { say 3 } | 22:34 | ||
p6eval | rakudo e6863e: OUTPUT«3» | ||
Maddingu1 | same thing with the names (because we don't always know who is behind a login): nopaste.snit.ch/20607 | ||
22:35
Maddingu1 is now known as Maddingue
|
|||
masak | hey, int32 is a valid Perl 6 type name! | 22:35 | |
diakopter | yar | ||
jnthn | Aww. jnthn ain't :( | ||
diakopter | std: class jnthn is YOYOYOYO {} | 22:37 | |
p6eval | std 30732: OUTPUT«ok 00:01 110m» | ||
masak | so you can't write 'my jnthn $wrthngtn;' :/ | 22:39 | |
diakopter | rakudo: say 1 if 0 if 1 { say 3 } # masak | ||
p6eval | rakudo e6863e: OUTPUT«3» | ||
masak | diakopter: I got yakshaved asking viv. surely that's wrong, no? | 22:40 | |
masak submits rakudobug | 22:41 | ||
bkeeler | Anyone else getting failures in t/spec/S05-mass/properties-derived.t? | 22:45 | |
22:46
justatheory joined
|
|||
masak | bkeeler: haven't checked, but that sounds familiar. those failures might be intermittent and of unknown origin. | 22:46 | |
BrowserUk | Hm. I followed the windows link from rakudo.org/how-to-get-rakudo to sourceforge.net/projects/parrotwin32/files/. I've download & installed the big green button at the top...found nothing matching *rakudo* ; So I downloaded & installed setup-parrot-2.4.0-rakudo-29.exe into the same directory. *Still* nothing matching *rakudo* in the entire subtree. How do I get this beast? | 22:47 | |
bkeeler | masak: thanks. I'll ignore em them | ||
masak | BrowserUk: I usually run Rakudo with 'perl6', not 'rakudo'. | ||
'Rakudo' is the name of the implementation; 'perl6' is the name of the executable. | 22:48 | ||
BrowserUk | Yup. Perl6.exe is there after the second download. | 22:50 | |
But, it it crashes immediatly with missing dll libgcc_s_sjlj-1.dll :( | 22:51 | ||
snarkyboojum | "the big green button at the top" is a windows help file (chm)? | 22:52 | |
BrowserUk: from my reading of the instructions you'll need "setup-parrot-2.4.0-rakudo-29.exe" and "setup-parrot-2.4.0.exe" | 22:53 | ||
BrowserUk: one is under "parrot-rakudo addon" and the other under "parrotwin32 setup" | |||
BrowserUk | Snarky...: Yep. That's the two I've pulled and installed | 22:54 | |
22:54
masak left
|
|||
snarkyboojum | ah sweet | 22:54 | |
22:54
masak joined
|
|||
snarkyboojum | you didn't mention setup-parrot-2.4.0.exe, so I was just checking | 22:54 | |
BrowserUk | For me, the "big green button" contains the text "Download now! setup-parrot-2.4.0.exe (8.2 MB)" and links to 'sourceforge.net/projects/parrotwin3...download'. I see no .chm file? | 22:57 | |
masak | std: sub circumfix:<☃ ☄> ($x) {...}; say ☃ 42 ☄; # TimToady++ -- enabling 'use Snowman::Comet;' | 22:58 | |
p6eval | std 30732: OUTPUT«ok 00:01 115m» | ||
BrowserUk | And that missing dll doesn't appear to be a part of the MinGW setup either. | ||
22:59
Psyche^ joined
|
|||
snarkyboojum | BrowserUk: weird - we see different "big green buttons" then :) | 22:59 | |
jnthn | masak: Aww! Really want that in Rakudo now! :-) | ||
masak | alpha: say "foo" ~~ m☃foo☄ | 23:00 | |
p6eval | alpha 30e0ed: OUTPUT«foo» | ||
jnthn | I'm not going to re-introduce a bug. :P | 23:01 | |
BrowserUk | Probably detects different systems from browser sig. If you aren't on Win, then it probably doesn't offer you the .exe download (though a .chm probably wouldn't be much use to you either:) | ||
jnthn: What do you use to build Parrot/perl6? | 23:02 | ||
23:02
Patterner left,
Psyche^ is now known as Patterner,
masak left
23:03
masak joined
|
|||
jnthn | BrowserUk: Microsoft VC++ compiler and toolchain, plus ActiveState Perl. | 23:03 | |
23:03
masak left
|
|||
BrowserUk | the 2005 or 2008 SDK? | 23:03 | |
jnthn | Think I have 2005 on my desktop and 2008 on my laptop. | 23:04 | |
23:04
gbacon left
|
|||
BrowserUk | Okay. I guess I'll try the sources. (But if anyone knows who controls that source forge project, they should be told that it doesn't work--or the Rakudo.org page should be clearer about what is needed.) | 23:06 | |
23:09
quietfanatic joined
|
|||
diakopter | ,,,,,,,,, | 23:12 | |
BrowserUk | Hm Seems the missing dll is a MinGW problem--bugs.debian.org/cgi-bin/bugreport.c...=539033... So, I guess the sourceforge project uses an automated build and no one actually checks that the results run. (That can't be good for the image of P6) | 23:16 | |
23:16
pmurias left
23:17
patrickas left
23:18
BrowserUk left
23:23
Maddingue left,
Maddingue joined
23:24
justatheory left
23:31
cdarroch left
23:46
Limbic_Region joined
|
|||
Limbic_Region | salutations all | 23:46 | |
23:47
ash___ left
|
|||
quietfanatic | rakudo: @*INC = @*INC, 'x' | 23:48 | |
p6eval | rakudo e6863e: OUTPUT«Cannot assign to readonly valuecurrent instr.: '&die' pc 18058 (src/builtins/Junction.pir:381)» | ||
quietfanatic | That's not supposed to be readonly, is it? | ||
sorear | (on setting enums) let's just implement protolexpads and have done with it | 23:49 | |
ah, I see already mentioned | 23:50 | ||
23:50
rv2733 joined
|
|||
quietfanatic | rakudo: @*INC.push: 'x' | 23:52 | |
p6eval | rakudo e6863e: ( no output ) | ||
quietfanatic | rakudo: @*INC.push: 'x'; say @*INC | 23:53 | |
p6eval | rakudo e6863e: OUTPUT«./home/p6eval/.perl6/lib/home/p6eval//p2/lib/parrot/2.4.0-devel/languages/perl6/liblibx» | ||
quietfanatic | but that works. I guess it's infix:<=>'s bug | ||
sorear | no, it's not | ||
.push is being buggy there | 23:54 | ||
@*INC is readonly | |||
23:54
rv2733 left
|
|||
quietfanatic | You mean @*INC should be readonly? | 23:54 | |
sorear | no, I mean it is readonly | ||
quietfanatic | How am I to manipulate my include dirs then? | ||
sorear | the fact that you can modify it with .push is an independant bug | ||
my @*INC ::= @*INC ~ "foo" or something like that | 23:55 | ||
it's a contextual | |||
you shadow it, you don't change it | |||
quietfanatic | That makes sense now that you mention it, but it seems a bit unintuitive. | ||
jnthn | Note that ::= is, iirc, now readonly binding, not compile time binding. | 23:56 | |
quietfanatic | yeah | ||
'::= binding not yet implemented at ...' | 23:57 | ||
:= doesn't work either. | |||
So, I just can't do it right now? | |||
snarkyboojum | you could use push (temporarily) :) | 23:58 | |
quietfanatic | I suppose that's what I'll do. |