»ö« 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.
dalek ast: 29f36af | (David Warring [email@hidden.address] | integration/advent2012-day23.t:
adding advent 2012 day 23
00:58
raiph m: grammar G { rule TOP { <a> }; rule a { <b> }; rule b { <c> }; rule c { $<d>=x } }; G.parse('x'); say $<a><b><c> 01:27
camelia rakudo-moar fd5f8e: OUTPUT«「x」␤ d => 「x」␤␤»
BenGoldberg m: grammar G { rule TOP { <a> }; rule a { <b> }; rule b { <c> }; rule c { $<d>=x } }; G.parse('x'); say $<a><b><c><d> 01:29
camelia rakudo-moar fd5f8e: OUTPUT«「x」␤␤»
raiph That was a ww -- I meant that to be private 01:31
Fwiw I'm looking for a nice and brief way to create a less nested parse tree, short of using actions/make 01:32
lue r: say "aa" ~~ /a ** 2/; say "aa" ~~ /<{"a ** 2"}>/; # huh 04:06
camelia rakudo-jvm fd5f8e: OUTPUT«Unhandled exception: java.lang.RuntimeException: Missing or wrong version of dependency 'src/Perl6/Grammar.nqp'␤ in (gen/jvm/main.nqp)␤␤»
..rakudo-{parrot,moar} fd5f8e: OUTPUT«「aa」␤␤===SORRY!=== Error while compiling eval_0␤Quantifier quantifies nothing␤at eval_0:1␤------> anon regex { ^a\c[32]**⏏\c[32]2}␤ expecting any of:␤ scoped declarator␤ n…»
moritz \o 06:29
raiph hi moritz 06:30
Woodi_ hallo everyone :) 06:35
raiph hi woodi 06:36
Woodi_ when I install nqp on moarvm it will install into some /*/*/nqp-201404 prefix or into moar like on parrot ?
FROGGS_ Woodi_: the binary is in the same directory where nqp-p is 06:52
modules will go into a different path, but still under prefix of course 06:53
Woodi_ but I'm asking about nqp itself :) is nqp on moar installed into sone lib/ in moar prefix (like on parrot) ? 06:54
Woodi_ ls -r moar-prefix|grep nqp shows something ? 06:55
hmm, grep -r works better... 06:56
Woodi_ just testing star-rc and do not want to mess with reinstalling things with bad prefixess... 06:59
another way: do nqp using moar is full software-package-like with it *own* prefix or it is installed into moar guts ? 07:01
FROGGS_ Woodi_: everything (nqp on every backend, perl6 on every backend, all libs and modules) are installed under --prefix 07:25
FROGGS_ which defaults to 'install' 07:26
so, it will be in rakudo-star-2014.04/install for example, or just rakudo/install if you cloned the compiler only 07:27
FROGGS_ moritz / jnthn: this could mention moar/jvm as well, right? gist.github.com/FROGGS/85fa321b585cf3c7df05 07:28
Woodi_ grrr... developers... 07:30
Woodi_ thanx FROGGS++ :) 07:30
FROGGS_ :o) 07:31
moritz FROGGS_: aye, it should 07:40
Woodi_ rakudo from star201404-rc cannot find "clean" make target after configure 07:48
FROGGS_ Woodi_: you can just continue, I need to figure out where that comes from 07:52
masak mornin', #perl6 08:07
masak pm: say "aa" ~~ /a ** 2/; say "aa" ~~ /<{"a ** 2"}>/; # huh 08:08
m: say "aa" ~~ /a ** 2/; say "aa" ~~ /<{"a ** 2"}>/; # huh 08:09
camelia rakudo-moar fd5f8e: OUTPUT«「aa」␤␤===SORRY!=== Error while compiling eval_0␤Quantifier quantifies nothing␤at eval_0:1␤------> anon regex { ^a\c[32]**⏏\c[32]2}␤ expecting any of:␤ scoped declarator␤ new name t…»
masak p: say "aa" ~~ /a ** 2/; say "aa" ~~ /<{"a ** 2"}>/; # huh
camelia rakudo-parrot fd5f8e: OUTPUT«「aa」␤␤===SORRY!=== Error while compiling eval_0␤Quantifier quantifies nothing␤at eval_0:1␤------> anon regex { ^a\c[32]**⏏\c[32]2}␤ expecting any of:␤ scoped declarator␤ new name…»
masak lue: has that one been submitted as a rakudobug?
bbkr FROGGS_: thanks for JSON::RPC patch, merged
FROGGS_ bbkr: cool! :D
timotimo hello from a breakfast table 08:12
FROGGS_ hi timotimo 08:14
timotimo t.h8.lv/p6bench/2014-05-03-return_types.html - here we can see the effect of only the commit that adds return type annotations to the moar ops 08:23
18b is without, 941 is with
the difference is not very visible, but i bet it does something in cases not covered by the benchmarks 08:25
Ven timotimo: why only one nqp 08:39
?
masak timotimo: it's visible in "hello".
timotimo: and something interesting seems to have happened in "while_push_join" 08:40
though now that I look at it, it seems mostly chaotic for such small values, so maybe it's just noise. 08:41
FROGGS_ moritz: this is what I did about Configure.pl: gist.github.com/FROGGS/e21a91a1c76614be34eb 08:43
dalek kudo/nom: ee95a0e | (Tobias Leich)++ | tools/lib/NQP/Configure.pm:
tools: only set $impl{config} when it is trueish

Otherwise we pass a ref of an empty hash around, wich will be treated truesh later.
08:46
kudo/nom: 364dfb1 | (Tobias Leich)++ | Configure.pl:
more guidance to build rakudo

It shows examples what option can be passes, and it also mentiones other backends than Parrot when someone tried to build for several backends but did not supply the right flags.
FROGGS_ this needs to applied to star, but I am afk for an hour now, will do it then if nobody beats me to 08:47
Ulti does .parsefile at any point slurp? 09:17
or does it parse as it goes 09:18
Ulti uses the source
like a good nerdi
Ulti I guess this 100GB file would also answer my question :3 09:18
also jnthn++ for this PDF from 2010 I just stumbled over "Perl 6: For Little Tools and Big Applications" 09:19
dalek ast: 1f3785d | (Elizabeth Mattijsen)++ | S17-supply/watch_path.t:
Make watch_path tests a little less fragile
09:20
Ulti naaw $fh.slurp 09:21
trying to think of a way to do a nice reactive style parse as you go way of using grammars, the problem is you kind of already assume some level of "chunking" of the data to break up the file 09:22
can you get from a grammar what its first and last match states are?
*parse-as-you-go
guess I could do it by having some required tokens in the grammar 09:26
timotimo masak: i have *no* idea where that weird ramp comes from :( 09:29
jnthn m: morning; sub morning() is pure { };
camelia rakudo-moar fd5f8e: OUTPUT«WARNINGS:␤Useless use of "morning" in expression "morning" in sink context (line 1)␤»
7F1AAEDN9 rakudo-moar fd5f8e: OUTPUT«WARNINGS:␤Useless use of "morning" in expression "morning" in sink context (line 1)␤»
jnthn good...nearly-afternoon, #perl6 :)
nwc10 near UGT heresy safely averted 09:30
timotimo masak: the only things i can think of are: the previous test ran until all memory was exhausted and the time measurement script choked on it; or subtracting the measured startup time resulted in a bogus value 09:32
masak timotimo: I remember a really illuminating course at uni about en.wikipedia.org/wiki/Design_of_experiments -- maybe there is something from that field that can be applied to making less biased benchmarks? 09:36
Ulti with a grammar is there a way to get at the rules/tokens it uses as if they were methods or even some Regex attribute? 09:36
timotimo there is a lot that could be improved upon i'm sure 09:37
dalek kudo/nom: f280165 | (Elizabeth Mattijsen)++ | src/core/Supply.pm:
Make Supply methods picker about what to accept

Specifically as to being called as a class or instance method.
09:40
lizmat Ulti: far from being a grammar specialist, but they way I understand things, grammars are just a special type of class 09:41
rules and tokens are really just methods internally
lizmat so I'd figure the standard introspection methods should work :-) 09:41
jnthn What lizmat said is true 09:41
github.com/rakudo/rakudo/blob/nom/...marHOW.nqp shows it pretty nicely too 09:42
Ulti hmm I get ye olde Cannot look up attributes in a type object
reading 09:43
jnthn The terse code in that link basically means "gramamrs are classes but with a different default parent" :)
r: grammar G { token t { abc } }; say G.^methods
7F1AAEDN9 rakudo-moar fd5f8e: OUTPUT«No such method 'gist' for invocant of type 'NQPRoutine'␤ in method gist at src/gen/m-CORE.setting:7192␤ in sub say at src/gen/m-CORE.setting:13601␤ in block at /tmp/tmpfile:1␤␤»
camelia rakudo-moar fd5f8e: OUTPUT«No such method 'gist' for invocant of type 'NQPRoutine'␤ in method gist at src/gen/m-CORE.setting:7192␤ in sub say at src/gen/m-CORE.setting:13601␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot fd5f8e: OUTPUT«No such method 'gist' for invocant of type 'NQPRoutine'␤ in method gist at gen/parrot/CORE.setting:7139␤ in method gist at gen/parrot/CORE.setting:1056␤ in sub say at gen/parrot/CORE.setting:13588␤ in block at /tmp/tmpfile:1␤␤»
7F1AAEDN9 ..rakudo-jvm fd5f8e: OUTPUT«Rebuild in progress␤»
..rakudo-parrot fd5f8e: OUTPUT«No such method 'gist' for invocant of type 'NQPRoutine'␤ in method gist at gen/parrot/CORE.setting:7139␤ in method gist at gen/parrot/CORE.setting:1056␤ in sub say at gen/parrot/CORE.setting:13588␤ in block at /tmp/tmpfile:1␤␤»
camelia ..rakudo-jvm fd5f8e: OUTPUT«Unhandled exception: Failed to load config.properties␤ in (gen/jvm/stage2/NQPHLL.nqp:8)␤ in (gen/jvm/stage2/NQPHLL.nqp:8)␤ in (gen/jvm/stage2/NQPHLL.nqp)␤ in (src/vm/jvm/ModuleLoader.nqp:78)␤ in load_module (src/vm/jvm/ModuleLoader.nqp:60…»
jnthn ugh 09:44
r: grammar G { token t { abc } }; say G.^methods(:local)
7F1AAEDN9 rakudo-{parrot,moar} fd5f8e: OUTPUT«t␤»
..rakudo-jvm fd5f8e: OUTPUT«Unhandled exception: Failed to load config.properties␤ in (gen/jvm/stage2/NQPHLL.nqp:8)␤ in (gen/jvm/stage2/NQPHLL.nqp:8)␤ in (gen/jvm/stage2/NQPHLL.nqp)␤ in (src/vm/jvm/ModuleLoader.nqp:78)␤ in load_module (src/vm/jvm/ModuleLoader.nqp:60…»
camelia rakudo-{parrot,moar} fd5f8e: OUTPUT«t␤»
..rakudo-jvm fd5f8e: OUTPUT«Unhandled exception: Failed to load config.properties␤ in (gen/jvm/stage2/NQPHLL.nqp:8)␤ in (gen/jvm/stage2/NQPHLL.nqp:8)␤ in (gen/jvm/stage2/NQPHLL.nqp)␤ in (src/vm/jvm/ModuleLoader.nqp:78)␤ in load_module (src/vm/jvm/ModuleLoader.nqp:60…»
jnthn Why do we have a camelia and an imposter evalbot?
Ulti yeah weird I can see they exist but I cannot call them
jnthn You can only call them on an initialized cursor 09:45
Ulti yeah I saw from the Grammar source code in subparse
jnthn Note you can pass subparse a rule argument, with the thing you looked up. 09:46
Doesn't just have to be a name.
masak general notice: if you want your 7F1AAEDN9, please contact reception. thank you. 09:48
lizmat attempts to grok masak's public service announcement, but fails 10:00
dalek ast: 5cf307b | (Elizabeth Mattijsen)++ | S17-supply/ (20 files):
Add tests for getting called as class method

And some general cleanup, e.g. only use lib when needed
10:11
jnthn lizmat++ # tirelessly supplying tests 10:13
lizmat it's the only way to catch the obvious errors before it gets out more in the wild :-) 10:20
dalek ast: 1d58cad | (Elizabeth Mattijsen)++ | S17-supply/watch_path.t:
Make watch_path even more robust

During spectest probably other scripts were writing files in the same directory interfering with the test. We now only look for "our" file to begin with.
10:27
lizmat afk for a while
FROGGS_ m: say 1 10:35
camelia rakudo-moar fd5f8e: OUTPUT«1␤»
jnthn FROGGS_: Did you have a doc patch you wanted to sneak into r* 2014.04? 10:36
FROGGS_ jnthn: yes 10:37
will do that in ~30min if that is okay
jnthn wfm
timotimo yay for docs 10:47
FROGGS_ it is about configure's output, see my latest rakudo commit 10:48
timotimo ah, very good 10:49
masak: i haad considered running all the benchmarks in a randomized order 10:52
maybe that could help ease the noise, if they are run more often as well 10:53
masak timotimo: glad you liked it :) 10:57
timotimo it would be nice if we could have more benchmarks with a bit more code than just a single loop or two nested loops. 10:58
jnthn That's what forestfire and so forth are about, no? 10:59
But yes, more of those would be great.
timotimo yes
exactly
just for fun i'm going to build a very old rakudo-parrot and pit it against a current rakudo-parrot and rakudo-moarvm 11:00
because at least the benchmarks are somewhat stable
i think the only thing that's changed since then that would impact the benchmarks strongly would be bless(*,...) for forest fire 11:01
jnthn I don't think that bless call is on a hot path anyway. 11:02
timotimo aye 11:02
heh. i had to remove --backends= :) 11:06
timotimo good old times :) 11:07
things were simpler back then
chenryn modules.perl6.org is down? 11:10
timotimo not for me
what do you need in particular?
jnthn can reach it too 11:11
FROGGS_ same for me, modules.perl6.org is working 11:21
chenryn well, reach it through VPN now. 11:23
dalek ar: 1f7afaa | (Tobias Leich)++ | tools/lib/NQP/Configure.pm:
tools: only set $impl{config} when it is trueish

Otherwise we pass a ref of an empty hash around, wich will be treated truesh later.
11:25
moritz do we have any modules for reading exif data from images? 11:27
timotimo why doesn't taglib::simple support exif? :) 11:30
moritz solves his problem by shelling out to the exif command line tool 11:46
dalek ar: 5bbf9d6 | (Tobias Leich)++ | Configure.pl:
more guidance to build rakudo

It shows examples what option can be passes, and it also mentiones other backends than Parrot when someone tried to build for several backends but did not supply the right flags.
11:47
FROGGS_ jnthn: done
bbiab # lunch
timotimo t.h8.lv/p6bench/2014-05-03-almost_a_year.html - waiting almost a year for performance improvements in parrot was not worth as much as switching to moarvm (flamebait) 12:28
timotimo i'm going to re-run the moar timings with --runs=10, that ought to get rid of the wrongness! >:( 12:30
nwc10 what's the wrongness? 12:35
timotimo look at postwhile_nil for example 12:38
nwc10 ah. also, is there a significance to the vintage of parrot you chose? 12:45
timotimo just "middle of the year" 12:51
FROGGS_ java.lang.RuntimeException: java.lang.NegativeArraySizeException :/ 13:02
FROGGS_ has someone knowledge about jvm? do I need to add astore/aload calls there? gist.github.com/FROGGS/5ee16f5619aed3003258 13:11
only the "if $label {" branch is questionable 13:12
jnthn # Create a new exception object 13:15
$il.append(JAST::Instruction.new( :op('invokestatic'), $TYPE_OPS,
'newexception', 'SixModelObject', 'Void', $TYPE_TC ));
I don't see you passing the thread context onto the stack before this.
FROGGS_ ahh, aload cf ?
jnthn aload tc, I guess 13:16
FROGGS_ cf is callframe?
jnthn right
FROGGS_ after newexception was called the exception object is on the stack, right? and that means it will be passed as first arg to the next call? 13:21
jnthn Should do 13:22
Note you forgot to push tc there too
FROGGS_ yes 13:23
FROGGS_ updated: gist.github.com/FROGGS/5ee16f5619aed3003258 13:23
though, it is missing in the throwcatdyn_c (else) case too, no? I did not touch this one 13:24
or does 'savesite' it for me?
hmm, no, savesite does not seem to do that 13:25
Ulti so getting input-line-separator into readlinefh looks like it goes all the way down to each VM? 13:26
FROGGS_ I think so, yes
timotimo kind of has to, no? 13:32
unless we want to implement readline by doing single byte reads
Ulti yeah I mean more the changes required to make it happen go all the way down to changing implementation everywhere
like NQP doesn't take a parameter which is defaulting to "\n" for the op 13:33
I noticed sockets do have this though
timotimo how is the readline done at the moment? 13:34
it has to be checking for a character somewhere
also the spec suggests you can even pass in a regex...
which is a much bigger change
timotimo mhm 13:35
jnthn urgh 13:36
Passing in a regex for that is completely incompatible with this stuff performing decently.
timotimo yes, but we can easily special-case that 13:37
jnthn "easily"
timotimo we wouldn't use / \n / as the default and make the rest use that object :P
FROGGS_ "hehe" :P
Ulti how much slower is the Rakudo level .read
jnthn Remember that DecodeStream is doing hard stuff that you really do not want to replicate 13:38
Like, dealing with the sitaution where two chunks we get from IO have multi-byte chars spread over them.
Before claiming it's easy, I suggest y'all read decodestream.c :) 13:39
timotimo you mean we can't rely on decodestream.c's work?
jnthn Well, you can rely on it if you use it :P 13:40
jnthn Doing a .read of bytes is side-stepping it, though. 13:41
It just gives you the raw bytes.
We really could do with exposing decodestream at Perl 6 level 13:42
timotimo oh, of course
jnthn But even then I don't quite know how on earth we'd handle the regex case.
jnthn It sounds like one of those things that was put into the spec without considering how I/O works 'cus it sounded like a nice idea... 13:43
nwc10 regex for what?
timotimo right; if you're reading one byte, you perhaps have to go back to the beginning
Ulti I think a simpler substring match case would be good too, and you probably want that to be a faster implementation
jnthn nwc10: Line separator when donig I/O
nwc10 oh *That*
Ulti rather than just a special case of the Regex version
nwc10 the thing awk can do
Ulti and Perl5 13:44
nwc10 we've thought a lot about this in Perl 5 land, because it keeps sort of being wanted
I'm not sure what the state is
timotimo also, how do you do "say" when the line separator is a regex? well ... it's only for the *input* line separator :)
nwc10 yves had a plan for what was doable
but it's sane for non-greedy regex
Ulti timotimo well regex can be generative too, generate a string that would match :P
FROGGS_ ohh, it looks like I should use $TYPE_SMO instead of 'SixModelObject'
nwc10 and I think Yves had a plan to do it within the constraints of the Perl 5 implementation for the subset of those that have bounded max length 13:45
jnthn FROGGS_: oh...yes
skids Won't this be the same problem for running an rx on a Cat, when we get Cat? 13:47
Or will Cat guarantee unicode chars come in whole? 13:49
timotimo can it, though? 13:53
except at the very end of file, you can't know if the next character will be a new glyph or a combining or control code
so you'll have to always keep at least a single glyph from the user 13:54
until either EOF or a new glyph arrives
skids
.oO(Promise/Supply in a grammar action.... Hmmm.)
13:58
timotimo heh.
you can feed results of parsing out through a channel :) 13:59
timotimo how do people feel about a trait "is subcommand_name" for parameters to MAIN that would cause the parameter to show up before nameds 14:20
timotimo locally, parrot now also segfaults when trying to build the restricted setting 14:22
FROGGS_ O.o
FROGGS_ damn, still: java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException: 14:24
gist.github.com/FROGGS/5ee16f5619aed3003258
timotimo what the flying fuck. the postwhile nil native tests still do the thing.
even with 10 runs instead of i think 2
there's something *strange* going on.
timotimo Pod::To::Text fails similarly 14:25
FROGGS_ the what? 14:26
timotimo t.h8.lv/p6bench/2014-05-03-almost_a_year.html 14:29
at first it's very fast, then gets ridiculously fast and then turns constantly slow
jnthn timotimo: How is memory usage? 14:30
Juerd timotimo: So it turns slow from the point where some value reaches 32768. Isn't that suspicious? :) 14:31
timotimo: Some more resolution would be necessary to see if it's exactly that point, or just happens to be around it.
Juerd Although the increasing speed before the drop is much scarier 14:32
vendethiel timotimo: is that with the same rakudo :) ?
timotimo is that the place where we go from smallbigint to bigint? 14:35
jnthn No, doubt it; we have to overflow a 32-bit number for that. 14:36
Ulti < timotimo> you can feed results of parsing out through a channel :) <--- can you see my computer screen? :P 14:53
trying to make a promise lazy read and chunk a file parsing as it goes sending the parsed objects down a channel, then have a tonne of threads to process the stuff coming out of the channel 14:54
FROGGS_ that sounds interesting 14:56
Ulti the only tricky bit is trying not to assume too much about the file format, starting out with you have to upfront say what parser you want and what the 'record start' character is 14:59
FROGGS_ jnthn: does '$il.append($POP);' mean that I pop something from the stack to nirvana? so I can ignore a return value? 15:16
jnthn Right, it just throws away the top stack entry 15:17
FROGGS_ nice
jnthn Note - must be a pointer, or int, or float, or soemthing
FROGGS_ it is a Long
jnthn Use POP2 if it's a long (RT_INT) or double (RT_NUM)
Ah, then POP2
FROGGS_ k, :D
FROGGS_ btw, it is moar fun to not hack on jvm or parrot backend :o) 15:19
JimmyZ I have been waiting for compiling jvm codes these days ... most of time 15:21
FROGGS_ Reason:
Type long_2nd (current frame, stack[2]) is not assignable to 'org/perl6/nqp/sixmodel/SixModelObject'
hups
JimmyZ compiling moar is much faster :P 15:22
FROGGS_ that is the point yeah :/
timotimo the pop2 thing (and dupx2 and friends) really confused me the first time around, too. 15:33
Ulti \o/ yay first bug whilst playing with reactive magic :D 15:35
waited on a channel that never produced anything forever
timotimo never forever.
Ulti well until entropy consumes my computer 15:36
vendethiel 7F1AAEDN9 ? What happened to camelia :D ? 15:37
oh, new camelia o/
Ulti hmm .index returns Int type object on failure :/ 15:43
timotimo m: say :what
camelia rakudo-moar fd5f8e: OUTPUT«␤»
Ulti I guess that makes it type safe
since it returns ints
timotimo hehe. 15:44
Ulti is ~~ Int is the proper way to handle that? 15:46
timotimo .defined
moritz has Star been released?
FROGGS_ moritz: I don't think so 15:47
timotimo well, froggs has added his changes, jnthn had put out his release candidate
FROGGS_ was there another RC?
timotimo seems like it's waiting on someone just going ahead and doing it? 15:48
dalek ar: 8a79b98 | jnthn++ | modules/ (5 files):
Update various modules.
15:49
ar: 43a3df0 | jnthn++ | / (2 files):
Merge branch 'master' of github.com:rakudo/star
jnthn Yeah, building the new one here now with FROGGS_++ changes
FROGGS_ cool!
:o)
FROGGS_ I can test the RC then and then probably create the msi this evening 15:52
timotimo even more module bumps?
jnthn timotimo: no, those were from yesterday; forgot to push
FROGGS_ there was a PR merged today
for JSON::RPC 15:53
jnthn FROGGS_: Hm, did you not test the last RC?
Only change in this one would be your doc patch
FROGGS_ jnthn: no, I aborted when I saw the messages about parrot when I intended to build it for moar also 15:54
but I can test it now of course
jnthn ok, the new one is at the same URL as yesterday 15:55
FROGGS_ ahh, found it: jnthn.net/tmp/rakudo-star-2014.04.tar.gz 15:58
Ulti is there an adverb for lines to stop it chomping? 16:11
timotimo you can open a file with no-chomp-please 16:12
and you can open("-", :r, :!chomp) to get a new file handle
Ulti oh this is basically what I am doing badly! github.com/rakudo/rakudo/blob/619a...yncFile.pm
timotimo i'm confused 16:14
Ulti I'm writing something that is doing async file IO and parsing at the same time 16:15
timotimo ah 16:16
FROGGS_ is still building the star RC 16:20
masak today's weird insight while out running: the Nomic server would be an event loop (for upholding the rules) and a Git server (for storing rules and proposals). 16:23
every proposal would have its own branch name. 16:24
making a new proposal would be pushing to a certain ref.
accepting a proposal and making it part of the game would be merging into master.
FROGGS_ you are still "working" on that? :o) 16:25
masak apparently my brain is :)
FROGGS_ *g*
masak but really, bringing Git into the mix seems to simplify a few things. 16:26
nwc10 does it read mail yet? :-)
masak with Nomic, the question is less irreverent than you might think :P
jnthn: yet another reason we need a Git implementation in Perl 6 ;) 16:31
timotimo do we ship fun examples with star, btw?
FROGGS_ fun examples? not yet at least
dalek p/lexopts: eafcab0 | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
Start using new getlexstatic_o op.
16:33
p/lexopts: 43fbe2b | jnthn++ | src/NQP/Optimizer.nqp:
Fix NQP analysis of when callstatic is valid.

Makes it match Rakudo's more closely. We can cheat in NQP, but not
  /that/ hard.
skids Configuring star RC with --backend-parrot --gen-nqp --gen-parrot, nqp complains when "Verifying instalation" about not having been installed yet. 16:35
FROGGS_ humm 16:36
jnthn Heading out for a bit; can finish Star release when back, if nobody has more fixes ;)
FROGGS_ skids: perl Configure.pl --backend-parrot --gen-nqp --gen-parrot
Unknown option: backend-parrot
jnthn --backend=parrot
FROGGS_ perl Configure.pl --backends=parrot --gen-nqp --gen-parrot 16:37
sh: 1: /home/froggs/dev/rakudo/install/bin/parrot: not found
Klone nach 'nqp'...
^C
'Klone nach' means 'Cloning to'
skids: you get the same?
skids FROGGS: --backend=parrot sorry
FROGGS_ skids: that works as expected here...
skids No cloning to error. Trying --backends instead of --backend now... also swapped order of nqp/parrot on commandline not that it should matter. 16:40
FROGGS_ no, --backend should work also 16:42
if it fails again, can you no-paste your output?
skids sure. 16:43
damn. almost got it out of my scrollback but it disappeared before I could select it :-) 16:44
masak dinner & 16:50
skids Worked this time. Pretty sure what happened is it built nqp before building parrot. 16:53
timotimo wow, that should really not happen
FROGGS_ hmmmm, I have never seen that happening 16:54
skids (or maybe the parrot build failed somehow without killing the make)
FROGGS_ yeah....
please record the output next time, including the command line that invoked it :o) 16:55
otherwise we can only guess
skids I'll try to replicate it later from a fresh tree.
timotimo # Error: Error while compiling op istype: Object of type Maybe in QAST::WVal, but not in SC
yay, that's a new one
FROGGS_ skids++ 16:57
timotimo: are these local mods or is that HEAD? 16:58
timotimo that's HEAD, rakudo-moar 17:03
timotimo the same code seems to work on rakudo-j, i don't have a rakudo-p to test stuff on yet 17:03
timotimo has there been a discussion on allowing ? and ! at the end of method names? 17:08
moritz not that I'm aware of 17:12
timotimo !at the end would be weird, though, as we already have ! in front where it has meaning 17:14
FROGGS_ jnthn: I only see some r* fails for perl6-j, which are expected 17:20
(on linux x86_64)
even a ? at the end would be weird... 17:21
skids gist.github.com/skids/f42a0d177a0fe37aa7a2 17:27
skids Gist updated. Was able to replicate the problem. 17:49
Looks like configure is using my pre-installed parrot.
FROGGS_ skids: yes, it is supposed to 18:26
you cannot have another parrot/nqp in path
timotimo rakudo on fails? 18:29
skids FROGGS: that never happened before, and I've had it in my path. 18:34
Configure seems to honor the ordering of the --gen-nqp and --gen-parrot options.
FROGGS_ skids: what is your /usr/local/bin/parrot --version ? 18:36
skids Well, right at the moment it's star-04-04 (6.1.0) because I just made install :-) 18:38
FROGGS_ skids: configure should not care about ordering, and --gen-parrot will set --gen-nqp if it was not passed
ahh, hmmm 18:39
parrot should not mention star though
but 6.1.0 would be correct
skids no it doesn't.
damn. It does build with the options in the correct order but I still have the "wrong version" error for stage2/QRegex.nqp. 18:40
"This is nqp version 2013.08 built on parrot 5.5.0 revision 0" Hrm. 18:41
So nqp didn't install.
timotimo is that the right nqp, too? the one in path vs install/bin? 18:42
or nqp/nqp-p?
skids No. Yes what happened is that it installed nqp only as nqp-p and not as nqp; 18:43
timotimo yes, that is correct ... oooh! 18:44
that must be it
skids looks for an option to select which backend to install under default names. 18:45
FROGGS_ skids: we changed that 18:46
nqp is only installed as the last step (make-default-runner-install or so)
timotimo is "nqp" installed at all?
i don't think so, tbh
skids timotimo: well, there's no "nqp" in install/bin, just "nqp-p", unlike perl6 or perl6debug. The rest of the backend-specific stuff looks to be hasband scripts. 18:52
*hashbang*
vendethiel oh, a friend dared to ask me if "(*-.-)" would compile in perl6 ... 18:54
too bad term:<*> doesn't work :p
timotimo yes, the rakudo star makefile must absolutely not try to use nqp 18:57
skids Symlinking doesn't fix the problem, perl6-p seems to be trying to still use a wrong nqp-related path. Will try reinstalling with /usr/local/bin/nqp deleted. 18:58
dalek ast: d08d001 | (Elizabeth Mattijsen)++ | S17-supply/schedule_on.t:
Add tests for Supply.schedule_on
FROGGS_ vendethiel: it did work last time
vendethiel FROGGS_: I believe it didn't, and kept returning Whatever 18:59
m: sub term:<*> { 5}; say *
camelia rakudo-moar fd5f8e: OUTPUT«*␤»
skids timotimo: well, it shouldn't when --gen-nqp at least.
vendethiel p6: sub term:<*> { 5}; say *
camelia niecza v24-109-g48a8de3: OUTPUT«5␤»
..rakudo-{parrot,moar} fd5f8e: OUTPUT«*␤»
..rakudo-jvm fd5f8e: OUTPUT«Unhandled exception: Failed to load config.properties␤ in (gen/jvm/stage2/NQPHLL.nqp:8)␤ in (gen/jvm/stage2/NQPHLL.nqp:8)␤ in (gen/jvm/stage2/NQPHLL.nqp)␤ in (src/vm/jvm/ModuleLoader.nqp:78)␤ in load_module (src/vm/jvm/ModuleLoader.nqp:60…»
vendethiel well, niecza can do it
timotimo should it really ever try to use nqp? 19:00
i thought we abolished that?
skids Aren't you supposed to be able to test a local version of nqp that way?
FROGGS_ vendethiel: okay, I misremembered 19:02
dalek kudo/nom: abf3bc3 | (Elizabeth Mattijsen)++ | t/spectest.data:
Make sure we do Supply.schedule_on tests
19:04
lizmat Files=838, Tests=32008, 203 wallclock secs ( 7.99 usr 3.82 sys + 1259.28 cusr 145.23 csys = 1416.32 CPU)
only 760 more until we overflow :-)
FROGGS_ :D 19:05
lizmat japhb: fwiw, I think gist.github.com/jnthn/11126125 should be turned into a GET helper sub somewhere, with an optional :$port = 80 parameter 19:42
japhb lizmat: I was actually thinking of factoring out some of the boilerplate. Something that creates the promise and vow, attempts to connect, breaks the vow and returns if that fails, otherwise grabs the socket and feeds the socket and vow to a .then(), and returns the promise. 19:44
Basically lines 1-6 and 22-28
lizmat what would you call that? 19:45
japhb That's a good question
lue Courier ? 19:53
japhb is tempted to say IO::Socket::Async.open 19:54
lue (or some term like it; not Messenger though, that's easily confusable ☺) 19:55
japhb open feels higher level than connect, and thus should hide the boilerplate
lizmat so it would return a Promise ? 19:57
timotimo connection_attempt? 20:01
japhb lizmat: Well, that would be a consequence of taking a closure for doing the post-connect work, but you're right, that's not really the open API
lizmat feels to me the whole sub could be boilerplate with just a Promise parameter 20:02
lue (Thought you guys were naming a type) perhaps .talk ? 20:03
lizmat that would encapsulate te IO::Socket::Async.connect(...)
japhb lizmat: That's higher level than I was thinking of -- you seem to be thinking about making simple HTTP methods, I'm thinking of making async socket programming less boilerplatey.
lue IO::Socket::Async.talk(...)
timotimo hm, talk, like with these modem thingies 20:04
japhb And lue's in the middle -- sortof an expect sortof level.
lizmat japhb: good point: the promise should be the "$socket.send("GET $path\r\n\r\n")" part
lizmat IO::Socket::Async.fetch 20:05
and then maybe a IO::Socket::Async.connect_and_send
timotimo btw, http really wants to have keepalive 20:06
so make sure it gets grabbable after that transaction, too
lizmat timotimo: that's why it was a crappy_ua :-)
japhb We can just have lots of layers. :-)
timotimo yeah, i just wanted to advise you to not make it too boxed off 20:07
japhb timotimo: That's why I was only thinking of factoring out the stuff that would be quite unlikely to change much without changing *everything*.
timotimo ah 20:09
dalek ecs: 4c3f6c6 | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
Spec Supply.Promise(:last)
20:09
lizmat ^^^ comments welcome. Alternative would be to create a method .last 20:10
but that would not really convey the Promiseness of the returned value
or maybe we should have .last return a Supply that only returns the last value of the underlying supply 20:12
timotimo oof.
lizmat and if you want a promise of that, you would need to .Promise that
timotimo wonder if that's a good thing 20:14
lizmat if what is a good thing?
timotimo a supply that only .more's the last value when the previous one gets closed 20:15
but what do i know :)
lizmat in a way, it's like .stable with an infinite amount of time 20:16
timotimo aye
.stable(:forever) 20:17
:P
lizmat with the difference that .stable doesn't send the value if the supply was done before the period was over
timotimo oh
lizmat not sure whether that could be considered a bug or not
mmm... thinking about it more, :last on Promise smells 20:18
dalek ecs: 5d6ef10 | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
Re-imagine Supply.Promise(:last) as Supply.last
20:23
japhb IO::Socket::Async.connect-then(:$host, :$port, -> $s, $v { ... }) 20:29
lizmat you're exposing the vow there 20:30
timotimo that doesn't sound too bad
japhb lizmat: You have to. It can only be taken once. 20:31
lizmat but shouldn't keeping/breaking the vow be part of the boilerplate ? 20:32
japhb lizmat: Even after connect, failure during send or receive can still break the vow. 20:37
lizmat FWIW, I feel that lines 4-8 should be taken out and replaced by a single Promise that would be the parameter 20:39
and then create some way of easily making lines 4-8 into a promise
lizmat is handwaving :-) 20:41
benabik I’m getting recursion depth exceeded on rakudo-parrot HEAD/HEAD when building RESTRICTED.setting.pir. 20:42
lizmat gist ?
benabik new -> new -> bless -> Bool -> gimme -> infix:<-> -> infix:<-> -> repeat
(Well HEAD/HEAD/HEAD…) 20:43
lizmat doesn't ring a bell :-( 20:44
moritz does it work with the recommended parrot version? 20:46
benabik gist.github.com/Benabik/fc625fb37b85a4e138a5
I do not know. It was working a couple weeks ago, but I’ll roll back to 6.1.0 20:48
FROGGS_ timotimo said something too about problems building RESTRICTED.setting 20:56
lizmat jnthn: regarding S17:725 21:03
synopsebot Link: perlcabal.org/syn/S17.html#line_725
lizmat elems / max / min / minmax
I was thinking of implementing these as a Supply that would "more" a value whenever there is a change 21:04
jnthn lizmat: That's valuable also, but I think different...
lizmat if you only want a value at the end, you can .last that supply
(which I just specced and implemented)
jnthn More generally, for everything you could implement in terms of .reduce, there's a .scan form of the operation. 21:05
jnthn .elems in the "every time it changes" feels a little pointless... 21:05
lizmat well, true 21:06
jnthn But I can see it for latest max, latest min, etc.
lizmat you're talking about .scan, but that isn't specced 21:07
jnthn Does .last block for the last value, or give a promise for it?
Yeah, this is the point where I wave my arms and point at the Rx docs ;)
But scan there is just a reduce that produces every intermediate result.
lizmat it gives you a supply: if you want a Promise, you would do .last.Promise
lizmat jnthn: do you have a URL for the Rx docs ? 21:08
jnthn lizmat: www.introtorx.com/content/v1.0.1062....html#Scan 21:10
lizmat seems to me Suply.last === TakeLast, right ? 21:13
FROGGS_ jnthn: about can of worms... I recognized that I need to use nqp::handle to handle `next LABEL`, because the handlers in while only take UnwindExceptions 21:15
... on the jvm 21:16
or, does my VMExceptionInstance get turned into an UnwindException for some reason?
FROGGS_ because I don't yet see why I can throw a VMExceptionInstance with category=EX_CAT_NEXT, which works 21:17
jnthn FROGGS_: UnwindException is JVM-level. It is what we use to really unwind the JVM stack. 21:18
benabik Same error with the suggested versions: This is nqp version 2014.04-37-g55c7277 built on parrot 6.1.0 revision RELEASE_6_1_0
jnthn lizmat: Yeah, except it takes an arg saying how many 21:19
lizmat ok, that can be fixed :-) 21:21
FROGGS_ okay... so it arrives as an UnwindException, now I need find a way to get the payload 21:22
that explains why the exception was kinda handled, an now isnt (I removed the handler)
benabik Looks like my latest installed perl6-p was 440739c, likely with the HEAD parrot and nqp at the time of that commit. I’ll see if I can easily figure out when the breakage was introduced but I’m quite busy with schoolwork at the moment. 21:23
dalek ecs: 850f8ed | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
Supply.last can give the last N more's
dalek kudo/nom: c421738 | (Elizabeth Mattijsen)++ | src/core/Supply.pm:
Implement Supply.last
21:35
ecs: 877b5f9 | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
Spec Supply.grab
21:38
FROGGS_ jnthn: the r* is fine on my linux box 21:39
jnthn yay 21:41
:)
FROGGS_ there are only the known fails for jvm's module tests
FROGGS_ Reason: 21:47
Type 'org/perl6/nqp/runtime/UnwindException' (current frame, stack[0]) is not assignable to 'org/perl6/nqp/runtime/LexoticException'
:/
stack: { 'org/perl6/nqp/runtime/UnwindException' } <--- perhaps I have an idea about tomorrow... 21:48
gnight all
skids doh. --prefix= not PREFIX=. That's for make. 21:50
lizmat FROGGS_ gnight! 21:51
dalek kudo/nom: a320bf1 | (Elizabeth Mattijsen)++ | src/core/Supply.pm:
Guard Supply.last a bit against garbage input
21:54
ast: 432761f | (Elizabeth Mattijsen)++ | S17-supply/last.t:
Add tests for Supply.last
21:56
lizmat m: my subset Natural of Int where $_ > 0; my Natural $a = 0 # is there a reason we don't have Natural or UInt in core ? 22:00
camelia rakudo-moar fd5f8e: OUTPUT«Type check failed in assignment to '$a'; expected 'Natural' but got 'Int'␤ in block at /tmp/xqLx6HKgCk:1␤␤»
lizmat I could use it for the signature in some of the Supply methods
dalek kudo/nom: 73179b3 | (Elizabeth Mattijsen)++ | t/spectest.data:
Make sure we run the Supply.last tests
22:01
timotimo m: my subset Lucky of Int where [eq] *.comb; say 777 ~~ Lucky; say 123 ~~ Lucky 22:13
camelia rakudo-moar fd5f8e: OUTPUT«True␤True␤»
timotimo m: my subset Lucky of Int where -> $num { [eq] $num.comb }; say 777 ~~ Lucky; say 123 ~~ Lucky
camelia rakudo-moar fd5f8e: OUTPUT«True␤False␤»
jnthn
.oO( I was up all night to get that type... )
22:14
dalek kudo/nom: d28ef4e | (Elizabeth Mattijsen)++ | src/core/Supply.pm:
@a.splice(0,1) is @a.shift, you dummy! :-)
22:22
kudo/nom: 70e580b | (Elizabeth Mattijsen)++ | src/core/Supply.pm:
Implement Supply.grab(&when_done)
lizmat tests after a some time afk& 22:24
jnthn o/ lizmat
dalek kudo-star-daily: d6d0ea5 | coke++ | log/ (4 files):
today (automated commit)
22:51
rl6-roast-data: 0f06eae | coke++ | / (6 files):
today (automated commit)
[Coke] parrot build still failing.