»ö« 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! | feather will shut down permanently on 2015-03-31
Set by jnthn on 28 February 2015.
timotimo oooh we're getting a working YAML parser for perl6 finally? 00:02
00:03 lizmat left
timotimo .tell lizmat i'd have to actually measure what the overhead of actually "generated" accessors would be; it'd have an impact on the core setting file on disk and the ram of a running program (plus having speshes for each individual instance of accessors etc etc) 00:06
yoleaux timotimo: I'll pass your message to lizmat.
timotimo on the other hand, that may allow us to inline checks from where clauses etc?
00:10 dayangkun joined 00:37 aborazmeh joined, aborazmeh left, aborazmeh joined 00:39 Zoffix joined 00:42 nbdsp joined 00:47 leont joined 00:51 colomon left 00:56 leont left 00:58 nbdsp left 01:00 silug joined, dayangkun left 01:01 dayangkun joined 01:09 laouji joined 01:10 gcole left 01:13 laouji left 01:15 grondilu left 01:28 Sibin joined, Sibin left 01:45 dolmen joined 01:51 colomon joined 01:54 aborazmeh left 02:03 chenryn joined 02:05 noganex_ joined 02:08 noganex left 02:10 laouji joined 02:14 laouji left 02:15 colomon left 02:23 nbdsp joined 02:30 quester joined 02:34 quester is now known as quester_ 02:35 quester_ left, quester_ joined, quester_ is now known as quester 03:08 Gothmog_ left, Gothmog_ joined 03:42 aborazmeh joined, aborazmeh left, aborazmeh joined 03:52 BenGoldberg left 03:55 laouji joined 04:00 jack_rabbit left 04:02 konsolebox joined 04:03 jack_rabbit joined 04:09 chenryn left 04:31 chenryn joined 04:34 laouji left, _1_shuklaatul joined 04:35 kaare_ joined
_1_shuklaatul ?? 04:36
TimToady !! 04:37
raydiak ..
04:39 aborazmeh left, _1_shuklaatul left
quester Is it just me, or does "Unsupported serialization format version 12 (current version is 15)" seems like an LTA message to say that some module... 04:42
... not named in the error message, needs to recompiled into mbc?
04:43 beastd left
quester If anyone else has run into this, a quick and very dirty fix is: find . -type f -iname '*.pm' | while read line; do echo $line; perl6 --target=mbc --output=$line.moarvm $line; done 04:44
... and repeat as needed if the .pm's involved use each other. 04:45
04:50 lolisa joined
quester ... and you may need to do the same thing for .pm6 files as well. 04:55
04:57 diana_olhovik_ joined 05:04 cschwenz joined, diana_olhovik_ left, FROGGS[mobile] left
cschwenz .botsnack 05:04
yoleaux :D
05:05 lolisa left
quester (afk) 05:06
05:07 laouji joined 05:09 spider-mario left 05:10 cschwenz is now known as cschwenz_, cschwenz_ is now known as cschwenz1, cschwenz1 is now known as cschwenz 05:11 spider-mario joined, cschwenz left 05:53 anaeem1_ joined
nine .tell nbdsp you can set dbh attributes using the 4th argument to connect: DBI.connect('dbi:mysql:database=testDB;host=localhost;port=3306', 'user', 'password', {mysql_enable_utf8 => 1}); 05:53
yoleaux nine: I'll pass your message to nbdsp.
jnthn morning, #perl6 05:55
yoleaux 19 Apr 2015 19:33Z <FROGGS> jnthn: after successfully bootstrapping panda I try to install a dist, and then it explodes when serializing a null object: gist.github.com/FROGGS/c6d637b32e4665ec3882
19 Apr 2015 19:35Z <FROGGS> jnthn: I believe this object is a string, the absolute path to the panda script that is currently running (aka $*EXECUTABLE)... is there something I need to take care of?
19 Apr 2015 19:39Z <FROGGS> jnthn: I pushed to rakudo/jsoff in case you are curious
nine .tell lizmat actually, my patch to perl for use v6; support doesn't even require Inline::Perl6. It works as long as you have some perl6 binary in your $PATH 05:56
yoleaux nine: I'll pass your message to lizmat.
05:57 diana_olhovik_ joined
jnthn .tell FROGGS I'm curious how you ended up with a real NULL in the objects to serialize list... 05:57
yoleaux jnthn: I'll pass your message to FROGGS.
jnthn .tell FROGGS Something seems a bit off there. Can't immediately tell what. 05:58
yoleaux jnthn: I'll pass your message to FROGGS.
nbdsp nine: that worked! thanks!
yoleaux 05:53Z <nine> nbdsp: you can set dbh attributes using the 4th argument to connect: DBI.connect('dbi:mysql:database=testDB;host=localhost;port=3306', 'user', 'password', {mysql_enable_utf8 => 1});
06:13 mr-foobar left 06:22 KimmoNO left 06:23 FROGGS left 06:25 brrt joined 06:33 yvan1 left 06:38 _mg_ joined 06:39 spider-mario left 06:41 virtualsue joined
brrt \o 06:42
just here to point you all to my hague grant application at tpf: news.perlfoundation.org/2015/04/per...ation.html 06:43
please be just as critical as you like :-)
jnthn \o/ 06:45
06:45 bjz joined 06:47 laouji left 06:48 FROGGS joined 06:50 laouji joined
FROGGS .schnickschnack 06:53
yoleaux 05:57Z <jnthn> FROGGS: I'm curious how you ended up with a real NULL in the objects to serialize list...
05:58Z <jnthn> FROGGS: Something seems a bit off there. Can't immediately tell what.
moritz brrt: the example you mentioned seems to be missing 06:57
brrt oh, yes
the links are missing
moritz glad it's not just me :-)
brrt gist.github.com/bdw/fef76ca07b7203e49fc2 is the example
dunno if you are familiar / comfortable with at&t syntax 06:58
and to be really clear about it, this is a *highly artificial* example 06:59
real code will not see such benefits
06:59 dolmen left
brrt unless we attack other parts of the stack as well 06:59
07:00 MARTIMM joined
moritz well, that's the nature of optimizations 07:00
07:00 laouji left 07:01 zakharyas joined, Ven joined 07:04 abraxxa joined
brrt sure. i just don't want anybody thinking we'll get a 5x speedup for free :-) 07:05
moritz not free, it'll cost us 10k :-) 07:06
07:06 lizmat joined, bjz left
moritz and yes, I know I know, just fooling around 07:06
brrt :-D 07:09
07:10 laouji joined
masak morning, #perl6 07:10
moritz \o masak
brrt \o masak 07:11
jnthn o/ FROGGS, moritz, masak, lizmat :) 07:12
lizmat good morning, jnthn !
yoleaux 00:06Z <timotimo> lizmat: i'd have to actually measure what the overhead of actually "generated" accessors would be; it'd have an impact on the core setting file on disk and the ram of a running program (plus having speshes for each individual instance of accessors etc etc)
05:56Z <nine> lizmat: actually, my patch to perl for use v6; support doesn't even require Inline::Perl6. It works as long as you have some perl6 binary in your $PATH
FROGGS morning @all 07:13
El_Che the elfs are working hard to make christmas possible! :) 07:14
07:19 alini left 07:20 lizmat left
masak is so confused, because in Scandinavia there are no elfs, only small clones of Santa 07:21
07:21 lizmat joined, lizmat left, lizmat joined
lizmat brrt++ # Hague Grant Application 07:22
brrt thanks :-)
moritz masak: and trolls!
07:22 RabidGravy joined
brrt but a scandinavian troll is not the same as an internet troll... or is it 07:22
masak moritz: Scandinavia had trolls before it was cool. :P 07:23
07:26 Rounin joined 07:28 quester left, jack_rabbit left
lizmat M: nqp::say("foo") 07:30
m: nqp::say("foo")
camelia rakudo-moar 4ba4aa: OUTPUT«===============================================================================␤The use of nqp::operations has been deprecated for non-CORE code. Please␤change your code to not use these non-portable functions. If you really want␤to keep using nqp:…»
lizmat m: use nqp; nqp::say("foo")
camelia rakudo-moar 4ba4aa: OUTPUT«foo␤»
moritz lizmat++
jnthn lizmat: Hmm, I'd say it's only deprecated without using "use nqp;" 07:31
Ven o/, @*peeps
lizmat m: use nqp; nqp::say("foo"); { no nqp; nqp::say("bar") }; nqp::say"baz"
camelia rakudo-moar 4ba4aa: OUTPUT«5===SORRY!5=== Error while compiling /tmp/9T27cQDIit␤Two terms in a row␤at /tmp/9T27cQDIit:1␤------> 3); { no nqp; nqp::say("bar") }; nqp::say7⏏5"baz"␤ expecting any of:␤ infix␤ infix stopper␤ statement end…»
lizmat m: use nqp; nqp::say("foo"); { no nqp; nqp::say("bar") }; nqp::say("baz")
camelia rakudo-moar 4ba4aa: OUTPUT«===============================================================================␤The use of nqp::operations has been deprecated for non-CORE code. Please␤change your code to not use these non-portable functions. If you really want␤to keep using nqp:…»
lizmat jnthn: it is 07:32
jnthn++ # lexical pragma's framework
BTW, *all* the pragmas now also work with -M 07:33
jnthn lizmat: No, I more meant that I'd phrase it not as "deprecated for non-CORE code" but "deprecated without 'use nqp;'" 07:34
lizmat: Yes, I saw :)
07:34 rurban_ joined
brrt i wonder if we can add tracing without a very significant runtime cost.... 07:34
... we can 07:35
but it is more evil than you might imagine
(at least if you have CGOTO's)
lizmat jnthn: I'll gladly leave the phrasing of the message to the bikeshedding team :-)
brrt: looking forward to seeing that evilness in action ;-) 07:36
jnthn We can't rely on CGOTO, alas.
I'd more been thinking of using the specialization framework to produce a trace-recording version of the code. 07:37
brrt the evilness was replacing the cgoto table to a version that added trace by the way :-). that would be relatively cheap 07:38
i have no quick idea on how to let spesh do it though
07:38 cschwenz joined
brrt but i'm afk for now :-) 07:38
07:38 brrt left 07:39 zeleiadi joined 07:40 renormalist joined, jack_rabbit joined
arnsholt Object modeling musing: Does it make sense to have a role that can only be mixed into subtypes of a particular class? 07:41
jnthn arnsholt: What makes it only possible to mix it into subtypes of a particular class? 07:42
moritz that would have been my question too :-)
arnsholt Assuming things about stuff the mixed-into type can do
moritz arnsholt: the usual approach is more that require a certain role (instead of a subclass)
s/that/to/
arnsholt Basically, this comes from stuff I'm doing at $work ATM (in Python)
dalek kudo/nom: a96118d | labster++ | src/core/ (2 files):
move methods from Cool.pm to Str.pm: <codes chars uc lc tc tclc ord flip>

Boost performance on all of these functions by ~25% when performed on a Str object; roughly unchanged performance on other Cool types.
07:43
jnthn arnsholt: You could express those as requirements.
(in the role)
moritz with perl 6 roles, if role R depends on stuff from type A, make A a role too, and have R do A
jnthn Or what moritz said.
arnsholt Yeah, that probably makes more sense
moritz labster++
arnsholt Of course, Python doesn't have roles, so it's all classes 07:44
07:45 yvan1 joined
arnsholt What I have is more or less this: A hierarchy of Tool-subclasses, doing various things. And a collection of tools that are weird and idiosyncratic. So I have a utility class for those problematic tools that I inherit from, as well as the relevant Tool subclass 07:46
labster Yeah, I thought that boosting the performance might have something to do with the unboxing op, but it didn't seem so useful on other Str functions... maybe I'm just giving the dispatcher stronger hints.
jnthn labster: You are quite possibly also bringing things below the size limit for inlining.
arnsholt In Python it's just normal multiple inheritance, but it feels sort of like a role, but of course the utility class assumes that downstream classes also inherit from Tool
jnthn labster: Which both the JVM and MoarVM can perform. 07:47
labster Yeah, I had read about it in JVM, cool to know that Moar can pull the same trick.
07:53 jack_rabbit left
jnthn In NFG news, I just got my 500 "code points -> NFG string -> code points" tests passing. :) 07:56
moritz \o/
07:58 rindolf joined
labster jnthn++ 08:00
08:00 nbdsp left
Ven jnthn++ :) 08:04
08:06 zjmarlow joined
sjn sweet! 08:09
08:10 alini joined 08:14 darutoko joined
FROGGS jnthn++ # \o/ 08:16
08:20 virtualsue left 08:22 bjz joined 08:23 andreoss joined 08:24 andreoss left, andreoss joined 08:26 bjz left
dalek ast: c9d683a | jnthn++ | S15-nfg/test-gen.p6:
Script to generate some mass NFG tests.

We look through the Unicode Normalization Tests for cases where the NFC form contains non-starters, giving us some good candidates for NFG tests. We then generate tests checking we get the correct results for .chars, and that we can get back from NFG to codepoints. Mostly we will be going to NFC, so we generate more tests for that, but produce 100 each for the other forms too just to quickly sanity test them.
08:27
ast: 27b17e3 | jnthn++ | S15-nfg/mass- (5 files):
Add a bunch of NFG tests.

Generated from the Unicode NormalizationTests.txt. They are emitted in numbers that make them suitable for inclusion in a normal spectest run rather than being stress tests.
08:29
masak is teaching Angular today 08:31
dalek p: f4f7adc | jnthn++ | tools/build/MOAR_REVISION:
Bump MOAR_REVISION for latest NFG bits.
jnthn masak: Have fun :)
masak Angular is a lot like Perl 6. reckless, dangerous, self-consciously ugly, and "it's the magic that counts".
or, should I say, Perl in general.
moritz shouldn't it be called "Polar"? :-)
masak not sure I see why it should 08:32
the name refers to the <> things in HTML tags.
moritz has been thinking in coordinate systems
masak ooh, and then you could have a web framework called Cartesian
and then someone unites Cartesian and Polar, and makes Cylindrical 08:33
and then someone somehow unites Polar with itself, and makes Toroidal
:P
nwc10 I can see a hole in that.
moritz and then Randall Munroe steps in, and starts to make map projection javascript frameworks :-) 08:34
dalek kudo/nom: 3ac5c31 | jnthn++ | src/core/Uni.pm:
Add Str method to Uni.

Goes from a Uni (code point level) to an NFG string (soon!)
kudo/nom: 44daca2 | jnthn++ | src/core/Str.pm:
Implement Str.[NFC|NFD|NFKC|NFKD].
kudo/nom: 81fe3c3 | jnthn++ | tools/build/NQP_REVISION:
Bump NQP_REVISION for Moar NFG bits so far.

Certainly we're not all the way on NFG, but enough to pass a bunch of tests, and it's nice to get others running them for wider testing.
masak nwc10: the best thing algebraic topology has done for me is to give me not just a normal intuition of what a hole is in a space, but also a *mathematical* intuition. 08:35
nwc10: my dad can't explain how the universe can have a "shape" if there's no (observable) "outside". but with enough mathematical background it's clear to me, even if I can't explain it to him. 08:38
08:40 Rounin left
dalek kudo/nom: 5cfddf5 | jnthn++ | t/spectest.data:
Run a bunch of NFG spectests on Moar.

These all should pass with the work done so far.
08:42
08:42 rarara joined 08:45 Rounin joined 08:52 skids left
moritz masak: re shape of the Universe, it reminds me of something a professor once said in a lecture... 08:52
masak: it was about the question where the Big Bang happened
masak: and the answer was that there are two equally valid models to think of the Universe expanding
think of an expanding baloon 08:53
DrForr The entire *universe* is running away from me...
08:53 risou is now known as risou_awy
moritz and the first way of thinking is to equate the Universe with the baloon; so the Big Bang was everywhere that the Universe is now 08:53
08:53 risou_awy is now known as risou
moritz and the second way of think is to equate the Universe with the *surface* of that balooon 08:54
and in that way of thinking, the Big Bang happened somewhere that's not even in the current Universe right now :-)
08:54 bjz joined, [TuxCM] joined
masak moritz: I'd heard the expanding balloon metaphor before, but I think I'd only heard it in the latter sense, with the universe being the surface. 08:58
moritz: my point is that, even if we restrict the universe to being just the surface, it's entirely possible to define things such as "positive curvature" without ever needing to refer to things that are not the surface. 08:59
lizmat goes sightseeing and is looking forward to testing all the new good stuff late tonight
&
08:59 lizmat left
moritz masak: right; just the way that angles add up in a triangle is enough to observe curvature 08:59
masak right; and the behavior of parallel lines. 09:00
moritz aye
DrForr In your *face*, Euclid. 09:01
masak .oO( in your *edge*, Euclid. in your *vertex*, Euclid. ) 09:02
DrForr masak+=-(-2) 09:03
masak I'm still struggling a bit with the concept of homology, to be honest. 09:04
and don't even get me started on cohomology.
09:05 espadrine joined
RabidGravy while we're on the subject of euclid, what would be a good character for an operator for gist.github.com/jonathanstowe/ff08...1b39aeebed ? 09:07
i.e. $somelistything = $slots <somechar> $fills 09:08
moritz erm, sorry, what does it do?
DrForr Well, the paper just uses E(x,y)... 09:10
RabidGravy if e.g. slots is 16 and fills is five it makes 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0
my interest in it is for generating rhythmic pulse for musics 09:11
moritz well, we use x for repeating
so $x x<mumble> $y
and if it's about intervals, maybe xi ? 09:12
or more 'x devided by y intervals', xd ?
DrForr $x x. $y # at least going by the results, though it'd be almost impossible to pick out in text.
moritz or x/
or x%
RabidGravy yeah x% is visually distinct, cheers 09:15
09:17 Ven left 09:19 zeleiadi left 09:23 andreoss` joined
rarara Are grammars normal objects? Is it possible to override parse() ? 09:26
moritz rarara: yes and yes
rarara: a grammar is just a class that also inherits from class Grammar 09:27
m: grammar G { }; say G.^mro
camelia rakudo-moar 5cfddf: OUTPUT«(G) (Grammar) (Cursor) (Any) (Mu)␤»
09:27 andreoss left
rarara ah ok, I just made my first perl6 grammar: a fastq format parser. Would like to try to see if it would be feasible to use it to parse files which only "mostly" parsable 09:29
sergot hi #perl6 \o 09:31
FROGGS hi sergot 09:33
rarara but subparse seems useful enough 09:34
09:35 rurban_ left
rarara How do you iterate on a parse tree in a perl 6 grammar parse output? 09:41
09:43 cschwenz left, cschwenz joined
ingy anyone know if tadzik is in Berlin still today? 09:44
FROGGS rarara: depends... yuo either want to use actions of loops
bbiab
09:47 cschwenz left
rarara Actions, right 09:47
09:53 Ven joined
nine ingy: I think I remember him saying that he'll go home this evening 09:55
rarara There is some thing which is confusing me in the documentation.
From class grammar: If the action named argument is provided, it will be used as an action object, that is, for each successful regex match, a method of the same name (if it exists) is called on the action object, passing the match object as the sole positional argument.
then there is the "made" method which let you get the result of action 09:56
why would this method be needed?
10:00 brrt joined, MARTIMM left
rarara I guess it would be possible to define a Grammar class which doesn't automagically store anything useless in memory 10:00
nine .tell brrt What I would like to see in your grant proposal is some indication to the maintainability of your proposed new code. What would it take for someone to take over maintenance, should you lose interest? 10:01
yoleaux nine: I'll pass your message to brrt.
nine rarara: it is not needed. It is merely convenient. 10:02
brrt \o
yoleaux 10:01Z <nine> brrt: What I would like to see in your grant proposal is some indication to the maintainability of your proposed new code. What would it take for someone to take over maintenance, should you lose interest?
brrt nine, that is a good question. i'm afraid i can't ask karen to change the proposal, so i'll answer here
in very general terms i *think* this should make it somewhat more maintainable 10:03
as more of the work of the JIT will shift to higher-level constructs
and i've found that there are not so many people willing and happy to dig into x86_64 assembly, which is the current form of much of the JIT code 10:04
that said, the JIT will become more complex
jnthn notes that at least two people besides brrt++ have worked on JIT code that was implemented last summer.
brrt that is very true
jnthn That probably gives it a higher bus number than some other bits of the VM.
brrt also true :-) 10:05
nine So maintainability of the current code is ok and your proposed changes would even improve that. Maybe you can put this in a comment on the proposal news?
brrt i can, or don't you mean me? 10:06
nine brrt: I do mean you
brrt it can definitively be improved though :-) but i'll do that 10:07
nine What jnthn said is probably good community input
10:07 donaldh joined
jnthn will write a more general comment on the post at some point sonish :) 10:08
*soonish
brrt thanks :-) 10:09
and i'd note that maintainability also depends crucially on subjective-quality-of-code
jnthn Well, there's also the matter of necesary complexity. 10:12
10:14 diana_olhovik_ left
brrt true. and this does and will increase 10:15
uh, that wasn't grammatical 10:17
10:22 dayangkun left 10:23 diana_olhovik_ joined
jnthn Your grammar is and will improve :P 10:23
10:23 alini left 10:26 [TuxCM] left
Ven only looked at the JIT code during apw14, but didn't touch it... 10:26
brrt aw, that makes me feel sorry i couldn't be there 10:27
i'd have loved to talk about it
Ven brrt: I tried to help timotimo fix a bug, but most of it flew over my head :-). bug turned out to be storing floats in the wrong register, IIRC 10:29
FROGGS jnthn: serialization question... if I serialize a single object be calling scsetobj($sc, 0, $obj), why are there more than object in the SC when deserializing it? 10:30
brrt well, that's where i could help and explain. x86_64 isn't really very difficult, or at least not as difficult as it's made out to be 10:31
certainly not as difficult as 32 bit x86
10:33 alini joined
jnthn FROGGS: Because the SC ends up containing all the objects transitively found from those that you add 10:33
FROGGS: Excluding those that already belong to a different SC.
nine Is there a way to hook into serialization/deserialization of my module so I can for example replace CPointers on serialization and restore them on deserialization?
10:35 lolisa joined, PZt joined, _mg_ left
brrt nine - if you mean the moarvm-native serialization, i don't think so, no 10:35
jnthn nine: Not really, though if you write code in a CHECK phaser you are not long before serialization and in an INIT one not long after. 10:36
uh, not long after deserialization in the second one.
brrt what is the CHECK phaser? :-o
jnthn Runs at the end of compilation, but before the optimizer gets its hands on the code
10:37 sqirrel joined 10:39 chenryn left
nine jnthn: would this work for fixing precomp issues? 10:39
10:40 telex left
nine And how can I detect if we're precompiling? INIT and CHECK will run as part of normal control flow, too. 10:40
nwc10 is there a difference? 10:41
FROGGS jnthn: but it should be safe just to put out the object in slot 0 ?
jnthn FROGGS: Yes
FROGGS k
nwc10 by which I mean, does Rakudo purposefully attempt to make it ireelevant whether compilation is happening for "right now" or "going to disk for later"
jnthn nwc10: Yes, pretty much 10:42
Only a handful of places burried in Perl6::World really care.
Well, and in HLL:Compiler so it knows not to run stuff, but write it to disk
10:42 telex joined
jnthn nine: If you're writing a module, then you may as well assume that is the case. 10:42
nine Inline::Perl5 and really any module that touches external state during BEGIN needs to care, too. 10:43
jnthn nine: Becuase most of the time it will have been installed and tus pre-compiled.
So I'd just always assume it's happening; at most you may do a little extra work when it doesn't.
10:44 brrt left
nine jnthn: the extra work may be not so little. During precomp I have to record all the calls to perl5. After deserialization I have to initialize Perl 5 again and replay this log. And I may call PERL_SYS_INIT only once per process so I have to know if I already created a perl5 interpreter before in this process. 10:46
jnthn nine: Hmm...but hang on, is this about precomp of Inline::Perl5 itself, or things *using* Inline::Perl5? 10:47
10:48 rurban joined
nine jnthn: the latter 10:49
jnthn: precomp of a module that does for example use DBI:from<Perl5>; That creates an Inline::Perl5 (containing a CPointer) object and stores it in a package variable. 10:50
FROGGS Date::Holidays::DE::holidays(): Date::Calc::Easter_Sunday(): year out of range at ...
grrrr!
what bloody value is out of range?
jnthn nine: Ah. That's a rather different question...
FROGGS it had been helpful if it has told me that 'undef' is pretty much out of range 10:51
nine jnthn: I'm all ears for ideas :) 10:56
11:02 sqirrel left 11:05 pdcawley joined
nine Python people discussion adding multiplicity and maybe using it for multi-threading and the realization that they may have not broken enough to make Python 3 interesting: lwn.net/Articles/640179/ 11:06
And a link for those who do not yet have an LWN subscription (you really should get one!): lwn.net/SubscriberLink/640179/ab08329f0b138f48/
nwc10: ^^^ 11:09
moritz nine: iirc we've had that link here before 11:12
(maybe not LWN, but the mailing list where it was posted originally)
dalek pan style="color: #395be5">perl6-examples: bde7fe2 | paultcochrane++ | categories/cookbook/ (13 files):
Add TITLE and AUTHOR to all cookbook examples
perl6-examples: 1d00fd2 | paultcochrane++ | categories/games/ (3 files):
perl6-examples: Add missing 'use v6' statements and vim codas to game examples
11:12 dalek left
[ptc] now at least all perl6-examples are documented to a minimal extent 11:13
11:13 dalek joined, ChanServ sets mode: +v dalek 11:14 chenryn joined
jnthn nine: Is it just about "use Foo:from<Perl5>" or are there other cases? 11:15
11:16 dayangkun joined 11:18 colomon joined, mephinet joined
nine jnthn: that's certainly the most important use case. But I guess, modules will want to EVAL Perl 5 code during compilation to create some adaptors. 11:18
jnthn nine: OK, I could imagine doing something with the first in the Perl 5 module loader somehow...the latter I've no idea how to do, especially given there may be references back to Perl 6 objects too... 11:19
nine jnthn: references back to Perl 6 objects may not be that much of a problem because Perl 6 objects are referenced by an index into a purely Perl 6 array: github.com/niner/Inline-Perl5/blob...l5.pm6#L43 11:24
jnthn Ah, ok 11:25
11:25 dayangkun left
dalek ast: 12350f7 | jnthn++ | S15-nfg/ (2 files):
Generate NFG string euqality tests.

Again, using the Unicode normalization tests as the base. This time, we look for cases where there are two distinct non-starters, swap them around, and test for equality/inequality depending on if the two things we swapped have an identical Canonical_Combining_Class.
11:31
11:32 pdcawley left 11:33 pdcawley joined 11:34 _mg_ joined 11:41 colomon left
andreoss` m: my $rx = "\d\d6"; say (666 ~~ /$rx/).perl; 11:43
camelia rakudo-moar 5cfddf: OUTPUT«5===SORRY!5===␤Unrecognized backslash sequence: '\d'␤at /tmp/tPFw3ioXjz:1␤------> 3my $rx = "\7⏏5d\d6"; say (666 ~~ /$rx/).perl;␤Unrecognized backslash sequence: '\d'␤at /tmp/tPFw3ioXjz:1␤------> 3my $rx = "\d\7⏏5d6"; say (666 ~~…»
jnthn Use single quotes there 11:44
Or some other non-backslash-interpreting quoting construct. 11:45
andreoss` still doesn't match
moritz /<$rx>/
jnthn Sure
'cus...what moritz said :)
nwc10 I don't remember reading a mail message with the content of that link before 11:50
andreoss` regexes cannot be used as a hash key? 11:52
m: my $rx = /<\d>/; my %h; %h{$rx} = 1; say %h.perl;
camelia rakudo-moar 5cfddf: OUTPUT«5===SORRY!5===␤Unrecognized regex metacharacter < (must be quoted to match literally)␤at /tmp/0pnnZmxytF:1␤------> 3my $rx = /<7⏏5\d>/; my %h; %h{$rx} = 1; say %h.perl;␤Unrecognized regex metacharacter \ (must be quoted to match literally…»
nine nwc10: you talking about the lwn.net link?
andreoss` m: my $rx = /\d/; my %h; %h{$rx} = 1; say %h.perl;
camelia rakudo-moar 5cfddf: OUTPUT«Code object coerced to string (please use .gist or .perl to do that) in block <unit> at /tmp/_6HULosYX5:1␤␤{"" => 1}<>␤»
moritz m: my $rx = /\d/; my %h{Any}; %h{$rx} = 1; 11:53
camelia ( no output )
nwc10 yes, the lwn.net link
moritz andreoss`: works if you declare the hash to be of type Any (or Regex, for that matter)
andreoss`: though that approach seems to suggest that you're still think of regexes as glorified strings. They aren't.
they are more like glorified methods
11:54 anaeem1_ left
nine nwc10: that's an original lwn.net report about the Python Language Summit 11:54
nwc10 "Guido van Rossum famously said that Python would never merge Stackless" - why?
aha OK. Me, context, confused.
clearly I'm not built for multiplicity
nine nwc10: "because it would complicate life for Jython, IronPython, PyPy, and others, Hastings said" futher down in the article 11:55
nwc10 nine: thanks. Maybe I should stack my questions, and only ask the ones still unresolved at the end. :-)
or, maybe I just make more coffee
nine I find the dlmopen suggestion interesting. At least because it would maybe allow Inline::Python to do what python cannot ;)
nwc10 I independantly thought about it a few days ago. In theory you can load more than one python interpreter (eg a 2 and a 3) 11:56
nine nwc10: the whole coverage of the Python Language Summit is interesting to read. I can send you more subscriber links if you want
nwc10 but I think that you utteryl confuse any C-based extension
because it has no idea which version it might find itself calling
Gisle said you have the same problem with (at least) Win32 embedded thingies that want to embed Perl (5) 11:57
and different thingies want to embed a different version
nine: do the links become public access in a week or two?
nine nwc10: yes. Should become public this Thursday or Friday even. I'm currently catching up on the reading I postponed during the QA hackathon 11:58
11:59 Rounin left
nwc10 nine: I'd prefer to wait, rather than cheat. 11:59
12:00 brrt joined
nwc10 is amused by 12:00
Something compelling in python 2.7, however, is stability. I can write code in 2.7 and I am certain that I won't need to change it until 2020. Can the same thing be said for 3.4? Maybe not: docs.python.org/dev/whatsnew/3.5.h...deprecated
nine nwc10: it's not cheating. Subscriber links are an explicit feature provided to spread interesting articles to non-subscribers and maybe attract them to subscribe. 12:01
nwc10 had half joked a few months back that python *2* is an ideal business choice for starting something new, because no-one is going to change it under you
nine The "subscriber link" mechanism allows an LWN.net subscriber to generate a special URL for a subscription-only article. That URL can then be given to others, who will be able to access the article regardless of whether they are subscribed. This feature is made available as a service to LWN subscribers, and in the hope that they will use it to spread the word about their favorite LWN articles. If this feature is abused, it will hurt LWN' 12:02
nwc10: that's no joke anymore :) I've seen people call that an attractive feature
nwc10 this appears to be one such person: lwn.net/Articles/640534/ 12:03
nine There are three versions of Python in use at this point: 2.6, 2.7, and everything else. Based on some Python Package Index (PyPI) data that he gathered (which was a few months old; he also admitted the methodology he used was far from perfect), Python 2.7 makes up the majority of the downloads, while 2.6 has a significant but far smaller chunk, as well. All the other Python versions together had a smaller slice than even 2.6.
psch \o
psch wonders about RT #116280 12:04
moritz uses mostly python 3.4 at $work, though it's a pretty new project 12:05
psch specifically, if it can or should be solved by having Perl 6 level sprintf, because Perl 6 Ints should know Inf, and NQP currently misconverts Inf as BI
but that's probably a bit backwards, as NQP sprintf should be able to deal properly with Inf as well
nwc10 nine: where's that "three versions" quote from? It doesn't seem to be that article 12:09
[ptc] moritz: what's python 3 like to work with? I'm stuck with python 2 at $work currently
nwc10 nine: oh, google finds a link :-) 12:10
moritz [ptc]: I don't know python 2 much, so I can't compare well
[ptc] ah, ok
moritz [ptc]: though a small part of the project must support both 2 and 3, and that's a pain (IMHO)
[ptc] moritz: I can imagine 12:11
moritz writing six.u('foo') instead of 'foo' is quite annoying
12:19 rmgk_ joined, rmgk left, rmgk_ is now known as rmgk
dalek osystem: 67e6c32 | (Jonathan Stowe)++ | META.list:
Add Log::Syslog::Native
12:19
RabidGravy totally shite but hey 12:20
psch, I was wonndering about sprintf last night. So now it's implemented only in nqp? 12:26
12:26 chenryn left
RabidGravy specifically I was wondering whether there was a way to programmatically extend the format codes 12:26
psch RabidGravy: nqp/src/HLL/sprintf.nqp is our implementatin 12:27
+o
RabidGravy right 12:28
RabidGravy looks
psch RabidGravy: as for the actual question, i don't think format codes are easily extendable currently 12:32
RabidGravy yeah, that was my thought looking at it 12:33
but if the grammar and actions weren't private then it would be possible 12:34
FROGGS you can port it to Perl 6 of course... 12:36
RabidGravy my actual rationale behind wanting to do this for example would be something like a log appender where you might want to add a '%H' say for hostname and %P for PID and so forth 12:37
of course one could always do that the dumb way 12:38
dalek rl6-roast-data: 49d920a | (Heiko Jansen)++ | perl6_pass_rates.csv:
Update perl6_pass_rates.csv

Remove redundant data from revisions bfcb510 and 578f6b4 (from triple commits on Apr. 9th) so GitHub auto formatting works again.
12:41
rl6-roast-data: 8505d4c | (Will Coleda)++ | perl6_pass_rates.csv:
Merge pull request #6 from heikojansen/patch-1

Update perl6_pass_rates.csv
RabidGravy FROGGS, on the face of it that doesn't look that difficult, though I'm sure there's some catch I missed 12:42
FROGGS RabidGravy: you can first parse+remove the newly added directives and then pass it off to the nqp implementation
no, there should be a catch I think
not*
RabidGravy :) 12:43
FROGGS pesky little words :o) 12:45
12:45 zjmarlow left 12:46 xfix joined
RabidGravy FROGGS, your latter suggestion was my "dumb way" 12:50
;-)
FROGGS :o)
Ven is there any abstraction (maybe in the ecosystem) to parse something with precedence? 12:51
FROGGS Ven: v5 has EXPR 12:52
though it might be hard to rip out 12:53
12:54 rurban left, andreoss` left 12:57 rurban joined
Ven FROGGS: the v5 grammar is somewhat crazy :o) 13:01
or very long, at least
nine Perl 5 grammar is somewhat crazy ;) 13:03
FROGGS it is not much worse than P6's grammar 13:04
(file size wise)
13:04 RabidGravy left
Ven FROGGS: I'm just wondering how to parse infixes "cleanly" without infinite loops :) 13:05
token expr { <expr> + % <op> } is cool, but.. :P
FROGGS I just know about EXPR, which also guesses pre- and postfixes nicely 13:06
13:07 Rounin joined 13:10 aborazmeh joined, aborazmeh left, aborazmeh joined
dalek ast: 6e1d6a3 | jnthn++ | S15-nfg/case-change.t:
Some very basic NFG case-change tests.
13:12
13:18 RabidGravy joined 13:20 andreoss joined
andreoss is there a method to mesure a wallclock time of block execution? 13:21
clock { BLOCK } or something 13:22
i could use profiler, but not willing to leave repl 13:23
jnthn There's a benchmark module, iirc. Otherwise, there's "code; say now - INIT now" or so
Maybe "now - ENTER now" is better in the REPL 13:24
13:29 lolisa is now known as sleepwalking, sleepwalking is now known as lolisa
andreoss m: sub clock(&B) { my $now = now; &B() ; warn $now - now }; clock { sleep 1 }; 13:30
camelia rakudo-moar 5cfddf: OUTPUT«-1.0008718 in sub clock at /tmp/X216dAoWzT:1␤␤»
andreoss okay
RabidGravy I'm sure there's some solution involving monkey patching Block but I can't get there at the moment ;-) 13:33
it appears that there are 8 modules in the META.list that don't appear in the modules list for one reason or another 13:35
andreoss is there someting nicier than .gist and .perl for blocks? 13:38
jnthn Define "nicer" 13:39
RabidGravy tony-o, you around? 13:42
nine jnthn: probably something that includes the source code?
andreoss this, like B::Deparse->coderef2text 13:44
jnthn No, there's no way to do that.
Probably at some point somebody will write a prama-y module using some macro-y trick that attaches the source. 13:45
We don't keep anything around that we can deparse though.
nwc10 nor does perl 5 really.
B::Deparse is a cunning hack that generates "code that would compile to the same thing" 13:46
(modulo bugs in it)
13:46 muraiki joined
jnthn An op tree still makes that cunning hack more plausible than the bytecode of whatever VM we happen to be running on. 13:47
nwc10 but pmichaud_
but pmichaud demonstrated decoding PIR to LOLCODE 13:48
jnthn eww :)
nwc10 so presuambly it can also be done for MoarVM
jnthn Oh, I don't think he did though
It was a QAST level, no?
nwc10 oh, maybe I'm misremembering
OK, lets watch: www.youtube.com/watch?v=DzpSREpLJY8 13:49
13:51 aborazmeh left
nwc10 I CAN HAZ LOCODE ON NQP? 13:53
13:53 andreoss left
nwc10 jnthn: you remembered correctly. 13:53
masak "`make` is an implementation of *constructive logic programming*, using the following instantiation of the 'Propositions-as-X' paradigm" -- interesting. -- bentnib.org/posts/2015-04-17-propos...-make.html
nwc10 pmichaud_++ # LOLCODE still fun 13:57
masak pmichaud_++ # amazing lightning talk, too
nwc10 so good it bent time.
masak funny *and* educational.
13:59 andreoss joined
brrt thinks fosdem is never going to upload the languages sessions 14:00
FROGGS brrt: an hour ago I checked the status page again and sighed... as usual 14:01
masak .oO( tossed dem )
brrt masak: lol
dalek ast: 1977cfe | jnthn++ | S15-nfg/regex.t:
Baisc tests for regex + grapheme interaction.
14:16
14:26 Khisanth left 14:28 Khisanth joined
dalek p: 53d43e8 | jnthn++ | tools/build/MOAR_REVISION:
Bump MOAR_REVISION for more NFG work.
14:31
14:31 diana_olhovik_ left 14:32 diana_olhovik_ joined
dalek kudo/nom: f23bc73 | jnthn++ | tools/build/NQP_REVISION:
Bump NQP_REVISION for Moar NFG improvements.
14:32
kudo/nom: 958ffbf | jnthn++ | t/spectest.data:
Run 3 more NFG-related spectests.
andreoss m: my @x := True xx *; say @x.kv[0,1]; 14:33
camelia rakudo-moar 5cfddf: OUTPUT«0 True␤»
moritz m: my @x := True xx *; say @x[0]:kv 14:34
camelia rakudo-moar 5cfddf: OUTPUT«0 True␤»
andreoss im getting "Cannot call method 'kv' on a null object
with .kv on infinite list
moritz andreoss: how old is your rakudo?
andreoss 2015.03 14:35
14:36 _mg_ left
andreoss on Windows 14:36
nine ancient ;)
moritz star-m: my @x := True xx *; say @x.kv[0,1]; 14:37
camelia star-m 2015.03: OUTPUT«0 True␤»
moritz works with 2015.03 here
andreoss yep, looks like a repl issue 14:38
works in one line, but doesn't in two
FROGGS the repl has problems with bindings 14:40
moritz andreoss: well, with two lines, it tries to print the return value form the first line 14:42
andreoss: which is unfortunate, since it's infinite
brrt this is also a really nice article: www.monkeysnatchbanana.com/2015/04/...decisions/ 14:52
(it's about how somebody ended up patching mysql and the linux kernel for a groupware application in a box) 14:53
from which the lesson (for me at least) is: 'wow, it's awesome that this is possible'
14:58 btyler left, anocelot left
nine The sad truth is: sometimes technical debt really is acceptable and indeed preferable. 15:01
15:02 yvan1 left
moritz I think there's some tradeoff here; trying to avoid *all* technical debt is exponentially more work than avoiding most technical debt 15:02
andreoss can i slice with infinite list? 15:03
moritz didn't work last I tried
nine moritz: true. And despite having spent years to clean up my predecessor's mess at $dayjob, I'm still absolutely convinced that he did the right thing back then. Had he developed in my way back then, the company may not have survived to enjoy the benefits of good code. 15:08
15:09 Rounin left
brrt i'm not sure if that truth is sad or not 15:09
:-)
dalek ast: a80ad64 | coke++ | / (6 files):
auto-unfudge.

The one marked as sometimes hanging or segfaulting is currently doing neither.
15:10
brrt it's sad if you believe (not unreasonably) that code quality is a primary valuable characteristic of a codebase
andreoss any sieve implementation i've came up so far is slower than just checking every number for primes with .is-prime. is it supposed to be that way?
15:10 cschwenz joined 15:11 cschwenz is now known as cschwenz_, cschwenz_ is now known as cschwenz1, cschwenz1 is now known as cschwenz
[Coke] t/04-nativecall/02-simple-args.t (Wstat: 512 Tests: 12 Failed: 2) Failed tests: 10-11 15:11
nine brrt: I don't even have to believe that. I just like good code :)
[Coke] is-prime is meant to be fast, if that's what you mean.
getting nativecall test failures on os x. I don't normally run make test, typically spec or stress 15:12
brrt [Coke] - you should probably check if it's related to serialisation format change 15:13
[Coke] brrt: how?
brrt if you run them directly (without the test runner) and they complain about serialisation failure, then that's it :-) 15:14
15:17 btyler joined 15:18 anocelot joined 15:19 gfldex joined
hoelzro o/ #perl6 15:20
cschwenz o/ hoelzro :-)
brrt \o hoelzro 15:21
15:21 araujo joined, araujo left, araujo joined
hoelzro ahoy cschwenz and brrt! 15:22
andreoss examples.perl6.org should have answers for project euler tasks under the spoiler 15:23
cschwenz ahoy matey! Yarrrr!
15:24 lolisa left
[Coke] brrt: nope: # Failed test 'passed uint8 0xFE' 15:24
# at t/04-nativecall/02-simple-args.t line 50
# expected: '10'
# got: '0'
not ok 11 - passed uint8 0xFFFE
er, that was actually the failure for #10 there.
15:25 skids joined
[Coke] only tests 10,11 fail. everything else in the file is fine 15:27
FROGGS I guess these two tests are the only tests about unsigned int8? 15:28
[Coke] looks like t/spec/S02-magicals/progname.t is creating the directory GNOREME. 15:29
15:29 zakharyas left 15:31 brrt left 15:35 alini left
[Coke] adds 2 to the open ticket count. 15:38
FROGGS [Coke]++
15:39 konsolebox left 15:40 grondilu joined 15:44 andreoss left, araujo left
dalek kudo/nom: bd046ec | jnthn++ | src/Perl6/World.nqp:
Toss dead code.
15:45
kudo/nom: 6f8d283 | jnthn++ | src/Perl6/Actions.nqp:
Avoid creating WVal for non-SC object.

Fixes RT #124304 (sigilless vars could work out badly in an EVAL).
jnthn [Coke]: integration/advent2014-day05.t now hangs for me. 15:46
dalek ast: 0782842 | jnthn++ | S29-context/eval.t:
Add test for RT #124304.
[Coke] jnthn: dammit, it worked on my fiddly os. :) 15:47
I'll refudge it.
flussence .tell andreoss .is-prime calls down to mp_prime_is_prime() in libtommath, so you're going to have no chance of beating it for speed using perl6 code. 15:49
yoleaux flussence: I'll pass your message to andreoss.
TimToady well, he could native-call down to the same function, and nearly tie for speed :) 15:50
15:51 colomon joined, FROGGS left
dalek ast: 361a73b | coke++ | integration/advent2014-day05.t:
re-fudge. works for Coke, hangs for jnthn++
15:51
hoelzro when is 2015.04 supposed to go out? 15:52
[Coke] thursday
hoelzro hmm
any chance someone could look at my tab completion branch by then? it would be great if it could make it into the release!
15:52 Ven left
[Coke] "thursday after the 3rd tuesday", even though the reason we did that isn't happening anymore. 15:53
16:02 rurban left
moritz we just haven't had a reason to change the release date 16:02
grondilu btw in the REPL standard shortcuts like Alt-B, Alt-D and so on do not function. On GNU/Linux that is. 16:04
flussence which standard is that?
grondilu readline
standard in the Unix sense.
I mean come on, it's really basic stuff we see everywhere else. 16:05
that's part of the reason I never use the REPL anyway.
16:07 laouji left
[Coke] honestly doesn't know what alt-b and alt-d are supposed to do. 16:07
tony-o RabidGravy: yes 16:08
grondilu back a word and delete a word. How do you do that on your system and does it work with the REPL?
(please don't tell me you're using your mouse) 16:09
geekosaur [Coke]: emacs style command editing
16:09 spider-mario joined
RabidGravy tony-o, hi, I put an "issue" on your Event::Emitter module, suggesting that I merge what I did with yours 16:10
tony-o RabidGravy: i'll take a look
grondilu tony-o: www.bigsmoke.us/readline/shortcuts
16:10 donaldh left
grondilu tony-o: sorry, that was intended to [Coke] 16:11
tony-o grondilu: did you mean that for someone else?
ah :-)
:wq
RabidGravy I've done one of the roles already, should be good with the other in a few minutes :) 16:12
[Coke] ^W deletes the word (to the left) 16:13
tony-o RabidGravy: merging it - thank you
16:13 andreoss joined
[Coke] I don't know if linenoise has a "move left one word" shortcut. 16:14
RabidGravy tony-o, there'll be another PR with the additional roles in a bit and if you're cool with that I'll remove the EventEmitter from the modules list 16:15
hoelzro the shortcuts that linenoise supports are indicated here: github.com/hoelzro/p6-linenoise/bl...ise.c#L770 16:16
RabidGravy no point in having two almost identical packages
grondilu hoelzro: ok, noted. 16:18
grondilu doesn't know why linenoise is used instead of readline but he assumes there are reasons. 16:19
hoelzro grondilu: licensing 16:21
16:22 cschwenz left
hoelzro although we could probably use libedit to solve the compatability and licensing issues 16:22
16:27 captain-adequate joined, captain-adequate left 16:31 captain-adequate joined
dalek kudo/nom: a75917e | jnthn++ | t/02-rakudo/repl.t:
Make REPL tests robuster for Windows.
16:36
kudo/nom: da0f895 | jnthn++ | src/Perl6/ (2 files):
Don't lower UNIT lexicals from the REPL.

Unbusts binding in the REPL, fixing RT #122914.
kudo/nom: 15bb095 | jnthn++ | t/02-rakudo/repl.t:
REPL tests for RT #122914.
16:37 diana_olhovik_ left 16:38 zjmarlow joined
timotimo oooh 16:38
that's a nice fix, jnthn!
that'll allow so many people to try out infinite list things without stumbling over the repl being strange
jnthn yeah, figured I should hunt it down
Took a bit to find 'cus my first guess was that it was related to the sigilless vars in EVAL bug that FROGGS reported over the weekend 16:39
But it turned out to be somethiung else entirely.
Also those REPL tests I add actually pass on Windows.
I think we don't run that test file, however.
It uses fudge markers when it should probably use normal todo 16:40
16:40 MARTIMM joined 16:42 zjmarlow left
timotimo jnthn: could i perhaps steal a shred of jnthntime to get that superfluous decont fixed for local/localref? 16:42
dalek kudo/nom: ee1e718 | jnthn++ | t/02-rakudo/repl.t:
Use normal todo markers in REPL tests.

It's not in spectest, so fudge don't apply here.
16:43
timotimo (after that i should be able to make the lexical stuff work somewhat easily?)
jnthn timotimo: I kinda need to eat now, but could look into that after dinner. 16:44
timotimo that'd be swell :) 16:45
i also have a bit of errands and the weekly to keep me entertained in the mean time
16:46 spider-mario left
jnthn Yeah, it's time for me to write up another weekly report today too :) 16:46
16:53 espadrine left
jnthn dinner & 16:55
[Coke] psch: github.com/rakudo/rakudo/commit/20...5fb92055c1 - when do we have fudged test files not in t/spec ? 17:03
psch [Coke]: that's t/02-rakudo/repl.t — jnthn said a few minutes ago it should "use normal todo"? 17:05
where "that's" means "i added a test file that, when ran manually, produces a fudge file" 17:06
actually, i think bartolin_++ added it
but i fudged in there
anyway, point being, if there's a different mechanism (or there's none needed because we don't run it by default) i didn't know about it 17:07
17:07 vendethiel joined 17:09 abraxxa left 17:11 mohij joined 17:12 eli-se joined 17:13 grettis joined 17:19 mr-foobar joined 17:21 prammer left 17:34 prammer joined 17:39 telex left 17:40 telex joined
b2gills I've seen both `... () returns Type {...}` and `... ( --> Type ) {...}` in the Rakudo source, I wonder if one of them should be the standard ( at least within the Rakudo source files ) 17:41
TimToady there are arguments for both sides :) 17:42
it really depends on whether you think about the signature as only being for dispatch, or as something that specifies the whole API 17:43
I tend to like --> for the latter reason
"here are the inputs and outputs" 17:44
but it does confuse people sometimes into thinking that return values participate in MMD 17:45
so we haven't really taken a stand one way or the other 17:46
and, there is in fact a third way, which is more of a C-style
my Type sub foo () {...}
17:46 FROGGS joined
dalek ecs: 6e08690 | (Stéphane Payrard)++ | S99-glossary.pod:
added MAIN entry and (empty) YOU_ARE_HERE
17:46
vendethiel m: sub f of Int { 5 }; say f; # b2gills 17:48
camelia rakudo-moar ee1e71: OUTPUT«5␤»
vendethiel 4th way, as well :-)
TimToady m: my $f = -> Int $a, Int $b --> Real { $a / $b }; say $f(1,2)
camelia rakudo-moar ee1e71: OUTPUT«5===SORRY!5=== Error while compiling /tmp/jSsyAKLWfc␤Missing block␤at /tmp/jSsyAKLWfc:1␤------> 3my $f = -> Int $a, Int $b --> Real7⏏5 { $a / $b }; say $f(1,2)␤»
b2gills Of course in Perl 6 there is no standard, but seeing two of the many ways mixed in the same source file is not great
TimToady looks like lambda doesn't hanlde --> right yet 17:49
std: my $f = -> Int $a, Int $b --> Real { $a / $b }; say $f(1,2)
camelia std 28329a7: OUTPUT«ok 00:00 144m␤»
TimToady note that --> is the only way to give a return type for a ->
well, maybe not 17:51
std: my $f = -> Int $a, Int $b { also returns Real; $a / $b }; say $f(1,2)
camelia std 28329a7: OUTPUT«ok 00:00 144m␤»
TimToady m: my $f = -> Int $a, Int $b { also returns Real; $a / $b }; say $f(1,2)
camelia rakudo-moar ee1e71: OUTPUT«5===SORRY!5=== Error while compiling /tmp/6GaDofZvgv␤Cannot call trait_mod:<returns>(Block, Real); none of these signatures match:␤ (Routine:D $target, Mu:U $type)␤at /tmp/6GaDofZvgv:1␤»
TimToady why is it not a Block? 17:52
so there's yet another way :)
well, unless you count it the same as 'returns' outside the block 17:53
b2gills I was just saying that the Rakudo source should perhaps be a bit more homogeneous 17:54
TimToady oh, wait, that's the call that is Block, so that's right 17:55
17:56 atweiden joined
TimToady b2gills: I'm not too worried about it, epecially if the documentation tools can turn the 'returns' form into the '-->' form for presentation to the user 17:57
17:58 itz_ joined
TimToady at the moment the source code reflects more of the implementation view rather that the API view 17:58
18:01 itz left
[Coke] psch: yah, there's no fudging if it's not in t/spec, so those are just comments. 18:03
jnthn: all those tests pass here, no need for todo. 18:08
18:10 dolmen joined
[Coke] oh, they're not run in make test. arglebargle. 18:11
18:13 eli-se left 18:17 rindolf left 18:22 yvan1 joined 18:23 molaf joined
atweiden i'm trying to convert an array of unknown length @arr = "one", "two", "three" 18:24
to %h<one><two><three>...
should i be using a macro for this?
moritz a sinmple function will do
atweiden how to return <one><two><three> from a function? 18:25
18:25 diana_olhovik joined
vendethiel m: my %h; my @a = <one two three>; %h{||@a} = 1; say %h.perl 18:25
camelia rakudo-moar ee1e71: OUTPUT«5===SORRY!5===␤Arg-flattening | is only valid in an argument list␤at /tmp/WfpndeHWxC:1␤------> 3my %h; my @a = <one two three>; %h{|7⏏5|@a} = 1; say %h.perl␤Arg-flattening | is only valid in an argument list␤at /tmp/WfpndeHWxC:1␤-----…»
TimToady NYI
vendethiel aw :-)
moritz m: sub deref(%h, *@k) is rw { my $h = %h; $h = $h{$_} for @k; $h }; deref(my %x, <one two three>) = 42; say %x.perl 18:26
camelia rakudo-moar ee1e71: OUTPUT«{}<>␤»
18:27 dtscode is now known as dts|pokeball
moritz m: sub deref(%h, *@k) is rw { my $h = %h; $h = $h{$_} for @k; $h }; my %x = one => (two => (three => 42)); say deref(%x, <one two three>); 18:27
camelia rakudo-moar ee1e71: OUTPUT«42␤»
moritz at least works as an rvalue 18:28
atweiden i need it as lvalue
moritz sorry, can't debug it for you right now (screaming baby on the lap) 18:29
m: sub deref(%h, *@k) is rw { my $h := %h; $h := $h{$_} for @k; $h }; deref(my %x, <one two three>) = 42; say %x.perl
camelia rakudo-moar ee1e71: OUTPUT«{:one({:two({:three(42)})})}<>␤»
moritz ah, binding helps
atweiden thank you, that is awesome 18:30
El_Che moritz: the screaming baby sounds like a perl syntax joke )
:)
RabidGravy tony-o, sent big PR as mentioned before :) 18:31
18:31 eli-se joined 18:32 Sqirrel joined
moritz El_Che: no, the real Ms. 1 is getting her teeth 18:34
18:34 aborazmeh joined, aborazmeh left, aborazmeh joined
El_Che moritz: fun time. I remember 18:37
vendethiel TimToady: did you look at what it'd take (amount-of-work-wise) for implementing "prefix:<||>" when doing LOLLY? 18:38
(I also think that the current prefix:<|> misses some specific semantics? I can't remember, they do quite a lot...)
dalek rl6-roast-data: 4c934fd | coke++ | / (9 files):
today (automated commit)
18:39
rl6-roast-data: 0aceb1f | coke++ | / (2 files):
today (automated commit)
TimToady vendethiel: no, didn't look at that yet
and actually, it's mouq++ that did the subscripting part of it 18:42
vendethiel ooh. Mouq++ :-) 18:43
18:45 aindilis left, aindilis joined
dalek p/mast_localref_2: e2fc716 | timotimo++ | src/vm/moar/QAST/QASTCompilerMAST.nqp:
localrefs are always in object registers
18:46
p/mast_localref_2: 13967fc | timotimo++ | t/moar/02-qast-references.t:
this loop'll give you spesh log output for the tests
18:48 aindilis left, aindilis joined 18:50 dolmen left, aindilis left 18:53 aindilis joined 18:57 brrt joined 18:58 anaeem1 joined
tony-o RabidGravy: merged your E:E PR 18:59
RabidGravy coolio
dalek kudo/nom: b629299 | TimToady++ | src/Perl6/Grammar.nqp:
allow ws after --> Type in signature
19:00
19:02 aborazmeh left
masak RT #113078 -- hehe, is the directory really called "GNOREME" ? 19:03
19:04 andreoss left
masak .oO( gnore, v.t. ) 19:04
dalek osystem: 0897770 | (Jonathan Stowe)++ | META.list:
Remove EventEmitter in favour of more featuresome Event::Emitter
19:07 dts|pokeball is now known as dtscode 19:09 alini joined 19:11 yqt joined 19:15 grettis left
dalek ast: b6e2526 | usev6++ | fudge:
Register all functions from test modules used in roast
19:21
ast: 29a0324 | usev6++ | t/ (8 files):
Add more tests for fudging
ast: e550267 | usev6++ | fudge:
Fix fudging for 'todo'

  ... until now it could happen that plain code
lines were marked with 'todo' by fudge
19:23 leont joined 19:24 molaf left
TimToady m: my $f = -> Int $a, Int $b --> Real { $a / $b }; say $f(1,2) 19:25
camelia rakudo-moar b62929: OUTPUT«0.5␤»
TimToady m: my $f = -> Int $a, Int $b --> Int { $a / $b }; say $f(1,2)
camelia rakudo-moar b62929: OUTPUT«0.5␤»
TimToady oopsie 19:26
19:26 grettis joined
TimToady m: my $f = -> Int $a, Int $b --> Int { $a / $b }; say $f.returns 19:26
camelia rakudo-moar b62929: OUTPUT«(Mu)␤»
TimToady well, at least it parses now...
vendethiel TimToady++ 19:28
TimToady it would be a shameful thing to claim to do modern FP and not allow lambdas to be typed... 19:29
skids m: gist.github.com/skids/255ade0fc1b2709e22b3 # I'm inclined to lay the blame for much of the slowness of Sum here, FWIW 19:30
camelia rakudo-moar b62929: OUTPUT«5===SORRY!5=== Error while compiling /tmp/rYNCnioB0E␤Confused␤at /tmp/rYNCnioB0E:1␤------> 3https:7⏏5//gist.github.com/skids/255ade0fc1b2709e␤ expecting any of:␤ colon pair␤»
skids oops didn't mean to m that. 19:31
vendethiel m: my $rep = -> ::T $a, Int $n --> Array[T] { $a xx $n }; say $rep(3, 3);
camelia rakudo-moar b62929: OUTPUT«3 3 3␤»
RabidGravy anyone got a boilerplate test for a good META.info? I keep making mistakes in them 19:40
19:43 muraiki left 19:49 muraiki joined 19:51 espadrine joined 19:53 lizmat joined, anaeem1 left 19:55 alini left 19:56 prammer left
grondilu m: m: my $rep = -> ::T $a, Int $n --> Array[T] { Mu xx $n }; say $rep(3, 3); 19:58
camelia rakudo-moar b62929: OUTPUT«(Mu) (Mu) (Mu)␤»
19:59 dtscode is now known as shikhins, spider-mario joined
TimToady grondilu: it doesn't even attach the type info currently 19:59
grondilu ok
19:59 prammer joined, shikhins is now known as dtscode
jnthn Not to mention that we don't even attempt to handle generic return types yet 20:00
furthrmore, Mu xx $n sure won't match Array[T]
TimToady might possibly match Array[T]() someday though 20:02
jnthn I...uh...what? :)
I don't think that's valid as a matcher.
Well, it is, but it matches Any 20:03
TimToady it's a coercion
jnthn I know, which is an operation, not a type check...
20:03 darutoko left 20:04 grettis left
TimToady well, long term the right side of --> is intended to be more than a type check 20:04
jnthn If you want coercion to do that, I need a bit more of an idea of how you want coercions to work. :)
20:04 ponbiki left
jnthn I can see that we might get 'em to be constrainty 20:05
But I don't have any idea how exactly it should be factored.
I'll happily implement any sane design there, but I didn't manage to come up with one yet. 20:06
TimToady we probably need to figure out how --> $retval and --> Nil and such work first 20:07
but no rush
--> with non-types can wait, maybe even till after Christmas 20:08
jnthn True; coercion type details also sorta-can if we decide they're de-sugars for now, but if we want to get rid of the need for IntStr and co. before Christmas then I think we need to figure out coercion types - and coercion generally - a little better. 20:09
20:09 grettis joined
jnthn At the moment, I only made coercion types do stuff on parameters. 20:09
And it's just "sugar" for what what "Foo $bar as Baz" produced. 20:10
20:11 prammer left
TimToady coercion on return might become obvious from however we decide 'my Int() $i = ..." works 20:11
jnthn Agree.
I'll work more on NFG later in the week; might I push the following onto your pondering stack: 20:12
20:12 konsolebox joined
TimToady so if that desugars to 'my Int $i = Int(...)', maybe the corresponding is to desugar the return $x to return Array[T]($x) 20:12
20:12 ponbiki joined
jnthn 1) What leg does with synthetics 20:12
2) What the bitwise string ops do with synthetics
TimToady in any case, it's different from non-types and non-coercing types 20:13
jnthn 3) If the tests I've written so far in S15-nfg/regex.t are sane :)
Well, we can't syntactically desugar my Int() $i = ... becuase we have first-class l-values, so it can happen at at distance. 20:14
TimToady nod
part of why I said 'if'
but to generalize from there requires types that not only check if they can coerce but can somehow return both success and the new value 20:15
jnthn Yes, the interface for doing that is the bit I'm not sure about.
TimToady ich ouch :) 20:16
jnthn :) 20:17
On NFG, btw, I mostly took the Unicode canonical composition algo description's definition of starter/non-starter and took it to its logical conclusion to get the NFG algorithm. 20:18
However, canonical comp (which gets to NFC) has an algorithmic special case for Hangul.
I don't know enough about Hangul to know if NFG needs anything there. :) 20:19
I dunno if you know, or who might know. :)
TimToady good thing we're not a standards body, or we'd have to take two years to decide that... 20:20
I think for now we just guess, and wait for feedback from native speakers of various languages
20:20 prammer joined
TimToady notes that at least at one point, CRLF was being considered a grapheme 20:20
20:21 xfix left
jnthn OK. From what I can figger from the Unicode spec, it's probably classical rather than comtemporary Korean than might want the special cases anyway. :) 20:21
[Coke] Do we need to put out a request for a Hangul unicode expert?
20:21 virtualsue joined
[Coke] maybe it can go into the weekly. 20:21
jnthn [Coke]: Good idea. 20:22
TimToady though I don't think we can worry about getting it right for every language out there before Christmas
we should plan to revise as we know more
jnthn TimToady: Hangul is the only thing with special cases in NFC anyways.
TimToady and doc that this aspect of it is experimental 20:23
masak I wouldn't mind us finding a Hangul unicode expert just for the sake of it :)
TimToady for those orthographies "beyond" Hangul I think this is one of those areas where we just get "close enough" to what people will need for now 20:24
jnthn I think the natural extension of the NFC algo I've done will go pretty far. 20:25
TimToady if there's some way to override the built-in rules for local needs, that would probably suffice for a good long time
20:25 Rounin joined
TimToady and then if the Unicode Consortium adopts some of those rules, they could probably be implemented by the same mechanism 20:26
20:29 Sqirrel left
[Coke] m: use Test; ok (chars "abcdef" > 4), "chars() has the right precedence (1)"; 20:29
camelia rakudo-moar b62929: OUTPUT«Earlier failures:␤ Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏abcdef' (indicated by ⏏)␤ in sub parse-int-frac-exp at src/gen/m-CORE.setting:7422␤ in sub parse-simple-number at src/gen/m-CORE.setting…»
[Coke] ^^ that dodgy test is in S32-str/length
it's from 2008-01-12 20:30
20:30 Sqirrel joined
jnthn [Coke]: The test looks bogus t ome 20:30
[Coke]: chars isn't a prefix op
[Coke] m: use Test; is (chars("abcdef" > 4)), 0, "chars() has the right precedence (2)"; 20:31
camelia rakudo-moar b62929: OUTPUT«Earlier failures:␤ Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏abcdef' (indicated by ⏏)␤ in sub parse-int-frac-exp at src/gen/m-CORE.setting:7422␤ in sub parse-simple-number at src/gen/m-CORE.setting…»
20:31 alini joined
masak should be `chars("abcdef")` 20:31
[Coke] that one as well. Ok, will rip them out.
jnthn Maybe the test is from a time when chars *was* a prefix op?
But I'm pretty sure these ays it shouldn't be. 20:32
8days
*days
dalek ast: 9d678a5 | coke++ | S32-str/length.t:
Remove test fossils.

  jnthn++
20:33
20:34 kaare_ left
[Coke] jnthn: what is "equanity" ? 20:35
dalek pan style="color: #395be5">perl6-examples: 43d78b6 | (Steve Mynott)++ | categories/cookbook/ (2 files):
fix numeric examples
[Coke] S15-nfg/mass-equality.t (is it equality?)
TimToady jnthn: on 1), I'd say that you can use NFCish comparison to check for equality at a position, but as soon as you've got an inequality, we probably have to compare NFDishly for any kind of consistency 20:36
jnthn [Coke]: uh, yes, weird typo...
TimToady on 2), flying butt unicorns of any color are probably appropropriate 20:37
s/pro//
on 3), you're assuming that anything in a file named 'regex.t' can be sane... 20:38
jnthn TimToady: On 2, I'll probably iterate codepoints, operate on those, and then re-NFG. 20:39
Those seem like non-SEGV-y butt unicorns :) 20:40
TimToady but iterate to NFC or NFC is the question
er, NFD 20:41
jnthn Hm, true
TimToady well probably doesn't matter
jnthn The easy thing is NFC
TimToady it's really only there for ASCIIish chicanery
jnthn Aye
For 1, how ish can NFDish be? 20:42
TimToady on 3 I assume that :m might cause a character class to ignore marks, but not otherwise
jnthn What do you mean by char class?
:m is ignoremark, yes? 20:43
TimToady the stuff under # Enumerated character classes don't accidentally discard the combiners, though.
jnthn OK, then that works for me
And \w and things like <:L> looking at the base grapheme is sensible? 20:44
TimToady well, if one of the strings has an NFC and the other a synthetic that you have the NFD for, you can't really compare those consistently without turning the NFC into NFD too
yes, I think that's sensible
jnthn Synthetics are stored in NFC.
As in, the base + codes are NFC
TimToady we need a way to scan combiners intentionally though
20:45 MARTIMM left
jnthn *nod* 20:45
Not sure how that wants to look yet.
TimToady was always thinking it was NFD, but I can see where the other might be okayish
jnthn It's NFC mostly because that's a fairly normal thing to want on output
TimToady is probably consist under NFC comparison also 20:46
*tent
jnthn Yeah, it menas there's a bunch of synthetics we don't need.
also that ord works within the latin-1 range however we decide to implemnt ord
If we go the NFD route I'm not sure we can promise that.
TimToady the main problem with NFC is that you can get "old" canonicalizations coming out of databases and such 20:47
with NFD you never get that
jnthn We don't have any Perl 6 level code path to let you tell us "it's NFC I promise" yet anyways.
TimToady but I suppose that's no harder than the canonicalizations we do on input anyway 20:48
jnthn So we always do the check
(Using the QuickCheck property, and only doing real work if we have to)
TimToady well, we may need to make some concessions to performance there
jnthn Maybe, though given we already need to do the "get to NFG" step... 20:49
(Which already needs the scan through the string)
Not sure we've so much to win.
While I've described NFG as "take NFC and then..." it's actually being computed in a single pass.
TimToady do we attempt to share NFC with NFG if there's no combiners, since they're both immutable?
jnthn I've designed it so we can go straight from bytes to NFG in a sinlge pass without an intermediate result. 20:50
*single
There's nothing *yet* that lets us take the raw bytes in the, say, ASCII range and say "don't copy at all" 20:51
TimToady does NFC() notice en passant whether it qualifies as NFG already?
jnthn No, but at the moment they result in different representations. 20:52
TimToady would be nice to avoid two passes in the case of double conversion
but simple first
jnthn Aye, though I don't expect many people to actually use Uni in real life.
TimToady nod
mabye we should spell it out longer to discourage people :) 20:53
jnthn It's used extensively in the tests because it lets me talk very directly about codepoints, and it also gave me a way I could get NFG stuff in place and tested without turning it on for all the "normal strings" yet.
TimToady I agree that most of the time we'll be going straight from UTF to NFG 20:54
jnthn Yeah, that's the path I've designed to not produce a huge bunch of intermediate results 20:55
It's quite "fun" though
20:55 diana_olhovik left
TimToady -O"fun" 20:55
masak was gonna say that :) 20:56
jnthn UTF-8 means that codepoints can danlge over multiple IO buffers, and NFG means graphemes can dangle over multiple codepoint buffers.
I've done stream-y APIs for both levels that we can compose.
And the normalization buffer is basically "things that failed quickcheck" 20:57
If you never hit something needing normalizing the buffer is at most 2 codepoints in size.
But geez, getting Unicode decently right is quite some work. :) 20:58
TimToady ayup
leont recognizes the problem, having looked at implementing a NF[DC] normalization layer for perl 5 (never wrote it in the end, ETUITS) 20:59
ugexe is there some way to apply constraits to a tap parameter without it dying when it fails its type check? like if a file gets passed to a supply with my $dir-tap = $paths.tap(-> $path where {$path.IO.d} { say $path }); 21:02
jnthn ugexe: No, though nothing stops you writing a bunch of multi candidates and doing $paths.tap(&the-multi)
ugexe ah that works too 21:03
jnthn ugexe: If you want to filter just $paths.grep(*.IO.d).tap(...) though
nwc10 what sort of failure is this? 21:07
Stage parse : Error while compiling, type X::Syntax::Can'tMeta
meta: cross with
operator: ,
dba: comma
reason: too fiddly
line: 20522
modules: ()
from src/Perl6/Grammar.nqp:2495 (blib/Perl6/Grammar.moarvm:declarator:848)
21:09 Sqirrel left
masak shouldn't that be X::Syntax::CannotMeta, by the General Decree of Cannot? 21:11
nwc10 possibly, but I assume that if it were, it would just fail with different words :-)
masak right, I'm bringing up a side point ;)
Can'tMeta looks really weird from a visual pill standpoint. 21:12
nwc10 this is somewhat - it failed there. What on Earth does that mean? 21:14
and can I blame IBM?
and even if I can, does that help solve it?
21:15 dolmen joined
masak nwc10: the error itself is really weird/bogus. 21:17
nwc10: if I'm reading it correctly, it's saying that you can't do `X,`
nwc10 hence, "can I blame IBM?"
21:18 bjz left
nwc10 in that, it's ppc64le 21:18
masak nwc10: which is weird/bogus, because `X` defaults to `X,`
nwc10 but it *did* pass all the NQP tests
"bug in the C compiler" is not out of the question here.
masak is spectesting renaming Can'tMeta
21:19 Sqirrel joined
nwc10 Oh, bonkers, it seems to have a working valgrind. Let's try that :-) 21:19
jnthn masak: Why?
masak: And what to? 21:20
21:21 virtualsue_ joined 21:22 virtualsue left, virtualsue_ is now known as virtualsue, dolmen left, muraiki left
nwc10 Can::tMeta ? :-) 21:25
masak jnthn: X::Syntax::CannotMeta, because at some point we standardized that in the choice between "can't", "can not", and "cannot", error messages should choose "cannot" 21:30
jnthn masak: OK. 21:31
masak nwc10: some features I'm glad we didn't inherit from Perl 5 ;) 21:32
21:32 aborazmeh joined, aborazmeh left, aborazmeh joined
dalek pan style="color: #395be5">perl6-examples: d9c1e3e | (Steve Mynott)++ | categories/cookbook/01strings/01- (2 files):
more LHF examples
21:34
kudo/nom: c4beed6 | (Carl Masak)++ | src/ (2 files):
rename s/Can'tMeta/CannotMeta/

  <jnthn> masak: Why?
  <masak> because at some point we standardized that in the choice
   between "can't", "can not", and "cannot", error messages
   should choose "cannot"
21:36
ast: d625ea1 | (Carl Masak)++ | S03- (4 files):
chase Rakudo change s/Can'tMeta/CannotMeta/
DrForr 90% of the ANTLR sample grammars pass their parsing step. 21:37
masak 'night, #perl6
jnthn 'night, masak
DrForr Nini 21:38
21:39 aborazmeh left
dalek pan style="color: #395be5">perl6-examples: 8f507ea | (Steve Mynott)++ | categories/cookbook/01strings/01-19 (3 files):
remove original and add more consistent name
21:40
21:40 virtualsue left 21:41 brrt left 21:52 leont left
eli-se $ brew install gnu-cobol 21:54
vendethiel omg eli-se. 21:55
eli-se you mean "program-id." not "eli-se."
21:57 gfldex left
jnthn omblog: 6guts.wordpress.com/2015/04/20/thi...-and-more/ 21:58
21:59 yqt left
eli-se vendethiel: I'm porting my hangman implementation from Mercury to COBOL. 22:01
vendethiel jnthn++
eli-se Screw logic programming!
vendethiel eli-se: damn :-)
jnthn
.oO( Prolog not like a pro... )
22:05
DrForr has a Prolog grammar half-finished somewhere on the VM, but ran into the segfault bug while getting it ready. 22:07
jnthn My tuits ran out before I got to that one, sadly. Though I did fix one thing related to :ignorecase handling that mighta led to a SEGV. 22:10
labster jnthn++, looking forward to NFG strings 22:12
22:13 Zoffix left, Rounin left 22:20 bobkare left 22:22 bobkare joined 22:23 mohij left, espadrine left
jnthn sleepy time & 22:25
RabidGravy yep 22:27
22:31 Sqirrel left, RabidGravy left, Sqirrel joined
eli-se .tell vendethiel gist.github.com/rightfold/5b5ac73aaaf0d9ccd8bd ;) 22:35
yoleaux eli-se: I'll pass your message to vendethiel.
eli-se .botsnack 22:36
yoleaux :D
22:46 aborazmeh joined, aborazmeh left, aborazmeh joined, alini left 22:54 vendethiel left 22:56 aborazmeh left 22:58 vendethiel joined, konsolebox left 23:01 rmgk left, aborazmeh joined, aborazmeh left, aborazmeh joined 23:04 zjmarlow joined 23:05 rmgk joined 23:14 [Tux] left
dalek c: 5360d9c | ennio++ | lib/Language/functions.pod:
Just a typo
23:15
c: bf2136b | labster++ | lib/Language/functions.pod:
Merge pull request #74 from scriplit/patch-1

Just a typo
23:21 vendethiel left, eli-se left 23:22 vendethiel joined 23:32 pdcawley left 23:47 [Tux] joined 23:49 BenGoldberg joined