»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by sorear on 25 June 2013. |
|||
00:01
xinming_ joined
00:02
xinming left
|
|||
dalek | kudo/moar-support: bd292ae | jnthn++ | src/main.nqp: Warnings from END time shouldn't explode. |
00:02 | |
00:07
Entonian joined
|
|||
TimToady | japhb_: I'm not convinced that it's necessary to shoehorn every harebrained getargs policy into MAIN, especially when you have complete access to @*ARGS before main is ever run, in the ordinary mainline code | 00:09 | |
*MAKIN | |||
*MAIN, grr | |||
it's not even required that every Perl 6 program *have* a MAIN | 00:10 | ||
japhb_ | TimToady, I'm not saying they all have to go in there. I am however saying that there are a few common ones that we don't handle at all well right now. | ||
And easy things should be easy. | |||
TimToady | as slopes go, this one is darn slippery | 00:11 | |
japhb_ | In particular, for my personal work, subcommand-style argument handling a la git should Just Work | ||
00:11
ajr_ left
|
|||
japhb_ | No argument there. I'm trying to replace a slope with an appropriately sized and shaped escape hatch. | 00:11 | |
TimToady | the escape hatch is anything above the water line | 00:12 | |
japhb_ | OK, are you saying that you believe the MAIN design as it is now is (at least locally) optimal, such that it's a bad idea to change it? | 00:14 | |
00:14
Entonian left
00:18
rurban1 joined
|
|||
lizmat | just back in from a day away | 00:20 | |
preflex | lizmat: you have 2 new messages. '/msg preflex messages' to read them. | ||
TimToady | the only thing strange about MAIN is that it will be called automatically; dispatching to your own set of 'main' subs is like one call more | ||
lizmat | thank you all for the congrats wrt WCA | ||
TimToady | which is not really heavier than 'is mumble(bletch)' | 00:21 | |
lizmat | .oO( need more stuffing ;-) |
||
japhb_ | lizmat++ woolfy++ # I didn't get in on that yet. ;-) | ||
japhb_ very much likes the self-documenting nature of MAIN, and also likes the magic ... just wants the magic MOAR BETTER. | 00:22 | ||
colomon | lizmat++ woolfy++ # I don't know what is going on, but yay them! | ||
lizmat | colomon: what happened is that woolfy didn't stuff the ballot box enough | 00:23 | |
colomon | and now has an advent post to write? | ||
colomon is guessing | |||
woolfy | colomon: blogs.perl.org/users/brian_d_foy/20...amels.html | ||
colomon doesn't know why there would have been a ballot box. | |||
oh, sweet! | 00:24 | ||
jnthn | lizmat++ woolfy++ # epic conference attendance, and failing to fail to win :) | ||
woolfy | colomon: I voted against me and Liz winning this thing and voted other people up... I think I gave lizmat and myself something like 40 minus-votes over the last months from different places :-) | ||
colomon | woolfy++ | ||
woolfy | so no IP-number checking would track me and block me... :-) | 00:25 | |
japhb_ | woolfy: Too bad for you, basic sanity checking caught you. :-) | 00:26 | |
TimToady | japhb_: subcommands should fit into the current MAIN scheme already, since it's just discriminants like 'pull' on the front, and we can match strings | ||
japhb_ | TimToady, the problem is that all options must appear before all positionals -- and the subcommand strings are positionals. | 00:27 | |
woolfy and lizmat have been here this year: almost all Amsterdam.pm & Niederrhein.pm meetings and several AmsterdamX.pm meetings and both the YAPC::EU and YAPC::NA conferences, | |||
and Perl QA Hackathon in Lancaster, Patch -p1 hackathon in Paris, FOSDEM, T-DOSE, FrOSCon, NQP/Perl 6 course in Frankfurt, and some Perl Workshops | |||
japhb_ | And that's not the way people generally want to use subcommand interfaces. | ||
woolfy | workshops: Orlando, Israel, Netherlands, Germany, Switzerland, Austria, France, Denmark (Nordic), London, Poland. | 00:28 | |
jnthn | Where "some Perl Workshops" = a superset of those I did this year :P | ||
TimToady | subcommands should probably not dispatch to MAIN, but to something MAIN calls | ||
woolfy | jnthn: and you have been here, staying with us, making that sort of a very nice Perl-event as well... :-) | ||
lizmat | japhb_: each subcommand its own MAIN candidate with something like: | ||
multi MAIN ( Str $a where $a eq "bar", ... ) { | |||
japhb_ | TimToady, Huh what? Subcommands with fixed string discriminants seem like *exactly* what you'd want multi MAIN for .... | 00:29 | |
jnthn | woolfy: Yes! That was very nice :) | ||
TimToady | lizmat: multi MAIN ( 'bar', ...) | ||
jnthn | lizmat: That's a long way to write multi MAIN('bar', ...) { | ||
japhb_ | lizmat: Yes, I know. And actually, you just do: multi MAIN ('bar', ...) | ||
LOL | |||
lizmat | wow | ||
:-) | |||
jnthn | ... | ||
lizmat just learned something again :) | |||
TimToady | japhb_: I mean that the pull subcommand should match multi MAIN('pull', *@subcommand) and that some other name should be dispatching the subcommand | 00:30 | |
lizmat | woolfy and me are celebrating with some Belgian single malt whiskey made from triple | 00:31 | |
japhb_ uses that in several programs. And goes crazy with: program --option --option=val --option subcommand args ... # Which looks awful in USAGE | |||
TimToady can't fix everyone's bad design :P | |||
japhb_ | Which design do you think is bad? | 00:32 | |
ETOOMANYPOSSIBLEREFERENTS | |||
TimToady | yes :) | ||
japhb_ | ! | ||
TimToady | precisely :) | ||
if MAIN didn't exist, you'd write what you want in terms of massaging your arglist and delegating subcommands | 00:34 | ||
and you'd be happy :) | |||
japhb_ doesn't like the enforced repetition you'd get from: multi MAIN('pull', *@pull-args) { pull-main(parse-args(@pull-args)); }; multi MAIN('push', *@push-args) { push-main(parse-args(@push-args)); } | |||
TimToady | MAIN isn't intended to be a vehicle for multiplying entities, but for handling stupid argumen lists like 90% of Unix commands | 00:35 | |
japhb_ | Sure, but my argument is that currently, MAIN does not match the parsing practices of modern Unix commands. Nor ancient ones. In fact, there's only a middle-aged set of commands that it (kinda) matches. | ||
Hmmm, maybe the right thing is to just override MAIN_HELPER (or pieces of it) | 00:37 | ||
woolfy | Ow wow, that Gouden Carolus Single Malt Whisky is soooo nice: www.stokerijdemolenberg.be/en/whisky | ||
TimToady | japhb_: or .wrap it | 00:38 | |
but the entire mainline code is already a wrapper for MAIN, basically | 00:39 | ||
japhb_ | TimToady, in it's current implementation, .wrap'ing it would only handle some of the cases, but I think a little reorg might help that. | ||
00:40
rurban1 left
|
|||
japhb_ | Sure. I guess I just want this to work: use MainHelper::GitLike; multi MAIN('pull', @args, %options) { ... } | 00:40 | |
TimToady | well, I'd say "go wild" but I just don't want the insanity leaking into how parameter binding works | ||
japhb_ | Oh, I don't think anything I've mused about so far would involve changes to param binding. | 00:41 | |
jnthn | What's the reason that nameds must come ahead of positionals, ooc? | ||
in-perl-6-i-can('pass', this => 'and', 'another', :thingy, 'without', :!trouble) | 00:42 | ||
TimToady | we don't know when the shift from positionals to variadics happen, and we don't do getopt-driven parsing | ||
japhb_ | I mean, I've wanted the ability to specify list- and hash-valued options, but that's the kind of thing that ought to happen in a module that does some magic and produces a new @positionals, %nameds pair, not changes binding. | ||
TimToady | working it out as something that enables subsig matching would be okay | ||
making the USAGE drive the parsing would not be okay | 00:43 | ||
japhb_ | As currently implemented (and I believe spec'ed), the transition from options to positionals happens at '--' or first non-option. | ||
Oh, no. I expected that USAGE would be the tail, not the dog. | 00:44 | ||
00:44
dayangkun left
|
|||
TimToady | if the first non-option is a discriminant, then you just need the ability to redispatch transforming the --foos of the subcommand the same way MAIN's are | 00:44 | |
japhb_ | nodnod | ||
TimToady | well, and know enough of the delegation to look for a sub-USAGE of some sort | 00:45 | |
japhb_ | Which argues for having the options parser be a reusable component (using the informal meaning there) | ||
TimToady | but to me, I'd rather see this capability on any sub, not just a MAIN | ||
since you prolly wanna name the subcommand handlers according to their name | 00:46 | ||
japhb_ | I almost wrote that kind of thing (working for any sub) way back when, but I was convinced by the crowd that was overdesign. Perhaps I should have been more persistent. :-) | ||
TimToady | for some reason the crowd seems to prefer low-wattage specific solutions sometimes over generic solutions :) | 00:47 | |
generic solutions are better as long as they aren't thrust upon unsuspecting specific users :) | |||
japhb_ | .oO( "Light Bulb!" ) |
||
dalek | rl6-roast-data: cdacefc | coke++ | / (3 files): today (automated commit) |
00:49 | |
[Coke] | lue: sixperl == Perl 6 | ||
japhb_ | p: <3/8> ** 7 | 00:50 | |
camelia | ( no output ) | ||
japhb_ | p: say <3/8> ** 7 | ||
camelia | rakudo-parrot 413650: OUTPUT«0.00104284» | ||
TimToady | but a language needs a certain amount of low-wattage affordances or people can't cargo cult it to learn it | ||
and I've been thinking of MAIN as one of those low-wattage affordances | 00:51 | ||
japhb_ | I think it's low-wattage, certainly -- but currently purple. | ||
00:52
thou left
|
|||
japhb_ | Easy to use to do not quite what you want. | 00:52 | |
lizmat decided to gat some sleep | |||
japhb_ | o/ lizmat | ||
lizmat | and will now get some& | ||
jnthn | 'night lizmat | ||
TimToady | well, there's quite an impedance mismatch between siggies and typical command-line getops policies, and I'd hate to see either of those turn into a hammer | ||
you'd almost need something like unification to do getopts the AIish way people want | 00:53 | ||
japhb_ | I want a nice solid red toolbox with a standard weight claw hammer on the top rack. | ||
[Coke] | as mentioned: rakudo.moar,2013-12-18,00.03%,0fed404,8,26551,0,0,26559,28250, | 00:54 | |
japhb_ | .oO( use MainHelper::Prolog ) |
||
TimToady | well, you shouldn't believe half of what I write today, since I'm under the weather :) | 00:55 | |
jnthn | [Coke]: Tomorrow's run will be...interesting. | 00:56 | |
00:56
dayangkun joined
|
|||
jnthn | [Coke]: On the upside, Test.pm loads/basically works now. | 00:56 | |
japhb_ | Hope you feel better soon, TimToady! | ||
jnthn | [Coke]: On the downside, 5-6 tests hang. | ||
TimToady | m: say <3/8>.WHAT | 00:57 | |
jnthn | I'm not sure we have an m yet :) | ||
Though we could now | |||
TimToady | that sez (Str) here :) | ||
[Coke] | jnthn: test runner kills hung tests. | ||
TimToady | or :( depending | ||
[Coke] | so, no worries. | 00:58 | |
I'm doing another run right now to see. | |||
japhb_ | [Coke], What's the timeout? | ||
jnthn | TimToady: Well, that almost certainly falls in the category of "portable NYI" :) | ||
[Coke]: Oh, then I won't worry too much over it :) | |||
TimToady | j: say <3/8>.WHAT | ||
camelia | rakudo-jvm 413650: OUTPUT«(Str)» | ||
TimToady | p: say <3/8>.WHAT | 00:59 | |
camelia | rakudo-parrot 413650: OUTPUT«(Str)» | ||
TimToady | portable shmortable | ||
it needs to be ported from niecza :) | |||
[Coke] | github.com/coke/perl6-roast-data/b...oar.sh#L16 | ||
00:59
grondilu joined
|
|||
TimToady | n: say <3/8>.WHAT | 00:59 | |
camelia | niecza v24-108-g17d73e4: OUTPUT«(Rat)» | ||
[Coke] | exec "ulimit -t 90; ulimit -v 1260720; nice -20 ./perl6-m @ARGV | ||
jnthn will have to read spec to figure out how the <3/8> things are meant to be done... | 01:00 | ||
But not this side of Christmas break :) | |||
01:00
xenoterracide left,
xenoterracide joined
|
|||
japhb_ | TimToady, I considered it (porting dual vars from Niecza, to be precise). About three times. Maybe more. Every time I found something less core-painful to work on. :-/ | 01:00 | |
grondilu | xenoterracide: I'm here in case you want to talk about github.com/grondilu/libdigest-perl6/issues/2 | ||
01:01
colomon left
|
|||
TimToady | as you can see, <3/8> is not a dualvar :) | 01:01 | |
japhb_ | Yes, but it is in a closely related place. | 01:02 | |
xenoterracide | grondilu: I'll hit you up later about to run to see hobbitses with gf | ||
jnthn | btw, I'm going to be mostly offline from Fri onwards, probably until after Christmas. I'll probably drop by now and then...but I need some time away from the keyboard. :) | 01:03 | |
japhb_ | Good for you. | ||
xenoterracide | though would be interesting to here thoughts from TimToady, or jnthn or whomever, about how best to select a different module based on backend architecture (I think naming convention would work, but maybe there are smarter solutions) | ||
TimToady | well, there's always BEGIN, if nothing else works | 01:05 | |
but the lower down such decisions can be made, the better | |||
we'd like to present the typical P6 user with a uniform interface regardless of backend | |||
01:06
colomon joined
|
|||
xenoterracide | TimToady: of course but I'm going to assume that (speaking in p5 terms) there'll be modules that have XS and pure perl versions ... and sometimes maintained by different people, but you still want that same interface (re: Digest, or things like JSON) | 01:07 | |
and with the possibility of a Java backed version (like something shipped with java) | |||
that adds a 3rd option | |||
or more | 01:08 | ||
01:08
tgt left
|
|||
TimToady | sure, anything that can have a universal API should have a universal layer, but we don't want to prevent people from doing hard things too | 01:08 | |
TimToady has never been interested in the Java Trap | 01:09 | ||
TimToady prefers Write Once, Run Everywhere Appropriate | |||
01:10
jnap left
|
|||
TimToady | and sometimes that's Anywhere | 01:10 | |
colomon seems to have accidentally unplugged the Christmas tree. :\ | |||
japhb_ | .oO( Write Once, Run Often ) |
||
xenoterracide | TimToady: nah, I'm just inquiring about possible convention, where convention can be ideal in 95% of cases, ok, really leaving now | 01:12 | |
grondilu | xenoterracide: I think there are things like that in P5. I'm thinking about YAML. IIRC there are various flavors named YAML::* where * is whatever method is used. | 01:16 | |
So you might be right, Digest::PP/JVM/JS would make sense I guess | |||
jnthn | Time for some sleep | 01:18 | |
'night | |||
dalek | ast: 6d1c47c | coke++ | test_summary: allow rakudo-moar to skip test files |
01:36 | |
[Coke] | huh. latest build is complaining about not finding Test.pm (rakudo.moar) | 01:56 | |
TimToady | [Coke]: see say <3/8> | 02:08 | |
oops | |||
see github.com/rakudo/rakudo/commit/61c62b19bd | |||
so you're out of sync with that somehow | 02:09 | ||
about 2.5 hours ago | |||
02:10
jnap joined
02:15
jnap left
02:21
colomon left
02:31
cognominal left
02:32
cognominal joined
|
|||
sjohnson snorts [Coke] | 02:34 | ||
02:34
colomon joined
02:35
finanalyst joined
|
|||
finanalyst | p: say '0' xx 4 | 02:36 | |
camelia | rakudo-parrot 413650: OUTPUT«0 0 0 0» | ||
[Coke] | TimToady: ah, yes, my runner script assumes lib/ | ||
is that the case for all 3 backends? | 02:37 | ||
ah, not yet | |||
er, it's fixed to be just 'lib' ? wtf. | 02:39 | ||
must have not done a full rebuild. | 02:43 | ||
Does rakudo-moar respect PERL6LIB ? | 02:51 | ||
gist.github.com/coke/8033624 | 02:52 | ||
so it's saying it can't find Test.pm, but there is a Test.moarvm and a Test.pm in the first directory it's complaining about. | 02:54 | ||
colomon | does it rakudo-m know how to load modules yet? | 02:58 | |
03:01
jnap joined
03:05
jnap left
|
|||
TimToady | perl6-m -e 'use Test;' fails here | 03:11 | |
with a "GatherIter NYI on MoarVM" | |||
03:12
btyler left
|
|||
TimToady | and 'say %*ENV;' sez: ("\x[4d]\x[41]\x[49]\x[4c]" => "\x[2f]\x[76]\x[61]\x[72]\x[2f]\x[6d]\x[61]\x[69]\x[6c]\x[2f]\x[6c]\x[61]\x[72]\x[72]\x[79]", "\x[53]\x[53]\x[48]\x[5f]\x[43]\x[4c]\x[49]\x[45]\x[4e]\x[54]" => "\x[37]\x[31]\x[2e]\x[33]\x[37]\x[2e]\x[39]\x[2e]\x[38]\x[30]\x[20]\x[34]\x[39]\x[37]\x[35]\x[33]\x[20]\x[32]\x[32]", "\x[55]\x[53]\x[45]\x[52]" => "\x[6c]\x[61]\x[72]\x[72]\x[79]", "\x[53]\x[48]\x[4c]\x[56]\x[4c]" => "\x[31]", "\x[48]\x[4f]\x[4 | 03:13 | |
er, oops | |||
03:17
Vlavv_ left
03:30
Vlavv_ joined
|
|||
lue | S02-literals/types.t is one of those "lazy gather/take NYI" hangs, I'm guessing? | 03:37 | |
lue really should learn just what exactly gather/take is for sometime... | |||
03:40
kaleem joined
03:51
grondilu left,
cognominal left
03:59
gfldex left,
bluescreen100 left
04:01
gfldex joined
|
|||
lue | r: grammar G { rule TOP { <alpha> <digit> } }; G.parse("33a1"); say $/ | 04:02 | |
04:02
jnap joined
|
|||
camelia | rakudo-parrot 413650, rakudo-jvm 413650: OUTPUT«#<failed match>» | 04:02 | |
lue | are grammars supposed to be implicitly anchored? | ||
r: grammar G { rule TOP { <alpha> <digit> } }; G.subparse("33a1"); say $/ | 04:05 | ||
camelia | rakudo-jvm 413650: OUTPUT«No such method 'subparse' for invocant of type 'G' in block at /tmp/ykvdmBSv8G:1 in any eval at gen/jvm/stage2/NQPHLL.nqp:1086 in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292 in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196 in a…» | ||
..rakudo-parrot 413650: OUTPUT«No such method 'subparse' for invocant of type 'G' in block at /tmp/hCu4DLcj56:1 in any at /tmp/hCu4DLcj56:1 in any at gen/parrot/stage2/NQPHLL.nqp:1146 in any eval at gen/parrot/stage2/NQPHLL.nqp:1133 in any evalfiles at gen/parro…» | |||
lue | :( | ||
04:06
jnap left
|
|||
lue adds a .* to the front of the TOP rule... | 04:06 | ||
04:07
hummeleB1 left
04:10
colomon left
04:11
raiph joined
04:13
colomon joined
04:21
kaare__ left
04:24
colomon left
04:28
btyler joined
04:38
Rix left
04:40
skids joined
04:42
Rix joined
04:48
cbk_ joined
04:53
colomon joined
04:55
btyler left
04:59
preflex left,
preflex_ joined,
ChanServ sets mode: +v preflex_
05:00
preflex_ is now known as preflex
05:02
jnap joined
05:07
jnap left
05:14
kaleem left
05:15
thou joined,
Ben_Goldberg is now known as BenGoldberg
|
|||
BenGoldberg | r: printf '%.4f', (7 ** (e-1/e) - 9) * pi**2 | 05:18 | |
camelia | rakudo-parrot 413650, rakudo-jvm 413650: OUTPUT«867.5309» | ||
lue | I'm pleasantly surprised that switching out perl6-p for perl6-m in a troublesome script even began working :) | 05:28 | |
05:29
raiph left,
SamuraiJack joined
05:30
raiph joined
05:31
btyler joined,
BenGoldberg left
|
|||
dwarring | lue: thanks for help yesterday | 05:45 | |
lue | no problem. | ||
dwarring | jnthn is suppoosed to be doing day 19 | ||
i guess we'lll just have to wait | 05:46 | ||
i'm still up | |||
05:48
SamuraiJack left
05:54
btyler left
|
|||
dwarring should be big news! | 06:04 | ||
06:19
kaleem joined
06:20
laidback_01 left
06:25
cbk_ left
06:34
darutoko joined
06:36
cbk1090 joined
06:44
sqirrel joined
06:50
cbk1090 left
07:02
sqirrel left
07:04
jnap joined
07:05
raiph left
07:08
jnap left
07:17
xenoterracide left
07:34
FROGGS left
07:38
gtxcomm left
07:41
gtxcomm joined,
estrabd left
07:49
yves_ left
07:51
sqirrel joined
07:58
thou left
08:03
broquaint left
08:04
FROGGS joined
08:05
jnap joined
08:09
jnap left
|
|||
FROGGS | o/ | 08:19 | |
08:25
Piers left
08:43
fhelmberger joined
08:55
broquaint joined
08:57
grondilu joined
|
|||
grondilu | {off topic] launch of Gaia in a few minutes: www.arianespace.tv/ | 08:57 | |
jnthn | TimToady: If you get GatherIter NYI, you're just missing the commit where I put a cheating version of it in, yesterday evening... | 09:20 | |
09:26
gtxcomm left,
gtxcomm joined
09:37
woosley left
09:43
grondilu left
09:50
PZt left,
tgt joined,
finanalyst left
09:53
ssutch left
09:54
gtxcomm left
09:55
gtxcomm joined
09:59
zakalwe_ is now known as zakalwe
10:02
Alina-malina left
10:03
Alina-malina joined
10:06
jnap joined
10:07
PZt joined
10:10
broquaint left,
broquaint joined
10:11
jnap left
|
|||
jnthn is working on his advent post, btw :) | 10:26 | ||
moritz | ++jnthn | 10:28 | |
11:01
finanalyst joined
11:03
zakharyas joined
|
|||
finanalyst | can someone please tell me if I can "import" an enum from a Module? I define enum NN is export <Abe Bay> in module. I use NN. But to access Abe, I have to say NN::Abe. How can I just say Abe? | 11:05 | |
s/use NN/use ModName/ | |||
11:07
jnap joined
|
|||
jnthn | I think it maybe should do that by default, but if you after your use try "import NN;" then I think that'll help. | 11:09 | |
FROGGS | p: module Foo { enum NN is export <Abe Bay> }; import Foo; say Abe | 11:10 | |
camelia | rakudo-parrot 413650: OUTPUT«===SORRY!=== Error while compiling /tmp/Rxz5iB8xr9Undeclared name: Abe used at line 1» | ||
11:12
jnap left
|
|||
finanalyst | jnthn: rakudo doesnt do it by default currently. There's a compile error to say that Abe is Undeclared name. | 11:13 | |
FROGGS | yeah, it seems like the things in an enum are not made available | ||
finanalyst | also import NN doesnt help | 11:14 | |
p: module Foo { enum NN is export <Abe Bay>}; say NN::Abe | 11:16 | ||
camelia | rakudo-parrot 413650: OUTPUT«Could not find symbol '&Abe' in method <anon> at gen/parrot/CORE.setting:12065 in any at gen/parrot/Metamodel.nqp:2691 in any find_method_fallback at gen/parrot/Metamodel.nqp:2679 in any find_method at gen/parrot/Metamodel.nqp:946 in…» | ||
FROGGS | finanalyst: you still need to import Foo | ||
finanalyst | p: module Foo { enum NN is export <Abe Bay>}; use Foo;say NN::Abe | ||
camelia | rakudo-parrot 413650: OUTPUT«===SORRY!===Could not find Foo in any of: /home/p6eval/rakudo-inst-2/lib/parrot/5.9.0-devel/languages/perl6/site/lib, /home/p6eval/rakudo-inst-2/lib/parrot/5.9.0-devel/languages/perl6/vendor/lib, /home/p6eval/rakudo-inst-2/lib/parrot/5.9.0-devel/langu…» | ||
FROGGS | import | ||
finanalyst | p: module Foo { enum NN is export <Abe Bay>}; impot Foo;say NN::Abe | ||
camelia | rakudo-parrot 413650: OUTPUT«===SORRY!=== Error while compiling /tmp/9zYeakqTu5Undeclared routine: impot used at line 1» | ||
finanalyst | p: module Foo { enum NN is export <Abe Bay>}; import Foo;say NN::Abe | ||
camelia | rakudo-parrot 413650: OUTPUT«Abe» | ||
FROGGS | right | ||
masak | g'day, #perl6 | 11:17 | |
11:17
fhelmberger_ joined
|
|||
FROGGS | it exports the enum, that is why NN is available | 11:17 | |
finanalyst | FROGGS: thanx | ||
masak | wow, the Go people are planning to bootstrap Go after the fact: docs.google.com/document/d/1P3BLR3...&pli=1 | ||
FROGGS | but its children are not exported to your namespace | ||
jnthn | p: module Foo { enum NN is export <Abe Bay>}; import Foo; import NN; say Abe | ||
camelia | rakudo-parrot 413650: OUTPUT«===SORRY!=== Error while compiling /tmp/vGIn4UgowYUndeclared name: Abe used at line 1» | ||
jnthn | Hm, I'd have expected that second one to do it. | ||
masak | the HN discussion is interesting too: news.ycombinator.com/item?id=6932026 | ||
FROGGS | jnthn: do we have to check for enums explicitly in ML.merge_globals? | 11:18 | |
masak | people are catching on to how highly important AST-level introspection/modification is. especially algorithm driven introspection/modification. | ||
jnthn | FROGGS: I think we should do it in the export implementation... | 11:19 | |
FROGGS: So exporting an enum always exports its values too. | |||
11:20
fhelmberger left
|
|||
jnthn | FROGGS: Detect it by meta-object | 11:20 | |
r: enum Foo <a b c>; say Foo.HOW ~~ Metamodel::EnumHOW; | |||
camelia | rakudo-parrot 413650, rakudo-jvm 413650: OUTPUT«True» | ||
jnthn | r: class Foo { }; say Foo.HOW ~~ Metamodel::EnumHOW; | ||
camelia | rakudo-parrot 413650, rakudo-jvm 413650: OUTPUT«False» | ||
11:21
fhelmberger_ left
|
|||
jnthn | I advunt: perl6advent.wordpress.com/2013/12/1...ogramming/ | 11:27 | |
11:29
pecastro left
11:38
rindolf joined
|
|||
FROGGS | jnthn: you forgot to mention parrot in the last sentence *cough* | 11:38 | |
tadzik | hey, it even had commits 2 months ago | 11:42 | |
FROGGS | well, it has threading support... somebody just need to find out what makes it crash in most cases | 11:44 | |
to be clear: it crashes when using threads in nqp code for example | 11:45 | ||
tadzik | last time I checked, the perl6 people were saying "you do it", and parrot people were saying "you do it" ;) | 11:46 | |
FROGGS | tadzik: and then I did | 11:49 | |
that is where I got my knowledge from | |||
tadzik | you did? :o | ||
so it works now? | |||
FROGGS | I made this executing in parallel: @a >>+<< @b | ||
11:49
raiph joined
|
|||
FROGGS | tadzik: no, it crashes when the code gets a certain level of complexity | 11:50 | |
tadzik | oh, indeed :) | ||
FROGGS | (and that level is pretty low actually) | ||
and parrot's threads tend to block if you are accessing lexicals, which is not very helpful | |||
tadzik | well, I opened a bug somewhere once, it was impossible to say() inside a new task | ||
FROGGS | you have to spawn two task | 11:51 | |
tasks* | |||
one green thread that does start an os thread | |||
the work has to be done in the os thread then | |||
tadzik | hm | 11:52 | |
so what's the level of complexity at which we can't continue? | |||
FROGGS | see github.com/parrot/parrot/issues/889 | 11:53 | |
see the linked examples in my posts | 11:54 | ||
tadzik | so you start 300000 os threads which then start as many green threads | 11:58 | |
but I wonder, is aplusb really heavy enough? I mean, maybe it finishes counting by the time nqp starts another thread | 11:59 | ||
then you won't see load on multiple cores at once | |||
12:00
raiph left
|
|||
jnthn | FROGGS: If you want to work on Parrot support, nothing's stopping you...I've got my hands more than full enough with building it on JVM and Moar, for the time being :) | 12:03 | |
12:04
pecastro joined
12:08
jnap joined
12:10
atroxaper joined
12:12
kivutar left,
jnap left
|
|||
timotimo | "will produce an ascending integer once per time internal" | 12:26 | |
12:27
atroxaper left
|
|||
woolfy | Maybe a nice opportunity to promote Perl 6? www.perloasis.info/tbpw2014/ | 12:29 | |
jnthn | timotimo: Fixed, thanks | ||
12:32
atroxaper joined
|
|||
timotimo | ~. | 12:35 | |
yw :) | 12:36 | ||
12:38
denisboyun joined
12:41
denisboyun left
|
|||
FROGGS | jnthn: that is not what I said :o) | 12:44 | |
I had my "fun" already | |||
timotimo | :\ | 12:47 | |
colomon | FROGGS: "I made this executing in parallel: @a >>+<< @b" -- on rakudo-j or just -p? | 12:49 | |
12:50
denis_boyun joined
|
|||
FROGGS | colomon: -p | 12:52 | |
colomon | darn | ||
FROGGS | as a test, ages ago | ||
colomon | FROGGS++, anyway | ||
FROGGS | :o) | ||
12:55
kaleem left
13:03
denis_boyun left
13:10
rindolf left
13:14
FROGGS left
13:18
FROGGS[mobile] joined
|
|||
jnthn away for a bit | 13:20 | ||
13:29
fhelmberger joined
13:38
atroxaper left
13:39
rindolf joined
13:40
skids left
13:45
kaleem joined
13:50
kivutar joined
13:53
spider-mario joined
13:56
jnap joined
13:57
spider-mario_ joined,
spider-mario left
13:59
spider-mario_ is now known as spider-mario
|
|||
jnthn | Seems it's 12 spectests that hang during the Moar run. | 14:02 | |
14:03
xenoterracide joined
14:04
sqirrel left
14:05
dalecooper joined
|
|||
timotimo | that's not even that much! | 14:05 | |
14:06
ajr joined
|
|||
tadzik | the rest passes? :) | 14:06 | |
timotimo | probably not ;) | ||
14:06
ajr is now known as Guest55088
|
|||
jnthn | no :P | 14:07 | |
14:07
Guest55088 is now known as ajr_
|
|||
timotimo | prolly more than 0.01% passes, though | 14:07 | |
jnthn | I'd think so :) | 14:08 | |
huh...all those that hang that I tried so far seem to do so at exit | 14:09 | ||
ah, not all | |||
14:11
SamuraiJack joined
14:13
zakharyas left
|
|||
dalek | ast: 92d1b0e | jnthn++ | S16-filehandles/io_in_for_loops.t: Moar fudge; gives infinite noks. |
14:14 | |
jnthn | That one would distort number of tests run in daily roast, so fudged it. Will leave others for now. | 14:15 | |
14:16
SamuraiJack left
14:17
PacoAir joined
|
|||
timotimo | should others make an effort to fudge stuff that hangs or infiniloops? | 14:18 | |
14:21
fhelmberger left,
fhelmberger joined
|
|||
jnthn | timotimo: Could do, though for now I suspect we can work of the daily runs, which ulimit stuff and will give us plenty of info on where to look for things to do. | 14:22 | |
14:26
fhelmberger left
14:38
tgt left
14:39
kaare__ joined
14:41
tgt joined
14:43
xinming joined
14:44
xinming_ left
14:55
bluescreen100 joined
14:56
spider-mario left
14:59
atroxaper joined,
atroxaper left
15:00
colomon left
15:01
araujo left,
ivanshmakov left
15:02
ivanshmakov joined,
araujo joined,
zakharyas joined
|
|||
timotimo | did a fix land for the speed improvement for the jvm spectests not using Test.jar? | 15:06 | |
jnthn | timotimo: No, not yet | 15:09 | |
I did one for Moar in moar-support branch | 15:10 | ||
15:10
skids joined
15:16
thou joined
15:25
hummeleB1 joined
15:38
SamuraiJack joined
15:46
sqirrel joined,
spider-mario joined
|
|||
masak | TimToady: I forgot to say happy 26th birthday yesterday! | 15:48 | |
15:53
FROGGS[mobile] left
|
|||
skids | r: my Int a; # LTA error | 15:53 | |
camelia | rakudo-jvm 413650: OUTPUT«===SORRY!===Type 'Int' is not declared. Did you mean 'int'?at /tmp/m1E5ncrfmA:1------> my Int ⏏a; # LTA errorMalformed myat /tmp/m1E5ncrfmA:1------> my Int ⏏a; # LTA error e…» | ||
..rakudo-parrot 413650: OUTPUT«===SORRY!===Type 'Int' is not declared. Did you mean 'int'?at /tmp/ugqXsrktom:1------> my Int ⏏a; # LTA errorMalformed myat /tmp/ugqXsrktom:1------> my Int ⏏a; # LTA error …» | |||
15:55
rurban1 joined
|
|||
masak submits rakuodbug | 15:56 | ||
jnthn | std: my Int a; | ||
camelia | std 3b262af: OUTPUT«===SORRY!===Multiple prefix constraints not yet supported at /tmp/ZWrkaIr6kM line 1:------> my Int ⏏a;Malformed my at /tmp/ZWrkaIr6kM line 1:------> my Int ⏏a; expecting any of: mult…» | ||
15:58
Psyche^_ joined
16:01
Psyche^ left
|
|||
masak finds he doesn't mind the description in news.ycombinator.com/item?id=6934948 as much as he thought he would after reading the first few words | 16:02 | ||
16:04
raiph joined
16:05
ajr_ left,
ajr joined
16:06
ajr is now known as Guest13697
16:07
kivutar left
16:17
colomon joined
16:27
Guest13697 is now known as ajr_
|
|||
timotimo | jnthn: # java.lang.IllegalAccessError: tried to access class java.lang.AbstractStringBuilder from class org.perl6.nqp.generatedadaptor.java.lang.AbstractStringBuilder | 16:28 | |
this is how trying to .append the return value of a .append breaks | |||
(.append returns an AbstractStringBuilder instead of a StringBuilder) | |||
not at all sure how to proceed. | |||
i guess i'll mark thas as todo. | |||
dalek | kudo/moar-support: de87347 | jnthn++ | src/Perl6/Actions.nqp: Some declaration => declaration_static. Rakudo does its own cloning (as it needs to clone code objects too). This avoids duplicate and incorrect work. That said, as we bring the other backends more inline with how Moar does closures, we may want a more general solution to what Rakudo is now doing. In the meantime, this fixes some things, meaning 'make test' now passes in full. |
16:30 | |
timotimo | \o/ | ||
jnthn | Now we "just" need make spectest to do the same :P | 16:31 | |
colomon | SMOP | 16:32 | |
jnthn | "S"MOOP :P | 16:33 | |
*MOP | |||
16:33
kaleem left
|
|||
timotimo | jnthn: does our jvm interop need to learn how to cast an AbstractStringBuilder (interface i guess?) to a StringBuilder in order to chain those things together? | 16:36 | |
so we'd end up with code like $sb.'...append...'("foo").cast(...).'...append...'(1024)? | |||
jnthn | Doesn't ASB have an append method too? | 16:37 | |
timotimo | or should the generated wrapper for AbstractStringBuilder notice "oh, i'm building an adaptor for an abstract class. i should cast myself before doing shit" | ||
gimme a second | |||
jnthn | I'm guessing it does... | ||
timotimo | it does, yeah | 16:38 | |
oh! | |||
jnthn | So, I guess we just need to generate an interop type for that return object and wrap it like any other object coming back? | ||
timotimo | there is *also* a method that returns a Ljava/lang/StringBuilder; | 16:39 | |
jnthn | Oh...though | ||
timotimo | and using that does work! | ||
jnthn | You sure that the second one doesn't hide the first? | ||
As in, it's an override? | |||
timotimo | there are multiple, yeah | ||
i don't know how hiding works; at least we *find* it and generate a wrapped method for it! | |||
jnthn | Well, I guess it's just that if two methods have identical signatures excluding the return type, then the one in the child class wins. | 16:40 | |
timotimo | because the error message you get when you try to call "append" lists all methods with that exact arity | ||
and the ones returning AbstractStringBuilder are among them | |||
i'll have to figure out how to figure out which ones are hiding which ones, then :\ | 16:41 | ||
jnthn | Yeah, I suspect for the auto-dispatcher thingy we need to exclude overridden methods | ||
Well, but I think you can get away with string comparisons...provided you know which one comes from which class. | |||
timotimo | yeah, i think so, too | ||
just find what's after the ) | |||
jnthn | Well, you need to throw away what's after the ) in the comparison. | ||
Oh, don't rely on what's after the ) for deciding which is deepest, though | 16:42 | ||
As it's possible for an override to have the same return type | |||
16:42
shlomif joined
|
|||
timotimo | yeah, i meant to say "throw everything after the / away when comparing" | 16:43 | |
i'll still have to figure out which class defines which methods | |||
jnthn | aye | 16:44 | |
timotimo | i should be able to count the number of steps until i reach java/lang/Object from the given object and use that to compare deepness, aye? | ||
i need to get prepared to commute around a bit | 16:45 | ||
16:45
DrEeevil joined
16:47
hummeleBop1 joined
|
|||
jnthn | timotimo: Yes, sounds reasonable | 16:48 | |
timotimo: As there's only single inheritance in Java. | |||
16:48
dalecooper left
16:52
hummeleB1 left,
rindolf left,
bonsaikitten left
16:53
zakharyas left
|
|||
xenoterracide | is there an explanation somewhere of why :U is the default not :D? | 16:54 | |
well.. that's not true right :U would enforce undefined? | |||
I guess I'm just curious as to why :D isn't the default, would almost make sense to be | 16:55 | ||
jercos | I see :U and :D and :V and all I think of is (\/) (°,,,°) (\/) | 16:57 | |
masak | jercos: :P | 16:58 | |
"the Zoidberg modifiers" | |||
17:00
finanalyst left
|
|||
xenoterracide | more important than my curiousity though, where's the docs on how I export a sub from a module? | 17:02 | |
dalek | kudo/moar-support: 293f744 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp: Implement coercive parameters. |
17:03 | |
jnthn | Who is cutting today's release? | ||
xenoterracide: Probably in S11 | 17:04 | ||
But in summary, "is export" | |||
xenoterracide | jnthn: thanks (writing notes on how to do the most common things I need to do) | 17:05 | |
17:19
tgt left,
tgt joined
|
|||
colomon | jnthn: moritz or masak, I think. | 17:22 | |
17:23
sqirrel left
|
|||
jnthn | Ah, guide says moritz++ | 17:24 | |
jnthn was looking at the one in moar-support, which didn't get nom merged recently enough | |||
xenoterracide | std: my Int $a = true : 1 : 0; | 17:28 | |
camelia | std 3b262af: OUTPUT«===SORRY!===Preceding context expects a term, but found infix : instead at /tmp/qKrlAyJWHb line 1:------> my Int $a = true ⏏: 1 : 0;Parse failedFAILED 00:01 124m» | ||
TimToady | std: my Int $a = True ? 1 : 0; | 17:29 | |
camelia | std 3b262af: OUTPUT«===SORRY!===Unsupported use of ?: for the conditional operator; in Perl 6 please use ??!! at /tmp/Rvs1EhdHMH line 1:------> my Int $a = True ?⏏ 1 : 0;Parse failedFAILED 00:01 124m» | ||
TimToady | std: my Int $a = true: 1, 0; | 17:30 | |
camelia | std 3b262af: OUTPUT«===SORRY!===Undeclared routine: 'true' used at line 1Check failedFAILED 00:01 125m» | ||
xenoterracide | std: my Int $a = True ?? 1 !! 0; | 17:31 | |
camelia | std 3b262af: OUTPUT«ok 00:01 124m» | ||
TimToady | I assume that's whatchyer lookin for. | 17:32 | |
xenoterracide | basically, I was digging for the ternary operator | ||
TimToady | p: say +True | 17:33 | |
camelia | rakudo-parrot 413650: OUTPUT«1» | ||
TimToady | though you'll never need one to numericize a boolean :) | ||
xenoterracide | TimToady: well that's not really the goal, just fishing for syntax to write a quick, dumb comparator for my reference | 17:34 | |
jnthn | err& | 17:39 | |
timotimo | what type would i use to represent a tuple of values in java? | 17:40 | |
is there something like Pair<String, Int>? | |||
also, more than two parts? | |||
17:41
ajr_ left
|
|||
xenoterracide | timotimo: docs.oracle.com/javase/7/docs/api/j...l/Map.html maybe the Map docs help? but no I don't think they have a Pair type | 17:43 | |
17:43
sqirrel joined
|
|||
xenoterracide | timotimo: docs.oracle.com/javaee/7/api/javax/...Tuple.html | 17:46 | |
timotimo | i'm building my own class now | 17:50 | |
unfortunately the interface doesn't help me | 17:51 | ||
i would still have to implement it with myo wn class | |||
17:55
denisboyun joined
|
|||
raiph | TimToady: S07:230 # is the verbiage about for loops up to date? | 18:00 | |
synopsebot | Link: perlcabal.org/syn/S07.html#line_230 | ||
mathw | jnthn: supplies are amazing! I love reactive programming so very happy to see that and such a nice API too. | 18:01 | |
xenoterracide | timotimo: well at least if you use the interface it'll be compat with anything that supports said interface | ||
asside from the bitter stupidity of implementation | 18:03 | ||
privatepaste.com/e74c0410d4 why is this throwing this error | |||
Method 'cmp' must be implemented by BasicComparator because it is required by a role | |||
18:03
ajr joined
18:04
ajr is now known as Guest69981
18:08
alanjf joined
18:09
alanjf left,
ssutch joined
18:10
Alina-malina left
18:11
Alina-malina joined,
FROGGS[mobile] joined
18:12
shlomif is now known as rindolf
|
|||
jnthn | timotimo: docs.oracle.com/javase/7/docs/api/j...Entry.html | 18:13 | |
timotimo: Crappy long name, though... | |||
xenoterracide: You want a * in that proto, not a ... | 18:14 | ||
18:20
fhelmberger joined
18:24
sqirrel left
|
|||
xenoterracide | jnthn: privatepaste.com/2e5786a337 so trying to make it a required interface, which is what I thought ... does... changing to this is giving me a multimatch for signatures | 18:25 | |
TimToady | raiph: yes, the verbiage is still accurate; all we changed was to make statementlist-level statements apply sink to loops | 18:26 | |
jnthn | xenoterracide: We can't really compare signatures, so requirements are really just about names. | 18:28 | |
raiph | TimToady: Thx. (but a bit more) | 18:30 | |
TimToady: A statementlist-level statement *ought* to be in sink, right? | 18:31 | ||
(I can imagine a (seems to me poor) argument that the last statement might not be sink.) | |||
jnthn | As I understand current spec, a statementlist-level *loop* statement is always in sink context. | ||
xenoterracide | jnthn: so if there's no proto, it works... ? I'm just trying to figure out how to make it "required" for whatever that means | 18:33 | |
jnthn | Make *what* required? | ||
xenoterracide | the cmp method | 18:34 | |
jnthn | I think proto method foo() { ... } in a role will work, but then you probably need to declare a proto method cmp in the class doing the role too | ||
18:35
REPLeffect left
|
|||
jnthn | proto methods get auto-created, but it happens after role composition, since the role may provide multi candidates... | 18:36 | |
...which is why just declaring multis isn't (presently) good enough. | |||
xenoterracide | jnthn: so for clarities sake, this appears to be doing what I want, privatepaste.com/8a492d5051 is it correct (per current limitations) | 18:40 | |
dalek | p/jvm_interop_dispatchers2: 2c44525 | (Timo Paulssen)++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/BootJavaInterop.java: try to make sure we don't expose hidden methods |
18:46 | |
18:46
darutoko left
|
|||
jnthn | xenoterracide: Looks sane to me. | 18:49 | |
18:56
rurban1 left,
denis_boyun joined
18:58
denisboyun left,
odoacre left
19:01
fhelmberger left
|
|||
dalek | p/jvm_interop_dispatchers2: 8bd936b | (Timo Paulssen)++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/BootJavaInterop.java: fix a thinko, actually skip methods if they are hidden. |
19:01 | |
19:02
odoacre joined
19:18
denisboyun joined,
denis_boyun left
19:23
SamuraiJack left
|
|||
moritz | what's the difference between Supply.tap and Supply.map? | 19:24 | |
19:27
zakharyas joined,
denis_boyun joined
|
|||
TimToady | 3 bits | 19:27 | |
19:27
denisboyun left
|
|||
raiph | moritz: are you OK with the currently spec'd eager/lazy aspects of for loops? | 19:29 | |
as per perlcabal.org/syn/S07.html#The_lazi...operations | |||
moritz | raiph: I'm OK with how it's specced in S04 | 19:30 | |
raiph: S07 might lag behind | |||
19:32
noxgirl left
19:33
autumn joined
|
|||
dalek | p/jvm_interop_dispatchers2: 34775a4 | (Timo Paulssen)++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/BootJavaInterop.java: surprisingly, not compiling the code doesn't guarantee it's right. |
19:40 | |
xenoterracide | privatepaste.com/c37f177e96 it doesn't seem like it should be, but is it possible to trigger "Go home Perl, you're drunk." in this via some weirdism? (again stupid implimentation simply to remind myself of syntax | ||
19:41
rurban1 joined
|
|||
dwarring | fg | 19:45 | |
dwarring oops classic ww | |||
19:48
jeffreykegler joined,
denis_boyun left
|
|||
moritz | xenoterracide: it seems you are acting as if the 'when' clause was just a boolean condition, like the conditional in the 'if' | 19:48 | |
xenoterracide: instead the expression is evaluated, and then smart-matched against $_ | |||
given $a { when .Int > $b { ... } } | 19:50 | ||
is short for -> $_ { if $_.Int > $b ~~ $_ { ... } }($a) | 19:51 | ||
so you're smart-matching a Bool against $_ | |||
and since $_ is an integer, that can only be true if $_ is 0 or 1 | |||
xenoterracide | :S | ||
moritz | so, either use if/elsif | 19:52 | |
masak | moritz: waitwait. | ||
moritz | or when * > $b { ... } # for example | ||
moritz waitwaits | |||
masak | moritz: isn't it 'if $_ ~~ ($_.Int > $b)' ? | 19:53 | |
moritz | masak: yes, you're right | ||
masak | and smartmatching against a Bool should make it act like an if, basically. | ||
19:54
zakharyas left
|
|||
moritz | but beware that a smartmatch also locally sets $_ to the RHS | 19:54 | |
which can be confusing, if there's also an outer $_ | 19:55 | ||
masak | aye. | ||
does 'when' suffer from that, though? it's more of an implicit smartmatch, really. | |||
by the way, I agree about the main point: use 'if' unless you're interested in the smartmatching behavior (or the 'succeed' semantics) | 19:57 | ||
lizmat finally has some time for rakudo | |||
and I will spend it on writing my blog post tonight | 19:58 | ||
masak | ++lizmat | 19:59 | |
lizmat | tentative title "Defaulting to Nililism and other variable traits" | ||
xenoterracide | masak: succeed semantics? (note: again mostly doing this for a personal cheatsheet) | ||
moritz runs m-spectest | |||
19:59
slavik1 left
|
|||
moritz | xenoterracide: a successfully matched when-clause exits the outer block | 19:59 | |
p: given 42 { when 42 { say 'hi' }; say 'not reached' } | 20:00 | ||
camelia | rakudo-parrot 413650: OUTPUT«hi» | ||
xenoterracide looks at this gather thing and wonders if one could do my $res = gather given .. when { 1 } | |||
masak | p: for 1, 2, 3, 4, 5 { say $_; when 3 { say "THREE!" }; say "hop!" } | ||
camelia | rakudo-parrot 413650: OUTPUT«1hop!2hop!3THREE!4hop!5hop!» | ||
moritz | p: for 1..5 { .say; when 3 { say 'THREE' }; LAST say 'stop'; say 'hop' } | 20:02 | |
camelia | rakudo-parrot 413650: OUTPUT«1hop2hop3THREE4hop5hopstop» | ||
20:05
rindolf left
|
|||
xenoterracide | hmm... 0.93s total, significantly faster than last year at this time... cool | 20:06 | |
moritz | m-spectest seems to pass about a half or a third of the spectest files | 20:08 | |
then some which fail only a few tests | |||
jnthn | moritz: If you want a LHF-y to look into, I think it's also currently not running ones marked # icu | 20:09 | |
moritz: Which it should attempt also | |||
moritz | jnthn: should jvm run the #icu tests too? | 20:10 | |
arnsholt | I'd vote for JVM running #icu tests | 20:11 | |
moritz | oh, I see it does | ||
lizmat just ran a p-spectest and some some errors in S05-modifiers/*.t | |||
*saw | |||
is that to be expected ? | 20:12 | ||
jnthn | moritz: Yes, but I think it already does | ||
dalek | kudo/moar-support: e998752 | moritz++ | t/harness: run #icu tests on moar |
||
jnthn | lizmat: Didn't hear anything about that | ||
moritz: Not sure if that'll get us any more passes :) | 20:13 | ||
jnthn looks forward to the Coke numbers :) | |||
20:13
sqirrel joined
20:14
slavik joined
|
|||
lizmat | jnthn: problem also seems to exist with jakudo | 20:14 | |
so it's not backend specific | 20:15 | ||
it also has some todo's passing: | |||
t/spec/S05-modifier/perl5_0.rakudo.parrot (Wstat: 0 Tests: 24 Failed: 0) | |||
TODO passed: 15-17 | |||
I won't have time to look further into this until I finishes my blog post :-) | 20:16 | ||
lue | hello world o/ | 20:25 | |
Uh, I don't know if this has since been fixed, but at least as of 90fec0aea I noticed a serious issue: the 'make install' target forgets to copy perl6-m to /usr/local/bin, which makes the subsequent perl6-m -> perl6 steps moot. | 20:27 | ||
lue updates his repos and tries again. | |||
20:27
colomon left
|
|||
jnthn didn't even know there was a make install target yet :) | 20:27 | ||
20:28
colomon joined
|
|||
lue | :) I guess if I just copied over perl6-m manually and re-ran the target, it would work fine. But I'm updating first to see if someone's incidentally fixed it since yesterday. | 20:28 | |
jnthn: to be fair, I don't know if there are more issues with the install target, seeing as I don't have an installed perl6-m to test the install of :) | 20:31 | ||
arnsholt | jnthn: There's at least one piece of codegen support code I'd like to move out from P6Opaque private stuff to separate classes (for CStruct). Any preferences on which package that kind of stuff belongs in? | 20:32 | |
20:32
jeffreykegler left
|
|||
arnsholt | Having them in .nqp.sixmodel.reprs feels a bit weird | 20:32 | |
20:32
sqirrel left
|
|||
jnthn | arnsholt: Move it out to .nqp.sixmodel maybe? | 20:33 | |
arnsholt: Though, CStruct is a REPR too... | |||
There's always the .nqp.sixmodel.reprs.util option | 20:34 | ||
arnsholt | Yeah, but not ByteClassloader | ||
jnthn | Deeper namespace! More enterprisey! | ||
arnsholt | More enterprisier! | ||
But yeah, .nqp.sixmodel is probably gonna be ok | 20:35 | ||
dalek | kudo/moar-support: 9cf4e13 | jnthn++ | src/vm/moar/ops/perl6_ops.c: Fix oversight in p6listitems. This broke at least shift, which in turn broke many other things. |
||
moritz can imagine that shift is used for a lot of things | 20:58 | ||
$ git grep shift|wc -l | 20:59 | ||
327 | |||
totally uscientific analysis :-) | |||
$ git grep --word shift src/core/|wc -l | |||
133 | |||
jnthn | Well, right at the start of SEQUENCE for one... :) | 21:01 | |
21:02
dayangkun left
|
|||
moritz | the first 10 m-spectests pass now \o/ | 21:03 | |
21:04
risou left
21:05
risou joined,
ssutch left
|
|||
masak | \o/ | 21:05 | |
21:06
amkrankruleuen left,
amkrankruleuen joined
|
|||
lizmat | r: say Nil.foo # suddenly realises a part of the spec not implemented yet | 21:06 | |
camelia | rakudo-jvm 413650: OUTPUT«No such method 'foo' for invocant of type 'Nil' in block at /tmp/VBG4WTV5am:1 in any eval at gen/jvm/stage2/NQPHLL.nqp:1086 in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292 in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196 in any …» | ||
..rakudo-parrot 413650: OUTPUT«No such method 'foo' for invocant of type 'Nil' in block at /tmp/CDsHvbvXD_:1 in any at /tmp/CDsHvbvXD_:1 in any at gen/parrot/stage2/NQPHLL.nqp:1146 in any eval at gen/parrot/stage2/NQPHLL.nqp:1133 in any evalfiles at gen/parrot/s…» | |||
lizmat | at least according to S02:508: "Any undefined method call | 21:07 | |
synopsebot | Link: perlcabal.org/syn/S02.html#line_508 | ||
lizmat | on C<Nil> returns C<Nil>, so that C<Nil> propagates down method | ||
call chains." | |||
21:09
ssutch joined
|
|||
dalek | kudo/moar-support: f1ba138 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp: 'is copy' for array and hash params. |
21:09 | |
lue | lizmat: sounds like the perfect job for FALLBACK to me. | 21:10 | |
lizmat | indeed, but that's NYI, no? | ||
jnthn | It's NYI, but you can still get at the functionality with .^add_fallback, which is what Failure does | 21:11 | |
lue | The end of Day 9's post has a lovely demonstration of add_fallback: perl6advent.wordpress.com/2013/12/0...and-pairs/ | 21:12 | |
lizmat remembers and ponders implementing FALLBACK, but not right now | 21:13 | ||
21:17
dayangkun joined
|
|||
timotimo | good progress on moar again, i see! :D | 21:17 | |
moritz | yes, patching faster than I can spectest :-) | 21:18 | |
timotimo | on my laptop, it seems like rakudo-jvm won't compile the setting (which takes a whole lot longer than on my desktop anyway) | ||
lizmat | r: my $a is default(42); say $a.defined # shouldn't this need to say "False" ? | ||
camelia | rakudo-parrot 413650, rakudo-jvm 413650: OUTPUT«True» | ||
moritz | it can't be both 42 and undefined | ||
r: my $a is default(42); say $a | 21:19 | ||
camelia | rakudo-parrot 413650, rakudo-jvm 413650: OUTPUT«42» | ||
lue | .oO( my $a is default(42 but undefined); ) |
||
dalek | p/jvm_interop_dispatchers2: 2d1935c | (Timo Paulssen)++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/BootJavaInterop.java: init inheritanceHiding and factor in method name. |
||
moritz can't think of any value that's more defined than 42 | |||
timotimo | hm, false alarm apparently. good. | ||
this train waits for like 15 minutes at this station :\ | 21:20 | ||
jnthn | timotimo: That's so when it gets delayed, there's a chance to catch up :P | 21:23 | |
timotimo | interesting | 21:26 | |
now it's moving in the other direction | |||
and i'm coding backwards | |||
does that mean features i build get unimplemented when i push? | |||
lizmat | moritz/lue: I guess I was confusing it with :exists | ||
21:33
PacoAir left
|
|||
lue | Hm. So for a while I got segfaults at the end of the MVM setting step, then yesterday those cleared up somehow, and now I have a failure on Test.pm :/ | 21:36 | |
21:38
spider-mario left
|
|||
lue recompiles MVM and nqp-m with -g flags to get a more helpful gdb ... | 21:39 | ||
lizmat | gist of blog post in progress, comments welcome: gist.github.com/lizmat/8046770/raw...tfile1.txt | 21:46 | |
lue | lizmat: two things: 1: "as we <a href=perl6advent.wordpress.com/2013/12/0...ect/>in an earlier" --> I think you are a verb. | 21:48 | |
lizmat gets out the saw | 21:49 | ||
lue++ | |||
lue | 2: You mention that (Any) is what the container defaults to if "nothing is specifically specified.", then move on to is default. I was thinking, perhaps mentioning that 'my Int $a' is another way of changing this before talking about is default would be helpful. | 21:50 | |
(lest people believe "is default" is the *only* mechanism to change this, is what I'm getting at.) | 21:51 | ||
lizmat | yes, I was thinking of mentioning that, just searching for a way to shoehorn that in | 21:52 | |
was thinking about *after* I also point out that specifying a default does not make elements in an array/hash exist | |||
lue | As long as your post doesn't end up implying that "is default" is the only (easy) way to change the default, I'm fine :) . | 21:55 | |
lizmat | "is default" is the only way to change the default | 21:59 | |
the other way sets the type, which implies a default | |||
lue: gist updated, does that address your worry ? | 22:02 | ||
lue | is my $a eqv. to my Any $a ? | ||
lizmat | afaik: yes | ||
dalek | kudo-star-daily: c1c2e67 | coke++ | log/ (5 files): today (automated commit) |
||
lizmat | unless jnthn has hidden some subtle difference somewhere | ||
22:03
c1sung left
|
|||
[Coke] | r-m back down to 0 tests again. | 22:03 | |
jnthn | Num, my $a is my Mu $a is default(Any) :) | ||
[Coke]: Um, huh? | |||
22:04
skids left
|
|||
lue | jnthn: there's a "my" trait? Huh. :) | 22:04 | |
lizmat: I wasn't thinking exactly right about what my Int $a does. So scratch my previous concerns about the "my Foo" way of setting the default, and replace it with a simple "make clear that the factory default is the type constraint" :) | 22:06 | ||
lizmat: which your updated gist seems to do, so I'm fine :) | 22:07 | ||
jnthn | [Coke]: I'm guesing some kind of build failure? | 22:09 | |
lue | [Coke]: would this perchance be the result of a segfaulting Test.pm compile? | 22:11 | |
timotimo | jnthn: it seems like .getDeclaringClass on a method will invariably get me the class where the method is *defined*, i can't see a method that will give me the class that *implements* the method i have here | 22:13 | |
[Coke] | jnthn: make: *** [CORE.setting.moarvm] Error 139 | 22:14 | |
timotimo | it seems for each method i have to klass.getMethod and see if it resolves to the right position | 22:15 | |
[Coke] has a bit of time before he has to head out. want a bt? | 22:17 | ||
or is it one of nwc10++'s reported ones, do you think? | |||
jnthn | [Coke]: No idea... | 22:18 | |
[Coke] | bt it is. | ||
timotimo | well, that at least makes my code simpler | ||
[Coke] | I'm at 722aa27 - should I pull? | 22:19 | |
jnthn | [Coke]: Can always try. Been fixing/doing bits all day | ||
[Coke] | I'll just wipe and start over. one sec. | ||
oops. might want to do that in another directory to not screw up the daily run. | 22:20 | ||
timotimo | yay, my code seems to work! and shrinked down from about 60 or 80 lines to 4 | 22:24 | |
dalek | p/jvm_interop_dispatchers2: 204feb2 | (Timo Paulssen)++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/BootJavaInterop.java: shorter code, also working. pretty good improvement! |
22:27 | |
kudo/moar-support: 69860c8 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp: Implement post-constraints. |
|||
jnthn | timotimo++ | ||
I like short code and I cannot lie.. | |||
timotimo | now methods that shouldn't be there aren't | 22:28 | |
lizmat decides to only cover "is default" and Nil in this blogpost and forget about the other variable traits for now | 22:29 | ||
22:33
wsri left,
wsri joined
|
|||
timotimo is not sure what to do next | 22:35 | ||
i should be moving the code over to rakudo. i guess that's next | 22:36 | ||
lizmat | look at the spectest errors in S05/modifiers? | ||
timotimo | who, me? | ||
lizmat | well, you asked :-) | 22:37 | |
timotimo | "immer der, der so dumm fragt" ;) | ||
lizmat | who me? :-) | ||
22:37
kaare__ left
|
|||
jnthn | Phew, that was some wrapping... :) | 22:38 | |
timotimo | now i'd like to build myself a moar, too | ||
to see some spectests pass :) | |||
dalek | kudo/moar-support: 5ec58d1 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp: Implement p6isbindable. |
22:40 | |
22:42
rurban1 left
|
|||
woolfy | dwarring++ for perl6advent.wordpress.com/2013/12/1...-checking/ | 22:47 | |
Sweet example of (beginning of) games with Perl 6. | |||
dalek | p: d7f953d | (Arne Skjærholt)++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/ (2 files): Extract P6Opaque.ByteClassLoader to its own class. This is in preparation for CStruct support on JVM, which needs some of the same class generation infrastructure as P6Opaque. |
22:48 | |
timotimo | i get a segfault when trying to build m-BOOTSTRAP, does that come from --optimize=3? | ||
diakopter | woolfy: mberends & sorear made neat games on niecza | 22:49 | |
jnthn | timotimo: That, or just bad luck... | ||
woolfy | diakopter: interesting, games like what? Still playable? | ||
diakopter | tetris was the one I played; fun! | 22:50 | |
timotimo | heh. | ||
should i try to gdb it? | |||
woolfy | Ooh of the few games I ever played, tetris is one that I don't have to learn a lot of rules for and which is easy to play just for a couple of minutes. Does it look nice? | 22:51 | |
timotimo | run_gc -> gc_collect -> gc_root_add_gen2s_to_worklist -> gc_root_add_gen2s_to_worklist -> segfault | 22:53 | |
woolfy | Question (after reading some stuff on the #amsterdam.pm channel): is it possible in Perl 6 to uninstall a previously installed module, in a reliable way that is not destructive for the Perl 6 installation? | ||
timotimo | i don't have any locals on the stack, though | ||
woolfy | (I would like to mention on #amsterdam.pm that it is possible in Perl 6, and reliable, and non-destructive)(non-destructive as in "shit, now I have to re-install Perl 6 from the ground up) | 22:54 | |
timotimo | woolfy: i don't think there is one yet, but i guess since we have a database for module-owned files soon anyway, it would be easy to do (unless a module is stupid enough to overwrite files from another module) | ||
woolfy | Hmmm.... "(unless a module is stupid enough to overwrite files from another module)" means that people are able to overwrite files from another module and so are able to mess up the Perl 6 installation anyway. | 22:55 | |
timotimo | the module could also have some BEGIN { shell "rm -rf /" } in them | ||
woolfy | timotimo: what do you mean with "i don't think there is one yet" | ||
timotimo | that would be pretty destructive, too | ||
i don't think there's "panda uninstall" | 22:56 | ||
i don't see a reason why it would never be there | |||
woolfy | timotimo: Ah. History has shown repeatedly that an uninstall is desirable from a maintainer's point of view. | ||
timotimo | well, with less --optimize i get farther in the build | ||
xenoterracide | p: my Int ( $digit, $v ) = ( 0, -1 ); | 22:57 | |
camelia | ( no output ) | ||
timotimo | if you're a maintainer, you're likely using a "real" package system like rpm or dpkg and then you get uninstall for free | ||
woolfy | Like what happened to me "oh shit, this is absolutely not what I want, I want to get rid of this pile of poo as soon as possible" | ||
timotimo | yeah | ||
22:58
bluescreen100 left
|
|||
lue | timotimo: o.o ... note to self, don't run modules under sudo :) | 22:58 | |
xenoterracide | I don't know that I agree with that... I've uninstalled stuff for debugging purposes to great success | ||
woolfy | timotimo: uhuh, that is in my opinion the arrogant way of nerds to look at this: "if you are not able to use a real system like rpm or dpkg, than you should not mess with modules and do nothing with Perl 6..." | ||
timotimo | wow, moar does stage parse much faster than parrot does o_O | ||
woolfy: that's not what i meant, though :) | |||
woolfy | timotimo: of course not, but that is what it boils down to at the end. | 22:59 | |
timotimo | i think we should get an uninstallation command for panda | ||
woolfy | agreed | ||
xenoterracide | ++ | ||
lue is genuinely afraid of triggering the heisenbug for panda again :/ | |||
lizmat | agree with needing an uninstall feature | 23:00 | |
xenoterracide | though tbh, I'm not generally in favor of using git to install packages, I think it's a bad idea | ||
lizmat | in Panda | ||
jnthn | timotimo: Much faster? I thought it was only a bit faster... | ||
23:00
BenGoldberg joined
|
|||
timotimo | 83 instead of 100 | 23:00 | |
xenoterracide | and thus I could be in favor of not worrying about it until we have a p6PAN | ||
woolfy | lue: now is the time that design changes will have not that big of an impact on the user base. The sooner this is changed and tested, the better. | ||
jnthn | Ah, that's a little bit :) | ||
lue | woolfy: of course, that was just a general lament. I'm about to have to reinstall panda anyway. | 23:01 | |
woolfy | Poor lue! | ||
lue | moar goes through stage parse in about 1/2 the time of parrot (and jvm 1/6 the time of parrot), for me. | ||
timotimo | but i also segfault in Test.pm with --optimize=1 | ||
woolfy | OK, anyway, I will not boast on #amsterdam.pm that it is possible (or even easy) in Perl 6 to reliably and non-destructive uninstall modules. | 23:02 | |
lue | timotimo: I just tried recompiling moar and nqp with debug options to find the reason behind a Test.pm segfault, but it disappeared for me :/ | ||
timotimo | :o | ||
well, at least i have symbols in my bt full now. | 23:03 | ||
woolfy | After having several talks with mberends++ I am bugging lizmat every now and then that Perl 6 should have good a garbage collection system built in, so that memory usage will not explode like in Perl 5. | ||
timotimo | yeah, item is 0x1 | ||
woolfy | Which is related in my eyes to being able to uninstall non-wanted unused modules. Garbage has to go and should be possible and easy to do. | 23:04 | |
timotimo | why would an item end up being 1? | ||
it gets checked against null a few lines earlier, which doesn't trigger for comparing against 1 | |||
lue | woolfy: sounds good. Incidentally I have a script here that explodes from ≈ 10-30% usage to ≈80% mem usage, at least with parrot. | ||
xenoterracide | woolfy: not sure what uninstalling modules has to do with memory... | ||
unless your applications are loading modules just because they're there | 23:05 | ||
woolfy | I realise that this uninstalling modules is different from garbage collection. But there's garbage in memory and garbage on diskspace and garbage in the installation. I love to clean garbage. Any garbage. | ||
xenoterracide | just OCD, I generally clean up that garbage these days by new brew, and destroy old brew | 23:06 | |
woolfy | That said, tomorrow is garbage day... I have to bring out the garbage. (bring out your dead, bring out your dead) | ||
lue | our Any \garbage; | ||
xenoterracide | before a uninstall in panda a p6 brew would be nice | ||
:D | |||
(continues to think about trying to add rakudo to perlbrew | 23:07 | ||
lue idly wonders if the heisenbug with panda was perhaps a result of a terrible habit of not turning off the computer ever. | |||
xenoterracide | lue: if you're running on windows, then yes | 23:09 | |
windows has no reboot heisenbugs all the time | |||
rarely seen it on linux | |||
lue | xenoterracide: nope, if you go in the backlog a few days back you'll see it was a painful wrangling with fork and ENOMEM | ||
that was fixed by not seemingly doing anything | 23:10 | ||
xenoterracide | well it's possible, I'm just pointing out that kind of thing happens all the time on windows | ||
xenoterracide is convinced hibernation is a horrible idea | |||
lue | My actual suspicion is/was that forking in r-p gets amazingly terrible at times. | ||
jnthn | xenoterracide: Hm, seems the Windows machine I'm currently on has been up since 23rd August... :) | 23:11 | |
Nearly 4 months. :) | |||
xenoterracide | jnthn: does it goe into hibernation? the odds of strange errors increases by the number of times it hibernates | ||
jnthn | Well, it certainly sleeps... | 23:12 | |
Not sure if sleep == hibernate | |||
lue | .oO(When nighttime's the best time to compile stuff, when do you shut it off?) |
||
timotimo | jnthn: an idea how i can debug what's going wrong here? or should i recompile with --optimize=0 and try again? | ||
23:13
rurban1 joined
|
|||
jnthn | timotimo: You could try that, but you're probably hitting one of the not-yet-fixed GC issues. | 23:13 | |
timotimo | most probably, aye | ||
yeah, i don't really think i'm the right person to do that :P | |||
jnthn | Well, nwc10++ has given us a very nice automated tool for hunting them... :) | 23:14 | |
lue is potentially the person insane enough to at least try fixing GC bugs :P | |||
23:14
rurban2 joined
|
|||
timotimo | right :) | 23:16 | |
xenoterracide | jnthn: so I take it you never reboot the windows for patches? | ||
23:17
rurban1 left
|
|||
jnthn | xenoterracide: It's been pestering me about it for ages...grr.. :) | 23:17 | |
jnthn should probably use Christmas break for the restart :) | |||
23:19
rurban2 left
|
|||
lizmat | final update of blog post in gist.github.com/lizmat/8046770 | 23:20 | |
wordpressing it now | |||
timotimo | unoptimized moar takes 135s to parse | ||
23:20
gdey joined
|
|||
lue | timotimo: this is on the better or worse computer? | 23:21 | |
23:21
cognominal joined
|
|||
timotimo | the better one. the one that takes 100s on parrot | 23:21 | |
lue | Ah. For a second I was thinking "your worse computer seems to be doing a better job of things than my one computer" :) | 23:22 | |
timotimo | hah, that would be cool | ||
i'd love to have a laptop that performs better than my desktop :P | |||
now i segfault in stage mbc, though :( | |||
lue | after the "stage mbc" appears, or just before? | 23:23 | |
timotimo | oh, after | ||
lue | .oO(laptops are just the portable dumb terminals to your desktop, right?) |
23:24 | |
timotimo | and when i hit make install again it dumps core when trying to build Test.pm | ||
23:24
telex left
|
|||
lue | timotimo: FWIW I once had a segfault there too. That end-of-setting/Test.pm area of the r-m process has been volatile for me. | 23:24 | |
23:25
c1sung joined
|
|||
timotimo | it comes from garbage collecting stuff :( | 23:26 | |
item = 0x1 | |||
23:27
Ben_Goldberg joined
|
|||
lue | At least it's a (set of) random bug(s) we know specifics about :) | 23:28 | |
timotimo | ig uess that means i'll have to continue work on jvm interop stuff for now :\ | ||
23:28
telex joined
|
|||
timotimo | yeah :\ | 23:29 | |
23:29
BenGoldberg left
|
|||
timotimo | everyone else can play and i have to work :( | 23:31 | |
lue | try `gdb make` and then `make`, setting --debug on MVM's configure, etc. Those things have somehow made things work for me before. Not sure of the reliability of these methods :) | 23:32 | |
timotimo | yeah, i've done --optimize=0 | 23:33 | |
23:33
FROGGS[mobile] left
23:35
skids joined,
rurban1 joined
|
|||
dalek | rl6-roast-data: 0c7dc9c | coke++ | / (4 files): today (automated commit) |
23:36 | |
timotimo | aaw, 00.00% | 23:41 | |
[Coke] | new failure on daily roast: make: *** [gen/moar/stage1/nqpmo.moarvm] Trace/BPT trap: 5 | ||
(changed from the core setting segfault) | |||
lizmat | for those wordpress empowered among you, preview available on perl6advent.wordpress.com/?p=2181&a...eview=true | ||
woolfy | lizmat++ for het advent blog post... just had a discussion about some Nil aspects. Difficult stuff, but damn interesting and I guess very useful. | 23:42 | |
lizmat | scheduled to be published in ~20 minutes | ||
23:44
Guest69981 is now known as ajr_
|
|||
lizmat notes that there still are no takers for day 23 and 24 :-( | 23:47 | ||
23:48
ajr_ left
|
|||
[Coke] | if you're in there, when am I due? 21? | 23:49 | |
lizmat | 21 Contract by signature - coke | 23:50 | |
indeed | |||
[Coke] | danke | ||
jnthn | Gotta set off to the airport in 5h or so, so gonna catch some sleep. Will be mostly offline for the next days, I suspect. | 23:51 | |
Have fun :) | |||
'night o/ | |||
lizmat | gnight jnthn! | ||
safe travels, enjoyable time! | |||
masak for 22 A catalogue of operator types - masak | |||
23:55
araujo left
23:56
araujo joined
|
|||
lue | lizmat++ # blog post | 23:57 | |
lizmat: The second-to-last codeblock has a perl6-p instead of just perl6 | |||
lizmat | fixed, lue++ | 23:58 | |
timotimo | lizmat++ # blog post | ||
lue | I kinda like using 'Nil' as a way of saying "this spot in the array should be just as undefined as when it started", the way it is, instead of a :delete synonym. | ||
Though I suppose I could just assign the proper type from Array[type] :) | 23:59 | ||
lizmat | lue: but that's just it, it's *not* the same way as it started |