»ö« 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:24 jrockway left 00:25 jrockway joined 00:41 envi joined 00:54 whiteknight left, whiteknight joined 00:55 donri left, cexsum left 01:15 whiteknight left 01:20 jevin left 01:22 jevin joined 01:26 wolfman2000 joined 02:26 skangas left
sorear good * #perl6 02:38
02:40 colomon joined 03:03 kaare_ joined, jamtech joined 03:05 colomon left 03:17 jaldhar joined 03:23 Su-Shee_ joined 03:27 Su-Shee left 03:48 bluescreen10 left 03:54 skangas joined 04:04 REPLeffect left 04:07 cexsum joined 04:17 REPLeffect joined 04:23 jamtech_ joined, jamtech left 04:26 Sarten-X left 04:28 jaldhar left 04:32 jaldhar joined 04:36 Sarten-X joined 04:45 jamtech_ left 04:51 jaldhar left 04:56 jaldhar joined
moritz good morning 05:00
TimToady ö/ 05:01
05:10 wamba joined
PerlJam it's like this channel never really sleeps. 05:20
lue Probably because some people here almost never do :) 05:21
moritz would love to sleep more 05:23
PerlJam I stayed up last night and watched Real Genius. I hadn't seen that movie in well over 10 years. 05:24
lue
.oO(10 year old CPUs of an obsolete architecture are not recommended for heavy amounts of upgrading ... :/ )
05:30
05:43 drbean left 05:44 jamtech_ joined 05:59 tewk left 06:01 tewk joined 06:08 JimmyZ joined 06:12 drbean joined 06:14 cexsum left 06:21 cexsum joined 06:25 cexsum_ joined 06:29 jamtech_ left
mberends good * friends 06:33
JimmyZ good * ** * mberends 06:36
mberends :) 06:37
sorear hi mberends 06:41
06:47 jevin left 06:49 jevin joined 07:06 cexsum left 07:18 mj41 joined 07:26 cexsum_ left
sorear thinks ey has a decent first pass at CLR interop fully figured out. For real this time! 07:26
mberends \o/ 07:27
07:38 wamba left 07:40 wamba joined 08:09 ab5tract joined 08:17 ab5tract left 08:19 envi left 08:29 risou is now known as risou_awy 08:32 Trashlord left 08:33 Trashlord joined 08:35 araujo left 08:41 Su-Shee_ is now known as Su-Shee 08:47 Trashlord left 08:49 Trashlord joined 08:59 Trashlord left 09:01 Trashlord joined 09:02 masak joined
masak happy weekend, #perl6! 09:02
phenny masak: 02 Sep 03:43Z <sorear> tell masak Str per se is immutable but there's... something... between Str and Cursor that is mutable. See also <cut>.
tadzik lol, it's jnthn _and_ masak!
masak sorear: I was thinking of <cut> too. :)
jnthn! \o/
tadzik well, one being asleep too, but still ;) 09:04
masak my #perl6 plans for this weekend: (1) blog twice about stuff, (2) put together a small guide for LittleAnimalFarm AI pioneers, (3) -Ofun 09:06
in no particular order ;)
09:10 orafu left, orafu joined 09:11 mj41 left 09:13 Trashlord left
JimmyZ and macro? :) 09:14
masak I'll probably finalize my macros grant proposal, send it in, and yes, maybe even dig down and hack a little in my branch ;) 09:15
JimmyZ push push push ---- moritz 09:16
masak ;)
JimmyZ: I've run macros locally. it's wonderful. :P
JimmyZ: but I'll push when the time is right. 09:17
tadzik what do you mean run
JimmyZ masak: glad to hear that
09:17 Trashlord joined
masak tadzik: Perl 6 code that defines a macro and then calls it runs in my local nom-based branch. 09:17
tadzik oh oh
09:18 zhangkaizhao joined
masak tadzik: the thing is this: I got to talking about macros during YAPC::EU with pmichaud and TimToady and jnthn. then when everyone else had left, jnthn and I were walking around Riga and discussing the practicalities of implementing macros. 09:18
tadzik: the more we talked, the more doable it seemed. 09:19
tadzik like
masak so in the weekend after that, in a hotel in Tallinn, with jnthn's help, I sat down and started implementing it. a few hours later we had it working, as a proof-of-concept at least. 09:20
09:20 thou left
JimmyZ masak++ 09:21
mberends o/ masak: reading "Enough is Enough" immediately reminded me of your Yapsi 2011.03 announcement github.com/masak/yapsi/blob/master...ce/2011.03 with your persona as a mogrified Dr. Klomp :) I think I was Thog when you previewed it here in Vught :)
masak :D 09:22
that is still my favourite announcement. 09:23
tadzik of course. I appear in it
mberends did you think of that analogy at the time? 09:24
09:26 Trashlord left
masak mberends: no, I was more thinking of Babbage and Lovelace in this webcomic, I think: sydneypadua.com/2dgoggles/lovelace-the-origin-2/ 09:28
09:28 Trashlord joined
mberends ooh! 09:29
masak be sure to read that one and then sydneypadua.com/2dgoggles/series/economicmodel/ 09:32
I love steampunk. <3
JimmyZ sydneypadua.com/ is blocked by GFW :(
masak of course! alternate history is petty bourgeois and *must* be suppressed! 09:33
the actual history is bourgeois enough as it is... 09:34
JimmyZ is always suppressed!
masak hugs JimmyZ, through walls and everything 09:35
JimmyZ :) 09:36
09:37 Trashlord left 09:38 Trashlord joined
jnthn mornin' 09:44
Finally, a decent amount of sleep
masak jnthn.power-on(); 09:45
jnthn feels turned...no no wait... 09:46
jnthn turns on the coffee machine
*yawn*
09:46 Trashlord left
JimmyZ morning, jnthn 09:48
tadzik jnthn: mo'ning
JimmyZ bbl
jnthn Is the while 1 { } memory leak now gone?
09:48 Trashlord joined
jnthn is building a nom now and will be able to check for himself soon :) 09:54
09:56 sayu joined
mberends it still takes a while() # /me ducks 09:57
but no, some leaks were fixed but not the while 1 {} one afaik 09:58
09:59 Trashlord left 10:00 mj41 joined 10:01 Trashlord joined
mberends jnthn: is a normal run of while 1 {} is expected to consume memory because of CPS maybe? It's growing in RAM locally. 10:03
jnthn mberends: yeah, but I don't see the mls++ patch having been applied
mberends: no, it should not leak
10:03 MayDaniel joined
mberends I don't equate consuming memory with leaking until the working set hits an OS memory limit, triggering GC. It will take a few minutes here to reach that limit. 10:05
jnthn mberends: But iiuc mls++ did find the issue and it's a real, C-level leak, not a GC issue. 10:09
Was just chekcing if things had been patched so I can do so if not. And it seems they haven't been.
mberends jnthn: true. The patch seems to account for only part of the memory problem though. 10:10
jnthn mberends: Got a link to the patch handy? 10:13
mberends no, but I can probably get it quickly 10:14
10:14 Trashlord left, MayDaniel left 10:17 Trashlord joined 10:21 wamba left 10:22 lue left 10:26 Trashlord left
masak I thought a leak is anything that was allocated and then didn't get reclaimed at the end of its "lifetime" -- and that the tricky part is that "lifetime" is something the C programmer has to (actively and correctly) decide about. 10:28
10:28 Trashlord joined
mberends masak: many GC algorithms, including Parrot's, are lazy by design. Leaks are only what those GC's *could* not reclaim if they wanted to. 10:34
masak right. I'm talking about the manual memory management case.
but I see what you mean now. 10:35
especially with refcounting, things can live on as zombies even though they're just a cycle of references with no incoming reference. 10:36
mberends anyhow, while 1 {} was killed by the OS because it continued expanding endlessly
masak that can't be right :)
10:36 Trashlord left
mberends masak: yes, cycles are a big drawback of refcount. I'm searching for a solution for that in 6model/c, but have not found one yet. 10:38
10:39 Trashlord joined, dakkar joined
mberends I've studied GC a lot now; the potential solution I currently like most is called 'Treadmill' 10:40
jnthn mberends: For cycles, look up "trial deletion" 10:43
(if you didn't already see that stuff, of course :)) 10:44
mberends jnthn: oh yeah, seen that before, I'll look again :) 10:45
.oO( if this block vanishes, does the rest vanish too? )
10:46
jnthn Only if you use the block for resting on. 10:48
;)
10:48 am0c joined 10:49 Trashlord left
mberends I cannot spend much time on that today, must do some irl housekeeping 10:49
10:52 Trashlord joined
masak οίκος++ 10:52
10:53 agentzh joined 11:01 mj41 left 11:03 Trashlord left 11:04 renormalist left, renormalist joined 11:07 woosley joined, Trashlord joined 11:10 araujo joined 11:18 Trashlord left 11:19 Trashlord joined 11:20 Trashlord left, sivoais joined 11:22 Trashlord joined 11:30 Trashlord left 11:32 envi joined 11:33 Trashlord joined, whiteknight joined 11:39 Trashlord left 11:43 risou_awy is now known as risou 11:44 Trashlord joined, Trashlord is now known as Guest3767 11:45 Guest3767 left 11:47 Siddy joined 11:57 Siddy left 11:58 Siddy joined, colomon joined 12:05 Siddy left 12:07 Siddy joined 12:11 zby_home joined
tadzik phenny: "οίκος"? 12:15
phenny tadzik: "house" (el to en, translate.google.com)
jnthn el? 12:18
masak tadzik: the source of words such as "economy" (the management of home) and "ecology" (the study of home)
jnthn: Classical Greek.
jnthn oh, greek
masak hum, maybe modern Greek. 12:19
tadzik el greco
masak yes, modern Greek. en.wikipedia.org/wiki/List_of_ISO_639-1_codes
12:23 Limbic_Region left 12:32 molaf_ left 12:35 Siddy left 12:37 Siddy joined 12:45 jrockway left 12:46 jrockway joined, baest left 12:48 Siddy left
masak you people are too quiet today. 12:48
jnthn HUSH I'M WRITING CODE. 12:49
12:49 Siddy joined
masak sticks out his tongue and goes back to writing code himself :) 12:49
12:51 Siddy left, baest joined 12:52 Siddy joined
masak rakudo: class AreYouNom { method foo { $!x } }; say "no, I am not nom" 12:55
p6eval rakudo 2bac6a: OUTPUT«===SORRY!===␤Attribute $!x not declared in class AreYouNom at line 1, near " } }; say "␤»
masak gotcha.
12:58 mj41 joined 13:07 Vlavv` left, Vlavv joined 13:10 mj41 left 13:32 woosley left 13:38 tokuhirom joined, mj41 joined 13:39 MayDaniel joined
dalek p: 5c84988 | jonathan++ | src/ (3 files):
Start to sketch out new boolification protocol, so we can portably and efficiently put things in boolean context (e.g. avoiding nested runloops in the common case).
13:42
p: b53d224 | jonathan++ | src/ops/nqp.ops:
Correct error text.
p: 1a9cdae | jonathan++ | src/pmc/sixmodelobject.pmc:
Update get_bool to use new boolification protocol; we fall back to a v-table override during migration (will rip that code out afterwards).
13:44 wayland76 left 13:46 sayu left 13:47 espadrine left
masak jnthn++ 13:47
tadzik looks exciting 13:48
jnthn pmichaud++ for nudging me to do it, even though it took me a while to work out how it should look and actually get around to it :)
dalek p: 57988ce | jonathan++ | src/how/NQPClassHOW.pm:
Update NQPClassHOW to provide information for the new boolification protocol.
13:51
p: 35da528 | jonathan++ | src/ (2 files):
Remove now unrequired uses of is parrot_vtable('get_bool') trait.
p: 4738417 | jonathan++ | src/stage0/ (6 files):
Update bootstrap.
masak when'll Perl 6 be done/production-ready/6.0.0? 13:53
I'm usually among the bunch who say "there's no way to answer that".
but let's pretend there were a nice, short, concrete answer.
what would it be? :)
tadzik 2 years 13:54
flussence it'll probably coincide with the time I finish getting this graph up to date... which isn't any less vague than the current answer we give people :)
masak something like "we just need to finish up role/MMD/speed, and then you can start using it."
tadzik Massively Multiple Dispatch is what always comes to me mind when I see MMD
flussence I think last year my answer was "when frozen bubble runs on it" :)
masak there was this guy in here the other day who sayd "when will Perl 6 be done? I'm sick of using PHP."
tadzik: Massively Multiplayer Dispatch :P 13:55
said*
tadzik Methods for everyone!
masak that guy had a clear goal with Perl 6. he wanted it to be a drop-in replacement for PHP.
that's a pretty clear definition of "done", seemsme.
not the only one, of course. 13:56
flussence now we just need someone to write a quote circumfix op for «<? ?>»... 13:57
plobsing masak: is that one of the end-goals of perl 6? most languages are not drop-in replacements for php for various reasons.
JimmyZ when Perl 6 is done, Perl 7 will be borned 13:58
jnthn masak: That's a challenging one, because one attraction of PHP is that it has a wide deployed base, and if he wants that part of drop-in then it's gonna be a while (e.g. that's a bigger thing that Perl 6 itself being "production"/"done") 13:59
masak yeah. 14:00
I'm not suggesting we should, or could, attempt to oust PHP in its niche. 14:01
but it'd be nice to get somewhere close to that ease of deployability.
as pmichaud++ has pointed out, that'd be an excellent use for a Rakudo distribution.
flussence
.oO( use Inline::HTML )
14:02
14:06 sayu joined
JimmyZ or embed Perl6 in HTML :) 14:18
14:19 agentzh left
masak JimmyZ: yes. 14:19
JimmyZ: such a Rakudo distribution could do the PHP thing and consider anything that looks like HTML to be a script, with some <?...> thingies containing Perl 6 code. 14:20
JimmyZ <?perl6 ... ?> 14:21
or <% .. >
I wrote code in mod_perl, the bad things is that the error can only output in logs, not in browser, which makes debugging code bad 14:23
14:33 araujo left, araujo joined
plobsing JimmyZ: i see that as a good thing. no chances for users to know exactly what the error they are triggering is. 14:34
JimmyZ plobsing: yeah, but let the user decide it 14:35
plobsing that's just an opportunity to get it wrong 14:36
and have your server pwned
masak the default should be the secure option.
huf i'm sure you could install a handler with mod_perl that can tail the error log when the server would throw back an ISE
JimmyZ plobsing: I don't want to see both log and browser continually when I am debugging code
huf: a handler can't hand compling error 14:37
PHP allows whether error should output to browser or not 14:38
14:41 woosley joined, woosley left 14:42 araujo left 14:43 araujo joined
masak right. 14:43
but the default should be whatever's secure.
which happens, in this case, to be not showing the error in the browser. 14:44
JimmyZ yeah, but mod_perl should give me a opportunity, let me see the whatever errors in the browser when I am developping 14:45
flussence when I've done PHP stuff I usually find inline errors get in the way. It's even worse when using strict xhtml...
JimmyZ I can't find a configure option to make the whatever errors outputs to browser
14:45 molaf joined
JimmyZ but PHP gives me the option 14:46
flussence in perl5 the error display's usually handled at the web framework level... if you're writing raw CGI.pm-style code then yeah, it'll be difficult. 14:47
JimmyZ yes, catalyst framework is good, but I don't want framework
catalyst has a native server 14:48
TimToady CATCH { .redirect } seems easy enough
14:49 tokuhirom left
JimmyZ TimToady: when it's a compiling error, CATCH doesn't work ;( 14:49
flussence (that's why I have use_ok tests on all my web stuff now...) 14:50
JimmyZ that's why I didn't use mod_perl, use mod_php instead 14:51
plobsing JimmyZ: if it is a compiling error, you can't you just perl -c your code/
JimmyZ plobsing: I can't, because I'm using mod_perl
flussence plobsing: he's got a point, mp code is a pain to debug outside the webserver :) 14:52
14:52 MayDaniel left
flussence another way $dayjob makes my work harder than it needs to be... :( 14:53
JimmyZ whenever I flush browser, whenever I can't see anything in browser, I should go into the apache log
TimToady wonders if BEGIN CATCH can/should be made to work 14:57
masak exception handlers for compile-time? 14:58
TimToady nodnod
JimmyZ TimToady: can't, I tried it
TimToady: iirc 14:59
masak TimToady: isn't it enough to put CATCH in whatever BEGIN block or BEGIN-time construct where exceptions should be caught?
TimToady I meant "made to work" in the other sense
masak fails to see why BEGIN CATCH specifically would add anything that BEGIN { CATCH } doesn't already have
TimToady want to catch exceptions thrown after the BEGIN 15:00
by the compiler
masak it sounds like a slight mis-combination of the two features BEGIN and CATCH. 15:01
TimToady it's abusing CATCH more than BEGIN
masak yes.
TimToady since who knows what exception mechanism the compiler is using
but it'd be nice if there was some hook that could be set at use/BEGIN time 15:02
"pragmas will happen" but it'd be nice if they were portable
pmichaud good morning, #perl6
masak good *, pmichaud
15:02 whiteknight left
TimToady \° <-- shrunken head today 15:03
flussence how about: try { compile 'file.pl'; CATCH { say $! } } # like require(), but stops before running mainline
TimToady wonders whether the setting should/could have charge of compilation policy 15:04
YOU_WILL_BE_HERE :) 15:05
jnthn o/, pmichaud
pmichaud THERE_WILL_BE_MODULES_HERE :)
TimToady try eval q{YOU_ARE_HERE} 15:07
try eval q'{YOU_ARE_HERE}' # more likely
s/q//
15:08 uniejo_ joined, colomon left, colomon joined, colomon_ joined, colomon left, colomon_ is now known as colomon
TimToady which still won't work, of course... 15:11
maybe we need a more general mechanism for a setting to defer an action till YOU actually IS HERE 15:13
maybe YOU_ARE_HERE {...} is a phaser that defaults to the normal thing
15:13 araujo left
JimmyZ try { YOU_ARE_HERE; CATCH { .... } } 15:14
moritz TRY_TO_BE_HERE
apejens WISH_YOU_WHERE_HERE
pmichaud NEITHER_HERE_NOR_THERE 15:15
TimToady :D xx *
moritz A_HOBBIT'S_TALE
apejens STOP_CANT_TOUCH_THIS { }
TimToady apejens: you may use CAN'T
apejens would be fun with a language with only pop song references
ahh
pmichaud DON'T-USE-APOSTROPHES-OR-HYPHENS
JimmyZ YOU_ARE_ON_MARS 15:16
TimToady why can't we be this creative when we need something important?
apejens because it's harder :) 15:17
TimToady oh, well that's okay then...
pmichaud because we're too creative on the "something important" part.
TimToady
.oO(something for everyone, a comedy tonight!)
15:18
pmichaud i.e., we're more creative at making challenges than resolving them :)
15:18 zhangkaizhao left
moritz challenges everybody to fix that :-) 15:18
JimmyZ END { try { YOU_ARE_HERE; CATCH { .... } } } :)
15:18 araujo joined
TimToady I'd say resolving our challenges is one of our...er...challenges 15:18
JimmyZ that's too end
pmichaud "Hey! What if we could modify the grammar! At runtime!"
TimToady who'd want that? 15:19
hmm, you switch languages by going into a dynamic scope...hmm... 15:20
pmichaud "maybe mmd can be implemented using smartmatch!" 15:21
"Let's use the 'whatever' term to do currying!"
TimToady macro statement_control:BEGINCATCH { CATCH; parse_more() }
moritz and signature binding too, when were'a at it
TimToady there's more than one way to homoiconify a cat 15:22
btw, I think "Cat" might be the answer to "what does a mutable Str look like?" 15:24
Cat's are really more like ropes
pmichaud makes sense, at least to a first approximation. the devil will be in the details.
TimToady s/"'"//
I foresee that we've been using Str in a lot of places that we'll wish we'd used Stringy 15:26
pmichaud Yes, I suspect that's true.
TimToady since a Cat is Stringy, but not Str
pmichaud I know the core setting has a lot of Str in places that need to be otherwise
moritz agreed 15:27
TimToady and if we're going to expect people to use Stringy that much, it's bad Huffman to have it that long
moritz people can just use ~ 15:28
TimToady not in a sig
moritz hm, right
TimToady well, unless we allow ~ and + in a sig
moritz OTOH the last time we huffmanized a type name (Object -> Mu) it turned out we didn't need it so often after all
at least I don't need it often in normal code
TimToady that wasn't so much for huffman 15:29
it was more that I didn't want people assuming they knew what Object means
pmichaud "Object" was objectionable.
TimToady when Any is really what they're thinking of
Mu almost means something more like Concept
Mu is Nouny, but not a Noun :) 15:30
15:33 donri joined
moritz NaN = Not a Noun :-) 15:34
or Not a Nun
15:39 uniejo_ left
masak TimToady: I wanted to write a follow-up blog post where I explained -n and -p "done right", in terms of YOU_ARE_HERE. but then I got to thinking that it seems that we mean two different things/dimensions when we talk about "the setting" -- sometimes we're talking about all of the standard builtins that are provided, and other times we're talking about code injected immediately around YOU_ARE_HERE. 15:40
it seems to me we're confusing these two things. for example, we don't intend all the standard builtins to go away just because we use -n
and yet we say it's a different setting.
TimToady it's a nested setting
lexical nesting is primarily about "what language am I using right here" 15:41
everything else comes from that
so if your setting needs a setting, we can do that 15:42
tadzik re BEGIN CATCH vs BEGIN { CATCH }, that's what I thought about DOC use too 15:43
15:48 sayu left 15:49 sayu joined 15:55 dakkar left
dalek p: ca42584 | jonathan++ | src/ops/nqp.ops:
Add a sanity check.
16:03
p: 5d6850e | jonathan++ | src/pmc/sixmodelobject.pmc:
Fix some thinkos; drop using a get_bool v-table override as the way we implement 6modelobject's get_bool v-table.
16:10 araujo left 16:13 _twitch joined 16:15 araujo joined 16:19 JimmyZ left
masak TimToady: so "setting" is something that's applied, possibly several times, during the compilation process? 16:21
jnthn masak: I think it's more that a setting may, itself, have a setting.
masak: I think nom already supports that, fwiw. 16:22
masak jnthn: I don't see how that'd work. -n might be applied with either the default builtins, or with an empty setting.
so it's not like -n has a pre-set setting.
jnthn masak: I was assuming that -n was equivalent to --setting=MINUS-N or so :) 16:23
But with a decent name.
masak jnthn: so several --setting=<something> will not override each other, but nest inwards wrt each other? 16:25
my point is, what if I want -n but not the standard builtins?
16:31 thou joined 16:33 araujo left, araujo joined
moritz masak: in some sense -n *is* a standard builtin, and uses others (like print, Bool (for while())) 16:35
masak well, replacing the standard builtins doesn't necessarily mean getting rid of print and Bool. 16:36
moritz it does not? 16:38
well, wanting command line options that are implemented in the setting, but not the setting itself is like wanting all built-ins except Int 16:42
ie unrealistic in my mental model
masak so -n and -p presuppose the standard setting? 16:43
moritz I suppose
masak a company with its own enhanced setting can't use it with -n and -p?
a setting which does routine tracing or something can't be used with -n and -p? 16:44
moritz maybe -n and -p presuppose *at least* the standard setting
masak hm.
anyway, I just wanted to point out what I believe to be an unclarity.
moritz I believe alternate settings are very unclear right now 16:45
16:45 Chillance joined
moritz ie it is not clearly specced which language features are allowed to rely on the standard setting 16:45
masak t/spec/S32-trig/pi.t fails during spectest locally. "no bigint lib loaded".
jnthn masak: Er, you can only pass one --setting afaik 16:46
moritz for example use Foo :bar; will probably construct a Pair for :bar
jnthn moritz: Anybody who wants to create their own setting from scratch will have a LOT of work to do. 16:47
moritz right
jnthn moritz: Like, they'll need to resolve all the bootstrapping circularities than we do in CORE.setting
mberends Niecza very elegantly implements -n and -p by adding settings for them, see CORE, CORN and CORP for example in github.com/sorear/niecza/blob/mast...niecza#L95
jnthn It's possible today. It's just a huge undertaking.
masak I agree that "alternate setting" will probably duplicate many of the builtin types and routines.
but given that, I still think it's a bit short-sighted to say that -n and -p only work under the default setting. 16:48
it feels less-than-composable.
jnthn masak: Then maybe Rakudo has the correct factoring of them and the spec is wrong ;)
moritz in the long run, we probably want a "slim" standard setting, which resolves the bootstrapping issues 16:49
jnthn (e.g. maybe they make more sense as AST transform)
benabik Perhaps -n and -p wrap the program in a mini-setting that is then wrapped in the --setting?
jnthn benabik: Only if you dynamically compile that mini-setting.
moritz and another one, which can be completely implemented in terms of the slim setting
16:49 isBEKaml joined
jnthn moritz: I'd pondered that a bit. My conclusion was that it may not help as much as we hope. 16:49
moritz so things like DateTime, IO::Socket::INET etc would be in the "fat" setting, and that is what one might occasionally substitute 16:50
masak jnthn: interesting notion. that would make for a nice blog post :)
moritz: I like that.
jnthn moritz: Oh, *those* things we could easily pull out, yes 16:51
benabik Aren't those things modules, not setting?
moritz an things like Set, KeySet, KeyBag etc.
benabik: they are setting
masak they are modules in the setting. 16:52
with 'Set', you don't have to 'use Set' to use Set.
jnthn spectests updating Rakudo to the new boolification stuff.
masak you do have to 'use Set' to use the unicode ops for Set, though. 16:53
benabik masak: Ah, yes. Good point.
moritz masak: but that's only a Rakudo limitation, no?
masak moritz: what is?
jnthn if [Bool|Int|Str|Num] { ... } will no longer need a nested runloop. We should get some performance win.
masak jnthn: \o/
moritz masak: the need for 'use Set' 16:54
masak moritz: AFAIK, TimToady has said that the unicode ops shouldn't be pulled in until one does 'use Set'. also AFAIK, this does not yet work in Rakudo.
moritz my memory said me that having non-latin-1 ops made parsing very slow, and that was the reason 16:55
jnthn moritz: It does (though I think QRegex helps with that) 17:00
But I think masak is right here also 17:01
Dang, spectests show up a slight fail to the Int/Str/Num case. 17:07
But Bool case looks fine.
Is there some way to make the test harness run a single test and show all the output? 17:08
17:09 wamba joined
jnthn --verbose doesn't do that. 17:09
moritz no
you have to run ./perl6 $testfile
jnthn moritz: Yeah, that doesn't help me. :( 17:10
dalek kudo/nom: b22077d | jonathan++ | / (6 files):
Implement new approach to boolification. It makes it sufficiently cheaper than in a simple integer-incrementing while loop that we do 20% or so better overall.
kudo/nom: 6d41c62 | jonathan++ | src/Perl6/Metamodel/EnumHOW.pm:
EnumHOW needs same updates as ClassHOW for boolification changes.
moritz jnthn: why not?
17:11 whiteknight joined
jnthn moritz: On my platform, all tests that use is_run work fine when run as ./perl6 $testfile 17:11
moritz: However, they always fail under the harness
moritz: This isn't new in nom. I've never managed to track down why.
moritz jnthn: urks
jnthn Though would like to at some point... 17:12
moritz nom: say $*EXECUTABLE_NAME
rakudo: say $*EXECUTABLE_NAME
p6eval rakudo 2bac6a: OUTPUT«./nom-inst/bin/perl6␤»
moritz jnthn: try to diag($*EXECUTABLE_NAME) in a test
that should show up with --verbose
jnthn doesn't :( 17:14
but I can always write the value to a file
17:15 finanalyst joined
moritz or add it to a test description 17:15
jnthn oh!
./perl6
moritz (they show up, do they? :-)
jnthn moritz: --verbose doesn't seem to do anything different here :S
moritz: Anyway, $*EXECUTABLE_NAME seems to explain a lot 17:16
perl6 from the command line, ./perl6 from the harness
tadzik oh, a speedup :) 17:17
moritz jnthn: I see what's wrong, seems like an easy fix
jnthn moritz: yay! :) 17:18
moritz++
finanalyst rakudo: class A {has $.a};my A $x=.new(:a(2));class B {has $.b};my $y=.new(:b(8));class C {has A $.q; has B $.w};my $z.=new(:q($x),:w($y)) 17:19
p6eval rakudo 2bac6a: OUTPUT«Type check failed in assignment to '$x'; expected 'A' but got 'Any'␤ in <anon> at /tmp/YMk8a4UcZ2:1␤ in <anon> at /tmp/YMk8a4UcZ2:1␤␤»
jnthn finanalyst: You wanted .= new
Not =.
tadzik my $z.=new(:q($x),:w($y))
don't you want a Type declaration btw?
my $z is Any
finanalyst mistype. hang on i think I found a bug
moritz jnthn: pushed, please test
jnthn moritz: OK, thanks
dalek kudo: 1b7dd12 | moritz++ | t/harness:
[t/harness] use backslash on windows
finanalyst rakudo: class A {has $.a};my A $x=.new(:a(2));class B {has $.b};my $y.=new(:b(8));class C {has A $.q; has B $.w};my $z.=new(:q($x),:w($y)) 17:20
p6eval rakudo 2bac6a: OUTPUT«Type check failed in assignment to '$x'; expected 'A' but got 'Any'␤ in <anon> at /tmp/TiCJNv7Xrg:1␤ in <anon> at /tmp/TiCJNv7Xrg:1␤␤»
finanalyst gggrrrr
jnthn moritz: Will ahve to do another test run in just a moment for the next part of the boolification things, will check it during that :)
tadzik finanalyst: read what I said
rakudo: my $a .= new; say $a.WHAT
p6eval rakudo 2bac6a: OUTPUT«Any()␤»
tadzik rakudo: my Int $a .= new; say $a.WHAT
p6eval rakudo 2bac6a: OUTPUT«Int()␤»
tadzik my $a is like my Any $a 17:21
finanalyst rakudo: class A {has $.a};my A $x=.new(:a(2));class B {has $.b};my $y.=new(:b(8));class C {has A $.q; has B $.w};my C $z.=new(:q($x),:w($y))
p6eval rakudo 2bac6a: OUTPUT«Type check failed in assignment to '$x'; expected 'A' but got 'Any'␤ in <anon> at /tmp/LR2ng3cdpu:1␤ in <anon> at /tmp/LR2ng3cdpu:1␤␤»
tadzik how about $y?
finanalyst rakudo: class A {has $.a};my A $x.=new(:a(2));class B {has $.b};my $y.=new(:b(8));class C {has A $.q; has B $.w};my C $z.=new(:q($x),:w($y)) 17:22
p6eval rakudo 2bac6a: OUTPUT«Type check failed in assignment to '$!w'; expected 'B' but got 'Any'␤ in method BUILDALL at src/gen/CORE.setting:483␤ in method bless at src/gen/CORE.setting:473␤ in method new at src/gen/CORE.setting:458␤ in method dispatch:<.=> at src/gen/CORE.setting:619␤ i…
jnthn finanalyst: my B $y ... :)
finanalyst yep
rakudo: class A {has $.a};my A $x.=new(:a(2));class B {has $.b};my B $y.=new(:b(8));class C {has A $.q; has B $.w};my C $z.=new(:q($x),:w($y))
p6eval rakudo 2bac6a: ( no output ) 17:23
finanalyst damn
OK, what has happened to me is that $z is shown as Any and not C
rakudo: class A {has $.a};my A $x.=new(:a(2));class B {has $.b};my B $y.=new(:b(8));class C {has A $.q; has B $.w};my C $z.=new(:q($x),:w($y));$x.WHAT.say
p6eval rakudo 2bac6a: OUTPUT«A()␤»
finanalyst rakudo: class A {has $.a};my A $x.=new(:a(2));class B {has $.b};my B $y.=new(:b(8));class C {has A $.q; has B $.w};my C $z.=new(:q($x),:w($y));$z.WHAT.say 17:24
p6eval rakudo 2bac6a: OUTPUT«C()␤»
finanalyst oh!
that did not happen at home
17:24 wamba left 17:25 Sarten-X left
tadzik (: 17:26
did you remember about all the type decls at home? 17:27
17:27 frhodes joined
tadzik it's usually easier to just do "my $a = A.new" 17:27
17:27 kaare_ left, frhodes left
finanalyst tadzhik: i have a bug in a program where I have a class with multiple inheritance. I thought I had a simple case, but not quite there yet 17:29
17:29 kaare_ joined
finanalyst i'll get back in a minute 17:29
jnthn moritz: Doesn't seem to have helped, at first glance 17:31
moritz :( 17:32
dalek p: 3d0c71a | jonathan++ | src/pmc/sixmodelobject.pmc:
More boolification fixes.
17:33
finanalyst tadzhik: false alarm, just multiple typos
tadzik finanalyst: I'm tadzik btw, but glad you have it fixed :) 17:34
finanalyst tadzik: sorry. 17:35
tadzik no problem
17:35 Sarten-X joined 17:37 frhodes joined
tadzik I have a feeling that settings compilation is now _slightly_ faster 17:38
like, 8 minutes rather than 10 or so
jnthn tadzik: With latest NQP improvements? Possibly :)
tadzik jnthn: bools?
jnthn tadzik: That'd surprise me a little but if you can measure/show it, I'd be happy to see it :)
tadzik jnthn: how about "I used to be cursing aloud, now I'm only grunting?" :P 17:39
I can measure it, no problem
jnthn tadzik: I did notice that I seemed to have got a second or two shaved off running the NQP test suite quite consistently after the improvements.
Not sure if spectest runs faster.
If anybody wants to test before/after that'd be great, but wait for my next patch (coming in 5-10 hopefully) first. 17:40
tadzik I'm quite happy with slow spectest as long as I can compile the setting. I could get back to settings hacking then :)
and if I had enough RAM for that
I'll measure "before" then
jnthn OK. Before the bool patches.
tadzik oh, I'd have to rollback nqp first, si?
jnthn yeah
Don't worry if you have better things to be working on :) 17:41
Unless you're especially interested in the numbers too :)
tadzik I have. I also have mutable sense of duty
17:41 sayu left
tadzik "You can start tomorrow!" 17:41
"It's already late today!"
"You are awesome, you'll make it in n-1 days!"
I'm updating parrot first to make sure I have the lineof patch in place 17:42
dalek kudo/nom: 93eb7cd | jonathan++ | tools/build/NQP_REVISION:
Get boolification fix from NQP.
17:47
kudo/nom: e28a5ff | jonathan++ | src/Perl6/Metamodel/BOOTSTRAP.pm:
Get Str, Int and Num boolification to take advantage of the new approach, so we can handle them more efficiently.
tadzik I'm not done with nqp compilation yet :P
17:50 _twitch left, wamba joined
tadzik running time make on the old one 17:50
jnthn tadzik: OK, I'm done with the bool stuff for the time being :) 17:51
tadzik a'riht :0
what's next, what's next? :)
oh, maybe some lexical issues? :P
pardon me, weird sense of humour today 17:52
17:53 mj41 left
flussence
.oO( ok, graph plan C: let it keep generating bad fail counts, then fix the code and redo the data using all the TAP archives it's been uploading... )
17:58
18:02 wamba left
tadzik hehe, I remember how mad I was during gsoc when I had to wait 6 minutes for my machine to finish a full 'make' 18:04
how mad I'll be _now_ :)
moritz++ for telling me about 'make perl6', I wouldn't have finished otherwise :P 18:05
make 1015.31s user 8.22s system 107% cpu 15:52.83 total 18:06
now trying the shiny new stuff 18:07
18:10 Reaganomicon left
jnthn tadzik: OK. I'm working on some further improvements to setting compilation also. 18:15
tadzik jnthn: you have my personal Thank You :)
jnthn: CORE.setting -> pir alone is about 15% faster 18:23
that's pretty something :)
moritz jnthn: turns out my fix to t/harness accidentally landed in the master branch 18:24
tadzik make 852.35s user 6.06s system 109% cpu 13:06.73 total 18:25
jnthn tadzik: whoa.
tadzik yeah, that's around 15% overall speedup :)
dalek kudo/nom: 068cad4 | moritz++ | t/harness:
[t/harness] use backslash on windows
tadzik jnthn++ all the way
flussence (agh, getting this data out of that web interface is going to be a headache) 18:26
moritz jnthn: at your convenience, please re-test :-) 18:27
jnthn moritz: Thanks, trying it now while spectesting a patch to try and help setting compilation a little more. 18:31
18:33 cexsum joined 18:34 frhodes left 18:47 pernatiy joined
sorear good * #perl6 18:48
jnthn moritz: Patch worked \o/ 18:51
moritz++
moritz \o/
18:54 tcell joined 18:55 benabik left 18:57 birdwindupbird joined 18:58 mj41 joined
masak sorear: \o 19:02
dalek p: a0a9213 | jonathan++ | src/ (2 files):
Make a way to both set an object's SC and add it to the SC in a single op.
19:09
p: 3088455 | jonathan++ | src/NQP/SymbolTable.pm:
Make use of add_object_to_cur_sc_past.
19:10 kaare_ left 19:12 tcell left
dalek kudo/nom: e24dd5c | jonathan++ | src/ (4 files):
Lessen the code we generate for creating container descriptors; should save us a bunch of PAST nodes when compiling the setting.
19:16
kudo/nom: e14544e | jonathan++ | / (2 files):
Bump NQP_REVISION and take advantage of add_object_to_cur_sc_past, which should save us the creation of around 12,000 PAST nodes while building the setting. Also makes the output shorter.
tadzik measures again 19:17
I just had a conversation with someone, who thought of Parrot as a reference Perl 6 implementation, and claimed it often hangs and segfaults :/ 19:26
flussence ...facepalm 19:27
tadzik what do you expect? On facebook? :P 19:28
Apparently someone has tagged my fake profile on my real picture from some party. People have no common sense at all 19:29
masak tadzik: I've often thought that the bandwidth out of the echo chamber is almost exactly one RTF triplet. we have Parrot *and* various Perl 6 implementations, so that's already too much information to export outside of the Perl 6 community.
tadzik: also, if you're on Facebook (which is in the business of selling your identity), don't expect any sympathy on being identified. ;) 19:30
tadzik masak: I have an "I'm a Horse" account, needed to use that to get an info on some party. Also, I sometimes use it to download some music notes which want me to "log in with facebook" 19:31
sorear masak: fwiw, I use a much more general definition of "memory leak" these days
masak: I think a memory leak is any bug-like thing that increases the asymptotic memory usage of a calculation 19:32
tadzik make 646.25s user 5.11s system 109% cpu 9:53.21 total
that's another serious speedup now 19:33
moritz what was it before any patches?
jnthn tadzik: What did we start out at today?
tadzik 2006 tadzik | make 1015.31s user 8.22s system 107% cpu 15:52.83 total
moritz rakudo: say (1015.31 - 646.25) / 1015.31
p6eval rakudo 068cad: OUTPUT«0.363494893185333␤»
tadzik I think the memory usage dropped as well, but it ended before I noticed, which is a good sign, isn't it :) 19:34
jnthn OK, so this got us about the same improvement as the boolification one earlier.
tadzik jnthn: how about I bring you a good Polish beer to our next meeting? :) 19:35
jnthn \o/
tadzik if that one was 15%, and now we have 35%, this one was even bigger it seems
jnthn Whoa. :)
tadzik jnthn: a few more commits and I'll even be able to have both Rakudo compilation _and_ web browser running :>
tadzik tries to catch the memory usage 19:36
jnthn yeah, I'd be interested to know what drop in memory usage has been.
tadzik It's at least 10% in here
well, 10% of my system memory
so like 60% instead of 70%
rechecking 19:37
masak sorear: interesting definition. I don't think I disagree offhand. 19:38
sorear: I read your reasoning about MMD with interest. while I agree with jnthn about needing a real-world use case before changing any spec, I'm intrigued by the possibility of simplification. 19:39
19:40 lue joined
lue hello world o/ 19:41
moritz well, I think it was a concious choice not to rely on the depth of inheritance hierarchies
because it's kinda an implementation detail if a class inherits from another directly or indirectly
tadzik 63% or something 19:42
rakudo: say (70 - 63) / 63
p6eval rakudo 068cad: OUTPUT«0.111111111111111␤»
tadzik ee
rakudo: say (70 - 63) / 70 19:43
p6eval rakudo 068cad: OUTPUT«0.1␤»
tadzik slaps tadzik
that wasn't too hard to calculate
lue feels the need to backlog
tadzik jnthn: about 10% memory usage drop then
lue: TL;DR: nom is now 35% faster :)
(at compiling the setting) 19:44
masak \o/
lue o ̮o 19:45
erm, I meant for a smily face :)
dalek kudo/nom: 2c0badb | jonathan++ | src/Perl6/SymbolTable.pm:
Generate less code (and less PAST nodes as a result) for parameter deserialization.
colomon "load_language" couldn't find a compiler module for the language 'perl5' -- any idea what what means when trying to install DBDI? 19:46
moritz language 'perl5' would be provided by blizkost
jnthn tadzik: There's another little one. I don't expect anything dramatic from that. 19:47
Oh, actually...it's about 500KB less PIR generated :) 19:48
moritz jnthn: have you looked into mls++'s diagnosis of MMD mem leaks?
jnthn moritz: Yeah 19:49
moritz: I was kinda waiting for him to appear so I could check in on the latest there.
tadzik tries it out
jnthn moritz: I understand what's happening, anyways.
OK, time to try and improve immediate-run compilation times, so we can spectest faster... 19:50
(fwiw, I expect the boolification improvements probably do help the spectests too)
masak rakudo: say "I am {qx[cd nom; git branch | grep ^*].substr(2).trim}, fear me!" 19:51
p6eval rakudo 068cad: OUTPUT«I am nom, fear me!␤»
flussence er... evalbot allows qx?
masak apparently.
moritz flussence: don't tell anybody :/
lue I'm going to start writing a big blog post, and part of it will list some of the compatibility-breaking changes from P5->P6. My list so far is at gist.github.com/1191675 . Any suggestions?
flussence k. 19:52
moritz nom doesn't have a safe mode :(
masak lue: Perl 5 is pretty Unicode-aware.
lue [not necessarily "breaking", but stuff that makes transition a bit interesting]
flussence try.rakudo has a safe mode - it stops working when you send it input :D
tadzik (:
flussence goes to fix it again... 19:53
lue Hm. I was under the impression it wasn't *that* good with unicode [good to know before I make myself look foolish :)]
masak lue: if you mention sigil invariance, be sure to mention how the nice advantages of the variance in Perl 5 also work with the invariance in Perl 6.
lue: Perl 5 is still better at unicode than Ruby, or Python, or Java, or (*snigger*) PHP.
lue: see tchrist's recent PDF on the matter. 19:54
moritz lue: p5 allows Unicode identifiers (under 'use utf8;'
)
masak lue: I like -- and look forward to -- the point about operator clarification.
flussence hey, it's not fair to compare feature support against a language that doesn't even implement the feature!
lue
.oO(*Everything* is miles better on the Unicode front than TεX and friends)
masak lue: of course, from a certain angle, that exact point is simply a foolhardy break with a tradition since at least C. 19:55
lue: TeX does utf-8 and has for quite some time.
moritz masak: but it doesn't support arbitrary codepoints
lue Well, typesetting *of* utf-8 is where I turn to XeLaTeX
masak moritz: nod.
sorear moritz: I never introduced the depth of inheritence hierarchies.
flussence huh, I imagined TeX would be good at text processing... 19:56
sorear colomon!!!
colomon sorear!
moritz sorear: but C# does, no?
sorear: I just wanted to stress that we don't want to steal that part
sorear moritz: no C# does not
moritz sorear: then we had quite some misunderstanding yesterday 19:57
colomon sorear: I've ordered the book with the Kahan article with the suggested algorithms for complex elementary functions.
sorear colomon: I left a comment on your blog
lue flussence: TeX hasn't gained any new features since version 3, which was, oh...1989 [from the quick search I ran] 19:58
colomon sorear: yes, saw it.
lue [and according to Knuth, it ain't getting any new features anymore. Ever.]
moritz that's ok as long as LaTeX evolves 19:59
tadzik make 635.86s user 5.15s system 107% cpu 9:54.96 total 20:00
colomon sorear++ # fixing sqrt
tadzik notmuch, but still nice
lue LaTeX 3 is supposed to fix that (as well as introduce commands better fit for modern desktop publishing needs), but it's been ~20 years in the making. 20:01
masak LaTeX... 3? really? 20:04
oh, Wikipedia says you're right. 20:05
sorear LaTeX is just a macro package, no?
lue I remember looking at it as one of the options for when I wanted Unicode typesetting [and read quite a bit about it]
sorear how is it possible for LaTeX to change TeX's handling of input byte encodings? 20:06
masak sorear: by being a preprocessor stage to TeX.
lue sorear: I'm a bit curious about that too. That's why I would prefer to see TeX itself typset utf-8. [Trying to make utf-8 work with the outdated system TeX uses has to be a nightmare] 20:07
sorear lue: look up "Omega"
iiuc it's a fork of TeX with Unicode support.
the TeX license lets you do whatever you want as long as you don't call the result TeX 20:08
lue Xe(La)TeX was the best choice I ever made [unicode support *and* ability to use TTF/OTF fonts!]
20:10 molaf left
lue what are the benefits of variance that still apply to P6 with its invariance? [/me still looking] 20:14
20:14 diegoviola joined
diegoviola hi 20:14
can perl6 be used right now? 20:15
tadzik lue: "No one official implementation", did you accidentally a word? :)
diegoviola: yes
perl6: say "yes"
diegoviola wow
moritz diegoviola: yes (though not for all use cases yet)
diegoviola nice
p6eval pugs, rakudo 2c0bad, niecza v9-8-gd3b0031: OUTPUT«yes␤»
diegoviola what about the libraries?
tadzik yapsi: say "yes"
diegoviola: see modules.perl6.org
p6eval yapsi: OUTPUT«Could not parse␤» 20:16
tadzik yapsi: say 1
diegoviola is the language spec completed or still in progress?
p6eval yapsi: OUTPUT«1␤»
tadzik fair enuogh, yapsi :)
moritz diegoviola: it's still in progress
lue tadzik: no I didn't
diegoviola ok thanks
moritz very much like the Java and C++ specs are in progress too
tadzik diegoviola: I don't find the changes in the spec really visible from the end-user perspective
lue: oh, okay 20:17
lue [although I do admit that's likely an uncommon use of English]
tadzik maybe it needs a comma
but I'm not a comma expert 20:18
lue Nah, then you'd have an extraneous comma. "There isn't an official implementation" would like be a better wording, I wrote it as "No one..." because it suited the bullet-point format better 20:19
20:19 Limbic_Region joined
lue erm, s/like// 20:19
tadzik I have a feeling that adjectives should be comma-separated in this particular case. But as I say, I'm not a comma expert 20:20
diegoviola perl6 has better support for OO than perl5? or perl6 needs something like moose? 20:21
lue Ah, I see where that "," would go now. I didn't think of it there because in my mind I didn't pause there :) But yes, a comma there might make more sense 20:22
jnthn rakudo: class Reply { has $.answer; method with($exp) { say "$.answer, $exp" } }; Reply.new(answer => "yes").with("you can do stuff like this") 20:24
p6eval rakudo 2c0bad: OUTPUT«yes, you can do stuff like this␤»
jnthn diegoviola: ^^ better support for OO :)
diegoviola nice
20:26 thou left
dalek p: c1176fb | jonathan++ | src/HLL/SerializationContextBuilder.pm:
Expose whether we're in pre-comp mode or not.
20:32
p: abbaf88 | jonathan++ | src/NQP/SymbolTable.pm:
Do less work when we're in immediate-run mode. This doesn't build up PAST trees that we're only going to end up throwing away (granted we threw them away quickly, but still...)
diegoviola perl6 wont be compatible with the CPAN libraries from perl5 right? 20:33
libs have to be written from scratch?
for perl6 20:34
masak diegoviola: there's a way to hook Perl 5 into Parrot/Rakudo. it's called blizkost.
diegoviola nice 20:35
what is rakudo/
?
20:35 araujo left
diegoviola Rakudo, a compiler based on Parrot. 20:35
masak it's a Perl 6 implementation on Parrot.
rakudo: say "The winning lottery numbers this week are: ", (1..50).pick(6)
p6eval rakudo 2c0bad: OUTPUT«The winning lottery numbers this week are: 33 42 48 49 37 15␤»
diegoviola very nice 20:37
ty
masak rakudo: say "你的未来是充满不确定性和薄雾。"
p6eval rakudo 2c0bad: OUTPUT«你的未来是充满不确定性和薄雾。␤»
donri rakudo: say (^5).pick(10) 20:42
p6eval rakudo 2c0bad: OUTPUT«4 1 0 2 3␤»
masak rakudo: say (^2i).pick(-7)
p6eval rakudo 2c0bad: OUTPUT«Method 'Num' not found for invocant of class 'Real'␤ in method Num at src/gen/CORE.setting:5163␤ in method reify at src/gen/CORE.setting:3410␤ in method reify at src/gen/CORE.setting:3502␤ in method gimme at src/gen/CORE.setting:3839␤ in method elems at src/ge…
tadzik make spectest 1620.55s user 69.73s system 99% cpu 28:22.93 total 20:43
I don't remember what was it before though :0
:)
jnthn ah :)
tadzik while you're optimizing Rakudo, I'm optimizing my household :) 20:44
(for the walking distance between stuff)
sorear diegoviola: Eventually we plan to have CPAN available, but the details of how haven't been fully worked out yet.
tadzik funnier than it sounds
masak rakudo: say e.WHAT 20:47
p6eval rakudo 2c0bad: OUTPUT«Num()␤»
masak rakudo: say Real.new 20:48
p6eval rakudo 2c0bad: OUTPUT«Real<57136064>␤»
masak rakudo: say Real.new.Num 20:49
p6eval rakudo 2c0bad: OUTPUT«Method 'Num' not found for invocant of class 'Real'␤ in <anon> at /tmp/Ur7jdjMqLL:1␤ in <anon> at /tmp/Ur7jdjMqLL:1␤␤»
diegoviola sorear: nice 20:50
sorear niecza: say "Hi"
p6eval niecza v9-8-gd3b0031: OUTPUT«Hi␤»
colomon ng: say "I live!" 20:51
jnthn Apparently not... :)
masak 'night, #Perl6 20:55
20:55 masak left
donri does it make sense to do marshalling at the parrot level (P6Opaque or what are they called?)? 21:01
21:02 benabik joined
dalek kudo/nom: 1780b11 | jonathan++ | tools/build/NQP_REVISION:
Get latest NQP so we can use the extra info it has to be smarter about code-gen.
21:04
kudo/nom: 8dfd5e2 | jonathan++ | src/Perl6/SymbolTable.pm:
Start to be smarter about pre-compilation mode vs. immediate run mode, so we generate less PAST that we throw away. Should improve non-precomp case somewhat (e.g. so we get faster spectest runs). Also marks out code that we'll be able to throw away when we have full deserialization.
kudo/nom: ea5ff6b | jonathan++ | src/Perl6/SymbolTable.pm:
Refactor parameter object building and deserialization code-gen so we can avoid building more PAST in pre-comp mode.
kudo/nom: 0635961 | jonathan++ | src/Perl6/SymbolTable.pm:
Be smarter about compilation of code objects. Should be a (little) win both for setting compilation and for immediate-run compilation.
sorear donri: Insufficient context to understand question. 21:06
diegoviola: btw, welcome
diegoviola ty 21:07
jnthn tadzik: May be another little win there. Maybe.
donri mainly pondering the potential of a perl6/parrot version of pickle in python
21:07 araujo joined
donri (duno the perl5 version) 21:07
diegoviola parrot is very interesting, it seems like it's a virtual machine that will host other languages too?
similar to jvm or clr?
sorear donri: we spell it Storable
diegoviola or rubinius
tadzik jnthn: trying
sorear diegoviola: that's the propaganda, but a lot of people here don't completely buy it
diegoviola sorear: oh 21:08
sorear: interesting nonetheless :)
21:08 envi left
sorear diegoviola: parrot has been de facto limited to Rakudo for ~10 years now. it would be lovely if this could change, but I am not hopeful. 21:08
diegoviola sorear: wow that's a very long time!
jnthn heh, 10 years is longer than Rakudo has existed :)
tadzik (: 21:09
sorear jnthn: started in 2008, ne/
jnthn: I mean 2003
tadzik interoperability between Perl6 and Ruby worked once upon a time
jnthn sorear: I don't think pmichaud++ started working on a Perl 6 on Parrot compiler until...2005 or so?
benabik Lots of other parrot languages come and go, but they tend to be one person projects and not last terribly long. 21:10
donri "any" vm can run "any" language, it's just an intricate part of parrot's design
"from the ground up"
sorear what benabik said.
most parrot languages tend to stop working three months after the only developer moves on
plobsing there are some exceptions. lua is remarkably stable.
sorear nobody cares enough to keep them running
ditto interoperability. afaict only Tene actually cares about that. 21:11
donri hm i talked to someone who was doing python on parrot as as gsoc i think
sorear is wearing the cynic-hat atm
benabik 2011 GSoC projects included Javascript and Python.
tadzik sorear: cared *
donri but avoiding pct i think, using python's own ast parser instead and generating pir from that i think
sorear donri: gsoc is over, python on parrot will be dead by Christmas, 90-95% certain.
plobsing interop works at a shallow level. interop at a deep level might not be worth the cost 21:12
diegoviola I'm currently developing with Ruby, but I'm interested in Perl as well
it seems like ruby has many things in common with perl and vice versa
sorear diegoviola: ruby was created to compete with perl
donri bitbucket.org/lucian1900/puffin/overview
diegoviola sorear: oh 21:13
plobsing diegoviola: most dynamic languages are superficially similar. the devil is in the details. most have their own "one true object model". 21:14
diegoviola plobsing: noticed. thanks 21:15
donri to totally start a war, my idea of ruby is it's the worst parts of perl and python with none of the good parts ;)
diegoviola i was trying to learn about python too but i disagree with their philosophy of "There should be one-- and preferably only one --obvious way to do it." -- I prefer the Perl way
donri note that it's only saying "one *obvious* way" 21:16
python is rather pragmatic about solving practical problems
plobsing donri: and decorators are obvious?
21:17 masonkramer joined
lue I used to use Python until its lack of binding(a.k.a. pointers) and switch statements made me switch (I do like Perl philosophy better than Python) 21:17
donri duno, i'm so used to them i'm probably biased
lue: binding? 21:18
lue rakudo: my $a = 3; my $b := $a; $b = 5; say $a;
donri switch is easy: case = lambda x: y == x; if case(z): ...
p6eval rakudo 2c0bad: OUTPUT«5␤»
diegoviola I see programming as an art and the different way of solving problems is what really makes me curious about programming, if there was only 1 obvious way then programming would be boring to me
tadzik jnthn: no win on settings compilation
sorear diegoviola: btw, I'm working on Perl 6 on the CLR. 21:19
tadzik or 5 seconds loss, but it may be nothing
diegoviola sorear: cool
lue I stopped when I needed to use a switch statement for 0x100 possible values, but there was no switch statement o.o
donri diegoviola: being boring is one of python's strengths ;) jokingly - it's often not boring at all
diegoviola donri: :)
sorear lue: you should have used an array of function objects 21:20
diegoviola donri: i'm sure it isn't
donri: and i respect a lot of the python philosophies and their people
donri ruby folk love to do insane metaprogrammatic magic but i think python is actually more capable in that regard
diegoviola donri: they're good ones, the philosophy
donri: how to?
jnthn tadzik: yeah, I didn't expect much of one.
tadzik: 5 seconds is likely noise.
tadzik I think so 21:21
donri (we just prefer to default to predictable APIs over kitty-level cuteness, when it isn't necessary)
tadzik make 617.03s user 4.91s system 111% cpu 9:19.77 total
jnthn: timing the spectest now
diegoviola donri: i don't like metaprogramming that much really
donri i probably like it a little too much for a pythonista
lue This was in the days when I was a lone, isolated programmer. I would've never thought of that! [Lack of switch was just the straw that broke the camel---snake's back]
diegoviola donri: i find metaprogramming can be hard to debug and more error prone 21:22
donri in deed
it can also make *some* code easier to write and read
used sparingly and wisely and with proper techniques (e.g. python has full support for parsing itself into ast and compiling asts to executable code, unlike the string programming used in rubyland) 21:23
diegoviola interesting
donri of course, perl6 beats anyone at anything in these regards :) 21:24
jnthn tadzik: d'oh, I busted the delegation test...think I see why :)
tadzik jnthn: I'll just continue :)
jnthn tadzik: sure
donri (i would expect, anyway, i don't really know and particularly i don't know how much is actually implemented)
tadzik didn't get there yet
donri one thing i like in python, and perl6 seems to do this too, is it encourages "declarative" APIs over imperative ones (by contrast, DSLs in ruby tend to be imperative-esque) 21:26
diegoviola so I don't understand much this "There should be one-- and preferably only one --obvious way to do it." -- Does Python wants to limit my choices as a programmer?
donri ..for example those dreaded decorators ;)
tadzik diegoviola: you can read it that way
diegoviola: you can also read it as "everyone writes stuff similarly, so when you sit to sb else's code, it's more-less like sitting to yours"
donri diegoviola: it's more of a manifesto of philosophy than any limitation in the language 21:27
tadzik I've heard people thinking that of Java
diegoviola interesting, thanks
tadzik YMMV 21:28
21:28 y3llow_ joined, pothos_ joined
donri it's also about consistency, for example python's support for "properties" - setters and getters with the same syntax as plain public attributes 21:28
the "obvious" way to "set a property of an object" is to set an attribute on it, not to call a setSomeThing() method 21:29
i forgot what the perl6 version is?
dalek kudo/nom: 5aac384 | jonathan++ | src/Perl6/SymbolTable.pm:
Fix bug introduced in parameter compilation improvements.
21:30
21:30 pothos left, pothos_ is now known as pothos
diegoviola if it's for consistency sake then that's not bad 21:30
21:30 y3llow left, y3llow_ is now known as y3llow
sorear donri: don't get me started on Perl 6 and "set a property of an obect". IMO the current way this is handled is insane. 21:37
donri ok :D 21:38
tadzik jnthn: I get less 5 skipped subtests: 6 okay on t/spec/S12-enums/basic.rakudo
Dubious, test returned 1 (wstat 256, 0x100) too
but not the blead
donri in python it is actually done via operator overloading of the attribute "operations"
and a standard "protocol" implemented by the standard top-level "object" 21:39
jnthn tadzik: "not the blead"?
tadzik jnthn: not the latest git pull
donri ruby special-cases methods named with a suffix equal sign
jnthn tadzik: ah, probably related
tadzik: It runs to completion here.
tadzik okay 21:40
donri hey does perl6 !private methods permit a public one with the same name (minus the exclamation)? 21:41
jnthn rakudo: class Foo { method m() { }; method !m() { } } 21:42
p6eval rakudo 2c0bad: ( no output )
jnthn It appears so :)
(That's the result I expected...) 21:43
They're kinda separate namespaces, and there's no ambiguity (e.g. you use a different calling syntax)
donri yea me too, just checking
tadzik jnthn: make spectest 1742.80s user 80.74s system 97% cpu 31:18.17 total 21:51
looks like a slowdown :/
jnthn Hm. :S
That's...surprising. 21:52
Given we should be building a bunch less PAST
tadzik 3 minutes. Noise?
hmm
jnthn Unlikely. 21:53
I mean, it's *possible* the cost of the check if higher than I expected.
But that'd be odd also.
tadzik hrm
maybe I was doing more things in the background this time. Last run the laptop was closed and I was moving furniture around 21:55
21:58 zby_home___ joined 21:59 zby_home left 22:10 zby_home___ left
donri I wonder if "now - now" is a reliable way to measure rakudo performance over time 22:23
rakudo: say now - now 22:24
p6eval rakudo 5aac38: OUTPUT«-0.0507454535658835␤»
plobsing perl6: say now - now
p6eval rakudo 5aac38: OUTPUT«-0.0408330202861197␤»
..niecza v9-8-gd3b0031: OUTPUT«Unhandled exception: Cannot use value like Instant as a number␤ at line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niecza/lib/CORE.setting line 43 (CORE Any.Numeric @ 4) ␤ at line 0 (ExitRunloop @ 0) ␤ at /tmp/_wIe5iKSVU line 1 (MAIN mainline @ 2) ␤ at /ho…
..pugs: OUTPUT«*** No such subroutine: "&now"␤ at /tmp/PZrcry8PQO line 1, column 5 - line 2, column 1␤»
tadzik b: now - now 22:25
p6eval b 1b7dd1: ( no output )
tadzik b: say now - now
p6eval b 1b7dd1: OUTPUT«-0.31058495821727␤»
plobsing b?
tadzik tee-hee
donri s02 says instant-instant is supposed to yield a durationm
tadzik plobsing: aka rakudo master
alpha: say now - now
p6eval alpha : OUTPUT«Could not find non-existent sub now␤in Main (file src/gen_setting.pm, line 324)␤»
tadzik alpha, if you couldn't find it, how can you tell it's non-existent? 22:26
22:27 finanalyst left, finanalyst joined
tadzik jnthn: make spectest 1831.57s user 80.22s system 96% cpu 33:01.72 total 22:27
again. Not a noise then
jnthn No, seems not. Hm 22:28
tadzik that also means Linux did a pretty god job on the previous run, when I was converting djvu to pdf and browsing reddit :)
or just the cpu scheduler 22:29
donri rakudo: say (now - now).perl # so it is a duration, just pretends to be a real
p6eval rakudo 5aac38: OUTPUT«Duration.new(-33192/818525)␤»
jnthn My profiler seems to think that when we're compiling the setting, we spend a load of time in gc_gms_is_pmc_ptr
This essentially boils down to chasing a linked list of arenas. 22:30
tadzik ouch
jnthn It's actually the arena of PMC headers
donri why isn't Whatever a constant/singleton
jnthn Each of those holds about 200 PMCs
er, PMC headers, that is.
Well, on 64 bit I guess it's about 100 PMCs. 22:31
And we do this every time we trace a memory block. 22:32
For each pointer we find in it.
(potential pointer) 22:33
tadzik what is that PMC headers area? All the PMCs available? 22:35
donri rakudo: (^100).pretty 22:36
p6eval rakudo 5aac38: OUTPUT«Method 'pretty' not found for invocant of class 'Range'␤ in <anon> at /tmp/C_Tsg69OWa:1␤ in <anon> at /tmp/C_Tsg69OWa:1␤␤»
tadzik rakudo: say (^100).gist
p6eval rakudo 5aac38: OUTPUT«0..^100␤»
donri NYI or spec outdated?
tadzik may be a fossil 22:38
time to sleep, see you tomorrow 22:39
22:44 finanalyst left 22:57 PacoLinux_ joined 23:13 donri left
jnthn sleep...that's a good idea & 23:14
sorear niecza: say now.to-posix[0] - now.to-posix[0] 23:19
p6eval niecza v9-8-gd3b0031: OUTPUT«-0.00159597396850586␤»
sorear niecza: say times[0] - times[0]
p6eval niecza v9-8-gd3b0031: OUTPUT«0␤»
sorear \o/
23:26 birdwindupbird left
jlaire niecza: my @xs = map { now.to-posix[0] }, 1 .. 8; say @xs[1..7] Z- @xs[0..6] 23:27
p6eval niecza v9-8-gd3b0031: OUTPUT«0.00141811370849609 9.20295715332031E-05 5.88893890380859E-05 6.50882720947266E-05 7.20024108886719E-05 6.98566436767578E-05 0.000208139419555664␤» 23:28
23:28 woosley joined 23:35 mj41 left 23:36 Patterner left 23:40 Psyche^ joined, Psyche^ is now known as Patterner 23:48 woosley left, woosley joined 23:51 dual left 23:55 cexsum left 23:58 woosley left