»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
ssutch yeah 00:02
force of habit (python,ruby,js)
masak yes, the rule is this: if you use the '@' sigil, you already have an array for free. 00:03
r: say my @a = 1, 2, 3
camelia rakudo b4d858: OUTPUT«1 2 3␤»
ssutch yeah
masak r: my $s = 1, 2, 3; say $s
camelia rakudo b4d858: OUTPUT«WARNINGS:␤Useless use of "," in expression "my $s = 1, 2, 3" in sink context (line 1)␤1␤»
ssutch is there any copying going on there? 00:04
masak in what sense?
r: my @a = 1..3; my @b = @a; say @a === @b; say @a eqv @b
camelia rakudo b4d858: OUTPUT«False␤True␤»
ssutch if i say my @list = %hash{'list_item'} it doesn't do any copying
what if it has to coerce say, a parcel? 00:05
r: my @a = 1..3; my @b = @a; push @b, 4; say @a === @b; say @a eqv @b
camelia rakudo b4d858: OUTPUT«False␤False␤»
masak r: my %hash = list_item => [1, 2, 3]; my @list = %hash<list_item>; say @list === %hash<list_item> 00:06
camelia rakudo b4d858: OUTPUT«False␤»
masak looks like copying to me.
ssutch yeah
masak r: my %hash = list_item => [1, 2, 3]; my @list := %hash<list_item>; say @list === %hash<list_item>
camelia rakudo b4d858: OUTPUT«True␤»
masak use binding if you don't want a fresh copy :)
ssutch ah
so @liast stays a parcel in that case 00:09
@list
is it possible to get an element from an array, defaulting to some value if it doesn't exist? like @arr.some(0, 'alternative') 00:14
timotimo @arr[10] // "yarr!" 00:15
ssutch simple enough 00:16
dalek p: aa3dd30 | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/AutosplitMethodWriter.java:
Split-aware instruction base size calculator
00:26
p: 4fd1847 | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/AutosplitMethodWriter.java:
Fragment size calculator
masak 'night, #perl6 00:29
moritz_ good knight, masak 00:30
timotimo even if my pod changes work now, i'm doubtful they will ever be accepted into rakudo >_< 00:32
(except they don't work) 00:36
colomon is getting frustrated at trying to program in p5. Why do we not have Email::Sender::Simple in p6 yet?
timotimo er, wait, what? my debug outputs don't show up for perl6 --doc=HTML foo.p6 00:37
oh, i was just redirecting the output 00:38
dalek p: 43db7b3 | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/AutosplitMethodWriter.java:
Optimize try-catch edge generation for large methods
00:42
timotimo sprinkles the code with debug statements and sadness 01:01
ssutch hah
why wouldn't your patch be accepted?
timotimo it's a big amount of changes and they don't look good 01:02
it's kind of disorganized at the moment and touches all the places
ssutch my significant other would describe me the same way 01:04
timotimo in that case it's adorable, in my case it's ... frustrating
ssutch break it up into small, palatable changes? 01:05
timotimo oooh, i think i see where i went wrong
wow, that was not a mistake a smart person would have made
benabik Clever people make clever mistakes. 01:07
colomon Clever people sometimes make the biggest mistakes... 01:08
timotimo basically there was a token looking like { something something || <.typed panic> }, i added an assertion at the beginning of something something hoping it'd skip the block
instead it skipped right into the typed panic every time
even worse. i apparently misread that whole thing and it was fine before. also didn't make my code work magically 01:09
timotimo i hope that once i can make it work i can refactor most of the changes 01:12
ssutch when dynamically generating classes, if i want it to descend from ann object, i should use $type.HOW.mixin($type, Class::A, Class::B) 01:21
does that seem right?
timotimo github.com/timo/ADT/blob/master/lib/ADT.pm6 - i'm not sure but i think i have something in here about that 01:23
i don't get it. i get an exception, but a closure i put before it isn't being run 01:25
i think i'm getting tireder and the code isn't getting righter. i should probably head to bed. 01:28
timotimo i made most blocks in the documentation turn into 1s ... i should really get rest. good night! 01:41
[Coke] masak: p6a removed from sixplanet. 01:48
(will take a few minutes to percolate)
sorear [Coke]++ 01:49
segomos who is in charge of accepting pull requests for modules in META.list?
ssutch [Coke]++
[Coke] half the people here can do it.
sorear segomos: tell me your github ID
segomos sorear: hosted on bitbucket as segomos 01:51
need to me to suck it into github?
sorear hmm
I'm trying to give github.com/tony-o a commitbit
but github is being dumb
there it goes 01:54
segomos: you should now be able to merge the pull request. :) 01:55
segomos thank you 01:56
ssutch seems like in order to make a class that inherits from another class at runtime i should just do eval 01:59
colomon do bitbucket repos work in the ecosystem?
sorear segomos: use the metamodel 02:00
colomon sorear: did you mean ssutch there?
and o/
ssutch sorear: i don't see a way to do that with the metamodel
sorear: with roles, maybe
dalek osystem: a790671 | segomos++ | META.list:
Update META.list
02:06
osystem: d2a7691 | (Philip Mabon)++ | META.list:
Merge pull request #26 from tony-o/patch-1

Update META.list
segomos sorear: use the metamodel? 02:14
oh - 02:16
JimmyZ good morning, #perl6 02:29
ssutch 'morning! 02:34
colomon \o 02:42
sorear o/ 03:11
ztt howdy! I can not find where rakudo REPL code placed. I just wannar to see how this REPL works 03:14
Can anyone tell me which file do the REPL? sorry for my english 03:15
ssutch ztt github.com/rakudo/rakudo/blob/8976...mpiler.nqp is a good place to start 03:17
ztt oh thx! 03:19
ssutch ztt that class descends from github.com/perl6/nqp/blob/master/s...mpiler.nqp
ssutch which has more of what you probably want in it (see the .interactive method) 03:19
ztt thank you ssutch! you show me a new world! ° △ ° 03:22
ssutch hah i like that emoticon 03:24
ssutch is there a prettier way to do this? # $.gen-class($_) for $pkg.messages 03:35
sorear ssutch: I promise you, everything which can be done with classes using eval can also be done with the MOP 03:49
ssutch sorear: that's good, i'd rather do things that way
this is how im doing it right now, but haven't yet figured out how to use MOP to generate a class which descends from another class: github.com/samuraisam/p6-pb/blob/6...nerator.pm 03:52
regardless, it's probably more "correct" to use roles anyway, which ClassHOW.add_role($cls, $role) seems to work 03:53
sorear ssutch: can you paste the code which is supposed to add a parent but doesn't work? 04:01
ssutch sorear: im not sure what to do, i tried saying $type is $parent; - that didn't work 04:02
sorear ssutch: I suggest looking at the definition of is 04:04
search the setting for trait_mod:<is>
ssutch sorear: that makes sense :)
sorear generally speaking metamodel stuff involves lots of uppercase letters, especially H and W... 04:06
ssutch derp, the role was in Metamodel::MultipleInheritance 04:15
$typ.add_parent($typ,$parent) # DOH! 04:17
and it works!
now if only i could make namespaces at runtime, i'd be rich!
sorear $typ.HOW.add_parent surely 04:19
ssutch yeah, that's what i meant 04:20
diakopter o_O
ssutch thanks for the hand sorear \o
diakopter gchat is down-ish, for once 04:25
sorear ssutch: btw, $foo.^bar($baz) is short for $foo.HOW.bar($foo, $baz) 04:34
ssutch yar 04:37
TimToady commuting to York & 07:52
Teratogen wow 07:54
dalek ecs: fce8a2f | (Elizabeth Mattijsen)++ | S99-glossary.pod:
Framework for a Perl 6 glossary
09:46
lizmat please note it is just a framework with some empty lemma's so far
patches welcome!
lizmat robocup& 09:54
dalek ecza: 7bae012 | (Solomon Foster)++ | lib/CORE.setting:
Port lizmat++'s classify to Niecza.
10:04
dalek ast: 10f1993 | (Solomon Foster)++ | S32-list/classify.t:
Refudge for Niezca.
10:06
sorear morning colomon :) 10:07
colomon \o
sorear hrm. I made a small change to rakudo and I worry I may have caused an optimizer regression 10:13
because it made the setting marginally *bigger*, and I think that change should only have been capable of causing shrinkage
FROGGS_ sorear: that could be my patch too 10:15
sorear FROGGS_: I think I pulled and measured after yours 10:16
FROGGS_ before my object-flush patch the setting.bpc was 17meg, afterwards 18meg
sorear so the "big method" in the output from rx.t was causing the method splitter fits
~100,000 instructions, 2018 local variables
200M (insn,variable) pairs needing type deduction 10:17
i made some changes to nqp&rakudo which have the same method down to 25 locals (near-same insn count)
unfortunately, it doesn't verify. 10:18
jnthn 2018 to 25? Whoa. :) 10:19
sorear++
sorear: I may be able to guess if I see the patch, or alternatively I may have no clue.
sorear jnthn: also, the splitter was having a bit of trouble with the splitting. 2018 locals doesn't leave much room after the save epilogue/restore prologue :) 10:20
huh, nqp passes tests and rakudo passes coretests
jnthn right :)
sorear isn't sure how to square this with the new verifier rejecting output 10:21
jnthn Verifier being pickier than the JVM's own?
sorear mustbe. 10:24
dalek ecza: 39ab531 | (Solomon Foster)++ | lib/CORE.setting:
Add Any.classify.
10:29
ast: 6f8898b | (Solomon Foster)++ | S32-list/classify.t:
Unfudge for Niecza.
timotimo hmm. do i want to bang my head against Pod6 again today? 10:30
masak good afternoon, #perl6 10:31
colomon \o 10:32
it's barely morning here...
timotimo i was wondering, D<...> is supposed to offer a link target for future usages of the term and its synonyms. making those links seems like a job for Pod::To::*, right?
sorear ah, I just screwed up the lload stack signature 10:39
had it marked as returning a reference with no type (L) 10:40
dalek p: 4d574a2 | sorear++ | src/ (4 files):
Add a local_lifetime hint op

This tells the code generator that the named locals don't need to escape the scope of the op. Note that this is more than just a scope analysis, since it affects behavior in loops: you're telling the codegen that it's OK to clobber the named variable between iterations. As such, to automatically generate it would require a dataflow analysis. A future dataflow analyzer might do so.
10:48
p: 968a0b4 | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/AutosplitMethodWriter.java:
Fragment-sizing logic
p: 25887f2 | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/AutosplitMethodWriter.java:
Fix L/J typo
10:50
p: 7718394 | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/AutosplitMethodWriter.java:
Intern type descriptors for speed
p: 4e644af | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/AutosplitMethodWriter.java:
Switch to BFS for type inference. Seems to result in fewer iterations for most functions.
p: c0cffa0 | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/AutosplitMethodWriter.java:
Better debug output for fragment sizer
masak sorear: wow, looks like you're hitting really interesting problems there. 10:52
dalek kudo/nom: a07c211 | sorear++ | / (2 files):
Generate local_lifetime hints.
sorear jnthn: I've optimistically pushed
running a parrot test build in parallel
apparently updating NQP_REVISION requires rebuilding parrot. bleh. 10:53
jnthn sorear: We quite consistently don't put underscores in nqp::op names except for things like the _n type suffixes. 10:54
sorear oops.
jnthn sorear: Did you change anything about the Parrot code-gen, beyond making it not explode when it sees locallifetime? 10:55
sorear jnthn: No 10:56
sorear wanted to do the minimal possible change to minimize the chance of a failure now
jnthn *nod*
sorear jnthn: What's the best way to take a --gen-parrot rakudo build tree and update the NQP without rebuilding Parrot? 10:57
sorear suspects this rakudoparrot build will fall over
jnthn sorear: Mess with tools/build/PARROT_REVISION is one way 10:58
(in the nqp repo)
jnthn sorear: Once you have got an NQP that knows to install to the right place, you can just make install it 10:58
So if you already have one, just tweak PARROT_REVISION, configure/install it. So long as the NQP revision is at least hihg enough, it's all good. 10:59
dalek p: 418457e | sorear++ | src/ (4 files):
s/local_lifetime/locallifetime/g
11:04
jnthn sorear++
Util sorear++ # For getting the ball rolling in the direction of dataflow analysis. 11:08
dalek kudo/nom: e63ebb6 | sorear++ | / (2 files):
s/local_lifetime/locallifetime/g
sorear the rx.jast:qb_1 now has 25 locals and 89075 instructions, and the autosplitter identifies seven fragments it could be broken into 11:09
jnthn \o/ 11:10
sorear next: extend autosplitter to actually generate said fragments, and the glue code
FROGGS_ that sounds pretty cool
jnthn That'll win us some tests. 11:11
In fact, with all the test files this manages to pull it, it may be enough to push us into the 80%s
FROGGS_ \o/ (I'm from the 80s too) 11:13
sorear I'm not. :p
jnthn Don't worry, we'll reach the 90%s soon after :P 11:15
masak was the autosplitter written out of necessity (as in "this code won't run otherwise") or was it more of a performance thing? 11:16
jnthn nec 11:18
sorear right now the biggest test files die with "Method code too large!" 11:19
kind of annoying. 11:20
jnthn Indeed...especially as a bunch of them are regex ones, and the regex engine is already powerful enough to parse Perl 6, so it should be able to pass a good number of them. 11:29
self.endTime = ko.computed(function () {
dammit
FROGGS_ jnthn: you are calculationg your own endtime? 11:31
jnthn Not quite... :/ 11:33
sorear this method autosplitter is dangerously close to "debugging code takes twice as much cleverness as writing it in the first place" territory
FROGGS_ :/ 11:40
timotimo r: say "<C<<FOO>>>" ~~ / $<code>=<[A..Z]> $<begin>=['<'+] [ <!before '>'> \N]+ [ $<end-tag>=['>'+] <?{ $<end-tag>.Str.chars == $<begin>.Str.chars }>] / 12:00
camelia rakudo a07c21: OUTPUT«「C<<FOO>>」␤ code => 「C」␤ begin => 「<<」␤ end-tag => 「>>」␤␤»
timotimo neato!
r: say "<C<<Foo I<Bar> baz>>>" ~~ / $<code>=<[A..Z]> $<begin>=['<'+] [ <!before '>'> \N]+ [ $<end-tag>=['>'+] <?{ $<end-tag>.Str.chars == $<begin>.Str.chars }>] / 12:02
camelia rakudo a07c21: OUTPUT«「C<<Foo I<Bar>」␤ code => 「C」␤ begin => 「<」␤ end-tag => 「>」␤␤»
timotimo oh no :(
r: say "<C<<Foo I<Bar> baz>>>" ~~ / $<code>=<[A..Z]> $<begin>=['<'+] <!before '<'> [ <!before '>'> \N]+ [ $<end-tag>=['>'+] <?{ $<end-tag>.Str.chars == $<begin>.Str.chars }>] / 12:03
camelia rakudo a07c21: OUTPUT«「I<Bar>」␤ code => 「I」␤ begin => 「<」␤ end-tag => 「>」␤␤»
timotimo i wish i could run rakudo-debugger :(
timotimo r: say "<C<<Foo I<Bar> baz>>>" ~~ / $<code>=<[A..Z]> $<begin>=['<'+] <!before '<'> [\N]+ [ $<end-tag>=['>'+] <?{ $<end-tag>.Str.chars == $<begin>.Str.chars }>] / 12:04
camelia rakudo a07c21: OUTPUT«「C<<Foo I<Bar> baz>>>」␤ code => 「C」␤ begin => 「<<」␤ end-tag => 「>>」␤␤»
timotimo ah, thit is the problem
it's a good thing there are spectests about this.
timotimo makes more
timotimo r: say "I<<<This is nested B<<within I<and within>>>>>>" ~~ / $<code>=<[A..Z]> $<begin>=['<'+] <!before '<'> [\N]+ [ $<end-tag>=['>'+] <?{ $<end-tag>.Str.chars == $<begin>.Str.chars }>] / 12:06
camelia rakudo a07c21: OUTPUT«「I<<<This is nested B<<within I<and within>>>>>>」␤ code => 「I」␤ begin => 「<<<」␤ end-tag => 「>>>」␤␤»
timotimo cool beans
r: say "I<<<This is nested B<<within I<and within>>>>>>" ~~ / $<code>=<[A..Z]> $<begin>=['<'+] <!before '<'> $<content>=[\N]+ [ $<end-tag>=['>'+] <?{ $<end-tag>.Str.chars == $<begin>.Str.chars }>] / 12:07
camelia rakudo a07c21: OUTPUT«「I<<<This is nested B<<within I<and within>>>>>>」␤ code => 「I」␤ begin => 「<<<」␤ content => 「This is nested B<<within I<and within>>>」␤ end-tag => 「>>>」␤␤»
dalek p: bd00194 | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/AutosplitMethodWriter.java:
Code generators for saving/restoring values
12:11
sorear sleep&
FROGGS_ gnight sorear
timotimo but does it already work?!
timotimo tries it out
src/vm/jvm/runtime/org/perl6/nqp/jast2bc/AutosplitMethodWriter.java:847: error: cannot find symbol case AbstractInsnNode.IINC_INSN:
jnthn 'night, sorear 12:12
timotimo it seems like something wasn't added to the nqp repo or something?
masak 'night, sorear
jnthn timotimo: Did you re-configure?
timotimo src/vm/jvm/runtime/org/perl6/nqp/jast2bc/AutosplitMethodWriter.java:8: error: package org.objectweb.asm.commons does not exist
jnthn Makefile may have changed
timotimo oh!
that would explain it nicely
sorear timotimo: uh...
timotimo it works now 12:13
sorear timotimo: gist.github.com/sorear/5866922 apply this
timotimo is that just for debugging?
sorear yes
then try some variation on: java -cp nqp-runtime.jar:3rdparty/asm/asm-debug-all-4.1.jar org.perl6.nqp.jast2bc.JASTToJVMBytecode ../rakudo-jvm/rx.jast rx.class
that's how I've been doing the test runs 12:14
it's not ready for full integration yet
timotimo well, for now, re-configuring it helps
sorear sleep for reals&
timotimo good night!
JimmyZ 'night, sorear 12:15
timotimo is there some trick to tell backtracking "be eager until you find this token, then see if you can advance, but if you can't, become eager again"? 12:16
if not, no problem, i suppose i can do nongreedy forward search instead 12:17
jnthn "keep going until we can match the next token" is basically what frugal quantifiers are doing 12:21
timotimo is there a speed enhancement to going greedy until a specific token that in many but not all cases signifies that parsing should end anyway is found? 12:24
i think i made the pod parsing significantly slower :| 12:27
i wonder if it'll finish. 12:28
all it's doing is eat more and more memory, so ... i guess something is happening? 12:31
FROGGS_ if it is perl6 code you could use the debugger 12:32
(which makes it even slower :P)
timotimo no, it's in the Grammar again :| 12:33
it's almost constant at 2.4gb now
i wonder if i could try develop this atop jvm? it would certainly be a bit faster to compile.
but i don't know if i can install Pod::To::HTML there? 12:34
if and how.
FROGGS_ no idea 12:35
can you show a diff?
timotimo oh, since it's a crazy slowdown, i could perhaps get away with not turning it into HTML at all
gist.github.com/timo/d7018f9f3f75321bc9b7 - this is my diff
especially note how it removes the <!before '>'> from the content section 12:36
the +? was after the ] in my last try, too.
FROGGS_ typo: end-teg
last added line
timotimo whoops! 12:37
wow.
that would certainly kill it :)
thanks, i needed that second pair of eyes :)
FROGGS_ :o) 12:38
FROGGS_ btw, you could add a param to token pod_string_character like: pod_string_character($*POD_IN_FORMATTINGCODE = 1), and then pass 1 on line 12 and 15 12:40
this way you dont need to set the dynvar in line 11, 13 and 15
timotimo don't i need to pass that around everywhere in that case?
FROGGS_ no 12:41
ohh, the signature should be pod_string_character($*POD_IN_FORMATTINGCODE = 0)
timotimo sounds good. i'll finish my test cycle first.
FROGGS_ of course
timotimo ah, it'll stay a dynamic variable in that case?
sounds useful, thanks!
FROGGS_ no premature optimization please :o)
yes
seen it somewhere in the grammar
timotimo about to see my results :) 12:42
aaw, crud
"These synonyms can then be inserted into subsequent Pod using the L<{Pod::FormattingCode<3718923960175712333>.type}<> formatting code>|Alias placements."
>_>
FROGGS_ O.o 12:44
timotimo ah, it gets classified as "todo", interesting 12:45
mls Hi! 12:47
JimmyZ hello
mls here's my first try to get rid of the priorInvokation element: gist.github.com/mlschroe/5867111 12:48
timotimo i think i just need to add handling so that C<...> will not cause formattingcodes inside to be parsed 12:50
jnthn commute & 12:52
mls all nqp testcases pass, but I'm not happy about the somewhat "sprinkled" captureouter calls. jnthn++ probably knows a much better place to do it.
FROGGS_ timotimo: is C<...> a separate token?
mls argh, missed him ;)
I'll retry in an hour or so ;)
timotimo no, it's not 12:53
FROGGS_ hmmm, maybe it makes sense to treat pod formatting like q and qq ? 12:54
timotimo i don't know exactly how that's being done
at least there's a range of parameters that defines what gets parsed inside blocks and what doesn't
you can give a =code block an :allows with any subset of the letters A through Z
FROGGS_ you have a nibbler, and roles like q and qq, and depending on what you want to parse you mixin the right rule 12:55
timotimo at least i know now why the output of Damian Conway <L<C<damian@conway.org>|mailto:damian@conway.org>> looks bugged with my changes:
because the input is bugged!
there's no reason for pod to put that second > outside of the L<...>
FROGGS_ yeah
timotimo but now that i've made these changes, i can just use « instead of <
do you think i can make these changes to the docs before the changes to rakudo are merged? 12:56
FROGGS_ these A..Z allow letter sounds pretty much the the quote rules
if you fix the doc, yes
timotimo the docs will renderfail in the non-fixed version of rakudo, though 12:57
FROGGS_ ohhh, hmmm
then I would wait
timotimo it seems like there's another b0rkedness still ... 12:58
FROGGS_ :/
timotimo found the problem! :) 12:59
FROGGS_ \o/
timotimo anyway. yesterday i experimented with different ways to make these letter combinations work and figured out that a single integer as a bitfield is the most workable solution
a list of ones is easier to access, but passing that list on through the dynamic variables made me bang my head on the table a few times too often 13:00
integers are nice, they are kind of atomic, immutable, singlets ... what's not to like?
tadzik Captain's log, stardate 2606201.3. A suspected meteorological phenomena caused the crew to sleep for 14 hours and still feel tired as hell 13:01
good afternoon, #perl6
FROGGS_ hi tadzik
I like ints :o)
timotimo hm, i'm getting lots and lots of unrecognized formattingcodes from pod::to::html, i didn't even know there were that many! 13:04
before: You can use a set of single angles (C«<...>»), a set of double angles («...»), or multiple single-angles (C«<<<...>>>»).
after: You can use a set of single angles (<...>), a set of double angles («...»), or multiple single-angles (<<<...>>>).
\o/
i think this kind of error: C<{Pod::FormattingCode<-8207415112293251889>.type}<>> :comes from suddenly functional formatting codes inside C<...> 13:06
moritz_ it's just LTA stringification of Pod block objects 13:15
timotimo oh, you're right! it's not something new i broke! 13:16
it's something that got rebroken by me
qq{<kbd class="pod2html-todo">{$node.type}&lt;} - yeah, how is that supposed to work exactly? :D
timotimo anyone feel like reviewing my changes to Pod::To::HTML? github.com/perl6/Pod-To-HTML/pull/2 - i consider them pretty much mergable now. the real improvements start happening when the rakudo stuff hits nom, though. 13:43
aw, shucks. B<R<foo> R<bar>> doesn't work any more :| 13:48
FROGGS_ :/ 13:49
timotimo the second R gets parsed as R<bar>> instead of R<bar>
i wonder if i can :my $endstr; and later match $endstr? 13:51
rather than doing the alteration between » and '>'+ and then checking the length of '>'+ vs the length of '<'+ in the beginning
did some macro spectests break while i was working on pod things? 13:52
FROGGS_ nqp: say("abchurzabc" ~~ /:my $t; $<t> :=[\w**3] { $t := ~$<t> } $<middle>=[.+] <$t>/) 13:53
camelia nqp: OUTPUT«Unrecognized regex metacharacter = (must be quoted to match literally) at line 2, near ":my $t; $<"␤current instr.: 'panic' pc 14721 (src/stage2/gen/NQPHLL.pir:5232) (src/stage2/gen/NQPHLL.nqp:279)␤» 13:54
FROGGS_ nqp: say("abchurzabc" ~~ /:my $t; $<t>=[\w**3] { $t := ~$<t> } $<middle>=[.+] <$t>/) 13:54
camelia nqp: OUTPUT«abchurzabc␤»
timotimo nice
that should make the whole process a bit cleaner, perhaps also faster.
FROGGS_ nqp: say("abchurzabc" ~~ /:my $t; $<t>=[\w**3] { $t := ~$<t> } $<middle>=[.+] <$t> { say(~$<middle>) } /)
camelia nqp: OUTPUT«hurz␤abchurzabc␤»
FROGGS_ worx
nqp: say("abchurzabc" ~~ /:my $t; $<t>=[\w**3] { $t := ~$<t> } $<middle>=[.+] <$<t>> { say(~$<middle>) } /)
camelia nqp: OUTPUT«hurz␤abchurzabc␤»
FROGGS_ nqp: say("abchurzabc" ~~ / $<t>=[\w**3] $<middle>=[.+] <$<t>> { say(~$<middle>) } /) 13:55
camelia nqp: OUTPUT«Null regex not allowed at line 2, near ""␤current instr.: 'panic' pc 14721 (src/stage2/gen/NQPHLL.pir:5232) (src/stage2/gen/NQPHLL.nqp:279)␤»
FROGGS_ nqp: say("abchurzabc" ~~ / $<t>=[\w**3] {} $<middle>=[.+] <$<t>> { say(~$<middle>) } /)
camelia nqp: OUTPUT«hurz␤abchurzabc␤»
FROGGS_ see
timotimo nqp: say("<<<".subst("<", ">"))
camelia nqp: OUTPUT«Method 'subst' not found for invocant of class 'String'␤current instr.: '' pc 51 ((file unknown):40) (/tmp/_mXxpffWrH:1)␤»
timotimo nqp: say(nqp::subst("<<<", "<", ">"))
camelia nqp: OUTPUT«Error while compiling block : Error while compiling op call (source text: "nqp::subst(\"<<<\", \"<\", \">\")"): Error while compiling op subst (source text: "nqp::subst(\"<<<\", \"<\", \">\")"): No registered operation handler for 'subst'␤current instr.: '' pc 50797 (src/sta…
FROGGS_ nqp: say("abchurzabc" ~~ / $<t>=[\w**3] {} $<middle>=[.+] < $<t> > { say(~$<middle>) } /) # readability, note that the {} is needed 13:56
camelia nqp: OUTPUT«Unrecognized regex metacharacter < (must be quoted to match literally) at line 2, near " $<t>=[\\w*"␤current instr.: 'panic' pc 14721 (src/stage2/gen/NQPHLL.pir:5232) (src/stage2/gen/NQPHLL.nqp:279)␤»
timotimo oh, don't even need to substitute
FROGGS_ nqp: say("abchurzabc" ~~ / $<t>=[\w**3] {} $<middle>=[.+] <$<t>> { say(~$<middle>) } /) # no readability, note that the {} is needed
camelia nqp: OUTPUT«hurz␤abchurzabc␤»
timotimo nqp: say(">" xx 4)
camelia nqp: OUTPUT«Confused at line 2, near "say(\">\" xx"␤current instr.: 'panic' pc 14721 (src/stage2/gen/NQPHLL.pir:5232) (src/stage2/gen/NQPHLL.nqp:279)␤»
timotimo nqp: say(">" * 4)
camelia nqp: OUTPUT«0␤»
timotimo nqp: say(">" xx 4)
camelia nqp: OUTPUT«Confused at line 2, near "say(\">\" xx"␤current instr.: 'panic' pc 14721 (src/stage2/gen/NQPHLL.pir:5232) (src/stage2/gen/NQPHLL.nqp:279)␤»
timotimo er, how do?
nqp: say(nqp::repeat(">", 4))
camelia nqp: OUTPUT«Error while compiling block : Error while compiling op call (source text: "nqp::repeat(\">\", 4)"): Error while compiling op repeat (source text: "nqp::repeat(\">\", 4)"): No registered operation handler for 'repeat'␤current instr.: '' pc 50797 (src/stage2/QAST.pir:18547) (s…
FROGGS_ nqp: say(nqp::repeat("x", 4))
camelia nqp: OUTPUT«Error while compiling block : Error while compiling op call (source text: "nqp::repeat(\"x\", 4)"): Error while compiling op repeat (source text: "nqp::repeat(\"x\", 4)"): No registered operation handler for 'repeat'␤current instr.: '' pc 50797 (src/stage2/QAST.pir:18547) (s…
FROGGS_ there was an op.... 13:57
hmmm
timotimo nqp::repeat seems to exist somewhere
nope.
FROGGS_ no
timotimo will need to write a loop. 13:58
is there no for loop in nqp, btw? there's no range operator at least.
FROGGS_ nqp: say(x("a", 4)) 14:01
camelia nqp: OUTPUT«Could not find sub &x␤current instr.: '' pc 47 ((file unknown):138690247) (/tmp/vBfw5Ajt6j:1)␤»
FROGGS_ nqp: say(nqp::x("a", 4))
camelia nqp: OUTPUT«aaaa␤»
FROGGS_ timotimo: ^^
timotimo ah, neato :) 14:02
timotimo FROGGS_: can you explain what the {} is for? 14:06
also, i don't have the option to use <$<t>> or something, because i want to derive a string to be matched from a previous string 14:07
FROGGS_ it is a code block basically, and I think the match variables will be computed at that time 14:08
timotimo ah, ok
FROGGS_ (that is a bug btw)
timotimo but i've already got a code block there with things in it
nqp: say "C<<< foo bar >>>" ~~ / :my $end; C $<start>=['<'+] { $end := nqp::x(">", nqp::chars($<start>)); say($end) } \N+? <$end> /; 14:09
camelia nqp: OUTPUT«Confused at line 2, near "say \"C<<< "␤current instr.: 'panic' pc 14721 (src/stage2/gen/NQPHLL.pir:5232) (src/stage2/gen/NQPHLL.nqp:279)␤»
timotimo nqp: say("C<<< foo bar >>>" ~~ / :my $end; C $<start>=['<'+] { $end := nqp::x(">", nqp::chars($<start>)); say($end) } \N+? <$end> /); 14:09
camelia nqp: OUTPUT«>>>␤Unrecognized regex metacharacter > (must be quoted to match literally) at line 2, near ">>>"␤current instr.: 'panic' pc 14721 (src/stage2/gen/NQPHLL.pir:5232) (src/stage2/gen/NQPHLL.nqp:279)␤»
timotimo oh, do i need to generate valid regex in the string?
nqp: say("C<<< foo bar >>>" ~~ / :my $end; C $<start>=['<'+] { $end := "'" ~ nqp::x(">", nqp::chars($<start>)) ~ "'"; say($end) } \N+? <$end> /);
camelia nqp: OUTPUT«'>>>'␤C<<< foo bar >>>␤»
timotimo neato :)
nqp: say("C<<< foo bar >>>>>>" ~~ / :my $end; C $<start>=['<'+] { $end := "'" ~ nqp::x(">", nqp::chars($<start>)) ~ "'"; say($end) } \N+? <$end> /); 14:10
camelia nqp: OUTPUT«'>>>'␤C<<< foo bar >>>␤»
timotimo that's also exactly how i want this to work :D 14:11
FROGGS_ yeah, that's cool 14:12
PerlJam timotimo: why \N ? Can't formatting codes span lines? (or was that just for camelia's sake?) 14:13
timotimo yes, it can. this is just shortening for camelia 14:18
Missing or wrong version of dependency '<unknown>' ......
FROGGS_ -.- 14:19
timotimo make clean'd just in case 14:21
cognominal o/ all-* people 14:25
timotimo i don't know what i've done to cause this strange error :| 14:27
cognominal I have a question. How SO5 PEG rules applies when a rule is not left anchored. Can a longest string match can win over a shorter one if its start position is greater than the short string? 14:28
timotimo ah, Term::ANSIColor breaks it apparently 14:29
moritz_ cognominal: no
cognominal: left-most match is more important than longest token
cognominal so that should be rule 0 in github.com/perl6/specs/blob/master...ex.pod#L45 ?
moritz_ ? 14:30
moritz_ not really, it applies well before the pecking order mentioned there
it's not an ambiguous parse
cognominal Depends on the defenition of ambiguous parse :) 14:31
timotimo is the definition of ambiguous parse ambiguous? 14:32
cognominal timotimo: I am not sure it is even given anywhere
My initial question was falsely naive. I was almost sure about the answer but in a spec so called obvious things must be stated explicitely. 14:35
hoelzro could other people +1 my PR for pygments.rb? github.com/tmm1/pygments.rb/pull/73 14:36
cognominal I understand that historically synopses build on Perl 5 knowledge by difference but eventually synopses must be self contained.
hoelzro the author decided to rear his head yesterday, and I don't want him to continue to ignore it.
cognominal hoelrzro, is there examples of docs usings your pygment lexer ? we can't just blindly +1 it. 14:39
hoelzro cognominal: you use it just like any other pygments lexer 14:40
you just provide language = 'perl6' 14:41
JimmyZ we had a js highlighter for perl6, fyi
hoelzro I wrote a Perl 6 highlighter for pygments so that Perl 6 code may be highlighted on GitHub
it's in the main pygments (python) repo already, but getting it into pygments.rb is the next step towards GH citizenship 14:42
bbkr hoelzro++
cognominal I don't care how I use it because I don't want to go to the trouble right now. I just want to see a non trivial page that use it so I can +1 if I am convinced.
hoelzro cognominal: I would say that GitHub highlighting for Perl 6 files isn't trivial =) 14:43
JimmyZ Is it js highlighter in mu repo?
cognominal hoelzro: you don't answer my question. I want to see a html page that demonstrates Perl 6 highlighting on a complex Perl 6 file. 14:47
hoelzro oh 14:48
I misunderstood
cognominal So far, all highlighting goes astray
hoelzro cognominal: how's this: hoelz.ro/files/perl6-pygments.png
cognominal nice but this does not qualify yet . I want to see heredoc, complex quoting, complex string interpolations (like methods call) 14:50
hoelzro cognominal: would you mind writing up an example? I'd be happy to run the highlighter on it and post the results!
cognominal sure. Not a complete one but a challenging one. 14:51
hoelzro sweet =)
FROGGS_ BATTLE!!! 14:52
timotimo oh lord. i typed in the command to do a spectest run and went AFK for fifteen minutes, come back to see that i forgot to hit return on the command 14:53
FROGGS_ hoelzro: I could give you some P6/P5 code mix to highlight :P
[Coke] is the autosplitter java only?
FROGGS_ -.-
[Coke]: think so, yes
[Coke] timotimo: if it's java, you didn't lose much time!
hoelzro FROGGS_: hmm...that brings up a great point. I don't think the highlighter handles that *at all*
timotimo nope, it's on parrot.
FROGGS_ hoelzro: nvm, I dont think that this is a common case within the next one or two years 14:54
hoelzro it's good to prepare for, though
FROGGS_ timotimo: the autosplitter is on parrot? sure? 14:55
hoelzro: having it pluggable like the slangs would make sense (use COBOL)
hoelzro looks at slang docs 14:56
cognominal hoelzro, gist.github.com/cognominal/5868054
that's a short one but a challenging one.
timotimo JimmyZ: the js highlighter has this to say about itself: github.com/perl6/mu/blob/master/mi...erl6.js#L9 14:57
FROGGS_: why are we thinking about the autosplitter?
this is for my pod work ;)
cognominal btw, I am not sure that pygment has a css class for interpolation in strings
FROGGS_ timotimo: that was [Coke]++'s question
timotimo oh
anyway, i've already reached S32 14:58
cognominal hoelzro: I want you to succeed doing hilighting but I am not sure pygment is the tool for that.
FROGGS_ I am a lvl86 dwarf
hoelzro cognominal: hoelz.ro/files/perl6-pygments4.png
cognominal hoelzro, Perl 6 is so challenging.
hoelzro keep in mind that the pygments standard is not to highlight interpolated vars 14:59
the Perl 5 lexer does this as well
FROGGS_ hoelzro++
hoelzro oh, I know P6 is challenging. It took me a long time to "perfect" the lexer
cognominal hoelzro, that's my point
hoelzro but I feel pretty good about its state
FROGGS_ does it handle heredocs as parts of sub calls too? 15:00
hoelzro let's see
cognominal hoelzro. is it able to recognize the end of the heredoc?
hoelzro yes
timotimo cognominal: if we want syntax highlighting on github, there is no other way than to make a pygments highlighter. 15:01
i'm pretty sure github will not let us deploy a perl6-to-js-translated STD.pm6.js for our niche language.
hoelzro FROGGS_: unfortunately not =/
cognominal timotimo: ha, ok. So the focus is to get something good enough on github.
hoelzro yes 15:02
I thought I'd mentioned that =)
timotimo i thought he'd mention that as well
timotimo so i'm currently working on the pod stuff and i've stumbled upon V<C<boo> B<bar> asd> 15:02
cognominal ok, so I agree that I must ++ it. 15:03
timotimo is there any reason whatsoever for <...> inside V blocks to have to be balanced?
hoelzro \o/ 15:04
cognominal hoelzro, I added my positive comment.
hoelzro cognominal: thanks!
(and thanks to the others that +1'd as well!)
cognominal you are welcome.
hoelzro++
timotimo because i'm pretty sure if you want to have C<boo> inside a V<...>, you'll just use V<< >> instead or V« » (and this test just used it that way because <<... and « were NYI) 15:05
cognominal hoelzro, sorry about my Saint Thomas attitude 15:06
hoelzro it's cool
my solicitation was kind of out of context =)
benabik would think that whatever brace you use for the V should be balanced or non-existant inside it.
timotimo cognominal: "we need perl 6 highlighting in github" sounds a bit strong ;)
timotimo reads the specs more carefully 15:07
timotimo ah, indeed 15:08
this complicates things :|
timotimo dayum, pod6 is kinda complicated. 15:09
cognominal timito: I think Perl 6 not highlighted in github marks it as an irrelevant language.
FROGGS_ yepp
benabik Why should the doc format be any simpler than the language itself. ;-)
timotimo oof, keeping track of what may be balanced and what mustn't inside deeply nested formattingcodes is *not* going to be easy 15:11
FROGGS_ timotimo: have a look at the nibbler 15:12
[Coke] wonders if sorear is going to get this fix in to run more spec tests in the next 40min. :) 15:15
timotimo that's surprisingly simple! 15:17
JimmyZ timotimo: thanks, I found another github.com/perl6/std/tree/master/std_hilite 15:25
timotimo oh, interesting
timotimo i don't understand how it works 15:26
i don't see a grammar in there
FROGGS_ I guess it is using the STD_P5.pm6 grammar 15:28
timotimo but how?
i don't see a mention of it anywhere
FROGGS_ ask him :o)
JimmyZ hoelzro: nice, I was just +1 to there 15:29
hoelzro JimmyZ: great, thanks!
JimmyZ hoelzro: thanks for your work! 15:29
hoelzro happy to be of help =)
timotimo oh, i get it 15:30
it's not js code that does the highlighting
you have to preprocess code with a running perl.
lizmat back from robocup 15:54
thinking more about S11, I was thinking that maybe we should put the auth/ver information of a compunit in pod
as it is needed only during installation of a file, really
because from then on, the "database" will contain all the necessary information to select the compunit 15:55
timotimo Standard semantic blocks include: =NAME =VERSION =DEPENDENCY =AUTHOR - like those?
lizmat during compiletime / runtime 15:56
yup
lizmat doesn't that make sense? 15:56
timotimo dunno, those blocks would have to be standardised 15:57
timotimo so ... inside <<, only sequences of << have to be balanced, right? 15:59
and inside « » any sequence of < and > may appear, balanced or otherwise 16:00
but if i have I«C<<< ... >>>», inside the C, there can only be imbalanced < and <<, but not <<<?
so it only goes "a level deep" if there's a new formatting code?
tadzik gist.github.com/tadzik/5868712 16:02
might interest someone :)
timotimo hey, that's neat! 16:03
tadzik it still needs support for typed arrays to make any sense
timotimo commute& 16:04
tadzik also throws nice exception on missing fields, like "Type check failed in assignment to '$!race'; expected 'Str' but got 'Nil'". I like how Perl 6 gives them for free 16:04
tadzik r: class A { has Int @.b }; say A.^attributes[0].type.perl 16:10
camelia rakudo e63ebb: OUTPUT«Positional␤»
tadzik that's bad. I don't see a way to know that it's of type Int
jnthn: ^
lizmat r: class A { has Int @.b }; say A.^attributes[0].of 16:14
camelia rakudo e63ebb: OUTPUT«No such method 'of' for invocant of type 'Attribute'␤ in block at /tmp/mQAv2yAA2B:1␤␤»
lizmat seems to me Attribute needs an "of" method?
tadzik I suppose the above Positional should just say Positional[Int] or such 16:15
it works for scalars alright:
r: class A { has Int $.b }; say A.^attributes[0].type.perl
camelia rakudo e63ebb: OUTPUT«Int␤»
tadzik may be NYI
lizmat wonders why it is called "type" there, while it is "of" in other places 16:17
tadzik what other places? 16:18
gfldex did anybody use Grammar::Debugger successfully lately? 16:19
tadzik I usually use Grammar::Traces
* tracer 16:20
but not recently
lizmat why it is .type: Attribute.HOW.add_attribute(Attribute, BOOTSTRAPATTR.new(:name<$!type>, :type(Mu), :package(Attribute)));
tadzik yeah. But where is it .of? 16:21
timotimo i was not able to compile the debugger lately 16:22
lizmat r: my Int @a; say @a.of
camelia rakudo e63ebb: OUTPUT«(Int)␤»
tadzik oh
lizmat r: my @a of Int; say @a.of
camelia rakudo e63ebb: OUTPUT«(Mu)␤»
timotimo tadzik, your interpretation of formatting code nesting; does it match mine as stated above?
lizmat of xxx apparently is NYI
dalek ast: d770a94 | (Solomon Foster)++ | S32-io/io-path.t:
Refudge for Niecza.
16:23
lizmat but I guess that's the reason for the .of method
tadzik timotimo: yes, that matches my understanding of it
dalek ecs: cf6767c | (Cédric VINCENT)++ | S99-glossary.pod:
Add TTIAR entry in S99-glossary.pod
dalek kudo/nom: 5c0dae4 | tadzik++ | src/core/Attribute.pm:
Nicer Attribute.gist
16:24
tadzik yay, I commited to rakudo
dalek ecs: 896dcf3 | (Elizabeth Mattijsen)++ | S99-glossary.pod:
Expanded some acronyms
16:33
timotimo tadzik: can i put an I«…» into a B<> and put arbitrary combinations of <> into the inner I? 16:36
timotimo that would make things simpler at least. 16:39
Guest5246 helo 16:40
lizmat hi Guest5246! 16:41
lizmat latest spectest I just ran, has some error that it didn't have before 16:47
timotimo macro errors?
lizmat t/spec/S06-macros/opaque-ast.t
timotimo phew. i thought i broke those!
lizmat t/spec/S06-macros/quasi-blocks.t
t/spec/S06-macros/unquoting.t 16:48
shall I gist the errors for you?
timotimo has no need for them; i have them locally, too, but not in my shell scrollback
lizmat Method 'evaluate_unquotes' not found for invocant of class 'String' 16:49
they all have the same error 16:50
GlitchMr rn: my $a = 4; if $a = 2 { say "Hello, world!" } 17:15
camelia rakudo 5c0dae, niecza v24-86-g39ab531: OUTPUT«Hello, world!␤»
GlitchMr std: my $a = 4; if $a = 2 { say "Hello, world!" }
camelia std d4cc5ab: OUTPUT«ok 00:01 44m␤»
GlitchMr While this isn't error, I think this case should have warnings, just like Perl 5 had.
GlitchMr Assigning constant to variable and checking "if" is never what you meant. 17:16
ugexe how do i push a hash into an array without flattening it? 17:18
lizmat push @array, %hash 17:19
?
ugexe that pushes the key value pairs
timotimo push @array, %hash.item 17:20
lizmat indeed…
r: my @a; my %h; push @a, $(%h); say @a.perl
camelia rakudo 5c0dae: OUTPUT«Array.new({})␤»
lizmat need to itemize it with $()
ugexe ah
lizmat r: my @a; my $h=Hash.new; push @a, $h; say @a.perl
camelia rakudo 5c0dae: OUTPUT«Array.new({})␤» 17:21
timotimo .item doesn't work?
r: my @a; my %h = 1 => 2; push @a, %h.item; say @a.perl
camelia rakudo 5c0dae: OUTPUT«Array.new({"1" => 2})␤»
timotimo that works, too
lizmat r: my @a; my %h; push @a, %h.item; say @a.perl
camelia rakudo 5c0dae: OUTPUT«Array.new({})␤»
lizmat yup, one is just syntactic sugar for the other, or they're both syntactic sugar :-)
depends on how you look at it 17:22
ugexe sweet, thanks
moritz_ see also doc.perl6.org/type/List
GlitchMr std: << 17:23
camelia std d4cc5ab: OUTPUT«===SORRY!===␤Unable to parse shell-quote words at /tmp/zk2_BLkECV line 1:␤------> <BOL>⏏<<␤Couldn't find final '>>'; gave up at /tmp/zk2_BLkECV line 1 (EOF):␤------> <<⏏<EOL>␤Parse failed␤FAILED 00:00 41m␤»…
lizmat r: my $a=Array.new; my @a; say $a.perl; say @a.perl # wonders whether there is some kind of mixup here 17:28
camelia rakudo 5c0dae: OUTPUT«[]␤Array.new()␤»
timotimo tadzik, feel like looking over my pod::to::text changes? 17:34
dalek ecs: e0c90ef | (Elizabeth Mattijsen)++ | S26-documentation.pod:
Some background for new S11
17:42
ecs: 49c6564 | (Elizabeth Mattijsen)++ | S99-glossary.pod:
Added API
lizmat dinner& 17:46
tadzik timotimo: I will, yes 17:49
timotimo: as for the preios question, I suppose that should work
and probably doesn't at this moment :) 17:50
timotimo tadzik: that's what i'm trying to make work at the moment 18:03
tadzik ossom 18:18
timotimo i'm getting a Assignment ("=") not supported in NQP, use ":=" instead at line 567, near "> 1 }>\n " where i don't actually seem to use a = 19:00
m) 19:01
=> instead of >=
lizmat NQP only does binding 19:05
aka :=
timotimo yes, the problem was that i didn't see where i put the accidental =
dalek ecs: 199df7e | (Elizabeth Mattijsen)++ | S26-documentation.pod:
Bring in line with S11 to come
19:17
cognominal jnthn : github.com/jnthn/grammar-debugger/issues/4 19:18
timotimo my parsing is progressing. except there's a strange bug in it. 19:33
dalek ecs: 431f3d3 | (Elizabeth Mattijsen)++ | S26-documentation.pod:
Some more addition for S11
19:47
ecs: 1691d9e | (Elizabeth Mattijsen)++ | S11-modules.pod:
Take 2 at unslushing S11

Highlights:
   - unit statement no longer exists, pod is now used to specify meta-information
   - eradicated the use of "namespace", use "package" instead
   - introduction of repository, with @*INC containing CompUnitRepo objects
   - completely removed dir/file dependency, except for CompUnitRepo::Local::File
   - -I now unshifts CompUnitRepo::Local::File object in @*INC
lizmat *phew* 19:48
lizmat hopes to restart discussion
on S11, that is
sorear o/ 19:49
timotimo hola sorear
lizmat sorear! 19:50
sorear ¡hola! ¡hola! 19:51
timotimo parsing blind is hard :( 19:56
flussence lizmat: this stuff looks good, does it mean the "class Foo:auth<bar>" syntax is also going away in favour of Pod? 20:00
lizmat yes, that's the idea 20:01
of course, use Foo:auth<bar> will stay
flussence sounds like a good reason to start actually putting docs in my code :)
lizmat that was the idea, and the version will automatically be up to dat ;-) 20:02
*date
timotimo has finally made a breakthrough 20:10
copied a bit of code from a token where there was a $<begin-tag> into a token where there is a $<start>
close, but no cigar
i had the debug output that should have raised a red flag for about 4 cycles, but didn't realize what was going on >_> 20:12
ooooh yeah! :))) 20:14
lizmat is glad as well 20:15
timotimo hey, i can *actually* develop my pod improvements on the jvm 20:26
i should have done this from the start >_<
so much time i could have saved
and now i'll see if the rendering of S26-documentation.pod works properly 20:27
does nqp have a say-replacement that logs to stderr?
r: nqp::note("testing?");
camelia rakudo 5c0dae: OUTPUT«===SORRY!===␤Error while compiling block (source text: "nqp::note(\"testing?\");"): Error while compiling op call: Error while compiling block : Error while compiling op note: No registered operation handler for 'note'␤»
timotimo i'd like such an op, tbh 20:28
dalek ecs: 0f0f99a | (Elizabeth Mattijsen)++ | S99-glossary.pod:
Some more glossary lemmas added / updated
PerlJam
.oO( why is the glossary S99 instead of S00? )
20:32
benabik PerlJam: Because the glossary goes in the back? 20:34
lizmat that was my idea as well, it goes in the back 20:35
it is not required reading beforehand
:-)
PerlJam I don't know ... The Synopses are littered with ordinary-ish words used in very specific ways that are liable to confuse the poor reader unless they'd at least looked through the glossary. 20:38
(or been a denizen of #perl6 for a while)
lizmat actually, I also intend it for denizens of #perl6, not just for Synopses lurkers :-) 20:40
PerlJam That just makes me think that it should be required reading even more :) 20:41
lizmat I'm not sure the explanation of autopun cuts it yet
timotimo i fear i'm getting crazy backtracking in my pod grammar :( 21:00
timotimo figured out what's wrong 21:04
FROGGS_ what was it? 21:12
timotimo i started requiring any < sequences at all to be balanced, not only inside formattingcodes 21:13
but it's still terribly slow 21:14
timotimo the parser is finding all manner of balanced braces in the code, but not very many formatting codes 21:14
perhaps S26-documentation.pod is just partially improperly nested? 21:15
lizmat wouldn't be surprised
dalek p: 5237853 | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/jast2bc/AutosplitMethodWriter.java:
fragment code generation
timotimo oh yeah! :) 21:16
lue hello world o/
timotimo oh yikes
"finished a formatting code S", "finished a formatting code E" xx 100, "finished a formatting code D"
oh, i know where that is from 21:17
dalek : 3f63eed | (Tobias Leich)++ | / (4 files):
fix prefix `not`, add .P5Bool and fix regex modifier `g`
21:18
: 646276d | (Tobias Leich)++ | t/test.pl:
fix sub `is` for arguments of type Any
timotimo i think it'll be finished soon and i'll see what it's doing wrong
it seems like it's parsed prefectly 21:20
except it took about 10x as long :(
FROGGS_ :/ 21:21
timotimo [2a02:8071:2909:7b00:5604:a6ff:fe93...n.pod.html if you're interested in looking for errors 21:25
Anything enclosed in an C<N<>> code is an inline B<note>. - this seems to be misparsed :( 21:26
lee_ fyi rakudo-jvm is failing to build for me with this error: gist.github.com/leedo/5871909 21:31
lee_ (was building fine yesterday) 21:32
timotimo you need to get a newer nqp for that
the op was added recently
lee_ hmm, ok. thought i was all up-to-date. but perhaps it is not installing correctly
timotimo i suggest cd nqp && make && make install && cd .. && make 21:33
lee_ doh, yes that was it
i re-ran ConfigureJVM without the prefix arg
timotimo ah :)
lee_ thanks!
timotimo this thing i've started here is apparently too much for my tiny brain 21:34
lue faintly recalls someone adding N<> when he used it in a Pod6 document.
tadzik newer nqp, heh. I need a newer IP for seeing that ;P 21:36
timotimo fails to explain the fix
running a new attempt now
i hope it won't take the same time it did last time :(
lue tries to get firefox to understand The Future™ (IPv6) 21:40
timotimo already up to 1.9 gb 21:41
ssutch chrome also refuses to recognize the url 21:42
timotimo it should work exactly like that
of course only if you already have ipv6 connectivity
(at the moment it's unfinished, so only a bunch of debug output that should have gone to stderr instead)
ssutch cl.ly/image/2x2Y1M0A0p0G
timotimo can you ping6 the ipv6? 21:43
2.5gb
it feels like it's parsing lots and lots of balanced texts even if it isn't inside a formattingcode ,but i thought i just fixed that :| 21:44
lue Can't even ping6 ipv6.google.com (I can ping ::1 though). My ISP appears to be LTA 21:47
dalek ecs: da1d9ca | (Elizabeth Mattijsen)++ | S99-glossary.pod:
Less Than Awesome
21:54
lue :)
timotimo runs another test :( 21:55
tadzik ooh, S99
lue has never seen GIT mean get it together on #perl6 21:58
flussence timotimo: I think IPv6 and/or the firewall is acting up on your end
timotimo on my end?
i don't think so.
wakelift.wakelift.de.ipv4.sixxs.org/
(that is the same address)
(but unfortunately not the right port) 21:59
flussence that one worked...
lizmat lue: artistic license, patches welcome
flussence (but that's a v4 and it seems to just be sixxs' proxy server) 22:00
lue I think I'll leave it and add 'git' as our favorite VCS.
flussence I definitely have working connectivity on my end so... *shrug*
timotimo *groan* 22:01
it appears i've written a { ... } where i meant to write a <?{ ... }
>
dalek ecs: a1c99c7 | duff++ | S99-glossary.pod:
[S99] invocant, pad
timotimo i'm not making it easy for me
flussence I wish we had something that showed a realtime heatmap of running code, like rxrx does... 22:03
tadzik rxrx? 22:04
timotimo i don't know what that is :(
flussence p5 regex debugger thing, there's a demo of it on youtube iirc 22:09
timotimo ooooh 22:10
sorear duff = PerlPilot? 22:11
timotimo i fear the pre-nested-formattingcodes version will run circles around the new version :(
tadzik sorear: I think so
timotimo yeah, it very much so does :(
(0avgtext+0avgdata 397220maxresident)k - when not caring about nestedness
2.6gb resident set size on the other computer which isn't even finished yet 22:12
that's crazy, i'm clearly doing something very wrong.
timotimo fer chrissakes, it's even *wrong* now :| 22:14
FROGGS_ I'd suggest you stop for today :/ 22:17
lizmat inspiration a good night's rest will bring 22:18
timotimo i've identified the mistake that led to this very problem
just 5 more minutes!
tadzik :)
flussence yay 22:19
FROGGS_ okay :o)
timotimo don't think i'll get a 'working' version now, though. 22:20
sorear curious what the mistake was 22:21
timotimo i had <$endtag> <!before '>'>, which i then turned into <$endtag>, where in reality it should have been <!after '>'> <$endtag>
i hope i didn't have to write <!before> there 22:22
my little test case will now be executed.
FROGGS_ I'm goign to bed... gnight
timotimo nope, wrong again
gnite FROGGS_ :)
Array.new(Pod::Block::Named.new(name => "pod", config => ().hash, content => Array.new(Pod::Block::Para.new(config => ().hash, content => Array.new("", Pod::FormattingCode.new(type => "C", config => ().hash, content => Array.new("N<")), ">")))))
nqp: "foo bar" ~~ { $<foo>=['foo'] { say(nqp::chars($<foo>)) } } 22:23
camelia nqp: OUTPUT«Assignment ("=") not supported in NQP, use ":=" instead at line 2, near "['foo'] { "␤current instr.: 'panic' pc 14721 (src/stage2/gen/NQPHLL.pir:5232) (src/stage2/gen/NQPHLL.nqp:279)␤»
timotimo nqp: "foo bar" ~~ rx{ $<foo>=['foo'] { say(nqp::chars($<foo>)) } }
camelia nqp: OUTPUT«Assignment ("=") not supported in NQP, use ":=" instead at line 2, near "['foo'] { "␤current instr.: 'panic' pc 14721 (src/stage2/gen/NQPHLL.pir:5232) (src/stage2/gen/NQPHLL.nqp:279)␤»
timotimo nqp: "foo bar" ~~ / $<foo>=['foo'] { say(nqp::chars($<foo>)) } / 22:24
camelia nqp: OUTPUT«3␤»
timotimo hm, weird, that should have been right
timotimo nqp: say("foo bar" ~~ / <!after ' '>bar /) 22:24
camelia nqp: OUTPUT«␤»
timotimo nqp: say("foo bar" ~~ / <!after 'a'>bar /) 22:25
camelia nqp: OUTPUT«bar␤»
timotimo yeah, that should be right
OH 22:28
*OH*
i had a + where a * would have been correct
i'm making *all* the mistakes today. wow.
yet another step towards eventual correctness! wow.
sorear timotimo: are you sure <$endtag> shouldn't be $endtag ? 22:29
<$endtag> means to eval the contents of $endtag as a regex
$endtag is a literal string
I'm not sure you want to be evalling anything in this code
timotimo i didn't know i could just write $endtag 22:30
thanks!
i bet that will make a big difference in ram usage and speed, too!
lizmat inspiration a good night's rest will bring, lizmat repeats 22:31
timotimo no, inspiration an attentive sorear will bring 22:32
dalek ecs: b44c0b1 | (Elizabeth Mattijsen)++ | S99-glossary.pod:
More lemma's and more explanations
timotimo sorear: say, is your fragment code generation working? :)
lizmat takes her own advise, she will& 22:33
timotimo :) good night! 22:34
sorear timotimo: sort of? It does generate code fragments 22:36
timotimo and the verifier supposedly makes sure those fragments will work together like the original did, right? 22:37
timotimo perl6 --doc=HTML specs/S26-documentation.pod > 68.46s user 0.26s system 99% cpu 1:09.06 total - much better than before, hopefully also correct this time. 22:43
(but still there are mistakes)
sorear timotimo: it chops the function into segments, then modifies each segment so that at each external jump, it generates code to save and restore local variables to an Object[] 22:47
the verifier is needed to get the types so that the correct casts can be generated in the restore
timotimo yeah 22:48
so, does it cause the huge test files to work properly now? :)
sorear no
timotimo aaw
i'm very glad you told me about $foo instead of $<foo> 22:51
er, <$foo>
sorear makes a big difference huh? 22:52
timotimo yeah
it seems like it uses way less ram, too
probably because each time it had a value it would create a new regex instance/class? 22:53
ooooooh snap! it seems to work! :D 23:01
how is that even possible?!
now to render the whole S26 with this code
tadzik awesome! 23:03
timotimo aaw hell no :( 23:05
it choked on nested formatting codes *again*
timotimo i changed nothing and thus made it work. i feel good now. 23:10
tadzik: if you have v6 connectivity: [2a02:8071:2909:7b00:5604:a6ff:fe93...n.pod.html 23:14
tadzik I have, but only at $work 23:15
so I can check it out tomorrow :)
I didn't find time to review your patch today, sorry :( 23:16
lue should perhaps look into one of those 6-to-4 things for the time being
timotimo you will only be able if i keep the computer running 23:17
but i can upload the result somewhere
i almost lost my code to cd .. <Return> <Up> <Return> 23:18
where the <Up> pulled in a git reset --hard
tadzik uh
timotimo fortunately i had all changed files open in vim via sftp
flussence timotimo: sorry, I think v6 is screwed up on *my* end. Just tried from my server and it worked fine. 23:22
timotimo yeah, i know.
hm, parsing something to keep newlines and spaces in the result isn't implemented yet? 23:23
sorear no ipv6 in the usa
pretty much
timotimo wat. 23:25
flussence hm, maybe it's the 2a02 that confuses it... I see a 2002/16 and 2000/3 on my router so one must be confusing it. 23:26
timotimo tadzik, flussence: t.h8.lv/S26-documentation.pod.html 23:38
this is ipv4 for you legacy people :) 23:39
flussence the frustrating part is I can get a *ping* response, just not a http one... 23:40
timotimo perhaps the port is blocked for you? 23:41
at least you have a v4 version now to look at my nice output
(hopefully you'll like it)
lue
.oO( s/legacy people/people with LTA ISPs/ , I've set up my linux for IPv6 iirc)
timotimo the hardest part is still before me :| 23:43
making =allow work |:
lue looks good so far. timotimo++
sorear cute
timotimo thanks :) 23:44
flussence timotimo++ # looks much better than where I left s26.html at
tadzik timotimo: cute! 23:45
timotimo it seems like paras will now tend to create contents arrays starting and ending with "" 23:46
did i make a regression that cause dthat?
tadzik no
timotimo and arrays of a single piece of text, is that a regression?
tadzik Twines should always start and end with strings 23:47
timotimo ah, great
tadzik even if those are ""
timotimo it'll be pretty hard to make :allow work properly in conjunction with the code blocks
can i pick your brain a bit on that, tadzik?
tadzik timotimo: yeah, but not today, I'll be sleeping soon :) 23:48
timotimo oh 23:50
just tell me one thing
tadzik ok
timotimo how do i handle =end foobar inside =code blocks?
tadzik you don't
timotimo for example if they are flush with the left side
so the only thing that isn't allowed after a =begin code is =end code at the beginning of a lin?
tadzik at the same level of indentation 23:51
(as begin)
timotimo right
tadzik yep, correct 23:52
timotimo i'll try to go on in that case.
tadzik good knight timotimo :)
timotimo good night tadzik! 23:53
lue would like Pod::To::HTML to indent implicit code blocks in the output like the Pod5 converter does. 23:54
timotimo which are those implicit code blocks again?
lue Indented lines in the middle of a =para or =pod block (S26:861) 23:57
(Not sure if explicit code blocks should do the same, and in any case it shouldn't be too difficult to make CSS fake the indentation anyway) 23:59