»ö« 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 moritz on 25 December 2014.
00:03 skids joined 00:04 larion joined, coffee` left 00:09 vendethiel joined, larion left
timotimo m: my Int sub foo() { } 00:17
camelia ( no output )
timotimo m: Int sub foo() { }
camelia rakudo-moar e2b01f: OUTPUT«===SORRY!=== Error while compiling /tmp/Asxl2hBszZ␤Two terms in a row␤at /tmp/Asxl2hBszZ:1␤------> Int ⏏sub foo() { }␤ expecting any of:␤ infix stopper␤ infix or meta-infix␤ state…»
timotimo m: sub Int foo() { }
camelia rakudo-moar e2b01f: OUTPUT«===SORRY!=== Error while compiling /tmp/1UYMhlF8nx␤Missing block␤at /tmp/1UYMhlF8nx:1␤------> sub Int ⏏foo() { }␤»
timotimo ^- i want to build a better error message for this
sounds good?
masak fine by me :) 00:20
timotimo i really dislike that --rxtrace is useless in modern rakudo 00:21
00:28 tengignick left, pmurias left 00:29 pRiVi is now known as michiwend1, bronco_creek joined 00:30 vendethiel left
timotimo perl6 -e 'sub Int foobar() { }' 00:31
Did you mean to write my Int sub foobar?
^- takes the names from the actual source code
00:33 michiwend1 is now known as pRiVi 00:34 lea left, lea joined
[Coke] www.perl-6.com/ 00:34
00:34 lichtkind_ left
timotimo cute 00:35
masak oh, and it's a github repo: github.com/songzan/perl-6.com 00:37
[Coke] songzan++ 00:38
timotimo some spec test failures, though 00:42
but now i pulled a bunch of commits to all repos 00:45
00:45 bronco_creek left
timotimo is not ok 33 - xx works on a lazy list known? from t/spec/S03-operators/repeat.t 00:52
what about having t/spec/integration/weird-errors.t with not ok 5 - multi sub with where clause + temp stress
fish: Job 1, “perl6-m -e 'my $x; multi sub foo($n where True) { temp $x; }; foo($_) for 1 ... 1000; say "alive"'” terminated by signal SIGSEGV (Address boundary error) 00:54
:(
masak read 'fish: Job 1' and thought it might be a Bible verse 00:55
timotimo :D 00:56
well, at least it's not caused by my commit
and there's a TODO passed :) 00:57
01:03 skids left
timotimo OK, same output from spec tests with or without my commit 01:04
excellent
dalek kudo/nom: e5c533c | timotimo++ | src/Perl6/Grammar.nqp:
hint at "my Type sub name" when writing "sub Type name"
01:05
timotimo ^- enjoy
masak m: my $s = "ABCDEFGHI"; say $s.comb.grep({ state $i = 0; $i++ %% 3 }).join 01:09
camelia rakudo-moar e2b01f: OUTPUT«ADG␤»
masak nods approvingly
01:12 kurahaupo1 left
dalek kudo/nom: f2d4b88 | timotimo++ | src/Perl6/Grammar.nqp:
tune the error message some more
01:17
01:25 echowuhao left
TimToady added the test for xx but didn't report a bug for it 01:26
except here on irc 01:27
I figured someone would add the bug report if the spectests failed :)
01:28 skids joined
TimToady no cookie, but then I'm generally allergic to cookies anyway 01:28
b2gills m: say (1/81).fmt("%.40f") # should be a repeating number www.youtube.com/watch?v=daro6K6mym8 01:30
camelia rakudo-moar e2b01f: OUTPUT«0.0123456790123457000000000000000000000000␤»
TimToady known bug, fmt goes though floating point 01:31
m: say <1/81>.base(10) 01:32
camelia rakudo-moar e2b01f: OUTPUT«No such method 'base' for invocant of type 'Str'␤ in block <unit> at /tmp/cB5sXF3lqa:1␤␤»
TimToady m: say (1/81).base(10)
camelia rakudo-moar e2b01f: OUTPUT«0.012346␤»
TimToady and that doesn't figure the precision of 81 is all that great in the first place :)
I think there's an RC entry that gets repeats though 01:33
jercos <3 Rosetta Code 01:34
TimToady maybe I'm thinking of rosettacode.org/wiki/Convert_decima...nal#Perl_6 which goes the other direction 01:36
anyway, I'm quite certain I wrote that function at some point 01:39
01:40 dayangkun joined
TimToady it's a fairly trivial modification of .base, just keep a map of partial results for each remainder mapping back to which position we saw that remainder before 01:43
01:45 squirrel joined 01:46 squirrel is now known as Guest28116 01:47 Guest28116 left 01:48 dayangkun left 01:50 Mouq joined 01:58 vendethiel joined
timotimo m: sub Int trololo { } 02:02
camelia rakudo-moar e5c533: OUTPUT«===SORRY!=== Error while compiling /tmp/Z7A3GIj757␤Did you mean to write my Int sub trololo?␤at /tmp/Z7A3GIj757:1␤------> sub Int trololo⏏ { }␤»
timotimo that's still the old one
02:04 dj_goku_ joined, dj_goku_ left, dj_goku_ joined 02:05 dj_goku left 02:06 dj_goku_ left 02:08 lex joined 02:09 lex is now known as Guest51406 02:10 Mr0rris0 joined, Mr0rris0 left 02:11 Mr0rris0 joined, Mr0rris0 left, Mr0rris0 joined, adu joined 02:12 Mr0rris0 left, Mr0rris0 joined 02:13 Mr0rris0 left, Mr0rris0 joined, Mr0rris0 left, Mr0rris0 joined 02:14 Mr0rris0 left, Mr0rris0 joined, Mr0rris0 left 02:15 Mr0rris0 joined, Mr0rris0 left, Mr0rris0 joined, Mr0rris0 left 02:16 Mr0rris0 joined, Mr0rris0 left, Mr0rris0 joined, Mr0rris0 left 02:17 Mr0rris0 joined, Mr0rris0 left, Mr0rris0 joined, Mr0rris0 left 02:18 Mr0rris0 joined, Mr0rris0 left
Guest51406 I just read about the Perl 6 release announcement. Google pointed me to perl.org which seems to be the official website for Perl 6. The design of the website looks too outdated. The content is disorganized hence finding the documentation/tutorials was hard. 02:18
02:18 Mr0rris0 joined, Mr0rris0 left
Guest51406 I'll be trying the language once I go through some documentation. I hope the language is worth spending the time. 02:19
02:19 Mr0rris0 joined
raydiak Guest51406: the official website for Perl 6 is perl6.org 02:19
02:19 vendethiel left, Mr0rris0 left, Mr0rris0 joined 02:20 Mr0rris0 left, Mr0rris0 joined, Mr0rris0 left 02:21 Mr0rris0 joined, Mr0rris0 left, Guest51406 left, Mr0rris0 joined
masak the design of perl.org was updated a couple years ago. it looks better now than before, IIRC. 02:23
'night, #perl6 02:25
raydiak g'night masak
02:45 vendethiel joined 02:46 ilbot3 left 02:48 ilbot3 joined 02:54 chenryn joined 02:56 skids left 03:05 grettir left 03:07 vendethiel left 03:09 noganex_ joined 03:11 noganex left 03:18 Psyche^ joined 03:21 Woodi left 03:22 Patterner left 03:24 vendethiel joined 03:26 nick_____ joined 03:33 skids joined 03:35 nick_____ left 03:41 chenryn left 03:46 vendethiel left 03:51 vendethiel joined, chenryn joined 03:56 Mr0rris0 left 04:02 echowuhao joined, chenryn_ joined, chenryn left, chenryn_ left 04:05 chenryn_ joined
raydiak adu: ping 04:06
adu raydiak: hey 04:07
raydiak hey...I noticed there's some uncommented says in C::AST::Utils 04:08
which kinda raises the question, other than toggling comments all over the place, how would you like to handle debug output? 04:09
I put 'if $*debug' after all of them, and now I can toggle them in my script by doing 'my $*debug = True', and wuold be a simple matter to add --debug to cdump from there, but many would consider that bad form, and would cascade the option down the call chain instead of (ab)using global dynamics 04:11
adu raydiak: oops
my bad
raydiak well it's useful when I hit errors, which is why I wonder how you want to toggle stuff like that 04:12
maybe better to have a debug() function or something that handles the logic and stderr and such encapsulated...what do you think? 04:13
04:13 vendethiel left
adu raydiak: I usually do whatever is conventional in the language I'm working in 04:14
but I don't know any Perl5 conventions, so I'm a little lost
like in C assert() is one way 04:15
in some languages it's just a global DEBUG = False thing 04:16
at the top of each file
which is probably the worst way to do it
loggers are probably the best way to deal with it 04:17
raydiak not aware of a consistent perl convention wrt logging...in p5 the answer is usually "use a module"
adu then if you have no log handlers, then there's no output
is there a log4p6?
raydiak noticed avuserow++ has been working on github.com/avuserow/perl6-log-simple
though I notice it's not in the ecosystem, so maybe not ready 04:20
really I don't see *any* logging modules on modules.perl6.org
adu hmm 04:21
maybe we should write one
raydiak could be fun...I don't think I have any basic, unintimidating things I'm workin on yet :) 04:23
04:23 Woody joined 04:25 Woody left 04:29 vendethiel joined 04:33 Mouq left
raydiak though I'd hate to make a logging module right as someone else is actively working on one...another options is we could have a C::Parser::Utils for internal use that you use from other places which exports a debug()/log()/whatever 04:36
afk dinner
avuserow hi adu, raydiak :) 04:40
adu hi
avuserow I haven't put TONS of time into Log::Simple, but my intention was for it to be something to serve my own simple uses and tide people over until a Log4p6 or similar happens
if you have good use cases, I'd like to chat about either possibility 04:41
let me backlog to see what you had to say earlier :) 04:42
so basically, my thoughts are influenced by Python's standard logging module, which I use in $dayjob and I'm aware of some of its pitfalls and good bits 04:46
if any of that sounds interesting, I'll hand out commitbits and I'm open to fairly radical API changes at this point since it's not on the ecosystem 04:47
04:49 davido__ joined, BenGoldberg left
avuserow the next thing that I want it to have in the module (and the main thing before putting it into the ecosystem) is some way to configure things at a per-package level 04:51
04:51 davido_ left 04:52 vendethiel left
avuserow (at least I think per-package is the right default, so that way if you have a bunch of log statements in C::AST then the calling application could log them to a specific file or ignore them entirely 04:54
adu well, avuserow I was thinking something similar to Python "logger" or log4j 05:01
avuserow: what is "&LOG"? 05:04
05:04 kurahaupo1 joined
avuserow it's the sub called LOG 05:04
m: sub LOG() {}; say &LOG
camelia rakudo-moar f2d4b8: OUTPUT«sub LOG () { #`(Sub|97586680) ... }␤»
avuserow m: sub LOG() {}; say &LOG.WHAT
camelia rakudo-moar f2d4b8: OUTPUT«(Sub)␤»
adu oh
avuserow m: sub LOG($msg) {say $msg}; my &foo = &LOG.assuming("Hello world"); foo(); 05:05
camelia rakudo-moar f2d4b8: OUTPUT«Hello world␤»
adu avuserow: can you have multiple appenders?
like one appender for stdout, and one for a file?
avuserow not yet, I need to support this. I'll probably make a "Tee" appender that lets you combine them 05:06
or maybe just combine the two appenders 05:08
my thought is that it'd be best to do one appender per "route" (which would be package/package-prefix in most cases, I think) 05:13
05:15 chenryn_ left 05:16 vendethiel joined
avuserow oh, but I should also support the case where STDERR gets INFO and up, where a logfile gets ERROR and up 05:18
hmmm
05:27 kurahaupo1 left
raydiak will still be back eventually :) 05:30
adu oh, are you going to sleep? 05:33
raydiak no no that's why I checked in to let you know I'm still coming back 05:35
still reading just kinda afk still
adu ok 05:36
05:37 Mouq joined 05:42 chenryn_ joined 05:46 chenryn_ left 05:50 sivoais left 05:51 chenryn_ joined
avuserow hm, would it be bad to put all the configurability into appenders for simplicity so they are easier to reconfigure? 06:00
I'm really wanting to avoid having a half dozen functions just to reconfigure things
that's a usecase I am wanting to make sure I handle properly, since reconfiguring log levels of an application at runtime is a reasonable thing 06:01
06:05 vendethiel left 06:06 jack_rabbit joined
Mouq avuserow: Instead of having a private $routes var, maybe you could have $*LOGGER variable or something that would be easier to configure? 06:07
06:08 vendethiel joined
avuserow hmm, hadn't thought about using a $*FOO style var 06:09
those are more global right?
anyway, regarding configuration, my main use case is you have script A use modules B and B::C. I think that script A should be able to reconfigure the logging levels and destinations for B and B::C (perhaps as a pair) for its needs 06:11
does that make some amount of sense?
06:12 diana_olhovik_ joined
avuserow (hmm, if it wasn't for $*LOGGER being so long and a bit awkward to type, I could provide methods on it instead of exported functions... maybe I could do both) 06:12
06:12 sivoais joined
Mouq avuserow: $*FOO is a dynamic variable 06:20
m: sub bar { say $*FOO }; { my $*FOO = "foo"; bar; } bar 06:21
camelia rakudo-moar f2d4b8: OUTPUT«===SORRY!=== Error while compiling /tmp/C3kw8Q7KYc␤Two terms in a row␤at /tmp/C3kw8Q7KYc:1␤------> say $*FOO }; { my $*FOO = "foo"; bar; } ⏏bar␤ expecting any of:␤ infix stopper␤ infix or …»
Mouq m: sub bar { say $*FOO }; { my $*FOO = "foo"; bar; }; bar
camelia rakudo-moar f2d4b8: OUTPUT«foo␤Dynamic variable $*FOO not found␤ in method gist at src/gen/m-CORE.setting:14619␤ in sub say at src/gen/m-CORE.setting:17376␤ in sub bar at /tmp/7w65i9SzsN:1␤ in block <unit> at /tmp/7w65i9SzsN:1␤␤»
06:21 chenryn__ joined 06:22 chenryn_ left
Mouq So exported functions can call functions on whatever the using module defines $*FOO to be. I'm not sure if you can set a default dynamic variable, but you should be able too... 06:22
avuserow m: sub bar {say $*FOO;}; {$*FOO = "foo"}; bar; module x {bar;}; 06:26
camelia rakudo-moar f2d4b8: OUTPUT«Dynamic variable $*FOO not found␤ in method <anon> at src/gen/m-CORE.setting:14623␤ in any find_method_fallback at src/gen/m-Metamodel.nqp:2823␤ in any find_method at src/gen/m-Metamodel.nqp:1001␤ in block <unit> at /tmp/AIijlftJ68:1␤␤»
Mouq m: module GetFoo { our $*FOO is export = "default foo" }; use GetFoo; say $*FOO 06:27
camelia rakudo-moar f2d4b8: OUTPUT«===SORRY!===␤Could not find GetFoo in any of: /home/camelia/rakudo-inst-1/languages/perl6/lib, /home/camelia/rakudo-inst-1/languages/perl6␤»
Mouq m: module GetFoo { our $*FOO is export = "default foo" }; import GetFoo; say $*FOO
camelia rakudo-moar f2d4b8: OUTPUT«(Any)␤»
Mouq ^^ Defines $*FOO, the value seems to be lost, though :(
avuserow m: our $*FOO; module GetFoo { our $*FOO is export = "default foo" }; import GetFoo; say $*FOO 06:28
camelia rakudo-moar f2d4b8: OUTPUT«===SORRY!=== Error while compiling /tmp/QlmFewDPoM␤Cannot import symbol $*FOO from GetFoo, because it already exists in this lexical scope␤at /tmp/QlmFewDPoM:1␤------> export = "default foo" }; import GetFoo⏏; say …»
avuserow m: our $*FOO; module GetFoo { our $*FOO is export = "default foo" }; say $*FOO
camelia rakudo-moar f2d4b8: OUTPUT«(Any)␤»
avuserow m: our $*FOO; module GetFoo { $*FOO is export = "default foo" }; say $*FOO
camelia rakudo-moar f2d4b8: OUTPUT«===SORRY!=== Error while compiling /tmp/zWh7gtOzYx␤Two terms in a row␤at /tmp/zWh7gtOzYx:1␤------> our $*FOO; module GetFoo { $*FOO ⏏is export = "default foo" }; say $*FOO␤ expecting any of:␤ infix…»
avuserow m: our $*FOO; module GetFoo { $*FOO = "default foo" }; say $*FOO
camelia rakudo-moar f2d4b8: OUTPUT«default foo␤»
avuserow not quite what I want here
m: module GetFoo { GLOBAL::<$FOO> = "default foo" }; import GetFoo; say $*FOO 06:29
camelia rakudo-moar f2d4b8: OUTPUT«default foo␤»
06:29 vendethiel left
avuserow from S02:Dynamic variable creation 06:29
I'm surprised that doesn't work with GLOBAL::<$*FOO> 06:30
06:31 kaleem joined 06:34 diana_olhovik_ left
dalek kudo/nom: 929945a | TimToady++ | src/core/ (3 files):
add optional digits arg to .base

Note that we add the argument even to Int.base because we want to be robust in the face of type narrowing. it's just that the fractional digits on an integer, if requested, are always going to be 0s.
Also, Real.base was not correctly rounding in the last place.
06:37
kudo/nom: 94c51c7 | TimToady++ | src/core/Rational.pm:
base-repeating puts parens around repeating group
kudo/nom: 322c46d | TimToady++ | src/core/Rational.pm:
make sure stays Rat; stomp debugging fossil
TimToady b2gills: that should let you do arbitrarily precise formatting of Rats 06:38
well, it's not gonna find the repeating group for numbers tinier than about 1/(2**48) or so, since it's capped at 100000 digits for now 06:40
06:40 kaleem left
TimToady if someone wants to write some tests for .base($base,$digits) and .base-repeating($base), that'd be cool 06:41
likewise if someone wants to spec 'em
06:42 FROGGS[mobile] joined, xfix joined 06:44 xfix left, kaleem joined 06:46 Foxcool joined, bjz joined
TimToady er...design 'em :) 06:47
06:47 xfix joined 06:48 vendethiel joined 06:51 jack_rabbit left 06:54 [particle]1 left 06:55 [particle] joined 07:02 spider-mario left 07:08 mr-foobar left 07:09 gfldex joined 07:11 vendethiel left 07:15 rurban joined 07:17 diana_olhovik joined 07:23 gfldex left 07:26 FROGGS left, Rounin joined 07:27 virtualsue joined 07:28 kaleem left 07:30 vendethiel joined
raydiak hm composable logging is hard 07:34
avuserow I'm finding it to be yet another lesson in API design being hard 07:36
if you have thoughts, I'm interested :)
07:37 jack_rabbit joined, fhelmberger joined
raydiak after bumbling around the problem for a while...that was my first articulate thought :) 07:39
just brainstorming, I have a few random ideas but they all have obvious problems
like a role "does Loggable" or so, might be interesting 07:40
but I don't want to tie people to OO style to be able to just log stuff
07:41 brrt joined
raydiak and for some reason the phrase "routing table" popped into my head, might be an interesting way to look at it 07:41
avuserow oh yeah, I want to do something like that
kind of inspired by web frameworks how they route URLs
but with $?PACKAGE (by default) 07:42
raydiak probably goes without saying but...we also need really, really sane defaults...Log::"Simple" should not require the user to conceive of "routing tables" unless they want to do complicated stuff 07:45
07:45 echowuhao left
avuserow for my application at $dayjob, we have a bunch of processes, most of which have their own logfile. I'd like something like that to be like: Log::Simple.route('*', $appender) 07:46
we have one place that has some special package, which wants its own file 07:47
so that'd be a second call
potentially. just tossing out ideas
07:47 FROGGS joined
avuserow it seems to me that we really have 4 things that I want Log::Simple to be able to configure: package of some sort, output method, format of string, and logging level 07:50
does that seem like the right complexity? 07:51
raydiak we have different log levels...and different sources (the package by default)...and different destinations ($*OUT/ERR, some file, connection to external logging daemon, etc)...
right and formatting 07:52
07:53 FROGGS[mobile] left
avuserow I don't think we need anything like file-based configuration, custom logging levels, etc 07:55
07:55 darutoko joined 07:56 jack_rabbit left 07:57 Guest45 joined
raydiak likely not 07:57
avuserow is this something you're interested in helping with? 07:58
07:58 baest joined, telex left
avuserow I know you mentioned a potential log4p6, not sure if you'd rather try to port something like that instead of make something new and simple 07:59
raydiak it's a bad time for me to make specific promises, but yes
that was adu++, I don't know much about other logging solutions :)
adu oh what?
08:00 telex joined
avuserow I'll just give you both commitbits :) 08:00
08:01 Mouq left
raydiak needs a solid plan though, it's all still very murky to me 08:02
08:02 prime- joined
avuserow okay. I'm going to sleep on it, and then see what makes sense 08:03
overall, do you like the exported function style of thing for the main usage?
raydiak yes it's very unobstrusive 08:04
unobtrusive
08:04 prime left 08:05 average joined 08:06 Sir_Ragnarok left
dalek c: d81e22b | moritz++ | / (2 files):
Document missing DateTime methods.

also correct some signatures, and remove from WANTED file
08:06
c: c59ffcf | moritz++ | lib/Type/DateTime.pod:
DateTime usage example
TimToady m: say (1/81).base(10,40)
camelia rakudo-moar 322c46: OUTPUT«0.0123456790123456790123456790123456790123␤»
TimToady m: say (1/81).base-repeating(10) 08:07
camelia rakudo-moar 322c46: OUTPUT«0.(012345679)␤»
TimToady m: say (1/8100).base-repeating(10)
camelia rakudo-moar 322c46: OUTPUT«0.00(012345679)␤»
TimToady m: say (1/(2**32-1)).base-repeating(16) 08:08
camelia rakudo-moar 322c46: OUTPUT«0.(00000001)␤»
08:08 Sir_Ragnarok joined
TimToady m: say (1/(2**32-1)).base-repeating(10) 08:08
camelia rakudo-moar 322c46: OUTPUT«0.0(000000002328306437080797375431469961868475648078246891516783947943892317811002097514225658381875990513217633243933700314707518628497495927963754145420099176797107601723891590191957445394237862293198206995892852310997632404555946682709256811698259974759…»
moritz base-repeating? Is that new? 08:09
TimToady yes
m: say (1/6).base-repeating(10)
camelia rakudo-moar 322c46: OUTPUT«0.1(6)␤»
moritz guesses the camelia rakudo rebuild works fine :-)
TimToady looks like :)
the second arg to .base is also new 08:10
and should probably be used by fmt
avuserow raydiak: okay, great. I'll start to think of an idea for configuration and work from there. I'll try to keep an updated tasks list in the repo. thanks for the interest :)
avuserow sleep &
raydiak avuserow: I figure we're competing with things like say and note, and it's going to feel more clumsy if we don't provide something equally easy to reach for on the keyboard, so exported functions seem appropriate to me
g'night 08:11
TimToady m: say 42.7777777777e0.base(10)
camelia rakudo-moar 322c46: OUTPUT«42.77777778␤»
TimToady star: say 42.7777777777e0.base(10) 08:12
camelia star-{m,p} 2015.01: OUTPUT«42.77777777␤»
TimToady note the bug in star as well
m: say 42.7777777777e0.base(10,0)
camelia rakudo-moar 322c46: OUTPUT«Index out of range. Is: -1, should be in 0..Inf␤ in method <anon> at src/gen/m-CORE.setting:14663␤ in any find_method_fallback at src/gen/m-Metamodel.nqp:2823␤ in any find_method at src/gen/m-Metamodel.nqp:1001␤ in sub prefix:<++> at src/gen/m-…»
TimToady hmm 08:13
m: say 42.7777777777e0.base(16,0)
camelia rakudo-moar 322c46: OUTPUT«Index out of range. Is: -1, should be in 0..Inf␤ in method <anon> at src/gen/m-CORE.setting:14663␤ in any find_method_fallback at src/gen/m-Metamodel.nqp:2823␤ in any find_method at src/gen/m-Metamodel.nqp:1001␤ in sub prefix:<++> at src/gen/m-…»
TimToady coulda sworn that worked
moritz what's it supposed to do? 08:14
TimToady return 43.base(16), basically
m: say 42.7777777777e0.base(16,1)
camelia rakudo-moar 322c46: OUTPUT«2A.C␤»
TimToady m: say ^0 08:16
camelia rakudo-moar 322c46: OUTPUT«0..^0␤»
TimToady m: say (^0).list
camelia rakudo-moar 322c46: OUTPUT«␤»
raydiak adu: so we have commit bits to Log::Simple in case you wanted to work on a logging solution, pooling the effort there might be cool...in the mean time you have a PR on C::Parser which disables those says and fixes a bug :) 08:17
adu yey 08:19
TimToady I think I see the problem
adu raydiak: thanks :) 08:20
raydiak: and merged
08:25 average left
raydiak adu: you're quite welcome...thanks for making C::Parser; unfortunately I ought to sleep soon, but I started converting my 0mq binding-gen test script to use C::AST...will let you know how it goes/open PRs/issues whatever as I go 08:25
adu raydiak: cool :)
FROGGS adu / raydiak: it would be quite awesome to implement that using your parser... eli.thegreenplace.net/2012/12/17/du...ith-clang/ 08:27
(for C)
adu FROGGS: oOo
FROGGS as a helper for library binding authors and perhaps as a binding generator later too 08:28
08:28 wicope joined
adu well that could be a logging level 08:28
NOTE could be for structs and functions 08:29
and DEBUG could be for "we just encountered a greater than sign"
FROGGS hmmm, sounds good 08:30
raydiak oh that's neat
dalek kudo/nom: e1eebb3 | TimToady++ | src/core/Real.pm:
fix Real.base to round right when 0 frac digits
08:31
raydiak adu: btw here is where the output of the pre-C::AST script looked like, where I was only using the grammar by itself: gist.github.com/raydiak/e6f2e34c0589620253c2 08:32
never actually tried using it yet tbh :)
I think we already have a 0mq module anyway though, iirc
adu raydiak: o wait, that's Perl6 08:33
*mind blown*
08:34 virtualsue left
raydiak yeah *that's* what many of us want to use C::Parser for more than anything right now :) 08:34
08:37 vendethiel left, Guest45 left 08:39 vendethiel joined
FROGGS :o) 08:40
raydiak adu: the goal in that particular direction, or at least mine if nobody else does it faster and better, is to eventually end up with a decent general-purpose (not for a specific library) module on top of C::Parser for converting .h to nativecall .pm, or at least for doing most of the heavy lifting if full automation isn't practical 08:44
adu raydiak: kind of like swig?
FROGGS seems so :D
raydiak: call it pig! 08:45
08:45 Ven joined
FROGGS (Perl 6 interface generator) 08:45
raydiak ha!
nice :)
raydiak is looking up swig
FROGGS raydiak: so you try next to put class type names into the signatures instead of the opaquepointers? 08:46
08:48 Ven left
raydiak FROGGS: yes that'd certainly be nicer 08:49
FROGGS but I see the level of complexity that it carries :o)
raydiak for simple structs and such it wouldn't be bad 08:51
08:54 virtualsue joined
raydiak adu: yeah like swig, though I hadn't really thought to have it autogen conversion code, since NativeCall largely handles such things for us, so kinda like a simpler version of the idea 08:55
adu raydiak: sw6p 08:56
or do you have a name in mind? 08:57
raydiak nope, that could work...
well, PIG was pretty good... FROGGS++ idea 08:58
08:59 tengignick joined, rurban left
raydiak afk a few, preparing for bed 09:02
FROGGS swag would also work I guess 09:03
moritz panda, pig, FROGGS, camelia... seems' we're pretty animalistic in here :-)
FROGGS sleep well raydiak
:D
raydiak: swag is better me thinks :o) 09:04
09:06 pmqs left 09:09 zakharyas joined
adu swa6 09:13
good night 09:15
09:15 adu left
jnthn If it's changing C into Perl 6, you could call it Cameleon :P 09:18
09:20 rindolf joined, rindolf left 09:21 rindolf joined 09:25 vendethiel left
raydiak I do like animals very much... 09:25
09:25 Ven joined 09:26 alini joined 09:31 [particle]1 joined 09:34 [particle] left, kaleem joined, spider-mario joined 09:39 Ovid joined, Ovid is now known as Guest11706
raydiak good night #perl6 09:40
09:40 abraxxa joined 09:41 espadrine joined 09:43 Ven left
moritz www.p6c.org had 11GB traffic in January, hack.p6c.org had 4GB 09:45
that's surprisingly little, IMHO
nwc10 so run a CPAN mirror? :-) 09:46
09:46 Mouq joined
moritz :-) 09:46
though traffic to the debian mirror isn't included, because there's one inside the AS where the servers lives
(and only traffic from/to the outside is counted)
jnthn Bah, just make and host Perl 6 screencasts. In 4K high definition. :P 09:47
moritz :-)
it's *not* a problem that they use so little traffic
09:50 Mouq left 09:51 Hor|zon joined
[ptc] hrm, I get the Debian/Apache "it works!" page on hack.p6c.org 09:52
is it supposed to do that??
moritz [ptc]: I haven't got around to configure it to show a different website 09:57
[ptc]: it currently only runs an apache at all to be able to export home dirs
home.p6c.org/~moritz/ like this
[ptc] ah, ok 09:58
09:59 [Sno]_ left 10:04 _mg_ joined
moritz but maybe hack.p6c.org as a website should simply show the same as www.p6c.org/ 10:07
nwc10 moritz: could you make it show the most useful "how to get involved" page? 10:08
10:08 rurban joined
arnsholt FROGGS: I'm a bit suspicious of the MoarVM patch you linked in the Zavolaj 32 bit issue 10:08
FROGGS arnsholt: why? 10:09
arnsholt For one thing, it should be work that way already
And what's up with the "if (bits == 64 && spec->boxed_primitive == MVM_STORAGE_SPEC_BP_INT)" test?
Both int and int64 will match that
FROGGS ohh 10:10
good point
arnsholt Anyways, get_int should read the correct number of bits depending on the attribute type already, I think
(At least it does on Parrot, IIRC)
But it fixes things on 32-bit for you? 10:11
FROGGS but it does not work that way already to pick that sentence... we read in 64 bits when we are meant to read 32
arnsholt: it does
arnsholt Hmm. I'll try to look at it this weekend 10:12
FROGGS though, the proper solution is of course to get the knowledge about int being 32..* bits down to the vm somehow
10:12 _mg_ left, tengignick left
FROGGS because int can happily be 128 in theory 10:12
128bits*
so, we really really need a 'long' type for library bindings 10:13
int itself is nice to write optimizable code, but it does not map to C semantics 10:14
10:18 sqirrel__ joined
dalek p: 71e9494 | lizmat++ | docs/ops.markdown:
Document nqp::lstat
10:22
10:23 chenryn__ left
FROGGS arnsholt: look at #moarvm, we get to a better solution me thinks 10:25
arnsholt: now it just needs to work :o)
10:31 pecastro joined 10:38 tengignick joined 10:51 rindolf left 10:52 alini left, sqirrel__ left 10:54 alini joined 10:58 Ven joined, wicope left
masak good noon, #perl6 11:03
11:05 vendethiel joined
moritz \o masak 11:05
Ven o/ masak 11:06
jnthn o/ masak 11:07
11:08 coffee` joined, asdf12z_ left
[ptc] moritz: I'm currently trying to get the syntax highlighting in htmlify working. Question: is it possible to use methods in the namespace of the module where the callback is defined? 11:11
11:11 chenryn__ joined
[ptc] moritz: for instance, can one call from htmlify the node2inline (or other) method from Pod::To::HTML? 11:11
masak [ptc]: no, but you can pass `self` to the callback.
[ptc] moritz: that could work. I'll try it out. Thanks! 11:12
masak I'm over here :)
you're welcome -- good luck.
[ptc] masak: sorry!
jnthn The m-space is crowded... :P
[ptc] was tab completion in irssi :-/
... or just a bad case of PEBKAC 11:14
11:21 sqirrel__ joined
masak no worries ;) 11:27
we find it amusing, most of the time.
in fact moritz and I speculate that we might be the Heir of Gryffindor. 11:28
nwc10 masak: for some value of noon, strangely consistent with the exact time that various sirens are tested in Schwechat every Saturday. 11:29
masak mwhahaha 11:35
er. I mean. wasn't me.
jnthn You gotta admit though, "Schwe chat" does sound like something involving Swedes making noise :P 11:40
lizmat .tell nine Thinking about P6 concurrence and Inline::Perl5
yoleaux lizmat: I'll pass your message to nine.
lizmat .tell nine You might want to make sure that all Inline::Perl5 accesses are done from the same $*THREAD.id 11:41
yoleaux lizmat: I'll pass your message to nine.
lizmat jnthn: am I making sense here? ^^^
thinking about calling Perl 5 from start blocks 11:42
which would basically give you the mess that perl 5.005 threads were
nwc10: thoughts? ^^^
jnthn lizmat: From what I've heard so far from folks doing Perl 6 threading + Inline::Perl5, Perl 5 seems to care more than you only ever call into a given interpreter from one thread at a time 11:43
nwc10 lizmat: right now I'm thinking `find . -name .git -prune -o -type f -not \( -perm 0644 -o -perm 0755 \) -exec ls -l \{\} \+`
jnthn lizmat: But if it migrates over threads over time, it doesn't appear to get so upset...
11:43 spider-mario left
jnthn lizmat: Just matters 2 threads ain't in there at once 11:43
lizmat: In which case having a lock protecting usage of the interpreter would suffice. 11:44
lizmat but if I understand P5 interpreters correctly, that would mean that global var changes in one interp are not seen in the other
btyler lizmat: we actually hacked up a pretty successful prototype of a perl5 worker pool using OO::Monitors to disallow multiple-thread access to the same Inline::P5 object
lizmat ok, so my worries are moot
cool
btyler unfortunately our $work perl is compiled without multiplicity, so we couldn't take the experiment much further 11:45
lizmat but at $work, you build your own Perl's anyway, right ? 11:46
so building one *with* multiplicity, would just make life on the sysadmins a bit more difficult :-)
btyler yes, so something still -might- happen, it just becomes confusing if there's a seperate build of perl5 + associated libs specifically for use with inline::p5
right :P
lizmat gotcha 11:47
was the difference between building with / without multiplicity actually measurable ?
11:48 [Sno] joined
btyler I don't know when it was last measured, but the people who know p5 guts said it would be certainly be a hit. something between 2% and 10%, depending who you ask 11:50
11:55 xiaomiao left
nwc10 lizmat: thoughts on what? 11:55
lizmat calling Inline::Perl5 code from start blocks in P6
nwc10 I have no idea what might go wrong with that.
lizmat but there's potential, right ? :-) 11:56
nwc10 as far as thread IDs - I think that mod_perl2 multithreaded pushes the limits of what can be done
IIRC it changes which OS thread is associated with an interpreter
rules being
1) only one OS thread can run the interpreter at any time
2) you must update the Thread Local Storage used by the Perl 5 VM so that it's consistent 11:57
lizmat: there's always potential. But I think that the only real potential is 1) which thread is running it 2) managing to re-enter the same Perl 5 interpreter in ways it didn't expect
lizmat is my thinking correct that each P5 interpreter has its own "World" ? (aka globals, code refs, etc. ?) 11:58
11:58 xiaomiao joined
nwc10 lizmat: when compiled with -DMULTIPLICITY, yes 11:58
otherwise some things are in static variables
lizmat ok 11:59
btyler you get segfaults very quickly if you try to create multiple Inline::Perl5 objects against a perl5 compiled without multiplicity
you can hear the stomping in the background 12:00
lizmat and if you *do* have multiplicity, you have different worlds in each thread
much like ithreads
so when we get P5 hipsters coming along combining their P5 code with P6 concurrency 12:01
nwc10 ithreads builds atop multiplicity
lizmat it's most likely to become a big disappointment
12:01 Ven left
lizmat nwc10: yeah, ithreads are basically, spawn new interpreter, copy everyting from parent interpreter, right ? 12:01
nwc10 yes, exactly that, and IIRC "keep the mapping of what was copied to where" 12:02
(for return values)
lizmat ack, and create a hidden interpreter for sharing values through tie() 12:03
btyler this works pretty well: gist.github.com/kanatohodets/66978...006b45a67b (perl 5 worker pool)
nwc10 I think that's technically in threads::shared, but yes, that's the implemnentation
it's not directly tie, but it's built on the same internals
btyler if you crank up the number of workers in the pool really high, you start seeing problems from OO::Monitors, but that's not too shocking (written in a few hours for a conf presentation)
jnthn will give the concurrency stuff some love once he's done with natives and got some headway on NFG :) 12:04
btyler lizmat: fwiw, I didn't have any expectation of cross-thread state between perl5 VMs when wrangling them from multithreaded p6 12:06
nwc10 it's not going to be possible to do anything better than ithreads within Perl 5, even if embedded 12:07
*however*
I think you will be able to orchestrate Perl 5 threads using Perl 6 concurrency, if each Perl 5 thread is only communicating with Perl 6 12:08
12:08 H2O1 joined
nwc10 *that* could be quite a win. 12:08
jnthn nwc10: Yes, I think that's the sane approach.
|Tux| if inside a «for @ch -> $f { ... }» I push onto @ch, will it be visited inside the block (due to the loop being lazy)?
12:08 H2O1 left
lizmat so each P5 thread would only do lexicals ? 12:08
nwc10 however, the downside is that it ought to be possible "post Christmas" to optimise bits of the implementation of Inline::Perl5 to avoid copying data between the two interpreters 12:09
but such an optimisation would prevent the orchestration idea
you can either avoid copies
or avoid free-running threads
in the end, free-running threads might be the bigger win
KISS on the Inline::Perl5, lots of copying, and then give a business case for migrating 12:10
12:10 vendethiel left
|Tux| hmm, it does not 12:11
dalek Heuristic branch merge: pushed 169 commits to doc/add_pygments_highlighting by paultcochrane
|Tux| gist.github.com/Tux/f75151ca740edc6e79e3 12:13
lizmat |Tux| could you try with --optimize=0 ?
jnthn I highly doubt that's opt related :) 12:14
12:14 ggoebel111111114 joined
jnthn It has to be a literal range as the argument to for 12:14
|Tux| same
12:15 ggoebel111111113 left 12:16 abraxxa left
lizmat jnthn: just making sure :) 12:18
ok, seems P5 gets it right (if we would consider that the right behaviour, of course) 12:20
jnthn I'm not sure I consider writing code that depends on such things as "right behavior" :P 12:21
lizmat m: my @a = ^5; while @a { {.say; @a.push(5..10) if $_ == 4}(@a.shift) } # |Tux| maybe this way? 12:24
camelia rakudo-moar e1eebb: OUTPUT«0␤1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤»
12:24 vendethiel joined 12:25 _mg_ joined
|Tux| lizmat, no, I need the rest of the lsit intact, as I also use indices to surrounding elements 12:25
jnthn If you're using indices anyway, then a loop (...) { } that checks against @a.elems each time round might be easier. 12:26
|Tux| that is what I am doing right now :)
12:28 Mouq joined
lizmat avuserow: shouldn't a generic logger just be a Supply, to which anybody can create a .tap ? 12:35
a tap that would note() everything, or one that would say() everything, or one that would say to a specific (perhaps dynamic) handle ? 12:36
12:36 Mouq left
dalek kudo/newio: e5c533c | timotimo++ | src/Perl6/Grammar.nqp:
hint at "my Type sub name" when writing "sub Type name"
12:39
rakudo/newio: f2d4b88 | timotimo++ | src/Perl6/Grammar.nqp:
rakudo/newio: tune the error message some more
12:39 dalek left
lizmat sorry dalek 12:39
12:39 rmgk_ joined, rmgk is now known as Guest19248, rmgk_ is now known as rmgk, dalek joined, ChanServ sets mode: +v dalek 12:40 kurahaupo1 joined 12:42 Guest19248 left 12:43 kaare_ left 12:45 kurahaupo1 left
dalek ecs/newio: faedde9 | lizmat++ | S16-io.pod:
.IO.l-o doesn't make sense
12:46
12:46 vendethiel left 12:47 Woodi joined
timotimo o/ 12:49
dalek kudo/nom: 8895666 | timotimo++ | src/Perl6/Grammar.nqp:
important not to succeed this match when not panicking
|Tux| @keep = @ch[ $i .. * ]; <= is that legal for index $i till the end? 12:50
lizmat yeah?
m: my @a = ^10; my $i = 3; say @a[ $i .. * ] 12:51
camelia rakudo-moar e1eebb: OUTPUT«3 4 5 6 7 8 9␤»
|Tux| toppie. that was intuitive :) 12:52
lizmat m: my @a = ^10; my $i = 3; say @a[ $i .. * ]:splice # might be a nice addition
camelia rakudo-moar e1eebb: OUTPUT«Unexpected named parameter 'splice' passed␤ in sub postcircumfix:<[ ]> at src/gen/m-CORE.setting:3343␤ in block <unit> at /tmp/yr7Umgc7Mn:1␤␤»
lizmat although technically hard to do, as @a could be aliased to an infinite list 12:53
m: my @a = ^Inf; my $i = 3; say @a[ $i .. * ] 12:54
m: my @a := ^Inf; my $i = 3; say @a[ $i .. * ]
m: my @a := ^Inf; my $i = 3; say @a[ $i .. 10 ]
sorry camelia :-(
camelia rakudo-moar e1eebb: OUTPUT«(timeout)»
rakudo-moar e1eebb: OUTPUT«3 4 5 6 7 8 9 10␤»
FROGGS m: my @a = ^10; my $i = 3; say @a[ { say $_ }; $i .. * ] 12:55
camelia rakudo-moar e1eebb: OUTPUT«10␤␤»
12:55 Ven joined
timotimo what do we expect :splice to do? 12:57
12:57 MadcapJake left, skids left, MadcapJake joined 12:59 kurahaupo1 joined
moritz error out 13:01
|Tux| no goto in perl6? 13:02
Ven |Tux|: "not yet" 13:03
|Tux| ok
lizmat @a = ^100; my @keep = @a[ ^10 ]:splice; say @a.elems # 90
FROGGS |Tux|: if you are searching for 'goto &subref' there is callsame, callwith, nextsame and nextwith 13:06
|Tux| I was looking for the old goto 13:07
FROGGS goto is like eval in P5, it had to serve more than one purpose
k
|Tux| now I need a nested loop
with additional indent :(
FROGGS and with your indentation style :o)
masak usually prefers the loop
FROGGS me too
|Tux| well, it is inherent to playing with $/ 13:08
you might need to read more, but one doesn't know ahead
lizmat |Tux|: generic goto is not implement 13:09
but labeled loops and "next label" *are*
13:09 chenryn__ left
|Tux| that sounds evil :) 13:09
FROGGS aye, the exception stuff and the labels are there, one would "just" need to get his/her hands dirty :o) 13:10
lizmat m: LABEL: for ^10 { next LABEL if $_ < 5; .say }
camelia rakudo-moar e1eebb: OUTPUT«5␤6␤7␤8␤9␤»
|Tux| «LOOP: loop {} next LOOP;» allowed?
FROGGS m: LABEL: for ^10 { next LABEL if $_ < 5; .say }; say LABEL
camelia rakudo-moar e1eebb: OUTPUT«5␤6␤7␤8␤9␤Label<LABEL>(at /tmp/JqSVfQf6Wi:1, '⏏LABEL: for ^10 { next LAB')␤»
FROGGS |Tux|: that does not make sense
lizmat m: LABEL: for ^10 { next LABEL if $_ < 5; .say }; next LABEL
camelia rakudo-moar e1eebb: OUTPUT«5␤6␤7␤8␤9␤»
|Tux| yes, it does: goto LABEL :P
FROGGS lizmat: that should blow up 13:11
lizmat m: LABEL: for ^10 { next LABEL if $_ < 5; .say }; say "done"; next LABEL; say "after label"
camelia rakudo-moar e1eebb: OUTPUT«5␤6␤7␤8␤9␤done␤»
FROGGS |Tux|: not in my world :o)
13:11 vendethiel joined
FROGGS lizmat: it misses the handle and exists 13:11
there is a ticket for that AFAIK
|Tux| regrets the shalow imagination of FROGGS :P
FROGGS *g*
13:12 sqirrel__ left
dalek kudo/newio: 9389a54 | lizmat++ | src/core/IO.pm:
Remove some internal helper subs we don't need
13:13
kudo/newio: 0a42459 | lizmat++ | src/core/IO (2 files):
Fix two missed .i/.v -> .inode/.device refactors
kudo/newio: 688e218 | lizmat++ | src/core/IO (3 files):
Implement IO.l-* methods as in S16-io (newio)
|Tux| is $io.get auto-chomped?
lizmat yes, unless you specify :!chomp 13:14
|Tux| that explains a lot ...
masak likes it 13:15
Ven kinda likes that lizmat's internal helpers are CL-CASED
13:15 Hor|zon left
lizmat afk for a bit 13:16
|Tux| can I - already having an IO - (temporarily) - disable that using a method?
«my Bool $chomped = $io.chomp;» => Cannot modify an immutable Bool 13:17
doc.perl6.org/language/io is empty now 13:18
13:21 _mg_ left 13:23 _mg_ joined
|Tux| gist.github.com/Tux/4dbf087e5718a1dfee7f - My opinion on exit/return/dia before else 13:25
13:30 _mg_ left
|Tux| IO::Handle does IO => has $.chomp = Bool::True; 13:30
should that not be has $.chomp is rw = Bool::True;
13:32 kurahaupo1 left, vendethiel left
|Tux| Grrr, auto-chomp cost me 1 hour of debugging 13:33
|Tux| learned a lot though
13:33 kaleem left 13:34 rurban1 joined
timotimo lizmat: fwiw, in the code tux posted, you could probably do well by using nqp ops like "eqat" 13:37
13:38 larion joined
timotimo i remember building an optimization that'll turn eqat with a one-character-long needle into an ordat op instead 13:38
Ven |Tux|: your comment line 4 seems misguided 13:40
or maybe it's me instead
timotimo eqat also creates one fewer P6Str object for comparison than eq with a substr 13:41
|Tux| might be over-annoyed. It really bothers me to see «if (expression) { return; } else { statement; }»
13:44 Sqirrel left 13:47 virtualsue left 13:48 virtualsue joined
jnthn afk until late-ish this evening o/ 13:49
FROGGS o/ 13:52
13:52 Ven left 13:53 rurban left, Mr0rris0 joined, Mr0rris0 left, Mr0rris0 joined 13:54 Mr0rris0 left, Mr0rris0 joined, Mr0rris0 left 13:55 Mr0rris0 joined, Mr0rris0 left, Mr0rris0 joined 13:56 vendethiel joined, Ven joined 13:58 H2O1 joined
timotimo the optimization i talked about there is only on parrot :\ 13:59
i wonder if i should port it
13:59 tinyblak joined 14:00 H2O1 left 14:01 rurban joined
colomon |Tux|: love your reworking of the conditionals on MAKE-ABSOLUTE-PATH, but not at all sure I like using “and” instead of “if” 14:03
|Tux| whatever 14:04
thank you!
14:12 Hor|zon joined
masak colomon: if it were anyone else, I'd agree with you completely that it's better to keep to the coding style established by the group... 14:12
lizmat |Tux|: in the newio branch MAKE-ABSOLUTE-PATH is reimagined 14:13
masak colomon: ...but |Tux| has set down his coding style in stone once and for all 20 years ago, and it's right by definition, so... not much to do.
moritz old habits die hard 14:14
14:15 pecastro left, rindolf joined
|Tux| masak: I have no preference between if and and, but with and I do not need braces 14:16
colomon OMG, I just realized *I’ve* been coding in Perl for 20 years now. Where did the time go?
masak oh, sorry, 30+ years ago.
14:16 Hor|zon left
|Tux| and minor things *did* change during my programming years, but not the logic behind the style 14:17
masak somehow that does not reassure me.
|Tux| again, are there compelling reasons why IO::Handle.chomp not is rw?
dalek kudo/newio: ae33f3d | lizmat++ | src/core/IO.pm:
Refactor MAKE-ABSOLUTE-PATH with Tux++ inspiration
14:18
|Tux| :) 14:19
compact!
masak |Tux|: "Because braces are just syntactic sugar to keep a block together, it should visually also bind to the block, and not to the conditional." -- from tux.nl/style.html
|Tux|: I don't understand the connection between those two things in that sentence.
|Tux| neither does the code examples? 14:20
masak |Tux|: I could equally well imagine a sentence saying "Because braces are just syntactic sugar to keep a block together, it should of course not be indented together with the code inside the block."
and that would actually make more sense to me.
|Tux| as {} bind the statements inside the block, IMHO it belongs to the block 14:21
14:21 kjs_ joined
dalek kudo/nom: 742b018 | lizmat++ | src/core/IO/Handle.pm:
Make .chomp rw, Tux++
14:21
masak hence your "Because..." sentence does not feel like an explanation to me.
lizmat afk for an hour or so
masak emotionally, the indented '}' brace in those example looks off-putting to me. and rationally, I fail to see the benefit.
|Tux| lets agree to disagree. If you don't understand how my mind works, I'm ok with that 14:22
masak socially, you're putting yourself in a 1% category, which makes you likely to grate against most people's coding style out there.
which, of course, is your choice.
14:22 pecastro joined
masak |Tux|: I wasn't aiming for understanding how your mind works. far less ambitiously, I was trying to see the connection between the thing before the comma and the thing after in that sentence. 14:23
still don't see it.
|Tux| hey, I'm not forcing *anyone* outside of my own projects to follow my style, and I go though big trouble to try to match existing coding style when submitting patches (which is *very* hard for me because of the missing logic)
muraiki do we need a perl 6 version of gofmt?
:)
moritz muraiki: timtowtdi 14:24
|Tux| if statements inside a block indent at the same level, and the braces are part of the block (as I see it), they ought to also indent at the same level
makes more sense now?
masak |Tux|: I'm glad to hear you're not forcing anyone. hm. just consider this your bi-monthly remainder that someone out there considers your coding style to be very odd.
muraiki I also consider that very odd. so two people
no offense intended :)
masak |Tux|: yes, that makes more sense. 14:25
|Tux| pheeuw :)
|Tux| updates the page ...
masak |Tux|: I... I don't think I consider the '}' to be "part of the block" in that sense.
|Tux| I do understand that!
masak it's sort of already ending the block, so it's definitely not "inside" the block, if you see what I mean.
to me, the symmetry of the '{' not being indented and the '}' not being indented is pleasing and easy to explain. 14:26
14:27 Ven left
|Tux| paragraph added 14:27
14:28 alini_ joined
masak nice. 14:28
yes, I understand your reasoning better now.
it's just the premise I disagree with.
14:29 alini left, alini_ is now known as alini
|Tux| thanks for asking though and being persistent in having me explain 14:32
right, so chomp is now rw, but it still doesn't work as I hoped 14:34
gist.github.com/Tux/9e4a125bfe499e63c9eb 14:35
apart from style and indent :) what is wrong there?
14:38 Hor|zon joined 14:40 skids joined 14:45 pdcawley joined
El_Che pdcawley: I saw yesterday your oscon presentation! :) 14:48
pdcawley El_Che: Which one? 14:54
15:01 xiaomiao left 15:04 xiaomiao joined, pmurias joined 15:09 xiaomiao left 15:10 xiaomiao joined 15:11 Ven joined, brrt left, adu joined 15:13 chenryn__ joined 15:14 xfix left 15:15 xfix joined
masak |Tux|: it's admirable that you have a consistent style. compared to that, my (and others') individual disagreements aren't that important. I'd rather someone be consistent and wrong, than inconsistent. 15:15
|Tux| me too 15:16
hé, we agree!
15:19 adu left
pdcawley I used to think that too. Then I got stuck with our current work style and it makes me want to inflict pain every time I try to read it - completely misleads me a lot of the time too. 15:20
Actually had to hack cperl-style's internals to make it so that it could actually indent in that style too.
masak pdcawley: I'm not saying that all styles are equally pleasant, or equally helpful. 15:22
pdcawley masak: I know. But there is a point at which the difficulty of reading a style trumps the fact that it's being applied consistently. 15:23
I know this, because I've experienced it :)
masak I even find it likely that, weren't it for all these meddling programmers and their pernicious "opinions", there's one best possible coding style. or at least a small set of them.
15:23 alini_ joined 15:24 alini left, alini_ is now known as alini
pdcawley masak: the work style is sane, _except_ that the closing braces/parens aren't outdented - they're at the same indentation level as the code in the block that they're closing. 15:24
it completely misleads me every time I try to get a high level view of code. 15:25
masak pdcawley: the *horror*! o.O
pdcawley masak: :)
It shouldn't be awful, but it is.
masak fortunately, no-one from the last couple of hours of #perl6 backlog would think to do something that awful. 15:26
much less advocate it. :P
FROGGS *g*
15:26 Mouq joined
pdcawley taps his sarcasm detector and wonders if he missed something :) 15:27
masak at this point, I encourage you to backlog.
FROGGS stays silent then
Ven
.oO( the froggs know )
FROGGS Ven: he always knows :o)
pdcawley masak: Ah... I don't have that backlog in this client... probably for the best :) 15:28
masak pdcawley: irclog.perlgeek.de/perl6/2015-02-13
pdcawley: maybe from here: irclog.perlgeek.de/perl6/2015-02-13#i_10110933
pdcawley masak: oh god. That's utterly evil. 15:30
FROGGS :P
El_Che pdcawley: the one about data type and your RSI :) 15:31
pdcawley El_Che: Ah. Yes.
|Tux| pdcawley, I get misleaded the other way round all the time 15:32
pdcawley |Tux|: I'm sure. It's such an important cue.
15:32 wicope joined
|Tux| It shouldn't be awful, but it is. 15:32
FROGGS |Tux|: but how do you spot where a block ends when the closing curly is not aligned to the keyword that introduced the block? 15:33
15:33 araujo joined, araujo left, araujo joined
pdcawley |Tux|: And you probably suffer more - you're in a minority when it comes to } style. 15:33
|Tux| naturally
15:33 Rounin left
|Tux| as the answer to both pdcawley and FROGGS 15:33
FROGGS hehe 15:34
|Tux| 30+ years of being used to it
FROGGS yeah, probably
masak |Tux|: how do you indent XML?
|Tux| likewise :)
masak ...the closing tag is aligned with its contents? 15:35
|Tux| yep
masak I'm at a loss for words.
|Tux| same for html
got to that style url and look at the source
and for json idem 15:36
b2gills m: (2264129042459209/3656158440062975).base-repeating(36).say 15:37
camelia rakudo-moar 742b01: OUTPUT«0.(MAKEITSTOP)␤»
masak |Tux|: why is the closing part naturally (in your mind) part of the content, but not the opening tag? 15:38
Mouq b2gills: :D
pdcawley discovers that |Tux| also writes `funcname (@args)', which may even be worse than the } part. Though less likely to completely throw me when reading code.
|Tux| most likely because xml and html (with somewhat verbose closing t 15:39
b2gills I think of the opening and closing delimiters as equal, so I indent them equally
masak pdcawley: there's a Perl 6 slang to accommodate for |Tux|'s desire for whitespace in that spot.
|Tux| pascal looks so much better this way:
IF expression THEN
BEGIN
....
END;
that is where it all started
btyler I started writing `funcname (@args)` in javascript, and took a liking to it...unfortunately few other languages support that style 15:40
masak |Tux|: seems to me you're applying that criterion on all other languages, when they don't look like Pascal.
|Tux| pdcawley, did you ever took the time to read tux.nl/style.html ?
pdcawley |Tux|: skimming it.
btyler it's a nice bit of visual differntiation in js for definition vs invocation for me
FROGGS |Tux|: that reminds me of a dailywtf where somebody #defined BEGIN and END to { and } respectively to write BASIC style code in C
15:40 Kristien joined
pdcawley btyler: ? 15:41
|Tux| has «#define unless(e) if (!(e))» in C :)
FROGGS |Tux|: we all love 'unless' :o)
pdcawley generally, I do 'function foo (args...) { ... }' when defining a function, and 'foo(...)' when applying it in JS.
Kristien m: say 2.sqrt * 2.sqrt == 2
camelia rakudo-moar 742b01: OUTPUT«False␤»
btyler pdcawley: exactly :) 15:42
space between foo and (args...)
pdcawley btyler: Yeah, but |Tux| is talking about using the whitespace in the _call_, not the definition.
b2gills Mouq: I didn't come up with it Kristien did irclog.perlgeek.de/perl6/search/?ni...AKEITSTOPM
FROGGS m: say 2.sqrt.WHAT 15:43
camelia rakudo-moar 742b01: OUTPUT«(Num)␤»
btyler oh, missed that aspect of Slang::Tuxic
15:44 chenryn__ left
pdcawley I'm slightly confused to see |Tux| railing against GNU style indentation - AFAICT almost nobody actually uses that style. You're far more likely to see K&R style. 15:44
hoelzro o/ #perl6
|Tux| what is the default auto-indent style for vim and emacs? 15:45
pdcawley Not one any sane person uses :) 15:46
|Tux| heh again, something to agree on :)
pdcawley if (...)\n {\n code;\n }
ie, the braces floating on a half-indent and on their own bloody line. 15:47
FROGGS that's GNU style, isnt it?
Kristien b2gills: wrong
15:48 chenryn__ joined
b2gills brought to attention then 15:48
masak btyler: in Perl 6, it's fine to leave out or put in whitespace between 'foo' and '()' in the *definition* of a routine.
|Tux| yeah, so much for consistency :P
pdcawley FROGGS: yes. Which is the style that |Tux| specifically refers to in his article about indent styles.
masak btyler: in all cases except one: when the name ends with something like ':bar'. then the whitespace is mandatory, or the colon thing will gobble the '()'
Kristien b2gills: yes! 15:49
15:49 adu joined
pdcawley masak: What's legal in a symbol name these days? 15:49
pdcawley rather likes haskell/lisp's approach to tokenising symbols :) 15:50
Ven haskell's approach?
15:50 chenryn__ left
Kristien I like C's apart from macros. 15:50
pdcawley Ven: basically if it starts with a letter, the symbol runs 'til there's whitespace (or possibly an open paren/bracket)
Kristien That's not the case in Haskell. 15:51
a+b is three tokens in Haskell.
Ven ^
that's the case in agda, though
pdcawley Kristien, but a' is one.
Ven yeah, but ' is an exception...
Kristien yes, but + is not whitespace or a parenthesis
Ven a-z A-Z _ '
pdcawley Ven: Really? You can't have "test?" as a function name? 15:52
Kristien Ven: digits
Ven we have ' in perl6 as well, tho we dont allow primes
pdcawley: no
Kristien: whoops, right
pdcawley Ven: fair enough.
masak pdcawley: same as most languages: alphanumerics and underscores, except first has to be alphabetic.
Kristien I like identifiers restricted to only letters, digits, underscores and question marks that are available in ASCII. 15:53
geekosaur if you want to be truly pedantic, it uses the Unicode letter and digit classes
masak pdcawley: we also allow hyphen and apostrophe before alphabetics.
geekosaur andlikewise operators are Unicode symbol class
pdcawley so $foo-bar is legal.
masak yes.
pdcawley $foo-9 is $foo - 9
masak m: say my $foo-bar = "OH HAI"
camelia rakudo-moar 742b01: OUTPUT«OH HAI␤»
masak m: say my $foo-9 = "OH HAI"
camelia rakudo-moar 742b01: OUTPUT«use of uninitialized value of type Any in numeric context in block <unit> at /tmp/ci4b4EHsnh:1␤␤Cannot modify an immutable Int␤ in block <unit> at /tmp/ci4b4EHsnh:1␤␤»
pdcawley text->str parses as text -> str, I assume then. 15:54
masak aye.
geekosaur that error seems a little LTA
pdcawley $value.zero?
masak pdcawley: '.' is attr access.
pdcawley: '?' is not allowed in identifiers.
pdcawley masak: Aw :) 15:55
masak pdcawley: make a slang :)
pdcawley One of the bits of ruby/scheme style I rather like.
masak: I'm more likely to make a slang for control structures than for tokenization rules :)
control structures are additive (and composable potentially). Tokenisation is just too far down the stack. 15:56
b2gills depending on the control structures you might be able to add them without slangs
pdcawley b2gills: Point. 15:57
masak FROGGS: if you build a Slang::Piersing that allows '!' and '?' at the end of identifiers (including subs and methods), I will buy you a book. :)
(or anyone else, for that matter)
pdcawley masak: So... what's legal in an operator name :)
masak pdcawley: almost anything.
timotimo nonprintables aren't allowed though 15:58
pdcawley timotimo: because we're crazy, but not _that_ crazy.
Ven masak: would you? *g*
masak Ven: I've been known to before.
also, I'm all for imbuing our approach to slangs with a sense of fun and play. 15:59
&
pdcawley is surprised to see that for all his contrarianism, |Tux| doesn't go with "foo "n . "bar" in his style and leaves operators hanging out on the right hand margin and getting cuddly with the end weight problem. 16:00
Kristien cool, LLVM optimised my naive non-tail recursive factorial implementation into a tail recursive one and vectorised it
|Tux| maybe that doesn't bother me 16:01
not do I care if people use tables and/or mixed whitespace
tabs
timotimo Kristien: i'm a bit worried we may never be able to get that kind of sophisticated optimization into moarvm 16:02
not enough money and people-time :(
Ven timotimo: skilled-people-time* :P
Kristien coliru.stacked-crooked.com/a/22a853e80acbf99e
it generates quite a lot of code though
I wonder whether the vectorisation buys anything
Optimising non-tail recursive to tail recursive functions may not be an incredibly difficult task for simple functions, though. 16:04
timotimo though, i must say ... how often do you actually end up with tail recursive functions in a more imperative language? 16:05
if you're purely functional, it's worth a lot i'm sure
FROGGS ~/dev/p6-Slang-Piersing$ perl6-m -Ilib -e 'use Slang::Piersing; sub foo? ($a) { say $a }; foo? 42' 16:06
42
~/dev/p6-Slang-Piersing$ perl6-m -Ilib -e 'use Slang::Piersing; sub foo? ($a) { say $a }; foo! 42'
===SORRY!=== Error while compiling -e
Undeclared routine:
foo! used at line 1. Did you mean 'foo?'?
seems to do :o)
Ven FROGGS, the slang guy 16:07
.oO( FROGGS , da slang gui )
timotimo "slangence"? 16:09
b2gills Calling it Piersing is actually quite apt duckduckgo.com/?q=Piers+Cawley+library
jdv79 where is a good example of identifiers with punctuation in the wild? 16:10
Kristien jdv79: question marks for Boolean return values 16:11
they're everywhere
16:11 tengignick left
timotimo ruby and lisps? 16:11
Kristien yes
mainly
timotimo FROGGS: works for methods, too? 16:12
|Tux| I got working what I planned today. WEEKEND!
Kristien Ruby also uses bangs for destructive functions, e.g. sort is pure and sort! is in-place.
jdv79 i just can't remember where i've seen them. thanks.
dalek osystem: ac91fbe | FROGGS++ | META.list:
add Slang::Piercing, masak++
16:12 mr-foobar joined
timotimo if it's too early for you to start weekend, |Tux|, you could contribute something to rakudo or so :P 16:13
Kristien Oh right, it's friday. rebecca.blackfriday/
|Tux| I think I already did today: chomp is rw
FROGGS ~/dev/p6-Slang-Piersing$ perl6-m -Ilib -e 'use Slang::Piersing; class Foo? { method bar! ($a) { $a ** $a } }; say Foo?.bar!(42)'
150130937545296572356771972164254457814047970568738777235893533016064
pmurias Inline-Perl6 requires perl5.20? 16:14
FROGGS ~/dev/p6-Slang-Piersing$ perl6-m -Ilib -e 'use Slang::Piersing; class Foo? { method bar! ($a) { $a ** $a } }; say Foo?.bar!: 42'
150130937545296572356771972164254457814047970568738777235893533016064
timotimo there is a blackfriday top level domain?
wowsers.
well, there's everything, i suppose
|Tux| and as that doesn't work yet as intended, I might go dig a bit in why
timotimo thank you, FROGGS :)
FROGGS timotimo: it is just copy&paste + mixing in... github.com/FROGGS/p6-Slang-Piersin...iersing.pm
pdcawley Kristien: I think Matz lifted that style from scheme, tbh. 16:15
FROGGS ohh, I dont even need the atkeyish there
Kristien Clojure does it too.
FROGGS masak: where is my book! :P
Ven scheme did it first... :)
Kristien But destruction is extremely rare in Clojure.
Ven common lisp used "n" suffix
timotimo "<[?!]>?" :)
pdcawley Though scheme/lisp's tokenization is pretty extreme. "number->string" is a single token, for instance.
Ven pdcawley: scheme's tokenization is what you described earlier
pdcawley Ven: I sometimes think Scheme's motto is "Can we do that with less?" 16:16
Kristien I wish F# used -> instead of . so it would fit nicely in |> pipelines. :P
Ven Kristien: I wish F# had currying. And didn't depend on tuples for interop...
16:17 diana_olhovik left
Kristien F# has currying. 16:17
Ven inference on currying, then
Kristien You cannot do currying for iterop since foreign functions may be arity-overloaded.
Ven oh, that I agree with, but (foo(1,2)) (or (foo (1,2)) really looks awkward
Kristien: but the fact I have to specify the type of the arg my "fn" function receives in "map" really makes me sad. 16:19
Kristien use |> map
dalek p/longer: bb5a1c1 | FROGGS++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
add constants for C data types
Kristien I wish >> were map instead of being merely a special case of map.
16:19 johnjohn101 joined
timotimo where? 16:19
Kristien in F# 16:20
johnjohn101 hi perl6 peeps
timotimo ah
hello johnjohn
Kristien >> is function composition, which is a special case of map
Ven Kristien: ...tell that to people discussing "fmap vs map" in haskell atm
.oO( won't somebody think of the << ? )
Kristien Haskell must get rid of map and rename fmap to map.
Ven "but then we break prelude!"
johnjohn101 when wall says perl 6 will out in december what version is he talking about? 16:21
Kristien Ven you can't break code that doesn't exist :D
Ven johnjohn101: 6.0
johnjohn101 whose version of perl 6?
Ven Kristien: but for f#, I just wanted to iter, so no "map.
timotimo the community's version of perl 6 16:22
i suppose? is that accurate?
Kristien you can implement map in terms of iter!
FROGGS johnjohn101: the specification and an implementation will be released as being 'what we think 6.0 means'
Ven Kristien: sure, just combine it with ignore. but the fact stays the same, I have to write out the type of the argument 16:23
it can't infer from the type of the list
FROGGS johnjohn101: so, the language spec will gets its stamp as well as rakudo on moarvm
johnjohn101 FROGGS: ok, thanks.
Kristien In December, regressions can begin! :0 16:24
16:24 telex left
Kristien From then on the language will slowly start to suck. :P 16:24
FROGGS :P
muraiki haha
16:24 Alina-malina left 16:25 Alina-malina joined 16:26 Kristien left, telex joined 16:27 vendethiel left 16:28 vendethiel joined
b2gills Kristien: my response to your friday link duckduckgo.com/?q=ginny+diguiseppi...day+parody 16:29
16:29 FROGGS[mobile] joined 16:30 Ven left
jdv79 that is an interseting point. after 6.0 is released would a really important but massively backcompat breaking change be allowed? 16:30
dalek p/longer: f82ceb0 | FROGGS++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
add constant for C type long
16:32
FROGGS jdv79: "depends" 16:33
johnjohn101 i'm happy to see the end of the beginning for perl 6.
16:33 FROGGS left
moritz jdv79: we can always declare a new language version, though we must be aware of the costs for maintenance 16:33
16:35 gfldex joined 16:36 Sqirrel joined 16:40 rindolf left
pmurias with slang it will be possible to make large changes without breaking backcompat 16:44
moritz pmurias: maybe syntactic changes, but I don't see how it would help with a change in a central class in core 16:48
pmurias per lexical scope monkey patching? 16:50
16:50 zakharyas left
moritz methods aren't lexically scoped 16:50
16:52 pdcawley left 16:53 vendethiel left
timotimo versioned classes? 16:53
masak FROGGS[mobile]: wow. I'm impressed.
FROGGS[mobile]: let's handle book in privmsg.
timotimo hm?
16:53 echowuhao joined
timotimo oh, you promised him a book :D 16:54
16:55 vendethiel joined
nine_ pmurias: Inline::Perl6 surely works on older Perls, too. It's just the default of h2xs to require the installed Perl version 17:02
17:04 Ven joined, Mouq left
dalek rl6-roast-data: 5628778 | coke++ | / (5 files):
today (automated commit)
17:05
pmurias nine_: it requires multiplicity? 17:06
nine_ pmurias: have'nt tested without multiplicity so there's probably a place or two where I accidentally require it. 17:08
[Coke] 3 consistent failures in rakudo-moar that need to be addressed. 17:09
S03-operators/repeat.t 33; S17-supply/start.t 9 ; integration/weird-errors.t 5 - happening on JIT & NOJIT
I tried sussing out S17-supply/start, but it's very sensitive to adding debug output to the test or to Test.pm
pmurias nine_: so I should just clone Inline-Perl6 from github and purge those places? 17:12
[Coke] JVM is also failing S03-operators/repeat.t 33 (parrot is not)
JVM is aborting on integration/advent2014-day05.rakudo.jvm 17:13
nine_ pmurias: that'd be great :) 17:14
17:16 pdcawley joined 17:20 Mso150 joined, spider-mario joined 17:28 wicope left 17:29 Mso150 left 17:32 Kristien joined
Kristien hi 17:34
17:37 vendethiel left
dalek c: 53a206e | paultcochrane++ | lib/Type/IO.pod:
Document the open() function
17:39
c: aefce9d | paultcochrane++ | lib/Language/io.pod:
Remove IO-related todo items

The open() sub has now been documented The options to open() have now been documented.
17:41 diana_olhovik_ joined
TimToady m: say (22/7).base-repeating(10) 17:46
camelia rakudo-moar 742b01: OUTPUT«3.(142857)␤»
17:46 pmurias left
TimToady is there a better notation for the repeating digits than parens? 17:46
underscore doesn't quite work, since ._ is illegal
m: say 3._142857 17:47
camelia rakudo-moar 742b01: OUTPUT«No such method '_142857' for invocant of type 'Int'␤ in block <unit> at /tmp/dB32IN1l0w:1␤␤»
TimToady like that...
say 3.¹
m: say 3.¹
camelia rakudo-moar 742b01: OUTPUT«===SORRY!=== Error while compiling /tmp/qPEDUcw8bH␤Missing semicolon.␤at /tmp/qPEDUcw8bH:1␤------> say 3.⏏¹␤»
TimToady that could be made to work, I suppose 17:48
but maybe we should just return two strings 17:49
17:49 sqirrel__ joined
TimToady m: 42.777e0.base(10,0) 17:49
camelia ( no output )
TimToady m: say 42.777e0.base(10,0) 17:50
camelia rakudo-moar 742b01: OUTPUT«43␤»
Kristien why is there no camelia command that implicitly uses say?
TimToady m: say (1/3).base(10,40) 17:51
camelia rakudo-moar 742b01: OUTPUT«0.3333333333333333333333333333333333333333␤»
Kristien forgetting say happens too often
ashleydev TimToady: whats the "e0" part mean?
TimToady they other way also clutters the channel, so it's a tradeoff
make it a floater
otherwise it's a rat
ashleydev is there a pneumoic for that?
TimToady m: say Num(1/3).base(10,40) 17:52
camelia rakudo-moar 742b01: OUTPUT«0.3333333333333333037273860099958255887032␤»
TimToady well, it pretty well matches the internals, when you have floating point, there's an exponent 17:53
we just don't automatically translate 3.14159625 into Num automatically like most language, but into Rat
m: say 3.1416.WHAT
camelia rakudo-moar 742b01: OUTPUT«(Rat)␤»
TimToady m: say 3.1416.perl 17:54
camelia rakudo-moar 742b01: OUTPUT«3.1416␤»
TimToady m: say 3.1416.nude
camelia rakudo-moar 742b01: OUTPUT«3927 1250␤»
TimToady m: say .1 + .2 - .3
camelia rakudo-moar 742b01: OUTPUT«0␤»
TimToady as a consequence, most other languages don't produce 0 for that expression 17:55
m: say .1 + .2 - .3e0
camelia rakudo-moar 742b01: OUTPUT«0␤»
TimToady m: say .1e0 + .2 - .3
camelia rakudo-moar 742b01: OUTPUT«5.55111512312578e-17␤»
17:56 alini left
TimToady and since anything to the 0th power is 1, it's a convenient notation for floating literals 17:56
Kristien wrong! 17:57
TimToady picky, picky
:)
all rules of thumb are wrong, including this one
ashleydev m: say 2e3 17:58
camelia rakudo-moar 742b01: OUTPUT«2000␤»
ashleydev m: say 2e0
camelia rakudo-moar 742b01: OUTPUT«2␤»
TimToady m: say Num(.1) + .2 - .3
camelia rakudo-moar 742b01: OUTPUT«5.55111512312578e-17␤»
TimToady in particular, we only need 10 ** 0 to be 1 in this case :) 17:59
ashleydev ah
see it now
Kristien I will never make a rat keeping game in Perl 6.
TimToady well, they're there for correctness, not for speed
fortunately, as soon as a calculation flips into floating point, it sticks 18:00
ashleydev but the programer gets to make that choice in p6
TimToady so you only need to start it out that way, as with the examples above where only the first term is forced to Num
ashleydev: yes, but we don't force people to make that choice until they're ready for it 18:01
just as in P5, we didn't tell people that anonymous subs were really true closures
Kristien Where can I find the rationale behind types not being values of some Type type?
Rather than Int.WHAT returning Int.
TimToady but when they want to make a callback that treats external lexicals correctly, they are then ready to learn about closures
18:02 kjs_ left
TimToady Kristien: well, logic, basically, and being able to reason about types or instances of those types the same way 18:03
Socrates is a man, and all that
moritz [ptc]: re irclog.perlgeek.de/perl6/2015-02-13#i_10110243 only if the module exports those functions
18:03 kjs_ joined
TimToady to start out with, it was just a WAG by a linguist, but it seems to have worked out well in practice 18:04
moritz [ptc]: my idea with the code callbacks was the a callback can always decide not to do the work itself, and defer to the :$default instead 18:05
Kristien TimToady: but why'd you want to reason about them the same way?
TimToady because that's how people do it in natural languages
moritz [ptc]: IMHO the *proper* solution would be to have some kind of propessing pipeline in Pod::To::HTML, and the ability to hook into the pipeline
18:06 kjs_ left
moritz Kristien: if the type object were not of the same type as instances, it would make it quite a stretch to define methods than ca be called as class or instance methods 18:06
class Flurb { method thing() { 42 } }; Flurb.thing constrains the invocant to Flurb. If the type object weren't Flurb, you couldn't call static methods 18:07
and normal method dispatch wouldn't apply to static methods
TimToady moritz: which is, of course, a debatable feature for just that reason, if you follow the conventional CS thinking on such things 18:08
TimToady has never particularly approached language design from the CS direction, however, as you may have noticed :) 18:09
18:09 Mouq joined
TimToady o/ 18:09
moritz well, we do the other thing too. Int.^HOW is an instance of ClassHOW, which is close enough to Kristien's Type 18:10
TimToady troo
but those are officially outside the language, because of the HOW :) 18:11
Deep Magic From The Beginning Of Time
Kristien m: say Int.HOW === Int.^HOW
camelia rakudo-moar 742b01: OUTPUT«===SORRY!=== Error while compiling /tmp/yQMn4wVQ72␤Cannot use .^ on a non-identifier method call␤at /tmp/yQMn4wVQ72:1␤------> say Int.HOW === Int.^HOW⏏<EOL>␤ expecting any of:␤ method arguments␤»
[ptc] moritz: thanks for the answers :-)
Kristien m: say Int.HOW; say 42.^HOW 18:12
camelia rakudo-moar 742b01: OUTPUT«===SORRY!=== Error while compiling /tmp/6lE0iyNNge␤Cannot use .^ on a non-identifier method call␤at /tmp/6lE0iyNNge:1␤------> say Int.HOW; say 42.^HOW⏏<EOL>␤ expecting any of:␤ method arguments␤»
TimToady .^HOW is a misnomer
Kristien m: say Int.HOW
camelia rakudo-moar 742b01: OUTPUT«Perl6::Metamodel::ClassHOW.new()␤»
Kristien OK :P
[ptc] moritz: have you had time to look at how I implemented syntax highlighting?
TimToady $foo.^bar(args) means $foo.HOW($foo, args)
er
$foo.^bar(args) means $foo.HOW.bar($foo, args) 18:13
Kristien right
so .^HOW would be .HOW.HOW
TimToady since there are basically two different invocants that have to come in
moritz [ptc]: today? or some time ago in the branch?
nine_ |Tux|: can you still reproduce the No such method '' for invocant of type 'Foo' error in Inline::Perl5? I cannot.
TimToady m: say Int.HOW.HOW 18:14
camelia rakudo-moar 742b01: OUTPUT«No such method 'gist' for invocant of type 'NQPClassHOW'␤ in sub say at src/gen/m-CORE.setting:17426␤ in block <unit> at /tmp/qNCilVPBCE:1␤␤»
TimToady m: say Int.HOW.HOW.Str
camelia rakudo-moar 742b01: OUTPUT«No such method 'Str' for invocant of type 'NQPClassHOW'␤ in block <unit> at /tmp/KjFVxjJZOl:1␤␤»
[ptc] moritz: today
TimToady m: say Int.HOW.HOW.name
camelia rakudo-moar 742b01: OUTPUT«Too few positionals passed; expected 2 arguments but got 1␤ in any name at gen/moar/stage2/nqpmo.nqp:1201␤ in block <unit> at /tmp/rbZwPYoLAA:1␤␤»
adu TimToady: but I do think you have a firm grasp of ergonomics
TimToady m: say Int.HOW.HOW.name(Int.HOW)
camelia rakudo-moar 742b01: OUTPUT«Perl6::Metamodel::ClassHOW␤»
18:14 vendethiel joined
TimToady m: say Int.HOW.HOW.HOW.name(Int.HOW.HOW) 18:14
camelia rakudo-moar 742b01: OUTPUT«NQPClassHOW␤»
TimToady m: say Int.HOW.HOW.HOW.HOW.name(Int.HOW.HOW.HOW) 18:15
camelia rakudo-moar 742b01: OUTPUT«KnowHOW␤»
ashleydev you sound like a 2-yr old
TimToady that's the bottom, or the top, or the inside
[ptc] moritz: I added a note about it in issue #28
TimToady m: say Int.HOW.HOW.HOW.HOW.HOW.name(Int.H...W.HOW.HOW)
camelia rakudo-moar 742b01: OUTPUT«KnowHOW␤»
ashleydev or maybe that would be WHY.WHY.WHY...
TimToady KnowHOW is our turtle
[ptc] moritz: no probs if you haven't! Was just asking :-)
moritz [ptc]: (how) does it deal with :allow<...> in code blocks? 18:16
adu the bottom? the top? how about the part with the fewest dependencies?
[ptc] moritz: I basically overrode how node2inline to effectively ignore them. 18:17
moritz: as a first-cut solution it'd probably be ok
TimToady except that it's not KnowHOWs all the way down, you have to go past several non-turtles first
TimToady blames spontaneous symmetry breaking
[ptc] moritz: I wasn't overly happy about how I'd solved the problem though, hence my questions regarding how to hook into the Pod::To::HTML code 18:18
TimToady Kristien: I hope that if we haven't convinced you, we've confused you. :)
Kristien m: say 42.new 18:19
camelia rakudo-moar 742b01: OUTPUT«0␤»
TimToady m: say 42.clone
camelia rakudo-moar 742b01: OUTPUT«42␤»
TimToady m: say Int.clone; # curious 18:20
camelia rakudo-moar 742b01: OUTPUT«(Int)␤»
Ven m: sub foo(Int) {}; foo(Int.clone)
camelia ( no output )
Ven heh.
TimToady m: say Int === Int.clone
camelia rakudo-moar 742b01: OUTPUT«True␤»
TimToady good, it's immutable, whew! 18:21
18:21 fhelmberger left
Ven *g* 18:23
m: say Int =:= Int.clone
camelia rakudo-moar 742b01: OUTPUT«True␤»
18:23 flussence joined
TimToady for non-containers =:= is equivalent to === 18:23
Ven ah, alright 18:24
TimToady it just worked out that way, and we kept it rather than getting mad
Ven I guess the semantics are for the best...
TimToady m: my $x = 42; say $x =:= 42 18:25
camelia rakudo-moar 742b01: OUTPUT«False␤»
TimToady m: my $x = 42; say $x === 42
camelia rakudo-moar 742b01: OUTPUT«True␤»
TimToady better than throwing an exception 18:26
I agree with those who say that most "modern" languages are way too exception-happy
TimToady is not just looking at Python here
18:27 sqirrel__ left
TimToady Exceptions should not be used for rocket guidance; they should be used to blow up rockets with an awesome error message. 18:27
Ven "exceptions for flow control", right.. 18:28
TimToady well, except for those exceptions :)
the exception to exceptions, as it were...
18:29 fhelmberger joined
TimToady expected excepted, if you want anagrams 18:30
expected exceptions we optimize heavily, unexpected exceptions we pessimize 18:31
and CONTROL/CATCH is the dividing line there 18:32
18:33 fhelmberger left 18:39 itz joined 18:40 itz_ left, rindolf joined 18:41 virtualsue left
TimToady m: 42.base(16,40) 18:42
camelia ( no output )
TimToady m: 42.base(16,40).say
camelia rakudo-moar 742b01: OUTPUT«2A.0000000000000000000000000000000000000000␤»
18:43 Alina-malina left 18:48 Ven left
Kristien I use exceptions for errors I don't wanna handle often. 18:57
such as I/O errors and OOB errors
18:58 _mg_ joined, grettir joined
TimToady but running out of I/O is generally expected 18:59
so it's better if your loop just quits automatically
Kristien I mean stuff like database disconnected or disk borked, not EOF. 19:00
EOF is something I do want to handle often.
TimToady nod
Kristien EOF is not really an error IMO, it's just a state
19:01 FROGGS joined
TimToady it's just an instance of "the generator stopped" 19:01
moritz Kristien: integers are also something I want to handle often; that doesn't mean I want them to be exceptions :-) 19:02
TimToady um, there's a not missing on some level there
19:02 FROGGS[mobile] left
Kristien moritz: I think you read my statement wrong. 19:02
TimToady the argument was "not usual"
moritz [ptc]: do you know which version of pygments first shipped with perl6 support? 19:03
[ptc] moritz: not off the top of my head 19:04
19:04 johnjohn101 left
dalek c/add_pygments_highlighting: 559a6e8 | moritz++ | htmlify.p6:
use $*TMPDIR instead of hard-coded /tmp
19:04
c/add_pygments_highlighting: da9b40a | moritz++ | htmlify.p6:
Improve detection of pygmentize

we should not rely on it being in /usr/bin
19:05
[ptc] moritz: it's version 2.0 in debian/jessie 19:06
moritz [ptc]: 1.6 doesn't have it
hoelzro nice moritz
19:07 rindolf left
hoelzro I think it was 1.7? 19:07
hoelzro checks
hahah
I never noticed this on the pygments home page:
"... and it highlights even Perl 6!"
moritz \o/ 19:08
[ptc] moritz: the changelog from pygments says it was added in 2.0
hoelzro 2.0 19:09
Mouq hoelzro: Haha, that's great, I think that's recent! The Perl 6 support is your work, right?
[ptc] moritz++ ; that's a much better way to detect pygmentize!
hoelzro yes, it is
Mouq hoelzro+++
hoelzro I should probably update it with more recent language changes... 19:10
[ptc] hoelzro++ 19:11
dinner& 19:14
dalek c/add_pygments_highlighting: d000f1e | moritz++ | htmlify.p6:
Only syntax-hilight code blocks without formatting codes
19:18
moritz [ptc]: I can't really test it on my workstation, since my pygments is too old
hoelzro moritz: can you try a virtualenv? 19:19
then you can use a newer pygments
moritz hoelzro: I could. Or I could try on hack.p6c.org
hoelzro: but then I'd have to stop wining and actually do stuff :-)
hoelzro heh =)
timotimo i know that feeling 19:21
[ptc] moritz: I'll test it out soon 19:24
moritz: thanks for the code cleanup! It's a much more elegant solution :-)
afk 19:25
masak programming: poetry with observable side effects. 19:48
El_Che masak: you don't like functional poetry? :) 19:49
19:50 kaare_ joined, beastd joined
vendethiel El_Che: surely you mean 19:50
*pure* functional poetry
El_Che yeah, they kind everyone looks up to but no one understands :) 19:51
dalek volaj/longer: b6c78ed | FROGGS++ | / (8 files):
s/int/long/ and use long and int32 correctly
19:52 nic77 joined
TimToady and obviously 'short double' on the C side :) 19:53
19:53 nic77 left, [particle]1 left
skids vendethiel: Maybe your keyboard a haiku keyboard? 19:53
TimToady sorry, ww
19:53 nic77 joined, nic77 left, [particle] joined 19:54 nic77 joined
Kristien What is kinda the progress on native? 19:55
I want to use LLVM C API from Perl 6.
But if that's not yet possible I'll use another language instead.
19:56 Mr0rris0 left
vendethiel skids: I have both azerty and qwerty, does that count? 19:57
or am I still missing one 19:58
FROGGS Kristien: our NativeCall interface is quite awesome tbh
Kristien I currently get "Can't use unknown trait 'is native' in a sub declaration."
FROGGS Kristien: 'use NativeCall'
Kristien ok
"Could not find NativeCall in any of: /Users/rightfold/rakudo/install/languages/perl6/lib, /Users/rightfold/rakudo/install/languages/perl6" :P 19:59
FROGGS star-m: use NativeCall; sub foo is native { * }
camelia ( no output )
FROGGS Kristien: well, install it via panda
Kristien OK
dalek kudo/nom: fec2339 | TimToady++ | src/core/Rational.pm:
base-repeating now returns two strings

This is more useful to anyone for downstream tweaks to how the repeat is displayed or used. I can imagine code that does my ($n,$r) = $rat.base-repeating(10); my $c = cat($n, $r xx *); to get an infinite Cat string for whatever precision you want.
geekosaur also, maybe rakudo star is more for you, since it comes with stuff like that
Kristien btw are there any plans for allowing Grammar.parse to signal error positions instead of just returning Nil?
[Coke] ... developer managed to get our svn repo in a state where "git svn fetch" against a git-svn copy of the repo is now infinitely updating. w. t. f.
geekosaur (star lags a bit but comes with a starter ecosystem) 20:00
FROGGS Kristien: internally there is a highwater mark that we use to know how far we got when we parse Perl 6... though, I think it is not exposed yet 20:01
Kristien there's subparse
FROGGS Kristien: ... but it was discussed and wanted often
lizmat .tell |Tux| what's the problem with IO::Handle.chomp and a loop with .get ? I don't see any problem 20:03
yoleaux lizmat: I'll pass your message to |Tux|.
dalek kudo/longer: 7d49693 | FROGGS++ | src/Perl6/Metamodel/NativeHOW.nqp:
handle C type names in "is nativesize" trait
20:04
Kristien can't decide between perl and d 20:06
20:07 kjs_ joined
FROGGS I don't know D so I cannot help deciding here :o) 20:09
and I gave a presentation about NativeCall so...
Kristien scala it is 20:10
dalek kudo/newio: 8895666 | timotimo++ | src/Perl6/Grammar.nqp:
important not to succeed this match when not panicking
kudo/newio: 742b018 | lizmat++ | src/core/IO/Handle.pm:
Make .chomp rw, Tux++
kudo/newio: fec2339 | TimToady++ | src/core/Rational.pm:
base-repeating now returns two strings

This is more useful to anyone for downstream tweaks to how the repeat is displayed or used. I can imagine code that does my ($n,$r) = $rat.base-repeating(10); my $c = cat($n, $r xx *); to get an infinite Cat string for whatever precision you want.
kudo/newio: 672de3c | lizmat++ | src/ (2 files):
Merge branch 'nom' into newio

Conflicts: src/core/IO/Handle.pm
kudo/newio: 8f6d7db | lizmat++ | src/core/PIO.pm:
Make PIO.chomp adjustable
20:12 espadrine left
lizmat .tell jnthn I know you dislike the PIO role name, perhaps "Streamer" would be a better name? other suggestions? 20:13
yoleaux lizmat: I'll pass your message to jnthn.
lizmat is in severe lack of inspiration and is also tired, so calls it a day
Mouq lizmat++ 20:14
lizmat: Have any idea when you think newio'll land? 20:15
20:23 Alina-malina joined
moritz hack.p6c.org:3000/type/DateTime.html # doc.perl6.org with syntax hilighting, [ptc]++ 20:27
timotimo way cool 20:28
thanks, [ptc]++
masak wow. [ptc]++
my only kvetch is that 'new' is highlighted, I think :) 20:29
20:29 fhelmberger joined
timotimo i'm still way reluctant to allow people to just run code on our community server even with sandboxing and stuff in place ... 20:32
but i really want us to have something where people can evaluate code or have repls on line
moritz timotimo: well, when you have some software to do that, I'll set up a separate VM for it 20:33
timotimo yeah 20:34
20:34 alini joined
timotimo do we have a favourite solution for sandboxing? i hear docker is still hip? 20:34
20:34 fhelmberger left
timotimo also, where are we on the road towards having https for all p6c hosted things? 20:35
moritz timotimo: docker is not suitable for sandbox security-wise
20:35 kjs_ left
timotimo OK, but piling selinux on top could help? 20:35
moritz timotimo: p6c is kvm based, so that's what I'd use
timotimo: also cgroups are there 20:36
timotimo at least docker would prevent persistent hacks
docker uses cgroups already, no?
or do you just mean cgroups is activated on the host as well as the guests?
moritz as does systemd
timotimo: yes 20:37
timotimo: my approach would be to have a VM as the main line of defense
timotimo: and as a secondary line, inside the VM the services runs in a cgroup with a separate /dev and /tmp mounted
timotimo: and /usr/ read-only
I've set those things up before, so I can be of help :-) 20:38
20:38 _mg_ left, darutoko left
moritz my experience with selinux is less positive, though it's also a few years old 20:39
El_Che selinux? isn't that the first thing you disable if you want an usable box? 20:40
:)
moritz timotimo: if you really care, you could automate provisioning of the the VM, then we could throw it away regularly and re-create from scratch 20:41
gfldex moritz: you mean like man7.org/linux/man-pages/man1/lxc-create.1.html ? 20:42
20:43 Alina-malina left, Alina-malina joined
moritz wonders if he has been speaking swahili or something 20:44
gfldex you dont need to speak swahili to be misunderstood by me 20:45
i can misunderstand you all day long if i have to :)
colomon moritz: No, ilionekana kama Kiingereza na mimi.
20:46 sunnavy left
timotimo moritz: huh? 20:46
moritz sorry, I'm tired and easily irritated 20:47
timotimo *hug*
i'm not yet 100% sure what exactly the software that handles the perl6 processes should have, feature-wise
moritz the first instance could be a very easy web page with a big text area and an output window 20:49
and by clicking a button, it evaluates the input 20:50
github.com/moritz/try.rakudo.org was much more ambitious, and much less maintainable
and crashed far too often 20:51
it tried to give you a repl by keeping multiple rakudo repl sessions open in the background
20:52 spider-mario left
timotimo i'd like to have the service that serves the html and the service that does the REPL/compiler management on separate VMs, does that sound all right? 20:52
moritz timotimo: to me, it sounds like over-engineering 20:53
[Coke] blogs.perl.org/users/shadowcat_mdk/...ideas.html , btw.
moritz timotimo: what's the purpose? not breaking the frontend when the backend is compromised? 20:54
timotimo i want to overengineer ALL the things!
but you're right, it'll probably be fair enough
moritz the advantage of having them on the same machine is that you don't need authentication/authorization 20:55
you can just do local network
timotimo right
moritz or maybe not even network 20:56
just write the program to a temp file
timotimo anything i can do to help https setup accelerate?
a shared temp folder, eh?
at least having the two parts in different cgroups would be good 20:57
moritz and run sudo -u unprivilegeduser perl6-m inputfile > out
timotimo ah, yeah, suexec style
moritz well, I'm open to suggestions
re https, I've been lazy and kinda hoped to defer until letsencrypt.org is live
timotimo i'd actually prefer writing the frontend server in python, as i've never done perl5 web dev, and i'd like the frontend to be very low performance impact 20:58
Kristien I wrote a monadic parser combinator library in C++. :)
moritz timotimo: if you don't want to wait, get some certificates and install them, configure the apache. I'll give you sudo/root if you don't have it already
FROGGS timotimo: somebody will help with P5... 20:59
moritz www.ohling.org/blog/2015/02/wosign...icate.html # or use them as a CA
timotimo i have root, yeah. but i've never done https 21:00
like, set up https
flussence spent the last few months tweaking ssl setups... one thing I've learned is that simpler is better
timotimo FROGGS: i don't actually want to touch perl5 :P 21:01
moritz flussence: what exactly is simple?
FROGGS timotimo: :P
moritz flussence: one domain per IP?
timotimo: I'm fine with python
FROGGS moritz: either that or you need a wildcard cert
timotimo i hear wildcard certs are super expensive
moritz yes 21:02
FROGGS aye
moritz 400USD+
more like 2k USD usually
and then they are only valid for one year
timotimo right 21:03
flussence moritz: I tried experimenting with self-signed stuff (it's for a home server I wanted to access things on while away)... ended up just using one certificate shared between all services, with a bit of SNI. I wouldn't do it on a production server looking at *those* numbers though...
timotimo there's security considerations to that, right?
flussence (also, turns out it's much easier to use proxy features built into a webserver than trying to secure multiple webservers.) 21:04
21:04 kjs_ joined
timotimo how should the service handle updating rakudo impls? 21:04
moritz timotimo: not :-) 21:05
timotimo good
moritz timotimo: I'd say rakudobrew, or reuse camelia's rakudo rebuild scripts
timotimo: but that's not done by the service itself; it's done by cron (or even manually)
timotimo good 21:06
21:06 araujo left
dalek ecs: 081e2aa | TimToady++ | S32-setting-library/Numeric.pod:
document .base and .base-repeatig changes
21:06
moritz the service itself won't have write access to the install dir
timotimo ah, yes, it should definitely not be able to change anything in there
do we have any sort of monitoring in place yet? 21:07
moritz nope
timotimo to see if some progress has gone out of control and noms cpu cores or ram continuously?
maybe i could set something up for that?
21:07 pippo joined, echowuhao left
timotimo the only thing i have experience with yet in that domain is munin, though 21:07
moritz timotimo: my approach has rather been to limit resources, so that those programs get killed
pippo o/ #perl6
timotimo aye, sensible
pippo Could somebody help me? I need to know how can I add a method on the Date object. 21:08
TimToady use a mixin? 21:09
PerlJam pippo: why do you want to add a method to the Date object?
timotimo do you mean add to the type, so that every even existing instance gets it, too?
or is it enough to add that method to one existing instance of Date?
flussence pippo: if you really want to - doc.perl6.org/type/Metamodel%3A%3AM...dContainer
TimToady or N of them, if you control the construction
timotimo flussence: we have syntax for that, you know? 21:10
pippo I wnat to do my $date = Date.new; and then $date.prettyprint or so
moritz pippo: use a sub instead
timotimo aye
moritz prettyprint($date)
TimToady does it have to be Date? can it be MyDate?
timotimo or even $date.&prettyprint if you have a "sub prettyprint($date) { ... }"
moritz pippo: mutli subs make it quite easy to extend that to many types
pippo It can be MyDate
moritz pippo: then inheritance would work
FROGGS m: Date.^add_method('prettyprint', -> \self { 42 }); my $d = Date.new; say $d.prettyprint # pippo 21:11
camelia rakudo-moar fec233: OUTPUT«42␤»
FROGGS that's one way
Mouq flussence: Oh gosh, the typegraph on that page…
timotimo not recommended at all, FROGGS
FROGGS :o)
TimToady FROGGS: don't teach evil :)
FROGGS damn
moritz m: class PrettyDate is Date { method pretty { "pretty " ~ self.Str } }; say PrettyDate.today.pretty
camelia rakudo-moar fec233: OUTPUT«pretty 2015-02-13␤»
TimToady at least force them to declare MONKEY_TYPING
pippo FROGGS: That's waht I was looking for!
moritz pippo: ^^
FROGGS that's probably better 21:12
PerlJam oh no!
FROGGS pippo: nooooooo
pippo FROGGS: Thank you!
moritz pippo: don't go to the dark side!
FROGGS pippo: look at moritz's example
TimToady we'd better break that quick
PerlJam FROGGS: Remember ... with great power comes great responsibility
FROGGS pippo: they dont even have cookies!
pippo OK I'll use moritz solution then :-))
TimToady we do NOT believe in monkey patching here as a cultural norm
FROGGS pippo++ 21:13
pippo Thank you all again!
timotimo mhhh cultural nom
FROGGS was fun anyway *g*
dalek c/add_pygments_highlighting: 017a076 | moritz++ | htmlify.p6:
Check for minimal pygmentize version
21:14
pippo BTW, I really like the Date object and his methods. I think it is very useful. Tks #pelr6
moritz anyway, should I merge that branch?
pippo: it's 90% stolen from Perl 5's Date::Simple :-)
pippo: and you're welcome. 21:15
FROGGS pippo: I'd love to see a DateTime::SpanSet port from P5 :/
TimToady wishes all these highlighters wouldn't treat setting functions and methods as reserved words; they're just functions and methods
moritz TimToady: agreed 21:17
flussence wishes perl6.vim didn't highlight Test.pm functions as reserved words either... 21:18
TimToady in rosettacode.org/wiki/Textonyms#Perl_6 why is They highlighted in the heredoc; I can understand 'words' being highlit by accident
and it's pretty pathetic to ignore the sigil in @words and highlight the words as a "keyword" 21:19
flussence I'd much rather have all words (outside of strings) unhighlighted, it'd encourage me to pick good ones :) 21:21
[Tux] lizmat++; # \o/ chomp change works!!!
[Tux] is happy
pippo FROGGS: I did not have to use it in my very little programming :-)
TimToady oh, I think They is highlit as a method because the *previous* line ends with . 21:22
FROGGS pippo: but I enjoy its API very much and would like to see a P6 port because it usually improves a lot then :o)
hoelzro flussence: if you want to submit a PR to address that, I'll mere it
I don't like it either
hoelzro started a fresh perl6.vim because of performance issues with what's in vim-perl 21:23
[Tux] I now have 17394 tests passing
flussence hoelzro: I may do that, but I'll put a lot more thought into it first
hoelzro perl6.vim could use some love, and that's a failing on my part 21:24
flussence for what it does, and what it has to work with, it's pretty impressive :)
pippo FROGGS: I agree. 21:25
TimToady flussence: indeed, I'm just never completely satisfied, you may have noticed :) 21:26
FROGGS TimToady: if you were we would not be here :o) 21:27
moritz any votes on syntax hilighting on doc.perl6.org as pygments gives it now?
FROGGS moritz: how can I see an example?
21:27 echowuhao joined
moritz FROGGS: hack.p6c.org:3000/type/DateTime.html 21:28
jnthn evening, #perl6
yoleaux 20:13Z <lizmat> jnthn: I know you dislike the PIO role name, perhaps "Streamer" would be a better name? other suggestions?
FROGGS moritz: ohh, it is quite nice
moritz: so, +1 from me 21:29
moritz or hack.p6c.org:3000/language/functions.html which has some non-hilighted examples too
FROGGS moritz: it is still better than no highlighting at all 21:30
hoelzro purdy
moritz: +1 from me
ah, I see that single line highlighting bug is there =/ 21:31
s/single line/single line comment/
21:31 dolmen joined
FROGGS evening jnthn 21:32
21:32 xfix left
hoelzro moritz: what are you using as a stylesheet for the pygments sections? 21:33
masak \o, jnthn 21:34
hoelzro o/ jnthn
jnthn .tell lizmat Hm, that doesn't quite strike me as correct either. The $!PIO attribute is really a handle...so something along those lines may fit better. I guess we already used IO::Handle...or did that change in newio, or does places with PIO overlap with that anyway? :) 21:35
yoleaux jnthn: I'll pass your message to lizmat.
jnthn yay, syntx highlighting! :D
I'm *really* happy to see the pygments Perl 6 work get put to good use, after Github moved on to something else... 21:36
hoelzro moritz: may I suggest that you duplicate the 'body .c' rule to create a 'body .c-Singleline' one; that'll fix that bug until I've fixed it
jnthn: Bitbucket is still on pygments ;) 21:37
flussence jnthn: github may have lost it, but cgit still gets pretty perl6 highlighting :)
hoelzro and they also detect Perl 6 properly!
jnthn hoelzro: Ah, then cool :)
moritz hoelzro: uhm, I haven't touched the CSS at all; could you do it please? 21:38
hoelzro sure! 21:39
skids "Missing serialize REPR function for REPR VMException" /o\ I'm sure that means something to someone, but not me. 21:40
FROGGS skids: that means that you let an exception slip somewhere... maybe a BEGIN block or a EXPORT sub 21:41
so, a 'my $/' helps there IIRC
err, $!
muraiki how do I make the foo.pm.moarvm file for a module? I'm trying to put a module into my site lib... 21:45
and I"m not even sure what to google to get a useful result, heh
moritz muraiki: perl6-m --target=mbc --output=foo.pm.moarvm foo.pm 21:46
FROGGS muraiki: perl6-m --target=moar --output=foo.pm.moarvm foo.pm
ohh, mbc, right
moritz muraiki: though 'ufo && make' might be easier
FROGGS or creating a META.info and run `panda install .`
21:47 rurban left
dalek c: 66250c2 | lumimies++ | lib/Type/DateTime.pod:
Fix some typos
21:47
21:51 kjs_ left
hoelzro moritz: is there something I should be doing to enable the pygments when running app.pl? 21:57
flussence hoelzro: make sure you're on the right branch?
hoelzro I did =)
flussence ah, k
hoelzro ah, I might want to install pygments. 21:58
flussence m: say Version.new('2.0pre') ~~ v2.0+
camelia rakudo-moar fec233: OUTPUT«True␤»
flussence whoa, that line's pretty cool. 21:59
tadzik :o
21:59 Kristien left
Mouq m: say Version.new('2.1') ~~ v2.0+ 22:00
camelia rakudo-moar fec233: OUTPUT«True␤»
Mouq m: say Version.new('2.0pre') ~~ v2.0.*
camelia rakudo-moar fec233: OUTPUT«True␤»
masak m: say Version.new('2.0alpha') ~~ v2.0+
camelia rakudo-moar fec233: OUTPUT«True␤»
masak m: say Version.new('2.0alpha') ~~ v2.0
camelia rakudo-moar fec233: OUTPUT«True␤» 22:01
22:01 rurban joined
masak m: say Version.new('2.1') ~~ v2.0 22:01
camelia rakudo-moar fec233: OUTPUT«False␤»
22:01 skids left
eiro hello people 22:02
ugexe is <sp> not a character class shortcut anymore? or what am i doing wrong here:
m: my $x = "abas df"; say $x ~~ /<alnum>/; say $x ~~ /<sp>/;
camelia rakudo-moar fec233: OUTPUT«「a」␤ alnum => 「a」␤No such method 'sp' for invocant of type 'Cursor'␤ in method ACCEPTS at src/gen/m-CORE.setting:15138␤ in block <unit> at /tmp/irlkVaIjKa:1␤␤»
jnthn I don't remember there being an sp rule in Cursor... 22:03
PerlJam ugexe: maybe you wanted <space> ?
jnthn Only other guess is that I think once we punned Unicode property names as method names 22:04
But that became <:Ll> iirc
But not sure sp is one of those...
TimToady there's always \s
22:04 FROGGS_ joined
ugexe \s makes syntax highlighting whacky when writing grammars :( 22:05
github.com/perl6/specs/blob/master...-shortcuts does mention <sp> and <-sp> tho
22:05 Mouq left
jnthn looks 22:05
PerlJam S05:2293 does say ... yeah, what ugexe said
synopsebot Link: design.perl6.org/S05.html#line_2293
jnthn hah, who knew... :) 22:06
dalek c/add_pygments_highlighting: 1ee80b8 | hoelzro++ | html/css/pygments.css:
Add CSS rule for c-Singleline

Due a bug in the Perl 6 pygments lexer, single line comments are given a CSS class that doesn't exist in the normal set of classes that pygments provides. This will allow single-line comments to be highlighted until that bug is fixed
hoelzro moritz: that *should* work
22:06 Sqirrel left
jnthn Well, the patch is token sp { \s } I guess... :) 22:06
ugexe is <sp> different than <space>? 22:07
jnthn doesn't find a <space> in S05
22:07 rurban left
ugexe m: my $x = "abas df"; say $x ~~ /<alnum>/; say $x ~~ /<space>/; 22:07
camelia rakudo-moar fec233: OUTPUT«「a」␤ alnum => 「a」␤「 」␤ space => 「 」␤»
22:07 Sqirrel joined
jnthn Oh... :) 22:07
PerlJam jnthn: S05:2131 22:08
synopsebot Link: design.perl6.org/S05.html#line_2131
jnthn Looking.
22:08 FROGGS left
jnthn Bah 22:08
pippo Good night #perl6!
jnthn So it specs <sp> and <space> to mean \s
22:08 pippo left
jnthn I really don't think we need both :) 22:08
22:08 telex left
jnthn <space> fits nicer with <digit> and <alnum> I guess. 22:08
So I'd be tempted to update the design doc to read space where it reads sp... 22:09
TimToady it's really from [:space:]
masak 'night, jnthn
jnthn masak: Uhh...is it my bed time? :P
masak er. 'night, pippo
way to misread.
TimToady jnthn: NO!
masak jnthn: yes! go to bed, now! :P
hoelzro moritz: ok, yeah, that works for me 22:10
22:10 telex joined
masak .oO( you're GROUNDED! you have to stay up and play video games until you're *begging* to go to sleep! ) 22:10
TimToady m: say ' ' ~~ /\s/
camelia rakudo-moar fec233: OUTPUT«「 」␤»
22:10 bauerbob joined
TimToady m: say ' ' ~~ /<space>/ 22:10
camelia rakudo-moar fec233: OUTPUT«「 」␤ space => 「 」␤»
TimToady hmm 22:11
that's a non-breaking space, btw
jnthn Looks like any other space to me :P 22:12
TimToady m: say < foo bar >[0]
camelia rakudo-moar fec233: OUTPUT«foo bar␤»
TimToady well, at least it works right there
bauerbob hi. i know i'm not the first one to think that it might be a good idea to implement perl6 on the jvm. i've read that it didn't work out so well. but i'm curious: did they try it on oracle's graal jvm or was it the regular jvm? 22:15
TimToady it worked out fine 22:16
ugexe lol
22:16 diana_olhovik_ left
bauerbob it did? so why have they stopped? 22:16
TimToady we havne't
*en
PerlJam bauerbob: where did you read these things?
bauerbob on the internet :-) 22:17
don't remember
PerlJam so it must be true!
jnthn bauerbob: The Perl 6 JVM support has been improved even within the last week or two.
bauerbob: It's not only maintained, but actively developed. :)
TimToady we've only said that if push comes to shove, only the MoarVM backend needs to be done by Christmas
bauerbob cool
TimToady but push hasn't come to shove yet
j: say "here?"
camelia rakudo-jvm fec233: OUTPUT«Can't open perl script "/home/camelia/jvm-rakudo/eval-client.pl": No such file or directory␤»
masak :( 22:18
22:18 Kristien joined
bauerbob so do you use the graal vm? 22:18
jnthn No, it's standard JVM.
masak bauerbob: do you seek the graal?
bauerbob: what is your name?
bauerbob i just stumbled over it
masak bauerbob: what is your favorite color?
TimToady that's a strange name
bauerbob green. no, blue! ;-)
masak catapults bauerbob
TimToady sounds like a racehorse's name
masak haha
bauerbob oh, it's german 22:19
22:19 Mouq joined
bauerbob farmer bob 22:19
jnthn It really wants a JVM 1.8, though... 1.7 ones could be SEGVesque on invokedynamic stuff. :)
TimToady and I Just Stumbled Over It takes the triple crown!
masak I Just Stumbled Über It would be German.
TimToady surely it'd be Ich 22:20
timotimo StolpertÜber
masak TimToady: triple crown sounds really uncomfortable. especially for a horse. kinda like the Iron Throne.
bauerbob perl6@jvm is it part of rakudo 22:21
is part of rakudo?
masak bauerbob: right.
bauerbob: it's one of Rakudo's supported backends.
bauerbob oh.. in that case i already have it on my hard disk
masak one of three, going on four... or two. we haven't decided.
TimToady by Christmas we'll have 1 ± 5 22:22
masak I like some of those outcomes.
bauerbob thank you guys!
TimToady yer welcum 22:23
Kristien by Christmas I might have sunglasses
masak ní!
Kristien: because of all the shiny?
hoelzro I wish that the JVM stuff could run on Android =(
but unless it gets invokedynamic, I fear that may never happen
Kristien masak: I've been craving one for a long time but for some reason I still haven't acquired one. 22:24
TimToady I'm afraid they only come in pairs
Kristien Having two implies having one.
masak except sun-monocles.
Kristien For all n > 0, having n of x implies having n-1 of x.
TimToady I could actually use one of those, since only one of my pupils is paralyzed 22:25
masak TimToady: you are a harsh mentor :P
TimToady is a harsh persontor
masak wonders if that pun works in AmE
TimToady or would that be personstor? peopletor? 22:26
masak being politically correct is hard work.
but someone's gotta do it.
22:26 Alina-malina left, Alina-malina joined
TimToady As long as it's merely political correctness, it is not yet equality. :) 22:27
masak I find the term "merely" is offensive towards merfolk. 22:28
PerlJam I think one of these might go well with your hat: www.ebay.com/itm/like/360910501251?...amp;chn=ps :-)
TimToady well, and zombies and such are werefolk, but I'm sure they think of themselves as isfolk, to the extent they think at all 22:29
Kristien the world would be better without political correctness — oh wait, that's politically incorrect
22:33 Alina-malina left
masak it's a sad fact that it's easier to cargo-cult and regurgitate stale wisdom than it is to generate fresh insights. 22:34
that goes for political correctness as much as for people appropriating or perpetuating coding styles in contexts where they no longer help.
TimToady Amen, brother! Er...sibling! 22:36
masak :)
22:43 kurahaupo1 joined 22:59 vendethiel left 23:07 Kristien left 23:13 Sysaxed joined 23:14 vendethiel joined
dalek c/add_pygments_highlighting: bb4de66 | paultcochrane++ | htmlify.p6:
Add option to turn off syntax highlighting
23:17
23:18 Kristien joined 23:20 rurban1 left 23:22 Mouq left 23:23 BenGoldberg joined
dalek c: 651c45a | paultcochrane++ | lib/Type/IO.pod:
Mention that text mode is default in open()
23:25
c: 5b8f838 | paultcochrane++ | lib/Type/IO.pod:
Document close() method and sub

to balance the now documented open() function.
c: 7ae718d | paultcochrane++ | lib/Language/io.pod:
Generalise I/O section's subtitle
23:26 BenGoldberg left, BenGoldberg joined 23:29 kurahaupo1 left 23:37 vendethiel left 23:38 bauerbob left, fwilson joined
avuserow lizmat: (logging via supplies) really interesting idea. it occurred to me at one point that it might be useful, but got distracted. I'll give it a whirl tonight, certainly seems promising 23:45
bcode hi fwilson o/
23:48 alini left
timotimo avuserow: may want to make sure you use .act instead of .do for logging, so that it'll do logging for you properly 23:48
23:49 xinming_ joined 23:52 xinming left 23:56 virtualsue joined
avuserow hm, doesn't look like either of those are documented on doc.perl6.org. I imagine it's referenced in one of jnthn++'s presentations? 23:58
timotimo oh? they are not?
but yeah, they are referenced there
"act" will give you actor semantics, as in: the code you supply will be guaranteed to only be entered by a single thread at a time 23:59
masak briefly, .act imposes "actor semantics" on the operations, avoiding races that can happen with .do
slower maybe, but safer.
avuserow sounds like the right thing to do for the IO part of logging