»ö« | perl6.org/ | 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 moritz_ on 25 June 2010. |
|||
sorear | \$c requires me to actually have capture objects, though | 00:02 | |
sorear would like a light weight way to not contextualize an argument | |||
00:07
felliott left
|
|||
TimToady | that's what I think \$c does (though I'm not yet convinced that .item should mean much anything, since every object is already an item...) | 00:07 | |
lue | y o hai o/ | 00:08 | |
TimToady | I'm wondering what breaks if simply $c is the minimal contextualization? | 00:09 | |
or if we want to hide Parcels and Captures from the eyes of mere mortals, we could just put them outside of Any, and do an auto-thready thing to coerce them to a user-visible type | 00:13 | ||
then your no-context is simply | 00:14 | ||
Capture $c or Parcel $p | |||
much like you can work with a bare Junction if you declare Junction $j | |||
it would be really nice if we could keep things like .item out of the hot path of binding | 00:15 | ||
jnthn: ^^^ might simplify a lot of things, but we'd have to generalize junctional autothreading to Capture/Parcel argument rewriting | 00:17 | ||
but we've already talked about such a generalization for an Each type | 00:18 | ||
jnthn | TimToady: Generalizing dispatch fail-over doesn't immediately scare me. | ||
phenny | jnthn: 14 Jul 22:39Z <masak> tell jnthn &mkdir seems to create the cache/ dir without any permissions whatsoever here. so the fetch fails in proof-of-concept because git doesn't have enough permission. | ||
jnthn | phenny: tell masak upgrade to Windows | 00:19 | |
phenny | jnthn: I'll pass that on when masak is around. | ||
TimToady | each is in S09:1063 | ||
jnthn | .oO( I'm gonna get smacked for that. ) |
||
TimToady: I'm not sure what the fallout would be otherwise. | |||
TimToady: Keeping hot paths hot is, of course, a nice thing though. | |||
TimToady | will anything terrible break if we put Capture and Parcel outside of Any | ||
might be worth an experiment | 00:20 | ||
jnthn | TimToady: I expect quite a lot would. (more) | ||
lue | jnthn: if pir::issame isn't right, then what is? [looking...] | ||
sorear | Why are we hiding Capture and Parcel, anyway? | ||
jnthn | TimToady: The question is whether anything breaks in a way that isn't easily patched up by having fallback. | ||
TimToady | basically, anything outside of Any is more of a lazy linguistic construct than a normal object | ||
and Parcels and Captures can be viewed as lazy linguistic constructs | |||
like Each and Junction | 00:21 | ||
jnthn | TimToady: It'd be good to get pmichaud++'s input. | ||
TimToady | in that case you should mention his nick...oh wait... | ||
00:21
sftp left
|
|||
jnthn | TimToady: He has a better sense than I do of how Parcel fits into the overall model of listy things. | 00:22 | |
TimToady: On captures, I'm not sure what the fallback action would be. | |||
TimToady | it feels like a simplification to me, in the sense that it could entail removing a lot of introspection, which might be work | ||
sorear | Capture already itemizes to itself | ||
00:22
sftp joined
|
|||
jnthn | TimToady: That is, if I pass a Capture where Any is expected, what happens. | 00:22 | |
sorear | I think the only standard type with a non-identity .item is Parcel | ||
00:23
sftp left
|
|||
jnthn | sorear: Yes, Capture .item's to itself for sure. | 00:23 | |
TimToady | so maybe only Parcel needs to be considered linguistic | ||
00:23
sftp joined
|
|||
jnthn | Aye | 00:23 | |
Passing Captures around is actually quite useful. | |||
sorear | but being able to define stuff with interesting item context behavior is useful for user code | ||
TimToady | it violates some principle or other | 00:24 | |
sorear | TimToady: S06:2502? | 00:25 | |
00:25
plobsing joined
|
|||
TimToady | that could be handled by grabbing the whole arglist capture | 00:26 | |
jnthn | TimToady: fwiw, here are the things in Rakudo that define an item method: Iterable, Junction, Parcel, Mu | ||
TimToady | and that seems powerful enough to me | ||
sorear | I don't understand | ||
I don't see an arglist there | |||
TimToady | 1,2,3 is an arglist | ||
jnthn | TimToady: The one in Mu is identity | 00:27 | |
lue | Are there any other comparison ops besides what's at docs.parrot.org/parrot/latest/html/...p.ops.html ? | ||
jnthn | TimToady: So is the one in Junction. | ||
lue | out of all of them, issame seemed like the 'most right' one. | ||
TimToady | Iterable or Iterator? | ||
sorear | TimToady: S06:2502 doesn't have 1,2,3? | 00:28 | |
jnthn | TimToady: That just leaves Parcel (which Seqs it) | ||
And Iterable which...er...I don't understand what that code is doing. :-) | |||
TimToady | 2502 is a blank line | ||
jnthn | TimToady: Certainly Iterable, not Iterator | ||
TimToady | but I see what you're pointing at | ||
sorear | jnthn: I understand Iterable.item | 00:29 | |
it's a Rakudo-specific hack | |||
variables in Perl 6 can be listy or scalary; Iterable.item is used to clear the list bit | 00:30 | ||
TimToady | Iterable is supposed to just be a role that supplies a way to pull an iterator from a non-iterator | ||
jnthn | sorear: It's not really a hack as far as I can tell | ||
sorear: As in, it needs to clear the flatten bit | |||
sorear: That's just how Rakudo represents that information. | |||
TimToady | flattening is not really an attribute of an object, it's how it's interpolated and bound | 00:31 | |
sorear | jnthn: the flatten bit is really part of the ref, not the object; it should be cleared in the binder | ||
jnthn | sorear: Note that it's setting the property on the container, not the object. | 00:32 | |
TimToady | $x := @x, then $x never flattens, @x might iff bound to slurpy | ||
jnthn | (setprop, unlike most other v-table methods, is not transparent here) | ||
TimToady: Anyway, it seems there's just two places that .item does something != identity. | 00:33 | ||
TimToady: So it may not be epic upheavel. | 00:34 | ||
TimToady: In the multi case we may be able to do some caching junction-style for the speed win too. | 00:35 | ||
00:35
rgrau` left
|
|||
jnthn | (when Rakudo's multi-dispatcher falls back to exploding a junction, it installs a dispatch cache entry so the next time around it can jump straight to doing that) | 00:36 | |
TimToady | really, the flatten bit is just an instruction to the next binding, so throwing it away is kinda out of band to the notion of context; it should just always happen in any case | 00:39 | |
lue | rakudo: my $a = 3; my $b := $a; say "{$a.WHERE}, {$b.WHERE}" | 00:40 | |
p6eval | rakudo c3f559: OUTPUT«116903632, 116903632» | ||
TimToady | it could even be done with a hidden arg in the capture that is always skipped and never bound | 00:41 | |
or a hidden bitmap in the capture that is thrown out after binding, say | 00:42 | ||
and then only slurpies need look at the bitmap | |||
and binding $x := @x doesn't raise the danger of propagating a flatten bit | 00:43 | ||
jnthn | Hmm | ||
Sounds at least plausible. | |||
TimToady | p6 is all about attaching data to the right spot :) | ||
00:44
justatheory joined
|
|||
TimToady | when you throw away the capture, you automatically throw out the flatten flags with it | 00:44 | |
and for 1,2,3 the bitmap can even be empty | 00:45 | ||
and for a proto without a slurp, the bitmap need not be generated | 00:46 | ||
lots of room to get down to very fast scalar binding | |||
I've had .item in my crosshairs for some time now, but not a good explanation for why I dislike it | |||
bbl & | 00:47 | ||
00:49
gbacon joined
|
|||
sjohnson | "#perl6... the friendliest place on Earth (freenode)" -- official #perl6 slogan | 00:56 | |
ingy | moritz_: you around? | 00:57 | |
sorear | sjohnson: I approve. | 00:58 | |
Is &infix:<//> a macro? | |||
ingy | moritz_: how would you feel about ufo building .pir files in a blib/ instead of in lib/ ? | ||
moritz_: the lib thing is annoying me mostly because of tab completion | 00:59 | ||
ingy actually _uses_ perl 6 ALL DAY LONG! | |||
sjohnson | i gotta get into this perl 6 stuff | ||
kind of afraid to try compiling rakudo | |||
gcc and configure scripts seem to dislike me | 01:00 | ||
ingy | sjohnson: really?! | ||
what os? | |||
sjohnson | they afraid me | ||
ingy: desktop-wise i am a Win 7 x64 kinda guy... but for actual perl stuff, ubuntu | |||
usually just log in and i built a perl 5 sandbox that i play around in very oftne | |||
often* | |||
ingy | nod | ||
sjohnson | and my friends $cow, $pig, and $chicken are regulars there | 01:01 | |
and @farm; :) | |||
ingy | :) | ||
rakudo is a pretty tame build imho | |||
sjohnson | adds a bit of fun to perl coding at work | ||
tylercurtis | sjohnson: git clone $RAKUDO_URL; perl Configure.pl --gen-parrot; make; # wait for the build to complete; # enjoy the goodness of Perl 6.-$n | 01:03 | |
sjohnson | nice | ||
wow | |||
Configure.pl | |||
a novel idea! | |||
:thumpsup: | |||
jnthn | TimToady: You mentioned in a previous muttering something about Num.REPR (or maybe Int.REPR) as part of the storage constraint. However, if we want Num.REPR to be fixed to e.g. some representation that just stores a numeric value, how does that fit with people then wanting to mix things into it? Could be say that they can only mix things that add methods into such a thing, or subclass Num in a way that adds methods, not stroage? | 01:08 | |
lue | jnthn: I noticed your comments on the use of issame. As far as I could tell, it's the 'most right' opcode. Any suggestions? | ||
[ I'm wondering if using the .WHERE's is cheating and unreliable... ] | |||
jnthn | TimToady: Also further to your spec tweak the other day, I take it we can also assume that if some type T has repr contraint P6Object and S ~~ T, S must also have that same constraint? | 01:09 | |
TimToady: (If not, the whole exercise becomes vaguely pointless from the optimization angle, I fear.) | |||
lue: Let me go check what Parrot's issame opcode does. | |||
lue: yeah, it's fail for =:= | 01:11 | ||
lue: the op does | |||
if ($2 == $3) | |||
$1 = 1; | |||
else | |||
$1 = VTABLE_is_same(interp, $2, $3); | |||
That is, it delegates to the PMC's idea of same-ness rather than just a check on "is this the same thing" | |||
(e.g. a reference-y check) | |||
lue: re .WHERE - it's certainly a better approximation than issame. | 01:12 | ||
lue: Parrot also has an op eq_addr | |||
lue: or maybe eqaddr | |||
lue | rakudo: sub xyzzy($a) { say $a.WHERE }; my $b; xyzzy($b); say $b.WHERE | 01:13 | |
p6eval | rakudo c3f559: OUTPUT«9650593696505936» | ||
lue | rakudo: sub xyzzy(\$a) { say $a.WHERE }; my $b; xyzzy($b); say $b.WHERE | ||
p6eval | rakudo c3f559: OUTPUT«9650593696505936» | ||
lue | > my $a = 3; my $b := $a; $a =:= $b | 01:19 | |
1 | |||
jnthn | TimToady: On another question, how hidden are representations beyond just being a string name? I know that it's spec'd as a string argument to CREATE rather than P6opaque being something that appears as an object a user can play with. Do you envision that changing? It somewhat drastically affects the whole "what is the most primitive thing" question in a sense. | 01:20 | |
lue | > say 3 | ||
Too many positional parameters passed; got 2 but expected 1 | |||
I think I broke say and print though :D | |||
jnthn | Congrats! | ||
sjohnson | jnthn: yo | 01:22 | |
lue | I don't see how. I only modified src/core/operators.pm and src/cheats/relops.pir ... | ||
01:22
skyheights joined
|
|||
jnthn | sjohnson: hi! | 01:22 | |
sjohnson | how's that windows-based OS treatin ya | 01:23 | |
heh | |||
jnthn | TimToady: My feeling at the moment is that they're just something that is name-able from user-space and not much more. I guess this comes down to, is method dispatch more primitive than storage, and we have some object you can make calls on to set up storage, or is storage more primitive and we build on top of it something that can store methods and look them up. | 01:24 | |
sjohnson: Just fine. ;-) | 01:25 | ||
01:25
payload1 joined
|
|||
jnthn | TimToady: Of course, if the repr things are strings it can go either way. If they're meant to be object-y then we kinda somehow probably want to have dispatch as the primitve thing and state is arrived at by those methods containing magical low-level things that can allocate state etc. | 01:26 | |
TimToady: I'm liable to call it as "representation is most primitive" since I think that can go faster at first blush, and it likely makes my life easier. But it'd be nice to know your latest thinking on the area. | 01:28 | ||
lue: diff? | 01:29 | ||
lue | gist.github.com/476369 | 01:30 | |
jnthn | well. wtf. | 01:31 | |
lue: The only thing that uses it is RoleToRoleApplier.nqp | 01:32 | ||
(in Rakudo core) | |||
In src/metamodel/ | |||
It'd be odd for that to lead to the issue you've got though. :S | |||
oh | 01:33 | ||
also taht is nqp code | |||
lue | rakudo: say "something to clarify that this is an issue with my code" | ||
p6eval | rakudo c3f559: OUTPUT«something to clarify that this is an issue with my code» | ||
jnthn | which won't compile down to the &infix:<=:=> in Rakudo anyway | ||
lue | lemme switch branches and see something [I remembered the branches thing] | 01:34 | |
01:36
crythias joined,
skyheights left
|
|||
lue | ...well, seems switching branches isn't helping me. It still has changes I put in my local branch. | 01:39 | |
jnthn | lue: Did you commit them? | ||
lue | yes. I commited, then did git rebase xyzzy [local branch name]. Is there a command that could help you [like git status] ? | 01:40 | |
jnthn | oh, did you want to switch branch? | 01:41 | |
lue | yes, to see if I screwed up something regardless of my =:= changes | ||
lue considers setting up a junk git repo to practice | 01:42 | ||
jnthn | git checkout master # switches to the master branch | 01:44 | |
lue: git takes some learning/getting used to :-) | |||
lue | don't you me gitting used to? :) | ||
I am there, and I can tell something went wrong when vim src/cheats/relops.pir doesn't show =:= code I removed. | 01:45 | ||
jnthn | :S | ||
lue | lue@twigil:~/rakudo$ git checkout master | ||
Already on "master" | |||
Your branch and 'origin/master' have diverged, | |||
and have 12 and 2 different commit(s) each, respectively. | |||
jnthn | And git diff shows nothing | ||
? | |||
lue | lue@twigil:~/rakudo$ git diff | 01:47 | |
lue@twigil:~/rakudo$ | |||
jnthn | I'm confused then. | ||
sjohnson | eval: print "4 + 4"; | 01:48 | |
lue | I followed these commands: [branch xyzzy] git add [changed files]; git commit; git checkout master; git pull; git rebase xyzzy | ||
sjohnson | buu: how do you get buubot to start speaking in p5? | ||
lue | [ I'll ask on #git later, then ] | ||
jnthn | buubot: eval print "4 + 4" | ||
sjohnson | you haven't pushed | ||
buubot | jnthn: 4 + 41 | ||
ash_ | lue: you have diverged, you need to re-merge the branch with the target branch you were working from | ||
buu | sjohnson: eval | ||
sjohnson | i tried eval, but no luck | ||
buu | What? | 01:49 | |
sjohnson | buu: works in #perl though | ||
buu | buubot: eval: 2+2 | ||
buubot | buu: 4 | ||
sjohnson | oh | ||
buu | It's in address only mode here | ||
sjohnson | oh i c | ||
jnthn | lue: shouldn't have even needed the pull and rebase there, btw | ||
sjohnson | buu: eval: use v5.10.0 | ||
buubot: eval: use v5.10.0 | |||
buubot | sjohnson: No output. | ||
sjohnson | buubot: eval: use v5.14.0 | ||
buubot | sjohnson: ERROR: Perl v5.14.0 required--this is only v5.10.1, stopped at (eval 39) line 2. BEGIN failed--compilation aborted at (eval 39) line 2. | ||
sjohnson | nice | ||
thank yous | |||
lue | lue@twigil:~/rakudo$ git merge master xyzzy | 01:51 | |
Already up-to-date. Yeeah! | |||
I'll figure it out later, I'm trying to find out how to build my own oscilloscope right now. | |||
jnthn | Think it's time for me to sleep. | ||
night all o/ | |||
lue | goodnight o/ | 01:52 | |
sjohnson | cya | ||
git is a big deal. | |||
i just got my Pro Git book in the mail today. work will pay for it | |||
probably should have just read it online... buut i like smelling books | 01:53 | ||
and owning one | |||
01:54
hercynium joined
|
|||
lue | there should be a --navi option or some such, so that when you excecute a command that doesn't do anything, it tries to see what you meant to do :) | 01:54 | |
01:55
mikehh joined
01:56
ashleydev left
|
|||
sjohnson | there is a dry run command already | 01:56 | |
for some things | |||
--no-commit | |||
use that sucker when you're doing a merge test | |||
oh | 01:57 | ||
this site says you need something else maybe | |||
stackoverflow.com/questions/501407/...run-option | |||
ive definitely had a merge screw up on live data | |||
and i was spanked | |||
lue | > git --navi merge master xyzzy | 02:00 | |
Nothing. HEY LINK HEY HEY [ >.< ] | 02:01 | ||
02:01
cdarroch left,
whiteknight left
|
|||
sjohnson | where are you getting navi from | 02:02 | |
this link i posted says to use two args, none of which say navi | |||
--no-commit --no-ff | |||
ahh, someone said this still changes stuff | |||
not a true dry run yet | |||
lue | sjohnson: have you ever played The Legend of Zelda: Ocarina of Time ? | 02:03 | |
sjohnson | i played it about a month ago | 02:04 | |
and didn't really get into it | |||
busted out the ol n64 | |||
not a huge fan of the 3d zeldas | |||
i prefer Zelda I && II for the NES | |||
02:05
stephenlb joined
|
|||
sjohnson | kind the same way i prefer final fantasy 1-6 games, and nothing past 6 | 02:05 | |
lue | If you ever play the whole thing, then Navi's [the fairy's] annoying phrases will be imprinted in your head. | 02:06 | |
sjohnson | hahaha | 02:07 | |
nice | |||
now that makes more sense :) | 02:08 | ||
git needs --dry-run, and --just-do-it! ... it's opposite | |||
anyways gtg, cya! | |||
lue | bai o/ | ||
02:13
drbean_ joined
02:16
drbean left
02:18
drbean_ left
|
|||
tylercurtis | rakudo: say "\n\n" ~~ /\h+/ | 02:18 | |
p6eval | rakudo c3f559: OUTPUT«» | ||
02:18
drbean joined
|
|||
tylercurtis | rakudo: say ("\n\n" ~~ /\h+/).Bool; | 02:19 | |
p6eval | rakudo c3f559: OUTPUT«0» | ||
02:26
dukeleto joined
|
|||
dukeleto | hola | 02:26 | |
dukeleto is at PDX.pm, where we are having a "Rakudo feet-wetting" | |||
02:26
duckyd joined,
notbenh1 joined
|
|||
tylercurtis hates something that he lives in what is essentially the middle of nowhere. | 02:29 | ||
02:29
mikehh_ joined
02:30
mikehh left
02:35
drewk joined
02:42
sahadev joined
02:47
felliott joined
|
|||
dukeleto | perl6: say.time().WHAT | 02:50 | |
p6eval | rakudo c3f559: OUTPUT«Method 'time' not found for invocant of class 'Bool' in main program body at line 20:/tmp/n7e8trzSvF» | ||
..pugs: OUTPUT«*** No compatible multi variant found: "&time" at /tmp/tMPlrvowWL line 1, column 1 - line 2, column 1» | |||
duckyd | perl6: time().WHAT.say | 02:51 | |
p6eval | rakudo c3f559: OUTPUT«Num()» | ||
..pugs: OUTPUT«Rat» | |||
duckyd | perlcabal.org/syn/S32/Temporal.html#time | ||
says Int | |||
02:57
destiney joined
|
|||
ash_ | that might be a fossil (in the implementations) Temporal has been getting modified a lot recently | 02:57 | |
dukeleto | what type should time() return? The spec says Int, Perl6::Doc say Rat and Rakudo says Num | 02:58 | |
duckyd | ash_: you're thinking it will be Int in the [near] future? | ||
ash_ | yea | 02:59 | |
02:59
felliott left
|
|||
duckyd | thanks :) | 02:59 | |
02:59
felliott joined
|
|||
ash_ | r31678 changed it to an int, that was 12 hours ago | 02:59 | |
03:00
snarkyboojum left
|
|||
ash_ | yeah, that was a fairly recent change, it was Num for a long time though | 03:00 | |
03:01
isBEKaml left
|
|||
duckyd | cool, thanks | 03:04 | |
ash_ | i think the correct way of looking at this problem is the spec is correct, the implementations are out of date :P by about 12 hours | ||
03:11
masonkramer joined
03:17
ashleydev joined
03:21
snarkyboojum joined
03:23
snarkyboojum left
03:24
hercynium left
|
|||
dukeleto | how does one add something to proto.perl6.org ? | 03:27 | |
sorear | commit it to the proto github repository | 03:28 | |
hugme: show proto | |||
hugme | sorear: the following people have power over 'proto': PerlJam, TimToady, [particle], colomon, jnthn, masak, moritz_, pmichaud. URL: github.com/masak/proto/ | ||
sorear | ping one of those people | ||
03:35
gbacon left
03:37
stephenlb left
|
|||
dukeleto | sorear++ | 03:39 | |
03:40
notbenh1 left
03:42
drewk left,
felliott left
03:43
felliott joined
03:47
duckyd left
03:50
agentzh joined
|
|||
tylercurtis | .u smile | 03:52 | |
phenny | U+2323 SMILE (⌣) | ||
tylercurtis | .u smiley | ||
phenny | tylercurtis: Sorry, no results for 'smiley'. | ||
tylercurtis | .u happy face | ||
phenny | tylercurtis: Sorry, no results for 'happy face'. | ||
tylercurtis | .u smiling face | ||
phenny | U+263A WHITE SMILING FACE (☺) | ||
03:55
tedv left
03:56
mikehh_ is now known as mikehh
04:14
jaldhar joined,
supernovus joined
|
|||
mberends | sorear: giving neicza a spin here, just had to clear out my own PERL6LIB ("cannot open unicode maps from ...") and it Just Worked through to test.pl. With mono 2.4.4. Kudos! | 04:17 | |
supernovus | I have found an interesting 'bug' in the REPL. | 04:19 | |
If you 'use' a module that exports a subroutine, on its own line, the subroutine is not exported unless you 'use' it twice. | 04:22 | ||
04:23
sahadev left
|
|||
supernovus | rakudo: use DateTime::strftime; say strftime('%A', DateTime.now) | 04:24 | |
p6eval | rakudo c3f559: OUTPUT«Thursday» | ||
tylercurtis | rakudo: use Test; plan 5; | ||
p6eval | rakudo c3f559: OUTPUT«1..5# Looks like you planned 5 tests, but ran 0» | ||
supernovus | That works as it is on one line. It also works in a .p6 file on separate lines. But if you try to use it in the REPL on separate lines, it says it cannot find a subroutine named strftime(). Unless you do the "use DateTime::strftime;" twice. | 04:26 | |
I tested it with another class I just wrote that exports a subroutine, and the same thing. If you don't "use" the module twice, it doesn't find the exported subroutine. | 04:30 | ||
04:32
snarkyboojum joined
04:36
crythias left
04:37
ashleydev left
04:40
sahadev joined
04:42
drewk joined
|
|||
supernovus | Bug submitted. | 04:42 | |
04:43
supernovus left
04:46
justatheory left
|
|||
cxreg | hm, would be nice to be able to pass a -j option to make in build/gen_parrot.pl | 04:50 | |
cxreg patches | |||
sorear | mberends: nice! for STD that's pretty good | 04:55 | |
mberends | sorear: reading your source is also nice. Commented, unlike most @other ;) | 04:57 | |
sorear | Rather less so than it should be | 04:58 | |
I've commented everything that I expect to myself forget | |||
but a lot of the less nasty stuff needs more exposition | |||
mberends | It's a good start. Yes, the holes are also evident. | 04:59 | |
cxreg | :q | 05:00 | |
hugme hugs cxreg, good vi(m) user! | |||
cxreg | oops | ||
mberends remembers to poke Zavolaj | 05:02 | ||
sorear | er. | ||
mberends: what stage broke? afaict PERL6LIB should always be overwritten | |||
05:03
sahadev left
|
|||
cxreg | meh, this is harder than expected. all opts to that script go directly to parrot's Configure.pl which doesn't care about make opts | 05:03 | |
TimToady | phenny: tell jnthn I don't think reprs need to be types, but I hesitate to make the strings too simply because we might want to make them objects of their own type someday. So maybe just enum constants so we don't need quotes. | ||
phenny | TimToady: I'll pass that on when jnthn is around. | ||
sorear | cxreg: if you're doing anything interesting I recommend NOT using --gen-parrot | 05:04 | |
build your own Parrot from svn.parrotcode.org sources, perl Configure.pl --optimize, make, sudo make install | 05:05 | ||
cxreg | $interesting ? | ||
TimToady | phenny: tell jnthn re deriving with a different repr, I've always assumed if we detected a repr mismatch we'd emulate derivation with delegation at that point somehow, so as long as classes agree, they can optimize together | ||
phenny | TimToady: I'll pass that on when jnthn is around. | ||
cxreg | sorear: isnt that what gen-parrot does? | ||
sorear: i just read the code, it sure looked that way | |||
TimToady | phenny: tell jnthn the same thing presumably happens when we cross repr boundaries that happen to span language boundaries | ||
phenny | TimToady: I'll pass that on when jnthn is around. | ||
mberends | sorear: with a rogue PERL6LIB niezca make failed at `cd stage0 && ./std CORE.setting` | 05:06 | |
sorear | ah. that's deep in the STD.pm6 build system | ||
not sure if I can sanely fix it | |||
STD.pm6 is really not designed to be a reusable software component | 05:07 | ||
mberends | right | ||
sorear remembers that mberends is no stranger to this problem (*cough* vill) | 05:08 | ||
mberends | heh | ||
cxreg wonders if jnthn ever got a chance to kick zavolaj | |||
05:08
felliott left
|
|||
mberends | no, zavolaj was last kicked by jnthn in April | 05:09 | |
lue | hai o/ | 05:13 | |
mberends | cxreg: if your Zavolaj appears to be br0k3n, is the timestamp on your installed NativeCall.pir older than your parrot? That could be a Bad Thing. | 05:14 | |
05:14
snarkyboojum left
05:23
snarkyboojum joined
|
|||
ingy | greetings \o | 05:24 | |
tylercurtis | Hello, ingy. | ||
mberends | \o | ||
sorear | Greetings, ingy. | 05:25 | |
+o mberends | |||
ingy | :) | ||
sorear | ok that's a new one. | ||
05:26
sorear sets mode: +o mberends
|
|||
sorear | (/msg #perl6 ...) | 05:26 | |
mberends loves the taste of cinnamon buns (@) in the morning.. | 05:27 | ||
ingy still needs to get his rakudo waiver thing to pmichaud | 05:28 | ||
cxreg | mberends: i rebuilt it a few times | ||
ingy | maybe I'll hand deliver at oscon. | ||
sorear | What is the correct signature for &infix:<=> | ||
? | |||
ingy | _crickets_ | 05:32 | |
snarkyboojum chirps | 05:34 | ||
sorear | the crickets around here are all dead. | 05:40 | |
snarkyboojum keels over | 05:41 | ||
mberends | cxreg: Zavolaj is broken here too. The symptoms changed after rebuilding NativeCall.pir, most likely because of a recent change in Parrot or Rakudo. I'll try to bribe jnthn++ to take a look. | 05:43 | |
moritz_ | good morning | 05:47 | |
mberends | \o moritz_ | 05:48 | |
05:48
PZt left
|
|||
sorear | good morning | 05:52 | |
moritz_ | ingy: re blib/, I'm all for it | 05:59 | |
05:59
snarkyboojum left
06:02
cjk101010 joined
|
|||
cxreg | mberends: "expected OpaquePointer but got Failure instead" | 06:03 | |
mberends: look familiar? | |||
mberends | cxreg: exactly | ||
cxreg | mberends: yeah, i already asked jnthn, he had some ideas | 06:04 | |
my Failure $self; # emo perl 6 | 06:06 | ||
06:09
cotto left,
uniejo joined
06:11
tylercurtis left
|
|||
sorear | Compilation failed: 1012 error(s), 0 warnings | 06:14 | |
moritz_ | cxreg, mberends: I have two ideas what could be the cause 1) the lexicals/closure fix and 2) different containerization (might need a pir::descalarref__PP($ojb) in some places) | 06:17 | |
cxreg | it's probably a good opportunity for me to poke a little deeper anyway | 06:19 | |
mberends | moritz_: those look like good hunches, especially 2) so I'll try a patch | 06:22 | |
moritz_ | rakudo: say 1 | ||
p6eval | rakudo c3f559: OUTPUT«1» | ||
moritz_ | mberends: there's also a suspicious pir::clone in NativeCall.pm6:101 | 06:23 | |
rakudo: die 1 | |||
p6eval | rakudo c3f559: OUTPUT«1 in main program body at line 20:/tmp/DROjpwICNW» | ||
moritz_ | rakudo: ... | ||
p6eval | rakudo c3f559: ( no output ) | 06:24 | |
06:24
snarkyboojum joined
|
|||
cxreg | what's |$c mean? | 06:24 | |
moritz_ | interpolation of $c into a signature | 06:25 | |
cxreg | ah | ||
moritz_ | rakudo: sub f() { ... }; f(); say "alive"; | ||
p6eval | rakudo c3f559: OUTPUT«alive» | ||
moritz_ | ah, it's probably a soft failure | 06:26 | |
rakudo: sub f() { ... }; say f(); say "alive"; | |||
p6eval | rakudo c3f559: OUTPUT«alive» | ||
cxreg | man, NativeCall is some real wizardry :/ | ||
moritz_ | but *that* should die | ||
cxreg | what is the general consensus for Perl 6 code that uses pir:: stuff, wrt portability and other implementations? should such code be clearly marked "Rakudo ONLY!"? | 06:28 | |
moritz_ | I'd say that pir:: marks it as Raudo only :-) | ||
I avoid it in high-level modules | 06:29 | ||
cxreg | i guess if someone wanted to be clever, they could write wrappers in the pir:: space that emulated it | 06:30 | |
mberends | unfortunately pir::based code seldom gets checked by the test suite. It would be very Rakudo specific. | 06:31 | |
sorear | pir:: stuff isn't Rakudo only; it's Parrot only | ||
pmichaud says that post R* Rakudo is going to become less Parrot-specific | 06:32 | ||
cxreg | hr m | ||
sorear | i.e. other VMs will potentially be supported | ||
mberends | yes, there might be nqp::stuff in future as well for greater portability | 06:33 | |
moritz_ would prefer vm:: | 06:35 | ||
cxreg | vms:: | ||
sorear | oh dear no not vms:: | ||
moritz_ | OH NOEZ | ||
cxreg | :-) | ||
pugssvn | r31692 | lwall++ | [t/spec] mark various tests that intentionally declare things that are not used | 06:43 | |
06:45
PZt joined
|
|||
sorear | #OK not used ? | 06:45 | |
is that like /*ARGSUSED*/ ? | |||
TimToady | it says suppress it if there's a warning like $x is declared but not used | 06:52 | |
which STD finds many of in the test suite | |||
because tests are strange that way | 06:53 | ||
especially tests that are testing binding and multis | |||
std: multi foo (Str $s) { 'Str' } # many tests look like this | 06:55 | ||
p6eval | std 31691: OUTPUT«Potential difficulties: $s is declared but not used at /tmp/oSbqqm2MdC line 1:------> multi foo (Str ⏏$s) { 'Str' } # many tests look like thok 00:01 115m» | ||
TimToady | std: multi foo (Str $s) { 'Str' } # many tests look like this #OK not used | ||
p6eval | std 31691: OUTPUT« not usedok 00:01 111m» | ||
TimToady | whoops, looks like theres a debugging message in there somewhere... | 06:56 | |
sorear | niecza: sub foo($) { 'Str' } | 06:57 | |
p6eval | niecza: ( no output ) | ||
06:57
baest joined
|
|||
sorear | # shouldn't the tests look like these? even my two-week-old compiler supports that | 06:58 | |
TimToady | sometimes they're testing it both ways | ||
and changing the tests that drastically isn't my main concern at the moment, esp if the arg names are serving as documentation | 06:59 | ||
and maybe it points out that we need a way to say 'anon' inside a sig somehow | 07:00 | ||
or maybe they could just turn into :s($) | 07:01 | ||
but I recognize that #OK is a bit kludgey | 07:02 | ||
I'll want it for other warnings too though | |||
like testing to see if 000042 has the value 42 :) | 07:03 | ||
saaki | maybe 34? =o | 07:06 | |
sorear | I'm not terribly opposed to magic comments, but I'd like them to be more recognizable | 07:07 | |
all caps and no spaces in the lint(1) tradition is what I'd naturally take | |||
07:08
xabbu42 left
07:11
meppl joined
|
|||
TimToady | #OK is all caps and no spaces :) | 07:12 | |
moritz_ | rakudo: multi f(Str $) { 'Str' } | ||
p6eval | rakudo c3f559: ( no output ) | 07:13 | |
TimToady | and you can use it by itself to suppress any warning, but it helps to say which warning you're suppressing | ||
moritz_ | std: multi f(Str $) { 'Str' } | ||
p6eval | std 31692: OUTPUT«ok 00:01 114m» | ||
moritz_ | std: multi f(Str $x) { 'Str' } | ||
p6eval | std 31692: OUTPUT«Potential difficulties: $x is declared but not used at /tmp/gnom0i58_z line 1:------> multi f(Str ⏏$x) { 'Str' }ok 00:02 111m» | ||
07:13
_pid joined
|
|||
sorear | TimToady: under what circumstances is the optimizer allowed to break CALLER::<> ? | 07:15 | |
e.g. my $bar; if $foo { CALLER::<$bar> } # should this work? | 07:16 | ||
sub cow { CALLER::CALLER::<$bar> }; my $bar; if $foo { cow; } # how about this? | |||
07:20
_pid left
|
|||
TimToady | well, technically the caller of the block is statement_control:<if>, which has no $bar | 07:22 | |
though I guess caller only really looks at routines | 07:23 | ||
so nevermind that | |||
sorear | I thought statement_control was a macro and had no associated CallFrame | ||
TimToady | sure, that sort doesn't matter since caller ignores blocks anyway | 07:24 | |
*sorta | |||
but cow has one too many CALLERs in the first place | 07:25 | ||
and $bar isn't marked as dynamic, so isn't visible anyway | |||
CALLER::<$_> would presumably be visible though, and make it difficult to inline cow | 07:26 | ||
not impossible though | |||
sorear | CALLER skips over blocks? | ||
TimToady | S06:2426 | 07:31 | |
well, 3 lines below that | |||
S04:649 is probably incorrect, if the block is marked as inlined according to S06 | 07:32 | ||
anyway, the larger intent is that only "real" calls get a CALLER scope, for some definition or other | 07:34 | ||
presumably an inlining optimizer would have to undo CALLER to OUTER or MY | 07:35 | ||
sorear | well, the interesting case is the second one I gave, I think | ||
if $foo { some-function; } # what if some-function calls callframe? can it observe the fact that the if creates a dynamic scope? | 07:36 | ||
pugssvn | r31693 | lwall++ | [STD] fix some 'not used' warning buglets | 07:37 | |
TimToady | well, something has to decide to run the thunk | 07:38 | |
but I don't think we can guarantee that callframe will see every possible frame that the optimizer would like to get rid of | |||
in some sense it just has to deal with what's there, even you've done tail recursion optimization, for instance | 07:39 | ||
alternately we record some number in the current callframe that says how many are missing :) | |||
in general we want to be identifying call frames by pattern match or id, not by position | 07:40 | ||
I'm inclined to push the defaults in favor of the optimizer, and require explicit pessimization where required by the foibles of the code | 07:42 | ||
sorear | ehehehe... I had my $x defaulting to 'ro' | 07:47 | |
no wonder it exploded when I implemented ro checks | |||
TimToady | well, that's good for SSA style, at least :) | ||
I'd better go thunk on my pillow | 07:48 | ||
sorear | 'night | ||
TimToady | zzz & | ||
sorear | niecza now has all tests passing again | ||
w/ item and list context implemented | |||
dalek | ecza: 432a3a1 | sorear++ | Kernel.cs: Describe structure of new lvalue stuff |
07:49 | |
ecza: 4d47d8d | sorear++ | Kernel.cs: implement new variable + bind handling |
|||
ecza: 2e6fcc0 | sorear++ | Kernel.cs: Eliminate .item and turns into Seq during fallback. |
|||
ecza: cf20652 | sorear++ | (2 files): rename niecza to niecza_eval to avoid collision with Niecza/ (snarkyboojum) |
|||
ecza: aeb0302 | sorear++ | (10 files): Yak shave until it builds. Tests still somewhat broken. |
|||
ecza: b9f8bd4 | sorear++ | (2 files): my $x really shouldn't default to ro. All tests pass again |
|||
07:50
plobsing left
|
|||
sorear | moritz_: you can pull again; note that the niecza runner script has been renamed for HFS+ compatibility | 07:51 | |
moritz_ pulls | 08:05 | ||
pugssvn | r31694 | moritz++ | [evalbot] track name change in niecza | 08:09 | |
dalek | ecza: f68a8eb | sorear++ | CodeGen.pm: Separate codegen ops into internals, primitives, and derived |
08:13 | |
moritz_ | evalbot control restart | 08:15 | |
08:15
p6eval left
08:16
p6eval joined
|
|||
moritz_ | niecza: say 2 | 08:16 | |
p6eval | niecza: OUTPUT«2» | ||
moritz_ | so it picked up the new executable name | ||
08:17
sorear sets mode: +o p6eval
|
|||
sorear | er | 08:17 | |
08:17
sorear sets mode: -o+v p6eval p6eval
|
|||
sorear | niecza: 1 = 2; # NEW FEATURE | 08:18 | |
p6eval | niecza: OUTPUT«Unhandled Exception: System.Exception: assigning to readonly value at Niecza.Kernel.AssignC (Niecza.Frame th) [0x00000] in <filename unknown>:0  at Niecza.Frame.Continue () [0x00000] in <filename unknown>:0  at EntryPoint.Main () [0x00000] in <filename unknown>:0 "mono --de… | ||
moritz_ | sorear: should I filter out these over-long backtraces in p6eval? | 08:20 | |
sorear | moritz_: if you want. I consider them a bug | ||
moritz_ | back when rakudo emitted parrot backtraces, I would simply cut off after the first line | ||
sorear | niecza doesn't use the CLR stack, so the fact that it uses CLR exceptions is broken | 08:21 | |
but I don't have the p6 stack unwinder working yet | |||
08:21
Mowah joined
|
|||
sorear | niecza: 2.cow # watch as the exception unwinder itself crashes! | 08:22 | |
p6eval | niecza: OUTPUT«Unhandled Exception: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.Collections.Generic.Dictionary`2[System.String,System.Object].get_Item (System.String key) [0x000a8] in /home/p6eval/perlesque/mono/mono-2.6.4/mcs/cla… | ||
sorear | aww, it cut off before showing the 'Throw' in the backtrace | ||
moritz_ | sorear: I'm curious, what's your overall plan for niecza? slap on more features and attract users? or explore some cornerns of the spec? speed? all of them? | ||
sorear | in the very long term, all of them | 08:23 | |
in the merely long term, I'm trying to get STD.pm6 to run on it | |||
moritz_ | so, bootstrapping | 08:24 | |
sorear | yes | ||
moritz_ likes that | |||
sorear | lists are a big priority right now because of regex backtracking | ||
moritz_ | (not that I have any say in it...) | ||
sorear | once lists are working, other things that STD definitely needs are roles, multimethods, and regexes | 08:27 | |
and packages | |||
08:32
Mowah left
|
|||
cxreg | Perl 6: There's An Op(erator) For That(tm) | 08:37 | |
08:48
dakkar joined
08:50
Mowah joined,
thebird joined
08:56
timbunce joined,
clintongormley joined,
xabbu42 joined
09:01
ejs joined
09:12
dimid_ joined,
xabbu42 left,
christine left,
HarryS left,
pnate left,
zachy left,
szabgab left,
snarkyboojum left,
uniejo left,
drewk left,
lue left,
Lorn left,
pmichaud left
09:13
zachy joined
09:14
HarryS joined
09:18
pugssvn joined,
christin1 joined,
hudnix joined,
snarkyboojum joined,
uniejo joined,
drewk joined,
christine joined,
lue joined,
Lorn joined,
proller joined,
pnate joined,
szabgab joined,
pmichaud joined,
BinGOs joined,
gabiruh joined,
Juerd joined,
m6locks joined,
phenny joined,
cxreg joined,
frodwith joined,
wolverian joined,
Woody2143 joined,
lestrrat joined,
ingy joined,
meteorjay joined,
DemoFreak joined,
jnthn joined,
card.freenode.net sets mode: +ovoo pmichaud phenny ingy jnthn
09:19
christine left
09:21
xabbu42 joined
09:24
Guest79408 left
09:33
timbunce_ joined
09:34
ejs left
09:35
timbunce left,
timbunce_ is now known as timbunce
09:37
dju left
09:39
dju joined
09:40
dju left
09:41
dju joined
09:42
dju left,
dju joined
|
|||
jnthn | morning o/ | 09:43 | |
phenny | jnthn: 05:03Z <TimToady> tell jnthn I don't think reprs need to be types, but I hesitate to make the strings too simply because we might want to make them objects of their own type someday. So maybe just enum constants so we don't need quotes. | ||
jnthn: 05:05Z <TimToady> tell jnthn re deriving with a different repr, I've always assumed if we detected a repr mismatch we'd emulate derivation with delegation at that point somehow, so as long as classes agree, they can optimize together | |||
jnthn: 05:05Z <TimToady> tell jnthn the same thing presumably happens when we cross repr boundaries that happen to span language boundaries | |||
moritz_ | \o morning | 09:45 | |
sorear | morning jnthn | 09:48 | |
arnsholt | std: sub foo is bar { ... } | 09:50 | |
p6eval | std 31694: OUTPUT«ok 00:01 111m» | ||
arnsholt | std: sub foo is bar, blech { ... } | ||
p6eval | std 31694: OUTPUT«===SORRY!===Malformed block at /tmp/lLRSVqu1wH line 1:------> sub foo is bar⏏, blech { ... } expecting any of: circumfix routine_def traitParse failedFAILED 00:01 107m» | ||
arnsholt | std: sub foo is bar, blech { ... } | ||
p6eval | std 31694: OUTPUT«===SORRY!===Malformed block at /tmp/aeACtafx1w line 1:------> sub foo is bar⏏, blech { ... } expecting any of: circumfix routine_def traitParse failedFAILED 00:01 107m» | ||
arnsholt | Whoops. Hit arrow up instead of shift. | ||
09:54
dju left
10:03
Ross joined,
xabbu42 left
10:04
lestrrat is now known as lest_away
|
|||
xinming | hmm, Maybe a dumb quesiton, Since perl 6 is still in design phase, Which means there might be a big change on syntax, How about rules? Is rules stabilized as I found parrot use it extensively. | 10:04 | |
moritz_ | xinming: grammars/rules are rather stable these days | 10:05 | |
mathw | We're well past the stage where the syntax is being modified | ||
moritz_ | xinming: they are not frozen (ie no guarantuees), but most changes these days are minor | 10:06 | |
mathw: *cough* | |||
xinming | Oh, ok, thanks, In fact, I found I need to learn more regex, which reminds me perl 6 rules. :-) | ||
mathw | moritz_: in any large-scale significant manner, most days :P | ||
moritz_ | "Mastering Regular Expressions" is a great book | ||
xinming | That's why I asked. :-) | ||
mathw | but I don't think we're in danger of suddenly upping sticks and rewriting Perl 6 to use s-expressions | 10:07 | |
moritz_ | mathw: yeah, that's true | ||
xinming | moritz_: So, the rule engine is now implemented by parrot already, right? | ||
in c | |||
moritz_ | xinming: not in c | ||
xinming: there's a compiler for a subset of Perl 6, called npq-rx | 10:08 | ||
xinming | hmm, well, maybe I missed something. | ||
sorear | there is no rule engine | ||
moritz_ | it supports some basic Perl 6, and many regex features | ||
sorear | rules are compiled to the same bytecode as all other perl 6 syntax | ||
moritz_ | and it's mostly written in nqp-rx, so it's bootstrapped | ||
sorear | a*b just means $¢.STAR(-> $¢ { $¢.one('a) }).map(-> $¢ { $¢.one('b') }) | 10:09 | |
(in the abstract; also the method names used are NOT spec) | 10:10 | ||
moritz_ | ugh. Perl 5 syntax. | ||
jnthn | Opinions on rt.perl.org/rt3/Ticket/Display.html?id=76514 ? | 10:25 | |
Tempted to reject as "not a bug". | |||
Default values should be subject to checking too. | |||
moritz_ | +1 | 10:26 | |
jnthn | (and sticking in the Range type object is just a kinda default value) | ||
moritz_ | the correct solution is to supply a custom default value, of cause | ||
jnthn | OK, thanks. :-) | 10:30 | |
TiMBuS | id think the typecheck would only be ran if an argument was passed? | 10:33 | |
moritz_ | rakudo: say 5 div 2 | ||
p6eval | rakudo c3f559: OUTPUT«2» | ||
moritz_ | TiMBuS: why? | ||
jnthn | TiMBuS: No, it should apply to the default value too. | 10:34 | |
TiMBuS: Otherwise you can't trust what the constraints in the signature say. | |||
moritz_ | TiMBuS: a type check is there to ensure that the value conforms to some expectation of the routine | ||
violating these expectations at a whim seems like a very bad idea to me | |||
jnthn | Same here. | ||
TiMBuS | maybe I have it wrong. does a '?' denote an optional parameter | 10:35 | |
jnthn | And as I mentioned in the ticket, there's two easy solutions. | ||
TiMBuS: Yes. | |||
TiMBuS: But note that if not passed, it has to take up *some* value. | |||
TiMBuS: And the default value it takes up needs to be in line with the type constraints placed on the parameter. | |||
Otherwise we get wonders like | 10:36 | ||
sub foo(Int $x = "oh lol") { } | |||
rakudo: sub foo(Int $x = "oh lol") { } | 10:37 | ||
p6eval | rakudo c3f559: ( no output ) | ||
moritz_ | fun for the static type checker if we ever write one :-) | ||
jnthn | rakudo: sub foo(Int $x = "oh lol") { }; foo() | ||
p6eval | rakudo c3f559: ( no output ) | ||
jnthn | rakudo: sub foo(Int $x = "oh lol") { }; foo(); say "alive" | ||
p6eval | rakudo c3f559: OUTPUT«alive» | ||
moritz_ | oh ouch | ||
jnthn | Oh.. | ||
moritz_ | now *that's* a bug | ||
jnthn | I still have that ticket open in my browser window as in progress :-) | ||
I thought I'd finished fixing it | |||
I think I only got half way. | 10:38 | ||
TiMBuS | I didnt take default declarations into account. That makes sense | ||
jnthn | rakudo: sub foo(Int $x?) { say $x }; foo() | ||
p6eval | rakudo c3f559: OUTPUT«Int()» | ||
jnthn | Yeah, I fixed that half of the problem. | ||
Which is pre-req to fixing the other one. | |||
rakudo: say *.WHAT | 10:39 | ||
p6eval | rakudo c3f559: OUTPUT«_block65» | ||
jnthn | I guess .WHAT is macro-ish and shouldn't curry. | 10:40 | |
dalek | ecza: 750e66a | sorear++ | (2 files): Remove premature and heavily code duplicating Op context optimization |
10:50 | |
ecza: 040a58b | sorear++ | (5 files): Add a new tree-based IR between Op and CodeGen syntax for low-level code, and allow more CodeGen refactoring. |
|||
10:59
gbacon joined
11:13
sahadev joined
|
|||
sorear | What's the list method for sorting and removing duplicates? | 11:17 | |
sorear perl6 -e '.say for slurp("Decl.pm").comb(/"CgOp::" w+/)' | sort -u | 11:18 | ||
sorear is starting to naturally use p6 in the toolkit | |||
jnthn | sorear: .uniq | 11:19 | |
sorear | awesomes | 11:20 | |
11:21
pmurias joined
|
|||
jnthn | > sub circumfix:<` `>($n) { say 'oh lol ' ~ $n }; `42` | 11:21 | |
oh lol 42 | |||
sorear out. | 11:30 | ||
sbp | rakudo: sub circumfix:<` `>($n) { say 'oh lol ' ~ $n }; `42` | 11:34 | |
p6eval | rakudo c3f559: OUTPUT«error:imcc:syntax error, unexpected '\n' in file 'EVAL_1' line 90===SORRY!===syntax error ... somewhere» | ||
jnthn | sbp: ENOTYETPUSHED ;-) | 11:37 | |
11:37
arnsholt left
|
|||
sbp | WINSTANTGRATIFICATIONREQUIREDINMODERNAGE | 11:38 | |
jnthn | rakudo: say INIT 42 | 11:44 | |
p6eval | rakudo c3f559: OUTPUT«» | ||
11:47
masonkramer left
11:48
masonkramer joined
11:49
seeee joined,
sahadev left
11:50
seeee left
11:54
agentzh left,
pmurias left
|
|||
mberends | hai jnthn, seen the Zavolaj breakage discussion? I tried some NativeCall tweaks, without success. | 11:55 | |
jnthn | mberends: Ah. :/ | ||
mberends: Any idea where it's broken? | |||
mberends: Just return values, or is it not making calls at all? | 11:56 | ||
mberends | it's probably the return value, because an error sometimes only appears on a second native call. | 11:57 | |
jnthn | OK | 11:58 | |
frettled | mberends: O hai, Hai! | ||
mberends | \o frettled | ||
11:59
envi^home joined
|
|||
mberends | .oO( would anything stop us calling fork() using Zavolaj? ) |
12:00 | |
12:00
JimmyZ joined
|
|||
jnthn | mberends: ew! | 12:00 | |
12:00
isBEKKaml joined
|
|||
jnthn | mberends: Technically, no. | 12:00 | |
12:01
isBEKKaml left
|
|||
jnthn | mberends: However, quite what'd happen after that is a whole different matter. | 12:01 | |
mberends | jnthn: no, not you! just Un*x users! | ||
jnthn | :P | ||
12:01
isBEKaml joined
|
|||
isBEKaml | hi, #perl6! :) | 12:01 | |
jnthn | mberends: Doesn't you has portable Makefile foo? | ||
*fu | |||
12:02
rlb3 joined
|
|||
jnthn | mberends: I started getting pls to work on Win32 yesterday | 12:02 | |
mberends: And got to the point where it's busted 'cus the generated makefile also is. | |||
(Uses unportable features.) | |||
mberends | jnthn: it brings back memories of porting proto to Win32. nmake, dmake schmake. | 12:03 | |
12:03
takadonet joined,
xabbu42 joined
|
|||
takadonet | morning all | 12:03 | |
jnthn | mberends: My other thought was "why generate a Makefile, why not just run commands" | ||
mberends | jnthn: for many tasks ExtUtils::Command is enough | 12:04 | |
jnthn: but you drifted very close to the "let's design yet another make replacement" meme | 12:05 | ||
isBEKaml | memes must die! :) | 12:06 | |
jnthn | mberends: I accidentally the suggestion, but I've no idea how ideal toolchain is formed. | ||
mberends | jnthn: some say world domination by one system is the answer | 12:07 | |
jnthn | mberends: seriously though, saying "we're gonna run these series of commands" rather than "we're going to write a Makefile that runs these series of commands" hardly feels like re-inventing make. :-) | ||
12:08
skids joined
|
|||
mberends | jnthn: :-) pls is the new make. There needs to be a Plsfile spec. | 12:10 | |
pugssvn | r31695 | jnthn++ | [t/spec] wtf? How'd this end up as Multi, not multi? Corrected test. | 12:12 | |
jnthn | mberends: :P | ||
12:13
Kodi joined
|
|||
jnthn | mberends: Well, at the moment pls either (1) runs the Makefile that it finds or (b) generates a Makefile and runs that. | 12:13 | |
mberends | jnthn: it's fine to eliminate make from (b) | 12:14 | |
jnthn | mberends: Would you consider that more desirable than trying to teach pls to write portable makefiles? | 12:15 | |
pugssvn | r31696 | Kodi++ | [S32/Temporal] Permit day-of-month on Dates. | 12:18 | |
mberends | jnthn: no, I would rather teach pls to write portable makefiles. Despite the general correctness ufo, there are cases where a Makefile template is useful and hard to replace. | 12:19 | |
moritz_ | uhm, isn't day-of-month just .day? | ||
Kodi: ^^ | |||
Kodi | moritz_: Yes. | ||
moritz_: So why, you ask, does it exist? | 12:20 | ||
moritz_: Because masak likes it, basically. | |||
jnthn | mberends: OK. | ||
moritz_ | Kodi: as long as .day continues to exist, works for me :-) | ||
Kodi | I figure, if we're gonna have it all, it should allowed on both DateTimes and Dates. | ||
jnthn | mberends: I'll see what I can do in that directoy - help welcome. | ||
mberends: I think you're more clueful than I on such things. | |||
mberends | Kodi, moritz_ : but Tene doesn't like aliases: irclog.perlgeek.de/perl6/2010-07-14#i_2554867 | 12:22 | |
Kodi | mberends: Yeah, I'm not so crazy about them either. | ||
dalek | kudo: 3615ece | jonathan++ | src/Perl6/Grammar.pm: First cut at implementing custom circumfixes. Also, for things we don't know how syntax error. |
||
kudo: 727782e | jonathan++ | src/Perl6/ (2 files): Add term:sym<circumfix> as found in STD, which we were missing in the Rakudo |
|||
12:25
felliott joined
|
|||
mberends | jnthn: portable Makefiles seems to involve guesswork and trial/error about what @other-make-utils are prepared to swallow. The lowest common denominator functionality is usually too low, then it becomes a gamble whether a particular command/function will fly everywhere. | 12:26 | |
jnthn | mberends: joy. | 12:28 | |
mberends | jnthn: surprisingly, $(shell yada) (from zavolaj's Makefile) has not had any complaints | ||
mathw | Make is not a cross-platform system | 12:29 | |
It relies too much on the underlying platform to do stuff | |||
It's pretty awesome though :) | |||
colomon | wasn't there a make functionality replacement tool in CPAN? | 12:30 | |
isBEKaml | hmm, ExtUtils::MM doesn't work right here? | ||
MakeMaker? | |||
12:30
JimmyZ_ joined
12:31
mariano__ joined
|
|||
jnthn | mberends: I should take a look at that one | 12:31 | |
moritz_ | ExtUtils::MakeMaker abstracts away system commands | 12:33 | |
12:34
JimmyZ left,
JimmyZ_ is now known as JimmyZ
12:44
mariano__ left
12:45
mariano__ joined
12:51
timbunce left
12:52
dju joined
12:56
dju left,
dju joined
|
|||
dalek | kudo: 3d0399a | jonathan++ | src/Perl6/Actions.pm: Should not curry .WHAT and other interogative macros. |
12:57 | |
kudo: 9819740 | jonathan++ | src/pmc/p6role.pmc: One more role type-object undefinedness fix. |
|||
takadonet git pulls, perl Configure.pl and time make -j6 | 12:59 | ||
12:59
lest_away is now known as lestrrat
|
|||
moritz_ | takadonet: how many cores? | 13:00 | |
parallel build speeds up parrot compilation quite a bit, but rakudo not so much | |||
13:00
JimmyZ left
|
|||
moritz_ | it takes long to compile the setting, and so far we haven't found a way to split it up | 13:00 | |
takadonet | takadonet: I have 8 cores :) | 13:01 | |
i know but I love doing make -j6 while still running two virtual machines | |||
jnthn | rakudo: say "a {} b" | 13:02 | |
p6eval | rakudo 727782: OUTPUT«a b» | ||
jnthn | rakudo: say "{}" | ||
p6eval | rakudo 727782: OUTPUT«» | ||
moritz_ | another Null PMC access fixed :-) | ||
jnthn | moritz_: giving you the ticket | ||
moritz_ | jnthn: ok | ||
isBEKaml | rakudo: say 4 = Any | 13:03 | |
13:03
timbunce joined
|
|||
isBEKaml | huh? | 13:03 | |
p6eval | rakudo 727782: OUTPUT«4» | ||
isBEKaml | rakudo: say (4 = Any) | ||
p6eval | rakudo 727782: ( no output ) | 13:04 | |
[Coke] | moritz_: thank you for reminding me to split up partcl's NQP files. =-) | ||
isBEKaml | isn't that a bug? lvalues cannot be literals, right? | ||
rakudo: say (4 = 2) | |||
p6eval | rakudo 727782: ( no output ) | 13:05 | |
isBEKaml | rakudo: 1 = 2; | ||
13:05
bcubas joined
|
|||
p6eval | rakudo 727782: ( no output ) | 13:05 | |
jnthn | oh, it's p6eval acting up I think | ||
> 1 = 2; | |||
Cannot modify readonly value | |||
> say 4 = Any | 13:06 | ||
4 | |||
Cannot modify readonly value | |||
isBEKaml | Oh | ||
13:07
masonkramer left
|
|||
isBEKaml | Sorry, disregard what I said. False alarm. :/ | 13:08 | |
13:08
pmurias joined
13:11
dju_ joined,
dju left
13:24
M_o_C joined
13:28
felliott left
13:32
gbacon left
13:38
albert__ joined,
albert__ left
13:51
uniejo left,
tylercurtis joined
14:12
arnsholt joined
14:13
plainhao joined
14:20
timbunce_ joined
14:23
ashleydev joined
|
|||
jnthn | 2 files changed, 21 insertions(+), 51 deletions(-) # I like these kinds of patches :-) | 14:23 | |
14:24
timbunce left,
timbunce_ is now known as timbunce
|
|||
moritz_ | indeed :-) | 14:24 | |
takadonet | jnthn: what did you fix? | ||
14:25
dju_ left
|
|||
jnthn | takadonet: More refactored than fixed | 14:25 | |
14:25
sahadev joined
|
|||
jnthn | takadonet: Was making BEGIN handling fit into the overall phasers model | 14:25 | |
14:25
dju_ joined
|
|||
jnthn | Which meant making that a bit smarter, and then tossing lots of duplicate stuff. | 14:25 | |
takadonet | nice | ||
jnthn | However, I now can say INIT 42 and it says 42 :-) | ||
So those bits are fixed at least. | 14:26 | ||
14:26
unixdaemon left
|
|||
jnthn | Time for a break. | 14:26 | |
rakudo: class A { say (method foo { 23 }).WHAT }; | 14:27 | ||
p6eval | rakudo 727782: OUTPUT«Code()» | ||
jnthn | ESTILLRONG | ||
moritz_ | time for a break - what do you want to break today? :-) | ||
jnthn | Well, want to is a bit strong, but it seems I did break t\spec\S04-phasers\rvalue.rakudo :-( | 14:29 | |
ooh | |||
rakudo: INIT { say 42 } | 14:30 | ||
p6eval | rakudo 727782: OUTPUT«Could not find sub &say in main program body at line 20:/tmp/gw4ucFuXEr» | ||
jnthn | I had a hack for BEGIN that evidently I need to port into the general phasers code. :-) | ||
Eh well, after break. | 14:31 | ||
14:31
M_o_C left
|
|||
mberends eated a fresh stroopwafel. Thursday afternoon is local market time :) | 14:31 | ||
arnsholt is jealous | |||
moritz_ too | 14:32 | ||
14:33
cotto joined
14:38
_mpu joined
14:40
felliott joined
|
|||
frettled | My teeth are not jealous. :) | 14:45 | |
14:46
rgrau` joined
14:48
justatheory joined
14:52
M_o_C joined
14:55
Mowah left
|
|||
jnthn | mberends: Mmmm :-) | 14:57 | |
mberends | jnthn: you'll have to be here on a Thursday afternoon... | 14:58 | |
jnthn | mberends: Maybe the Thursday afternoon before OSDC in Paris. ;-) | ||
mberends | perfect :) | 14:59 | |
Juerd | FYI: I'm removing "consolekit" from feather. I don't know why we'd need it, and its "console-kit-daemon" has a memory leak. | ||
arnsholt | In fact, I'm so jealous I'm gonna pop out and get some hot buns instead | ||
pugssvn | r31697 | pmurias++ | [STD-dist] change files names from .pmc to .pm as the .pmc are handled | ||
r31697 | strangely by the toolchain | |||
Juerd | If anyone knows why it'd be important, please let me know. | ||
pugssvn | r31698 | pmurias++ | [smop] do not use pthread, -g , enable SMOP_HUNT_NULLS | ||
r31699 | pmurias++ | [mildew] use Test works | |||
15:04
gbacon joined,
Mowah joined
|
|||
pugssvn | r31700 | Kodi++ | [t/spec/S32-temporal] Reorganization and many additions. | 15:04 | |
15:07
Mowah left,
hercynium joined
15:09
kensanata joined
15:13
pragma_ left,
sukria joined
15:14
baest left
15:15
envi_home2 joined
|
|||
Juerd | And something makes Apache use lots of memory | 15:16 | |
moritz_ | too many open workers at once? | ||
the default config starts far too many for most casual users | |||
PerlJam | scrap apache for lighttpd or nginx or something :) | 15:17 | |
Juerd | moritz_: No, lots of memory *per* process. | ||
PerlJam: I'd love that, but it's probably things like mod_perl that cause this. | |||
I think svn is to blame | 15:18 | ||
Hard to test without shutting it down. | 15:19 | ||
15:19
envi^home left
|
|||
moritz_ | then shut it down | 15:21 | |
won't hurt very much if it's only 2 or 5 minutes | |||
Juerd | I guess that's true | ||
It's something else. | 15:22 | ||
moritz_ | commitbit/jifty? | 15:23 | |
dukeleto | moritz_: could you add me to proto? i have some projects that I would like to add to projects.list | 15:25 | |
Juerd | It appears to be svnweb | ||
feather.perl6.nl/server-status | |||
9671 www-data 20 0 124m 88m 6100 S 80 3.7 0:36.42 apache2 | |||
7-0967124/24/24C46.540505872.50.070.0766.249.71.119feather.perl6.nlGET /svn/pugs/view/t/spec/S32-temporal/DateTime-strftime.t?rev= | 15:26 | ||
moritz_ | hugme: add dukeleto to proto | ||
hugme | moritz_: ERROR: Can't add dukeleto to proto: 404 Not Found | 15:27 | |
Juerd | And a googlebot IP again, of course | ||
moritz_ | dukeleto: what's your github ID? | ||
hugme: add moritz to svg | |||
hugme | moritz_: sorry, I don't know anything about project 'svg' | ||
moritz_ | hugme: add moritz to svg-plot | ||
hugme hugs moritz. Welcome to svg-plot! | |||
dukeleto | moritz_: leto | ||
moritz_ | hugme: add leto to proto | ||
hugme hugs leto. Welcome to proto! | |||
bbkr is away for 1 week. Czech roadtrip! | |||
dukeleto | moritz++ | ||
Juerd | diakopter: Could you please find out why svnweb is using so much memory, and fix that? | 15:28 | |
jnthn | bbkr: Oh awesome! Enjoy it. Especially the pivo! | ||
bbkr | jnthn: thanks :) | ||
15:28
bbkr left
15:29
ashleydev left
|
|||
[Coke] | bah. are nicks ascii only? | 15:33 | |
moritz_ | yes | 15:34 | |
[Coke] | *&%! | ||
Kodi | An excellent choice of nick. | ||
15:34
PerlJam left,
phenicsl joined
|
|||
[Coke] | (was hoping I could use Cöke or something.) | 15:35 | |
TimToady | though someone might accidentally swear your real name and do magic on you | ||
15:35
PerlJam joined,
ash_ left
|
|||
tylercurtis | [Coke]: IRC servers aren't written in Perl 6. | 15:36 | |
Kodi | tylercurtis: Yet! | ||
Juerd | svnweb is mod_perl. Everytime I see huge apache processes, mod_perl is somehow involved :( | ||
[Coke] | tylercurtis: but clÆrly they cåån handle ünicode elsewhere. Þ | 15:37 | |
Juerd | Should've known. | ||
15:37
aubreyja joined
15:38
macdaddy joined
15:39
macdaddy is now known as Guest41149,
arnsholt left
|
|||
TimToady | if they allow latin-1, you might be able to fake it with the UTF-8 encoding of characters | 15:39 | |
[Coke] | TimToady: Cöke isn't allowed, even. | 15:40 | |
Juerd | Only 64 ascii characters are allowed iirc | ||
a-zA-Z{|}~`[\]^_ | 15:41 | ||
Still missing some, or I remembered the number wrong. | |||
dalek | kudo: c9b7229 | jonathan++ | src/ (2 files): Make phasers implementation able to remember value produced by phaser. |
15:42 | |
kudo: 8ce9aff | jonathan++ | src/ (2 files): Remove special handling of BEGIN and make add_phaser a littler smarter about |
|||
kudo: d51e99a | jonathan++ | src/Perl6/Actions.pm: Put the 'run in lexical scope of the setting' hack that was in the old BEGIN |
|||
cxreg | set phasers to lexical | 15:43 | |
jnthn | Weather cooler. Can patch again. Phew. | ||
Juerd | 2rfc.net/1459#2.2 # Interesting. For IRC, uc("{}|") is "[]\" | ||
15:43
azert0x joined
|
|||
cxreg | jnthn: wrt zavolaj, moritz_ mentioned a suspicious pir::clone in NativeCall.pm6:101 | 15:43 | |
it's all greek to me though | |||
jnthn | cxreg: Yes, I was expecting to toss that clone | 15:44 | |
15:44
azert0x left,
azert0x joined
|
|||
Juerd | Which makes sense if you look at an ASCII table, but on a normal US keyboard they're the wrong way around, shiftwise. | 15:44 | |
jnthn | cxreg: Greek? huh? I thought I'd written it in Russian... | ||
;-) | |||
cxreg | heh | ||
15:46
cjk101010 left
|
|||
[Coke] | jnthn: shouldn't *.WHAT say "EVER"? ;) | 15:48 | |
PerlJam | jnthn: does that mean that say is available in roles now? If not, could the same hack work for that? | 15:49 | |
jnthn | PerlJam: I'm currently trying to pick my any(<fix hack>) for that :-) | 15:50 | |
[Coke]: Oooh. :-) | |||
sahadev | greetings, all. | ||
jnthn | o/ sahadev | ||
sahadev | hi jnthn | ||
jnthn | PerlJam: At least I've now done the refactor to BEGIN I told pm I'd do two weeks ago though. :-) | 15:51 | |
sahadev | trying to setup proto. getting errors: | 15:52 | |
maximum recursion depth exceeded | |||
in 'Any::postcircumfix:<{ }>' at line 1 | |||
in 'Any::postcircumfix:<{ }>' at line 1631:CORE.setting | |||
... | |||
Kodi submits his Temporal patch (finally!). | |||
[Coke] | isn't pls now favored over proto? | ||
sahadev | [Coke]: don't know about pls. let me check. | ||
github.com/masak still shows 'proto', but not 'pls'. Is it somewhere else? | 15:54 | ||
moritz_ | sahadev: it's in a branch in the proto repo | 15:55 | |
[Coke] | pls? | ||
moritz_ | yes | ||
afk | 15:56 | ||
[Coke] | infobot? | ||
15:57
Kodi left
16:01
ruoso joined
16:03
helterskelter joined,
helterskelter left
16:05
phenicsl left
16:15
masak joined
|
|||
masak | oh hai, #perl6! | 16:15 | |
phenny | masak: 00:19Z <jnthn> tell masak upgrade to Windows | ||
masak | hugme: hug jnthn | ||
hugme hugs jnthn | |||
TimToady | oh hai oh | ||
masak | loliblogged! use.perl.org/~masak/journal/40447 | ||
it's a bit on the gutsy/gory side, but I had a lot of fun thinking about phasers, and I wanted to share. :) | 16:16 | ||
jnthn | GORE! | ||
rakudo: say INIT { say 4; 2 } | |||
p6eval | rakudo 981974: OUTPUT«Could not find sub &say in main program body at line 20:/tmp/wDu86wuXym» | ||
jnthn | ETOOSOON | ||
16:18
tadzik joined
|
|||
jnthn | masak: nice post | 16:19 | |
masak++ | |||
masak | thankz. | ||
I wrote the post in POD, then wrote a simple Perl 6 filter to format it as use.perl.org wants it :) | 16:20 | ||
jnthn | :-) | ||
I need to write my Last Post to there at some point. | |||
TimToady | ooh, an action item :) | 16:21 | |
masak | eeew, 'mid($r, $l)' ! | 16:23 | |
jnthn | masak: mid brings back memories of QBasic | ||
masak | eeew! | 16:24 | |
but yes. it does. | |||
16:24
cdarroch joined,
cdarroch left,
cdarroch joined
|
|||
jnthn | iirc it was for getting stuff out of the middle of a string :-) | 16:25 | |
masak | hm, which one wins between an infix and a circumfix? seems to me "LTM" is the first-approximation answer, but they might still tie on that. | ||
jnthn: yes. there was LEFT, RIGHT and MID. | |||
jnthn | masak: I'm not sure tbh | 16:26 | |
rakudo: sub circumfix:<` `>($n) { say 2 * $n }; `21` | |||
p6eval | rakudo 981974: OUTPUT«42» | 16:27 | |
jnthn | rakudo: sub circumfix:<| |>($n) { say 2 * $n }; |21| | ||
p6eval | rakudo 981974: OUTPUT«===SORRY!===Confused at line 20, near "|21|"» | ||
jnthn | The opening | is equal length to prefix | I guess | ||
rakudo: sub circumfix:<{| |}>($n) { say 2 * $n }; {|21|} | 16:28 | ||
p6eval | rakudo 981974: OUTPUT«===SORRY!===Unable to parse blockoid, couldn't find final '}' at line 20» | ||
jnthn | Grr | ||
Think we're hitting on LTM issues there. | |||
16:29
Mowah joined
|
|||
masak | cognominal: "in essence there is no value to test" -- this is manifestly false in Perl 6. for example, an optional array or hash parameter starts its life as an *empty* array or hash if none is sent in. not as an undefined one, but as a defined-but-empty one. | 16:29 | |
tylercurtis | masak: do use.perl.org journals have RSS feeds? | ||
moritz_ | yes | ||
masak | tylercurtis: yes, I believe so. | ||
tylercurtis: or you can go with Planet Perl 6. | |||
moritz_ | otherwise planetsix couldn't pick up the postings :-) | ||
masak | well, theoretically... | ||
jnthn | moritz_: Is there any issue with planetsix re Wordpress blogs these days? | ||
I seem to remember colomon++ had some "fun" | 16:30 | ||
moritz_ | jnthn: works now | ||
jnthn | \o/ | ||
moritz_: Good good. I'm moving my blogging to a Wordpress blog. | |||
It's so much more fun to use. | |||
And will probably lead to me blogging more. | 16:31 | ||
isBEKaml | hey guys, ops like +=, -=, *= don't work? | ||
jnthn | ? | ||
rakudo: my $x = 40; $x += 2; say $x; | 16:32 | ||
p6eval | rakudo 981974: OUTPUT«42» | ||
isBEKaml | rakudo: sub postfix:<y>($n) { my $foo *= $_ for 1..+$n; say $foo; }; 6y; #some factorial, really | ||
p6eval | rakudo 981974: OUTPUT«720» | ||
isBEKaml | wow! | ||
I got something different locally. But I tried it with vim's ! escape. | 16:33 | ||
tylercurtis | masak: Nevermind. I'm subscribed to Planet Perl 6... Google Reader just was failing at updating. | ||
masak | ah. | ||
moritz_ | isBEKaml: www.perlmonks.org/?node_id=839112 | ||
16:34
sahadev left
|
|||
isBEKaml | moritz_: ah, yes. I remember reading this a while ago. I occasionally follow posts on PM. :) | 16:36 | |
moritz_++ | |||
dannnit! vim recognises the $_ ?? | 16:38 | ||
moritz_ | why not? | ||
masak | gentletwitterer @uasi is concerned about the "Dispose pattern" in Perl 6: twitter.com/uasi/status/18602349670 | ||
isBEKaml | Malformed my at line 1, near "*= /usr/bi" | ||
when I tried it with vim's shell escape to perl6, this was what I got. $_ got expanded to /usr/bin/ something. :| | 16:39 | ||
masak | isBEKaml: don't do that, then. | 16:40 | |
tylercurtis | moritz_: I tried making a method-based thing similar to that(although also with units for type-checking unitted math), but it doesn't work because of this: | ||
jnthn | masak: Can be shortened to given open('file'); | ||
er | 16:41 | ||
given open('file') -> $f { ... LEAVE { $f.clonse } } | |||
isBEKaml | masak: escape all $s. :D | ||
masak | jnthn: aye. | ||
tylercurtis | rakudo: use MONKEY_TYPING; augment class Int { method k { self * 1000; } }; say 5; say 5.k; say 5.k.k; | ||
p6eval | rakudo 981974: OUTPUT«55000Method 'k' not found for invocant of class 'Integer' in main program body at line 20:/tmp/zCsehWrJAO» | ||
masak | jnthn: I'm not sure the LEAVE'll actually trigger if there's an exception, though. | ||
jnthn | masak: I'd have to re-check S04 | ||
masak | me too. | ||
there's some wording there about stack rollback. | 16:42 | ||
jnthn | However, I'd rather go for a stroll in the park right now. :-) | ||
bbiab for more Rakudo hacking | |||
masak | I'm going to go see if someone made me some nom. :) | ||
16:42
masak left
|
|||
tylercurtis | masak: LEAVE is supposed to trigger on any exit, no? | 16:42 | |
tylercurtis has bad timing. | |||
isBEKaml | tylercurtis: something to do with what the method returns, I guess. | 16:44 | |
rakudo: use MONKEY_TYPING; augment class Int { method k { self * 1000; }; }; say 5; (5.k).WHAT.perl.say; | 16:45 | ||
TimToady | LEAVE always run; KEEP and UNDO look at the return | ||
p6eval | rakudo 981974: OUTPUT«5Int» | ||
TimToady | oh, that method :) | ||
tylercurtis | isBEKaml: it's a known bug with augmenting Int iirc. | ||
16:46
kensanata left
|
|||
isBEKaml | tylercurtis: oh, I was thinking - maybe the return type didn't match or something. | 16:46 | |
turns out not the case. Happy to be wrong. :) | |||
moritz_ just listened to the perlcast interview with Stevan Little | 16:47 | ||
16:47
ashleydev joined
|
|||
tylercurtis | rt.perl.org/rt3/Public/Bug/Display.html?id=75114 | 16:48 | |
TimToady | but someday it'll just be: given open('file') -> $f will leave {.close} {...} | ||
isBEKaml | tylercurtis: but it worked for 5.k ? | 16:50 | |
tylercurtis: maybe, it's chaining? | |||
tylercurtis | rakudo: use MONKEY_TYPING; augment class Int { method k { self * 1000; } }; say 5; say 5.k; say (5 * 1000).k; | 16:51 | |
p6eval | rakudo d51e99: OUTPUT«55000Method 'k' not found for invocant of class 'Integer' in main program body at line 20:/tmp/zDhDrtJEVH» | ||
isBEKaml | rakudo: use MONKEY_TYPING; augment class Int { method foo { say "OHHAI"; }; }; 5.foo; | 16:52 | |
p6eval | rakudo d51e99: OUTPUT«OHHAI» | ||
isBEKaml | ? | ||
tylercurtis | isBEKaml: The problem appears to be that (5*1000) doesn't actually return Perl 6's Int but the bare Parrot Integer. | ||
isBEKaml | tylercurtis: yes, return type mismatch. so, I was not too far off the first time. | 16:53 | |
TIL P6 Int and Parrot Integer are different types. :) | |||
as seen by rakudo, ofcourse. | |||
rakudo: say (5*100000).WHAT | 16:56 | ||
p6eval | rakudo d51e99: OUTPUT«Int()» | ||
tylercurtis | rakudo: say 5.WHAT =:= 5.1000.WHAT; | 16:57 | |
p6eval | rakudo d51e99: OUTPUT«0» | ||
isBEKaml | it's still printing Int while actually seeing bare Integer. | ||
tylercurtis | rakudo: say 5.WHAT =:= (5 * 1000).WHAT; | ||
p6eval | rakudo d51e99: OUTPUT«1» | ||
[particle] | i'm curious about that typing, a bit, if the input to * is lhs Int vs rhs Int vs both Int | ||
tylercurtis | rakudo: say &infix:<+>.signature | 16:58 | |
p6eval | rakudo d51e99: OUTPUT«get_attr_str() not implemented in class 'Perl6MultiSub' in main program body at line 1» | 16:59 | |
[particle] | rakudo: say Int(5) * 1000; say 5 * Int(1000); say Int(5) * Int(1000); say Int(5 * 1000); | ||
p6eval | rakudo d51e99: OUTPUT«Could not find sub &Int in main program body at line 20:/tmp/gq3y4_LqJU» | ||
[particle] | crap, forgot WHAT | ||
isBEKaml | rakudo: say 5.Int; say Int(5); | 17:00 | |
p6eval | rakudo d51e99: OUTPUT«5Could not find sub &Int in main program body at line 20:/tmp/dX2CghbALe» | ||
tylercurtis | rakudo: say &infix:<+>.^methods.perl | ||
p6eval | rakudo d51e99: OUTPUT«[{ ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... }, { ... | ||
..}, { … | |||
isBEKaml | rakudo: say 5.Int * 1000; say 5 * 1000.Int; | ||
p6eval | rakudo d51e99: OUTPUT«50005000» | ||
[particle] | rakudo: say (5.Int * 1000).WHAT; say (5 * 1000.Int).WHAT; say (5.Int * 1000.Int)WHAT; say (5 * 1000).Int.WHAT; | ||
tylercurtis | rakudo: say &infix:<+>.^methods | ||
p6eval | rakudo d51e99: OUTPUT«===SORRY!===Confused at line 20, near "say (5.Int"» | ||
rakudo d51e99: | |||
..OUTPUT«multicandidatesnamewrapcandounwrapassumingcandidatesACCEPTSaritycountsignaturereturnsperldoofassumingcallwithStrnewmultinamecotancosechatan2ucfirstcombtanatancosacosfmtevaltranschoprindextanhsubstNumericchompindexchracotanhtrim-trailingfrom-radianscapitalizepredatanhcosecexplcp5cho… | |||
tylercurtis | rakudo: say &infix:<+>.^methods.join(' ') | 17:01 | |
isBEKaml | tylercurtis: sort, join, perl. :) | ||
p6eval | rakudo d51e99: OUTPUT«name multi candidates cando unwrap assuming candidates wrap arity count ACCEPTS name signature returns perl do of assuming callwith Str new multi cosh cosec succ chars sign roots ucfirst samecase tan log10 cos capitalize fmt bytes flip lc p5chop to-radians Numeric asinh acotan | ||
..cota… | |||
tylercurtis | rakudo: say &infix:<+>.signature | ||
p6eval | rakudo d51e99: OUTPUT«get_attr_str() not implemented in class 'Perl6MultiSub' in main program body at line 1» | ||
tylercurtis | Should that be happening? | ||
[particle] | parrot shouldn't bleed through | ||
17:02
PZt left
|
|||
TimToady | I don't know what rakudo is doing with =:=, but it isn't spec. just use === to compare values. =:= should blow up on non-conatiners | 17:04 | |
*ta | |||
tylercurtis | rakudo: say 5.WHAT === (5 * 1000).WHAT | 17:06 | |
p6eval | rakudo d51e99: OUTPUT«1» | ||
17:11
dju_ left,
tadzik left,
dju_ joined,
Mowah left
17:13
PZt joined
17:14
thebird left
|
|||
Tene | phenny: tell masak that I'd like to chat with him about synonyms/aliases/whatever. | 17:14 | |
phenny | Tene: I'll pass that on when masak is around. | ||
sorear | good * #perl6 | 17:15 | |
isBEKaml | What exactly are immutable types? That is, if we do any operation on a variable of an immutable type, we should be getting a new variable and not the same variable mutated to the state as done by the operation. Going by that, what immutable types do we have in P6? | ||
sorear | Int, Num, Str, Rat, etc | 17:16 | |
Role | |||
TimToady | S02:1238 | ||
isBEKaml | rakudo: my Int $foo = 25; say $foo++; | ||
p6eval | rakudo d51e99: OUTPUT«25» | ||
17:17
perlrocks joined
|
|||
isBEKaml | rakudo: my Int $foo = 25; say ++$foo; | 17:17 | |
p6eval | rakudo d51e99: OUTPUT«26» | ||
isBEKaml | geez... | ||
TimToady | rakudo: 25++ | ||
sorear | [Coke]: To be super pedantic, IRC nicks are required to be in the old 7-bit Finnish character encoding, which looks like ASCII but replaces [ \ ] { | } with ä ë ö Ä Ë Ö. Now you know why trigraphs were invented! | ||
p6eval | rakudo d51e99: ( no output ) | 17:18 | |
TimToady | ah, so it's really C]ke :) | ||
sorear | Maybe | ||
I don't actually remember the order of the vowels | 17:19 | ||
isBEKaml | rakudo: say 25++ | ||
17:19
Mowah joined
|
|||
p6eval | rakudo d51e99: ( no output ) | 17:19 | |
17:19
envi_home2 left
|
|||
isBEKaml | rakudo: say ++25; | 17:19 | |
TimToady | p6eval is refusing to report the error | ||
sorear | isBEKaml: p6eval doesn't do errors | ||
use a real installed perl6 | |||
p6eval | rakudo d51e99: ( no output ) | ||
moritz_ | sorear: that's not quite correct | 17:20 | |
TimToady | I think p6eval should report errors (again). | ||
moritz_ | rakudo: die 24 | ||
p6eval | rakudo d51e99: OUTPUT«24 in main program body at line 20:/tmp/hMWH5lqQHF» | ||
pmurias | ruoso: hi | ||
pugssvn | r31701 | lwall++ | [STD] allow leading whitespace on charnames | 17:21 | |
tylercurtis | rakudo: my $/ = { foo => 5 }; say :$<foo>; | 17:22 | |
p6eval | rakudo d51e99: OUTPUT«===SORRY!===Redeclaration of symbol $/ at line 20, near " = { foo ="» | ||
tylercurtis | rakudo: $/ = { foo => 5 }; say :$<foo>; | ||
p6eval | rakudo d51e99: OUTPUT«===SORRY!===Confused at line 20, near "say :$<foo"» | ||
tylercurtis | rakudo: my $foo = 5; say :$foo | 17:23 | |
p6eval | rakudo d51e99: ( no output ) | ||
moritz_ | :$<foo> is probably not allowed | ||
17:23
pragma_ joined
|
|||
moritz_ | std: :$<foo> | 17:23 | |
p6eval | std 31700: OUTPUT«===SORRY!===Bogus statement at /tmp/hJpRDS8q85 line 1:------> <BOL>⏏:$<foo>Parse failedFAILED 00:01 113m» | ||
moritz_ | should it? :-) | ||
17:24
pragma_ is now known as Guest96912,
Guest96912 left,
Guest96912 joined
|
|||
pugssvn | r31702 | lwall++ | [S06] ss/is context/is dynamic/ fossil | 17:24 | |
17:24
Guest96912 is now known as pragma_
|
|||
TimToady | well...$<> is special form anyway, so it doesn't have to behave exactly like $/<> | 17:25 | |
sorear | masak++ | 17:26 | |
tylercurtis | std: class Foo { has $.a; method bar ($.a) { $.a; } }; | ||
p6eval | std 31700: OUTPUT«ok 00:01 111m» | ||
tylercurtis | rakudo: class Foo { has $.a is rw; method bar ($.a) { $.a; } }; my Foo $foo .= new; $foo.bar(5); say $foo.a; | 17:27 | |
p6eval | rakudo d51e99: OUTPUT«5» | ||
[Coke] | sorear: my nick is currently [Coke] - why is not rendering as äCokeö ? | ||
isBEKaml | [Coke]: unidirectional, not bidirectional. ;) | 17:28 | |
[Coke] | if I can't use them, and I can't see them, I question their existance. =-) | 17:29 | |
17:29
dju_ left,
dakkar left
|
|||
tylercurtis | I just thought :$<foo> might work like with other twigils. Although I'm not really sure if the spec actually specifies that :$.a === a => $.a | 17:30 | |
17:30
dju_ joined
|
|||
moritz_ | tylercurtis: if the spec doesn't, the test suite fills that gap :-) | 17:30 | |
isBEKaml | so immutable types are meant to work with value identity in === and work well with literals being ro? | 17:31 | |
17:31
xabbu42 left
|
|||
pugssvn | r31703 | moritz++ | [evalbot] try not to loop infinitely on errors | 17:32 | |
17:32
p6eval left,
p6eval joined
|
|||
moritz_ | isBEKaml: I don't know if that holds for all immutable types, but it's true for things we call "value types" | 17:32 | |
tylercurtis | moritz_: What do you mean? | 17:33 | |
moritz_ | I meant what I said :-) | ||
which point is unclear? | |||
pmurias | rakudo: { die "hi";CATCH {default {} };say "there"; };say "here"; | ||
p6eval | rakudo d51e99: OUTPUT«here» | ||
tylercurtis | Are you saying that there are tests for :$.a and such? | 17:34 | |
moritz_ | yes | ||
I'm not sure if all cases are tested, but there should be quite a few | |||
S06-signature/named-parameters.t | |||
though maybe they really belong into S02-literals/pairs.t | 17:35 | ||
isBEKaml | moritz_: ok, thank you. | ||
sorear | [Coke]: because most IRC clients pretend the wire encoding is ASCII | 17:36 | |
[Coke]: you can observe it through case mapping | |||
tylercurtis | moritz_: ah. There's my problem. I was looking at S02-literals/pairs.t. | ||
sorear | [Coke]: try /whois {Coke} | ||
17:36
dju__ joined,
dju_ left
|
|||
TimToady | tylercurtis: thing is, . is a true twigil, and < isn't, so $<foo> would need to be special-cased specialler than it is | 17:38 | |
17:38
dju_ joined
17:39
dju__ left
|
|||
pugssvn | r31704 | lwall++ | [STD] don't carp 'not used' about dynamic vars | 17:39 | |
r31705 | lwall++ | [caller.t] use 'is dynamic' instead of 'is context' | 17:40 | ||
r31705 | change old readonly policy to use ::= instead | |||
17:41
SmokeMachine joined
|
|||
tylercurtis | TimToady: Which twigils do have the special :$a/:$.a behavior? All of them except for $<a>? Or are there more that don't? Perhaps that could use some clarification somewhere in S02? | 17:43 | |
17:44
patspam joined
|
|||
tylercurtis | std: :$*foo | 17:45 | |
p6eval | std 31703: OUTPUT«ok 00:01 110m» | ||
17:45
perlrocks left
|
|||
tylercurtis | std: { :$^foo } | 17:45 | |
p6eval | std 31703: OUTPUT«ok 00:01 107m» | ||
tylercurtis | std: { :$:foo } | ||
p6eval | std 31703: OUTPUT«ok 00:01 107m» | ||
tylercurtis | std: { :$?foo } | ||
p6eval | std 31703: OUTPUT«Potential difficulties: Unrecognized variable: $?foo at /tmp/eDZ5dmOdRq line 1:------> { :$?foo⏏ }ok 00:01 107m» | ||
tylercurtis | std: :$=foo | 17:46 | |
p6eval | std 31703: OUTPUT«ok 00:01 107m» | ||
tylercurtis | rakudo: say ({:$^foo }).(5) | 17:47 | |
p6eval | rakudo d51e99: OUTPUT«foo 5» | ||
tylercurtis | std: :$~MAIN; | ||
p6eval | std 31703: OUTPUT«ok 00:01 107m» | ||
17:50
isBEKaml left
|
|||
[Coke] | sorear: there is no such nick {Coke} | 17:51 | |
sorear | weird. | 17:52 | |
it works here. | |||
12:52 [freenode] -!- [Coke] [~coke@cpe-72-228-52-192.nycap.res.rr.com] | |||
[Coke] | I get that for [Coke], not {Coke} | 17:53 | |
sorear | I get it for both. | ||
I guess maybe one of the freenode servers has finally moved into the 21st century | 17:54 | ||
[Coke] | in /any/ case, none of that helps me with my basic premise: IRC sucks, and freenode doubly so. =-) | 17:55 | |
sorear | that's my premise too. | ||
IRC needs to die, it's stupidly designed in more ways than I can count | |||
it's a pity none of the replacements have critical mass | |||
pmurias | what's an acceptable irc replacement? | 17:57 | |
sorear | I don't know yet | ||
pugssvn | r31706 | lwall++ | [STD] recognize :$<foo> as if < were a real sigil | ||
17:59
sorear sets mode: +oooo pmurias dukeleto [Coke] tylercurtis,
sorear sets mode: +vv p6eval pugssvn
|
|||
pugssvn | r31707 | lwall++ | [t/spec] more warning suppressions | 17:59 | |
PerlJam | sorear: you'd have to make something that speaks the IRC protocol, but works better/faster/shinier in some way so that you can co-opt the existing IRC servers/clients into your new world order | ||
tylercurtis | TimToady++: ooh. That works, too. | ||
PerlJam | sorear: sort of like git: it speaks http, but the git protocol is much better | ||
tylercurtis | .u smiling | ||
phenny | U+263A WHITE SMILING FACE (☺) | ||
[Coke] | we have the same problem with lily, something developed at RPI in the 80s. has a dedicated core community but no one will leave it for new and shiny. | ||
so any plans to replace it require coopting either the look and feel or the protocol. | 18:00 | ||
sorear | the IRC server protocol is a lost cause | 18:04 | |
it is basically designed entirely around the notion that the connection graph has no redundancy | |||
cxreg | $ perl6 -e '(1,4,9...100).join(", ").say' | 18:05 | |
Unable to figure out pattern of series | |||
tee hee | 18:06 | ||
[Coke] | I think there's plenty of wiggle room in XMPP to build something nice. | ||
but that's a discussion for another channel. =-) | |||
18:07
ashleydev left
|
|||
moritz_ | unless you build it with Perl 6 :-) | 18:09 | |
pugssvn | r31708 | Util++ | [t/spec] Restore one line erroneously removed by r31692. Fixes slurpy-params.t compile failure. | 18:10 | |
r31709 | lwall++ | [STD] don't complain about state vars that are not used | 18:11 | ||
18:13
PerlJam left
18:17
PerlJam joined
|
|||
TimToady | Util: that line should not be necessary; the class decl should introduce its own name immediately as a type name | 18:17 | |
and, in fact, it should be carping about a redeclared class | |||
unless the first def has ... | 18:18 | ||
moritz_ | TimToady: 'X' ne 'Y' | ||
I didn't notice it at first sight either | |||
TimToady | .oO(never could tell the difference between zip and cross ops :) |
18:19 | |
that would explain why STD isn't carping about it too :) | |||
moritz_ | and 'Y' ne 'Z' :-) | 18:20 | |
TimToady thinks he should make a noise like a hoop and roll away | |||
[Coke] | hoop noise? | 18:21 | |
TimToady | sorry, a Lord Peter Wimsey allusion | 18:24 | |
and, in fact, if I'd looked at the snaptest run I did after that, I'd've notice it complaining about | 18:25 | ||
In parameter declaration, typename 'X64814' must be predeclared (or marked as declarative with :: prefix) at /home/larry/pugs/t/spec/S06-signature/slurpy-params.t line 241: | |||
pmichaud | good morning, #perl6 | 18:27 | |
18:29
tadzik joined
|
|||
PerlJam | pmichaud: good afternoon :) | 18:30 | |
Util | TimToady, moritz_: So, the removal of the X64814 line was a thinko (that I thought was a typo), but restoring the line has completly resolved the issue? | 18:32 | |
18:33
uniejo joined
18:36
xabbu42 joined
|
|||
sorear | good * pmichaud | 18:36 | |
TimToady | Util: yes, it's fine as it was | 18:39 | |
one never knows on which day one is going to make his Bad Mistake of the Week on... | 18:40 | ||
pmichaud | I thought my Bad Mistake was going to be on Monday, but I was mistaken about that. | ||
[Coke] | TimToady: if you're me, it's really just all of them. | ||
18:41
ashleydev joined
|
|||
tadzik | is fakedbi renamed to minidbi? | 18:42 | |
pmichaud | tadzik: I believe so, yes. | ||
pugssvn | r31710 | lwall++ | [t/spec] more warning suppressions; remaining STD warnings are mostly bugs in test or STD | ||
pmichaud | it was decided that "fake" was too strong a word. | ||
tadzik | sounds more marketingy :) | ||
PerlJam | good | 18:43 | |
(perl has needed some good marketing for a while :) | |||
tadzik | sure it does :) | 18:44 | |
tadzik will be agitating Perl6 on local Perl workshop in a few days | |||
18:44
xabbu42 left,
xabbu42 joined
18:47
xabbu42 left
|
|||
tylercurtis | At least some of the FakeDBI stuff isn't fake anymore iirc. | 18:47 | |
18:50
jakk joined,
jakk left
18:51
M_o_C left
|
|||
pugssvn | r31711 | moritz++ | [t/spec] unfudge tests for custom circumfixes | 18:51 | |
18:53
baest joined
|
|||
pugssvn | r31712 | moritz++ | [t/spec] RT #76382, role type objects should be undefined | 18:58 | |
19:00
kensanata joined
|
|||
pugssvn | r31713 | moritz++ | [t/spec] test for RT #76234, interpolating empty block into a string | 19:01 | |
19:01
xabbu42 joined
|
|||
jnthn back from noms | 19:01 | ||
hi pmichaud :-) | 19:02 | ||
pmichaud | aloha jnthn! :-) | ||
jnthn | pmichaud: Still sunny and beautiful over there? | ||
pmichaud | jnthn: yes. A bit sunnier today than yesterday, even :-) | 19:03 | |
jnthn | Nice :-) | ||
moritz_ is glad that today wasn't as sunny as yesterday :-) | |||
jnthn | Here it's also sunny, but thankfully not so hot and stuffy. I can actually concentrate long enough to write a patch now. :-) | ||
pmichaud: You'll be delighted to know that BEGIN now works through add_phaser again :-) | 19:04 | ||
pugssvn | r31714 | moritz++ | [t/spec] tests for RT #73460, Whatever stars and variables | ||
19:04
cono left
|
|||
lue | ohai o/ | 19:04 | |
pmichaud | jnthn: I'm delighted to hear that! | ||
jnthn | \o/ | ||
rakudo: say INIT 42 # this works too | |||
moritz_ | jnthn: and I've closed the tickets that you handed to me today :-) | ||
p6eval | rakudo d51e99: OUTPUT«42» | ||
jnthn | moritz_: yay! | ||
moritz_++ | 19:05 | ||
pmichaud | outstanding! I should go on vacation more often. :-) | ||
moritz_ | rakudo: my $x; say $x; INIT { $x = 5 }; | ||
p6eval | rakudo d51e99: OUTPUT«Lexical '$x' not found in main program body at line 20:/tmp/I5pWUqrLCZ» | ||
jnthn | I didn't fix *that* one yet. :P | ||
moritz_ | well, one can always hope and try :-) | ||
jnthn | I hope to fix it and I'm sure I'll try at some point. :-) | ||
19:06
cono joined
|
|||
jnthn | pmichaud: I'm srsly pondering a branch that s/loadinit usage/add_phaser/ | 19:06 | |
pmichaud: For one because I'm pretty sure I can fix the whole roles not seeing the setting thing with it. | |||
pmichaud | jnthn: I think it'd be worth experimenting with, yes. I'm not sure it's a good idea pre-R* | ||
jnthn: if it works out cleanly, though, I'd say go for it :) | 19:07 | ||
jnthn | pmichaud: We *have* to fix the setting not visible from role bug somehow. | ||
(Before R*.) | |||
pmichaud | (you still end up with loadinit stuff, it's just that the loadinit stuff triggers phasers instead of doing it directly) | ||
jnthn | It's a major fail. | ||
pmichaud | anyway, I say it's worth a try (and not hard to do) | 19:09 | |
jnthn | Aye | 19:10 | |
pmichaud | but I think the problem may be related more to the composition logic than the loadinit stuff. | ||
jnthn | The problem boils down to, we take closures from within a loadinit | ||
pmichaud | we'll still be doing that with phasers | ||
unless you do something other than BEGIN | |||
jnthn | Yeah but phasers have a hack to deal with that. | ||
pmichaud | they do? | 19:11 | |
jnthn | rakudo: BEGIN { say "huh" } | ||
p6eval | rakudo d51e99: OUTPUT«huh» | ||
19:11
masak joined
|
|||
pmichaud | oh, okay. | 19:11 | |
jnthn | pmichaud: Er, they do now. ;-) | ||
pmichaud pulls, checks. | |||
jnthn | pmichaud: I took it from the stuff I did with BEGIN before. | ||
lue | Where is the code for &say and &print [things like say 'hi']? I broke it, and need to check on it. | 19:12 | |
pmichaud | lue: src/core/IO.pm | ||
jnthn | pmichaud: And now it's just in add_phaswer | ||
pmichaud | jnthn: I don't see it in add_phaser | ||
masak | Tene: ok. don't know exactly what you're referring to, but it sounds interesting. | ||
phenny | masak: 17:14Z <Tene> tell masak that I'd like to chat with him about synonyms/aliases/whatever. | ||
jnthn | Line 592 | 19:13 | |
19:13
baest left
|
|||
pmichaud | in actions.pm? | 19:13 | |
jnthn | Yes | ||
pmichaud | oh | ||
jnthn | oh. :-) | ||
pmichaud | I thought you meant !add_phaser | ||
jnthn | sub add_phaser($/, $bank) { | ||
No no :-) | |||
19:15
xabbu42 left
19:16
plainhao left
|
|||
pmichaud | oh. | 19:16 | |
jnthn | I said it was a hack | ||
pmichaud | you chose to have Actions.pm fire the BEGIN phasers instead of phasers.pir ? | ||
jnthn | OTOH, I'd prefer to have one hack in one place | ||
pmichaud: Yeah (more) | |||
I'm not convinced that we will *always* want to have BEGIN stuff run immediately. If I'm going to put class-y things in using BEGIN we wanna wait until we compiled and run them after that. | 19:17 | ||
pmichaud: I'm thinking of giving add_phaser an optional $run_now = 0 arg. | 19:18 | ||
pmichaud: And the real BEGIN blocks throw along a "1" there | |||
19:18
pyrimidine joined
|
|||
pmichaud | "wait until we compiled and run" sounds more like CHECK than BEGIN | 19:19 | |
jnthn | Well, here's the nasty we have. | ||
pmichaud | -1 to the $run_now arg. that feels even more hackish. | ||
jnthn | We can't just run BEGIN blocks at compile time. | ||
pmichaud | I'd rather just issue the explicit call to !fire_phasers | ||
jnthn | We need them to end up in the PIR too | 19:20 | |
pmichaud | I understand that part. | ||
jnthn | So is your premise that maybe class construction wants to go at...INIT? | ||
pmichaud | CHECK. | ||
CHECK comes before INIT. | |||
jnthn | Oh, yes | ||
pmichaud | although currently it's LIFO instead of FIFO | 19:21 | |
afk for a bit | |||
jnthn | k | ||
pmichaud | oh, I have another answer | ||
(will take a bit to explain -- bbi5 | |||
masak | phenny: tell moritz_ that he has an unclosed <code> somewhere in perlgeek.de/blog-en/perl-6/contribu...subst.html | 19:26 | |
phenny | masak: I'll pass that on when moritz_ is around. | ||
moritz_ goes looking | 19:27 | ||
phenny | moritz_: 19:26Z <masak> tell moritz_ that he has an unclosed <code> somewhere in perlgeek.de/blog-en/perl-6/contribu...subst.html | ||
19:28
Trashlord left
|
|||
Tene | masak: like this: irclog.perlgeek.de/perl6/2010-07-14#i_2554862 | 19:28 | |
masak | moritz_: also, looking through your list at perlgeek.de/blog-en/perl-6/rakudo-s...-list.html , I think the "same list or iterator twice" bug has been shown to be Not Dead Yet by colomon. | ||
Tene: looking. | 19:29 | ||
moritz_ | rakudo: say <a b c>.kv.kv.perl | ||
p6eval | rakudo d51e99: OUTPUT«Cannot resume dead coroutine. in 'Any::join' at line 1 in 'List::perl' at line 2522:CORE.setting in main program body at line 20:/tmp/d9x_Y7gxGI» | ||
masak | Tene: ah, those synonyms. yes, I'll happily talk about those. | ||
pmichaud | jnthn: nm, my idea won't work anyawy | ||
masak | I thought about them a bit when reading the backlog. | ||
pmichaud | actually, it might | ||
sorear | TimToady: Is it reasonable to be wanting some sort of conditional compilation for p6? | ||
Tene | masak: What's the utility? That seems to just increase confusion, for negligible benefit, to me. | 19:30 | |
pmichaud | anyway, you can attach to $*UNITPAST.loadinit | ||
but I think that might end up being very first instead of very last. | |||
masak | Tene: we're actually removing a lot of the synonyms from CPAN's DateTime. | ||
pmichaud | jnthn: really, though, the question is "when should class construction take place?" | 19:31 | |
masak | Tene: I kept this pair because I saw a use case for each of the forms. | ||
19:31
cls_bsd left,
cls_bsd joined
|
|||
masak | Tene: namely, .year/.month/.day is symmetrical, so we want to keep that one. but sometimes you want extra clarity, or want to contrast .day-of-week with .day-of-month, so we want to keep the latter. | 19:31 | |
19:31
chitragupt left
|
|||
jnthn | pmichaud: I've been pondering this quite a lot. (more) | 19:31 | |
masak | Tene: I would never want this with a CORE(tm) module, but DateTime is only almost core. | 19:32 | |
19:32
chitragupt joined,
rv2733 joined
|
|||
jnthn | pmichaud: One of the things I'm going to need to be able to do for the work I plan under my grant is interact with meta-classes of things at compile time. | 19:32 | |
Tene | masak: Sure, but then someone's reading the code, and sees the two forms used in different places, and assumes they must mean different things. | ||
jnthn | Or to get decent optimizations anyway | ||
Where "compile time" is a bit blurry :-) | 19:33 | ||
Tene | Or you're searching for uses of one form, and miss uses of the other. | ||
pmichaud | jnthn: sure, makes sense. | ||
jnthn | pmichaud: Anyway, I increasingly wonder if we're going to be able to hang on to our whole-file-in-one approach to compilation. | ||
pmichaud | I don't understand "whole-file-in-one" approach. | ||
jnthn | pmichaud: We take a whole file and translate it all down to, e.g. PIR. | 19:34 | |
pmichaud: As opposed to, we say "ah, we're done with this class, let's compile it" and then fix up outer links later on. | |||
pmichaud: I'm not particularly advocating we switch to the second, because it's going to be annoying. | 19:35 | ||
pmichaud | I'm pretty certain we can keep the whole-file-in-one approach. PAST may need to come up with some better mechanisms for .loadinit stuff. | ||
Tene | masak: Okay, I think I understand your reasons now. | ||
jnthn | pmichaud: That's also entirely possible, yes. | ||
masak | Tene: I'm not fundamentally opposed to just keeping one of the forms. I guess .day-of-month'd go in that case. | ||
pmichaud | I do agree with the idea that it should all happen with phasers. | 19:36 | |
masak | Tene: I understand yours, too. it's all a matter of taking opposing forces into account. | ||
jnthn | pmichaud: I do worry about things like class Foo { }; BEGIN { Foo.new } though. | ||
pmichaud: I'm not sure how legal (or otherwise) that is. | |||
pmichaud | if the BEGIN for class Foo takes place at the closing brace, it's probably okay. | ||
masak | Tene: your 'searching' argument could equally be applied to things like the .{} and .<> syntaxes. | ||
ENOTENE | 19:37 | ||
jnthn | pmichaud: Right, but that's what I mean about not being able to compile the whole program in one chunk. | ||
pmichaud: Anyway, that's a much bigger discussion. | |||
19:37
skangas joined
|
|||
pmichaud | jnthn: we can still come up with a single .PIR that has the results of the compilation (more) | 19:37 | |
jnthn: but yes, during compilation we may also be invoking specific chunks | 19:38 | ||
(which we do now for a variety of things) | |||
jnthn | Aye, true. | ||
Anyway, that's certainly too big a change for pre-R*. :-) | |||
Probably one of those things that YAPC::EU would provide a good chance to bat around. :-) | |||
masak | pmichaud: ooc, what's your estimation of the difficulty/ETA of rt.perl.org/rt3/Ticket/Display.html?id=73608 ? | 19:39 | |
19:39
Tene joined
|
|||
pmichaud | masak: I'm still planning pre-Parrot release. | 19:40 | |
masak | ok. | ||
Tene: [re-posted] your 'searching' argument could equally be applied to things like the .{} and .<> syntaxes. | |||
dalek | ecza: 4fcb9ab | sorear++ | (4 files): Move Decl to CgOp |
||
ecza: 6dac3ce | sorear++ | (6 files): Move everything else to CgOp |
|||
pmichaud | likely this Sunday. | ||
masak | \o/ | ||
jnthn | pmichaud++ # yay! | ||
pmichaud | that's one of those things that I think has to be done for R* | ||
masak | that's one of the more serious remaining bugs. | ||
jnthn | Aye, me too | ||
Tene | masak: Yes, but those are functionally different. | ||
masak | Tene: please elaborate. | 19:41 | |
Tene | masak: <> quotes its arguments. | ||
masak | pmichaud: this one is quite important as well: rt.perl.org/rt3/Ticket/Display.html?id=66782 | ||
19:42
Ross left
|
|||
jnthn | masak: Is it a problem for .subst or just .= ? | 19:42 | |
masak | Tene: oh, sure. right. they're not identical, like .day and .day-of-month are. | ||
pmichaud | .subst, I suspect. I suspect $/ still isn't being bound properly. | ||
masak | aye, .subst | ||
jnthn | OK | ||
pmichaud | that one is particularly tricky. | ||
masak | Tene: but to keep the analogy intact, I wouldn't use .day and .day-of-month interchangably either. | 19:43 | |
19:43
Ross joined
|
|||
masak | Tene: (even though they return the same thing) | 19:43 | |
pmichaud | because we really have to monkey with the lexpads to get it even close to right. last time moritz++ and I looked at it we ended up in a catch-22 situation, iirc. | ||
masak | ok. keywords "monkey" and "catch-22" make me set my hopes not-too-high for that one. :) | ||
guess we can handle *one* FAQ on the channel. :P | 19:44 | ||
19:45
kbenson left
|
|||
jnthn | pmichaud: Is it essentially that $/ normally comes from outer, but in this case we want it to go in dynamically? | 19:45 | |
pmichaud | I think there's a design hole there somewhere that likely needs addressing. Let me see if I can dig up the relevant discussion. | ||
jnthn: somewhat. It's not just dynamically either. | 19:46 | ||
19:46
kbenson joined,
kbenson left
|
|||
[Coke] | pmichaud: there's planning? I thought I was just going to pull a trigger and boom. | 19:47 | |
masak | bah, p6l werves into Temporal discussion that was settled months ago. how will I be able to read this and not lose interest or blow a fuse? :) | ||
pmichaud hopes there's a :-) missing from Coke's message :) | |||
jnthn | masak: You could always not read it. ;-) | ||
masak | jnthn: right... :) | 19:48 | |
19:49
IRSeekBot joined
|
|||
jnthn | masak: I read p6l quite selectively. :-) | 19:49 | |
TimToady | .subst is always supposed to set CALLER::<$/> | ||
just like everything else is, if you assume that regex matches always have helper routines | |||
pmichaud | but by default, closures tend to look at OUTER::<$/> | ||
masak | (Mark J. Reed)++ # has apparently googled, AND read Temporal.pm, AND read ISO 8601. | ||
19:49
nimiezko joined
|
|||
masak | I feel better now. | 19:49 | |
TimToady | closures are supposed to have their own $/ | ||
pmichaud | which defaults to... ? | 19:50 | |
TimToady | which defaults to outer | ||
jnthn | masak: oh wow! :-) \o/ | ||
pmichaud | so how does that work, then? | ||
jnthn | TimToady: Oh, so essentialy | ||
masak | yary-- # wanting to add more bikeshedding to an already large shed | ||
TimToady | $/ is always scoped to the current block, but defaults to a copy of its outer match | ||
jnthn | say $x.subst(/(\d+)/, { $/ + 42 }); | ||
.subst sets CALLER::<$/> | 19:51 | ||
pmichaud | TimToady: right, that's what we have now. | ||
TimToady | which is OUTER to the closure | ||
jnthn | And that caller is the outer of the closure? | ||
(We assume that it is..) | |||
TimToady | that's the plan | ||
pmichaud | wait | ||
I need to find the example that failed for that. | 19:52 | ||
lue | masak: maybe I should comment on this recurring discussion about time, but I'd have to do some research first :) | ||
masak | lue: you would, or you'd have to answer to me. :> | ||
pmichaud | okay, I was thinking of a different problem. | ||
lue | [ not to mention the part where I can afford to ignore my email for a couple of days, so I haven't noticed it's going on :) ] | 19:53 | |
masak | lue: I've only used my cinnamon bun once, and that was during a Temporal discussion. | ||
19:53
jnthn sets mode: +o masak
|
|||
masak | 哈哈 | 19:53 | |
pmichaud | same is true for .match ? | 19:54 | |
TimToady | yes | ||
pmichaud | looking | ||
TimToady | if m// uses match internally, it'll have to hoist $/ an extra level | ||
19:54
gbacon left
|
|||
TimToady | same for any helper that delegates to .match or .subst that wants to set user's $/ | 19:55 | |
pmichaud | right | ||
I think that .subst uses .match internally, so it has to do the same. | |||
lue | masak: just don't expect me to give ISO money to read up on ISO-8601 :) | 19:56 | |
TimToady | but as with $!, the intent is to clobber the caller's variable so it persists after the call | ||
jnthn | Heh. Maybe it's time for me to implement CALLER:: | ||
19:56
pyrimidine left
|
|||
TimToady | well, callframe.my<$/> will do :) | 19:56 | |
jnthn | ooh, yes :-) | 19:57 | |
TimToady | er, callframe(Routine,1).my maybe | ||
jnthn | Something like that | ||
TimToady | go to the current Routine callframe and one out from there | ||
masak | lue: ISO money? I'm picturing square coins which look like rhombuses because the angle is sorta weird. :) | ||
lue | very punny :) | 19:58 | |
sorear | lue: google around a bit, almost all of the interesting ISO and ANSI standards have legal free versions floating around the net | ||
TimToady | I think S06 finesses the definition of caller to work for non-inline lambda calls too, though | ||
but if you know you're in a Routine, that's probably good enough | |||
19:58
Sarten-X left
|
|||
tylercurtis | masak: Wouldn't a "square" with the angle sorta weird be a rhombus and not a square? | 19:58 | |
masak | lue: what sorear said. I certainly haven't paid any ISO money. I basically read the Wikipedia article, which was goodenuf. | 19:59 | |
tylercurtis: nono, they're squares, but they're lying flat on a table or something, and viewed from a non-straight-above angle. | 20:00 | ||
tylercurtis | masak: Oh. Okay. | ||
lue | I know. I'm only saying don't expect me to go that far to seem knowledgeable :) | ||
masak | tylercurtis: en.wikipedia.org/wiki/File:IsometricFlaw_2.svg | ||
jnthn | And Microsoft paid for it to be spec'd that way, and have a patent on the angle. | 20:01 | |
masak | lue: this is the Internet. I'm not expecting anything. :) | ||
20:01
kensanata left
|
|||
lue | "I have bought a hard copy of every single ISO standard in existence!" "Have you read any of them?" "...maaaybee." | 20:03 | |
20:07
c1sung joined
20:10
masak left
20:11
aubreyja left
20:15
eternaleye joined
|
|||
moritz_ | the w3 xhtml validator is funny: I removed 28 errors by adding 4 missing closing tags | 20:15 | |
lue | .oO[ either they overcount, or it's just to scare you into fixing it :) ] | 20:17 | |
pmichaud | class LexPad is Associative { | 20:18 | |
o_O | |||
"is Associative"? | |||
moritz_ | uhm | ||
should be 'does', I assume :-) | |||
jnthn | Yes :-) | ||
TimToady | or is Hash :) | ||
pmichaud | why isn't it just "is EnumMap", ooc? | ||
moritz_ changes, and spectests | |||
sorear wonders how to turn off 'two terms in a row' | |||
pmichaud | I have other changes to make there. :) | ||
moritz_ | what would we gain from that? | ||
pmichaud | I would expect all of the methods available for EnumMap to be available for LexPad | 20:19 | |
moritz_ | pmichaud: ok, then I'll let you do it | ||
pmichaud | like .pairs, and the like. | ||
moritz_ | and Associative doesn't provide .pairs? | ||
pmichaud | no. | ||
moritz_ | I kinda expected it would, in the end | ||
pmichaud | .pairs tends to come from Any-list | 20:20 | |
Tene | sorear: what would you be trying to achieve by doing that? | ||
pmichaud | EnumMap overrides that. | ||
TimToady wonders why sorear++ thinks turning off 'two terms in a row' would be anything close to a good idea | 20:21 | ||
moritz_ | a Mathematica-style 2 x to mean 2 * x | ||
TimToady | since that's the main thing that keeps Perl grammars from descending into a mazy of twisty little error messages, all wrong | ||
sorear | TimToady: because I'm working in a subgrammar with entirely different rules, and it's just confusing me | 20:22 | |
moritz_ | but... right, we'd lose most error messages | ||
sorear is trying to use STD.pm6 to parse s-expressions | |||
moritz_ | uhm | ||
but you're not using a precedence parser for that, are you? | |||
TimToady | okay, well, if you're parsing a different language, I'll note that STD::Regex can juxtapose terms | ||
but you'll note that most Regex error messages are "Couldn't find the ]" or some such | 20:23 | ||
pmichaud | does LexPad need to be its own type? How about if we just used an EnumMap for it? | 20:24 | |
moritz_ | I guess they won't be much more advanced for s-exprs :-) | ||
TimToady | you can't turn it into an EnumMap till you're done compiling the scope | ||
pmichaud | TimToady: this is at runtime, atm. | ||
moritz_ | pmichaud: I saw that Stash is a type of its own... but currently it doesn't need to be one (where it = LexPad) | ||
20:25
Cyrus joined
|
|||
TimToady | it's mostly to get methods on it in P5 :) | 20:25 | |
pmichaud | callframe(0).my.WHAT # ? | ||
20:25
clintongormley left
|
|||
TimToady | == MY.WHAT | 20:25 | |
pmichaud | ...and that would be? ;-) | ||
20:25
japhb joined
|
|||
moritz_ | Stash? LexPad? Hash? | 20:26 | |
pmichaud | Hash implies mutability of keys; not sure we want that. | ||
TimToady | you do at compile time | ||
pmichaud | good point. | ||
TimToady | or when constructing an EnumMap in general... | ||
20:27
lorev joined
|
|||
TimToady | well, .my is kind of a fake hash that looks up in the stash but really returns the current lexpad's entry | 20:28 | |
pmichaud | I think I'll just make it a Hash for now in Rakudo. | ||
TimToady | probably a hash of offsets into the frame's associated lexpad | 20:29 | |
so maybe written .my('$foo') rather than .my<$foo> so that you don't have to synthesize an array that is just a wrapper | 20:30 | ||
maybe close over the lexpad and return a fake hash if they just ask for .my() though | 20:31 | ||
sort of a pessimal thing to want | |||
20:32
ashleydev left
|
|||
dalek | ecza: e32cb27 | sorear++ | (3 files): Add a concrete syntax for CgOp |
20:34 | |
ecza: e9e5685 | sorear++ | (3 files): Start moving setting to Q:CgOp |
|||
20:36
Cyrus left,
Cyrus joined
20:38
uniejo left
|
|||
lorev | .my is msia | 20:39 | |
ok nvm | |||
pmichaud | locally: | 20:40 | |
> $_ = 'food for thought'; say .subst(/o+/, { $/.chars }, :global); | |||
f2d f1r th1ught | |||
spectesting. | |||
jnthn | \o/ | ||
TimToady | \ö/ | 20:41 | |
pmichaud | rakudo: $_ = 'food for thought'; say .subst(/o+/, { $/.chars }, :global); | ||
p6eval | rakudo d51e99: OUTPUT«Method 'chars' not found for invocant of class '' in <anon> at line 20:/tmp/gO5gzpz3Qw in 'Cool::subst' at line 2068:CORE.setting in main program body at line 20:/tmp/gO5gzpz3Qw» | ||
pmichaud | right. | ||
(making sure I actually fixed something :-) | 20:42 | ||
jnthn | pmichaud: I can patch up the s/// form if your patch doesn't make that work too :-) | ||
pmichaud | example using s/// form? | ||
does it automatically make a closure out of the second // ? | |||
jnthn | Yes | ||
oh wait | 20:43 | ||
More itneresting is | |||
tadzik | hmm. Is division by zero no longer a bad thing? | ||
jnthn | my $x = 'food for thought'; $x ~~ s[o+] = $/.chars; say $x; | ||
moritz_ | it's bad, but not necessarily fatal | ||
pmichaud | jnthn: did that work before? | 20:44 | |
jnthn | sure it doesn't | ||
pmichaud | fsvo work? | ||
moritz_ | rakudo: say (1/0).perl | ||
p6eval | rakudo d51e99: OUTPUT«1/0» | ||
jnthn | rakudo: my $x = 'food for thought'; $x ~~ s[o+] = $/.chars; say $x; | ||
p6eval | rakudo d51e99: OUTPUT«Method 'chars' not found for invocant of class '' in <anon> at line 20:/tmp/STnN8NtWLc in 'Cool::subst' at line 2068:CORE.setting in 'Substitution::ACCEPTS' at line 5472:CORE.setting in 'infix:<~~>' at line 411:CORE.setting in main program body at line | ||
..20:/tmp/STnN8NtWLc» | |||
tadzik | moritz_: then you should update your exceptions chapter :) | ||
(in Perl 5 to 6) | |||
pmichaud | > my $x = 'food for thought'; $x ~~ s[o+] = $/.chars; say $x; | ||
f2d for thought | |||
moritz_ | \o/ | 20:45 | |
ship it! | |||
jnthn | \o/ | ||
Oh, it'd want to me s:g[o+] ... for all of them. | |||
pmichaud | > my $x = 'food for thought'; $x ~~ s:g[o+] = $/.chars; say $x; | ||
Unable to parse postcircumfix:sym<[ ]>, couldn't find final ']' at line 1 | |||
...can't have everything just yet. :) | |||
moritz_ | s:g parsing considered non-trivial | 20:46 | |
jnthn | my $x = '1 2 3'; $x ~~ s[\d+] *= 2; say $x; # how about this? | ||
oh, I think I dind't implement parsing of that yet | |||
moritz_ | rakudo: s[a] += 2; | ||
p6eval | rakudo d51e99: OUTPUT«===SORRY!===Missing assignment operator at line 20, near "+= 2;"» | ||
jnthn | Aye | ||
Heh | |||
May do that, it's cute. | |||
[Coke] | \ő/ | 20:47 | |
20:47
eternaleye left
|
|||
pmichaud | I get a fail in action-stubs.t | 20:47 | |
20:48
mariano__ left
|
|||
pmichaud | method TOP($/) { | 20:48 | |
"a\nb".subst(/\n+/, '', :g); | |||
what should happen here? | |||
does .subst rebind CALLER::<$/> or does it assign to it? | 20:49 | ||
moritz_ | return "ab" | ||
pmichaud | ($/ is readonly here) | ||
moritz_ | I'd kinda hope it gets its own $/ | ||
pmichaud | no, TimToady++ said above that .subst modifies CALLER::<$/> | 20:50 | |
moritz_ | ok | ||
pmichaud changes it to TOP($/ is rw) for now to pass the test. | 20:51 | ||
moritz_ | +1 | ||
jnthn | pmichaud: Sounds sane. | ||
moritz_ | tadzik: fixed | ||
tadzik++ # pointing out outdatedness in my posts | 20:52 | ||
tadzik | heh, yw. It's still the most reading-friendly docs for Perl 6 imo | 20:53 | |
moritz_ | I kinda toyed with the idea of making a mini-book out of them | 20:54 | |
tadzik | I'd love some KnR style book. Nothing fancy, just explaining the language step by step, with some easy examples | 20:56 | |
[Coke] | tadzik: have you looked at the perl6 book in github? | 20:57 | |
tadzik | yep, but it's not exactly what I'm looking for. It's nice though, I'm watching its progress | 20:58 | |
20:59
whiteknight joined
|
|||
jnthn | rt.perl.org/rt3/Ticket/Display.html?id=68752 # closable now? | 21:07 | |
moritz_ | +1 | 21:08 | |
21:12
tadzik left
|
|||
lorev | just curious | 21:12 | |
OT | |||
russians invented trinary coding ? | |||
is this true? | |||
21:12
ashleydev joined
|
|||
jnthn | Хуй знает, може быть | 21:14 | |
:-) | |||
lorev | any idea folks? | ||
mberends | lorev: no. and it's handly useful. en.wikipedia.org/wiki/Trinary_logic | 21:15 | |
*hardly | |||
[Coke] | Хуй? | ||
lorev | mberends: what do you mena? it's not very useful? | 21:16 | |
jnthn | [Coke]: "Хуй знает" together is like "Hell knows" | ||
lorev | mberends: much was done to prevent russians from using it | 21:17 | |
[Coke] | jnthn: has a more interesting direct translation. =-) | ||
lue | meh, I go for quantum logic :) | ||
jnthn | lorev: Having on or off turned out to be a bunch simpler than trying to differentaite 3 levels with noise margins. :-) | ||
[Coke]: <innocent look> | |||
[Coke] | FAIL. | 21:18 | |
lorev | jnthn: nods | ||
21:18
ejs joined
|
|||
lue | rakudo: say !False ~~ True | 21:18 | |
p6eval | rakudo d51e99: OUTPUT«1» | ||
jnthn | lorev: Looks like Polish from the article mberends++ linked. | 21:19 | |
lue | rakudo: say !rw ~~ readonly | ||
p6eval | rakudo d51e99: OUTPUT«Could not find sub &readonly in main program body at line 20:/tmp/na1Z0TMnlq» | ||
lorev | jnthn: polish? | ||
jnthn | Wow. Back in the days when Lvov was part of Poland, even. :-) | ||
21:19
ejs left
|
|||
jnthn | lorev: en.wikipedia.org/wiki/Jan_%C5%81ukasiewicz | 21:20 | |
lorev | ok mberends pasted this en.wikipedia.org/wiki/Trinary_logic | ||
not sure where you got that link from | |||
:P | |||
mberends | lorev: compared with binary, which is easy to make and gives us so much value, ternary/trinary seems more complex to implement and solves only a small number of problems. | ||
jnthn | lorev: From the aritcle mberends linked ;-) | 21:21 | |
pmichaud | I think I'm going to regress on RT #71514. | ||
lue | rakudo: say (True&False) ~~ (False&True) | 21:22 | |
p6eval | rakudo d51e99: OUTPUT«0» | ||
lue | \o/ quantum-compatible | ||
jnthn | woo, back down to 650 RT tickets | 21:23 | |
oh, 649 even | |||
pmichaud | about to go back to 651 :-) | ||
mberends | \o/ a very patchy Rakudo HTTP::Server::Simple::PSGI just said Hello World to a browser, bringing a Perl 6 Dancer a few steps closer | ||
lorev | jnthn : ah | ||
jnthn | 650 :P | ||
pmichaud | 650 even. :-) | ||
lorev | mberends: indeed | ||
jnthn | pmichaud: Gonna leave trying to fix taht role outer bug until tomorrow. | 21:24 | |
pmichaud | jnthn: wfm | ||
jnthn | pmichaud: It seems that it happens because we do the clone in a loadinit | 21:25 | |
pmichaud: At a time when the block never got captured. | |||
pmichaud: er, a get_closure I guess in current terminology | 21:26 | ||
pmichaud: And that's not directly in a load init, but in a call chain has a loadinit in it. | |||
21:26
rv2733 left
|
|||
pmichaud | jnthn: right. | 21:27 | |
that's what I meant by "I think it's more than just a loadinit issue" | |||
jnthn | pmichaud: Well, we need to make closures or our role variants'll get messed up. | 21:28 | |
21:28
timbunce left
|
|||
pmichaud | they are closures | 21:29 | |
jnthn | Right. | ||
pmichaud | the problem is when the closure gets initialized. | ||
jnthn | Yes, which is from a load init. | ||
pmichaud | when does the body of a role or class get executed? | ||
jnthn | Given | 21:30 | |
role R { } | |||
class C does R { } | |||
pmichaud | currently the spec says (iirc) that the body acts like a bare block. | ||
jnthn | Part of the call to build class C is | ||
trait_mod:<does>($class-we're-making, R) | |||
And it's within there | |||
So it's within the code that creates C | |||
The problem is that a role body can't be a bare block. | |||
pmichaud | so, if i have | 21:31 | |
jnthn | Consider role R[::T] { say T } | ||
pmichaud | role R { say 'hello' } | ||
right | |||
jnthn | So roles have to be different from classes in that sense. | ||
pmichaud | so, it gets executed whenever ... ? | ||
jnthn | whenever the role is done | 21:32 | |
That is | |||
class C does R { } compiles down to two things | |||
Something we do a loadinit time that makes all the meta-class calls. Including the trait_mod:<does> call that forces R's body to run and produce a role | |||
*at loadinit time | |||
And the other thing is the bare block. | 21:33 | ||
pmichaud | and R is currently scoped where? | ||
21:33
pmurias left
|
|||
pmichaud | i.e., where does the body of R get placed in the PAST tree? | 21:33 | |
if the body of R is in the loadinit, that's probably wrongish. | |||
jnthn | No, it shoudln't be at all | ||
I'm sure it's just as if you'd written multi R { } or so | 21:34 | ||
pmichaud | Istr thinking "the role body is in the wrong place" when working on the closure stuff. | ||
21:34
timbunce joined
|
|||
jnthn | Oh | 21:34 | |
Let me check | |||
My *intention* at least is that it's just like a class's bare block, but it's a sub rather than a bare block. | |||
pmichaud | that seems reasoanble. | 21:35 | |
*reasonable. | |||
lorev | sorry | ||
but anyone understands german here? | |||
es ist ziemlich hier jetzt, Wunder warum, <- what does this mean? | |||
jnthn | pmichaud: It's correct | ||
21:35
ruoso left
|
|||
jnthn | pmichaud: The outer of the role body is just the main program body in a "role R { }" example. | 21:36 | |
pmichaud | but it gets executed via a .loadinit, yes? | 21:37 | |
jnthn | Yes | ||
It's dynmaic chain is a loadinit | |||
pmichaud | that's likely an issue. | ||
jnthn | It's static one is not | ||
pmichaud: Compare: | |||
pmichaud | because at the point it gets invoked, the main program body hasn't been set_outered to the setting yet. | ||
jnthn | rakudo: role Foo { method m { say 42 } }; class C does Foo { }; C.new.m | ||
pmichaud | (indeed, the main program body isn't compiled yet) | ||
p6eval | rakudo d51e99: OUTPUT«Could not find sub &say in 'm' at line 20:/tmp/lZXCGXQjLm in main program body at line 20:/tmp/lZXCGXQjLm» | ||
jnthn | rakudo: my role Foo { method m { say 42 } }; my class C does Foo { }; C.new.m | ||
p6eval | rakudo d51e99: OUTPUT«42» | 21:38 | |
21:38
Mowah left
|
|||
jnthn | (my classes are not set up in a loadinit) | 21:38 | |
Or even | |||
rakudo: role Foo { method m { say 42 } }; my class C does Foo { }; C.new.m | |||
p6eval | rakudo d51e99: OUTPUT«42» | ||
pmichaud | jnthn: see above. | ||
mberends | lorev: something like "it is fairly here now, wonder why". It may make more sense in context. | ||
lorev | mberends: thanks:) | ||
jnthn | pmichaud: Right, that's exactly the case. | ||
pmichaud | I don't know how to fix that. | 21:39 | |
jnthn | Me either. :-( | ||
pmichaud | I mean, the role body needs an outer context at the point where it's executed, but its outer isn't finished compiling yet. | ||
wait | 21:40 | ||
jnthn | pmichaud: Well, it's been compiled, but the lexical relationshipos haven't been set up, that's for sure. | ||
pmichaud | with "class C does Foo { }" | ||
when does the .loadinit for C get invoked? | 21:41 | ||
21:42
timbunce left,
timbunce joined
|
|||
pmichaud | jnthn: I think we need to just think about it some more :-) | 21:43 | |
jnthn | pmichaud: The code to set up C goes into a .sub "!class_init_10" which is called from a loadinit attached to the main program body. | ||
pmichaud | jnthn: and it assumes that the role body has already been compiled, yes? | 21:44 | |
jnthn | What do you mean by "compiled"? | ||
But yes, it assumes that. | |||
pmichaud | already converted to PIR and loaded. | ||
21:44
DemoFreak left
|
|||
jnthn | Just as class A is B { } assumes that B is already compiled in that sense. | 21:44 | |
pmichaud | i.e., if you switched the class init to be BEGIN, it wouldn't work. | ||
21:44
DemoFreak joined
|
|||
pmichaud | because the role wouldn't be compiled yet (unless it was also done via BEGIN) | 21:44 | |
jnthn | Right, it relies on the class and the role being compiled in the same "stage" (e.g. both in BEGIN or both in INIT) and the calls to the code to set them up being made in the order that they appear in the program. | 21:45 | |
I mean, with classes it's also the case that the outer isn't really set up either. | 21:46 | ||
pmichaud | okay, I think I have a partial answer, here. | ||
21:46
gbacon joined
|
|||
jnthn | rakudo: INIT { C.m }; my $x = 42; class C { method m { say $x } } # curious | 21:46 | |
p6eval | rakudo d51e99: OUTPUT«Could not find sub &C in main program body at line 20:/tmp/ojV72FrLc5» | ||
jnthn | oh duh | ||
pmichaud | C not declared. | ||
jnthn | rakudo: my $x = 42; class C { method m { say $x } }; INIT { C.m } # this ;-) | ||
p6eval | rakudo d51e99: OUTPUT«Lexical '$x' not found in 'C::m' at line 20:/tmp/5TkBcjmdhz in main program body at line 20:/tmp/5TkBcjmdhz» | 21:47 | |
jnthn | pmichaud: That is an exhibition of probably the same issue | ||
pmichaud | I'm thinking the solution is to have a very early .loadinit that sets the mainline's outer. | ||
so that it's done before the other .loadinits take place. | |||
jnthn | pmichaud: We just get lucky with classes because need to pre-declare = usually they don't get used until we got a pass over the class body to capture_lex 'em. | 21:48 | |
pmichaud | right. | ||
anyway, early .loadinit on mainline sounds like what we need. | |||
jnthn | So it's not that classes lack the problem so much as it's less apparent. | ||
Yes, that sounds promising. | |||
pmichaud | since I just refactored the startup sequence I'm familiar with it -- I'll give it a try. | ||
21:48
SmokeMachine left
|
|||
jnthn | pmichaud: Great - I haven't sync'd my branes up with the refactoring there yet. | 21:49 | |
pmichaud | right | ||
jnthn | Guess this is a good time for me to read through it though. | ||
pmichaud | it's pretty simple now, although it may become more complex after this fix. | ||
but it still won't be overly complex. | |||
but yes, if we get the mainline set_outer'd properly before the other loadinits take place, I think that may solve it. | 21:50 | ||
jnthn | Wow, $*SETTING_MODE survived your refactoring. :-) | ||
pmichaud | it wasn't in my way :-) | ||
I get rid of things that get in my way :) | |||
21:52
lorev left
21:57
HarryS left
21:58
HarryS joined
|
|||
pmichaud | okay, we now have trouble that with $x .= subst(/l/, 'o'); the caller of subst isn't the thing that has $/ | 21:59 | |
or, more to the point | |||
$x .= subst(/o+/, { $/.chars } ) | 22:00 | ||
subst's caller isn't the closure's outer | |||
jnthn | pmichaud: Yeah, the .= helper needs to be a tad more invisible. | ||
pmichaud | (its caller is the .=) | ||
22:00
timbunce left
|
|||
Tene | does a .subst set $/ in the context of the call? | 22:01 | |
pmichaud | it sets $/ of the caller to .subst | ||
jnthn | pmichaud: .= is perhaps tweakable to deal with this. | ||
Tene | pmichaud: and the caller of .subst is the outer of the {} | ||
jnthn | pmichaud: Though not sure if that's the right approach. | 22:02 | |
pmichaud | Tene: in the normal case, yes. | ||
Tene | That's how I always thought that that would work. | ||
pmichaud | but as currently implemented in rakudo, $x .= subst(...) | ||
the caller of .subst is the &infix:<.=> | |||
which is not the outer of the closure. | |||
Tene | ahh | ||
.= isn't just syntactic? | |||
I guess it wouldn't be. Huh. | 22:03 | ||
22:03
HarryS left
|
|||
pmichaud | foo() .= subst(...) # can't be purely a syntactic transformation | 22:03 | |
well, it *can*, but it's not simply foo() = foo().subst(...) | 22:04 | ||
Tene | Right. | ||
Save the result in a temp, and then mutate. | |||
jnthn | Yeah, I've done it syntactically before and it's just messy. | ||
Tene nods. | |||
jnthn | Do-able though, for sure. | ||
pmichaud | we also have to deal with .*subst and .?subst and the like | 22:05 | |
Tene | You could also check the caller, and walk a step further out if it's .=, but that's kind of evil. | ||
pmichaud | so I don't think the answer is to simply fix .= | ||
TimToady | or callframe(Mumble,1).my needs to have a proper Mumble that skips metas | ||
22:06
bkeeler joined
|
|||
Tene | pmichaud: could you have .= bind its caller's $/ ? | 22:06 | |
pmichaud | TimToady: does .subst assign to $/ or rebind it? | ||
22:07
IllvilJa left
|
|||
pmichaud | Tene: .= rebinding $/ to be its caller might work, yes. | 22:07 | |
TimToady | depends on whether the defaulting to OUTER::<$/> is an alias or a copy | ||
pmichaud | currently the defaulting is an alias | 22:08 | |
not a copy | |||
TimToady | so if you assign, the inside $/ leaks outward | ||
further than it should | |||
pmichaud | correct. | ||
Tene | That wouldn't quite work in general, though, as any other method that referred to a CALLER:: would potentially break. | ||
TimToady | if it were copied in, you could assign | ||
but with alias, I think bind is needed | |||
to unalias it | 22:09 | ||
pmichaud | so, if we have | ||
22:10
Guest20767 joined
|
|||
pmichaud | 'abc' ~~ /./; 'def'.subst(/e/, { 1 }); # $/ is set to 'e' | 22:10 | |
22:10
nimiezko left
|
|||
pmichaud | 'abc' ~~ /./; { 'def'.subst(/e/, { 1 }); } # $/ is set to 'a' | 22:10 | |
TimToady | maybe there's a 'is service' trait that refrains from allocating $_, $/, or $!, and CALLER always skips those | ||
pmichaud | TimToady: does what I just wrote seem correct? i.e., .subst setting $/ doesn't leak outside of the block? | 22:11 | |
TimToady | or just starts searching for those dynamic variables, and doesn't find 'em, so keeps on going to the user's code | ||
we already have search for dynamic vars, I presume | 22:12 | ||
pmichaud | if we have some way of designating a sub/block that doesn't have a $_, $/, or $! that helps a bit | ||
because we can indeed use dynamic vars there. | |||
we've run into some issues where converting a helper sub to core/p6 has introduced an unwanted $/ dynamic var | |||
TimToady | well, how 'bout 'is helper' or some such | 22:13 | |
and you always have to write everything explicitly in helpers | |||
pmichaud | seems reasonable | ||
TimToady | that seems like a cleaner course to me | 22:14 | |
pmichaud | so then .subst always sets the dynamic $/ ? | ||
(excluding its own, of course) | |||
TimToady | .subst itself could be marked 'helper' | ||
pmichaud | true | ||
but it still sets the dynamic $/ ? | 22:15 | ||
and is that an assign or a bind? ;-) | |||
TimToady | if we know $/ is dynamic, then it would always just look for where it occurs innermost | ||
22:15
Guest20767 left
|
|||
pmichaud | I thought that $/ was always dynamic. (It was at one point) | 22:15 | |
S02:2695 | 22:17 | ||
" (C<$_>, C<$!> and C<$/> are always | |||
dynamic, as are any variables whose declared names contain a C<*> twigil.) | |||
" | |||
TimToady | yes, but the new trick is not to create one every level | ||
pmichaud | right | ||
no problem there. | |||
so then my question is still "assign or bind"? | |||
TimToady | and may answer is still, depends on how it's initialized to OUTER | 22:18 | |
pmichaud | okay | ||
and we don't know that yet? | |||
TimToady | you said it's an alias, so you need a rebind | ||
pmichaud | (currently we have $/ = OUTER::<$/>, almost like a parameter bind | ||
er | |||
TimToady | if it were a copy, you could assign | ||
pmichaud | $/ := OUTER::<$/> | ||
22:19
HarryS_ joined
|
|||
pmichaud | I guess my question is really "do you think it should be a copy or an alias?" | 22:19 | |
i.e., if I have: | |||
TimToady | well, alias is cheaper when it works, but if so, we have to be able to rebind a dynamic var in place | 22:20 | |
pmichaud | 'abc' ~~ '.'; if $other { 'def' ~~ /./ }; say $/ | ||
or even | |||
'abc' ~~ '.'; if $other { $/ = 'hello'; }; say $/ | |||
TimToady | that should keep the outer $/ the same, yes | ||
I think... | 22:21 | ||
pmichaud | and I meant /./ above, not '.' | ||
TimToady | nod | ||
pmichaud | and "outer $/ the same" meaning "result of the match, not of the inner assignment"? | ||
c.f. | |||
TimToady | yeah, sorry | ||
sbp | (cf.) | ||
pmichaud | $_ = '3'; if $other { $_ = '4' }; say $_; | ||
TimToady | but that kinda implies not an alias | ||
or some kind of COW | 22:22 | ||
pmichaud | well, "alias" is really something along the lines of "is rw" | ||
"not an alias" is really something along the liens of "is copy" | |||
*lines | |||
TimToady | can we make subst's $/ := match rebind the caller's lexical $/ slot? | 22:23 | |
pmichaud | yes, I think so. | ||
I mean, I know we can do it in rakudo. | 22:24 | ||
(might have to do some tricks, but yes.) | |||
TimToady | so dynamic variables are bvalues, potentially | ||
$*ENV := my_new_env | |||
pmichaud | oh, I see what you're saying. | ||
TimToady | that's what it implies | ||
pmichaud | we do have a store_dynamic_lex opcode available to use, yes. | ||
it rebinds the symbol itself, as opposed to the container. | |||
so yes, I can do bvalue there | 22:25 | ||
TimToady | considering you had to look it up in a name space somewhere, it had to have traversed its bvalue somehow :) | ||
pmichaud | well, looking it up is find_dynamic_lex | ||
and it just gives me the container, not the the pad | |||
but yes, I can rebind it. :-) | |||
TimToady | you'd need the pad to replace the pointer to the container | ||
pmichaud | store_dynamic_lex replaces it in the pad | ||
TimToady | maybe doing that needs a MONKEY_PATCHING equivalent | 22:26 | |
or permissing from the var | |||
*sion | |||
or we just say its erroneous if the optimizer has assumed a particular binding and you change it | 22:27 | ||
I think certainly we shouldn't allow rebinding of a dynvar that is intialized with ::= | |||
pmichaud | is that true for vars in general or only dynvars? | 22:28 | |
TimToady doesn't know, but likes generality when it doesn't get in the way | |||
22:28
IllvilJa joined
|
|||
pmichaud | well, last interpretation of ::= that I had was that vars could be rebound. | 22:29 | |
since it's the same as parameter binding | |||
(read-only parameter binding, taht is) | |||
TimToady | right | ||
I'm pretty consistently inconsistent. :) | |||
pmichaud | anyway, your current feeling is that setting of $/ by .subst and .match shouldn't leak into outer scopes? | 22:30 | |
TimToady | perhaps there's an 'is rebindable' trait that is default on for parameters | ||
pmichaud | I can make that work for now and see what happens. | ||
TimToady | but could default to off in other places; but it would be on for $/ and $! and $_ too | 22:31 | |
pmichaud | seems like is rebindable would be defaulted on for most everything | ||
except dynvars, maybe. | |||
TimToady | the optimizer might like it off for most lexicals | ||
pmichaud | right | ||
22:37
HarryS_ left
|
|||
pmichaud | time for lunch here | 22:37 | |
bbl | |||
22:39
ashleydev left
22:40
HarryS joined
22:41
skids left
22:52
kfo joined
22:53
kid51 joined
22:55
kfo_ left
23:04
cbk left
23:05
DemoFreak left,
DemoFreak joined
23:06
kfo left,
lestrrat is now known as lest_away
23:07
masonkramer joined,
DemoFreak left,
jimk joined,
kid51 left,
DemoFreak joined
23:09
Guest41149 left
|
|||
dalek | kudo: 98163f7 | jonathan++ | src/Perl6/Actions.pm: Fix generation of attribute initializers so that the generated anonymous method we have attribute initializers inside parametric roles that reference the role parameters too. |
23:11 | |
23:11
xabbu42 joined
23:12
eternaleye joined
|
|||
TimToady | rakudo: module Foo; class A is export {} | 23:18 | |
p6eval | rakudo d51e99: OUTPUT«===SORRY!===Could not find sub &chars» | 23:19 | |
jnthn | ...uh. | ||
Looks like a meta-error. :S | 23:20 | ||
TimToady | I can't rewrite TrigTestSupport to be happy to STD without exporting classes, sigh | ||
jnthn | Oh? | 23:21 | |
colomon | what's up with it? | ||
jnthn looks at it | |||
TimToady | well, currently it just pokes some packages into global that aren't related to the name of the file | ||
so STD picks up the first package name, and saves a AngleAndResult.pm.syml file | 23:22 | ||
jnthn | TimToady: Is that STD limitation or Rakudo fail? | ||
TimToady | so I try making it a module TrigTestSupport;, and then I have to export | ||
jnthn | TimToady: Rakudo looks in the namespace and and spots the typenames. | ||
TimToady | STD uses the package name, not the file name, because otherwise it doesn't know where in foo/bar/baz/blech.pm the module name starts | 23:23 | |
could be blech, or baz::blech, or bar::baz::blech | |||
jnthn | Ah, OK | ||
TimToady | so it assumes all modules have a class name matching the 'use' name | ||
23:23
Ross left
|
|||
TimToady | (or module name, package name really) | 23:23 | |
but TrigTestSupport breaks that | |||
colomon | would it work if it were renamed AngleAndResult.pm? | 23:25 | |
TimToady | no, because then the other classes wouldn't show up in the .t | ||
sorear | is what TrigTestSupport does considered good form? | 23:26 | |
TimToady | probably not PBP :) | ||
23:27
meppl left
|
|||
sorear | P6BP? | 23:28 | |
TimToady | the more fundmantal problem is that rakudo is treating the argument to 'use' as primarily a filename rather than primarily a module name | 23:35 | |
23:38
azert0x left
|
|||
TimToady | there is a piece of data out there named 'module Foo::Bar;' and 'use Foo::Bar;' needs to find that piece of data regardless of how that name gets mapped onto storage, which might not even be a file system | 23:39 | |
iow the module name space is intended eventually to be completely independent of filesystem names in the same sense that URLs are | 23:42 | ||
23:42
patspam left
|
|||
ingy | greetings! | 23:44 | |
TimToady: wanna help me design a language? | |||
jnthn | TimToady: Well, we already have module location and module loading factored out into different classes, which are called from the actions. So it's already separated out somewhat. | ||
ingy | TimToady: I need an infix operator for `index` | 23:45 | |
TimToady | so write one :) | ||
ingy | TimToady: I'm just askin for that TimToady feel, man | ||
it's not for p6 | 23:46 | ||
it's an assertion op for testml. this string contains that string... | 23:47 | ||
TimToady | well, there's always 'this string' ~~ /that string/ | 23:48 | |
if you only care about whether | |||
jnthn | ~.. (at start of string), ..~ (at end of string), ..~.. (somewhere in the string) ;-) | ||
Tene | .u ELEMENT OF | ||
phenny | U+2208 ELEMENT OF (∈) | ||
Tene | Why not that? | ||
TimToady | er, cause strings aren't sets? | ||
Tene | Eh, I guess. | ||
.u CONTAINS AS A MEMBER | 23:50 | ||
phenny | Tene: Sorry, no results for 'CONTAINS AS A MEMBER'. | ||
lue | they can be if you look at them as a series of bytes :) | ||
ingy | I was considering ~~, but this is a DumpMatch™ | ||
grr | |||
DumbMatch™ | |||
jnthn | lue: Nooooooooo!!!!! :-) | 23:51 | |
ingy | lue: sets have unique elements | 23:52 | |
lue | "hello there".powerset # muhahahahahahaha | ||
ingy is probably wrong :) | |||
lue now has an idea to create infinite cardinals in P6 (again) | 23:53 | ||
23:56
Psyche^ joined,
Patterner left,
Psyche^ is now known as Patterner
|
|||
sorear | I wonder if it would make any sense to declare that final classes don't have undefined type objects. | 23:59 |