»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by masak on 12 May 2015. |
|||
00:00
jack_rabbit joined
|
|||
TimToady | .tell jnthn I think it would be sanest if submethods do not compose like methods, but have some mechanism for getting themselves all called at the same time as the corresponding class submethod in either build-ish or destroy-ish order as pseudo-parents located between this class and its actuall parents | 00:19 | |
yoleaux | TimToady: I'll pass your message to jnthn. | ||
00:36
Akagi201 joined,
Akagi201 left,
Akagi201 joined
00:39
AlexDaniel left
00:41
aborazmeh joined,
aborazmeh left,
aborazmeh joined
00:44
beastd left
00:45
laouji joined
00:58
aborazmeh left
01:21
BenGoldberg joined
|
|||
ugexe | my $proc = Proc::Async.new("echo","foo","bar"); $proc.stdout.tap(-> $v { print "Output: $v" }); say "Starting..."; my $promise = $proc.start; await $promise; say "Done"; | 01:40 | |
01:41
smls left
|
|||
ugexe | a recent change appears to make that stuck in await | 01:41 | |
in the last 24-36 hours i would guess | 01:42 | ||
zostay | is there a way to interrupt a thread in P6? say to cause a long running operation to timeout? | 01:43 | |
as you might do with a SIGALRM in P5 | 01:44 | ||
TimToady | ugexe: Proc::Async has been unstable for a long time, but a recent change to avoid spinlocks has exposed some failure modes | 01:45 | |
ugexe | ah. im not sure what a failure mode is, but it looks like the Promise just stays as Planned | 01:47 | |
TimToady | zostay: we don't actually deal directly with threads much in P6; work gets assigned to worker threads as needed; if you want to interrupt the execution of a promise, you can interrogate a supply (such as the Signal supply) for async events | 01:48 | |
well, "interrogate" is the wrong word... | |||
ugexe: otoh, the restart-concurrent test seems to be hanging consistently now, so maybe you're onto something... | 01:50 | ||
zostay | ok... i think what i want to know is if i can cause a blocking read to exit with EINTR | ||
TimToady | dinner & | 01:51 | |
zostay | (or blocking write or whatever system like call) | ||
01:53
Sqirrel left
02:07
llfourn joined
|
|||
gagalicious | hi i'm a hard core perl5 programmer. is there anything i u guys would like to tell me what i am missing here on perl6 which i cant do on perl5? | 02:08 | |
skids | gagalicious: are you a Moo/Moose user in P5? | 02:12 | |
gagalicious | nope | ||
what's that? | |||
skids | It's a module that adds a lot of OO niceness. | 02:13 | |
So you are mostly a perl5 core user, then, right? | |||
TimToady | what kind of data do you deal with, mostly? | ||
certain kinds of math are a lot nicer in P6 | 02:14 | ||
m: say 1, 1, *+* ... * | |||
camelia | rakudo-moar c2a57e: OUTPUT«1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 70140873…» | ||
TimToady | like there's a fibonacci series | ||
m: say [*] 1..10 | 02:15 | ||
camelia | rakudo-moar c2a57e: OUTPUT«3628800» | ||
TimToady | there's 10 factorial | ||
02:15
yqt left
|
|||
TimToady | p6 arguably has better Unicode support now, if you're into text processing | 02:15 | |
skids | There are better control structures and loop handling. | 02:16 | |
gagalicious | yeah perl5 me | ||
TimToady | there's more "everything is an object", if you're into OO, and if you're not into OO, you can still pretend numbers aren't objects :) | ||
it's also easier to do functional programming, if you're into that | 02:17 | ||
gagalicious | better unicode? i havent come across any major issues in perl5 | ||
i dont really like the reliance on object too much.. not everything for sure. | 02:18 | ||
02:18
vendethiel joined
|
|||
TimToady | well, the main thing is the runtime is never confused about whether a string is text or binary in p6 | 02:18 | |
02:18
jack_rabbit left
|
|||
TimToady | whereas p5 can get confused about that | 02:18 | |
but p6 also has better support for languages that use lots of diacritics | 02:19 | ||
this shows up more outside the typical latin-1 langauges though | |||
skids | m: for flat ^5 Z "a".."d" -> $a, $b { "$a $b".say }; # multiple loop control variables are easy | 02:20 | |
camelia | rakudo-moar c2a57e: OUTPUT«0 a1 b2 c3 d» | ||
TimToady | and most USians say "What's with these fancy accents? Why can't people just ASCII like normal people?" | ||
*use ASCII | |||
so we wouldn't tend to notice the internationalization support | 02:21 | ||
gagalicious: you also don't have to memorize so many things, like which functions take $_ for a default | 02:22 | ||
skids | m: say gather while (++$ < 4) { "HERE".say; take 42; "THERE".say }; # You can take results from the middle of loops like this | 02:23 | |
camelia | rakudo-moar c2a57e: OUTPUT«HERETHEREHERETHEREHERETHERE42 42 42» | ||
TimToady | p5 has 15 or so magical symbols like STDOUT that span all packages | ||
in p6 global symbols are specially marked | 02:24 | ||
$*OUT instead of STDOUT | |||
so that's another list you don't have to remember | |||
02:24
kurahaupo joined
|
|||
TimToady | p6 also tends to have better error messages, generally | 02:25 | |
02:25
[Sno] joined
|
|||
raydiak | don't forget the way more awesomer regexes | 02:25 | |
skids | m: say <jack queen king> X~ "of" X~ <diamonds hearts> # it is very easy to generate all sorts of things | ||
camelia | rakudo-moar c2a57e: OUTPUT«jackofdiamonds jackofhearts queenofdiamonds queenofhearts kingofdiamonds kingofhearts» | ||
02:25
][Sno][ left
|
|||
TimToady | raydiak: that too :) | 02:25 | |
raydiak | and grammars | ||
TimToady | p6 has better extensibility | 02:26 | |
m: sub postfix:<!>($x) { [*] 2..$x }; say 42! | 02:27 | ||
camelia | rakudo-moar c2a57e: OUTPUT«1405006117752879898543142606244511569936384000000000» | ||
TimToady | so it's easy to write your own operators, like factorial there | ||
and you'll notice the precision doesn't max out at 32 or 64 bits | |||
decommute & | 02:28 | ||
skids | m: multi sub f ( $x where * > 5 ) { "LOTS".say }; multi sub f ($x where 1 < *) { $x.say }; f(6); f(4); f(0); # you can separate up those subs that do different things based on input, and also get good error messages for out-of-domain arguments | 02:32 | |
camelia | rakudo-moar c2a57e: OUTPUT«LOTS4Cannot call f(0); none of these signatures match: (Any $x where { ... }) (Any $x where { ... }) in block <unit> at /tmp/5vQilEsxZS:1» | ||
skids | gagalicious: you can use as much or as little type-checking as you want for you particular purpose | 02:33 | |
02:35
rmgk_ joined,
rmgk left,
rmgk_ is now known as rmgk
|
|||
gagalicious | i thought type check is supposed to speed up an app... but i heard perl6 is slower than perl5. is that right/ | 02:35 | |
i like perl5 coz there's no type checking in the first place... if only perl6 built in a type check optimizer.. that'll make it better. | 02:36 | ||
skids | gagalicious: Currently perl6 is slower than perl5 but faster mostly than perl5+Moose so it depends what features you need. P6 is much faster than it was a month ago and keeps getting faster. Some of that is because the type-checking optimizations are starting to get impleented. | 02:38 | |
02:38
noganex_ joined
|
|||
skids | gagalicious: one of the first things new P6 users notice is much better error messages that help you correct mistakes faster. | 02:40 | |
m: sub foobar { 1 }; fooobar(); | 02:41 | ||
camelia | rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/ZCULqCYlKQUndeclared routine: fooobar used at line 1. Did you mean 'foobar'?» | ||
02:41
noganex left,
kaare_ joined
02:42
vendethiel left
|
|||
skids | And you can use type checking to help you find errors before the code is actually run, if you like. | 02:44 | |
m: sub do_dangerous_thing( Int $x ) { say "DANGER!" }; do_dangerous_thing("foo"); | |||
camelia | rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/C1YqEaP_OdCalling do_dangerous_thing(str) will never work with declared signature (Int $x)at /tmp/C1YqEaP_Od:1------> 3rous_thing( Int $x ) { say "DANGER!" }; 7⏏5do_dangerous_thing("foo");» | ||
tony-o_ | is that color stuff new? | 02:47 | |
skids | Not super-new, did you change terminals/irc clients? | 02:48 | |
02:49
flaviusb joined
02:51
xargs joined
03:14
kurahaupo left
03:16
bin_005 joined,
xargs left
|
|||
zostay | m: Buf.new(0x31 .. 0x34) ~~ /2/ | 03:26 | |
camelia | rakudo-moar c2a57e: OUTPUT«Cannot use a Buf as a string, but you called the Str method on it in block <unit> at /tmp/pM4HwHFEjs:1» | ||
03:28
skids left,
skids joined
03:37
spider-mario left
03:38
spider-mario joined
|
|||
zostay | m: Buf.new(0x31 .. 0x34).decode('ascii') ~~ /2/ | 03:43 | |
camelia | ( no output ) | ||
zostay | m: (Buf.new(0x31 .. 0x34).decode('ascii') ~~ /2/).perl.say | ||
camelia | rakudo-moar c2a57e: OUTPUT«Match.new(ast => Any, list => (), hash => EnumMap.new(), orig => "1234", to => 2, from => 1)» | ||
03:54
laouji left,
bin_005 left
03:56
laouji joined
04:40
kurahaupo1 joined
04:44
flaviusb left
04:54
kurahaupo1 left
05:01
atweiden left
05:07
Sqirrel joined
05:13
kst` joined
05:15
kst left,
kst` is now known as kst
05:16
_mg_ joined
05:22
jack_rabbit joined
05:29
jack_rabbit left
05:31
eiro joined
05:33
sebm3 left
05:36
telex left
05:38
telex joined
05:41
gfldex joined
05:46
Psyche^ joined
05:50
Patterner left
05:59
Ben_Goldberg joined
06:02
BenGoldberg left
06:10
diana_olhovik joined
06:17
_mg_ left
06:19
meis joined
06:23
_mg_ joined
|
|||
masak | morning, #perl6 | 06:23 | |
06:23
Ben_Goldberg left
06:26
domidumont joined
|
|||
itz | www.youtube.com/watch?v=T4sZYSiXSgI | 06:26 | |
hi | 06:27 | ||
06:28
aborazmeh joined,
aborazmeh left,
aborazmeh joined
06:29
flaviusb joined
|
|||
masak | m: my $n = 1e0; $n /= 2 for ^1075; say $n | 06:30 | |
camelia | rakudo-moar c2a57e: OUTPUT«0» | ||
masak | m: my $n = -1e0; $n /= 2 for ^1075; say $n | ||
camelia | rakudo-moar c2a57e: OUTPUT«-0» | ||
06:30
skids left
|
|||
masak | underflow. this is a good way to explain why -0e0 can be useful. | 06:30 | |
m: my $x = 0e0; my $y = 0e0; say -($x - $y); say $y - $x # cannot assume -($x - $y)can be optimized to $y - $x, because of -0e0 | 06:34 | ||
camelia | rakudo-moar c2a57e: OUTPUT«-00» | ||
masak | m: say sqrt -0e0 | 06:35 | |
camelia | rakudo-moar c2a57e: OUTPUT«-0» | ||
meis | hum, morning :) | 06:38 | |
06:38
brrt joined
|
|||
masak | \o | 06:38 | |
meis | do you guys know how to generate a .class for jvm from perl6 in rakudo? | ||
i'm feeling silly, but I can't figure out how to do it.. | |||
06:42
RabidGravy joined
|
|||
masak | m: say sign NaN | 06:42 | |
camelia | rakudo-moar c2a57e: OUTPUT«1» | ||
masak submits rakudobug | |||
things you find from playing around :P | |||
06:44
FROGGS joined,
zengargoyle left
06:53
Woodi joined
06:58
brrt left
07:04
zengargoyle joined
07:09
domidumont left
|
|||
FROGGS | meis: are you talking about a .class file? | 07:12 | |
meis | FROGGS: yes, sorry, a .class file | 07:14 | |
FROGGS | meis: perl6-j --target=jar --output=foo.jar foo.pm | ||
though, it's a .jar then :o) | |||
meis | oh | ||
a jart works nice for me | |||
:D | |||
thank you, I'll try later! | 07:15 | ||
FROGGS | meis: if you need more information about Java interop please look at the tests in rakudo/t/03-jvm or ask psch | ||
meis | I'll do, thanks for the tip | 07:16 | |
07:16
domidumont joined
|
|||
FROGGS | rjbs: s/so maybe of of those/so maybe one of those/ | 07:17 | |
[Tux] | Inline::Perl5 IO is now broken (it worked yesterday): | 07:18 | |
csv-ip5xsio Cannot invoke null object | |||
in method invoke at lib/Inline/Perl5.pm6:479 | |||
in method invoke at lib/Inline/Perl5.pm6:471 | |||
in block at lib/Inline/Perl5.pm6:753 | |||
07:18
AlexDaniel joined
|
|||
FROGGS | rjbs++ # very good post | 07:22 | |
07:23
brrt joined
07:24
aborazmeh left
|
|||
FROGGS | [Tux]: what exactly do you mean by IO? | 07:24 | |
[Tux] | pass an IO object to perl5 | ||
FROGGS | ahh | ||
07:24
Ven joined
07:26
dayangkun joined
07:28
salva joined
|
|||
RabidGravy | morning | 07:34 | |
Ven | \o | 07:35 | |
07:40
amurf left
|
|||
FROGGS | morning | 07:40 | |
07:42
zakharyas joined
|
|||
brrt | morning | 07:43 | |
dalek | ake: ed35790 | arnsholt++ | t/def.t: Add test exercising default arguments. |
||
ake: ff21ab1 | arnsholt++ | t/def.t: Improve slurpy args test a bit. |
|||
ake: c66b97e | arnsholt++ | / (3 files): Implement list comprehensions. |
|||
ake: 8c1f4cf | arnsholt++ | src/Snake/Grammar.nqp: Comments have zero or more characters after #, not one or more. |
|||
ake: 8d2ef71 | arnsholt++ | src/ (4 files): The great object model refactor. This should bring us a lot closer to the correct way of handling classes and objects than we previously had. I've mostly kept unrelated stuff (like named arguments for nqp::ops) in separate commits, but some unrelated things may have snuck in. |
|||
ake: 1c66c8f | arnsholt++ | src/Snake/ (2 files): Some comment cleanup. |
|||
07:49
darutoko joined
07:53
aborazmeh joined,
aborazmeh left,
aborazmeh joined
07:58
gfldex left
08:01
SevenWolf left
08:05
lizmat joined
08:11
lizmat left
08:12
lizmat joined
08:18
xinming_ left
08:20
cschwenz joined
08:21
Ven left
08:26
larion joined
|
|||
itz | CFT++ # perl6 hacking | 08:26 | |
08:26
rba_ left
08:27
spider-mario left
08:29
fhelmberger joined
|
|||
lizmat | good *, #perl6! | 08:33 | |
hmmm... see some serious breakage in S17 related tests after MoarVM upgrade | |||
was MoarVM ready to be upgraded for nqp / rakudo? | |||
nwc10 | lizmat: there's a bug in MoarVM HEAD to do with async stuff that jnthn is aware of but hasn't fixe yet | 08:34 | |
he was busy with something over the weekend, as I understand it. | |||
(have seen a picture) | |||
08:35
laouji left
|
|||
lizmat | :-) | 08:35 | |
yeah, I was aware of his whereabouts last weekend | |||
nwc10 | verified in person, as I understand it. | ||
lizmat | yes :-) | 08:36 | |
dalek | kudo/nom: d5d93ad | lizmat++ | src/core/Numeric.pm: Make sign(NaN) return NaN Fixes RT's #124813 and #125317 |
08:37 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=124813 | ||
08:38
itz is now known as _itz,
rindolf joined,
itz2 joined,
itz2 is now known as itz
|
|||
dalek | ast: de33725 | lizmat++ | S32-num/sign.t: Unfudge now passing test |
08:39 | |
FROGGS | lizmat: eww, I did not know that MoarVM HEAD would cause breakage :o( | 08:41 | |
lizmat | yes, quite serious | ||
with hangs and zombies | |||
nwc10 | test early, test often? | 08:42 | |
08:42
xinming joined
08:44
espadrine joined
|
|||
moritz | you could always revert the faulty commit(s), and move them to a branch | 08:45 | |
dalek | p: d195a71 | FROGGS++ | tools/build/MOAR_REVISION: Revert "bump moar (win build fix and nativecall fix)" MoarVM HEAD introduces problems in S17... rolling back. This reverts commit 07a9dc105e682a14651551fa25e7af11d03faea8. |
||
kudo/nom: 5e72201 | FROGGS++ | tools/build/NQP_REVISION: require newer nqp that uses older MoarVM |
08:46 | ||
lizmat | pulling, building and testing | ||
08:50
Ven joined,
RabidGravy left
08:52
Alina-malina left
|
|||
lizmat | hmmm... looks like it needs a nuke of the install dir :-( | 08:54 | |
elevensies& | |||
08:58
bin_005 joined
|
|||
FROGGS | ohh yeah, nqp wont downgrade moar | 09:00 | |
09:00
cognominal joined
|
|||
FROGGS | deleting the moar executable would work too | 09:01 | |
(and then reconfigure and rebuild) | |||
09:01
bin_005 left
09:02
bin_005 joined
|
|||
moritz | .u カスタ | 09:02 | |
yoleaux | U+30AB KATAKANA LETTER KA [Lo] (カ) | ||
U+30B9 KATAKANA LETTER SU [Lo] (ス) | |||
U+30BF KATAKANA LETTER TA [Lo] (タ) | |||
09:02
Ven left
09:08
xinming left
09:09
xinming joined,
kurahaupo1 joined
09:12
rindolf left
|
|||
brrt | uhm, hey, anything terrifyingly wrong with moar that we should fix? | 09:17 | |
lizmat | yes :-) | ||
brrt | ok, what is | ||
anything to do with /me merging the throwops | 09:18 | ||
since when did all go wrong :-) | |||
lizmat | no, afaik it's half finished work of jnthn wrt not using 100% CPU in a thread for timer related functions | 09:19 | |
hmmm... nuking install dir didn't fix it :-( | |||
FROGGS | lizmat: what is your moar --version? | 09:20 | |
lizmat | nothing anymore, I just nuked nqp dir | 09:21 | |
FROGGS | k | ||
brrt | hmm ok. i can see how that is painful | ||
09:24
laouji joined,
kurahaupo1 left,
laouji left
09:25
laouji joined
09:26
kurahaupo1 joined
|
|||
lizmat | hmmm... still breakage ??? | 09:27 | |
09:28
Alina-malina joined,
amurf joined
|
|||
lizmat | $ install/bin/moar --version | 09:29 | |
This is MoarVM version 2015.05-8-g41b5dd2 built with JIT support | |||
FROGGS | that's correct | ||
lizmat | $ install/bin/nqp-m --version | 09:30 | |
This is nqp version 2015.05-4-gd195a71 built on MoarVM version 2015.05-8-g41b5dd2 | |||
FROGGS | yes, this is what you basically had yesterday | ||
except the nqp revision, which was 2015.05 | 09:31 | ||
but there is nothing in the nqp commits that could hurt | |||
ohh wait... | 09:32 | ||
maybe the offending patches were in moar 2015.05 .. 2015.05-8-g41b5dd2 ? | |||
09:32
amurf left
|
|||
lizmat | ah, yes, the problem was *not* caused by your changes | 09:33 | |
just by changes that came along with your bump, afaik | |||
FROGGS | excatly | ||
lizmat | so maybe we need to revert Moar to 2015.05 ? | ||
FROGGS | yes, I think so | ||
hold on | |||
lizmat | I think 58226af4aad0d365 in Moar is the problem, really | 09:34 | |
dalek | p: afc10c9 | FROGGS++ | tools/build/MOAR_REVISION: roll back to MoarVM 2015.05 |
||
kudo/nom: 317d054 | FROGGS++ | tools/build/NQP_REVISION: require newer nqp that uses older MoarVM |
09:35 | ||
FROGGS | lizmat: can yuo now pull, unlink your nqp-m, and reconfigure+rebuild? | 09:36 | |
lizmat | will do | ||
FROGGS | or nuke install if you prefer that | ||
lizmat | trying your way first :-) | ||
FROGGS | :o) | 09:37 | |
lizmat | $ install/bin/moar --version | ||
This is MoarVM version 2015.05-8-g41b5dd2 built with JIT support | |||
:-( | |||
FROGGS | :o( | 09:38 | |
I guess it wont reconfigure nqp this way... | |||
lizmat | I unlinked moar as well now | ||
trying again | |||
FROGGS | gladly it does not take 10+ minutes as it used to take when you had to build parrot | 09:39 | |
lizmat | $ install/bin/moar --version | ||
This is MoarVM version 2015.05 built with JIT support | |||
:-) | |||
FROGGS | ohh, good to know | 09:40 | |
brrt | i'm a bit sorry about this discussion since i had hoped the jit throw ops merge to get some more exposure | ||
possible suggestion | 09:41 | ||
lizmat | brrt: afaik, it's only 58226af4aad0d365 that is causing the problem | ||
FROGGS | we can also move that commit to a branch in MoarVM | 09:42 | |
lizmat | brrt: maybe reverting that for now, will allow us to move forward ? | ||
brrt | we revert said commit on master, cherry-pick it onto a separate branch, and continue tracking moar master with nqp and rakudo | ||
aye | |||
consider it done | |||
in five minutes, at least ;-) | |||
FROGGS | brrt++ | ||
this will also help others, since you cannot downgrade moarvm using MOAR_REVISION | 09:43 | ||
as it happily accepts newer moars | |||
09:44
aborazmeh left
|
|||
lizmat | spectest confirmed clean now | 09:44 | |
afk for a bit& | 09:45 | ||
brrt | tis done | ||
FROGGS | I'll update nqp and rakudo (again :o) | 09:46 | |
brrt | :-) | 09:47 | |
dalek | p: 4344303 | FROGGS++ | tools/build/MOAR_REVISION: bump moar for fixing async stability |
||
kudo/nom: d39fe1c | FROGGS++ | tools/build/NQP_REVISION: bump nqp/moar for fixing async stability |
|||
FROGGS | now this should solve problems for all the ppl out there | 09:48 | |
brrt hopes it does | |||
09:50
domidumont left
|
|||
jnthn | Note that the patch didn't actually cause problems, it fixed one problem that turned out to make a bunch of others less likely. | 09:53 | |
yoleaux | 00:19Z <TimToady> jnthn: I think it would be sanest if submethods do not compose like methods, but have some mechanism for getting themselves all called at the same time as the corresponding class submethod in either build-ish or destroy-ish order as pseudo-parents located between this class and its actuall parents | ||
jnthn | The things that showed up with it are all possible to produce without it. | 09:54 | |
brrt | yeah, that's very much true :-) | 09:55 | |
the 'problem' - for me at least - was hanging spectests, by the way | |||
09:56
salva left
|
|||
jnthn | Yes, agree it created a nuisance. | 09:57 | |
lizmat | jnthn o/ | ||
jnthn | I'll try and work on a real fix today | ||
lizmat | jnthn: I would suggest you take it easy for a bit more... | 09:58 | |
it's safely stashed away in a branch now :-) | |||
we've been living with 100% CPU on a thread for quite some time now, a little more wouldn't hurt | |||
fwiw, spectest confirmed clean on This is MoarVM version 2015.05-35-gc4c7ebd built with JIT support | 09:59 | ||
really afk for a bit now& | 10:00 | ||
brrt | spectest burns the top of this imac | 10:01 | |
:-) | |||
10:05
bin_005 left
10:06
Akagi201 left
10:08
Ven joined
10:13
aborazmeh joined,
aborazmeh left,
aborazmeh joined
10:15
rindolf joined
10:16
rarara joined
10:18
Emeric joined
|
|||
Emeric | Hello World ! | 10:20 | |
brrt | hi Emeric | ||
anything we can help you with :-) | 10:23 | ||
10:24
rba_ joined,
Emeric left
10:26
Emeric joined
|
|||
Emeric | Did you use Perl6 for web projects ? | 10:27 | |
DrForr | Not sure how much of perl6.org is done in perl6 yet :) | 10:28 | |
10:29
rindolf left
|
|||
brrt | web is kind of broad these days. it used to be 'CGI scripts', today it may mean 'i want something like rails' or 'i want something like flask/sinatra', or even 'something like php' | 10:30 | |
as far as i know, not a lot of people are using perl6 in any of these capacities yet | |||
moritz | {doc,modules}.perl6.org is statically generated pages, and generated by Perl 6 scripts | ||
brrt | what people are doing is creating static site generators using perl6 | ||
moritz | as is strangelyconsistent.org | ||
brrt points out that the first real 'blogging engine' (movable type) in widespread use would now be called a static site generator with a web interface | 10:31 | ||
anyway, lunch & | |||
10:31
brrt left
10:32
dayangkun left,
laouji left
|
|||
Emeric | Thanks for the answer | 10:32 | |
10:33
itz left
10:34
_mg_ left
10:38
itz joined
10:40
itz left
10:41
smls_ joined,
rindolf joined
10:42
itz joined
10:43
rba_ left
10:45
rba_ joined
|
|||
Emeric | Sorry, I've may questions... :S Did you often use the OOP with Perl 6 ? | 10:47 | |
DrForr | Using it right now as it happens. | ||
hahainternet | Emeric: can i ask why you're asking these questions? they seem like a survey question more than a practical one | ||
moritz | Emeric: Perl 6 is an OO language at its very core | ||
ever non-trivial piece of Perl 6 code that I write is OO | 10:48 | ||
DrForr | And no need to use the past tense, it's very much alive. | ||
10:48
laouji joined,
rindolf left
|
|||
Emeric | I'm just trying to inform me about what is done with Perl. And sorry, I'dont speak english very well... | 10:50 | |
DrForr | Plenty of stuff, though if you're looking for large-scale implementation and huge websites, look at perl5. | ||
Emeric | And I hope it's still alive ! | ||
DrForr | At least for the moment :) | 10:51 | |
hahainternet | Emeric: in my uninformed opinion, Perl 6 currently occupies roughly the niche that Perl 5 does, but it is slowly expanding to support every relatively high-level niche i know of | ||
DrForr | Incidentally the perl6 ANTLR -> Perl6 converter is almost done. | ||
hahainternet | DrForr: fancy, there's EBNF too isn't there | 10:52 | |
that blew my mind | |||
DrForr | EBNF, ABNF, C++, Java... | ||
hahainternet 's head explodes | |||
DrForr | It mostly won't run without tweaking because ANTLR4 and Perl6 aren't an exact match, but it'll handle most of the constructs. | 10:53 | |
hahainternet | oh? i don't know the difference, haven't had much p6 time and no ANTLR time | 10:54 | |
DrForr | ANTLR4 is closer to yacc in that it lets you do code that messes with the parsing stack inline. | 10:55 | |
smls_ | Is there a way to get the function object &foo from the string "foo" without EVAL? | ||
10:56
smls_ is now known as smls
|
|||
moritz | smls: &::('foo') | 10:56 | |
smls | oh, right. | ||
DrForr | But it'll work well enough that you can take an ANTLR C# grammar, convert it and get something that looks like perl6 without faffing about. | ||
smls | does it work with operators too? | ||
m: say &::("infix:<~>") | 10:57 | ||
camelia | rakudo-moar c2a57e: OUTPUT«sub infix:<~> (Any |) { #`(Sub+{<anon>}+{Precedence}|50302512) ... }» | ||
smls | neat | ||
11:04
rarara left
|
|||
smls | is .WHY supposed to say something for built-ins? | 11:05 | |
m: say &say.WHY | |||
camelia | rakudo-moar c2a57e: OUTPUT«(Any)» | ||
moritz | smls: it would be neat the pod from doc.perl6.org could be made available from the setting somehow | 11:07 | |
smls: though including it in the source text of the setting is a no-go | |||
11:08
domidumont joined
11:09
g4 joined,
g4 left,
g4 joined
|
|||
rjbs | FROGGS: glad you liked it :) | 11:21 | |
FROGGS | rjbs: yes, please keep posting here when you blog | ||
rjbs | Well, that post is five years old. I better start posing the rest of my backlog... :-) | 11:23 | |
FROGGS | it ... is? | 11:24 | |
wow | |||
rjbs | FROGGS: the follow-up was rjbs.manxome.org/rubric/entry/1865 | 11:29 | |
FROGGS | thanks | 11:30 | |
11:32
aborazmeh left
11:35
yqt joined
|
|||
timotimo | o/ | 11:36 | |
Ven | \o timotimo | 11:37 | |
timotimo | FROGGS: the dresden.pm video recording of your talk ... the audio recording is ... ... | ||
11:39
domidumont left
11:40
smls_ joined
|
|||
AlexDaniel | is it possible to define a subroutine that will be visible from the outside? Like: if True { sub Test { say 'hello' } }; Test(); | 11:40 | |
11:40
smls left
|
|||
dalek | ake: 71b4bd1 | arnsholt++ | src/Snake/Metamodel/ClassHOW.nqp: Better stringification logic. |
11:40 | |
ake: a729dc1 | arnsholt++ | src/setting/builtins.py: Set correct type cache on `type` object. |
|||
ake: d8f82f8 | arnsholt++ | src/setting/builtins.py: Fix braino in MRO passed to ClassHOW.new_type from type(). |
|||
11:40
_mg_ joined
|
|||
moritz | AlexDaniel: sub Test is export { ... } | 11:40 | |
oh wait, then you still have to import it | 11:41 | ||
11:41
domidumont joined
|
|||
moritz | AlexDaniel: my &Test; if True { &Test := anon sub Test { say 'hello' } } | 11:41 | |
the "anon sub Test" construct is a subroutine that isn't automatically installed in the surrounding lexical scope ("anon"), but still knows its own name when introspected | 11:42 | ||
AlexDaniel | m: my &Test; if True { &Test := anon sub Test { say 'hello' } } | 11:43 | |
camelia | rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/H3OlSeCCKeCannot use bind operator with this left-hand sideat /tmp/H3OlSeCCKe:1------> 3 &Test := anon sub Test { say 'hello' } 7⏏5}» | ||
AlexDaniel | moritz: how can I solve that error? | 11:44 | |
I don't really get it | |||
11:44
domidumont left
11:45
domidumont joined
|
|||
moritz | hm | 11:46 | |
m: my &Test; if True { &Test = anon sub Test { say 'hello' } } | |||
camelia | ( no output ) | ||
moritz | m: my &Test; if True { &Test = anon sub Test { say 'hello' } }; Test() | ||
camelia | rakudo-moar c2a57e: OUTPUT«hello» | ||
moritz | AlexDaniel: ok, use assignment instead | ||
though the error looks a bit fishy to me. Why shouldn't you be able to bind here? | |||
(if there's no extra container level, it should be assignment that's forbidden, not binding) | 11:47 | ||
AlexDaniel | moritz: well, if you think that it's an error than you should probably report it yourself, I don't think that I can phrase what is going on here :) | 11:48 | |
moritz | AlexDaniel: I probably should | ||
AlexDaniel | this is fun, but it does not satisfy my original crazy intent. I'm trying to change the grammar in run-time (have no idea if that is even possible), depending on something that is not available in compile-time. I have no useful intent but I'm just trying to see what is possible, so I took a simple example of sub postfix:<!> { [*] 1..$^n }; and tried placing it into some block after "if", but it seems like it is lexically scoped so it | 11:54 | |
does not really do what I want it to do. That anon thing, obviously, is not going to work, as far as I can see. Any ideas? | |||
11:55
Ven left,
][Sno][ joined
|
|||
FROGGS | timotimo: do you have a link? | 11:56 | |
11:56
[Sno] left
|
|||
AlexDaniel | I'm looking here, for example; github.com/tony-o/perl6-slang-sql/...g/SQL.pm6, but I wonder if there is any simpler example | 11:57 | |
FROGGS | timotimo: nvm, found it | ||
11:58
itz left
|
|||
FROGGS | bbl | 11:59 | |
12:00
FROGGS left
|
|||
moritz | AlexDaniel: you could try something like: module Foo { multi infix:<!>($x) { [*] 1..$x } }; BEGIN import Foo if True; | 12:01 | |
be careful not to introduce a new scope, of course :-) | |||
12:04
Emeric left
12:06
xfix joined,
xfix left,
xfix joined
|
|||
dalek | kudo-star-daily: 14b6f06 | coke++ | log/ (2 files): today (automated commit) |
12:19 | |
AlexDaniel | moritz: does not really work, hm | 12:20 | |
m: module Foo { sub postfix:<!> { [*] 1..$^n }; }; BEGIN import Foo; say 5!; | |||
camelia | rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/s7c_T4CbPUNegation metaoperator not followed by valid infixat /tmp/s7c_T4CbPU:1------> 3*] 1..$^n }; }; BEGIN import Foo; say 5!7⏏5; expecting any of: infix infix stoppe…» | ||
dalek | kudo/nom: 0f627ce | lizmat++ | lib/Test.pm: Fix #125319 |
12:27 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=125319 | ||
[Coke] | good morning, everyone. | 12:32 | |
lizmat | [Coke] o/ | 12:37 | |
12:39
rindolf joined
|
|||
dalek | kudo/nom: 276964e | lizmat++ | docs/ChangeLog: Add some more entries |
12:49 | |
12:50
xfix left
|
|||
jnthn | import is already BEGIN time | 12:50 | |
But the sub needs marking "is export" for it to work | |||
12:52
laouji left
|
|||
lizmat | Looking at making start { } take a blorst, but failing: gist.github.com/lizmat/3ad7ce1f0174013ec2eb | 12:53 | |
I guess I'm being too KISS :-) suggestions anyone? | |||
12:56
yqt left
|
|||
jnthn | lizmat: Got 15 mins more of errands to do, then I can take a look. But I was going to do it by calling Promise.start and getting rid of the start function entirely | 12:58 | |
lizmat | that was my plan also | ||
I just called it START in the interim, so I could compare start and START :-) | |||
hoelzro | morning #perl6 | 13:04 | |
13:06
amurf joined
|
|||
AlexDaniel | m: module Foo { sub postfix:<!> is export { [*] 1..$^n } }; BEGIN import Foo if True; say 5!; | 13:06 | |
camelia | rakudo-moar c2a57e: OUTPUT«120» | ||
AlexDaniel | m: module Foo { sub postfix:<!> is export { [*] 1..$^n } }; BEGIN import Foo if False; say 5!; | ||
camelia | rakudo-moar c2a57e: OUTPUT«120» | ||
AlexDaniel | module Foo { sub postfix:<!> is export { [*] 1..$^n } }; import Foo if True; say 5!; | ||
umm | 13:07 | ||
ah | |||
m: module Foo { sub postfix:<!> is export { [*] 1..$^n } }; import Foo if True; say 5!; | |||
camelia | rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/4bBna1C9CsMissing semicolonat /tmp/4bBna1C9Cs:1------> 3 export { [*] 1..$^n } }; import Foo if 7⏏5True; say 5!;» | ||
smls_ | Is there an equivalent of &::($sub-name) for classes and roles? | 13:08 | |
i.e. look up a type from a string holding its name | |||
dalek | pan style="color: #395be5">perl6-examples: 0c93c1a | paultcochrane++ | t/categories/cookbook/ (2 files): [cookbook] remove temporary files created from scripts Some scripts generate temporary files that shouldn't be cleaned up in the script themselves (it wouldn't make sense in the context of the example). Nevertheless, this leaves temporary files lying around on the filesystem after running the test suite, thus the tests now clean these files up. |
13:09 | |
pan style="color: #395be5">perl6-examples: 713281b | paultcochrane++ | categories/euler/prob032-andreoss.pl: Purge trailing whitespace |
|||
timotimo | m: ::('Hash').new.say | ||
camelia | rakudo-moar c2a57e: OUTPUT«» | ||
dalek | pan style="color: #395be5">perl6-examples: 7911bc8 | paultcochrane++ | categories/euler/prob03 (3 files): Add missing vim coda |
||
timotimo | m: ::('Hash').new.perl.say | ||
camelia | rakudo-moar c2a57e: OUTPUT«{}<>» | ||
timotimo | m: ::('Array').new.perl.say | ||
camelia | rakudo-moar c2a57e: OUTPUT«[]<>» | ||
smls_ | ok, thanks | ||
13:11
amurf left
|
|||
hoelzro | I'm trying to get RolePunning.find_method to return a Method object that invokes the target method on the pun, rather than an anonymous function that does that. Any ideas on how I could force an invocant for a method? | 13:12 | |
13:12
FROGGS joined
|
|||
lizmat | passing it as the first parameter ? | 13:12 | |
moritz | hoelzro: I'm pretty sure it does that on purpose, and if you want to change that, you should talk to jnthn++ first | 13:15 | |
(unless you already did that) | 13:16 | ||
jnthn is a bit dubious about such a change too | |||
We made the find_method vs. lookup distinction for exactly this kind of reason | |||
find_method just has to return something invokable that handles the message | 13:17 | ||
lookup should return something the user actually declared | |||
So the current implementation of find_method is fine | |||
smls_ | I don't suppose it's possible to use the MOP to find out which of all the built-in types can do a method with a given name? | 13:20 | |
timotimo | m: say ::.keys | 13:21 | |
camelia | rakudo-moar c2a57e: OUTPUT«$=pod $! $_ EXPORT !UNIT_MARKER GLOBALish ::?PACKAGE @?INC $/ $?PACKAGE» | ||
timotimo | m: say SETTING::.keys | ||
camelia | rakudo-moar c2a57e: OUTPUT«&pipe &symlink RESTRICTED-CLASS $=pod $! $_ EXPORT &rmdir &MAKE-DIR &SYMLINK-PATH &UNLINK-PATH !UNIT_MARKER &chmod &CHANGE-DIRECTORY PIO GLOBALish ::?PACKAGE &link &rename ©-FILE NativeCall @?INC &shell $/ © &spurt &unlink &CHMOD-PATH &REMOVE-DIR &…» | ||
timotimo | m: for SETTING::.values -> $t { .say if $t.HOW === ClassHOW } | ||
camelia | rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/bsnyBfVR3nUndeclared name: ClassHOW used at line 1» | ||
timotimo | m: for SETTING::.values -> $t { .say if $t.HOW === Metamodel::ClassHOW } | ||
camelia | ( no output ) | ||
timotimo | oh? | ||
m: say unique(SETTING::.values>>.HOW) | 13:22 | ||
camelia | rakudo-moar c2a57e: OUTPUT«Perl6::Metamodel::ClassHOW.new» | ||
timotimo | m: for SETTING::.values -> $t { .say if $t.HOW ~~ Metamodel::ClassHOW } | ||
camelia | rakudo-moar c2a57e: OUTPUT«(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)…» | ||
timotimo | m: for SETTING::.values -> $t { .WHAT.say if $t.HOW ~~ Metamodel::ClassHOW } | ||
camelia | rakudo-moar c2a57e: OUTPUT«(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)(Any)…» | ||
timotimo | that's weird :) | ||
timotimo takes it to the repl | |||
aaah, i have $t instead of $_ | 13:23 | ||
ClassHOW isn't the right way to go | 13:24 | ||
moritz | why not just test .can (or .^can)? | 13:28 | |
lizmat | m: say Int.can("Numeric").perl | 13:30 | |
camelia | rakudo-moar c2a57e: OUTPUT«(method Numeric ($: Any |) { #`(Method|42412184) ... }, method Numeric ($: Any |) { #`(Method|41929128) ... })» | ||
lizmat | m: say Int.can("Numerik").perl | ||
camelia | rakudo-moar c2a57e: OUTPUT«()» | ||
hoelzro | moritz: I haven't, but I know he's sort of busy lately | 13:32 | |
ah ha | 13:33 | ||
I didn't realize there was that distinction | |||
so if a user wants a method (from a role or otherwise) they should do $something.^lookup($meth-name)? | |||
and $something.can($meth-name) works in terms of lookup rather than find_method? | 13:34 | ||
jnthn: if you're around and able to answer questions ^ | |||
lizmat | $something.can is just short for $something.^can, which is short for $something.HOW.can | 13:35 | |
moritz | ... short for $something.HOW.can($something) | 13:36 | |
lizmat | moritz: touché :-) | 13:37 | |
jnthn | hoelzro: Well, it depends what they want it for. If they want to look up the declared thing in the role, then lookup. | ||
lizmat | I always seem to forget that | ||
13:37
itz joined
|
|||
jnthn | lizmat: .^ exists 'cus folks were good at forgetting it ;) | 13:38 | |
13:38
cschwenz left
|
|||
hoelzro | jnthn: ok, thanks for the input (and moritz and lizmat too!) | 13:38 | |
jnthn | hoelzro: Whta is your use-case ooc? | 13:39 | |
13:40
kaare_ left
|
|||
lizmat | m: my Int @a = (1,2,3,Nil,4) # do we have a ticket for this? | 13:41 | |
camelia | rakudo-moar c2a57e: OUTPUT«Unhandled exception: Type check failed in assignment to '@a'; expected 'Int' but got 'Any' at <unknown>:1 (/home/camelia/rakudo-inst-2/share/perl6/runtime/CORE.setting.moarvm:throw:4294967295) from src/gen/m-CORE.setting:16606 (/home/camelia/raku…» | ||
hoelzro | jnthn: I'm looking at fixing S26-documentation/block-leading.t (RT #125304) | ||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=125304 | ||
13:42
kaare_ joined
|
|||
hoelzro | which apparently just requires .subst(/find_method/, 'lookup') =) | 13:43 | |
jnthn | Yes, that's what I was about to say after reading the ticket :) | 13:44 | |
dalek | ast: e9f12db | hoelzro++ | S26-documentation/block- (2 files): Stop skipping role method tests for S26 We just needed to switch out find_method for lookup; find_method only returns something you can invoke, but lookup returns something you can inspect |
13:45 | |
13:45
yqt joined
13:52
smls_ left
|
|||
jnthn | lizmat: Problem is you're missing a QAST::WVal node containing Promise (looked up with $*W.find_symbol) as the first child of the callmethod op, so it tries to call .start on the code object | 13:58 | |
14:00
cschwenz joined,
cschwenz left
14:02
telex left
|
|||
lizmat | jnthn: ok, I can work with that (I think( | 14:02 | |
) | |||
geekosaur | (you have a Lisp?) | 14:03 | |
PerlJam | geekosaur: heh, I was thinking the same thing :) | ||
lizmat | :- | 14:04 | |
14:04
cognominal left,
telex joined
14:08
cognominal joined
14:10
cognominal left
14:11
andreoss joined
|
|||
lizmat | jnthn: so I added QAST::Wval.new( :value($*W.find_symbol(['Promise'])) ), before the $<blorst>.ast | 14:16 | |
but it still fails the same way in the optimizer | |||
is there some annotation missing maybe ? | 14:17 | ||
timotimo | you want WVal, not Wval | 14:18 | |
a typo like that gives you an NQPMu object where you least expect it :( | |||
lizmat | argh | ||
timotimo | i agree. | ||
i think i want a fatal error to happen in that case | |||
i may implement that | |||
lizmat | made it a WVal, still same failure in the optimizer :-( | 14:20 | |
timotimo | :( | 14:21 | |
where do i have to look to find your code? | |||
lizmat | I mean, the problem is *before* it ever executes | ||
gist.github.com/lizmat/3ad7ce1f0174013ec2eb | |||
[Tux] sends belated congrats to jnthn !!! 💒 💒 💒 | |||
timotimo | thanks | 14:22 | |
jnthn | [Tux]: Thanks! :) | ||
14:22
smls joined
|
|||
timotimo | hm, my intuition says: dump $<blorst>.ast | 14:23 | |
see what it ends up being | |||
jnthn | lizmat: Missing "make" | 14:24 | |
lizmat | ?? | ||
it says : make QAST::Op.new( | |||
? | |||
jnthn | gist.github.com/lizmat/3ad7ce1f0174013ec2eb doesn't | ||
14:25
flaviusb left
|
|||
timotimo | ooooh | 14:25 | |
jnthn | + method statement_prefix:sym<START>($/) { | ||
+ QAST::Op.new( | |||
lizmat | argh | ||
looking at the wrong code, indeed make missing :-) | |||
timotimo | this stuff is so fiddly, i'd really +1 having a branch flying around that you could rebase at will - or maybe a piece of code that you can uncomment - that gives earlier, more helpful error messages regarding the compilation stage | 14:26 | |
most importantly: without affecting performance too negatively | |||
lizmat | $ 6l '(START 42 + 1).result.say' | 14:27 | |
43 | |||
PerlJam | timotimo: or maybe simple substitution macros? | ||
lizmat | yes! | ||
14:27
skids joined
|
|||
[Coke] | is github.com/cosimo/perl6-lwp-simple/issues/37 a problem for anyone but me? | 14:27 | |
smls still doesn't get the difference between .^find_method, .^lookup and .^can - where is this explained? | 14:28 | ||
moritz | probably just in here :( | ||
[Coke] | er, I really meant github.com/tadzik/panda/issues/96, but it's both the same thing. :) | ||
14:29
andreoss` joined
|
|||
itz | panda has worked with http_proxy I'm sure | 14:29 | |
moritz | the difference between find_method and can is mostly that can returns a list of methods, if several are matching | ||
14:29
rindolf left
|
|||
moritz | find_method is rather more low-level, and only ever returns the best match | 14:30 | |
the difference between find_method and lookup is what happens with roles | |||
14:30
andreoss left
|
|||
moritz | roles can be parameterized, and the parameterized candidates may or may not have the method you're looking for | 14:30 | |
but the type name of the role refers to the whole group of role candidates | 14:31 | ||
PerlJam wonders what "best match" means | |||
moritz | so a MyRole.^find_method cannot do its thing reliably, because it doesn't know which parameterization to do | ||
PerlJam: first in MRO | |||
jnthn | It's not just roles. If you used something like Grammar::Tracer, .^find_method will give you something that traces and invokes the original, while lookup is the declared Method | ||
PerlJam | moritz: good, because that's what I thought :) | 14:32 | |
itz | hmm the panda proxy code has been refactored since I added and tested it | 14:33 | |
14:33
zakharyas left,
zakharyas joined
14:35
vendethiel joined
|
|||
dalek | kudo/nom: 211d7a1 | lizmat++ | src/ (3 files): Make start take a blorst, fixes RT #125312 With support by jnthn++ and timotimo++ |
14:35 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=125312 | ||
dalek | ast: d089d04 | lizmat++ | S17- (2 files): Remove () now that start is no longer a sub |
14:37 | |
smls | m: .say for Str.^can("words")>>.candidates>>.perl>>.match(/\d+/)>>.Str | ||
camelia | rakudo-moar c2a57e: OUTPUT«4626860846268760462689124626906446269216462693684626952046268608» | ||
smls | ^^ why does this return the same candidate twice? (first and last) | ||
14:37
yqt left,
lolisa joined
14:38
lolisa left
|
|||
smls | m: .say for Str.^find_method("words")>>.candidates>>.perl>>.match(/\d+/)>>.Str | 14:38 | |
camelia | rakudo-moar c2a57e: OUTPUT«57155888571560405715619257156344571564965715664857156800» | ||
14:38
lolisa joined
|
|||
smls | ^^does .find_method + .candidates return all methods, or skip some? | 14:38 | |
14:39
rindolf joined
14:40
domidumont left
14:43
fhelmberger left
14:44
fhelmberger joined
14:46
Sqirrel left
14:48
Sqirrel joined,
fhelmberger left
|
|||
smls | moritz: Can you give an example of a built-in role where .^lookup vs .^find_method makes a difference? | 14:49 | |
PerlJam | smls: are you writing docs for the next person? :) | 14:50 | |
moritz | m: say Rational.^find_method('nude') | ||
camelia | rakudo-moar c2a57e: OUTPUT«No appropriate parametric role variant available for 'Rational' in any specialize at src/gen/m-Metamodel.nqp:2437 in any compose at src/gen/m-Metamodel.nqp:2747 in any make_pun at src/gen/m-Metamodel.nqp:1608 in any find_method at src/gen/m…» | ||
moritz | m: say Rational.^lookup('nude') | ||
camelia | rakudo-moar c2a57e: OUTPUT«nude» | ||
moritz | smls: ^^ | ||
smls | thanks | ||
14:51
RabidGravy joined,
yqt joined
|
|||
dalek | kudo/nom: 71ebbb0 | lizmat++ | / (2 files): Re-introduce sub start as a deprecation |
14:52 | |
14:56
smls_ joined,
smls left
14:58
vendethiel left
15:06
lolisa left
15:07
lolisa joined
15:08
_mg_ left
15:09
_mg_ joined
15:11
kurahaupo1 left
15:12
smls joined,
smls_ left
15:17
diana_olhovik left
15:21
_mg_ left
|
|||
lizmat | afk again& | 15:21 | |
15:25
kurahaupo1 joined
15:27
larion left
15:28
smls_ joined,
smls left
15:29
vendethiel joined
15:35
smls_ left,
smls_ joined
15:40
smls joined
15:41
smls_ left
15:47
smls left
15:48
muraiki joined
|
|||
japhb | .tell lizmat re: rakudo 0f627ce, this reminds me: Seems like every Perl code base I touch, I add something like this: sub _s($count, $plural='s', $singular='') { $count == 1 ?? $singular !! $plural }; .say for "tree{_s($plants)}", "box{_s($container, 'es')}", "{_s($birds, 'geese', 'goose')}"; | 15:53 | |
yoleaux | japhb: I'll pass your message to lizmat. | ||
japhb wonders how hard it would be to support other languages' count agreement rules without totally losing the simplicity | 15:55 | ||
timotimo | pretty hard, i imagine | 15:56 | |
don't some languages have three forms? | |||
TimToady | Indo-European used to have a dual | 15:57 | |
"oxen" used to mean two oxes | |||
jnthn | In some Slavic languages, things like 21, 31, etc. behave as a singular, and/or 22..24, 32..34 etc. things lead to different pluralization than 25..30, 35..40, etc. :) | 15:58 | |
japhb | .ask lizmat Shouldn't the deprecation introduced in rakudo 71ebbb0 recommend Promise.start if the user needs :&catch? | ||
yoleaux | japhb: I'll pass your message to lizmat. | ||
15:59
andreoss` left
|
|||
jnthn | Slovene does in theory have the dual, but my attempt to use it to order two beers was met with confusion. :P | 15:59 | |
japhb | jnthn: That's actually pretty cool. OTOH, you have given me yet more appreciation for the Tower of Babel problem. | ||
Heh | 16:00 | ||
jnthn | (The bar girl corrected it to the normal plural, then poured my beers. :)) | ||
16:01
zakharyas left
|
|||
japhb | .oO( The assumption is that no one really stops at two beers, you're just partially ordering three or more ... ) |
16:01 | |
16:01
diana_olhovik_ joined
|
|||
geekosaur | Semitic languages have duals. worse, at least some of them apply it only to things that have pairs *and* those pairs are relevant: "shnei yadim" and "yadayim" have different implications | 16:01 | |
I think I matched that wrong for the first one... not commonly used at all! | 16:02 | ||
two unrelated hands | |||
masak | I remember reading a great essay in a CPAN module about this. the conclusion was, turn the i18n thing into a function. | 16:03 | |
16:03
meis left
|
|||
masak | because functions are general enough to handle anything you throw at them. | 16:03 | |
can't seem to find that module again, unfortunately. | |||
TimToady | something with Inflect? | ||
japhb | .oO( Google Translate chose a probabilistic function ) |
16:04 | |
16:08
hypnotoad joined,
hypnotoad left
|
|||
masak | mebbe something with Gettext... but I can't seem to find it... | 16:08 | |
the essay kind of took the developer through a hypothetical situation, bringing in more and more languages into the mix. | 16:09 | ||
dalek | kudo/nom: f4e4de2 | TimToady++ | src/Perl6/ (2 files): try out S/// form to return new string Adding this more as a "to play with" feature. (Note that use with ~~ will be very surprising for now, unless you expect False on success and True on failure.) |
16:14 | |
16:21
pecastro left
|
|||
TimToady | the rationale for use of uppercase is that it is a rawer form, much like Q// is a raw quote | 16:21 | |
[Coke] | my grammar sense is tingling. | 16:22 | |
16:24
pecastro joined
|
|||
hoelzro | Perl 6 on MoarVM doesn't restrict you from updating a single variable from separate threads in any way, does it? | 16:25 | |
16:25
smls joined
|
|||
TimToady | I don't believe it attempts to prevent you from shooting yourself in the foot that way | 16:26 | |
hoelzro | alright | 16:27 | |
I was just thinking about RolePunning.nqp and how it creates a $!pun if it hasn't already | |||
and how that might behave with a multithreaded application | |||
TimToady | well, if it's idempotent, then doing it duplicately shouldn't matter, unless the updates can destroy each other somehow due to lack of atomicity | 16:29 | |
16:29
sjn_phone joined
|
|||
TimToady | well, other than wasted CPU, I mean | 16:29 | |
16:30
smls left
|
|||
TimToady | if it's not, well, then we have bigger problems | 16:31 | |
.oO(Global Meta-Interpreter Lock) |
|||
japhb | But then you could end up returning two different puns that don't === each other but are in some sense the "same" | ||
16:32
smls joined
|
|||
timotimo | i think behind the pun creation lies a moarvm-backed thing that interlocks | 16:33 | |
TimToady | yeah, which was always the case before we cached it... | ||
japhb | Only one of which is now saved as the pun that will be returned in the future | ||
timotimo | i might be wrong, though | ||
japhb | TimToady: Oh agreed, I just meant there is a real race there; whether we care is a different question. | ||
TimToady | I suspect we care :) | 16:34 | |
japhb | (My personal vote is that we should, on general principle.) | ||
japhb grumbles about having to write project requirements docs | 16:35 | ||
I don't mind API docs, but PR docs just feel like something to trudge through | |||
TimToady | because they're too general, or too specific? | 16:36 | |
japhb | Because they don't feel any more valuable than the outline of notes (or bug hotlist) that is my real captured requirements -- it's just converting into long winded prose for the benefit of people that don't think in that kind of mental shorthand. | 16:39 | |
I can see the value to some, but for me, it's just lost time. :-( | |||
Whereas API docs (for instance) have obvious intrinsic value to both my future self and others that have to deal with whatever abomination I've brought forth. :-) | 16:40 | ||
Sadly, grumbling doesn't make it any less necessary ... | 16:41 | ||
japhb trundles off to stare at a blank document, punctuated by meetings and lunch | |||
itz | lunch++ | 16:43 | |
16:44
amurf joined
16:46
smls left
16:47
spider-mario joined
16:48
smls joined,
amurf left
16:49
brrt joined,
itz left
16:50
liztormato joined
|
|||
liztormato | japhb: re start deprecation. To my knowledge is the catch param to start() not documented | 16:52 | |
jnthn | We do locking to protect certain MOP operations, but yeah, the role punning is not, though as TimToady++ mentioned the race to create the pun isn't automatically a problem. | ||
16:53
smls left
16:54
smls joined
16:55
[Sno] joined,
yqt left,
rba_ left
|
|||
japhb | liztormato: Fair enough, though might be worth pointing out anyway for those that used the source, Luke. | 16:55 | |
16:55
][Sno][ left
16:56
sjn_phone_ joined
|
|||
vendethiel | o/, #perl6 | 16:58 | |
16:58
smls_ joined,
brrt left
16:59
sjn_phone left,
smls left
17:02
smls joined
17:03
smls_ left,
smls left
17:07
smls joined
|
|||
smls | I made a little helper tool: i.imgur.com/COmy8Z2.png | 17:08 | |
source code: github.com/smls/undef/blob/master/.../p6routine | |||
moritz | smls++ | 17:13 | |
17:14
domidumont joined
|
|||
TimToady | smls: a coercer in the parameter list can insert two entries into the candidate list | 17:20 | |
smls | can you give an example? | ||
TimToady | well, I suspect .words is an example, since that's what you were testing :) | 17:21 | |
smls | oh, that's what you mean | ||
vendethiel | what's a blorst :o? | 17:23 | |
TimToady | except looking at method words, I don't see a coercer | ||
block or statement | |||
vendethiel | TimToady: S/// looks awesum :) | ||
17:24
_mg_ joined
|
|||
timotimo | smls: you know you can get the filename + line number for code objects? | 17:25 | |
smls | didn't know that, no | ||
TimToady | m: say S/foo/bar/ given "food" | 17:26 | |
camelia | rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/c3o3FDcdK3Undeclared name: S used at line 1Undeclared routines: bar used at line 1. Did you mean 'bag'? foo used at line 1 given used at line 1» | ||
TimToady | doesn't look awesum yet... | ||
PerlJam | smls++ | ||
TimToady | in fact, kinda looks like recompilation is busted | ||
(of camelia) | |||
in fact, it appears to be running a version from May 26 | 17:28 | ||
PerlJam | smls: The comment at the top of your code says "A tool for looking up Perl 6 built-in subroutines/..." but it could also be used for non-built-in stuff as well if you happen to load the right module like: perl6 -MFoo p6routine foo | ||
smls | I suppose so :) | ||
TimToady | moritz: ^^^ | 17:29 | |
moritz | nine: rakudo rebuild on camelia complains: "fatal: Unable to look up github.com (port 9418) (Name or service not known)" | ||
EOUTSIDEOFMYCONTROL :-) | |||
TimToady | ESOMETHINGISWRONGONTHEINTERNET!!! | 17:30 | |
smls | Damn, p6routine still exhibits this weird "WARNING: unhandled Failure detected in DESTROY" bug for many operators | 17:31 | |
TimToady | well, that means there's a Failure leak somewhere, which we need to plug | 17:32 | |
17:32
yqt joined
|
|||
smls | Can a failure somehow sneak trough a .map({(try ... ) or next}) ? | 17:32 | |
TimToady | may well indicate that some construct is not sunk properly | ||
try should catch any failure going through it | 17:33 | ||
smls | e.g. run p6routine '+^' to see it in action (with newest r-m) | ||
TimToady | maybe we aren't setting a failure as "handled" when we throw it? | ||
s/it/its exception/ | 17:34 | ||
smls | The bug kept coming and going for different inputs as wrote that script; apparently never going for all of them. | ||
TimToady | if a failure did sneak out of try, the 'or' should mark it handled | ||
smls | And is seemingly affected by making changes to completely different parts of the script :o | 17:35 | |
TimToady | we did change the inside of try to 'use fatal', so maybe something in that mechanism isn't quite right | ||
17:35
llfourn left
|
|||
TimToady | but we're no longer using a dynamic variable for fatalizing, so the lazy dynamic scope of the map shouldn't matter, I'd think | 17:36 | |
in any case, the solution is not just to turn off the warning :) | 17:38 | ||
17:38
molaf joined
|
|||
TimToady | that would be of a defense industry solution... | 17:38 | |
smls | ;) | ||
TimToady | which kinda explains the 95% failure rate on recent TSA intrusion tests | 17:39 | |
well, I guess that would be 95% success rate, looking at it from the intrusion end :) | |||
17:45
smls left
17:46
smls joined
17:47
atweiden joined,
liztormato left
17:49
_mg_ left
17:50
smls left
17:55
vendethiel left
17:56
vendethiel joined
17:57
espadrine left
|
|||
TimToady | hmm, server can't find github.com: REFUSED | 17:58 | |
camelia and its DNS server don't appear to e on speaking terms currently | 18:00 | ||
atweiden | i have a MyApp.pm: | 18:04 | |
unit class MyApp; class MyApp::Config is export { class MyApp::Config::SubDataType { has $.count; } has MyApp::Config::SubDataType $.mydata; } has MyApp::Config $.conf; | |||
but when i try to access MyApp::Config from a separate file with `use MyApp::Config`, i get `Could not find MyApp::Config in any of:...` | |||
is it necessary to keep MyApp::Config in its own unit in a separate file? | |||
had tried combining multiple units, because wanted better type checking but was getting `Circular module loading detected involving module...` | 18:06 | ||
tony-o_ | you probably don't need to 'use' MyApp::Config | 18:10 | |
you don't need to use the MyApp::Config as long as you've 'use MyApp' in your other file | 18:13 | ||
atweiden: gist.github.com/tony-o/286bd818ecc712e0d862 | 18:14 | ||
timotimo | you don't need to - or rather: you cannot | 18:16 | |
"use" is about "compunits", which maps somewhat directly to "files" | |||
so with "use MyApp" you get all the stuff from that file in one "package" | 18:17 | ||
atweiden | so the `is export` is not needed? | 18:18 | |
tony-o_ | correct | ||
18:26
bin_005 joined
18:29
_mg_ joined
18:35
SevenWolf joined
|
|||
timotimo | classes are "our" scoped by default, aren't they? | 18:41 | |
18:41
larion joined
|
|||
timotimo | inside classes at least? | 18:41 | |
18:41
muraiki left
|
|||
FROGGS | always | 18:42 | |
18:48
rindolf left
18:50
brrt joined
|
|||
TimToady | nearly anything declares a term defaults to 'our' | 18:50 | |
18:51
yqt left
|
|||
TimToady | including subsets, enums, and constants | 18:51 | |
lizmat | computer: messages please | ||
yoleaux | 15:53Z <japhb> lizmat: re: rakudo 0f627ce, this reminds me: Seems like every Perl code base I touch, I add something like this: sub _s($count, $plural='s', $singular='') { $count == 1 ?? $singular !! $plural }; .say for "tree{_s($plants)}", "box{_s($container, 'es')}", "{_s($birds, 'geese', 'goose')}"; | ||
15:58Z <japhb> lizmat: Shouldn't the deprecation introduced in rakudo 71ebbb0 recommend Promise.start if the user needs :&catch? | |||
TimToady | m: { subset MyInt of Int; }; say OUR::MyInt | 18:52 | |
camelia | rakudo-moar c2a57e: OUTPUT«(MyInt)» | ||
TimToady | m: { subset MyInt of Int; }; say MyInt | ||
camelia | rakudo-moar c2a57e: OUTPUT«(MyInt)» | ||
TimToady | I guess it looks it up in OUR anyway | ||
FROGGS .oO( OurInt ) | |||
TimToady | m: { our sub foo { say "FOO" } }; foo; # in contrast, subs don't | 18:53 | |
camelia | rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/3Sf4pRUVZyUndeclared routine: foo used at line 1» | ||
TimToady | my view of constants has always been that they're basically very narrow types :) | ||
FROGGS | m: unit class Flubber; { subset MyInt of Int; }; say MyInt | ||
camelia | rakudo-moar c2a57e: OUTPUT«5===SORRY!5=== Error while compiling /tmp/3Ujutn20emUndeclared name: MyInt used at line 1» | ||
TimToady | hmm | 18:54 | |
FROGGS | m: unit class Flubber; { subset MyInt of Int; }; say OUR::MyInt | ||
camelia | rakudo-moar c2a57e: OUTPUT«(MyInt)» | ||
FROGGS | it probably looks at GLOBAL | ||
TimToady | I guess it just looks in yeah... | ||
which makes sense, since it has to start in GLOBAL to find anything in any package | 18:55 | ||
18:55
_mg_ left,
bin_005 left
18:56
bin_005 joined
19:02
Peter_R joined
|
|||
dalek | kudo/nom: da586e3 | lizmat++ | / (3 files): Introduce Int.s, for those pesky s's Inspired by japhb++ , it returns '' if the Int == 1, else it returns 's' |
19:04 | |
nwc10 | but what if I need an es? And can I have .d for duals? :-) | 19:05 | |
lizmat | I could use this at 4 locations in the core, so at least internally it made sense | 19:06 | |
nwc10 | yes, thinking about it, there is an itch here that can be scratched | 19:07 | |
I thought of duals first (to sort of satirise the English-specific bit, and the potential complexity slippery slope) | |||
but the es question is a bit more pertinent, because even English will hit it maybe 1/26th of the time. But I don't have a good answer | 19:08 | ||
19:09
rindolf joined,
kurahaupo1 left
|
|||
raydiak | .oO( what we need are localized error messages in rakudo... ) |
19:09 | |
19:09
larion left
|
|||
hoelzro | seems like there should be a module that provides pluralize($word, $count, :en) | 19:10 | |
lizmat | raydiak: that is a different issue that can be handled by mixing in .message methods in the exception classes for the desired language | ||
DrForr | Don't we usually put that in a Lingua:: module? | ||
hoelzro | DrForr: in P5 land, yeah | 19:11 | |
lizmat | nwc10: something like this? | 19:12 | |
$ 6 'my $c = 1; say "$c child$c.s(q/ren/)"' | |||
1 child | |||
$ 6 'my $c = 2; say "$c child$c.s(q/ren/)"' | |||
2 children | |||
DrForr | I know we're in a new venue, but pluralization is more complex than just picking a language ID :) | ||
nwc10 | yes. I think that will get everything apart from pedants with >1 ox. | ||
lizmat | DrForr: I'm well aware of that, thinking back at former $wiork where they now have to support 40+ languages | 19:13 | |
$work | |||
moritz | that's tough. | 19:14 | |
DrForr | I imagine you knew the complications, just thinking of other people that haven't worked there :) | ||
lizmat | gettext just doesn't cut it | ||
19:15
yqt joined,
yqt left
19:16
yqt joined
|
|||
dalek | kudo/nom: fa76a98 | lizmat++ | src/core/Int.pm: Allow setting the multi extension |
19:16 | |
19:19
llfourn joined
19:23
domidumont left
19:24
llfourn left
19:26
telex left
|
|||
PerlJam | hoelzro: github.com/rails/rails/blob/master...er.rb#L220 :-) | 19:27 | |
19:27
khisanth_ joined
19:28
telex joined
|
|||
zostay | m: my $b = Buf.new(1, 2); $b ~= Buf.new(3, 4); | 19:28 | |
camelia | ( no output ) | ||
19:30
Khisanth left,
sjn_phone joined
19:33
sjn_phone_ left
19:37
rindolf left
|
|||
japhb | lizmat: The signature ending in "$plural='s', $singular=''" was quite intentional. You will end up wanting the singular case as well at some point for e.g. $birds.s(|< geese goose >) ;-) | 19:38 | |
lizmat | well, this is good enough for internal core usage | ||
and we don't do geese in the core | 19:39 | ||
japhb resists the urge to fowl things up | |||
19:40
brrt left
|
|||
lizmat looks forward to some chickun | 19:40 | ||
aka some faux chicken at verticaldiner.com | 19:47 | ||
19:48
FROGGS left
|
|||
japhb | The YAPC vegan meetups, I'm guessing? | 19:50 | |
19:50
espadrine joined
|
|||
lizmat | yeah, autarch is looking forward to it, which is always a good sign :-) | 19:50 | |
dalek | ast: 08b7bd4 | lizmat++ | S17-promise/start.t: Check for start taking a blorst |
19:53 | |
19:53
pecastro left
|
|||
PerlJam remembers having vegan ice cream (for the first time ever) with autarch in Austin | 20:00 | ||
20:01
darutoko left
|
|||
lizmat remembers the same, but in Madison :-) | 20:01 | ||
20:03
colomon left
|
|||
japhb | jnthn: Got a couple minutes to answer questions about Evject? | 20:04 | |
jnthn | japhb: Sure | ||
20:05
brrt joined
|
|||
japhb | So ... the design seems difficult to use for heavy or often-mutated objects, which would have a current state built up from a great number of events, because it looks like you'd get O(N**2) performance, as each new mutation takes longer | 20:07 | |
20:07
smls joined
|
|||
japhb | How is this actually addressed in production code, since I assume that could have been a simplification just to teach the concept? | 20:07 | |
lizmat | gist.github.com/lizmat/5ae61833fe735865f1fa # trying to implement $=finish | 20:08 | |
japhb | (Come to think of it, you could get O(N**3) performance if the object contains arrays that get copied each time.) | ||
jnthn: ^^ | |||
smls | lizmat: Are you sure having an .s method for pluralization is a good idea? It'll be very easy to confuse it with the file test method of the same name. | 20:10 | |
PerlJam | japhb: What's Evject? | ||
jnthn | japhb: Whether that's actually a problem is highly domain-specific. I've applied this technique in the context of domain driven design, and I've found in many cases the aggregates only have so many events over their lifetime. | ||
lizmat | smls: good point | ||
jnthn | japhb: There's an easy optimization available when needed, though, typically called snapshotting: you every so often store a serialized copy of the state at a particular version. | 20:11 | |
japhb: From a functional programming point of view, that's completely safe: applying events is just a fold, and the snapshot is simply memoization. | |||
lizmat | smls: suggestion for different name, or perhaps I should just revert the Int.s related commits as it has descended on a slippery slope already | ||
jnthn | japhb: Just need to make sure that a representation change invalidates the snapshot. | ||
japhb | jnthn: So instead of building up from a new object, you build up from the last snapshot, bounding the longest time to rebuild the object, hmmm, yes. | 20:12 | |
jnthn | japhb: Yeah | ||
japhb | jnthn: Explain that last bit? | ||
smls | IMO the problem of pluralizing user output is quite context-dependent and can be approched in different ways, which suggests to me that it is best left to module space. | ||
japhb | PerlJam: It's the framework jnthn++ created for the last section of his objects intersect concurrency talk. | ||
smls | though if we do have something in core, it might make sense to borrow the PL naming scheme of perl5's lingua modules | 20:13 | |
japhb | PerlJam: gist.github.com/jnthn/da27ded3fbf06df7c54a | ||
jnthn | japhb: The benefit of event sourcing is that you get a persistence strategy that doesn't break the object's encapsulation and doesn't lead to schema duplication, as seen in the ORM approach. | ||
japhb | smls: General pluralization shouldn't be in core. :-) | ||
jnthn | japhb: This gives freedom to refactor the innards of the object | ||
brrt | oh, i have one more for that | 20:14 | |
jnthn | japhb: And then deploy a new version, and the new state is built up from the event history | ||
japhb | jnthn: Ah! Meaning you have to make sure a refactoring doesn't make your snapshot unusable | ||
jnthn | japhb: However, if you cache the state, you need to...right :) | ||
brrt | the benefit of event sourcing (and CQRS) is that you sidestep the inherent conflict between readers and writers | ||
jnthn | japhb: Note that event sourcing + actors have also been mixed happily, which gives you another interesting point in the field. | ||
brrt | readers want a consistent, valid value | 20:15 | |
jnthn | japhb: See Akka.Persistence for an example of that. | ||
brrt | writers just want to stuff their data and have you deal with it | ||
in an RDBMS you typically optimize for readers (if you have lots of constraints and checks) | 20:16 | ||
which makes your application difficult to interface with | |||
if you use event sourcing, you decouple write operations from the 'read result' | 20:17 | ||
japhb is planning to try this with some really quite heavy objects, which will have quite long event histories, so it will be interesting to see when Rakudo's performance profile makes me want to start snapshotting | |||
brrt | hence you can explicitly balance between the two demands | ||
japhb | brrt: hmmm | 20:18 | |
brrt | i like that answer :-) | ||
20:18
_mg_ joined
|
|||
jnthn | japhb: One interesting thing is that "just serialize it quick somehow" is often awkward for objects 'cus then you have refactoring pain (the serialized representation doesn't just deserialize to the right thing), but if that's only serving as cache then you're fine. :) | 20:19 | |
japhb | :-) | 20:20 | |
dalek | kudo/nom: eebebb7 | lizmat++ | / (3 files): Undo pluralization hack, it was too slippery |
||
japhb chuckles at that commit message | |||
brrt | that does then imply that your events need to be serialised in a refactoring-independent way | 20:21 | |
jnthn | To date, I think ES is the best way I've seen to persist highly behavioral objects. | ||
japhb | ES? | ||
jnthn | Event Sourcing | ||
japhb | Oh, I see, I thought you were talking about a particular framework or so. | ||
Yeah, my biggest fear is that I'm going to lose the clarity that came with being able to see the procedural code all in a line. | 20:22 | ||
jnthn | brrt: Events are immutable; if you introduce a new version of an event then you still support applying the previous one, or just do a mapping to the new version. | ||
brrt | ok, i can see how that works out | ||
20:26
rba_ joined
20:27
brrt left,
brrt joined
20:31
_mg_ left
|
|||
dalek | kudo-star-daily: ea5a544 | coke++ | log/ (2 files): today (automated commit) |
20:33 | |
rl6-roast-data: fa46400 | coke++ | / (9 files): today (automated commit) |
|||
[Coke] | ecosystem-api.p6c.org/ probably needs an index.html if it's going to get past corporate site classification for http proxies. | 20:34 | |
20:34
colomon joined
|
|||
[Coke] | -1 on adding .s to Int | 20:34 | |
(if it it's private to the core, that's fine, but I don't want it as part of the exposed API) | 20:35 | ||
... and now I'm caught up with backscroll. Thanks. :) | 20:36 | ||
lizmat | [Coke]: people who used the Source would have found out and abused it | 20:39 | |
20:40
molaf left
|
|||
japhb | That brings up the general problem of helper routines that are merely meant to reduce duplicated code across the setting but which we don't want to support generally for user code ... how do we want to do that? | 20:43 | |
20:43
zakharyas joined
|
|||
jnthn had thought of putting them in a Rakudo::Internal:: package | 20:44 | ||
[Coke] | hoelzro: ooh, you got those two S26 tests running? | 20:49 | |
hoelzro | I did! | ||
thanks to jnthn, moritz, and lizmat's assistance | |||
20:50
telex left
|
|||
nwc10 | jnthn: Rakudo::S3kr1t would be less typing | 20:50 | |
remember, #define private public | 20:51 | ||
(people will always try stuff you would rather that they didn't) | |||
japhb | nwc10: Why stop at obfuscated ASCII? Let's go full Unicode on this bikeshed! | ||
nwc10 | make sure it's outside the base plane, to confuse inferior implementations | ||
[Coke] | hoelzro++ | 20:52 | |
lizmat | couldn't we have something like find_symbol work differently inside the core (including Rakudo::Internal) and outside ? | ||
[Coke] | .u private | 20:53 | |
yoleaux | U+0091 PRIVATE USE ONE [Cc] (<control>) | ||
U+0092 PRIVATE USE TWO [Cc] (<control>) | |||
U+2F1B KANGXI RADICAL PRIVATE [So] (⼛) | |||
[Coke] | .u secret | ||
yoleaux | U+3299 CIRCLED IDEOGRAPH SECRET [So] (㊙) | ||
[Coke] | m: unit package Rakudo::㊙; | ||
camelia | rakudo-moar c2a57e: OUTPUT«===SORRY!===Name Rakudo:: ends with '::' and cannot be used as a package name» | ||
[Coke] | *sniff* | ||
jnthn | lizmat: I'd rather not; Perl 6 has sufficient introspective power that I'm very wary of such tricks ;) | ||
20:54
telex joined
|
|||
jnthn | lizmat: Further, I think it's OK for things like the debugger UI to use such things. | 20:54 | |
lizmat: Or custom settings. Most important is that it's very explicit what you're dong | |||
dong | |||
doing! | |||
lizmat | then, by definition, it is ok for other users | ||
ding dong ? | |||
japhb | Well, we don't actually need to keep people from using these helpers; we merely need to make it clear that it's not part of the public API. | 20:55 | |
jnthn | lizmat: Sure, as are nqp:: ops if you pre-decl... | ||
lizmat | use Rakudo::Internals | ||
japhb | .oO( use Rakudo::Internals; ) |
||
jinx! | |||
lizmat | hehe great minds :-) | ||
jnthn | What japhb++ said though; we don't tend to outright ban stuff you likely oughtn't do in Perl, just strongly hint you probably might want something else... :) | 20:56 | |
[Coke] | we should definitely have stuff that we can change without fear of breaking users. | 20:58 | |
jnthn | Indeed, so long as it's clear to said users that's what they're getting themselves into. | 20:59 | |
dalek | kudo/nom: 277fcc1 | lizmat++ | src/Perl6/ (3 files): Implement $=finish |
21:00 | |
jnthn | .oO( Are you finish? ) |
||
hoelzro | during my talk last Thursday, Joel Berger mentioned niecza. I tried building it this morning, but no luck with Mono 4. Has anyone here built it succesfully recently? | ||
lizmat++ | |||
lizmat | $ 6 '.say for $=finish.words; | 21:01 | |
> =finish | |||
> Hello World | |||
> ' | |||
Hello | |||
World | |||
21:01
colomon left
|
|||
vendethiel | lizmat++ :) | 21:01 | |
hoelzro: don't think so | |||
[Coke] | hoelzro: github.com/coke/perl6-roast-data/b...ummary.out - not for nine months. | 21:02 | |
(at least) | |||
hoelzro | ouch | ||
[Coke] | I'd be happy to add it back, but it got to the point where maintaining roast to be fudged properly was too hard given no one was updating the code. | 21:03 | |
21:04
colomon joined
|
|||
[Coke] | (esp. once new builds started failing.) | 21:04 | |
Ditto pugs. | |||
dalek | kudo/nom: fbe0b4e | lizmat++ | docs/ChangeLog: Mention $=finish |
||
japhb wishes we still had lambdacamels about. I miss them. | 21:05 | ||
21:05
skarn left,
bin_005_b joined,
bin_005 left
|
|||
hoelzro | [Coke]: yeah, and with a build that's currently failing, it makes it that much harder for anyone to pick it back up =( | 21:05 | |
21:11
skids left
|
|||
grondilu | github.com/grondilu/openssl/pull/4/files # what is this C<unit> keyword before a module declaration? | 21:12 | |
[Coke] | I tried to squawk loudly when it happened, fwiw. | ||
But I have no problem with A) focusing on rakudo, and B) focusing primarily on one backend. | |||
smls | What's a lambdacamel? | 21:13 | |
[Coke] | I suspect rakudo-on-.net will happen before niecza is resurrected. | ||
smls: a haskel programmer who does perl 6 (pugs developers) | |||
dalek | ast: 5aa29ab | lizmat++ | S02-lexical-conventions/begin_end_pod.t: Add basic test for $=finish |
21:14 | |
hoelzro | [Coke]: agreed | 21:15 | |
21:15
colomon left
|
|||
hoelzro | grondilu: it's a new keyword that's required before unit-level declarations that use the "module/grammar/whatever Name;" form | 21:16 | |
dalek | ecs/newio: 77a0785 | lizmat++ | S99-glossary.pod: Add blorst lemma |
||
vendethiel | lizmat++ # lemmas! | 21:17 | |
dalek | ecs: 0b3d1f4 | lizmat++ | S99-glossary.pod: Add blorst lemma (in right branch this time) |
21:19 | |
japhb | smls: As well as working on Pugs, lambdacamels tended to be really excellent sources of deep CS knowledge, due to the particular mental type that wants to sit at the intersection of Haskell and Perl 6. | ||
smls | i can imagine | ||
japhb | (Audrey Tang)++ # The ultimate lambdacamel | ||
grondilu guess he'll have to read S11 again now | |||
lizmat | she would need to indeed | 21:20 | |
21:21
skarn joined,
zakharyas left,
larion joined
21:34
bin_005_b_m joined,
bin_005_b left
21:36
colomon joined
|
|||
lizmat | std: __END__ | 21:38 | |
camelia | std 28329a7: OUTPUT«5===SORRY!5===Undeclared name: '__END__' used at line 1Check failedFAILED 00:00 134m» | ||
lizmat | TimToady: thinking about adding a more useful error mentioning $=finish / =finish | 21:39 | |
21:39
bin_005_b_m left
|
|||
lizmat | TimToady: any suggestions as to where to do that? | 21:39 | |
21:39
bin_005_b_m_c joined
|
|||
lizmat | TimToady: jnthn suggested doing a token term:sym<p5end> { ^^ __END__ $$ <.obs: ...> }, but that feels like overkill | 21:39 | |
grondilu | (yeah Martin Fink is speaking now!) | 21:44 | |
jnthn | Sleep time; 'night o/ | 21:45 | |
lizmat | good night, jnthn : sweet dreams in your new apartment! | 21:46 | |
brrt | sleep well jnthn and the rest | 21:53 | |
21:53
brrt left
21:56
bin_005_b_m_c left
21:57
bin_005 joined
|
|||
RabidGravy | is applying role that supplies a CALL-ME the best way of implementing a method trait that provides the entire implementation of the method? (like NativeCall does) | 21:58 | |
lizmat | good question | 21:59 | |
RabidGravy | it appears to work | 22:00 | |
eg. | 22:02 | ||
m: role Foo { method CALL-ME(*@args) { say @args[0].boot; } }; multi trait_mod:<is>(Routine $r, :$foo!) { $r does Foo; }; class Bar { has $.boot = "ghhggh"; method boom() is foo {}; }; Bar.new.boom; | |||
camelia | rakudo-moar c2a57e: OUTPUT«ghhggh» | ||
dalek | kudo/nom: 2f1960c | lizmat++ | src/Perl6/Grammar.nqp: Give meaningful feedback on __END__/__DATA__ |
||
22:03
bin_005 left
22:04
bin_005 joined
|
|||
lizmat | .tell TimToady could you check github.com/rakudo/rakudo/commit/2f1960c7e9 for sanity ? | 22:04 | |
yoleaux | lizmat: I'll pass your message to TimToady. | ||
22:06
kaare_ left
|
|||
RabidGravy | nighty night | 22:08 | |
lizmat | good night, RabidGravy | ||
lizmat also calls it a night | 22:09 | ||
dalek | kudo/nom: 7023a52 | lizmat++ | docs/ChangeLog: Mention __END__/__DATA__ obsoleteness |
22:11 | |
lizmat | good night, #perl6! | ||
22:12
diana_olhovik_ left
22:13
RabidGravy left
22:20
llfourn joined
22:23
bin_005 left
22:25
llfourn left
22:50
smls left
22:56
skids joined
23:07
adu joined
23:09
larion left
23:26
dolmen joined
23:31
[Sno] left,
[Sno] joined
23:33
lolisa left
23:34
pecastro joined
23:36
telex left
23:38
telex joined
23:41
amurf joined
23:46
mr-fooba_ left
23:47
mr-foobar joined
23:48
dolmen left
23:54
diegok joined
23:58
flaviusb joined
|