»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! | Rakudo Star Released! Set by diakopter on 6 September 2010. |
|||
diakopter | oh the gaieté | 00:00 | |
TimToady | If this is Friday it mustn't be Paris. | ||
masak read "gaieté" as "happysummer" | |||
TimToady reads it as 賀意得手 | 00:05 | ||
sorear | 1/4, not bad | ||
TimToady | "congratulatory feeling strong point" | ||
rakudo: say 1/4 ~~ 0 ^..^ 1 | 00:06 | ||
p6eval | rakudo c548b8: OUTPUT«Bool::True» | ||
TimToady | rakudo: say 1/4 ~~ 0 ^1 | ||
p6eval | rakudo c548b8: OUTPUT«Bool::False» | ||
TimToady | ooh | ||
wait | |||
rakudo: say 1/4 ~~ ^1 | |||
p6eval | rakudo c548b8: OUTPUT«Bool::True» | ||
TimToady | nm | ||
00:06
TobiO|ref joined
|
|||
TimToady | decommuting & | 00:15 | |
masak | phenny: "賀意得手"? | ||
phenny | masak: "Congratulatory feeling forte" (ja to en, translate.google.com) | ||
tadzik | hmm, anyone with parrotgit having problems with running the REPL? | ||
Method 'stdhandle' not found for invocant of class 'ParrotInterpreter' | |||
lue | Hooray! I'm getting things working! | ||
00:23
ilogger2 joined,
ChanServ sets mode: +v ilogger2
|
|||
mindos1 | rakudo: say 20.rand.Int + 1; | 00:28 | |
p6eval | rakudo c548b8: OUTPUT«2» | ||
tadzik | rakudo: (1..20).pick.say | 00:29 | |
p6eval | rakudo c548b8: OUTPUT«9» | ||
masak | tadzik++ # beat me to it | ||
tadzik | :) | ||
speedkarma | |||
00:29
Trashlord joined
01:13
ilogger2 joined,
ChanServ sets mode: +v ilogger2
|
|||
diakopter | nice | 01:13 | |
dalek | odel: 382a1ea | masak++ | t/nqp/27-self.t: [t/nqp/27-self.t] added Needed to SKIP two tests, because we don't do 'for' loops yet. |
01:19 | |
01:25
ch3ck3r joined
|
|||
masak | nqp-rx: my $a := 42; say($a) | 01:28 | |
nqp: my $a := 42; say($a) | |||
p6eval | nqp: OUTPUT«42» | ||
masak | nqp: my $a := 42; my $b := $a; $a++; say($b) | ||
p6eval | nqp: OUTPUT«43» | ||
masak | ouch :/ | 01:29 | |
pmichaud_: please remove postfix:<++> from nqp. | |||
it doesn't belong there. | |||
sorear | nqp: 42++; say("Alive") | 01:34 | |
p6eval | nqp: OUTPUT«Alive» | ||
dalek | odel: 24884a9 | masak++ | t/nqp/39-pointy.t: [t/nqp/39-pointy.t] added - Replaced all postfix:<++> with ($x := $x + 1) - Needed to SKIP two tests because we don't do argument defaults yet. - Needed to SKIP three tests because we don't do 'for' loops yet. |
||
[Coke] | ... why remove features from NQP?? | 01:35 | |
jnthn | [Coke]: Because ++ without an assignment model makes no sense semantically. | ||
masak | not only does it make no sense, it's outright harmful. | 01:36 | |
jnthn | [Coke]: The way it's done in nqp-rx is a hack, and worse one that breaks if we actually build a constant table for constants rather than create a new PMC for each constant. | ||
Plus the example masak++ pointed out earlier. | |||
masak | [Coke]: imagine the subtle bugs caused by the spooky action-at-a-distance effect I showed above. | 01:37 | |
in a larger program, they might be difficult to spot. | |||
sorear | don't imagine, just ask a fortran programmer | ||
masak | right. | ||
01:57
flatwhatson_ joined
01:59
envi joined
|
|||
dalek | odel: 355ceac | masak++ | t/nqp/53-multi-method.t: [t/nqp/53-multi-method.t] added This one doesn't come from nqp-rx. It tests various aspects of proto and multi methods. |
02:01 | |
masak | zzz & | ||
dalek | odel: 784b227 | jonathan++ | dotnet/ (5 files): [dotnet] Implement slurpy array and hash parameters. |
02:04 | |
02:29
ch3ck3r left
02:37
molaf_ joined
02:57
takadonet joined
|
|||
takadonet | hey all | 02:57 | |
where in the spec does it describe perl 5 :'eval' ? | 02:58 | ||
jnthn: you alive good sir? | 03:00 | ||
03:01
risou joined
03:02
Guest61435 joined
|
|||
sorear | if jnthn is dead we're all screwed | 03:08 | |
TimToady wonders if masak++ done him in | 03:10 | ||
03:14
araujo joined
03:16
risou left
|
|||
takadonet | i got a good chuck of text-tabs+wrap working!! | 03:18 | |
github.com/Takadonet/Text-Tabs-Wrap/ | |||
I want to see if I can get the rest of the test passing by the end of the weekend! | |||
lue | ohai again o/ | 03:19 | |
takadonet | lue: hey | ||
colomon | \o/ | 03:24 | |
dalek | ecza: 2484b4a | sorear++ | / (8 files): Add a JSYNC dumper |
03:32 | |
03:44
PerlPilot joined
|
|||
lue | what's the secret organization of the directories for projects using ufo? | 03:48 | |
[or is ufo so good it can DWIM no matter what layout?] | 03:49 | ||
03:54
PerlJam joined
03:56
PerlPilot left
04:04
araujo left
04:11
takadonet left,
takadonet joined
|
|||
takadonet | stupid laptop | 04:11 | |
04:35
flatwhatson_ left
04:44
demond joined
04:51
demond left
05:05
seb_est_la joined
05:26
seb_est_la left
|
|||
takadonet | rakudo: 'long string here' !~~ m:c/^\s*$/; say $/.to; | 05:49 | |
p6eval | rakudo c548b8: OUTPUT«-3» | ||
takadonet | why is it -3? | ||
sorear | at some point pmichaud++ decided that non-matches should respond to .to with a negative number | 05:53 | |
I need to find out why at some point | |||
niecza doesn't have non-matches at all; failing matches return Any | |||
takadonet | hmm that going to confuse me i think | 05:55 | |
05:55
araujo joined,
araujo left,
araujo joined
06:40
takadonet left
07:26
toebu_ joined
07:30
kjeldahl joined
07:44
sidek joined
07:55
_kaare joined
08:09
sftp joined
08:15
mj41 joined
08:26
kanishka joined
|
|||
moritz_ | good morning | 08:29 | |
sorear | hi | 08:30 | |
08:35
toebu_ left
08:50
envi left
08:54
envi joined,
meppl joined
09:03
wamba joined
09:20
perigrin joined
09:24
mgrabovsky joined
09:26
mgrabovsky left
09:48
Woodi joined
09:57
mavrc joined
10:21
jlaire joined
10:23
kjeldahl left
10:29
masonkramer joined
|
|||
sorear | I want to tell Ben Goldberg "Working code or shut up." | 10:32 | |
I suppose this would be out of line. | |||
10:35
flatwhatson_ joined,
masak joined
|
|||
masak | o/ | 10:35 | |
moritz_ | \o | 10:36 | |
masak | lue: ufo is so good it can DWIM no matter what layout. | 10:37 | |
tadzik | |o | ||
10:37
ggoebel joined
|
|||
jnthn | sorear, TimToady: I'm glad to report that I'm alive and well. masak++ was kind enough to refrain from doing me in, even if I may deserve it for some pun or other... | 10:38 | |
masak | +1 | ||
jnthn | :p | 10:39 | |
masak | let's just say it would be very untactical of anyone at this juncture to do Rakudo core developers in. | 10:40 | |
10:41
icwiener joined
|
|||
jnthn | Awesome, that means I can keep punning without fear of punctual punishment. | 10:49 | |
masak | yes, you're safe. | 10:55 | |
as long as you keep producing runnable code. | |||
jnthn | :P | ||
Maybe to help us wake up properly we should design nqp.net's iterator model... | 10:56 | ||
masak | :) | ||
11:10
seb_est_la joined
|
|||
masak | seb_est_la: hello! :) | 11:10 | |
seb_est_la | good morning | 11:11 | |
masak | rakudo: say "al_tse_bes sgniteerg".flip | 11:12 | |
p6eval | rakudo c548b8: OUTPUT«greetings seb_est_la» | ||
masak | .u ц | 11:13 | |
phenny | U+0446 CYRILLIC SMALL LETTER TSE (ц) | ||
tadzik | do we have AUTOLOAD subs/methods in Perl 6? | 11:15 | |
masak | tadzik: yes. see CANDO in S10. | 11:17 | |
tadzik | Thanks. I thought about porting Git::Wrapper as someone suggested | 11:19 | |
masak | let us know how that goes. | 11:20 | |
tadzik | the Perl 5 code is actually very nice, and it's tempting to just rewrite it in Perl 6 | 11:21 | |
we only don't have those IPC::BLah stuff | |||
masak | pro tip: start small. get result early. build successively upwards. | 11:24 | |
tadzik | sure | 11:25 | |
11:34
xinming joined
11:57
MayDaniel joined
|
|||
masak | it's too quiet today. | 12:06 | |
so, should I just go ahead and remove S16? | |||
masak puts on an evil grin | |||
colomon | masak++ | 12:09 | |
12:10
nymacro joined
|
|||
masak | of course, it'd be better if, instead of removing it outright, we could put in two of three sentences about what we want instead. | 12:10 | |
colomon | masak: does pls now work? | 12:11 | |
masak | colomon: hm. well, I fixed the model, but I'll still need to patch the application. thanks for reminding me. | 12:12 | |
what's the prototypical project with a dependency or two? | |||
colomon .... | 12:13 | ||
masak | svg-plot looks fine. | ||
it depends on svg. | |||
masak tries it | 12:14 | ||
tadzik | neutro is fine. It has deps, and it has scripts | ||
I recently got an idea to create fakeexecutables out of bin/ scripts, instead of just copying them | |||
masak | no please no | 12:15 | |
tadzik | why not? | 12:16 | |
it's Parrot-dependant, but we're Parrot-dependant anyway atm | 12:18 | ||
masak | because it complicates things and makes them brittle without adding any particular benefit? | ||
anyway. it's your project. you've done good things with it so far. of course you should try fakecutables if you want. | 12:19 | ||
tadzik | I guess it boosts the startup speed a bit. I sure drawback is that it gets outdated and not-working after some upgrades | 12:20 | |
masak | hm, seems proof-of-concept has bitrotted after github's https transition. | 12:21 | |
fixing. | |||
tadzik | but that's ok, compiling scripts to PIR is broken anyway :) | ||
masak | it is. | 12:22 | |
I was going to blog about this; what struck my about the merlyn/pmichaud interview is how much PCT/Rakudo development in the past years have been a slow but steady escape from the clutches of PIR. | |||
12:24
MayDaniel left
|
|||
tadzik | nqp is the alternative here? It's basically sugar over PIR now (jnthn is making it target multiple backends, no?) and it's significantly slower... then again, 6model is a blessing :) | 12:24 | |
jnthn | tadzik: Once I make attribute lookups happen by index not name, that'll be an optimization unavailable to PIR code. | 12:25 | |
tadzik | that'll be a huge thing indeed | ||
masak | a lot of advances is programming languages could be dismissed as "basically sugar" over some older, more primitive thing. | ||
tadzik | python is using name lookup too, no? | 12:26 | |
jnthn | So at least there NQP will catch up / beat PIR on taht particular factor. | ||
In general, I suspect writing PIR to work with 6model will be not that much fun. | |||
I'm not designing it for that really. | |||
12:26
xiaomo joined
|
|||
masak | hm, proof-of-concept has bitrotted in that ecosystem no longer stores things as JSON. (I'm all for that development, by the way. simplifications like that are rare and should be treasured.) | 12:27 | |
tadzik | so Pir/Parrot is not going to be the main Rakudo backend anymore? | ||
jnthn | tadzik: Well, nqp and Rakudo will move away from using the default Parrot object model. | ||
tadzik: As to which backend people prefer once we have more than one of them, well, that's down to the userbase. :) | 12:28 | ||
I'll hack on what people are most wanting/using, I expect. With some mix-in of what's -Ofun. | |||
12:28
orafu joined
|
|||
jnthn | In general, NQP is going to become more Perl 6-y and less Parrot-y though, even atop of Parrot. | 12:28 | |
tadzik | mhm | 12:29 | |
jnthn | (I'm aware some Parrot folks may want to hang on to having something like it that's just Parrot sugar. That's fine. That's what forking is for.) | ||
masak .oO( Not Quite Parrot ) | 12:33 | ||
tadzik | :) | ||
jnthn: what's wrong with PIR and Parrot? | |||
masak | PIR was never meant to be an implementation language. | 12:34 | |
it's something of an historical accident that there's so much manually crafter PIR code around. | |||
s/crafter/crafted/ | |||
tadzik | so everyone's waiting for Lorito? | 12:35 | |
12:35
seb_est_la left
|
|||
jnthn | tadzik: Part of the issue is the object model in Parrot is purely aimed at dynamic languages and doesn't really give me a great deal of meta-programming possibilities. | 12:35 | |
tadzik | I see | 12:36 | |
jnthn | It - and PIR - thinks about everything in terms of strings. When actually we want to try and resolve things to indexed lookups in some places, for example. | ||
masak | meta-programming? | ||
jnthn | masak: e.g. meta-model bits | ||
masak | in other words, MOP. | 12:37 | |
jnthn | masak: e.g. a class has a meta-object that's just a plain old object | ||
Right | |||
masak | I'm not sure I've heard anyone within the Parrot project ever describing a MOP as a priority for Parrot. | ||
it definitely wouldn't have been even on the radar before Moose. | 12:38 | ||
jnthn | To be fair, it takes a while to understand _why_ it matters. | ||
masak | funny how these things work out. | ||
jnthn | And it was during the Pugs project that the real importance of it really started to be understood. | ||
masak | right. | ||
all steps on the way are built on feedback from prior steps. | |||
12:39
hardik joined
|
|||
hardik | hello | 12:39 | |
masak | hardik: hi! | 12:40 | |
rakudo: say "greetings, hardik".uc | |||
p6eval | rakudo c548b8: OUTPUT«GREETINGS, HARDIK» | ||
jnthn | THAT WAS LOUD :p | ||
hardik | I am perl developer and I would like to contruibute in Perl6 | ||
jnthn | \o/ | ||
tadzik | great! | ||
hardik | but i don't know how to start | ||
masak | hardik: that's a very common situation. what do you like to do? | 12:41 | |
hardik | Basically I am programmer so i would like to contribute in programming | ||
masak | we have a lot of application code that needs writing. | 12:42 | |
12:42
mila_ joined
|
|||
masak | basically, every time someone writes a mid-sized program in Rakudo, things improve in various ways. | 12:42 | |
tadzik | hardik: do you happen to know Perl 6? | ||
masak | so you could contribute simply by finding/creating a project and writing Perl 6 code. | 12:43 | |
hardik | No I am fresh to perl 6 | ||
I know perl 5 very well | |||
tadzik | we have a module database which is quite poor compared to CPAN, and every module added is a good contibution to Perl 6, and potentially reveals bugs/LTA things | ||
masak | hardik: have you taken a look at the synopses? a good start is usually to read a small bit of them, and then do some small bit of coding based on that. | 12:44 | |
masak exemplifies with a .wrap example | |||
hardik | OK | ||
tadzik | hardik: you'd probably like the Perl 5 to 6 series of articles | ||
masak | rakudo: sub foo { say "is quite" }; &foo.wrap: { say "this"; callsame; say "cool" }; foo | 12:45 | |
p6eval | rakudo c548b8: OUTPUT«thisis quitecool» | ||
hardik | OK I understand | ||
masak | hardik: and if you experiment with p6eval like that, you'll get excellent feedback from the people here on the channel. | 12:46 | |
as far as I know, that's the quickest way to learn and get involved. | |||
ymmv | |||
hardik | Thats perfect | ||
Let me start will that | |||
masak | above all, have fun :) we encourage play and playfulness. | 12:47 | |
hardik | :) | ||
tadzik | hardik: perlgeek.de/en/article/5-to-6 was useful to me | 12:49 | |
masak | rakudo: sub ha {}; for ^10 { &foo.wrap: ({ print "ha"; nextsame }, { print "HA"; nextsame }, { print "ho-hoo"; nextsame }, { print "haa"; nextsame }).pick }; ha | ||
p6eval | rakudo c548b8: OUTPUT«Could not find sub &foo in <anon> at line 22:/tmp/BgIfIPsB2j in main program body at line 1» | ||
masak | rakudo: sub ha {}; for ^10 { &ha.wrap: ({ print "ha"; nextsame }, { print "HA"; nextsame }, { print "ho-hoo"; nextsame }, { print "haa"; nextsame }).pick }; ha | ||
p6eval | rakudo c548b8: OUTPUT«Could not find sub &print in <anon> at line 22:/tmp/E9MXUHkHCw in main program body at line 1» | ||
masak | oh right. | ||
tadzik | it's this funny bug again?> | 12:50 | |
masak | rakudo: our &_print = &print; { sub ha {}; for ^10 { &ha.wrap: ({ _print "ha"; nextsame }, { _print "HA"; nextsame }, { _print "ho-hoo"; nextsame }, { _print "haa"; nextsame }).pick }; ha | ||
p6eval | rakudo c548b8: OUTPUT«===SORRY!===Unable to parse blockoid, couldn't find final '}' at line 22» | ||
masak | :/ | ||
hardik | nice It will really help me out to start with perl6 | 12:51 | |
masak | rakudo: our &_print = &print; sub ha {}; for ^10 { &ha.wrap: ({ _print "ha"; nextsame }, { _print "HA"; nextsame }, { _print "ho-hoo"; nextsame }, { _print "haa"; nextsame }).pick }; ha | ||
p6eval | rakudo c548b8: OUTPUT«haho-hoohahaahaaho-hoohaaHAHAha» | ||
masak | :D | ||
tadzik | hardik: the book is also awesome | 12:53 | |
masak | is it bad style for a role to call methods not defined in the role, but in the class the role is to be mixed into? | 12:54 | |
hardik | Really!! | ||
12:54
Axius joined
|
|||
masak | oh, you've read the book? | 12:55 | |
jnthn | masak: Not really | ||
(more) | |||
masak: Nice though we don't quite handle it yet is to write stub methods in your role | |||
Those then get treated is requirements | |||
So you get compile time checking that, after composition, those methods exist. | |||
masak | ooh | ||
jnthn | (e.g. are provided by the class or another role) | ||
masak | yeah, that's the missing piece of that puzzle. | 12:56 | |
jnthn | The original traits paper had an explicit way to do this | ||
Perl 6 just roles stubs into it | |||
masak | I have the original traits paper open in a browser tab :) | ||
jnthn | Oh, I think we discussed that maybe you write !!! in the body to require | ||
??? to warn | |||
... is like "meh, just fail at runtime" | |||
:) | |||
masak | nodnod | ||
dalek | odel: 08510b7 | jonathan++ | common/NQP/NQPSetting.pm: [common] Add an NQPMapIter that just knows how to eagerly reify a list and a .map that returns it for lists and arrays. |
13:00 | |
odel: ec09403 | jonathan++ | dotnet/compiler/Actions.pm: [dotnet] Compile for to $expr.map($block).eager rather the for pasttype for the time being. |
|||
odel: f186018 | jonathan++ | t/nqp/ (2 files): [t] We now pass 15-list.t and 37-slurpy.t. |
|||
masak | the more I think about nqp, the more it makes sense as a "minimal/core Perl 6" that can then be used to build the rest of Perl 6. | 13:02 | |
13:02
nymacro left
13:04
Trashlord joined,
mila_ left,
mila_ joined
|
|||
tadzik | I thought that's the idea | 13:07 | |
Rakudo is/was bootstraped with nqp, right? | |||
masak | yes. | 13:08 | |
tadzik | and now it's just pbc/pir? So if we lost it, we'll have to bootstrap it again? :) | 13:09 | |
masak | but I'm starting to think it's not just a nice way to break down the problem, but sort of sane design-wise as well. it gets you thinking about which things are fundamental. | ||
jnthn | tadzik: No, the PIR we have is generated from the NQP | 13:10 | |
tadzik: We'll still compile down to PIR/PBC | |||
It's just that NQP will use 6model, but Parrot's Object/Class PMCs, and a similar story for multi-dispatch I guess. | |||
See the nom branch of nqp-rx for the work so far | |||
13:14
whiteknight joined,
[Coke] joined
|
|||
tadzik | jnthn: that's nqp with 6model? | 13:15 | |
13:19
Axius left
13:30
MayDaniel joined
|
|||
tadzik | masak: #225 in poc looks a bit broken: wklej.org/id/418167/ | 13:34 | |
13:34
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
tadzik | nah, old Term-Ansicolor author haven't yet respond to my 3-months-old message | 13:39 | |
masak: how about poc using Module::Tools? They contain a few fixed bugs alredy, no sense in duplicating efforts | |||
(just fixed one) | 13:44 | ||
colomon | oh noes, ABC fails? | 13:53 | |
tadzik | nah, its po | 13:54 | |
* poc | |||
colomon | what is proof-of-concept? new version of proto? I feel like I blinked and missed something... | 13:55 | |
tadzik | yeah, new module installer using Pls | ||
strange. I removed quite a significant statement from Module::Build and not only it didn't break neutro, it also fixed proof-of-concept | 13:58 | ||
oh, it did break neutro | |||
14:05
xiaomo left
|
|||
tadzik | oh, too much brokeness | 14:06 | |
tadzik retires | |||
14:28
wamba left
14:36
timbunce joined
14:40
[Coke] left
|
|||
tadzik | suddenly, the conversation died :( | 14:41 | |
colomon | you retired! | 14:42 | |
tadzik | for today's Module-Mangling, don't worry :) | 14:50 | |
14:56
wamba joined
|
|||
tadzik | rakudo: {a => 1}.flip.perl.say | 15:04 | |
p6eval | rakudo c548b8: OUTPUT«"\n1\ta"» | ||
tadzik | oh? | ||
15:05
Trashlord left
15:07
Trashlord joined
|
|||
tadzik | rakudo: {a => 1}.invert.perl.say | 15:07 | |
p6eval | rakudo c548b8: OUTPUT«(1 => "a")» | ||
tadzik | right | ||
15:16
_kaare left
15:18
timbunce left,
Chillance joined,
Axius joined
|
|||
jnthn | tadzik: yes | 15:19 | |
tadzik | jnthn: nice. Does it work, like now, can be tested or such? | 15:20 | |
jnthn | sorta :) | ||
tadzik: It's a work in progress. | |||
tadzik: It's blocked on HLL::Compiler's inheritance from PCT::HllCompiler | 15:21 | ||
tadzik: But could be unblocked by removing the inheritance and then copying the required methods from PCT::HLLCompiler into HLL::Compiler | |||
If anything, just wrapping the PIR in NQP method bodies, though of course a translation to NQP is nicer. :) | 15:22 | ||
Anyway, Pm was going to do it, but is suffering a tuit deficit. | |||
So now it's probably for me or anyone else who is interested ;) | |||
masak | tadzik: I'll definitely look into Module::Tools. thanks for the pointer. | ||
jnthn | I hope it's not a null one. :) | 15:23 | |
colomon | jnthn: if you think you can explain what is needed, I'd be willing to take a stab when I have tuits | ||
15:23
Chillance left
|
|||
tadzik | masak: just fixing them a bit. path-to-module-name and name-to-module-path act quite funny when the directory we're building in is not . | 15:24 | |
github.com/tadzik/perl6-Module-Too...mmit/1f3c0 actually | |||
with this change, it should be able to cooperate with poc | |||
15:25
takadonet joined
|
|||
takadonet | hey all | 15:25 | |
tadzik | hey takadonet | ||
takadonet | tadzik: how are u sir? | 15:26 | |
masak | takadonet: \o | ||
tadzik | takadonet: oh nice | ||
takadonet | masak: getting there: github.com/Takadonet/Text-Tabs-Wrap | ||
tadzik | takadonet: fixing mine and masak++'s module installers simultanously :) | ||
jnthn | colomon: 1) check out nom branch of nqp-rx. 2) Locate HLL::Compiler source (it's an NQP source file). 3) Remove 'is PCT::HLLCompiler'. 4) Stuff epicly breaks. 5) Copy methods from the PCT HLLCompiler (in PIR, in the Parrot repo, somewhere in compilers/pct/) into the NQP HLL::Compiler. | ||
takadonet | ??? | ||
jnthn | (Until there's enough stuff to work. :)) | ||
masak | "there are also Perl 6 developers" -- wonder which ones. twitter.com/davidslv/status/3462056384659456 | ||
takadonet | sorry I misunderstood | 15:27 | |
tadzik | masak: > PERL6LIB=lib:$PERL6LIB ./proof-of-concept ABC | ||
ABC installed. | |||
takadonet | masak: do you always monitor twitter for perl 6 stuff? | ||
tadzik | should've been more verbose, no? And I touched only the build role | ||
ah, maybe it's alredy installed | 15:28 | ||
masak | tadzik: live filters. | ||
oops, that was meant for takadonet. | |||
tab completion fail. | |||
tadzik | masak: did pls install Acme::Meow? | ||
for it no does | 15:29 | ||
masak | tadzik: proof-of-concept definitely shouldn't need a PERL6LIB set externally. | ||
that's part of the reason for having an installer, that it handles that stuff for you. | |||
tadzik | masak: well, you have to have your lib/App/Pls.pm in PERL6LIB, no? | ||
and I have to add my original PERL6LIB so it sees Module::BUild | 15:30 | ||
masak | that's part of why I don't want dependencies. | ||
tadzik | alright success! ABC wasn't building, and it's building now | ||
masak | I guess pls will have to bootstrap so that it puts itself in ~/.perl6/lib | ||
tadzik | that's what neutro does | 15:31 | |
15:31
whiteknight left
|
|||
masak | excellent. | 15:31 | |
tadzik | masak: lolifixed proof-of-concept | ||
masak | :) | ||
tadzik | It's just a bit more verbose and a bit less error-reporting than it was, but it works and it's a matter of wrapping around Module::Build somehow | ||
15:31
hax joined
|
|||
masak | "a bit more verbose" is a non-starter, though. | 15:32 | |
tadzik | wklej.org/id/418251/ | ||
takadonet | cannot find in the spec where you can export variables from a module | ||
tadzik | I just added :v to build to see what's happening | ||
masak | ok, so I can just remove it, then? | ||
tadzik | . o O ( perl6-App-FatPacker ) | ||
masak | how will I know if Module::Build::build fails? | 15:33 | |
tadzik | masak: well,you have to try around it to check if it worked | ||
hold on | |||
github.com/tadzik/neutro/blob/mast...neutro#L71 | |||
like here | |||
masak | I think I'll pull in your change. and put Module::Build in pls's lib/, I guess. | ||
tadzik | I can push it myself, but I have to write it first :)\ | 15:34 | |
masak | tadzik: sure, if you want. | ||
colomon | jnthn++ # will start to look at this as soon as I finish attempting to convince Newfoundland musicians to come visit Michigan. ;) | ||
15:34
hax left
|
|||
tadzik | masak: I'll mess around a bit then | 15:34 | |
masak | tadzik: I won't guarantee I won't push commits in the meantime :) | ||
but it's git, so should be fine. | 15:35 | ||
15:35
hax joined
|
|||
tadzik | masak: the first problem is: Module::Tools spit out output only when given a :v, and poc has a run-logged to run commands. There's trouble redirecting the output now | 15:35 | |
masak | hm :( | 15:36 | |
tadzik | also, prove can't be silenced completely, so it always spits out something | 15:37 | |
15:38
cls_bsd joined
|
|||
masak | > /dev/null | 15:42 | |
tadzik | I wanted to avoid that due to portability issues | ||
15:42
ash__ joined
|
|||
masak | I want something that works well on at least one platform. | 15:42 | |
tadzik | it was meant to run on windows too, yet I never found anyone to test it on it | ||
well, it works at least on Linux and MacOS | 15:43 | ||
masak | lack of garbage output is one of the original goals of both proto and pls. | ||
tadzik | I think I may have found a RakudoBug | ||
masak | do share. | 15:44 | |
tadzik | proof-of-concept uses Module::Install which uses File::Mkdir, but when Module::Install uses mkdir :p everything dies due to additional parameter :p, so like File::Mkdir didn't get imported | ||
I'll push the change to some branch so you can see/investigate for yourself | 15:45 | ||
interesting that it isn't a problem for neutro nor for mbuild | 15:46 | ||
masak | sounds tricky. | ||
tadzik | oh, and Module::Tests seems to have some issues with dirs different than '.'. Worked on Math-Model, didn't on ABC | 15:47 | |
masak | std: sub foo(Str $s where "OH HAI" --> Int) {} | ||
p6eval | std a194beb: OUTPUT«Potential difficulties: $s is declared but not used at /tmp/pnJU99mW37 line 1:------> sub foo(Str ⏏$s where "OH HAI" --> Int) {}ok 00:01 122m» | ||
masak | std: sub foo(Str $s where "OH HAI" --> Int) { $s } | ||
p6eval | std a194beb: OUTPUT«ok 00:01 122m» | ||
15:48
_kaare joined
|
|||
masak | rakudo: sub foo(Str $s --> Int) {}; sub foo(Str $s where "OH HAI") {}; sub foo(Str $s where "OH HAI" --> Int) {} | 15:48 | |
p6eval | rakudo c548b8: OUTPUT«===SORRY!===Can not re-declare sub &foo without declaring it multi at line 22, near "; sub foo("» | ||
masak | rakudo: sub foo(Str $s --> Int) {}; sub bar(Str $s where "OH HAI") {}; sub baz(Str $s where "OH HAI" --> Int) {} | ||
p6eval | rakudo c548b8: OUTPUT«===SORRY!===Missing block at line 22, near "-> Int) {}"» | ||
masak | STD handles --> after a 'where' block. Rakudo doesn't. | ||
masak submits rakudobug | |||
jnthn | rakudo: sub foo(Str $s where "OH HAI" --> Int) { $s } | 15:49 | |
p6eval | rakudo c548b8: OUTPUT«===SORRY!===Missing block at line 22, near "-> Int) { "» | ||
tadzik | masak: github.com/masak/proto/commit/09bf50 | 15:52 | |
masak: it can install Acme::Meow and Math::Model I think, there are some issues with tests on ABC | |||
15:53
Axius left,
hax left
15:54
Axius joined
|
|||
colomon | which version of ABC? | 15:54 | |
tadzik | master | 15:55 | |
colomon | there are two ABC repos, if you're in the wrong one you're likely to have issues. | ||
tadzik | colomon: it has problems with opening the files in tests, probably because it isn't run from the directory your tests expect | ||
colomon | ah, okay. | ||
masak | there are two ABC repos? why? | ||
colomon | fork, the old one hasn't seen any development in some time. | 15:56 | |
masak | oh, right. | 15:57 | |
colomon | was worried that the proto list of modules might not be updated to the fork. | 16:00 | |
masak | there's no longer a "proto list of modules". | 16:01 | |
there's the ecosystem list. | |||
and you should have commit bit to that one. | |||
colomon | yes, I do, and the ecosystem list is up-to-date. | 16:03 | |
16:05
justatheory joined
|
|||
masak | phenny: "kan jag bara skriva slumpmässig skit och få den översatt? det här måste vara framtiden!"? | 16:05 | |
phenny | masak: "I can just write random crap and have it translated? This must be the future!" (sv to en, translate.google.com) | ||
masak | \o/ | ||
takadonet | wow | 16:06 | |
jnthn | phenny: "My hovercraft is full of eels" | 16:07 | |
phenny: "My hovercraft is full of eels"? | |||
phenny | jnthn: Language guessing failed, so try suggesting one! | ||
masak | jnthn: what language *is* that? :P | ||
jnthn | Dirty hungarian, no? :P | ||
masak | British? | ||
nice try, islander! | |||
jnthn | I never had opportunity to talk dirty to a Hungarian though. :P | ||
takadonet | phenny: "Pourqoui tu fais cela"? | 16:08 | |
phenny | takadonet: "Interval so you do that" (fr to en, translate.google.com) | ||
takadonet | ... not exactly what i said but good enough | ||
masak | phenny: "lol je suis canadien"? | 16:09 | |
phenny | masak: "lol I am Canadian" (fr to en, translate.google.com) | ||
jnthn | phenny: "my máme čas"? | ||
phenny | jnthn: "we have time" (sk to en, translate.google.com) | ||
masak | phenny: "quid pro quo"? | 16:10 | |
phenny | masak: "quid pro quo" (fr to en, translate.google.com) | ||
masak | dang :) | ||
phenny: "hein"? | 16:11 | ||
phenny | masak: "eh" (fr to en, translate.google.com) | ||
jnthn | phenny: "I can haz cheezburger? kplzthnxbai"? | ||
phenny | jnthn: The qu to en translation failed, sorry! | ||
masak | phenny: "est qu'un tournevis sonique vous avez dans votre poche, ou vous êtes simplement heureux de me voir?"? | 16:12 | |
phenny | masak: "is a sonic screwdriver you have in your pocket or are you just happy to see me?" (fr to en, translate.google.com) | ||
16:12
patspam joined
|
|||
jnthn | ..."screw"driver... :P | 16:12 | |
masak | jnthn: you need to watch more Doctor Who :) | 16:13 | |
jnthn | Who? | ||
takadonet | so ya.... | ||
tadzik | phenny: "powinieneś oglądać więcej Doctor Who :)"? | ||
phenny | tadzik: "You should watch more Doctor Who:)" (pl to en, translate.google.com) | ||
tadzik | nice | 16:14 | |
masak | phenny: "trop de hors-sujet?"? | ||
phenny | masak: "too off-topic?" (fr to en, translate.google.com) | ||
masak | :) | ||
tadzik | phenny: "ani trochę"? | ||
phenny | tadzik: "or some" (pl to en, translate.google.com) | ||
mindos1 | masak : Thanks. You guys are really miracle-maker. | ||
tadzik | :( | ||
phenny: "nie, wcale"? | 16:15 | ||
phenny | tadzik: "not at all" (pl to en, translate.google.com) | ||
masak | mindos1: thanks for what? goofing off? | ||
16:15
Chillance joined
|
|||
tadzik | phenny: "quidquid latine dictum sit, altum videtur"? | 16:17 | |
phenny | tadzik: The la to en translation failed, sorry! | ||
masak | that's true, though. | 16:18 | |
tadzik | yep | ||
masak | tadzik: did you take Latin in school? | 16:19 | |
rakudo: say elems 1, 2, 3 | 16:24 | ||
p6eval | rakudo c548b8: OUTPUT«3» | ||
masak | \o/ | ||
tadzik | masak: nope | 16:28 | |
masak: it's the only sentence I know, besides a few from Asterix | |||
masak | Asterix++ | 16:30 | |
tadzik | phenny: "Ale głupi ci Rzymianie"? | 16:31 | |
phenny | tadzik: "But those stupid Romans" (pl to en, translate.google.com) | ||
masak | rakudo: say "foo foo bar foo bar".trans( ["foo" => "one"], ["bar" => "two"]) | 16:33 | |
p6eval | rakudo c548b8: OUTPUT«foo one.perl is not a Pair in <anon> at line 2344:CORE.setting in 'Cool::trans' at line 1 in main program body at line 22:/tmp/KFpN_QzIip» | ||
masak | huh? | ||
jnthn | wtf... | 16:34 | |
:) | |||
I blame the last person who patched trans. ;) | |||
masak | I'm innocent. :) | ||
didn't touch that line. | |||
as far as I'm concerned, it never worked. | |||
tadzik | star: say "foo foo bar foo bar".trans( ["foo" => "one"], ["bar" => "two"]) | ||
p6eval | star 2010.09: ( no output ) | ||
masak | it did .perl in interpolation, but had no parens. | ||
16:34
Woodi left
|
|||
masak recompiles locally and tries again | 16:35 | ||
16:36
ggoebel left
|
|||
masak | std: sub foo { ['a', 'b' 'c'] } | 16:38 | |
p6eval | std a194beb: OUTPUT«===SORRY!===Two terms in a row at /tmp/FQULxUMKtY line 1:------> sub foo { ['a', 'b' ⏏'c'] } expecting any of: bracketed infix infix or meta-infix statement modifier loopParse failedFAILED 00:01 121m» | ||
masak | rakudo: sub foo { ['a', 'b' 'c'] } | ||
p6eval | rakudo c548b8: OUTPUT«===SORRY!===Unable to parse blockoid, couldn't find final '}' at line 22» | ||
masak submits LTA rakudobug | |||
ash__ | rakudo: say $*PERL<version> | ||
p6eval | rakudo c548b8: OUTPUT«2010.10-21-gc548b87» | ||
ash__ | rakudo: say $?PERL.version | ||
p6eval | rakudo c548b8: OUTPUT«===SORRY!===Symbol '$?PERL' not predeclared in <anonymous> (/tmp/0JeYsoEooC:22)» | ||
ash__ | S28 has a mistake i think | 16:39 | |
or $?PERL isn't right | |||
dalek | odel: 826917e | jonathan++ | dotnet/compiler/ROADMAP.txt: [dotnet] Remove a couple of completed ROADMAP items. |
||
odel: 4f8333c | jonathan++ | dotnet/compiler/ (2 files): [dotnet] Get JnthnNQP able to parse and compile explicit invocants in method signatures. |
|||
odel: 14e2274 | jonathan++ | dotnet/compiler/PAST2DNSTCompiler.pm: [dotnet] Tweak initialization ordering; build constants table a bit earlier on. |
|||
odel: 8f4d667 | jonathan++ | common/NQP/P6Objects.pm: [common] Add a multi method Str(Mu:U $self:) { ... } to Mu so type objects can stringify. Finally! \o/ |
|||
masak | ash__: both are right, AFAIK. | ||
ash__ | oh | ||
masak | ash__: $?PERL is the Perl compiler. | ||
ash__ | so you can do $*PERL or $?PERL ? | ||
masak | ash__: $*PERL is the Perl runtime. | ||
ash__ | hmm okay | ||
masak | it makes sense, I promise :P | ||
ash__ | then, is $? not working right? | 16:40 | |
rakudo: $?PERL.version | |||
masak | we don't have much of $? | ||
p6eval | rakudo c548b8: OUTPUT«===SORRY!===Symbol '$?PERL' not predeclared in <anonymous> (/tmp/yCFPdOapBd:22)» | ||
ash__ | okay | ||
jnthn | nah, do not haz. | ||
masak | generally, we don't have much of compiler-time goodness. | ||
s/compiler/compile/ | |||
16:41
hax joined
|
|||
ash__ | jnthn, i am blatantly coping you btw, trying to see if i can use your Perl 2 C# compiler to get a parser for nqp | 16:41 | |
jnthn | :) | 16:42 | |
16:42
Axius left
|
|||
jnthn | Nice to be working on soemthing people find worth copying. :) | 16:42 | |
ash__ | after digging through your code, PAST and POST make a lot more sense | ||
hmm, wonder why the $*PID of parrot is always 0 for os x | 16:45 | ||
16:47
Trashlord left
|
|||
masak | ash__: if you find out, you're eligible to comment on an RT ticket. :) | 16:47 | |
16:49
Trashlord joined
|
|||
mindos1 | masak: Replied to the greeting message. :P | 16:49 | |
It seems I can start from migrating CPAN modules. | 16:50 | ||
16:51
mila__ joined
|
|||
masak | start small. Perl 6 is a bit different to Perl 5, and it's easy to get in over one's head. | 16:52 | |
I know I did, many years ago when I began. | 16:53 | ||
16:53
ch3ck joined
|
|||
masak | I was going to port Getopt::Long, line by line. | 16:53 | |
that must have been before Perl 6 has MAIN, because after that it wouldn't have made that much sense. | 16:54 | ||
moritz_ | instead of just using sub MAIN :-) | ||
masak | s/has/had/ | ||
16:54
mila_ left
|
|||
mindos1 | I got the idea. | 16:58 | |
masak | oh. my point was that I never finished the Getopt::Long portage. I got stuck in a sea of regexps. | ||
and I didn't have a TDD habit back then, so I had no way of orienting myself. | 16:59 | ||
mindos1 | I meant, the idea of ``start small'' | ||
masak | I think being motivated to reach some goal or other is the important part. I don't think I was particularly motivated to actually finish porting Getopt::Long. it was just a random way to try to contribute. | 17:01 | |
dalek | kudo: 015d77b | masak++ | src/core/Cool-str.pm: [Cool-str.pm] improved error reporting There was a () missing on a .perl in an interpolation. This can never have worked properly. Does now. |
17:02 | |
mindos1 | masak: I have tried to find some place to start doing something, otherwise never start. | 17:04 | |
masak | mindos1: are you a student? or employed? what do you do for a living? | 17:05 | |
mindos1 | s/start/get started./ | ||
masak : I am currently employed as a programmer. | 17:06 | ||
masak | mindos1: and do you write Perl 5 scripts to solve problems at work? | ||
17:07
tylercurtis joined
|
|||
mindos1 | masak : Sometimes, very simple ones. | 17:07 | |
masak | then maybe that's a good place to start with Perl 6 as well. | ||
it's a way to put yourself into the picture, and make Perl 6 directly relevant to what you're already doing. | |||
17:09
sylwek joined
17:10
sylwek left,
Woodi joined
|
|||
mindos1 | masak : I will try to rewrite scripts in Perl6. Though it's a good starting point, but the intersection is quite small. | 17:16 | |
17:16
laler joined,
jferrero joined
|
|||
masak | mindos1: yes. do keep us updated. | 17:17 | |
mindos1 | Then I have chance to built rakudo on windows. :P | 17:20 | |
takadonet | mindos1: jnth hacks rakudo on a windows machine | ||
17:21
jferrero left
|
|||
mindos1 | masak: It's here, right? sourceforge.net/projects/parrotwin32/files/ | 17:22 | |
masak | mindos1: jnthn will know. | 17:23 | |
jnthn | I think they work if you install them in the right place | 17:24 | |
Otherwise, easiest toolchain for building it is the MS VC++ + ActivePerl | |||
Or at least, that's what I do it with :) | |||
17:25
Bzek joined
|
|||
mindos1 | jnthn : Thanks. I will try when I get reach to Windows. | 17:25 | |
17:26
jferrero joined
17:43
jferrero left,
jferrero1 joined
17:52
jferrero1 left
17:59
Trashlord left
18:00
Trashlord joined
|
|||
dalek | odel: ca07d19 | jonathan++ | dotnet/runtime/ (4 files): [dotnet] A little refactor to s-table to avoid having to do so many calls through lambdas; instead we only do that if dispatch/invocation is specialized in some way and mov ethe common path into a plain old method, which the runtime can better optimize. |
18:02 | |
odel: f43762d | jonathan++ | dotnet/runtime/Metamodel/SharedTable.cs: [dotnet] Start to stub in some type check and type-check cache support. |
|||
18:04
laler left
|
|||
masak | rakudo: my $a = *; $a = "foo"; say $a | 18:06 | |
p6eval | rakudo c548b8: OUTPUT«Whatever()<0x7d4de48>» | ||
masak submits rakudobug | |||
takadonet | when is pmichaud coming back? | 18:12 | |
jnthn | takadonet: Hard to know when he'll have loads of tuits, I suspect. I got to talk with hime a little a few days ago. | 18:13 | |
*him | 18:14 | ||
18:14
rgrau joined
|
|||
jnthn | Hopefully soonish...I miss pmichaud++'s company and hacking. | 18:14 | |
masak misses pmichaud++ too | 18:15 | ||
18:16
sftp left
18:17
sftp joined
|
|||
masak | nom & | 18:21 | |
18:26
Eevee joined
18:36
silug joined
18:42
molaf_ left
18:44
ash_ joined
18:45
uniejo joined
18:46
ash__ left
18:47
Trashlord left
18:50
uniejo left
18:51
Trashlord joined
19:02
tylercurtis left
19:42
sftp_ joined
|
|||
tadzik | yay, time to merge parrotgit | 19:42 | |
19:42
sftp left
|
|||
colomon | \o/ | 19:42 | |
tadzik | phenny: "awe"? | 19:44 | |
phenny | tadzik: Language guessing failed, so try suggesting one! | ||
tadzik | bah | ||
19:46
Trashlord left
19:48
Trashlord joined
19:52
snearch joined
|
|||
tadzik | gil.di.uminho.pt/users/smash/rakudo-bench.html -- maybe primes should be moved to Heavy Scripts | 19:53 | |
sorear | good * #perl6 | 19:58 | |
colomon | \o | ||
tadzik: that's where they belong, for sure. but I thought smash was automatically sorting them... | 19:59 | ||
sorear | ash_: as a general rule, if $?FOO is not implemented specially (and very few of them are - $?POSITION comes to mind), it is treated as BEGIN { $*FOO } | 20:02 | |
ie it picks up the version of $*FOO visible to the compiler | |||
(how this works if your compiler isn't written in Perl 6 has never been established) | 20:03 | ||
20:11
wamba left
20:15
ggoebel joined
|
|||
tadzik | hello sorear | 20:21 | |
sorear | hello tadzik | 20:23 | |
20:26
kanishka left
20:56
patspam left
|
|||
takadonet | hey all | 21:03 | |
tadzik | o/ | 21:04 | |
takadonet | tadzik: how's your perl 6 coming along? | ||
tadzik | takadonet: cool. Fixed few things in Module::Tools and... made Pls work on Module::Tools! | 21:06 | |
takadonet | tadzik: nice url? | ||
tadzik | takadonet: of what? | 21:07 | |
takadonet | tadzik: of the code? :) | ||
s /\?// | |||
tadzik | :) github.com/tadzik/perl6-Module-Tools and github.com/masak/proto/tree/module-tools | ||
takadonet | thanks | 21:08 | |
colomon | tadzik++ | 21:09 | |
takadonet | indeed tadzik++ | ||
tadzik | oh :) | 21:15 | |
I feel split()ed, every time I help pls, neutro becomes more and more obsolete :P | 21:16 | ||
but it was its destiny after all :,) | 21:17 | ||
we'll probably all feel this way when we will be contributing to Perl 7 | 21:18 | ||
moritz_ | any objections to merging the parrotgit branch? | 21:26 | |
flussence | will I have to fix my nightly compile cronjob for that? | ||
moritz_ | depends on your compile cronjob | 21:27 | |
you might need to rm -rf parrot/ | |||
once | |||
flussence | all it does right now is blow away everything anyway | ||
moritz_ | :-) | 21:28 | |
21:28
xinming left
|
|||
flussence | I suppose I can change that part to "git clean -dfx"... | 21:28 | |
masak and jnthn back from nom | 21:29 | ||
colomon | \o/ | ||
good noms? | |||
takadonet | what is noms? | ||
jnthn | Very good noms. | 21:30 | |
takadonet: It's a completely innocent concept! | |||
tadzik | takadonet: tip: nom nom nom | ||
takadonet | .... | ||
ok | |||
in other news passing more tests! | 21:31 | ||
tadzik | .u … | ||
phenny | U+2026 HORIZONTAL ELLIPSIS (…) | ||
tadzik | uhm, I thought that's THREE DOTS | ||
dalek | kudo: 3aa3c21 | moritz++ | build/gen_parrot.pl: use git instead of svn in gen_parrot.pl (incomplete) |
21:33 | |
kudo: f0f2d33 | moritz++ | build/PARROT_REVISION: bump PARROT_REVISION to something that can report a git-describe-ish revision note that that's currently from a parrot branch (git_describe), so that parrot branch must be merged before we merge this rakudo branch |
|||
21:34
dalek joined,
ChanServ sets mode: +v dalek
21:35
rgrau left
|
|||
takadonet | blog.laufeyjarson.com/2010/11/ugly-old-perl/ I don't like this guys solutions to 'Ugly old perl' | 21:35 | |
dukeleto | moritz_: i have a bug in my git describe code for parrot. the cache is not updating | ||
masak | takadonet: here's an explanation of "nom": knowyourmeme.com/memes/om-nom-nom-nom | 21:37 | |
moritz_ | dukeleto: noted | 21:38 | |
dukeleto: thank you anyway for implementing it in the first place | |||
takadonet | masak: for some reason I completely forgot what it was | ||
hacking on Perl 6 does that sometimes | |||
dukeleto | moritz_: will hopefully have a fix soon | ||
Tene | .u ⋯ | ||
phenny | U+22EF MIDLINE HORIZONTAL ELLIPSIS (⋯) | ||
Tene | .u ⋮ | ||
phenny | U+22EE VERTICAL ELLIPSIS (⋮) | ||
masak | .u ⋱ | 21:40 | |
phenny | U+22F1 DOWN RIGHT DIAGONAL ELLIPSIS (⋱) | ||
colomon | moritz_: reading your e-mail to p6l made me wonder... what happens to functions which take array arguments? | 21:42 | |
diakopter | Jon Lang's reply makes the most sense to me. What is a "binding" without a container? | 21:44 | |
colomon | diakopter: think I'm inclined to agree with that as well. | 21:46 | |
I'm just trying to take a step back, and consider what happens when you try to use packed arrays with the rest of p6. | 21:47 | ||
diakopter is looking the other direction, from packed arrays toward the container(ick)iness | 21:48 | ||
jnthn | The good news about NQP is that it has no containers. :) | ||
Oh, apart from arrays and hashes... | 21:49 | ||
:-) | |||
But it also has no binding. :) | |||
masak | \o/ | ||
jnthn | Perl 6, otoh... :) | ||
diakopter | and yet.. it uses := | ||
jnthn | crap! | ||
It has no *assignment*. | |||
The Cobra was REALLY good at the Indian restaurant... | |||
masak | good. assignment is evit. | ||
s/evit/evil/ | |||
sorear | it's Jon Lang | ||
I have him mentally killfiled | 21:50 | ||
diakopter | :| | ||
masak | oh. harsh. | ||
diakopter | jnthn: but.. how does nqp have binding without containers? | 21:51 | |
TimToady | I agree with Jon, actually. It should be assignment, not binding, since it's value semantics | ||
diakopter exhales in relief | |||
sorear | TimToady: what does @a[0] return? | 21:52 | |
jnthn | TimToady: I agree it's right in a touchy feely wya. | ||
TimToady: But that doesn't help me for implementing it. | |||
masak blinks and tries to think of something easier | 21:53 | ||
jnthn | The phrase "no way to bind a variable directly to a value" doesn't make any sense to me. | ||
sorear | well, the problem is that @a[0] has to return a container object which aliases the first slot of the compact storage | 21:54 | |
jnthn | sorear: Well, that's one way | ||
Apart from then we have to create an object | |||
For every single assignment | |||
sorear | compact arrays are all about speed; requiring them to be implemented using ties is nonsense | ||
jnthn | And throw it away again. | ||
So we'll end up saying "you can do assignment but use binding if you want it to be fast" under that model. | |||
dukeleto | moritz_: the but with the sha/git_describe cache not getting cleaned up was fixed, but there may still be more bugs | ||
s/but/parrot bug/ | 21:55 | ||
sorear | And, IMHO, it's better just to forbid assignment | ||
since it'll be a royal pain to code and serve no purpose other than misleading newbies | |||
who will use it, not realizing they've shot themselves in the foot | |||
TimToady | I completely disagree. binding is aliasing. | ||
sorear | so we'll need a warning to tell people not to use it, which is even more code | ||
TimToady | not copying | ||
sorear | it's more like ::= | 21:56 | |
TimToady | it's binding that should fail | ||
sorear | it creates an alias to the underlying value | ||
jnthn | TimToady: Can you explain *why*? | ||
sorear | and since it's an alias, assignment fails | ||
jnthn | TimToady: I would much prefer it be that assignment is the right answer here. | 21:57 | |
TimToady: I'm struggling with the model. | |||
diakopter wants to explain my understanding, but waits | |||
TimToady | if you copy a value, as you must, then =:= cannot possible be true, since you have two different containers afterwards | ||
you have to treat the lvalue as a C-style lvalue to get low-level assignment | 21:58 | ||
which means it's just a pointer to raw (albeit typed) memory | |||
binding is copying the location of the rvlaue, not the rvalue itself | 21:59 | ||
I'm gonna have to run off in a bit, so I'll let diakopter take over :P | 22:00 | ||
jnthn | :P | ||
diakopter | egads | ||
masak | well? we're waiting. | 22:01 | |
TimToady | bbl & | ||
diakopter | jnthn: in terms of implementation (on, say, CLR), I think of a my int @a as having the same value vs. reference semantics as the CLR model's | ||
(as compared to a my Int @b or a my @c ) | 22:02 | ||
jnthn | Well, the way it works there is that you have a bunch of pointers rather than a bunch of values, I guess. | ||
diakopter | for which | ||
a, b, or c | |||
jnthn | a is bunch of values, b and c it's full of references. | 22:03 | |
sorear | it's possible to implement @a[0] = ... in the optimizer, sure | ||
but I don't buy that | |||
the optimizer shouldn't be needed to take advantage of low-level code | 22:04 | ||
diakopter | sorear: hang on.. | ||
jnthn | Do we agree taht @a[0] = ... (pre-optimization anyway) is really &infix:<=>(@a[0], ...) | ||
? | |||
sorear | jnthn: yes | ||
22:05
crythias joined
|
|||
moritz_ | yes | 22:05 | |
masak | yes | ||
diakopter | jnthn: sec.. | ||
jnthn | OK. So @a[0] when evaluated has to return something that can be used as a container. | ||
(if we want @a[0] to be assignable) | 22:06 | ||
diakopter: go ahead | |||
moritz_ | well, if we want to use it on the LHS of a binding operator, it has to return something you can bind to | 22:07 | |
can you bind to a native int? | |||
diakopter | jnthn: @a[0] = 4; # passed to &infix:<=>(@a[0], 4) as CLR "ref" (equiv), right? | ||
jnthn: sorry, not "ref", I mean that the values in @a aren't copied, the address of @a is sent. | 22:08 | ||
jnthn | diakopter: I wasn't seeing it as a ref equiv... | ||
diakopter: It's just passed using normal Perl 6 semantics (e.g. signature binding) | 22:09 | ||
sorear | There is no &infix:<:=> | ||
jnthn | So yes, what's passed is whatever @a[0] produces | ||
sorear: You consider &infix:<:=> as purely syntactic? | |||
sorear | yes | ||
diakopter | jnthn: in that case, I disagree with that | 22:10 | |
jnthn | sorear: I'm inclined to agree on that. | ||
sorear | diakopter: You can't use CLR refs like that | ||
jnthn | sorear: Otherwise - as I think you've pointed out before - an extra level of indirection is needed. | ||
moritz_ | rakudo: say &infix:<:=>.WHAT | ||
diakopter | sorear: then I've miscommunicated. | ||
p6eval | rakudo 015d77: OUTPUT«Multi()» | ||
jnthn | moritz_: Aye, but Rakudo's binding is kinda wrong. | ||
sorear | diakopter: it | ||
diakopter | then there is no such thing as a compact array | 22:11 | |
masak | jnthn: I thought an extra level of indirection *was* needed. | ||
diakopter | what's compact about an array of containers | ||
sorear | diakopter: it's because of CPS; CLR references can only live on the true stack and can't be saved in a coroutine | ||
jnthn | diakopter: I think it's a given that that compact arrays can't be arrays of containers. | ||
diakopter | sorear: I've miscommunicated; you're speaking about things that have nothing to do with what I'm talking about. | ||
jnthn | diakopter: I started the thread because I'm struggling to unify that and my current grasp (or lack thereof :-)) on assignment. | 22:12 | |
diakopter | jnthn: my point is is then that you're saying compact arrays can't exist. | ||
jnthn | diakopter: Well, or that storage to them involves creating a fake container. | ||
e.g. an on demend container that writes to the right memory location | |||
diakopter sees no distinction | 22:13 | ||
jnthn | But I fear that'll get pricey in terms of execution time / temporary objects. | ||
diakopter: The distinction is what your long-term storage looks like. The "on-demand container" can get GC'd immediately | |||
I'd hope there could be a way to optimize it away too. | |||
sorear | Any Perl 6 design that requires more layers of indirection than the corresponding Perl 5 is automatically wrong | ||
masak | huh? | 22:14 | |
moritz_ | sorear: so having a meta object model built in is wrong? | ||
diakopter is thankful these large, tangly issues are [re-]surfacing | |||
jnthn | But I'd kinda prefer something that didn't rely on smart optimizations to have a shot at being efficient. Maybe I need to just cope with that though... | ||
22:15
silug left
|
|||
diakopter | my contention is that the synopsis insists on having compact, fast arrays | 22:15 | |
masak | aye. | ||
jnthn | Well, it certaily says compact. ;) | ||
masak | :) | ||
sorear | moritz_: Perl 5 has a MOP; Class::MOP is just a better API | ||
jnthn | But yes, speed matters. | 22:16 | |
masak | sorear: when you say that Perl 5 has a MOP, which part in particular are you referring to? the blessed hashes? | ||
diakopter | compact, meaning the value is stored in them. | ||
jnthn | Right. | ||
diakopter | otherwise they are no different from non-compact. | ||
lue | ohai o/ | ||
masak | lue: \o | ||
diakopter | jnthn: perhaps I see another way to explain @a[0] = 4; (more) | 22:17 | |
compiler knows @a is an array of natives, so it sends it to &infix:<=>() as something other than what you said above | 22:18 | ||
jnthn | diakopter: That's perhaps fine for the case where it knows, but it might not know. | 22:19 | |
my int @x; sub foo(@y) { ... }; foo(@x); | |||
diakopter | ok..? | 22:20 | |
masak | or, put differently, dynamic method dispatch doesn't square with static special-treating of some of the method calls. | ||
jnthn | diakopter: IIUC you're suggesting a compile-time transformation. | ||
diakopter: In the case above, @y is not know to be a natively typed array. | |||
diakopter | ah, yes, ok. | ||
masak: yes, I see. | 22:21 | ||
lue | I assume the magic behind ufo is that things in [project]/lib get put in ~/.perl6/lib and so on? | ||
diakopter | in that case, it's "=" that must be treated specially | ||
masak | lue: nope. | ||
diakopter | (to bypass infix:<=>) | ||
(and as a precondition, require that the array be a native one, check for it, and error if it's not) | 22:22 | ||
lue | [or is it just that good?] | ||
22:23
rgrau joined
|
|||
tadzik | lue: it's generating the makefile so you can make/make test/make install | 22:23 | |
masak | lue: ufo doesn't in itself copy files. ufo analyzes your project directory structure and creates a Makefile. | ||
lue: the Makefile contains instructions for installing things, that is, putting them in ~/.perl6/lib | |||
jnthn | diakopter: I suspect there will be too many cases where we just can't know whether we have native or not to make a good guess. | 22:24 | |
diakopter | I mean, check at runtime. | ||
for any lvalue that ends in a [...] | |||
= | |||
jnthn | Ah... | ||
lue | Hm. I'll play with ufo until the Makefile I get makes sense. | ||
jnthn ponders that one | |||
diakopter | (for the ones not determinable statically) | ||
masak | lue: there's only one way to run ufo. you just run it, and it gives you a Makefile. | 22:25 | |
lue: if that doesn't work for you, I'd be happy to take a bug report. | |||
lue | .oO(I can't seem to get what I mean to my fingers. hmmm...) |
22:27 | |
s/ufo/the project layout/ | |||
diakopter | jnthn: obviously for loops & recursions, marking the types of variables will ALWAYS help Perl 6's performance tremendously, especially native ones, so it'll be HIGHLY recommended. :) | ||
tadzik | lue: there is a blag toast you may want to read | 22:28 | |
diakopter | (to those who are writing loops and recursions) | ||
tadzik | lue: ttjjss.wordpress.com/2010/08/09/so-...-6-module/ | ||
masak | lue: if you have any questions about how the project layout is "supposed" to look, I can probably give answers pretty quickly. and read tadzik++'s blag toast. | ||
sorear | you need to make up your mind quickly, otherwise I'll just ignore you and use my implementor's privelege to force my int $foo ::= 5 on the world | ||
tadzik | does anyone happen to own a hakama? | 22:29 | |
22:29
masonkramer left,
masonkramer joined
|
|||
diakopter | what does ::= mean | 22:29 | |
sorear | bind variable to read only value | 22:31 | |
diakopter | ah | ||
how does that help? | |||
(I'm not doubting; I'm wondering) | |||
jnthn | diakopter: Yes, a model where adding type annotations allows more efficient code gen sits well with me. | 22:32 | |
sorear | pugs: my $x; $x ::= 5; $x = 2 | ||
p6eval | pugs: OUTPUT«*** Can't modify constant item: VInt 5 at /tmp/v4ypd9NPdk line 1, column 18 - line 2, column 1» | ||
sorear | it makes very clear that following assignment won't work | ||
and eliminates aliasing concerns | |||
diakopter | how does that help with native array slots | 22:33 | |
jnthn | diakopter: Maybe that's the answer. If you didn't tell Perl 6 enough that it can generate more optimal code for @x[0] = 5, it will fall back to the "I made you a container" thing. That's much nicer. | ||
Saying "add type annotations to improve performance" is much nicer than "use binding not assignment to improve performance". | 22:34 | ||
moritz_ | where does the coercion in @x[0] = 5 happen? | ||
jnthn | moritz_: I expect it's just an unboxing, not a coercion. | ||
moritz_: I've carefully kept those two separated out in 6model so far. | 22:35 | ||
So @x[0] if @x was declared as int can have Int assigned to it just fine, but not Num. You'd have to coerce yourself in that case. | |||
Just as you would for assigning a Num to a my Int @foo array. | 22:36 | ||
I'm starting to feel something implementable forming in my head. :) | 22:37 | ||
diakopter | (yay) | ||
sorear | yes, this is implementable | 22:39 | |
jnthn++ | |||
jnthn | diakopter++, sorear++, TimToady++, moritz_++, masak++ # hope I didn't miss anyone :) | ||
masak | you're welcome :) | ||
22:39
hardik left
|
|||
jnthn | oh, jlang++ from the mailing list too :) | 22:39 | |
tadzik | *a hand with a cookie comes from outside the stage* | ||
masak | tadzik: that was weird. never do that again. | 22:40 | |
jnthn | tadzik: You just made myself and masak glad we weren't drinking anything at the time you said that... :P | ||
diakopter | lol | ||
sorear | never give N !%% M cookies to M people | ||
tadzik | :) | ||
sorear | unless you're a sociology grad student and want to start a fight | ||
masak | tadzik: it was like something out of Twin Peaks. | ||
lue somewhat hopes someone'll be able to summarize what just happened to the language in a blag toast. Or be able to find the starting point of it all. | 22:42 | ||
tadzik | hm? | 22:43 | |
oh, you mean my "You" habit? | |||
diakopter | How is Consensus formed? | ||
lue | no, I meant the discussion above ^^^. [ tadzik: your You practice made me feel important. No need to address that :) ] | 22:44 | |
masak | diakopter: they need to do way instain disagreement. | 22:45 | |
jnthn | diakopter: When nobody can fright back! | ||
masak | who kill their consensus, who can't even frigth back? | ||
tadzik | lue: very little men... | 22:46 | |
phenny: "doceniać"? | |||
phenny | tadzik: "appreciate" (pl to en, translate.google.com) | ||
tadzik | ...appreciated that :) | ||
lue | .oO(consensus is formed when everybody who disagrees is too tired to fight it anymore. How I sometimes wish that would happen in the US gov't.) |
22:47 | |
jnthn | lue: Elect older people. ;) | ||
masak | std: 1, 2, 3, given 4 | 22:48 | |
p6eval | std a194beb: OUTPUT«ok 00:01 120m» | ||
masak | rakudo: 1, 2, 3, given 4 | ||
p6eval | rakudo 015d77: OUTPUT«Could not find sub &given in main program body at line 22:/tmp/ipNXhbYj50» | ||
masak | which one's right, STD or Rakudo? | ||
masak submits rakudobug | |||
jnthn | rakudo: 42 given 5 | 22:50 | |
p6eval | rakudo 015d77: ( no output ) | ||
sorear | rakudo: 1, | ||
p6eval | rakudo 015d77: ( no output ) | ||
jnthn | std: given 4 | ||
p6eval | std a194beb: OUTPUT«===SORRY!===Missing block at /tmp/EMboWECD4L line 1 (EOF):------> given 4⏏<EOL>Parse failedFAILED 00:01 118m» | 22:51 | |
jnthn | std: 1, given 4 | ||
p6eval | std a194beb: OUTPUT«ok 00:01 120m» | ||
sorear | looks like rakudo is missing terminator:sym<given> | ||
jnthn | Ah | ||
lue | rakudo: grammar A { regex B { <C>|<D> }; regex C { c<E> }; regex D { d<E> }; regex E { \d+ }}; A.parse("c34"); say $/<B><E> # how would I accomplish this? | 22:55 | |
p6eval | rakudo 015d77: OUTPUT«Method 'TOP' not found for invocant of class '' in 'Grammar::parse' at line 6043:CORE.setting in main program body at line 22:/tmp/SMf6yaxbRy» | ||
lue | rakudo: grammar A { regex B { <C>|<D> }; regex C { c<E> }; regex D { d<E> }; regex E { \d+ }}; A.parse("c34", :rule<B>); say $/<B><E> | ||
p6eval | rakudo 015d77: OUTPUT«Any()» | ||
lue | rakudo: grammar A { regex B { <C>|<D> }; regex C { c<E> }; regex D { d<E> }; regex E { \d+ }}; A.parse("c34", :rule<B>); say ($/<B> ~~ A.C) | 22:57 | |
p6eval | rakudo 015d77: OUTPUT«Type objects are abstract and have no attributes, but you tried to access &!regex in 'A::C' at line 22:/tmp/aePazrMOlL in main program body at line 22:/tmp/aePazrMOlL» | ||
22:57
whiteknight joined
|
|||
sorear | niecza: grammar A { token TOP { < c d > ( \d+ ) } }; say A.parse("c34").[0] | 22:57 | |
p6eval | niecza 2484b4a: OUTPUT«Unhandled exception: Unable to resolve method say in class Match at line 223 (SAFE say @ 6) at line 1 (MAIN mainline @ 4) at line 954 (SAFE G818ANONC @ 5) at line 954 (SAFE module-SAFE @ 28) at line 954 (SAFE mainline @ 1) at line 0 (boot @ 1) at line 0 | ||
..(ExitRu… | |||
sorear | niecza: grammar A { token TOP { < c d > ( \d+ ) } }; say ~A.parse("c34").[0] | ||
p6eval | niecza 2484b4a: OUTPUT«34» | ||
sorear | masak: is there any pattern to whether you want to be identified as Carl Mäsak or Carl Masak? | 22:59 | |
masak | sorear: no; it depends mostly on whether I think the context will withstand the umlauts. | ||
sorear: in IRC, feel more like my nick 'masak' than my last name Mäsak. | 23:00 | ||
s/feel/I feel/ | |||
sorear | there was a bit of confusion the other day on which name to use for you in - I think it was parrotgit | ||
but never Maesak :) | 23:01 | ||
masak | preferably not. | ||
23:02
Alias joined
|
|||
lue | rakudo: grammar A { regex B { <C>|<D> }; regex C { c<E> }; regex D { d<E> }; regex E { \d+ }}; A.parse("c34", :rule<B>); say $/($/.keys[0])<E> | 23:02 | |
p6eval | rakudo 015d77: OUTPUT«invoke() not implemented in class 'Capture' in main program body at line 22:/tmp/TSqsxtFlIv» | ||
lue | curses, I thought that'd work. | 23:03 | |
sorear | masak: has the rakudobug been filed yet? | 23:04 | |
digging deeper, it looks like the problem is in HLL::Grammar.nulltermish | |||
lue | rakudo: grammar A { regex B { <C>|<D> }; regex C { c<E> }; regex D { d<E> }; regex E { \d+ }}; A.parse("c34", :rule<B>); $a = $/.keys[0]; say $/($a)<E> | ||
p6eval | rakudo 015d77: OUTPUT«===SORRY!===Symbol '$a' not predeclared in <anonymous> (/tmp/tQJiXgbDIu:22)» | ||
masak files rakudobug | |||
sorear | which doesn't check <?terminator> | ||
masak | sorear++ | ||
23:26
snearch left
23:27
ilogger2 joined,
ChanServ sets mode: +v ilogger2
|
|||
tadzik | oh, that's duckduckgoable | 23:29 | |
sorear | tadzik: ETAOIN SHRDLU | 23:30 | |
masak: I was referring to the 1, 2, 3, given 4 | |||
23:30
kanishka joined
|
|||
masak | oh. checking. | 23:31 | |
(so many bugs, hard to keep track) | |||
no, didn't submit that one yet. | |||
do you have any last words? | |||
so to speak. | |||
diakopter | hee | ||
flussence | here's my revised nightly cron thing, in case anyone wants to borrow/criticise it: gist.github.com/675745 | 23:32 | |
(there's probably a hidden bash thing that makes commands autodie instead of that mess...) | 23:33 | ||
masak | tadzik: hci.stanford.edu/~winograd/shrdlu/ | ||
tadzik | yeah, found it | 23:34 | |
masak | cool, eh? | ||
tadzik | yeah | ||
masak | I first read about it in GEB. | ||
tadzik | I think the Thank You - You're welcome part should be fairly easy to implement :) | ||
masak | I find it odd and fascinating that there's exactly one such project, and that it's from the early 1970s. | ||
lue | using the grammar I used above, trying A.parse("c34", :rule[0]); say $/{$/.keys[0]}<E> failed. | ||
masak | p6eval or it didn't happen :) | 23:35 | |
23:35
patrickas joined
|
|||
lue | rakudo: grammar A { regex B { <C>|<D> }; regex C { c<E> }; regex D { d<E> }; regex E { \d+ }}; A.parse("c34", :rule<B>); $a = $/.keys[0]; say $/{$a}<E> | 23:35 | |
masak | patrickas! \o/ | ||
p6eval | rakudo 015d77: OUTPUT«===SORRY!===Symbol '$a' not predeclared in <anonymous> (/tmp/y54iJ6iQdJ:22)» | ||
lue | rakudo: grammar A { regex B { <C>|<D> }; regex C { c<E> }; regex D { d<E> }; regex E { \d+ }}; A.parse("c34", :rule<B>); my $a = $/.keys[0]; say $/{$a}<E> | ||
p6eval | rakudo 015d77: OUTPUT«34» | 23:36 | |
patrickas | LOLITSMASAK ! | ||
lue | rakudo: grammar A { regex B { <C>|<D> }; regex C { c<E> }; regex D { d<E> }; regex E { \d+ }}; A.parse("c34", :rule<B>); say $/{$/.keys[0]}<E> | ||
p6eval | rakudo 015d77: OUTPUT«34» | ||
tadzik | It's a bug! No, it's a feature! No, it's a masak's report! | ||
masak | seems to work fine. | 23:37 | |
lue | Once again, something incomprehensible went wrong locally the first time [copy'n'pasting what I just p6eval'd into my local copy worked fine. Hmm. :/] | 23:40 | |
masak stamps, scowling, on a piece of paper | |||
next! | |||
patrickas | masak: I solved two of the three issues we were having with closure ... but I'm pretty sure you'd want to poke your eyes out when you'll see the solution for not calling the closure block :-) | 23:41 | |
masak | patrickas: sounds interesting. | ||
(and awful, but still interesting) | |||
jnthn puts on glasses to look at it | |||
patrickas | hehehe let me clean up and push somewhere | 23:42 | |
tadzik | btw guys, anyone pulled and recompiled recently? | 23:44 | |
masak | sorear: I now managed to piece together all your antecedents, so the final bug turned out to be quite informative. thank you. | ||
s/bug/bug report/ | |||
lue hopes to finish a semi-usable Pod document viewer by the end of the day | 23:45 | ||
masak | lue: and you'll put it on github, I hope? | ||
(or equivalent) | |||
23:46
ash_ joined
|
|||
tadzik | lue: for Perl6? | 23:46 | |
lue | masak: of course! tadzik: of course! [it's standalone though] | 23:49 | |
masak | lue: looking forward to having a look at it. release early and often. | 23:50 | |
lue | I just don't want to release something that won't run, that's all. | ||
s/run/do its intended purpose to some extent/ | 23:51 | ||
23:58
takadonet joined
|
|||
masak | lue: 'course. it's about the smallest possible working product. | 23:58 | |
sorear | flussence: set -e | ||
help set |