»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by sorear on 25 June 2013. |
|||
00:00
ssqq joined
|
|||
Guest54457 | yes, he'll have to answer | 00:04 | |
00:04
Guest54457 is now known as timotimo
|
|||
FROGGS | woolfy / timotimo: I guess that "this week" refers to the week when the APW happened | 00:09 | |
gnight | 00:10 | ||
00:10
FROGGS left
|
|||
timotimo | oh, hm | 00:10 | |
did we have any good weeks since? :P | |||
00:13
gfldex left
00:16
raiph joined
00:17
raiph left
00:28
KCL_ left
|
|||
TimToady | what the heck is t/spec/S02-magicals/78258.t? | 00:36 | |
00:36
ajr_ left
|
|||
TimToady | nevermind, was looking in the wrong subdir for UsedEnv | 00:37 | |
though I'd still like to understand the number | 00:38 | ||
Mouq | TimToady: rt.perl.org/Public/Bug/Display.html?id=78258 ? | 00:41 | |
timotimo | there's an artist who has a track called "43644466" which i really like a lot. but i couldn't figure what it means, so ... perhaps 78258 is like that? | 00:42 | |
00:43
dayangkun joined
|
|||
timotimo | kind of interesting thing on the side: the for_push benchmark (i believe) is spending 9.25% of its time in Array::of and 2.82% of its time in Perl6::Metamodel::ContainerDescriptor::of, which i guess is what the of method of Array is calling immediately | 00:48 | |
this is when the for loop has 1024_000 iterations | |||
and that's exactly how often both ofs are being called | 00:49 | ||
m: say 191.68 / 1024_000 | |||
camelia | rakudo-moar ac27d2: OUTPUT«0.00018719» | ||
00:49
dayangkun left
|
|||
timotimo | that's not really terribly much time per call | 00:50 | |
m: say "each call to push takes 857.39 / 1024_000 miliseconds" | |||
camelia | rakudo-moar ac27d2: OUTPUT«each call to push takes 857.39 / 1024_000 miliseconds» | ||
timotimo | m: say "each call to push takes { 857.39 / 1024_000 } miliseconds" | ||
camelia | rakudo-moar ac27d2: OUTPUT«each call to push takes 0.0008372949 miliseconds» | ||
timotimo | (that's exclusive time) | 00:51 | |
00:52
bjz_ left
|
|||
timotimo | m: say "rc-dragon-curve takes { 1620.63 / 8149 } miliseconds to call print each time something goes out to the screen" | 00:56 | |
camelia | rakudo-moar ac27d2: OUTPUT«rc-dragon-curve takes 0.1988747 miliseconds to call print each time something goes out to the screen» | ||
00:58
vti left
|
|||
timotimo | m: say "adding a my $*OUT to the very beginning of rc-dragon-curve takes that number down to { 1567.58 / 8149 } ms per call." | 00:59 | |
camelia | rakudo-moar ac27d2: OUTPUT«adding a my <STDOUT> to the very beginning of rc-dragon-curve takes that number down to 0.1923647 ms per call.» | ||
timotimo | hah, oops :D | ||
01:00
adu joined
|
|||
timotimo | well, doesn't seem *that* worth it | 01:02 | |
01:04
KCL_ joined
|
|||
timotimo | um ... wat | 01:05 | |
% time seconds usecs/call calls errors syscall | |||
93.64 0.032699 0 126649 118380 write | |||
where does that ridiculous number of errors come from? | |||
ssqq | How to set 'm: say' only see by me. | 01:12 | |
timotimo | you can query camelia | ||
01:21
ssqq left,
ssqq joined
01:24
ssqq_ joined
01:25
chenryn joined
01:27
ssqq left
01:29
ssqq__ joined
01:30
chenryn left
|
|||
dalek | p: 0874b80 | TimToady++ | src/vm/parrot/ (3 files): longlit5 for colorful birds |
01:32 | |
p: 79d85c1 | TimToady++ | src/QRegex/NFA.nqp: enable birdy longlits |
|||
01:33
ssqq_ left
|
|||
raydiak | is it common for the profiler to go into an endless loop on code that otherwise runs normally? the script produced its final output after 30-60 seconds, but has been running for like 10 minutes since then | 01:33 | |
timotimo | oh yeah | ||
the profiler takes a bit of time to output its dump | 01:34 | ||
especially since it records a complete call stack ... all the way down | |||
raydiak | ah, okay I'll be patient | 01:35 | |
timotimo | if you're interested in making that better, i've started work on code to summarize the call graph after a certain depth has been reached | ||
but it produces bogus results :( | |||
if you want to look at that code, i'd much appreciate it | |||
github.com/MoarVM/MoarVM/commits/f...raph_depth - find the code here | 01:36 | ||
01:36
ssqq_ joined
01:37
adu left
|
|||
raydiak | oh yay the profiler returned, I can use my web browser again :) lemme see if it looks like something I'd have a clue about | 01:37 | |
timotimo | hahaha | ||
check the size of the html file | |||
raydiak | heh 58 megs | 01:38 | |
timotimo | ouch %) | ||
your browser will likely be eaten by an oom | |||
01:39
ssqq__ left
|
|||
raydiak | it's how I write the transformation routines in math::symbolic...basically a "1 while s/.../.../", except in my own super-slow tree-node-pattern-matching subs | 01:39 | |
or, I'm assuming...we'll see if chrome opens it | 01:40 | ||
ew C | 01:41 | ||
timotimo | it'll open it just fine, but it won't show any data | ||
then it'll say "it's dead, jim" | |||
raydiak | last time I gave it enough time, it actually loaded for a simpel Pray run | 01:42 | |
01:42
ssqq__ joined
|
|||
timotimo | impressive :) | 01:43 | |
ssqq__ | :camelia :m say 'helo' | ||
raydiak | for a $180 USD pawn shop laptop, yes it is :) | ||
hooray it did load... | |||
01:44
raiph joined
|
|||
raydiak | this whole part of things is one of the top things on my non-Math::Symbolic p6 list...wanna get to all those interface improvements you suggested, timotimo++ | 01:44 | |
Mouq | m: say 'helo' | ||
camelia | rakudo-moar ac27d2: OUTPUT«helo» | ||
01:46
ssqq_ left
|
|||
raydiak sees a 60-million-character string of JSON being parsed, and no longer wonders what is so slow about the profiler | 01:52 | ||
colomon | is that the profiler input or output | 01:53 | |
? | |||
raydiak | output | ||
ran it on a math::symbolic run, gave me 58 megs, all of it is a string being JSON.parse'd all at once :P | 01:54 | ||
01:54
ssqq__ left
|
|||
raydiak | I mean, vim takes several seconds just to seek to the beginning or end of this line :) | 01:55 | |
02:01
peteretep left
02:02
adu joined
|
|||
timotimo | yeah, browsers are not terribly fond of such big json documents, i fear | 02:05 | |
raydiak: what interface suggestions do you mean? for the profiler? | |||
raydiak: tomorrow (or maybe if i can't fall asleep again tonight) i'm going to add a distinction in the allocations: allocated from a spesh'd frame, allocated from a jitted frame or allocated from an unoptimized frame | 02:06 | ||
raydiak | considering json is valid javascript, I question the wisdom of doing this this way...I'm trying to just s/JSON.parse('<stuff>')/<stuff>/ and see if it nets huge gains without breakage, but vim isn't cooperating witht he incredibly long line | ||
timotimo: yeah for the profiler, remember you gave me a little list of possible improvements like a week or two ago? | 02:07 | ||
timotimo | yep i did :) | ||
timotimo moves to a different place | 02:08 | ||
02:09
jakesyl joined
|
|||
jakesyl | Is there a perl 6 tutorial somewhere | 02:09 | |
timotimo | jakesyl: vendethiel recently gave this presentation: slides.com/namidoc/learn#/ | 02:10 | |
well, a lightning talk really | |||
it has some good pointers | |||
raydiak | several resources listed here: perl6.org/documentation/ the learn perl 6 in y minutes one is one of the most recent afaik | 02:13 | |
02:14
JimmyZ joined
02:17
perltricks joined
|
|||
raydiak | removing the JSON.parse did work, but didn't speed anything up noticably | 02:20 | |
need to profile the profiler :) | 02:21 | ||
02:23
timotimo left
|
|||
japhb suddenly has Men At Work running through his head | 02:24 | ||
02:24
timotimo joined
02:26
chenryn joined
|
|||
xiaomiao | cc1: some warnings being treated as errors | 02:28 | |
... what joker added that to nqp makefile(s) ? :D | |||
02:31
chenryn left
02:38
raiph left
02:47
Mouq left
02:48
chenryn joined
|
|||
raydiak | timotimo: sorry, I've been trying to follow and look for mistakes in your profiler branch, but my head seems to be more in a squishy creative place right now than a rigid analytical region of the mindscape :) | 02:57 | |
timotimo | i think it'd probably help a whole lot to actually go ahead and profile the same short little program with decreasing levels of flattitude in that routine and compare outputs | ||
i was too lazy to do that ... | |||
anyway, way past bedtime | 02:58 | ||
o/ | |||
japhb | o/ | ||
raydiak | \o | ||
timotimo | o/- ← "dropping the mic" emoticon? | ||
raydiak | epic :) | ||
03:01
perturbation joined
|
|||
raydiak | this might be (only a little?) premature, but do we have anything like a p6 style guide/best practices/something like that? | 03:02 | |
timotimo | maybe o/_ would work better? | ||
actually we do; they are called "well-thought-out practices" | |||
github.com/moritz/perl6-wtop - there is not much yet | |||
maybe when i wake up there'll be more! :P | |||
\o | |||
raydiak | cool, thanks \o | 03:03 | |
there are just so many choices to be made when trying to spec an api in p6 | 03:05 | ||
03:19
adu left
|
|||
xiaomiao | hrm. I can't quite figure out how nqp generates its Makefile | 03:20 | |
too many indirections :( | |||
03:22
noganex joined
03:23
raiph joined
03:25
noganex_ left
|
|||
tony-o | timotimo: submitted a pr containing management speak for the readme | 03:26 | |
03:35
tinyblak joined
|
|||
raydiak | wow I'm sold, I better add more scalable synergy enterprise features to my resume :) | 03:38 | |
tony-o | we could use people like you to get stuff done | 03:47 | |
:p | |||
03:48
perturbation left
03:50
cognominal left
03:53
kurahaupo left
04:09
rmgk is now known as Guest32255,
rmgk_ joined,
Guest32255 left,
rmgk_ is now known as rmgk
04:10
tinyblak left
04:12
anaeem1 joined
04:21
kaleem joined
04:26
raiph left
04:43
PerlJam joined
04:46
perltricks left
04:47
cognominal joined
04:49
grondilu left
05:03
kaare_ joined
05:06
chenryn left
05:10
xinming_ left
05:11
xinming joined
|
|||
moritz | xiaomiao: it's Configure.pl uses a templating mechanism in tools/lib/NQP/Configure.pm with the templates in tools/build/Makefile-*.in | 05:18 | |
xiaomiao | moritz: I can't quite figure out where the CFLAGS come from, but they are extremely optimistic | ||
(gcc 4.9.2 doesn't appreciate them at all, so I just sed them away) | |||
moritz | xiaomiao: they are passed on from parrot's/moarvm's configure | 05:20 | |
xiaomiao | ouchies. | 05:21 | |
05:21
kaleem left,
davido___ joined
05:24
davido__ left
05:30
chenryn joined
|
|||
ugexe | ive been getting a thread error on moar/jvm (but not parrot) during panda's rebootstrap while installing JSON::Tiny | 05:32 | |
starting today i believe | |||
so im guessing it has to do with a recent commit | 05:34 | ||
05:44
raiph joined
05:52
grondilu joined
|
|||
grondilu | so my opponent plays 1. g3, I play 1... e5, he replies with 2. Bg2 and I thought "let's have some fun" : 2... e4?! | 05:53 | |
en.lichess.org/LSEBATRu/black | |||
05:53
kaare_ left
|
|||
grondilu | oopps | 05:56 | |
TimToady | .oO(#chess6) |
05:57 | |
grondilu | wrong chann again, sorry guys | ||
05:57
JimmyZ left
|
|||
grondilu | I need to either pay attention or find a way to have irssi highlight different channels with different colors or something. | 05:58 | |
TimToady | either that, or just admit you're human like the rest of us :) | 06:01 | |
unless, of course, you're not... :) | 06:02 | ||
grondilu | sometimes I wonder :-) | ||
since I'm here, how is the great list refactor going? Is it coming soon? | 06:03 | ||
06:05
jimmy_ joined
06:06
jimmy_ is now known as JimmyZ
|
|||
dalek | ast: 06a85e4 | usev6++ | S03-operators/arith.t: Fix exception and error message |
06:09 | |
06:21
kaare_ joined
06:25
cognominal left,
cognominal joined
|
|||
ugexe | rerunning the tests they are now passing. using the same commit id as what failed before (same with JSON::Tiny) | 06:27 | |
TimToady | grondilu: pmichaud++ said he was gonna have a chance to work on it a lot this week, looked like | 06:28 | |
06:28
dayangkun joined,
dayangkun left
|
|||
grondilu | ok, great | 06:36 | |
06:37
kaleem joined
|
|||
ugexe | hmm restarting the travis test *yet again* it fails with the same error of Internal error: zeroed target thread ID in work pass | 06:37 | |
raydiak | ugexe: you need a "print '';" somewhere :) | ||
ugexe | its during JSON::Tiny install from panda | 06:38 | |
raydiak | it's the same heisenbug I kept running into and then couldn't reproduce when I had people's attention | 06:39 | |
removed all the prints from my code and the bug didn't come back due to later changes I had made, I guess | |||
ugexe | on the jvm JSON::Tiny gets installed, but then during panda install Panda::Tester gets a IllegalThreadStateException during compiling Tester.pm | 06:41 | |
was yours different on different vms? | |||
from what i can tell panda doesnt have this problem | 06:42 | ||
s/panda/parrot/ | |||
raydiak | was only developing on a very recent moar | ||
ugexe | yeah moar does it too, just at an earlier stage | ||
raydiak | for me it was in my own code though | ||
06:43
dayangkun joined
|
|||
raydiak | so I tried to track it down and it would go away, so I'd just leave a print in there somewhere and move on until I felt up to golfing it | 06:43 | |
06:43
dayangkun left,
ptc_p6 joined
|
|||
ugexe | gist.github.com/ugexe/d103c8eee285...-txt-L2863 | 06:44 | |
hmm im good at spamming print statements | |||
raydiak | it's good that we have another example of the failure, too...but I can't reproduce it...what version is your rakudo? | 06:46 | |
06:46
telex left
|
|||
ugexe | its the latest | 06:46 | |
raydiak | hm I'll rakudobrew and see if it breaks here, if that helps | 06:47 | |
ugexe | travis-ci.org/ugexe/P6TCI/builds/42009558 | ||
i can refresh that test and it seems to fail 50% of the time | |||
you can see the slightly different error from jvm as well, and how parrot passes | |||
06:48
telex joined
|
|||
ugexe | you can compare the rakudo/json::tiny/etc commit ids to the ones here where they all passed travis-ci.org/ugexe/P6TCI/builds/42044969 | 06:49 | |
they are all the same | |||
06:52
KCL_ left
06:54
raiph left
|
|||
raydiak | json::tiny just built successfully here, I'll try it a few more times when everything else is done | 06:54 | |
06:56
KCL_ joined
06:59
[Sno] left
|
|||
raydiak | failed to fail 5 times in a row | 06:59 | |
ugexe | maybe its rakudo/moar/jvm then | 07:05 | |
not sure what could be different between building the same commit though | |||
i cant get it to happen outside the travis machines either | |||
raydiak | huh...what is this travis thing anyway? | 07:06 | |
ugexe | every time you make a commit, travis gets a hook from github and it pulls in your code and runs the tests for it (according to a config file you setup) | 07:07 | |
raydiak | oh neat | ||
ugexe | those links are to the output of those tests | 07:08 | |
raydiak | yeah, I figured out how to read them when I noticed the lines are folded | 07:09 | |
ugexe | oh yeah, i forgot about that | ||
raydiak | "panda-fetch: command not found" didn't look like my error :) | 07:10 | |
ugexe | thats not the error | ||
panda-fetch wasnt installed | |||
because of the thread error | |||
travis-ci.org/ugexe/P6TCI/jobs/42009559#L910 | 07:11 | ||
:/ that doesnt unfold the line either it looks like | 07:12 | ||
raydiak | yeah no I got to it eventually, was just making fun of my initial confusion | 07:14 | |
can you manually run commands in a travis vm? would be nice if we could reproduce an instance of it with something helpful like --ll-exception, or valgrind or whatnot | 07:16 | ||
ugexe | yeah, but rakudobrew build-panda doesnt let us pass any flags | 07:17 | |
github.com/ugexe/P6TCI/blob/master/.travis.yml | |||
i guess not manually per se | |||
raydiak | yeah you'd have to clone json::tiny and manually run the compile command | ||
ugexe | you can manually put them all in a config and run them | ||
raydiak | that'd work | 07:18 | |
ugexe | whats interesting is it fails during compile for moar but not jvm | 07:21 | |
but using it with the jvm it errors at runtime | |||
07:22
nebuchadnezzar joined
|
|||
ugexe | and parrot has no threads so presumable thats why this problem hasnt popped up there yet | 07:22 | |
raydiak | the error for jvm looks like when it's building panda, after it's done with json::tiny | 07:25 | |
07:27
Mouq joined
|
|||
raydiak | jvm dying here: github.com/tadzik/panda/blob/maste...er.pm#L136 | 07:28 | |
07:33
chenryn left
|
|||
raydiak | should you be able to assume that a pipe to a child process can be closed after 'for .lines' finishes? | 07:33 | |
07:34
chenryn joined
07:36
gfldex joined
|
|||
dalek | p: 6506e8c | TimToady++ | src/vm/parrot/ops/nqp.ops: act needs to fit into 32-bits signed (for jvm) |
07:37 | |
p: 097d396 | TimToady++ | src/vm/jvm/runtime/org/perl6/nqp/ (2 files): longlit5 for the vm of indonesian beverages |
|||
p: c696224 | TimToady++ | src/QRegex/NFA.nqp: enable longlit for jvm; fit act sign into 32 bits |
|||
p: dfd3975 | TimToady++ | tools/build/MOAR_REVISION: require moar that masks smaller fate in act |
|||
TimToady | jnthn: someone who knows Java better than me needs to fix up the XXX line in 097d396, which is an egregious hack just to get it to work | 07:41 | |
it wouldn't boot from stage0 when I tried to do the obvious thing in the ThreadContext | 07:42 | ||
raydiak | ugexe: will it still work if I just delete the before_script, script, and after_success portions, and put the manual compile commands in place of panda-build under install? | 07:46 | |
TimToady | other than that, and bumping the nqp version in rakudo, I think I'm finally done with longest literals | 07:47 | |
raydiak | ugexe: actually, never mind | 07:48 | |
07:48
FROGGS joined
07:50
vti joined
|
|||
ugexe | ive been retesting a build like that for the last 30 minutes with no failures | 07:52 | |
raydiak | ah | ||
07:52
chenryn left
07:53
chenryn joined
|
|||
ugexe | github.com/ugexe/P6TCI/blob/306d60...travis.yml | 07:55 | |
thats how you can do build-panda and then a manual panda install | |||
er you want compiled commands. yeah you can do that too | |||
raydiak | ah, for the jvm failure...yeah meant for the json::tiny moarvm failure | 07:56 | |
wonder if a --ll-exception flag for panda to pass through to builds and tests would be worthwhile | 07:58 | ||
07:58
brrt joined
|
|||
ugexe | github.com/tadzik/panda/pull/114 | 07:59 | |
raydiak | heh I'm almost caught up to the present | 08:00 | |
JimmyZ | TimToady++ # hard work on longlit! | 08:02 | |
08:04
kjs_ joined
|
|||
dalek | ecs: f22ee3e | TimToady++ | S05-regex.pod: Describe some details of tiebreaker #2 |
08:05 | |
08:06
chenryn left
08:08
gfldex left
|
|||
ugexe | finally got it to error with a manual build after | 08:08 | |
travis-ci.org/ugexe/P6TCI/jobs/42044637#L911 | 08:10 | ||
at line #977 is the manual panda install where it passes the test #911 failed | |||
vti | i have a strange behavior when using substitution with smart match, i have written the smallest script that reproduces the problem; in short $0 from the previous match is not overwritten, there is something wrong with the loop, without looping it works ok: gist.github.com/vti/c11a9c1e63332de1ab59 | 08:11 | |
current it prints 1 and 1 | |||
moritz | vti: s/// currently doesn't set any match variables, except in the right-hand side of the substitution | 08:12 | |
vti | moritz: ah, i see | ||
moritz: so what is the alternative? first match and then remove? | |||
raydiak | there's also #123005 | ||
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123005 | ||
moritz | vti: yes | 08:13 | |
vti: it sucks, but on the upside, $0.from and $1.to make it easy to find the indexes to pass to substr | |||
FROGGS | morning #perl6 | ||
vti | moritz: ok, will do that, thanks | ||
moritz | or maybe | 08:14 | |
vti | raydiak: then i ++ that bug :) | ||
moritz | m: $_ = 'abc'; my $match; s/b./{ $match = $/; '' }/; .say; say ~$match; | ||
camelia | rakudo-moar ac27d2: OUTPUT«abc» | ||
moritz | vti: ^^ that seems to be a viable workaround too | ||
dalek | kudo/nom: 316f993 | TimToady++ | tools/build/NQP_REVISION: bump nqp rev to enable longlit for parrot and jvm |
08:15 | |
raydiak | good morning FROGGS o/ | ||
Mouq | vti: You might try adding {} at the end of the regexes | ||
vti | Mouq: yep, it works | 08:16 | |
Mouq | like s/^ (Foo)\: \h?{}// | ||
vti | Mouq++ | ||
moritz: that's the easiest ^^ :) | |||
moritz | wtf? | 08:17 | |
Mouq: do you understand why that works? | |||
08:17
chenryn joined
08:18
[Sno] joined
|
|||
grondilu | « TimToady has found four distinct ways to not properly implement the second tiebreaker for longest token matching (“longest literal string wins”). He’s now working on the fifth way. » ^not sure what this is about | 08:19 | |
Mouq | moritz: Nope. When I found that trick out quite some time ago, someone (jnthn?) mumbled something about $/ not being vivified... | 08:20 | |
08:21
Mso150 joined
|
|||
TimToady | m: 'abcdefghi' ~~ / \w\w\w\w\w { say "got cclasses" } | abcde { say "got literal" } / | 08:25 | |
camelia | rakudo-moar ac27d2: OUTPUT«got literal» | ||
TimToady | grondilu: it's about picking the more specific pattern when LTM ties | ||
tadzik | omg omg, did we forget about advent calendar? | ||
moritz | tadzik: nope, PerlJam++ already started organizing | ||
tadzik | *relief* :) | ||
moritz | tadzik: quick, sign up for a slot! | ||
TimToady | grondilu: also see all my recent commits :) | 08:26 | |
tadzik | moritz: quick, come up with a subject! :P | ||
TimToady | subject-oriented programming | ||
moritz | tadzik: ALL UR GAMING ARE BELONG OT US | 08:27 | |
*TO | |||
08:28
rindolf joined
08:31
darutoko joined
|
|||
tadzik | :) alrighty then | 08:34 | |
moritz | tadzik: also, a summary of panda changes from this year would be very welcome | 08:41 | |
tadzik: and rakudobrew, if it hasn't been talked about yet | |||
seems not | 08:42 | ||
tadzik | wow, is that so | ||
indeed! | |||
I'll sign up for 2nd | |||
dalek | : daa7880 | tadzik++ | misc/perl6advent-2014/schedule: Sign up for 2nd |
08:43 | |
Mouq | p6: say i**2 | 08:44 | |
camelia | rakudo-{parrot,moar} ac27d2: OUTPUT«-1+1.22464679914735e-16i» | ||
dalek | kudo/newio: 316f993 | TimToady++ | tools/build/NQP_REVISION: bump nqp rev to enable longlit for parrot and jvm |
08:46 | |
kudo/newio: b3ef1ea | (Elizabeth Mattijsen)++ | tools/build/NQP_REVISION: Merge branch 'nom' into newio |
|||
lizmat | and a good *, #perl6! | ||
raydiak | \o lizmat | ||
08:51
virtualsue joined
08:53
kjs_ left
08:56
molaf_ joined
08:58
molaf left
|
|||
raydiak | ugexe: this didn't succeed in breaking it, unfortunately, but is how I was trying to reproduce the moar/json::tiny failure: github.com/raydiak/json/blob/master/.travis.yml | 09:01 | |
09:01
Ven joined
|
|||
Ven | o/, #perl6. | 09:01 | |
raydiak | \o Ven | 09:02 | |
brrt | \o Ven, lizmat | ||
09:02
|Tux| left
09:11
TuxCM joined
09:18
virtualsue left
09:19
virtualsue joined
09:22
bjz joined
09:27
kjs_ joined
|
|||
Guest92293 | o/ \o o/, #perl6 | 09:33 | |
09:33
Guest92293 is now known as masak
|
|||
masak | ok, let's try this again: | 09:34 | |
today, I will blog. | |||
later today, though. first, $work. | |||
Ven | .oO( $BLOG! $BLOG! $BLOG! ) |
09:39 | |
masak | ooh, and I know what to blog about. :) | 09:44 | |
09:45
rurban joined
|
|||
Ven | moar power to the $BLOG :-) | 09:46 | |
09:46
dakkar joined
10:03
kjs_ left
10:09
pecastro joined
|
|||
JimmyZ | moar jit power ;) | 10:10 | |
10:14
denis_boyun joined
10:20
zakharyas joined
10:24
ssqq joined
10:28
ssqq left
10:29
JimmyZ left
10:30
kurahaupo joined
|
|||
masak | today's discussion topic: is metadata just data with delusions of grandeur? :) | 10:38 | |
seriously, I've seen domains that had loads of metadata, but no actual data. | 10:39 | ||
brrt | hmmm good question | ||
when do we call data metadata | |||
masak | I've heard people call comments in code metadata. that was Steve Yegge, IIRC. | 10:40 | |
tadzik | when it's data about data, like an index | ||
huf | after you've said hello | ||
masak | tadzik: so... most data? | 10:41 | |
10:41
anaeem1 left
|
|||
moritz | masak: I find meta data just as scary as data | 10:41 | |
tadzik | probably :) | ||
huf | never met a data i didnt like | ||
moritz | masak: "so you connected to pornhub.com? don't worry, we don't know the contents of your request" | ||
masak | my point is that it doesn't take much for data to be about data. | 10:42 | |
heck, every foreign key ever is metadata. | |||
huf | yeah, but code is data too | ||
brrt | hmmm | ||
masak | code is operating on data, so it's metadata. | ||
huf | so these terms are clearly very relative to the current topic | ||
brrt | i'm not sure i agree whether a foreign key is metadata | ||
its part of the shape of the data | |||
10:42
EXIXT is now known as exixt
|
|||
tadzik | what if it's operating on code? That's so meta | 10:42 | |
brrt | a pointer isn't metadata | ||
huf | "metadata" is like "higher" | ||
it's meaningless without context :) | 10:43 | ||
raydiak | imo metadata is a question of perspective...if bring your context down a metalevel, data is viewed as metadata...up a level and vice-versa happens | ||
masak | huf: technically "beyond" or "beside". | ||
huf | masak: yeah, but same applies to those too | ||
10:44
Mouq left
|
|||
brrt | hmm... | 10:44 | |
no | |||
it may be in the interest of intelligence agencies to call urls and email topics metadata, but they're really part of the message | 10:45 | ||
masak | well, all I really wanted to do was sow some doubt that the notion of "metadata" has any real meaning except perhaps in a sufficiently defined domain. | ||
huf | what's the difference between a crocodile? | ||
raydiak | there wasn't already doubt? :) | ||
huf | it's longer than green. | ||
10:45
Mouq joined
|
|||
Ven | masak: I have no idea what "metadata" is supposed to mean | 10:46 | |
masak | I think we all agree that it's all ones and zeroes. whether we call them "data" or "metadata". | ||
Ven | that's an implementation detail :-) | ||
brrt | i think those well-defined domains are more common than you might think | ||
e.g. in C? struct values are data, struct type is metadata | 10:47 | ||
in SQL, metadata is the schema, data are the rows | |||
masak | brrt: never heard of that distinction. | ||
10:47
sqirrel__ joined
|
|||
brrt | well, i'd put the difference between structure and value | 10:48 | |
structure is always meta | |||
much like the distinction between species have little to do with the individuals, but with the properties-of-all-individuals | |||
masak | brrt: seems to me you're simply talking about types/schemas vs values. not the typical definition of "metadata". | ||
rurban | metadata cannot lie, content usually does. that's the reason | ||
brrt | i'd argue that this is the typical definition of metadata, and that (if anything) this meaning has been corrupted for political purposes | 10:49 | |
Ven | political metadata? what? | ||
brrt | like moritz'es example, the fact that you connected to pornhub or any other site is part of the exchange | ||
it's data | |||
Ven has never heard of "metadata" outside of programming contexts | |||
brrt | no, the *meaning* of the word 'metadata' was stretched for political reasons :-) | 10:50 | |
masak | rurban: hah! someone should write a crime thriller based on the flawed idea of "metadata cannot lie". | ||
rurban | well, you can fool metadata also, but that's much harder | ||
masak | it's the modern equivalent of "the camera never lies" | ||
rurban | ipspoofing, mac spoofing, arp cache and so on | ||
masak | ah yes, *apart* from those ways. | ||
Ven | if you accept there's "metadata", then there has to be a tower of those. | 10:51 | |
DO YOU WANT A MULTIVERSE? | |||
because that's how you get a multiverse... | |||
rurban | or morphing (cast, nci reinterpretation) | ||
masak .oO( ...he shouted, panicked, in all-caps ) | |||
brrt | i don't want a multiverse. i'd have no idea what would give energy to power all multiverses | 10:52 | |
on the other hand | |||
dark energy | |||
i suspect that, if GDR secret service had need for it, they'd make a convenient distinction between spying and 'meta-spying' too | 10:54 | ||
masak | if I'm charitable, I can have "metadata" mean "annotation data". as in "this data is not strictly necessary in the domain, but it's nice to have". | ||
brrt | hmmm | ||
but that implies that there is potentially a domain on which that data is necessary | 10:55 | ||
so that would fit the comment definition, as e.g. pod comments are input for another tool (perldoc) | |||
and anyway, that definition still excludes mass-scale spying data :-) | 10:56 | ||
masak | yes, "there is potentially a domain" is exactly right. that is, the view on metadata is *domain-dependent*. | 10:58 | |
we could think of one or more "meta-domains" in which what's metadata here is data there. | 10:59 | ||
brrt | sometimes aristotle is useful :-) | ||
Mouq | e.g., file systems | 11:00 | |
brrt | in a sense, for something to be 'really' metadata, it should have no meaning in the 'data' domain | 11:01 | |
masak | brrt: I don't think the definition excludes spying data. I do think it excludes structs/schemas, though. | ||
brrt | hmmmmm | ||
masak | brrt: don't know about "no meaning". but it shouldn't be primary/necessary. | ||
brrt | ok, i think i can agree on that | 11:02 | |
wrt to mass surveillance 'metadata', i really do think it is weasly to call e.g. domain names 'metadata' | |||
masak | like, email subject and body are data, because that's why the email was sent. header details are metadata, and that's one reason we don't normally look at them when we read emails. | ||
Ven | .oO( I see meta-meta-data ) |
||
brrt | what about email recipient address is data | ||
masak | arguably, yes. | 11:04 | |
and I can agree about the weasliness. | |||
Ven | "metadata is the structure, like the fields. metametadata is the field structure, like (name, type). metametametadata is the data explaining what's a name and what's a type. metametametametadata is the data explaining ..." | 11:08 | |
Mouq | OED: "metadata n. data that describes and gives information about other data." | 11:09 | |
masak | Ven: I don't see metadata being usually about structure. | ||
Ven: I see it more as annotating existing data, regardless of structure. | |||
what Mouq/OED said. | |||
Ven | masak: I'm just giving an example of a tower | 11:10 | |
brrt | hmmm..... i'm not sure that structure is not metadata | ||
Mouq | Data about structure is arguably metadata about the representation of the data | ||
Ven | :-) | 11:11 | |
Mouq | Rather than the data per se | ||
brrt | aye | ||
masak | I don't think that's how it's normally used, though. | ||
brrt | how do you see it normally being used? | ||
masak | and it contravenes my intuition that the data would still be OK/valid/fine if the metadata weren't there. | ||
in a sense, I see metadata as "extra", not necessary/vital for the data. | 11:12 | ||
brrt | hmmm.... | ||
Ven | masak: it's still ok/valid/fine if the metadata isn't there ;-) | ||
brrt | fair point | ||
Ven | that's the basic idea of dynamic typing :P | ||
masak | Ven: that felt like a frivolous point at first, but I think it's actually a good one. | ||
brrt | but then, if you get down to it, structure is just a list of routines used to access values in a composite | 11:13 | |
Ven | masak: it's a frivolous point | ||
brrt | so maybe it's not really metadata but metacode | ||
masak | structure is rules about data access. | ||
Mouq | ^^ that | ||
Ven | masak: "dynamic typing" should be replaced with "weak typing". | ||
masak | not necessarily code. | ||
Ven | because dynamic typing can still be based on the idea of "having a structure" | ||
that's... still a frivolous point to me, though. | 11:14 | ||
brrt | difference between rules and code is a weak one | ||
Ven | we should abolish the difference :-) | ||
m: my @a = <salut ca va oui et toi>; say any(@a) eq all(<salut oui et toi>) | 11:15 | ||
camelia | rakudo-moar 316f99: OUTPUT«all(any(True, False, False, False, False, False), any(False, False, False, True, False, False), any(False, False, False, False, True, False), any(False, False, False, False, False, True))» | ||
Ven | m: my @a = <salut ca va oui et toi>; say so any(@a) eq all(<salut oui et toi>) | 11:16 | |
camelia | rakudo-moar 316f99: OUTPUT«True» | ||
11:16
Mso150 left
|
|||
Ven | m: my @a = <salut ca va oui et toi>; say so any(@a) eq all(<salut oui et pas moi>) | 11:16 | |
camelia | rakudo-moar 316f99: OUTPUT«False» | ||
Ven | I might be in love :) | ||
masak | I think the distinction between data and metadata (in some domains) is the kind of thing that can put up walls in the way of insight/unifications. | ||
11:18
kaleem left
|
|||
brrt | unifications are dangereous operations :-) | 11:19 | |
Ven | you misspelled "awesum" :) | ||
11:20
kjs_ joined
|
|||
brrt afk | 11:29 | ||
11:29
brrt left
11:33
kjs_ left
11:47
abraxxa left
11:48
abraxxa joined
11:55
chenryn left
12:05
rurban left
12:08
abraxxa1 joined
12:09
abraxxa left
12:10
abraxxa1 left
12:12
Ven left
12:20
rurban joined
12:25
KCL joined
12:28
KCL_ left
12:31
erkan joined
12:39
kaleem joined
12:46
lue left,
sqirrel__ left
12:52
kaleem left
12:53
timotimo left,
timo joined,
timo is now known as timotimo
|
|||
timotimo | i should have nick colors now, yay | 12:54 | |
dalek | ake: 753db10 | (Arne Skjærholt)++ | src/Snake/ (2 files): First quick implementation of currying invocants into methods. |
12:59 | |
12:59
lue joined
|
|||
timotimo | hmm. did i mention arnsholts work on snake? | 13:00 | |
i kind of fear i didn't :o | |||
arnsholt | Mentioned in what? | 13:02 | |
timotimo | my weekly post yesterday | 13:03 | |
arnsholt | Aha. 'S ok =) | ||
timotimo | :S | ||
arnsholt | There's always next week =) | ||
timotimo | sometimes there's only "the week after next week" | 13:05 | |
arnsholt | Or that | 13:06 | |
I'll just have to remember to do some work on snake before the next weekly summary =D | |||
13:07
eternaleye left
|
|||
timotimo | OK :) | 13:07 | |
i can live with that, if you can live with that ;) | |||
13:08
eternaleye joined
|
|||
arnsholt | It's still an on-again off-again project for me, so no publicity isn't a problem | 13:08 | |
I'll just keep tinkering | |||
rurban | github down for a moment... | 13:10 | |
nope, looks like the us routing is slow | 13:13 | ||
13:14
kurahaupo left
13:18
exixt is now known as EXIXT
13:19
sqirrel__ joined
|
|||
hoelzro | if two compunits A.pm and B.pm each have their own package ABC {}, and B.pm defines class ABC::B {}, can code in A.pm see ABC::B even if A.pm doesn't 'use B'? | 13:26 | |
13:26
EXIXT is now known as exixt
|
|||
hoelzro | (if, for example, main.pl uses both A and B) | 13:26 | |
13:27
sven_123 joined
|
|||
sven_123 | hi - what happened to planet6.perl.org? | 13:29 | |
13:33
Akagi201 joined
|
|||
rurban | Please don't use B; this already exists in perl5 | 13:34 | |
hoelzro | rurban: it's just an example module name | 13:35 | |
13:38
ptc_p6 left
13:41
rurban left
13:43
guru joined
13:44
guru is now known as Guest76604,
Guest76604 is now known as ajr_
13:49
kjs_ joined
13:53
ptc_p6 joined
|
|||
masak | rurban: even though that wasn't what it was all about in this case, what do you see as the harm of using module names that already exist in CPAN's Perl 5 namespace? | 13:54 | |
confusion? | |||
what if it's a port of the original module? | |||
Ugator | maybe you should add to the v6 port to the perl5 module? so there is only one module? | 13:58 | |
masak | I don't immediately see why that's better than keeping the modules separate. | ||
geekosaur | I don't think p5's B:: namespace is sensibly p6-able... | 13:59 | |
masak | that way, both p5 and p6 users pay the size cost of both. | ||
13:59
Ven joined
|
|||
Ugator | so CPAN will stay p5 for longterm? and p6 modules will be a completely new "world" this might cause confusion | 14:01 | |
14:02
sqirrel__ left
|
|||
hoelzro | package ABC {} by itself is local to that compunit, right? if I wanted it to be externally visible, I would have to do 'our package', correct? | 14:03 | |
masak | Ugator: there has been concrete progress on making Perl 6 modules available on CPAN, AFAIK. | 14:05 | |
14:05
rurban joined
|
|||
masak | hoelzro: no, package-level things are 'our'-scoped by default. | 14:06 | |
hoelzro | ok, thanks for the clarification masak | 14:07 | |
hoelzro is trying to figure out how package ABC {} is installed from a Moar dump | |||
Ugator | masak: what is done in 1to1 ports in regard to naming? | ||
timotimo | what is B::? | 14:08 | |
masak | timotimo: metacpan.org/pod/B | ||
timotimo | oh | 14:09 | |
masak | Ugator: it varies. I've ported modules and given them the same name. I've ported modules and given them a different name. others have done the same. | ||
14:09
bjz left
|
|||
masak | Ugator: as to collisions on CPAN, I don't think that's a big problem -- things will reside in different namespaces from the start. people's searches would probably default to seeing only the Perl 5 modules. | 14:10 | |
14:11
bjz joined
14:13
kaare_ left
|
|||
hoelzro | any thoughts on my tale of two compunits? | 14:18 | |
FROGGS | hoelzro: I started to debug it on sunday evening but did not get far | 14:19 | |
hoelzro | FROGGS: I was looking a little last night myself | ||
but I'd bet on you figuring it out first =) | |||
FROGGS | hoelzro: there must be a symbol merger that runs at deserialization time... if we find it, we can solv that issue me thinks | 14:20 | |
hoelzro | isn't that the one in ModuleLoader.nqp? | 14:21 | |
or a different one? | |||
I noticed that sometimes ABC.WHERE is the same address across compunits, and sometimes it's different | 14:22 | ||
that confuses me | |||
14:23
fhelmberger joined
14:24
cognominal left
14:44
zakharyas left
14:47
kaleem joined
|
|||
lizmat | commute to AmsterdamX & | 14:48 | |
14:48
lizmat left
14:53
KCL left
15:01
kaleem left
15:05
ajr_ left,
guru joined,
guru is now known as Guest96467
15:06
Guest96467 is now known as ajr_
15:08
eternaleye left,
pmurias joined
|
|||
pmurias | masak: re not using B as module name, I think it would be confusing if there were both Perl 5 and Perl 6 modules with the same name doing different things | 15:09 | |
masak | fortunately, no-one is proposing that. | ||
pmurias | masak: like if we had a Perl 6 web framework called DBI ;) | ||
15:10
eternaleye joined
|
|||
masak | I agree that would be terribly confusing. also unlikely. | 15:10 | |
Ven | that'd probably mean we picked very wrong names at some point :) | 15:11 | |
.oO( guess what the "bacon.js" library is for?? ) |
|||
pmurias | there is a also a question if the Perl 5 author should own the Perl 6 name by default | 15:12 | |
masak | that's a good question. | 15:13 | |
FROGGS | pmurias: since everybody can release the distribution and package Foo, that does not make much sense | 15:15 | |
Ven | pmurias: I say no :) | 15:17 | |
FROGGS | pmurias: that's where the recommendation manager would say: "I know this P5 guy, and we recommend to use TAP::Harness by leont, even when there are others that have higher version numbers or more recent patches." | ||
nine | Having a P5 author owning the P6 name by default would hinder random persons from porting their favourite P5 module to P6. There's an awful lot of orphaned P5 modules on CPAN. | ||
pmurias | everyone can have his own Foo distribution, but if we have multiple ones we need to determine which one is loaded by 'use Foo' | 15:18 | |
FROGGS | nine: I can release an Inline::Python for Perl 6 right away under my name, and you can do the same under your name tomorrow | ||
15:18
kaleem joined,
[Sno] left
|
|||
pmurias | FROGGS: and which one should 'use Inline::Python;' load? | 15:19 | |
FROGGS | nine: there is no "I register for this namespace, and nobody else can in future" | ||
pmurias: that depends on what version you've got installed | |||
nine | FROGGS: on CPAN you can't or at least shouldn't be able to | ||
pmurias | FROGGS: that seems like a horrible solution | ||
FROGGS | pmurias: if you have installed all dists that exist, a bare 'use Inline::Python' should use the recommended distribution | 15:20 | |
nine: when one would use P5's indexer | |||
pmurias | recommended by who? | ||
FROGGS | nine: but we use our own | ||
pmurias: by the recommendation manager | |||
nine | FROGGS: on CPAN? | ||
FROGGS | nine: yes | ||
nine | FROGGS: where can I find more information about Perl6 and CPAN? The topic interests me. | 15:21 | |
FROGGS | pmurias: that's why you can/should specify a use Inline::Python:auth<nine> if *you* want to lock it down | ||
nine: S11 and S22 | |||
pmurias | FROGGS: so someone needs to own the recommended slot | ||
FROGGS | pmurias: yes, like P5's indexer keeps a 02packages, we'd keep a list of recommended dists, which would not be that static in contrast to P5 | 15:22 | |
which means that we can change our mind and switch to a different auth in case the recommended dist is not maintained anymore | 15:23 | ||
pmurias: so the difference is just: there is no first-come-forever-own namespace thingy, but a list of recommended dists | 15:24 | ||
pmurias | having a first-come-forever-owns-the-default name seems superior | ||
nine | But first-come-forever-own is not exactly how CPAN works. One can adopt namespaces. | ||
FROGGS | but then again, I can fork TAP::Harness, patch it, and release it under my name... my clone would not just be recommended, but could be installed and used by: use TAP::Harness:auth<FROGGS> | 15:25 | |
pmurias | having such a thing seems usefull | ||
* useful | |||
FROGGS | nine: yes, and we make that adoption more clear, by saying that there is a group of ppl that has the power to decide | ||
pmurias: first-come-first-recommended seems useful | 15:26 | ||
15:30
chenryn joined
|
|||
pmurias | what I would like to avoid is some incompatible version taking over as the default name all of a sudden and things breaking | 15:31 | |
FROGGS | pmurias: the recommendation managers won't change the dist on a weekly basis and won't just pull the rug under your feet | ||
though, when you declare dependencies in your applications/disst, you have to think about what you want | 15:32 | ||
15:32
erkan left
15:33
telex left
15:34
erkan joined,
erkan left,
erkan joined,
telex joined
15:35
chenryn left
15:36
chenryn joined,
ajr_ left
|
|||
ugexe | raydiak: i dont think your travis run actually compiled any of those modules | 15:37 | |
15:39
liztormato joined,
ajr joined,
ajr is now known as Guest21868
|
|||
liztormato | Re S11 and S22 discussion right now: | 15:39 | |
A bare -use Foo- is P5 think in my book | 15:40 | ||
15:40
lucas__ joined
|
|||
lucas__ | hello channel | 15:41 | |
moritz | \o | ||
liztormato | For production quality code, you will need to specify | ||
lucas__ | moritz: o/ | ||
liztormato | Auth and version as explicitly as possible | ||
That is *the* way to ensure there will be no breakage in production | 15:42 | ||
masak | liztormato: I agree with your point. but surely (a) the system is still opt-in? and (b) in the majority of cases the right version will be chosen if those are not specified? | ||
I agree it's good to be precise. especially auth. | 15:43 | ||
with version, I can see ways to make the system less robust to changing dependencies rather than more. | |||
lucas__ | Sometimes I read something about Perl 6 and CPAN together... Does it make sense? IMHO, code in two different languages on the same repository would be very confusing. | ||
15:44
Guest21868 left
|
|||
masak | lucas__: I for one think it'd be a good thing for both Perl 5 and Perl 6, long-term. | 15:44 | |
liztormato | If you say -use Foo- you will get the one of the first CompUnitRepo in @*INC that has a Foo | ||
moritz | lucas__: you do notice that there's C code on CPAN too? and SQL code? and ... | ||
15:44
ajr_ joined
|
|||
lucas__ | Maybe even JS also... :) | 15:44 | |
Ugator | should there be a warning, if I specify an old version? | 15:45 | |
liztormato | Ugator: No | ||
Ugator | but this might be relevant for security | 15:46 | |
liztormato | If your specification is matched by a CompUnitRepo, you get what you asked for | ||
If you don't get what you want, them your specification is wrong | 15:47 | ||
*then | 15:48 | ||
FROGGS | lucas__: btw, you do not find any Perl 6 dist when you use search.cpan.org or metabase.org... it is just that we use their storage.. | 15:49 | |
lucas__: we don't use their websites | |||
liztormato feels the need for an advent post | |||
FROGGS | yeah | ||
masak | ++lizmat | ||
colomon | lizmat++ | ||
liztormato | Btw: the recommendation manager is only intended for *installation* of dists. Nothing else | 15:50 | |
lucas__ | FROGGS: What do you mean? Are perl 6 modules hosted on CPAN infra? | 15:51 | |
liztormato | -use- is about what CompUnitRepo provides | ||
That generally is what is installed | |||
Although the API would allow things such as CloudPAN | 15:52 | ||
lucas__: Yes | 15:54 | ||
FROGGS | lucas__: yes | ||
liztormato | ;-) | ||
FROGGS | :o) | ||
lucas__ | OMG! :D | ||
I didn't know that. | |||
liztormato | Although not limited to | ||
15:54
kaare_ joined
|
|||
FROGGS | lucas__: though, we still use github mostly | 15:54 | |
one reason is that the module installer (panda) only has CPAN support in a branch | 15:55 | ||
lucas__ | FROGGS: Yes, I was thinking the github was the only channel of distribution... | ||
FROGGS | damn, I need to work at that again :/ | ||
15:55
kaleem left
|
|||
liztormato | As do I. Will have time Thu-Sun at the patch -p2 hackathon | 15:56 | |
15:57
Mouq left
|
|||
FROGGS | I won't have time on Sunday, but Sat should work and the evenings anyway | 15:57 | |
liztormato | Cool. I hope to finish the newio branch in any case | 15:58 | |
FROGGS | liztormato: fixing CUR::I is also very high on my todo, which is a nice separate task | 15:59 | |
lucas__ | Range methods are spelled with underscores: excludes_min, excludes_max. Do you think it's ok or they should be hyphenated? | ||
Ven | Uhm, how many language have a "minmax" built-in? We do, List::Util (p5) does, ruby does... | 16:01 | |
masak | lucas__: well, it is by spec... | ||
FROGGS | masak: by spec or by design documents? | 16:02 | |
masak | by synopsis, written by TimToady before the 2009 migration. | ||
lucas__ | what 2009 migration?? | 16:03 | |
16:03
jluis left
|
|||
FROGGS | lucas__: we migrated the year 2009 in 2004 :P | 16:03 | |
into* | |||
masak: what happened 2009? | |||
masak | actually, the underscores seem to have been chosen by dduncan: see e35dc603. | ||
colomon is pro-dash | 16:04 | ||
masak | a migration from something to SVN. | ||
lucas__ | colomon: \o/ | ||
masak | yes, feel free to change it to dashes. | ||
but please update S03 also. | |||
arnsholt | Does anyone know what the nqp::takeclosure op is for? | ||
FROGGS | Dash All The Things! /o/ | ||
liztormato | Fwiw, I feel that using - is really a dogfooding issue | 16:05 | |
16:05
denis_boyun left
|
|||
FROGGS | liztormato: for what? work on syntax highlighters? | 16:05 | |
16:06
Ven left
|
|||
FROGGS | arnsholt: public static SixModelObject takeclosure(SixModelObject code, ThreadContext tc) { | 16:06 | |
if (code instanceof CodeRef) { | |||
CodeRef clone = (CodeRef)code.clone(tc); | |||
clone.outer = tc.curFrame; | |||
liztormato | FROGGS: Also , yes | 16:07 | |
FROGGS | liztormato: what-else? | ||
liztormato | Idiomatic Perl 6 code | ||
FROGGS | *nod* | ||
pmurias | arnsholt: so that you get a freshly cloned coderef instead of -> {...} returning the same thing every time | ||
liztormato | Finding parse issues with identifiers with - | 16:08 | |
arnsholt | pmurias: Aha. So you need to actually invoke takeclosure on a block to get a closure? | ||
FROGGS | ohh, I think our parser is already very good with that | ||
lucas__ | liztormato: Are you against this change? | 16:09 | |
FROGGS | lucas__: no | ||
liztormato | But if we break anything, we should know assp | ||
FROGGS | pro dash ftw! | ||
lucas__ | alright, I'll do it then. rakudo/roast/specs... this will break lots of things, right? | 16:10 | |
liztormato | I'm pro dash, fwiw | ||
We have deprecation cycle | |||
lucas__ | liztormato: thanks. I wasn't very familiar with the term "dogfooding" :) | 16:11 | |
Also... do think having only the "negative" is ok, or an affirmative includes_min/includes_max would also make sense? | 16:12 | ||
*do you (people) think... | |||
*includes-min, includes-max | 16:13 | ||
well, better not | |||
FROGGS | no, we don't need includes-* when we have excludes-* | 16:14 | |
liztormato | +1 | ||
16:15
abraxxa joined
16:18
erkan left
16:20
erkan joined,
erkan left,
erkan joined
|
|||
pmurias | arnsholt: yes | 16:24 | |
liztormato | Decaring& | 16:25 | |
16:25
liztormato left,
guru joined
16:26
guru is now known as Guest82949
|
|||
timotimo | liz doesn't care? :( | 16:26 | |
16:26
ajr_ left
|
|||
masak | lizmat: I respect the fact that people like to put dashes in their code. I do have a lot of code bases with exclusively underscores in them, though. | 16:27 | |
lucas__ | I was thinking range were the only instance of underscores... but grammatical categories and Test.pm also have them... But, well, it's different things, different matter. | ||
masak | it's like, some days I do dashes exclusively, and some days I do underscores. the code bases are consistent, but which style they get depends on the day I start them. | 16:28 | |
lucas__: those are more OK, I think. they are more internal. YMMV. | |||
lucas__ | masak: I agree. | ||
16:28
sqirrel__ joined
|
|||
timotimo | why don't we tell people to put lots more ' into their functions/methods? | 16:35 | |
osfameron | why can't you have ' at the *end* of an identifier name btw? | 16:38 | |
is that just a parser issue? | |||
timotimo | quickly whip up a slang to investigate that idea :) | ||
16:40
kurahaupo joined
16:42
grondilu left
16:43
kaleem joined
|
|||
dalek | rl6-roast-data: d636201 | coke++ | / (5 files): today (automated commit) |
16:44 | |
16:45
chenryn left
|
|||
ugexe | in rakudobrew the only difference between the 'build moar' and 'build moar_jit' commands is '--gen-nqp=master'. Is that correct? (last pr from timo removed --enable-jit) | 16:45 | |
FROGGS | --enable-jit is the default nowadays | ||
bbiab | 16:46 | ||
16:46
FROGGS left
|
|||
timotimo | i removed it? | 16:46 | |
oops. | |||
in that case, we should either add --disable-jit to moar or introduce a moar_nojit | |||
ugexe | 'perl Configure.pl --backends=moar --gen-moar' == 'perl Configure.pl --backends=moar --gen-moar=master --gen-nqp=master' then? | ||
timotimo | since moar_jit is now the default | ||
--gen-moar and --gen-nqp will look at tools/build/NQP_REVISION for rakudo and tools/build/MOAR_REVISION for moarvm to figure out which commit to build | 16:47 | ||
=master will give you the very latest of both | |||
ugexe | but on a first build it should generate moar_jit now? | 16:48 | |
arnsholt | pmurias: Right. That's likely a bug in Snake I'd be scratching my head over =) Thanks! | ||
17:09
mr-foobar joined
|
|||
lucas__ | 3 PRs awaiting for you... :) | 17:09 | |
travis will break. right? | 17:12 | ||
moritz | travis just builds rakudo, doesn't spectest | 17:15 | |
17:16
PZt joined
|
|||
[Coke] | moar nojit: github.com/coke/perl6-roast-data/b...oar.sh#L12 | 17:16 | |
ugexe | ill send a pr with nojit option for rakudobrew | 17:17 | |
moritz | ++ugexe | 17:18 | |
17:24
fhelmberger left
17:28
[Sno] joined
17:29
immortal joined
17:31
erkan left,
sqirrel__ left
|
|||
timotimo | since you can still always turn off the jit via an environment variable, having a jit vs nojit build isn't as important any more | 17:32 | |
17:34
kjs_ left
17:35
kjs_ joined
|
|||
arnsholt | pmurias: Are you sure the takeclosure is needed to get correct closure stuff? Looks like Snake works correctly without it | 17:36 | |
17:37
kaleem left
|
|||
timotimo | maybe the semantics are slightly different? | 17:37 | |
[Coke] | ~. | 17:39 | |
arnsholt | Could be. I'll probably have to pester jnthn about it at some point | 17:40 | |
=) | |||
dalek | ake: 7af2d4d | (Arne Skjærholt)++ | src/Snake/Actions.nqp: Simplify our QAST trees a bit. |
17:41 | |
timotimo | i'd be interested if there's lessons we can learn from snake to make spesh better | 17:43 | |
like, better in general | |||
17:47
sjohnson joined
|
|||
timotimo | damn, at one point i really have to stop obsessing so much about performance %) | 17:47 | |
17:48
Guest82949 left
|
|||
arnsholt | I think it's a bit early for that. There's still swathes of Python left to implement | 17:49 | |
But the whole "Python cannot into declarations" thing is likely to going to be a bottleneck, IMO | |||
moritz | timotimo: don't stop obsessing about preformance, please | ||
17:50
pmurias left
|
|||
colomon | +1 | 17:51 | |
17:54
lizmat joined
|
|||
timotimo | hunting performance can become timesome sometimes | 17:55 | |
tiresome* | |||
17:56
virtualsue left
17:57
dakkar left
|
|||
lizmat | the AmsterdamX meeting has started :-) | 17:57 | |
17:57
guru joined,
kjs_ left,
guru is now known as Guest7448
17:58
Guest7448 is now known as ajr_
18:01
kjs_ joined
18:05
kurahaupo_ joined
18:06
cibs left
18:07
cibs joined
|
|||
lucas__ | Should I put "is DEPRECATED" as a method trait or inside the block as a function call? | 18:08 | |
I'm copying the example from the recent Increase/Decrease change. | |||
18:08
kurahaupo left
|
|||
lizmat | as a function call | 18:09 | |
subroutine traits don't work in the setting :-( | 18:10 | ||
lucas__ | lizmat: Thank you! | ||
Also, I don't understand why Range sometimes uses $.excludes-min and $!excludes-min. Should I delegate to which one? | |||
I guess is the private one, right? | |||
lizmat | $.foo is short for self.foo | ||
it subclasses | |||
$!foo accesses the attribute directly | 18:11 | ||
and does not subclass | |||
lucas__ | Oh, so it should be $!foo, right? | ||
I mean... the deprecated methods will delegate to $!foo instead of $.foo | 18:12 | ||
lizmat | generally, yes | 18:13 | |
18:16
sqirrel__ joined
|
|||
dalek | p: 247dc76 | TimToady++ | src/vm/ (2 files): lazier longlit initialization |
18:17 | |
lucas__ | I came up with this: | ||
method excludes_min() { DEPRECATED('Use excludes-min instead'); $!excludes-min } | |||
I'll put it at the very end of the Range class. | 18:18 | ||
18:18
erkan joined,
erkan left,
erkan joined
|
|||
lucas__ | Do you like me to change something? | 18:18 | |
Similiar thing for excludes_max | |||
18:18
pecastro left
18:20
immortal left
|
|||
TimToady | jnthn: 247dc76 makes the XXX hack slightly less egregious, but it could still use to be cachified in the tc somehow, I think | 18:20 | |
lizmat | lucas__: 'excludes-min' is enough | 18:22 | |
the rest of the text is added | |||
automagically | |||
lucas__ | Oh, interesting | 18:23 | |
dalek | kudo/newio: ec07261 | (Elizabeth Mattijsen)++ | src/core/IO/Handle.pm: We need to decont PIO as passing it conts it |
18:24 | |
jnthn | TimToady: I need to get some food and drink inside of me right now, but will take a look at it when I'm back :) | ||
Hah, cool...0C! :D | 18:26 | ||
bbiab o/ | |||
timotimo | now i need some noms | ||
18:27
ajr_ left
18:28
denis_boyun joined
18:29
perturbation joined
|
|||
lucas__ | One more thing... Does "|<2014.11 2015.11>" unpacks a quoted word list in a function call? Should I add them to the DEPRECATED call? | 18:32 | |
18:33
anaeem1_ joined
18:34
Akagi201 left
|
|||
timotimo | you can do that, yeah | 18:34 | |
lucas__ | timotimo: Thank you | ||
lizmat | make it 2014.12 2015.12 though | ||
18:35
cognominal joined
|
|||
lizmat | they won't get marked as deprecated until the next release | 18:35 | |
lucas__ | ok | ||
18:36
Akagi201 joined
18:43
Mso150 joined
18:44
FROGGS joined
19:08
eternaleye left
19:11
eternaleye joined
19:15
sqirrel__ left
19:20
kjs__ joined,
erkan left
19:21
kjs_ left,
kjs__ is now known as kjs_
19:25
Alina-malina left
19:28
Sir_Ragnarok left
19:29
Sir_Ragnarok joined
19:30
Alina-malina joined
|
|||
dalek | kudo/newio: 5c66966 | (Elizabeth Mattijsen)++ | src/core/IO.pm: Introduce SPURT-PATH() |
19:30 | |
kudo/newio: da34880 | (Elizabeth Mattijsen)++ | src/core/ (2 files): Use new SPURT-PATH |
|||
kudo/newio: 63dd732 | (Elizabeth Mattijsen)++ | src/core/ (2 files): We need PIO's to be Mu when passing Otherwise we get a very strange error message, which is a type binding error gone awry. |
|||
19:34
jack_rabbit left
|
|||
dalek | kudo/newio: 55e38be | (Elizabeth Mattijsen)++ | src/core/io_operators.pm: Fix issue with open(:rw :w :r) |
19:36 | |
19:43
gfldex joined
|
|||
lucas__ | A little note on the negative/affirmative names on ranges: "not includes" means "excludes" and "not excludes" means "includes". Maybe "not excludes" sounds like a double negation. After doing the deprecated methods, I saw that it would be easy to do: method includes-min() { not $!excludes-min } | 19:45 | |
But I'm just thinking... I'm not clear if having both synonyms/antonyms in a language is a good thing. | |||
19:46
kjs_ left
|
|||
masak | I can sort of see how 'excludes' was the first one that came to mind when writing the synopsis. | 19:49 | |
since exclusion corresponds to a '^' at either end. | |||
timotimo | right, because we put an extra character to exclude | ||
so "excludes-min?" corresponds to "has an extra character at the beginning?" | |||
lucas__ | yes, it makes sense the relationship between excludes and having a caret (^) on the operator. | 19:52 | |
I just run in occurrences of !$!excludes-min in the Range code and thought if it would be more easy to think as includes... But this is a minor thing, of course. | 19:54 | ||
19:55
molaf_ left
|
|||
lizmat | yeah, we don't want the API to become less understandable for the implementation to become simpler | 19:55 | |
19:55
darutoko left
|
|||
timotimo | the thing is: accessing $!excludes-min is super fast; calling self.includes-min which calls self.excludes-min and prefix:<!> is problematic because the method call is late-bound | 20:00 | |
20:03
erkan joined,
erkan left,
erkan joined
|
|||
dalek | p: 97bcfe2 | TimToady++ | tools/build/MOAR_REVISION: bump moar |
20:04 | |
20:04
virtualsue joined
|
|||
dalek | kudo/nom: 68d05b4 | TimToady++ | tools/build/NQP_REVISION: bump nqp |
20:05 | |
20:05
virtualsue left
20:07
FROGGS left,
FROGGS joined,
eternaleye left
|
|||
vendethiel | Uhm, erh, hard question: | 20:08 | |
how can we make perl6 tooling "good"? Anything that tinkers with the internal is going to be hard as well to "ide"-ize | |||
(add_method, add_fallback, and especially MACROS) | |||
timotimo | slangs | 20:09 | |
yeah, pretty much the only way to do it properly is use the actual implementation. which means running code that's potentially untrusted | |||
20:10
eternaleye joined
|
|||
[Coke] | don't need to run it in the same executable that the IDE is running in. could exec a new copy with a restricted setting. | 20:11 | |
dalek | kudo/nom: e1aa077 | (Elizabeth Mattijsen)++ | / (5 files): Add role PIO and class IO::Pipe placeholders |
20:12 | |
kudo/newio: 68d05b4 | TimToady++ | tools/build/NQP_REVISION: bump nqp |
20:13 | ||
kudo/newio: e1aa077 | (Elizabeth Mattijsen)++ | / (5 files): Add role PIO and class IO::Pipe placeholders |
|||
kudo/newio: c775050 | (Elizabeth Mattijsen)++ | / (6 files): Merge branch 'nom' into newio |
|||
vendethiel | [Coke]: definitely; but still, that sounds dangerous | ||
timotimo | the restricted setting is a complete and utter joke | 20:14 | |
lizmat | ssshhhh :-) | 20:15 | |
timotimo | the parser needs to be more restrictive and prohibit, for example, nqp and pir ops | ||
20:15
sqirrel__ joined
|
|||
nine | To read Perl, you have to run Perl. That's always been that way. | 20:16 | |
How can I access the class' name during role setup? | 20:17 | ||
timotimo | you mean at compose time? | ||
nine | yes | ||
timotimo | hm, you're looking for something to call where exactly? | ||
nine | I'm trying to create a Python class for every P6 class that consumes the PythonParent role. | 20:18 | |
And for that I need the name of the class the PythonParent role is composed into | |||
FROGGS | what about $*PACKAGE? | 20:20 | |
I've seen that in the grammar/actions at least | |||
lizmat | AmsterdamX shutting down& | ||
20:21
lizmat left
|
|||
FROGGS | and the name should be available as $*PACKAGE.HOW.name($*PACKAGE) | 20:21 | |
nine | FROGGS++ | 20:22 | |
The answer was close: ::?CLASS.HOW.name(::?CLASS); | |||
FROGGS | m: trait_mod:<foo>(Any, :$foo!) { say $*PACKAGE.HOW.name($*PACKAGE) }; class Bar is foo { } | ||
camelia | rakudo-moar 316f99: OUTPUT«===SORRY!=== Error while compiling /tmp/uBy0gsXhliVariable '$foo' is not declaredat /tmp/uBy0gsXhli:1------> trait_mod:<foo>(Any, :$foo⏏!) { say $*PACKAGE.HOW.name($*PACKAGE) }» | ||
timotimo | that sounds like you could also write ::?CLASS.^name | ||
masak | was gonna say | ||
FROGGS | m: sub trait_mod:<foo>(Any, :$foo!) { say $*PACKAGE.HOW.name($*PACKAGE) }; class Bar is foo { } | ||
camelia | rakudo-moar 316f99: OUTPUT«===SORRY!=== Error while compiling /tmp/rxA8OOmWP7'Bar' cannot inherit from 'foo' because it is unknown.at /tmp/rxA8OOmWP7:1------> » | ||
timotimo | FROGGS: not $?PACKAGE? | 20:23 | |
FROGGS | m: sub trait_mod:<is>(Any, :$foo!) { say $*PACKAGE.HOW.name($*PACKAGE) }; class Bar is foo { } | ||
camelia | rakudo-moar 316f99: OUTPUT«===SORRY!=== Error while compiling /tmp/oEkk8sZ1mRMethod 'item' not found for invocant of class 'Bar'at /tmp/oEkk8sZ1mR:1------> » | ||
FROGGS | m: sub trait_mod:<is>(Mu, :$foo!) { say $*PACKAGE.HOW.name($*PACKAGE) }; class Bar is foo { } | ||
nine | timotimo: yes! Indeed. And I was so close with trying ::?CLASS.name | ||
camelia | rakudo-moar 316f99: OUTPUT«Bar» | ||
timotimo | :) | ||
well, with ::?CLASS you get the type object of the class your code is inside of | |||
FROGGS | m: sub trait_mod:<is>(Mu, :$foo!) { say ::?CLASS.^name }; class Bar is foo { } | ||
camelia | rakudo-moar 316f99: OUTPUT«===SORRY!===Could not locate compile-time value for symbol ::?CLASS» | ||
raydiak | good afternoon #perl6 | 20:28 | |
timotimo | hello mister diak | 20:29 | |
FROGGS | hi raydiak | ||
masak | oh hai diak | ||
raydiak | \o timotimo, FROGGS, masak | 20:30 | |
m: role Foo { has $.class = $?CLASS }; class Bar does Foo { }; my $o = Bar.new; say $o.perl; # another valid solution? | 20:31 | ||
camelia | rakudo-moar 316f99: OUTPUT«Bar.new(class => Bar)» | ||
20:33
lucas__ left,
brrt joined
|
|||
brrt | \o | 20:35 | |
raydiak | hi brrt | ||
masak | o/ | 20:36 | |
m: class Bar { has $.class = $?CLASS }; say Bar.new.perl # raydiak: don't even need the role for that! :) | 20:37 | ||
camelia | rakudo-moar 68d05b: OUTPUT«Bar.new(class => Bar)» | ||
raydiak | haha masak :) | 20:40 | |
20:40
kaare_ left
20:41
colomon left
|
|||
moritz | feather successor update: I have a domain name (p6c.org), an IPv4 net (213.95.82.48/28) an IPv6 net (2001:780:101:ff00::/64 | 20:50 | |
) | |||
all I need is the hardware! | |||
(it's ordered, just not yet delivered) | 20:52 | ||
20:53
sqirrel__ left,
anaeem1_ left
|
|||
jnthn | moritz: Is the order confirmed now? :) | 20:54 | |
moritz | jnthn: yes | ||
jnthn | \o/ | 20:55 | |
nine | That's a strange one: Calculated index (-1) is negative, but Array allows only 0-based indexing in method BUILDALL at src/gen/m-CORE.setting:1025 | 20:57 | |
japhb | moritz++ | 21:00 | |
21:02
anaeem1_ joined
21:06
rindolf left
21:07
erkan left
21:08
erkan joined,
erkan left,
erkan joined
|
|||
dalek | ast: a5859e0 | usev6++ | S02-types/array.t: Adjust tests for negative subscripts |
21:11 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=111924 | ||
bartolin | m: my @a; say @a[*-1] # nine: that's one way to get that error message | 21:13 | |
camelia | rakudo-moar 68d05b: OUTPUT«Calculated index (-1) is negative, but Array allows only 0-based indexing in method gist at src/gen/m-CORE.setting:13776 in sub say at src/gen/m-CORE.setting:16510 in block <unit> at /tmp/A8DCAWhDiQ:1» | ||
21:13
erkan left
|
|||
bartolin | m: my @a; my $minus_one = -1; say @a[ $minus_one ] # that's another way | 21:14 | |
camelia | rakudo-moar 68d05b: OUTPUT«Calculated index (-1) is negative, but Array allows only 0-based indexing in method gist at src/gen/m-CORE.setting:13776 in sub say at src/gen/m-CORE.setting:16510 in block <unit> at /tmp/sYEEBTvU8B:1» | ||
dalek | p: ca142ce | TimToady++ | src/QRegex/NFA.nqp: comment out seldom-used debugging |
||
21:20
pmurias joined
|
|||
pmurias | arnsholt: what do you mean by "Python cannot into declarations"? | 21:21 | |
arnsholt: issue #2 on github? | 21:24 | ||
dalek | ast: 4437bd2 | usev6++ | S02-types/array.t: Fix descriptions of tests for negative subscripts |
||
21:25
denis_boyun left
|
|||
bartolin | (sorry for the noise; I hope those tests aren't worse now than before I started messing with them :-) | 21:25 | |
TimToady | looks pretty okay to me | 21:31 | |
dalek | ecs: 96eb086 | raydiak++ | S12-objects.pod: Remove stray bracket |
21:33 | |
21:41
kurahaupo_ left
|
|||
raydiak | in terms of a public api, would it be better to use string params restricted by subsets, or to export constants/enumerations? | 21:43 | |
moritz | enums, IMHO | 21:44 | |
raydiak | why? | ||
moritz | because they are introspectable | ||
jnthn | And more cheaply checkable | 21:45 | |
raydiak | good points | ||
moritz | and once we have coercion types, adding coercions from strings to enum values will be super easy | ||
masak | no blog post tonight :/ -- hopefully tomorrow. | ||
'night, #perl6 | |||
raydiak | g'night masak o/ | 21:46 | |
21:47
ptc_p6 left
|
|||
moritz | \o * | 21:47 | |
raydiak | \o moritz | ||
21:55
kurahaupo joined,
kurahaupo left
|
|||
raydiak | what about naming? worry about cluttering the user's namespace...should you make them type something like (math::symbolic speculation) MS_OP_NODE or MS_VAR_NODE like C, even if it's more ugly and verbose than what you could get away with using strings that don't clobber each other? | 21:55 | |
brrt | moritz: what are coercion types? | 21:56 | |
raydiak | or call it OpNode and VarNode and let the user worry about the rare conflict, and easier to type and look at the rest of the time? | ||
21:57
kurahaupo joined
|
|||
raydiak | brrt: I think he meant this: perlcabal.org/syn/S02.html#Coercive...clarations | 22:02 | |
22:02
kjs_ joined,
vti left
22:03
virtualsue joined
22:12
gtodd joined
|
|||
brrt | i see.. that is an awesome feature | 22:12 | |
dalek | ast: 11a3b4e | usev6++ | S32-num/rounders.t: Factor out test for MoarVM Issue 157 we hade test failures for JVM) |
22:15 | |
22:16
rurban left
|
|||
pmurias | raydiak: in Perl 6? using a prefix when namespaces are available seems a bad thing | 22:17 | |
raydiak | pmurias: so you vote for no exporting at all and make them type Math::Symbolic before everything? | 22:18 | |
22:19
Mso150 left
|
|||
pmurias | I vote for exporting them when there is no conflict and using a namespace when there is one | 22:20 | |
raydiak | pmurias: ah, or you meant don't worry so much about the naming, because we'll have far fewer conflicts than C? | ||
so just let them explicitly disable the exports and call them in the package when they need to? | 22:21 | ||
then name them the shorter prettier versions? | |||
pmurias | yes | ||
raydiak | pmurias++ thank you, I no longer feel like I'm chasing my tail in circles | 22:22 | |
bartolin | good night, #perl6 | 22:24 | |
22:24
telex left
|
|||
raydiak | \o bartolin | 22:25 | |
22:26
telex joined,
anaeem1_ left
22:28
anaeem1_ joined
22:33
Alula left,
Alula joined,
anaeem1_ left
22:35
Alula left
22:36
Alula joined
22:37
kjs_ left
|
|||
arnsholt | pmurias: Basically yeah (sorry for the weird language. Too much /r/polandball =) | 22:38 | |
22:41
brrt left
22:47
ggoebel111111113 left
22:48
Mouq joined
22:52
kurahaupo left
23:01
bjz left,
denis_boyun_ joined
23:02
bjz joined
23:08
davido___ left,
davido___ joined
23:09
gfldex left
23:13
kjs_ joined
23:19
Ugator left
23:24
bjz_ joined
23:25
pmurias left
23:26
bjz left
23:27
kjs_ left
23:30
bjz_ left
|
|||
timotimo | raydiak: if you have a good idea for enums, i'm all ears. in my SDL2::Raw binding i have just named most values without the SDL_TYPE_ prefix and ended up with duplicates :\ | 23:46 | |
23:52
virtualsue left
|
|||
raydiak | well, the basic problem seems to be that constant symbols represent a value, and those values can conflict...while if you use string the problem doesn't exist, because the identifier itself *is* the value that you check against, so nothing to conflict | 23:52 | |
idk where I'm going, wandering blindly down "what if" alleys | 23:53 | ||
timotimo | i think i mean something else than you | 23:54 | |
there's an SDL_FOOBAR_ASDF and an SDL_BARBAZ_ASDF | |||
raydiak | oh right, sorry, you have a different form of naming conflict :) | 23:55 |