»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend! Set by moritz on 22 December 2015. |
|||
00:01
[ptc] joined
00:05
prammer joined
00:07
prammer left
|
|||
timotimo | gnite lizmat :) | 00:08 | |
00:08
[ptc] left
00:11
[ptc] joined
00:12
[ptc] left
00:14
[ptc] joined,
firstdayonthejob left
00:15
virtualsue left
00:24
themonkeybob11 left
00:26
idiosyncrat_ joined
00:29
sortiz left,
[ptc] left
00:30
[ptc] joined
00:32
[ptc] left
00:50
tardisx left
00:54
idyllei left
01:02
tardisx joined
01:06
skids joined
01:10
yeahnoob joined
01:22
QORRiE left,
Actualeyes joined
01:40
SCHAAP137 left
01:49
rindolf left,
cdg left
01:50
cdg joined
01:54
cdg left
02:02
tmch joined,
themonkeybob11 joined
02:06
telex left
02:08
telex joined
02:09
zpmorgan joined
02:10
themonkeybob11 left
02:12
themonkeybob11 joined
02:17
themonkeybob11 left
02:23
tardisx left
02:24
partly_ joined
02:27
tardisx joined,
kalkin- left
02:35
addison left,
kid51 left
02:37
ParsonsNose joined
02:45
quester joined,
ilbot3 left
02:47
ilbot3 joined
02:50
Actualeyes left
03:07
ParsonsNose left
03:28
JimmyZ_ joined
03:35
JimmyZ_ left
03:41
cbk_ left
03:52
noganex joined
03:55
noganex_ left,
rburkholder left
04:04
Guest34004 is now known as pierrot,
pierrot left,
pierrot joined,
pierrot left,
pierrot joined
04:16
molaf joined
04:20
labster left
04:22
Actualeyes joined
04:23
themonkeybob11 joined
04:35
cognominal joined
04:50
molaf left
|
|||
Brock | At DC-Baltimore Perl Workshop (April 16 -- Baltimore, MD, USA) I'm going to give a hands-on tutorial getting people started with Perl 6! | 04:51 | |
awwaiid | dcbpw.org/ for details & sign-up :) | ||
I'm also thinking of running a Randori session there, though I might do that on the hackathon day | |||
04:54
BenGoldberg left
04:56
labster joined
05:04
cognominal left
05:06
tardisx left
05:08
cdg joined
05:12
labster left
05:15
anaeem1_ joined
05:20
dalek left
05:21
yoleaux left,
yoleaux joined,
ChanServ sets mode: +v yoleaux,
dalek joined,
ChanServ sets mode: +v dalek,
cdg left
05:27
anaeem1__ joined
|
|||
TEttinger | awwaiid: will there be softshell crab? that's much of what I know baltimore for. one of my best friends in high school grew up in maryland and was absolutely done with crab by the time he was a teenager. | 05:30 | |
awwaiid | TEttinger: I'm sure it can be obtained during your visit :) | ||
TEttinger | haha | ||
awwaiid | some of my coworkers (in DC, but still) worked as teenagers doing various things with crabs, though they didn't report being sick of them quite | 05:31 | |
05:31
anaeem1_ left,
anaeem1__ left
05:32
anaeem1_ joined,
anaeem1_ left
|
|||
TEttinger | it is nice that baltimore has some uncommon features like that. pretty good football team I think, some years; it was interesting that one of the Ravens'... linemen I think, is also publishing math papers while he's a pro football player | 05:32 | |
being known for softshell crab is better than what many other cities are known for :) | 05:33 | ||
awwaiid | hehe | 05:34 | |
TEttinger | I live in the LA area, and even though we definitely deserved the reputation for smog capital of america for many years, it's really gotten a fair bit better | 05:35 | |
05:35
nakiro joined
|
|||
TEttinger | still very bad traffic here. | 05:35 | |
but that's a recurring theme around all major cities it seems. public transit is kinda impossible here though, so sprawling | 05:36 | ||
05:43
Cabanossi left
|
|||
awwaiid | I got this hired.com report on cost-of-living comparisons, and LA had a really good ratio compared to other cities (good purchasing power AND good absolute pay) | 05:45 | |
TEttinger | huh | 05:46 | |
05:46
Cabanossi joined
|
|||
TEttinger | I guess "LA' could really mean a number of different areas | 05:46 | |
san bernardino county has massive amounts of cheap homes built during the housing boom, but it's quite the commute to downtown LA or most other areas | 05:47 | ||
05:48
wamba left,
wamba joined,
DANtheBEASTman joined
|
|||
TEttinger | gas is pricey here in california due to more stringent environmental regulations, and also supply and demand (demand is HIGH) | 05:49 | |
05:49
idiosyncrat_ left
|
|||
DANtheBEASTman | i have a working perl6 install with rakudobrew, but having trouble figuring out how to make sure it's up to date and upgrading if not | 05:49 | |
05:51
khw left
05:52
rindolf joined
|
|||
awwaiid | DANtheBEASTman: try 'perl6 -v' and see what it says. The latest rakudo is 2016.02, though I kinda recommend 2016.01.1 with Rakudo Star if you don't have any reason to be more cutting edge | 05:52 | |
DANtheBEASTman: you can also use the (I think undocumented) "rakudobrew list" to see what you have installed | 05:53 | ||
DANtheBEASTman | cheers. a friend just told me to `perlbrew self-upgrade && perlbrew build moar` so i'm waiting on that now | 05:54 | |
awwaiid | Lovely; that should hopefully get you 2016.02 | ||
DANtheBEASTman | yeah i was on 2015.11-474-gf457007 (which doesn't seem tooo old..) | ||
awwaiid | thought MIGHT get you the 'nom' version | ||
you definitely want 2015.12 at the LEAST, but as I said, really 2016.01.1 or 2016.02 are much better. There were a lot of fixes between your version and the Christmas Release | 05:55 | ||
oh wait, you said "perlbrew". I should pay attention | 05:56 | ||
"perlbrew" is a perl5 version manager, "rakudobrew" is a rakudo/perl6 version manager -- you probably meant rakudobrew | 05:57 | ||
(esp since the params you mention are for rakudobrew. so probably just muscle memory -> IRC I'm guessing) | |||
DANtheBEASTman | yeah you're right. i said perlbrew but i meant rakudobrew. | ||
awwaiid | :) | ||
DANtheBEASTman | still new af to perl. coming from a mostly php/node.js background. first project is to port this horrible runlength encoder I made today into perl | 05:58 | |
05:58
skids left
|
|||
DANtheBEASTman | well, it's not too horrible, it works exactly as I intended, i just never figured out how to handle anything but letters.. gist.github.com/DanielFGray/cefe1b...364bac0ee9 | 06:00 | |
awwaiid | sounds fun | 06:06 | |
llfourn | How do I rethrow an exception with the backtrace. It seems when I do $!.rethrow it only dies with the message. | ||
awwaiid | it is probably the decoding part that is restricted to letters from the \w . Note though that with this encoding you'll probably never be able to encode numbers since you won't be able to tell the difference between a number for the lenght and the number for an expansion | 06:07 | |
DANtheBEASTman | awwaiid: yeah i'm unsure of how to actually take arbitrary inputs | ||
awwaiid | llfourn: doc.perl6.org/routine/rethrow says you're doing it right | ||
Timbus | www.rosettacode.org/wiki/Run-length...ing#Perl_6 <- if you ever need to be inspired... (also I think the workaround is no longer needed?) | 06:08 | |
llfourn | awwaiid: hmm I thought so. Maybe it's a bug. | ||
DANtheBEASTman | oh dear. `rakudobrew build moar` failed.. | 06:09 | |
awwaiid | DANtheBEASTman: you should work out an encoding format that can more exactly differentiate data from meta-data. Maybe a special character to separate the repeated-char from the repeated-char-count for example | ||
Timbus | that would be cool | 06:10 | |
DANtheBEASTman | sprunge.us/iCdY | ||
awwaiid | DANtheBEASTman: to simplify, and assuming you don't have a reason otherwise, you might just "rm -rf /home/dan/.rakudobrew/" and start fresh with a new rakudobrew install | 06:12 | |
DANtheBEASTman | will give that a go | ||
awwaiid | DANtheBEASTman: also, I suggest "rakudobrew build moar 2016.02" | 06:13 | |
that way it'll get the specific version, in case it doesn't defaut correctly | |||
DANtheBEASTman | is it worth building from the AUR on archlinux? i see there's rakudo-git .. | 06:15 | |
i guess i'll just tias | 06:17 | ||
re RLE: i'd thought about returning an array, with data and metadata as separate items | 06:21 | ||
06:22
virtualsue joined
06:23
sftp left,
sftp joined
06:39
virtualsue left
06:48
bjz joined
06:50
domidumont joined
06:54
domidumont left
06:55
domidumont joined
06:59
cibs joined
|
|||
Hotkeys | DANtheBEASTman: I'm on arch and I just build from source, but I guess rakudo-git would work | 06:59 | |
07:03
xinming left
07:04
xinming joined
07:14
virtualsue joined
07:24
bjz_ joined
07:25
bjz left,
rhr left
07:27
kjs_ joined
07:32
rhr joined
07:33
wamba left
|
|||
dalek | line-Perl5: 518b6d1 | (Brock Wilcox)++ | / (2 files): Set up travis |
07:37 | |
line-Perl5: 9c6fa98 | niner++ | / (2 files): Merge pull request #54 from awwaiid/travis Wow, thank you so much! |
|||
07:38
Relsak joined,
firstdayonthejob joined,
zpmorgan left
07:39
sno left
07:43
bjz joined,
labster joined
07:44
CIAvash joined,
tinita_ joined,
bjz_ left,
tinita left
07:48
RabidGravy joined
07:49
darutoko joined
|
|||
RabidGravy | MARNING | 07:49 | |
awwaiid | nine_: yeah, I had that on the back-burner for a while :) | 07:50 | |
dalek | osystem: 29fa5a0 | azawawi++ | META.list: Add Memoize to ecosystem |
07:56 | |
RabidGravy | azawawi++ # harr | 07:58 | |
dalek | rl6-most-wanted: 4f05d4d | azawawi++ | most-wanted/modules.md: Added WIP for Memoize |
||
07:58
AlexDaniel joined
08:02
virtualsue left
08:05
Actualeyes left
08:06
ely-se joined
08:23
zakharyas joined
08:32
fireartist joined,
sno joined
08:39
Amnez777 left,
Amnez777 joined
08:40
firstdayonthejob left
08:43
kjs_ left
08:59
dakkar joined,
rurban joined,
Gothmog_ joined
09:00
virtualsue joined
09:02
zakharyas left
09:06
[ptc] joined
09:23
quester left
|
|||
dalek | kudo/jvminterop: 7242188 | peschwa++ | src/vm/jvm/Perl6/Metamodel/JavaHOW.nqp: Return the right thing when we don't find a method. This way we get a proper X::Method::NotFound, instead of a low-level "Can not invoke this object." |
09:31 | |
kudo/jvminterop: 2cc0f06 | peschwa++ | t/03-jvm/01-interop.t: Remove erroneous comment. |
|||
kudo/jvminterop: 17e2679 | peschwa++ | t/03-jvm/01-interop.t: Add a test for throwing X::Method::NotFound. |
|||
psch | the next obvious issue would be throwing the right thing when the user passes wrongly typed arguments to a Java method... | 09:33 | |
which seems like it involves quite a bit of shuffling things from BootJavaInterop to RakudoJavaInterop | 09:34 | ||
the former can get away with just dying straight out of the corresponding SMO subtypes get_* method, but rakudo can't | 09:35 | ||
09:35
[ptc] left
|
|||
psch | not sure what the good way to solve that is, though | 09:35 | |
09:36
yeahnoob left
|
|||
psch | what comes to mind immediately is type checking when trying to fit the arguments into the Java class | 09:36 | |
but that kind of replicates a lot of Binder code in the interop code, which i don't think is a good idea | |||
09:37
[ptc] joined
|
|||
psch | so i probably should try and get Binder involved there directly, if possible... | 09:38 | |
*the | |||
hm, actually the Binder should already be involved i suppose | 09:44 | ||
09:54
abraxxa joined
|
|||
AlexDaniel | m: say grep:kv(/./, <a b c>) | 09:57 | |
camelia | rakudo-moar 50a4df: OUTPUT«Regex object coerced to string (please use .gist or .perl to do that) in any canonicalize_pair at src/Perl6/World.nqp line 4040Regex object coerced to string (please use .gist or .perl to do that) in any canonicalize_pair at src/Perl6/World.nqp line 4…» | ||
masak | m: say grep:kv(rx/./, <a b c>) | 10:00 | |
camelia | rakudo-moar 50a4df: OUTPUT«Regex object coerced to string (please use .gist or .perl to do that) in any canonicalize_pair at src/Perl6/World.nqp line 4040Regex object coerced to string (please use .gist or .perl to do that) in any canonicalize_pair at src/Perl6/World.nqp line 4…» | ||
10:03
SCHAAP137 joined
10:09
Skarsnik joined
|
|||
Skarsnik | Hello | 10:11 | |
10:11
araujo left
|
|||
timotimo | o/ | 10:12 | |
Skarsnik | Any idea on what can I do to run a part of my code that leak, I mean to freely kill it and restart it? I tried using fork but it lock the C lib I use to parse html | 10:14 | |
leak = fill 2GB in 24h x) | 10:15 | ||
gregf_ | hi | 10:16 | |
i've installed a module using panda. is there a way to check where it got installed (~/.rakudobrew does not have it). something like $INC{"Foo/Bar.pm"} | 10:17 | ||
timotimo | Skarsnik: just isolate the workload in a separate worker process (full process; a thread isn't enough) and have it exit when it's done enough work? | 10:18 | |
Skarsnik | Yes, but how I do that without fork? I run a different script? | ||
gregf_ | `locate Tiny.pm | grep JSON` <- does not return any results *ive installed JSON::Tiny* | 10:19 | |
Skarsnik | gregf_, try using it? it's put in PERL6 Install/site/panda/... something like that | ||
and the name is marshamaled | |||
so you can't find it with a locate/find | 10:20 | ||
gregf_ | Skarsnik: using it works.. but i just wanted to know where modules get installed by default | ||
RabidGravy | m: say $*REPO.repo-chain | 10:21 | |
camelia | rakudo-moar 50a4df: OUTPUT«(inst#/home/camelia/.perl6/2016.02-72-g50a4df3 inst#/home/camelia/rakudo-m-inst-1/share/perl6/site inst#/home/camelia/rakudo-m-inst-1/share/perl6/vendor inst#/home/camelia/rakudo-m-inst-1/share/perl6 CompUnit::Repository::AbsolutePath.new(next-repo => Comp…» | ||
partly_ | OMFG I think i figured out my OpenSSL issue, which i talked about yesterday. An XMPP Server uses StartTLS to signal that it want to start a secure connection. I need to handle this in my application, before I switch to SSL | ||
Skarsnik | Is there a page on the doc about compunit/repo stuff? | 10:22 | |
10:22
partly_ is now known as kalkin,
kalkin is now known as kalkin-
|
|||
RabidGravy | no, I was going to start writing it, got distracted and mde some software instead | 10:22 | |
10:23
araujo joined
|
|||
RabidGravy | gregf_, gist.github.com/jonathanstowe/be95...f713cff2b5 has the basic guts of a thing to find *all* the installed modules, this could be adapted | 10:23 | |
gregf_ | RabidGravy: nice, thanks... hmmm quite a few locations :| | 10:25 | |
also, out os curiosity. would there be an AWS api using Perl6 anytime? *the Perl5 ones are pretty much incomplete :|* | 10:27 | ||
s/os/of/ | |||
moritz | there would be one if somebody made one | ||
timotimo | nobody knows. except the person who makes it | ||
moritz | "someone like you" | 10:28 | |
gregf_ | we do use a lot of the API(S3/DynamoDb,Sns) :| *all PHP or Java* | ||
heh | |||
Skarsnik | x) | ||
gregf_ | working on Perl6 makes me feel im using Ruby .... from a distance ;) | 10:29 | |
Skarsnik | wow Stage parse : 108.744 it was around 70 for me previously | 10:32 | |
RabidGravy | I've got to make some adaptions to HTTP::UserAgent for it to be able to properly work with AWS | ||
Skarsnik | I feel like h:ua crash on some malformed http occasionnaly | 10:33 | |
I had to put some code on a try {} block because of that x) | |||
RabidGravy | entirely possible, but without test cases it won't get fixed | 10:34 | |
Skarsnik | I should keep the full trace of this code in a file | ||
10:35
molaf joined
|
|||
RabidGravy | really the URI of a server that makes http that H::UA can't handle would be enough | 10:44 | |
Skarsnik | hm running something with perl6-valgrind-m output nothing outside the start, is that normal? | 10:45 | |
RabidGravy, na it's occasionnal (I fetch regulary the same page) | 10:46 | ||
10:46
cognominal joined,
virtualsue left
|
|||
timotimo | you need to know that valgrind is EXTREMELY slow | 10:47 | |
expect your script to take at lest 20x longer to do anything at all | |||
Skarsnik | Yes, but I mean, it reached some say (yes it take a while) but it output nothing | 10:49 | |
timotimo | you may have more luck building moarvm with --asan (a Configure.pl option), that's about 3x slower and catches many things valgrind catches, but not nearly everything | ||
how can you know it reaches the say if it outputs nothing? | |||
Skarsnik | I mean, there is no valgrind output | 10:51 | |
timotimo | that means everything is going well | ||
valgrind only outputs things if things go wrong | |||
==18801== Memcheck, a memory error detector | |||
==18801== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. | |||
==18801== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info | |||
^- it did output this, right? | |||
Skarsnik | I tried to track down this perl6 leak x) | ||
Yes | |||
10:52
zakharyas joined
|
|||
timotimo | well, you cannot detect a leak until the program ends | 10:52 | |
btw, if you're looking for leaks, you really do need to run your moar with --full-cleanup and also tell valgrind to --leak-check=full | |||
Skarsnik | Oh yeah, it only show error in memory allocation/free | ||
timotimo | if you do not use --full-cleanup, moar will just leave everything allocated and exit when it's finished | 10:53 | |
arnsholt | Which generates a bunch of "potential leak" messages (or something along those lines. It's been a while since I last used valgrind) | 10:54 | |
10:56
brainwash left
10:57
labster left
|
|||
Skarsnik | it's like 100x slower x) | 10:59 | |
arnsholt | Wouldn't surprise me. It's really slow | ||
timotimo | yes, valgrind is really, really slow. | 11:01 | |
11:04
espadrine_ joined,
espadrine_ is now known as espadrine,
rurban left
|
|||
Skarsnik | hm, aside from the 4MB lost at the end, it does not look that bad gist.github.com/Skarsnik/7863fd11b361df6fd931 | 11:06 | |
11:06
RabidGravy left
|
|||
jnthn | ==17380== 4,404,470 (4,002,840 direct, 401,630 indirect) bytes in 200,142 blocks are definitely lost in loss record 68 of 68 | 11:07 | |
timotimo | you'ven't built moar with --debug? | ||
jnthn | ==17380== at 0x40291CC: malloc (vg_replace_malloc.c:296) | ||
Skarsnik | but it's close to what is lost on a real run of this for each iteration of the loop | ||
jnthn | ==17380== by 0x40B51AC: MVM_args_copy_callsite (in /home/skarsnik/devel/leak-rakudo/rakudo/install/lib/libmoar.so) | ||
Wow, that's not good... | |||
timotimo | jnthn: i've seen something similar to this somewhere else, too | ||
Skarsnik | I use default option of Configure.pl | ||
I added --full-cleanup to moar and --leak-check=full to the valgrind-m script | 11:08 | ||
timotimo | i always --debug=3 --optimize=3 and also set CFLAGS=-march=native | ||
we need some way to give perl6-valgrind-m arguments that get passed to valgrind itself | 11:09 | ||
Skarsnik | want me to try with debug and opti option? | 11:10 | |
timotimo | that'll at least give line numbers and filenames in the traceback :) | ||
which i find is always nice | |||
Skarsnik | lookfor is something that recurse a lot (the xml tree is quite huge/deep) | 11:11 | |
optimize is a good idea? does it change much the behavior? | 11:12 | ||
timotimo | the --optimize flag is only for the C compiler | 11:14 | |
if lookfor is implemented in the native library (gumbo?) then it can't do anything about that whatsoever. if lookfor is implemented in perl6, it won't do anything about that, because in order to make that better it'd have to improve the bytecode, or the semantics :P | |||
Skarsnik | Na it's perl6 native (the xml moduke) | 11:15 | |
timotimo | OK, then it will very unlikely change the performance much | ||
recursion - well, invocation in general - is somewhat expensive in moarvm at the moment. it's on jnthn's to-do list for this year. | 11:16 | ||
Skarsnik | Well the execution time does not bother me, but the fact I lost 4Mb for each iteration of the loop it's really annoying :) | 11:17 | |
timotimo | that's not something the optimizer will be able to fix | 11:19 | |
Skarsnik | I mean, I though the optimize flag will change stuff in moar on how it handle thing | 11:20 | |
if it's just a compiler option, I guess it change nothing | |||
brb lunch | 11:24 | ||
11:30
kaare_ joined
11:40
johndau joined,
Sherwool joined
11:42
TEttinger left
11:44
rurban joined
11:47
johndau left
|
|||
dalek | href="https://perl6.org:">perl6.org: dea96f3 | (Steve Mynott)++ | source/downloads/index.html: add one line docker install docs |
11:50 | |
11:52
kid51 joined
11:56
ely-se left
12:08
sufrostico joined
12:11
virtualsue joined
|
|||
dalek | kudo/faster-accessors: b66dc24 | jnthn++ | src/Perl6/World.nqp: Generate correct signature for accessors. |
12:14 | |
kudo/faster-accessors: c69c013 | jnthn++ | src/Perl6/World.nqp: Share signature of accessors within a package. Since they're identical, and there's no user opportunity to apply any traits to them. Shaves 160KB off CORE.setting size relative to after adding the accessor generation code. |
|||
p: 79e10b4 | jnthn++ | src/vm/moar/QAST/QASTCompilerMAST.nqp: Workaround for unsigned attribute access bug. |
|||
timotimo | jnthn: how much bigger does the core setting get with generated accessors? | 12:16 | |
i imagine it could be a sizable bit | |||
12:17
wamba joined
12:18
Sherwool left
|
|||
timotimo compares locally | 12:19 | ||
jnthn | Will find out soon | ||
Going to merge that in a moment :) | 12:20 | ||
dalek | p: 902c10d | jnthn++ | tools/build/MOAR_REVISION: Bump for performance, inlining fixes. |
12:21 | |
jnthn | timotimo: nom: 11,587,320 bytes. faster-accessors: 11,457,008 | 12:23 | |
timotimo | huh. i was expecting the other way around :D | ||
oh well ;) | |||
i'm liking that | |||
jnthn | m: say "so, it's {11587 - 11457}KB smaller" | ||
camelia | rakudo-moar 50a4df: OUTPUT«so, it's 130KB smaller» | ||
lizmat looks forward to seeing all these opts | |||
12:23
kid511 joined
|
|||
jnthn | timotimo: Well, remember that it was serializing closures before, which meant they accidentally took in a bunch of scoping | 12:23 | |
uh | |||
timotimo | oh! | 12:24 | |
jnthn | A bunch of scopes | ||
timotimo | that makes sense indeed | ||
jnthn | I was expecting to come out with about a draw though | ||
lizmat | but first I'm going to be offline for a bit | ||
& | |||
12:24
kid51 left,
lizmat left
|
|||
timotimo | this potentially also means we'll see shorter gen2 root lists, too? | 12:24 | |
jnthn | So, coming out with a win on space *and* time is nice | ||
timotimo: yeah | |||
timotimo | awesome :) | ||
jnthn | Though not sure how much of a dent it'll really make | ||
Skarsnik | I don't have the line in valgrind output even with --debug=3 on moar, hm | 12:25 | |
timotimo | uh oh | ||
jnthn | For anyone curious, together this work makes gist.github.com/jnthn/ee65e3be80f4a5485944 go from around 3.34s down to around 0.65s | ||
timotimo | why does this make that crash ... | 12:26 | |
Cannot unbox a type object | |||
at gen/moar/stage2/QAST.nqp:4364 (/home/timo/perl6/install/share/nqp/lib/QAST.moarvm:push_op:2) | |||
jnthn | That looks very much like something in RT | 12:27 | |
timotimo | the branch merge tickles it | ||
jnthn | What code? | 12:28 | |
timotimo | trying to run my white_noise.p6 from the SDL2::Raw examples/ folder | ||
it dies while precompiling | |||
jnthn | Got any unsigned attributes? | ||
timotimo | panda install . also does that | ||
could be, gimme a moment | |||
yes, a whole bunch of 'em | |||
jnthn | aha | 12:29 | |
I suspect it tickles an existing issue | |||
timotimo | in repr('CPointer') classes as well as native functions, their return types and also parameterizing Bufs | ||
jnthn | Got a golf, ooc? But I can also take the one in rT | ||
timotimo | i'll try, gimme a minute | ||
jnthn | OK | 12:31 | |
lunch here :) | |||
timotimo | i've got one | 12:33 | |
jnthn | OK; gist it and I'll check if the fix for that RT that I'll do after lunch also fixes it :) | ||
timotimo | class golf { has uint32 $.format is rw; } | ||
remove the "is rw" and it's gone. remove the "u" and it's gone | |||
unsurprisingly, "is rw" can also go on the class instead of the attribute | 12:35 | ||
so ... do i have to gist that? :D | |||
data:text/plain;charset=utf-8;base64,Y2xhc3MgZ29sZiB7IGhhcyB1aW50MzIgICAkLmZvcm1hdCBpcyBydzsgfQ== | 12:36 | ||
^- here, have it as a URL :D | |||
12:39
rurban left,
rurban joined,
kid511 left
|
|||
Skarsnik | hm, is there something in moar to free moarstruct? | 12:42 | |
timotimo | "moarstruct"? | 12:44 | |
Skarsnik | I mean like freeMVMCallsite, but I found it x) | 12:46 | |
timotimo | i'm not certain MVMCallsite is gc-managed | 12:48 | |
psch | hm, complicated /o\ | ||
Java methods are ForeignCode objects | |||
timotimo | right. it is not. | ||
psch | which means i only get :(| is raw) for them, which is probably why the Binder doesn't really care | ||
timotimo | so it's just a Plain Old Struct. if it gets malloc'd, you'll just free it later | ||
urgh :| | 12:49 | ||
psch | and BootJavaInterop can't do any Exception-y stuff, 'cause it doesn't even neccessarily know about the Exception i'd like thrown | ||
arnsholt | Skarsnik: I hope you're not trying to free things from Perl 6 code by binding Moar internals with NativeCall. That's not going to work out | ||
Skarsnik | MVMCallsite is a MVMThreadContext? | ||
psch | but nqp::callmethod is defined in QAST::Compiler | 12:50 | |
Skarsnik | I try to figure what cause the leak x) | ||
psch | so i'd have to lift that up into P6 land to call a RakOps method instead of an Ops method..? | ||
err, no, callmethod calls IndyBootstrap.methcall_noa | |||
timotimo | Skarsnik: wat? "is a"? | 12:51 | |
all i can see is that you're clearly very confused ?!? | |||
Skarsnik | can be cast if you prefer, there is no cleanup function for MVMCallSite | 12:52 | |
timotimo | well, yeah, you can cast a MVMCallsite into an MVMThreadContext if you like | ||
you're not going to get data that makes much sense out of it, though | |||
psch | which means the cleanest way might actually be subclassing ForeignCode and attaching a compatible Signature | ||
timotimo | Skarsnik: did you see MVM_callsite_destroy? | ||
psch | but that'd mean ditching all the mmd work i did up to now, 'cause i'd have to have P6 level protos instead | 12:53 | |
12:53
edehont joined
|
|||
timotimo | psch: argh :( | 12:53 | |
psch | ...which i don't even know if that really works, seeing as the marshalling still has to happen on the Java level | ||
12:53
skids joined
|
|||
psch | well, or stick with the uncomfortable alternative and reimplement parts of the Binder in RakudoJavaInterop... :| | 12:54 | |
Skarsnik | hm, ok this destroy function look correct | ||
12:59
Actualeyes joined
|
|||
Skarsnik | github.com/MoarVM/MoarVM/blob/mast...args.c#L72 hm, should the malloc be fsize * sizeof(src_flags)? | 13:00 | |
13:02
skids left
|
|||
arnsholt | Probably not. If the source of your leak is callsite objects leaking, it's almost definitely not a logic bug in the callsite class itself, but rather a problem in some part of the code that *uses* callsites | 13:04 | |
13:06
wamba left,
wamba joined
|
|||
rudi_s | I'd like to create a list of "quoted" paths. my @a = 'foo', 'bar', 'baz' should be converted to '"foo", "bar", "baz"' (it doesn't have to correctly " in the filenames). Basically I want join which also wraps the arguments. Any ideas? | 13:07 | |
DrForr | rudi_s: map{ qq{"$_"} } @paths | 13:08 | |
13:09
virtualsue left
|
|||
DrForr | "A join which also..." that way lies madn^wPHP :) | 13:09 | |
13:09
uruwi left
|
|||
rudi_s | DrForr: Awesome, thank you ;-) | 13:09 | |
psch | string_real_escape_and_quote_join() # perfectly sane! | 13:10 | |
13:13
tinita_ is now known as tinita
|
|||
rudi_s | Sounds great ;-) | 13:13 | |
dalek | p: be15097 | jnthn++ | src/vm/moar/QAST/QASTCompilerMAST.nqp: Fix crash in unsinged attributeref code-gen. |
13:15 | |
13:15
riatre left
13:16
riatre joined
|
|||
jnthn | timotimo: The NQP patches should fix things up :) | 13:17 | |
DrForr | I always seem to singe my attribute refs. | ||
jnthn | And also that RT :) | ||
hah :P | |||
m: class MV { has uint64 $.start; method s { if $!start {} } } | 13:21 | ||
camelia | rakudo-moar 50a4df: OUTPUT«===SORRY!===Cannot unbox a type object» | ||
jnthn | Turns out RT #127548 golfs further - doesn't need the CStruct repr | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127548 | ||
13:22
huggable joined
13:25
uruwi joined
|
|||
[Coke] finds out there's a perl workshop in april a scant 5 hour drive from his house. nifty. | 13:32 | ||
13:34
fireartist left
|
|||
DrForr | NLPW? | 13:37 | |
[Coke] | dcbpw.org/dcbpw2016/ - mentioned in backscroll | 13:38 | |
dalek | kudo/nom: 62ed92a | jnthn++ | tools/build/NQP_REVISION: Bump NQP_REVISION for code-gen fixes, Moar fixes. |
||
kudo/nom: fdd37a9 | jnthn++ | src/ (12 files): Start to code-gen simple accessors. This makes them rather simpler/faster than adding them as closures. Most importantly, though, it will enable inlining of them, which is where the real speed-up will come from. |
|||
kudo/nom: ae7f822 | jnthn++ | src/Perl6/World.nqp: Generate correct signature for accessors. |
|||
kudo/nom: 3176cb1 | jnthn++ | src/Perl6/World.nqp: Share signature of accessors within a package. Since they're identical, and there's no user opportunity to apply any traits to them. Shaves 160KB off CORE.setting size relative to after adding the accessor generation code. |
|||
ast: eb2b08e | jnthn++ | S12-attributes/native.t: Tests for RT #127548. |
13:40 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=127548 | ||
13:40
RabidGravy joined
|
|||
RabidGravy | Boom! | 13:41 | |
yuck weather out there | |||
jnthn | Rained here and washed all the pretty snow away :( | 13:45 | |
13:48
andreoss joined,
themonkeybob11 left
13:49
perlpilot left,
perlpilot joined
|
|||
dalek | rl6-bench: ea2a4d0 | jnthn++ | microbenchmarks.pl: Add object accessor micro-benchmark. |
13:51 | |
arnsholt | jnthn: Better than half of it melting away and the other half freezing to ice again =) | 13:52 | |
13:53
andreoss left
|
|||
stmuk wonders what the weather in Nuremberg will be like | 13:53 | ||
jnthn | arnsholt: True :) | 13:55 | |
llfourn | m: sub foo { "foo".return }; foo().say # I don't get it | 13:56 | |
camelia | rakudo-moar 3176cb: OUTPUT«Attempt to return outside of any Routine in block <unit> at /tmp/KTOQC8ZyDc line 1» | ||
13:57
nakiro left
|
|||
jnthn | We have a .return? :S | 13:58 | |
llfourn | apparently :P | ||
it's in Mu | |||
psch | m: sub f { my $ret = Mu.^find_method('return'); $ret("foo") }; f().say | 14:00 | |
camelia | rakudo-moar 3176cb: OUTPUT«foo» | ||
llfourn | heh that's interesting | ||
psch | i'd guess the anon Capture doesn't get the invocant right or something..? | 14:01 | |
m: class A { method f(|c) { c.perl.say } }; A.new.f("foo") | |||
camelia | rakudo-moar 3176cb: OUTPUT«\("foo")» | ||
llfourn | m: sub a { b() }; sub b { "foo".return }; b().say; | ||
camelia | rakudo-moar 3176cb: OUTPUT«Attempt to return outside of any Routine in block <unit> at /tmp/hPrmBPJzrF line 1» | ||
psch | note that in A.f there it doesn't print the invocant | 14:02 | |
llfourn | m: sub a { b() }; sub b { "foo".return }; a().say; # woops | ||
camelia | rakudo-moar 3176cb: OUTPUT«foo» | ||
llfourn | so it goes one too far out | ||
14:03
liztormato joined
|
|||
jnthn | Yeah, maybe it's a scope off-by-one or something | 14:03 | |
liztormato | The .return was meant for idioms like " .return with $foo " | 14:04 | |
Returning only if the value is defined | 14:05 | ||
llfourn | liztormato: That's just what I was about to use it for until I found it was broken :) | ||
liztormato | Argh | ||
jnthn | Guessing it's not very tested :) | ||
llfourn | well .return with %hash{$key} # specifically | ||
14:06
andreoss joined,
andreoss left,
andreoss joined
|
|||
liztormato | Well. We should add some tests then first | 14:06 | |
14:06
themonkeybob11 joined
|
|||
llfourn | I added to TODO list | 14:08 | |
14:09
cdg joined
|
|||
andreoss | m: my \x = ">>>" ; multi infix:x($a,$b){ } | 14:09 | |
camelia | rakudo-moar 3176cb: OUTPUT«===SORRY!===Cannot unbox a type object» | ||
liztormato | llfourn++ | ||
14:09
cdg left
|
|||
andreoss | m: my $x = ">>>" ; multi infix:$x($a,$b){ } | 14:09 | |
camelia | ( no output ) | ||
14:09
cdg joined
|
|||
jnthn | Skarsnik: I've golfed what's probably the same leak you're seeing to `multi foo($ where 1) { }; loop { foo(|(1,)) }` | 14:10 | |
psch | m: my $x = ">>>" ; multi infix:$x($a,$b){ say "ok" }; 1 >>> 2 | ||
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tsN2Xry5pmMissing << or >>at /tmp/tsN2Xry5pm:1------> 3multi infix:$x($a,$b){ say "ok" }; 1 >>>7⏏5 2 expecting any of: infix infix stopper» | ||
14:11
liztormato left,
themonkeybob11 left
|
|||
Skarsnik | jnthn, weird, there is no multi involved. I tried to golf it without success so far | 14:12 | |
14:12
rurban1 joined
|
|||
jnthn | Skarsnik: If you're using Perl 6 for anything non-trivial, there'll be multis involved :) | 14:12 | |
14:12
themonkeybob11 joined
|
|||
jnthn | Skarsnik: There's more than one way to reach the leaky code-path though, this is just the way I engineered from the valgrind output you sent. | 14:13 | |
14:13
rurban2 joined
|
|||
Skarsnik | if you find a short case, it's better ^^ | 14:15 | |
edehont | While looking for a way to loop over a multidimensional array, I thought something like .shape would be quite handy. Turns out it already exixts... But not in the docs. | ||
14:16
rurban left
|
|||
edehont | Is that intentional? | 14:16 | |
14:17
rurban1 left,
rurban joined
|
|||
jnthn | edehont: No, just missing, I expect. Please file an issue on the perl6/doc repo, if you have a github account | 14:17 | |
14:17
rurban1 joined
|
|||
llfourn | ( or a pull request :D) | 14:17 | |
jnthn | Skarsnik: Yeah. Now I need to understand what's happening :) | ||
Well, or that ;) | |||
edehont | I will give it a shot! | 14:18 | |
llfourn | edehont++ | ||
14:18
themonkeybob11 left
|
|||
jnthn | edehont: Why do you need shape to iterate over it by the way? :) | 14:19 | |
m: my @a[2;2] = (1, 2), (3, 4); for @a { .say } | |||
camelia | rakudo-moar 3176cb: OUTPUT«1234» | ||
jnthn | m: my @a[2;2] = (1, 2), (3, 4); for @a.kv -> $indices, $value { say "$indices => $value" } | ||
camelia | rakudo-moar 3176cb: OUTPUT«0 0 => 10 1 => 21 0 => 31 1 => 4» | ||
14:20
rurban2 left
|
|||
andreoss | m: my $x = "xyz";; sub infix:$x($a, $b) { $a + $b } ; 1 xyz 3; | 14:20 | |
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/s9_JjS91MdTwo terms in a rowat /tmp/s9_JjS91Md:1------> 3";; sub infix:$x($a, $b) { $a + $b } ; 17⏏5 xyz 3; expecting any of: infix infix stopper statement end…» | ||
andreoss | what is $x supposed to be? | 14:21 | |
m: sub infix:"xyz"($a, $b) { $a + $b } ; 1 xyz 3; | |||
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/jgvxZtzsECMissing blockat /tmp/jgvxZtzsEC:1------> 3sub infix:7⏏5"xyz"($a, $b) { $a + $b } ; 1 xyz 3;» | ||
andreoss | also why this doesn't work? | ||
psch | m: sub infix:<"xyz">($a, $b) { "ok" }; say 1 xyz 2 | ||
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/YK37GD5qcNTwo terms in a rowat /tmp/YK37GD5qcN:1------> 3ub infix:<"xyz">($a, $b) { "ok" }; say 17⏏5 xyz 2 expecting any of: infix infix stopper postfix …» | ||
psch | hm, seems that broke..? | ||
ah, no | 14:22 | ||
14:22
rurban left
|
|||
psch | < > quotes | 14:22 | |
m: sub infix:<xyz>($a, $b) { "ok" }; say 1 xyz 2 | |||
camelia | rakudo-moar 3176cb: OUTPUT«ok» | ||
psch | andreoss: you need a delimiter around your operator | ||
andreoss | "" used to work to, didn't it? | ||
14:22
uruwi left
|
|||
jnthn | m: sub infix:<<"xyz">>($a, $b) { "ok" }; say 1 xyz 2 | 14:23 | |
camelia | rakudo-moar 3176cb: OUTPUT«ok» | ||
jnthn | You'd need that to interpolate | 14:24 | |
I don't think infix:"..." has ever worked, no | |||
It's not a valid colonpair | |||
psch | m: my $x = "xyz"; sub infix:<<$x>>($a, $b) { "ok" }; say 1 xyz 2 | ||
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/fHwrD3VrUzColon pair value '$x' too complex to use in nameat /tmp/fHwrD3VrUz:1------> 3my $x = "xyz"; sub infix:<<$x>>7⏏5($a, $b) { "ok" }; say 1 xyz 2» | ||
psch | hm, that's broken though :/ | ||
not sure since when... i'm pretty sure we should have tests for it though | |||
jnthn | I don't think it needs to work | ||
I mean | |||
That one *can't* work | |||
Ever. | |||
14:25
Ven joined
|
|||
jnthn | Think about the timing | 14:25 | |
psch | oh, right | ||
jnthn | m: constant $x = "xyz"; sub infix:<<$x>>($a, $b) { "ok" }; say 1 xyz 2 | ||
camelia | rakudo-moar 3176cb: OUTPUT«ok» | ||
psch | constant should yeah | ||
jnthn | And that one is fine :) | ||
andreoss | m: my $x = "xyz";; my sub infix:<<$x>>($a, $b) { $a + $b } ; 1 xyz 3; | ||
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/gMxlzfEaG4Colon pair value '$x' too complex to use in nameat /tmp/gMxlzfEaG4:1------> 3my $x = "xyz";; my sub infix:<<$x>>7⏏5($a, $b) { $a + $b } ; 1 xyz 3;» | ||
andreoss | m: INIT my $x = "xyz";; my sub infix:<<$x>>($a, $b) { $a + $b } ; 1 xyz 3; | 14:26 | |
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/AGXRTxk470Colon pair value '$x' too complex to use in nameat /tmp/AGXRTxk470:1------> 3INIT my $x = "xyz";; my sub infix:<<$x>>7⏏5($a, $b) { $a + $b } ; 1 xyz 3;» | ||
jnthn | andreoss: You need constant | ||
INIT is too late | |||
It's after compile time | |||
m: BEGIN my $x = "xyz";; my sub infix:<<$x>>($a, $b) { $a + $b } ; 1 xyz 3; | |||
camelia | ( no output ) | ||
jnthn | m: BEGIN my $x = "xyz";; my sub infix:<<$x>>($a, $b) { $a + $b } ; say 1 xyz 3; | ||
camelia | rakudo-moar 3176cb: OUTPUT«4» | ||
jnthn | Needs to be at BEGIN time. | 14:27 | |
But srsly, just use constant ;) | |||
Ven | o/ | ||
jnthn | o/ Ven | ||
14:28
rdleon left
|
|||
edehont | jhthn: Ah... so I don't need .shape after all for what I want. Thanks. | 14:30 | |
14:30
edehont left
|
|||
jnthn | Another situation saved from introspection land :) | 14:31 | |
llfourn wonders if we'll get that PR | 14:32 | ||
jnthn | Damn, yeah. I shouldn't be so helpful. :P | ||
llfourn | haha | ||
Skarsnik | m: sub foo() {}; our $foo is export = &foo; | 14:34 | |
camelia | ( no output ) | ||
14:35
uruwi joined
|
|||
Skarsnik | m: sub foo() {}; constant $foo is export = &foo; | 14:35 | |
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/uiTcHx8CO3Can't use unknown trait 'is export' in a sub declaration.at /tmp/uiTcHx8CO3:1 expecting any of: rw raw hidden-from-backtrace hidden-from-USAGE pure default DEPRECATED i…» | ||
llfourn | hmmm | 14:36 | |
14:36
abaugher left
|
|||
llfourn | m: consant $foo is export = "foo" | 14:36 | |
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/DGWgtYLU6rVariable '$foo' is not declaredat /tmp/DGWgtYLU6r:1------> 3consant 7⏏5$foo is export = "foo"» | ||
llfourn | m: constant $foo is export = "foo" | ||
camelia | ( no output ) | ||
Skarsnik | m: constant $foo is export = sub {}; | 14:37 | |
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/yZ5YBVEieTCan't use unknown trait 'is export' in a sub declaration.at /tmp/yZ5YBVEieT:1 expecting any of: rw raw hidden-from-backtrace hidden-from-USAGE pure default DEPRECATED i…» | ||
llfourn | m: constant $foo is export = anon sub foo {}; | ||
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/vSocjMEWuCCan't use unknown trait 'is export' in a sub declaration.at /tmp/vSocjMEWuC:1 expecting any of: rw raw hidden-from-backtrace hidden-from-USAGE pure default DEPRECATED i…» | ||
14:37
abaugher joined
|
|||
llfourn | nice bug. | 14:37 | |
m: constant $foo is export = -> { } | |||
camelia | ( no output ) | ||
llfourn | m: constant $foo is export = anon method foo { } | 14:38 | |
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/ksmZHV8KSrCan't use unknown trait 'is export' in a method declaration.at /tmp/ksmZHV8KSr:1 expecting any of: rw raw hidden-from-backtrace hidden-from-USAGE pure default DEPRECATE…» | ||
llfourn | looks to be assigning to a routine goofs it | ||
it somehow thinks is export is export is being applied to the routine...or something | 14:39 | ||
s/is export xx 2/is export/ | |||
Skarsnik | m: constant $foo is export = Mu || sub {}; | 14:41 | |
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/6cBhyHrj_tCan't use unknown trait 'is export' in a sub declaration.at /tmp/6cBhyHrj_t:1 expecting any of: rw raw hidden-from-backtrace hidden-from-USAGE pure default DEPRECATED i…» | ||
llfourn | m: constant $foo is export = True || sub foo { } | ||
camelia | ( no output ) | ||
llfourn | maybe there's some hackyness in the implementation of constant is export | ||
awwaiid | So I'm currently installing Task::Star into a fresh rakudo 2016.02. While it is running I try to start a new perl6 and it blocks waiting for ""/home/awwaiid/.perl6/2016.02/precomp/.lock" . If this was a production environment that would be bad I think | 14:47 | |
llfourn | I've had similar weirdness with locks... like I start a websever and can't panda install anything until I stop it | 14:48 | |
dalek | rakudo/repl6: f61e067 | hoelzro++ | src/ (2 files): | 14:49 | |
rakudo/repl6: REPL6: Add rudimentary Perl 6 REPL loading support | |||
rakudo/repl6: | |||
rakudo/repl6: This is the start of moving advanced REPL functionality into Perl 6. | |||
rakudo/repl6: This is to lower the barrier to entry for improving the REPL, allowing | |||
14:49
dalek left
14:50
dalek joined,
ChanServ sets mode: +v dalek
14:51
virtualsue joined
14:54
skids joined
14:55
zakharyas left
14:59
sufrostico left
15:01
sufrostico joined
|
|||
stmuk | awwaiid: ISTR some locking behaviour being fixed in the last few days .. not sure if it's that | 15:03 | |
there is also the awful hack of -IFakeDir which I used in p6doc :/ | 15:04 | ||
15:08
themonkeybob11 joined
15:09
virtualsue left
15:11
lizmat joined
|
|||
lizmat waves from a ferry | 15:12 | ||
Ven waves lizmat | |||
at* | |||
lizmat | o/ Ven | ||
15:14
uruwi left
|
|||
masak | o/ lizmat | 15:14 | |
15:15
themonkeybob11 left
|
|||
jnthn hopes the sea isn't waving too much at lizmat :) | 15:15 | ||
Skarsnik: Currently spectesting a patch to deal with the leak | |||
lizmat | naah... we won't be leaving the harbour for at least an hour | ||
DrForr | Heh. I recommended Dylan to use the ferry next time he's headed to the UK. | ||
15:15
Relsak left
|
|||
Skarsnik | good :), ping me if you commit or want me to test | 15:16 | |
rudi_s | m: use Test; is-deeply {a => Blob}, {a => Blob}; | ||
camelia | rakudo-moar 3176cb: OUTPUT«Invocant requires an instance of type Blob, but a type object was passed. Did you forget a .new? in any at gen/moar/m-Metamodel.nqp line 1723 in sub is-deeply at /home/camelia/rakudo-m-inst-1/share/perl6/sources/C712FE6969F786C9380D643DF17E85D068…» | ||
rudi_s | Is this expected? | ||
llfourn | rudi_s: nah looks like a bug | 15:17 | |
Skarsnik | is deeply do gist to compare I think | ||
llfourn | :S | ||
15:17
edehont joined
|
|||
rudi_s | Interestingly it works with Int | 15:17 | |
m: use Test; is-deeply {a => Int}, {a => Int}; | |||
camelia | rakudo-moar 3176cb: OUTPUT«ok 1 - » | ||
Skarsnik | Blob is a role, that maybe why | 15:18 | |
jnthn | I thought is-deeply used eqv? | ||
m: say {a => Blob} eqv {a => Blob} | |||
camelia | rakudo-moar 3176cb: OUTPUT«Invocant requires an instance of type Blob, but a type object was passed. Did you forget a .new? in any at gen/moar/m-Metamodel.nqp line 1723 in block <unit> at /tmp/2ikvkWKM_q line 1» | ||
jnthn | m: say Blob eqv Blob | ||
camelia | rakudo-moar 3176cb: OUTPUT«Invocant requires an instance of type Blob, but a type object was passed. Did you forget a .new? in any at gen/moar/m-Metamodel.nqp line 1723 in block <unit> at /tmp/RNJf5GbSYV line 1» | ||
llfourn | jnthn++ | ||
jnthn | I wonder if the eqv candidate for Blob is missing a smiley? | 15:19 | |
psch | m: say Blob | ||
camelia | rakudo-moar 3176cb: OUTPUT«(Blob)» | ||
llfourn | .say for &infix:<eqv>.candidates | ||
m: .say for &infix:<eqv>.candidates | |||
camelia | rakudo-moar 3176cb: OUTPUT«sub infix:<eqv> ($?) { #`(Sub|69036160) ... }sub infix:<eqv> ($a, $b) { #`(Sub|69038136) ... }sub infix:<eqv> (@a, @b) { #`(Sub|69037832) ... }sub infix:<eqv> (Stringy:D $a, Stringy:D $b) { #`(Sub|69037984) ... }sub infix:<eqv> (Numeric:D $a, N…» | ||
jnthn | m: say &infix:eqv.cando(Int,Int) | ||
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/2b4M6T19SaUndeclared routine: infix:eqv used at line 1. Did you mean 'infix:<eq>', 'infix:<eqv>', 'infix:<∖>'?» | ||
moritz | src/core/Buf.pm:multi sub infix:<eqv>(Blob:D \a, Blob:D \b) { | ||
jnthn | m: say &infix:<eqv>.cando(Int,Int) | ||
camelia | rakudo-moar 3176cb: OUTPUT«Too many positionals passed; expected 2 arguments but got 3 in block <unit> at /tmp/06vyQdFGs8 line 1» | ||
jnthn | m: say &infix:<eqv>.cando(\(Int,Int)) | ||
camelia | rakudo-moar 3176cb: OUTPUT«(sub infix:<eqv> ($a, $b) { #`(Sub|63176776) ... })» | ||
jnthn | m: say &infix:<eqv>.cando(\(Blob,Blob)) | 15:20 | |
camelia | rakudo-moar 3176cb: OUTPUT«(sub infix:<eqv> (@a, @b) { #`(Sub|58109752) ... } sub infix:<eqv> ($a, $b) { #`(Sub|58110056) ... })» | ||
jnthn | m: say Blob ~~ Positional | ||
camelia | rakudo-moar 3176cb: OUTPUT«True» | ||
llfourn | o.o | ||
moritz | uhm, I hope @a constrains to Positional:D ? | ||
jnthn | Ah, so it's hitting an @a, @b candidate in that case | ||
llfourn | what moritz said | ||
jnthn | moritz: I'm guessing not...though maybe it should | ||
llfourn | m: sub (@a) { }.(List) | 15:21 | |
camelia | ( no output ) | ||
llfourn | +1 for that | ||
jnthn | Something we could fix in 6.d, since we'd be able to do it conditionally in the compiler | ||
15:22
edehont left
|
|||
lizmat | jnthn: multi sub infix:<eqv>(Blob:D \a, Blob:D \b) | 15:22 | |
jnthn | lizmat: Read the last few minutes of discussion :) | 15:24 | |
m: say List eqv List | 15:25 | ||
camelia | rakudo-moar 3176cb: OUTPUT«True» | ||
jnthn | Curious why that doesn't hit it though | ||
m: say &infix:<eqv>.cando(\(List,List)) | |||
camelia | rakudo-moar 3176cb: OUTPUT«(sub infix:<eqv> (@a, @b) { #`(Sub|73035592) ... } sub infix:<eqv> ($a, $b) { #`(Sub|73035896) ... })» | ||
jnthn | m: say List.list | 15:26 | |
camelia | rakudo-moar 3176cb: OUTPUT«((List))» | ||
jnthn | m: say Blob.list | ||
camelia | rakudo-moar 3176cb: OUTPUT«((Blob))» | ||
jnthn | m: say List.elems | ||
camelia | rakudo-moar 3176cb: OUTPUT«1» | ||
jnthn | m: say Blob.elems | ||
camelia | rakudo-moar 3176cb: OUTPUT«Invocant requires an instance of type Blob, but a type object was passed. Did you forget a .new? in any at gen/moar/m-Metamodel.nqp line 1723 in block <unit> at /tmp/8FKsGUk7rZ line 1» | ||
jnthn | Aha | ||
I bet it's that | |||
Skarsnik: If you try your code with MoarVM HEAD now, hopefully your leak is gone | 15:27 | ||
Skarsnik | I just need to git pull in moar or I can use the configure to do it? | ||
jnthn | Skarsnik: git pull && make install in Moar would do it | 15:28 | |
I would think so, anyways | |||
llfourn | m: my @a = List; my @b := List; say @a.perl,@b.perl; | 15:29 | |
camelia | rakudo-moar 3176cb: OUTPUT«[List,]List» | ||
timotimo | mhm mhm | ||
nemo | wow. Zoffix is still not back | 15:30 | |
yoleaux | 25 Feb 2016 13:08Z <ZoffixW> nemo: I'm not deathly sick :) While still not fully well, the reason I'm not around is because I've just moved and (a) I don't have Internet at my new place yet and won't until next week. (b) I'm too busy with unpacking and settling in :) | ||
nemo | he must have been really really sick | ||
ah | 15:31 | ||
thanks ms bot | |||
and he left me a message ☺ | |||
15:31
uruwi joined
|
|||
Skarsnik | hm, moar is in src/vm/moar or gen? | 15:32 | |
timotimo | i'm now only missing him, but not worried any more :) | ||
jnthn | Skarsnik: You should have a MoarVM directory somewhere, maybe under nqp/ ? | ||
Skarsnik | hm, interesting stage parse is back a 60 , it was 100 this morning x) | 15:33 | |
jnthn | urgh, headache...time for a break I guess... & | 15:34 | |
Skarsnik | yep, fixed, jnthn++ | 15:36 | |
15:37
lizmat left
|
|||
Skarsnik | Afterlookfor :71.616 kb, Afterlookfor :71.616 kb , Afterlookfor :71.616 kb | 15:37 | |
.... instead of growing by 4Mb each time | |||
timotimo | sweet! | 15:40 | |
Ven | pretty good :D. | ||
timotimo | yo ven | ||
Ven | yo timotimo ! | ||
15:41
virtualsue joined
15:42
idiosyncrat_ joined
15:45
zpmorgan joined
|
|||
rudi_s | Regarding the Blob eqv Blob issue. Should I report a bug (and if yes where)? | 15:45 | |
moritz | rudi_s: yes, and by mailto:rakudobug@perl.org | 15:46 | |
15:48
virtualsue left
15:49
Ven left,
ptolemarch joined
|
|||
rudi_s | moritz: [x] | 15:50 | |
Can I easily fake the current time (now()) to get reproducible test cases? | 15:51 | ||
ugexe | create a mock object. or maybe you can use monkey-typing/augment or wrap | 15:55 | |
15:55
khw joined
|
|||
timotimo | m: now() | 15:55 | |
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/fwyXAZoqRKUndeclared routine: now used at line 1. Did you mean 'not', 'HOW'?» | ||
timotimo | m: now | ||
camelia | ( no output ) | ||
timotimo | you can't wrap a term, i don't think | ||
so that's out | |||
rudi_s | I guess I could use $*test-fake-time // now in the code but that's a little ugly IMHO. | 15:56 | |
How would you write it? | 15:57 | ||
ugexe | create a routine that creates the delta of the real now and the now you want? | ||
rudi_s | (Is there a convention in perl6 for "private" $* variables?) | ||
I could use a method which I overwrite in my test. Good idea. | 15:58 | ||
ugexe | m: sub now { say 420; }; say now | ||
camelia | rakudo-moar 3176cb: OUTPUT«420True» | ||
ugexe | yeah looks like that'll work | 15:59 | |
ugexe wonders how feasible automatically creating NC wrappers via machine learning is | 16:02 | ||
16:02
pierrot left
|
|||
Skarsnik | machine learning? | 16:03 | |
rudi_s | ugexe: Doesn't work if the sub is in another module. | 16:04 | |
I guess I'll just use $*test-fake-time // now; | |||
Is there a convention in perl6 for "private" $* variables? | |||
Perl6 itself uses uppercase, so those are out. | |||
DrForr | rudi_s: I'd probably use $*_xxx but that's just me. | 16:05 | |
timotimo | m: my $*MyModule::Test = 5 | ||
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/8qDx4wnOQGDynamic variables cannot have package-like names, like $*MyModule::Testat /tmp/8qDx4wnOQG:1------> 3my $*MyModule::Test7⏏5 = 5» | ||
timotimo | :| | ||
rudi_s | DrForr: Sounds good, thanks. | 16:06 | |
perlpilot would do the same as DrForr | |||
16:07
themonkeybob11 joined
|
|||
perlpilot | (assuming I could agree with the idea of "private" $*vars) | 16:07 | |
ugexe | i would just shell out to change the system time to whatever i need | ||
dalek | kudo-star-daily: 5a44c8a | coke++ | log/ (9 files): today (automated commit) |
||
kudo-star-daily: f47e270 | coke++ | log/ (9 files): today (automated commit) |
|||
rudi_s hopes ugexe is joking. | |||
16:08
eiro left
|
|||
ugexe | its not a problem if you run each test in its own vm | 16:09 | |
arnsholt | ugexe: I'm not sure I'd use ML for generating wrappers | ||
ML has many useful attributes, but for this it's not ideal, I think | |||
ugexe | arnsholt: im still new to ML, but why? it would seem to have some fairly obvious patterns | 16:10 | |
jnthn | Skarsnik: Yay \o/ | ||
16:12
hoelzro left,
hoelzro joined
16:13
themonkeybob11 left,
domidumont left
|
|||
arnsholt | ugexe: Primarily because ML is inherently fuzzy | 16:14 | |
16:14
olinkl_ joined,
kipd_ joined
16:15
flussenc1 joined,
kipd left,
Lucas_One__ joined,
flussence left,
Lucas_One_ left,
BinGOs_ joined,
drforr1 left,
olinkl left,
integral left,
timotimo left,
BinGOs left,
integral_ joined,
integral_ left,
integral_ joined,
kipd_ is now known as kipd,
Lucas_One__ left,
Lucas_One__ joined,
timotimo joined,
integral_ is now known as integral,
drforr1 joined
16:16
olinkl_ is now known as olinkl
16:18
themonkeybob11 joined
|
|||
japhb | \o/ # More perl6-bench benchmarks when I do my morning 'git pull' | 16:19 | |
yoleaux | 29 Feb 2016 08:33Z <sortiz> japhb: The DBIish install time issues are solved and a PR opened in MoarVM for a definite fix. Thanks for your report. | ||
16:19
pierrot joined
|
|||
japhb | .tell sortiz Great, thank you, I'll rebuild-all and see if DBIish install is fixed | 16:19 | |
yoleaux | japhb: I'll pass your message to sortiz. | ||
16:21
uruwi left
|
|||
japhb | Does anyone have a mirror/fork of flussence's Text-Tabs-Wrap (and Test-Corpus, needed to test it) | 16:22 | |
skids | I have it offline, by virtue of perl6-all-modules. Probably stale though. | 16:24 | |
ugexe | thi sis from 2016-1-30: hack.p6c.org:5001/authors/id/J/JD/J...2.5.tar.gz | ||
skids | Yeah mine is older | 16:25 | |
16:28
prammer joined
16:29
themonke1bob11 joined
16:30
themonke1bob11 left
16:33
prammer left
|
|||
japhb | ugexe: Does JDV ~~ flussence? ISTR there are a couple different repos out there with the same name, and I'm not sure if they were forks, or different people porting the Perl 5 modules, or what | 16:38 | |
ugexe | everything on that metacpan mirror is under JDV | ||
japhb | oh | ||
ugexe | its not a finalized service, its just something we have been using to test integration | 16:39 | |
japhb | ugexe: Can you make it do directory indexes? | ||
16:40
jantore left
16:41
jantore joined
|
|||
ugexe | japhb: what do you mean | 16:43 | |
timotimo | hack.p6c.org:5001/ <- why not use the interface? | 16:44 | |
16:44
vendethiel joined
16:45
vendethiel- left
|
|||
Ulti | if I want to make some of my own code friendly to the new multiline REPL is there anything I can do? | 16:46 | |
hoelzro | Ulti: how do you mean? like a slang, or...? | ||
Ulti | yeah a slang with a quote construct | ||
ugexe | you can also search it by enabling cpan in zef and using `zef search XXX` | ||
Ulti | it at least has a nice error where its running my actions | ||
before it didnt get that far so figure now's the time to update my stuff | 16:47 | ||
I can take a look at the grammar for "" if that's where the magic lies | |||
hoelzro | if you have a custom quoting construct, it *should* pick up on that as long as failures are triggered via FAILGOAL, thanks to sortiz++ | ||
llfourn | Slangs won't work in REPL if introduced the normal way | 16:48 | |
Ulti | hoelzro okedoke I will take a look, thanks :) | ||
llfourn | if you use github.com/LLFourn/p6-CompUnit-Util#mixin_lang it will | ||
Hotkeys | Morning | ||
llfourn | or just copy what is done in the source | ||
Hotkeys | Still 10 minutes til noon so I get to say morning | ||
Ulti | will be really cool if I can get my slang to work since it will make perl6 into an interactive research tool without much effort | ||
Hotkeys | Interesting | 16:49 | |
llfourn | Ulti: the reason it's not working is because modifications to %*LANG don't carry over to REPL/EVAL | ||
you have to manually pass them to %?LANG for it to work | |||
we obviously don't have a proper implementation of slangs yet so it's all a bit rough. | 16:50 | ||
kalkin- | Is there a way to create a class or module programmaticaly and then generate perl 6 code from that? Something like Class.new("Foo::Bar").to-source-code() | ||
llfourn | m: class Class { }; say Class.new.perl; | 16:51 | |
camelia | rakudo-moar 3176cb: OUTPUT«Class.new» | ||
timotimo | github.com/timo/ADT - this neat little module of mine generates classes programmatically | ||
llfourn | kalkin-: like that? | ||
16:52
torbjorn joined
|
|||
kalkin- | How can i provide the class name? | 16:52 | |
ohh | |||
timotimo | m: class Class { }; ::('Class').new.perl.say | ||
camelia | rakudo-moar 3176cb: OUTPUT«Class.new» | ||
kalkin- | m: class "Foo" {}; Foo.new.perl.say | 16:53 | |
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/bq1P3j8BBLUnable to parse class definitionat /tmp/bq1P3j8BBL:1------> 3class7⏏5 "Foo" {}; Foo.new.perl.say expecting any of: generic role» | ||
kalkin- | m: class Class {}; ::('Foo').new.perl.say | ||
camelia | rakudo-moar 3176cb: OUTPUT«Failure.new(exception => X::AdHoc.new(payload => "Failed"), backtrace => Backtrace.new)» | ||
Ulti | llfourn well the modification is there since I'm seeing my slang error coming up in the repl | ||
16:53
CIAvash left
|
|||
Ulti | thats the issue its doing a panic and crashing out during the multiline | 16:54 | |
llfourn | m: Metamodel::ClassHOW.new_type(:name("Foo")).say | ||
camelia | rakudo-moar 3176cb: OUTPUT«Method 'say' not found for invocant of class 'Foo' in block <unit> at /tmp/dctEC7OELp line 1» | ||
llfourn | m: Metamodel::ClassHOW.new_type(:name("Foo")).^name.say | ||
camelia | rakudo-moar 3176cb: OUTPUT«Foo» | ||
llfourn | kalkin-: something like that | ||
Util_: hmm ok nvm me then. I'd be interested to see what your slang is like. | 16:55 | ||
16:55
CIAvash joined
|
|||
Ulti | though cool you've made that easier | 16:56 | |
kalkin- | m: Metamodel::ClassHOW.new_type(:name("Foo")).perl.say | ||
camelia | rakudo-moar 3176cb: OUTPUT«Method 'perl' not found for invocant of class 'Foo' in block <unit> at /tmp/uQQIXAloGJ line 1» | ||
Ulti | I'll port over so I dont have to keep up with all the cool kids on how to inject my slang in | ||
llfourn: github.com/MattOates/BioInfo/blob/...ioInfo.pm6 | |||
llfourn | :P it's just lonely old me afaik | ||
kalkin-: you might want to compose the type | 16:57 | ||
m: Metamodel::ClassHOW.new_type(:name("Foo")).^compose.perl.say | |||
camelia | rakudo-moar 3176cb: OUTPUT«Foo» | ||
llfourn takes a look | |||
kalkin-: essentially you create the new type do stuff to it like .^add_method and then .^compose. | |||
Ulti | its really nice too I can paste in a mixture of bio sequence types and get back an array of typed objects automatically :) so with multiline it becomes actually useful in the REPL which was what I originally imagined its use case | 16:58 | |
llfourn | kalkin-: jnthn.net/papers/2015-fosdem-static-dynamic.pdf # page 64 has a cool example | ||
llfourn actually takes a look | 16:59 | ||
16:59
kjs_ joined
|
|||
llfourn | Util_: awesome | 17:00 | |
kalkin- | llfourn: thanks will have a look at it. need to go afk. | 17:01 | |
llfourn | Util_: btw there is this "find-the-other-quote-not-sure-what-its-called" grammar thing like '[' ~ '] <stuff> # finds <stuff> in between the brackets | 17:02 | |
m: say '[foo]' ~~ /'[' ~ ']' 'foo'/ #maybe | 17:03 | ||
camelia | rakudo-moar 3176cb: OUTPUT«「[foo]」» | ||
llfourn | Util_: you might be able to use it for wrapping your quites | ||
quotes* | |||
ugexe | i thought that bracket matching grammar thing was nyi | 17:06 | |
17:06
zakharyas joined
|
|||
llfourn | well it seems to be yi | 17:07 | |
jnthn | Long implemented | ||
Goat matching syntax | |||
... | |||
*Goal* matching syntax | |||
llfourn | m: say '[fo[bar]o]' ~~ /'[' ~ ']' 'foo'/ #does it do balanced text? | ||
camelia | rakudo-moar 3176cb: OUTPUT«Nil» | ||
jnthn | No, just looks for the end | 17:08 | |
llfourn | m: say '[fo[bar]o]' ~~ /'[' ~ ']' 'fo[bar]o'/ #does it do balanced text? | ||
camelia | rakudo-moar 3176cb: OUTPUT«「[fo[bar]o]」» | ||
jnthn | You'd need to recurse to do structure | ||
llfourn | makes sense | ||
jnthn | It's used extensively in the Perl 6 grammar | ||
m: say [1,2 | |||
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5=== Error while compiling /tmp/XRAefm3rSyUnable to parse expression in array composer; couldn't find final ']' at /tmp/XRAefm3rSy:1------> 3say [1,27⏏5<EOL> expecting any of: statement end statement m…» | ||
Ulti | llfourn yeah I have to admit I just picked the first thing in the grammar that looked like it did roughyl what I wanted... I'll take a look | ||
ugexe | ah i was thinking of a more general rule for arbitrary brackets. like %% but somehow knowing what the RHS bracket is based on the LHS bracket | ||
jnthn | That "couldn't find final ']'" is part of the goal-matching syntax. | 17:09 | |
llfourn | yep I did discover it from looking at Perl6::Gramamr | ||
17:10
[ptc] left
|
|||
Hotkeys | Could do it with captures? | 17:10 | |
llfourn | Hotkeys: do what? | 17:11 | |
Hotkeys | Arbitrary brackets | ||
llfourn | but you can do arbitrary brackets goat matching | ||
#greatname | |||
Hotkeys | Oh | 17:12 | |
I don't really know anything about the goal matching syntax | |||
I only just heard of it when it was mentioned here a few minutes ago | |||
:p | |||
llfourn | well it's pretty handy | 17:13 | |
17:13
domidumont joined
|
|||
ugexe | but you have to declare both brackets! i dont have time for that! | 17:14 | |
really though thats good to know. i can clean up some code with that | 17:15 | ||
17:15
andreoss left
|
|||
Hotkeys | Just checked the regex doc page and goal matching isn't there :( | 17:16 | |
ugexe wonders if it can do alternate sets of brackets | |||
Hotkeys | Or if it is it isn't there by name | ||
llfourn | it probs isn't | ||
ugexe | its mention in design s05 though | 17:17 | |
llfourn | Hotkeys: did you search for goat? | ||
ugexe | goat matching goes well with monkey typing | ||
17:18
uruwi joined
17:19
[ptc] joined
|
|||
llfourn | m: say 🐐🐐🐐🐐🐐🐐🐐🐐🐐 ~~ /'🐐' ~ '🐐' .+/ | 17:21 | |
camelia | rakudo-moar 3176cb: OUTPUT«5===SORRY!5===Argument to "say" seems to be malformedat /tmp/d1J4ggH24V:1------> 3say7⏏5 🐐🐐🐐🐐🐐🐐🐐🐐🐐 ~~ /'🐐' ~ '🐐' .+/Bogus postfixat /tmp/d1J4ggH24V:1------> 3say 7⏏5🐐🐐🐐🐐🐐🐐…» | ||
17:21
goodname joined
|
|||
llfourn | m: say '🐐🐐🐐🐐🐐🐐🐐🐐🐐 '~~ /'🐐' ~ '🐐' .+/ | 17:22 | |
camelia | rakudo-moar 3176cb: OUTPUT«「🐐🐐🐐🐐🐐🐐🐐🐐🐐」» | ||
17:23
zakharyas left
17:31
itaipu joined
17:39
virtualsue joined,
Actualeyes left
17:40
SCHAAP137 left
17:57
addison joined
17:59
abraxxa left,
prammer joined,
FROGGS joined
18:02
themonkeybob11 left,
prammer left
18:04
firstdayonthejob joined
|
|||
TreyHarris | Just trying to understand an architectural decision: why are, for instance, the several descendents of X:IO with the single attribute :path (or even all the ones having to do with directories) not descendents of a single common exception? Is the complication of a more complex type heirarchy (especially containing classes that will never be directly instantiable) judged to be a greater issue than boilerplate | 18:07 | |
code repetition? | |||
Or did it just happen that way without any concious architectural "decisionmaking" process? | 18:08 | ||
[Coke] | Don't assume the exception hierarchy is well thought out. | ||
right, that. | |||
I'm sure a plan to clean that up would be considered for v6.d | 18:09 | ||
TreyHarris | Also, I've seen it both ways in older docs and in the synopses so I'm not sure if there's a consensus: do people talk of classes (and/or objects) having "attributes", or is that an internal thing that you shouldn't talk about outside of the class and you should refer to methods instead? | 18:12 | |
18:13
prammer joined
|
|||
skids | Classes are talked about as "having attributes", it's easier than explaining they have a private data slot and a (useually autoconstructed) accessor method. Moreover, ISTR jnthn working on making attribute accessors inlineable yesterday so they will be special in some sense, if virtually equivalent to that model. | 18:15 | |
18:15
virtualsue left
|
|||
skids | (Plus it makes sense to distinguish them in case someone cares what gets stored on serialization) | 18:17 | |
timotimo | that code about making attribute accessors more inlinable is already in nom | 18:18 | |
18:20
prammer left
18:22
prammer joined,
uruwi left
18:23
virtualsue joined,
spider-mario joined
|
|||
TreyHarris | Liskov substitution is a problem, too; right now, if I do Klass.new(:attr('foo') :method('bar')), that doesn't work, and I can't do $obj.method = 42, but if attr is rw I can do $obj.attr = 42, so attributes are special | 18:23 | |
llfourn | TreyHarris: you can make method is rw :) | 18:24 | |
18:24
dakkar left
|
|||
[Coke] | m: (^10e4).map({$_ => $_.uniname}).grep({.value~~/GOAT/}) # for someone in backscroll | 18:27 | |
camelia | ( no output ) | ||
[Coke] | m: say (^10e4).map({$_ => $_.uniname}).grep({.value~~/GOAT/}) # for someone in backscroll | ||
camelia | rakudo-moar 3176cb: OUTPUT«(65672 => LINEAR B IDEOGRAM B107F SHE-GOAT 65673 => LINEAR B IDEOGRAM B107M HE-GOAT)» | ||
llfourn | nice goat matching | 18:29 | |
jnthn | m: say chr(65672) | ||
camelia | rakudo-moar 3176cb: OUTPUT«𐂈» | ||
jnthn | Aww | ||
TreyHarris | llfourn: that's what I thought, but gist.github.com/treyharris/3e813c150f86d993f07d isn't how it works... I don't see an example suggesting it would be used otherwise in the specs or docs but I may be blind (also, this isn't very useful obviously since you can't do anything but expose an lvalue by returning it) | 18:30 | |
18:30
wamba left,
BinGOs_ is now known as BinGOs
|
|||
timotimo | you need to return-rw | 18:30 | |
TreyHarris | oh, proxies... right. forgot about those. | ||
timotimo | alternatively no return at all | ||
jnthn | Hmm...it only sort of looks like a goat :) | ||
18:32
BinGOs left,
BinGOs joined
|
|||
llfourn goes to bed | 18:32 | ||
TreyHarris | timotimo: but proxies are the only way to, say, internally store double the value assigned, right? and .new won't call methods regardless, or is there an adverb to make it do so? | ||
18:32
wamba joined
|
|||
timotimo | you're right | 18:34 | |
18:35
aindilis left
18:36
aindilis joined
|
|||
jnthn | `has $.foo` means 3 things: 1) declare `has $!foo`, 2) set the meta-attribute's has_accessor property, and 3) at class composition time, if there isn't a method foo, generate a simple accessor method, paying attention to the `rw` trait | 18:36 | |
The things you can set in new pay attention to the property set in step 2 | |||
So you can write your own accessor method. | 18:37 | ||
And it won't be a problem, 'cus we only generate such a method if you didn't write one yourself already. | |||
timotimo | a custom accessor method still won't allow every value assigned to it to land as "twice as much" in the attribute itself; except when building a Proxy for that | 18:38 | |
TreyHarris | jnthn: right... so there's no way except for writing your own BUILD to have internal-state variables that are backends for attribute-like accessors including at construction time? Like, I want an Angle object to take either :degrees or :radians and respond to either .degrees or .radians in read or write? | ||
jnthn | TreyHarris: Yes, then you write your own BUILD | ||
TreyHarris | I see you can't multi on is rw, not that that would make sense unless is rw were special for multi dispatch | 18:39 | |
18:39
aindilis` joined
|
|||
TreyHarris | though it could have been, right? like there were an implicit is-rw boolean attached to every multi? | 18:42 | |
18:43
aindilis left
|
|||
jnthn | TreyHarris: For that use-case I'd probably make it something like class Angle { has $.radians; submethod BUILD(:$degrees, :$!radians = d2r($degrees)) { }; method degrees { d2r($!radians) }; sub d2r {... } } or so | 18:43 | |
TreyHarris: We don't really pass down context in Perl 6 in that way | 18:44 | ||
You can differentiate on rw-ness if you're *receiving* something | |||
TreyHarris | jnthn: by any means other than a Proxy object? | 18:45 | |
jnthn | TreyHarris: Well, I tend to regard using proxies a lot as a design smell. | ||
18:45
aindilis` left
|
|||
jnthn | I'd somehwat hope an Angle object would be immutable, so I don't see a need for it in that case | 18:46 | |
18:46
kjs_ left
|
|||
TreyHarris | jnthn: agreed, but while I'm not a slave to the substitution principle, I'm a big fan of Liskov substitutability being easier than not | 18:46 | |
jnthn | And I think more interesting objects are better designed in terms of methods expressing interesting behaviors. | ||
18:47
renormalist joined,
CIAvash left
|
|||
jnthn | TreyHarris: I don't see where you demonstrated it being hard. | 18:48 | |
18:48
virtualsue left
|
|||
jnthn | It's every bit as easy to factor out common code using roles, rather than turn to inheritance for that, though. | 18:49 | |
And easier the moment you want to compose two other bits of functionality. | |||
So that gives a non-inheritance option for plenty of cases. | |||
TreyHarris | jnthn: right, but in general, changing some part of an object's internal representation from a storable one to a calculable one or vice versa should be possible without changing the code of consumers of the object. and it is, but not without proxies unless I'm missing something | ||
unless you avoid from the start ever making the storable state available in "bare attribute" mode | 18:50 | ||
renormalist | If I want to re-write one of my modules into Perl6, are there conventions of how to name github repo and module name? Can it have the same name as its older Perl5 brother module? | 18:51 | |
TreyHarris | renormalist: the github repo can't have the *same* name, no, not unless you define a master and a master-perl6 or somesuch, which would be weird. I've seen examples where the repo name is "Old-Name-p6" | 18:52 | |
18:52
idiosyncrat_ left
|
|||
renormalist | TreyHarris: sure, understood. And the module itself in Perl world? With having a later CPAN upload in mind? | 18:53 | |
TreyHarris | (Git doesn't treat the name "master" specially in any way except for in git init; GitHub, OTOH, does treat "master" specially as the branch to which pull requests are applied.) | ||
renormalist: there are modules in the ecosystem with exactly the same name, yes; i wouldn't choose a new name just to do so. I'd personally ask if you were porting someone else's CPAN module before using precisely the same name for your own Perl 6 version, but I'm not sure if others would agree. | 18:54 | ||
jnthn | TreyHarris: Yes, in those cases you'd probably look to Proxy. | 18:55 | |
18:55
prammer left
18:56
rurban1 left
|
|||
TreyHarris | jnthn: since I like using attribute access over getter/setter methods, that's where it's, if not "hard", demonstrably "harder", and does add a code smell--and I don't think having an attribute-access API is a code smell, but transitively it would seem to be equivalent to one | 18:57 | |
renormalist | I want a simple own module first, and have it the prototype for myself before doing the complicated ones. So, let's say, Acme::Foo will then exist twice in CPAN, just separated by their PAUSE subdir Perl6/, ok, I will try. | ||
TreyHarris: thanks | |||
jnthn | TreyHarris: I think attribute-access APIs have their place but are vastly overused in the real world (I'm thinking where a Foo type comes along with a FooService or FooManager) | 18:58 | |
TreyHarris | jnthn: agreed, and I think immutable value types are their best use case. You can avoid a proxy in that case, as you pointed out above, since all assignment is done at object creation time. you still do have to have a BUILD submethod, which makes inheritance dicier than if there were a way to declare getter/setter methods as callable by Mu.new, but that doesn't seem like a big deal. | 19:01 | |
jnthn: consider me convinced pragmatically but I reserve the right to re-argue the point in a year or two with some real-world experience under my belt :) | 19:02 | ||
jnthn | :-) | 19:04 | |
Skarsnik | when is the next moar push version in rakudo? so I can install the 'not leaking' moar/rakudo on my dedicated server x) | 19:06 | |
TreyHarris | jnthn: at one point (in an Apocolypse?) I recall that value types were specifically supported, but in synopses it looks like they're only glancingly supported by .WHICH and their users. There's also in S09 a "compact struct" described, but the syntax isn't given. Does that actually exist yet? Either way, am I correct that that's all the language support now for value types? | 19:08 | |
19:09
spider-mario left
19:10
spider-mario joined,
rurban joined,
rurban left
|
|||
jnthn | TreyHarris: Yeah, the WHICH thing needs more attention. We didn't get the compact structs yet in general; we do have support for inlined structs to some degree for the nativecall stuff | 19:10 | |
Skarsnik: I'll probably do one later this evening | 19:11 | ||
TreyHarris | jnthn: Thanks. Yeah, searching perl6/docs--which I hadn't had cloned before--showed me that. Is simply defining a multi method WHICH (Klass:D:) { ObjAt.new(.gist) } sufficient for now and likely forward-compatability? (And if so, shouldn't there really be a Value subtype of Mu that just defines that since it's just an incantation that should generally work?) | 19:16 | |
19:17
uruwi joined
|
|||
TreyHarris | er, I guess that would be a role | 19:17 | |
jnthn | TreyHarris: It'll work for now, though I think we'll extend it in the future | 19:18 | |
In terms of marking things, it'd probably want doing with a trait on the meta-object rather than something visible on the type itself. | |||
But, to be decided :) | 19:19 | ||
TreyHarris | wait, how does that syntax work? I was just cribbing from rakudo, but doesn't the signature (Klass:D:) mean that it's the meta-object and not the object that's the invocant of .gist? | 19:20 | |
oh... no, ignore me. I'm stoopid. | 19:21 | ||
I was confused by my own generalization, if I'd written "(MyClass:D:)" I wouldn't have been, but I'm used to $klass holding a metaobject. | 19:22 | ||
19:26
kjs_ joined
|
|||
Hotkeys | Why does rakudo-git require the jdk | 19:28 | |
19:29
cdg left
|
|||
timotimo | Hotkeys: because you can build a jvm back-end, too | 19:29 | |
19:30
nowan left
19:33
labster joined
|
|||
Skarsnik | jnthn, this fixed leak is crazy, my january rakudo: "After parsing :85.164 kb | 19:35 | |
", with today rakudo and your patch "After parsing :71.620 kb" nearly 20% gain of memory just on the start | |||
Hotkeys | timotimo: oh right | ||
I forgot that the jvm backend is a thing | |||
timotimo | Hotkeys: why it's a requirement and not a suggestion ... i dunno | ||
Skarsnik | these size are from /proc/pid/statm | 19:36 | |
jnthn | Skarsnik: Crazy *good* yes? :) | 19:37 | |
19:37
azawawi joined
|
|||
azawawi | hi | 19:37 | |
yoleaux | 27 Feb 2016 18:34Z <moritz> azawawi: cannot reproduce (re 403 for irclog.perlgeek.de/perl6/search); if the problem persists, please /msg me your public IP address | ||
azawawi | moritz: it is now working as expected... thanks :) | 19:38 | |
what's the best way to pass named parameters to a trait (i.e. ... is something(:p1(1), :p2(2)) ) | 19:39 | ||
19:43
itaipu left,
itaipu joined
19:48
pierrot left
19:49
kjs_ left
19:54
pierrot joined
20:00
labster left
20:03
prammer joined
20:06
uruwi_ joined
20:07
uruwi left,
prammer left
20:08
espadrine left
|
|||
jnthn | azawawi: You only get one argument to a trait really. You can write what you did, but you'll receive a list of pairs | 20:08 | |
(As the second arg) | |||
FROGGS | m: multi trait_mod:<is>(Routine $r, :$awesome!) { say $awesome }; sub foo is awesome(:yeah, :geez) { } # azawawi | 20:09 | |
camelia | rakudo-moar 3176cb: OUTPUT«(yeah => True geez => True)» | ||
20:10
darutoko left
|
|||
FROGGS | m: multi trait_mod:<is>(Routine $r, :$awesome!) { say (% = |$awesome) }; sub foo is awesome(:yeah, :geez) { } # azawawi | 20:10 | |
camelia | rakudo-moar 3176cb: OUTPUT«geez => True, yeah => True» | ||
azawawi | jnthn: thanks | 20:12 | |
FROGGS++:) | 20:13 | ||
20:13
sortiz joined
|
|||
sortiz | \o #perl6 | 20:14 | |
yoleaux | 16:19Z <japhb> sortiz: Great, thank you, I'll rebuild-all and see if DBIish install is fixed | ||
20:15
prammer joined,
sno left
20:19
prammer left,
themonkeybob11 joined,
prammer joined
20:20
domidumont left
20:21
QORRiE joined,
prammer left
20:22
prammer joined
20:24
kjs_ joined
20:26
virtualsue joined
20:27
prammer left
20:29
prammer joined
|
|||
azawawi | FROGGS: ping | 20:30 | |
20:30
labster joined
|
|||
azawawi | FROGGS: github.com/azawawi/perl6-memoize/b...load.t#L36 # tests | 20:31 | |
FROGGS: github.com/azawawi/perl6-memoize/b...ize.pm6#L7 # trait implementation | |||
FROGGS | hmmm | 20:32 | |
is this still problematic in Perl 6? | |||
github.com/azawawi/perl6-memoize/b...ize.pm6#L9 | |||
jnthn: ^^ | |||
vendethiel | huh, that was a pretty sad blogpost to read. | ||
FROGGS | I know that this caused a lot of bug hunting work for me with Perl 5... | ||
m: sub foo($bar) { my $baz = 42 if $bar; say $baz }; foo 0; foo 1; foo 0 | 20:34 | ||
camelia | rakudo-moar 3176cb: OUTPUT«(Any)42(Any)» | ||
FROGGS | okay, seems to work better than in Perl 5 | ||
mst | FROGGS: is what problematic? | ||
vendethiel | FROGGS: but hunting with Perl 5? :o | ||
FROGGS | m: sub foo($bar) { my $baz = 42 if $bar; say $baz }; foo 1; foo 0 | ||
camelia | rakudo-moar 3176cb: OUTPUT«42(Any)» | ||
FROGGS | vendethiel: bug* :P | 20:35 | |
vendethiel | FROGGS: bug hunting with Perl 5? :o | ||
FROGGS | mst: a statement modifying condition on a declaration | ||
20:35
prammer left
|
|||
FROGGS | mst: it acts like a state variable | 20:35 | |
mst | ah | 20:36 | |
jnthn | FROGGS: I don't think it acts like state accidentaly in Perl 6, no :) | ||
FROGGS | which was not what I intended | ||
jnthn | At least, I sure hope not :) | ||
FROGGS | jnthn: yes, which is a relief | ||
jnthn | :) | 20:37 | |
azawawi | FROGGS: anyway, that's 'is memoized' with simple LRU cache eviction :) | ||
FROGGS | just had one of these in my middleware service (Perl 5) a week ago | ||
azawawi: it reads nicely I think :o) | |||
20:43
Ven joined
|
|||
azawawi | so what is a better name than 'is memoized' other than 'is cached' in your opinion? | 20:44 | |
Skarsnik | is azawawied | 20:45 | |
perlpilot | "memoized" is an excellent name IMHO | 20:46 | |
Skarsnik | guess_library_name in NC could be cached I think x) | ||
azawawi | Skarsnik: :) | 20:47 | |
perlpilot | azawawi: it would be interesting if you could pass the thing that handles the caching as a parameter, but perhaps only as an academic exercise. | ||
20:48
prammer joined
|
|||
azawawi | perlpilot: cool | 20:48 | |
20:48
Ven left
|
|||
azawawi | #TODO cache eviction should be done if needed in another thread every N seconds :) | 20:49 | |
is unforgettable :) | 20:50 | ||
dalek | p: d8dab2f | jnthn++ | tools/build/MOAR_REVISION: Bump for MoarVM memory fix. |
||
kudo/nom: 855de77 | jnthn++ | tools/build/NQP_REVISION: Bump for MoarVM memory fix. |
20:52 | ||
jnthn | Skarsnik: There's the bump | ||
Skarsnik: Didn't get the other thing I was working on done :) | |||
20:52
Ven joined
|
|||
Skarsnik | Well you are forgiven! It weird nobody get bothered by it before | 20:53 | |
20:54
QORRiE left
20:58
SCHAAP137 joined
|
|||
jnthn | :) | 21:00 | |
21:02
tmch left
21:03
sufrostico left
|
|||
sortiz | azawawi, IMO any trait of this kind should check that the Routine 'is pure' also, for completeness. | 21:03 | |
jnthn | Well, arguably if you're sticking "is memoized" on it then you're stating that it makes sense | 21:04 | |
is pure doesn't actually check anything | |||
It just means "if you constant-fold me at compile time, then it's fine", and other such things :) | |||
sortiz | I know that 'is pure' right now don't have much semantic, but can be an opportunity to give them some, like "I'm a candidate to memoization", or can be the other side: if "is memoized", imply that "is pure" :) | 21:07 | |
timotimo | is pure on the optimizer does a tiny bit of stuff | 21:08 | |
er, i mean, the optimizer inspects subs for pureness in some cases | 21:09 | ||
21:10
molaf left
|
|||
sortiz | And in time that can be extended, I suppose. So that can promote, one way or the other, its use. | 21:10 | |
azawawi | sortiz: is memoized/cached were created to get faster execution time. That's their main objective :) | 21:11 | |
timotimo | i think for optimize-time-evaluation | 21:12 | |
21:13
eiro joined
|
|||
sortiz | azawawi, I understand, my comment is about semantic closure, ie the 'is memoize' trait imply 'is pure', that can be asserted or auto applied, that's my point. | 21:14 | |
azawawi | sortiz: PRs are more than welcome :) | 21:16 | |
21:17
FROGGS left,
TEttinger joined
|
|||
dalek | kudo-star-daily: 750fe88 | coke++ | log/ (9 files): today (automated commit) |
21:19 | |
21:20
tmch joined
21:24
addison left
|
|||
azawawi | good night everyone and thanks :) | 21:25 | |
21:27
azawawi left
|
|||
jnthn | Time for me to rest also :) Enjoy the speed-ups/leak fixes :) o/ | 21:29 | |
sortiz | o/ jnthn | 21:30 | |
21:34
virtualsue left,
sno joined
|
|||
[Coke] | (rakudo-git requires jvm) only if you configure it to build the jvm. | 21:36 | |
*on the | |||
which you might have done accidentally in the Configure step | |||
21:43
kjs_ left
21:48
itaipu left,
kaare_ left,
cognominal left
21:49
rindolf left
21:51
tmch left
21:54
skids left
21:55
bjz left
21:56
prammer left
22:00
prammer joined
22:02
Skarsnik left
22:08
Ven left,
itaipu joined
22:13
itaipu left
22:14
itaipu joined
22:16
ptolemarch left,
bjz joined
|
|||
rudi_s | Hi. How can I "cast" an argument. I have for example (1,2,3) and I want to pass it to a function which takes a Int @foo. | 22:21 | |
22:22
bjz left
22:24
bjz joined
|
|||
timotimo | assign to the right kind of container | 22:26 | |
blah_func(my Int @ = (1, 2, 3)) | 22:27 | ||
22:31
vendethiel left
22:34
bjz left
22:35
pdcawley_ left
22:39
vendethiel joined
|
|||
timotimo | www.youtube.com/watch?v=IvUU8joBb1Q - what a beautiful contraption | 22:41 | |
22:42
tardisx joined
|
|||
rudi_s | timotimo: Thank you. | 22:42 | |
22:43
pdcawley joined
22:44
AlexDaniel left
22:56
virtualsue joined
23:00
vendethiel left
23:02
vendethiel joined
23:03
wamba left
23:06
itaipu left
23:07
FreezerburnV joined
23:14
itaipu joined
|
|||
lucs | timotimo: Have you seen this one?: youtu.be/lHdcjW3bDTk | 23:16 | |
23:16
musca left,
musca joined
|
|||
timotimo | yeah, that one's not real, though | 23:17 | |
23:18
spider-mario left
|
|||
lucs | Aw, you knew ;) | 23:18 | |
timotimo | a year ago my dad sent it to me and i was legit wondering if he knew it was computer animation | 23:19 | |
lucs | Yeah, even though it is, it's pretty neat. | ||
timotimo | yeah | 23:20 | |
i appreciate the actually-built one a bit more, though. it has the catchier track playing on it | |||
lucs | You probably know Stephen Malinowski's Music Animation Machine videos? | 23:22 | |
23:23
vendethiel left
|
|||
timotimo | not sure | 23:25 | |
lucs | Example: youtu.be/yojDu3E9jls | 23:26 | |
He came up with a lot of different visualization techniques. | |||
timotimo | pretty! | 23:27 | |
23:30
geraud left
23:31
themonkeybob11 left
23:36
themonkeybob11 joined
23:41
virtualsue left
23:42
khw left,
prammer left
23:46
themonkeybob11 left
23:50
vendethiel joined
23:53
themonkeybob11 joined
23:54
SCHAAP137 left,
virtualsue joined
23:58
RabidGravy left
23:59
themonkeybob11 left
|