»ö« 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.
timotimo tadzik: i'm failing to install rakudo with rakudobrew; apparently it won't find site in languages/perl6 (because it ain't there) 00:03
japhb Just tried to build a fresh r-p, and it blew sky high (max recursion depth with a monster backtrace) trying to build RESTRICTED.setting.pbc 01:17
Ven_ when would be this month's R* release ? (or is there not gonna be a .msi file ?) 07:20
(or is there a need for a release manager ?) 07:21
moritz 01:12 < jnthn> I'll get R* release worked out tomorrow 07:41
Ven_: there's always a need for a release manager; do you want to do the May release? 07:42
Ven_ I can't even get rakudo to build on windows 07:43
moritz m: my $x = '42'; $x ~~ s/(.)/$0$0/; say $x 07:46
camelia rakudo-moar fd5f8e: OUTPUT«442␤»
moritz m: my $line = "bar foo"; s/(\w+) \s+ (\w+)/$1 $0/; say $line 07:47
camelia rakudo-moar fd5f8e: OUTPUT«bar foo␤»
moritz m: my $line = "bar foo"; $line ~~ s/(\w+) \s+ (\w+)/$1 $0/; say $line 07:48
camelia rakudo-moar fd5f8e: OUTPUT«foo bar␤»
Ven_ how hard would be `is parsed` to implement ? (and at what cost ?) 08:04
moritz nobody has done it before; it'd need exploring 08:06
(and you'd need to be able to build rakudo for it :-)
the cost? time, partial sanity downgrads
masak it's at least an interesting challenge.
with mutating the actual parsed program colliding a bit with changing immutable cursors. 08:07
or something.
Ven_ I can build rakudo, but only on my debian vm :)
masak jnthn++ claimed to have seen a way forward once.
Ven_ cost, as in "how badly would it hurt the perf" 08:08
masak should be a no-cost thing for those who don't use it.
moritz aye 08:16
masak: fwiw I can kinda also imagine a way around the immutable string+cursor problem
masak excellent. 08:17
moritz basically, parsing the returned string with a fresh cursor, and then creating a dummy cursor from begin to end of the 'is parsed' string
but it'd mean you can't return '} else {' and have it magically inserted and work
moritz not sure if that's a bug or a feature :-) 08:18
masak hm, why would it mean that? I don't see the connection. 08:18
oh, because of nested braces and stuff?
moritz yes, because stuff that's returned would have to be parsable on its own 08:19
by some subrule or another
masak 'fraid that's too restrictive.
moritz maybe 08:20
moritz but it would still be a very interesting prototype 08:20
FROGGS good morning 08:23
mathw has read jnthn's slides on reactive programming in Perl 6 and is very, very happy 08:24
masak \o/ 08:26
masak moritz: agreed; it would. 08:26
and limited functionality trumps no functionality.
jnthn morning, #perl6 08:33
Ven_ o/, jnthn 08:33
masak about Python's indentation: 08:55
FROGGS yeah?
(I'm sorry)
masak on the beginner course I gave this week, I received the question: "how do I solve merge conflicts involving indented Python code?"
FROGGS heh 08:56
masak as I pondered the answer to that question, I realized that the redundancy provided by curly braces simply isn't there in Python.
and so resolving merge conflicts is understanding-complete.
whereas in braced code, you can often mark the region, hit the "justify" button, and you're done.
jnthn
.oO( brace yourself for merging! )
08:57
masak I still don't mind significant whitespace/indentation that much, but it's one more factor to consider.
nwc10 masak: ooh, interesting. I'd never thought of that 08:57
has anyone else? bloggage?
FROGGS masak: I think I'd watch diffs on github with &ws=1 first and when I understand the changed code I'd look again without that option, and focus on scoping 08:58
FROGGS jnthn: btw, I am golfing that STable precomp bug from p6c now 08:59
moritz FROGGS: could you also answer that it's a bug indeed? 09:00
FROGGS moritz: I did, like 5mins ago 09:01
moritz FROGGS++ 09:01
masak nwc10: "This is fundamentally impossible for Python: selecting indentation levels is part of the job of the programmer, and cannot (except in trivial cases) be handled by a program." -- www.emacswiki.org/emacs/IndentingPython 09:03
masak nwc10: seems to be well-known, and not such a big problem in practice. 09:04
dalek ast: 7d74fbb | (David Warring [email@hidden.address] | S05-capture/caps.t:
fixed RT ticket number
masak nwc10: "Copy-paste is one example that often wrecks code. Also, simply wanting to turn off a conditional check to debug something perhaps." -- developers.slashdot.org/comments.pl...d=44681513 09:06
"use both brackets AND significant spacing. Safety is usually implemented through redundancy." -- www.c2.com/cgi/wiki?PythonWhiteSpaceDiscussion
moritz ++ 09:07
lizmat good *, #perl6 09:09
a new morning, new commits, a faster spectest again, it's a good start :-)
time to write some more tests to make the spectests take longer again :-) 09:10
jnthn needs a challenge :-)
jnthn aarrghh :P 09:11
We really need to reduce the amount of "sleep" in the concurrency tests.
Like, by writing a TestScheduler or something
jnthn So we can virtualize time there. 09:11
lizmat are you worried about the latency ?
personally, I'm not so worried, but then I have TEST_JOBS=8 09:12
jnthn I'm worried about the fact that spectest used to be < 300s for me, now it's 400s, and it's got no slower ahead of S17 afaict.
I can TEST_JOBS=8 it, but on Windows it sets them off in batches of 8.
lizmat runs a spectest without S17 tests
jnthn And all 8 have to be done before it'll set off the next batch.
So tests that sleep clog the entire pipeline for me. 09:13
lizmat ah, ok :-(
jnthn scheduler.t is probably the worst culprit, fwiw.
I'm not going to complain too much 'cus I'm happy we have tests. :) 09:14
lizmat so making many smaller S17 test files is not advantageous for you at all
jnthn It is
Because each one gets done quicker
lizmat ok, *phew*
jnthn And so it can set off another batch of 8.
lizmat wonders why testing on Windows needs to work that way 09:15
moritz probably has to do with no fork() available
lizmat ah, of course :-(
jnthn
.oO( forking hell... )
moritz iirc the first versions of those TAP:: modules didn't support parallel testing on widnows at all 09:16
masak +1 on TestScheduler
moritz (the first ones that supported parallel testing on *NIX, that is)
lizmat with S17: Files=834, Tests=31812, 200 wallclock secs ( 7.88 usr 3.73 sys + 1258.84 cusr 139.42 csys = 1409.87 CPU) 09:17
without S17: Files=808, Tests=31152, 180 wallclock secs ( 7.65 usr 3.64 sys + 1203.90 cusr 97.87 csys = 1313.06 CPU)
moritz 20s difference 09:18
lizmat 2% of # tests, 7% of used CPU, 10% of wallclock 09:19
nwc10 the test scheduler is Perl 5?
lizmat yes 09:20
basic prove functionality afaik
nwc10 yes, bulk88 has a patch
the basic problem is that Microsoft are utter fuckmuppets and didn't implement sockets correctly
Win32 sockets *drop* unwritten data on the floor if the process exits
moritz and bulk88+ was heroic enough to patch windows sockets? :-) 09:21
nwc10 result - you can't take a default Windows command line program, and run it with output sent to a socketpair, and expect it to work
and sockets *are* select-able on win32
lizmat so what would we need to use this patch ?
nwc10 but pipes (which don't have the fuckwittedness) are not
jnthn oh joy...
nwc10 you'd need someone to review it, and if valid commit it to the TAP::Parser repository 09:22
or implement an alternative
the obvious (hacky, but works, and already implemented elsewhere) trick is you put an intermediate process (or thread)
which has a pipe from the child
and pumps it down a socketpair to the test harness
moritz t/spec/S05-mass/properties-general.rakudo.jvm ................ No subtests run
is that expected?
nwc10 and as it *knows* that its output is a socketpair, it can do the proper shutdown dance
I am really not impressed by Microsoft on this one. They've taken a well designed BSD feature, and failed to implement one of the key parts of it 09:23
which is strange, because they do take actual BSD code and use it 09:24
as evidenced by the fact that WinCE had bugs with classless internet domains (and IPs that used to have to be network addresses)
when CIDR pre-dates WinCE by a year or two
IIRC it was parcelfarce.linux.org.uk - for a while it had an IP address that was one that could not have been a host address before CIDR 09:25
and WinNT machines couldn't connect to it 09:26
(that might have been seen as a feature)
Windows 2000 fixed this, IIRC
dalek rlito: d77bd02 | (Flavio S. Glock)++ | / (4 files):
Perlito5 - string parser flag \x
09:35
FROGGS jnthn: the STable thing from p6c mailing list is fault4.bat at github.com/FROGGS/frame_inc (in case you feel the urge to work on that :o) 09:36
jnthn FROGGS: What error does it give? 09:37
FROGGS STable conflict detected during deserialization.
(Probable attempt to load two modules that cannot be loaded together).
jnthn That .^add_fallback almost certainly should be in a BEGIN. 09:38
FROGGS it was in a INIT
jnthn I'm a bit surprised that you can get it with a linear toplology
Yes, INIT is not compile time!
People can't just expect they can augment or fiddle wherever and maintain the ability to load things together when they did incompatible tweaks. 09:39
FROGGS m: class Foo; BEGIN { $?PACKAGE.^add_fallback( sub ( $object, $name ) { True }, sub ( $object, $name ) { } ) }; 09:39
camelia rakudo-moar fd5f8e: OUTPUT«===SORRY!===␤Cannot invoke this object (REPR: Null, cs = 0)␤»
jnthn I don't know it should blow up in *this* case.
OK, then that one wants fixing, though it may be that you want to .HOW.add_fallback here... 09:40
FROGGS m: class Foo; BEGIN { $?PACKAGE.HOW.add_fallback( sub ( $object, $name ) { True }, sub ( $object, $name ) { } ) };
camelia rakudo-moar fd5f8e: OUTPUT«===SORRY!===␤Not enough positional parameters passed; got 3 but expected 4␤»
jnthn Need to pass $?PACKAGE also 09:40
FROGGS m: class Foo; BEGIN { $?PACKAGE.HOW.add_fallback( $?PACKAGE, sub ( $object, $name ) { True }, sub ( $object, $name ) { } ) }; 09:41
camelia ( no output )
FROGGS yeah
nice!
testing...
jnthn We can try to fix the .^ thing also, though it's not too easy.
FROGGS jnthn++ # that works! :o) 09:44
I'm going to PR JSON::RPC
dalek rlito: 6bc88f7 | (Flavio S. Glock)++ | / (4 files):
Perlito5 - string parser flag \x
FROGGS LHF: somebody could write a make directive that precompiles scripts that use all namespaces provided by star/modules, and run these scripts 09:46
nwc10 FROGGS: is there a LHF ticket "queue"? 09:59
FROGGS nwc10: no, but that is a very good idea!
moritz iirc there's a tag 10:00
which is the much better idea than a queue
FROGGS I mean, some bugs/tickets are tagged LHF, but we do not put ideas like that in RT I think
nwc10 I didn't know the details, but queue was "queue" for a reason
dalek ast: bcf79d0 | (Elizabeth Mattijsen)++ | / (46 files):
Replace cargo-culted BEGIN {@*INC...} by use lib

1. less typing and more clearly what it does 2. hides the implementation details of @*INC better 3. more ready for S11/S22 changes hopefully coming soon
10:11
lizmat me suddenly realizes that many of the changes were of @*INC.push, rather than .unshift 10:13
should I add a :last names param to "use lib" that would .push to @*INC rather than unshift? 10:14
or were the @*INC.push cases merely misinformed ?
colomon lizmat: currently my memory of that sort of thing was always about simply getting a directory into @*INC, rather than making sure it was first or last. 10:16
lizmat that's what I figured
my change doesn't break any tests
tadzik timotimo: hm, which rakudo? 10:17
lizmat some of the tests had an interesting way of manipulating @*INC
inside a scope, inside a BEGIN block 10:18
colomon wouldn't be surprised if those go back to the days of pugs. 10:20
colomon doesn't have a particular memory, but certainly has run into lots of crufty old code that's been in roast apparently forever... 10:21
lizmat well, it poses an interesting problem
I mean, "use" is supposed to be lexical wrt to its exports, right?
m: say @*INC; { BEGIN @*INC.unshift: <bar> } 10:22
camelia rakudo-moar fd5f8e: OUTPUT«bar /home/p6eval/.perl6/2014.04-134-gfd5f8eb/lib /home/p6eval/rakudo-inst-1/languages/perl6/site/lib /home/p6eval/rakudo-inst-1/languages/perl6/vendor/lib /home/p6eval/rakudo-inst-1/languages/perl6/lib␤»
lizmat m: say @*INC; { use lib <bar> }
camelia rakudo-moar fd5f8e: OUTPUT«bar /home/p6eval/.perl6/2014.04-134-gfd5f8eb/lib /home/p6eval/rakudo-inst-1/languages/perl6/site/lib /home/p6eval/rakudo-inst-1/languages/perl6/vendor/lib /home/p6eval/rakudo-inst-1/languages/perl6/lib␤»
lizmat you could argue that the search path for modules is also lexical, the "use" would indicate that
colomon but it clearly wouldn't have been lexical in the old form. 10:23
lizmat but the use of @*INC is causing side effects, making it like that in the whole form
well, I'm not sure what the intent was of putting it inside a BEGIN block inside a scope
s/form/script 10:24
colomon just to get it to happen "first"
lizmat well, yes, for testing it is all ok 10:25
I'm just starting to wonder whether the current implementation of "use lib" leaks in such a way as to be detrimental 10:26
to the scoping that we otherwise have with "use"
colomon ah, yes, that certainly seems like an issue,.
lizmat sub foo1 (|c) { use Foo:ver<1.2>; Foo.new(|c) }; sub foo2 (|c) { use Foo:ver<2.0>; Foo.new(|c) } # this should work in the near future, right? 10:28
now assuming 1.2 needs a different module search path from 2.0
that wouldn't be possible in the current setup, as runtime @*INC manipulation would be visible everywhere 10:29
or am I missing something ?
maybe we need to wrap @*INC into an exported sub and make it have its own lexical copy 10:34
and have module searching use that sub instead of @*INC ?
colomon +1 on the basic idea of supporting this, no idea what the right way to implement it is. 10:36
lizmat assuming we want to be able to lexicalize module search paths 10:37
nwc10 last "win32 parallel testing" message I can spot is www.nntp.perl.org/group/perl.qa/201...13473.html 10:41
jnthn lizmat: We most probably want some kind of way to specify an exit hook 10:42
lizmat exit hook?
jnthn lizmat: A kind of thing like EXPORT, apart from called when leaving the scope that did the "use" statement.
lizmat: So it can undo anything it wishes 10:43
lizmat why would we need that? when exporting a sub to a scope alone already can do what we want ?
jnthn Huh?
I thought you wanted a way to make the @*INC modifications lexical?
lizmat well, I want the *functionality* lexical 10:44
which may mean moving away from @*INC
jnthn Ah, so you solve it by just exporting an updated @*INC var
That's probably easier here, yes.
lizmat essentially, yes
jnthn oh, hm
or is it. 10:45
No, it's harder than that
lizmat I'm wondering as well
jnthn runtime/compile-time confusion.
lizmat why?
jnthn Because exporting a variable is going to affect that's visible when in that block at runtime
But won't influence the PROCESS::<@*INC> lookup at compile time, I doubt...
lizmat but I would be exporting a *sub*
and that *sub* would be asked what the current module lookup path is /are 10:46
jnthn I don't quite see how that helps the module loader?
lizmat not 100% sure either yet,
am a bit handwavy atm
jnthn I may be missing something, but I'm not sure doing it as a sub rather than a var immediatley solves anything...
I can see it working with a compile-time scope exit hook though 10:47
lizmat like a COMPOSE on the block ?
jnthn No, just some magically named sub in the module
This probably also ties into how we'll implement "no"...
lizmat ah, lexical pragma's :-) 10:48
jnthn Right.
lizmat ok, I'll put this on the back burner for deliberation and inspiration
jnthn *nod*
Yeah, I don't have a great answer yet either.
How likely do you think @*INC is to survive the S11/S22 work, ooc? 10:49
lizmat not very likely, as in my view, it's an implementation detail that needs to be hidden
especially compile time / run time confusion that we have in Perl 5 10:50
we need to make more transparent and easier to understand to the lay people :-)
some common error like: 10:51
puhs @INC,'dir'; use Foo
*push
timotimo tadzik: moar
lizmat not finding the right Foo
because the push is done *after* the use
timotimo t.h8.lv/p6bench/2014-05-02-vmnull.html - much graph 10:53
jnthn lizmat: Well, "use lib" is the way to make that easy thing easy, no? :)
lizmat yes, but in Perl 6 we have the added functionality of "use" being lexical in its effects
*except* for "use lib" atm 10:54
colomon avuserow++ # I'm now using Audio::Taglib::Simple for simple, practical tag examination and changing. 10:58
lizmat jnthn: would it be an idea to have Supply.close return True on successful close 11:08
akin to IO.close ?
or otherwise, Nil like done/more ?
jnthn lizmat: I'd guess if the closing thing throws an exception we want that to just be thrown to the closer 11:21
lizmat: We could use true/false though 11:22
true = I closed the tap
false = I didn't because it was already closed
Which may be useful in cases where there is competition to close.
lizmat ok, so if no tappers, False
otherwise True
jnthn It's not "if no tappers", it's "if we removed something" 11:23
lizmat ah, ok (I think)
jnthn can, since we're holding a lock at that point, compute it by knowing size of tappers array before and after
(after attempting to remove) 11:24
lizmat ack
something else:
dalek rlito: 37d31bb | (Flavio S. Glock)++ | / (4 files):
Perlito5 - string parser flags \l \u
lizmat with the IO::Notification.watch_path tests 11:25
I ran into the problem of checking the object seen
because the class is lexical inside the other class
I added:
sub Change { Change }
to the code, which now effectively lets me check for IO::Notification::Change
jnthn Oh, I'd just remove the "my" in this case 11:26
lizmat my ? there is no my
jnthn ?
Oh
So why isn't IO::Notification::Change already visible?
Should be by normal package nesting... 11:27
lizmat wasn't that the backlinking issue
hmm....
jnthn m: say IO::Notification::.keys
camelia rakudo-moar fd5f8e: OUTPUT«Change␤»
jnthn m: say IO::Notification::Change
camelia rakudo-moar fd5f8e: OUTPUT«(Change)␤»
jnthn There it is.
:)
lizmat of course: the problem wasn't the lookup 11:28
the problem was that the class itself doesn't know it is a "IO::Notification::Change"
so it's representation is faulty
(Change) instead of (IO::Notification::Change)
right ?
jnthn I think .WHAT always gives a thing that stringifies to a short name? 11:29
By S12, anyways... 11:30
lizmat m: IO::Notification.WHAT.say
camelia rakudo-moar fd5f8e: OUTPUT«(IO::Notification)␤»
lizmat should that then need to say (Notification) ? 11:31
wasn't the problem that we don't really have class hierarchies yet ? 11:32
jnthn Yeah, I guess so...
Um...what?
No, it's purely a "what is passed as the 'name' parameter to the meta-object" issue
lizmat if IO::Notification had been implemented with class IO { class Notification { } }
it *would* have said (Notification) 11:33
because it only sees its own class definition
jnthn checks S12
lizmat m: class Foo { class Bar {} }; say Foo::Bar
camelia rakudo-moar fd5f8e: OUTPUT«(Bar)␤»
lizmat m: class Foo::Bar {}; say Foo::Bar
camelia rakudo-moar fd5f8e: OUTPUT«(Foo::Bar)␤»
jnthn Yeah, S12 has it as .WHO stringifying to the long name 11:34
Note class Foo::Bar { } is more like package Foo { class Bar { } } really
S12 is actually out of date... 11:35
WHAT the type object of the type, .gist returns MyClass()
It's (MyClass) now...
lizmat but is the spec wrong, or Any.gist(T) ? 11:36
jnthn Neither, I think it wants fixing at the point we construt the meta-object 11:37
So, in package_def 11:38
lizmat hmmm... not quite following now 11:40
timotimo t.h8.lv/p6bench/2014-05-02-moar_progress.html - moarvm progress over a short time time 11:42
dalek rlito: 0d69b30 | (Flavio S. Glock)++ | / (4 files):
Perlito5 - string parser flags \l \u precedence # 1006 tests!
11:43
ast: cbacb42 | (Elizabeth Mattijsen)++ | S17-supply/watch_path.t:
Add IO::Notification.watch_path tests
11:50
lizmat looking at the commit msg, I can't help but wonder whether "watch-path" wouldn't be more Perl6 11:51
jnthn lizmat: The .gist output is made from .^name, which is set in token package_def 11:53
moritz
.oO( night watch )
11:55
jnthn timotimo: Nice plots! :) 11:57
masak .oO( night plots ) 11:57
dalek kudo/nom: 57b0ead | (Elizabeth Mattijsen)++ | t/spectest.data:
Add IO::Notification.watch_path tests
timotimo i have a sneaking suspicion 11:58
maybe the ramps in the graphs come from the previous test exhausting the ram completely, thus kicking out all buffers and then the timing script has to grab itself from disk once more in order to run or something silly like that 11:59
FROGGS on an amiga you could have made your script resident :/ 12:00
lizmat create a ramdisk with the script ?
masak timotimo++ # t.h8.lv/p6bench/2014-05-02-vmnull.html 12:02
dalek rlito: b2761c4 | (Flavio S. Glock)++ | / (4 files):
Perlito5 - string parser flags \c
12:07
igorsutton_ yay, running rakudo spec tests locally :) 12:25
lizmat igorsutton_++ 12:29
igorsutton_ lizmat: :)
timotimo todo: figure out why Int exists twice in @foo.^methods 12:30
jnthn todone: inheritance
FROGGS jnthn: do you have a hint for me how I can properly rethrow from the handlerscope in nqp::handle? 12:31
timotimo should @foobar.map(*) work? currently it gives "no method count for Whatever"
FROGGS jnthn: do I need to unwind before rethrowing or so? so that I do not rethrow to my own handler?
timotimo: what is the point of this operation?
jnthn FROGGS: Hmm...there should already be stuff in Moar to ensure that a handler never re-catches an exception it's handling. 12:32
Ven_ FROGGS: * xx +@foobar
jnthn Or more precisely, that's what the active handlers thing is about.
Ven_ m: say (^10).map(True)
camelia rakudo-moar fd5f8e: OUTPUT«No such method 'count' for invocant of type 'Bool'␤ in method reify at src/gen/m-CORE.setting:7681␤ in method reify at src/gen/m-CORE.setting:7592␤ in method reify at src/gen/m-CORE.setting:7592␤ in method reify at src/gen/m-CORE.setting:7592…»
jnthn map wants something it can call 12:33
Ven_ too bad it makes sense :D
FROGGS if (pc >= f->effective_handlers[i].start_offset && pc <= f->effective_handlers[i].end_offset) 12:34
if (!in_handler_stack(tc, &f->effective_handlers[i]))
jnthn: so this should prevent that? hmmm...
I'll dig deeper into that 12:35
jnthn the in_handler_stck bit, yeah 12:36
FROGGS okay, it runs the first handler (a for loop with another label), and then rethrows and does not run any handler anymore
FROGGS ohh 12:37
dang
since the handler is static for 'for' loops, it can never appear more than once in the stack? 12:38
that is my test: my $x; BAR: for "bar" { .say; FOO: for "foo" { .say; redo BAR unless $x++; } }; say BAR
jnthn Hmm
FROGGS this should print: bar foo bar foo 12:39
it prints bar foo instead, and then misses the right handler
jnthn ah...could be that
in_handler_stack should maybe be considering the actual frame too 12:40
So such recursion works out 12:41
MVMActiveHandler does have a ->frame, and there's one available to pass in to in_handler_stack at the point it's called
FROGGS \o/ 12:53
jnthn: I love you :D
Ven_
.oO( you took him with the right handles )
masak p6: sub foo($x = $x.WHAT) { say $x }; foo; say "alive" 12:54
camelia niecza v24-109-g48a8de3: OUTPUT«Unhandled exception: System.NullReferenceException: Object reference not set to an instance of an object␤ at Anon.1.MAIN.2a1c590d-c361-4389-bbde-e099de79026d.C2$x = $x.WHAT init (Niecza.Frame ) [0x00000] in <filename unknown>:0 ␤ at Niecza.Kerne…»
..rakudo-moar fd5f8e: OUTPUT«Type check failed in binding $x; expected 'Any' but got 'Mu'␤ in sub foo at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-parrot fd5f8e: OUTPUT«Can only use get_what on a SixModelObject␤ in sub foo at /tmp/tmpfile:1␤ in block at /tmp/tmpfile:1␤␤»
..rakudo-jvm fd5f8e: OUTPUT«Unhandled exception: java.lang.RuntimeException: Missing or wrong version of dependency 'src/Perl6/Grammar.nqp'␤ in (gen/jvm/main.nqp)␤␤»
Ven_ Different errors everytime :D 12:55
masak locally, I get a segmentation fault.
m: sub foo($x = $x.WHAT) { say $x }; foo; say "alive"
camelia rakudo-moar fd5f8e: OUTPUT«Type check failed in binding $x; expected 'Any' but got 'Mu'␤ in sub foo at /tmp/EOb9Rh0pKN:1␤ in block at /tmp/EOb9Rh0pKN:1␤␤»
dalek rlito: ce083fd | (Flavio S. Glock)++ | / (3 files):
Perlito5 - js - use special var $"
timotimo FROGGS: it just irks me that .map(*+0) works, but .map(*) doesn't
masak I'm running 2014.04-5-g921615b here. maybe time to upgrade?
Ven_ timotimo: what do you need it for ? cloning ? 12:56
masak this month wants for a rakudo release manager. it's next week. someone sign up? 12:57
timotimo i don't actually need it; except for teaching
"look, you can .map(*) and then do anything with that *! oh, what's that? an error message..... oh well"
lizmat timotimo: .map(*) would be a noop 13:08
FROGGS yes, the question is if that still work then 13:09
should*
lizmat so maybe we'd only need another .map candidate ?
Ulti__ problem from yesterday is resolved with latest moar
FROGGS nice! (whatever it was :o)
Ulti__ thanks whoever fixed it
jnthn (whoever fixed it)++ 13:10
jnthn
.oO( so what bug was it... :) )
13:10
Ulti guess I could work out who made any contribution since yesterday afternoon and ++ :P
lizmat fwiw, I haven't seen any phaser/FIRST failures for a while either
masak ok, segfault went away with newest Rakudo. whoever++ 13:11
Ulti whoever++
well done whoever
Ven_ that's like,*.Person
dalek rlito: 0aab5f3 | (Flavio S. Glock)++ | / (4 files):
Perlito5 - string parser flag \octal
13:12
Ulti however my grammar doesn't actually quite work yet :) 13:12
but atleast I know that 13:13
dalek rlito: d87bc09 | (Flavio S. Glock)++ | t5/01-perlito/050-string.t:
Perlito5 - string parser flags - tests
13:27
kudo/nom: 10cfb75 | (Elizabeth Mattijsen)++ | src/core/Supply.pm:
Make (Supply|Tap).close return True on success
13:29
p/loop_labels: 9a7a224 | (Tobias Leich)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
support labels in nqp::handle (rakudo for loops)
timotimo i need a simple way to get my "external ip" (and ideally also ipv6); can somebody tell me a website that would output my ipv4 and v6 directly in the html source code? 13:34
dalek kudo/loop_labels_test: ec9b1c3 | (Tobias Leich)++ | src/core/PseudoStash.pm:
fix fudge and .gist for Label type
13:35
kudo/loop_labels_test: 65b2fea | (Tobias Leich)++ | src/ (3 files):
support labels in MapIter (for loops) on moarvm

The code in nqp::handle that inserts the label if it is there is pretty redundant, and hopefully can be shortened. To make labeled for loops available on parrot, the pir block in MapIter must be tweaked to install the needed exception handlers.
Su-Shee timotimo: whatsmyip.net/
timotimo <h1 class="ip">Your <acronym title="Internet Protocol">IP</acronym> Address is <input type="text" value="2a02:8071:2984:a300:5604:a6ff:fe93:d1a6" /></h1> 13:36
that looks very nice
however, i can already figure out my global ip via "ip a l" 13:37
maybe i can curl -4
yes, i can!
that's fantastic, thank you so much :)
dalek p/loop_labels: 2b8ad37 | jnthn++ | tools/build/MOAR_REVISION:
Bump to a Moar with VMNull changes.
p/loop_labels: 80e52eb | jnthn++ | src/QAST/ (11 files):
Add a way to count arg placeholder usages.
p/loop_labels: a232e9a | jnthn++ | tools/build/MOAR_REVISION:
Get a MoarVM with lazy lexical alloc opt.
p/loop_labels: 71623e1 | (Tobias Leich)++ | / (12 files):
Merge branch 'master' of github.com:perl6/nqp into loop_labels
dalek Heuristic branch merge: pushed 51 commits to rakudo/loop_labels_test by FROGGS 13:38
Ven_ is there any assembly grammar yet :D ? 13:43
moritz .* 13:44
moritz "assembly" as a language is about as precises as "SOAP" as a protocol :-) 13:49
aka, there are some commonly used elements, but everybody does their own fu in the end
Ven_ moritz: aka why I put "any" 13:51
dalek ast: aad34d1 | (Elizabeth Mattijsen)++ | packages/Test/Tap.pm:
tap_ok now also tests Tappiness of the tap
ast: 0bf0f75 | (Elizabeth Mattijsen)++ | S17-supply/list.t:
We don't need Test::Tap here
ast: 130af49 | (Elizabeth Mattijsen)++ | S17-supply/ (14 files):
Adjust # of tests for extre test in tap_ok
jnthn beershop & 13:52
lizmat systembolaget ?
jnthn ja!
lizmat :-)
jnthn Like there's any other choice here :P
lizmat I was wondering because you said "beershop" as opposed a more generic "drink" shop 13:53
jnthn Ah...they do have other nice things. But today I'm just looking for beer :)
lizmat :-) 13:54
jnthn anyway, bbiab
[Coke] BEEEEEEEER 14:00
FROGGS sidenote: the loop_labels branch does not regress anything and let me unskip stuff from two test files 14:02
which means, we really need more tests about labels 14:03
dalek ast: 8acb632 | (Elizabeth Mattijsen)++ | S17-supply/ (2 files):
Add some Tap.close tests
14:04
timotimo okay. 3.5 hour autobahn ride 14:07
won't get any coding done i'm afraid :(
ttyl
FROGGS o/ 14:08
lizmat gute Fahrt!
masak \o
lizmat $ perl6 -e 'Int.map(*).say' 14:14
(Int)
too bad timotimo is offline
before jnthn++ 's proto elimination optimization was there, I would not have done that 14:15
however, as far as I understand, there is no runtime penalty anymore for making map a multi
m: Int.map(*).say 14:16
camelia rakudo-moar fd5f8e: OUTPUT«No such method 'count' for invocant of type 'Whatever'␤ in method reify at src/gen/m-CORE.setting:7681␤ in method reify at src/gen/m-CORE.setting:7592␤ in method reify at src/gen/m-CORE.setting:7592␤ in method reify at src/gen/m-CORE.setting:75…»
vaskozl Is i me or is this place becomming more popular by the hour? 14:19
masak vaskozl: it's you :)
Ven_ it's perl6 :) 14:20
Ven_ has only been around for ~2 months now 14:20
Ven_ and still hasn't done anything interesting with p6 to date 14:25
Ven_ "Since rakudo doesn't yet allow the EXPORT sub of a package to return a hash of things to export, the ADT cannot be used to define multi subs, because the symbols are not available at compile time." erm, is that still true ? 14:35
lizmat I seem to recall FROGGS fixed that 14:36
Ven_ (i'm asking for timotimo 14:41
s ADt) . ... damn qwerty
vaskozl Ven_: blame it on the keyboard.. 14:48
Ven_ Ven_: 10years+ with an azerty makes it hard for me to use a qwerty :)
(and I still use my azerty when home, ofc)
vaskozl Ven_: Don't complain 14:51
Ven_ I'm french -- I have to :)
vaskozl Learn something like colemak 14:52
then you will be confused
FROGGS Ven_: you'd have to ask timotimo, because he does something strange in ADT, but EXPORT does allow to return a hash 14:54
and tbh, I don't recall to fix something in that regards :o)
dalek kudo/nom: 6ab95bb | (Elizabeth Mattijsen)++ | src/core/Any.pm:
Implement .map(*) and map(*,...)

Mostly for consistency's sake and the fact that proto's are much cheaper now
lizmat timotimo: ^^^ 14:55
also, highly optimized :-)
Ven_ what do you use to trigger tests in t/ ? 15:00
(just perl6 t/* ?) 15:01
lizmat make t/spec/....
not sure what you mean / want
Ven_ lizmat: in a repo without a Makefile
FROGGS make has the benefit that it also fudges the test file
lizmat indeed, and you need that!
Ven_ I'm looking at timotimo++'s ADT module and there's no Makefile
lizmat but generally, perl6 *.t will work 15:02
FROGGS prove -e perl6-m t
lizmat if there are no tests fudged for your VM
Ven_ except I'm on windows :( I'll go with a makefile I guess
lizmat prove should work on Win, no?
FROGGS it does
jnthn Does for me.
FROGGS and you should have it from ActivePerl/strawberry 15:03
Ven_ will install strawberry
dalek ast: 8552051 | (Elizabeth Mattijsen)++ | S32-list/map.t:
Add tests for .map(*) and map(*,...)
15:04
Ven_ ah, but I can't use *.t on window anywya 15:09
ah, but prove seem to take t/ by default 15:10
dalek rlito: e650a2e | (Flavio S. Glock)++ | src5/lib/Perlito5/Grammar/Regex5.pm:
Perlito5 - regex parser cleanup
15:12
lizmat m: say ".".IO
camelia rakudo-moar fd5f8e: OUTPUT«IO::Handle<.>(closed)␤»
lizmat m: ".".IO.say 15:13
camelia rakudo-moar fd5f8e: OUTPUT«write string requires an object with REPR MVMOSHandle␤ in method print at src/gen/m-CORE.setting:13810␤ in method say at src/gen/m-CORE.setting:13822␤ in block at /tmp/iEz1y98Dqa:1␤␤»
lizmat ah, of course, duh :-)
Ulti what is currently the most efficient way to remove a specific character from a string in P6? 15:20
masak Ulti: just one, or all of them?
Ulti all of the instances of a single character
I tried a comb and join but that was not a good plan 15:21
jnthn .subst('c', :g) 15:22
FROGGS m: my $s = lines().Str.subst('e','ö', :g); say nqp::time_n() - BEGIN nqp::time_n; say $s
camelia rakudo-moar fd5f8e: OUTPUT«0.334710121154785␤Thörö wörö thröö mön camö out of thö Wöst Thöir fortunös for to try And thösö thröö mön madö a solömn vow John Barlöycorn must diö Thöy'vö ploughöd, thöy'vö söwn, thöy'vö harrowöd him in Thröw clouds upon…»
Ulti jnthn++ FROGGS++ 15:24
though jnthn only worked if I gave a "" to substitute with 15:25
Ulti neat have a working FASTA parser that produces a list of objects :) 15:25
auto detects the type of sequence too which is really neat
jnthn Ulti: Uh, yeah, sorry...forgot that. 15:26
Ulti np
also this is a *lot* faster than the last time I played with this stuff
now just need to get rid of the slurp 15:27
dalek p/async_ops: 2b8ad37 | jnthn++ | tools/build/MOAR_REVISION:
Bump to a Moar with VMNull changes.
15:33
p/async_ops: 80e52eb | jnthn++ | src/QAST/ (11 files):
Add a way to count arg placeholder usages.
p/async_ops: a232e9a | jnthn++ | tools/build/MOAR_REVISION:
Get a MoarVM with lazy lexical alloc opt.
p/async_ops: 740fa0c | (Donald Hunter)++ | src/vm/jvm/runtime/org/perl6/nqp/ (3 files):
Implement asyncreadbytes on JVM. Extracted Buffers utils from Ops.java
p/async_ops: d200db6 | (Donald Hunter)++ | src/vm/jvm/runtime/org/perl6/nqp/io/AsyncSocketHandle.java:
Need to copy bytes out of ByteBuffer, not reference internal array.
p/async_ops: 620745d | (Donald Hunter)++ | / (12 files):
Merge branch 'master' of github.com:perl6/nqp into async_ops
p: 31884dd | (Donald Hunter)++ | src/vm/jvm/ (2 files):
Add stubs for async ops on JVM.
15:36
nqp: fd6faf9 | (Donald Hunter)++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
nqp: Fix Ops.bindsock to test instanceof IIOBindable instead of ServerSocketHandle.
Ulti if I want to look at the <sym> from a proto token in the actions what should I be looking at? ~$<token_name><sym> ? 15:37
FROGGS Ulti: $<sym> 15:38
jnthn Depends which action...
donaldh_ looks like dalek just died when I committed there
FROGGS m: grammar Foo { token hurz:sym<bla> { <sym> } }; class Bar { method hurz:sym<bla>($/) { say $/ } }; Foo.parse("bla", :actions(Bar)) 15:39
camelia rakudo-moar fd5f8e: OUTPUT«No such method 'TOP' for invocant of type 'Foo'␤ in method parse at src/gen/m-CORE.setting:13029␤ in block at /tmp/GkGfW9nytk:1␤␤»
FROGGS m: grammar Foo { token TOP { <hurz> }; token hurz:sym<bla> { <sym> } }; class Bar { method hurz:sym<bla>($/) { say $/ } }; Foo.parse("bla", :actions(Bar))
camelia rakudo-moar fd5f8e: OUTPUT«No such method 'hurz' for invocant of type 'Foo'␤ in regex TOP at /tmp/_7A9Rxv58U:1␤ in method parse at src/gen/m-CORE.setting:13029␤ in block at /tmp/_7A9Rxv58U:1␤␤»
FROGGS m: grammar Foo { token TOP { <hurz> }; proto token hurz { * }; token hurz:sym<bla> { <sym> } }; class Bar { method hurz:sym<bla>($/) { say $/ } }; Foo.parse("bla", :actions(Bar)) 15:40
camelia rakudo-moar fd5f8e: OUTPUT«「bla」␤ sym => 「bla」␤␤»
Ulti oh so you can actually use those as the method names in the actions class
FROGGS yes, you need the identical method (long)name in the action class
jnthn donaldh_: Getting to kill dalek is the reward for hard work around here :) 15:41
Ulti ahh but I am doing a "make" in the thing above
donaldh_ :)
FROGGS Ulti: okay, but what is the problem? :o) 15:42
Ulti one sec will gist
FROGGS 'make' only means that you are attaching something to $/.ast
m: grammar Foo { token TOP { <hurz> }; proto token hurz { * }; token hurz:sym<bla> { <sym> } }; class Bar { method TOP { say $<hurz><sym> } }; Foo.parse("bla", :actions(Bar)) 15:43
camelia rakudo-moar fd5f8e: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤ in method TOP at /tmp/5TGsH2xYJs:1␤ in any !reduce at gen/moar/stage2/QRegex.nqp:759␤ in any !cursor_pass at gen/moar/stage2/QRegex.nqp:721␤ in regex TOP at /tmp/5TGsH2xYJs:1␤ in m…»
FROGGS m: grammar Foo { token TOP { <hurz> }; proto token hurz { * }; token hurz:sym<bla> { <sym> } }; class Bar { method TOP($/) { say $<hurz><sym> } }; Foo.parse("bla", :actions(Bar))
camelia rakudo-moar fd5f8e: OUTPUT«「bla」␤␤»
FROGGS Ulti: you can do that ^^
I think that is what you meant
Ulti yeah that is what I am doing I think { token TOP { <hurz> }; proto token hurz { * }; token hurz:sym 15:44
erk
gist.github.com/MattOates/0a0dac1fd96377da2c35
but it comes up as use of uninitialized value of type Any in string context
FROGGS ohh 15:45
no, the $<hurz><sym> is only there because it actually matched
lizmat $ perl6 -e '"foo bar baz".subst("a",:g).say'
foo br bz
spectesting that change now
Ulti FROGGS: ahh 15:46
is there any way to get it if I didn't match
I've seen from the grammar tracer it is using the right token
FROGGS m: grammar Foo { token TOP { <hurz> }; proto token hurz { * }; token hurz:sym<bla> { <sym> } }; class Bar { method TOP($/) { say $<hurz>.ast }; method hurz:sym<bla>($/) { make 'bla' } }; Foo.parse("bla", :actions(Bar)) 15:47
camelia rakudo-moar fd5f8e: OUTPUT«bla␤»
FROGGS Ulti: you can stash something in $<sequence>.ast and then check for that
... in method record
dalek kudo/nom: 19fd86f | (Elizabeth Mattijsen)++ | src/core/ (2 files):
Make .subst("a",:g) work
15:54
jnthn lizmat: Not sure if that'll be a DWIM or a WAT... :) 15:55
lizmat well, *you* typed it assuming it would work :-)
PerlJam more of a WAT for me
(at least I was thinking, "Why would lizmat do that?!?")
jnthn lizmat: No, I typed it wrong 'cus I was doing 3 things at once. :)
lizmat want me to revert? it's not like it's important to me, but it *did* seem logical to me 15:57
I mean, it was a 10 character fix, could have been a 6 character fix with less whitespace :-) 15:58
FROGGS hmmm, I'd +1 to keep it 15:59
Ven_ yay for socket async 16:00
HAML parser should be Text::HAML
?
jnthn lizmat: Don't feel strongly either way, it's hard for me to know whether it'll prevent folks getting a helpful error when they forgot the arg more often than it'll be a useful shortcut. 16:02
PerlJam (a weak argument but ...) The other forms of .subst() always have a replacement. You can't just go $text ~~ s:g/a/; or s:g[a]; to mean the same as .subst("a", "", :g);
dalek ast: efa05cf | (Tobias Leich)++ | S04-statements/redo.t:
remove non-TAP output
16:03
dalek kudo-star-daily: 36c94b8 | coke++ | log/ (5 files):
today (automated commit)
16:03
lizmat PerlJam jnthn FROGGS: I'll refrain from writing tests for .subst("A") for now (or make the spec more specific) 16:07
lizmat until TimToady has said something about it 16:07
FROGGS yeah, that is probably wise 16:07
TimToady seems like a feature that only increases confusion to me
PerlJam another minor thing is that there's the added cognitive load of having to remmeber 2 implicit things and that one of them isn't $_
dalek kudo/nom: eb062c0 | (Elizabeth Mattijsen)++ | src/core/ (2 files):
Revert "Make .subst("a",:g) work"
16:08
lizmat say no more :-) 16:09
PerlJam now ... if only we could make the levenshtein edit distance between substr and subst a little bit bigger :-) 16:10
FROGGS jnthn: if you are bored of typing, can you review the loop_labels/loop_labels/loop_labels_test branches?
FROGGS jnthn: the latter needs cleanup, like creating a src/core/Label.pm 16:10
masak PerlJam: following recent trends, I propose (tongue-in-cheek) that we rename the latter .SUBST :P
FROGGS jnthn: all is done on moar so far, MapIter needs to be aligned for parrot, and all the stuff needs to be implemented for jvm 16:11
masak PerlJam: because .substr is the "pure" operation, and .SUBST requires you to take care.
PerlJam masak: careful what you say ... you never know when TimToady might like your suggestions ;) 16:11
masak PerlJam: also because you can't really modify strings, so clearly it's doing something magical.
jnthn Let's make everything that mutates be uppercase! 16:12
:P
[Coke] let's make it cyrllic!
FROGGS also, 'new' really is magical and needs to be NEW
[Coke] .субст()
TimToady masak: as near as I can tell, 'is parsed' ought to be largely orthogonal to whether the macro returns text or AST
masak TimToady: agree.
TimToady the whole point of immutable cursors is that you just pick the one you want to continue with 16:13
PerlJam masak: or ... I counter propose that .subst should really just be .s ;)
donaldh_ github.com/rakudo/rakudo/pull/266 - async IO on JVM.
masak PerlJam: ooh
PerlJam: it's probably too late for that, but otherwise I like it.
TimToady a small collision with IO.s
PerlJam yep 16:14
TimToady and people will try to write .s/foo/bar/
PerlJam yep
TimToady and we really don't want to make it a postfix macro 16:15
PerlJam I just need to train my fingers better. I'm always typing substr when I mean subst, so it bothers me.
lizmat .substitute then maybe, to add to the levenshtein distance with .substr
TimToady then we really would have to spell it .SUBST
lizmat afk for a bit 16:16
TimToady put in fake candidates for .subst and .substr that notice when the args are the wrong type, and suggests the other
PerlJam .search-and-replace
Ulti lizmat++ 16:17
^ for .subst
FROGGS ohh, just realized that nqp-m's for loop do not yet support labels for some reason...
nqp-p does however
Ulti though it is a bit of a weird case, I assumed the "" even though jnthn didn't put it in :3 16:18
but checked out of curiosity
though I would prefer .strip("a") 16:19
JimmyZ hopes there will be a Perl 6 version of Akka
PerlJam Ulti: that seems an unwarranted specialization to me. 16:20
Ulti *shrug* 16:21
I would also do .replace instead of .subst too
though I would also say :a "all" instead of :g which is essentially Perl heresy 16:23
or even :all
TimToady well, if you want heresy, make that the default, and rely on :1st for the other 16:24
changing defaults is real heresy, not bikeshedding the name :) 16:25
PerlJam that would be more huffmanly. I can't remember the last time I've wanted to replace just the first occurence of something.
Ulti yeah I kind of wonder, I usually do global replace, but for one liners its more common not to
PerlJam I would probably be fine if it were called :a/:all and the default. 16:26
FROGGS well, we can change its default whether you're running a -e or not :P
TimToady so that's just the default default, but then what's the default default default? 16:27
FROGGS that clearly depends on the os, backend, and strict/lax mode 16:30
maybe even the phase of the moon
FROGGS (our moon) 16:30
Ulti FROGGS: lol unpredictable stateful behaviour is perhaps computer science heresy :P
FROGGS :o)
Ulti the -e being able to be copy pasted at a later date into a script is something that is a unique perl strength... if only I could get my supervisor to actually add some white space after this copy pasting! 16:31
dalek p/loop_labels: ba88343 | (Tobias Leich)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
fix labels in for loops, and only emit three ex handlers
16:31
Ulti well and sed 16:32
FROGGS :/ 16:32
PerlJam I just did a quick survey (via ack) of all of the perl 6 code I have handy on disk and almost every use of .subst has :g 16:32
FROGGS my p5/6 code does that also 16:33
PerlJam Looks like JSON::Tiny and SVG have some non-:g uses of subst 16:34
oh, just in tests 16:35
moritz tests are valid uses cases too :-) 16:40
there was a time when s/// didn't accept adverbs 16:41
which is why the :g form was written as .subst, back then 16:42
TimToady well, and s/// is mutating 16:46
[Coke] Perl 6 is one of the white cards in "DevOps against humanity" 17:21
github.com/bridgetkromhout/devops-...t-humanity . click on "shared google doc" to see the current suggestions. 17:22
masak what does it mean to be a white card? 17:25
[Coke] it's based on cards against humanity. black cards are fill in the blanks. white cards are things that go in blanks. So a black card might have something like: 17:27
You can fix __________ with _____________ .
and the answer might be: "Perl 6", "A 1996 Java applet" 17:28
CAH is like grown up Apples to Apples.
masak don't know that reference, but I can imagine. :) 17:29
[Coke] start here: cardsagainsthumanity.com/ 17:29
[Coke] warning, NSFW!!! (whereas devops version mostly is) 17:30
nwc10 curiously, no mention of Rails 17:32
vendethiel nwc10: erm, I don't see how a web framework could be used in devops :D 17:38
nwc10 oh, I sort of missed that 17:39
I did like /cgi-bin/php5
tadzik hm, weird. I get "Can not bind non-existent attribute '$!tex'" in method perl at src/gen/m-CORE.setting:1063 17:40
tadzik why would .perl() ever bind an attribute? 17:40
japhb vendethiel: For Redmine
vendethiel ooh :D
tadzik Heap corruption detected: pointer 0x7fc150dbce58 to past fromspace 17:43
aww yiss
avuserow (re: win32 testing in parallel) the "obvious" solution is just to write a new TAP runner in Perl 6 to use its concurrency model :P 17:47
jnthn tadzik: urgh...how'd you get that?
tadzik jnthn: shooting many bullets in space invaders 18:06
so: hard to say
it only happened once so far
lizmat TimToady: wrt your suggestion of making fake candidates for .subst and .substr to catch out wrong usage 18:07
maybe an "is error" routine trait would be useful?
jnthn tadzik: Oh joy, a bug that can only be found by playing space invaders... :P
tadzik :P
lizmat its sole purpose of causing a *compile* error when the optmizer selects that candidate 18:08
and a runtime error when called during runtime
lizmat or maybe having the body of a routine containing !!! should be enough? 18:10
only !!! I mean
lizmat m: sub a { !!! }; a # could be caught at compile time ? 18:11
camelia rakudo-moar fd5f8e: OUTPUT«Stub code executed␤ in sub a at /tmp/e7aPhg4GeN:1␤ in block at /tmp/e7aPhg4GeN:1␤␤»
tadzik r: class { metohd keypressed($k) { } } # LTA error message 18:14
camelia rakudo-{parrot,moar} fd5f8e: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Variable '$k' is not declared␤at /tmp/tmpfile:1␤------> class { metohd keypressed($k⏏) { } } # LTA error message␤ expecting any of:␤ postfix␤»
..rakudo-jvm fd5f8e: OUTPUT«Unhandled exception: java.lang.RuntimeException: Missing or wrong version of dependency 'src/Perl6/Grammar.nqp'␤ in (gen/jvm/main.nqp)␤␤»
tadzik also, jvm looks broken :)
dalek ecs: 965ec59 | (Elizabeth Mattijsen)++ | S17-concurrency.pod:
Change order to Supply.(start|migrate|schedule_on)

As that is the order in which they are most likely used.
18:17
[Coke] does having those other candidates slow anything down? 18:17
(for the suggested substr/subst fails) 18:18
lizmat I'm lead to understand that proto's are nowadays eliminated when they can 18:18
which is e.g. the reason you can't do "is cached" on a proto at the moment 18:19
so they're shouldn't be any runtime issue
I think the pb with subst / substr is more that they currently are not really MMD 18:20
timotimo o/ 18:27
tadzik jnthn: hm, I'm doing my $key = nqp::p6box_i($k) but role { method Str { SDL_GetScancodeName($k) } }; 18:28
lizmat m: say Int.map(*)
camelia rakudo-moar fd5f8e: OUTPUT«No such method 'count' for invocant of type 'Whatever'␤ in method reify at src/gen/m-CORE.setting:7681␤ in method reify at src/gen/m-CORE.setting:7592␤ in method reify at src/gen/m-CORE.setting:7592␤ in method reify at src/gen/m-CORE.setting:75…»
tadzik $k being a native int32
timotimo vendethiel: in a makefile-less project, just use ufo to create one automatically for you :)
tadzik does anything seem oddly wrong with this one?
I'm getting errors hard to replicate
for instance Lexical with name '$k' has wrong type, when doing .perl or .Str on that object
but when I try just doing the above in repl or somewhere it works fine 18:29
vendethiel timotimo: ufo ? 18:30
lizmat seems camelia is not up to date yet :-(
tadzik eh, it doesn't work anyway 18:31
lizmat pushed .map(*) change 3.5 hours ago, and still not live ?
tadzik but it helped when I assigned the SDL_() result to a variable and then put that in the method thingy
dalek ast: 86becde | (Elizabeth Mattijsen)++ | S17-supply/migrate.t:
Initial phase of testing Supply.migrate

For some reason, I'm making a thinko, as the 5th test always fails.
18:46
lizmat jnthn: ^^^ would appreciate feedback as to why this fails, am I understanding the spec wrong ?
vendethiel m: package A { sub postcircumfix:<( )>() is export {'a';} }; say A() 18:48
camelia rakudo-moar fd5f8e: OUTPUT«Cannot invoke this object (REPR: Uninstantiable, cs = 0)␤ in block at /tmp/kqXX2k9bCe:1␤␤»
vendethiel m: package A { sub postcircumfix:<( )>() is export {'a';} }; say A::.()
camelia rakudo-moar fd5f8e: OUTPUT«Cannot find method 'postcircumfix:<( )>'␤ in block at /tmp/eqpVvsje1U:1␤␤»
jnthn lizmat: looking 18:50
vendethiel m: anon sub (--> :(String)) {} 18:51
camelia rakudo-moar fd5f8e: OUTPUT«===SORRY!=== Error while compiling /tmp/5AlS5frp1h␤Missing block␤at /tmp/5AlS5frp1h:1␤------> anon sub (--> ⏏:(String)) {}␤ expecting any of:␤ scoped declarator␤ new name to be defined␤»
jnthn lizmat: huh...I don't immediately see a thinko 18:52
lizmat ok *phew*
maybe I should test Supply.start first :-)
vendethiel (why isn't that :() legal ?) 18:53
jnthn lizmat: oh...
lizmat oh?
vendethiel m: sub foo :($a,$b) {...}
camelia rakudo-moar fd5f8e: OUTPUT«===SORRY!=== Error while compiling /tmp/aS4DP_QlKC␤Cannot invoke this object (REPR: P6opaque, cs = 0)␤at /tmp/aS4DP_QlKC:1␤------> ␤»
jnthn I think you might need to $migrate.tap(...) before you $master.more($s1);
lizmat ack, so it *was* a thinko :-) 18:54
jnthn++
jnthn yeah, I just didn't spot it right off
jnthn blames post-nom brainfail :) 18:54
masak oh wow, the attributive parameter syntax is awesome for making factory classes.
PerlJam masak: that sounds like the beginning of an article :)
vendethiel masak: method BUILD (:$!a) ? 18:55
nwc10 jnthn: maybe you're not at the Balmer peak?
lizmat classy factories: and that on the *2nd* of May!
masak vendethiel: yes, but instead of BUILD, I'm writing user-accessible chaining methods.
jnthn nwc10: Didn't have any beer yet, so decidedly not :)
masak vendethiel: which successively configure an object.
PerlJam: it could be. :)
PerlJam: I'm tentatively flexing my free time again, for the first time in a while. feels great. 18:56
first up: p6cc/t4.
PerlJam masak++ nice (I had forgotten about p6cc) 18:57
vendethiel masak: `method set-x($!a) { self }` ?
yeah it's cool :D
m: multi sub handle_event ($window, $event;; $mode) {...} 18:58
camelia ( no output )
vendethiel so you're telling me I can't use a Closure parameter after a `-->` ? :( 18:59
masak vendethiel: yes, like that. 19:00
vendethiel m: say (anon sub () returns :(--> String) { -> { "a" } })()()
camelia rakudo-moar fd5f8e: OUTPUT«===SORRY!=== Error while compiling /tmp/UXqay8noL5␤Missing block␤at /tmp/UXqay8noL5:1␤------> say (anon sub () returns ⏏:(--> String) { -> { "a" } })()()␤ expecting any of:␤ scoped declarator␤ …»
vendethiel :[
masak: the other option would be smalltalk-like chaining :p
masak vendethiel: example?
vendethiel `$a = A.new();\n\t ..abc: "foo";\n\t ..anothercall(1);\n\t ..x = 5;` 19:01
a.k.a. cascading 19:02
timotimo vendethiel: did someone help you find ufo? 19:10
vendethiel timotimo: no 19:18
masak vendethiel: not sure I understand fully. feels similar to `given` 19:21
vendethiel masak: yeah, definitelmy
vendethiel
.oO( unification shines again )
19:23
masak well, it just means we don't need a special syntax for it, because we already have `given`. 19:24
vendethiel postfix unification 19:25
timotimo masak: will you explain ufo to ven? :)
masak ufo does a DFS over your modules, creating a Makefile that doesn't waste time compiling things twice. 19:31
masak it's meant as a tool for developers, not for shipping/downloading modules. 19:31
it has a README. read it. :)
dalek kudo/nom: fae0e42 | (Elizabeth Mattijsen)++ | src/core/SupplyOperations.pm:
Supply.migrate's supply should only take supplies
19:32
dalek ast: 95ccd97 | (Elizabeth Mattijsen)++ | S17-supply/migrate.t:
More Supply.migrate tests, now working!
19:33
moritz masak: last I looked, ufo didn't do the DFS; it let make do it 19:46
jnthn I thought it did a DFS on the module source use statements to build the makefile? 19:50
masak it used to. 19:51
moritz: you're right. seems you did that with ef94333e42ac96326b99a8e8a7951fb41058ff89 in 2012 :)
I'm out of date, clearly ;) 19:52
so the topo-sort is long gone... long live the topo-sort.
vendethiel "alpha as the Perl 6 binary" wow, that seems old :p 19:53
masak patches welcome :) 19:56
dalek ar: 4700659 | jnthn++ | README:
Update README for multi-backend Star.
nwc10 jnthn: Could you update all the "Perl 5.9.0" or newer to 5.10.0? 19:57
jnthn Oh, is it true for them all? 19:58
nwc10 minitrue insists that all dev releases never happened
it's nothing to do with whether it worked :-) 19:59
it's more "I don't think that it's a good idea to mention dev release version numbers"
and I might well not be the only one
dalek ar: dec0e26 | jnthn++ | README:
s/5.9.0/5.10.0/ as "dev releases never happened"
jnthn Review and other README patches welcome 20:00
nwc10 CPANtesters might start taking "affermative action" to elminate testing reports for dev releases that are parents of a stable release
vendethiel masak: well, if you think there's no need to support it anymore :)
nwc10 jnthn: thanks
vendethiel ufo says it's not made for checkable makefiles, so I'm not really interested 20:01
masak oki
yeah, it was never made for that.
nwc10 jnthn: IIRC we've also tried to purge references to dev release version numbers from core docs 20:02
5.7.3 - what does that mean?
vendethiel also, I really only work on windows, and that doesn't seem to be fit :p
jnthn Seems somebody did some of the 2014.04 prep already :) 20:03
moritz++
vendethiel masak: have you thought about multi-line parsing of text-indented 20:04
I'm trying to do a pseudo css preprocessor and I'm wondering how I'd do it
moritz well, some of it :-)
vendethiel but I'd like to be able to do `.a␤ .b␤ .c␤ color: red` 20:05
dalek ar: 9977651 | jnthn++ | Configure.pl:
Align warning with current status.
vendethiel moritz: can I ... "depend" on Text::Indented and `grammar Text::Styley; is Text::Indented;` then override line ? 20:06
vendethiel also, Text::Indented forces fixed tabstop :(. I'd like it to be more forgiving and just guess it (or allow tabs, which is what I use) 20:07
vendethiel well, that's probably something I can allow to be changed as a param, tho 20:08
dalek kudo/nom: 6c03a23 | (Elizabeth Mattijsen)++ | t/spectest.data:
Also do the Supply.migrate tests
vendethiel m: grammar G { has $.tab; method BUILD($.tab) { callnext; } }; G.new(tab => 'a').perl.say
camelia rakudo-moar fd5f8e: OUTPUT«===SORRY!=== Error while compiling /tmp/iftAJxc9rC␤Undeclared routine:␤ callnext used at line 1␤␤»
dalek ar: 7b16c2f | jnthn++ | docs/announce/2014.04:
Release announce work for 2014.04 release.
20:09
vendethiel m: grammar G { has $.tab; method BUILD($.tab) { callsame; } }; G.new(tab => 'a').perl.say
camelia rakudo-moar fd5f8e: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in method BUILD at /tmp/ONS9bJFwgQ:1␤ in method BUILDALL at src/gen/m-CORE.setting:875␤ in method bless at src/gen/m-CORE.setting:858␤ in method new at src/gen/m-CORE.setting:843␤…»
raiph Ulti: are you using the debugger to debug your grammar? 20:11
timotimo okay, what great things have i missed so far today?
jnthn Review of the release announce also welcome. 20:12
timotimo oooh star release <3
PerlJam jnthn: the last several announcement have had a .md suffix on the filename. Any reason you left it off on this one? 20:15
dalek rl6-roast-data: a1fd610 | coke++ | / (6 files):
today (automated commit)
PerlJam (it does keep github from auto-rendering the text) 20:16
[Coke] rakudo-parrot failed pretty much everything today
supply failures on jvm/moar unchanged.
jnthn PerlJam: I didn't, I just edited the file that was there
PerlJam oh 20:16
jnthn Guess I should make it consistnent 20:17
dalek ar: b01b40e | jnthn++ | docs/announce/2014.04 (2 files):
Release announce is markdown; PerlJam++.
jnthn heads over to his Linux VM to pimp out the release 20:18
lizmat [Coke]: jnthn didn't get into looking at the Supply.(delay|stable) issues yet
timotimo wow, seg all the faults
jnthn uh...pump out...
[Coke] ./perl6-p --target=pir --output=src/gen/RESTRICTED.setting.pir src/RESTRICTED.setting
maximum recursion depth exceeded
jnthn o.O
lizmat with more than your average number of backends, this rakudo star is pretty pimped :-) 20:19
PerlJam Random thought ... do we think that everyone who is reading these announcements will know where to look for more information? I mean we tell them to ask here if they'd like to contribute, but say I don't know what "univals" is for ... should we have links to the spec?
jnthn I'm not sure I know what a unival is :P
[Coke] this was with rakudo:18b7e2e
moritz m: say univals '¾' 20:20
camelia rakudo-moar fd5f8e: OUTPUT«0.75␤»
jnthn aha :) 20:21
[Coke] m: say univals '¾¾¾¾'
camelia rakudo-moar fd5f8e: OUTPUT«0.75 0.75 0.75 0.75␤»
dalek ast: a27b807 | (David Warring [email@hidden.address] | integration/advent2012-day21.t:
adding advent 2012 day 21 (stress test!)
20:25
ast: 5606c32 | (David Warring [email@hidden.address] | integration/advent2012-day22.t:
adding advent 2012 day 22
ast: 2e85b3c | (David Warring [email@hidden.address] | / (67 files):
Merge branch 'master' of github.com/perl6/roast
donaldh_ pimps his PR Implement IO::Socket::Async.bytes_supply and bump NQP_REVISION to get async ops on JVM. github.com/rakudo/rakudo/pull/266 20:26
timotimo donaldh_: i didn't read it over at all, but it looks like a nice thing to have :) 20:29
donaldh_ timotimo: catching up with moar :) 20:30
[Coke] ooh, no more permgen! yay!
timotimo i'm glad
permgen?
jnthn donaldh_: Does bytes_supply work on Moar also, ooc?
donaldh_ yeah, the JVM used to have a permgen space for class definitions. 20:31
[Coke] "A third generation closely related to the tenured generation is the permanent generation which holds data needed by the virtual machine to describe objects that do not have an equivalence at the Java language level. For example objects describing classes and methods are stored in the permanent generation."
donaldh_ Continual problems with running out, and no ability to GC.
jnthn It'll not be missed 20:32
donaldh_ jnthn: I did not test on Moar because Moar does not have asyncreadbytes implemented.
jnthn donaldh_: Right, meaning accepting the PR will break the build on Moar? 20:33
donaldh_: Or is it mapped, just not implemented?
donaldh_ Mapped and throws an exception at runtime.
jnthn ah, ok, then fine 20:34
dalek kudo/nom: c1833a1 | (Donald Hunter)++ | src/core/IO/Socket/Async.pm:
Implement IO::Socket::Async.bytes_supply
kudo/nom: 4efdc95 | (Donald Hunter)++ | tools/build/Makefile-JVM.in:
Add IO/Socket/Async.pm to JVM build. Bump setting build heap to 1000m for Java 8.
kudo/nom: 1b2d393 | (Donald Hunter)++ | tools/build/NQP_REVISION:
Bump NQP version to get async io ops on JVM.
kudo/nom: e3748d8 | jonathan++ | / (3 files):
Merge pull request #266 from donaldh/jvm_async_ops

Implement IO::Socket::Async.bytes_supply and bump NQP_REVISION to get async ops on JVM.
donaldh_ jnthn++
jnthn jnthn.net/tmp/rakudo-star-2014.04.tar.gz # rc 20:47
donaldh_ Does moar have many warnings on Linux / Windows ? (there are quite a few on MacOS) 20:48
jnthn None on Windows.
jnthn A few for me on Linux. 20:48
donaldh_ k, worth investing in some cleanup on Mac.... 20:49
Hmm. building nqp with --backends=moar --prefix=../install --gen-moar puts moar in the wrong place :) 20:50
:( even 20:51
donaldh_ will create an absolute path fix in due course. 20:52
jnthn Gee, the modules-test in R* goes by a good bit quicker on Moar than on Parrot... 20:53
Anyway, passes for both in that tarball, even after module bumps I did earlier on :) 20:54
So, the release candidate stands.
Will leave it until tomorrow to release, to give time for others to try it.
timotimo \o/ 20:59
dalek p: 6c1ac9f | jnthn++ | src/vm/moar/QAST/QASTOperationsMAST.nqp:
Ensure return types are set up for nqp:: ops.
21:05
timotimo huh, we didn't do that yet?! 21:08
poor optimizer!
jnthn Actually I had that patch locally when doing my timings yesterday 21:09
forgot I'd not pahs it
wonder if it makes a difference :)
donaldh_ what's still missing on JVM for * ? 21:11
jnthn donaldh_: Hunting a pre-comp bug or two, I think 21:12
timotimo jnthn: did that return value change actually change a lot? 21:29
it seems like it should
donaldh_ is it possible to build * in the git repo? 21:32
timotimo no, you can only build a tarball to build * with in the repo 21:34
vendethiel m: grammar G { token TOP { <['_' '-']> } } 21:39
camelia rakudo-moar fd5f8e: OUTPUT«===SORRY!=== Error while compiling /tmp/TsZsXei9Qf␤Unsupported use of - as character range; in Perl 6 please use .. for range, for explicit - in character class, escape it or place as last thing␤at /tmp/TsZsXei9Qf:1␤------> gra…»
vendethiel is that correct ? that's surprising
vendethiel m: grammar G { token TOP { [ <[A..Z]> <[a..z]> + ] ** 1..3 % <[' ' -]> } }; say G.parse('Hey-Here Buddy'); 21:40
camelia rakudo-moar fd5f8e: OUTPUT«(Any)␤»
vendethiel m: grammar G { token TOP { [ <[A..Z]> <[a..z]> + ] ** 1..3 % <[' ' -]> } }; say G.parse('Hey-Here-Buddy');
camelia rakudo-moar fd5f8e: OUTPUT«「Hey-Here-Buddy」␤␤»
vendethiel that's surprising too
I guess it *can* make sense, but sometimes not. Is there another operator to make it "recalculate" every time ?
lue vendethiel: you can't quote things in character classes. Those ' are literal.
vendethiel lue: oh. 21:41
m: grammar G { token TOP { <['a']> } }; say G.parse("b"); say G.parse("a");
camelia rakudo-moar fd5f8e: OUTPUT«(Any)␤「a」␤␤»
vendethiel apparently not, though ...
lue Those ' are literal :)
vendethiel as in, either ' either a ? 21:42
Timbus_ m: grammar G { token TOP { <['a']> } }; say G.parse("'");
camelia rakudo-moar fd5f8e: OUTPUT«「'」␤␤»
vendethiel 'kay
I take note :)
lue You can backslash a space, though.
r: say " " ~~ /<[\ ]>/
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«「 」␤␤»
vendethiel is ws significant in there ?
lue Nah, seems <[]> ignores 'em. 21:43
vendethiel m: say " " ~~ /<[a b]>/
camelia rakudo-moar fd5f8e: OUTPUT«Nil␤»
vendethiel m: say " " ~~ /<[a b \ ]>/
camelia rakudo-moar fd5f8e: OUTPUT«「 」␤␤»
vendethiel thanks lue !
dalek ast: db0b68e | (Elizabeth Mattijsen)++ | S17-supply/start.t:
Basic Supply.start tests
21:45
dalek ast: 0322152 | (Elizabeth Mattijsen)++ | S17-supply/watch_path.t:
Make test more robust by waiting a bit longer
21:51
kudo/nom: 941f677 | (Elizabeth Mattijsen)++ | t/spectest.data:
Make sure we do the Supply.start tests
lizmat and with that today's commit limit is reached 21:52
goodnight, #perl6!
masak 'night, lizmat 21:54
'night, #perl6
lvfjf n8 21:56
jnthn 'night, lizmat & masak 22:01
timotimo: Well, I did it to enable some opts 22:02
timotimo: So, "presumably" :)
Timbus_ m: say " as df gh " ~~ /\S+/; say " as df gh " ~~ /\S+ % \h/; 22:04
camelia rakudo-moar fd5f8e: OUTPUT«「as」␤␤「a」␤␤»
Timbus_ this feels wrong
=/
Timbus_ ew /[\S+]+ % \h/ 22:05
jnthn Was gonna say, that second one is probably what you want. 22:14
timotimo i'm going to run fancy-ultra-fresh benchmarks now 22:49
jnthn May want to bump NQP_REVISION first to get that patch I just put in 22:50
timotimo i put in --gen-moar=master --gen-nqp=master temporarily 22:53
jnthn Happy benchmarking 23:09
'night
timotimo t.h8.lv/p6bench/2014-05-03-moar_progress.html - this is the benchmarks with the latest head 23:22
bedtime for me, too 23:24
gnite
BenGoldberg p6: $_ = "AB"; say s/(.)(.)//; 23:25
yoleaux 1 May 2014 04:48Z <TimToady> BenGoldberg: using 'my' instead of 'state' is not necessary, since the loop's closure is recloned at the same time the 'my' would have been, so the state resets on re-entry to the outer scope
camelia niecza v24-109-g48a8de3: OUTPUT«True␤»
..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«␤»
BenGoldberg p6: $_ = "AB"; say $_ ~~ s/(.)(.)//;
camelia rakudo-{parrot,moar} fd5f8e, niecza v24-109-g48a8de3: OUTPUT«True␤»
..rakudo-jvm fd5f8e: OUTPUT«Unhandled exception: java.lang.RuntimeException: Missing or wrong version of dependency 'src/Perl6/Grammar.nqp'␤ in (gen/jvm/main.nqp)␤␤»