»ö« 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:00
firstdayonthejob left,
kaare_ joined,
themonkeybob11 joined
00:05
themonkeybob11 left
00:13
vendethiel left
00:14
virtualsue left
|
|||
Hotkeys | what up p6 | 00:22 | |
00:27
geraud joined
00:29
uruwi_ left
00:38
flussenc1 left
00:42
BenGoldberg joined
00:43
atweiden joined
|
|||
atweiden | m: my @a = qw<zero one two>; my $a = @a.deepmap(*.clone); @a[0] = 'Zero'; $a[0] = 'Zero'; | 00:46 | |
camelia | rakudo-moar 855de7: OUTPUT«Cannot modify an immutable Str in block <unit> at /tmp/uqQa0ykUeM line 1» | ||
atweiden | m: my @a = qw<zero one two>; my $a = @a.deepmap(*.clone); @a[0] = 'Zero'; $a[0] = 'Zero'; say @a[0].perl; say $a[0].perl; | 00:47 | |
camelia | rakudo-moar 855de7: OUTPUT«Cannot modify an immutable Str in block <unit> at /tmp/jJAvS_EtvO line 1» | ||
atweiden | can anyone say why this is happening? | ||
m: my @a = qw<zero one two>; my \a = @a.deepmap(*.clone); @a[0] = 'Zero'; say @a[0].perl; a[0] = 'Zero'; say $a[0].perl; | 00:49 | ||
camelia | rakudo-moar 855de7: OUTPUT«5===SORRY!5=== Error while compiling /tmp/3PBin828cTVariable '$a' is not declared. Did you mean '@a'?at /tmp/3PBin828cT:1------> 3ro'; say @a[0].perl; a[0] = 'Zero'; say 7⏏5$a[0].perl;» | ||
atweiden | m: my @a = qw<zero one two>; my \a = @a.deepmap(*.clone); @a[0] = 'Zero'; say @a[0].perl; a[0] = 'Zero'; | ||
camelia | rakudo-moar 855de7: OUTPUT«"Zero"Cannot modify an immutable Str in block <unit> at /tmp/XjiAxYpT0E line 1» | ||
00:53
tardisx left,
Khisanth joined
00:54
tardisx joined
00:59
itaipu left
01:11
tardisx left
01:13
Celelibi left
01:16
Celelibi joined
01:21
yadongz joined
|
|||
yadongz | p6: say "Hello world" | 01:28 | |
camelia | rakudo-moar 855de7: OUTPUT«Hello world» | ||
yadongz | m: say now - INIT now | ||
camelia | rakudo-moar 855de7: OUTPUT«0.00224836» | ||
01:31
Sgeo left
01:33
[particle] left
01:34
skids joined,
tardisx joined
|
|||
yadongz | :a | 01:36 | |
01:51
kid51 joined
|
|||
timotimo | heyo | 01:57 | |
02:00
kid511 joined
02:03
kid51 left
|
|||
timotimo | m: say now - BEGIN now | 02:03 | |
camelia | rakudo-moar 855de7: OUTPUT«0.01109792» | ||
02:06
khw joined,
Sgeo joined
02:07
FreezerburnV left
02:08
yadongz left,
FreezerburnV joined
02:13
[particle] joined
02:16
mattp_ joined
02:17
bakedb joined,
gtodd1 joined,
esh_ joined
02:18
notostraca joined,
zacts_ joined
02:19
khagan_ joined,
[particle]1 joined,
cxreg2 joined,
gypsydav15 joined
02:22
partly_ joined,
agent008_ joined
02:23
xxpor_ joined,
TEttinger left,
agent008 left,
khagan left,
zacts left,
cxreg left,
a3r0 left,
[particle] left,
inokenty left,
esh left,
bakedb_ left,
gtodd left,
bpmedley left,
cgfbee left,
xxpor left,
gypsydave5 left,
mtj_ left
02:24
inokenty joined
02:25
mtj_ joined,
cgfbee joined
02:26
Actualeyes joined,
a3r0 joined,
themonkeybob11 joined,
kalkin- left
02:27
yadongz joined
02:29
khw left
02:31
themonkeybob11 left
02:32
vendethiel joined
02:34
yadongz left,
cxreg2 is now known as cxreg
02:37
tardisx left
02:42
themonkeybob11 joined,
tardisx joined
02:45
notostraca is now known as TEttinger
02:51
khw joined
02:55
vendethiel left
03:02
sno left
03:09
kid511 left
03:20
atweiden left
03:22
perlpilot_ joined
03:24
autogen_ joined,
havenn joined,
kaare__ joined,
diegok joined
03:25
Praise- joined,
jnthn_ joined,
ranguard_ joined,
mkz___ joined,
jferrero_ joined,
ambs_ joined,
decent_ joined,
tony-o_ joined,
cxreg2 joined,
konobi_ joined,
jantore_ joined,
frew1 joined,
Herby_ joined
|
|||
Herby_ | Evening, everyone! | 03:26 | |
03:26
bhm_ joined,
khisanth_ joined,
sergot_ joined,
charsbar____ joined,
ChoHag_ joined,
psch_ joined,
dylanwh_ left,
ambs left,
cxreg left,
Khisanth left,
kaare_ left,
jantore left,
squain left,
frew left,
go|dfish left,
mkz__ left,
mtj_ left,
inokenty left,
ranguard left,
psch left,
Praise left,
decent left,
perlpilot left,
autogen left,
sergot left,
tony-o left,
bhm left,
ChoHag left,
squain joined,
Roamer` joined,
raydiak_ left,
captain-adequate joined,
havenn is now known as havenwood,
sammers joined
03:27
dylanwh_ joined,
mtj_ joined,
go|dfish joined
03:29
inokenty joined
03:39
BenGoldberg left
03:52
noganex_ joined
03:55
noganex left
03:56
labster left
04:10
Herby_ left
|
|||
dalek | ecs: fe8f074 | skids++ | S17-concurrency.pod: spec Channel.fail and Channel.closed |
04:43 | |
04:43
wamba joined
04:45
cpage__ joined
04:59
labster joined
05:12
skids left
|
|||
dalek | kudo/repl6: 384a70c | hoelzro++ | src/ (2 files): REPL6: Stash the compiler object away inside the REPL |
05:14 | |
kudo/repl6: 2374c4a | hoelzro++ | src/core/REPL.pm: REPL6: Implement update-completions |
|||
kudo/repl6: 377a9ae | hoelzro++ | src/core/REPL.pm: REPL6: Update completions before reading a line The context of an evaluation is saved before reading the next line but after the call to eval(); we can't really guarantee when it's going be. Definitely LTA, but gets the job done. |
|||
sortiz | hoelzro++ # More work in REPL | 05:17 | |
05:26
raydiak_ joined
05:43
Cabanossi left
05:44
Cabanossi joined
05:46
themonkeybob11 left
05:47
FreezerburnV left
05:58
wamba left,
wamba1 joined
06:07
tardisx left
06:13
tardisx joined,
wamba1 left
06:14
tardisx left
06:19
khw left
06:27
vendethiel joined
06:44
bjz joined
06:51
vendethiel left
06:55
domidumont joined
06:59
domidumont left,
cxreg2 is now known as cxreg
07:00
domidumont joined
07:16
cpage__ left,
sjoshi joined
07:17
tmch joined
07:20
bjz left
07:21
cognominal joined
07:22
bjz joined
07:24
ecocode joined
07:28
nakiro joined
07:34
asan13 joined
07:35
firstdayonthejob joined
07:36
darutoko joined
07:44
themonkeybob11 joined
07:48
sinuni joined
07:49
themonkeybob11 left
07:54
sno joined
08:01
araujo_ joined
08:03
cpage__ joined,
araujo_ left
08:04
araujo_ joined
08:05
araujo left
08:10
vendethiel joined
08:14
ely-se joined
|
|||
El_Che | rakudo people: I see there are asc signatures in the downlaod directories, but I don't see instructions (or keys) in the site to verify the signature | 08:20 | |
08:21
lizmat joined,
zakharyas joined,
ely-se left
|
|||
moritz | gpg --verify | 08:24 | |
and the keys can be found on the public key servers | |||
proper documentation welcome :-) | |||
lizmat waves from the North Sea | 08:25 | ||
DrForr | Where ya headed? | 08:26 | |
lizmat | Newcastle Upon Tyne | 08:29 | |
DrForr | Aha. | ||
lizmat | som R&R in Northern England :-) | 08:30 | |
*some | |||
08:30
klapperl joined
|
|||
DrForr | I'd go back to Edinburgh in a heartbeat. | 08:30 | |
lizmat | hehe... not going to make it there this trip :-( | 08:33 | |
stmuk | lizmat: Durham is very nice if you get chance to see it | 08:34 | |
08:34
abraxxa joined
|
|||
lizmat | stmuk: we'll keep that in mind... initially we're going to Harrogate | 08:37 | |
stmuk | virtualsue recommends Betty's Tea Rooms Harrogate :) | 08:38 | |
08:39
firstdayonthejob left,
fireartist joined
|
|||
dalek | Iish: 01291d0 | (Salvador Ortiz)++ | lib/DB (19 files): Typed Exceptions for proper error handling Uses X::DBIish::* for pre-connect exceptions and X::DBDish::* for post-connect errors |
08:40 | |
Iish: 58b629a | (Salvador Ortiz)++ | t/35-pg-common.t: Pg: Typo in dbname used for testing |
|||
Iish: 8ed4e18 | (Salvador Ortiz)++ | lib/DB (14 files): All classes now does DBDish::ErrorHandling Error handling round 2: Make DBDish::ErrorHandling a proper role. RaiseError now simply control if an Exception are throwed or returned as a Failure for standard Perl 6 semantics. Orthogonally all errors are reported up-tree (via the .err and .errstr methods) to conform with Perl 5 DBI. See t/41-sqlite-exec-error.t for examples. So, IMO this Fixes #4 |
|||
Iish: 573d679 | (Salvador Ortiz)++ | / (3 files): Extend tests for error handling |
|||
lizmat | stmuk: we actually have been there, it was nice but way too crowded with all the buses of tourists :-( | ||
stmuk | ah :( | 08:42 | |
08:44
RabidGravy joined
08:45
themonkeybob11 joined
08:48
bjz_ joined
08:50
bjz left,
themonkeybob11 left,
vendethiel left
|
|||
lizmat | ok, deboarding time... & | 08:50 | |
08:50
lizmat left
09:00
kjs_ joined
09:03
AlexDaniel joined
09:04
rindolf joined,
araujo_ left
|
|||
RabidGravy | rarr! | 09:08 | |
sortiz | \o RabidGravy | 09:09 | |
stmuk | arjj! zipp! | ||
09:11
kjs_ left
09:17
liztormato joined
09:20
vendethiel joined,
cognominal left,
liztormato left
|
|||
dalek | Iish: e63c135 | (Salvador Ortiz)++ | / (2 files): For the happiness of panda's users: v0.1.2 |
09:23 | |
09:23
azawawi joined
|
|||
azawawi | hi | 09:27 | |
where can i find a POD6 cheatsheet/ | |||
? | |||
09:28
liztormato joined
|
|||
arnsholt | I usually look at the documentation spec, TBH | 09:28 | |
09:29
liztormato left
09:31
araujo joined
09:36
sinuni left
09:37
jnthn_ is now known as jnthn
|
|||
azawawi | arnsholt: thanks | 09:39 | |
09:39
azawawi left
09:41
vendethiel left,
Upasaka_ joined
09:46
Upasaka_ left,
Upasaka joined
|
|||
RabidGravy | is there some HTTP Authentication thingy in the ecosystem that I missed, i.e. given an Authentication: header it picks the bits out and returns the type and the split out credentials? | 09:48 | |
or something like that | |||
getting a bit carried away here and about to implement the source authentication for this streaming thing | 09:49 | ||
09:50
kjs_ joined
|
|||
DrForr | RabidGravy: I'd like your opinion on this - I'm adding session support tonight/over the weekend for Prancer and was looking at how Dancer handles sessions with a DSL. I think I'm probably better off just passing the session as an argument to the handler. That gives me a full object to work with, and people can write $SESSION.<logged-in> = 1; # and such rather than session('logged-in',1); and having to do some rather ugly hacks. Thoughts? | 09:54 | |
(he says, 5 minutes before a scrum meeting.) | 09:55 | ||
multi GET( $SESSION, '/path', '/to', $username ) is handler { $SESSION.<is-valid> or die... } | 09:56 | ||
RabidGravy | yes, passing a proper object, maybe as a named argument, it would be useful to have it available as a multi selector for sure | 10:01 | |
DrForr | Yeah. It doesn't have the convenience of being able to throw in a 'session(...)' anywhere without editing the arg list, but OTOH Dancer requires a bunch of DSL entries to do session management, and a single object serves the same purpose w/o cluttering namespace. | 10:03 | |
RabidGravy | an alternative would be to have a "session" term (somewhat similar to "self") which is actually a $*SESSION dynvar under the hood | 10:05 | |
DrForr | Yeah, I think I'll stick with this approach for now. I figured out last night how I can emulate what Dancer does, but it's ugly in that I'd have to wrap every user-provided handler in a call and have the 'session' "function" look backwards in the callstack for the marker and retrieve the session ID. Quick, but prone to all sorts of problems. | 10:08 | |
The first one being that the function call could get optimized away. | 10:09 | ||
It could grow into a God object if I don't watch it, though. I can restrict it to *only* the stuff that requires a per-browser ID. | 10:12 | ||
10:12
espadrine joined
10:13
liztormato joined
10:15
liztormato_ joined,
TEttinger left
10:16
gregf_ left
|
|||
liztormato_ | 1DrForr: depending on introspection is generally a code smell, or so I'm told 1 | 10:17 | |
10:17
gregf joined,
gregf left
10:18
liztormato left,
liztormato_ is now known as liztormato
10:20
gregf joined
10:27
vendethiel joined
10:30
liztormato left
10:42
kjs_ left
10:43
kjs_ joined
10:46
themonkeybob11 joined,
zpmorgan left
10:47
psch_ is now known as psch
10:51
themonkeybob11 left,
ecocode left
10:52
AlexDaniel left
10:55
vendethiel left
10:57
kjs_ left
10:59
FROGGS joined,
kjs_ joined
11:00
ecocode joined
11:06
vendethiel joined,
sortiz left
11:08
cognominal joined
11:26
virtualsue joined
11:28
vendethiel left
11:38
RabidGravy left
11:41
labster left
11:44
ambs_ is now known as ambs
11:47
themonkeybob11 joined
11:52
themonkeybob11 left
12:02
kjs_ left
12:10
ely-se joined
12:20
virtualsue left
12:24
ely-se left
12:30
iH2O joined
12:35
iH2O left
12:38
partly_ left
12:40
virtualsue joined,
telex left
12:41
partly_ joined
12:42
telex joined
12:43
kid51 joined
12:48
kid51 left
12:53
maybekoo5 joined
12:54
UrbanM joined,
UrbanM left
12:57
bjz joined
12:58
maybekoo5 left,
bjz_ left
13:08
bjz_ joined
13:11
bjz left,
maybekoo5 joined
13:16
zpmorgan joined
13:27
zpmorgan left
13:30
virtualsue left
13:31
kurahaupo joined
13:34
squain left
13:39
RabidGravy joined
13:42
perlpilot_ left,
perlpilot joined
|
|||
RabidGravy | RARR! | 13:43 | |
llfourn | has anyone else been getting these randomly over the past week or so: moar(55541,0x7fff7b6d9000) malloc: *** error for object 0x7ffb13cbe820: pointer being realloc'd was not allocated | 13:46 | |
*** set a breakpoint in malloc_error_break to debug | |||
it seems to be non-deterministic and only happens on my mac so far | |||
timotimo | uh-oh | 13:47 | |
could you potentially bisect it? or does it happen too randomly? | |||
is the problem excerberated by passing --full-cleanup to the moar commandline? | |||
llfourn | leme check this | 13:48 | |
yes it does exacerbate it.. sort of, now it prints it even at the end when it works | 13:51 | ||
13:51
vendethiel joined
|
|||
llfourn | usually it fails at runtime | 13:51 | |
13:51
Psyche^_ joined
|
|||
llfourn | but now runtime succeeds and it prints the message | 13:51 | |
timotimo | right | ||
usually moar just exits instead of cleaning up all objects it owns | |||
13:51
themonkeybob11 joined
|
|||
llfourn | I've never done a bisect before but no time like the present to learn | 13:51 | |
timotimo | because the OS will just throw out all the mapped memory regions and resources and that's the end of it | ||
llfourn | makes sense | 13:52 | |
timotimo | --full-cleanup is more of a debugging thing to see if we do our memory management right | ||
13:52
autogen_ left
|
|||
llfourn | do I just go into moar and do bisect or do I do it in rakudo because of NQP/moar versioning | 13:53 | |
(and then Configure.pl again) | 13:54 | ||
psch | afair you can replace moar under rakudo/nqp without trouble | ||
timotimo | just recompile moar and if you see "invalid instruction" or totally bogus behavior, make clean/make install in rakudo | ||
llfourn | kk | ||
psch | right, barring format changes | ||
or new ops | |||
13:55
Psyche^ left
13:56
themonkeybob11 left
|
|||
timotimo | twitter.com/bluedelliquanti/status...8795464704 - this made the world all better again when i saw it | 13:56 | |
14:01
gregf left
14:03
gregf joined
14:06
cdg joined,
maybekoo5 left
14:08
autogen joined
14:12
skids joined
14:14
vendethiel left
|
|||
llfourn | looks like it's been happening for a while. It must be that I've changed my code recently to be hitting it. | 14:16 | |
timotimo | damn | ||
could you run such a program under valgrind, or give us the backtrace malloc gives, or compile moar with --asan? | |||
14:19
Cabanossi left
|
|||
llfourn | yes how do I do either of the last two? | 14:19 | |
valgrind is buggy on mac I find | |||
maybe I'll check if it happens on debian as well | |||
14:21
hankache joined,
maybekoo5 joined
|
|||
hankache | Hello * | 14:22 | |
llfourn | o/ | ||
timotimo | well, you'll want to give moarvm's Configure.pl the --debug=3 and potentially a lower --optimize= value. and on top of that, you can pass --asan | 14:23 | |
llfourn | timotimo: rgr | ||
timotimo | if you've been using --gen-moar and friends so far, you'll need to make sure to pass the same --prefix that also has your nqp and rakudo in it | 14:24 | |
14:24
Cabanossi joined
14:25
wamba joined,
vendethiel joined
|
|||
timotimo | i've got to be AFK for a bit | 14:27 | |
llfourn | timotimo: thanks for your help :) | ||
timotimo | oh, and using the very latest moarvm would probably be good, since there was many memory management changes recently - well, mostly fixes of leaks | 14:28 | |
llfourn | yeah I did go to the latest before mentionig it in irc | ||
timotimo | i thought so, but i figured i'd just point it out to be safe | 14:29 | |
14:32
maybekoo5 left
|
|||
llfourn | timotimo: in case you're still here: it doesn't happen on debian | 14:32 | |
14:33
maybekoo5 joined
14:36
kjs_ joined,
abaugher left
14:37
abaugher joined,
themonkeybob11 joined
14:40
molaf joined
14:42
themonkeybob11 left
14:45
FreezerburnV joined
14:46
vendethiel left
14:51
hankache left,
hankache joined,
vendethiel joined
14:56
kjs_ left
14:58
ely-se joined,
kjs_ joined,
FreezerburnV left
|
|||
timotimo | ugh, that's annoying | 15:00 | |
15:05
kurahaupo left
|
|||
RabidGravy | I'd be curious to see if it occurred on FreeBSD too | 15:06 | |
15:07
themonkeybob11 joined
|
|||
mspo | more like openbsd which defaults to ASLR? | 15:07 | |
15:08
yeahnoob joined
|
|||
mspo | (guessing that aslr is related) | 15:08 | |
15:09
yeahnoob left,
yeahnoob joined
|
|||
llfourn | timotimo: attempt at backtrace: gist.github.com/LLFourn/f70cea5e07ff0e49a852 | 15:10 | |
15:12
vendethiel left,
themonkeybob11 left
|
|||
dalek | c: 6a25221 | jjatria++ | doc/Language/operators.pod: Fixed wrong operator The sample definition for "~" was the same as that for "-" |
15:12 | |
c: ff3da18 | (Zoffix Znet)++ | doc/Language/operators.pod: Merge pull request #405 from jjatria/operators-fix Fixed definition for ~ |
|||
timotimo | llfourn: every REPR has its own gc_free function, and they're all called the same thing | 15:13 | |
llfourn: you can't get a file and line number from frame number 2? | |||
llfourn | timotimo: I just updated the gist to show a different trace when it fails at runtime | ||
timotimo | oh, what?! inside set_size_internal? | ||
that's very interesting; that'd be VMArray probably | |||
yeah, only MVMArray has set_size_internal | 15:15 | ||
llfourn looks into how to get file and line numbers in backtrace | |||
oh I don't think I have the symbols there properly | 15:16 | ||
jnthn | llfourn: Does your code involve multiple threads? | ||
llfourn | jnthn: no | ||
jnthn | OK | ||
Then it'll likely be a GC invariant violation...somewhere... /o\ | |||
timotimo | oh? i would have thought memory corruption | 15:17 | |
llfourn: were you able to build moar with --asan? | |||
llfourn | timotimo: no it gets angry at me, probing whether your compiler thinks that it is gcc Can't compile simple gcc probe, so something is badly wrong (if on linux, maybe you need something like 'sudo apt-get install build-essential') at build/probe.pm line 92. | ||
timotimo | right, that happens to me, too | ||
something seems to have broken --asan support at some point | 15:18 | ||
.o( and also it won't say what exactly is wrong there, grr ) | |||
FROGGS | I'd love to see a --verbose option there | ||
so you get the C file dumped as well as the error message | |||
jnthn | timotimo: Those almost always lead to memory corruption | ||
timotimo | oh | 15:19 | |
/usr/bin/ld: cannot find /usr/lib64/libasan.so.2.0.0 | |||
well, that'd explain something | 15:20 | ||
now that i have installed libasan, it actually works | |||
llfourn: so what happens if you install libasan on your machine? | 15:22 | ||
llfourn | timotimo: I'm not sure how I get libasan on my mac | 15:23 | |
I have found this: github.com/Homebrew/homebrew/pull/17039 | |||
timotimo | hm | 15:24 | |
clang has asan "built in" or something, but you'll still need the library to link your program against, i think? | |||
15:25
kjs_ left
|
|||
llfourn | I haven't found it | 15:29 | |
I gotta take a break ill see if I can get a better trace tomorrow or so :) | 15:30 | ||
15:31
kjs_ joined
|
|||
llfourn | I might have to install GDB instead | 15:31 | |
GCC* | |||
timotimo | i find it hard to believe that it's clang's fault there's no line numbers | ||
did you really --debug=3 in your Configure.pl? | |||
15:32
maybekoo5 left
|
|||
llfourn | perl Configure.pl --prefix=/Users/llfourn/tmp/p6/rakudo/install --debug=3 && make | 15:32 | |
is what I did | |||
timotimo | weird. could something have overridden that? | ||
i don't think we have a "strip" anywhere in our Makefile | 15:33 | ||
15:33
kjs_ left
|
|||
llfourn | is there a way to ask moarvm the debug level it was compiled with? | 15:33 | |
timotimo | m: say $*VM<config> | ||
camelia | rakudo-moar 855de7: OUTPUT«Type VM does not support associative indexing. in block <unit> at /tmp/6_eDxll998 line 1Actually thrown at: in block <unit> at /tmp/6_eDxll998 line 1» | ||
timotimo | m: say $*VM.config. | 15:34 | |
camelia | rakudo-moar 855de7: OUTPUT«5===SORRY!5=== Error while compiling /tmp/kyN92SrK8kMalformed postfix callat /tmp/kyN92SrK8k:1------> 3say $*VM.config.7⏏5<EOL>» | ||
timotimo | m: say $*VM.config | ||
camelia | rakudo-moar 855de7: OUTPUT«ar => ar, arflags => rcs, arout => , asm => .s, asmout => -o , asmswitch => -S, auxclean => @:, be => 0, bindir => /home/camelia/rakudo-m-inst-1/bin, booltype => _Bool, can_unaligned_int32 => 1, can_unaligned_int64 => 1, can_unaligned_num64 => 1, cancgoto …» | ||
timotimo | perhaps somewhere in there? | ||
m: say $*VM.config.keys | |||
camelia | rakudo-moar 855de7: OUTPUT«(dcbrule ar mastdir tomrule syslibs[2] shaobjects ccshared be dynasmlua ld mtlib mtobjects noreturnspecifier perl shaclean static_inline ccdebugflags auxclean thirdpartylibs config ccinc booltype ldout moarlib mtrule syslibs[0] dcrule dcbobjects cflags lao…» | ||
timotimo | ccdebugflags, for example? | ||
and cflags | |||
m: say $*VM.config<cflags ccdebugflags ldflags> | 15:35 | ||
camelia | rakudo-moar 855de7: OUTPUT«(-Wdeclaration-after-statement -Werror=declaration-after-statement -O3 -DNDEBUG -D_REENTRANT -D_FILE_OFFSET_BITS=64 -fPIC -g3 -O3 -DNDEBUG -Wl,-rpath,/home/camelia/rakudo-m-inst-1/lib -Wl,-rpath,/home/camelia/rakudo-m-inst-1/share/perl6/site/lib)» | ||
timotimo | there you see it has -g3, that's the debug level | ||
llfourn | yeah I have that too | ||
timotimo | okay. well, that's weird | ||
llfourn | but I just recmopiled so I'll check gdb again | ||
timotimo | on the other hand ... perhaps it's just glibc (or whatever) that'd need support for debug symbols? | ||
15:36
kjs_ joined
|
|||
timotimo | perhaps libunwind or something needs to be present?!? | 15:36 | |
this is hard to google for :) | |||
15:36
prammer joined
|
|||
llfourn | no luck | 15:38 | |
timotimo | apparently there's an env var called "MALLOC_CHECK_" that you can set to 2 ?!? | ||
llfourn | when compiling moar or running? | 15:39 | |
llfourn doesn't do c stuff at all | |||
anyways me sleepy. I'll give it another shot tomorrow. | 15:40 | ||
timotimo | when running | ||
okay | |||
have a good rest! | |||
i hope we'll figure this out eventually | 15:41 | ||
geekosaur | that's a glibc malloc debug feature, yes. (so effectively linux/hurd only) | 15:42 | |
timotimo | darn | 15:43 | |
15:44
vendethiel joined
15:48
ecocode left
|
|||
ely-se | tfw someone feels the need to mention Hurd | 15:49 | |
15:50
nakiro left
|
|||
timotimo | hurd could be cool at some point | 15:50 | |
geekosaur started out in #haskell this morning, pedantic precision now on the brain >.> | |||
timotimo | "got out on the wrong channel of the bed"? | 15:51 | |
geekosaur | something like that | ||
15:52
domidumont left,
khw joined
|
|||
RabidGravy | isn't the *idea* of hurd actually older than linux? | 15:56 | |
15:57
yeahnoob left
|
|||
timotimo | i think so? | 15:58 | |
perlpilot | yes. | ||
timotimo | going to linux with the GNU system was kind of a compromise, wasn't it? | ||
gnu needed a kernel, linux needed a userland | |||
perlpilot | (and hurd was imaginary) | 15:59 | |
RabidGravy | www.gnu.org/software/hurd/history/hurd-announce | 16:00 | |
geekosaur | afaik the gnu project never adopted linux, hurd was always their goal. linux needed a userland and adopted gnu | ||
(this is part of the reason for the whole "gnu/linux" foofooraw, some linuxers see Stallman's insistence on that as appropriation of something they weren't involved with) | 16:01 | ||
timotimo | fair enough | ||
ely-se | ReactOS beats both | ||
16:06
vendethiel left
16:10
fireartist left
16:11
sjoshi left
|
|||
partly_ | m: IO::.WHAT ~~ Stash | 16:11 | |
camelia | ( no output ) | ||
partly_ | m: say IO::.WHAT ~~ Stash | 16:12 | |
camelia | rakudo-moar 855de7: OUTPUT«True» | ||
partly_ | m: my $f = IO; say $f::.WHAT ~~ Stash | ||
camelia | rakudo-moar 855de7: OUTPUT«False» | ||
timotimo | m: my $f := IO; say $f::.WHAT ~~ Stash | ||
camelia | rakudo-moar 855de7: OUTPUT«False» | ||
timotimo | hm. | ||
partly_ | m: my $f = IO; say $f::.WHAT.gist; | 16:13 | |
camelia | rakudo-moar 855de7: OUTPUT«(IO)» | ||
partly_ | why? | ||
JimmyZ | m: my \f = IO; say f::.WHAT ~~ Stash | ||
camelia | rakudo-moar 855de7: OUTPUT«True» | ||
timotimo | probably because of the way the :: operator works | ||
timotimo AFK | |||
jnthn | $f:: is a variable name, yeah | ||
m: my $f = IO; say ::($f)::.WHAT ~~ Stash | 16:14 | ||
camelia | rakudo-moar 855de7: OUTPUT«Use of uninitialized value <element> of type IO in string contextAny of .^name, .perl, .gist, or .say can stringify undefined things, if needed. in block <unit> at /tmp/Yl6s9wXeYz line 1False» | ||
jnthn | ah | ||
But easy way is | |||
m: my $f = IO; say $f.WHO ~~ Stash | |||
camelia | rakudo-moar 855de7: OUTPUT«True» | ||
partly_ | Thanks for the hint with the .WHO aproach | 16:20 | |
Generally how do I find out if $f is a module or a class or a grammar or role? | |||
16:21
domidumont joined
|
|||
RabidGravy | look at the .HOW | 16:21 | |
moritz | through the type of the HOW | ||
m: say Grammar.HOW.^name | |||
camelia | rakudo-moar 855de7: OUTPUT«Perl6::Metamodel::ClassHOW» | ||
moritz | m: grammar G { }; say G.HOW.^name | ||
camelia | rakudo-moar 855de7: OUTPUT«Perl6::Metamodel::GrammarHOW» | ||
moritz | m: (my role { }).HOW.^name | 16:22 | |
camelia | ( no output ) | ||
moritz | m: say (my role { }).HOW.^name | ||
camelia | rakudo-moar 855de7: OUTPUT«Perl6::Metamodel::ParametricRoleHOW» | ||
16:23
nowan joined
|
|||
partly_ | Hmm this makes sense. Thank you | 16:23 | |
timotimo | \o/ | 16:25 | |
moritz | partly_: why do you want to know? | 16:28 | |
because if you want to check things like "can this inherit" or "can it hold methods", there are better ways | 16:29 | ||
16:30
ely-se left
16:31
vendethiel joined
|
|||
partly_ | moritz: I'm just playing around. Given a module i want to expose all subroutines as actions of a cli app and it's signature attributets as parameters | 16:31 | |
pyrimidine | Ulti: know of anyone who wants to work on Perl 6 for GSoC? OBF and Genome Informatics were accepted :) | ||
16:32
musiKk_ joined,
themonkeybob11 joined
|
|||
partly_ | i just need to make a check if the given type is a module containing subroutines and not a class, grammar or so on... | 16:34 | |
16:35
FROGGS left
|
|||
RabidGravy wonders idly whether the Inputs and Outputs of this thing should be symmetrical with Supplies or use a Channel on the output | 16:36 | ||
16:36
goodname left,
kjs_ left
|
|||
moritz | partly_: but classes can also contain subroutines | 16:41 | |
partly_: which is why I think that's not a good approach | |||
partly_ | Oh, have not thought about that | ||
moritz | partly_: a class can act as a namespace (or has a namespace associated) if its meta object doe sthe Metamodel::Stashing role | 16:42 | |
partly_: that'd be a saner check | |||
likewise, it can hold methods if it does the MethodContainer role | |||
RabidGravy goes for the symmetrical to see how well it stacks up | 16:44 | ||
partly_ | Hmm no i confused. So I know that IO.HOW is a ParametricRoleGroupHOW but is it than also a Metamodel::Stashing? If so how do i check it? | 16:46 | |
I'm looking at the MOP docs currently but not getting smarter :) | 16:47 | ||
moritz | m: say (class A { }).HOW ~~ Metamodel::Stashing | 16:48 | |
camelia | rakudo-moar 855de7: OUTPUT«Method 'ACCEPTS' not found for invocant of class 'Perl6::Metamodel::Stashing' in block <unit> at /tmp/UX7sRYXFRA line 1» | ||
moritz | m: say (class A { }).HOW.^does(Metamodel::Stashing) | ||
camelia | rakudo-moar 855de7: OUTPUT«1» | ||
partly_ | Hmm i see. | 16:52 | |
Thanks | 16:53 | ||
16:54
vendethiel left
|
|||
moritz | the documentation on the MOP is still rather sparse; I recommend reading the top of each of the interesting files (like ClassHOW.nqp) in the rakudo repo to see which roles they implement | 17:00 | |
perlpilot | .oO( We have MOP docs?!? ) |
17:01 | |
;) | |||
moritz | sure | 17:02 | |
nine_ | I just love this low level stuff :) | ||
partly_ | moritz: thanks for the hint, I'm already on it :) | 17:03 | |
I'm really mising a ^subs like ^methods | 17:04 | ||
moritz | partly_: subs typically live in lexical scopes, which can't be accessed from the outside anyway | ||
partly_ | Ok let me paraphrase that: I want to have all what in java would call static methods | 17:05 | |
IO::Path::mkdir would be for me a static method, but how to filter it from other things like dirname, basename? | 17:06 | ||
psch | Path::mkdir isn't equivalent to a static method | ||
partly_ | But it's a method which i can execute without calling IO::Path.new first | 17:07 | |
partly_ is not sure what it is | |||
perlpilot | because it's not a method | ||
psch | partly_: which code do you use to call mkdir without instantiating an IO::Path object? | 17:08 | |
oh, that's possible too, right. there's also a mkdir sub | |||
partly_ | Hmm, i just call mkdir. | ||
m: IO::Path::mkdir("foo") | |||
camelia | rakudo-moar 855de7: OUTPUT«Could not find symbol '&mkdir' in block <unit> at /tmp/v1PoVgsAzk line 1Actually thrown at: in block <unit> at /tmp/v1PoVgsAzk line 1» | ||
partly_ | m: mkdir("foo") | ||
camelia | rakudo-moar 855de7: OUTPUT«mkdir is disallowed in restricted setting in sub restricted at src/RESTRICTED.setting line 1 in sub mkdir at src/RESTRICTED.setting line 8 in block <unit> at /tmp/wyxMjXATs3 line 1» | ||
psch | partly_: yeah, that's a Sub, not a method | 17:09 | |
partly_: and under the hood it creates an IO::Path and calls the mkdir method on that | |||
github.com/rakudo/rakudo/blob/nom/...rs.pm#L245 | 17:10 | ||
17:11
Skarsnik joined
|
|||
Skarsnik | Hello | 17:11 | |
RabidGravy | a "static" method is pretty much a method that can be called on the type object | 17:12 | |
psch | right, what Java calls a static method is what we do by default | 17:13 | |
RabidGravy | but still uses the '.', like Foo.bar() | ||
psch | IO::Path::mkdir explicitly isn't one, 'cause it wants IO::Path:D | ||
as invocant | |||
Javas static method can be called on instances and on the type | |||
RabidGravy | Foo::bar is just an "our scoped subroutine" | ||
psch is botching the syntax a bit there though | 17:14 | ||
...i also think this is somewhat of a digression from the actual, original question :/ | |||
Skarsnik | always :) | ||
psch | sorry for that, especially as i feel i came of a bit abrasive | ||
RabidGravy | nothing like it | 17:15 | |
17:15
kjs_ joined
|
|||
partly_ | still i'm not wiser how to get all the "default"/static methods/subroutines | 17:15 | |
17:16
themonkeybob11 left
|
|||
RabidGravy | which? | 17:17 | |
psch | m: module Foo { sub bar is export { } }; Foo.WHO<EXPORT>.WHO<ALL>.WHO.perl.say | 17:18 | |
camelia | rakudo-moar 855de7: OUTPUT«{"\&bar" => sub bar () { #`(Sub|72363712) ... }}» | ||
psch | something like that, i guess? | ||
17:19
musiKk_ left
|
|||
RabidGravy | or | 17:20 | |
m: module Foo { our sub bar { }; our sub baz { }; } ; for Foo::.values { say $_.name if $_ ~~ Callable; } | |||
camelia | rakudo-moar 855de7: OUTPUT«bazbar» | ||
RabidGravy | if non-exported "our" subs | ||
perlpilot | psch: seems a little long-winded ... | 17:21 | |
psch | perlpilot: yeah... i don't know of a shorter way though :S | 17:22 | |
perlpilot | m: module Foo { sub bar is export { } }; Foo::EXPORT::ALL::.kv.perl.say | ||
camelia | rakudo-moar 855de7: OUTPUT«("\&bar", sub bar () { #`(Sub|63257056) ... }).Seq» | ||
RabidGravy | Foo::<EXPORT>? | ||
perlpilot | There's also Foo::EXPORT::DEFAULT | ||
Skarsnik | Yes FOO::EXPORT::DEFAULT::.keys | ||
17:23
abraxxa left
17:24
sevvie joined
|
|||
RabidGravy | Now I'm wondering whether you could do a trick with a trait where you could expose non-exported, non our subs (infact I'm sure there is, I just can't be bothered to work it up right now | 17:25 | |
17:27
SCHAAP137 joined
|
|||
partly_ | My first aproach was using EXPORT, but this did not work on IO::Path as expected. Now I know why | 17:29 | |
Thank you guys for your patience | 17:30 | ||
perlpilot | partly_: maybe when you figure everything out, you could update the docs with whatever is missing | 17:31 | |
17:31
hankache left
|
|||
perlpilot | partly_: and write a blog post about the kinds of "introspection" you're doing | 17:31 | |
partly_ | Maybe, we will see ;) | 17:35 | |
17:46
themonkeybob11 joined
17:50
themonkeybob11 left
18:05
firstdayonthejob joined
18:06
Actualeyes left
|
|||
RabidGravy | I've got a thing here which finds all the methods in a class which do a particular role and optionally have a particular returns type | 18:06 | |
can I remember what I made it for, no, no I can't ? | 18:07 | ||
18:12
themonkeybob11 joined
18:13
gregf left
18:14
gregf_ joined
|
|||
RabidGravy | If I wanted to name a role that is common to "sink" and "source" what could I call it? | 18:15 | |
before I go with IOThing | 18:16 | ||
portal, edge, door | 18:21 | ||
TimToady | ports, sockets, | ||
lots of words have been used | 18:22 | ||
so hard to find a new one :) | |||
RabidGravy | ooh I just had a horrid flashback to SunOS "doors" :-\ | 18:23 | |
perlpilot | "portal" :) | 18:24 | |
oh, already said that one | |||
perlpilot should read faster | |||
TimToady | but do you have a portal gun? | 18:25 | |
perlpilot | There ya go, at least 2 votes for portal! ;) | ||
TimToady | a mock endpoint would have to be called "cake" :) | ||
perlpilot | heh | 18:26 | |
RabidGravy | portal is good :) | ||
perlpilot | TimToady: btw, do you know where I can find a reference for where P5 got its inspiration for its object system? | 18:27 | |
18:27
zacts_ left
|
|||
perlpilot | someone was asking at $work yesterday and I recalled that it came from Python, but couldn't "independently confirm" | 18:27 | |
TimToady | well, I can confirm it, in a general way; of course, all the specifics are different underneath | 18:28 | |
perlpilot | (and I don't always trust my memory L( | ||
er :) | |||
TimToady | but the whole explicit self as an argument thing was from Python | 18:29 | |
timotimo | o/ | ||
TimToady | in a sense Perl 6 still has that, but built on a much different metamodel | ||
18:31
kjs_ left
|
|||
TimToady | all that p5 stole was the notion that you can do a minimalistic OO system merely by building a dispatch system that looks at the first argument, and otherwise leave methods as functions | 18:31 | |
we certainly didn't borrow any of the __FOO__ crud underneath | |||
perlpilot | aye. | 18:32 | |
RabidGravy | yeah I find all that really offputting in python programs | ||
18:32
khisanth_ is now known as Khisanth
|
|||
TimToady | though to be sure, our BUILD is a little of the same idea | 18:33 | |
but arguably that's borrowed from all OO languages that separate init from construction | 18:34 | ||
18:37
vendethiel joined
|
|||
RabidGravy | is anyone who is more au fait with the MoarVM IO stuff able to think of a reason why a program that uses IO::Socket::Async and some native binding to something that does its own network thing hang up trying to read from the sockets? | 18:40 | |
18:41
sufrostico joined
|
|||
vendethiel looks around | 18:41 | ||
Skarsnik | hm | 18:42 | |
timotimo tries parsing that sentence | |||
ah, you have something that does its own networking, and you have IO::S::A, and something hangs up? | |||
perlpilot | RabidGravy: they are trying to read from the same socket? | 18:43 | |
RabidGravy | specifically I made a server thing initially to test Audio::Libshout and it just doesn't work, hangs up as soon as I try to use the data Supply of the connection | ||
well one is a server and one is a client | |||
timotimo | it should be fine to have different things, as long as it's theoretically compatible with running the same process as something with libuv | 18:44 | |
RabidGravy | and doing similar when both sockets are managed by Perl 6 is fune | ||
fine | |||
18:45
ely-se joined,
lizmat joined
|
|||
RabidGravy | so currently I am running them in separate processes | 18:45 | |
lizmat | good *, #perl6! | 18:47 | |
sevvie | salud! | ||
18:48
ilbelkyr joined
|
|||
perlpilot | lizmat: greetings! How are you today? | 18:48 | |
lizmat | perlpilot o/ | ||
a little tired after a gruesome day of shopping :-) | 18:49 | ||
RabidGravy | *harsh* | ||
lizmat | yeah, life sucks :-) | ||
perlpilot | What did you buy? | 18:50 | |
18:50
zakharyas left
|
|||
lizmat | apart from some CD's and music magazines, 2 7" high CD cabinets made of cherry wood | 18:50 | |
(7 feet) | |||
perlpilot | you know ... CDs will soon be obsolete ;) | ||
lizmat | not in my CD room they won't :-) | 18:51 | |
RabidGravy | we took the majority of our CDs out of their cases and put them in folders | ||
throwing the cases away | |||
perlpilot | yeah, my wife still has a box of cassette tapes with music she bought or recorded in the late 1980s to 1990s | 18:52 | |
lizmat | yeah, you can do that | ||
perlpilot: no 8-tracks ? | |||
perlpilot | nope | ||
lizmat | two years ago I bought one with the Moody Blues - Days of the future passed | 18:53 | |
just for the heck of it :-) I don't have a player | |||
RabidGravy | there are crates of vinyl LPs here, but to be fair I also have a shelf of U-Matic video tapes and a bunch of super 8 film | ||
perlpilot | though, a friend of mine who died a couple of years ago still had some music on reel-to-reel | ||
lizmat | wow | 18:54 | |
18:54
kjs_ joined
|
|||
RabidGravy | I've got reel to reel tapes (Infact I have at least one 1" video tape somewhere) | 18:55 | |
lizmat | .tell jnthn What do you think of putting named parameters always in alphabetical order in the Signature.params list ? | ||
yoleaux | lizmat: I'll pass your message to jnthn. | ||
RabidGravy | media hoarding | ||
lizmat | .tell jnthn It would greatly simplify the signature matching logic | ||
yoleaux | lizmat: I'll pass your message to jnthn. | ||
jnthn | lizmat: You can't 'cus it'd hose up defaults that rely on earlier nameds | 18:56 | |
yoleaux | 18:55Z <lizmat> jnthn: What do you think of putting named parameters always in alphabetical order in the Signature.params list ? | ||
18:55Z <lizmat> jnthn: It would greatly simplify the signature matching logic | |||
jnthn | sub foo(:$pub, :$bar = $pub) { } | 18:57 | |
lizmat | ah, duh... ok | ||
jnthn | where constraints also | ||
lizmat | yeah, I hear you | ||
m: role A { multi method a($a) {} }; role B { multi method a($a) {} }; class C does A does B {} # this appears correct, spotted at compile time | 18:59 | ||
camelia | rakudo-moar 855de7: OUTPUT«5===SORRY!5=== Error while compiling /tmp/xpKYSih3Z0Multi method 'a' with signature :(C $: $a, *%_) must be resolved by class C because it exists in multiple roles (B, A)at /tmp/xpKYSih3Z0:1» | ||
lizmat | m: role A { multi method a($a) {} }; role B { multi method a($b) {} }; class C does A does B {} | 19:00 | |
camelia | ( no output ) | ||
lizmat | jnthn: ^^^ appears wrong to me, because the name of a positional shouldn't matter, right ? | ||
m: role A { multi method a($a) {} }; role B { multi method a($b) {} }; class C does A does B {}; C.new' | 19:01 | ||
camelia | rakudo-moar 855de7: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Z2hu04p1r8Two terms in a rowat /tmp/Z2hu04p1r8:1------> 3b) {} }; class C does A does B {}; C.new7⏏5' expecting any of: infix infix stopper statement end …» | ||
lizmat | m: role A { multi method a($a) {} }; role B { multi method a($b) {} }; class C does A does B {}; C.new | ||
camelia | ( no output ) | ||
lizmat | m: role A { multi method a($a) {} }; role B { multi method a($b) {} }; class C does A does B {}; C.new.a | ||
camelia | rakudo-moar 855de7: OUTPUT«Cannot call a(C: ); none of these signatures match: (C $: $b, *%_) (C $: $a, *%_) in block <unit> at /tmp/MYlgY7VVXH line 1» | ||
jnthn | lizmat: Yeah, eqv is a little over-strong in places... | ||
lizmat | ok, yeah, I'm fixing that mess... | ||
punning Buf is already down to .025 seconds instead of .32 seconds | |||
for me :-) | 19:02 | ||
jnthn | It was one of the last changes that went in before the release... | ||
Oh, nice :) | |||
lizmat | I just need to do the named params logic.. :-) | ||
19:02
FROGGS joined
|
|||
dalek | c: 84e80fa | jjatria++ | doc/Language/regexes.pod: Added missing adverb to regex pod |
19:02 | |
c: 3c0da4f | jjatria++ | doc/Language/regexes.pod: Removed whitespace warning from regex example |
|||
c: b4dec1e | jjatria++ | doc/Language/regexes.pod: More consistent true/false comments in regex pod |
|||
c: b8837d2 | jjatria++ | doc/Language/regexes.pod: Added missing output comment in regex pod |
|||
c: 7d40fbf | jjatria++ | doc/Language/regexes.pod: More consistent use of so instead of Bool in regex examples |
|||
c: 997e03d | (Zoffix Znet)++ | doc/Language/regexes.pod: Merge pull request #406 from jjatria/regex-missing-adverb Improved consistency and formatting of examples in regex pod |
|||
perlpilot | lizmat++ | ||
timotimo | lizmat: damn, awesome! | ||
19:03
espadrine left
|
|||
partly_ | module Foo::Bar { sub f() is export {} }; my \module = Foo::Bar; say \module::.keys.gist; say \module::EXPORT::.keys.gist; | 19:03 | |
m: module Foo::Bar { sub f() is export {} }; my \module = Foo::Bar; say \module::.keys.gist; say \module::EXPORT::.keys.gist; | |||
camelia | rakudo-moar 855de7: OUTPUT«\({:EXPORT(EXPORT)})Could not find symbol '&EXPORT' in block <unit> at /tmp/xa0YwDB7qp line 1Actually thrown at: in block <unit> at /tmp/xa0YwDB7qp line 1» | ||
jnthn wonders if his inlining and accessor improvements yesterday will show up in the next Text::CSV numbers... :) | |||
partly_ | m: module Foo::Bar { sub f() is export {} }; my \module = Foo::Bar; say $module::.keys.gist; say $module::EXPORT::.keys.gist; | 19:04 | |
camelia | rakudo-moar 855de7: OUTPUT«5===SORRY!5=== Error while compiling /tmp/TCZ_9mXYPPVariable '$module' is not declared. Did you mean 'module'?at /tmp/TCZ_9mXYPP:1------> 3export {} }; my \module = Foo::Bar; say 7⏏5$module::.keys.gist; say $module::EXPORT» | ||
partly_ | Hmm i think i still misundestand the whole adressing issue. How is \module::EXPORT different from Foo::Bar::EXPORT? | 19:05 | |
m: module Foo::Bar { sub f() is export {} }; say Foo::Bar::EXPORT::.keys.perl; | |||
camelia | rakudo-moar 855de7: OUTPUT«("DEFAULT", "ALL").Seq» | ||
partly_ | do i need to escape somehow \module? | 19:06 | |
timotimo | the \ is only for declarating | ||
er, declaring | |||
it means the name (without the \ ) will be the name. it'll be sigil-less, so to say | 19:07 | ||
partly_ | m: module Foo::Bar { sub f() is export {} }; my \module = Foo::Bar; say \module::.keys.gist; say module::EXPORT::.keys.gist; | ||
camelia | rakudo-moar 855de7: OUTPUT«\({:EXPORT(EXPORT)})Could not find symbol '&EXPORT' in block <unit> at /tmp/yg_qo8HyXz line 1Actually thrown at: in block <unit> at /tmp/yg_qo8HyXz line 1» | ||
partly_ | m: module Foo::Bar { sub f() is export {} }; my \module = Foo::Bar; say module::.keys.gist; say module::EXPORT::.keys.gist; | 19:09 | |
camelia | rakudo-moar 855de7: OUTPUT«(EXPORT)Could not find symbol '&EXPORT' in block <unit> at /tmp/BeoBTBKNYz line 1Actually thrown at: in block <unit> at /tmp/BeoBTBKNYz line 1» | ||
partly_ | m: module Foo::Bar { sub f() is export {} }; my \module = Foo::Bar; say module::.keys.gist;; | ||
camelia | rakudo-moar 855de7: OUTPUT«(EXPORT)» | ||
partly_ | So what would be the right way to access EXPORT? ::EXPORT seems not to work | 19:10 | |
lizmat | m: role A { multi method a(Int(Any) $a) {} }; role B { multi method a(Int(Cool) $a) {} }; class C does A does B {}; C.new.a(42) | 19:11 | |
camelia | rakudo-moar 855de7: OUTPUT«Ambiguous call to 'a'; these signatures all match::(C $: Cool $a, *%_):(C $: $a, *%_) in block <unit> at /tmp/x3j4QFNdhY line 1» | ||
lizmat | jnthn: shouldn't this be caught at compile time ? | ||
aka, looks to me the coercion method should not be part of the equation | 19:12 | ||
perlpilot | partly_: you may have found a bug. | 19:13 | |
19:14
vendethiel left,
kjs_ left
|
|||
perlpilot | partly_: See gist.github.com/perlpilot/018013c0766796b92893 | 19:15 | |
Hotkeys | What up home diggity dogs | 19:16 | |
jnthn | lizmat: Hmm, that's a tricky one :) | 19:17 | |
19:17
zpmorgan joined
|
|||
lizmat | yeah, I figured out just now: I mean, the method could do anything really, just like the post-constraint | 19:18 | |
19:18
vendethiel joined
|
|||
partly_ | perlpilot: i can reproduce it, but in source code it does not work | 19:18 | |
Could not find symbol &EXPORT. gist.github.com/kalkin/b99521c75c1cf37cd445 | 19:19 | ||
line 9 throws the error | |||
jnthn | lizmat: I can figure out what's going on, I guess...I'm not feeling smart enough to work out what to do with it though :) | 19:22 | |
lizmat: I think the ambiguity is because it inserts multis with coercion types into the candidate list twice, once at the Int level and once at the Cool/Any level. And the Int ones conflict with 'emselves. | 19:23 | ||
lizmat | so, maybe the coercion shouldn't be part of the check when merging roles? | ||
19:23
sufrostico left
|
|||
lizmat | so that it would catch it at role merge time ? | 19:24 | |
jnthn | It's not that simple, though? | 19:25 | |
lizmat | isn't it? | ||
19:25
sufrostico joined
|
|||
jnthn | Wouldn't it produce false positives? | 19:26 | |
I think maybe this is DIHWIDT territory. | |||
19:27
prammer left
|
|||
jnthn | I can certainly see us wanitng eqv for signatures being something other than "they .perl the same" | 19:27 | |
*wanting | |||
lizmat | jnthn: that's what I'm working on | ||
jnthn | But I think we don't want the rules to get too involved :) | ||
lizmat | and the same for eqv parameters | ||
19:28
dwarring joined
|
|||
jnthn | The trouble with ruling the above "the same" and so getting a conflict, is that you'd allow a role with a requirement of Int(Any) to be satisfied by implementing an Int(Cool) | 19:29 | |
Which of course won't work out well | |||
19:29
prammer joined
|
|||
jnthn | uh, and so catching the conflict | 19:29 | |
19:31
ely-se left
|
|||
lizmat | ok, so you're saying the coerce_type should be part of the eqv check? | 19:32 | |
for Parameters? | |||
jnthn | lizmat: I'm saying it should be as it is now result wise | ||
19:33
xxpor_ left
|
|||
jnthn | That is, both the inside and outside should be the same | 19:33 | |
So Int(Any) eqv Int(Any) is true | |||
Int(Any) eqv Int(Cool) is not | |||
So, we won't catch the one you mentioned at compile time...that'll have to go to runtime, I think. | |||
'cus otherwise we break requirement implementation | |||
19:34
sufrostico left
19:35
sufrostico joined
19:36
cdg left
|
|||
partly_ | should i open a bug against rakudo/rakudo? | 19:38 | |
Skarsnik | [email@hidden.address] | ||
19:38
prammer left
|
|||
lizmat | jnthn: that seems to contradicting? | 19:43 | |
so, Parameter eqv Parameter should give different values depending on compile vs runtime ?? | |||
19:44
labster joined
19:45
prammer joined
19:46
xxpor joined
19:47
prammer left
19:54
zpmorgan left,
Praise- is now known as Praise
19:57
labster left
19:58
kjs_ joined
20:06
musiKk_ joined
|
|||
jnthn | lizmat: I don't see any contradiction? :) | 20:07 | |
lizmat: I'm simply saying that the semantics of coercion type comparison in eqv should require the inner and outer to both match exactly | |||
lizmat: And that we can't both solve the problem you noted, *and* not create another one | |||
lizmat | ok | 20:08 | |
jnthn | (And was trying to explain what problem we'd make... :)) | 20:09 | |
20:09
TimToady left
|
|||
jnthn | We actually probably *can* catch the ambiguity you mentioned at compile time, but it'd fall out of a more general multi-dispatch ambiguity compile-time analysis. | 20:11 | |
Rather than something we can sensibly solve within the realm of eqv's semantics. | 20:12 | ||
m: multi a(Int) { }; multi a(Int) { } | |||
camelia | ( no output ) | ||
jnthn | We don't even catch that at compile-time yet | ||
20:14
TimToady joined
|
|||
nine_ | I slowly get the impression that I can spend the whole 20 minutes of my module management talk talking about the requirements we try to fulfill. | 20:14 | |
jnthn | Heh. "Why module management is harder than you think" : | 20:15 | |
:) | |||
nine_ | Would be a very fitting title ;) | ||
arnsholt | There was a "So, you're making a module ecosystem tool" post linked on HN a while back | 20:17 | |
It made much the same point, initially =) | |||
nine_ | arnsholt: I've read that :) | ||
And quite ironically I complained about that post being too elaborate and the author babbling and cursing. And here I am at 767 words before I even start talking about solutions... | 20:18 | ||
jdv79 | what is your talk for? | 20:19 | |
jnthn | How much is cursing? :) | 20:20 | |
nine_ | German Perl Workshop | ||
jnthn | Cool, German cursing! | ||
sjn | german cursing is pretty awesome | ||
oh, and hi, #perl6 :) | |||
jnthn | .oO( When I said cursive writing, this was not what I meant... ) |
20:21 | |
nine_ | Yeah it would be the appropriate language. Alas I'll give the talk in English because I just can't stand talking about coding in German. It ends up being all English with German linking words. | 20:22 | |
arnsholt | Yeah, I've pretty much given up trying to use Norwegian words for programming | 20:24 | |
All of the technical vocab is English, so let's just go with that | |||
20:24
kurahaupo joined
|
|||
sjn | Best german general curseword: WELTSCHMERZ! | 20:25 | |
huf | that's a curse? really? | ||
arnsholt | Not really, I think =) | ||
nine_ | No I wouldn't characterize it as one. | ||
sjn | depends on how loud you shout it while waving your fist at the world in general | 20:26 | |
huf | well okay. | ||
but in that case, bucket is a swear word too | |||
sjn | yep :) | 20:27 | |
nine_ is gonna start using it as a curse from now on | |||
20:27
domidumont left
20:28
darutoko left
|
|||
nine_ | Though my favourite will probably always be "Himmel Herrgott Kreuz Sakarament" which really is just "heaven Lord cross sacrament", i.e. completely innocent words (as far as cursing goes), yet have the perfect swearing sound when shouted. | 20:29 | |
huf | herrgott does look very pretty | 20:30 | |
sjn | my %førrbainna-hællvettes-mainnskit = %*ENV{@CGI-variables}; # Norwegian variables for arnsholt | ||
20:31
labster joined
|
|||
jnthn | CGI is a pretty strong curse word... | 20:32 | |
sjn is very proud to have used sensible variable names in that example :) | 20:33 | ||
20:35
Herby_ joined
|
|||
Herby_ | \o | 20:37 | |
RabidGravy | is .WHICH sufficiently unique to use it to grep a list of objects of the same type? | 20:41 | |
lizmat | it should be | ||
20:43
prammer joined
|
|||
RabidGravy | actually thinking about it I may make it a hash key and just pretend to the rest of the world its a list | 20:43 | |
but the same applies :) | |||
nine_ | RabidGravy: Sets? | 20:44 | |
20:44
rindolf left
|
|||
RabidGravy | sets? | 20:44 | |
nine_ | collections of unique items. Just sounds like what you need and what Perl 6 has :) | 20:45 | |
20:46
spider-mario joined
|
|||
lizmat | m: dd (1,2,3).set | 20:48 | |
camelia | rakudo-moar 855de7: OUTPUT«Method 'set' not found for invocant of class 'List' in block <unit> at /tmp/NuXlO2jlNo line 1» | ||
lizmat | m: dd (1,2,3).Set | ||
camelia | rakudo-moar 855de7: OUTPUT«set(3,1,2)» | ||
nine_ | m: dd (1,2,3,2,1).Set | ||
camelia | rakudo-moar 855de7: OUTPUT«set(3,1,2)» | ||
lizmat | RabidGravy: note that they're not strings, but Ints | ||
m: dd (1,2,3).Set.keys | |||
camelia | rakudo-moar 855de7: OUTPUT«(3, 1, 2).Seq» | ||
RabidGravy | Oh I see, I'm pretty certain that a hash is going to work here | 20:49 | |
the circumstances preclude any chance of duplicate anyway | |||
20:52
rindolf joined,
sergot_ is now known as sergot
20:54
jjido joined
20:55
jjido left
|
|||
RabidGravy | for reference the code does something like " %!outputs{$output.WHICH} = $output; ... $output.finished-promise.then({%!outputs{$output.WHICH}:delete;});" | 20:56 | |
by the time I've finished with this it probably will only run on a squillion core computer but hey | 20:58 | ||
lizmat | RabidGravy: I would advise against using .WHICH as a key... | ||
I know we use that for objects hashes, but it's because we don't have anything better yet | |||
creating a .WHICH of an object can be *very* expensive... | 20:59 | ||
RabidGravy | right | ||
but so is making a proper UUID | |||
21:02
cdg joined
|
|||
lizmat | I guess... | 21:02 | |
RabidGravy | is it calculated every time it is called? | 21:06 | |
I know I could look at the code | |||
right, calculated every time, take it early and close over it | 21:10 | ||
21:10
sortiz joined,
telex left
|
|||
RabidGravy | the "throttling" on new outputs can be an, er, feature ;-) | 21:10 | |
lizmat | RabidGravy: if it's a value type and complex, it's usually only done once on demand, like Set/Bag/Mix | ||
21:11
telex joined
21:14
sufrostico left
21:18
dj_goku joined
21:22
tweakism joined
|
|||
tweakism | what's the general state of perl6 and what does the future look like | 21:22 | |
for someone who once lived and breathed perl5 but has drifted away from the community | 21:23 | ||
perlpilot | tweakism: The future's so bright, I gotta wear shades. :) | 21:24 | |
Skarsnik | still not that much user I think x) | ||
tweakism | haha, also, did the camel really give way to this butterfly? | 21:25 | |
perlpilot | tweakism: The camel was just the larval state of the butterfly | 21:26 | |
tweakism | it has Clippy's eyes *shudder* | ||
mst | tweakism: the camel is an ORA-ism anyway | ||
tweakism: perl5's mascot is the velociraptor | |||
tweakism | larry wrote the ORA book, and every code example involved camels. | 21:27 | |
mst | tweakism: and if you left perl5 before the arrival of Moose, you're going to suddenly discover that both perls are more awesome than you could ever have imagined. | ||
perlpilot | tweakism: yeah ... how long has it been since you lived and breatherd perl 5? | ||
er, breathed even | 21:28 | ||
mst | long enough to not know that State of the Velociraptor has been a thing and that the name comes from a Larry quote, apparently | ||
tweakism | I dunno, 10 years? maybe less. | ||
mst | right. you've missed a *lot* of fun stuff then | ||
tweakism | like what? throw me some links :) | 21:29 | |
mst | notably the fact that perl5 now has demonstrably better OO than python/ruby/etc. because Moose and the perl6 metamodel have basically kept stealing things off each other | ||
21:30
Herby_ left
|
|||
perlpilot | tweakism: luckily you don't have to live through the missteps that got us where we are today :) | 21:30 | |
21:30
themonkeybob11 left
|
|||
mst | tweakism: or: Moose/Moo are the nicest OO system I've ever used in production. perl6's OO is even better. | 21:31 | |
sortiz | \o | ||
mst | and, er, if you want to see what's been going on in perl5 land | ||
the State of the Velociraptor talks I've given are probably not a bad summary over the years | |||
21:32
kaare__ left
|
|||
tweakism | my drifting has been entirely due to outside pressure | 21:33 | |
21:33
Skarsnik left
|
|||
tweakism | and it stabs at my heart when people say silly, mean things about perl | 21:33 | |
perlpilot | tweakism: It's important to note that Perl 5 and Perl 6 are separate, sister languages. | ||
tweakism | yeah, I figured that. wasn't perl6 supposed to be like, a vm separate from the actual syntax, or something like that. | 21:34 | |
perlpilot | tweakism: Perl 6 runs on top of a VM, yes. | 21:35 | |
tweakism: And "Perl 6" is a language spec rather than a particular implementation. | |||
nine_ | Actually, it's fair to say that Perl 6 is a test suite ;) | 21:36 | |
tweakism | the camel book was very good at, in addition to the syntax and interfaces, giving a quick overview of the why and the implementation, and sometimes the history. and also amusing, with interesting anecdotes. and it made it so easy to read, and remember stuff from. | ||
I've never found anything similiarly useful to me for any other language. | |||
perlpilot | If you haven't used Perl in 10ish years ... then the last Perl you used was 5.8? | 21:37 | |
tweakism | that sounds right. | ||
mst | tweakism: perl5's syntax is less set in stone than it used to be | ||
tweakism | or maybe 5.10 but I don't think I was still developing perl then. | ||
mst | tweakism: I wrote a horrible hack called Devel::Declare that embarassed p5p into adding pluggable keywords | 21:38 | |
tweakism: so you get things like p3rl.org/Moops | |||
21:38
themonkeybob11 joined
21:39
kurahaupo left
|
|||
tweakism | heh that is indeed very different | 21:39 | |
perlpilot | and even though Moops claims to be "unstable", we'er using it in production at $work :-) | 21:40 | |
21:42
sevvie left
21:43
themonkeybob11 left,
themonkeybob11 joined
21:44
rindolf left
|
|||
tweakism | welp, thanks for the pointers. I'll stick around in case you think of anything else cool to share. | 21:45 | |
perlpilot | imgur.com/gallery/mkbTX is pretty cool | 21:47 | |
tweakism is pleasantly surprised that this isn't more triggering images of Clippy-like insects. | 21:48 | ||
perlpilot | tweakism: if you want to learn perl 6, see perl6.org/documentation/ for some useful stuff. Particularly check out Rosettacode if you want a side-by-side comparison with other languages. | 21:54 | |
21:54
musiKk_ left
21:57
skids left
22:03
bjz joined
22:05
bjz_ left
|
|||
RabidGravy | anyway, my fully abstracted streaming server experiment is still able to stream at 320kbps with three supplies in the chain :) So all good. | 22:08 | |
22:09
rudi_s left
|
|||
RabidGravy | that is IO::Socket::Async.Supply(:bin) -> Source.supplier -> Source.supply -> Output.supplier -> Output.supply -> IO::Socket::Async.write | 22:10 | |
keeping mplayer's cache filled to about 15% which is the same as proper icecast | |||
jnthn | RabidGravy: Nice! Really awesome to see supplies being used for such stuff. :) | 22:11 | |
22:12
jjido joined,
rudi_s joined
|
|||
jnthn | Curious there's quite a few suppliers in the chain; I usually try to build stuff out of supply blocks | 22:12 | |
Or other supply combinators | |||
RabidGravy | still fiddling with the internal design, but at least one of the suppliers needs to be exposed as the "Mount" emits whatever it getsfrom the Source supply to all the Output suppliers | 22:16 | |
perlpilot | RabidGravy: Are you doing a talk on this thing at YAPC or something? | ||
RabidGravy | nah, haven't done any conferences for ten years | 22:17 | |
22:18
themonkeybob11 left
|
|||
perlpilot | blog post? | 22:18 | |
22:20
bjz left
22:21
TEttinger joined
22:24
SCHAAP137 left
|
|||
jnthn | 'night, #perl6 | 22:26 | |
RabidGravy | well, it still has to support source authentication nicely and check that a mount isn't being used before attaching a source to it to be at least feature compatible with icecast | ||
mst | RabidGravy: pretty sure the last time I had beer in the pub at lunch with you was -slightly- less than 10 years ago | ||
maybe 8 though | |||
mst feels old | |||
RabidGravy | but I have bigger plans | 22:27 | |
very possibly | |||
22:28
vendethiel left
|
|||
partly_ | Hmm I get message rejected if i try to send a bug report to [email@hidden.address] | 22:30 | |
perlpilot | partly_: [email@hidden.address] | ||
partly_ | ahh ic | 22:31 | |
thanks | |||
perlpilot | Though, I'd say it's a bug that [email@hidden.address] doesn't get to the right place. :-) | 22:32 | |
mst | perl6.org mail exchanger = 50 mailtest2.pair.com. | 22:34 | |
22:35
idiosyncrat_ joined,
kjs_ left
|
|||
Hotkeys | maybe submit a bug report to-- oh | 22:35 | |
22:37
tardisx joined
22:40
cpage__ left
22:41
tardisx left
22:43
espadrine joined
22:45
bjz joined
22:47
jjido left,
tardisx joined
22:49
tardisx left
22:50
tardisx joined
22:53
bjz left
22:55
AlexDaniel joined
|
|||
AlexDaniel | m: say ‘WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW’.comb(/(.)$0+/).map: {.comb[0] ~ .chars} | 22:55 | |
camelia | rakudo-moar 855de7: OUTPUT«(W12 W12 B3 W24 W14)» | ||
AlexDaniel | too bad you can't replace .comb[0] with $0 | 22:56 | |
23:05
cpage__ joined
|
|||
AlexDaniel | m: ‘WWWWWWWWWWWWBWWWWWWWWWWWWBBBWWWWWWWWWWWWWWWWWWWWWWWWBWWWWWWWWWWWWWW’ ~~ m:g/((.)$0+) {print $0.chars,$0[0]}/; say ‘’ | 23:06 | |
camelia | rakudo-moar 855de7: OUTPUT«12W12W3B24W14W» | ||
AlexDaniel | ah | ||
23:06
FROGGS left
|
|||
AlexDaniel | m: say gather { ‘WWWWWWWWWWWWBWWWWW’ ~~ m:g/((.)$0+) {take $0.chars,$0[0]}/ } | 23:08 | |
camelia | rakudo-moar 855de7: OUTPUT«((12 「W」))» | ||
AlexDaniel | what am I doing wrong here? | ||
or why it doesn't work? | |||
23:09
espadrine left
|
|||
TimToady | use $0* instead of $*+ | 23:10 | |
$0+ | |||
AlexDaniel | m: say gather { ‘WWWWWWWWWWWWBWWWWW’ ~~ m:g/((.)$0*) {take $0.chars,$0[0]}/ } | 23:11 | |
camelia | rakudo-moar 855de7: OUTPUT«((12 「W」))» | ||
TimToady | hmm | ||
AlexDaniel | you're right, but there's a problem with gather | ||
m: say gather { ‘abc’ ~~ m:g/(.) {take $0}/ } | 23:12 | ||
camelia | rakudo-moar 855de7: OUTPUT«(「a」)» | ||
AlexDaniel | m: ‘abc’ ~~ m:g/(.) {say $0}/ | 23:13 | |
TimToady | m: say gather { ‘WWWWWWWWWWWWBWWWWW’ ~~ m:g/((.)$1*) {take $0.chars,$0[0]}/ } | ||
camelia | rakudo-moar 855de7: OUTPUT«「a」「b」「c」» | ||
rakudo-moar 855de7: OUTPUT«((1 「W」))» | |||
AlexDaniel | TimToady: so, is it a bug? | 23:15 | |
TimToady | m: say (‘WWWWWWWWWWWWBWWWWW’ ~~ m:g/((.){}$0*)/).perl | 23:22 | |
camelia | rakudo-moar 855de7: OUTPUT«(Match.new(ast => Any, list => (Match.new(ast => Any, list => (Match.new(ast => Any, list => (), hash => Map.new(()), orig => "WWWWWWWWWWWWBWWWWW", to => 1, from => 0),), hash => Map.new(()), orig => "WWWWWWWWWWWWBWWWWW", to => 12, from => 0),), hash => Ma…» | ||
TimToady | m: say (‘WWWWWWWWWWWWBWWWWW’ ~~ m:g/((.){}$0*)/)[1].perl | ||
camelia | rakudo-moar 855de7: OUTPUT«Match.new(ast => Any, list => (Match.new(ast => Any, list => (Match.new(ast => Any, list => (), hash => Map.new(()), orig => "WWWWWWWWWWWWBWWWWW", to => 13, from => 12),), hash => Map.new(()), orig => "WWWWWWWWWWWWBWWWWW", to => 13, from => 12),), hash => …» | ||
TimToady | m: say (‘WWWWWWWWWWWWBWWWWW’ ~~ m:g/((.){}$0*)/)[2].perl | ||
camelia | rakudo-moar 855de7: OUTPUT«Match.new(ast => Any, list => (Match.new(ast => Any, list => (Match.new(ast => Any, list => (), hash => Map.new(()), orig => "WWWWWWWWWWWWBWWWWW", to => 14, from => 13),), hash => Map.new(()), orig => "WWWWWWWWWWWWBWWWWW", to => 18, from => 13),), hash => …» | ||
TimToady | seems kinda like a bug | ||
23:25
zacts joined
|
|||
AlexDaniel | too tired to understand this. I'll probably try to submit it tomorrow | 23:26 | |
TimToady | m: say gather ‘WWWWWWWWWWWWBWWWWW’ ~~ / ( ((.)$0*) { take $0.chars,$0[0]} )* / | 23:29 | |
camelia | rakudo-moar 855de7: OUTPUT«((12 「W」) (1 「B」) (5 「W」))» | ||
TimToady | seems to lose the :g | ||
AlexDaniel | m: say gather ‘bc’ ~~ m/(.)+ {take ‘X’} ‘c’ / | 23:34 | |
camelia | rakudo-moar 855de7: OUTPUT«(X X)» | ||
AlexDaniel | backtracking is still there | ||
m: say gather ‘bc’ ~~ m:ex/ .+? {take ‘X’} / | 23:36 | ||
camelia | rakudo-moar 855de7: OUTPUT«(X)» | ||
AlexDaniel | m: say gather ‘bc’ ~~ m:ex/ .+? {say ‘X’} / | ||
camelia | rakudo-moar 855de7: OUTPUT«XXX()» | ||
AlexDaniel | exhaustive is broken too | 23:37 | |
tweakism | this is off-topic, but I might get an actual worthwhile response here: Please link me to any tools you find particularly useful, relating to Unicode. Including character maps/finders, tools for querying unicodedata, other databases from 3rd parties, libraries for perl or other languages, etc. Wide net. (incidentally, also interested in tools etc. for XCompose, XKB, or fonts including font | ||
managers/pickers.) | |||
23:37
tmch left
|
|||
AlexDaniel | tweakism: wow! May I ask why? :) | 23:37 | |
lizmat | good night, #perl6! | ||
23:37
lizmat left
|
|||
AlexDaniel | tweakism: well, most of the time I use perl6… like: | 23:39 | |
m: ‘π’.uniname.say | |||
camelia | rakudo-moar 855de7: OUTPUT«GREEK SMALL LETTER PI» | ||
AlexDaniel | m: ‘π’.uniprop.say | ||
camelia | rakudo-moar 855de7: OUTPUT«Ll» | ||
AlexDaniel | or if you want to find something | ||
tweakism | AlexDaniel: no one needs to put any effort into *finding* stuff like that or anything; just looking for pointers to things other people already find super-useful. | ||
AlexDaniel | m: say [~] (0..0x1FFFF ==> grep { .uniprop eq ‘Mn’ })».chr | 23:40 | |
camelia | rakudo-moar 855de7: OUTPUT«…» | ||
tweakism | for character map/finder/info app, it seems like something that would exist in a nice form, but all the ones I have tried kindof suck in one way or another. | ||
AlexDaniel | camelia: meh, you could've done better :) | ||
tweakism | and the bot is cool, but a local solution would be more useful :) (although websites that have great interfaces are OK to recommend.) | ||
AlexDaniel | tweakism: if I can't hack it with perl6 I usually use www.fileformat.info/info/unicode/char/search.htm | ||
tweakism | oh, I suppose you weren't telling me to ask the bot, you were pointing out I could use perl. | 23:41 | |
AlexDaniel | tweakism: no doubt you can run perl6 locally? :) | ||
23:42
jjido joined
23:43
RabidGravy left
|
|||
AlexDaniel | tweakism: this is a good resource for entering unicode characters: doc.perl6.org/language/unicode_entry | 23:43 | |
23:44
Celelibi left,
kid51 joined
|
|||
AlexDaniel | tweakism: this is a cool post too: perl6advent.wordpress.com/2015/12/...6-and-you/ | 23:45 | |
tweakism: sorry for too much Perl 6 propaganda but what did you expect :) | 23:46 | ||
tweakism | these are pretty perfect | ||
and way better than anything else from anywhere else including #unicode | |||
AlexDaniel | I do that kind of stuff all the time: | 23:48 | |
m: say [~] (0..0x1FFFF ==> grep { .uniname ~~ /GRAVE/ })».chr | |||
camelia | rakudo-moar 855de7: OUTPUT«`ÀÈÌÒÙàèìòùǛǜǸǹȀȁȄȅȈȉȌȍȐȑȔȕˋˎ˴˵̖̀̏̀ЀЍѐѝѶѷ॓ᐠ᷀᷅᷆᷈᷉ḔḕṐṑẀẁẦầẰằỀềỒồỜờỪừỲỳ⛼`𛲂𛲃𛲒𛲓» | ||
tweakism | "The .codes method returns the number of codepoints in the string, while .chars returns the number of characters (aka graphemes)" ... this sounds heavenly. | ||
did you mean 0x10ffff? :) | 23:49 | ||
or did you do that on purpose | |||
AlexDaniel | tweakism: that is going to run for a little longer… :) | ||
tweakism: and usually there is nothing interesting there | |||
23:49
Celelibi joined
|
|||
AlexDaniel | if there is anything at all? :) let's see | 23:50 | |
tweakism | well then did you check the 1st supp plane on purpose? | ||
AlexDaniel | m: say [~] (0x1FFFF..0x10FFFF })».chr | ||
camelia | rakudo-moar 855de7: OUTPUT«5===SORRY!5=== Error while compiling /tmp/vuSMYRf1I1Unable to parse expression in parenthesized expression; couldn't find final ')' at /tmp/vuSMYRf1I1:1------> 3say [~] (0x1FFFF..0x10FFFF 7⏏5})».chr expecting any of: sta…» | ||
AlexDaniel | m: say [~] (0x1FFFF..0x10FFFF)».chr | 23:51 | |
tweakism | heh that does take a bit longer. | ||
AlexDaniel | yup | ||
camelia | rakudo-moar 855de7: OUTPUT«(timeout)» | ||
timotimo | AlexDaniel: may i recommend Uni.new? | ||
AlexDaniel | timotimo: sure! What do you mean by that? :) | ||
timotimo | m: say Uni.new(0x1FFF..0x10FFF) | 23:52 | |
AlexDaniel | woah | ||
camelia | rakudo-moar 855de7: OUTPUT«Uni:0x<1fff 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 200a 200b 200c 200d 200e 200f 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 201a 201b 201c 201d 201e 201f 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 202a 202b 202c 202d 202e 202f 2030…» | ||
timotimo | what's the method to turn a Uni into a Str? | ||
well, that doesn't help :) | |||
m: say Uni.new(0x1FFF..0x10FFF).Str | |||
camelia | rakudo-moar 855de7: OUTPUT«(signal SEGV)» | ||
timotimo | hah | ||
AlexDaniel | :/ | ||
timotimo | that's not so good | ||
AlexDaniel | m: say ‘à̴̵̶̷̸̡̢̧̨̛̖̗̘̙̜̝̞̟̠̣̤̥̦̩̪̫̬̭̮̯̰̱̲̳̹̺̻̼͇͈͉͍͎́̂̃̄̅̆̇̈̉̊̋̌̍̎̏̐̑̒̓̔̽̾’.chars | ||
camelia | rakudo-moar 855de7: OUTPUT«1» | ||
AlexDaniel | tweakism: ↑ :) | ||
tweakism: guess which tool did I use to generate this: gist.github.com/AlexDaniel/0521bc38fe827bd7d37b | 23:53 | ||
geekosaur 's client rendered that as something resembling a mushroom cloud >.> | |||
23:54
zpmorgan joined
|
|||
AlexDaniel | geekosaur: at least it did not render that as vertical text… | 23:54 | |
tweakism | heh mine did not do much better | ||
23:55
themonkeybob11 joined,
konobi_ is now known as konobi
|
|||
AlexDaniel | huggable: unzalgo | 23:55 | |
huggable | AlexDaniel, irclog.perlgeek.de/perl6/2015-11-12#i_11522549 | ||
23:56
skids joined
|
|||
ugexe | sub foo() { supply { try { CATCH { when X::Proc::Unsuccessful { say 123; }; }; run "asdf"; emit(666) }; }; }; react { whenever foo() -> $s { say $s.perl; }; }; # prints `123`, but if `emit(666)` is removed it dies with an exception. Why? | 23:56 | |
AlexDaniel | m: say “pxCCx86xCCx84xCDx92xCDx9BxCCx81xCDx8AxCCx8BxCDxA3xCCxA2xCDxA2e͌͛̐ͨ̍ͬͮ̑̊͟r̅ͪ̌̑̾̄ͬ̈҉̨lxCCxBFxCDx8CxCDxA8xCCxBDxCCx82xCDx81xCCxA1xCCxA3xE2x80x8BxCCxA6xCCxB36xCCx8AxCDxA3xCDx8CxCDx8BxCDxA6xCDxA3xD2x89xCDx98xCCx9BxCDx93xE2x80x9D.comb.map(*.NFD[0].chr).join | ||
camelia | rakudo-moar 855de7: OUTPUT«perl̦6» | ||
AlexDaniel | hmmmmm there is one character left behind? | 23:57 | |
tweakism | what does that *. do | ||
AlexDaniel | m: say ‘perl̦6’.comb.map(*.NFD[0].chr).join | 23:58 | |
timotimo | m: say “p̆̄͒͛e͌͛̐ͨr̅ͪ̌̑l̿͌ͨ̽6̊ͣ͌͋”.comb.map(*.NFD[0].uniname) | ||
camelia | rakudo-moar 855de7: OUTPUT«perl̦6» | ||
rakudo-moar 855de7: OUTPUT«(LATIN SMALL LETTER P LATIN SMALL LETTER E LATIN SMALL LETTER R LATIN SMALL LETTER L DIGIT SIX)» | |||
23:58
AlexDaniel left,
bpmedley joined
|