»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by lichtkind on 5 March 2010.
sorear TimToady: don't typical phone OSes mmap all files? 00:00
I've got this idea for a data structure that might work well here - it's the bastard child of a B+ tree and an inversion list, tuned to a node size of the P4 cache line (64 bytes) :> 00:01
pmichaud (Will make negative subscripts fail.)
00:04 solarion left, solarion joined 00:05 masonkramer_ joined
pugssvn r31278 | sorear++ | [dfa/Cursor] Implement protoregexes 00:06
sorear TimToady: What are the FILE and NAME fields of lexers used for? 00:08
00:08 sorear sets mode: +o diakopter
TimToady FILE is the name of the cache file, iirc 00:09
sorear Yeah, I see that, but AFAICT it's a dead store.
00:10 macdaddy left
TimToady could well be; we've gone through many iterations of caching 00:12
and name just remembers the key under which we are stored
more for debugging than anything
pugssvn r31279 | sorear++ | [dfa/Cursor] Disconnect the old regex LTM; establish full control in the hands of NFA 00:18
TimToady ooey! 00:19
diakopter curiuos about speed diffs 00:21
curious
sorear: can I kick off the std rebuild on p6eval early?
sorear no 00:22
diakopter k
sorear [dfa/Cursor]
I'm still workign in a branch
diakopter oh
sorear and a lot of features need to be forward ported
diakopter didn't realize it was a branch
sorear right now I'm adding \s
TimToady plus he only just removed the comparison instrumentation 00:24
00:24 lest_away is now known as lestrrat
TimToady so speed was not easily measurable before 00:24
sorear there are enough ambiguities in the handling of fate chains that it wasn't doing anything useful
What's \s in unicode props? 00:25
Space/Y ?
diakopter working on adding grammar/token/rule/regex keywords to perlesque 00:26
TimToady dunno, the long names were invented after I hacked unicde into p5 00:28
00:33 skids joined
diakopter longs for sixperl minutes 00:36
00:40 masonkramer left, masonkramer__ joined, masonkramer__ is now known as masonkramer
snarkyboojum oh yeah, there haven't been sixperl minutes for ages 00:41
00:42 whiteknight left
sorear \x0d is considered \h? 00:43
TimToady it moves the carriage to the left :) 00:44
so yeah
00:46 ciphertext left, snarkyboojum left
TimToady and VT is matched by \v, but \v won't get you one :) 00:47
pugssvn r31280 | sorear++ | [dfa/Cursor] Implement backslash escapes for character classes 00:49
00:54 mikehh left, mikehh joined
pugssvn r31281 | sorear++ | [dfa/Cursor] Implement before and after zero-width assertions 00:57
sorear I've switched to testing on STD.pmc... ws_0 is now correctly DFAed
TimToady hopefully you find more bugs in the old stuff than the new stuff :) 00:59
dinner &
01:11 arthur-- left 01:13 arthur-- joined 01:15 Chillance left
dalek meta: r333 | diakopter++ | trunk/Sprixel/ (5 files):
[perlesque] add the first declarative (via API) grammar test. syntax to follow.
01:15
diakopter perlesque: say(IO::File.ReadAllText("../../t/grammar1.t")) 01:19
p6eval perlesque: OUTPUT«say('1..1');
..return Either.D…
diakopter erm
perlesque: use "../../t/grammar1.t" 01:21
p6eval perlesque: OUTPUT«1..1␤ok 1␤»
diakopter perlesquel: use "../../t/grammar1.t"
p6eval perlesquel: OUTPUT«1..1␤ok 1␤real 0.30␤user 0.28␤sys 0.02␤»
diakopter perlesquel: use "../../t/grammar1.t"
p6eval perlesquel: OUTPUT«1..1␤ok 1␤real 0.32␤user 0.30␤sys 0.01␤»
diakopter hm
sorear cute. how does it work? 01:25
diakopter see grammar1.t .. 01:26
working on adding the inline-code thing
sorear yeah, I'm looking at grammar1.t
but it doesn't look like assemblies are getting generated much 01:27
diakopter it should've emitted a Foo.exe
sorear hmm.
ok.
ISTR something in the .NET docs about needing to use a nonsaved assembly to reference stuff from the current one? 01:28
diakopter o wait
odd
it put the perlesque parser in Foo.exe 01:29
looking..
oh; lol
no it didn't
I have some non-re-entrant static/globals I need to fix
namely it emitted a totally superfluous N0,000-entry jumptable/switch-case block 01:30
sorear: I'll clean up the API so it's actually sane 01:31
it's currently, um, not.
afk& 01:32
sorear hmm. I'm generating a LTM automaton for <opener> 01:52
I suspect this is not right.
colomon pmichaud: ping? 01:53
pmichaud colomon: pong
colomon rakudo: my @a = 1; @a.push({ 'a' => 3, 'b' => 4 }); say @a.perl 01:54
p6eval rakudo 272191: OUTPUT«[1, {"b" => 4, "a" => 3}]␤»
01:54 jaldhar joined
colomon huh. 01:54
sorry, may have called you too early on this one.
pmichaud np :)
colomon I'm trying to get hyper.t working.
pmichaud +1 01:55
colomon my local version makes it to test 160 with no fails, then trips up over a mixed array / hash test
pmichaud I've just been implementing lazy splices :)
colomon oooooooo +1
getting ["1a", "b" => "3b", "a" => "2b", "4c"]
should be getting ["1a", {"b" => "3b", "a" => "2b"}, "4c"] 01:56
pmichaud what line is test 160?
colomon I figured it must be a push issue, but maybe not.
532
pmichaud mine must be different numbers 01:57
sorear TimToady: What NFA should be generated for ^, ^^, $, $$?
pmichaud oooh, splice.t passes! 01:58
colomon \o/
01:58 plobsing joined
colomon I think the source of the problem is probably (from hyper on arrays): 01:58
if Associative.ACCEPTS($l) || Associative.ACCEPTS($r) {
@result.push(hyper(&op, $l, $r, :$dwim-left, :$dwim-right));
pugssvn r31282 | sorear++ | [dfa/Cursor] Anonymous character classes, some special methods
pmichaud that hyper doesn't look like it's likely to return an item
so yes, the result will flatten. 01:59
colomon at what point?
pmichaud rakudo: my @a = 1,2,3; my @b = 5, 6; @a.push(@b); say @a.perl; 02:00
p6eval rakudo 272191: OUTPUT«[1, 2, 3, 5, 6]␤»
pmichaud @b is flattening, so each element of @b gets added to @a
the hyper() function seems very likely to return a flattening object
such that each element returned by hyper gets flattened into @result 02:01
colomon it's supposed to preserve structure, not flatten.
pmichaud I'd need to see the test itself to be able to trace it better.
if it needs to preserve structure, then you might not want to be using .push (which tends to flatten) 02:02
colomon search on "hash in array - result array is the correct length"
what could be used instead of push?
pmichaud not sure, but in general things like push, array assignment, etc. aren't conducive to preserving structure 02:03
generally you want to keep things from going into variables.
my @r = @a <<~>> @b;
is +@r, 3, 'hash in array - result array is the correct length';
this one?
colomon It's that block 02:04
it's all one logical test
pmichaud I need to read the latest on hypers
colomon I'm not sure that particular behavior is spec'd yet, discussed it with TimToady last week. 02:05
pmichaud well, I see that the first element should be "1a", and the last element should be "4c" 02:06
I'm not sure what that middle element should be.
colomon rakudo: say ((1, { a => 2, b => 3 }, 4) <<~>> <a b c>).perl
p6eval rakudo 272191: OUTPUT«["1a", {"a" => "2b", "b" => "3b"}, "4c"]␤»
colomon that is, it's { a => 2, b => 3 } <<~>> b 02:07
pmichaud what would you expect from... 02:08
my @a = (2,3); say ((1, @a, 4) <<~>> <a b c>).perl 02:09
?
oh, nm, that's not a good example.
my $a = [2,3]; say ((1, @a, 4) <<~>> <a b c>).perl 02:10
arggh
my $a = [2,3]; say ((1, $a, 4) <<~>> <a b c>).perl
colomon rakudo: my $a = [2,3]; say ((1, $a, 4) <<~>> <a b c>).per
p6eval rakudo 272191: OUTPUT«Method 'per' not found for invocant of class 'Array'␤ in main program body at line 11:/tmp/TPzcfDudDF␤»
colomon rakudo: my $a = [2,3]; say ((1, $a, 4) <<~>> <a b c>).perl
p6eval rakudo 272191: OUTPUT«["1a", ["2b", "3b"], "4c"]␤»
colomon faster than typing in the result, but yeah, that's what I expected.
pmichaud and then 02:11
02:11 patspam joined
pmichaud rakudo: my @a = 2,3; say ((1, @a, 4) <<~>> <a b c>).perl 02:11
p6eval rakudo 272191: OUTPUT«["1a", "2b", "3c", "4a"]␤»
pmichaud hmmmm.
trying adding .item after your hyper()
that might work.
colomon testing 02:12
pmichaud but that might have the effect of itemizing things that weren't items in the original list.
pugssvn r31283 | sorear++ | [dfa/Cursor] Zero-width assertion metacharacters are now treated as nulls at LTM 02:13
pmichaud aha 02:14
my suggestion would be use .map instead of for in the hyper helper
and avoid putting things into @result
that way things remain parcelized properly instead of being forced into item or flattened 02:15
pmichaud scribbles
we can get back to using for() once we have it set up to translate to .map
colomon ooooo, interesting 02:16
.item makes the test pass, for what it is worth. 02:17
pmichaud can go with .item for now. It might make other flatten-y things fail.
pugssvn r31284 | sorear++ | [dfa/Cursor] RE_double 02:18
colomon up to 218 passing hyper tests, and I think another .item will fix the next failure.
sorear I now have STD itself minimally functional on dfa/Cursor
pmichaud nopaste.snit.ch/21280 # avoiding @result array, for colomon++. Also makes the hyper results lazy. :) 02:19
there might be better ways to do this, too. 02:20
but in general, for any type of operator (especially pipelines) it's best to avoid containerizing things if at all possible.
because putting something in a container tends to say something about how it behaves.
colomon hmmm.... worth changing? I've got hyper.t 100% passing with @result version at the moment. 02:21
pmichaud if it's working, don't change it.
or, better stated: commit a working version, and then if you want to play with the other one that's up to you :)
colomon let me check it in like this, with a note about your suggestion.
yeah. :)
pmichaud but if you look at the core methods I write you'll see that I tend to want to avoid sticking things into variables 02:22
(variables also tend to make values stick around longer)
in this example, for example, if the result of the hyper is being consumed by an iterator, all of the previous values end up sticking around in the @results array even though we don't use them
thus (@a <<~>> @b).map(...) 02:23
map will lazily request items from hyper(), but after map processes each they end up staying around in the @results array (because it's bound) 02:24
well, more to the point, using @results means that the whole hyper() thing isn't at all lazy. it eagerly computes all of the results, and then keeps all of them around as long as any are being used.
pmichaud kicks himself off the soapbox. :) 02:25
someday as I'm doing code reviews I'll undoubtedly note places where things aren't written lazily that ought to be :) 02:26
02:26 skangas joined
colomon +1 to a general lazy approach, but of course hyper isn't supposed to be lazy. :) 02:26
lue afk
pmichaud ah, yes, if hyper isn't lazy then it doesn't matter :)
colomon I'm not sure there's any reason we shouldn't make it lazy at the moment, but in the long run... 02:27
pmichaud and I'm still fond of the notion that our hypers should do things out-of-sequence.
colomon +1 out-of-sequence
pmichaud maybe when I get tired of other stuff I'll randomize hyper() a bit. :-) 02:28
can the repeating-array sub be rewritten as @a xx * at some point...? 02:29
colomon pmichaud: I think so.
there was a good reason to do it as repeating-array, but I don't remember why now. 02:30
munch($n) is in place already, right?
pmichaud well, previously &infix:<xx> probably didn't know how to preserve parcels
but now it probably can :-) 02:31
oh, I guess not yet. :-|
rakudo: say ((1,2,3) xx 4).perl 02:32
p6eval rakudo 272191: OUTPUT«[1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]␤»
pmichaud that looks wrongish.
colomon I dunno
I think I'd worry about the
rakudo: say ([1, 2, 3] xx 4).perl 02:33
p6eval rakudo 272191: OUTPUT«[[1, 2, 3], [1, 2, 3], [1, 2, 3], [1, 2, 3]]␤»
colomon case
I mean, in the hyper context.
pmichaud right
anyway, list branch seems to behave same as rakudo at the moment. 02:34
02:34 ciphertext joined 02:35 Targhan_ left
pmichaud ah, yes, &infix:<xx> is also doing the @results array trick 02:35
fixing.
02:35 Wolfman2000 joined, ggoebel left
pmichaud our multi infix:<xx>(Mu \$item, $n) { (1..$n).map( { $item } ) 02:36
}
.... and now it's lazy. :)
colomon \o/
ah, if it wasn't lazy, that's definitely why I wasn't using it there! 02:37
though of course it doesn't necessarily explain why I didn't just make it lazy.
pmichaud would've been hard to make it lazy prior to the branch.
I suppose it could've been done with gather/take
I tend to prefer using map for laziness these days :) 02:38
colomon map++ 02:39
pmichaud > say ((1,2,3) xx 5).perl
((1, 2, 3), (1, 2, 3), (1, 2, 3), (1, 2, 3), (1, 2, 3))
and it's no longer flattening the parcels. :)
colomon is ^* okay? 02:41
(errr... not that you used it here!)
pmichaud I don't know. Right now a lot of the *'s are being turned into closures
for example, I tried (1,2,3) xx * and it thinks it's a Block
colomon ouch.
pmichaud so we need a Whatever version too I guess.
colomon I can fix that.
pmichaud I just pushed my version.
colomon heh, having trouble getting caught up here. :) 02:42
pmichaud I'll be taking a short break in just a bit
also running a full spectest run to see what else needs fixing.
colomon pmichaud: actually, we just need to modify the list of exclusions to the Whatever closure code. 02:43
*exceptions
pmichaud okay, that works too.
colomon I'll have to poke around to remember how to do it, but it's not hard.
rakudo: say (1 ..^ *).perl 02:44
p6eval rakudo 272191: OUTPUT«{ ... }␤»
colomon embarrassing, can't believe I forgot to check that.
fixing 02:45
rakudo: say (^*).perl 02:47
p6eval rakudo 272191: OUTPUT«{ ... }␤»
colomon rakudo: say (^10).perl
p6eval rakudo 272191: OUTPUT«0..^10␤»
pugssvn r31285 | sorear++ | [dfa/Cursor] First cut of implementing all remaining RE_xxx 02:49
02:55 pronik` joined 02:58 pronik left 03:03 [mark] joined 03:10 skids left 03:12 masonkramer_ left
sorear much as I am enamored with the idea of compiling NFAs down to optimal machine code, statically, I'm starting to think lazy might work better after all... 03:13
03:14 meppel joined 03:17 meppl left
pugssvn r31286 | colomon++ | Test that Range operators with Whatevers are not mistakingly turned into closures. 03:20
03:26 patspam left
TimToady sorear: traditionally, edges get extra constraints that are tested for 0-width assertions, but you can just ignore them and let LTM backoff handle the constraint failure for now 03:39
sorear: the nice thing about lazy is that it tends to cache the states you'll need next time you see the same thing, since there's usually an amount of redundancy 03:40
it also saves you from exponential state space to make it data driven
03:41 JimmyZ joined
TimToady however, some hotspot analysis could make it worthwhile to compile some of 'em down to the metal 03:41
03:44 mikehh left
sorear just what I needed, /more/ complexity in edges 03:45
it's bad enough that they have to be able to represent arbitrary Boolean functions of Unicode properties
Perl 5 is really not ideal at managing complicated graphy data structures
TimToady anyway, you can ignore the 0-widths with (I believe) the same semantics 03:46
03:46 mikehh joined
TimToady assuming we aren't trying to solve the Halting Problem with our engine 03:47
we certainly don't make a lot of use of anchors in grammars, so I don't think we lose much by letting the grammar do the tests instead 03:48
general regex might be dicier though
some 0-width assertions can be emulated, such as looking for non-\w after » 03:49
trick there is not to count the next character in LTM unless it would be matched otherwise 03:50
but you'd really like to run your machine just by looking at things with width 03:51
I wonder how much syntax relief you'd get writing it in P6 and translating it... 03:53
03:54 Schwern joined
sorear yay, now I've gotten to the "bugs without backtraces" stage 03:55
$lang is not predeclared at STD.pm6 line 96 03:56
TimToady is it still breaking ties in the same order as the old LTMer? 03:59
sorear no 04:01
that's next... after I figure out how that worked
TimToady some of what the old LTM calculated on the fly can actually be determined in advance, such as how many literal chars there are on the front 04:02
04:03 lestrrat is now known as lest_away
TimToady we can probably pre-gen a Schwartzian comparison string that is just used to sort equal-length cohorts 04:03
04:03 lest_away is now known as lestrrat
sorear I think nfastar is broken, anyway 04:04
TimToady instead of push a flat list you might want to push @[][] where the first ix is token length
sorear I'm translating character classes wrong too
I have <[ \s ]> matching 's' 04:05
TimToady then it's easy to sort the longest set lazily, and you never have to sort the shorter cohorts you don't use unless relex requests it
sorear What do you mean by @[][] where the first ix is token length ?
What's relex? 04:06
TimToady when it fails a longer token match in the parser, it comes back and looks for the next "shortest" token, or one that lost in the tie sorter
@candidates[$ltm_length][@order_pushed] 04:07
if you look at the old anonymous sub returned by gen, it actually had a three level, @candidates[$ltm_length][$literal_len][$push_order] 04:08
but as I say, the literal length doesn't need to be there
if @candidates[] top level is indexed by LTM length, then all the candidates at that length can be sorted by a predefined comparsion string that encodes longest literal match, order of declaration 04:09
sorear the current run engine does push @fates, @{ $dfanode->[0] }; every iteration, then pop @fates in the returned sub 04:10
TimToady basically, tie-breakers 2..5 at S05:45
sorear so the order of fate return on a given dfa node is controlled by the dfa generator
TimToady hmm, and a dfa state can represent more than one position, eh? 04:11
hmm
well, but we know the position in the buffer
so there is only one current token length 04:12
that's the first index of the candidates, and you push all those fates in there
sorear the trick is that fates are added to the fate pool in order of increasing high water
which is the same as the order of increasing token length
TimToady but you don't necessarily have to have sorted all those fates in advance
it can be done lazily, is what I'm saying
sorear so when we pull from the end, we always get the longest token first
TimToady sure, but what about ties? 04:13
that's what 2-5 are for in S05:45
either the fates are presorted in that order, or post-sorted 04:14
if we can presort them, then your current approach is fine
sorear tiebreaking will be done by sorting the fates in _nfa_to_dfa
#2 can be done by adding extra info to the fates
a literal length field
TimToady yes, almost did that myself
so if you can presort them, that's probably best, especially if the particular fate-set gets reused 04:15
sorear #3 and #4 fall out of stable ordering for free
NFA nodes are added in the order of RE_ast nodes
TimToady maybe, or can be forced with a sort key
sorear I don't really understand #5 but it probably falls out from the same logic, if augmented definitions go on ends of lists 04:16
what, precisely, constitutes a literal prefix?
TimToady an exact character, possibly with canonicalization 04:17
so abc\w\w\w is 3
and maybe :i abc
w
:i abc\w\w\w
but not abc<[de]>
that's still 3 04:18
sorear what about ab[d|e] ?
what about :!s a b c ?
TimToady that's 2
sorear what about "a""b""c"?
TimToady those are both 3
sorear what about token x { abc } f <x> ?
TimToady that's 4 04:19
sorear a b [c] ?
TimToady looks like 3
gets a little dicey with a quantified literal / abc? / 04:22
the current engine might actually put that either into [2] or [3]
dunno exactly
I could argue it should just be counted as 2 04:23
would like to keep the definition statically discernable without data 04:24
but the idea is to privilege 'print' over \w+
does this make some sense to you? 04:25
btw, when #5 says 'uses' it means 'use statements', not 'usages' 04:27
szabgab rakudo: (5...1).perl.say
p6eval rakudo 272191: OUTPUT«(5, 4, 3, 2, 1)␤»
szabgab rakudo: (5...^1).perl.say
p6eval rakudo 272191: OUTPUT«(5, 4, 3, 2, 1, 0, 0)␤»
TimToady "How many use statements did we traverse to get to the definition?"
szabgab the former is nice, the latter seem a bit double negative? 04:28
TimToady it's being parsed as 5 ... ^1 I think
rather than 5 ...^ 1
szabgab rakudo: (5 ... ^1).perl.say
p6eval rakudo 272191: OUTPUT«(5, 4, 3, 2, 1, 0, 0)␤»
szabgab rakudo: (5 ...^ 1).perl.say
TimToady though it still shouldn't give two 0's
p6eval rakudo 272191: OUTPUT«(5, 4, 3, 2, 1, 0, 0)␤»
TimToady rakudo: (5 [...^] 1).perl.say 04:29
p6eval rakudo 272191: OUTPUT«===SORRY!===␤Unable to parse infixish, couldn't find final ']' at line 11␤»
TimToady rakudo: (5 [...]^ 1).perl.say
p6eval rakudo 272191: OUTPUT«(5, 4, 3, 2, 1, 0, 0)␤»
szabgab what should be the difference between 5 ...^ 1 and 5 ... ^1 ?
TimToady yes, it doesn't know ...^ yet
the first should make 5...2 and the second 5 ... 0 04:30
szabgab ok
sorear yes, it makes sense 04:31
offtopic: In what ways is rakudo superior to pugs? 04:32
TimToady pugs: say 5...0
p6eval pugs: OUTPUT«*** ␤ Unexpected "0"␤ expecting operator, ":", "," or term postfix␤ at /tmp/nqgOiM3aqI line 1, column 9␤»
PerlJam sorear: it's got an active developer community
sorear PerlJam: does pugs need a developer community? Every time I've run a perl6:, pugs is on top of the pack 04:33
TimToady rakudo actually does lazy lists
pmichaud ...and soon it will even do them well. :)
TimToady it's much more developed on hyperoperators
er, metaoperators
and much better at regexen 04:34
ciphertext szabgab: related rt.perl.org/rt3/Ticket/Display.html?id=75674
TimToady pugs sent most of its regexen off to P5 to evaluate
04:35 Visitor99 joined
sorear I see. 04:35
sorear wonders what <[a..w]> means
TimToady std: /<[a..\w]>/ 04:36
p6eval std 31286: OUTPUT«ok 00:01 109m␤»
TimToady hmm
I thought that would give an error
std: /<[\w..a]>/
p6eval std 31286: OUTPUT«ok 00:01 109m␤»
TimToady std: /<[..a]>/ 04:39
p6eval std 31286: OUTPUT«===SORRY!===␤Range missing start character on the left at /tmp/zo6bBIX1B5 line 1:␤------> /<[..⏏a]>/␤Check failed␤FAILED 00:01 105m␤»
TimToady std: /<[a..]>/
p6eval std 31286: OUTPUT«===SORRY!===␤Range missing stop character on the right at /tmp/dF8MX70_fG line 1:␤------> /<[a..⏏]>/␤Check failed␤FAILED 00:01 105m␤»
pugssvn r31287 | sorear++ | [dfa/Cursor] Fix $var crash, handle \s and \w in character classes correctly
TimToady and \d? 04:40
sorear \d is not used in STD.pm6; also, I'd like to gut the whole thing 04:41
RE_ast currently has to reparse character classes
not good
TimToady nod
pugssvn r31288 | sorear++ | [dfa/Cursor] Debug information as fates are added to the fate pool 04:49
sorear according to the automaton for statement_0, "" can be the prefix for alts 2, 4, and 5
this seems wrong
well, 5 makes sense, but not 4 04:50
and *probably* not 2
TimToady 4 makes sense if <stopper> is <!> 04:51
I don't know offhand what's making 2 nullable 04:53
unless perhaps termish isn't getting promoted to EXPR
sorear "foomoo" ~~ / $<foo>=(foo) | $<id>=(...) [ .. » . ] /; # ??? 04:54
er
"foomoo" ~~ / $<foo>=(foo) | $<id>=(...) [ .. » . ]? /; # ??? 04:55
TimToady term:miscbad is nullable
sorear ah 04:56
pmichaud down to 368 failing tests in list branch
sorear OK, my current issue is bad tiebreaking
r31288 allows me to see that "my" is being fated as a term:name 04:57
04:58 mjk left
pugssvn r31289 | pmichaud++ | [t/spec] Change a reduce.t test to work slightly better in list branch. 04:58
TimToady yes, 'my' is tiebroken on declaration order currently 04:59
that's why term:name is pretty far down
# bare identifier without parens also handled here if no other rule parses it 05:00
tiebreaker #4
sorear dfa/ currently tiebreaks on reverse declaration order :/ 05:03
OH!
That's why you have __S_\d\d\d 05:04
TimToady I think the old LTM managed to do #1..#4
yes, those are for #4 within protos
other than that, they're pretty useless
it would be nicer to just know the position where a rule was declared in each file, and sort on that, presumably by some kind of introspectoin 05:06
but p5 isn't terribly good at that
and \d\d\d is an arbitrary limit of 1000 functions, which is bogus too 05:07
05:11 snarkyboojum joined 05:15 kaare joined, kaare is now known as Guest71658
sorear TimToady: What does 'use' have to do with monkey patching? (#5) 05:15
If a grammar is subclassed, and a subclass provides a new multi token with the same long name, is the original one still used? 05:16
05:16 meppel left
TimToady I don't remember my chain of reasoning, other than there was some way monkey patching could make it fall through the cracks of the other rules 05:17
certainly the subclass's name hides the superclasses
I wouldn't worry about it for now 05:18
#5 that is
oh, I remember. suppose a class comes from two different files due to augmentation; you can't use #4 in that case 05:19
that probably implies a #6, two equally distant use-chains use the earlier use first 05:21
otoh, I suppose it could be argued that an augmentation should take precedence over the basic class 05:25
05:25 supernovus joined
sorear what does "use" have to do with it first? 05:30
s/first/though/
supernovus Well, having been working on a day-job that doesn't involve Perl 6, I seem to have missed a few great commits. IO::Socket::INET works again, and along with it, the SCGI library. Now that it works on the master branch again, how would I go about adding it to proto's projects.list? 05:31
TimToady if you use something, it's presumably something more basic, so "use" distance is a proxy for genericity 05:32
and in general we want the more specific rule to take precedence 05:33
hmm, actually, 'my' should be taking precedence by longest literal token (2) over the <ident> of term:name, which is 0 literal chars 05:34
so that one is broken by #2
not by #4 as I surmised earlier
sorear well, use doesn't have to be involved at all 05:35
snarkyboojum supernovus: get someone with commit access to the proto repo on github to add it to projects.list
sorear what if you're augmenting GLOBAL::something
I would combine #4 and #5 into "all remaining ties are broken in the logical order of compilation" 05:36
or equivalently "the order the rules were added to the alternation or class"
TimToady which is insane, when two different used files both use something else
05:37 orafu left
TimToady or we could be like the C folks and just throw up our hands :) 05:37
05:37 orafu joined
TimToady and logical order of compilation puts used code in front of using code, which is backwards at least some of the time 05:38
snarkyboojum supernovus: and if you add tests in a t/ directory you'll get another badge when it goes up on proto.perl6.org :)
supernovus snarkyboojum: Sounds like a good idea. I see you made the last commit (to that file from the looks of it). I still have to figure out how to write tests that don't involve setting up a web server with an SCGI module loaded... 05:39
snarkyboojum supernovus: good point re tests - also, if you put your module in a lib/ directory, you can get ufo to generate a Makefile for you (if you want to do it that way) 05:40
TimToady perhaps augment can have some way of marking its new methods as "unshifted" rather than "pushed" so they're logically in front of that particular class's methods 05:42
05:42 Visitor99 left 05:44 Meldrake_ left
supernovus snarkyboojum: Sounds good. I have moved SCGI.pm into a lib/ folder. I shouldn't need proto.deps as it has no external dependencies. 05:44
TimToady almost makes you want to change #4 to latest one wins, then everything would be more consistent 05:45
supernovus Anyway, the SCGI can be found at github.com/supernovus/SCGI Not sure if anyone is really interested in it, but it is MUCH faster than trying to call Perl 6 scripts through traditional CGI. 05:49
TimToady <sorear> S05 and Cursor slightly disagree on how to handle zero-width positive lookahead assertions 05:52
Cursor is correct, the handling of <?before foo> has nothing to do with where it is in a rule 05:53
<?before foo> is the same as 'foo' {}
as far as lexing is concerned
sorear ok. 05:54
what about <ww> == <?before \w> <?after \w>
TimToady equiv to \w
lookbehinds are ignored, as are negative lookaheads 05:55
in any case, the after if after a before, so would be ignored anyway
s/if/is/
since the <?before> terminates the declarative area after itself 05:57
snarkyboojum supernovus: ufo will generate a default make rule to compile your module to *.pir and test targets etc - just tried it locally on your project and work well :) 05:58
TimToady (the others are simply transparent to LTM, and do not terminate the declarative area)
they're just extra constraints to be checked afterwards
sorear does » turn into [ \W | $ ] {} ?
supernovus snarkyboojum: cool, I haven't tried ufo yet, but will definitely be adding it to my toolkit. :-) 06:00
TimToady I'm inclined to think not
probably best to leave it transparent too
in general \w* will pick the rule that doesn't match » anyway if there's more \w after 06:03
snarkyboojum supernovus: I've added your module to proto.. I'm sure masak won't mind :)
supernovus I still have an interesting bug related to pre-compiling into .pir files. I have a certain library that compiles fine if the rest of the libraries are .pm, but bails out with a blockoid error if you pre-compile the other libraries. 06:04
snarkyboojum: thanks!
snarkyboojum supernovus++ :) 06:05
supernovus snarkyboojum: I have a few other projects, but none of them have been fully weened from the 'alpha' branch yet...
TimToady it's also possible we should differentiate <?before foo> into two constructs, one of which is transparent like other 0-width, and the other of which is instruction to ltm that doesn't have to be rematched at parse time
snarkyboojum supernovus: I think there's quite a few projects listed in proto that aren't running against master (well there used to be)
supernovus: I'm sure masak can give you a commit bit to proto anyway so you can add them as you see fit :) 06:06
TimToady <?ltm foo> or some such would finish off the current token, and always say "true" later since it knows it matches already
sorear as I'm currently doing this, [foo]+ is counted as a literal prefix length of 3 06:07
since it's getting desugared to foo[foo]*
TimToady there's a good argument for that interpretation too
I'm fine with that 06:08
06:09 justatheory left
TimToady splitting <?before> is probably a bad idea really 06:11
the whole point of the strange rules is to hide the transition from declarative to procedural most of the time
and you can always write <!!before> to get the transparent assertion 06:12
moritz_ good morning
TimToady o/
sorear currently I have the nontransparent form for <?foo>, <before <foo>>, and <?before <foo>> 06:14
because viv optimizes them all to the same code
TimToady is fine for LTM 06:17
06:18 uniejo joined 06:19 uniejo left
supernovus I think it's time for bed. Have a good night/day everyone! 06:30
06:31 supernovus left 06:34 mjk joined 06:35 Zapelius joined 06:37 Guest14600 joined
sorear I should probably do something about DFA nodes which list the same fate several tiems 06:38
06:41 Guest14600 left, Mowah joined, Su-Shee joined 06:51 uniejo joined
sorear I seem to have broken something; EXPR__PEEK isn't getting generated 06:54
moritz_ is happy at the TODO passed in S32-list/map.t in rakudo's list branch 07:09
pmichaud yeah, I pretty much have everything S29 and up working now. 07:10
Tene :D 07:11
pmichaud where "working" means "passing tests", but perhaps not completely efficiently or correctly 07:12
szabgab rakudo: if "ac" eq "de"|"ef" { say 1 } 07:14
p6eval rakudo 272191: ( no output )
szabgab in a junction of strings the " are just too noisy
pmichaud if "ac" eq any(<de ef>) { # maybe }
szabgab is there a way to write that nicer?
rakudo: if "ac" eq any(<de ef>) { say 1 }
p6eval rakudo 272191: ( no output )
szabgab rakudo: if "de" eq any(<de ef>) { say 1 }
p6eval rakudo 272191: OUTPUT«1␤» 07:15
szabgab hmm
sorear to process a NFA with 3000 nodes (termish!), it needs ~5 minutes
pmichaud if "de" eq <de ef>.any { say 1 }
sorear I'm definitely making this lazy
07:16 am0c joined
Su-Shee juppdideldi. good morning everyone! :) 07:19
07:26 JimmyZ left
pmichaud down to 167 failing tests. 07:28
pugssvn r31290 | sorear++ | [dfa/Cursor] Implement the EXPR/termish hack in a more robust place. Implement tiebreaker rules #2, #3, and #4. Add diagnostics for runaway DFA generation. 07:29
07:31 mjk left
pugssvn r31291 | pmichaud++ | [t/spec]: Fudge and correct some tests based on list branch work. 07:34
07:34 pronik` left, wallberg joined
sorear after 25 minutes, statementlist_0 DFA has reached 4650/10000 nodes 07:35
needs more lazy.
one thing I've been thinking about is that the NFA generation *itself* could potentially be lazy 07:38
that means no AUTOLEXgen
07:38 plobsing left
szabgab junctions just drive me crazy 07:46
rakudo: if 1 eq any(<1 2 3>) { say 1 }
p6eval rakudo 272191: OUTPUT«1␤»
szabgab rakudo: if 4 eq any(<1 2 3>) { say 1 }
p6eval rakudo 272191: ( no output )
szabgab rakudo: if 4 ne any(<1 2 3>) { say 1 }
p6eval rakudo 272191: OUTPUT«1␤»
szabgab rakudo: if 1 ne any(<1 2 3>) { say 1 }
p6eval rakudo 272191: ( no output )
pmichaud rakudo currently has ne implemented not according to spec (recent spec change) 07:47
07:47 sdo_ left
szabgab interesting, that's not what I saw in my REPL 07:47
pmichaud in the future, 1 ne any(<1 2 3>) will be equivalent to !(1 eq any<1 2 3>)
rakudo: if !(1 eq any(<1 2 3>)) { say 1 } 07:48
p6eval rakudo 272191: ( no output )
pmichaud yes, I'm not sure what the local rakudo is doing there.
szabgab it seems to do that now in the evalbot
rakudo: if (1 ne any(<1 2 3>)) { say 1 }
p6eval rakudo 272191: ( no output )
pmichaud maybe rakudo's already been fixed :-) 07:49
szabgab rakudo: say 1 ne any(<1 2 3>)
p6eval rakudo 272191: OUTPUT«0␤»
szabgab rakudo: say 4 eq any(<1 2 3>) 07:50
p6eval rakudo 272191: OUTPUT«any(Bool::False)␤»
szabgab rakudo: say !(1 eq any(<1 2 3>))
p6eval rakudo 272191: OUTPUT«0␤»
szabgab I guess that should bee Bool::False ?
pmichaud yes.
szabgab oh I am so proud of myself now, I understood something, :) 07:51
07:51 azawawi joined
azawawi std: say "Hello"; 07:51
p6eval std 31290: OUTPUT«ok 00:01 107m␤» 07:52
azawawi std: use v6; my $x = Mu; $x.say;
p6eval std 31290: OUTPUT«ok 00:01 105m␤»
mathw Morning 07:53
07:55 gfx joined 07:57 azawawi left 08:06 wallberg left
Tene morning! 08:06
mathw Hey Tene 08:08
sorear 1 hour of CPU time and only up to 20,000 nodes. 08:14
in other news, I now have a workable design for lazy NFA building 08:15
pugssvn r31292 | pmichaud++ | More rakudo list-branch related updates. 08:17
ciphertext rakudo: say (^5)[0]; 08:19
p6eval rakudo 272191: OUTPUT«Method 'postcircumfix:<[ ]>' not found for invocant of class 'Range'␤ in main program body at line 1␤»
pmichaud needs test, needs fixing.
ciphertext in the list branch, that returns "maximum recursion depth exceeded" 08:20
pmichaud yes, needs fixing :) 08:21
fixing now.
mathw pmichaud++
08:27 dakkar joined
pmichaud > say (^5)[1,2,0] 08:29
120
pushed as 5202fa7 (into list branch) 08:30
08:30 sorear left 08:31 rob-_- joined, sorear joined
pmichaud ...but apparently it broke a bunch of other stuff. 08:31
(not the range fix, but the other "fix" I threw in there as well) 08:33
Tene yay, breaking!
pmichaud pushed as 50b982a 08:35
okay, time for sleep here 08:36
08:36 am0c left
pugssvn r31293 | sorear++ | [dfa/Cursor] Sketch of a design for the lazy NFA generator 08:47
cosimo AWESOME 08:48
08:48 jhuni left
cosimo just got perl6 to connect to a MySQL database! \o/ 08:48
mberends: FakeDBI works for me, yea!
arnsholt Cool 08:50
08:50 am0c joined
Su-Shee cosimo: shiny. what else did you use? :) 08:53
szabgab rakudo: class Abcd { method y() {} }; Abcd.y(); 08:54
p6eval rakudo 272191: ( no output )
cosimo Su-Shee: zavolaj
08:54 rob-_- left
szabgab rakudo: class Abcd { method y() {} }; say Abcd.y(); 08:54
p6eval rakudo 272191: OUTPUT«Null PMC access in type()␤ in main program body at line 11:/tmp/5iKbK2u6oD␤»
cosimo NativeCall.{pir,pm6} 08:55
and FakeDBI/DBD
szabgab cosimo, you do seriously crazy stuff!
Su-Shee cosimo: hopefully, I'll have some more methods finished by the end of the week. 08:56
or at least one. ;)
cosimo Su-Shee: maybe you meant what methods? just connect for now, and DROP TABLE.. the test scripts basically :)
Su-Shee cosimo: use something else and tell us how it went. :) 08:57
cosimo szabgab: i don't understand
Su-Shee: I was stuck on compiling/installing NativeCall. Now that that is done, I can try something else... 08:58
moritz_ szabgab: that's a known bug (that empty statement list return parrot Null PMC, not Nil)
szabgab cosimo, just appreciation
08:58 rob-_- joined
cosimo szabgab: not doing anything special really, but thanks 08:58
snarkyboojum rakudo: class Abcd { method y() {...} }; say Abcd.y(); 08:59
p6eval rakudo 272191: ( no output )
Su-Shee cosimo: I think, I just threw the pm6 module into @*INC. (~/.perl6/lib) 09:00
moritz_ img267.imageshack.us/img267/2687/booka4.pdf 09:02
that's what pronik++ did to the book... awesome 09:03
snarkyboojum moritz_: yeah - looks v. nice :)
Su-Shee ery clean and readable. 09:04
arnsholt Nice. I like the sans serif for headers and such
Su-Shee uhm, very.
pmichaud list branch down to 146 failing tests 09:05
sorear TimToady: azawawi in #padre wants E-numbers in STD.pm6 error messages... opinions?
moritz_ I think the last consensus was that we'll standardize printf formats for error messages
and make them available in the exception object 09:06
so that one can rely on those for i18n, catching certain expressions etc.
Su-Shee hrgh, I need a rakudo in the office.
sorear he's hacking on an IDE autofixer
snarkyboojum pmichaud++ that's about 400 errors less than several hours ago :O 09:07
arnsholt Su-Shee: I'm spectesting an office Rakudo right now =D
Not sure I'll get to use it though
Su-Shee arnsholt: I need a perl6 in reach, otherwise I don't feel safe. ;) 09:08
arnsholt Yeah, that's more or less my reasoning as well
Su-Shee also, I have to transfer some data from one db into another in 2 weeks and I want to do it with rakudo and fakedbi I've just decided. 09:09
arnsholt Make sure to write it up afterwards =)
Su-Shee I reserved the entire july for "evaluating future frameworks and technologies" :) 09:10
moritz_ wow, seems like a nice job if you can do that :-) 09:11
(that said, currently my whole job consists of evaluating future technologies, and maybe invent some of my own :-)
Su-Shee moritz_: well there is the other side of the medal - the perl 5 code I have to enhance, debug and extend. ;)
09:12 samlh joined
Su-Shee moritz_: no, it's really simple -> company is commited to perl -> someone has to have an eye on perl's future in terms of moose and perl 6 -> I'm pressuring and prodding that we actually do that for real and not just say "yes, let's have a look into new things." 09:12
also this f**** code has to be rewritten entirely and I'm not willing to old school bless 5 my ass off by hand for the next version. 09:13
pmichaud just fixed a bug that recovered another 56 tests, so down to 90ish. 09:14
moritz_ pmichaud: Match.pair uses take $key => $value 09:15
09:15 gfx left
samlh moritz_: re book, the code on page 55 and a couple other pages looks messed up 09:15
moritz_ pmichaud: and the resulting list contains a a Capture of Pair, not a Pair directly
szabgab rakudo: my $x = Mu; $x = "3$x"; say $x.perl; say $x ~~ Mu;
p6eval rakudo 272191: OUTPUT«"3Mu()"␤1␤»
szabgab rakudo: my $x = Mu; $x = "3$x"; say $x.perl; say $x.defined
p6eval rakudo 272191: OUTPUT«"3Mu()"␤1␤»
moritz_ samlh: yes, it still has a few rough spots
pmichaud: is that correct/expected? 09:16
and if yes, how do I lazily return a List of Pair objects?
pmichaud moritz_: which method is this?
moritz_ pmichaud: Match.caps 09:17
pmichaud try to write it without storing in @caps
anytime you store the results in an array, it's non-lazy
(i.e., @caps) 09:18
moritz_ uh right
pmichaud looking.
moritz_ it's not going to be lazy anyway, since I need to sort
so there's no need for gather/take really
pmichaud well, storing in an array also has the effect of itemizing the elements
which means they no longer flatten 09:19
I think X=> isn't quite working right, or that could be shortened 09:20
i.e.,:
if $p.value ~~ Array { ($p.key X=> $_).map( { take $_ } ) } 09:21
arnsholt Has anyone tried to write something along the lines of perl6doc yet?
09:22 lestrrat is now known as lest_away
pmichaud didn't get that quite right 09:22
anyway
moritz_: you probably want some flat() or .flat in there
moritz_ pmichaud: I'm trying a very simple version that uses @caps.push 09:23
mathw 'no need for gather/take' - maybe not for laziness, but it makes for some very nice coding patterns even if you're eager
moritz_ since I need to sort by .from anyway
hm 09:24
sorear arnsholt: there's App::Grok. go ask literal if ey would add a --skip-ambient-code option
moritz_ mathw: agreed
seems to work 09:26
now the only problem left in .caps is that it's returning a Parcel, not a List
but I think that's OK too
we should really test that it returns something Positional 09:27
and leave it to the implementation to return the most-suitable Positional type
pmichaud Parcel is often more correct than List.
(and there's some speculation that Parcel may in fact be ~~ List)
09:30 wallberg joined
arnsholt sorear: Thanks! 09:31
pmichaud what I ended up with:
(self.list.pairs, self.hash.pairs).map( { .value ~~ Array ?? .key X=> .value.list !! $_ }).sort( { .value.from } );
arnsholt Even though a Perl 6 documentation reader written in Perl 5 is a bit sad =) 09:32
pmichaud actually don't need .list on .value there -- we already know it's a list. 09:33
ah, but we might need to de-itemize it
so need .list
09:34 am0c left
pmichaud another better-formatted version: nopaste.snit.ch/21288 09:34
anyway, I'm not sure that X=> is working quite right yet.
and might want a .flat before the .sort 09:35
ciphertext does anybody know what (1,1...5) should return? currently it's an infinite list of 1's. 09:36
mathw arnsholt: then port it
arnsholt: could be fun, and would give Rakudo a good workout
arnsholt mathw: Well, I -am- thinking about it =) 09:38
Is literal == cpan:hinrik? 09:39
09:40 samlh left
Tene ciphertext: S03 doesn't *quite* say what should happen, but almost does. 09:40
09:40 gbacon joined
Tene "For intuited numeric generators that don't involve geometric sign changes, all values are assumed to be monotonically increasing or decreasing, as determined by the (up to) three values used above; if a supplied limit value is on the "wrong" side of the first of those values, Nil is returned, even though the limit value never matches, and never falls between two generated values." 09:40
ciphertext: I'd recomment an addition to the spec after this para: "If $ab == $bc and $ab is not zero, then we deduce an arithmetic progression determined by the function *+$ab. If $ab is zero, and the three values look like numbers, then the function is *+0. If they do not look like numbers, then the function selected is either *.succ or *.pred depending on whether $b cmp $c appears to be Increasing or Decreasing. If cmp returns Same then an ... 09:42
... identity function is assumed."
09:43 tadzik joined
Tene or by the other 09:43
ciphertext: So, it should probably return Nil, according to the spec. 09:44
ciphertext Tene: that's what I was leaning towards. thanks
cognominal rakudo: say gather for 1 { take 1,2,3 } 09:46
p6eval rakudo 272191: OUTPUT«too many positional arguments: 3 passed, 1 expected␤ in 'say' at line 1␤ in 'say' at line 4724:CORE.setting␤ in main program body at line 11:/tmp/81DBCiqTuF␤»
cognominal is there a reason why take accepts only one argument?
09:46 zamolxes left
moritz_ not really 09:48
Tene I expect that the behavior of what that would mean isn't specified.
moritz_ it should take a raw capture, and pass that on
Tene Sounds reasonable.
pugssvn r31294 | sorear++ | [dfa/Cursor] Implement lazy DFA generation. Time to parse a Stash.pm6 from >>1 hour to 6 seconds
sorear one of the most effective optimizations I've ever done.
09:48 zamolxes joined
colomon sorear++ 09:49
pmichaud > say gather for 1 { take (1,2,3) } 09:50
123
moritz_ that's not the same
take (1, 2, 3) vs take 1, 2, 3
pmichaud yes, I know.
take should have the same signature as return 09:51
cognominal should I masak that? I mean, file a bug?
moritz_ yes, please 09:52
pmichaud src/builtins/control.pir, line 220
.param pmc value
should be
.param pmc value :slurpy
and then do the same processing as in &return above 09:53
in many ways, both &return and &take are the same, what differs is the type of exception thrown. 09:54
mathw hah 'should I masak that' :)
moritz_ so... return doesn't treat its argument list lazily? 09:55
pmichaud okay, I'm definitely doing sleep for a bit. bbiaw
moritz_ good night
pmichaud sure, it's lazy
moritz_ $I0 = elements retvals
pmichaud :slurpy just means that all of the arguments are captured into an RPA
it's an RPA, not a Parcel or List 09:56
moritz_ that doesn't look very lazy to me
ok
pmichaud it's saying how many things are in the RPA. That doesn't do any flattening.
for example, if I have
return 3, @a, %h, @b[4,5]
then the number of elements in retvals will be 4
(an Int, an Array, a Hash, and a Parcel) 09:57
moritz_ so it's quite different from the from a slurpy in Perl 6 signature
s
pmichaud yes
it's much more like a slurpy in p5
but no, Parrot doesn't have natively lazy or flattening structures :)
mathw which makes sense really :) 09:58
pmichaud only 90 tests to go
mathw I thought you'd gone to bed, pmichaud
pmichaud whoever fixes S12-introspection/methods.t will gain another 35 tests :)
mathw: I'm having too much fun cleaning up bugs :) 09:59
mathw Fair enough :)
pmichaud and I think this test may be wrong:
S02-builtin_data_types/array_extending.t 19 - join on extended array
(test #19 in array_extending.t) 10:00
if anyone wants to look at that, that'd be great.
okay, I'm gone
later
mathw bye! 10:01
sorear Will 'list' be able to add any entirely new tests? 10:03
moritz_ not sure
pugssvn r31295 | sorear++ | [dfa/Cursor] Fix a little fossillized bug 10:04
moritz_ pmichaud: I think S02-builtin_data_types/array_extending.t 19 - join on extended array looks fine; I don't think our arrays are specced to be sparse 10:14
pugssvn r31296 | moritz++ | [t/spec] be less strict about return types from $/.caps and .chunks 10:16
10:18 gbacon left
Tene how to run spectest in parallel? 10:19
10:20 tadzik left
sorear is reading ECMA-335 "Common language infracstructur" 10:20
Tene ah, TEST_JOBS=4
10:22 tadzik joined
cognominal rakudo: say < .. . > >>~~>> :d 10:23
p6eval rakudo 272191: OUTPUT«11␤» 10:24
cognominal rakudo: say < .. . > ~~ :d
p6eval rakudo 272191: OUTPUT«Method 'd' not found for invocant of class 'Parcel'␤ in 'Enum::ACCEPTS' at line 4577:CORE.setting␤ in 'infix:<~~>' at line 347:CORE.setting␤ in main program body at line 11:/tmp/t5_MpJg3oj␤»
cognominal hum, I thought it would return if either any or all elements matched in the list. 10:25
moritz_ well, that's exactly the problem - any or all? 10:27
cognominal Also I naively expected that, in list context, ~~ with a Positional in the left would act as a grep.
moritz_ which is why we force any() or all() from the user
cognominal rakudo: say all( < .. . > ) ~~ :d 10:28
p6eval rakudo 272191: OUTPUT«all(Bool::True)␤»
10:33 azawawi joined
cognominal that leads to the problem of error messages, an helpful error message in term of ACCEPTS would not so helpful 10:34
ciphertext rakudo: say (*..5).WHAT; 10:35
p6eval rakudo 272191: OUTPUT«Range()␤»
azawawi sorear: ping 10:36
hi moritz_
pugssvn r31297 | sorear++ | [dfa/Cursor] Tiebreak in favor of the _longest_ literal prefix... 10:40
ciphertext rakudo: my @a = 1..5; say @a[0..*];
p6eval rakudo 272191: ( no output )
sorear azawawi: pong 10:41
TimToady: I may have found a bug in STD.pm6... look at mod_internal:oops, it has a literal prefix of length 1, look at mod_internal:sym<:i>, 0, dfa/Cursor tiebreaks in favor of oops... 10:48
sorear -> sleep
10:54 ggoebel joined 11:01 xabbu42 joined 11:05 azert0x joined 11:06 broquaint left 11:09 rgrau_ joined 11:18 rv2733 joined
moritz_ hi azawawi 11:18
11:20 rv2733 left
moritz_ rakudo: my $x = 3; repeat { $x++ } until $x > 5; say $x 11:25
p6eval rakudo 272191: OUTPUT«6␤»
11:33 azawawi left 11:37 TiMBuS joined, envi^home joined 11:43 [Coke] joined 11:44 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42, arthur-- left 11:45 am0c joined 11:55 rob-_- left
takadonet morning all 11:56
11:59 rob-_- joined 12:00 arthur-- joined
szabgab my $fh = open 'README', :r; for $fh.get -> $line { say $line } 12:02
only reads the first line
for lines('README') -> $line { say $line }
worked 12:03
12:03 bluescreen joined
moritz_ for $fh.lines -> ... 12:03
.get is one item only
szabgab what does .get do ?
12:03 bluescreen is now known as Guest37981
szabgab my $fh = open 'README', :r; while (my $line = $fh.get) { say $line } 12:03
also just one line
moritz_ that's dangerous 12:04
because i autochomps
*it
szabgab which one?
moritz_ so if i's an empty line or zero, the loop terminates
szabgab .lines autochomps as I can see 12:05
moritz_ both .get and .lines
szabgab ok
aha
so it won't work as in p5
moritz_ so while (my $line= $fh.get) is not nice
right
12:05 [Coke] left 12:06 dual left
szabgab my $fh = open 'README', :r; while (my $line = $fh.get).defined { say $line } 12:06
worked :)
moritz_ that's so p5
szabgab hides
but that helped understanding
for lines('README') -> $line { say $line } 12:07
looks the best so far
moritz_ aye
12:07 [Coke] joined
Su-Shee hm, say for lines('README')? :) 12:08
moritz_ .say please
szabgab when opening a file do we now check return values? as in if my $fh = open 'README', :r { ... } ?
tadzik btw, is there any neat while(<>) equivalent in Perl 6?
moritz_ szabgab: the paradigm is not to check the return value 12:09
szabgab or we just let it die (or not)
moritz_ szabgab: but just use it, and it will die if used and the open did't work
Su-Shee tadzik: readlines or getlines or something for starters.
moritz_ though it might not yet throw the right exception in rakudo
colomon wait, does that mean open or die doesn't work anymore? 12:15
moritz_ I think it should still work, but it should be redundant 12:18
btw I have a fix for .match with :g and :nth in the list branch 12:19
spectesting now
12:20 rob-_- left
colomon moritz_: I just pushed a fix for that. 12:20
moritz_ too slow
actually I fixed before lunch, and forgot to spectest an push 12:21
colomon doh! sorry about that.
moritz_ my own fault entirely 12:22
I did't about it before, so you couldn't have known 12:23
12:23 skids joined
moritz_ s/missing verb/talk/ :-) 12:24
12:25 rob-_- joined 12:27 mjk joined
colomon gist.github.com/440594 is my list of failing tests (pre-match fix) 12:27
moritz_ colomon: your fix is nicer than mine
colomon seems like main-usage.t (for instance) is probably just lagging behind the master branch?
thank you.
moritz_ when was the last merge from trunk? 12:28
12:28 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
colomon hmmm, just seven hours ago? 12:28
moritz_ then it's something else 12:29
colomon well, bother. so much for that theory.
Can you take a look at that one? I think you know that stuff infinitely better than I do. 12:30
moritz_ will do
12:31 [Coke] left
moritz_ might not be able to do it now, I'm in a meeting 12:31
colomon no worries 12:32
12:32 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
moritz_ seems like a flattening problem in MAIN_HELPER 12:34
12:39 masonkramer left 12:40 masonkramer joined 12:44 clintongormley joined, mjk left
colomon .trans bugs seem to be yet another Range issue. :( 12:48
obviously the Range tests are less than great.
I've already got improved ones I'm not pushing since I think they won't work in master.
moritz_ ponders a github branch of the spectests for list 12:49
12:50 pmurias joined
pmurias hi 12:50
tadzik hi
pmurias tadzik: which city in Poland are you from?
tadzik Warsaw
well, near Warsaw, but you wouldn't probably recognise Izabelin anyway :) 12:51
pmurias studies in Wroclaw
12:52 dlm joined
dlm perl6: 3+3 12:52
p6eval elf 31297, pugs, rakudo 272191: ( no output )
dlm perl6: 3+3.perl
p6eval elf 31297, pugs, rakudo 272191: ( no output )
dlm perl6: 3+3.perl.say
p6eval elf 31297, pugs, rakudo 272191: OUTPUT«3␤»
dlm perl6: (3+3).perl.say
p6eval elf 31297, pugs, rakudo 272191: OUTPUT«6␤»
moritz_ wow, all three agree
dlm perl6: (3 div 3).perl.say 12:53
p6eval rakudo 272191: OUTPUT«1␤»
..pugs: OUTPUT«*** ␤ Unexpected "div"␤ expecting operator or ")"␤ at /tmp/18o_S0iUeC line 1, column 4␤»
..elf 31297: OUTPUT«Undefined subroutine &GLOBAL::infix_div called at (eval 124) line 3.␤ at ./elf_h line 5881␤»
12:53 dual joined
pmurias would it be possible to take elf out of the evalbot? 12:54
dlm perl6: (3..*).perl.say
p6eval elf 31297: OUTPUT«Undefined subroutine &GLOBAL::whatever called at (eval 126) line 3.␤ at ./elf_h line 5881␤» 12:55
..pugs: ( no output )
..rakudo 272191: OUTPUT«3..*␤»
moritz_ pmurias: sure, should be a simple patch
mildew: say (1..3).perl
12:55 sorear left
p6eval mildew: OUTPUT«Can't open perl script "mildew": No such file or directory␤» 12:56
12:56 sorear joined
dlm perl6: sub x(Whatever $x) { say $x.perl } x(*) 12:56
p6eval rakudo 272191: ( no output ) 12:58
..pugs: OUTPUT«\Inf␤»
..elf 31297: OUTPUT«syntax error at (eval 130) line 3, near "(sub x"␤"my" variable $Call::Api can't be in a package at (eval 130) line 3, near "($Call::Api"␤syntax error at (eval 130) line 6, near ")}"␤ at ./elf_h line 5881␤»
colomon rakudo: sub x(Whatever $x) { say $x.perl }; x(*) 12:59
moritz_ I think there's a ticket for that in RT
12:59 perlygatekeeper joined
colomon k. 12:59
p6eval rakudo 272191: OUTPUT«!whatever_dispatch_helper␤»
colomon errr, except it works. :) 13:00
moritz_ rakudo: sub f($x) { say $x.WHAT }; f *
slooow 13:01
p6eval rakudo 272191: OUTPUT«Whatever()␤»
huf
.oO(say $x.WHAT.AGAIN) (i know it's old...)
13:02
cono rakudo: %*VM.perl.say
p6eval rakudo 272191: ( no output ) 13:05
cono %*VM removed? 13:06
moritz_ rakudo: say %*VM<config><revision>
p6eval rakudo 272191: OUTPUT«47640␤» 13:07
cono ah :)
moritz_: in REPL I have: Method 'postcircumfix:<{ }>' not found for invocant of class 'Failure' 13:09
but perl6 -e 'say %*VM<config><revision>' works fine
moritz_ huh
please submit rakudobug
cono ok, thanks ) 13:10
13:10 xabbu42 left, xabbu42 joined
tadzik rakudo: {"hash" => {"three" => "four", "one" => "two"}, "foo" => "bar"}.say 13:11
p6eval rakudo 272191: ( no output )
tadzik oh you. Works for me
moritz_ seems like the load on that server is too high 13:12
cono rakudo: ("hash" => ("three" => "four", "one" => "two"), "foo" => "bar").perl.say
p6eval rakudo 272191: OUTPUT«("hash" => ("three" => "four", "one" => "two"), "foo" => "bar")␤»
moritz_ one of the pugs processes hang 13:13
don't know why the CPU time limit didn't work :(
tadzik rakudo: my $x = 5; $x.say.WHAT
p6eval rakudo 272191: OUTPUT«5␤»
tadzik what does WHAT do in this case? 13:14
moritz_ it returns the type object of the return value of say
in void context
so it has no effect
tadzik mhm
rakudo: my $x = 5; $x.say.WHAT.say
p6eval rakudo 272191: OUTPUT«5␤Bool()␤»
colomon Okay, Range works better, and so trans.t works again (on list) 13:16
moritz_ \o/ 13:17
mathw rakudo: enum Alignment <top middle bottom>; my Alignment $a = Alignment::top; $a.WHAT.say; 13:18
p6eval rakudo 272191: OUTPUT«Type check failed for assignment␤ in '&infix:<=>' at line 1␤ in main program body at line 11:/tmp/CJvSM8MB8Q␤» 13:19
pugssvn r31298 | pmurias++ | [smop] changed %mold to %yeast
13:19 Guest71658 left 13:20 JimmyZ joined 13:22 JimmyZ left
Zapelius any progress on this one ? rt.perl.org/rt3//Public/Bug/Display...l?id=74078 13:22
13:23 JimmyZ joined
colomon rakudo: role Animal { method speak() { say "Blah"; } }; role 13:23
Canine does Animal { method speak() { say "Howl"; }}; class Dog does
Canine { }; Dog.new.speak
p6eval rakudo 272191: OUTPUT«===SORRY!===␤Malformed package declaration at line 11, near ""␤»
colomon rakudo: role work { method x {say 'hello'}}; class me does work {}; me.new.x()
p6eval rakudo 272191: OUTPUT«Could not find sub &say␤ in 'x' at line 11:/tmp/aE2qOewgnJ␤ in main program body at line 11:/tmp/aE2qOewgnJ␤»
Zapelius it's kind of nasty to have lines like << our &bug_sprintf = &sprintf; >> :)
colomon no resolution, anyway. :(
13:28 sawyer_ left 13:34 gbacon joined, sdvsdvsdv joined 13:35 arthur-- left 13:38 cdarroch joined, cdarroch left, cdarroch joined, uniejo left 13:39 sawyer_ joined 13:40 araujo left 13:41 araujo joined 13:42 araujo left 13:57 wallberg left 13:59 Zapelius left 14:09 Guest23195 joined
pmichaud good morning, #perl6 14:13
colomon o/
you're awake already?!
I figured we wouldn't see you for another six hours or so.... 14:14
14:16 rob-_- left
pmichaud I'm awake already. :-) 14:16
I want to finish the branch. :-) 14:17
moritz_ does parallel dispatch and Z=> work in the branch?
pmichaud 10:14 <moritz_> pmichaud: I think S02-builtin_data_types/array_extending.t 19 - join on extended array looks fine; I don't think our arrays are specced to be sparse
I agree, arrays aren't sparse.
So, with
my @a; @a[2] = 'x'; say @a.join(':'); 14:18
14:18 plobsing joined
pmichaud I would expect that to be the same as @a[0] ~ ':' ~ @a[1] ~ ':' ~ @a[2] 14:18
and then question then becomes, what are the values of @a[0] and @a[1]? ;-) 14:19
[particle] Nil
moritz_ Any
pmichaud ...and how does Any stringify?
rakudo; say Any
rakudo: say Any
p6eval rakudo 272191: OUTPUT«Any()␤»
pmichaud so I would expect "Any():Any():x" as the result. 14:20
moritz_ pmichaud: it ~es to '', and .Stres to Any
pmichaud okay.
[particle] rakudo: say Any.Str
p6eval rakudo 272191: OUTPUT«Any()<0x23b4c70>␤»
moritz_ it needs the Stringy vs. Str distinction for type objects
colomon pmichaud: I'm running spectest (well, test_summary.pl) on the latest, unless you or moritz_ have very recent changes
pmichaud colomon: I'm about to do the same. :0
:) 14:21
moritz_ hasn't
since we don't have that distinction yet, I'd be fine with regressing on that test
colomon moritz_++ and I fixed a number of things while you were sleeping. :)
pmichaud colomon: this is what I was hoping for :)
moritz_: I agree, we'll regress.
colomon pmichaud: still plenty to go, of course.
pmichaud I think there were only 90 failing tests when I went to sleep a few hours ago 14:22
pmurias diakopter: hi
colomon pmichaud: that count doesn't actually get entire files that fail, does it? 14:23
pmichaud colomon: well, it does if it can.
i.e., if it doesn't have 'plan *'
colomon I'll have a current error list in a couple of minutes (it's currently testing cotanh.t)
A number of the remaining issues seem to involve junctions. 14:24
pmichaud excellent. I know there's a bug with list assignment that is affecting S06-parameters
yeah, I'm not quite sure what's up with junctions yet
14:25 ash__ joined
pmichaud afk for a short bit 14:26
14:30 macdaddy joined
colomon gist.github.com/440780 14:32
(failures)
14:32 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
colomon 31 by count, but it looks like that includes about seven files without plans. 14:32
[particle] yeah, i count 31 too 14:34
colomon one of those files is range-iterator.t, which is completely 100% wrong in the new system.
just going to disable it.
lue hai
colomon o/ 14:35
moritz_ if it's wrong, delete it
dlm perl6: Nil.say
p6eval pugs: OUTPUT«*** No such subroutine: "&Nil"␤ at /tmp/5nYZ8f6OGd line 1, column 1 - line 2, column 1␤»
..elf 31298: OUTPUT«Can't locate object method "say" via package "Nil" (perhaps you forgot to load "Nil"?) at (eval 122) line 3.␤ at ./elf_h line 5881␤»
..rakudo 272191: OUTPUT«␤»
dlm perl6: Nil().say
p6eval elf 31298: OUTPUT«Undefined subroutine &GLOBAL::circumfix_N_32_41 called at (eval 123) line 3.␤ at ./elf_h line 5881␤»
..pugs: OUTPUT«*** No such subroutine: "&Nil"␤ at /tmp/0k7XPUjT_6 line 1, column 1 - line 2, column 1␤»
..rakudo 272191: OUTPUT«␤»
dlm perl6: say Nil
p6eval pugs: OUTPUT«*** No such subroutine: "&Nil"␤ at /tmp/XMMEZB0Wb6 line 1, column 5 - line 2, column 1␤»
..elf 31298: OUTPUT«Nil␤»
..rakudo 272191: OUTPUT«␤»
dlm perl6: say perl 3 14:36
p6eval elf 31298: OUTPUT«Undefined subroutine &GLOBAL::perl called at (eval 123) line 3.␤ at ./elf_h line 5881␤»
..rakudo 272191: OUTPUT«Could not find sub &perl␤ in main program body at line 11:/tmp/K4EqJ0eh3Y␤»
..pugs: OUTPUT«3␤»
dlm perl6: say 3.perl
p6eval elf 31298, pugs, rakudo 272191: OUTPUT«3␤»
colomon moritz_: well, at some point someone should probably go in and re-write it. but the Spec hasn't finalized yet...
dlm rakudo: say 3 + Nil
p6eval rakudo 272191: OUTPUT«3␤»
dlm rakudo: say(3 + Nil) 14:37
p6eval rakudo 272191: OUTPUT«3␤»
dlm rakudo: say(3 * Nil)
p6eval rakudo 272191: OUTPUT«0␤»
dlm rakudo: say(3 * Nil.Num)
p6eval rakudo 272191: OUTPUT«0␤»
dlm rakudo: say Nil.Num.perl
p6eval rakudo 272191: OUTPUT«0␤»
dlm rakudo: say Nil.WHAT 14:38
p6eval rakudo 272191: OUTPUT«Parcel()␤»
dlm rakudo: say *.WHAT
p6eval rakudo 272191: OUTPUT«Whatever()␤»
14:42 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
moritz_ $ ./perl6 -e 'sub x { my @a = 4, 5; return @a, 6 }; my (@b, $x) = x(); say @b.perl' 14:42
[[4, 5, 6]]
I think it's not a new bug 14:43
pmichaud if it's not a new bug, that makes me feel better then :) 14:44
(because it should be an easier fix)
moritz_ I think I know what's wrong with MAIN/USAGE
it assumes that %hash isn't flattening in return() argument lists 14:45
14:47 thebird joined, thebird left
moritz_ push fixed 14:48
one failing test remaining in there 14:49
uhm
that might be failing due to debug output to STDERR, which Test::Util captures :-) 14:50
bingo 14:52
14:52 thebird joined
moritz_ all tests pass 14:52
without further changes
so my commit message was a lie
14:54 plobsing left
moritz_ so, 7 failures down 14:54
colomon \o/
moritz_ cross.t seems a junction infinite recursion 14:56
pmichaud
.oO( cross is using junctions? )
14:57
moritz_ the tests
14:57 ash__ left
moritz_ ok 15 - all @list1 X<= @list2 14:57
is the one before the loop
pmichaud I'm looking at junctions now.
moritz_ the test that loops is 14:58
ok ( ? [|] 1, 2 X<= 0, 3), '[|] @l1 X<= @l2';
colomon ambitious test. :) 15:00
cono anyone here booked my one hotel galilei for yapsi already?
moritz_ precdence issue?
> say ? [|] (1, 2 X<= 0, 3).perl
colomon moritz_: seems unlikely, grammar hasn't changed, has it?
moritz_ 1
colomon: I mean in the test... even then it still exhibits a rakudo bug wrt autothreading
> [|] 1 15:01
1
> [|] 1, 2
maximum recursion depth exceeded
colomon moritz_++
15:02 thebird left
colomon rakudo: say [|] 1, 2 15:02
15:02 thebird joined
p6eval rakudo 272191: OUTPUT«any(1, 2)␤» 15:02
pmichaud that's either a reduce or a junction bug.
(unless we short-circuit [|] to any)
colomon reduce seems to be working in general and junctions have known issues... ;) 15:03
pmichaud sure, I agree
just didn't want the other path to be unobserved :)
colomon indeed.
let me dump what I'm looking at here, then I'll take a look at that.
called from Sub '!postcircumfix:<[ ]>' pc 11868 (src/gen/RoleToInstanceApplier.pir:142)
called from Sub 'postcircumfix:<[ ]>' pc 404238 (src/gen/core.pir:35506) (CORE.setting:1074)
pmichaud ah 15:04
anytime postcircumfixes are involved, it often means that it's being called on something that isn't p6opaque
colomon is the infinite recursion I'm seeing, doing @x.unshift(2), where my Int @x.
(in a typed arrays.t test)
moritz_ and S03-junctions/misc.t aborts with "Method 'map' not found for invocant of class 'ResizablePMCArray'"
pmichaud in this case, I think the problem is that postcircumfix:<[ ]> is being called on the $.eigenstates attribute of the junction, which is a RPA 15:05
("this case" == both what colomon++ and moritz++ observed)
I suppose the easiest thing to do would be to promote $.eigenstates to a Parcel.
that would make.... a lot of sense. 15:06
in src/builtins/Junction.pir, line 77 15:07
add
eigenstates = '&infix:<,>'(eigenstates :flat)
right before the setattribute 15:08
and then see if that fixes anything
moritz_ would kinda expect the fix to go into the uniq_helper 15:09
pmichaud sometimes uniq_helper isn't called.
see the 'if' condition a few lines earlier.
moritz_ right 15:10
moritz_ tries
pmichaud I wonder how it is that method 'new' knows that eigenstates is already an RPA, though. 15:11
that seems bogus. 15:12
oh!
it is bogus.
colomon fail.
15:12 ash__ joined
colomon flattened parameters must be a hash or array 15:12
current instr.: 'perl6;Junction;new' pc 17316 (src/builtins/Exception.pir:93)
called from Sub 'infix:<^>' pc 348420 (src/gen/core.pir:0) (CORE.setting:392)
pmichaud right
that whole Junction construction logic needs a serious rework. 15:13
colomon that's running t/spec/S03-junctions/misc.t
pmichaud it makes quite a few bad assumptions.
for one, it prevents Junction.new() from being called with multiple positional arguments
moritz_ tests if adding :slurpy to eigenstates helps 15:15
pmichaud that will just cause other issues, alas
because then the eigenstates will end up being an array of (unflattened) lists
it's a non-trivial change to fix this 15:16
I'll work on Junctions real quick -- I can get to the list assignment bug in a bit
15:17 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
pmichaud tries running his fixes 15:26
15:28 constant left 15:29 pmurias left
pmichaud aha 15:31
with that fix, S03-junctions/misc.t passes
colomon \o/ 15:32
pmichaud pushed as 5e523b1
15:32 constant joined, constant left, constant joined
colomon errr... why does yapc::na have a kilt vendor coming? 15:35
I mean, I've nothing against it, but I expected that at the Highland games I'm going to on Saturday, not the Perl conference next week. :) 15:36
pmichaud there are quite a few attendees who like to wear kilts :)
[particle] utilikilt pulled out 15:37
or we could have had seattle kilts at yapc
colomon my wife just informed me that if I'm going to get a kilt, it has to be a real one, no utilikilts allowed.
pmichaud yapc2010.com/yn2010/wiki?node=Utilikilts
(to judge the level of interest :) 15:38
15:41 Ross joined 15:43 justatheory joined 15:44 PacoLinux left
TimToady do we need a .lazypush, or is .push already lazy? 15:45
15:45 PacoLinux joined
pmichaud it's lazy. 15:45
15:45 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
pmichaud in the Rakudo implementation, it's lazy. 15:45
(the new one)
so is splice :-)
(splice is lazy after $offset or $offset+$size elements) 15:46
15:48 Gothmog_ left
colomon can we do @a, @b if @a and @b are lazy? 15:48
pmichaud you mean make a parcel of @a and @b?
TimToady okay, so we can initialize the lazy part of any array with: my @x.push: 1...*
colomon pmichaud: a flat parcel, I mean.
pmichaud well, I'm testing lazy push now and it doesn't seem to be working.
It's supposed to be lazy, at any rate. I don't see any blockers to that. 15:49
colomon: sure
TimToady: yes, that makes sense to me 15:50
oh, wait
we might want a lazy push
right now @a.push(@b) eagerly evaluates @b
because we don't want subsequent changes to @b to show up in @a 15:51
I suppose we could try to make @a.push(lazy @b) work somehow
TimToady but you can't overcome the eagerness with @a.push(lazy @b), hence the need for a different method
I don't see how it can work 15:52
colomon if we just pushed the iterator, wouldn't it automatically not reflect subsequent changes to @b?
pmichaud okay
colomon: it still gets eagerly evaluated by the .push
colomon oh, not if we are iterating an Array @b.
15:52 literal left
pmichaud TimToady: yeah, I can see why it won't work. 15:53
TimToady @a.queue(@b)
15:53 Gothmog_ joined
TimToady @a.cue(@b) 15:53
pmichaud anyway, the splicing is non-lazy for the same reason.
moritz_ @a <<== @b
pmichaud my *Lists* have lazy push and splice, but *Array* does not.
TimToady @a.push vs @a.lean :) 15:54
pmichaud my @a := List.new.push(1...*); # initializes lazy part
TimToady perhaps push should always imply eager, and we use something else when we want to be less pushy
$x.queue $x.spec $x.add $x.connect $x.extend ... 15:55
p5 programmers will certainly expect .push to be eager 15:56
$x.more
$x.cont 15:57
pmichaud .lazypush really isn't so bad :)
it's at least explicit :)
colomon @a ,= @b
TimToady .feed 15:58
Juerd push :lazy not an option?
TimToady my @a <== 1...* 15:59
15:59 araujo joined
TimToady possibly with .feed underneath 15:59
@a.feed: 1..* 16:00
seems to read pretty well, and feeds are known to be lazy/async-ish 16:01
16:01 JimmyZ left
pmichaud Something gives me a twinge about .feed, but I'm okay with it 16:02
PerlJam $news.feed 16:03
16:03 sdvsdvsdv left
TimToady @a.fed: 1...* 16:03
makes it somewhat subjunctive 16:04
PerlJam TimToady: hey, can you answer a language question for me? (or at least take a stab at it)
TimToady sure, it just won't be correct
16:05 am0c left
PerlJam TimToady: maybe it's not so much a language question ... but you know how some people say "deaf" when they're trying to pronounce the word "death" ... I was wondering if there is an equivalent of "mispronunciation but the message comes across anyway" in perl 16:06
TimToady
.oO(twoo wuv...)
16:07
most of our dwimmery is semantic, such as Cool 16:08
and, of course, a written language doesn't have phonology
about the closest we come is gently correcting a P5 accent 16:09
std: my @foo; say $foo[1]
p6eval std 31298: OUTPUT«===SORRY!===␤Variable $foo is not predeclared (did you mean @foo?) at /tmp/Zs6bpBHkde line 1:␤------> my @foo; say $foo⏏[1]␤Check failed␤FAILED 00:01 108m␤»
TimToady but we don't try to keep running 16:10
PerlJam ah. okay.
16:10 azert0x left
TimToady std: /[a-z]/ 16:10
p6eval std 31298: OUTPUT«===SORRY!===␤Invalid regex metacharacter (must be quoted to match literally) at /tmp/ZjugtU1J4O line 1:␤------> /[a-⏏z]/␤Potential difficulties:␤ [a-z] appears to be an old-school character class; please use <[a..z]> if you mean a character
..cla…
TimToady so it's doing accent guessing, but pragmatically speaking that results in diagnostics rather than execution 16:11
PerlJam right. 16:12
TimToady std: say Int.new(42)
p6eval std 31298: OUTPUT«ok 00:01 104m␤»
TimToady std: say new Int(42)
p6eval std 31298: OUTPUT«===SORRY!===␤Unsupported use of C++ constructor syntax; in Perl 6 please use method call syntax at /tmp/lBZtNvyiN8 line 1:␤------> say new Int⏏(42)␤Parse failed␤FAILED 00:01 104m␤»
TimToady std: say new Int: 42
p6eval std 31298: OUTPUT«ok 00:01 106m␤» 16:13
PerlJam I was thinking this morning that Perl is big enough that there has to be some instances where people have code that accidentally executes properly even though they didn't say the right words.
but I guess that's how @foo[1] worked in Perl 5 too
er, works :) 16:14
TimToady I suppose if we detect that an input file is in Latin-1 instead of UTF-8 and autotranslate, that's like pervasively compensating for an accent 16:15
accent compensation requires the detection of consistent inconsistency 16:16
PerlJam in a way perhaps I'm just describing a specific form of dwimmery
16:17 meppl joined 16:18 sdvsdvsdv joined, literal joined
lue
.oO(now, what needs doing in the rakudo world today?)
16:19
16:19 hercynium left, am0c joined 16:21 pmurias joined 16:23 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42 16:25 pyrimidine joined 16:27 gbacon left
tadzik What is the reason of rakudo/parrot slowness today? Is this the side-effect of being in-development? I've seen the post on perl6-users ML complaining about that, but just adding numbers 1..1000 takes almost 20 seconds in Perl6 (about 0 on Perl 5) 16:27
Tene tadzik: Pretty much. The focus has been on completeness and correctness so far, with very little focus on performance. 16:28
jnthn made it home o/ 16:29
Tene yay!
colomon \o/
lue :D 16:30
tadzik Tene: I see. But isn't it like rakudo is generating PIR for parrot and then parrot runs this low-level stuff itself, or does it work somewhat another way? 16:31
jnthn I loved Kiev, but I must say the temperature here in Sweden is rather more to my liking.
pmichaud tadzik: it's a large number of reasons for the slowness. We have a lot of additional type checking and dispatch overhead that takes place that P5 doesn't have to contend with. 16:32
Also, P5 has had many years of optimization, we're really just starting.
yes, rakudo generates PIR for Parrot, but it's an awful lot of PIR at the moment.
tadzik I see
pmichaud lue: I think we're mostly working on getting the list branch merged today. I think we're down to ~30 failing tests. 16:33
jnthn: \o/ welcome home
jnthn pmichaud: Thanks :-)
lue ah 16:34
jnthn pmichaud: Down to 30?! 16:35
pmichaud++ # and probably some others ++ too :-) 16:36
pmichaud ah, but I just broke something.
so back to 251 failing tests 16:37
(most of that is from an aborted test file)
jnthn: I know we're sub-100.
what is going to be fun (and what I'm really looking forward to) is reviewing and closing rt tickets and todo/skipped tests 16:38
I'll probably spend a day on that before I tackle closures. Also gives the compiler a day to settle down for tomorrow's release.
(also going to write a blog post)
jnthn pmichaud: OK, good plan. 16:39
pmichaud if I have
($a, $b, $c) = (1, 2) 16:40
what should happen with $c ?
more generally, if I have
($a, $b, $c) = @x;
what should happen if @x has less than three elements?
16:41 pmurias left
lue I think, for my ($a, $b $c) = (1,2), $c would be left alone, as if you did my $c [don't know what the spec says though] 16:41
TimToady same as $c = ()
jnthn guessed Nil
pmichaud okay, no warning or anything like that? 16:42
jnthn iirc, Nil is now defined as () ?
TimToady yes
pmichaud jnthn: my ($a, $, $b) ends up generating a parcel with ($a, *, $b) ?? 16:43
jnthn pmichaud: Correct. 16:45
pmichaud that seems wrongish
I would've expected an anonymous scalar variable 16:46
jnthn pmichaud: Well, assigning to * throws away the value.
pmichaud so would assigning to an anonymous scalar container :-)
jnthn I think there may be another reason it's *...thinking...
TimToady my $x := my ($a, $, $b)[1]
pmichaud I'd also be concerned ... right
(my ($a, $, $b))[1] # should be Any or Mu, not * 16:47
also, having my ($a, @, $b) would seem to dtwt 16:48
jnthn pmichaud: Oooh, I know why.
TimToady I was wondering earlier today whether vars should be born Cool instead of Any
jnthn pmichaud: We used to emit an anonymous scalar.
Then Parrot started whining "oh ffs you have two .lex '$', $Pxxx".
pmichaud oh, then it's not anonymous. :) 16:49
jnthn Yeah
pmichaud I'm thinking we should create the viviself portion and not bind it to a name.
but otherwise it acts like a normal scalar container.
jnthn Looking at it, I think I shoved * in to get us able to actually build against Parrot again.
Line 154 onwards, src/Perl6/Compiler/Signature.pm
You should be able to change it there and have it work out.
pmichaud okay. 16:50
colomon gist.github.com/440780 -- updated list branch error list
jnthn I'm not sure if I had other reasons for *
pmichaud I'll leave it on the todo list... I have to get whatever assignment working anyway.
jnthn But I suspect it was "oh noes, Parrot just broke Rakudo again" at a point where I didn't have a lot of time on my hands and we needed a fix.
pmichaud ooc, does * always act like an item? 16:51
TimToady it seems the "everything must have a name" meme is rather entrenched into Parrot at various levels
pmichaud (sounds like the answer ought to be "no", since * is "whatever")
jnthn TimToady: When I first re-did a bunch of the object system I had it divorced from the class registry quite nicely. 16:52
TimToady: Then allison went and reassociated them again. :-|
Yet another of the design decisions I made right and was overruled on.
</hubris> 16:53
(and a little irritation too...)
TimToady "namespaces" == "packages" is the same kind of NameThink
jnthn Yeah, that's been deeper baked in.
pmichaud not to mention the fact that the PMC type is "NameSpace". Why the capital 'S'? 16:54
I guess it's "name space", but I never see it written that way.
"namespace" has no space. :)
TimToady parrot would be in much better shape if they adopted the model that everything is born anonymous, and names are always created by poking a ref into a random namespace (and I *don't* mean package) 16:56
but they made the P5 mistake, only harder
16:57 supernovus joined
jnthn TimToady: Right, which is what I tried to do with classes. 16:57
17:03 gbacon joined 17:06 thebird left 17:09 TiMBuS left 17:13 supernovus left 17:17 dakkar left 17:19 frooh left
[particle] the parrot team hates the NameSpace design and implementation 17:19
does that make anyone feel any better? 17:20
lue (hrm, where are custom circumfix operators defined?) 17:21
17:21 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
lue as in, the ability to make them. 17:21
pmichaud jnthn: ping 17:22
jnthn pmichaud: pong
moritz_ that was a decent round trip time 17:23
pmichaud is there a way from PIR that I can easily determine if a potential call will find a matching multimethod?
jnthn pmichaud: .cando
pmichaud ....on a foreign object. :-)
moritz_ implemented during that awesome hackathin
jnthn pmichaud: oh tssssk
pmichaud: Well, that's rather harder. 17:24
pmichaud let me rephrase the question
jnthn pmichaud: I think we cna though.
pmichaud I have a foreign object, like a hash.
jnthn pmichaud: Can you give me a step back on what you're wanting to do?
17:24 envi^home left
pmichaud I want to know if any of the methods defined in Associative will bind to the argument I currently have. 17:24
(if not, then I'm going to do something else) 17:25
jnthn pmichaud: But didn't you say all of Associative is in the setting now?
pmichaud: Wait, what's foreign?
pmichaud like a Parrot Hash
jnthn pmichaud: The multisub?
Or the arguments?
pmichaud the invocant
jnthn Ah.
Let me think a moment, I think the answer is "yes, there's a way" 17:26
pmichaud let me phrase it a different way, then
can I .cando on Associative (from PIR)?
jnthn .cando is a method on a Routine, not a class/role.
pmichaud okay
can I look up the multisub from Associative and use .cando on it? 17:27
jnthn So I guess there's a particular method?
Yes.
pmichaud perfect.
$P0 = get_hll_global ['Associative[::T]'], 'postcircumfix:<{ }>'
$I0 = $P0.cando(args)
jnthn If you put it in the namespace, yes
*but* :-(
pmichaud it's in the namespace
(we use this now.)
jnthn We have a problem at the moment.
(more)
.cando currently doesn't work on Multi, even though Multi ~~ Routine and it's defined in Routine. :-( 17:28
The reason is that we type-map Multi to Perl6MultiSub
But at the moment, methods added during augment aren't getting shoved thorugh to the Parrot namespace for the mapped PMC.
pmichaud that's actually okay 17:29
there's no augmenting taking place here.
jnthn There is. :-(
We augment Routine { method cando ... }
pmichaud ohhhhh
jnthn Yeah. :-|
pmichaud can I do a method lookup on Associative?
jnthn It won't do quite what you want. 17:30
pmichaud okay.
jnthn If you find_method on a role, then it needs to pun the role.
So it hands back the "punner"
pmichaud isn't there something that does that already?
jnthn That's for Parrot's find_method
You can of course do .^methods on the role.
And pull it out of there. 17:31
pmichaud that's a hash?
rakudo: say Associative.^methods
p6eval rakudo 272191: OUTPUT«postcircumfix:<{ }>of␤»
jnthn A list iirc
(per spec)
lue is on a quest to find the code that allows custom/overloading operators
pmichaud rakudo: say Associative.^methods.perl
p6eval rakudo 272191: OUTPUT«Method 'perl' not found for invocant of class 'ResizablePMCArray'␤ in main program body at line 11:/tmp/Z2O9_kkFKv␤»
jnthn Eww.
pmichaud yeah, list.
jnthn But yes, it's a list. 17:32
pmichaud needs to become a Parcel.
anyway
so, I can't really use .^methods to find it by name
jnthn You can, you just gotta go through a list.
Which is hardly efficient. :-(
I do wonder if we should spec a :name argument to .^methods
pmichaud it's okay, this is for foreign objects
jnthn Like we have for .WALK 17:33
pmichaud it's okay if it's not terribly efficient. What we're describing will undoubtedly end up being more efficient than what we have now.
and foreign objects "you get what you ask for"
also, once I find it, I could probably cache the result
jnthn True.
Whatever you do, please don't go looking at the Parrot class though.
pmichaud I try to never do that. 17:34
jnthn OK, good. :-)
pmichaud this refactor is systematically eliminating our use and reliance on Parrot objects, except for RPA
jnthn I'm really trying to ween us off that.
pmichaud (we won't complete it anytime soon, but we're a lot closer)
okay, I'm being called to lunch
jnthn I want to swap out pretty much all of the meta-model internals in the not too distant future, and having everything using the metamodel rather than poking into guts is a big help. :-) 17:35
pmichaud so, answer is to use Associative.^methods to find the postcircumfix method, cache that, and then use .cando on the method to see if it will bind
jnthn pmichaud: OK - catch me later if you need some more hints.
pmichaud I like that answer a lot better than what we have now.
jnthn pmichaud: Yes, correct. Let me see if I can fix up .cando so it actually works on Multi.
pmichaud no rush.. right now I just need something that works.
jnthn pmichaud: Well, it won't quite work without a hack at the moment. :-/
e.g. you can $P0 = find_method type_object_of_multi, 'cando' of course. 17:36
We should probably just instantiate Multi rather than Perl6MultiSub though.
pmichaud ohhhh!
I have an easier answer
muuuuch easier
the methods defined in associative are finite and known 17:37
there's only, like, two
so I can just do my own checking of args via .does
(or .ACCEPTS)
I think the only one I need to check is .does(Positional)
I'll do that. 17:38
jnthn OK. :-) 17:39
(I'm gonna try and fix .cando on multis anyway now though.)
lue I think my finding skills are broken :/ 17:40
17:41 justatheory left
arnsholt I'm thinking of writing a fuzzer (or rather, fuzzer generator) for Perl 6 grammars, but would like to solicit some opinions on how to approach the problem 17:41
17:41 felipe left
diakopter arnsholt: sure 17:41
arnsholt Up front I can see two possible approaches to do this: 17:42
1) Write my own grammar and use that. Pro: low entry cost, easy to keep track of (at first at least); Con: I'd essentially be writing yet another Perl 6 grammar
2) Use Perl6::Grammar (or possibly the Grammar grammar from NQP) with custom action methods. Pro: Excellent coverage; Con: Higher entry cost, harder to get a handle on 17:43
diakopter do you want a false negative fuzzer of a false positive fuzzer
(-generator)
arnsholt Good question, actually 17:44
Both would certainly be useful 17:45
diakopter one that creates a tool for testing the backend (to see whether the grammar is actually correct in the first place), or ...
one that assumes the grammar is correct and tries to break the parser that was generated from the grammar to see if it will accept invalid inputs or otherwise give an unexpected response from a slightly-invalid/degenerate input 17:46
arnsholt The second is what gave me the idea in the first place
diakopter yeah, that's the one crackers use 17:47
17:47 justatheory_ joined
diakopter but one that tests for input-permutation coverage is also quite useful 17:47
arnsholt Indeed 17:48
At any rate, my question is: which of the two approaches looks the most sensible to you guys? 17:49
(A third option would be if there was information about the grammar's rules available at runtime, but I don't think that's the case)
diakopter I wrote one (of the first type above) that does a breadth-first search (shortest/emptiest alternations first) of the grammar, but also exploring all the edge cases of repetitions.
... with a limit on left recursion 17:50
17:50 rv2733 joined
arnsholt Sounds sensible 17:51
lue Can someone help me find where the code that allows custom operators (infix, circumfix, etc.) is? I think I'm not grepping the right search terms... 17:52
ash__ lue: what do you mean? like how they are defined? 17:54
17:55 justatheory_ left
lue yes. Where does this work: multi sub infix:<+> . . . 17:55
where *is the code that makes* this work, sorry 17:56
17:56 Guest37981 left, xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
diakopter arnsholt: I'd use the 2nd approach, but using STD and viv 17:56
17:59 pronik` joined, jferrero joined
ash__ lue: well i know its based off of the sub name all ops are really just subs in perl 6 17:59
sub infix:<+> can be called by saying '4 + 3' or infix:<+>(4, 3) 18:00
rakudo: say infix:<+>(4, 3)
p6eval rakudo 272191: OUTPUT«7␤»
ash__ i think it probably is expanding, for instance, infix ops into the full sub name "infix:<sym>" 18:01
arnsholt diakopter: STD and viv is certainly an even better idea. Thanks! 18:02
lue I actually looked into pmc/Perl6MultiSub.pmc , and that didn't help :D It's hard to find where the magic happens.
arnsholt lue: The magic is in Perl6::Actions, IIRC
Custom operators are recognised at parse time, and code is generated to handle it 18:03
jnthn lue: It'll be in the actions.pm I think.
lue: Unless you mean adding new custom operators, in which case that's in grammar.pm, somewhere near the bottom iirc. 18:04
lue I looked in both those files (using grep). Hm, let's check again.
(I'm trying to get circumfixes working, IIUC)
18:07 pronik` is now known as pronik
jnthn lue: Well, you'll only find it if you grep for the right thing ;-) 18:07
lue :D Apparently, I've been grepping for 'operators' when grepping 'ops' would've gotten me to the bottom of Grammar.pm :D
jnthn Oh, you just found it 18:08
I was gonna tell you to grep for gen_op_if_needed ;-)
lue Now I can start from there and find out why circumfix is the most miserable failure of the entire family :) 18:10
18:10 am0c left
lue rakudo: multi sub circumfix:<[ ]>(Complex $a) { $a.re;}; say [3]; say [1+2i]; 18:11
p6eval rakudo 272191: OUTPUT«No applicable candidates found to dispatch to for 'circumfix:<[ ]>'. Available candidates are:␤:(Complex $a)␤␤ in main program body at line 11:/tmp/lSgPvQQazs␤»
18:11 Guest37981 joined
lue rakudo: say [3]; 18:12
p6eval rakudo 272191: OUTPUT«3␤»
lue now THAT is interesting...
PerlJam what is? 18:13
18:13 patrickas joined
pmichaud currently circumfix:<[ ]> is defined in the builtins, so it can't be multied/overloaded yet 18:14
lue that fact that redefing [ ] thru multi sub completely wipes its original functionality
18:14 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
lue is it because it's in builtins, or because the custom circumfix code just doesn't work? 18:14
pmichaud builtins 18:15
jnthn I think it's a Rakudo bug.
pmichaud see if you can define a different circumfix
18:15 tadzik left
jnthn I know that's NYI in terms of the parsing side of things. :-) 18:15
PerlJam rakudo: multi sub circumfix:<[ ]>(Complex $a) { "woot" } ; say [2i]
p6eval rakudo 272191: OUTPUT«woot␤»
PerlJam looks like it works modulo the multi issue 18:16
jnthn PerlJam: Yeah, the multi issue is the bug I ment.
*mant
pmichaud and circumfix:<[ ]> is pretty fundamental -- not sure that we can easily move it into setting just yet.
jnthn oh ffs, I'm off to buy the pizza I very obviously need.
*meant
:-)
lue Meponders... could the space in, say, circumfix:<` `> be the issue? 18:17
pmichaud shouldn't be.
18:17 alester joined
lue After all, it *is* wrong for other types of operators. Hmm 18:17
pmichaud rakudo: multi sub circumfix:<` `>(Complex $a) { "xyz" }; say `2i` 18:18
p6eval rakudo 272191: OUTPUT«error:imcc:syntax error, unexpected '\n'␤ in file 'EVAL_1' line 866166138␤===SORRY!===␤syntax error ... somewhere␤»
pmichaud that looks like a rakudo bug
like it's not recognizing the need to create a new circumfix: token.
jnthn pmichaud: NYI...
pmichaud: It's still in the ROADMAP
lue: It may just be a case of some hacking in that gen_op_if_needed method. 18:19
lue That's what I'm looking at. The one time $opname is used is to generate a piece of the $parse variable, which is where the spaces came into mind. 18:20
jnthn: pizza travels fast in your neck of the woods, no? :)
pmichaud
.oO( wouldn't it be jnthn++ that travelled fast? )
lue Depends. It could be he stays in place and the rest of the universe moves around him :) 18:21
PerlJam or ... he could have invented a time machine!
18:21 sunnavy joined
lue I would have grown one ;) 18:21
jnthn pmichaud: Actually, jnthn just forgets where he puts his keys fast :-) 18:22
Found 'em...really going now. :-)
PerlJam jnthn++ (fail fast) 18:23
:-)
lue rakudo: multi sub circumfix:<``>($a) { say $a;} ` 3 `
p6eval rakudo 272191: OUTPUT«error:imcc:syntax error, unexpected '\n'␤ in file 'EVAL_1' line 58␤===SORRY!===␤syntax error ... somewhere␤»
lue rakudo: multi sub circumfix:<``>($a) { say $a;}; ` 3 `
p6eval rakudo 272191: OUTPUT«error:imcc:syntax error, unexpected '\n'␤ in file 'EVAL_1' line 58␤===SORRY!===␤syntax error ... somewhere␤»
lue I think the space between the start and end is required. If that's the case, there's obviously a different problem. 18:24
PerlJam interesting ... I just ran my perl6 binary from inside src/builtins and it said: Null PMC access in find_method('new_class') 18:25
lue OH! Should there be a default precedence for circumfix?
PerlJam gist.github.com/441074 18:26
seems to work fine in other dirs.
pmichaud for aggregates, is there a way to retrieve an element from the aggregate by key/index that isn't postcircumfix:<{ }> ?
and if not, could we define one?
PerlJam pmichaud: you mean like an alternate method name?
pmichaud PerlJam: yes, exactly. 18:27
18:27 dju left
lue what would the default precedence for circumfix be? /me gets exicted and hopes the spec is willing to part with info. 18:27
pmichaud but that only handles single item lookups
18:27 dju joined
pmichaud lue: I'd expect it to be term precedence, myself. 18:27
it would be really really helpful if the postcircumfix operators could be defined in terms of a simpler, non-postcircumfix method 18:28
(a class could still overload postcircumfix if it wants to do something special)
lue well, because $prec appears to be unset for circumfix
PerlJam what would be the damage in using .index() for that purpose on aggregates? 18:29
lue i.e if you define an infix, then $prec := '%additive';
pmichaud is there already a .index method somewhere? Would we be punning?
lue: '%term', I think.
lue OK. trying...
pmichaud ah, Rakudo doesn't define a %term 18:30
so that's not it.
doesn't appear to be an \.index already. 18:31
18:31 xabbu42 left
lue ah! (^C ^C) 18:31
18:31 xabbu42 joined
pmichaud maybe .at 18:32
maybe .elem($key)
PerlJam @foo.at(5), %bar.at('key') ?
pmichaud PerlJam: yeah, something like that. 18:33
PerlJam I guess @foo.at('blah') too?
lue is looking at list of operators defined @ top of Grammar.pm
pmichaud .elem is bad, because .elems doesn't give back a list of .elem
it's okay for it to be de-huffman, as it won't be commonly used 18:34
[particle] i think that means it's properly huffmanized if it's long
PerlJam @foo.at('blah') doesn't jibe with being "simpler" perhaps 18:35
@foo.thing_at_position(5); # :-)
pmichaud ah, that's a good point, I also need to distinguish positional and associative 18:36
(for match objects and captures)
so it can't be the same for both.
18:36 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
PerlJam .at_index() .at_key() 18:37
pmichaud at_position, since it's "Positional" 18:38
but I could go with index
PerlJam index feels PDLy
pmichaud I'll go with those for now.
it simplifies a ton of stuff.
lue it's not a method postfix, is it?
pmichaud might even enable us to get rid of the "!postcircumfix" helper methods.
lue: you mean circumfix, or what I'm talking about? 18:39
maybe .at_pos and .at_key (so they're the same length :-)
lue circumfix. 18:40
pmichaud looking
lue term does seem the best candidate, but that (obviously) won't work /me scratches imaginary Unix Beard
pmichaud lue: use %term and add it to Perl6::Grammar
that will be close to STD.pm6
PerlJam .at_pos & .at_key definitely then :) 18:41
pmichaud Just before the line that reads
Perl6::Grammar.O(':prec<y=>, :assoc<unary>', '%methodcall');
add
Perl6::Grammar.O(':prec<z=>', '%term');
lue arigato.
pmichaud then you can use that as the precedence.
oh, I can't get rid of the helpers entirely 18:42
but it does simplify them a lot
okay
PerlJam pmichaud: the order of those declarations doesn't matter does it? (precedence)
pmichaud PerlJam: only for code readability
operationally, no, it doesn't matter
PerlJam okay.
pmichaud it was just the easy way to say where it should be located :)
(and also show the pattern) 18:43
small break, bbiab
18:44 Mowah left, xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42 18:50 patrickas left 18:51 [Coke] joined 18:52 lue left 18:55 lue joined, ab5tract joined
lue > multi sub circumfix:<☃ ☄>($a) { Regex.new(<$a>); }; say ("3" ~ ☃<digit>+☄) 18:55
Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 1 18:56
> multi sub circumfix:<Ω Ω>($a) { say $a;}; Ω3Ω
Confused at line 1, near "\x{ce}\x{a9}3\x{ce}\x{a9}\n"
now the problem is what the default precedence should be... (it seems)
afk a bit for nomming, and then Part II in this problem. 18:58
jnthn back 19:00
Tene hallo, jnthn_pizza 19:01
jnthn omnomnom
PerlJam I could use some more food myself. My lunch wasn't quite enough
19:02 bjarneh joined, foodoo joined
jnthn ... 19:02
:-)
19:04 cono left
pmichaud I -definitely- like this new factoring for associative/positional better 19:05
Very clean.
also, the two follow the same pattern.
jnthn \o/ 19:06
pmichaud now if only the tests will pass... :-P
19:06 cono joined 19:10 Mowah joined 19:11 hercynium joined, masak joined
masak ahoy, #perl6! 19:11
pmichaud is %hash<> really a zen slice? 19:12
I would think it'd be more like %hash{()}
which isn't a zen slize
foodoo perl6: say hello masak
pmichaud *slice
p6eval pugs: OUTPUT«*** No such subroutine: "&hello"␤ at /tmp/80gUh7q3kj line 1, column 5 - line 2, column 1␤»
..elf 31298: OUTPUT«Undefined subroutine &GLOBAL::masak called at (eval 124) line 3.␤ at ./elf_h line 5881␤»
..rakudo 272191: OUTPUT«Could not find sub &masak␤ in main program body at line 11:/tmp/uHpt4NZOxS␤»
masak interesting that pugs looks for &hello first... 19:13
or maybe it has a sub &masak :P
foodoo perl6: say "hello masak"
p6eval elf 31298, pugs, rakudo 272191: OUTPUT«hello masak␤»
pmichaud I'll make %hash<> a zen slice for now... but I'm not sure that's really right. :)
[particle] i think that people would expect %hash<> to be a zen slice, because they'll be using <> a lot when writing hashes 19:14
jnthn pmichaud: I'd thought it was one.
PerlJam indeed
masak pugs: our sub g { our sub f($g) {} }; f g
p6eval pugs: ( no output )
PerlJam me too
jnthn masak: ahoj!
[particle] however, there's something to using the canonical postcircumfix for a zen slice
masak pmichaud: I've never thought about it, but it sounds right.
[particle]: oh, that one *must* be a zen slice. 19:15
PerlJam pmichaud: S03:4900
masak [particle]: the question was whether .<> was also.
[particle] for an array... will people do @array<> ?
masak: yes, i mean *only* the canonical postcircumfix, sorry
it's zen, it should truly be nothing 19:16
masak [particle]: @array<> will only work on those special arrays in S09.
pmichaud PerlJam: S03:4900 doesn't seem relevant .... how does the line read?
ah, :4921 has it. 19:17
thanks.
PerlJam ah, my copy must be out of date a little
(or yours)
masak (or both) 19:18
[particle] so, you'll have to write <()> in order to get that, just as you'll have to write {()} or [()]
PerlJam no, mine is defintely out of date (updating now :)
jnthn erm, <()> would be {'()'}, no?
[particle] heh, yeah, it would 19:19
[particle] is rusty
jnthn :-)
Tene "zen slice"? 19:20
PerlJam squirts some oil on [particle] so that he doesn't squeak
masak Tene: so, a *syntactically* empty slice means "everything". that's the zen.
Tene ah 19:21
masak Tene: the big emphasis on "syntactically" is that this doesn't yield everything: my @a = (); my @b = 1, 2, 3; @b[@a]
Tene right
masak it did once. around New Year 2008. :)
guess who found that bug. :P
Tene was it... you? 19:22
masak ...yes.
Tene Oh. I guess I guessed right.
masak you answerd like a true Bayesian.
Tene I am not a member of the bayesian conspiracy. 19:23
masak s/d/ed/
I'm still undecided. to me, it feels like one of those "sides of coin" issues.
Tene What's your prior for that decision? 19:24
masak dunno. life, I guess. 19:25
Tene :)
masak cognominal: lol at "should I masak that?". I'm currently seeking a worldwide patent on "Reporting shortcomings, infelicities and/or possible improvements in digital computer applications." 19:27
cognominal :) 19:28
masak I'm glad someone is already respecting that patent.
Tene masak: I recently encountered the idea of "US Patent #1 is not a patent for a time machine" as evidence against anyone ever creating a time machine. 19:29
masak uh.
strangely, I might even agree. but I'd like to see the proof. 19:30
19:30 xabbu42 left, xabbu42 joined
Tene Not proof, just a suggestive idea inspiring a board game: www.cheapass.com/products/boardgames/cag034.html 19:31
masak nice! 19:32
yes, I think I grok the idea now. I'm a bit slow today. :)
19:34 Mowah left
colomon ah, cheapass games.... :) 19:34
literal arnsholt: yes 19:35
masak I'm running spectests now. Release Day tomorrow. the release guide says I should encourage people to update the ChangeLog and the ROADMAP.
masak looks encouraging
:)
pmichaud masak: do you want me to hold off on merging the list branch to trunk, or try to get it in before the release? 19:37
(all spectests will pass before merging to master)
I'm in favor of getting this merged. :)
masak by all means, merge. 19:38
pmichaud okay. I'm hoping to have that done by tonight, but it might be late tonight. When were you planning to cut the release?
masak tomorrow.
pmichaud when tomorrow? ;-)
(your "tomorrow" is sometimes offset from mine :)
masak my guess is at around 20:00 UTC. 19:39
pmichaud oh, excellent.
so, about this time tomorrow then. No problem.
If I don't have the list stuff merged by around 08:00 UTC I'm not likely to try to merge before release.
masak ok.
pmichaud oh, we may also end up swapping "Atlanta" and "Kiev". 19:40
dalek ok: a1d008e | (Hinrik Örn Sigurðsson)++ | (2 files):
Remove Module::Install::AuthorTests
ok: f16ad94 | (Hinrik Örn Sigurðsson)++ | (9 files):
Bump version to 0.20
ok: a99c023 | (Hinrik Örn Sigurðsson)++ | (15 files):
Add -U/--update to download latest versions of documents from the web
ok: eca6538 | (Hinrik Örn Sigurðsson)++ | (9 files):
Bump version to 0.21
pmichaud anyway, I'll take care of that today.
literal is dalek's source in pugs svn?
its output can be made much more concise 19:41
masak literal: ISTR it's on github.
19:41 frew joined, frew left
pmichaud literal: what would you do to make it more concise? I kind of like it as it is. 19:41
19:42 patspam joined
PerlJam he could shorten the URLs 19:42
literal I'll show you
masak PerlJam: using an URL shortener on -every- github URL reported on-channel feels... a bit wasteful. :/ 19:43
s/an/a/ 19:44
literal pmichaud: paste.scsys.co.uk/44927
pmichaud literal: I don't like that. I like having the urls easily clickable in my window.
PerlJam masak: just contemplating what could be done to make the output more concise. I'm not saying it's a good idea :)
literal pmichaud: it is easily clickable there
pmichaud and I like seeing the full commit messages.
literal the compare url gives you a list of all the commits
and shows you a complete diff 19:45
e.g. see github.com/hailo/hailo/compare/34d7f7c...b617711
pmichaud oh, that might work.
what about full commit messages?
literal that could be added
PerlJam and looking at the existing messages I suppose the SHA1 prefix is a little redundant if we also give the URL 19:46
19:46 masak left
pmichaud anyway, as long as the urls are present in some easily clickable form, I'm not opposed too strongly. 19:46
yay, all hash tests pass in the new design!
19:46 masak joined
PerlJam that was quickish 19:47
(quicker than I was expecting anyway)
pmichaud that's how "right" the design is :)
sorear What is elf and why do we want to remove it from the evalbot?
literal hm, github.com/cmaujean/dalek, "Nothing to see here yet. Move along."
PerlJam who wants to remove elf? 19:48
does someone have something against Ronnie James Dio?
pmichaud sorear: svn.pugscode.org/pugs/misc/elf/README
literal sorear: by the way, you can try upgrading to grok 0.21 and doing grok --update
nix.is/grok-0.21.tar.gz # in case it's not on CPAN yet 19:49
19:50 Mowah joined, foodoo left
colomon rakudo: say 2 == (2 + 0i) 19:51
p6eval rakudo 272191: OUTPUT«0␤»
colomon rakudo: say (2 + 0i) == (2 + 0i)
p6eval rakudo 272191: OUTPUT«1␤»
masak rakudo: say (2 + 0i) == 2 19:52
p6eval rakudo 272191: OUTPUT«0␤»
masak at least it's reflexive. 19:53
sorear literal: How hard would it be to make grok DTRT when fed Perl6 source? I mean, discarding ambient code and not try to format it as pod 19:56
masak jnthn, pmichaud: after having read jnthn++'s blog post, I also want to change the name of tomorrow's release to "Kiev". can I do it right away? 19:58
alternatively, we'll name it "Wasabi" :P
pmichaud masak: I need to check with the person who requested (and paid for) Atlanta 19:59
(paid at a TPF auction)
TimToady phone 20:00
pmichaud I'll check now.
masak ok.
jnthn masak: :P
masak: Yes, that will probably forever remain as one of the most memorable things I've ever drunk. :-)
masak googles for 'Wasabi Vodka'. planetsix.perl.org is in third place :P 20:02
sorear TimToady: ping 20:03
jnthn feels a weird sense of achievement
TimToady pong
sorear TimToady: I think I've uncovered a STD bug; mod_internal:sym<:i> starts with $<sym>=[':i' | ':ignorecase'], which is a literal prefix of 0
should be [':i'['gnorecase']?], yes/no? 20:04
20:04 Psyche^ joined
TimToady hmm 20:04
either that, or we do token splitting in such cases, both of which end up with the same fate 20:06
literal sorear: hm, I guess Perl6::Perldoc would need to be updated to handle it
TimToady but your solution is fine for now
or we just go ahead and let it be 0, and rely on normal LTM
literal sorear: can you point me to a p6 file with Pod which shows the problem? 20:08
20:08 Patterner left, Psyche^ is now known as Patterner
lue ohai 20:08
sorear TimToady: the problem with relying on normal LTM is that mod_internal:oops has a prefix length of 1
and wins
masak lue: \o 20:09
lue methinks I have a problem with precedence...
sorear (yes, dfa/Cursor has parsed enough of STD to reach a :i and die)
literal: no, because chicken and egg. there's no tool that can extract pod from perl6 so nobody puts pod in perl6 20:10
masak sorear: that's only 90% true :)
sorear poor mockup: pastie.org/1007472
lue what does the N in the precedence chart in S03 stand for? 20:13
20:13 mikehh left
moritz_ the precedences are enummerated alphabetically 20:13
so it stands for "after L and before M" :-) 20:14
TimToady sorear: that should be solved by starting oops with {}
masak lue: "no associativity"
lue: in other words, not using parentheses in `$a op $b op $c` is illegal for such an op. 20:15
lue Ok.
moritz_ oh, I thought you meant the prec levels in STD.pm
moritz_ too tired for proper reading
lue Problem is, some things marked N in S03 have associativity in the Grammar. 20:16
i.e. Perl6::Grammar.O(':prec<x=>, :assoc<unary>', '%autoincrement');
masak lue: could you exemplify with a well-placed p6eval call?
moritz_ lue: unary operators are special in that regard
lue I'm trying to figure out why my circumfix fix is not quite working.
masak whoa. proto has a version number, and I didn't even know. :P 20:17
moritz_ there are no two sane ways to parse +~$thing
(+~)$thing doesn't make sense
[particle] would be pleased if all modules included in R* had version numbers and authorities 20:18
lue thanks to pmichaud, I place a line specifying %term , but w/o any associativity [I guess I don't know much. Just trying to fix it]
moritz_ only +(~$thing)
lue masak: did you see the results of what I've done so far?
masak moritz_: I'm still surprised 'unary' counts as an associativity. PGE has no such exception.
moritz_ somhow Match.postcircumfix:<{ }> is b0rked in 'list' branch 20:19
20:19 sorear left
masak lue: no, what should I be looking for? 20:19
20:19 Mowah left
lue > multi sub circumfix:<☃ ☄>($a) { Regex.new(<$a>); }; say ("3" ~ ☃<digit>+☄) 20:19
Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 1
20:19 sorear joined
lue I got closer, there's no parse error now :) 20:20
TimToady std: multi sub circumfix:<☃ ☄>($a) { Regex.new(<$a>); }; say ("3" ~ ☃<digit>+☄)
p6eval std 31298: OUTPUT«===SORRY!===␤Bogus term at /tmp/UsasH1RrZF line 1:␤------> Regex.new(<$a>); }; say ("3" ~ ☃<digit>+⏏☄)␤Parse failed␤FAILED 00:01 113m␤»
lue I think the precedence is screwing it up though.
TimToady there *should* be a parse error :)
lue > multi sub circumfix:<Ω Ω>($a) { say $a;}; Ω3Ω 20:21
Confused at line 1, near "\x{ce}\x{a9}3\x{ce}\x{a9}\n"
TimToady circumfixes are not quotes
std: multi sub circumfix:<Ω Ω>($a) { say $a;}; Ω3Ω
p6eval std 31298: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'Ω3Ω' used at line 1␤Check failed␤FAILED 00:01 109m␤»
20:21 jrtayloriv joined
TimToady std: multi sub circumfix:<Ω Ω>($a) { say $a;}; Ω 3 Ω 20:21
p6eval std 31298: OUTPUT«===SORRY!===␤Two terms in a row at /tmp/L3aKEKXlAL line 1:␤------> sub circumfix:<Ω Ω>($a) { say $a;}; Ω 3 ⏏Ω␤ expecting any of:␤ bracketed infix␤ infix or meta-infix␤ statement modifier loop␤Parse failed␤FAILED 00:01 110m␤»
20:22 [Coke] left, [Coke] joined
lue well, at least I got rid of the part where it didn't understand what a custom circumfix was :) 20:22
TimToady can't really use alphanumerics for circumfixes, since they're ambiguous with normal names
20:22 justatheory joined
lue I thought it was, just needing spaces. 20:23
TimToady std: multi sub circumfix:<` `>($a) { say $a;}; `3`
p6eval std 31298: OUTPUT«===SORRY!===␤Confused at /tmp/1TbcOKRuc5 line 1:␤------> i sub circumfix:<` `>($a) { say $a;}; `3⏏`␤ expecting any of:␤ POST␤ bracketed infix␤ infix or meta-infix␤ postfix␤ postfix_prefix_meta_operator␤
..statement modifier loop␤Parse failed␤FA…
20:23 xabbu42 left, xabbu42 joined
TimToady and that's a known bug in STD :) 20:23
masak TimToady: huh? why can't normal names be used in circumfixes, when they can in infix operators? 20:24
lue Confused at line 1, near "`3`\n" is what I get with what you put up, TimToady
sorear TTIAR?
TimToady because we have term:ident, but not infix:ident
masak lue: did you catch the "circumfixes are not quotes" part that TimToady said? 20:25
lue yes.
TimToady no, the bug in STD is confusion between starters and stoppers
masak lue: goodie. just checking.
TimToady probably due to cursor reuse
lue I don't necessarily see why it's relevant, but I caught it, and can infer what he means :) 20:26
while you're here TimToady, circumfixes *are* terms, are they not?
TimToady yes, they're terms on the outside, but EXPR on the inside 20:27
masak lue: it's relevant, because <digit>+ in your code isn't valid Perl 6. 20:28
lue I meant for it to be a regex.
masak lue: and if a circumfix doesn't quote... then you've written something invalid.
TimToady you might have meant that, but the parser can't read your mind 20:29
lue seems like it needs to be more than just simply adding a definition for %term then… 20:31
TimToady std: multi sub circumfix:<「 」>($a) { say $a;}; 「3」 20:32
p6eval std 31298: OUTPUT«===SORRY!===␤Confused at /tmp/5Cb0diuN6F line 1:␤------> i sub circumfix:<「 」>($a) { say $a;}; 「3⏏」␤ expecting any of:␤ POST␤ bracketed infix␤ infix or meta-infix␤ postfix␤ postfix_prefix_meta_operator␤ statement 20:33
..modifier loop␤Parse failed␤FA…
TimToady hmm
pugssvn r31299 | sorear++ | [dfa/Cursor] When a subregex which generates nontrivial fates is quantified, the fates must be discarded, as the runtime quantifier cannot know how to correctly route them. 20:34
rokoteko circumfix? really? why not just lhs-fix + rhs-fix ?
szabgab rakudo: my $c = [["name", 42], ["verbatim", "abc"]]; say $c[0].perl; for $c -> $x { say "z", $x.perl } 20:36
p6eval rakudo 272191: OUTPUT«["name", 42]␤z[["name", 42], ["verbatim", "abc"]]␤»
szabgab so I thought $z is an array here 20:37
masak rokoteko: because there's no such thing as lhs-fix and rhs-fix? :)
pugssvn r31300 | sorear++ | [STD] Don't rely on old-Cursor's buggy token splitting in mod_internal
szabgab $c I mean
masak rokoteko: seriously, I don't see how they could be made to work the same as a circumfix. the latter imposes precedence.
szabgab as $c[0] works
masak just like parens do.
szabgab but how can I loop over the elements?
lue because for lhs-fix and rhs-fix you'd still have to tell it the matching delimiter.
szabgab rakudo: my $c = [["name", 42], ["verbatim", "abc"]]; say $c[0].perl; say $c.elems 20:39
p6eval rakudo 272191: OUTPUT«["name", 42]␤2␤»
szabgab rakudo: my $c = [["name", 42], ["verbatim", "abc"]]; say $c[0].perl; for 0..say $c.elems-1 -> $i { say $c[$i] } 20:40
p6eval rakudo 272191: OUTPUT«["name", 42]␤1␤name 42␤verbatim abc␤»
TimToady std: ( 42 ]
p6eval std 31298: OUTPUT«===SORRY!===␤Unable to parse parenthesized expression at /tmp/pz3mwLMlZS line 1:␤------> <BOL>⏏( 42 ]␤Couldn't find final ')'; gave up at /tmp/pz3mwLMlZS line 1:␤------> ( 42 ⏏]␤ expecting statement modifier loop␤Parse
..fail…
lue so interval notation isn't standard to the core it seems :) 20:41
masak szabgab: I usually do `for $c.list -> $x { ... }`
szabgab rakudo: my $c = [["name", 42], ["verbatim", "abc"]]; for $c.list -> $x { say $x.perl }
p6eval rakudo 272191: OUTPUT«["name", 42]␤["verbatim", "abc"]␤»
rokoteko lhs-fix and rhs-fix maybe you'd like to call the beforefix, afterfix.. as opposite to prefix and postfix, but they have to come in pairs.
szabgab masak, thanks
TimToady rokoteko: what does that buy you? 20:42
rokoteko masak: circumfix sounds more silly to me.
TimToady we don't care if things sound silly here
masak says "Mu"! 20:43
lue <JOKE> .oO(twigil sounds silly. Let's call it secondarygil) </JOKE> 20:44
rokoteko TimToady: sub beforefix<`> ( "bread" ); sub afterfix<􏿽xB4> ( "milk" ); `rokoteko.buys()􏿽xB4
I buy bread an milk! 20:45
TimToady how do you know they go together?
circumfixes have to match
std: ( 42 ]
p6eval std 31298: OUTPUT«===SORRY!===␤Unable to parse parenthesized expression at /tmp/s4GEMsNW8k line 1:␤------> <BOL>⏏( 42 ]␤Couldn't find final ')'; gave up at /tmp/s4GEMsNW8k line 1:␤------> ( 42 ⏏]␤ expecting statement modifier loop␤Parse
..fail…
rokoteko TimToady: well, you obviously don't know that with circumfix either.
lue that's what I was wondering. You'd have to state that anyway. Circumfix makes it easy.
TimToady yes, we do!!!
masak yes, exactly.
TimToady or we couldn't give that error message there
szabgab rakudo: (1,2,3).map(-> $x { say $x } ); 20:46
masak ¡¡¡yes, we do!!!
p6eval rakudo 272191: ( no output )
szabgab hmm, this works in the REPL
jnthn circum means "around"; circumfixes are things that go around other things. The name seems pretty fitting to me. :-)
szabgab printing both 1 2 3 and 1 1 1
jnthn szabgab: The REPL probably sinks it.
lue It might not be english, but hey.
masak lue: it's Latin. :) 20:47
jnthn lue: There's plenty of words with that prefix that made it into English.
lue is reminded of the quest to find a word for %_
jnthn circumference, circumscribe, circumsize...
masak lue: "Holy Grail"? :P
szabgab jnthn, just don't go there ...
lue I meant the whole word circumfix
rokoteko TimToady: I dunno. maybe the programmer should be responsible for choosing the before- and afterfix operators, in such way that there is no afterfix in between. 20:48
lue QUICK! Give me a pronoun describing a hash like structure. Any language!
szabgab זוג
rokoteko to *me* circumfix sounded like silly (which I now have learnt that is not possible on this channel). :)
PerlJam lue: %_ 20:49
lue szabgab: you broke the continuity with RTL! That's Cool! :)
any *natural* language :)
szabgab it actually looks much better in had writing where the word pair looks symmetric
lue .u ג 20:50
phenny U+05D2 HEBREW LETTER GIMEL (ג)
lue ah, hebrew.
masak S03-operators/range-basic.rakudo fails over here. lots of TODO passes, for some reason. gist.github.com/441245
colomon "over here"? 20:51
Util masak: same here (03-operators/{assign,range-basic} FAIL, lots of TODO passing) 20:52
jnthn colomon: Yeah, over there, somewhere to my north east, the test is failing. ;-)
Util (Max OS X 10.5)
rokoteko anyhow. to me sub circumfix <'> ( foo() ); sounds more difficult to parse than a after- and beforefix, becuase in the former you cant blame the programmer for not thinking which pairs to choose. :)
Util s/Max/Mac/
lue Maybe masak was referring to his location IPv4 space...
colomon probably my fault, I know I've got a custom range-basic running okay here.
TimToady rokoteko: I'm curious as to why you think circumfix sounds silly. it's all perfectly good Latin roots, used in their appropriate meanings
rokoteko or s/blame/trust/ and s/not// :) 20:53
colomon I was more curious about which branch of rakudo...
TimToady or is it just that all neologisms sound silly to you?
lue that's not how circumfix works.
rokoteko TimToady: should I look up neologism or are you planning to explain before I think of my answer?
TimToady a "coined" word 20:54
rokoteko as in coins have two sides?
lue A word that's not standard but used anyway. 'Bling' used to be one, I believe.
It's a new word.
rokoteko ahh. then I have nothing against circumfix as a word.
lue
.oO( sub circumfix:<' '>($parameter) { say $parameter; }; )
20:55
rokoteko it's probably how I have taught me neurons. easier to gasp the idea of anti-postfix and anti-prefix vs the opposites than infix vs circumfix. how on earth would you use circumfix in practise? 20:56
20:56 bjarneh left
masak my productivity index is at 0 today, it seems. that's what I get for getting fresh air all day. I'll try sleeping for a few hours and then returning. see you, #perl6. 20:56
20:56 masak left
rokoteko I find it very hard to grasp how to chain if it's always the same char at both ends. 20:56
20:56 bjarneh joined
lue We use them for things like ( ), [ ], and { } 20:56
20:56 sorear left
lue doesn't always need to be the same character :) 20:57
20:58 sorear joined
PerlJam wonders what chaining has to do with it 20:58
20:59 whiteknight joined
pmichaud back to hacking 20:59
jnthn: I didn't mention yet, but the new Associative refactoring is awesome (and clean) 21:00
21:00 jrtayloriv left
rokoteko I was thinking in the lines of: "a (circumfix b) circumfix c d" .. where the circumfix op is "circumfix" :) 21:01
jnthn pmichaud: :-) 21:02
lue You should never need to do that, unless b) is a string.
jnthn pmichaud: Meanwhile, s/Perl6MultiSub/Multi/...is fail. :/
jnthn digs into why
rokoteko lue: ah. ok. 21:03
maybe I should spend some time reading the synopses instead of asking weird questions here. :)
21:03 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
pmichaud jnthn: I don't need that feature at all now, fwiw. 21:03
I found an even cleaner mechanism than what I was looking at earlier. :) 21:04
lue if it were a string, it wouldn't matter. Then It would look like a (circumfix "b)" circumfix c d)
rokoteko Anyhow, cool to hear that perl6 has circumfix! :) that was something new for today. 21:05
szabgab some Rakudo code question:
I see pir::open__PSS mentioned 3 times in the src/ tree of Rakudo, one is the definition of open() and two other places, should the two other places actually use the open() function??
21:06 diakopter sets mode: +o sorear 21:08 diakopter left
jnthn pmichaud: I know, it was high on my "fix this" list anyway 21:08
21:09 diakopter joined
jnthn pmichaud: So can have .cando work on multis, so an RT can be resolved. :-) 21:09
pmichaud okay.
21:09 sorear sets mode: +o diakopter
pmichaud szabgab: I think I would prefer that, yes. 21:09
dalek ok: 11a5774 | chromatic++ | src/preface.pod:
Edited preface; left in one author note.
21:10
ok: 2535b58 | chromatic++ | src/basics.pod:
Edited basics chapter, leaving one author note.
szabgab pmichaud, then I'll try to do that tomorrow as my first attempt at rakudo itself 21:11
pmichaud szabgab: woo hoo!
21:11 rv2733 left
lue The worst part is that circumfix is bothering me enough to make me want to fix it, but I don't know enough to do so without a _lot_ of help. :) 21:11
pmichaud szabgab++
szabgab is the RT submission critical or a push request on my github fork is sufficient for patches? 21:12
or maybe pull request.
lue afk 21:13
pmichaud szabgab: I haven't been able to make pull requests (github's fork queue) work well for me, so we've gone with patch emails 21:15
or you can send us the pull request information directly in an email or ticket
or catch someone here to do it
but I personally find github's fork queue to be "not understandable or usable." (Maybe someone can give me a tutorial sometime about how it's supposed to work.) 21:16
PerlJam or just give szabgab commit access :)
szabgab ok, let me first try to make the change and then I catch someone to see how to do it to make it easy for tou
PerlJam, I don't want to run around with open scissors 21:17
but thanks :)
pmichaud phenny: tell masak it's official, tomorrow's release is "Kiev"
phenny pmichaud: I'll pass that on when masak is around.
dalek kudo: c9ee2eb | pmichaud++ | docs/release_guide.pod:
June release is now "Kiev", July release is "Atlanta".
jnthn \o/ 21:18
21:18 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
szabgab anyway, night & 21:18
Tene szabgab: really, the pir::open in open() should instead make a new Filehandle and call its 'open' method. 21:19
szabgab: ah, g'night
21:23 Guest23195 left 21:24 felipe joined 21:31 clintongormley left, Su-Shee left 21:32 silug left 21:36 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42 21:38 Guest37981 left 21:43 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42 22:02 hercynium left 22:04 sdvsdvsdv left 22:06 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42 22:07 sdvsdvsdv joined 22:08 pyrimidine left 22:10 bjarneh left, kda joined
pugssvn r31301 | sorear++ | [dfa/Cursor] Rearrange quantifier handling to avoid NFA node population explosions 22:12
diakopter r31301 :) 22:17
sorear it's not even a palindrome 22:19
22:19 ewilhelm joined
sorear variable_2 generates over 1500 dfa nodes 22:21
*nfa
this needs investigating
desigilname itself makes >300, most with only epsilons 22:25
22:28 hudnix left, macdaddy left
skids www.abrij.org/~bri/camelia_ifs.svg <--- you'll need opera. Or the adobe SVG+SMIL plugin. 22:29
And a lot of cpu cycles.
22:30 literal left 22:32 literal joined, literal left 22:33 literal joined 22:34 macdaddy joined 22:36 Ross left 22:38 tedv joined 22:41 skids left
pugssvn r31302 | sorear++ | [dfa/Cursor] Fix handling of imperative nodes in nfaopt and nfastar 22:49
22:51 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
sorear \o/ 22:54
dfa/Cursor just successfully and without misparsings bootstrapped STD.pm6 22:55
and in 10 seconds less than the old Cursor, before I've even started microoptimizing
22:58 Transformer joined 23:00 Transformer left 23:03 broquaint joined
sorear runs the profiler and opts to optimize a bit before the mergeback 23:05
23:11 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42 23:13 Transformer joined 23:16 Transformer left 23:18 broquaint left
sorear the annoying thing about NYTProf is that it makes your program 10x slower 23:19
not good if it's too slow
I'd love to see a proper low-overhead Perl profiler
maybe with parrot and ponie we'll get one.
23:20 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
Tene is ponie not-dead now? 23:28
23:29 patspam left
jnthn Aanyone know if anything happened recently that may have resulted in Rakudo's spectests no longer running in parallel for me? 23:30
It makes things...epicly slower. :/
Tene jnthn: I successfully ran spectests in parallel in the list branch last night. 23:31
I'll update master right now and try
updating parrot...
updating rakudo... 23:34
23:34 snarkyboojum left 23:35 yinyin joined
sorear Tene: One ponie is dead 23:37
Tene spectesting...
sorear: is there another one?
TimToady sorear: 10 sec less is about what I expected from old NYTProf
and \o/ too
sorear jnthn: Rakudo spectests are no longer parralel by default, because it hoses newbies with small computers
Tene: TimToady has used "ponie" to refer to what STD_P5.pm6 is going to become 23:38
TimToady I did? 23:39
sorear I thought you did
jnthn sorear: :/
sorear: Any idea off hand how one re-instates it locally? 23:40
23:40 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
sorear look in scrollback, someone asked the same thing 23:41
Tene jnthn: TEST_JOBS=4 make spectest
is what I'm using
jnthn Thanks, I'll work out how to win32-ify that. :-)
23:41 mikehh joined
sorear make spectest TEST_JOBS=4 23:41
?
Tene sorear: what did it use previously? if you only have one cpu, did it still do parallel? 23:42
23:42 gbacon left
sorear Tene: yes 23:42
and 3
Tene Oh. I can understand the problem. 23:43
jnthn Ah...yes, spawing 3 in parallel on a single-processor box is unfriendly. 23:44
sorear especially if you have less than the needed 3*150 MB ram
as expected, NFA generation is very high up for time used parsing 2 + 2
unexpectedly, Class::MOP is actually at the top of the list 23:45
23:46 mberends left
TimToady is that with uncached lexers? 23:46
Tene 150MB is down from several months ago, yes? I seem to remember ~400MB once... or was that for compiling?
TimToady looking up all the methods to PEEK can be expensive 23:47
Tene jnthn: get parallel testing working for you? Just finished for me on my laptop, but I don't know if these test failures are normal or not. 23:49
Files=456, Tests=32404, 601 wallclock secs (15.42 usr 1.93 sys + 1860.99 cusr 49.96 csys = 1928.30 CPU)
jnthn Tene: No, got bogged down in debugging something. 23:50
23:51 xabbu42_ joined, xabbu42 left, xabbu42_ is now known as xabbu42
sorear TimToady: yes; I'm hoping to get rid of the on-disk lexer cache 23:52
23:53 jferrero left
mikehh rakudo (c9ee2eb) builds on parrot r47666 - make test PASS, spectest_smolder -> #34441 (pugs r31302) FAIL - Ubuntu 10.04 i386 (g++ with --optimize) 23:55
pmichaud finally found the problem with S03-metaop/cross.t
Tene I saw an infinite loop back and forth between junction.bool and failure.bool, but it looked like the stack trace was missing something there, or otherwise inaccurate. 23:56
pmichaud the junction ended up storing a reference back to itself. 23:57
i.e., $result = &infix:<|>($result, $value) 23:58
the junction wasn't properly dereferencing the $result container, and therefore was keeping a reference to $result instead of its value
so then when you tried to use it... infinite loop :-|
Tene ah 23:59
pmichaud (parallel testing) - I think I'd be in favor of having a parallel test target
make jtest or something
sorear TimToady: have you considered making DEBUG a constant, so if DEBUG & DEBUG::foo lines can be optimized out by the constant folder?