»ö« 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:03
lumi__ left
00:04
lumi__ joined
|
|||
[Coke] | pmichaud: anything else I can do to make isRakudoFastYet happen? | 00:04 | |
pmichaud | [Coke]: undoubtedly yes. Let me review what you have thus far tomorrow morning and I'll outline something then. | 00:13 | |
right now I'm pretty exhausted from being up much of the night last night | |||
00:20
risou_awy is now known as risou
|
|||
jnthn | sleep tiem - night & | 00:21 | |
diakopter | n | ||
00:26
mberends left,
lumi__ left,
lumi__ joined
00:27
daniel-s joined
00:35
benabik joined,
araujo joined
00:38
risou is now known as risou_awy
00:40
lumi__ left,
lichtkind joined
00:41
lumi__ joined
|
|||
lichtkind | thank you all | 00:43 | |
00:49
aindilis joined
00:53
lumi__ left
00:54
lumi__ joined
01:05
eternaleye joined
01:10
lumi__ left
01:11
lumi__ joined
|
|||
lichtkind | rakudo: my %a = 1 => 1, 2=>2, 3=>3; %a.delete(1,2); say %a | 01:11 | |
p6eval | rakudo db4495: OUTPUT«Too many positional parameters passed; got 3 but expected 2 in method delete at src/gen/CORE.setting:4446 in <anon> at /tmp/oZumGKOIcJ:1 in <anon> at /tmp/oZumGKOIcJ:1» | ||
01:12
uasi joined
01:14
dayangkun joined
01:15
JimmyZ joined
01:16
lumi__ left
01:17
lumi__ joined
01:26
jevin left
01:27
jevin joined
01:31
lumi__ left
|
|||
lichtkind | i thought say ~ %a should have same outout as %a | 01:32 | |
01:33
lumi__ joined
01:35
lichtkind left
01:40
wolfman2000 left
01:45
lumi__ left,
lumi__ joined
01:53
woosley joined
01:57
DarthGandalf left,
dayangkun_ joined
01:58
whiteknight left
02:01
DarthGandalf joined,
dayangkun left,
Trashlord joined
02:02
lumi__ left
02:03
lumi__ joined
02:07
Yappoko___ left,
Yappoko___ joined
|
|||
[Coke] | pmichaud: no worries. I'm wiped too. Long $DAYJOB week. | 02:13 | |
02:18
lumi__ left,
lumi__ joined
02:23
dayangkun__ joined,
dayangkun__ left
02:27
dayangkun_ left
02:28
lumi__ left
02:29
lumi__ joined
02:36
tdignan left,
tdignan joined
02:38
lue left
02:41
lumi__ left
02:42
lumi__ joined
02:51
envi joined
03:17
lue joined
03:23
Su-Shee_ joined
03:27
Su-Shee left,
molaf joined
03:56
wolfman2000 joined
04:02
birdwindupbird joined
04:09
uasi left
04:11
sorear joined
04:15
lumi__ left
04:17
lumi__ joined
|
|||
[Coke] | make test in nqp/ build dir on rakudo-nom has todo passes as well as failures. | 04:23 | |
04:24
agentzh joined
|
|||
[Coke] | so if one did want to be able to run perl6 on, say, JS, would making the new nqp target JS be the way to go? | 04:24 | |
(to start with, anyway) | |||
04:25
Trashlord left
04:26
SHODAN joined
04:27
Trashlord joined,
lumi__ left
04:28
lumi__ joined
|
|||
[Coke] | IWBNI nqp had a hint about what the dozen directories under src/ were for. | 04:30 | |
04:37
Shozan joined
|
|||
dalek | kudo/nom: 433a731 | Coke++ | t/spectest.data: track failure mode |
04:37 | |
04:37
SHODAN left
04:40
abercrombie left
04:41
uasi joined
04:43
molaf left
04:44
_jaldhar is now known as jaldhar
04:48
Shozan left
04:49
lumi__ left
04:50
lumi__ joined
|
|||
dalek | kudo/nom: 3053e41 | pmichaud++ | docs/announce/2011.0 (3 files): Add announcements from master into nom branch. |
04:51 | |
04:57
wolfman2000 left
|
|||
tadzik | [Coke]: also, do you have the roles-related commits pulled in? | 04:58 | |
pmichaud | the 'nom' branch is now the default. | 05:00 | |
messages sent to p6c, parrot-dev, and rakudo.org | |||
the 'master' branch is now 'ng' | |||
dalek | kudo/nom: 15813b2 | tadzik++ | t/spectest.data: Fix a couple of failure reasons in spectest.data |
||
[Coke] | tadzik: I just ran that, last commit before mine was jnthn's hours ago. | ||
tadzik | pmichaud++ | 05:01 | |
pmichaud | I need sleep -- will check on things in the morning here. | ||
tadzik | [Coke]: I know, but I got different fails in parametric roles | ||
05:01
lumi__ left
|
|||
[Coke] | tadzik: is there a way to programatically distinguish warnings? I was basically blacklisting them as they came up. | 05:02 | |
tadzik | [Coke]: Well, maybe you could notice that the next line is indented (is a backtrace) if it's an error, warnings seem not to backtrace | ||
05:02
lumi__ joined
|
|||
tadzik | that's the only thing I can think of | 05:02 | |
awful. I woke up too early | 05:03 | ||
[Coke] | k. you and I should probably polish up that script and get it checked in so we're not fighting each other on udpates. | 05:05 | |
tadzik | no worries, I just fixed that few I thought were weird | 05:06 | |
[Coke] | yes, but when I run the script again, I'll fix them back. ;) | 05:09 | |
tadzik | (: | ||
are you sure you are on nom HEAD? Those parametric roles warnings seemed odd | 05:10 | ||
that's what last jnthn's commits fixed | |||
going to get some moar sleep & | 05:11 | ||
moritz | good morning | ||
05:11
lumi__ left
05:12
lumi__ joined
|
|||
[Coke] | perhaps I missed an update. | 05:14 | |
it is 3 hours past my bedtime. ;) | |||
05:14
sftp left
05:16
jevin left
05:20
jevin joined
05:25
lumi__ left,
lumi__ joined
|
|||
tadzik | good moritz | 05:52 | |
05:53
chromatic left
05:58
lumi__ left,
lumi__ joined
|
|||
moritz | wow, we had an earthquake in Germany | 06:01 | |
though no real damage, it seems | |||
strength 4.4 (insert laughter from the US and far east here) | |||
TimToady | well, something has to poke the Alps up in the air | ||
06:04
orafu left,
JimmyZ left,
OuLouFu joined
06:05
OuLouFu is now known as orafu,
packetknife joined
|
|||
moritz | iirc the alps erode faster than they are being pushed | 06:07 | |
TimToady | just has to be dynamic :) | 06:08 | |
moritz | @*ALPS.push: ... :-) | ||
Patterner | throw people; | 06:10 | |
TimToady | De.roll | 06:11 | |
06:15
lumi__ left
06:16
lumi__ joined
06:27
wtw joined,
Su-Shee_ is now known as Su-Shee
06:29
JimmyZ joined
06:31
koban` joined,
koban` left
06:32
satyavvd joined,
lumi__ left,
lumi__ joined
06:36
benabik_ joined,
satyavvd left
06:39
benabik left,
benabik_ is now known as benabik
06:45
lumi__ left,
lumi__ joined
06:56
JimmyZ__ joined
06:58
JimmyZ left
06:59
mj41 joined
07:00
JimmyZ__ left
07:02
donri joined
07:03
lumi__ left
07:04
lumi__ joined,
JimmyZ joined
07:06
JimmyZ_ joined
07:09
JimmyZ left,
JimmyZ_ is now known as JimmyZ
07:17
wamba joined
07:18
masak joined
|
|||
masak | bon matin #perl6 | 07:18 | |
Perl 6 Day! \o/ | |||
07:19
JimmyZ_ joined
07:21
JimmyZ left,
JimmyZ_ is now known as JimmyZ
|
|||
pnu | what would be the missing parts to make rakudo (completely) self-hosting (i.e. everything would be written in perl6)? i'm not actually suggesting that - just trying to understand the systems' architecture and need some starting points.. | 07:21 | |
07:21
lumi__ left
07:22
lumi__ joined
|
|||
masak | pnu: interesting question. | 07:23 | |
pnu: nqp is a separate language, but enough of a subset to Perl 6 that maybe it still counts as "self-hosting"... | 07:24 | ||
src/binder/ and src/pmc/ and src/ops/ contain a bunch of C files. or sometimes Parrot-specific files that preprocess down to C. | 07:27 | ||
pnu | is nqp self-hosting then? | 07:28 | |
masak | yes. | ||
the rest of the Rakudo source tree, I think, is either Perl 6 or nqp. | |||
07:29
woosley left,
woosley joined
|
|||
pnu | i quess a common runtime is important for language interop., but i wouldn't be too conserned about anything else except perl5 interop. at this point.. or what do you people think? | 07:30 | |
masak | it was discussed yesterday. | 07:31 | |
chromatic had a couple good points. | |||
pnu | oh, i'll check the logs | 07:32 | |
masak | irclog.perlgeek.de/perl6/2011-09-08#i_4397189 | ||
07:32
woosley1 joined
07:34
woosley left
07:35
lumi__ left
07:36
lumi__ joined
|
|||
pnu | masak: in addition to those src files, i guess that actually running a program needs parrot.. so just rewriting those wouldn't be enough? | 07:36 | |
i mean there needs to be some runtime environment anyway. | 07:37 | ||
masak | right. | 07:38 | |
pnu | so.. it would require implementing parrot in perl6? ;-) | ||
(or some other vm) | 07:39 | ||
07:39
woosley1 left
07:40
wamba left
|
|||
TiMBuS | well, not really? | 07:41 | |
masak | pnu: if the goal is "everything in Perl 6" then, yes, I guess. | ||
TiMBuS | the garbage collector yeah, but thats about it.. | ||
masak | that's not about it :) | 07:42 | |
something has to manage control flow. exceptions and gather blocks and stuff. | |||
something has to map objects to memory. | |||
and handle method dispatch. | |||
(efficiently!) | |||
07:43
packetknife left
|
|||
TiMBuS | isnt nom doing most of that, and thats in perl6 | 07:43 | |
masak | that's a good question. 6model takes over some of those things, yes. | ||
07:44
JimmyZ_ joined,
lumi__ left
|
|||
TiMBuS | i didnt mean it was easy, i just meant you dont need what you'd define as a VM. then again a VM these days is hard to define | 07:44 | |
JimmyZ_ | What? Perl 6 day? | 07:45 | |
anything important today? | |||
TiMBuS | talk like a parrot day | ||
07:45
lumi__ joined
07:46
JimmyZ left,
JimmyZ_ is now known as JimmyZ
|
|||
masak | JimmyZ: in $dayjob, I get to pick about a day a week for Perl 6 work. | 07:46 | |
tadzik | 3 day weekend! | ||
TiMBuS | haha | ||
JimmyZ | that's great | ||
masak | so I've got the whole day free for whatever I want to do to advance the state of Perl 6! \o/ | ||
JimmyZ | masak: macro ! | 07:47 | |
:) | |||
masak | JimmyZ: yes :) | ||
TiMBuS | threads! | ||
masak | no, surely not. | ||
TiMBuS | :[ | ||
JimmyZ | ;) | ||
masak | les patches sont welcome. | ||
pnu | where to look for more info about this 6model? | ||
masak | pnu: jnthn's blog about it. | 07:48 | |
pnu: 6guts.wordpress.com/ | |||
07:48
Su-Shee left,
JimmyZ_ joined
|
|||
pnu | is there anyone actively working with perl5 interop.? (sorry, haven't check yesterdays backlog yet) | 07:50 | |
07:51
im2ee joined
|
|||
masak | there's blizkost. | 07:51 | |
im2ee | Hey ! :) | ||
masak | github.com/jnthn/blizkost | ||
im2ee: hi! :) | |||
07:51
JimmyZ left,
JimmyZ_ is now known as JimmyZ
|
|||
masak | rakudo: say "Hello im{ 6 * 7 - 4 * 10 }ee!" | 07:51 | |
p6eval | rakudo 15813b: OUTPUT«Hello im2ee!» | 07:52 | |
07:53
sivoais left,
sivoais joined
|
|||
tadzik | hey im2ee | 07:53 | |
bbkr | Good.morning() #perl6 | 07:54 | |
07:55
lumi__ left
07:56
lumi__ joined
|
|||
masak | bbkr: .good given $morning; | 07:56 | |
07:57
JimmyZ_ joined
|
|||
pnu | ok thanks masak++ | 07:57 | |
07:59
JimmyZ left,
JimmyZ_ is now known as JimmyZ
|
|||
im2ee | :) | 08:00 | |
08:02
woosley joined
|
|||
masak | oh! | 08:02 | |
08:02
packetknife joined
|
|||
masak | my grant application is up: news.perlfoundation.org/2011/09/hag...mplem.html | 08:02 | |
im2ee | I have a request... Can you show me your blogs? :) I want to create own blog and i want to look on others, to get some inspiration. :) | 08:04 | |
masak | im2ee: Google for "planet Perl 6" and click on the links on the right. | ||
im2ee | I know planet perl six :) | 08:05 | |
tadzik showed me this. :) | |||
masak, there are much blogs .. i didn't see it before! Thank You! :) | 08:06 | ||
08:06
donri_ joined,
donri_ left
08:07
lumi__ left
08:08
lumi__ joined
08:12
JimmyZ left,
JimmyZ joined
|
|||
masak | im2ee: in particular, my blog template is very simple: github.com/masak/psyde/blob/master.../post.html | 08:12 | |
simplicity++ | 08:13 | ||
08:13
wamba joined,
woosley left
|
|||
masak | yay, they even got the <code> things right in my grant application. :) | 08:15 | |
08:17
SHODAN joined,
lichtkind joined,
wamba left
|
|||
lichtkind | rakudo: say 5 | 08:18 | |
p6eval | rakudo 15813b: OUTPUT«5» | ||
masak | hail Eris. | 08:20 | |
moritz suddenly gets a very good idea for an April Fool's prank | |||
08:20
renormalist joined,
JimmyZ_ joined
|
|||
masak | moritz: pretending that Perl and Python are uniting their forces and merging into one single, horribly inconsistent and ugly language? :P | 08:21 | |
moritz | masak: not quite that elaborate | 08:22 | |
08:22
lumi__ left
|
|||
moritz | masak: I thought of Perl and Ruby this time :-) | 08:22 | |
08:22
JimmyZ left
|
|||
masak | :P | 08:22 | |
08:22
JimmyZ_ is now known as JimmyZ
|
|||
masak | (and then thinking "hey, that's a silly idea, but language interop is nice" and going off to create a virtual machine with the same name as the made-up language...) | 08:22 | |
08:23
lumi__ joined,
packetknife left,
satyavvd joined,
alvis_ joined
08:28
wamba joined
|
|||
jnthn | mornin' | 08:32 | |
08:33
lumi__ left,
daxim joined
|
|||
masak | jnthn: good moritz | 08:33 | |
masak realizes that Eiffel has an ANY class | 08:34 | ||
jnthn | Does it have a TOWER class? | ||
JimmyZ just saw Hague Grant Application: Implementation of Macros | |||
08:34
lumi__ joined
|
|||
masak | yes, news.perlfoundation.org/2011/09/hag...mplem.html is up. | 08:35 | |
TPF will be happy to read your comments about whether I should do this grant or not. | 08:36 | ||
JimmyZ doesn't like there is js script from twitter, it blocked me | 08:37 | ||
08:38
M_o_C joined
|
|||
JimmyZ can't open news.perlfoundation.org because of the twitter js srcript :( | 08:38 | ||
masak | JimmyZ: can't you turn of js? | 08:39 | |
off* | |||
moritz | installing noscript would be my first action in an environment where js had such a bad effct | ||
JimmyZ installs noscript | 08:40 | ||
masak | noscript++ # the only safe option | ||
moritz | www.perlmonks.org/?node_id=924178 woah. A case where a seemingly lazy poster actually thanked me for an RTFM answer | ||
masak | moritz++ # helping people help themselves | 08:42 | |
today's gem from Ward's Wiki: 'I like to create objects to "localize design decisions", not to "hide information".' | 08:45 | ||
if only there was a way to ++ that whole phrase. | |||
objects as concentrations of some specific design consideration. | |||
08:45
lichtkind_ joined
08:47
lichtkind left,
lichtkind_ is now known as lichtkind
|
|||
masak | it's not news at all, but the discussions about Sagas have made me realize that *anything* is up for becoming a class, even abstract, intangible concerns that generally don't look like a class. | 08:47 | |
a Saga is a cross-cutting concern capturing the lifetime of some process. | 08:48 | ||
moritz | example for such a class? | ||
lichtkind sat in ingys talk about lang interop called acmeism | |||
snarkyboojum | how far did sorear get when playing with macros a while back? | 08:49 | |
moritz | snarkyboojum: you mean the rakudo branch? | 08:50 | |
s/branch/fork/? | |||
I think he had unparameterized macros in term position | |||
snarkyboojum | moritz: not sure :) | ||
masak | moritz: the classical e-commerce example for a saga is one that makes sure that an order either gets paid for or doesn't get delivered. the challenge is that various subsystems (sales, billing, inventory) advance their states irrespective of each other. | ||
I have unparameterized macros in term position. | 08:51 | ||
I was not aware of sorear's attempts. | |||
08:51
wamba left
|
|||
moritz | I'm quite sure you were | 08:51 | |
:-) | |||
masak | huh/ | ||
huh. | |||
I've completely forgotten about it, at least. | |||
lichtkind | is >>++ gone? | ||
masak | lichtkind: no. | 08:52 | |
08:52
lumi__ left
|
|||
masak | lichtkind: when you ask such questions, I get concerned. what sources do you have? :) | 08:52 | |
snarkyboojum | I remember him getting something going about 12-18 months ago, but no details :) | ||
08:52
lumi__ joined
|
|||
masak | lichtkind: getting rid of >>++ hasn't even been *discussed*. | 08:53 | |
lichtkind | masak: my source it that nom doesnt do it | ||
masak | rakudo: my @a = 1, 2, 3; @a>>++; say @a | ||
p6eval | rakudo 15813b: OUTPUT«2 3 4» | ||
masak | lichtkind: ditch your source. it sucks. | ||
lichtkind | masak: i tell that jnthn :) | 08:54 | |
moritz | masak: github.com/sorear/rakudo/tree/topic/macros | ||
jnthn | what, nom just did it... :) | ||
masak | jnthn: why you tell lichtkind lies? :) | ||
moritz: thanks, looking. | 08:55 | ||
snarkyboojum | also moritz's lovely irc log shows some 4 pages of decent reading on the topic (sorear/macro) :D | ||
masak | ooh | ||
moritz | snarkyboojum: that's what I also searched for :-) | ||
jnthn | :P | ||
lichtkind | masak: thanks i used slightly different syntax which didnt worked | 08:56 | |
jnthn | Correct syntax does tend to help ;) | ||
lichtkind | what an enlightenment | 08:57 | |
masak | lichtkind: bet you put a space after @a and before >>++ | ||
jnthn figures coffee would help too, and goes to make some :) | |||
masak | lichtkind: *that* changed, but not recently. like, three years ago. | ||
moritz | masak: irclog.perlgeek.de/perl6/2010-05-06#i_2299141 you even discussed macros with sorear++ back then | ||
masak | moritz: sounds like something I would do, yes :P | 08:58 | |
lichtkind | masak: not only that i apllied it directly to (1..5) | ||
masak | lichtkind: that wouldn't give you a parse error, but a runtime error. | ||
moritz | masak: I was a bit surprised you didn't mention that experiment in your grant proposal, but assumed you had good reasons | ||
(forgetting about is also a good reason :-) | 08:59 | ||
masak | lichtkind: from that you still shouldn't conclude that >>++ doesn't exist. | ||
moritz: yes :/ | |||
masak suddenly starts remembering | |||
whoa. | |||
09:00
wamba joined
|
|||
snarkyboojum | moritz++ #irc logging and stuff :D | 09:01 | |
masak | especially stuff ;) | 09:03 | |
09:03
lumi__ left
09:04
lumi__ joined
|
|||
masak | sorear: sorry for forgetting your efforts from last year in my grant application! I will definitely peruse them now, though, to contrast and compare with what I have so far in my branch. | 09:05 | |
09:06
replore_ joined,
JimmyZ_ joined
09:08
JimmyZ left,
JimmyZ_ is now known as JimmyZ
09:16
wamba left
|
|||
moritz | how important do people find pir:: and nqp:: being available in p6eval? | 09:17 | |
(I mean things like pir::open() in rakudo, not the nqp: target from p6eval) | 09:18 | ||
masak | moritz: it sounds unsafe, if that's what you're after. | ||
moritz | they are a security hole, though one that needs quite some insider knowledge to exploit | ||
masak | moritz: the 'though' part shouldn't matter. | ||
if someone wants to cause harm, we have to assume they're knowledgeable. | |||
moritz | if I operated under that assumption, I'd have to shut down p6eval immediately. | 09:19 | |
09:20
JimmyZ_ joined
|
|||
snarkyboojum | or close the security hole :) | 09:20 | |
moritz | snarkyboojum: the security hole is "allowing code to execute", whichi s the whole point of p6eval | ||
snarkyboojum | moritz: but in a less controlled manner? | 09:21 | |
jnthn | moritz: I don't feel strongly either way, tbh. It can be helpful to have them to hand for debugging stuff, occasionally. | ||
But I see the concern too. | |||
09:21
JimmyZ left,
JimmyZ_ is now known as JimmyZ
09:22
replore_ left
|
|||
moritz | if you present the security question as a black-or-white question, you lose p6eval. So see it as shades of gray | 09:22 | |
currently I'm in the "watch and see if further action becomes necessary" position, though I do think about possibilities to tighten security | 09:23 | ||
09:23
lumi__ left
|
|||
jnthn | moritz: We (thankfully) don't have a history of people abusing it. | 09:23 | |
09:23
lumi__ joined
|
|||
masak | moritz: my advice: think long and hard about what *could* be done with pir:: and nqp::. do not post your conclusions on the channel. | 09:26 | |
jnthn | Which of course doesn't mean we never will, but I guess we could try having a little faith in huge manatee for a while longer. :-) | ||
masak | moritz: decide whether or not to keep nqp:: and pir:: in p6eval depending on the worst possible thing that can be done with them. | ||
moritz | masak: the answer is really simple :/ | ||
jnthn | masak: All the things that we banned yesterday with SAFE | 09:27 | |
masak | right. | ||
jnthn | masak: It depends if we're trying to fend of a determined, hardened attacker, or just mischevious/idiotic folk. :) | ||
09:28
Trashlord left
|
|||
moritz | exactly | 09:28 | |
masak | I agree -- let's hope we never get the former kind. | ||
and maybe it's premature securitization to try to design against one. | |||
snarkyboojum | breaking things doesn't always require evil intent :) | ||
masak | snarkyboojum: no, but breaking things in this way probably requires quite a bit of planning and forethought. | 09:29 | |
moritz | snarkyboojum: that's why we have SAFE.setting | ||
snarkyboojum | if you're in a virtualised environment, just restore from a snapshot post-breach then, and you're all good :) | 09:32 | |
moritz | we're not *that* virtualized | ||
(just chroot) | |||
iirc there are prototypial break-out-of-vm exploits in the wild too | |||
snarkyboojum | I've been spoiled by working on EC2 for work over the last few months.. nice model | ||
tadzik waits for someone else to make the first comment on a grant application | 09:33 | ||
moritz | tadzik: don't. Usually that's me, but I also waited this time. | ||
09:33
JimmyZ left
|
|||
snarkyboojum | moritz: true - but they're probably more sophisticated than working around a SAFE.setting | 09:33 | |
tadzik | I'd expect some Big Name on the first comment :) | 09:34 | |
moritz | so, not me :-) | ||
tadzik | oh, I disagree :) | ||
moritz | rakudo: callframe(1)<&open>('README', :r).get.say | 09:35 | |
p6eval | rakudo 15813b: OUTPUT«Method 'at_key' not found for invocant of class 'CallFrame' in method postcircumfix:<{ }> at src/gen/CORE.setting:931 in <anon> at /tmp/uFH92hjX2D:1 in <anon> at /tmp/uFH92hjX2D:1» | ||
moritz | rakudo: callframe(1).my<&open>('README', :r).get.say | ||
p6eval | rakudo 15813b: OUTPUT«Method 'postcircumfix:<( )>' not found for invocant of class 'Any' in <anon> at src/gen/Metamodel.pm:2761 in <anon> at /tmp/8rs9JKDfTb:1 in <anon> at /tmp/8rs9JKDfTb:1 in <anon> at /tmp/8rs9JKDfTb:1» | ||
moritz | rakudo: callframe(2).my<&open>('README', :r).get.say | ||
p6eval | rakudo 15813b: OUTPUT«Method 'postcircumfix:<( )>' not found for invocant of class 'Any' in <anon> at src/gen/Metamodel.pm:2761 in <anon> at /tmp/CkGXJvU3_5:1 in <anon> at /tmp/CkGXJvU3_5:1 in <anon> at /tmp/CkGXJvU3_5:1» | ||
moritz | for 0..10 { say $_; say callframe($_).my<&open>; } | 09:36 | |
rakudo: for 0..10 { say $_; say callframe($_).my<&open>; } | |||
p6eval | rakudo 15813b: OUTPUT«0Any()1Any()2Any()3Any()4Any()5Any()6Any()7Any()8Any()9Any()10Any()» | ||
snarkyboojum | moritz: do you have anything like watching requests to p6eval and locking out on suspicious behaviour? :) | ||
moritz | snarkyboojum: I have a tail -f on the log file running | ||
09:36
lumi__ left
|
|||
moritz | though I don't watch it permanently, having a life and all :-) | 09:36 | |
snarkyboojum | moritz: though any such "second guessing" is bound to be annoying :) - ah tail -f | 09:37 | |
masak .oO( note to self: conduct attack while moritz is asleep ) | |||
moritz | oh, I'd need to look outwards the lexical chain, not the call chain | ||
09:37
lumi__ joined
|
|||
masak | so, OUTER:: | 09:37 | |
moritz | which is NYI | 09:38 | |
jnthn | rakudo: say ("Tadeusz Sośnierz", "Moritz Lenz").max({ .chars }) ~ " is a bigger name" | ||
p6eval | rakudo 15813b: OUTPUT«Tadeusz Sośnierz is a bigger name» | ||
jnthn | tadzik: See! ^^ | ||
masak | :D | ||
tadzik | oh you :) | 09:39 | |
masak | don't use string concat where a comma would work :) | ||
jnthn | masak: hangover from non-spacey days :) | ||
masak | "non-spacey"? | 09:40 | |
09:40
JimmyZ joined
|
|||
jnthn | b: say 'a', 'b' | 09:40 | |
p6eval | b 1b7dd1: OUTPUT«ab» | ||
jnthn | rakudo: say 'a', 'b' | ||
p6eval | rakudo 15813b: OUTPUT«ab» | ||
moritz | b: say 'a', ' b'; | ||
jnthn | oh huh, I thought we put spaces in :) | ||
p6eval | b 1b7dd1: OUTPUT«a b» | ||
masak | different rules between Lists and Parcels, friend :) | ||
jnthn | darn | ||
masak | yeah. | ||
jnthn | Where do I go to learn Perl 6? | 09:41 | |
masak | I discovered this too recently. | ||
thing is, I *really*, really like the way it fell out. | |||
jnthn | And yes, of course I could put a space at the start of the string :) | ||
09:41
robinsmidsrod left
|
|||
masak | even if we now have this inexplicable .gist method everywhere... | 09:41 | |
jnthn | Well, .gist is quite good output for gisting :P | ||
tadzik | ohh | 09:42 | |
use Github::Gist could overload the default .gist to paste code and output to gist :P | |||
jnthn | :D | ||
snarkyboojum | moritz: how much overhead would be required to launch a separate virtualised/sandboxed eval environment on each request to p6eval :D | ||
moritz | too much for that machine | 09:43 | |
masak re-reads the "defensive copying" p6l thread and tries not to get mad at Darren Duncan for being so crazy | 09:44 | ||
snarkyboojum | moritz: definitely, I was thinking of getting creative with EC2 :) | ||
moritz | snarkyboojum: does EC2 allow IRC? | ||
(lots of hosting services don't; fear of botnets) | |||
tadzik | okay, the First Comment is submitted. You can start submitting yours now :) | ||
snarkyboojum | moritz: IRC is just an open port no? | 09:45 | |
09:45
M_o_C_ joined
|
|||
masak | Darren: "let's make everything immutable". moritz: "we probably shouldn't change everything, it's 2011". Darren: "fine, you do what you like, and I'll work on my perfect dream project which doesn't have a 'hello world' implementation yet" | 09:45 | |
09:46
lumi__ left
|
|||
snarkyboojum | moritz: EC2 is infrastructure as a service.. no platform restrictions - you can do what you like on it (within reason) | 09:46 | |
moritz | "we probably shouln't turn Perl 6 into Haskell" | ||
09:47
lumi__ joined
|
|||
masak | also, "it doesn't help with the problem at hand" | 09:47 | |
09:48
M_o_C left
09:52
robinsmidsrod joined
09:54
JimmyZ left,
robinsmidsrod left
09:56
lumi__ left
09:57
lichtkind left,
lumi__ joined,
lichtkind joined
|
|||
tadzik | oh, gsoc code samples | 10:00 | |
10:03
JimmyZ joined
10:06
lumi__ left
10:07
lumi__ joined
|
|||
lichtkind | rakudo: my @a = 2..5;my $b = [|](all(2..5)> 1); say $b; | 10:07 | |
p6eval | rakudo 15813b: OUTPUT«any(all(True, True, True, True))» | 10:08 | |
lichtkind | i thought i get just a true | ||
masak | lichtkind: why did you think that? | ||
lichtkind: [|] doesn't collapse a junction. | |||
rather the reverse. | |||
moritz | [||] would produes that, I hope | ||
rakudo: my @a = 2..5;my $b = [||](all(2..5)> 1); say $b; | 10:09 | ||
p6eval | rakudo 15813b: OUTPUT«all(True, True, True, True)» | ||
moritz | *produce | ||
masak | just prefix:<?> it, for blog's sake. | ||
lichtkind | rakudo: my @a = 2..5;my $b = [||](all(2..5)> 1); say $b; | ||
p6eval | rakudo 15813b: OUTPUT«all(True, True, True, True)» | ||
moritz | oh, [||] of a single item is just identity | ||
masak: so | |||
masak | or so. | ||
flussence | rakudo: say ?(True & True) | 10:10 | |
p6eval | rakudo 15813b: OUTPUT«Bool::True» | ||
flussence | oh, that's useful to know | ||
dalek | p: c6f6882 | jonathan++ | / (7 files): Add archetypes to the various NQP meta-objects. |
||
flussence could never figure out how to get simple values out of junctions | |||
10:10
Trashlord joined
|
|||
jnthn | flussence: You're kinda not meant to... | 10:11 | |
10:11
robinsmidsrod joined
|
|||
flussence | I know, but what are they good for when you can't? :) | 10:11 | |
moritz | as matchers. | ||
and there's a trick, y'know | |||
10:12
lumi__ left
|
|||
moritz | rakudo: sub eigen(Mu $j) { my @e; (sub f($x) { @e.push($x) }).($j) }; say eigen(1|2|3) | 10:12 | |
p6eval | rakudo 15813b: OUTPUT«any(1, 1, 2, 1, 2, 3)» | ||
moritz | huh. | ||
b: sub eigen(Mu $j) { my @e; (sub f($x) { @e.push($x) }).($j) }; say eigen(1|2|3) | |||
p6eval | b 1b7dd1: OUTPUT«any(1, 2, 3)» | 10:13 | |
moritz | b: sub eigen(Mu $j) { my @e; (sub f($x) { @e.push($x) }).($j); @e }; say eigen(1|2|3) | ||
p6eval | b 1b7dd1: OUTPUT«123» | ||
moritz | rakudo: sub eigen(Mu $j) { my @e; (sub f($x) { @e.push($x) }).($j); @e }; say eigen(1|2|3) | ||
flussence | ooh, clever. | ||
p6eval | rakudo 15813b: OUTPUT«1 2 3» | ||
moritz | there you go | ||
10:13
lumi__ joined
|
|||
flussence | moritz++ | 10:13 | |
tadzik | Google has a funny definition of friday | 10:14 | |
Friday, 12 September 2011: 19:00 UTC (12:00 noon Pacific Time) | |||
"Soft" deadline for student code sample submission | |||
Friday, or 12 September? :P | |||
moritz | yes. | ||
tadzik | touche | 10:15 | |
masak | Google all switched to the Julian calendar. | 10:17 | |
flussence | or the deadline's for year 2011 + 2**32... | 10:18 | |
10:18
lumi__ left
10:19
lumi__ joined
|
|||
bbkr_ | how aften is modules.perl6.org refreshed? | 10:21 | |
masak | in nom, in the REPL, when I define a class, I get a "Use of uninitialized value in string context" warning. | ||
I want to submit an RT ticket about this. any objections? | |||
jnthn | masak: I can see why it happens and I don't know the best fix off hand, but it's decidedly LTA. So please RT it. | 10:22 | |
flussence | can reproduce here... didn't this used to return "_block\d+"? | ||
moritz | well, it's supposed to return the type object | ||
which warns on stringification | |||
jnthn | moritz: It does. | ||
Right. | |||
It's doing the "right thing" | |||
moritz | maybe the REPL should really .gist | ||
jnthn | It's just that the right thing is a tad annoying. :) | ||
moritz: ooh! That would do it... | 10:23 | ||
masak submits rakudobug | |||
dalek | kudo/nom: ae8a6dd | moritz++ | src/SAFE.setting: forbid mkdir in SAFE.setting |
10:24 | |
tadzik | bbkr_: at least once an hour I suppose | 10:26 | |
flussence | I wonder if linux's seccomp would be useful for safe mode - once you switch it on, every syscall except read/write/exit is blocked by the OS. | ||
moritz | that's too restrictive for us | 10:29 | |
the compiler is allowed to open() files for one | |||
10:31
lumi__ left
10:32
lumi__ joined,
im2ee left
|
|||
flussence | (hm, it might be useful for try.rakudo though... if I can figure out how to do the seccomp call after the REPL starts up) | 10:32 | |
10:33
M_o_C_ left,
im2ee joined
|
|||
moritz | with NCI, once that's work | 10:34 | |
ie you inject a bit of p6 code (before the user's code) that does the NCI call | |||
*once that works | |||
dalek | kudo/nom: 1ff410a | jonathan++ | tools/build/NQP_REVISION: Bump NQP_REVISION to get archetypes patch. |
10:38 | |
kudo/nom: 9a0650a | jonathan++ | src/Perl6/Metamodel/ (3 files): Make roles inheritalizable; implement inheritalize (which just returns the pun), so class Foo is SomeRole { } works again. |
|||
kudo/nom: 8c9dd1a | jonathan++ | src/core/traits.pm: Catch invalid inheritance/composition operations, and fill out support for types that know how to produce inheritable/composable types. |
|||
10:43
lumi__ left,
lumi__ joined
|
|||
dalek | kudo/nom: 21089d9 | jonathan++ | src/Perl6/Metamodel/RolePunning.pm: Only make a pun once. |
10:44 | |
masak | just sent a long summary of the "defensive copy" thread to p6l. | ||
jnthn | spectests++ # catching my silly bugs | 10:45 | |
tadzik | jnthn: commited that? Unbelievebale | ||
s/':'/' '/ | |||
flussence | rakudo: sub a(Str $_ is copy) { s/foo/bar/ }; say a('foo') | 10:47 | |
p6eval | rakudo 15813b: OUTPUT«bar» | ||
masak | I'd be very interested in hearing of perceived problems with the rw/non-rw approach I outline in the email. | ||
flussence | ooh, didn't realise that worked | ||
masak | flussence: you prolly want 'Cool', not 'Str', though :) | 10:48 | |
flussence | good point, I tend to be far too strict with my types... | ||
masak wonders whether 'is copy' should make descendant references rw or non-rw... | 10:49 | ||
jnthn | tadzik: It still leaves room to make lots of *different* puns :P | ||
tadzik | but compose them only once :P | 10:50 | |
jnthn | Well, we don't compose puns. That's the point of them - to use a role in a non-compositional context. | ||
We *almost* pass S14-role/instantiation.t again...but I need to do next $hard-thing first... | 10:51 | ||
10:52
lumi__ left
|
|||
masak | lol audreyt twitter.com/audreyt/status/112031008257359872 | 10:53 | |
10:53
lumi__ joined
|
|||
tadzik | :P | 10:53 | |
so I.pm is the next step? | |||
Naah | |||
flussence | ''.pm! | 10:54 | |
bbkr_ | tadzik: is there any log from refreshing modules.perl6.org available? MongoDB is still not there (added 3 days ago). I've checked META.info (valid json) and link to repo. No idea why it is not showing up. | 10:55 | |
10:58
ab5tract joined
|
|||
masak really likes twitter.com/CompSciFact/status/111...0604145664 | 11:02 | ||
tadzik | bbkr_: you can try running the perl script from the modules.perl6.org repo and see if it fails and why | 11:06 | |
11:06
lumi__ left
11:07
lumi__ joined
11:08
djanatyn left
11:11
lichtkind left
11:15
Trashlord left
11:20
lumi__ left
11:21
lumi__ joined
11:32
lumi__ left
|
|||
moritz | bbkr_: there is a log, though not public. I'll look into it. | 11:32 | |
bbkr_ | tadzik: thanks for pointing me to the right direction. i've run script and it processed whole list without problems (99 ok, 0 fail). and new Mongo module is present in generated index.html file. so I have no idea what failed | ||
moritz: thanks | |||
11:33
lumi__ joined
11:34
replore joined,
Psyche^ joined
|
|||
moritz | seems the log file didn't capture the relevant information :( | 11:34 | |
11:35
Patterner left,
Psyche^ is now known as Patterner
|
|||
moritz reruns | 11:35 | ||
72 MongoDB | 11:36 | ||
Updated since last check | |||
MongoDB driver | |||
let's see if it shows up when that thing is finished | |||
ok - 99 | 11:37 | ||
nok - 0 | |||
bbkr_ | it's visible now | ||
thanks | |||
moritz | seems that the cronjob entry somehow doesn't really work | ||
pmichaud | good morning, #perl6 | 11:40 | |
moritz | good am, pm | 11:41 | |
bbkr_ | How about providing "Last update on: ..." info on this page (maybe somewhere in footer)? This will show immediately if update is stuck. | ||
moritz | bbkr_: that would be a very good idea | ||
bbkr_: if you get around to it, the code is in the modules.perl6.org repo in web/build-project-list.pl | |||
if not, I'll do it eventually, just no promises when that will be | 11:42 | ||
jnthn | morning, pmichaud | ||
bbkr_ | moritz: i will add it during weekend | ||
moritz | ++bbkr_ | 11:43 | |
bbkr_ | which timezone is the server in? | 11:44 | |
moritz | CEST | ||
bbkr_ | ok | ||
moritz | though displaying it with perl's gmtime() would be the most sensible, I think | 11:45 | |
"Only make a pun once." # from jnthn++'s last commit message | 11:46 | ||
what if there's a difference audience the second time? :-) | |||
11:46
lumi__ left
11:47
lumi__ joined
|
|||
moritz | fwiw apache2 has a security update, which I'm going to install right now on feather2 | 11:47 | |
which means a short downtime for *.perl6.org and related services | 11:48 | ||
feel informed and warned | |||
flussence | should be only about 10 seconds, if we're lucky :) | ||
moritz | I think it was about 5 | 11:49 | |
flussence | \o/ | 11:50 | |
(OTOH, I'm not fond of the way Debian messes with services directly from the package manager - that could be 0 seconds if done right...) | 11:52 | ||
moritz | well, it seems that Debian isn't directly targeted at servers | 11:53 | |
for example they do things like automatically enabling services when you install them | |||
flussence | that's the one thing I *really* don't like... | ||
moritz | imagine you accidentally enable a DHCP server that way in a big corp network *shudder* | ||
flussence | I think I've done that before at $dayjob :) | 11:54 | |
moritz | OTOH the typical customer would think "I've installed that stupid thing, why isn't it running?" if it were otherwise | ||
flussence | (fortunately it's not a big enough network to matter...) | ||
plobsing | moritz: do you expect a lightbulb to be already running after you install it? | 11:57 | |
moritz | plobsing: if I don't do the install by hand (but via Building Manager), maybe | 11:58 | |
11:59
Reaganomicon left,
george_z0rwell joined
12:01
domidumont left,
lumi__ left
12:02
ab5tract left
12:03
lumi__ joined
12:06
hugme joined,
ChanServ sets mode: +v hugme
12:09
pmurias joined
12:11
satyavvd left
|
|||
pmurias | moritz: is there anything important on the evalbot box? (besides the evalbot) | 12:11 | |
12:12
george_z0rwell left,
pernatiy joined
|
|||
moritz | pmurias: you'd have to ask diakopter, but nothing too important, I think | 12:12 | |
12:12
plobsing left
|
|||
moritz | it seems I've fixed the module.perl6.org updating script | 12:16 | |
12:17
lumi__ left,
lumi__ joined
|
|||
masak | hugme: hug hugme | 12:18 | |
hugme hugs hugme | |||
pmichaud | Can I delete the old/ subdirectory from the nom branch? | 12:19 | |
jnthn | pmichaud: yes | ||
masak | hugme: hug hugme hugs hugme | ||
hugme hugs hugme hugs hugme | |||
12:19
ab5tract joined
|
|||
masak | :) | 12:19 | |
moritz | rakudo: sleep 1 | 12:20 | |
p6eval | rakudo 21089d: OUTPUT«Could not find sub &sleep in <anon> at /tmp/zXOTnYBREl:1 in <anon> at /tmp/zXOTnYBREl:1» | ||
moritz | LHF | ||
masak | ok, I'll do that one :) | ||
moritz | ++masak | ||
jnthn | :) | ||
jnthn finishes nomming lunch and gets back to sorting out the role type checking stuff | 12:21 | ||
dalek | kudo/nom: c8ebd81 | pmichaud++ | src/old/ (142 files): Remove the we-have-not-needed-it-for-a-long-time old/ subdirectory. |
||
pmichaud | rakudo: lunch 1 | ||
p6eval | rakudo 21089d: OUTPUT«Could not find sub &lunch in <anon> at /tmp/ZNVok77nv0:1 in <anon> at /tmp/ZNVok77nv0:1» | ||
tadzik | nom: business time | 12:22 | |
p6eval | nom 21089d: OUTPUT«Could not find sub &business in <anon> at /tmp/A1AI9KA7s8:1 in <anon> at /tmp/A1AI9KA7s8:1» | ||
jnthn | :P | ||
nom: marine | |||
p6eval | nom 21089d: OUTPUT«Could not find sub &marine in <anon> at /tmp/WnLPGBUlQQ:1 in <anon> at /tmp/WnLPGBUlQQ:1» | ||
masak | can I put &sleep in src/core/control.pm? it used to be in src/core/system.pm in b, but there's no such file in nom. | 12:23 | |
moritz | masak: +1 | 12:24 | |
masak | also, &shell formerly known as &run already seems to have done a similar jump. | ||
very well. I'll make it so. | |||
12:25
ab5tract left
|
|||
pmichaud | control.pm is fine, yes. | 12:28 | |
12:29
lumi__ left
|
|||
tadzik | masak: you'll probably be able to uncomment a few tests with this | 12:29 | |
masak | tadzik: I found t/S29-context/sleep.t | ||
jnthn | INET.pm also depends on sleep | 12:30 | |
tadzik | masak: ...what jnthn said | ||
12:30
lumi__ joined
|
|||
masak | oh, right. | 12:30 | |
jnthn | And sockets should otherwise work | ||
masak | I saw that one but didn't pay any mind. | ||
will try that one too, then. | |||
tadzik | it fails for different reasons, but at least it'll run now :) | ||
masak | \o/ | ||
moritz | doesn't it need Buf? | ||
jnthn | Aww. | 12:31 | |
tadzik | I suppose it does | ||
masak | rakudo: say Inf | ||
p6eval | rakudo 21089d: OUTPUT«Inf» | ||
tadzik | maybe nom-buf will fail differently, now that we have parametric roles fixed | ||
masak | rakudo: say Inf ~~ Inf | 12:32 | |
p6eval | rakudo 21089d: OUTPUT«Bool::True» | ||
tadzik | nom: say NaN ~~ NaN | ||
p6eval | nom 21089d: OUTPUT«Bool::False» | ||
tadzik | oh? | ||
moritz | nom: say NaN == NaN | 12:33 | |
p6eval | nom 21089d: OUTPUT«Bool::False» | ||
pmichaud | b: say Nan ~~ NaN | ||
tadzik | nom: my $a = NaN; say $a ~~ NaN | ||
p6eval | b 1b7dd1: OUTPUT«Could not find sub &Nan in main program body at line 22:/tmp/Y9NU82rvhQ» | ||
nom 21089d: OUTPUT«Bool::False» | |||
moritz | nom: say Inf == Inf | ||
p6eval | nom 21089d: OUTPUT«Bool::True» | ||
pmichaud | b: say NaN ~~ NaN | ||
p6eval | b 1b7dd1: OUTPUT«Bool::True» | ||
masak | b: say NaN == NaN | ||
p6eval | b 1b7dd1: OUTPUT«Bool::False» | ||
jnthn | If we want that to work I guess we hvae to special-case it. | ||
As NaN == NaN is meant to be false. | |||
masak | b is correct here. | ||
pmichaud | nom: say NaN == NaN | ||
p6eval | nom 21089d: OUTPUT«Bool::False» | ||
pmichaud | nom is correct on == | 12:34 | |
jnthn | Does spec want NaN ~~ NaN to be true? | ||
I guess ~~ is meant to be smart. :) | |||
tadzik | I won't like it to outsmart me :) | ||
masak | oh, nom doesn't have Inf? | 12:35 | |
I see a lot of $Inf workaround in src/core | |||
tadzik | no, jnthn fixed the compilation time :> | ||
pmichaud | $Inf may be fossil | ||
flussence | rakudo: say (Inf > 2**32) | ||
p6eval | rakudo 21089d: OUTPUT«Bool::True» | ||
flussence | rakudo: say (Inf > 2**64) | ||
p6eval | rakudo 21089d: OUTPUT«Bool::True» | ||
flussence | rakudo: say (Inf > 2**128) | ||
p6eval | rakudo 21089d: OUTPUT«Bool::True» | ||
flussence | seems to work | ||
pmichaud | it used to be that nom had Inf at runtime but not at setting compile-time | ||
moritz | .oo( rakudo is rather stubborn ) | ||
pmichaud | I don't know if that's still the case. | ||
flussence | rakudo: say (Inf + 1 > Inf) | ||
masak | pmichaud: gettomg "error:imcc:undefined identifier 'Inf'" when compiling my &sleep patch. | ||
p6eval | rakudo 21089d: OUTPUT«Bool::False» | ||
masak | pmichaud: &sleep defaults to Inf. lexical scoping issues? | 12:36 | |
moritz | masak: use $Inf instead | ||
pmichaud | setting may still require $Inf | ||
masak | ok. | ||
that's what I suspected. | |||
pmichaud | masak: setting-compile-time constant issues, perhaps | ||
jnthn | Bootstrapping is hard. News at 11. :) | ||
pmichaud | spectests say that NaN ~~ NaN should be true (as beijing has it) | 12:37 | |
masak | rakudo: constant bleep_bloop = 42; say "alive" | ||
p6eval | rakudo 21089d: OUTPUT«alive» | ||
masak | \o/ | ||
I could tackle the NaN ~~ NaN thing, too. if no-one else wants to. | |||
pmichaud | might check to see how beijing handled it | ||
masak | nod | 12:38 | |
pmichaud | ("beijing" is too much to type. I'm going back to "ng" for a while.) | ||
tadzik | (: | ||
masak feels like the green dinosaur in the last panel of Dinosaur Comics, discovering how much fun Perl 6 Day is: "guys, this *rocks*!" | 12:39 | ||
pmichaud | what should be the best way to create a Failure but not immediately return? | ||
tadzik | nom-buf still fails | ||
moritz | pmichaud: Failure.new? | ||
sub { fail() }.() | |||
pmichaud | I'll do sub { fail() } for now | ||
I agree Failure.new should work, but building the exception is being a bit of a pain-ish. | 12:40 | ||
masak | sleep.t passes locally. | 12:41 | |
IO-Socket-INET.t fails 17 out of 17, but it runs to completion. | 12:43 | ||
someone++ nicely annotated the failures in t/spectest.data | 12:44 | ||
only those two test files mention &sleep | |||
12:45
lumi__ left
|
|||
masak uncomments sleep.t for now | 12:45 | ||
12:45
Trashlord joined,
lumi__ joined
|
|||
moritz | masak++ # p6l mail | 12:48 | |
masak | commit's away! | ||
moritz | though I admit I've just wrote a reply before I've finished reading masak's p6l mail | ||
dalek | kudo/nom: ac4d97c | masak++ | / (2 files): [src/core/control.pm] add &sleep It's the same as in Beijing, modulo $Inf hack. Also, uncommented sleep.t in spectest.data. |
||
moritz | because a thought struck me that scared me of the 'immutability all the way down' | 12:49 | |
tadzik | masak: could you fix the IO::S::INET failure reason as well? | ||
masak | moritz: your objection indeed seems to make sense. | 12:50 | |
12:50
Sarten-X2 left
|
|||
jnthn | sleep. It's the same as in Beijing. | 12:50 | |
pmichaud | pir::sleep__vN(1e16) while True; | ||
might want some unboxing here. | |||
moritz | not necessary | 12:51 | |
masak | tadzik: 'Type check failed in assignment to '$!listen'; expected 'Int' but got 'Bool'' seems to be the immediate reason. but I'd rather do the NaN ~~ NaN thing first. | ||
pmichaud | well, if we don't unbox we go through the vtable | ||
tadzik | masak: fair enough | ||
moritz | 1e16 becomes a Num that automatically unboxes due to Past::Want | ||
pmichaud | okay, then the next line | ||
+ pir::sleep__vN($seconds); | |||
masak | pmichaud: you feel a pressing need to optimize &sleep? 1/2 :P | ||
pmichaud | masak: it's not optimization so much as rigor | 12:52 | |
moritz | that might need a decontainerize | ||
masak | oh, well then. | ||
pmichaud | I think we had decided we didn't want to rely on vtables | ||
masak | ah. | ||
jnthn | They'll make our life harder for porting later. | ||
moritz | pmichaud: I don't think it goes through a vtable | ||
see above | |||
pmichaud | moritz: I'm certain the $seconds one has to | ||
moritz | yes, that one needs to | 12:53 | |
jnthn | moritz: The 1e16 one won't. The $seconds one probably does. | ||
masak | moritz: indeed, your p6l objection is very sobering -- and that wasn't at all the effect I was shooting for. maybe this is where sorear++'s complications rear their head. :/ | 12:54 | |
it felt like a clean solution when I was just looking at part of the problem... :) | |||
moritz | "only make it immutable where I want it to" | ||
:-) | |||
masak | yeah! how hard could that be? :P | 12:55 | |
12:57
lumi__ left,
lumi__ joined
|
|||
pmichaud | I think that as long as we have mutable objects, we end up with leaky encapsulation. I haven't seen a way to resolve that. | 12:57 | |
moritz | afaict only Haskell gets that "right", but that's now what we want Perl 6 to become | 12:58 | |
/now/not/ | |||
s/^/s/ # :-) | |||
12:58
Holy_Cow joined
|
|||
masak | moritz: the Little Animal Farm case is perhaps educational. strict encapsulation is very important, because the fairness of the contest depends on contestants not being able to break the invariants of the Game class. | 12:58 | |
moritz: (yes, I know .HOW could help break them anyway. that's cheating.) | |||
jnthn | Well, part of it is about the contract you make with the outside world. | 12:59 | |
PerlJam | good morning #perl6 | ||
masak | morning, PJ | ||
jnthn | For example, whenever you request some information from a meta-object, it may be handling you back the real, mutable thing, which means you can screw up its internal state. The contract for working with meta-objects is "look but don't touch". | 13:00 | |
o/ PerlJam | |||
moritz | good am, pj | ||
jnthn | *handing | ||
13:00
Sarten-X joined
|
|||
PerlJam | leaky encapsulation day? | 13:00 | |
masak | pmichaud: the arrays an hashes shared by Game are all "mutable objects", but the requirement on them for not leaking internal references feels very straightforward. will I spend the rest of my life sighing and correcting juniors' leaky OO code? | ||
13:01
Holy_Cow left,
am0c joined
|
|||
pmichaud | masak: clearly we're able to accomplish a lot of stuff with leaky encapsulation. See p5. :-) | 13:01 | |
moritz | masak: maybe the real answer is that we make it too hard to construct immutable data structures in the first place | ||
masak | jnthn: that's a good point. a class may *choose* not to copy defensively due to performance concerns. it may not be purely pure OO, but it works IRL. | ||
jnthn | masak: How much of your life do you spend doing that today when working with non-Haskell-programming juniors? :) | 13:02 | |
13:02
sftp joined,
bluescreen10 joined
|
|||
masak | moritz: it's not too much that I want the data structures immutable in this case. it's that I want the clients to get "safe" data structures by default. | 13:02 | |
jnthn | masak: I'm not sure what you mean by "purely pure OO" :) | ||
masak | jnthn: I mean caring more about invariants than about performance. | ||
13:03
Reaganomicon joined
|
|||
masak | sometimes, the invariants *are* more important. | 13:03 | |
Game is an example of that. | |||
pmichaud | I don't know that a feature of "OO" has ever been that we'd have objects with non-modifiable state, fwiw. | ||
masak | sometimes, performance is more important. the MOP is an example of that. | ||
pmichaud: not my point. | |||
jnthn | To what degree is this to do with OO, and to what degree is this just a mutability/data hiding issues? | 13:04 | |
masak | pmichaud: my point is that the enforcing of invariants is all tied up in securing one's public mutable data structures. | ||
jnthn | "just" :) | ||
masak: If performance isn't a concern and the invariants are, why not clone? | 13:05 | ||
moritz | masak: one could reason that it violates encapsulation to expose parts of the internal state of the object without copying, and yet you do that, and hope that it's save | ||
masak | jnthn: I create objects *because* I want to locally enforce invariants. | ||
pmichaud | I wonder if "secure", "public", and "mutable" are exclusive in some sense. | ||
moritz | and that's exactly what you do, pass some parts of self around | ||
masak | jnthn: cloning is what I ended up doing. my point is that I needed to do it in an ad-hoc manner. cf my original mail in the thread. | ||
moritz: right. Damian's point is that that is a crappy default. | 13:06 | ||
he doesn't propose a solution, though. | |||
moritz | masak: and I disagree in my latest mail | ||
masak | pmichaud: ooh, like "pick any two"? | ||
pmichaud: I'd like to see that elaborated. | |||
moritz | immutalizing by default is an equally crappy default | ||
jnthn | masak: Suppose that we (1) had a deep clone mechanism in Perl 6 and (2) had a trait you could put on attribute accessor methods that used it | ||
pmichaud | masak: the phrase "securing one's public mutable data structures" just struck me as odd. | ||
jnthn | masak: To what degree would that help? | 13:07 | |
masak | jnthn: it would go a long way. | ||
PerlJam | jnthn: "is recursive_read_only" ? | ||
masak | 'is defensive' | ||
moritz | that makes more sense to me than recursively write-protected arguments and returns | ||
jnthn | PerlJam: No, I'd want it to have a name that made extremely clear that it's copying. | ||
13:07
lumi__ left
|
|||
PerlJam | jnthn: "dcopy"? (deep or defensive, your choice) | 13:08 | |
jnthn | Some smart person down the road may be able to work out how to make it COW or something. | ||
masak | jnthn: ooh! | ||
jnthn | .oO( Make it COW, so it's not a pig ) |
||
13:08
lumi__ joined
|
|||
masak | ooh ooh can we go with 'is ersatz'? :) | 13:09 | |
or 'is replica' | 13:10 | ||
moritz | +(1..Inf).pick | ||
masak | moritz: 42 | ||
moritz | +42 it is then to 'is ersatz' | 13:11 | |
masak | :D | ||
PerlJam | Makes me want a "must" to go with "is" and "does" | ||
sub foo (@array must clone) | |||
or something | |||
masak | PerlJam: there's 'will' | ||
PerlJam | oh, true | 13:12 | |
jnthn | yeahbut will wants a code block | ||
masak .oO( "I don't care what Will says he wants!" ) | |||
moritz | why would you disregard [Coke] so blatantly? :-) | 13:13 | |
jnthn | :P | ||
masak | 可口可乐 | 13:14 | |
PerlJam | Are deep clone and shallow clone the only options? Is there ever a case where someone would have an N dimensional data set, but only want to confer immutability to N-M dimensions? | ||
pmichaud | fwiw, I'm still toying with the notion of a "deep immutability" flag. | ||
I'm not quite ready to toss that out entirely. | |||
kind of a third option between return (read only) and return-rw | 13:16 | ||
s/between/beyond/ # perhaps | 13:17 | ||
jnthn | One other challenge here is that we don't currently have a way to say to a data structure "oh hai, are you immutable?" | 13:18 | |
pmichaud | jnthn: right, it has to be an aspect of container-ness | ||
jnthn | pmichaud: I think it's deeper. | ||
nom: 3 does role { method huh { say "oh noes" } }; 3.huh | |||
moritz | containers are easily (and accidentally) stripped | 13:19 | |
p6eval | nom ac4d97: OUTPUT«oh noes» | ||
pmichaud | i.e., some data structure is in a "immutable container", which imposes an immutability constraint on the parts of the structure | ||
jnthn | pmichaud: How does "does" know that it can't do that mixin? | ||
It's not a function of containerness. | |||
moritz | the MOP knows it? | ||
pmichaud | jnthn: in that case you're trying to modify the object, not its container. | ||
jnthn | moritz: HOw? | ||
pmichaud: Right | |||
That's my point. | |||
I don't have a way to ask an object if it's mutable or not. | |||
moritz | jnthn: good question | 13:20 | |
pmichaud | jnthn: why is that modification bad, ooc? | ||
I mean, how does what you just wrote destroy immutability? | |||
moritz | and it would be very useful to have ways to make user-defined classes with immutable objects | ||
jnthn | pmichaud: Note that I managed to change a literal ;) | ||
moritz | pmichaud: action at a distance | ||
pmichaud | you changed its behavior but not its value. | ||
jnthn | pmichaud: Well, hm :) | 13:21 | |
moritz | that's like an augment, except the 'use MONKEY_PATCHING' part | ||
erm, TYPING | |||
pmichaud | and is what you just did legal p6, anyway? | ||
moritz | I hope not | ||
jnthn | pmichaud: My guess is "no" | ||
pmichaud | me too | 13:22 | |
jnthn | pmichaud: My question is "how do we know not to allow it?" | ||
moritz | nom: 3 does role { method huh { say "oh noes" } }; 2.huh | ||
p6eval | nom ac4d97: OUTPUT«Method 'huh' not found for invocant of class 'Int' in <anon> at /tmp/t7HcCTf2w4:1 in <anon> at /tmp/t7HcCTf2w4:1» | ||
pmichaud | jnthn: "not to allow" has to be a runtime check | ||
jnthn | Also spooky | ||
nom: 3 does role { method huh { say "oh noes" } }; eval '3.huh' | |||
p6eval | nom ac4d97: ( no output ) | ||
moritz | because it has a different $*ST? | 13:23 | |
pmichaud | and in the case of method mixins, it's not that we disallow the mixin, it's that we throw an exception for any mixin that attempts to violate our immutability container constraint | ||
jnthn | (Because we don't share constant tables that aggresively) | ||
moritz | so it's a different 3? | ||
jnthn | moritz: Right. It'll be extremely variable between implementations. | ||
moritz: We never hit this in master because it didn't really have constants | |||
pmichaud: Yes, it's certainly runtime. | |||
pmichaud | well, ng has constants, they just weren't shared to the degree they are in nom | ||
moritz | nom: 3 does role { method huh { say "oh noes" } }; (1+2).huh | ||
p6eval | nom ac4d97: OUTPUT«Method 'huh' not found for invocant of class 'Int' in <anon> at /tmp/LRlL_KicrZ:1 in <anon> at /tmp/LRlL_KicrZ:1» | ||
13:24
lumi__ left
|
|||
moritz | nom: say 3 === 3 | 13:24 | |
p6eval | nom ac4d97: OUTPUT«Bool::True» | ||
moritz | nom: say 3 === (1 + 2) | ||
p6eval | nom ac4d97: OUTPUT«Bool::True» | ||
jnthn | pmichaud: Well, we could check that one at compile time I suspect. But in general it's runtime. | ||
13:24
lumi__ joined
|
|||
pmichaud | jnthn: what I'm trying to get it is a new form of container (more) | 13:24 | |
we already have the case where we create anonymous containers for values (e.g., during binding) | 13:25 | ||
and we do this because we need to preserve some set of flags or information | |||
and we have to clone a container (not its value contents) to preserve the flags | |||
let me see if I can describe what I'm toying with | 13:26 | ||
(via an example) | |||
suppose we have an Object in a container $a, where $a has been marked with the "deep immutable" flag | 13:27 | ||
PerlJam | .oO( "shape of ... an object" "form of ... an immutability container") |
||
pmichaud | anytime we do $a.method(), the "deep immutable flag" imposes constraints on accesses to its attributes. In particular, $!private ends up being wrapped in an immutability container prior to any operation being performed on it. (more) | 13:29 | |
Yes, I realize this has implications for where we do decontainerization presently, but that's pretty much true of any approach we consider that tries to enforce immutability. | |||
masak | yes but what about moritz++' objection? | 13:30 | |
pmichaud | note it's the attribute access that gets the immutability constraint | 13:31 | |
moritz | masak: if I understood pmichaud++ correctly, he first wants to offer an option, not make it the default | ||
jnthn | pmichaud: Essentially as we "recurse" into a data structure, we containerize things with an immutability marker on the way down? | ||
pmichaud | yes | ||
and only attributes | |||
not all arguments / return values | |||
13:31
wamba joined
|
|||
masak | oh! | 13:31 | |
that makes sense. | 13:32 | ||
pmichaud | here's an example: | ||
class Dog { has @!legs; method legs() { @!legs } }; | 13:33 | ||
as written, someone can use $fido.legs to modify legs | |||
masak | aye. | ||
pmichaud | however, if $fido is a container with deep immutability, they won't be able to | ||
because @!legs would end up being wrapped in a container with deep immutability | 13:34 | ||
masak | right. that's essentially what I propose in my email earlier today. | ||
pmichaud | and if you attempt to do something to @!legs that causes one of its attributes to be modified, an exception will be thrown. | ||
flussence | .oO( plaster-cast(@!legs) ) |
||
masak | but my focus was on arrays and hashes, not objects. | ||
pmichaud | it's all objects. | ||
masak | right. | ||
moritz | that's how I imagine taint checking to work too | ||
pmichaud | even arrays and hashes in nom have private attributes. | ||
13:34
lumi__ left
|
|||
masak | the parallel with taint checking is interesting, yes. | 13:35 | |
jnthn | pmichaud: It feels fairly workable, when you put it that way. | ||
PerlJam | pmichaud: so, could you show an example with an array? | ||
pmichaud | PerlJam: Didn't I just do that? ;-) | ||
moritz | @!legs is the array | ||
13:35
lumi__ joined
|
|||
moritz | we'd just to be careful not create too many container objects, that would be very costly | 13:36 | |
pmichaud | less costly than deep clones, though. | ||
and definitely lazy. | |||
and we don't have to deal with identity issues that deep cloning present. | |||
masak | b: say Int ~~ Real | ||
pmichaud | *presents | ||
p6eval | b 1b7dd1: OUTPUT«Bool::True» | ||
masak | rakudo: say Int ~~ Real | ||
p6eval | rakudo ac4d97: OUTPUT«Bool::True» | ||
jnthn | Well, the other thing to keep in mind is that attributes can only be accessed in the lexical scope they're decalred in. | ||
13:36
jaldhar left
|
|||
PerlJam | I meant more like sub foo (@array is deeply_immutable) { @array[6][9] = 42; } ... where does the mechanism take effect? | 13:37 | |
jnthn | We could actually give them an immutability container from the get go | ||
moritz | PerlJam: @array[6] compiles to a method call | ||
pmichaud | PerlJam: @array is the container with the deeply_immutable flag. | ||
ultimately it gets down to @array.at_pos | |||
jnthn | And have actual attribute accesses within the class code-gen a stripping operation when they compile an attribute access. | ||
pmichaud | which then resorts to the case I gave above | ||
moritz | so the return value from @array[6] has that flag too | ||
masak | why is Int ~~ Real true in nom? it just says 'my class Int' in the class declaration. | ||
pmichaud | masak: bootstrap | ||
PerlJam | aye, okay. I'm a little slow this morning :) | ||
moritz | masak: BOOTSTRAP.pm | ||
masak | oh ah. | 13:38 | |
pmichaud | masak: the inheritance for fundamental types is in bootstrap | ||
if someone wants to switch Real to be a role I'd be fine with that :) | |||
I think where at the point where that can happen | |||
moritz | pmichaud: last time I tried I ran into ugly problmes | ||
pmichaud | *we're | ||
moritz: okay, maybe I'll give it a shot so I can understand the issues | 13:39 | ||
jnthn | Given I'm in the middle of doing stuff with roles, maybe better to hold off at least for today. | ||
pmichaud | maybe I'll hold off at least for today | ||
masak | my stub Int metaclass Perl6::Metamodel::ClassHOW { ... }; | ||
whoa. | |||
"not your grandfather's Perl 6." | |||
pmichaud | "these aren't the roles I'm looking for. Move along." | ||
moritz | pmichaud: if I had the choice, I'd rather see you working on regex bits :-) | ||
masak | 'my *stub* Int *metaclass*'??? | 13:40 | |
pmichaud | moritz: yeah, I'm looking for my regex shaped tuits. | ||
moritz | you could regex for the shapes... | ||
oh wait :-) | |||
jnthn | masak: NQP language extension. :) | ||
tadzik | public enterprise mixin factory ... | ||
jnthn | masak: Read "metaclass" more like a trait. | ||
flussence | all this talk of immutable stuff sounds vaguely like postgresql... it basically enforces something like /sub foo is [pure|immutable|rw]/ | 13:41 | |
moritz | I once met a class... | ||
masak | jnthn: uh, ok. | ||
jnthn | masak: It means "stub a type Int, and do it using metaclass Perl6::Metamodel::ClassHOW" | ||
masak | I'm going to add .isNaN to src/core/Real.pm. any objections? it's in b already. | ||
jnthn: if it's a trait, why doesn't it look like one? :( | 13:42 | ||
pmichaud | I always felt like isNaN was the wrong approach to the problem, but we can adopt it for now. | ||
jnthn | masak: Because it isn't actually one. | ||
pmichaud | (because I'm not sure what the "right approach" looks like) | ||
masak | jnthn: but since it's out-of-band anyway, why not lead the reader down a pleasant garden path? | 13:43 | |
pmichaud | I think that "stub" and "metaclass" are some of the teeth of our circularity saw. | ||
jnthn | pmichaud: Yes, precisely. | ||
masak | I understand that. I was just talking about dressing the teeth up to look innocent. :) | 13:44 | |
jnthn | masak: I suspect at the time I had much bigger concerns than figuring out nice syntax for it. | 13:45 | |
masak: I'm also not especially convinced it'll survive. | |||
masak | fair enough. | ||
moritz is totally fine with the syntax | |||
it looks special, and heck, it *is* special | |||
masak | maybe I'll get used to it. | 13:46 | |
13:46
lumi__ left
|
|||
jnthn | iirc, a lot of what it's doing is coping with our current lack of good serialization. | 13:46 | |
masak | but as a first impression 'metaclass' doesn't say 'using the following metaclass' to me. | ||
pmichaud | sometimes teeth should look menacing. | ||
masak | also agreed. | 13:47 | |
13:47
lumi__ joined
|
|||
jnthn | masak: You'd best go and complain to the CLOS designers too then, for doing similar there :P | 13:47 | |
pmichaud | would "STUB" and "METACLASS" be better? ;-) | ||
PerlJam | jnthn: maybe there's a reason masak doesn't use clos? | ||
masak | quite possible. | ||
pmichaud: currently the keywords look like sub calls to me. | 13:48 | ||
listops. | |||
jnthn | masak: Anyway, I agree it's not beautiful. But it's also not in Rakudo. | ||
masak: It's parsed by NQP only. | |||
pmichaud | my #`(look out!) stub Int #`(danger!) metaclass ..... | ||
jnthn | ;) | ||
[Coke] | masak: ZOMG i actually recognized 可口可乐 from the other day. ;) | ||
pmichaud | or maybe we should be able to decorate with ^^^ somehow :) | 13:49 | |
masak | I now have NaN ~~ NaN working locally. making spectest Justin Case. | ||
pmichaud | masak++ | ||
masak | [Coke]: maybe you were the only one who got the pun, then :P | ||
jnthn | So long as you don't make spectest Justin Beiber... | ||
pmichaud | we have to be careful with NaN handling. early implementations of it in ng massively slowed down the test suite. | ||
masak | jnthn: at an 800% slower rate... :P | ||
pmichaud | (actually even not-early implementations did that... I fixed it up a bit in February of this year) | ||
jnthn | Dammit, my epic refactor didn't work first time... | 13:50 | |
pmichaud | I'll be sure to review the commit :) | ||
13:50
SHODAN left,
benabik_ joined
13:51
benabik left,
benabik_ is now known as benabik
|
|||
pmichaud | if someone wants to add my comments re: immutability to the p6l thread, that'd be great. I'm not sure how to compose it (and would rather continue my search for regex-shaped tuits) | 13:51 | |
so far I have regex TOP { .* <regex-tuit> .* } and token regex-tuit { ... } but there I get a little stuck. :-P | 13:53 | ||
that ... part needs some work. | |||
moritz | no wonder, slacking off on IRC like this :-) | ||
flussence | could someone :391s/run/shell/ in rakudo/Makefile? | 13:54 | |
13:55
ab5tract joined
|
|||
masak | pmichaud++ # the Hunt for the Regex-Shaped Tuits | 13:55 | |
pmichaud | I think there might be some over by the couch... I'll look there a short while | ||
masak | flussence: I'll do that. | ||
pmichaud | (I also need a short nap) | ||
bbiaw | |||
dalek | kudo/nom: 948ca74 | masak++ | tools/build/Makefile.in: [Makefile.in] s/run/shell/ flussence++ for fossil spotting. |
13:57 | |
14:00
lumi__ left,
lumi__ joined
14:04
SHODAN joined
|
|||
donri just noticed how similar the whatwg.org and perl6.org designs are | 14:05 | ||
coincidence? | |||
masak | we're *novices* at HTML. what's their excuse? :P | 14:06 | |
donri | haha | 14:07 | |
14:07
SHODAN left,
Trashlord left
|
|||
moritz | whatwg is scarily similar to early versions of perl6.org, much more than the current version | 14:07 | |
jnthn | ...did you see the style sheet? :) | 14:08 | |
body.front-page > a + a + a + a + a + a + a + a + a + a + a + a { color: black; background: #CCFF99; border-color: #99FF00; } | |||
moritz | is this poetry? | ||
jnthn | :) | 14:09 | |
donri | looks like perl | ||
donri ducks | |||
masak | jnthn: reminds me of this: "What's one and one and one and one and one and one and one and one and one and one?" "I don't know, " said Alice, "I lost count." "She can't do addition," said the Red Queen. | ||
jnthn | There's about 10 lines that look like the above, just different in numbers of "+ a"s ;) | ||
masak: hehe | |||
[Coke] | alice++ | ||
14:10
lumi__ left
14:11
lumi__ joined
|
|||
dalek | kudo/nom: 6c2607a | masak++ | src/core/Real.pm: [src/core/Real.pm] implemented .isNaN Same as in Beijing. |
14:12 | |
kudo/nom: 88e14a0 | masak++ | src/core/Numeric.pm: [src/core/Numeric.pm] made NaN ~~ NaN true Borrowed the implementation from Beijing. |
|||
donri | obviously 1 & 1 & 1 ad nauseam is 1 | 14:13 | |
dalek | ast: 6a56a35 | masak++ | S02-builtin_data_types/nan.t: a few rakudo unfudges |
||
ast: 56eedd1 | masak++ | S03-smartmatch/disorganized.t: [disorganized.t] removed duplicate test |
|||
jnthn | heh, typical. disorganized test file and a dupe | ||
masak | :) | 14:14 | |
masak goes for a walk in the disgustingly nice weather | |||
14:17
risou_awy is now known as risou,
MayDaniel joined
14:22
SHODAN joined
|
|||
flussence | rakudo: sub a(Str $_ is copy) { for q{foo} => q{bar}, q{bar} => q{baz} -> $pair { s/{$pair.key}/{$pair.value}/ }; $_ }; say a('foo') | 14:25 | |
p6eval | rakudo ac4d97: OUTPUT«bazbarfoo» | ||
flussence | huh. | ||
14:25
PacoLinux left
14:26
PacoLinux joined
|
|||
jnthn | flussence: {$pair.key} is a closure | 14:27 | |
It just has to return "true" to be considered a successful match. | |||
14:27
lumi__ left
|
|||
jnthn | And it does | 14:27 | |
So the regex matches immediately at the start of the string :) | |||
TimToady | actually, doesn't matter what it returns | 14:28 | |
jnthn | Oh, yeah | ||
14:28
lumi__ joined
|
|||
TimToady | you're thinkin' o' <?{...}> | 14:28 | |
jnthn | It'd neeed to be <?{ ... }> for that. | ||
*nod* | |||
std: /{ 42 }/ | 14:29 | ||
flussence | rakudo: sub a(Str $_ is copy) { for q{foo} => q{bar}, q{bar} => q{baz} -> $pair { s/<?{$pair.key}>/{$pair.value}/ }; $_ }; say a('foo') # like this? | ||
p6eval | std bb4f150: OUTPUT«ok 00:01 119m» | ||
rakudo ac4d97: OUTPUT«bazbarfoo» | |||
jnthn | flussence: Well, you want to match the contents of the variable. | ||
You can do $var in a regex to do that, not sure if it likes $var.method() | 14:30 | ||
flussence | (alternatively, all I want to do is simple string substitution in nom if anyone can suggest a better way to write that...) | ||
14:30
ab5tract left
|
|||
jnthn | But there's always ... -> (:$key, :$value) { s/$key/$value/ } ... or some such | 14:30 | |
flussence: Well, you can always call .subst | |||
Which isn't in place | 14:31 | ||
moritz | .subst($key, $value) | ||
jnthn | And thus saves you the is copy and setting up $_ too | ||
moritz | should work without explicitly creating a regex | ||
jnthn | yes, it'll be faster. | ||
flussence | k, I'll stick with that | 14:32 | |
14:32
ab5tract joined,
uasi left
|
|||
moritz | funn that after all these months of nom devolpment 'make test' doesn't pass | 14:37 | |
*funny | 14:38 | ||
jnthn | Clearly nom has been an epic failure. | 14:39 | |
"Doesn't even pass make test!" | |||
moritz: Last I checked it only failed two | |||
dalek | kudo/nom: 46e7cc8 | jonathan++ | src/Perl6/Metamodel/ (7 files): Big refactor of role type checking. Includes an initial implementation of role introspection (.^roles), supporting :local in classes (don't show me my parent's roles) and :transitive (show me the roles that my roles do too). |
14:40 | |
jnthn | moritz: One of them being a Q:PIR one that simply isn't going to work any more. | ||
moritz: Because it needs an explicit boxing operation adding or something. | |||
moritz | jnthn: one, if you pull | ||
jnthn | nice :) | ||
moritz | that one was easy to fix | ||
14:40
_itz joined
|
|||
dalek | kudo/nom: ca870df | moritz++ | t/00-parrot/09-pir.t: update 09-pir.t to current Q:PIR policy |
14:40 | |
jnthn | moritz: S12-introspection/roles.t can be updated/fudged/run if you have tuits :) | ||
Otherwise I'll catch it later on. | 14:41 | ||
moritz | maybe I'll get to it soonish | ||
tadzik | jnthn: is that a potential Pies fix in the first one? | ||
jnthn | tadzik: No, that's orthogonal. | 14:42 | |
tadzik | okay | ||
14:42
lumi__ left
|
|||
jnthn | tadzik: It's actually a symbol handling issue rather than a roles one. | 14:42 | |
tadzik | okay. It was just keywords in the commit message that matched my thinking | ||
14:43
lumi__ joined
|
|||
moritz | ./perl6 --setting=NULL --target=pir --output=src/gen/CORE.setting.pir src/gen/CORE.setting | 14:45 | |
14:45
SHODAN left
|
|||
moritz | Method 'role_typecheck_list' not found for invocant of class 'NQPConcreteRoleHOW' | 14:45 | |
jnthn: see above, YOU BORKED THE BUILD :-) | |||
jnthn | oh, sorry :( | ||
moritz | forgot to bump a nqp dep? | ||
jnthn | oh argh | 14:46 | |
That and I committed to a floating head in nqp :/ | |||
moritz | I hate it when that happens to me | 14:47 | |
jnthn | I normally notice pretty quickly. | ||
dalek | p: 7d5eec2 | jonathan++ | src/how/NQPConcreteRoleHOW.pm: Update NQPConcreteRoleHOW to match new role type checking API. |
||
moritz | I usually open a shell with the 'git log', then 'checkout master' and cherry-pick the commits to master | ||
probably a better idea (if there are many commits) is to give the current head a name (checkout -b newname), and then git checkout master; git rebaise newname | 14:48 | ||
and then git branch -D newname # when you're confident that the rebase worked | |||
jnthn | oh, that's a good way to do it | ||
git gui, write commit to file, git checkout master, git apply file | 14:49 | ||
moritz | (note that I haven't tried it that way, but it *should* work | ||
dalek | kudo/nom: 133508e | jonathan++ | tools/build/NQP_REVISION: Bump NQP_REVISION. |
||
jnthn | Yeah, it sounds like it would. | ||
I don't tend to use git gui for much | |||
Normally when I hit the "OK, this is faster than looking up the command" point ;) | |||
Above should fix the build. | |||
moritz tries | 14:50 | ||
14:51
ab5tract left
14:54
lumi__ left,
lumi__ joined
14:58
domidumont joined
15:00
agentzh left
15:03
sftp left
15:04
ab5tract joined
15:05
_itz left,
lumi__ left
15:06
lumi__ joined,
sftp joined
15:11
itz is now known as itz_
|
|||
jnthn | nom: say $*VM<config><exe> | 15:11 | |
p6eval | nom 133508: OUTPUT«» | ||
jnthn | nom: say $*VM<config><bindir> | 15:12 | |
p6eval | nom 133508: OUTPUT«/home/p6eval/nom-inst1/bin» | ||
15:12
daxim left
|
|||
jnthn | nom: say $*VM<config><slash> | 15:12 | |
p6eval | nom 133508: OUTPUT«/» | ||
moritz | jnthn: fwiw it fixed the build | ||
jnthn | moritz: Good. :) | ||
moritz | ah, .^roles(:tree) seems to be NYI | 15:13 | |
15:13
itz joined
|
|||
dalek | ast: a45c33c | moritz++ | S12-introspection/roles.t: fudge role introspection test for rakudo |
15:14 | |
jnthn | moritz: Yeah...I didn't put back any of the :tree forms but .^parents | ||
moritz: It doesn't seem very useful on attributes and methods, as masak++ pointed out | |||
Maybe there's a use case for roles though | |||
15:15
agentzh joined,
masonkramer joined
15:16
mj41 left
|
|||
jnthn | Question is, what's in the tree? | 15:16 | |
That is, do we build the inheritance tree, and put the roles in it? | 15:17 | ||
What if those roles do other roles and we passed :transitive and :tree? | |||
Gets a bit..."fun" :) | |||
15:18
alvis_ left
15:19
lumi__ left,
lumi__ joined
|
|||
dalek | kudo/nom: ce13be6 | moritz++ | t/spectest.data: run role introspection tests |
15:21 | |
moritz | it also seems to me that roles don't form a tree | 15:22 | |
jnthn | Yeah, that's why :transitive just gives you back a flat list. | 15:23 | |
PerlJam | where are .^roles(:tree) and :transitive specced? | 15:24 | |
jnthn | S12, if anywhere. | ||
Pretty sure .^roles is spec'd. | |||
PerlJam | sure, .^roles is specced, but no mention of :tree for it | 15:25 | |
and no mention of :transitive that I can find | |||
.^roles(:tree) doesn't make enough sense to me for what moritz said. | 15:26 | ||
jnthn | Yeah, the spec doesn't say it should be there | ||
I'm +1 to toss thsoe tests | |||
:transitive I think is useful | |||
(show me also the roles that the roles that were explicitly done also pulled in) | |||
...wow, that was a hard to parse sentence :) | 15:27 | ||
PerlJam | well, that's what I think .^roles should do anyway | ||
jnthn | Maybe | 15:28 | |
It already goes through parents, which you specify with :local | |||
e | |||
gah | |||
It goes through all the roles done by the parents, which you suppress (just the current class) with :local | |||
The transitive thing is kind of another dimension. | 15:29 | ||
I can see an argument for it being the defaut, but then we need a nice name for the other thing. | |||
15:29
lumi__ left
|
|||
jnthn | (:intransitive is probably bad as we tend to not like negative names) | 15:29 | |
15:29
lumi__ joined
|
|||
jnthn | :declared maybe | 15:30 | |
:immediate | |||
nah | |||
:shallow | |||
15:30
agentzh left
|
|||
PerlJam | I don't get why someone would ask that question or need to distinguish between "first level roles" and all of the roles | 15:31 | |
jnthn | Well, we let them distinguish between "first level parents" and "all of the parents" | ||
I can see it mattering to somebody building some kind of exploration tool or something. | 15:32 | ||
I may want to be able to show poeple "you have this role as a consequence of doing this other role" | |||
15:32
itz left
15:33
alvis_ joined
|
|||
PerlJam | so ... .^roles(:tree) would show the "composition tree"? | 15:35 | |
jnthn | It could, but there's a confusion there. | ||
Because .^roles also walks the inheritance tree, which you'd also expect to contribute to the structure of the result. | |||
15:39
mikemol left,
itz joined
15:40
mikemol joined
15:42
ab5tract left
15:43
itz left,
lumi__ left
|
|||
[Coke] | rakudo has a smolder semi-instance on the parrot server. do you find it useful aside from the smolder server issues? | 15:44 | |
15:44
lumi__ joined,
masonkramer left
15:47
mj41 joined
15:49
sili left
|
|||
im2ee | rakudo: say "Doesn't work?"; | 15:53 | |
p6eval | rakudo 133508: OUTPUT«Doesn't work?» | ||
15:53
im2ee left,
im2ee joined
15:55
mj41 left,
lumi__ left,
lumi__ joined
|
|||
tadzik | does work :) | 15:56 | |
16:02
wooden left
|
|||
JimmyZ | rakudo: say "Doesn't work?"{0..4}; | 16:02 | |
p6eval | rakudo ce13be: OUTPUT«Method 'at_key' not found for invocant of class 'Str' in method postcircumfix:<{ }> at src/gen/CORE.setting:960 in method reify at src/gen/CORE.setting:3634 in method reify at src/gen/CORE.setting:3539 in method gimme at src/gen/CORE.setting:3876 in metho… | ||
16:03
JimmyZ left,
itz joined,
JimmyZ joined,
itz left
|
|||
JimmyZ | rakudo: say "Doesn't work?"{0..4}; | 16:03 | |
p6eval | rakudo ce13be: OUTPUT«Method 'at_key' not found for invocant of class 'Str' in method postcircumfix:<{ }> at src/gen/CORE.setting:960 in method reify at src/gen/CORE.setting:3634 in method reify at src/gen/CORE.setting:3539 in method gimme at src/gen/CORE.setting:3876 in metho… | ||
TimToady wonders in moritz's direction why the ir clog translates no-break space to normal space | 16:05 | ||
16:07
lumi__ left,
ab5tract joined
16:08
lumi__ joined,
wtw left
16:10
itz joined
16:12
pyrimidine left
|
|||
masak | I would've called :transitive :implicit | 16:18 | |
16:19
daniel-s left
|
|||
PerlJam | masak: except that it would include explicit roles too | 16:19 | |
(unless I'm mistaken) | 16:20 | ||
masak | oh, good point. | ||
16:20
JimmyZ left
|
|||
TimToady | I think we would be more efficient with mutability containers than immutability containers, since most access is reading | 16:21 | |
some kind of capabilities approach, not prohibition approach | |||
PerlJam | TimToady: and the default? | 16:22 | |
TimToady | the default is readonly unless you have authorization, in that world | 16:24 | |
16:24
lumi__ left,
lumi__ joined
|
|||
TimToady | doing it the other way is madness from an FP point of view | 16:26 | |
masak | the FP point of view disallows madness. unless it takes place inside a monad. | 16:27 | |
:P | |||
TimToady | doing it the other way is madness from *my* point of view | 16:32 | |
it's just the wrong default; the onus should be on those few parameters that are rw to do the checking | 16:33 | ||
16:33
daniel-s joined
16:35
lateau_ joined
16:36
lateau_ left,
lateau_ joined
16:38
lumi__ left
16:39
lumi__ joined
16:41
ab5tract left
16:49
pmurias left,
wallberg joined
|
|||
masak | indeed. readonly is a nice default for attributes. | 16:50 | |
then people who don't care will have fewer dependencies on their API. | |||
er, I mean something like a less exposed API. | 16:51 | ||
16:52
MayDaniel left
|
|||
bbkr_ | I built nom from github (after it was set as the main branch), and --version shows still april - "2011.04-1869-gce13be6". is that correct or GitHub serves me the wrong code? | 16:52 | |
16:52
lumi__ left
|
|||
flussence | that's 2011.04 + 1869 commits. | 16:52 | |
16:52
lumi__ joined
|
|||
bbkr_ | ok, so it's correct. thanks | 16:53 | |
jnthn | That's quite some commits :) | 16:54 | |
16:54
lateau_ left
|
|||
masak | not enough! ;) | 16:54 | |
jnthn | You can have a few more when my spectest run is done :P | 16:55 | |
masak | \o/ | ||
16:59
birdwindupbird left
17:00
masak left
17:01
Chillance joined,
masak joined
17:02
shortcircuit joined,
mikemol left
17:05
lumi__ left
|
|||
pmichaud | I agree with "mutability containers", fwiw | 17:06 | |
17:06
lumi__ joined
|
|||
pmichaud | I was just trying to get the general idea across | 17:06 | |
dalek | kudo/nom: 36d06e1 | jonathan++ | src/Perl6/Metamodel/CurriedRoleHOW.pm: Add first cut of curried role type check handling. Works for some cases, but not all yet. |
17:07 | |
kudo/nom: 3e24ff0 | jonathan++ | src/Perl6/Metamodel/C (2 files): Make sure we don't lose imformation about how we arrived at a given concrete role; we need it in the type check list. |
|||
kudo/nom: d89d8c9 | jonathan++ | t/spectest.data: We now pass S14-roles/instantiation.t. |
|||
kudo/nom: 5d26134 | jonathan++ | NOMMAP.markdown: Update nommap. |
|||
ingy | tadzik: ping | ||
tadzik | ingy: pingy | ||
diakopter | !! | ||
ingy | tadzik: Mo has has default now | ||
tadzik | ingy: noticed, thanks | 17:08 | |
even commented on the commit | |||
ingy | dams++ | ||
tadzik | I still have some doubts about it though, let me recheck them | ||
ingy | oh | ||
I gave you a tadzik++ in the lightning talk just now | |||
tadzik | oh? What talk? | 17:09 | |
ingy: doubts: gist.github.com/1206761 | |||
17:10
molaf joined
|
|||
tadzik | moose doesn't behave that way | 17:10 | |
ingy | tadzik: I already released a comment that it is lazy | 17:11 | |
to cpan | 17:12 | ||
tadzik | it's not about laziness | ||
ingy | you made a comment that it should be documented | 17:13 | |
17:14
ab5tract joined
|
|||
tadzik | yes, but now I have a different doubts :) | 17:14 | |
I'll open an issue | |||
masak | tadzik: what'd your expected behaviour in this case? | ||
tadzik | masak: I'd expect the second say to print nothing | ||
ingy | yeah, that looks like what I would expect | ||
tadzik | that's what Moose does | ||
17:15
bbkr left
|
|||
ingy | that seems broken | 17:15 | |
or not | |||
masak | tadzik: ah, the "set" property. | ||
17:15
bbkr joined
|
|||
masak | tadzik: that problem shows up in Perl 6, too ;) | 17:15 | |
ingy | anyway, it's not really a big deal | ||
imho | |||
tadzik | not sure | ||
I have a feeling that golfing went to far :) | |||
ingy | well patch it then | 17:16 | |
masak | it's also a bit like the difference between exists and defined for hash keys. :) | ||
tadzik: look, do you want Mo or do you want... Moo? :P | |||
tadzik | :) | 17:17 | |
17:17
lumi__ left
|
|||
masak | (I think I agree with tadzik, btw. the distinction is probably useful enough to trump the minimalism.) | 17:17 | |
well, actually it depends how important the minimalism is. | |||
17:17
lumi__ joined
|
|||
ingy | I actually have a test for this | 17:18 | |
I thought that setting to undef to rebuild is useful | |||
tadzik | hmm, mebbe | ||
I filed an issue anyway | |||
as I said, not sure if bug, or just confusing | |||
ingy | well the best thing to do next is to at least document it | 17:19 | |
tadzik | ingy: so, what lightning talk was that? | 17:21 | |
ingy | the Mo lt | 17:22 | |
at IPW | |||
how would you implement not calling default again, btw? | 17:23 | ||
sorear | good * #perl6 | 17:24 | |
masak | good * sorear | ||
tadzik | I guess I'll just put all the defaults together and fire them up before BUILD | ||
sorear: hello | |||
sorear wonders if #perl6 knows why I wasn't here yesterday | |||
jnthn | sorear: Power outage? | 17:25 | |
colomon | o/ | ||
tadzik | or maybe... | ||
colomon | first day of classs? | ||
*classes | |||
sorear | jnthn: news travels fast | ||
tadzik | ingy: you could even put them all in the {@_} in bless | ||
ingy: the ones that are passed to new will overwrite the old ones anyway, as it's a hash | |||
masak | power outage in California? well, I never! | ||
jnthn | sorear: It was quite a big one, so it made it quite high up in the news :) | ||
masak: multi-country power cut! | 17:26 | ||
masak | jnthn: someone pulled the wrong plug? | ||
17:26
ab5tract left
|
|||
ingy | bbl | 17:26 | |
jnthn | masak: Something like... :) | ||
tadzik | people of big cities seem to be quite excited about power outages :0 | 17:27 | |
masak | there are worse things. | ||
jnthn | tadzik: Well, sure, it's the only time you can see the stars again :P | ||
masak | oil shortages, for example. | ||
tadzik | internet shortage :) | ||
masak | o.O | ||
jnthn | beer shortage :O | ||
masak | tadzik: right... the power goes out... and then you can't charge your smartphone... oh dear... :/ | 17:28 | |
tadzik | and the kindle becomes useless! | ||
masak | that would mean no IRC, no programming... | ||
17:28
lumi__ left
|
|||
tadzik | no bookreading! | 17:29 | |
how cruel is that | |||
17:29
lumi__ joined,
shortcircuit is now known as mikemol
17:30
lateau_ joined
|
|||
masak | it's like we have some sort of electricity dependency | 17:31 | |
flussence | ha, that's why I've got a solar-powered battery charger! | 17:36 | |
bbkr_ | pmichaud: I found so far following tickets that works correctly in NOM branch after switch - 63642, 64184, 65022, 65404, 65224, 66892, 66948(std changed). | ||
flussence | (now if only I had access to sunlight...) | ||
masak | flussence: if only the humans hadn't scorched the skies to keep the machines from getting solar energy! ;) | 17:37 | |
bbkr_++ | 17:38 | ||
17:41
ab5tract joined
17:44
lumi__ left,
lumi__ joined
|
|||
tadzik | or, you know what just came to my mind? | 17:45 | |
The Grammar::Debugger could have a feature to print the entire matched text, with different colours for different matched rules | |||
17:46
pernatiy left
|
|||
pmichaud | bbkr_: as long as we have tests for them, the tickets can be closed. If we don't have tests, then tag the tickets with "testneeded" | 17:50 | |
17:51
_twitch joined
|
|||
jnthn | tadzik: Sounds nice ;) | 17:51 | |
tadzik | it would a bit tricky for heavily overlapping matches, but you could maybe narrowize the colouring | 17:52 | |
bbkr_ | pmichaud: how can I tag a ticket? I don't see such option. | 17:53 | |
colomon just got The State of the Art in Numerical Analysis 1987 book in the mail (with the article on branch cuts of elementary complex functions). Very surprised to learn the state of the art did not include using TeX for math articles. What an ugly book! | 17:54 | ||
17:54
jevin left
|
|||
pmichaud | bbkr_: do you have bugadmin privs? | 17:54 | |
sorear | colomon: ow | ||
colomon: also, hi | |||
pmichaud | it's normally under the "Basics" menu | ||
masak | colomon: I would like to discuss branch cuts with you at some point. | 17:55 | |
17:55
jevin joined
|
|||
masak | colomon: not necessarily because I have something new to contribute; I just happen to like them and would like to wrap my brain around the situation :) | 17:55 | |
colomon++ # "complex issues" blog post | 17:56 | ||
bbkr_ | pmichaud: i have privs and found tagging. | ||
colomon | sorear: I've got sin/asin and cos/acos working locally. Taking a pause because when I started working on tan, I started to think that it might make more sense to move all the complex math into the C# Complex class, making the actual trig functions very simple. | 17:57 | |
sorear: I need to talk more about it with you soon, but have to blitz through some $work coding at the moment. | |||
masak: thanks. ;) | |||
17:58
lumi__ left,
lumi__ joined
|
|||
pmichaud | > .say for 1, 2, 6 ... 33.4 | 17:58 | |
1 | |||
2 | |||
6 | |||
unable to deduce sequence | |||
spectesting now | |||
tadzik | nom: .say for 1, 2, 6 ... 33.4 | 17:59 | |
p6eval | nom 5d2613: OUTPUT«Attempt to return from exhausted Routine in sub EXHAUST at src/gen/CORE.setting:456 in sub coro at src/gen/CORE.setting:3765 in method reify at src/gen/CORE.setting:3735 in method reify at src/gen/CORE.setting:3539 in method reify at src/gen/CORE.setting:353… | ||
17:59
ab5tract left
|
|||
masak | poor Routine | 17:59 | |
jnthn | Poor routine. | ||
wtf | |||
tadzik | definitely an improvement | ||
masak | jnthn: dude, don't do that :P | ||
jnthn | masak: Stop thinking the same thing as me :P | ||
masak steps away from the keyboard, slowly | 18:00 | ||
tadzik | quick, make the /quit joke :P | ||
dalek | kudo/nom: f9d94fe | pmichaud++ | src/core/operators.pm: Fix failure when unable to determine a sequence (RT #98678). |
||
masak .oO( "brain meld not yet complete. experiment shows jnthn used full stop at ze end of ze sentece and masak didn't before ze link was broken" ) | 18:01 | ||
also, capitalization differs somewhat. | 18:02 | ||
pmichaud | also there's a caps mismatch. | ||
d'oh! | |||
masak | wtf | ||
18:02
kst joined
|
|||
masak .oO( "hee hee hee" ) | 18:02 | ||
tadzik | stop it! | ||
sorear | niecza: say 1, 2, 6 ... 33.4 | 18:03 | |
p6eval | niecza v9-11-g0f286c3: OUTPUT«Unhandled exception: Unable to figure out pattern of series at /home/p6eval/niecza/lib/CORE.setting line 742 (CORE die @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 1778 (CORE get-next-closure @ 24)  at /home/p6eval/niecza/lib/CORE.setting line 1… | ||
pmichaud | masak: you've been on #perl6 too long... you're channeling other folks. | ||
flussence | niecza: say 1, 2, 6, 15 ... 33.4 | ||
masak | oh, so now it's my fault, is it? :) | ||
p6eval | niecza v9-11-g0f286c3: OUTPUT«Unhandled exception: Unable to figure out pattern of series at /home/p6eval/niecza/lib/CORE.setting line 742 (CORE die @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 1778 (CORE get-next-closure @ 24)  at /home/p6eval/niecza/lib/CORE.setting line 1… | ||
pmichaud | masak: I do notice a commonality. | 18:04 | |
masak | pmichaud: you'll note that I was first both times, at least in my frame of reference. :P | ||
pmichaud | mine too, but only bit a split second in each case | ||
s/bit/by/ | |||
sorear | the technical term for this is "groupthink" | ||
18:04
bbkr_ left
|
|||
pmichaud | the technical term for this is now "masakthink" | 18:04 | |
flussence | niecza: say 1, 2, 6, -> $a, $b { (($b - $a).sqrt + 1) ** 2 } ... 33.4 | ||
sorear | although it has acquired a bit of a pejorative flavor in the past years | ||
p6eval | niecza v9-11-g0f286c3: OUTPUT«(timeout)» | 18:05 | |
flussence | whoops. | ||
sorear | flussence: note, .sqrt returns a Num, which is unlikely to compare equal to 33.4 | ||
flussence | hm | ||
niecza: say 1, 2, 6, -> $a, $b { (($b - $a).sqrt + 1) ** 2 } ... * <= 33.4 | |||
masak | pmichaud: my pary are with the ones who think like masak. | ||
p6eval | niecza v9-11-g0f286c3: OUTPUT«1» | ||
flussence | niecza: say 1, 2, 6, -> $a, $b { (($b - $a).sqrt + 1) ** 2 } ... * > 33.4 | ||
p6eval | niecza v9-11-g0f286c3: OUTPUT«1 2 6 9 7.46410161513775 -0.535898384862245+2.47862734985495i -6.13376997932347+8.20141988922952i -2.40354521423811+10.9387828231834i 8.8185187537763+4.07648528744702i 19.2043261990253-8.82793483456432i 18.7275375504929-16.419782287884i 4.29945707500593-11.… | 18:06 | |
flussence fails at math | |||
niecza: say 1, 2, 6, -> $a, $b { $b + (($b - $a).sqrt + 1) ** 2 } ... * > 33.4 | |||
p6eval | niecza v9-11-g0f286c3: OUTPUT«1 2 6 15 31 56» | ||
18:06
_twitch left
|
|||
TimToady | someone should write .sqrat :) | 18:07 | |
tadzik | no wonder it didn't figure out that pattern :) | ||
sorear | what pattern? | ||
flussence | niecza: say 1, 2, -> $a, $b { $b + (($b - $a).sqrt + 1) ** 2 } ...^ * > 33.4 | ||
p6eval | niecza v9-11-g0f286c3: OUTPUT«1 2 6 15 31» | ||
flussence | I just figured it as "add next square number Int" | ||
TimToady | that is neither arithmetic nor geometric | ||
pmichaud | fwiw, rakudo.org/rt/testneeded is a list of tickets that can be closed if we have tests for them | ||
TimToady | no, it's multiple by 2, then multipy by 3, then by 4 | 18:08 | |
*ply | |||
so the next number should be 24, not 15 | 18:09 | ||
:P | 18:10 | ||
TimToady wonders how many oeis's start with 1, 2, 6 ... | |||
18:11
lumi__ left,
lumi__ joined
|
|||
TimToady | ooh, product of first n primes, 1, 2, 6, 30 | 18:12 | |
18:12
Limbic_Region joined
18:16
risou is now known as risou_awy
|
|||
sorear | any sequence of N integers can be extended infinitely many ways as a degree-N integer-valued polynomial | 18:17 | |
it's not well defined, unless you define it using a sequence of minimum Kolmogorov complexity | 18:18 | ||
pmichaud | afk, lunch | 18:21 | |
masak | sorear: somehow I knew someone would point that out :P | ||
cotto_work | sorear: so it's easy! | 18:23 | |
;) | |||
18:23
lumi__ left
18:24
lumi__ joined
18:26
lateau_ left
|
|||
TimToady | b: say ~map *.denominator, [\+] 1 X/ 1..100 | 18:27 | |
p6eval | b 1b7dd1: OUTPUT«Method 'denominator' not found for invocant of class 'Num' in <anon> at line 22:/tmp/U4GFapooQG in 'Any::join' at line 1:src/metamodel/RoleToInstanceApplier.nqp in 'List::Str' at line 2838:src/gen/core.pm in main program body at line 1:src/gen/core.pm» | ||
masak | b: say (1 X/ 1..100)[0].WHAT | 18:28 | |
p6eval | b 1b7dd1: OUTPUT«Rat()» | ||
sorear | wtf, Num? | ||
TimToady | b: .say for map *.denominator, [\+] 1 X/ 1..100 | ||
p6eval | b 1b7dd1: OUTPUT«126126020140280252025202772027720360360360360360360720720122522404084080775975201551950451731685173168118982864356948592Method 'denominator' not found for invocant of class 'Num' in <anon> at line 22:/tmp/MZOYXoDP5i in main program body at li… | ||
TimToady | there's another 1,2,6... | ||
masak | b: say ([\+] 1 X/ 1..100)[0].WHAT | ||
p6eval | b 1b7dd1: OUTPUT«Rat()» | ||
masak | b: say ([\+] 1 X/ 1..100)[1].WHAT | ||
p6eval | b 1b7dd1: OUTPUT«Rat()» | ||
masak | b: say ([\+] 1 X/ 1..100)[100].WHAT | 18:29 | |
p6eval | b 1b7dd1: OUTPUT«Any()» | ||
masak | b: say ([\+] 1 X/ 1..100)[90].WHAT | ||
p6eval | b 1b7dd1: OUTPUT«Num()» | ||
18:29
envi left
|
|||
TimToady | you get about 24 Rats | 18:29 | |
see above | |||
sorear | niecza: say map *.denominator, [\+] FatRat.new(1,1) X/ 1..100 | ||
p6eval | niecza v9-11-g0f286c3: OUTPUT«1 2 6 12 60 20 140 280 2520 2520 27720 27720 360360 360360 360360 720720 12252240 4084080 77597520 15519504 5173168 5173168 118982864 356948592 8923714800 8923714800 80313433200 80313433200 2329089562800 2329089562800 72201776446800 144403552893600 13127595… | ||
18:30
mberends joined
|
|||
sorear | otoh I'm in a great mood today | 18:31 | |
colomon | so about that FatRat.new(1,1) -- I've been thinking there ought to be a shorter way of saying that. ;) | ||
sorear | o/ mberends | ||
mberends | o/ sorear, great moods are great :) | 18:32 | |
mberends will dive back into documenting Niecza guts this weekend :) | 18:33 | ||
sorear | \o/ | ||
sorear makes up for lost time | |||
18:34
lumi__ left
18:35
lumi__ joined
|
|||
TimToady | niecza: say map *.denominator, [\+] Rat.new(1,1) X/ 1..100 | 18:35 | |
p6eval | niecza v9-11-g0f286c3: OUTPUT«Unhandled exception: Unable to resolve method denominator in class Num at /tmp/H4pdCv9WBk line 1 (MAIN C1_ANON @ 1)  at line 0 (KERNEL map @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 1262 (CORE GatherIterator.reify @ 5)  at line 0 (ExitRunl… | ||
TimToady | niecza: .say for map *.denominator, [\+] Rat.new(1,1) X/ 1..100 | 18:36 | |
p6eval | niecza v9-11-g0f286c3: OUTPUT«126126020140280252025202772027720360360360360360360720720122522404084080775975201551950451731685173168118982864356948592892371480089237148008031343320080313433200232908956280023290895628007220177644680014440355289360013127595… | ||
TimToady | FatRat not necessary for that much of it... | ||
18:37
alester joined
|
|||
TimToady | niecza: .say for map *.denominator, [\+] 1/1 X/ 1..100 | 18:37 | |
p6eval | niecza v9-11-g0f286c3: OUTPUT«126126020140280252025202772027720360360360360360360720720122522404084080775975201551950451731685173168118982864356948592892371480089237148008031343320080313433200232908956280023290895628007220177644680014440355289360013127595… | ||
TimToady | niecza: .say for map *.denominator, [\+] 1 X/ 1..100 | ||
p6eval | niecza v9-11-g0f286c3: OUTPUT«126126020140280252025202772027720360360360360360360720720122522404084080775975201551950451731685173168118982864356948592892371480089237148008031343320080313433200232908956280023290895628007220177644680014440355289360013127595… | ||
18:39
cognominal left
|
|||
TimToady | niecza: constant FatRat F1 = 1/1; .say for map *.denominator, [\+] F1 X/ 1..100 | 18:39 | |
p6eval | niecza v9-11-g0f286c3: OUTPUT«===SORRY!===Malformed constant at /tmp/k73ZFoayYu line 1:------> constant FatRat ⏏F1 = 1/1; .say for map *.denominator, [\Parse failed» | ||
TimToady | niecza: constant F1 of FatRat = 1/1; .say for map *.denominator, [\+] F1 X/ 1..100 | ||
p6eval | niecza v9-11-g0f286c3: OUTPUT«126126020140280252025202772027720360360360360360360720720122522404084080775975201551950451731685173168118982864356948592892371480089237148008031343320080313433200232908956280023290895628007220177644680014440355289360013127595… | ||
TimToady | \o/ | 18:40 | |
colomon: ^^ | |||
colomon | TimToady++ | ||
18:41
tdignan left
|
|||
TimToady | niecza: constant F1 of FatRat = 1/1; say (F1 * 2).WHAT | 18:41 | |
p6eval | niecza v9-11-g0f286c3: OUTPUT«Rat()» | ||
TimToady | hmm | ||
colomon was thinking of 1F, with postfix:<F>(Int $x) { FatRat.new($x, 1) } | |||
TimToady | niecza: constant F1 of FatRat = 1/1; say F1.WHAT | ||
p6eval | niecza v9-11-g0f286c3: OUTPUT«Rat()» | ||
18:41
cognominal joined
|
|||
TimToady | heh | 18:41 | |
niecza: constant F1 of FatRat = FatRat(1,1); say F1.WHAT | |||
p6eval | niecza v9-11-g0f286c3: OUTPUT«Unhandled exception: Unable to resolve method postcircumfix:<( )> in class FatRat at /tmp/qiXwRG_Oy8 line 1 (MAIN F1 init @ 1)  at line 0 (ExitRunloop @ 0)  at line 0 (boot-MAIN @ 0)  at line 0 (ExitRunloop @ 0)  at /home/p6eval/niecza/boot/lib… | ||
TimToady | niecza: constant F1 of FatRat = FatRat.new(1,1); say F1.WHAT | 18:42 | |
p6eval | niecza v9-11-g0f286c3: OUTPUT«FatRat()» | ||
TimToady | niecza: constant F1 of FatRat = FatRat.new(1,1); say (2 * F1).WHAT | ||
p6eval | niecza v9-11-g0f286c3: OUTPUT«FatRat()» | ||
TimToady | niecza: constant F1 of FatRat = FatRat.new(1,1); .say for map *.denominator.chars, [\+] F1 X/ 1..1000 | 18:43 | |
p6eval | niecza v9-11-g0f286c3: OUTPUT«1112223344556666878877991010111113131415141414141515151517161819191920202222222224232323232325252727262727262828282830313333333332323333343436363 | ||
18:46
jevin left,
lumi__ left
|
|||
cotto_work | what would it take to teach p6eval how to do irc colors? | 18:46 | |
18:46
lumi__ joined
|
|||
cotto_work | or is my client just misconfigured | 18:47 | |
[Coke] | as opposed to? | ||
18:47
cognominal_ joined
|
|||
[Coke] | it's working for me on IRSSI (at least sometimes, I get well formatted color.) | 18:47 | |
on the "Sorry's" from niecza. | |||
masak | cotto_work: p6eval did do IRC colors for a while. it was dreadful. | 18:48 | |
cotto_work: on the other hand, the IRC logs do color in things a bit afterwards. | |||
18:49
cognominal left,
ab5tract joined
|
|||
TimToady | p6eval does color fine in irssi | 18:50 | |
sorear | cotto_work: irssi parses ECMA-48 color codes. this feature is not universal | ||
18:50
jevin joined
|
|||
sorear | masak: please elaborate on "dreadful". I am curious. | 18:50 | |
interestingly Wikipedia thinks that "ANSI colors" is plain wrong | 18:51 | ||
ECMA-48 was created in 1976. ANSI adopted ECMA-48 as ANSI X3.64 in 1981, then dropped it in 1997 | |||
TimToady | dropped it because the Swedes thought it was dreadful? :P | 18:53 | |
sorear | why would the American National Standards Institute care what the Swedes think? | 18:54 | |
the Swedes ought to have more influence on the European Computer Manufacturers Association, which did *not* drop it | |||
masak | they should! | ||
sorear: basically, the reason was that the ANSI escape codes showed up as ANSI escape codes in my client, and it drove me bananas. | 18:56 | ||
18:56
mj41 joined
|
|||
TimToady | just think of it as a foreign language/orthography you haven't learned yet | 18:57 | |
18:58
ab5tract left
|
|||
sorear | masak: p6eval generates ANSI escape codes right now | 18:58 | |
TimToady | eventually you'll be able to translate the codes in your head, and visualize the colors :) | ||
or maybe Google Translate could fix 'em :) | |||
masak | sorear: I'm not sure exactly what bothered me. I haven't found the backlog yet, although it seems to have been sometime back in 2009. | 18:59 | |
I've found me swearing about it a couple of times later that year. | |||
sorear | masak: are you maybe thinking of "hilight"? | 19:00 | |
19:00
lumi__ left
|
|||
sorear | there was, in ~2009, a p6eval "implementation" that fed code through STD_syntax_highlight | 19:00 | |
19:00
lumi__ joined
19:01
jevin left
|
|||
masak | that could be it. | 19:01 | |
19:03
Tene joined,
Tene left,
Tene joined
|
|||
TimToady | there's no point in holding grudges forever if you don't remember *what* you have a grudge against... | 19:03 | |
19:03
jevin joined
19:04
REPLeffect joined
|
|||
[Coke] has a request - can folks save him some .tar.gz files that get sent to smolder and leave them on feather for me somewhere? | 19:06 | ||
TimToady: I don't even see the codes anymore, I just see, parsefail, exception, line numbers. (?) | 19:07 | ||
masak | TimToady: :) | ||
pmichaud | back from lunch | ||
[Coke] | pmichaud: LUNCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCH. what an excellent idea that would have been. | 19:08 | |
masak is going through what he said in 2009 and notices how much masak-in-2009 kept talking about submitting RT tickets | |||
[Coke]: I'm not lunch with that many "C"s in it is healthy. | |||
TimToady | RT == delegating grudges :) | 19:09 | |
masak: CC señor! | 19:10 | ||
lunCCh & | |||
masak | oh mberends, u so silly -- irclog.perlgeek.de/perl6/2009-01-15#i_833214 :P | ||
pmichaud | since I basically skipped lunch most days this week it felt good to actually have lunch. | ||
nom: .say for 1, 2, 6 ... 31 | 19:11 | ||
p6eval | nom f9d94f: OUTPUT«126unable to deduce sequence in sub <anon> at src/gen/CORE.setting:7000 in sub coro at src/gen/CORE.setting:3765 in method reify at src/gen/CORE.setting:3734 in method reify at src/gen/CORE.setting:3538 in method reify at src/gen/CORE.setting:3538 in me… | ||
pmichaud | much better. | ||
19:11
lumi__ left
|
|||
cotto_work | nice | 19:11 | |
pmichaud++ | |||
19:12
ab5tract joined
19:13
lumi__ joined
|
|||
flussence | [Coke]: ~ $ ls .local/tmp/*.tar.gz | wc -l650 | 19:13 | |
that enough for you? | |||
19:14
avinash joined
|
|||
flussence | (the closest place I can leave them on is feather3...) | 19:14 | |
masak | ooh! ovid hung out in #perl6 in early 2009. I wonder why he stopped. | 19:15 | |
19:16
avinash left
19:18
fridim_ joined,
pmurias joined
|
|||
moritz | \o | 19:18 | |
sorear | o/ pmurias | 19:19 | |
pmurias | sorear: how can i print out nam for a perl6 file? | ||
sorear: hi | |||
sorear | run the compiler, then look in obj/ | 19:20 | |
pmurias | what's the recommended way to printy-print the resulting JSON? | 19:24 | |
sorear | head -n1 obj/MAIN.nam | json_xs | less | ||
tail -n1 obj/MAIN.nam | json_xs | less | |||
the file contains two JSON documents, one per line | |||
19:24
lumi__ left
19:25
lateau_ joined
|
|||
sorear | #1 contains metadata #2 is mostly executable code | 19:25 | |
19:25
lumi__ joined
|
|||
sorear | I'm far less than 100% happy with the design of this part of the system | 19:25 | |
pmurias | did that change from the common lisp backend times? | 19:26 | |
sorear | only a little bit | ||
I think in the clisp backend times there was only one document | 19:27 | ||
pmurias | i think so | ||
sorear | I split them to speed up "use" statement processing - it reduces the amount of data that needs to be loaded | ||
other than that there have been no large-scale changes to the nam subsystem | |||
obviously new ops have been added; I may have rearranged a few records | 19:28 | ||
pmurias | Unhandled exception: Unable to resolve method shift in class Str | ||
for "use Bar" | |||
sorear | you probably have a Bar.nam from a previous compiler version lying around | 19:29 | |
I want to add versioning information but I'm not totally sure how it should look | |||
oh, I know: I could make the files 3 lines with the first line a version number | 19:30 | ||
pmurias | yes, that's the case | ||
sorear | then versioning wouldn't keep us tied to JSON | ||
pmurias | seems sensible | ||
the other choice is if you want to have the git revision of the compiler or a version of the nam format | 19:31 | ||
sorear | a version of the nam format | 19:32 | |
partly because I don't want constant recompilation, partly because we can't portably get the git revision | 19:33 | ||
19:34
Yappoko___ left
19:35
lumi__ left,
Yappoko___ joined,
lumi__ joined
|
|||
pmurias | sorear: i can't imagine anything better | 19:40 | |
besides possibly saving a couple of bytes with a binary format, but i'm not sure it's worth that | 19:41 | ||
s/not sure it's worth that/doesn't seem sensible | 19:42 | ||
19:44
ab5tract left
|
|||
masak | rakudo: .say for (1 ... 10) Z (10 ... 1) | 19:46 | |
p6eval | rakudo f9d94f: OUTPUT«(timeout)» | ||
pmurias | sorear: where in obj/ is the .nam file supposed to be? | ||
masak | niecza: .say for (1 ... 10) Z (10 ... 1) | ||
p6eval | niecza v9-11-g0f286c3: OUTPUT«1102938475665748392101» | ||
masak submits rakudobug | 19:47 | ||
niecza: .say for (1 ... 10), (10 ... 1) | 19:49 | ||
p6eval | niecza v9-11-g0f286c3: OUTPUT«1234567891010987654321» | ||
masak | rakudo: .say for (1 ... 10), (10 ... 1) | ||
p6eval | rakudo f9d94f: OUTPUT«Not enough positional parameters passed; got 0 but expected 1 in sub generate at src/gen/CORE.setting:6933 in sub coro at src/gen/CORE.setting:3765 in method reify at src/gen/CORE.setting:3735 in method reify at src/gen/CORE.setting:3539 in method reify a… | ||
19:49
lumi__ left
|
|||
masak | at the rate I'm stumbling over bugs just by *trying stuff randomly*... | 19:49 | |
...I think nom has some ways left to go before it replaces b. | 19:50 | ||
19:50
lumi__ joined
|
|||
TimToady | if that's your random mode I'd hate to see your malice aforethought mode... :) | 19:54 | |
masak | I have nothing to add to that. | 19:57 | |
TimToady | my only ray of light is that, if you really do have a malice aforethought mode, I probably won't ever see it coming, since I'm probably #1 on the list of people to be Dealt With... | 19:59 | |
masak hugs TimToady :) | 20:02 | ||
20:02
ab5tract joined
20:07
lumi__ left,
[Coke] left
|
|||
TimToady | perl6: say "møøse".utf8.bytes; | 20:07 | |
p6eval | niecza v9-11-g0f286c3: OUTPUT«Unhandled exception: Unable to resolve method utf8 in class Str at /tmp/_a4tY7zPxV line 1 (MAIN mainline @ 1)  at /home/p6eval/niecza/lib/CORE.setting line 2046 (CORE C956_ANON @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 2047 (CORE module-CORE … | ||
..rakudo f9d94f: OUTPUT«Method 'utf8' not found for invocant of class 'Str' in <anon> at /tmp/jGdOiiHCbE:1 in <anon> at /tmp/jGdOiiHCbE:1» | |||
..pugs: OUTPUT«decodeUTF8': bad data: '\248'decodeUTF8': bad data: '\248'*** No such method in class Str: "&utf8" at /tmp/MnghRQ3eN4 line 1, column 5-23» | |||
TimToady | wowee! | ||
20:08
lumi__ joined
|
|||
pmichaud | b: say "møøse".utf8.bytes; | 20:08 | |
p6eval | b 1b7dd1: OUTPUT«Method 'utf8' not found for invocant of class 'Str' in main program body at line 22:/tmp/4ixnEGP_ml» | ||
pmichaud | Looks like we all suck. | ||
20:09
bluescreen10 left
|
|||
moritz | b: say "møøse".encode.bytes | 20:10 | |
p6eval | b 1b7dd1: OUTPUT«Method 'bytes' not found for invocant of class '' in main program body at line 22:/tmp/XhEQexSgzD» | ||
moritz | b: say ~"møøse".encode.^methods | ||
p6eval | b 1b7dd1: OUTPUT«new decode unpack perl elems postcircumfix:<[ ]> at_pos of contents can isa does list ACCEPTS Str Numeric Seq all any one none join elems flat map sort rotate first grep reverse end min max minmax pick roll classify reduce uniq kv keys values pairs postcircumfix:<[ ]> a… | ||
flussence | oh no, '' was hiding in there all along! | ||
moritz | b: say "møøse".encode.elems | ||
p6eval | b 1b7dd1: OUTPUT«7» | ||
moritz | happy? :-) | ||
TimToady | well, there's s'posed to be a utf8 buf type... | 20:11 | |
rakudo: say "møøse".encode.elems | |||
p6eval | rakudo f9d94f: OUTPUT«Method 'encode' not found for invocant of class 'Str' in <anon> at /tmp/dD_5e6qUeK:1 in <anon> at /tmp/dD_5e6qUeK:1» | ||
20:12
pernatiy joined
|
|||
TimToady | b: say "møøse".encode.WHAT | 20:12 | |
20:12
lateau_ left
|
|||
p6eval | b 1b7dd1: OUTPUT«Buf()» | 20:12 | |
TimToady | I don't think there's really a Buf type, more of a Buf role | 20:13 | |
well, maybe it's a buf role, and Buf is just Array of Int | |||
20:15
Moukeddar joined
|
|||
Moukeddar | hi guys | 20:15 | |
20:15
lumi__ left
20:16
Trashlord joined,
lumi__ joined
|
|||
TimToady wonders if class utf8 is buf8 in a Liskovian sense... | 20:16 | ||
initial reviews are mixed | 20:17 | ||
in some sense it's more like 'subset utf8 of buf8 where *.valid_utf8' or some such, but you wouldn't want to be revalidating every moment | 20:18 | ||
sorear | perl6: say "mǫǫse".bytes | 20:19 | |
p6eval | pugs: OUTPUT«decodeUTF8': bad data: '\491'decodeUTF8': bad data: '\491'7» | ||
..rakudo f9d94f: OUTPUT«7» | |||
..niecza v9-11-g0f286c3: OUTPUT«10» | |||
sorear | perl6: say "møȯse".bytes | ||
perl6: say "møøse".bytes | |||
p6eval | rakudo f9d94f: OUTPUT«7» | ||
..niecza v9-11-g0f286c3: OUTPUT«10» | |||
..pugs: OUTPUT«decodeUTF8': bad data: '\248'decodeUTF8': bad data: '\559'7» | |||
pugs: OUTPUT«decodeUTF8': bad data: '\248'decodeUTF8': bad data: '\248'7» | |||
..rakudo f9d94f: OUTPUT«5» | |||
..niecza v9-11-g0f286c3: OUTPUT«10» | |||
sorear | finally got it right... | ||
hello Moukeddar | |||
pmurias: obj/{$class.subst('::','.')}.nam | 20:20 | ||
TimToady | well, but Str isn't really supposed to respond to .bytes, by one rationale of thinking | ||
sorear | TimToady: isn't it more like Buf === Array[int8]? | ||
rather than Array[Int] | |||
TimToady | not at all | 20:21 | |
Buf isn't supposed to care how big its ints are, in the abstract | |||
20:22
bluescreen10 joined
|
|||
sorear | TimToady: what is the purpose of Buf? | 20:22 | |
moritz | so the only difference between Buf and Str (conceptually) is that Buf doesn't try to interpret its elements as characters? | 20:23 | |
TimToady | Buf is really a role, but it's true that the spec currently claims it puns to Buf[uint8] by default | ||
sorear | moritz: characters are not integers anymore | ||
there's no reasonable way to assign a numeric value to a .chars==1 NFG string like n-umlaut | 20:24 | ||
TimToady | the whole point of NFG is to force that anyway even when it's unreasonable :) | 20:25 | |
masak | ...by hijacking the negative integers. | 20:26 | |
TimToady | moritz: a further difference is that Buf allows array ops, while Str doesn't, as currently specced | ||
and a Buf doesn't have to account for weird NFG chars | 20:27 | ||
20:27
ab5tract left
20:30
lumi__ left
|
|||
TimToady | two graphemes are distinct if they have differing NFG integers, or if they are the same, but are both negative and point to two different NFG tables that contain different codepoint mappings | 20:30 | |
20:31
lumi__ joined
|
|||
TimToady | didn't say that quite right | 20:31 | |
20:31
ab5tract joined
|
|||
TimToady | two negatives must always compare with the table mappings | 20:31 | |
since two different negatives in two different tables might map to the same sequence | 20:32 | ||
hopefully these are relatively rare, in normal text | 20:33 | ||
though I foresee for some languages that rely heavily on composition that NFG strings in that language might want to share a translation table for some of the synthetic codepoints | 20:34 | ||
anyway, such codepoints are rare in CJK and western scripts | |||
generally one or the other of the comparands will be positive, and represent a normal NFC codepoint | 20:35 | ||
sorear | well, a Str needs a grapheme mapping table then; it isn't _just_ a Buf | 20:40 | |
TimToady | I just said that | ||
sorear | in principle we could have a global grapheme map, but I am very nervous about that from a garbage-collection viewpoint | 20:41 | |
TimToady | that's what I mean at :27 | ||
not so much the GC perspective as the DOS perspective, for me | |||
er, DoS | |||
sorear | oh, I managed to miss that one line | ||
20:41
ab5tract left
|
|||
sorear | TimToady: if negative codepoints are reclaimed by the GC, we don't have a DoS problem | 20:42 | |
TimToady | so my guess is that a robust NFG would reserve some amount of global space for the process, then overflow to per-string | ||
sorear: hmm, I guess | |||
20:44
ab5tract joined
|
|||
TimToady | otoh, if one wants to, say, use uint8 or uint16 for some chunks of the "rope", it's good to have numbers that don't exceed -256 or -65536 | 20:44 | |
er, -128 and -32768 | |||
and locality of character sets would tend to make that work better for per-string tables | 20:45 | ||
or per-rope-segment | |||
20:45
lumi__ left
20:46
lumi__ joined
|
|||
sorear | TimToady: er, "int8" "int16"? | 20:47 | |
TimToady | nodnod | 20:48 | |
TimToady slaps his brane around several times | |||
bbkr | pack() disappeared in nom branch? | ||
tadzik | Buf NYI | ||
20:48
[Coke] joined
|
|||
[Coke] | . | 20:49 | |
masak | pack() was never very implemented in b either. | ||
I'd love to collaborate with someone over a serious implementation for nom. | |||
TimToady | and if we can easily map both positive and negative graphs to their NFD sequence, it becomes fairly straightforward to do partial matching sans some or all of the marks | ||
well, as straightforward as anything ever is in Unicode | 20:50 | ||
masak | that, and the exciting new features having to do with pack()-like functionality for compact classes. | ||
bbkr | i know pack() wasn't seriously implemented. whole spec section is missing for it. | ||
masak | bbkr: well, it's right there in S32. but not very ironed out, no. | ||
TimToady | there's always been some suspicion that pack was the wrong solution to most serialization problems | ||
masak | ISTR a number of questions about it are up in the air. | ||
TimToady: the compact-classes idea sounds intriguing, but no-one knows how it'll look. | |||
sorear | pack is more flexible than compact-classes, imo | 20:51 | |
masak | my guess is that pack/unpack will remain, but some of their niche will be eaten by compact classes. | ||
TimToady | I tend to view the pack engine as the underlying mechanism, but its assembly is usually driven by compiling the class down to the "assembly" | ||
and then with appropriate constant folding you can treat the pack format as immutable, and optimize further | 20:52 | ||
sorear | +1 | 20:53 | |
I can get behind that. | |||
sorear wonders if the pack engine is the same as the sprintf engine | |||
TimToady | well, if it's turing complete, sure :) | 20:54 | |
I have a bridge for sale made out of turning machines... | 20:55 | ||
20:55
lumi__ left
|
|||
TimToady | *turing, gah | 20:55 | |
bbkr | is restoring pack/unpack support expected before first release from nom branch? | ||
TimToady | dubitable | ||
masak | not necessarily. | 20:56 | |
TimToady | however, if you want to champion it... :) | ||
20:56
lumi__ joined
|
|||
masak | since there wasn't much there before. | 20:56 | |
tadzik | you may want to tackle nom-buf branch | ||
masak | I think I promised pmichaud to reimplement pack/unpack... | ||
sorear wonders if a universal turning machine is like a universal touring machine | 20:59 | ||
masak: how are macros? I saw them discussed when I searched the logs for ?sorear? | 21:00 | ||
TimToady | does a universal touring machine come with an infinite road? | ||
pmichaud | masak: I think I mainly asking for help reimplementing pack/unpack :) | ||
I still want to rework b's buf implementation | |||
(don't know when I'll do that atm, though) | |||
masak | sorear: my grant application got published: news.perlfoundation.org/2011/09/hag...mplem.html | 21:01 | |
pmichaud | yes, everyone please comment on masak++'s grant app | ||
masak | sorear: I have a local branch which I wrote, with jnthn's help, in Tallinn. | ||
tadzik | I did, and it didn't appear yet | ||
TimToady | everyone here has N things they have to do before they do anything else, where N is not normally 1. :) | ||
masak | sorear: plan to get it ready for pushing this weekend. | ||
TimToady: we need more of us. | 21:02 | ||
TimToady | no, we need more of those folks whose N is 0 | ||
masak | hah! suckers. | 21:03 | |
bbkr | pack template needs serious redesign. many P5 tokens doesn't make sense in P6. | ||
TimToady | there are already too many of us whose N ⋙ 1 | ||
masak | bbkr: that's what I found. | ||
sorear | TimToady: I have 0 things to do before I finish doing CLR interop, 1 thing to do before I change Complex for colomon, 2 things to do before I try to implement NFG... | 21:04 | |
masak | bbkr: it was slow going to implement, because there were ASCII assumptions, or Buf/Str confusions, in a lot of places. | ||
TimToady | how...linear... | ||
21:04
im2ee left
|
|||
pmichaud | it's at least inductive to some extent :) | 21:04 | |
TimToady | yes, assembly languages tend to allow massive type violations :) | ||
21:05
im2ee joined
|
|||
masak | I like the analogy. | 21:05 | |
sorear | types exist only in my head anyway. | ||
TimToady is analogy retentive... | |||
sorear reads the hague application | |||
masak | but the square peg of pack/unpack doesn't always fit extremely well into the round hole of Perl 6 Str/Buf philosophy... | ||
TimToady | well, Str has almost nothing to do with it, since pack is almost certainly going to produce a Buf of some sort | 21:06 | |
21:06
lumi__ left
|
|||
sorear | straw man proposal: pack is sprintf for Buf and vice versa | 21:07 | |
pack uses a format string to convert whatever to bytes | |||
TimToady huffs and puffs | |||
sorear | sprintf uses a format string to convert whatever to chars | ||
21:07
lumi__ joined
|
|||
TimToady | please don't mention scanf, or I shall be ill... | 21:08 | |
oops | |||
21:08
Moukeddar left
21:09
ab5tract left
|
|||
masak | I'm sure it made a lot of sense at the time. | 21:09 | |
TimToady | um | ||
not really :) | |||
21:11
dukeleto left
|
|||
sorear | unpack is like sscanf then. | 21:12 | |
bbkr | i think that the nice idea for pack would be to introduce captures in template. for example a lot of serializations mention how many objects of given type will follow and then pass the objects. so template for "5abcde" may look like this: (V)A*$0 | ||
21:13
dukeleto joined
|
|||
sorear | I don't much hate scanf per se, but anyone caught using it on ttys should be scolded | 21:13 | |
bbkr: that's unpack, not pack | |||
bbkr | sorear: right | 21:14 | |
flussence | .oO( maybe we should have a version of grammars for binary data... ) |
21:15 | |
21:15
bbkr left,
bbkr joined
|
|||
sorear | flussence: we already do, in the "wishful thinking" section of S05 | 21:15 | |
flussence | oh. | ||
TimToady | the other problem is accounting for the difference between types whose size is absolute vs those whose size is determined by C | ||
sorear | we should have varying degrees of mandatoryness | 21:16 | |
it doesn't make a whole lot of sense to have C pack types in a CLR Perl6 | |||
bbkr | what are those "compact classes"? | 21:18 | |
sorear wonders if ey should comment on masak's grant proposal | |||
bbkr: classes with only native-type fields are considered to implicitly define a pack/unpack template | |||
21:18
mj41 left
21:19
lumi__ left
21:20
lumi__ joined
|
|||
TimToady | bbkr: see also perlcabal.org/syn/S09.html#Compact_structs | 21:20 | |
and perlcabal.org/syn/S09.html#Compact_arrays | 21:21 | ||
bbkr likes this idea | 21:22 | ||
21:23
SHODAN joined
21:24
fhelmberger_ joined,
fhelmberger_ left
21:25
fhelmberger_ joined
|
|||
flussence | I've got a pretty solid idea of how to implement a compact struct role using pack/unpack - the main thing stopping me is finding a perl6 with pack and native types at the same time... | 21:25 | |
21:25
y3llow left,
pothos left
21:27
y3llow joined,
pothos_ joined
21:28
pothos_ is now known as pothos,
fhelmberger_ left
21:29
y3llow left,
y3llow joined
|
|||
bbkr has to rewrite whole BSON module :( | 21:30 | ||
21:30
lumi__ left,
pothos left,
lumi__ joined,
pothos_ joined
|
|||
TimToady wonders what BavaScript is... | 21:31 | ||
21:31
pothos_ is now known as pothos
21:32
ggoebel left,
ggoebel joined
|
|||
pmichaud | [Coke]: I didn't forget "IsRakudoFastYet" -- just been distracted by other stuff. | 21:33 | |
sorear | no, no, it's "BS object notion". pejorative name, you see | ||
pmichaud | (other non-p6 stuff :-| ) | ||
TimToady ponders BF object notation | 21:34 | ||
pmichaud: your N is always > 1 :) | |||
decomputing & | 21:36 | ||
21:36
HarryS left
|
|||
masak 's N is surreal | 21:42 | ||
21:42
bbkr left
21:44
SHODAN left
|
|||
masak | isn't it odd how, just like complex analysis, surreal numbers actually make it much *easier* to talk about infinities and infinitesimals. with our ordinary real number line and real analysis, we always have to approach things by limits. | 21:44 | |
with surreal numbers and the Riemann sphere, infinities are actual values. | 21:45 | ||
21:48
lumi__ left
21:52
bluescreen10 left
|
|||
pmichaud | hmmm. the problem with "say (1...10), (10...1)" looks like a lexical scoping or closure problem. | 21:52 | |
jnthn | Oh? | 21:53 | |
pmichaud | yeah. I have a lexical that is changing at a distance | ||
or an outer that isn't being managed properly | |||
jnthn | :( | ||
Location? | 21:54 | ||
21:54
lumi__ joined
|
|||
pmichaud | in SEQUENCE() (src/core/operators.pm) | 21:54 | |
21:54
pmurias left
|
|||
pmichaud | the "generate" nested sub isn't seeing the proper $tail | 21:54 | |
when there are two active calls in the same statement | |||
let's see if I can golf it down | 21:55 | ||
jnthn | my sub generate($code) { # my is the default :) | ||
pmichaud | doesn't hurt to be explicit :) | ||
I kind of like seeing the "my" there, to make it clear that this is really local. | |||
jnthn | Yes, true. Emphasis can be nice :) | ||
masak | huh. | 21:56 | |
never had such a desire :) | |||
am I just being haughty if I think "people should know that subs are 'my'"? :) | |||
jnthn | masak: Not really | ||
masak: It's like you can write has $x; but most people instead write has $!x; | |||
masak | I mean, if I took into account all the things I *could* make explicit... | 21:57 | |
jnthn | masak: Just that in that case the community at large seems to have called it the other way :) | ||
masak | jnthn: yeah, but in that case 'has $x' is actually the derived form. | ||
it's not that the '!' doesn't add anything... it was there all the time :P | 21:58 | ||
the 'my' wasn't, because it didn't have to be. | |||
jnthn | masak: I guess you could think of it that way, but the compiler will generate the same thing for you either way :) | ||
masak | I know, I know. :) | ||
I'm just trying to explain why I felt it was a not-quite-right comparison. | |||
pmichaud | comments don't have to be there either :) | ||
masak | I tend to write comments only when the programming language itself can't explain what I want. | 21:59 | |
jnthn | masak: For the record, I actually quite like the "generally we don't write my, and generally we do write $!x" that folks seem to have settled on. :) | ||
masak | lately I've been having a grand time weaving comments into the code in various ways. | ||
things like '# just in case' | |||
jnthn | // Initializes the object | 22:00 | |
...constructor follows... | |||
masak | augh | ||
jnthn: t-t-t-t-t-t-telephon. | |||
e* | |||
jnthn | augh | ||
masak | ;) | ||
no, I meant something quite the opposite of that. | 22:01 | ||
im2ee | Umm, hard day. :) | ||
masak | more like the comments being a 'commentator track' to the code, saying things that don't quite fit in there but that might merit saying. | ||
sorear | masak: I work with people who don't want to learn the relative precedence of || and && and insist that I parenthetize logic expressions | ||
pmichaud | yeah, something weird is happening here. gist coming up | 22:02 | |
gist.github.com/1207447 | |||
jnthn | pmichaud: fwiw, the outer looks right in PIR | ||
masak | sorear: yeah, I hate having to do that! but sometimes I yield. | ||
22:02
im2ee left
|
|||
jnthn | sorear: A while ago, somebody "fixed" my code by adding parens in such a case where I thought it was too obvious to need them. | 22:02 | |
22:03
im2ee joined
|
|||
jnthn | sorear: They put them in the wrong place and broke it. | 22:03 | |
:S | |||
pmichaud | jnthn: so, you thought it was obvious (it wasn't to them), and they thought they knew what the code was doing (they didn't). | ||
in which it might've been better for you to put them there in the first place :-P | |||
masak | sorear: unfortunately, when it comes to precedence, the following are well-known and assumed well-known: the five mathematical operations. assignment. everything else is a potential target fro parenthesization. | ||
pmichaud | in p6, assignment isn't well known yet :) | 22:04 | |
jnthn | pmichaud: Yeah, it woulda been in hindsight :) | ||
pmichaud | people still get confused by my $list = 1,2,3; | ||
jnthn | pmichaud: ooc, can you produce a case not involving GATHER? | ||
pmichaud | jnthn: I'm thinking it has something to do with the lazy evaluation, though. | ||
im2ee | Hard day, so its time for me. Have a nice night or day. Bye! :) | ||
masak | std: my $list = 1, 2, 3; | ||
p6eval | std bb4f150: OUTPUT«ok 00:01 122m» | ||
jnthn | night, im2ee | 22:05 | |
masak | im2ee: 白白 | ||
pmichaud | I might be able to do something with map. | ||
jnthn | masak: I thought, "what"...then realized how those chars sound :) | ||
22:05
im2ee left
|
|||
sorear hears shiro-shiro | 22:06 | ||
masak | jnthn: that's how they spell it :) | ||
22:06
lumi__ left
|
|||
masak | phenny: zh en "白白"? | 22:07 | |
phenny | masak: "In vain" (zh to en, translate.google.com) | ||
masak | er. | ||
sorear | mm, Ybai2 | ||
masak | sorear: right. | ||
sorear | bye-bye | ||
masak | despite what phenny says :) | ||
sorear | my Japanese dictionary has a Mandarin/Pinyin field for no obvious reason | ||
22:07
lumi__ joined
|
|||
pmichaud | jnthn: it fails with .map, too | 22:07 | |
let me clean up the code a bit and I'll gist it | 22:08 | ||
jnthn | pmichaud: Looking at your last one. The closure passed to GATHER is cloned. So it's not that. | ||
22:08
bluescreen10 joined
|
|||
jnthn | pmichaud: oh, but the generate sub is not... | 22:09 | |
nom: sub foo($x) { sub bar() { say $x } return { bar() } }; my $a = foo(1); my $b = foo(2); $a(); $b(); | 22:10 | ||
p6eval | nom f9d94f: OUTPUT«===SORRY!===Unable to parse blockoid, couldn't find final '}' at line 1» | ||
jnthn | nom: sub foo($x) { sub bar() { say $x }; return { bar() } }; my $a = foo(1); my $b = foo(2); $a(); $b(); | ||
p6eval | nom f9d94f: OUTPUT«22» | ||
jnthn | pmichaud: ^^ could be at the root of this. | ||
sorear | wtf | ||
seriously? | |||
jnthn | b: sub foo($x) { sub bar() { say $x }; return { bar() } }; my $a = foo(1); my $b = foo(2); $a(); $b(); | ||
p6eval | b 1b7dd1: OUTPUT«12» | ||
sorear | closures don't work in nom? | ||
pmichaud | I suggest trying it without the 'return', to avoid that variable. | 22:11 | |
22:11
ranguard joined
|
|||
jnthn | b: sub foo($x) { sub bar() { say $x }; { bar() } }; my $a = foo(1); my $b = foo(2); $a(); $b(); | 22:11 | |
p6eval | b 1b7dd1: OUTPUT«12invoke() not implemented in class 'Boolean' in main program body at line 22:/tmp/Hy87sSsyeI» | ||
pmichaud | pointy | ||
jnthn | er | ||
pmichaud | -> { bar() } | ||
jnthn | b: sub foo($x) { sub bar() { say $x }; -> { bar() } }; my $a = foo(1); my $b = foo(2); $a(); $b(); | ||
p6eval | b 1b7dd1: OUTPUT«12» | ||
jnthn | nom: sub foo($x) { sub bar() { say $x }; -> { bar() } }; my $a = foo(1); my $b = foo(2); $a(); $b(); | ||
p6eval | nom f9d94f: OUTPUT«22» | ||
pmichaud | ....that looks like a problem. | 22:12 | |
jnthn | pmichaud: The PIR makes it clear what's oging on. | ||
pmichaud: The closure gets cloned. bar does not. | |||
pmichaud | there's supposed to be a capture_lex on bar, though. | ||
jnthn | pmichaud: There is | 22:13 | |
pmichaud: That's not enough though. | |||
pmichaud | the &bar lexical needs to be bound to a newclosure/clone | ||
jnthn | Right, that's what's missing. | ||
pmichaud | that's what ng does, iirc | ||
jnthn | pmichaud: Yeah. Unlike sorear, I don't get everything right. | ||
Will fix. | 22:14 | ||
pmichaud | I'm a little surprised this hadn't bitten us somewhere already :-S | ||
jnthn | Me too | ||
I mean, a bunch of other cases do the right thing, but still, it's a surprising one not to have run into. | 22:15 | ||
22:15
wamba left
|
|||
pmichaud | I can also rewrite the SEQUENCE code to not use a generate sub | 22:15 | |
it's only called from one place, so inlining it might make more sense anyway. | |||
(but we still need to fix the lexical bug, obviously :) | 22:16 | ||
jnthn | pmichaud: Feel free, but I'm still gonna fix the bug. :) | ||
pmichaud | I'm sad it's a lexical bug, I'm *really* glad the problem wasn't with GATHER. :-) | ||
jnthn | Yes, that was my fear. | 22:17 | |
I'm relieved it's silly and easily golfed. | |||
diakopter | I wonder how man_or_boy worked | ||
jnthn | diakopter: Yeah, that was my "did I get closures right" test. :) | 22:18 | |
Maybe it doesn't rely on nested subs. | |||
(It's the installation of declarational things that's at issue.) | |||
sorear | jnthn: sorry; my actual feelings are closer to pmichaud's | 22:19 | |
jnthn: I'm amazed you hadn't been bitten somewhere else | |||
jnthn | sorear: Sorry, I was a bit snappy there. I've kinda had a week of being bitten... :) | 22:20 | |
sorear | pmichaud: could do my $generate = sub () {... | ||
sorear offers hugs | |||
jnthn | :) | ||
22:20
lumi__ left
22:21
lumi__ joined
22:23
plobsing joined
|
|||
masak | blog post! strangelyconsistent.org/blog/dash-n...part-three | 22:28 | |
sorear | yay! | 22:30 | |
sahadev | perl6: my @a = 1 .. 10; my @p = 2, 3, 5, 7; sub mapper { my @keys; @keys.push($^a % 2 ?? "odd" !! "even"); @keys.push("prime") if $^a ~~ @p.any; @keys } my %h = classify(&mapper, @a) | 22:32 | |
p6eval | rakudo f9d94f: OUTPUT«===SORRY!===Confused at line 1, near "sub mapper"» | ||
..pugs: OUTPUT«*** No such subroutine: "&classify" at /tmp/15wlR_88oU line 1, column 155 - line 2, column 1» | |||
..niecza v9-11-g0f286c3: OUTPUT«===SORRY!===Strange text after block (missing comma, semicolon, comment marker?) at /tmp/TUUoFQMTSX line 1:------> .push("prime") if $^a ~~ @p.any; @keys }⏏ my %h = classify(&mapper, @a)Parse failed»… | |||
22:32
lumi__ left
|
|||
sorear | sahadev: you need a ; after the } | 22:33 | |
sahadev | sorear: thanks | ||
masak | Perl 6 is a bit stricter than Perl 5 on that front. | ||
sahadev | perl6: my @a = 1 .. 10; my @p = 2, 3, 5, 7; sub mapper { my @keys; @keys.push($^a % 2 ?? "odd" !! "even"); @keys.push("prime") if $^a ~~ @p.any; @keys }; my %h = classify(&mapper, @a) | ||
p6eval | pugs: OUTPUT«*** No such subroutine: "&classify" at /tmp/bWYKWhHMrh line 1, column 156 - line 2, column 1» | ||
..niecza v9-11-g0f286c3: OUTPUT«===SORRY!===Undeclared routine: 'classify' used at line 1Potential difficulties: %h is declared but not used at /tmp/21LPgXcPBH line 1:------> ("prime") if $^a ~~ @p.any; @keys }; my ⏏%h = classify(&mapper, @a)… | |||
..rakudo f9d94f: OUTPUT«Method 'push' not found for invocant of class 'Parcel' in method reify at src/gen/CORE.setting:3634 in method reify at src/gen/CORE.setting:3539 in method reify at src/gen/CORE.setting:3539 in method gimme at src/gen/CORE.setting:3876 in method eager at s… | |||
22:33
lumi__ joined
22:41
alester left
22:46
odoacre left,
odoacre joined
22:47
HarryS joined
22:48
Trashlord left
|
|||
sorear | masak: nitpick | 22:49 | |
masak | sure. go ahead. | ||
sorear | masak: Haskell's Prelude is not a prelude in the sense of the term you use | ||
22:49
wolfman2000 joined
|
|||
masak | oh! | 22:49 | |
well, live and learn. | |||
sorear | masak: Haskell's "prelude" is the single line, "use Prelude" | 22:50 | |
masak | huh. | ||
sorear | masak: Haskell's Prelude is an ordinary module governed by the import/export rules | ||
masak | I think I see the distinction. | ||
would it work if I just lower-cased the word? | |||
dalek | kudo/nom: 569deeb | pmichaud++ | src/core/operators.pm: Fix problem with two sequence operators being active at the same time (RT #98790). This commit doesn't fix the actual underlying problem, which is that lexically nested subs aren't being cloned properly. jnthn++ is working on that issue. Instead, this patch simply inlines the nested sub instead of calling it separately. |
22:51 | |
flussence | .oO( -p = -np ) |
||
22:51
lumi__ left
|
|||
sorear | Haskell'98 has the ad-hoc rule that if you explitly import the Prelude, there's no prepending | ||
I think the Perl 6 outer scope way is much more elegant | 22:52 | ||
masak | aye. | ||
22:52
lumi__ joined
|
|||
masak | especially since we got it to be an outer lexical scope, not just surrounding code. | 22:52 | |
dalek | ast: ff21ee5 | pmichaud++ | S03-sequence/basic.t: Unfudge passing tests for RT #98790, RT #75768. |
22:53 | |
jnthn | > say (1...5), (5...1) | 22:54 | |
1 2 3 4 55 4 3 2 1 | |||
\o/ | |||
(that's without pmichaud++'s patch, and teh underlying issue fixed) | |||
masak | \o/ | 22:55 | |
pmichaud | \o/ | 22:56 | |
lots of fixes today :) | |||
sorear | jnthn++ | ||
diakopter | jnthn: does man_or_boy still work? :) | 22:59 | |
jnthn | diakopter: Well, spectesting, so will know soon :) | 23:00 | |
diakopter: yes \o/ | 23:03 | ||
23:05
lumi__ left
|
|||
diakopter | ]o[ | 23:05 | |
23:05
lumi__ joined
23:08
wallberg left
|
|||
sjohnson | /o\ | 23:09 | |
pmichaud | \o/ | 23:10 | |
sjohnson | heheh | ||
sorear runs | |||
sjohnson | looks like a cheerleading move | ||
masak | "who's the King? U.R.! who's the King? U.R.! A.R.T.H.U.R.!' | 23:11 | |
s/'/"/ | |||
23:12
donri left
|
|||
masak | 'night, channel | 23:13 | |
23:13
masak left
|
|||
dalek | kudo/nom: efe1f21 | jonathan++ | src/Perl6/Metamodel/ParametricRoleHOW.pm: Tiny refactor in preparation for implementing multiple roles with the same shortname. |
23:13 | |
kudo/nom: 00a1159 | jonathan++ | src/Perl6/ (2 files): Fix closure handling bug with nested subs; should fix it for my-scoped methods/regexes too. |
|||
jnthn | oh, a bonus patch I forgot I'd done... :) | 23:14 | |
23:17
lumi__ left
23:18
lumi__ joined
23:50
molaf_ joined
23:51
molaf left
23:56
lumi__ left
23:57
lumi__ joined
|