»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by moritz on 3 May 2013.
00:01 dayangkun joined
grondilu I was also surprised it worked. 00:01
rn: my $x = 13; say $x[1] 00:02
camelia niecza v24-37-gf9c8fc2: OUTPUT«(Any)␤»
..rakudo 88f9c9: OUTPUT«Index out of range. Is: 1, should be in 0..0␤ in method gist at src/gen/CORE.setting:10022␤ in method gist at src/gen/CORE.setting:893␤ in sub say at src/gen/CORE.setting:10917␤ in block at /tmp/sRCz5e_urZ:1␤␤»
grondilu rn: my $x = 13; say $x.elems
camelia rakudo 88f9c9, niecza v24-37-gf9c8fc2: OUTPUT«1␤»
00:03 Pleiades` left 00:08 Pleiades` joined 00:12 berekuk left 00:42 rjbs left 00:49 daniel-s_ is now known as daniel-s 00:50 daniel-s left 00:51 daniel-s joined
daniel-s perl: say "hi" 00:52
rn: say "hi"
camelia rakudo 88f9c9, niecza v24-37-gf9c8fc2: OUTPUT«hi␤»
sorear perl6: say "hi" 00:58
camelia rakudo 88f9c9, niecza v24-37-gf9c8fc2: OUTPUT«hi␤»
01:17 MrMeek-afk joined 01:18 MrMeek left 01:22 FROGGS_ joined 01:24 FROGGS left 01:54 dayangkun left 02:46 lue left 02:48 pecastro left 02:50 pecastro joined, adu joined 02:58 lue joined 03:18 ivan``_ is now known as ivan`` 03:46 preflex left, odoacre_ joined 03:47 preflex joined 04:02 skids left 04:05 adu left 04:06 adu joined 04:10 grondilu left 04:25 Psyche^ joined 04:26 satyavvd joined 04:28 Patterner left, Psyche^ is now known as Patterner
moritz \o 04:29
04:37 octave joined 04:38 octave is now known as Guest5990 04:40 Guest5990 left 04:52 xinming joined 05:01 satyavvd left
adu o/ 05:01
05:02 frd|afk left 05:03 kurahaupo left 05:05 adu left 05:06 kurahaupo joined 05:07 zby_home joined, zby_home left
dalek kudo/nom: c2736b2 | moritz++ | tools/build/NQP_REVISION:
bump NQP revision to get NCI fix by arnsholt++
05:20
05:22 satyavvd joined 05:45 lustlife joined 05:46 kaleem joined 05:56 dmol joined 05:59 dmol left 06:13 grondilu joined
grondilu rn: my module Foo { sub talk is export { say "hello" } }; import Foo <talk>; talk; 06:14
camelia niecza v24-37-gf9c8fc2: OUTPUT«===SORRY!===␤␤Action method statement_control:import not yet implemented at /tmp/1Ums2bNJ1e line 1:␤------> ort { say "hello" } }; import Foo <talk>⏏; talk;␤␤Unhandled exception: Unable to resolve method statement_level…
..rakudo 88f9c9: OUTPUT«===SORRY!===␤Error while importing from 'Foo': no EXPORT sub, but you provided positional argument in the 'use' statement␤»
grondilu I thought the 'use Module <func>' was implemented now :/ 06:19
06:20 dmol joined, dmol left 06:22 dayangkun joined
grondilu masak: about your masakism: you know what would be cool? A Euler/Rosalind-style website for learning Perl6. With tasks, scores, achievments, badges and stuff. 06:26
or something like codespells (sites.google.com/a/eng.ucsd.edu/codespells/). I don't know in details how codespells works, but I like the pitch: some kind of MMORPG where the ultimate goal is to master a programming language. 06:29
06:31 frdmn joined 06:35 FROGGS_ left 06:48 DarthGandalf left 06:54 FROGGS joined
labster Well, the Using Perl 6 book does not match my style of learning at all. I think we do need address education, especially for novices. 06:55
I was thinking of starting some writing some tutorials when I finished up with the path project. 06:57
tadzik good morning #perl6 07:04
diakopter hi 07:05
what I did today: github.com/moose/moose/pull/16
labster nice, diakopter 07:07
tadzik wow, awesome 07:11
moritz diakopter++
07:13 domidumont joined 07:14 domidumont left, domidumont joined 07:15 rindolf joined
diakopter I'm not counting on them accepting the patch; I can think of some decent reasons against 07:17
labster r: so ('a', 'b')>>.match( /c/ ).all
camelia rakudo c2736b: ( no output )
labster r: say so ('a', 'b')>>.match( /c/ ).all
camelia rakudo c2736b: OUTPUT«True␤»
moritz r: say ('a', 'b')>>.match( /c/ ).perl 07:18
camelia rakudo c2736b: OUTPUT«(Nil, Nil)␤»
FROGGS ohh
moritz r: say ('a', 'b')>>.match( /c/ ).all
camelia rakudo c2736b: OUTPUT«all()␤»
moritz oh
Nil shouldn't listify to the empty list
that's old spec, and very much conflicts with failed matches returning Nil 07:19
FROGGS r: say (Nil, Nil).all # you expect all(Nil) ?
camelia rakudo c2736b: OUTPUT«all()␤»
moritz yes 07:20
labster Oh good, I'm not going crazy, it is a bug.
moritz r: say (Nil, Nil)
camelia rakudo c2736b: OUTPUT«Nil Nil␤»
moritz r: say (Nil, Nil).list
camelia rakudo c2736b: OUTPUT«␤»
FROGGS is testing a possible patch 07:24
moritz too 07:25
FROGGS :P
damn, you have the faster machine...
moritz but my patch might be wronger
FROGGS well, my is just a guess... so we are head-to-head 07:26
07:27 sqirrel joined
FROGGS but this tells me I'm not too off: 07:27
r: say (Mu, Mu).all
camelia rakudo c2736b: OUTPUT«all((Mu), (Mu))␤»
moritz r: say Nil.list.elems # that's the real problem
camelia rakudo c2736b: OUTPUT«0␤»
moritz but my patch will cause lots of spectest failures, I fear 07:28
because empty blocks still return Nil
FROGGS ohh, I deadlocked my rakudo :/
labster goes back to patching IO::Spec::Win32 07:29
moritz ./perl6 --target=pir --output=lib/Pod/To/Text.pir lib/Pod/To/Text.pm
===SORRY!===
Odd number of elements found where hash expected
FROGGS I was here btw: src/core/ListIter.pm:43 07:31
and comented out the eslif condition
elsif*
07:33 xinming_ joined
moritz and I removed the Iterator from Nil 07:36
07:36 xinming left
FROGGS me too right now 07:36
still a deadlock on my box
moritz but the problem is deeper 07:37
there's code in Actions.nqp (iirc) that makes empty statement lists return Nil
I'm pretty sure that needs to be updated to return an empty parcel instead
FROGGS moritz: true, at several places
07:37 kivutar joined
FROGGS every action method that doesnt produce ast but does something else, throws a QAST::Var( Nil in place 07:38
labster I feel like a line employee in the worm cannery asking, "Hey, I wonder what's in these?" 07:40
07:41 domidumont left, domidumont joined 07:45 fhelmberger joined
hoelzro good morning #perl6! 07:51
tadzik hello hoelzro 07:53
moritz \o *
hoelzro I am pleased to announce that my Perl 6 lexer has been merged into pygments' main branch \o/ 07:54
labster o/
tadzik \o/
awesome! hoelzro++
labster w00t
moritz \o/
hoelzro++
dalek kudo/nil-noniterable: 399e782 | moritz++ | src/ (3 files):
make Nil not iterable, and return empty Parcel from empty statements
07:55
moritz rakudo builds again in that branch 07:56
but about 10% to 20% of the test files fail in spectest
oh drat, World uses Nil too 07:57
anyway, it's a good baseline for some motivated hackers to start exterminating the remaining bugs :-) 07:58
08:04 fuad joined
FROGGS hoelzro++ # \o/ 08:04
08:06 berekuk joined
dalek ast: 75c35af | (Brent Laabs)++ | S32-io/io-spec-win.t:
fix IO::Spec::Win32.canonpath test verbosity
08:08
ast: e328a75 | (Brent Laabs)++ | S32-io/io- (3 files):
IO::Path::Win32 tests, and add another test to spec::win32
moritz nqp: state $x = 42; say($x); 08:12
camelia nqp: OUTPUT«Confused at line 2, near "state $x ="␤current instr.: 'panic' pc 14721 (src/stage2/gen/NQPHLL.pir:5232) (src/stage2/gen/NQPHLL.nqp:279)␤»
08:13 sqirrel left 08:16 kurahaupo left 08:19 donaldh left 08:21 donaldh joined 08:28 frdmn|afk joined 08:29 frdmn|afk left 08:30 frdmn|afk joined, frdmn left 08:34 sciurius left, sciurius joined 08:41 c1sung left
hoelzro great; pygments seems to do a release about once a year =( 08:41
and their last one was in February 08:42
arnsholt Once a year? That's quite slow 08:43
hoelzro yeah 08:44
not too thrilled about that =/
arnsholt Definitely, definitely 08:53
FROGGS releasing once a year feels like working for a dead project somehow
08:54 dayangkun left
dalek ast: 7c4e0b5 | (Brent Laabs)++ | S32-io/io-path-cygwin.t:
IO::Path::Cygwin tests
08:55
labster okay, I'm pretty much done, at least until readlink is implemented. 08:57
another pull request for someone to handle. No one has given me a commit bit for rakudo yet. 09:02
moritz labster: I hope you'll get one soon 09:04
labster: just needs a +1 from jnthn :-)
labster Well, when he's awake, I'll ask. 09:05
09:05 daxim joined 09:06 sciurius1 joined, dayangkun joined
masak good antenoon, #perl6 09:07
09:07 sciurius1 left
moritz good an, masak 09:07
09:07 sciurius1 joined 09:08 sciurius left, frdmn|afk left
masak and a fine an it is, indeed. 09:08
09:08 sciurius1 is now known as sciurius
dalek kudo/nil-noniterable: 1a9a731 | moritz++ | src/ (8 files):
switch World and some of the setting from Nil to ()
09:08
09:09 frdmn joined 09:11 tokomer joined 09:17 dayangkun left, kaleem left 09:19 tokomer left
fuad Hello, folks. 09:24
moritz oh hai fuad 09:25
09:25 FROGGS left
fuad How are you, moritz? It's been awhile! 09:26
moritz fuad: I'm fine, thanks 09:27
fuad: what about you?
labster: spectesting your pull request now... 09:28
fuad moritz: Doing good thank you
labster moritz: I already did it, but a second test won't hurt. 09:29
labster is finally learning how to be a good committer.
masak fuad! \o/
tadzik: after watching perlmaven.com/tadeusz-sosnierz , I'm now very curious about the t-shirts :D
moritz too 09:30
labster: it's not a sign of distrust, just a step always executed before pushing commits that touch code 09:31
masak "trust but verify". 09:32
nwc10 was there a result from all the slowdown bisecting last night? 09:34
moritz it was discoved that 'git clean' has bugs/undocumented features
masak yeah. I began from the top, and I'm still at it. 09:36
moritz: I learned a Chinese saying recently: "被卖了还帮着数钱" -- "After the sale they even helped me count the money." -- kind of the dual of "trust but verify" ;) 09:37
09:38 salv0 left
masak or not "dual", really. "converse", perhaps. 09:38
09:38 salv0 joined
moritz masak: I'm having trouble understanding the connotation of that saying 09:38
masak moritz: I got the feeling it's about not being gullible where it would hurt you but benefit others. 09:39
dalek kudo/nom: 6e9f456 | (Brent Laabs)++ | / (2 files):
add IO::Path and IO::Spec spectests, fix minor Win32 path separator issue
kudo/nom: 540c014 | moritz++ | / (2 files):
Merge branch 'nom' of github.com/labster/rakudo into nom
fuad masak: Hey, bro! 09:40
masak fuad: salut, frère! 09:42
moritz ♫ frère fuad, frère fuad, dormez-vous? ♫ 09:44
09:45 kaleem joined 09:47 thou left
masak :D 09:48
labster maybe fuad is asleep? 09:49
moritz Ronja loves that song (though with s/fuad/jacque/), and in multiple languages (de, en, fr, nb)
and she loves fr the best :-) 09:50
labster It's a good simple song. Even Captain Picard likes it.
moritz that knights it, of course :-) 09:51
labster blog.brentlaabs.com/2013/05/porting...erl-6.html < sort of a blend of "what I did on File::Spec" and "why porting to Perl 6 is good". 09:52
moritz labster++ 09:54
woah, de.wikipedia.org/wiki/Fr%C3%A8re_Jacques has quite a few languages 09:55
(German wikipedia)++ 09:56
masak in the lyrics we got for the song when I went to school, they had made up at least one language. 09:57
they called it "Indian speech".
in retrospect, I find that odd and somewhat disrespectful. 09:58
wow, that is an impressive list. 09:59
new goal: learn to sing those versions, *with decent pronunciation*.
10:02 sqirrel joined
labster the Japanese version seems to have too many syllables in line 2. 10:03
good night 10:08
fuad :) 10:16
10:16 woolfy left 10:17 woolfy joined
tadzik masak: ha-ha :)_ 10:23
10:24 kresike joined
kresike hello all you happy perl6 people 10:24
masak hello happy kresike
kresike masak, o/ 10:25
10:31 FROGGS joined 10:32 woosley left
colomon labster++ 11:02
11:14 fuad left 11:16 xinming_ left 11:18 xinming joined
colomon 's smoke test failed overnight because crontab does not get PATH from .bashrc. Trying again no, and judging by ps it looks like it is working. 11:20
FROGGS colomon: I smoked yesterday manually, sad is just that I can't access that box right now to get the result :/ 11:23
11:28 xinming left 11:30 xinming joined 11:39 satyavvd left
cognominal nqp: class A {}; my $a.new; say($a.HOW.name($a)) 11:46
camelia nqp: OUTPUT«NQPMu␤»
cognominal moritz: ♫ Sonnez les matines ♫ Ding Daing Dong 11:48
11:48 sorear joined
cognominal btw: I would have expected A as output for the nqp oneliner 11:49
FROGGS nqp: class A {}; my $a := A.new; say($a.HOW.name($a)) 11:50
camelia nqp: OUTPUT«A␤»
colomon FROGGS: smoke test is still running on my machine, which means it is probably right, I think!
FROGGS cool!
colomon: can we submit the results to somewhere? 11:51
colomon my crontab's mail output is still kind of broken, though.
moritz cognominal: your one-line does not correlate A to $a at all
11:52 Targen left
cognominal moritz: so, how to print $a classname? 11:52
moritz nqp: class A {}; my $a := A; say($a.HOW.name($a)) 11:54
camelia nqp: OUTPUT«A␤»
colomon FROGGS: my big goal is to produce a webpage that indicates smoke results and how they have changed over time. (ie EMERGENCY: $module just went red; $other-module has been working for 97 days)
afk # nom-am
cognominal moritz: I meant the classname of an A instance 11:55
moritz cognominal: same 11:56
FROGGS nqp: class A {}; my $a := A.new; say($a.HOW.name($a)) 11:57
camelia nqp: OUTPUT«A␤»
FROGGS cognominal: you just need to involve A in some kind
can't leave it untouched
cognominal oops 11:58
need to wake up 11:59
arnsholt colomon: What I've been thinking is that we probably want to capture the TAP stream from prove into some kind of (semi-)structured format 12:00
Like JSON
FROGGS arnsholt: just a few stripped out fields plus the TAP blurb, right? 12:02
moritz see TAP::Harness::Archive
FROGGS json++ btw
arnsholt Pretty much, yeah
FROGGS brb
arnsholt moritz: Oooh, that's useful
moritz that's what spectest_smolder uses 12:03
moritz loves woodgears.ca/marbleadd/ 12:08
colomon hmm... my problem isn't storing the results -- I'm just saving the smoke test's results.json file with a date stamp in the filename. 12:09
what I'm looking for is a clever way to analyze and report those results.
moritz make a picture, with a red rectangle for a failure, and a green for a pass 12:11
colomon moritz: over time
moritz right
one row for each module, where each column is a smoke date
and a green->red transition makes it sort higher up on the page
colomon emmentaler already generates a pretty output for a single smoke run
moritz: hmm. only displaying the last week or so, with a summary for what came before that? 12:13
moritz colomon: or maybe a month 12:14
if you really use only red + green boxes, it's easy to fix 30 or 31 into one row
if one box is 15x15 pixel, it's easy to read, and 450 pixel fit onto most browser screens 12:15
plus the module name in the same row
moritz is almost tempted to do it himself 12:16
colomon would be happy to use moritz's work
moritz colomon: can you give the json files from a few runs, so that I have some data to work with? 12:18
colomon give me a moment... 12:19
the 2k3 thing still your e-mail? 12:21
moritz colomon: aye
colomon done 12:22
if you need more I can rummage up an older run or two.
the emmentaler repo has a script for reading one of these result files and formatting it. 12:23
also, my e-mail issue cleared up! Looks like cron didn't get the MAILTO in my .bashrc either. (Obvious in retrospect...) 12:25
12:27 robinsmidsrod left 12:28 robinsmidsrod joined
colomon initially didn't do it the geekosaur++ told him to do it, and so it didn't work quite right. 12:29
[Coke] needs to make IRSSI have a longer backscroll, yikes. 12:34
colomon is also thinking that we could add an optional e-mail field to META.Info saying who to e-mail when a module goes from green to red. 12:40
dalek rl6-roast-data: 4174cd2 | coke++ | / (4 files):
today (automated commit)
rl6-roast-data: d9c49bb | coke++ | / (4 files):
today (automated commit)
[Coke] niecza has been dirty for 292 days. pugs has been dirty for 1 day. rakudo has been dirty for 1 day.
colomon clearly needs to get off his arse and fix up the niecza test run... 12:42
12:45 xinming left 12:47 xinming joined, rindolf left 12:52 census joined
moritz colomon: gist.github.com/moritz/5524912 12:52
it generates images like moritz.faui2k3.org/tmp/DBIish.png 12:54
[Coke] thinks that the testing thing sounds vaguely like the smolder replacement he was trying to hack on.
[Coke] got distracted and never went back to it, bad Coke.
moritz which shows that for the first 5 days no data was available 12:55
and for the next, prereq failed, and the finaly day, tests passed
colomon +1 12:56
\
moritz++
moritz that certainly still needs a lot more work, but it's a good base to start from 12:57
colomon yes
moritz number of days to show is configurable
another idea would be generate a HTML table 12:58
where the cells are colored
or an image 12:59
timotimo labster++ # i enjoyed your blog post :)
moritz which is a link to the actual test result
12:59 shinobicl joined
timotimo do you know about these tiny little images that show developments over the past, that - i hear - get a lot of use for stock exchange data? 12:59
next to the name of a stock or maybe its current value there's a line going up and down that's barely bigger than the text itself 13:00
maybe something like that could be implemented for smoking? but instead there might be two lines: tests spec'd and tests passed?
moritz I wanted to implement that for showing activity of IRC channels 13:02
timotimo i like that idea
would that be implemented in perl6? 13:03
timotimo looks at available graphics libraries
moritz it would, though I don't really know with which graphics lib 13:04
not with GD, because it doesn't do subpixel rendering
which makes GD::Graph pretty useless if you have large data sets
timotimo does imlib provide image creation routines? 13:05
it says something about "high quality anti-aliased output" on the module description for that
FROGGS you dont need images for that 13:06
you html
use*
you can have colored divs and place them as bars on a background-div
timotimo we're talking about lines, though, not bars 13:07
can divs have subpixel widths and heights?
hm, i suppose they can
moritz but it kinda clutters the HTML 13:08
and it's by no means semantic markup
timotimo right, especially with lots of data.
in that case, i'd prefer a <canvas> and some json data set instead
FROGGS yeah, depends on how much elements we are talking about
you cant render subpixels using html-divs
timotimo OK 13:09
13:09 bluescreen10 joined
moritz isn't very productive at $work today 13:10
timotimo moritz: do you know if gnuplot can be made to output something appropriate? 13:11
moritz timotimo: I'm pretty sure; it's very versatile 13:12
timotimo would you consider that a workable solution?
moritz yes
timotimo investigates 13:13
[Coke] ah, looks like larry broke the spec tests with daacea39 13:15
colomon [Coke]: context?
FROGGS repository?
[Coke] er, 151f725c
roast.
colomon TimToady++ is modifying roast?! 13:16
FROGGS looks like: github.com/perl6/roast/commit/151f725c
pnr: say wordcase("hello") 13:17
camelia pugs: OUTPUT«*** No such subroutine: "&wordcase"␤ at /tmp/IcM9PQ2R5v line 1, column 5 - line 2, column 1␤»
..niecza v24-37-gf9c8fc2: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'wordcase' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1443 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37) ␤ at …
..rakudo 540c01: OUTPUT«Hello␤»
FROGGS pnr: say capitalize("hello")
camelia rakudo 540c01, niecza v24-37-gf9c8fc2, pugs: OUTPUT«Hello␤»
FROGGS I see
13:18 PacoAir joined
colomon prn: say capitalize("hello world") 13:18
camelia rakudo 540c01, niecza v24-37-gf9c8fc2, pugs: OUTPUT«Hello World␤»
13:19 MrMeek joined
[Coke] the other rakudo failure is on s02-types/bool.t, and parrot is throwing: *** glibc detected *** ./perl6: free(): invalid next size (fast): 0x0e744cf8 *** 13:19
13:19 MrMeek-afk left
gtodd r: say (Nil, Nil) 13:20
camelia rakudo 540c01: OUTPUT«Nil Nil␤»
gtodd r: say (Ni, Ni)
camelia rakudo 540c01: OUTPUT«===SORRY!===␤Undeclared name:␤ Ni used at line 1␤␤»
colomon niecza> say wordcase("hello world") 13:21
Hello World
colomon likes easy-to-fix issues
looks like capitalize is still used a few places in roast.
[Coke] wonders if rakudo can just change or not. 13:22
(worrying about downstreamers)
moritz rakudo implements wordcase
dalek ecza: 20128d7 | (Solomon Foster)++ | lib/CORE.setting:
Change capitalize to wordcase.
moritz and has for a few months
masak r: constant Ní = "Ekke Ekke Ekke Ekke Ptangya Ziiinnggggggg Ni!"; say "The knights who say {Ní}"
camelia rakudo 540c01: OUTPUT«The knights who say Ekke Ekke Ekke Ekke Ptangya Ziiinnggggggg Ni!␤» 13:23
moritz since 2012.09
[Coke] r: say wordcase "eek"
colomon Is capitalize gone from the spec?
camelia rakudo 540c01: OUTPUT«Eek␤»
gtodd masak: ++
[Coke] r: say wordcase "" 13:24
camelia rakudo 540c01: OUTPUT«Cannot get character of empty string␤ in regex at src/gen/CORE.setting:4729␤ in method match at src/gen/CORE.setting:4501␤ in method subst at src/gen/CORE.setting:4576␤ in method subst at src/gen/CORE.setting:2491␤ in method wordcase at src/gen/CORE.setting:4…
[Coke] there's your bug.
masak [Coke]++ 13:25
moritz and I believe it even exposes an underlying bug in the regex engine
masak looks like.
colomon capitalize is indeed gone from the spec, according to ack
masak .oO( life happens on the sad path )
daxim rakudo: Qc「{ 23+43 }」.say 13:26
camelia rakudo 540c01: OUTPUT«66␤»
gtodd masak: "birth, joy, love, happiness, much sorrow"
timotimo unset border; unset tics; unset key; plot 'plot' with lines; - this will give only a line, no decorations whatsoever 13:29
daxim what's .quoteharder? 13:30
in S02
timotimo i've just asked about this last week 13:31
it's just an example method. not specced and not implemented
13:31 skids joined
timotimo but quite amusing to me at least :) 13:31
masak gtodd: "life happens on the sad path" is a constant reminder to write TDD tests for the conditions that make the SUT produce an error. those are usually the interestingest ones.
[Coke] ugh. I was just bitten by that. tested the happy path. release to beta tester, who hit the unhappy path and is now stuck because the error diagnostic was useless. 13:32
gtodd masak: perl poetry :) 13:33
census what about perl pottery ...
geekosaur the result of perl puttering 13:34
13:39 gaussblurinc_ joined
dalek ast: 8861b64 | (Solomon Foster)++ | S (2 files):
Change a few straggling capitalize calls to word.case.
13:41
colomon errr, wordcase. 13:42
13:42 kaare_ joined
moritz [2001:780:101::2]/ # IRC logs over ipv6 13:44
AAAA records will follow soonish 13:45
[Coke] ENOTAURL?
could be our proxy here at work.
moritz [Coke]: or you simply don't have IPv6 access 13:46
geekosaur buggy programs don't always understand that an ipv6 literal is in brackets 13:48
moritz one of those buggy programs are the IRC logs themselves, which don't linkify the URL 13:50
moritz opened rt.cpan.org/Ticket/Display.html?id=85087 13:55
daxim dupe of rt.cpan.org/Public/Bug/Display.html?id=68288 14:00
14:01 ajr joined 14:02 ajr is now known as Guest35673
moritz oh right. Good that rt supports merging of tickets :-) 14:03
dalek ast: cc39be9 | (Stéphane Payrard)++ | S03-operators/shortcuts.t:
tests for @.[], %.{} and &.()
14:05
ast: cfdba7b | (Stéphane Payrard)++ | S (2 files):
Merge branch 'master' of github.com/perl6/roast
cognominal sorry I messed up again. in roast.
I need to improve my git skills 14:06
masak ok, I finished the bisect. gist.github.com/masak/5520459 14:07
FROGGS gorram it
there my name in it
is*
masak not only that, but just to be sure, I went back and rebuilt both c255f1d^ and c255f1d from a *completely fresh Rakudo*.
c255f1d^ is good and c255f1d is bad.
FROGGS: I'm not going to blame you for anything :) 14:08
FROGGS puuhhh
masak FROGGS: I'm sure the commit was an improvement in some regards.
FROGGS ó.ò
so, what exactly is slow?
pmichaud good morning, #perl6 14:09
masak but I'm going to make an effort (1) understanding what it does, (2) understanding why it's slow, and (3) seeing what we can do about the slowness.
FROGGS hi pmichaud
masak pmichaud: bisect done. :)
gist.github.com/masak/5520459
colomon masak++
FROGGS masak: ahh, yeah, before that commit there was no interpolation for these cases
pmichaud note that it also added some eval()s into the process 14:10
FROGGS "these cases" is array interpolation and variable assertion...
masak note also another thing from the bisect results: we used to be slow to the tune of ~42 minutes. we're now slow to the tune of ~64 minutes.
that's big enough of a difference to be significant.
FROGGS :/
pmichaud: I have no idea how to come around that eval 14:11
moritz my first guess is that it broke some kind of caching, and that it recomputes some regex stuff for each position
masak FROGGS: yeahbut. I haven't changed psyde.
FROGGS: why would your (unrelated) improvements slow down my program?
moritz: sounds rather likely.
FROGGS no idea, I dont know your program
pmichaud looking at the commit, I'm suspicious of 14:12
masak people told me it'd help to do a --profile. maybe I should do that now, for both those commits.
pmichaud - QAST::SVal.new( :value('!LITERAL') ),
+ QAST::SVal.new( :value('INTERPOLATE') ),
!LITERAL is fairly fast. INTERPOLATE is slow.
FROGGS true
pmichaud so, I see two items as part of resolving this. First, we need to figure out where masak's program is doing regex interpolation; second we need to figure out why it's so slow. 14:17
masak aye. 14:18
I think I'll do --profile next.
while also looking at source code and seeing how things hang together.
moritz might be worth looking of .trans does regex interpolation 14:20
masak yes, that's a likely suspect. 14:21
dalek ecs: 90fffba | (Stéphane Payrard)++ | S02-bits.pod:
short forms : @.[], %.{} and &.()
14:23
pmichaud oh, this also involves one of my unanswered questions. 14:24
Pm-20
github.com/perl6/mu/blob/master/misc/pm.txt#L7
FROGGS r: my $x = [<a b c d>]; 'a b c d' ~~ / $x /; 14:25
camelia rakudo 540c01: ( no output )
FROGGS r: my $x = [<a b c d>]; 'a b c d' ~~ / <$x> /;
camelia rakudo 540c01: ( no output )
FROGGS r: my $x = [<a b c d>]; say 'a b c d' ~~ / $x /;
camelia rakudo 540c01: OUTPUT«「a」␤␤»
pmichaud FROGGS: yes, I know that's how Rakudo currently implements it. Not sure it's correct. 14:26
masak pmichaud: nice! hope that an answer will turn up for that one as part of our investigations :) 14:29
pmichaud github.com/perl6/specs/issues/39 14:30
Before the c255f1d patch, Rakudo treated / $x / interpolations as a single literal. After the patch, it appears to treat it as an alternation of literals. 14:31
FROGGS hmmm, I basically did TDD + reading spec 14:32
pmichaud The spec is silent on this.
afaik, there weren't any tests for this case.
FROGGS that is part of the problem I guess 14:33
there are/were tests for arrays in regexes and friend
pmichaud well, the spec might not be silent on it, but it's unclear to my reading. :)
for arrays held in scalar variables?
FROGGS spec says that / @a / should be treated as an alternation
pmichaud sure, but this isn't / @a /
this is / $a / 14:34
and @ vs $ makes a difference in other parts of the spec
for example
n: my @a = 1..4; for @a { .say }
camelia niecza v24-38-g20128d7: OUTPUT«1␤2␤3␤4␤»
pmichaud n: my $a = [1..4]; for $a { .say }
camelia niecza v24-38-g20128d7: OUTPUT«1 2 3 4␤»
FROGGS yeah, I see
so we should make clear statements on this in the spec 14:35
pmichaud yes, which is why I wrote the Pm-20 question three years ago. :-P 14:36
FROGGS :o)
pmichaud I'll add issues for the other unanswered questions in that file, I guess. 14:37
(and make sure they've not been answered somewhere else)
14:37 Guest35673 left 14:38 ajr joined
pmichaud oh, Pm-23 was discussed recently. I don't remember the outcome. 14:38
14:38 ajr is now known as Guest41769
pmichaud it's about whether Grammar.parse($str) has an implied $-anchor at the end--- i.e., it matches the whole string and fails, or matches a partial string and succeeds (like a parser would do) 14:39
s/and/or/
FROGGS ya, the question is: what is the default, and how to specify the opposite 14:40
masak I believe the outcome was confusion.
pmichaud that matches my recollection as well.
I can create an issue for it. I might be able to find the discussion in the irclogs also
14:40 LlamaRider joined
pmichaud found it, I think. 14:41
colomon briefly though pmichaud had found the cause of the slowdown... 14:42
pmichaud colomon: oh, I'm about 80% certain the cause of the slowdown is that we're now passing literals through INTERPOLATE instead of !LITERAL
colomon oh, Pm-23, though! I'm quite interested in that. Been meaning to write a long blog post on it since around the time you filed it.
FROGGS masak: I commented to your gist 14:43
colomon pmichaud: 80% sure means you're just making a (very educated) guess. :)
pmichaud colomon: and that statement would be 100% accurate. :)
FROGGS pmichaud: I changed that back and no spectest fail...
I'm really sure why I did that at that time :/ 14:44
s/really/not/
-.-
colomon pmichaud: I know many times I have made (what I thought were) very educated guesses about optimization targets and been very wrong. :)
14:44 frdmn left
FROGGS r: my @a = 1..3; say "123" ~~ / "@a" / 14:44
camelia rakudo 540c01: OUTPUT«Nil␤»
pmichaud r: my @a = 1..3; say "1 2 3" ~~ / "@a" / 14:45
camelia rakudo 540c01: OUTPUT«Nil␤»
moritz r: my @a = 1..3; say "123" ~~ / "@a[]" /
camelia rakudo 540c01: OUTPUT«Nil␤»
moritz r: my @a = 1..3; say "123" ~~ / @a /
camelia rakudo 540c01: OUTPUT«「1」␤␤»
pmichaud r: my @a = 1..3; say "1 2 3" ~~ / "@a[]" /
camelia rakudo 540c01: OUTPUT«「1 2 3」␤␤»
pmichaud \o/
FROGGS okay
moritz pmichaud: (unrelated, but also of interest, IMHO): irclog.perlgeek.de/perl6/2013-05-06#i_7023183
pmichaud moritz: yes, I haven't gotten around to even reading all of the new spec surrounding Nil 14:46
FROGGS pmichaud: that still works locally with '!LITERAL'
pmichaud once again the Nil changes fundamentally affect list-handling design (sigh) 14:47
FROGGS: what still works locally....?
FROGGS r: my @a = 1..3; say "1 2 3" ~~ / "@a[]" /
camelia rakudo 540c01: OUTPUT«「1 2 3」␤␤»
FROGGS this
pmichaud well, yes, because that shouldn't be calling !LITERAL. Or it's produced by a totally different section of the regex parse. :) 14:48
cognominal how can I get an infinite list alternating between two values?
colomon cognominal: Z
pmichaud cognominal: depends on the values
xx would do it, too. 14:49
colomon rn: say ((1, 1, 1... *) Z (5, 5, 5 ... *))[^10]
moritz r: say (<a b> xx *)[^10]
camelia rakudo 540c01, niecza v24-38-g20128d7: OUTPUT«1 5 1 5 1 5 1 5 1 5 1 5 1 5 1 5 1 5 1 5␤»
rakudo 540c01: OUTPUT«a b a b a b a b a b a b a b a b a b a b␤»
colomon xx would be more elegant, too.
cognominal xx does not do it
moritz++
colomon errr.... but .flat
moritz r: say (<a b> xx *).list[^10]
camelia rakudo 540c01: OUTPUT«a b a b a b a b a b a b a b a b a b a b␤»
colomon ?
moritz r: say (<a b> xx *).flat[^10] 14:50
camelia rakudo 540c01: OUTPUT«a b a b a b a b a b␤»
moritz looks righter
colomon++
colomon moritz++, pmichaud++
pmichaud r: my @a = <a b> xx *; say @a[100..105];
camelia rakudo 540c01: OUTPUT«a b a b a b␤»
cognominal r: say (<a b> xx *).list[^10].perl
camelia rakudo 540c01: OUTPUT«(("a", "b"), ("a", "b"), ("a", "b"), ("a", "b"), ("a", "b"), ("a", "b"), ("a", "b"), ("a", "b"), ("a", "b"), ("a", "b"))␤»
pmichaud cognominal: you have to flatten the result.
.list doesn't flatten.
cognominal ok, thx 14:51
pmichaud FROGGS: / "@a[]" / gets handled by token metachar:sym<"> { <?["]> <quote=.LANG('MAIN','quote')> }
FROGGS: / @a / gets handled by token metachar:sym<rakvar> { 14:52
cognominal Z is better for what I do. I pass the infinite list as a parameter
* argument
pmichaud that's why switching to !LITERAL doesn't have any impact on "..." expressions in a regex.
FROGGS there is a method metachar:sym<">($/) { self.rxquote($/) } in rakudo's Perl6::RegexActions too
err
pmichaud right, metachar:sym<"> is the action corresponding to the parse rule I gave above. 14:53
FROGGS ya, just seen that 'token'
pmichaud ...is it calling INTERPOLATE too?
AIIIIIIIIIIIGH!
FROGGS the action-method is calling INTERPOLATE
pmichaud yes
and that's ... bad.
FROGGS which is not what we want, ehh? 14:54
yeah :/
pmichaud INTERPOLATE is slow-slow-slow.
Calling INTERPOLATE here means that every quoted regex ends up going through interpolate :-(
masak oh, so I only have to look for quoted regexes?
goodie.
pmichaud well, quoted regexes that don't resolve at compile time, it appears. 14:55
"abc" should still be fast.
FROGGS let me rerun the spectest suite and then I'll revert that bit ...
14:55 araujo left
pmichaud "$x" is going through INTERPOLATE, when it should be !LITERAL 14:55
masak sounds like a potentially easy fix, anyway. 14:56
cognominal (<a> xx *) Z (<b> xx *) # apparently not lazy. hangs on my system
FROGGS masak: I've attached the diff if you wnat to test now
want* 14:57
moritz r: say ((<a> xx *) Z (<b> xx *))[^5[
camelia rakudo 540c01: OUTPUT«===SORRY!===␤Unable to parse expression in subscript; couldn't find final ']'␤at /tmp/_ZNqZcVytS:1␤------> say ((<a> xx *) Z (<b> xx *))[^5[⏏<EOL>␤ expecting any of:␤ postfix␤ subscript␤ semicolon list␤»…
moritz r: say ((<a> xx *) Z (<b> xx *))[^5]
camelia rakudo 540c01: OUTPUT«a b a b a b a b a b␤»
masak in the middle of profiling, but I'll test right after that.
14:57 araujo joined
FROGGS cool 14:57
moritz cognominal: let me guess, you run it the REPL?
cognominal yup
moritz cognominal: the REPLY tries to stringify the return value, which is an eager operation
*REPL
cognominal indeed 14:58
pmichaud ohhhh!
cognominal not the first time, I get caught on that one
pmichaud the INTERPOLATE->!LITERAL switch is exactly the one I mentioned when this all started.
I didn't realize that was in :sym<"> and :sym<'>
I thought it was in :sym<rakvar> 14:59
colomon rn: say Nil.perl
camelia rakudo 540c01, niecza v24-38-g20128d7: OUTPUT«Nil␤»
colomon rn: say Nil === Nil
camelia niecza v24-38-g20128d7: OUTPUT«Unhandled exception: No value for parameter '$l' in 'infix:<===>'␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (infix:<===> @ 1) ␤ at /tmp/l1OcXR2rDj line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4299 (ANON @ 3) ␤ at /home/p6e…
..rakudo 540c01: OUTPUT«True␤»
nwc10 pmichaud: can I ask a possibly stupid question? Does this mean that that switch is possibly also adding a bug, in that things that shoud not interpolate might now do so? 15:00
FROGGS rn: say Mississippi.perl
camelia rakudo 540c01: OUTPUT«===SORRY!===␤Undeclared name:␤ Mississippi used at line 1␤␤»
..niecza v24-38-g20128d7: OUTPUT«===SORRY!===␤␤Undeclared name:␤ 'Mississippi' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1443 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37) ␤ at …
pmichaud nwc10: it's possible but I don't think likely. 15:01
FROGGS r: my $a = 'a+b'; say 'aab' ~~ / "$a" /
camelia rakudo 540c01: OUTPUT«Nil␤»
15:01 kbenson joined
FROGGS no, needs an assertion 15:01
pmichaud the INTERPOLATE method has an option on it that says whether or not the value should be re-evaluated as a regex versus treated as a literal string
and in this case, it's calling INTERPOLATE with the "evaluate as literal" option.
FROGGS r: my $a = 'a+b'; say 'aab' ~~ / <"$a"> / # this 15:02
camelia rakudo 540c01: OUTPUT«===SORRY!===␤Unrecognized regex metacharacter < (must be quoted to match literally)␤at /tmp/lk9hBe3xWU:1␤------> my $a = 'a+b'; say 'aab' ~~ / <⏏"$a"> / # this␤Unable to parse regex; couldn't find final '/'␤at /tmp/lk9hBe3xWU:1␤…
FROGGS err
r: my $a = 'a+b'; say 'aab' ~~ / <$a> / # this
camelia rakudo 540c01: OUTPUT«「aab」␤␤»
pmichaud the slowdown is that INTERPOLATE does a _lot_ of checks on the value before deciding how to handle it, when (in this case) we already know that it needs to be evaluated as a literal string and should bypass all of those checks. 15:03
nwc10 ah OK
pmichaud in fact, I wonder if INTERPOLATE would be better written as a multimethod.
since most of the checks are typechecks. 15:04
nwc10 I'm wondering if there are any other similar inefficiencies in the compiler, where the option is hardcoded
but, a multimethod (done right) would let the compiler figure that out for itself? 15:05
dalek ecza: b7c22a6 | (Solomon Foster)++ | t/spectest.data:
Turn off nil.t altogether until I can get Nil working better.
FROGGS pmichaud: is this test invalid? github.com/perl6/roast/blob/master...tvar.t#L35 15:06
pmichaud oh, there may be. When a lot of these regex-related patches came in I didn't have time to fully review them. I did note other problems with the approach being used, however, such as the use of eval() within the method to do regex interpolation.
moritz r: '' ~~ / <:L> /
camelia rakudo 540c01: OUTPUT«Cannot get character of empty string␤ in regex at /tmp/iwmzk4uA9Y:1␤ in method ACCEPTS at src/gen/CORE.setting:10370␤ in method ACCEPTS at src/gen/CORE.setting:683␤ in block at /tmp/iwmzk4uA9Y:1␤␤»
moritz anyone want to submit that one? I can't reach my smtp server right now :( 15:07
it's what makes worcase() blow up
15:08 Targen joined
dalek ast: 4df081a | (Solomon Foster)++ | S02-types/declare.t:
Fudge for niecza.
15:08
ast: 4080bec | (Solomon Foster)++ | S03-operators/context.t:
Fudge for niecza.
FROGGS moritz: done 15:09
pmichaud FROGGS: I think that test is invalid, yes.
FROGGS k
pmichaud n: my @a = <a b c d>; say 'c' ~~ / @a[0] /; 15:10
camelia niecza v24-38-g20128d7: OUTPUT«Potential difficulties:␤ Apparent subscript will be treated as regex at /tmp/2LTQ8t2ZFb line 1:␤------> my @a = <a b c d>; say 'c' ~~ / @a⏏[0] /;␤␤Nil␤»
pmichaud hrm.
std: my @a = <a b c d>; say 'c' ~~ / @a[0] /;
camelia std b33d8e0: OUTPUT«Potential difficulties:␤ Apparent subscript will be treated as regex at /tmp/sHEMe4Iw6z line 1:␤------> my @a = <a b c d>; say 'c' ~~ / @a⏏[0] /;␤ [0] appears to be an old-school character class; please use <[0]> if you␤ mean a character cla…
pmichaud well, I don't know then. 15:11
S05:1277 confuses the issue.
moritz FROGGS: thanks 15:12
pmichaud / [ @cmds[0] | @cmds[1] | @cmds[2] | ... ] /
FROGGS true, this isnt right
pmichaud S05:1277 seems to think that @cmds[0] is a subscript 15:13
STD.pm6 seems to think that [0] is a single-character regex
time for another issue filing... :-)
FROGGS I think there was a discussion with TimToady, and STD is right on that
pmichaud if we could find that discussion, it'd be helpful. 15:14
I'll put a note in the issues though to update S05
FROGGS this should be the way to do it: / [$(@cmds[0]) | $(@cmds[1]) | $(@cmds[2]) | ... ] /
will search for the discussion
geekosaur that somehow seems LTA 15:15
moritz it does
pmichaud well, the real way to do it is / @cmds /
moritz but you sometimes do want to access array elements
15:15 kivutar left
FROGGS if you want all elements, yes 15:15
moritz and if you really mean to match a string, quoting it as '@cmd[0]' isn't particularly hard 15:16
FROGGS the problem is, if you want @arr[0] to be supported, you must support %hash<a> too
moritz more to the point, it seems very weird to have different interpolation rules between regexes and double-quote strings
FROGGS: and what's the problem with that?
FROGGS <a> is a regex rule?
so is %
moritz but %hash<a> is a longer token than % 15:17
we have lots of cases everywhere in the language where a prefix of something is also valid syntax on its own
FROGGS irclog.perlgeek.de/perl6/2013-02-23#i_6490881 15:18
15:18 gaussblurinc joined, gaussblurinc_ left
pmichaud std: / [ @cmds[0] | @cmds[1] | @cmds[2] | ... ] / 15:19
camelia std b33d8e0: OUTPUT«===SORRY!===␤Variable @cmds is not predeclared at /tmp/Ywz31PC_Mi line 1:␤------> / [ ⏏@cmds[0] | @cmds[1] | @cmds[2] | ... ] /␤Variable @cmds is not predeclared at /tmp/Ywz31PC_Mi line 1:␤------> / [ @cmds[0] | ⏏@c…
pmichaud std: my @cmds; / [ @cmds[0] | @cmds[1] | @cmds[2] | ... ] / 15:20
camelia std b33d8e0: OUTPUT«Potential difficulties:␤ Apparent subscript will be treated as regex at /tmp/G7whgTIAPx line 1:␤------> my @cmds; / [ @cmds⏏[0] | @cmds[1] | @cmds[2] | ... ] /␤ [0] appears to be an old-school character class; please use <[0]> if you␤ mean…
pmichaud github.com/perl6/specs/issues/40 15:22
15:22 LlamaRider left
kresike bye folks 15:27
15:27 kresike left
pmichaud github.com/perl6/specs/issues/41 15:29
jnthn waves from the airport
15:29 kaleem left
moritz waves back 15:29
[Coke] boy are your arms tired.
jnthn :) 15:30
15:31 spider-mario joined
[Coke] LHF: open roast spec tickets for RT#77146, RT#93978 (link back to RT URL, then forward link RT tickets to spec tickets.) 15:31
dalek : 86ee60e | pmichaud++ | misc/pm.txt:
[misc/pm.txt]: Update Pm-20 and Pm-23 with pointers to newly created spec issues.
15:32
sergot hi! o/ 15:33
dalek kudo/nom: 2696aab | (Tobias Leich)++ | src/Perl6/Actions.nqp:
revert to !LITERAL for quotes in regex

The interpolation is already handled by the quote language, we dont need to interpolate twice. This might fix a slowdown masak++ discovered.
FROGGS masak: pullable now 15:34
pmichaud that could be it... but we still need to figure out where masak's code is doing interpolation.
jnthn ooh, has the cause of the slowdown beocme apparent?
pmichaud The only instance I could see of quoting is
for dir('posts', :test( / '.markdown' $ / ))>>.basename -> $markdown_filename {
and that _shouldn't_ be calling either !LITERAL or INTERPOLATE. 15:35
oh, and
%info<created> ~~ /(\d\d\d\d) '-' (\d\d) '-' (\d\d)/;
and a few other similar ones. :)
it'd be worth checking if those are being mis-compiled into !LITERAL or !INTERPOLATE calls.
moritz not Str.trans? 15:36
pmichaud I didn't look at .trans specifically to see if it's doing any quoting.
jnthn '-' *may* be going through !LITERAL but it'd better not be going through !INTERPOLATE...
pmichaud '-' shouldn't be going through !LITERAL, either. 15:37
it should be compiled into the regex so that it participates in NFA
jnthn Ah, yes.
It's "..." that interpolates that needs some special-er handling.
pmichaud I'm in the middle of a rebuild, will check the code output in a sec.
TimToady though of course "..." should optimize to '...' when it can 15:38
pmichaud TimToady: correct.
there's code in there to do that... I'm just not sure it's working.
moritz: I didn't look into the guts of Str.trans yet; I was just looking for places in masak's direct code that might be hitting INTERPOLATE
jnthn vaguely recalls updating those bits when he re-did quoting.
pmichaud Str.trans frightens me still.
method rxquote($/) { 15:39
my $quote := $<quote>.ast;
if $quote.has_compile_time_value {
my $qast := QAST::Regex.new( :rxtype<literal>, nqp::unbox_s($quote.compile_time_value) );
jnthn Hmm
pmichaud the .has_compile_time_value (should) dtrt if the "..." doesn't involve any string interpolation.
jnthn I think so.
pmichaud I just want to verify that's the case :) 15:40
FROGGS I dont see !LITERAL or INTERPOLATE here fwiw: perl6 --target=ast -e "'2013-05-06' ~~ /(\d\d\d\d) '-' (\d\d) '-' (\d\d)/"
jnthn Well, it should be a QAST::WVal.
pmichaud ?
jnthn Which always gives true to .has_compile_time_value :)
pmichaud ah.
jnthn oh, hm...what does that screen sya about my flight...
oh, phew, nothing bad :) 15:41
masak pmichaud, FROGGS and others: github.com/masak/profiles-of-slowness
15:41 fhelmberger left
FROGGS r: say 804610762993 / 150169596476 # ticks with bug / without bug 15:42
camelia rakudo 540c01: OUTPUT«5.3580137516158␤»
jnthn hoelzro++ # pygments lexer for Perl 6 getting merged
FROGGS I have to go home now, see you all in a bit... :/ 15:43
tadzik see you in a byte :)
masak r: 804610762993 #`[ticks with bug] / 150169596476 #`[ticks without bug] # annotating values. this is basically the only thing I (occasionally) use in-line comments for.
camelia rakudo 540c01: ( no output )
masak r: say 804610762993 #`[ticks with bug] / 150169596476 #`[ticks without bug] # might want to print stuff, too.
camelia rakudo 540c01: OUTPUT«5.3580137516158␤»
pmichaud the profile isn't telling me much obvious (because I've forgotten how to set kcachegrind up to read p6 profiles properly) 15:44
masak ok. next up: trying FROGGS' fix. 15:45
jnthn omg, boarding... 15:46
&
pmichaud O M G 15:48
"Found it!" (I think)
tadzik o, my boarding
colomon where's jnthn off to?
colomon is thinking it is early for YAPC::NA....
15:48 FROGGS[mobile] joined 15:49 xilo joined
tadzik early for PLPW too :) 15:49
masak colomon: it's $dayjob-related.
colomon masak: 'nuf said
15:50 domidumont left
masak pmichaud: listening :) 15:50
pmichaud here's where switching INTERPOLATE semantics made the slowdown.... github.com/rakudo/rakudo/blob/nom/...tr.pm#L548 15:51
15:51 FROGGS left
pmichaud for constant strings, / $pat: / used to create a nice constant regex. 15:53
now it creates a bunch of calls to INTERPOLATE
masak ...and it affects all calls to Str.match, which seems to be fairly central in regex matching. 15:54
pmichaud correct.
masak ah.
colomon yow
pmichaud I suspect it can be fixed by doing "$pat":
well, worked-around, anyway.
masak I will continue to test FROGGS' fix. after that I will try "$pat".
pmichaud masak: I was just about to suggest that... +1 15:55
but we still need to fix / $var / in the general case. As it sits now, it's obviously way too slow for the common use of $var.
(assuming that "$pat" solves the timing issue) 15:56
I'm afk... kid errand :-/ 16:03
masak *nod*
16:05 DarthGandalf joined
Util rn: say [ 5 ~~ 1..7 ].perl; 16:24
camelia rakudo 2696aa, niecza v24-38-g20128d7: OUTPUT«[Bool::True]␤»
Util rn: sub day ( Int $dow where {$^n ~~ 1..7} ) { say $dow }; day(5);
camelia rakudo 2696aa, niecza v24-38-g20128d7: OUTPUT«5␤»
Util rn: sub day ( Int $dow where * ~~ 1..7 ) { say $dow }; day(5);
camelia niecza v24-38-g20128d7: OUTPUT«Unhandled exception: Constraint type check failed for parameter '$dow' in 'day'␤ at /tmp/9sOL5wFTKA line 0 (day @ 1) ␤ at /tmp/9sOL5wFTKA line 1 (mainline @ 4) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4299 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/…
..rakudo 2696aa: OUTPUT«Constraint type check failed for parameter '$dow'␤ in sub day at /tmp/AjfGczvL3i:1␤ in block at /tmp/AjfGczvL3i:1␤␤»
Util ??? 16:25
TimToady rn: sub day ( Int $dow where 1..7 ) { say $dow }; day(5); 16:26
camelia rakudo 2696aa, niecza v24-38-g20128d7: OUTPUT«5␤»
TimToady rn: say * ~~ Whatever 16:28
camelia rakudo 2696aa, niecza v24-38-g20128d7: OUTPUT«True␤»
TimToady arguably * could be forced to closurize on the left even though it doesn't on the right 16:29
16:29 thou joined, FROGGS joined 16:30 Guest41769 left 16:35 FROGGS[mobile] left 16:36 FROGGS[mobile] joined 16:39 dmol joined
masak TimToady: that still doesn't address my typology counter-argument: "it's as if you're inserting a new type between 3 and Int, at the point of the enum declaration" 16:41
TimToady is starting to regret all the spec'd-but-smelly instrospective semantics of / $mystery / and / @mysteries /
masak: eh, wasn't talking about that 16:42
masak oh, ok.
TimToady but I agree, I think
16:47 [particle]1 is now known as [particle] 16:48 rurban left 16:49 rurban joined
TimToady I suspect the semantics we're actually looking for there is "Can this value be coerced to the enum?", which probably puts it into the bailisick of a Day() coercive declaration, not a smartmatch 16:49
on the / $x / and / @x / questions, is there anyone currently depending on the ambiguity to pass both strings and regex to the same matcher? I'm inclined to rip out the introspection and say / $x / is always / "$x" /, and you must say / <$x> / to get the other thing 16:52
likewise / @x / would always be literals, and / <@x> / would always be regex
and if you want to intermix, then you'll have to preprocess the strings in your arrays into regexen
this is one of those place where the semantic fight between the language and the OO-ness is coming out badly 16:53
with FP vs OO we made a clean separation between calls to function and calls to methods
here it's not clean
and I think I need to invoke rule 2 on / $x / and / @x / 16:54
Util TimToady, masak: Thanks 16:56
pmichaud TimToady: what's the canonical way to "preprocess the strings into regexen"?
TimToady also, simplying this to be language-dominant and not object dominant means that the answer to Q20 is that $x is always the same as "$x" even if $x contains an arrya
and you'd say @$x to mean the other thing
map { Regex ?? $_ !! rx/$_/ }, @array 16:57
or some such
pmichaud ...but based on what you just said, rx/$_/ would be a literal match.
TimToady um, <$_>, yeah
pmichaud so, /<$_>/
which seems icky, because it's actually a regex containing a regex, then. 16:58
there's a level of indirection there.
TimToady yes, but basic idea is to put the onus onto the programmer if they want to mix levels like that
pmichaud I understand that part, and agree.
I'm thinking we need a better mechanism for "convert a string to a regex"
TimToady not bake it into regex semantics, which is the same mistake as p5, mixing levels
pmichaud something like a regex eval.
TimToady could be 16:59
Regex(Str)
pmichaud right now we have code that does eval("regex anon { $x }") which is horrible imo
TimToady why not just a coercion? 17:00
pmichaud I'm fine with doing it as a coercion.
TimToady I suppose we could try ripping out the multis that introspect there and see what breaks...
17:01 alester joined
TimToady but it feels like one of things we must break regardless 17:01
pmichaud what about / &foo /, then? Should it also always be <&foo> to get the regex-y interpolation? 17:02
TimToady though I still slightly mistrust my brane lo these six weeks after surgery...
probably
17:03 frdmn joined
TimToady colomon: on Nil in niecza, the problem I ran into is that niecza uses Nil heavily in the regex engine to mean (), alas 17:03
so while a failed regex returns Nil, I never got to the point of de-listifying it successfully 17:04
pmichaud moritz: ping
TimToady I tried to split it into Nil vs Empty (to return the () instead of Nil), but didn't get it to work due to insufficient familiarity with C# 17:05
pmichaud moritz: unping, found the answer to my question. 17:06
so... empty blocks were changed to return () instead of Nil ?
that feels... wrongish.
TimToady for list comprehensions and such 17:07
pmichaud feels like it should return something that is undefined, though.
masak rn: say defined ()
TimToady but we've defined what it returns :) 17:08
camelia rakudo 2696aa, niecza v24-38-g20128d7: OUTPUT«True␤»
masak I don't feel I fully understand the ramifications. why did we change from returning Nil to returning ()? what's a use case where one relies on the definedness of calling a block which might be empty? 17:09
pmichaud the use case I can think of is when someone has created a block that doesn't explicitly return a value. 17:11
i.e., programmer omission.
I'd like it to signal somehow that the value being returned is a default. I'm not sure that () should be that default.
TimToady my @list = (if foo {42} elsif bar {} else {43}) for @input
but I suppose one could explicitly return () there 17:12
pmichaud or even just {()}
but yes, I do understand the case of my @list = (if foo {42} elsif bar {43}) for @input 17:13
which leaves a hanging else
I'm not sure it makes sense for the unhandled case to simply "disappear" from the input there, though.
I'll defer to the rosettacode master on that, though. 17:14
masak oh, it definitely does make sense for it to disappear. 17:15
that's what I expect from .map 17:16
and I have the same expectations in Perl 5, using for example ? :
TimToady and a list comprehension is really just a funny map
$_ * 2 if .odd for @list 17:17
pmichaud hmmm.
removing values is something I expect from a .grep :-) :-)
spider-mario + grep/filter, sometimes
but perl’s flattening of lists allows to implement grep with map
masak pmichaud: yes, but "one value" in map is just a special case. there can be zero or more values.
spider-mario :p
pmichaud $_ * 2 if .odd for @list I can understand.
moritz: in github.com/rakudo/rakudo/commit/39...dabf196dbd (which I know is in a branch)... the thing that returns () should definitely *not* be called "nil". :-) 17:18
moritz pmichaud: yes, I kinda figured that out myself, but didn't have enough brainpower to come up with a clever name
pmichaud moritz: also, I'm thinking that there should be a constant identifier for () somewhere.
could be Empty :-P 17:19
moritz NotNil :-)
pmichaud or Parcel::empty
moritz whatever it is, having the codegen all in one place does help :-)
pmichaud indeed.
moritz pmichaud: did you start the pugs-commits mailing list (or group)? 17:21
pmichaud yes.
moritz pmichaud: can you delete it again?
pmichaud probably.
I already took care of the spammer.
moritz it draws spam, and zero legitimate traffic
and the pugs commits are all in the Mu repo anyway :-)
pmichaud yeah, the group was from when pugs was svn-hosted and we didn't have a way to get email notifications out. 17:22
deleting group.
moritz pmichaud++
pmichaud It's now gone.
There were only about 10 members anyway.
moritz: for Actions.pm, I suggest "return_empty" for now. 17:25
moritz pmichaud: but it's not a return
pmichaud "value_empty"
"empty_value"
moritz empty_parcel ?
pmichaud sure, "empty_parcel" works for now. 17:26
moritz or do you want to not have to rename when the semantics change? :-)
pmichaud yeah, I was trying to think of what we call it when we fall through a block with no explicit end-value
moritz "default return value" 17:27
"empty block return value"
ok, empty_value :-)
pmichaud "but it's not a return"
lizmat rn: constant Empty=()
moritz there's a difference between return and return value
camelia rakudo 2696aa, niecza v24-38-g20128d7: ( no output )
pmichaud also, I'm not sure that all of those Nil's that are converted should be converted
moritz neither
lizmat rn: constant Empty=(); say Empty.WHAT 17:28
moritz which is why it's in a branch :-)
camelia rakudo 2696aa, niecza v24-38-g20128d7: OUTPUT«(Parcel)␤»
17:29 thou left
pmichaud the downside (or maybe upside) of a symbolic name is that it could be overridden. 17:29
r: sub foo(\Nil) { }; say foo(4) # curious 17:30
camelia rakudo 2696aa: OUTPUT«4␤»
pmichaud :-P
TimToady o_O
pmichaud the sub returns Nil :-) 17:31
which got defined to be "4"
TimToady reminds me of the patch to P5 that set 'undef' to a random number so it'd be really undefined
pmichaud r: my \Nil := 4; sub foo() { }; say foo
camelia rakudo 2696aa: OUTPUT«4␤»
geekosaur is thinking more of old fortran 17:32
pmichaud if that's something we want to allow, then there should be a symbol for ().
geekosaur pass a numeric literal as a function parameter, assign to that parameter in the function, you've just changed the value of that literal in the entire program
TimToady r: my \Nil := (); say Nil.perl
camelia rakudo 2696aa: OUTPUT«()␤»
pmichaud If it's something we don't want to allow, then we should force the return of an empty parcel that can't be modified.
17:33 daxim left
TimToady the seems saner 17:33
*that
pmichaud always an empty parcel is certainly safer as the initial position. 17:34
can add a symbol later if needed... hard to go the other way.
TimToady it's one of those things where the primitives turn out not to be as primitive as one would like...
17:35 dickinsm joined
TimToady and hence, really a circularity saw issue at some level 17:35
17:37 Chillance joined
jnthn Rakudo looks up the symbols it needs lexically, which means (for better or worse) than you can override pretty much anything :) 17:39
finland++ # free wifi at airports
nwc10 Portland has free wifi too 17:45
IIRC so do Vienna and Bratislava, and neither match /land$/ 17:46
jnthn Yes, Vienna and Blava indeed do. Or did when I lived there. It was nice. :) 17:49
17:55 ilogger2 joined, ChanServ sets mode: +v ilogger2
dalek ecs: f252dce | larry++ | S05-regex.pod:
remove eval-level confusion from / $x / and / @x /
17:55
timotimo fwiw, moritz, this is what i came up with for the ticker lines out of gnuplot. i have not checked if it does nice subpixel rendering though: set term png size 100, 26; set autoscale; set output 'figure.png'; unset border; unset tics; unset key; plot 'plot' with lines lt rgb "gray"; 18:00
and there needs to be a bit of fiddling with aspect ratio, otherwise it will be crammed together in the middle of the picture
another thing is, that i see no way (yet) to make the images be in relation to each other properly, as in have the same scaling 18:01
arnsholt You can set size in gnuplot with the set term command 18:05
And if you want them on the same scale, you'll probably have to set xrange/yrange explicitly
moritz timotimo: set yrange
18:06 lustlife joined
timotimo good point 18:07
arnsholt: in my code you'll see that i did already set the size with the "set term" command :)
arnsholt I'll shut up then =) 18:09
18:09 thou joined
arnsholt I must admit I skimmed the gnuplot commands 18:09
flussence I've done some stuff with gnuplot... feel free to steal any useful bits you see in github.com/flussence/specgraphs 18:15
18:15 supernovus joined
sergot does P6LIB="" still work? 18:16
moritz PERL6LIB=.
sergot moritz++ thanks
jnthn $flight.next(); & 18:17
dalek ast: 37df68b | larry++ | S05-metasyntax/litvar.t:
bring regex var matching in line with new spec
18:22
18:25 ajr joined, ajr is now known as Guest67138
TimToady
.oO("Make that bad dwim go away!")
18:32
colomon TimToady: just read the backlog. I can try to help you with the C# bits to fix Nil in Niecza, if you can explain to me what the heck they are supposed to do. :) 18:34
sergot Can I return matching token after parsing, in grammars? 18:36
I mean:
grammar { token a {}; method hm() { return a } } ?
Something like that.
arnsholt No, don't do that
Or, actually that can work
sergot I wanted access to tokens by .token_name
arnsholt But a takes some implementation-specific arguments 18:37
(IIRC)
If you look at Rakudo's grammar there are some methods that are used in parsing
sergot my $r = $gram.parse(...); say $r.my_super_token;
arnsholt It's NQP, but you might be able to use the concepts the same way in Perl 6
pmichaud sergot: $r in that case isn't an instance of your grammar. It's a Match object. 18:38
supernovus There are some seriously weird issues when installing modules. Stuff that works just fine when ran as "raw" Perl 6, fails horribly once it's been pre-compiled by panda or ufo. I'd brought this up before with XML::Query, and now it's affecting DateTime::Format (provider of the strftime function and its kin.)
sergot arnsholt++ ill see
18:38 domidumont joined
pmichaud $gram.parse(...) returns an instance of class Match, not an instance of the Grammar. 18:38
sergot pmichaud: so is there any possibility to do what I want? :)
arnsholt sergot: It might be easier to help if you explained what general problem you're trying to solve
sergot I don't want <> :) 18:39
pmichaud might be able to mixin a role that does what you want.
r: my $m = '3b2' ~~ / <alpha> /; my $x = $m but role { method alpha() { self<alpha> } }; say $x.role # maybe 18:40
camelia rakudo 2696aa: OUTPUT«No such method 'role' for invocant of type 'Match+{<anon>}'␤ in block at /tmp/vQ7EWFJEUF:1␤␤»
pmichaud r: my $m = '3b2' ~~ / <alpha> /; my $x = $m but role { method alpha() { self<alpha> } }; say $x.alpha # maybe #2
camelia rakudo 2696aa: OUTPUT«「b」␤␤»
sergot I'm working on LWP::UserAgent. I want to create is_success() method, which returns true if the status is equal to 200.I did this with storing Match object in $!reponse, I though it can be done without this. 18:42
Not in LWP::UA, but in HTTP::Response.
Is it possible?
pmichaud I'm afraid I need much more detail about the design. Short answer is "yes, it's possible", but it might be messy. 18:43
18:45 daxim joined
sergot pmichaud: here is my LWP::UA: github.com/sergot/lwp-useragent 18:45
pmichaud: it's just a draft. 18:46
pmichaud: As You can see in README, I wanted a method .is_success, but it doens't work on LWP::UA object, but HTTP::Response. So was my idea. 18:47
Not my, it works so in p5. :) 18:48
pmichaud I suspect you don't want HTTP::Response to be the grammar. 18:49
at least, not if that's what comes back from $ua.get("URL")
I wouldn't expect to get a Grammar back from .get("URL")
I'd probably create HTTP::Response::Grammar to be the grammar to parse HTTP responses, and then have HTTP::Response be a class of objects representing the processed response. 18:51
[Coke] +1
sergot pmichaud++: You're right! \o/ Thank You!
[Coke] ugh. news.perlfoundation.org/mt/mt-searc...p;limit=20 looks horrible in my browser. 18:52
moritz [Coke]: blue background all over? 18:53
my first guess would be an unclose <a> tag or so
sergot moritz: I've so.
lizmat same in Safari, error console only murmurs something about Twitter widgets being deprecated
dalek ecs: 1f34173 | larry++ | S05-regex.pod:
distinguish .subparse from .parse
18:55
[Coke] lizmat: I just emailed the webmaster about the twitter thing.
colomon specs: 1f34173 -- oooo, interesting! 18:56
[Coke] and since it's not just me, emailed them on the search results also. 18:57
FROGGS ohh, .subparse # TimToady++ 18:58
I like it
pmichaud TimToady: fwiw, if you say "Closes #41" or "Fixes #41" in the commit message, it'll automatically close the GitHub issue. 19:03
(and reference the commit)
FROGGS ohh, cool
TimToady I keep forgetting :) 19:04
pmichaud no problem, I just closed it manually :)
FROGGS githubs magic feels a bit perly
TimToady I even thought of it between the two spec commits, and then forgot again :)
pmichaud heh
TimToady prn: rx/foo/.Str.say 19:06
camelia niecza v24-38-g20128d7: OUTPUT«Regex()<instance>␤»
..pugs: OUTPUT«<Regex>␤»
..rakudo 2696aa: OUTPUT«␤»
TimToady prn: rx/foo/.say 19:07
camelia pugs: OUTPUT«<Regex>␤»
..niecza v24-38-g20128d7: OUTPUT«regex ANON(Any \self) { ... }␤»
..rakudo 2696aa: OUTPUT«␤»
TimToady prn: rx/foo/.Str.perl.say 19:08
camelia pugs: OUTPUT«"<Regex>"␤»
..niecza v24-38-g20128d7: OUTPUT«"Regex()<instance>"␤»
..rakudo 2696aa: OUTPUT«""␤»
TimToady r: rx/foo/.Str.WHAT.say 19:09
camelia rakudo 2696aa: OUTPUT«(Str)␤»
sergot pmichaud: Could you take a look now? 19:10
TimToady returning '' from rx/foo/.Str seems wrongishish
sergot pmichaud: I did as you said, I think. :)
colomon rn: my $match = 'abd' ~~ m/ (a) (b) c || (\w) b d /; say $match.perl
camelia rakudo 2696aa: OUTPUT«Match.new(orig => "abd", from => 0, to => 3, ast => Any, list => (Match.new(orig => "abd", from => 0, to => 1, ast => Any, list => ().list, hash => EnumMap.new()),).list, hash => EnumMap.new("", (), ))␤»
..niecza v24-38-g20128d7: OUTPUT«#<match from(0) to(3) text(abd) pos([#<match from(0) to(1) text(a) pos([].list) named({}.hash)>].list) named({}.hash)>␤»
sergot pmichaud: github.com/sergot/lwp-useragent
masak FROGGS: unfortunately, the partial revert didn't seem to speed things up: gist.github.com/masak/5520459#file...esults-txt 19:13
trying pmichaud's proposed patch now.
FROGGS masak: k, :o(
pmichaud yes, I suspect it's the variable interpolation one.
should we go through a release cycle and deprecation notice before updating to the new spec?
dalek ast: 69dfa1d | (Solomon Foster)++ | S05-match/capturing-contexts.t:
Fix / fudge for Niecza.
masak TimToady: just backlogged over coerce/bailisick. agree fully. 19:14
lizmat: which means that you have everyone's blessing to unspec 3 ~~ Day :)
moritz but then we have UNSPECCED behavior :-) 19:17
TimToady wonders if .ACCEPTS on a coercion type should automatically check for a defined result
dalek ecs: f06441c | (Elizabeth Mattijsen)++ | S02-bits.pod:
Fix problem in comment of wrong example
TimToady 3 ~~ Day() is easier to write than 3 ~~ Day().defined
19:18 SmokeMachine joined 19:19 japhb_ joined
lizmat rn: my enum Day <Sun Mon Tue Wed Thu Fri Sat>; say 3 ~~ Day() 19:21
camelia niecza v24-38-g20128d7: OUTPUT«Unhandled exception: No value for parameter '$key' in 'CommonEnum.postcircumfix:<( )>'␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (CommonEnum.postcircumfix:<( )> @ 1) ␤ at /tmp/UIN5ffb3dw line 1 (mainline @ 4) ␤ at /home/p6eval/niecza/lib/CORE.sett…
..rakudo 2696aa: OUTPUT«Not enough positional parameters passed; got 0 but expected 1 in sub-signature␤ in method postcircumfix:<( )> at src/gen/CORE.setting:2611␤ in block at /tmp/cPVVJuaNVI:1␤␤»
moritz I think that'd need to be Day($_)
19:22 supernovus left
lizmat feel more like a multi-method with a no parameter signature needs to be generated ? 19:22
*multi-sub
moritz wihch returns a magical object, which, when smart-matched against, coerces?
sounds like ETOOCUTE, ETOOMUCHMAGIC
lizmat feels a lot like the wizard's apprentice 19:23
sergot r: "\n" ~~ /./;
camelia rakudo 2696aa: ( no output )
sergot r: say $1 if "\n" ~~ /(.)/;
camelia rakudo 2696aa: OUTPUT«(Any)␤»
sergot r: say 1 if "\n" ~~ /(.)/; 19:24
camelia rakudo 2696aa: OUTPUT«1␤»
sergot r: say 1 if "\n" ~~ /./;
camelia rakudo 2696aa: OUTPUT«1␤»
sergot r: say 1 if "\r" ~~ /./;
camelia rakudo 2696aa: OUTPUT«1␤»
19:26 [particle] joined
lizmat masak: feels like unspeccing at this point is not the right thing to do. Maybe mark them as TBD instead? 19:28
19:28 domidumont left
pmichaud r: my enum Day <Sun Mon Tue Wed Thu Fri Sat>; say Day(3).defined 19:30
camelia rakudo 2696aa: OUTPUT«True␤»
pmichaud r: my enum Day <Sun Mon Tue Wed Thu Fri Sat>; say Day(8).defined
camelia rakudo 2696aa: OUTPUT«False␤»
pmichaud r: my enum Day <Sun Mon Tue Wed Thu Fri Sat>; say 3 ~~ Day($_) 19:31
camelia rakudo 2696aa: OUTPUT«True␤»
pmichaud r: my enum Day <Sun Mon Tue Wed Thu Fri Sat>; say 8 ~~ Day($_)
camelia rakudo 2696aa: OUTPUT«False␤»
masak lizmat: no, I actually think that 3 ~~ Day is insane.
pmichaud I think that 3 ~~ Day is wrong also. 3 is an Int. 19:32
and
r: my enum Day <Sun Mon Tue Wed Thu Fri Sat>; say Int ~~ Day
camelia rakudo 2696aa: OUTPUT«False␤»
lizmat r: my enum Day <Sun Mon Tue Wed Thu Fri Sat>; say Day ~~ Int 19:33
camelia rakudo 2696aa: OUTPUT«True␤»
colomon rn: say ((1 => 2) => 3).perl
lizmat r: my enum Day <Sun Mon Tue Wed Thu Fri Sat>; say Day ~~ 3
camelia niecza v24-38-g20128d7: OUTPUT«1 => 2 => 3␤»
..rakudo 2696aa: OUTPUT«(1 => 2) => 3␤» 19:34
rakudo 2696aa: OUTPUT«Parameter '' requires an instance, but a type object was passed␤ in method Bridge at src/gen/CORE.setting:3243␤ in sub infix:<==> at src/gen/CORE.setting:3166␤ in sub infix:<==> at src/gen/CORE.setting:3006␤ in method ACCEPTS at src/gen/CORE.setting:2784␤ in m…
masak good news, performance-wise: gist.github.com/masak/5520459#file...esults-txt
colomon rn: say ((1) => 3).perl
camelia rakudo 2696aa, niecza v24-38-g20128d7: OUTPUT«1 => 3␤»
masak I'll run spectests. and then maybe commit.
pmichaud masak: is that after the "$pat" commit ? 19:36
masak yes.
lizmat pmichaud: I don't understand where the topic gets set in "say 3 ~~ Day($_)"
pmichaud once again a masak++ has found a hole in the cheese. :)
lizmat: smartmatching sets a topic 19:37
moritz r: 42 ~~ .say
lizmat ah, ok, so maybe I should put "3 ~~ Day($_)" instead of "3 ~~ Day" in the spec?
camelia rakudo 2696aa: OUTPUT«42␤»
masak lizmat: sounds sane. 19:38
pmichaud r: say 42 ~~ * / 2;
camelia rakudo 2696aa: OUTPUT«21␤»
lizmat otoh, isn't saying that more or less the same as 1 ~~ 1 ?
masak r: my enum Day <Sun Mon Tue Wed Thu Fri Sat>; say 3 ~~ Day(3); say 3 ~~ Day(5)
camelia rakudo 2696aa: OUTPUT«True␤False␤»
pmichaud lizmat: yes, I suspect it is.
r: my enum Day <Sun Mon Tue Wed Thu Fri Sat>; say Day(3)
camelia rakudo 2696aa: OUTPUT«Wed␤»
masak r: my enum Day <Sun Mon Tue Wed Thu Fri Sat>; say 9 ~~ Day(9) 19:39
camelia rakudo 2696aa: OUTPUT«False␤»
masak no, it isn't.
see above.
pmichaud r: my enum Day <Sun Mon Tue Wed Thu Fri Sat>; say Day(8)
camelia rakudo 2696aa: OUTPUT«(Day)␤»
lizmat ok, so for checking whether in range, it would make sense. gotcha
masak yeah.
which was what the original/current spec line is about, after all.
moritz timotimo: the gnuplot script you came up with seems to waste a whole bunch of space in the images where legends etc. would usually be 19:40
timotimo: do you have any idea how to change that?
never mind, I found 'set rmargin 0' and 'set lmargin 0' 19:43
dalek ecs: bff6266 | (Elizabeth Mattijsen)++ | S12-objects.pod:
After much deliberation it was decided that matching ints against enumeration

of doing this using the topic as set by the smartmatch. Closes #117875.
19:46
[Coke] note that "Closes" completely does not work on RTs. 19:48
dalek ecza: 31f36d2 | (Solomon Foster)++ | lib/CORE.setting:
Fix Pair.perl to properly handle the case where the key is a Pair. Fixes #167.
[Coke] also, we should probably be using git-style commit messages.
(with a short first line)
pmichaud I've found that the "short first line" standard doesn't work for a lot of my commit messages. 19:50
moritz summarize harder :-)
pmichaud I mean, whenever I do a commit I always think "do a short first line" and I often fail to come up with one. 19:51
moritz it's really just a matter of practise
pmichaud if so, then I've been practicing for months and failing.
moritz well, it might be also a question of priorities
pmichaud I am being quite literal when I say that I think "short first line" on *every* commit.
moritz for example it's easier to come up with short first lines if they don't have to be too specific 19:52
[Coke] e.g. github.com/rakudo/rakudo/commit/80...e96f2dd19b - putting a line break before the We would be fine here.
pmichaud [Coke]: fair enough, that's a good example.
moritz like 'fix over-backtracking over captures' without going into the details when that bug occurred, or how it was fixed
that can go into the subsequent lines 19:53
pmichaud "fix over-backtracking over captures" doesn't seem specific enough to me, though.
I'd at least want to know what kind of captures.
[Coke] pmichaud: then you'd read the rest of the commit message.
moritz what [Coke]++ said
19:53 Moukeddar joined
pmichaud I mean in a summary line. 19:53
masak Moukeddar! \o/
pmichaud anyway, I'll try harder then. 19:54
Moukeddar Hello guys , and Hello masak \o/
masak usually I find that good first commit likes are on the form "<verb> <object>", with <object> simply being specific enough.
moritz pmichaud: that's what I meant by "a question of priorities"
Moukeddar i miss here
masak Moukeddar: welcome back!
pmichaud When I come up with one that doesn't work, I'll ping the channel and see how it could've been done better.
moritz pmichaud: either you give short lines the first priority, or specificity
masak pmichaud: ooc, do you have the same issue with email subject lines?
(honest question) 19:55
lizmat [Coke]: well, it shows intent :-)
masak because that, in some sense, is what the first line of a commit message is.
[Coke] lizmat: fair enough!
masak when the commit gets format-patch'ed, the first line becomes the subject line of the patch email.
pmichaud masak: I have trouble finding things based on overly short subject lines, yes.
if you're asking "do I have trouble coming up with short subject lines", the answer is "sometimes", but I do it anyway. 19:56
masak I meant the latter, yes.
pmichaud but then later I can't find the message I was looking for, because the subject line was too short, which kind of defeats the purpose of the subject line. :) 19:57
anyway, I have an example
moritz in other news I now have small images showing the activity of IRC channels
... but not enough time to integrate them into the website today :(
pmichaud github.com/perl6/nqp/commit/e3b8ef...44cde73bb2
lizmat will use short lines in the future
pmichaud github.com/perl6/nqp/commit/b48b5c...e49842fac4 19:58
nwc10 moritz: cool
masak pmichaud: solution: "fix RT #117831"
pmichaud oh, that's just about the worse subject line I can imagine.
colomon masak: ugh
pmichaud *worst
it says nothing about what the commit is about.
masak ok, trying again. :)
moritz pmichaud: "P6Regex: fix capturing on the right of +%" 19:59
or s/right/RHS/ if you prefer
masak "fix behavior of RHS of +% in regexes"
arnsholt I'd probably say something like "Properly handle <alpha> + % <sep>" and then describe the correct behaviour and RT number in-depth in the body of the message
moritz or "fix capturing of +% separator"
sergot ugh, can IO::Socket connect to host using url? 20:00
pmichaud moritz: those work for me.
as I said, I'll try harder.
moritz sergot: not URL, just domain names und IPs
[Coke] P6Rgex: <alpha>+% now captures multiple <seps>
pmichaud otoh, I don't know how many tuits you all want me spending on commit messages.
[Coke] not that many, no. 20:01
masak pmichaud: it quickly becomes automatic.
moritz not too much; just saying it's possible
sergot moritz: so host => 'google.pl' should work?
pmichaud masak: as I said, I think about this stuff on each commit and it hasn't been automatic for me yet.
moritz sergot: yes
pmichaud so, it may be "automatic" for others, but the automatic-ness hasn't hit me yet.
masak :/
moritz moritz.faui2k3.org/tmp/irc-activity/ fwiw
masak pmichaud: ok, that's a problem I can't assist with. it's become (more or less) automatic for me. 20:02
pmichaud well, seeing more good examples (like the ones you all have just given) definitely helps.
as I said, when I get stuck I'll ping the channel :)
moritz and specifically for this channel, moritz.faui2k3.org/tmp/irc-activity/perl6.png
sergot moritz: I tried so, and I had some problems.
moritz: oh, I have an idea, will try.
masak Moukeddar: nice!
moritz sergot: did they go away when you substituted the host name with IP? 20:03
masak er, moritz: nice!
moritz sergot: that's an easy way to check if host names are the problem
pmichaud Does the "short commit" also have an 80 character limit on it, ooc?
github.com/perl6/nqp/commit/b48b5c...e49842fac4 looks like I got bit by an 80-column limit, too. 20:04
(I did summarize that one into one line, just not one short-enough line :)
20:05 fgomez joined
pmichaud probably needed to omit the "instead of a list quantifier" part of the message. 20:05
20:09 domidumont joined
masak pmichaud: subject line has a (soft) limit at 50 chars. body lines have a (soft) limit at 72 chars. 20:10
pmichaud oooh, 50 is short. 20:13
even tweets are longer :-P 20:14
masak pmichaud: if it makes you feel better, I used one of your commits in a recent git course as a (positive) example of how to write commit comments. 20:15
it was more or less by accident. I just grabbed a commit that I thought would serve as a good example. turns out it did.
pmichaud Yes, that makes me feel better. :) I don't feel particularly badly, because I know I've already been working to follow the commit guidelines. There are just times when I don't see an obvious shortener. 20:16
masak nodnod
and those *are* soft limits. meaning it's up to you to decide when they're worth breaking. 20:17
pmichaud looking back through most of my commits I don't see many that violate it; and when they do, it's typically been "okay, I don't see an easy way out so I'll just break things and take the heat"
masak right.
dalek ast: e0f6b87 | (Solomon Foster)++ | S16-filehandles/io.t:
Refudge for Niecza.
pmichaud Besides, part of the reason is use Perl is because I don't like arbitrary limits. :-) :-)
masak yeah, it's a very Perlish notion. 20:18
I know you're joking. but they're not arbitrary in this case. they're the answer to "what limits would we need if we were to establish the commit-email isomorphism?"
(which is actively used by git-format-patch and git-am) 20:19
pmichaud r: say 768 * .75 20:24
camelia rakudo 2696aa: OUTPUT«576␤»
pmichaud r: say 765 * .75 20:25
camelia rakudo 2696aa: OUTPUT«573.75␤»
20:25 domidumont left
masak the "$pat" patch seems to break a spectest. spectesting without the patch to be sure. 20:30
20:30 Pleiades` joined
lizmat is searching in the spec on how to do an case-insensitive sort as a method 20:38
timotimo i'm le back~ . moritz, did you work more on the plotting in the mean time?
lizmat I find: perl6advent.wordpress.com/2010/12/2...wonderful/
which gives as an example: 20:39
rn: my @unsorted; my @sorted = @unsorted.sort: { .lc };
camelia niecza v24-40-g31f36d2: OUTPUT«Potential difficulties:␤ @sorted is declared but not used at /tmp/FeeAAKKvST line 1:␤------> my @unsorted; my ⏏@sorted = @unsorted.sort: { .lc };␤␤»
..rakudo 2696aa: ( no output )
lizmat hmmm...
rn: say 1.^methods.sort: { .lc } 20:40
camelia rakudo 2696aa: OUTPUT«No such method 'lc' for invocant of type 'Method'␤ in block at /tmp/MSY9_nrctX:1␤␤»
..niecza v24-40-g31f36d2: OUTPUT«Unhandled exception: Unable to resolve method methods in type ClassHOW␤ at /tmp/Bl5Arxq9in line 1 (mainline @ 4) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4312 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4313 (module-CORE @ 583) ␤ at…
[Coke] rn: my @unsorted = qw<l i z m a t>; @unsorted.sort: { .lc }.say; 20:41
camelia niecza v24-40-g31f36d2: OUTPUT«{ ... }␤Unhandled exception: Unable to resolve method count in type Bool␤ at /home/p6eval/niecza/lib/CORE.setting line 1743 (List.sort @ 5) ␤ at /tmp/QqIF73cNYz line 1 (mainline @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4312 (ANON @ 3) ␤ at /…
..rakudo 2696aa: OUTPUT«Block.new()␤No such method 'postcircumfix:<( )>' for invocant of type 'Bool'␤ in block at src/gen/CORE.setting:6227␤ in method sort at src/gen/CORE.setting:6221␤ in block at /tmp/oTJ4gKCnJr:1␤␤»
[Coke] (is that the error you were trying to trigger?)
lizmat Ah, I think I know what the pb is 20:42
[Coke] rn: my @unsorted = qw<l i z m a t>; @unsorted.sort({ .lc }).say 20:43
lizmat rn: say 1.^methods.map(:{~$_}).sort: { .lc }
camelia rakudo 2696aa, niecza v24-40-g31f36d2: OUTPUT«a i l m t z␤»
niecza v24-40-g31f36d2: OUTPUT«Unhandled exception: Unable to resolve method methods in type ClassHOW␤ at /tmp/SS5uH8UqN3 line 1 (mainline @ 4) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4312 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 4313 (module-CORE @ 583) ␤ at…
..rakudo 2696aa: OUTPUT«abs ACCEPTS acos acosec acosech acosh acotan acotanh asec asech asin asinh atan atan2 atanh base Bool Bridge ceiling chr cis Complex conj cos cosec cosech cosh cotan cotanh DUMP exp expmod FatRat floor gist Int is-prime isNaN log log10 Num Numeric perl pred rand Ra…
lizmat apparently I need to stringify the Method objects first
[Coke] before you try to print them out? 20:45
oh, before you try to sort them alphabetically.
labster good postnoon, #perl6 20:51
From the size of my email inbox, it looks like y'all have gotten a lot of work done today. 20:52
dalek ast: 0149c63 | (Solomon Foster)++ | S12-methods/parallel-dispatch.t:
Fudge for Niecza.
20:54
colomon rn: "m" ~~ /:i <[M]>/ 20:56
camelia rakudo 2696aa, niecza v24-40-g31f36d2: ( no output )
colomon rn: say "m" ~~ /:i <[M]>/ 20:57
camelia niecza v24-40-g31f36d2: OUTPUT«Nil␤»
..rakudo 2696aa: OUTPUT«「m」␤␤»
colomon rn: say "m" ~~ /:i <[m]>/
camelia rakudo 2696aa, niecza v24-40-g31f36d2: OUTPUT«「m」␤␤»
dalek ast: 2e32d1e | (Solomon Foster)++ | S05-modifier/ignorecase.t:
Fudge for Niecza.
20:59
sergot github.com/sergot/lwp-useragent it's something! \o/ 21:00
colomon \o/
tadzik sergot++ 21:01
I really hope it takes off 21:02
LWP::Simple seems more often broken than it's working these days
good to have some fresh bloo^Wcode
21:03 SmokeMachine left
sergot I hope so too. :) 21:05
21:09 SmokeMachine joined
dalek ast: 835646d | (Solomon Foster)++ | S05-metasyntax/litvar.t:
Fudge for Niecza.
21:09
ecza: 6231d24 | (Solomon Foster)++ | t/spectest.data:
Remove any-hash.t, as it no longer exists.
21:12
masak oh, the fix doesn't break any spectests. those two files were already broken on my system. 21:21
so then I think I can go ahead and submit this fix...
21:23 gaussblurinc_ joined 21:25 snearch joined
[Coke] colomon++ # cleanup 21:25
colomon [Coke]: still a ton to go, alas 21:29
[Coke] hopefully someone will get rakudo passing before tomorrow. 21:30
jnthn is home :) 21:34
lizmat welcome home, jnthn! 21:36
jnthn Hopefully the tuits will start to trickle again for a while. :) 21:39
21:40 Guest67138 left
sorear yay jnthn! home is good. 21:40
timotimo welcome home jnthn :) 21:41
jnthn Yeah, though this month will probably not have the highest density of "home" :) 21:42
lizmat oddly enough, for me this month has seen the most of "home" so far of all months this year :-) 21:45
jnthn Well, May is the final rush on teaching before the summer sets in. :) 21:46
timotimo time to cram for all those exams? or time to sit in all those parks? 21:47
lizmat and we cannot all teach over IRC :-(
jnthn Well, I kinda like the meatspace aspect of it.
And usually the travel is relatively easy-going...just some train journeys. 21:49
lizmat indeed, that's true. With the after-ski features as well, I guess ?
jnthn after-ski? 21:50
lizmat beer-time? 21:51
21:51 kurahaupo joined
jnthn Ah. I tend not to do that much beer while teaching. :) 21:52
lizmat I should have said "apres-ski"
many Dutch people go skiing in winter/spring, but mostly for the "apres-ski"
jnthn
.oO( Unless $correct-colleague is in town... :) )
lizmat (is my impression anyway)
jnthn has never tried skiing 21:53
I really should fix that :)
FROGGS jnthn: but same like with code: dont break anything ó.ò 21:54
jnthn Yes, indeed! :)
.oO( What's the skiing equivalent of spectests? )
FROGGS no idea, never tried it :o)
kurahaupo slalom poles? 21:55
dalek kudo/nom: 9ed5c55 | masak++ | src/core/Str.pm:
fix regex interpolation slowdown in matching

A recent commit (c255f1d) caused a 10x slowdown in one of my projects. This commit fixes the slowdown without breaking any spectests.
This is only a stopgap solution. Something more lasting will also be needed in the regex engine, I think. But it does fix the particular slowness I was experiencing.
22:01
lizmat masak++ 22:02
timotimo that's an impressively small delta 22:03
FROGGS masak++
masak pmichaud++
22:03 lustlife left
lizmat can now go to sleep& 22:04
jnthn 'night, lizmat
masak 'night, lizmat 22:06
22:12 Moukeddar left 22:16 gaussblurinc_ left 22:17 sjohnson joined
sergot gnight o/ 22:18
masak 'night, sergot 22:20
'night, #perl6
22:33 skids joined
jnthn labster: t\spec\S32-io\io-path-unix.rakudo seems to hang on Windows. 22:34
FROGGS gnight all
diakopter o/
jnthn (Disclaimer: this is after merging nom into my jvm-support branch, but it feels unlikely it'd not behave that way in nom.) 22:35
dalek Heuristic branch merge: pushed 29 commits to rakudo/jvm-support by jnthn 22:36
lue thought for a second that jnthn said merging jvm-support to nom 22:39
jnthn No :) 22:44
Just getting the latest stuff from nom, which is about all I have the energy to do tonight. 22:45
labster jnthn: Huh. I'm not actually on windows, so let me know how it's dying. 22:50
jnthn labster: It doesn't die, it actually hangs. 22:58
labster: 1-16 pass, so I guess it's 17.
timotimo or the output isn't flushed corrctly? 23:00
jnthn No
my $relpath = IO::Path::Unix.new('foo/bar' ); say $relpath.absolute
That hangs in the REPL
Or in a file. 23:01
can golf it to IO::Path::Unix.new('foo').absolute which also hangs 23:03
jnthn needs to get some rest
back tomorrow...'night 23:04
diakopter o/
cognominal curiosity pointed by BooK in #perlfr, palindromic url for a palindromic text : graner.net/nicolas/salocin/ten.renarg//:ptth 23:15
timotimo sadly the / are not flipped 23:18
is the text in reverse? ah, no, it's just french ;)
cognominal It is also a palindrome, you can read it from either end 23:19
for the /, palindrome are not visual.
timotimo ah, ok 23:20
also, i cannot read that from either end ;))