»ö« 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 nowin 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
|