»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
00:07
stepnem joined
00:20
daniel-s left
|
|||
jnthn | Time for some sleep. | 00:25 | |
dalek | kudo/nom: 6df35c0 | jnthn++ | / (4 files): Add a HOW for representing a generic type. Get it and the various role-related HOWs (which are just stubs so far) into the build. |
00:26 | |
kudo/nom: c512442 | jnthn++ | / (11 files): Tentatively start to flesh out specialization of various declarative thingies that can be generic. Neglected to worry about complete vs partial specialization just yet...think it probably won't matter, as there's a fallback in GenericHOW to handle failures to fully specialize in time. |
|||
kudo/nom: f3efa32 | jnthn++ | src/Perl6/Metamodel/ParametricRoleHOW.pm: Just enough to get us able to write a role body. |
|||
kudo/nom: b3f66e1 | jnthn++ | / (13 files): Merge branch 'pp' into nom |
|||
ecza/immediate: 2bd99ec | sorear++ | src/ (2 files): [immediate] my and state variables |
00:38 | ||
00:58
Moukeddar left
|
|||
bis0n | I'm using this on one script '$myImage->string(gdSmallFont,10,70,"$var",$black); but I get this error "GD::Image::string: font is not of type GD::Font" | 01:07 | |
01:22
thou left
01:29
whiteknight left
01:39
yinyin joined
|
|||
dalek | p: 335b8f6 | pmichaud++ | / (2 files): Add support for "config.default" file to hold default arguments to Configure.pl. |
01:43 | |
kudo/nom: 0579b56 | pmichaud++ | / (2 files): Add support for "config.default" file to hold default arguments to Configure.pl. |
01:44 | ||
p: 57c3ba2 | pmichaud++ | Configure.pl: Update --help text to tell about config.default. |
01:46 | ||
01:48
kst left
01:49
kst joined
|
|||
dalek | kudo/nom: d5237b9 | pmichaud++ | Configure.pl: Update --help text to tell about config.default. |
01:49 | |
01:54
mtk left
|
|||
sorear is already running into Great Confusion with the /immediate | 02:01 | ||
02:02
mtk joined
|
|||
dalek | ecza/immediate: c8aae21 | sorear++ | src/niecza: [immediate] Start on signatures |
02:09 | |
02:16
kst left
02:17
kst joined
02:26
_jaldhar joined,
jaldhar left
02:44
hudnix left,
_jaldhar is now known as jaldhar
02:52
woosley joined
|
|||
sorear | looks like I may need to make *significant* alterations to my STD to make this work | 02:58 | |
ie changing most of the stuff that touches $*CURLEX or $*CURPKG | 02:59 | ||
03:12
molaf joined
03:20
satyavvd joined,
bis0n left
|
|||
sorear | pmichaud: Why is Rakudo's grammar so much smaller than STD? | 03:21 | |
03:25
Su-Shee left
03:26
jtpalmer joined
03:29
Su-Shee joined
03:32
cooper|ipad joined
03:42
Transformer joined
03:43
Transformer left
03:53
molaf left
04:00
wamba joined
04:09
cooper|ipad left
04:26
thou joined
04:29
wamba left,
wamba joined
|
|||
mberends | pmichaud: in your straw poll, I mostly default to --gen-parrot and --gen-nqp, so they are Huffmanly the wrong way round for me. | 04:30 | |
TimToady | sorear: three reasons I can think of, 1) rakudo defines most ops separately, 2) it hardwires the nibbler, and 3) doesn't actually support derivable grammars to the same extent as STD | 04:42 | |
I don't how true those actually are, they're just guesses | 04:43 | ||
sorear | TimToady: after saying that, I came up with an idea of my own | 04:45 | |
4) Rakudo's $~Regex is a subclass of NQP's $~Regex and contains very little new code | 04:46 | ||
TimToady | I do think that a lot of the ops should end up being defined in the setting rather than the grammar | ||
but for at least some of them, that'll require macros-ish capabilities | 04:48 | ||
sorear | also the parser slows down a fair amount when it's having to deal with 200 layers of categorical subclasses | 04:53 | |
04:56
buubot_backup joined
04:58
thou left,
kst left,
birdwindupbird joined
04:59
kst joined
05:00
alc joined
|
|||
sorear | TimToady: Is there a significant difference between 'class Foo { ... }' and 'our ::Foo' ? | 05:02 | |
05:04
alc left
05:05
wamba left
05:07
alc joined
05:08
alc left
05:10
alc joined,
alc left
|
|||
TimToady | um, you like the difference between what a package knows and what a class knows? | 05:10 | |
*you mean like | |||
sorear | I'm very confused right now | 05:11 | |
05:11
alc joined
|
|||
TimToady | a package or even a module wouldn't know what to do with a method | 05:13 | |
sorear | oh | ||
I meant the ... literally | |||
TimToady | ah | 05:14 | |
sorear | both 'class Foo { ... }' and 'our ::Foo' have the effect of declaring Foo and OUR::Foo as typenames | ||
wondering if there's an important difference between them | |||
TimToady | hmm, well, if there's some introspective difference, it might show up if you can ask Foo if it's a class, but that'd be about it, unless there's some kind of monkeying or registering that would happen with a class before the "real" definition | 05:15 | |
like if a ... class tracked who derived from it before the actual def | 05:16 | ||
but that would be something that the language itself wouldn't mandate | |||
an implementation might do it for some optimization or other, I suppose | |||
05:17
Bzek joined
|
|||
sorear | ... you can derive from classes before defining them? | 05:17 | |
TimToady | but other than that, you'd maybe want to prevent someone from saying class earlier and then downgrading it later | ||
all you need to know is the name/typeobject, as far as the "isa" tracking is concerned, i'd think | |||
it wouldn't be *typical* though | 05:18 | ||
since you can't have cycles anyway | |||
but there are certainly operations that need only the identity of the class, not the actual def | 05:19 | ||
I think ISA is one of those, unless you actually try to call a method | |||
in which case it would be free to blow up | 05:20 | ||
sorear | rakudo and niecza both currently like to compute the full MRO when the } is parsed | 05:24 | |
TimToady | well, might have to be recomputed if the actual def adds an isa, I suppose... | 05:25 | |
or we disallow it, but that seems a bit draconian | 05:26 | ||
05:27
kst left
05:30
kst joined
05:36
tyatpi left
|
|||
sorear | today I tried to use $*PKGDECL / '' | 05:40 | |
sorear wonders if the error could be more awesome | |||
05:42
Zapelius left
05:46
thou joined
|
|||
dalek | ecza/immediate: 0823db7 | sorear++ | src/ (4 files): [immediate] Very very basic class handling |
05:48 | |
05:53
wtw joined
|
|||
sorear | TimToady: Why does STD clear out the new $*CURLEX in the class Foo; case? | 05:56 | |
TimToady | don't remember offhand; maybe to make it really file scoped? | 05:59 | |
so we use UNIT, not a subpackage of UNIT | |||
just guessing | 06:00 | ||
dalek | ecza/immediate: ac2fba9 | sorear++ | src/niecza: [immediate] Fudge to make my module CORE; work |
||
sorear | I disabled that for now | ||
fwiw, v7's STD is going to be a lot further from the official STD than v6's was | |||
I'm trying to get rid of the wasteful bugginess where niecza has two symbol tables, one used by the parser and one by everything else | 06:01 | ||
TimToady | sure, the symbol tables in STD are just prototypes | 06:07 | |
sorear | in the prototype-OO sense or the plan-to-throw-one-away sense? | 06:08 | |
TimToady | the latter | 06:10 | |
dalek | ecza/immediate: e7f1ff8 | sorear++ | src/niecza: [immediate] Implement is-traits, inheritance |
06:14 | |
06:15
cooper|ipad joined
06:16
thou left,
wamba joined
06:22
sftp left
06:37
noganex_ joined
06:41
noganex left
|
|||
dalek | ast: c3b0bc6 | pmichaud++ | S03-junctions/boolean-context.t: [S03] Correct use of prefix:<so> in S03-junctions/boolean-context.t . |
06:41 | |
ast: 6443857 | pmichaud++ | S32-num/pi.t: Fix plan for S32-num/pi.t . |
|||
sorear | oops, sorry about that | ||
(I probably broke it) | |||
06:44
wamba left
|
|||
dalek | ast: e0ec6c9 | pmichaud++ | S32-str/substr.t: Fudge WhateverCode tests in S32-str/substr.t . |
06:45 | |
06:55
Mowah joined
|
|||
dalek | ast: 5278d6a | pmichaud++ | S03-junctions/misc.t: Correct rakudo fudge in S03-junctions/misc.t . |
06:57 | |
ast: ea22fe5 | pmichaud++ | S03-junctions/boolean-context.t: Adjust fudging/test in S03-junctions/misc.t . |
|||
07:10
domidumont joined
07:13
jfried joined
|
|||
sorear | hey1 | 07:17 | |
hey! | |||
07:19
mj41 joined
|
|||
sorear | pmichaud: your edits to roast have been inconsistent. Which is correct, so(1 & 2) or (so 1 & 2)? | 07:19 | |
at this point I'm leaning towards, "Portable Perl 6 should never use named unary operators" | 07:21 | ||
so I vote for so() | |||
07:26
cooper left
|
|||
dalek | kudo: e7344d1 | pmichaud++ | build/PARROT_REVISION: Bump PARROT_REVISION. |
07:33 | |
07:36
cognominal left
07:38
cognominal joined
07:59
cooper|ipad left
08:00
cooper|ipad joined
08:04
cooper|ipad left
08:20
Zapelius joined
08:28
rhr joined
|
|||
moritz | pmichaud++ # new build system | 08:29 | |
08:33
dakkar joined
08:40
skangas joined
|
|||
dalek | ecza/immediate: 9905463 | sorear++ | src/ (2 files): [immediate] Implement sub definitions |
08:46 | |
08:49
daxim joined
08:50
araujo joined
08:52
envi_laptop left
|
|||
dalek | ecza/immediate: ab72509 | sorear++ | src/niecza: Refactor handling of export traits, allow also is export |
09:00 | |
sorear -> sleep | |||
09:07
benabik joined
09:13
Zapelius left
09:17
jerome left
09:36
woosley left
09:42
mtk left
09:46
ChrisDennis left
09:48
dakkar left
09:51
mtk joined
09:53
ChrisDennis joined
10:01
Moukeddar joined
|
|||
mberends | oops, --mberends, s/--make-timings/--makefile-timing/ (in comment) | 10:03 | |
dalek | kudo: 4a6d216 | mberends++ | Configure.pl: [Configure.pl] let --make-timings play nice with - (ignore error) lines, for example in 'install' target |
10:04 | |
mberends | come on github... | ||
tadzik | :) | ||
I feel an urge to write a C compiler | 10:07 | ||
mberends | haha | ||
moritz | please do, after gsoc :-) | ||
tadzik | yeah, good point :) | 10:08 | |
and after the Deadliest of Times | |||
mberends | C with dollar signs =~ Perl | ||
tadzik | :) | ||
Particulary assembly classes and writing in x86 asm inspired me | 10:09 | ||
moritz might use C if it had acceptable functions of dealing with strings | |||
tadzik | I wonder how hard is that. Gah, right semiconductors, I'll be back in a second | ||
10:09
jfried left
|
|||
tadzik | moritz: Glib has some nice ones | 10:09 | |
moritz: see developer.gnome.org/glib/stable/gli...rings.html | 10:10 | ||
moritz | no split, for one | 10:11 | |
tadzik | split is somewhere else I think | ||
moritz | and the names, the names (yes, that's a general C problem, not a glib specific) | ||
tadzik | see developer.gnome.org/glib/stable/gli...tions.html | ||
10:11
koban joined
|
|||
tadzik | yeah, the names are painful | 10:11 | |
I'll much rather write string->method(string, arguments) | 10:12 | ||
instead of stuff like gtk_tree_model_filter_convert_iter_to_child_iter() in gtk | |||
moritz | ah well, there are reasons we really want Perl 6 :-) | 10:13 | |
tadzik | :) | 10:14 | |
moritz | nqp: say(pir::interp__p()) | 10:20 | |
p6eval | nqp: OUTPUT«error:imcc:syntax error, unexpected PREG, expecting '(' ('$P16') in file '(file unknown)' line 24error:imcc:syntax error ... somewhere in file '(file unknown)' line 118syntax error ... somewhere» | ||
moritz | nqp: say(pir::getinterp__p()) | ||
p6eval | nqp: OUTPUT«get_string() not implemented in class 'ParrotInterpreter'current instr.: '_block89' pc 4188 (src/stage2/gen/NQPCORE.setting.pir:1004)» | ||
moritz | nqp: say(pir::getinterp__p(){"annotations"}) | 10:21 | |
p6eval | nqp: OUTPUT«Cannot get annotations at depth 0; use annotations op instead.current instr.: '_block11' pc 0 ((file unknown):1)» | ||
moritz | nqp: say(pir::getinterp__p(){"annotations", 1}) | ||
p6eval | nqp: OUTPUT«No such item 2current instr.: '_block11' pc 0 ((file unknown):1)» | ||
10:22
yinyin left
|
|||
moritz | nqp: say(pir::annotations__p(){"file"}) | 10:23 | |
p6eval | nqp: OUTPUT«» | ||
moritz | nqp: say(pir::annotations__p(){"line"}) | ||
p6eval | nqp: OUTPUT«1» | ||
moritz | nqp: 1;say(pir::annotations__p(){"line"}) | ||
p6eval | nqp: OUTPUT«2» | ||
10:24
daniel-s joined
|
|||
tadzik | phenny: "شاش"? | 10:28 | |
phenny | tadzik: "Gauze" (ar to en, translate.google.com) | ||
tadzik | hrm | ||
10:29
daniel-s left
10:30
daniel-s joined
10:35
pernatiy left
10:37
yinyin joined
|
|||
jnthn | afternoon, #perl6 | 10:39 | |
10:39
MayDaniel joined
|
|||
tadzik | oh noes, it's afternoon already? | 10:40 | |
10:44
daniel-s left
|
|||
jnthn | (class Foo { ... }) - in nom we actually can then write class Bar is Foo { ... } just fine also | 10:44 | |
(rakudo and niecza both currently like to compute the full MRO when the } is parsed) - if you somehow manage to need the MRO before then, in nom we compute it on demand. But we would always re-do it at the closing curly. | |||
sorear: ^^ | |||
Few more $dayjob bits, then I can nomhack. :) | 10:48 | ||
10:49
donri joined
11:01
jfried joined
11:02
daniel-s joined
11:05
dakkar joined
11:08
MayDaniel left,
Mowah left
11:09
Mowah_ left
|
|||
colomon | tadzik: still morning here! | 11:19 | |
11:21
tyatpi joined
11:23
Moukeddar left
11:25
Sondreb joined
|
|||
Sondreb | I have a function returning two arrays: my (@builds, @descriptions) = $self->findbuilds($pipeline, $count, $search); the return statement in findbuilds looks like this: return(@return_array, @desc_array); Why is both arrays placed in @builds and not @return_array in @builds and @desc_array in @description | 11:25 | |
11:25
jfried left
|
|||
tadzik | :) | 11:25 | |
first of all, this is Perl 5, and you are on the Perl 6 channel :) | 11:26 | ||
moritz | Sondreb: arrays flatten in list context | ||
tadzik | but as I look at that, I suspect your return statements flattens the arrays and makes just one array | ||
yeah, what moritz++ said | |||
Sondreb | yeah, is there anyway to get around this? | 11:27 | |
moritz | Sondreb: read `perldoc perllol`. And ask in a Perl 5 channel | ||
and maybe perldoc perlreftut | 11:28 | ||
11:35
donri left
11:39
donri joined
11:40
daniel-s left
11:46
birdwindupbird left
11:56
pernatiy joined
12:04
satyavvd left
12:07
jfried joined
12:16
daniel-s joined
12:21
wamba joined
12:24
Moukeddar joined
12:26
Moukeddar_ joined,
Moukeddar left
12:31
wknight8111 joined
|
|||
daniel-s | hey | 12:32 | |
does this mean any text character other than a ":" | 12:33 | ||
<[.]-[\:]>* | |||
moritz | no | 12:34 | |
. doesn't have a special meaning in character classes | |||
"everything except a colon" would be <-[:]> | |||
daniel-s | was I saying . minus \ and : | 12:36 | |
which matches nothing at all | |||
moritz | it should match the dot | ||
because a dot is a dot, and not a colon or backslash either | |||
perl6: say so '.' ~~ /<[.]-[\:]>/ | 12:37 | ||
p6eval | rakudo 4a6d21, niecza v6-89-ge849cf7: OUTPUT«Bool::True» | ||
..pugs: OUTPUT«*** No such subroutine: "&so" at /tmp/A2jmr8QfO1 line 1, column 5 - line 2, column 1» | |||
12:37
daniel-s left
12:38
wamba left
12:41
daniel-s joined
|
|||
takadonet | morning all | 12:42 | |
colomon | \o | 12:44 | |
dalek | ok: a019269 | moritz++ | src/regexes.pod: [regex] explain that most non-word characters lose their special meaning inside char classes, daniel-s++. This also comes with an example for a negated character class |
12:45 | |
colomon | moritz++ | 13:01 | |
daniel-s | I like how it was my ignorance that helped :) | 13:02 | |
colomon | daniel-s: that's how these things work! I'm pretty sure my own ignorance has come in handy several times in the Rakudo development process. :) | 13:03 | |
moritz | daniel-s: it's valuable feedback feedback for us | ||
13:03
envi_laptop joined
|
|||
moritz | daniel-s: the "old guard" usually knows how to deal with suboptimal errors and missing descriptions. Seeing a newcomer running into them opens our eyes for missing documentation, bad error messages and so on | 13:04 | |
13:05
frettled joined,
icwiener joined
|
|||
moritz | It's an art practiced in far too few communities | 13:06 | |
dalek | ecs: f82124f | moritz++ | S32-setting-library/Exception.pod: [Excpeptions] X::NYI stores the NYI feature |
13:09 | |
13:12
mce_ro joined
|
|||
dalek | kudo/nom: 1aa1a3d | moritz++ | src/CORE.setting/Exceptions.pm: start to stub out more exceptions. No attempts yet to actually use it |
13:16 | |
jnthn | moritz: Note roles don't actually work yet really. :-) But it's fine to write them. | 13:18 | |
13:20
mysterio joined
|
|||
dalek | ok: b49b8a4 | (Daniel Stojanov)++ | src/grammars.pod: [grammar] typo |
13:23 | |
mysterio | std | 13:26 | |
13:30
hudnix joined
13:53
Moukeddar_ left
14:00
hercynium joined
14:01
Moukeddar joined
14:02
mce_ro left
14:05
mcero joined
14:07
spq1 joined
14:11
wooden joined
14:13
molaf joined
14:21
mysterio left
14:31
buubot_backup left,
wtw left
14:34
wamba joined
14:37
PacoLinux joined
14:39
Sondreb left
14:42
yinyin left
|
|||
tadzik | pardon my offtopic, but I accidentally my whole ~/books/perl directory. What are the best free Perl books out there, besides HOP and Modern Perl, which I already redownloaded? | 14:43 | |
moritz | Using Perl 6, of course!!!! | 14:44 | |
there's "Extreme Perl", "Learning Perl the Hard Way" | 14:45 | ||
dunno if "Effective Perl Programming" has a free download | |||
14:46
buubot_backup joined
|
|||
tadzik | not only it doesn't but also an ebook is more expensive than a paperback :P | 14:46 | |
moritz | :( | 14:47 | |
14:47
MayDaniel joined
|
|||
tadzik | spending the whole first part of gsoc money on good books seems dangerously reasonable | 14:47 | |
arnsholt | Isn't buying more books why we work to earn money? =) | 14:56 | |
jnthn | I thought we did that to buy beer and holidays? ;) | 14:57 | |
moritz | I thought we did that to sustain the family? :-) | ||
tadzik | no, it's about comic books with Rabbit Samurai. I still miss a few episodes | 14:59 | |
15:02
wknight8111 left,
daniel-s left
15:04
JimmyZ joined
15:10
Moukeddar left
15:12
kaare_ joined
15:24
koban left
15:25
wamba left,
wamba joined
|
|||
gfldex | tadzik: you might want to look into: www.myvideo.de/watch/6478107/Cat_Sh...ne_Preview | 15:25 | |
tadzik | I wish I understood at least one word :) But it's nicer than I thought it would be looking at the url | 15:29 | |
15:32
mkramer joined,
sftp joined
|
|||
moritz just wrote a simplistic TAP producer in Mathematica | 15:38 | ||
15:48
timbunce joined
15:55
Moukeddar joined
16:08
cognominal left,
cognominal joined
16:10
mcero left
16:23
thou joined
16:26
kanishka joined
|
|||
mberends | tadzik: I can't believe it. I send you one book and you accidentally your whole library :/ | 16:29 | |
16:31
mkramer left
|
|||
tadzik | no no, just the Perl part | 16:36 | |
mberends | ok | ||
pmichaud | good morning #perl6 | 16:37 | |
jnthn | o/ pmichaud | ||
tadzik | hello pmichaud | ||
mberends | hi pmichaud | ||
pmichaud | jnthn: icanhaz zavolaj commitbit ? | ||
mberends | :-) | 16:38 | |
jnthn | pmichaud: Zavolaj commitbit. You haz it. | ||
16:39
thou left
|
|||
pmichaud | mberends: github.com/jnthn/zavolaj/commit/1a...c5098137c9 # some small fixes | 16:39 | |
mberends | yay! | 16:40 | |
pmichaud | there was a bug in parrot's ncifunc, which I fixed. | ||
I don't think zavolaj presently has any way to signal floats instead of doubles, or we could probably get most of the rest to work. | |||
jnthn | Should probably all work off sized natives eventually. | 16:41 | |
pmichaud | right | ||
I was wondering if it's worth creating fake-sized-natives just for zavolaj :) | |||
class num32 is Num { } | |||
jnthn | pmichaud: Yes. We can do better than that in nom also. | 16:42 | |
mberends | it would probably open the way to other native libs :) | ||
jnthn | native num32 is repr('P6num') is Num { } | 16:43 | |
pmichaud | well, we're still limited by whatever nci signatures parrot supports | ||
jnthn | We'll be missing the size limiting for now but at least we can get the type names in there | ||
And Zavolaj can of course use them | 16:44 | ||
16:44
bluescreen10 joined,
pernatiy left
|
|||
mberends | pmichaud: in an hour or two I expect to have golfed down the nci signatures that MiniDBI lost when Parrot changed dropped one parameter type in March. I'll let you know when that is merged into the customlib test. | 16:45 | |
pmichaud | mberends: I can add parameter types back. | ||
dalek | kudo/nom: 24d6b23 | jnthn++ | src/Perl6/Metamodel/ (2 files): Fill out RoleContainer role a bit, and a add a tentative idea of what ClassHOW will do with roles that it's going to compose. |
||
kudo/nom: 559bc5c | jnthn++ | / (4 files): Start to sketch out role meta-space a little more. |
|||
kudo/nom: 5d62214 | jnthn++ | src/Perl6/Metamodel/ParametricRole (2 files): Cleanup a little confusion on what's generic. A parametric role is in a sense generic, but not in so far as it being a concete type we can potentially talk about on its own, and statically resolve. |
|||
mberends | pmichaud: excellent | 16:46 | |
jnthn | pmichaud: HOw did the 't' issue end? | ||
pmichaud | it's "back" | ||
there's a NCI::Utils library that wraps the native nci stuff | |||
it understand signatures and can perform various wrap/unwrap features on nci arguments and parameters | 16:47 | ||
jnthn | ok | ||
pmichaud | i.e., we moved the logic of handling arguments out of C and into PIR | ||
jnthn | I'm not quite sure how I feel about that, but if it works I'm not going to worry much over it for now. | 16:48 | |
pmichaud | yeah, I'm the same way | ||
it's kind of another example of "improving Parrot" by "making it slower for HLLs" | 16:49 | ||
jnthn | I'm not sure yet to what extent 6model is interested in FFI just yet, but worrying about that is a little way donw the list. :) | ||
The spec alludes to an "is repr('CStruct'), which does make a large amount of sense. | |||
pmichaud | I suspect that will end up being a nqp feature more than a 6model one | 16:50 | |
(which will rely on a 6model CStruct) | |||
jnthn | Yeah, a couple of handy reprs may well be the limit of 6model's interest. | ||
pmichaud | on another topic -- yesterday you mentioned that exception handler lookup was as much as 7% in one of the benchmarks you've been looking at? that number feels "wrong" | 16:51 | |
jnthn | pmichaud: It's the number my C profiler spat out. | 16:52 | |
pmichaud | that would have to be either a ton of exceptions or a ton of exceptions missing their handlers | ||
jnthn | pmichaud: return counts. | ||
pmichaud | you mean a HLL return, not a PIR one, right? | ||
jnthn | Yeah, but 'return' in NQP isn't a PIR return. | ||
pmichaud | but 'return' should be hitting its handler in like... one step. | 16:53 | |
jnthn | I optimize out the return handler setup in NQP when we don't use return at all. That won a decent bit. | ||
16:53
cooper|ipad joined
|
|||
jnthn | pmichaud: Yes, but even so it calls .handles_type to check if the handler is OK. | 16:53 | |
pmichaud | you mean 'can_handle' ? | ||
16:53
fhelmberger left
|
|||
jnthn | pmichaud: That is, even if we hit it in the current call frame, it's still a PCC method call. | 16:53 | |
er, yes, can_handle | |||
pmichaud: Worse it goes through the whole parse signature string thing too. | 16:54 | ||
pmichaud | I wonder if it's worth pointing this out to parrotfolk | ||
it's a false sense of flexibility to use a method there | 16:55 | ||
(at least, as far as Parrot exceptions are currently implemented) | |||
jnthn | pmichaud: Let me re-run the profiler and see what I get | 16:56 | |
pmichaud: Hmm. I'm trusting yesterday's profile result less now. | 16:59 | ||
pmichaud | jnthn: yeah, it felt like the number had to be off somehow | ||
jnthn | pmichaud: oh. Hm | 17:00 | |
I thought this profiler ran fast... :) | |||
It's a sampler | |||
Samples the call stack at regular intervals | 17:01 | ||
It has other modes too...but I need to fiddle with build flags to do that | |||
Anyway, the numbers are thus probably dubious on short-running programs. | |||
pmichaud | okay | ||
jnthn tries a longer running one | 17:02 | ||
17:05
dakkar left
|
|||
jnthn | yeah, it's still bad but nowhere near 7% bad. | 17:05 | |
Actually on a longer running one, calls to the StringBuilder.append_format method are a sizable cost | |||
(Because it's a PCCMETHOD, and those always parse the signature string every invocation...) | 17:06 | ||
set_args and get_params ops inclusively add up to 14% according to this profile. | 17:08 | ||
(This is profiling NQP and PCT really - it's the compilation of the setting.) | |||
17:09
jfried left
17:10
mj41 left
|
|||
pmichaud | mberends: gist.github.com/1017205 # does this look like a suitable equivalent to the makefile-timing patch you did for rakudo master? | 17:16 | |
I'm porting it across to nom and nqp | |||
17:16
timbunce left
|
|||
pmichaud | (I'm looking at the github.com/rakudo/rakudo/commit/4a...938bbccad7 commit for reference) | 17:17 | |
oh, I'm missing the hyphen lines | 17:18 | ||
17:18
molaf left
|
|||
pmichaud | gist.github.com/1017214 # updated | 17:18 | |
17:19
Moukeddar left
17:20
Mowah joined
17:21
cooper joined
|
|||
dalek | kudo/nom: 0495215 | pmichaud++ | tools/lib/NQP/Configure.pm: Fix --makefile-timing for non-Win32 systems, let it play nice with - (ignore error) lines. Based on patch to rakudo master by mberends++ . |
17:27 | |
kudo/nom: 9a9b506 | pmichaud++ | / (7 files): Merge branch 'nom' of github.com:rakudo/rakudo into nom |
|||
17:27
MayDaniel left
|
|||
colomon | that's merging into nom, not nom into master? | 17:29 | |
jnthn | "into nom" :) | 17:30 | |
nom ain't that ready yet :) | |||
17:30
wamba left,
cognominal_ joined
|
|||
pmichaud | I forgot to 'pull' before doing the 'commit', so we got the merge commit. | 17:31 | |
dalek | p: 547c431 | pmichaud++ | / (2 files): Update --makefile-timing flag from nom (based on mberends++ patch in master). |
||
17:33
cognominal left,
cognominal_ left,
cognominal_ joined,
Moukeddar joined
17:35
thou joined,
masak joined
|
|||
masak | gd'evening, #perl6. | 17:35 | |
17:36
daxim left
|
|||
tadzik | 'evening | 17:36 | |
jnthn | yayitsmasak! \o/ | 17:37 | |
TimToady | masak: your latest doesn't seem to have shown up on planetsix | 17:38 | |
frettled | ++masak++ | ||
pmichaud | also, the latest has | ||
say "supercalifragilisticexpialidocious".substr(-7, 4) # also "doci" | |||
which I think is wrong now. | |||
TimToady | that he knows | ||
masak | yup. :) | ||
pmichaud | okay :) | 17:39 | |
frettled | TimToady: yes, it has, but... | ||
masak | will fix :) | ||
pmichaud: thanks for the reminder, though :) | |||
frettled | TimToady: the entry for the 7th is above the on for the 8th | ||
pmichaud | masak: I'm looking for the RT queue to file strangelyconsistent bugs :) | ||
TimToady | ah, there 'tis | ||
pmichaud plots his revenge.... | |||
masak | I suspect Planet Perl 6 is expecting me to double-post, so they're waiting for the dupe :P | ||
oh, they did post it... :) | 17:40 | ||
TimToady | so who's the dupe? | ||
frettled | o/ | ||
17:40
Chillance joined
|
|||
masak | how ironic, a joke about dupes being redundant... | 17:40 | |
TimToady | you can say that again | ||
jnthn | TimToady: Looking at the trait_mods, is there any reason why some parse a typename and others a module_name? | 17:41 | |
17:41
kaare_ left
|
|||
jnthn | TimToady: hides and does parse module_name. of, as and return parse typename. | 17:41 | |
TimToady: My life would be easier if they all parsed typename, but I wonder if I'm missing some detail. :) | 17:42 | ||
TimToady | no, it's probably a dupe :) | ||
er, dup | |||
jnthn | Well, the other place module_name shows up is "use" and "need" | 17:43 | |
It makes sense that they want something different because that type name doesn't exist yet - that's why we want to do the use. | |||
But for does and hides, we'd best actually have the role or class to hand. :) | |||
(And <typename> gives that.) | |||
17:49
stephanepayrard_ joined
|
|||
dalek | d: 37a0cdd | larry++ | STD.pm6: does and hides should be typenames |
17:51 | |
TimToady | jnthn++ | ||
jnthn | TimToady++ # making my life easier :) | 17:52 | |
pmichaud | doesn't that go against the goal of Perl 6? ;-) | ||
17:52
cognominal_ left
|
|||
pmichaud | oh, it's that "on behalf of of the users" part that allows this through :) | 17:53 | |
jnthn | I mean, er, that patch made things satisfyingly hard for me. I was worried things might be too easy before it. :P | ||
masak | :P | ||
mberends | pmichaud: those --makefile-timing (ignore error) patches to Configure.pl look spot on :) | 17:54 | |
17:55
jfried joined
|
|||
pmichaud | mberends: thanks. (Actually, they're in NQP::Configure now in nom and nqp :) | 17:55 | |
17:59
mj41 joined
18:07
colomon left
18:09
colomon joined
18:10
am0c joined
|
|||
sorear | good * #perl6 | 18:14 | |
tadzik | good you-name-it sorear | 18:15 | |
18:16
pernatiy joined
|
|||
masak | good whatevz, sorear. | 18:18 | |
18:23
Mowah left
18:27
JimmyZ_ joined
18:28
stephanepayrard_ left
18:29
cognominal joined
18:30
JimmyZ left,
JimmyZ_ is now known as JimmyZ
18:31
kanishka left
|
|||
sorear | hi masak | 18:33 | |
no yapsi this month, yousaid? | |||
masak | sorear: no, not enough tuits :/ | 18:35 | |
will focus on making a good release next month. | |||
dalek | ecza/immediate: c0c6a52 | sorear++ | src/niecza: Implement subroutine traits, also "also is rw" syntax |
||
18:36
am0c left
18:37
slavik left
|
|||
masak | whoa. | 18:37 | |
jnthn | std: sub foo { also is rw; 1 } | 18:38 | |
p6eval | std c843201: OUTPUT«ok 00:01 112m» | ||
18:43
JimmyZ left
|
|||
sorear | rakudo: sub foo { also is rw; 1 } | 18:52 | |
p6eval | rakudo 4a6d21: ( no output ) | ||
sorear | rakudo: sub foo { also is rw; 1 }; say "alive' | ||
p6eval | rakudo 4a6d21: OUTPUT«===SORRY!===Confused at line 22, near "say \"alive"» | ||
sorear | rakudo: sub foo { also is rw; 1 }; say "alive" | ||
p6eval | rakudo 4a6d21: OUTPUT«alive» | ||
18:53
am0c joined,
thou left
18:54
ymasory joined
|
|||
sorear | now... signatures | 18:55 | |
PerlJam | Can rakudo and niecza share much? | 18:58 | |
(I mean actual code, not just ideas or philosophy) | |||
pmichaud | we share a common admiration for the other's achievements? ;-) | ||
sorear | PerlJam: they share users, they share a testsuite, hopefully they'll share modules soon | 19:00 | |
19:00
Moukeddar left
|
|||
PerlJam | So ... no more than any other perl 6 implementation shares with another. | 19:00 | |
sorear | also the sequence op and Range implementation were copy-pasted from Rakudo (and tweaked a tiny bit to make them work) | 19:01 | |
19:02
wknight8111 joined
|
|||
dalek | p: b02ce6f | pmichaud++ | tools/build/gen-cat.pl: Make tools/build/gen-cat.pl utf8 aware. |
19:02 | |
19:05
am0c left
|
|||
pmichaud | jnthn: is the plan to eventually eliminate src/Perl6/Compiler.pir ? | 19:06 | |
dalek | kudo/nom: 2e23cdb | pmichaud++ | tools/distro/rakudo.spec: Move build/rakudo.spec into tools/distro . |
19:07 | |
kudo/nom: 0a32cd5 | pmichaud++ | / (4 files): Rename build/merge_pm.pl to tools/build/gen-cat.pl, update Makefile. |
|||
pmichaud | (more accurately: replace it with src/Perl6/Compiler.nqp ) | 19:08 | |
19:08
thou_ joined
|
|||
jnthn | pmichaud: erm | 19:09 | |
pmichaud: Do we even build it? | |||
pmichaud | oh, I didn't check that | ||
19:09
Moukeddar joined
|
|||
jnthn | pmichaud: no, we don't | 19:09 | |
pmichaud | so I can 'git rm' it? | ||
jnthn | pmichaud: Could you move it into "old"? | 19:10 | |
pmichaud: I probably want to review what's in there at some point | |||
To try and avoid losing stuff. | |||
pmichaud | lots of what's there is really out of date (and arguably wrong) | ||
but yeah, I can move it to old/ | |||
jnthn | yeah, I suspect most of it will be of little to no value. | 19:11 | |
pmichaud | so, where is Perl6::Compiler defined? | ||
jnthn | pmichaud: Currently in the file we build into perl6.exe | 19:12 | |
pmichaud: Though it probably should move out to a Compiler.pm | |||
pmichaud | I might do that here shortly. | ||
jnthn | pmichaud: src/perl6.p6 | 19:13 | |
pmichaud: +1 | |||
Then we can say our perl6.exe is even smaller :) | |||
tadzik | I like how nom/perl6 is 64K while master/perl6 is 11 MB | 19:14 | |
pmichaud | I think that's primarily because nom/perl6 loads things at runtime via load_bytecode | 19:15 | |
tadzik | yep | ||
jnthn | shhh :P | ||
pmichaud | I did the same with master/perl6 once, but decided it wasn't worth the trouble. | ||
jnthn | pmichaud: Now it's not wroth the trouble to not do it. | ||
If it's even possible to do it... | |||
pmichaud | I guess it depends on how efficient load_bytecode is about mmap | ||
i.e., which is better ... having the bytecode in the fakecutable or having it in multiple load_bytecode ops? | 19:16 | ||
PerlJam | whenever nom is ready will there be a branch swap like there was for alpha? | ||
pmichaud | PerlJam: yes. | ||
19:16
ymasory left
|
|||
PerlJam | and the old master will be beta I suppose? | 19:16 | |
tadzik | fun fun fun | ||
so nom is gamma? | |||
pmichaud | jnthn: I'm still planning to do a .pm6 and .p6 -> .nqp conversion at some point | 19:17 | |
tadzik | . o O ( Rakudo is no longer beta! ) | ||
jnthn | pmichaud: Fine by me. I only called it perl6.p6 'cus it was cute :P | ||
dalek | ecza/immediate: 1d77646 | sorear++ | src/niecza: Simple subroutine signatures |
||
jnthn | .oO( you think it's cute now... ) |
19:18 | |
pmichaud | I'll probably switch perl6.p6 to be main.nqp, too. | ||
I would've never guessed at the contents of "perl6.p6" :) | |||
19:21
daemon_ joined,
Moukeddar left
|
|||
sorear ponders sub foo($x = BEGIN { say $x.typeconstraint }) { } | 19:21 | ||
er | |||
sorear ponders sub foo(Str $x = BEGIN { say $x.typeconstraint }) { } | 19:22 | ||
the logical place to set $x's type is in the action method for parameter | |||
but by that time the BEGIN would already have been run | |||
dalek | kudo/nom: 90051c6 | pmichaud++ | build/ (3 files): Remove obsolete build/ directory. |
||
jnthn | I hope you meant $x.VAR.typeconstraint | 19:23 | |
sorear | yes | ||
jnthn | It's...weird. | ||
I wouldn't be disappointed if it didn't work. | 19:24 | ||
sorear | actually niecza/immediate will set types in <signature> | ||
because it needs to see the param_sep to fill out types fully | 19:25 | ||
jnthn | Right | ||
That's what happens in nom too, iirc | |||
19:25
thou_ left
|
|||
TimToady | INIT might be a much better time for such shenanigans | 19:28 | |
assuming you don't wanna call foo at compile time :) | 19:29 | ||
I suppose an INIT can run early if it really needs to... | |||
19:30
alc left
|
|||
TimToady | just as a BEGIN can run in an eval later than normal INIT time | 19:30 | |
TimToady feels organic | |||
PerlJam | I suppose that's a good thing because you are organic :) | 19:32 | |
dalek | kudo/nom: dcbb6cf | pmichaud++ | / (3 files): Move Perl6::Compiler into its own source file. |
19:33 | |
PerlJam | but in the mean time, I'm thinking BEGINs that don't run at BEGIN time and INITs that don't run at INIT time ... where's the concrete footing I can lack onto so that I don't slip into the muck? :-) | ||
s/lack/latch/ | |||
pmichaud | PerlJam: the concrete footing is at the bottom of the muck. | 19:34 | |
PerlJam | figures. | ||
TimToady | all these blocks have a natural time to run, but they also have 'gravity' when they can't be run at the best time, so they mostly end up as early/late as possible | ||
19:35
sivoais joined
|
|||
masak | PerlJam: the missing piece of the puzzle is that Perl will rather try to do what you want as much as it can, than complain. | 19:35 | |
PerlJam | masak: but what if I don't know what I want? ;) | 19:36 | |
masak | then Perl will do something crazy, at least making you very impressed :P | ||
sorear | jnthn: suppose a tricky user manages to make $x mean 42 in the scope of my Array $x. May I make demons fly out of eir nose? | 19:37 | |
dalek | kudo/nom: 6b3bd66 | jnthn++ | src/Perl6/ (3 files): Straighten out role body and type variable hanlding a little more. |
19:38 | |
kudo/nom: 4098cff | jnthn++ | src/ (2 files): Compilation of various other traits. |
|||
kudo/nom: d07ae77 | jnthn++ | src/Perl6/Grammar.pm: Follow traits change from STD. |
|||
sorear | it's funny to see jnthn *so far* ahead of me for a change ;) | 19:39 | |
19:39
wamba joined
|
|||
jnthn | sorear: I'm...not sure how to implement flying demons on top of Parrot, but it seems like it'll work on the CLR. | 19:39 | |
:P | |||
pmichaud | Parrot comes with its own demons built-in. | ||
masak | quick, we need to find a Parrot spokesperson, to scold us and say "there, now" when we make fun of Parrot. :P | 19:40 | |
dalek | p: 8328ee1 | pmichaud++ | src/HLL/Compiler.pm: Fix --combine flag to HLL::Compiler. |
19:44 | |
p: b4ae484 | pmichaud++ | tools/build/gen-version.pl: Fix typo in tools/build/gen-version.pl . |
|||
PerlJam | nom certainly builds faster than master. :) | 19:47 | |
pmichaud | its CORE.setting is a lot smaller atm | ||
jnthn | That's at least somewhat because it's setting is smaller | ||
PerlJam | yes, I realize. | 19:48 | |
jnthn | And also because we don't re-build half of the compiler twice over :) | ||
dalek | ecza/immediate: a5b4388 | sorear++ | src/niecza: Type constraints for subroutine signatures |
||
19:48
stepnem left
|
|||
jnthn | When pmichaud++ gets the profiling stuff in place, I can work out where we spend time in compiling core | 19:48 | |
Aside from parsing the string PSS-> thousands and thousands of times to make a RPA that we then throw out... :) | 19:50 | ||
pmichaud | I'm glad I added config.default :) | 19:52 | |
19:54
stepnem joined
|
|||
pmichaud | echo "--gen-nqp=master --gen-parrot" > config.default # always build nom from nqp master | 19:55 | |
19:55
pernatiy left
19:58
pernatiy joined
|
|||
dalek | kudo/nom: 03b247c | pmichaud++ | tools/build/NQP_REVISION: Bump NQP_REVISION to get --combine flag from HLL::Compiler. |
20:04 | |
kudo/nom: 5e51943 | pmichaud++ | / (3 files): Add --version to nom. |
|||
kudo/nom: b25f270 | pmichaud++ | src/ (4 files): Merge branch 'nom' of github.com:rakudo/rakudo into nom |
|||
kudo/nom: 1e786a1 | pmichaud++ | / (3 files): Rename src/perl6.p6 to src/main.nqp . |
|||
20:07
wamba left
|
|||
dalek | ecza/immediate: 5dd9704 | sorear++ | src/niecza: Subroutine signatures with default values |
20:08 | |
tadzik | pmichaud: so what's the final stance of eventual perl6->rakudo rename? | ||
pmichaud | tadzik: haven't decided yet. | ||
jnthn: are there any core classes that have attributes yet? do attributes work as I would expect in nom? | 20:09 | ||
20:09
lichtkind joined
|
|||
jnthn | pmichaud: X::Base does | 20:09 | |
pmichaud: They should mostly work (more) | |||
pmichaud | ah, okay. | ||
jnthn | I fixed the accessor case yesterday | ||
Note that there's no BUILD/BUILDALL etc yet | 20:10 | ||
pmichaud | I'm wondering what &infix:<,> should look like. | ||
jnthn | It makes a Parcel? | ||
pmichaud | yes | ||
jnthn | oh, hmm :) | ||
It can't be slurpy because, well :) | 20:11 | ||
pmichaud | not a normal slurpy, no. | ||
jnthn | pmichaud: If its signature just is taking the capture, then you could pull the values out of the capture directly. | 20:12 | |
pmichaud | maybe, but that doesn't sound quite right. | 20:13 | |
jnthn | That may well be easiest. | ||
How so? | |||
pmichaud | oh, what does "taking the capture" entail? | ||
jnthn | sub infix:<,>(|$) { ... } | ||
sorear | sub infix:<,>(\|@x) { @x } | ||
jnthn | The | quant. | ||
sorear: \| ? | 20:14 | ||
std: sub foo(\|@x) { @x } | |||
p6eval | std 37a0cdd: OUTPUT«ok 00:01 114m» | ||
lichtkind | greeting earthlings | ||
pmichaud | I mean, what kind of object do I get as a result? | ||
sorear | jnthn: \| binds the arguments to the function as a Parcel | ||
masak | lichtkind: hello, child of light. | ||
jnthn | sorear: When did that get added? | 20:15 | |
sorear | jnthn: before my time | ||
jnthn | pmichaud: If you want it to be fast, just do that and grab the Parrot call capture and work straight from that. | ||
pmichaud | example of "grab the Parrot call capture"? | ||
(sorry, I don't know all of the exact details of how this is set up) | |||
jnthn | pmichaud: it's OK, I'm having to check too :) | 20:16 | |
pmichaud | (I know it in PIR, I don't know it in NQP) | ||
jnthn | pmichaud: pir::find_lex('call_sig') | ||
pmichaud: Will do it | |||
pmichaud: Though we could make a more efficient way too | |||
pmichaud | whatever works for now is fine | ||
how do I get the slurpy RPA out of the call_sig? | 20:17 | ||
jnthn | pmichaud: Thing is that |$c will wrap the Parrot capture up in something Perl6-y | ||
pmichaud: Probably no way other than looping | |||
pmichaud | hmmm. | ||
jnthn | pmichaud: Would it help if I wrote you an op that just gave you the RPA from the curent call capture? | ||
pmichaud: It'll take me like 2 mins to write. :) | 20:18 | ||
Then you can do something like | |||
sub infix:<,>(|$) { # so binder is a no-op | |||
pmichaud | ideally, I'm thinking: | 20:19 | |
jnthn | pir::setattribute__0PPsP(pir::repr_new__PP(Parcel), Parcel, '$!storage', pir::the_op_i_write__P()) | ||
} | |||
pmichaud | yes, that would work. | ||
I guess we don't have .new yet either? | |||
jnthn | Yes | ||
But don't use it in primitives. :) | |||
pmichaud | what qualifies as a primitive? | 20:20 | |
jnthn | Neesd to be fast :) | ||
pmichaud | so, List stuff shouldn't use new? | ||
jnthn | .new will have to go through the bless/create/BUILDALL path | ||
pmichaud | or maybe List stuff implements its own .new ? | ||
jnthn | Well, yes, you can also override .new and do whatever you wish. :) | ||
pmichaud | might be better/easier than all of the explicit repr_new stuff. | 20:21 | |
jnthn | I'm just saying that I dobut we can make the default .new super-zippy | ||
pmichaud | noted. | ||
yes, an op to grab the rpa would be wonderful. | |||
jnthn git stash's, writes the op | |||
pmichaud | I suppose slurpy params are waiting for an Array implementation, too :-) | 20:22 | |
if we have the get_rpa op we can cheat a bit more on say() for now, too :) | 20:23 | ||
jnthn | pmichaud: Right ;) | 20:24 | |
20:28
cognominal left
20:29
cognominal joined
|
|||
jnthn | pmichaud: Written :) | 20:29 | |
Just re-building so I can test it. | |||
20:30
wknight8111 left
|
|||
sorear | it helps if your routine_def action method actually saves the optree somewhere. *oops* | 20:30 | |
jnthn | sorear: ? | ||
pmichaud | I think it's an unbound "your" | 20:31 | |
jnthn | Oh :) Yes, I see :) | ||
arnsholt | Sounds like sorear made a thinko =) | ||
jnthn | Yes, I was wondering what was wrong with my routine_def :P | ||
sorear | a particulary bad one =) | ||
pmichaud | jnthn: well.... where shall I start? ;-P | ||
jnthn | .oO( oh crap. ) |
20:32 | |
:P | |||
pmichaud: pushed | 20:33 | ||
pmichaud | jnthn: pulled, wfm | 20:34 | |
jnthn | (yes, I tested it too) | 20:35 | |
dalek | kudo/nom: e1b2a77 | jnthn++ | src/ops/perl6.ops: perl6_current_args_rpa op for pmichaud++. |
20:36 | |
mberends | pmichaud: Parrot/Zavolaj fall down on void returns from native libs. There are test cases commented out with error reports in github.com/jnthn/zavolaj/blob/mast...stomlib.t. No rush, I'm going to sleep soon. | 20:37 | |
pmichaud | mberends: yes, I've had issues with void returns also -- I'm not sure if it's Parrot, Rakudo, or Zavolaj | ||
(I suspect Rakudo.) | |||
mberends | :( | 20:38 | |
dalek | ecza/immediate: f1ee2b3 | sorear++ | / (3 files): Minor fixes to get the rest of the compiler stages to run |
||
jnthn | At a guess it needs dealing with in Zavolaj. | 20:39 | |
pmichaud | I think the common failure mode is null pmc access | 20:40 | |
mberends | yes, in these cases too | ||
jnthn | yeah...Zavolaj shouldn't really let null PMCs escape, I suspect. | ||
And my guess it that it may be doing so | 20:41 | ||
pmichaud | I think it's rakudo's boxing that has trouble with them. | ||
I could be wrong, though. | |||
jnthn | Possibly that too | ||
It's been a while since I hacked on Zavolaj. | |||
jnthn remembers writing it in the first place | |||
Was the last piece of code I wrote in Bratislava. | |||
mberends | there may be a mixup between OpaquePointer and UnManagedStruct as well. | ||
20:42
jfried left
|
|||
sorear | niecza: has $.x | 20:43 | |
p6eval | niecza v6-89-ge849cf7: OUTPUT«Potential difficulties: 'has' declaration outside of class at /tmp/belGv2krQN line 1:------> has⏏ $.xUnhandled exception: attribute x declared outside of any class at /home/p6eval/niecza/boot/lib/CORE.setting line 469 (CORE die @ 2)  at | ||
../home/p6eval/niec… | |||
sorear | will be a proper SORRY! in /immediate | ||
pmichaud | pmichaud@kiwi:~/nom$ ./perl6 | 20:44 | |
> say 1,2,3 | |||
123 | |||
jnthn | pmichaud: Should I be able to cp config.status config.default ? | ||
pmichaud | jnthn: no, you have to create config.default manually | ||
jnthn | pmichaud: already?! | ||
sorear | pmichaud: does say (1,2,3) also work? | ||
pmichaud | jnthn: no, that's a cheat | ||
jnthn: no parcels involved yet | |||
jnthn | pmichaud: :P | 20:45 | |
sorear | cheat? | ||
pmichaud | 1,2,3 is an argument list in Rakudo, it doesn't become a Parcel | ||
sorear: you're correct that say (1,2,3) likely doesn't work | |||
> say (1,2,3) | |||
Could not find sub &infix:<,> | |||
jnthn: just put whatever default options you want passed to Configure.pl into config.default | 20:46 | ||
jnthn | pmichaud: ah, ok | ||
pmichaud | e.g. | ||
echo "--gen-parrot --gen-nqp" >config.default | |||
the options can still be overridden on the command line | |||
jnthn | pmichaud: FAIL | ||
Backlash at the backslash! | 20:47 | ||
pmichaud | oh, you had backslashes in the string? | ||
jnthn | Windows path :P | ||
pmichaud | try single quotes | ||
jnthn | :) | 20:48 | |
pmichaud | seriously | ||
'--with-nqp=c:\path\to\nqp.exe' | |||
jnthn | pmichaud: yeah, that helps | ||
Now it tells me my NQP is too old. :) | |||
pmichaud | ...and it probably is :) | ||
20:48
daniel-s joined
|
|||
jnthn | It's probably correct. :) | 20:48 | |
pmichaud | the contents of config.default get passed through shellwords and then unshifted onto @ARGV | 20:49 | |
jnthn | pmichaud: If I want to let it manage my build, should I use --gen-nqp or --gen-parrot? | ||
It suggests either :) | |||
pmichaud | --gen-parrot is sufficient | ||
--gen-parrot implies --gen-nqp | |||
--gen-nqp by itself means "build my own nqp using whatever parrot you happen to find" | 20:50 | ||
--gen-parrot (with or without --gen-nqp) means "build my own parrot and use that to build nqp" | |||
jnthn | pmichaud: ouch :( | 20:52 | |
C:\Consulting\rakudo>perl Configure.pl --gen-parrot | |||
The system cannot find the path specified. | |||
Died at tools/lib/NQP/Configure.pm line 87. | |||
20:52
thou joined
|
|||
pmichaud | looking | 20:52 | |
line 87 is | 20:53 | ||
close($CONFIG) or die $!; | |||
huh? | |||
jnthn | wow :) | ||
I concur, that's where it happens | |||
:/ | |||
pmichaud | so the open succeeds but the close failes? | 20:54 | |
fails? | |||
try removing the "or die $!" there | |||
(I really don't care if it gets closed or not :) | |||
jnthn | pmichaud: That deals with it. | ||
pmichaud: This feels familiar | 20:55 | ||
pmichaud: Pipe-opens on Win32 don't die at open time. | |||
Or something weird like that | |||
This isn't the first time I've seen the issue | |||
It dies in the same way later on but I guess that means I need to fix it in nqp also :) | |||
pmichaud | yes | ||
currently tools/lib/NQP/Configure.pm is intended to be identical in both nqp and nom | |||
so any changes we make in one we should make in the other | 20:56 | ||
jnthn | oh, no, it doesn't get all the way...dies at line 130 no | ||
pmichaud | there's also a close or die in read_parrot_config (line 130) | ||
jnthn | *now | ||
dalek | kudo/nom: fb4a373 | pmichaud++ | src/CORE.setting/IO.pm: Enable &say and &print to be able to accept an argument list instead of single arguments. |
||
jnthn | pmichaud: Fixed both, seeing how it works | 20:58 | |
looks rather better | 20:59 | ||
whoa | 21:00 | ||
sorear | jnthn: I would just like to take this chance to express my envy of your class Signature / struct Rakudo_Signature relationship. | ||
jnthn | pmichaud: Now Windows pops up a dialog asking what program it should open config_lib.pir using :D | ||
pmichaud | lol | 21:01 | |
jnthn | sorear: I was quite happy about that. :) | ||
pmichaud: When I hit cancel I get "Unable to determine value for 'make' from parrot config" | 21:02 | ||
pmichaud: Any clues where I should look? | |||
pmichaud | jnthn: fixing. | ||
will push in a second | 21:03 | ||
jnthn | ah, thanks | ||
dalek | ecza/immediate: b01de0c | sorear++ | src/niecza: Implement basic has-attributes |
21:04 | |
sorear | \o/ "Hello, world" | ||
still a few more things that need to be reimplemented, though, like if statements, and settings | |||
dalek | p: eeb63e9 | pmichaud++ | tools/lib/NQP/Configure.pm: Update NQP::Configure to handle Win32 oddities. |
21:06 | |
pmichaud | jnthn: pushed both | ||
(should just be able to pull from nom and have it work) | 21:07 | ||
dalek | kudo/nom: 1a64e24 | pmichaud++ | tools/ (2 files): Update NQP::Configure to handle Win32 open oddities. |
||
pmichaud | afk for a moment (phone) | ||
21:07
lichtkind_ joined
|
|||
tadzik | .u ಠ | 21:08 | |
phenny | U+0CA0 KANNADA LETTER TTHA (ಠ) | ||
21:09
lichtkind left,
thou left,
lichtkind_ is now known as lichtkind
|
|||
jnthn | pmichaud: Looks better so far. | 21:09 | |
21:11
bluescreen10 left
|
|||
dalek | kudo/nom: af791e0 | jnthn++ | tools/lib/NQP/Configure.pm: Fix NQP::Configure on Win32. |
21:12 | |
kudo/nom: 08a9082 | jnthn++ | / (3 files): Resolve merge conflict. |
|||
21:19
thou joined
|
|||
masak | blog post! strangelyconsistent.org/blog/june-9-2011-given | 21:26 | |
21:26
spq1 left
|
|||
jnthn | yay, masak's given us another blog post \o/ | 21:27 | |
sorear | \o/ | 21:28 | |
masak: s/less place/less space/ ? | 21:29 | ||
masak | sorear: fixing, thanks. | ||
21:31
hercynium left
|
|||
dalek | ecza/immediate: dec96e1 | sorear++ | src/ (2 files): Reimplement attribute default values |
21:31 | |
pmichaud | ..."chocolate crunching action"? | 21:32 | |
pmichaud wonders what THAT could be | |||
masak | pmichaud: it's a game called "chomp!" | ||
pmichaud | jnthn: success? | ||
jnthn | pmichaud: yes :) | 21:33 | |
masak | pmichaud: it's really two-dimensional Nim :P | ||
pmichaud | jnthn: \o/ | ||
jnthn | pmichaud: My regularly scheduled hacking has now resumed. :) | ||
pmichaud++ | |||
daniel-s | ? | ||
daniel-s confused | |||
pmichaud | jnthn: one useful feature of the new system | ||
perl Configure.pl --gen-parrot=master | |||
builds against the parrot 'master' branch | |||
masak | daniel-s: ¿ | ||
jnthn | pmichaud: ooh! | 21:34 | |
pmichaud: Neat. | |||
daniel-s | OMG! upsidedown questionmark!! | ||
jnthn | pmichaud: Any commit identifier? | ||
pmichaud | jnthn: yes. | ||
jnthn | daniel-s: huh, it's right way up for me... | ||
masak | daniel-s: I thought it might un-confuse you... :) | ||
daniel-s | haha | ||
masak | well? did it help? :) | ||
daniel-s | yea | 21:35 | |
masak knew it¡ | |||
daniel-s | but I'm still going back to sleep | ||
now you're just showing off | |||
masak | ñäh :P | 21:36 | |
21:36
daniel-s left
|
|||
masak | good ♞, daniel-s. | 21:39 | |
21:40
mj41 left
|
|||
frettled | nice one | 21:40 | |
21:41
Psyche^ joined
21:42
Patterner left,
Psyche^ is now known as Patterner
|
|||
masak | frettled: I can't take credit for it, though. it's au++'s meme. | 21:43 | |
frettled | masak: yeah, but this is the first time I saw the symbol :D | ||
masak | new client? :) | 21:44 | |
jnthn | .u ♞ | 21:46 | |
phenny | U+265E BLACK CHESS KNIGHT (♞) | ||
jnthn | :D | ||
jnthn 's font don't do it. | |||
frettled | masak: no, not really, but perhaps the somewhat recent font update took care of it. | 21:48 | |
«black chess knight» - no, it's white here | |||
:D | |||
masak | Unicode's definition of "black" sometimes includes "white" :P | 21:49 | |
and vice versa. | 21:50 | ||
good knight, #perl6. | 21:51 | ||
21:53
masak left
|
|||
lichtkind | goodnight | 21:55 | |
pmichaud | .u WHITE CHESS KNIGHT | 22:09 | |
phenny | U+2658 WHITE CHESS KNIGHT (♘) | ||
dalek | ecza/immediate: fc6b0df | sorear++ | src/niecza: Reimplement constants |
22:12 | |
kudo/nom: c88dfb2 | jnthn++ | src/binder/multidispatch.c: Tweak multi-dispatch check order for consistency with the binder. |
22:25 | ||
kudo/nom: 26dd914 | jnthn++ | src/Perl6/Metamodel/ (2 files): Fix a few small bugs in various meta-methods. |
|||
kudo/nom: f9ab62c | jnthn++ | src/Perl6/Metamodel/ (2 files): Start to fill out role specialization, from parametric to concrete. |
|||
kudo/nom: 48a2204 | jnthn++ | src/Perl6/ (3 files): First cut at passing along role body block, plus fix up method naming issues. |
|||
kudo/nom: e9d014b | pmichaud++ | / (3 files): Stub in Iterable and Parcel, initial infix:<,> implementation. |
22:31 | ||
jnthn | yay, it begins \o/ | 22:34 | |
sorear | what begins? | ||
jnthn | sorear: list implementation in nom :) | ||
sorear is glad eir current rewrite doesn't touch lists. | 22:35 | ||
std: class Foo { method @.<foo bar> { ... } } | 22:36 | ||
p6eval | std 37a0cdd: OUTPUT«ok 00:01 112m» | ||
sorear | what is that supposed to mean? | ||
jnthn | O.O | 22:37 | |
std: please smoke less drugs | |||
p6eval | std 37a0cdd: OUTPUT«===SORRY!===Undeclared routines: 'drugs' used at line 1 'less' used at line 1 'please' used at line 1 'smoke' used at line 1Check failedFAILED 00:01 113m» | ||
sorear | looks like TimToady was implementing S13:173 and got carried away | 22:38 | |
jnthn slightly horrified that that parses. | |||
sorear | niecza: $::::x | ||
p6eval | niecza v6-89-ge849cf7: OUTPUT«===SORRY!===*ONE* pair of leading colons SHALL BE ENOUGH at /tmp/UFqKtoe32c line 1 (EOF):------> $::::x⏏<EOL>Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 469 (CORE die @ 2)  at | ||
../home/p6eval/niecza… | |||
22:38
Ali_h_ joined
|
|||
jnthn | lol! | 22:39 | |
arnsholt | Is that like "YOU SHALL NOT PASS"? | ||
=) | |||
pmichaud | maybe "Check failed" should be "Check bounced" :) | ||
jnthn | ah, I see...hm | ||
:D | |||
pmichaud | although I suppose that's really "Cheque bounced" if you're speaking that other dialect of American | 22:40 | |
22:40
Ali_h__ joined
|
|||
jnthn | :P | 22:41 | |
You mean that *correct* dialect? :) | |||
dalek | kudo/nom: 43a8b52 | pmichaud++ | / (4 files): Stub in Iterator, List, and ListIter. |
||
22:43
Ali_h_ left
22:45
envi_laptop left
22:49
ewemoa joined
22:50
sahadev left
|
|||
dalek | kudo/nom: 4f8db8f | pmichaud++ | / (3 files): Stub in Seq, add Parcel.list . |
22:52 | |
pmichaud | jnthn: what's the best mechanism to perform an 'isa' check ? | ||
(or maybe 'does' will work also) | 22:53 | ||
jnthn | pmichaud: typecheck op | ||
pmichaud: See Mu.pm's ACCEPTS method | |||
pmichaud | ah. "type_check" | ||
jnthn | pmichaud: That's the fast way that hits the cache and gives you an answer from just looking at some pointers. :) | 22:54 | |
Of course, you can't pass it a string. | |||
pmichaud | no problem, don't need to. | ||
jnthn | Do we need string isa at all? :) | ||
Because I sure didn't implement it... :) | |||
pmichaud | I'm pretty sure $x.isa("Something") has to work someday. | ||
er | |||
yeah, that. | |||
jnthn | ew | ||
OK | |||
pmichaud | there's tests for it in roast | ||
jnthn | well...it doesn't have to work fast :) | 22:55 | |
pmichaud | correct, I'm fine if it's slow. | ||
I'm also fine if it goes away someday. | |||
jnthn | It won't be deadly slow, but I'm not interested in making it a 6model primitive. | ||
sorear | I call p5fossil | ||
jnthn | Not unless some other langauges badly want it. | ||
(fine if it goes away) I wouldn't miss it. | 22:56 | ||
pmichaud | sorear: I called p5fossil on it originally and was kinda steered away from that | ||
(about three years ago...) | |||
jnthn | It's kinda dangerous because of its inexactness. | ||
pmichaud | agreed. | ||
as I said, I wouldn't mind seeing it go away. the work around is .isa(eval("Something")) | |||
or maybe even ::($x) or something like that | 22:57 | ||
jnthn | yeah | ||
sorear | have you figured out how to make eval not leak yet? | 22:58 | |
dalek | ecza/immediate: de8e351 | sorear++ | src/niecza: Implement method definitions |
22:59 | |
jnthn | sorear: Wasn't especially aware that it did, but I'm not at all surprised either. | 23:00 | |
pmichaud | jnthn: each eval() creates a new Parrot sub. :-/ | 23:01 | |
jnthn | pmichaud: Sure, which is fine...if it gets GC'd afterwards. | ||
sorear | worse, eval() creates a Packfile | ||
with a new constant table | |||
jnthn | I'm guessing it...doesn't. | ||
pmichaud | Parrot subs go into the constant table, iirc | ||
jnthn | Right, but in a separate PackFile data structure. | 23:02 | |
pmichaud | anyway, if it gets gc'd I'm much less concerned, yes. | ||
just have to make sure all of its subs are anon | |||
jnthn | I'm guessing since sorear asked, it's leaking. | ||
oh, darn | |||
yes, there is that instally issue :/ | |||
pmichaud: Is there a PAST flag for "anon"? | 23:03 | ||
Other than setting it in pirflags? | |||
pmichaud | jnthn: don't give it a name | ||
and it's anon | |||
(iirc) | |||
jnthn | ah, that's maybe not enough | ||
It'd be nice if the sub carried around its name but didn't get installed. | 23:04 | ||
pmichaud | there must be some other way to make it anon, though. | ||
jnthn | Tehre's a :anon flag I believe | ||
pmichaud | I know that blocks are :anon by default | ||
jnthn | We could probably get away with blanket applying it to everything these days. | ||
pmichaud | but if it gets a name, I think it's not :anon | ||
anyway, pirflags is the best bet at the moment | |||
but we can look at other options | |||
jnthn | I was most bothered to see that Parrot Sub PMC carries around it in IIRC 3 or 4 different copies of the name... :/ | 23:05 | |
dalek | kudo/nom: 02b1c21 | jnthn++ | / (3 files): Just enough to be able to apply methods and attributes from a single concrete role. Doesn't mean we really have working roles yet, but it does mean we make it through the full does trait -> compose -> specialize -> apply procedure. |
23:07 | |
23:09
Ali_h__ left
|
|||
sorear is slightly bothered by the fact that .NET 3.5 does not support garbage collection of dynamically generated code... | 23:13 | ||
dalek | ecza/immediate: 8c00c99 | sorear++ | src/niecza: Reimplement private method calling |
||
23:14
icwiener left
23:16
envi_laptop joined
23:19
cooper|ipad left,
cooper|ipad joined
|
|||
pmichaud | jnthn: for core list operations, do you think I should use Q:PIR or while statements for looping? | 23:20 | |
tadzik | yay, sleepless night | 23:21 | |
jnthn | pmichaud: I'd use while | 23:23 | |
pmichaud | I'm worried the block invocations will get too expensive. | ||
jnthn | pmichaud: Here's my fear on Q:PIR. We won't know what it's doing, so the optimizer won't be able to make much in the way of assumptions. | ||
pmichaud: When we have one, that is | |||
But I don't see that as a far-off thing. | |||
pmichaud | I don't mind switching from Q:PIR to a while loop later | 23:24 | |
jnthn | I'd expect us to be able to do the block inlining. | ||
pmichaud | I could write both for now. | ||
jnthn | True. | ||
pmichaud | so we use Q:PIR for now, then uncomment the block form when it's ready | ||
jnthn | +1 if that isn't going to be too much effort. | ||
pmichaud | I'll start with the block form for now | ||
we can optimize with Q:PIR if it turns out to be a hotpath | |||
jnthn | Oh, even better. :) | 23:25 | |
pmichaud | (or with block inlining if we're ready for it then) | ||
sorear | jnthn: ... tell me more about these "optimizations" | ||
jnthn | sorear: The obvious case where Q:PIR can get in the way is if we want to demote lexicals to registers (becasue there's no way a closure could be taken and none are contextual), but there's a Q:PIR there that may be looking them up with find_lex. | 23:27 | |
sorear nods | 23:28 | ||
jnthn | I suspect there'll be more cases like that. The main optimization I'm thinking that'd make while better is that right now every loop body is a Parrot sub invocation, which is multiple GCables. | 23:29 | |
Not to mention the call overhead. | |||
pmichaud | anytime we use Q:PIR we're drastically limiting our options for optimization (unless we ignore the effects of Q:PIR) | ||
jnthn | Right. | ||
It's the short term win that could hurt the medium term optimizer. | 23:30 | ||
pmichaud | Q:PIR has always been intended as a "just get this working" and not a "long term solution" | ||
jnthn | *nod* | ||
23:31
Chillance left
|
|||
sorear | long term solurong term solution, that's pir::, right? | 23:34 | |
jnthn | nqp:: | 23:35 | |
(compile-time abstraction layer) | |||
sorear | ohright | ||
23:36
tyatpi left
|
|||
tadzik | pmichaud: what is your opinion on parrot's tree-optimizer? Is that a target for Rakudo, or we're rather to roll out our own thing? | 23:44 | |
dalek | ecza/immediate: 8989b7d | sorear++ | src/niecza: Reimplement placeholder variables |
23:50 | |
pmichaud | tadzik: it's not really a target for rakudo. I think it makes incompatible assumptions with what we're doing. | 23:51 | |
tadzik | I see | 23:52 | |
jnthn | Thing is, the tree isn't where a lot of interesting things to do are. | 23:53 | |
23:53
whiteknight joined
|
|||
jnthn | I mean, sure, you diddle with the tree | 23:53 | |
But often that's based on meta-objects. | |||
"oh, we can do this assignment unchecked because we have enough type information to know its OK" | |||
and so forth | |||
tadzik | and things like "oh, there's not much intredasting in this Block, lets make it Stmnts and inline it"? | 23:57 | |
jnthn | Yes, once we work out what intredasting is, at least. :) | ||
tadzik | slap me if that doesn't make sense, it's late and all I'm thinking is semiconductors :) | ||
it's deeper than "there are some local variables or not"? | 23:58 | ||
pmichaud | CALLER:: comes to mind. | 23:59 | |
jnthn | Has to be...every block has a $_, $! and $/ | ||
pmichaud | as does OUTER:: | ||
jnthn | pmichaud: CALLER is no biggie | ||
Nor that | |||
You can only see contextuals with that. | |||
Or anything marked is context explicitly | |||
Spec already makes that concession | |||
pmichaud | jnthn: right, that's what I was referring to (indirectly) |