»ö« 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 24␤error:imcc:syntax error ... somewhere␤ in file '(file unknown)' line 118␤syntax 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 2␤current 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⏏ $.x␤␤Unhandled 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 1␤Check failed␤FAILED 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)