»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
sorear good * #perl6 01:24
colomon \o
[Coke] git assist? How do I convert a readwrite github clone to a readonly one? 01:27
sorear Go into .git/config and remove the push URL 01:28
timotimo alternative: git remote rm whateveritscalled; git remote add whateveritscalled [email@hidden.address]
sorear The only difference is the default push URL
[Coke] I actually want to change the default /pull/ url. 01:37
(so it won't prompt me for my password)
timotimo oh, that's the point
you could use a second ssh key that doesn't have a passphrase or you could use ssh-agent 01:38
colomon isn't that just a matter of changing [remote "origin"] url to a readonly one? 01:39
colomon has only done it the other way to make a readonly clone readwrite
timotimo oh, i didn't even consider that question, if you can have separate push and pull URLs 01:40
well, worst case, you make an alias
benabik [remote "origin"] \n url = git://github.com/name/project.git \n pushurl = [email@hidden.address] 01:41
I assume there's some kind of git-remote way of setting that, but I've always just edited .git/config
[Coke] sorear++ - editing .git/config was the quickest way.
[Coke] # 02/21/2012 - niecza++ ; pugs (14.83%); rakudo (99.04%) 02:14
(same results as before, just automatically generated.)
TimToady [Coke]++ 02:15
[Coke] and redone to make it trivial if I have to add a /fourth/ implementation. :P 02:16
colomon [Coke]++ 02:25
dalek ast: 748c80b | coke++ | S03-operators/value_equivalence.t:
pugs fudge
02:27
gs.hs: bb05f13 | coke++ | t/spectest.data:
run test
02:28
bacek_at_work phenny, tell moritz cont_reuse branch is merged. 03:13
phenny bacek_at_work: I'll pass that on when moritz is around.
sorear [Coke]++ 03:31
dalek atures: 3f68424 | (Solomon Foster)++ | features.json:
Niecza has rand, pick, roll, Sets, KeySet, Bag, and KeyBag now.
03:41
TimToady heh, just got a work email saying I'm required to take courses in Logic/Problem Solving, Written Communication, Verbal Communication, and Time Management 04:34
from which I derive much hilarity...
sorear most of my written communication is also verbal. 04:38
I guess it's an art class of some kind.
shachaf wonders where TimToady works. 04:40
sorear the bay area 04:43
shachaf sorear: I didn't mean geographically. 05:03
shachaf dropped ingy off at TimToady's house once.
TimToady is not interested in naming names 05:05
shachaf OK. 05:10
sorear (o/ shachaf) 05:26
shachaf sorear: (Hoy.) 05:36
moritz o/ 06:03
phenny moritz: 21 Feb 23:28Z <bacek_at_work> tell moritz I'm going to merge parrot's cont_reuse branch really soon. You'll need take_recon branch merged with bumping up PARROT_REVISION.
moritz: 03:13Z <bacek_at_work> tell moritz cont_reuse branch is merged.
sorear o/ moritz
bacek_at_work moritz, \o 06:04
dalek p: 052bc4b | moritz++ | tools/build/PARROT_REVISION:
bump parrot requirement to 4.1 release
06:05
moritz bacek_at_work: the bumping will only happen after the Rakudo release on Thursday 06:06
bacek_at_work moritz, no worries. Just make sure when merge take_recon branch bump it again. 06:07
moritz sure 06:08
moritz perl6: multi unfix:bla($x) { say $x }; unfix:bla(3) 07:08
p6eval niecza v14-57-gd05a5fe: OUTPUT«===SORRY!===␤␤System.Exception: Unable to find lexical $x in ANON␤ at Niecza.CLRBackend.NamProcessor.ResolveLex (System.String name, Boolean upf, System.Int32& uplevel, Boolean core) [0x00000] in <filename unknown>:0 ␤ at Niecza.CLRBack…
..rakudo 4130f6: OUTPUT«===SORRY!===␤Cannot add tokens of category 'unfix' with a sub␤»
..pugs b927740: OUTPUT«*** ␤ Unexpected ":bla"␤ expecting "::", "handles", "is", bare trait, subroutine parameters, trait or block␤ at /tmp/gQytNGHniz line 1, column 12␤»
moritz rakudo++ # most awesome error message of the three
sorear while awesome, rakudo's error message is wrong, iiuc 07:12
bacek_at_work "unfix"?
sorear "unfix" isn't a special category name, so unfix:bla<...> is just a sub name
the error is in :bla($x) - $x is not defined yet, it should be an undeclared variable error 07:13
if you wanted a signature, you need to use unfix:bla ($x) {...}
this has bit me a couple times in niecza, when I write method term:variable($/) { ... } in the actions and then wonder why the parser explodes 07:14
need a space
bacek_at_work: Fuzz testing - deliberate typo of "infix"
bacek_at_work sorear, thanks! It's kind of clear weirdness :) 07:15
sorear IMO niecza's error is righter, although less useful
what really
what's really needed is some kind of integration of explain_mystery into the name extension mechanism, like what's already done for BEGIN 07:16
niecza: BEGIN $x
p6eval niecza v14-57-gd05a5fe: OUTPUT«===SORRY!===␤␤Variable $x is not predeclared at /tmp/xEHAy3vWZM line 1:␤------> BEGIN ⏏$x␤␤Unhandled exception: System.Exception: Unable to find lexical $x in ANON␤ at Niecza.CLRBackend.NamProcessor.ResolveLex (System.…
sorear I need to fudge the ResolveLex thing into a real error, and handled at the correct time 07:17
niecza: sub foo() { bar if 0 }; BEGIN { foo }; sub bar() { say "hi" } # iirc, last time I asked TimToady, this is explicitly OK
p6eval niecza v14-57-gd05a5fe: OUTPUT«Unhandled exception: System.Exception: Unable to find lexical &bar in foo␤ at Niecza.CLRBackend.NamProcessor.ResolveLex (System.String name, Boolean upf, System.Int32& uplevel, Boolean core) [0x00000] in <filename unknown>:0 ␤ at Niecza.CLRBackend.NamPro…
sorear nom: if 0 { foo } 07:18
p6eval nom 4130f6: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&foo' called (line 1)␤»
sorear b: if 0 { foo }
p6eval b 1b7dd1: ( no output )
sorear walk&
jnthn morning, #perl6 08:52
moritz \o jnthn 08:53
pmurias if I have "class Foo {...}" in Foo.pm6 and I have "use Foo" in my program Foo gets imported into my lexical scope 09:32
? 09:36
moritz classes are our-scoped by default, so they are merged into your GLOBAL while loading 09:37
not sure if they also get a lexical alias
jnthn It'll only be lexically imported if you mark it "is export" 09:48
Otherwise what moritz said.
moritz can imagine the "fun" in bridging the gap between lexical export in Perl 6 and the package based Perl 5 stuff 09:50
masak antenoon, #perl6 09:52
moritz good *, masak
masak *, indeed.
au good ambinoon masak :) 09:55
jnthn o/ masak 09:57
masak "ambinoon" sounds like how I felt waking up this antenoon. :) 09:58
au :) 09:59
pmurias jnthn: so if the class isn't marked with is export I have to take it out from GLOBAL? 10:15
moritz even if it is exported, it needs to be GLOBAL merged 10:16
only if it's 'my', it's not 10:17
fsergot o/ :) 10:20
pmurias moritz: Foo.new() avoids looking into GLOBAL?
masak fsergot! \o/ 10:21
moritz pmurias: I don't think so, but I'm not sure
pmurias $foo.new doesn't look into GLOBAL unless we use 'no strict' right? 10:22
masak doesn't even understand the question 10:24
jnthn pmurias: What moritz said. And yeah, Foo.new() in that case comes from GLOBAL, but it's declarative so we can statically resolve that reference at compile time. So Rakudo actually only does the GLOBAL lookup during the compile.
pmurias masak: we can do a lexical lookup or a package lookup or both 10:25
jnthn In "no strict" I'm not sure what scope we'll auto-declare with.
moritz our-scope, just like in Perl 5
jnthn OK :)
pmurias moritz: our-scope?
moritz otherwise things like { $x }; { $x } would be rather surprising 10:26
pmurias moritz: our both declares a package variable and creates an lexical alias to it 10:27
masak nom: { our $a = 42 }; say $a 10:28
p6eval nom 4130f6: OUTPUT«===SORRY!===␤Variable $a is not declared␤at /tmp/_0FYRayuIK:1␤»
moritz right
masak perhaps the easiest way to demonstrate that.
moritz under 'no strict', that would print 42
masak nom: { our $a = 42 }; say our $a
p6eval nom 4130f6: OUTPUT«Any()␤»
masak huh!
pmurias nom: {our $a = 42};our $a; say $a; 10:29
p6eval nom 4130f6: OUTPUT«Any()␤»
masak I call bug.
pmurias me too
masak submits rakudobug
masak b: { our $a = 42 }; say our $a 10:29
moritz because either the outer $a is looked up in the package, or a lexical alias is installed in the outer most scope that makes any sense
p6eval b 1b7dd1: OUTPUT«42␤»
masak niecza: { our $a = 42 }; say our $a
p6eval niecza v14-57-gd05a5fe: OUTPUT«42␤»
moritz I could have sworn that one worked in nom
masak rewind and check :) 10:30
moritz niecza: { our sub a { 42 } }; (our &a).()
p6eval niecza v14-57-gd05a5fe: ( no output )
moritz perl6: { our sub a { 42 } }; (our &a).()
p6eval pugs b927740: OUTPUT«*** Cannot use Undef as a Code object␤ at /tmp/80v29q0aur line 1, column 23 - line 2, column 1␤»
..rakudo 4130f6, niecza v14-57-gd05a5fe: ( no output )
moritz perl6: { our sub a { say 42 } }; (our &a).()
p6eval rakudo 4130f6, niecza v14-57-gd05a5fe: OUTPUT«42␤»
..pugs b927740: OUTPUT«*** Cannot use Undef as a Code object␤ at /tmp/IOV3ixLUgf line 1, column 27 - line 2, column 1␤»
pmurias niecza: {our class Foo {}};say Foo.new.perl
p6eval niecza v14-57-gd05a5fe: OUTPUT«===SORRY!===␤␤Undeclared name:␤ 'Foo' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1344 (die @ 3) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 33) ␤ at /home/p6… 10:30
pmurias niecza: our class Foo {};say Foo.new.perl
p6eval niecza v14-57-gd05a5fe: OUTPUT«Foo.new(...)␤» 10:31
pmurias jnthn: you agree with niecza on "{our class Foo {}};say Foo.new.perl" not working? 10:32
moritz nom: {our class Foo {}}; say Foo.new.perl
p6eval nom 4130f6: OUTPUT«Foo.new()␤»
jnthn pmurias: no 10:34
moritz std: {our class Foo {}}; say Foo.new.perl
p6eval std 52f3895: OUTPUT«ok 00:01 109m␤»
moritz niecza is clearly outnumbered here :-)
jnthn pugs: {our class Foo {}}; say Foo.new.perl 10:35
p6eval pugs b927740: OUTPUT«Foo.new()␤»
jnthn Completely :)
moritz perlito: {our class Foo {}}; say Foo.new.perl 10:36
masak moritz: re "or a lexical alias is installed in the outer most scope that makes any sense" -- do you have an example of that? I can't think of one.
ENOPERLITO
moritz masak: it's really just an implementation detail on how one might handle 'no strict;' -- I don't think there's any user visible code that would behave differently 10:37
masak oh, you were talking about the 'no strict' case.
I immediately got to thinking about my old strangelyconsistent.org/blog/where-...age-lexpad post. 10:38
where I mistakenly think that package variables are in a lexpad somewhere along the lexical lookup chain.
pmurias jnthn: so Foo is treated differently from $foo in {our $foo=12};say $foo.perl? 10:39
moritz well, it were murky waters in the earlier Perl 6 days, iirc
pmurias: correct
pmurias: $foo is always only lexically looked up (except maybe under 'no strict;') 10:40
type names fall back to GLOBAL if not found in the lexical scope
jnthn Right. It's all consistent, given that type names default to installing in the package, and variables don't.
fsergot Is directories handling implemented in rakudo? 11:25
JimmyZ pulls requests to nqp 11:26
moritz fsergot: depends on what you mean by that 11:27
fsergot: there's a &dir function that gives you a directory listing 11:28
fsergot Opening, removing etc. :)
moritz in the world of lazy lists, explicit opening and iterating is a poor abstraction
whis is why we have &dir
jnthn nom: { our $a = 42 }; { our $a; say $a } 11:29
p6eval nom 4130f6: OUTPUT«42␤»
jnthn Thought so...
masak jnthn: why does that one work but not the other one? 11:33
jnthn masak: Just plain old auto-viv semantics.
masak: It binds the lexical to $?PACKAGE.WHO<$a> at block entry 11:34
Which isn't quite what we want here... 11:35
.oO( why can't anything ever be simple... )
moritz because it's not assembler :-)
jnthn oh, but we can leave it as it is 11:36
The problem solves itself if we do that assignment at INIT time, as we should.
so, it needn't get more complicated after all :) 11:37
dalek ast: d85265c | (Paweł Murias)++ | S01-perl-5-integration/context.t:
Fix test plan.
dalek ecza: ad83416 | (Paweł Murias)++ | t/spectest_p5.data:
Do not run a spec test I forgot to commit and lost in a laptop failure.
11:41
ecza: 5868454 | (Paweł Murias)++ | lib/ (2 files):
Load the perl5 side interop support from a directory relative to the
pmurias what should i turn a p5 undef into? i currently turn it into a Nil but i'm not sure it's correct 11:42
fsergot nom: my $list = 1,2,3; say $list.perl; 11:45
p6eval nom 4130f6: OUTPUT«1␤»
fsergot nom: my $list = 1,2,3; .say for $list;
p6eval nom 4130f6: OUTPUT«1␤»
au pmurias: Any perhaps (closer to item semantic of undef in p5)? 12:01
colomon pmurias: gist.github.com/1884535 is what I get when I run p5test now. 12:06
colomon has suddenly wondered if the tech that makes pmurias++'s p5 interop work with niecza could also implement Zavolaj-niecza.... 12:14
\
pmurias colomon: hi 12:20
pmurias colomon: the problem seems to be we can load a shared library into niecza, but we can't load a shared library using p5 into niecza 12:21
colomon hmmm... does that mean that pure-Perl (5) stuff ought to work for me? 12:23
pmurias no 12:25
colomon: it means that pure-C stuff could work but we don't have any support for that yet ;)
colomon oh 12:26
pmurias according to sorear there might be a problem with loading a static perl into a shared library
on some platforms
colomon what can I do to help? 12:27
pmurias building perl as shared library would help check that
pmurias is writing a test that loads perl5 into a shared library from a c program to test that 12:28
colomon tries to remember if he has perlbrew installed on his mac 12:31
dalek ecza: 0cf5e60 | (Paweł Murias)++ | p5test/p5test.pl:
Add a test for calling p5 code from a shared library.
12:39
pmurias colomon: i commited the test, not sure if gcc tmp/test6lib$so_extension} test6.c works on mac os x
cognominal (grammar { token TOP { <a>? $<b>='b' }; token a { a } }).parse: 'ab'; say $/<b>.keys; 12:47
nom: (grammar { token TOP { <a>? $<b>='b' }; token a { a } }).parse: 'ab'; say $/<b>.keys; 12:48
p6eval nom 4130f6: OUTPUT«a␤»
cognominal nom: (grammar { token TOP { <a> $<b>='b' }; token a { a } }).parse: 'ab'; say $/<b>.keys;
p6eval nom 4130f6: OUTPUT«␤»
cognominal jnthn, this does not make any sense to me that $/<b>.keys returns anything different than a void Parcel 12:49
should I file a bug?
moritz nom: (grammar { token TOP { <a> $<b>='b' }; token { a } }).parse: 'ab'; say $/<b>.keys.WHAT; 12:51
p6eval nom 4130f6: OUTPUT«Method 'a' not found for invocant of class '<anon>'␤ in regex TOP at /tmp/fZXy8AXoHU:1␤ in method parse at src/gen/CORE.setting:8019␤ in block <anon> at /tmp/fZXy8AXoHU:1␤␤»
moritz nom: (grammar { token TOP { <a> $<b>='b' }; token a { a } }).parse: 'ab'; say $/<b>.keys.WHAT;
p6eval nom 4130f6: OUTPUT«List()␤»
moritz cognominal: it's returns an empty List, not an empty Parcel. Is that your problem? 12:52
cognominal see the first example, it prints "a\n".
I don't care if it is a parcel or a list. Whatever it is should be empty. 12:53
moritz agreed
cognominal it does not happen when I delete the '?' suffix. 12:54
moritz though of course the ? quantifier on <a> should not affect $<b> 12:55
cognominal yes, that's my point.
moritz agreed. Bug it is.
cognominal it took me a while to golf it. Probably because my code hits other bugs as well. 12:57
masak submits rakudobug 13:02
flussence it's impossible to search for punctuation-heavy strings like $*OUT in the ir clogs :( 13:11
masak flussence: can we help you? 13:12
nom: my $*OUT = class { method say { die "hehehe" } }; say 42
p6eval nom 4130f6: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤ in method print at src/gen/CORE.setting:692␤ in sub say at src/gen/CORE.setting:6078␤ in block <anon> at /tmp/ignWXVf8SR:1␤␤»
masak nom: my $*OUT = class { method say(*@) { die "hehehe" } }; say 42
p6eval nom 4130f6: OUTPUT«Too many positional parameters passed; got 2 but expected 1␤ in method print at src/gen/CORE.setting:692␤ in sub say at src/gen/CORE.setting:6078␤ in block <anon> at /tmp/iSTrDYAOCf:1␤␤»
moritz flussence: I accept patches for a better search facility
flussence: I have a branch that revamps the search based on KinoSearch, but that won't help you with punctuation stuff 13:13
masak nom: my $*OUT = class { method print(*@) { die "hehehe" } }; say 42
p6eval nom 4130f6: OUTPUT«hehehe␤ in method print at /tmp/aQgO9nmRF8:1␤ in sub say at src/gen/CORE.setting:6078␤ in block <anon> at /tmp/aQgO9nmRF8:1␤␤»
cognominal masak, I submitted a ticket as well. Do you know how to merge them? 13:14
flussence it doesn't really need better search, it needs a way to do *dumber* search :)
moritz flussence: I also accept patches for dumber search :-)
masak cognominal: I'm on it. 13:15
cognominal masak: and my subject was useless compared to yours
flussence looks at the code
moritz flussence: right now it just uses the mysql fulltext search. That sucks.
masak cognominal: done. 13:16
cognominal masak++
flussence moritz: I'm painfully aware of that, I've had to use it myself at work this week :)
moritz flussence: the 'kinosearch' branch is more interesting; maybe change it to create a second index with no stemmer and a really simple tokenizer
cognominal Moritz, I don't understand what the "Any(Str)" means in "my Mu %hash{Any(Str)}" 13:22
moritz cognominal: that's the new coercion syntax 13:23
cognominal: accepts Any, and coerces to Str
masak NYI
moritz nom: say Str(4) 13:24
p6eval nom 4130f6: OUTPUT«4␤»
flussence does that work anywhere?
cognominal ha, I keep forgetting about the coercion syntax. thx.
moritz that one works, but that's really just a tiny bit of it
masak good news: wrote three new macro tests. they all pass.
moritz flussence: no
masak bad news: got a segfault at program exit. :/
moritz :/
masak been a while since I created one of those.
figures that mucking with lexpads and contexts would create one. :) 13:25
moritz masak: well, I've created test failures for lexically adding multi operators by changing totally unrelated setting code
jnthn Well, the usual treatment. See if it works with -G. If so, look for missing write barrier. :)
masak oh!
there's a procedure. nice. 13:26
jnthn masak: We added a dynop. It may well be missing a WB.
dalek ast: d217498 | masak++ | S06-macros/macros-d1.t:
[S06-macros/macros-d1.t] three new tests

These cover lexical lookup from inside the quasi block.
masak aye.
jnthn: by "with -G", do you mean this? 13:28
$ install/bin/parrot -G perl6.pbc t/spec/S06-macros/macros-d1.t
jnthn ja
masak 'cus that still segfaults at end. 13:30
moritz +XXX HAHAHA DISREGARD THAT 13:31
erm, what?
masak hahaha.
disregard that :)
it was late at night, and I punted writing a real comment till later. 13:32
fixed now :) 13:34
dalek kudo/macros2: 913dc7b | masak++ | src/ops/perl6.ops:
[perl6.ops] wrote a real comment

  moritz++ for noticing.
13:35
masak jnthn: that WB stuff now stands between the macros2 branch and release. 13:36
well, "and merge", I should say. 13:37
jnthn masak: er, if it still segfaults with -G then it's not a missing WB. 13:40
masak: Time to break out gdb. 13:41
masak oki
masak does so
colomon pmurias: test6lib.c -- no such file
masak jnthn: gist.github.com/1885215 -- gdb session 13:42
moritz Rakudo_cont_decontainerize seems like a magnet for segfaults 13:44
cognominal knowyourmeme.com/memes/fcking-magne...-they-work :) 13:45
benabik science.howstuffworks.com/magnet.htm :) 13:46
moritz :-)
but that link doesn't answer the fundamental question of how magnets work 13:47
jnthn moritz: It's called a *lot*, so largely just probability :)
masak: Hm...so what gets called after all tests? 13:48
moritz and I'm not even sure that question even has a sensible answer
benabik Why magnetic domains exist relates to the spin of electrons and other fun quantum mechanical properties, so it's not surprising it doesn't go into that level of detail.
moritz at some level, things just are the way they are, and "why?" doesn't reveal any more interesting relevations 13:49
benabik moritz: People at the LHC disagree. :-D
moritz benabik: I beg to differ 13:50
dalek ecza: 4994ff0 | (Paweł Murias)++ | p5test/test6 (2 files):
Add missing files.
moritz they try to come up with / verify new models 13:51
but those models don't answer the question of "why?" any more than the Maxwell equations do
masak jnthn: nuth'n'
jnthn masak: Something must somewhere - it explodes *inside* the multi-dispatcher. 13:52
moritz and neither the "how?". It's only taken one level further
masak moritz: Feynman is with you there.
moritz: models, in that sense, are highly unsatisfactory.
pmurias colomon: sorry, i keep forgetting to add files :(
masak which is why it's easiest to just let go of "that sense" and focus on what we can find out :)
moritz wants a tshirt saying "Feynman is on my side" or "Feynman is with me" :-) 13:53
masak :D
"I'm Feynman, and I approve of this moritz"
gfldex in 2012.01-155-g4130f6f on cygwin make install fails with "/bin/cp: omitting directory `docs/announce'" 13:54
i think there should be a /bin/cp -r instead
masak jnthn: oh! I wrote 10 tests, but it explodes after the ninth!
jnthn Aha! 13:55
You should at-ten-d to that test count :P 13:56
dalek ast: c677b73 | masak++ | S06-macros/macros-d1.t:
[S06-macros/macros-d1.t] fixed a test a bit

Rakudo presently fails this one; fixed so that it fails it in a nicer way.
13:57
masak jnthn: I know why it happens now. 13:58
remember how there were three places in Actions.pm which handled macros...? 13:59
and how we PoC'd one of the places... :)
guess which use case the test isn't using?
pmurias PoC?
masak proof-of-concept.
masak <== suffering from a combination of laziness and amnesia, it appears 14:00
jnthn :P
masak ah well. easily fix'd.
jnthn masak: That's what happens when one slips off the Ballmer peak. :P
gfldex as long as you forget to be lazy it's all fine
moritz often adds TODO comments to not forget such stuff 14:01
masak yeah, that would've helped here. 14:06
jnthn is just happy that there's not a super-evil segfault to track down. Well, hopefully :) 14:09
cognominal guys, the french Perl workshop will be in Jun 29-30 (that's Friday-Saturday), there should be a parallel haskell hackathon event too. The organizers would like the third track to be English. p6er talkers welcome. I don't think there is any web site yet. 14:10
masak hopes he can be there 14:11
cognominal the parallel haskell event is ok with serial programmers too.
:)
That will be in Strasbourg too. So the food should be good. 14:12
fsergot Is it hard to implement mkdir, opendir and rmdir functions in rakudo nom?
jnthn fsergot: mkdir and rmdir should be easy. Why not use "dir" instead of opendir et al? 14:13
cognominal: Will see if I can make it. Hopefully. :)
fsergot jnthn: I use "dir", but how to remove a dir? :) 14:14
jnthn: unlink is only for files, isn't it? :)
jnthn fsergot: By implemetning rmdir ;-)
cognominal jnthn, masak: I hope with your macro and serialization stuff, rakudo will be exciting by then
fsergot jnthn: I want to do this, but I don't know where to start. :) 14:15
cognominal but it would be nice to have someone talking about niecza.
...as well
fsergot jnthn: Could You teach me? :)
jnthn fsergot: I'd love to but sadly have to catch a train really soon. 14:16
fsergot jnthn: I don't know how this process looks. :)
jnthn fsergot: In short though, I suspect Parrot already provides the operations
fsergot: Look at sub unlink in src/core/IO.pm 14:17
fsergot: It woudln't surprise me if mkdir and rmdir wnat to look very much liek that.
*like
fsergot jnthn: Thank You. :) 14:18
masak cognominal: who would that be? all the niecza people are on the other side of a big ocean.
cognominal I don't know.
masak of course, if jnthn talks about Rakudo, I could talk about Niecza.
cognominal maybe with sponsoring, we can make someone cross the atlantic. I will talk with eiro about that. 14:19
Depends on the sponsoring...
jnthn masak: I thought you'd talk about macros? :)
masak "Niecza: the compiler for der über-programmer"
jnthn: that's Erlangen. I haven't decided what to talk about in Paris yet :) 14:20
cognominal I suppose that with a English track, you will have plenty of time. 14:21
masak: and that's in downtown Strasbourg, not Paris.
masak ah, right.
so used to thinking Paris when I think FPW. :) 14:22
cognominal which is way more insteresting than the area around the Cité des sciences
moritz fsergot: I guess the first step is to look if parrot has a solution for deleting directories
fsergot moritz: I'm looking for this. Could You hint me, where to look? 14:23
moritz fsergot: I'd use ack in the parrot repo
fsergot moritz: is there any website? Or just google it? :)
jnthn station & 14:24
masak jnthn: bon voyage! 14:24
jnthn dans le premier classe de le tren...tres tres elite... :P 14:26
back this evening o/
benabik The rm method on the OS dynpmc will do rmdir if given a directory path.
moritz benabik: just found that too. But do we really want to spoil the fun for fsergot++? :-) 14:27
benabik moritz: Generally, I find poking around PMC sources to be more irritating that required. :-D 14:28
Although reading them is far less pain the writing them.
moritz aye
but I find it's the only efficent-ish way to find out if something is implemented
would I look in 'file' or 'os' dynpmc? or maybe in core, not dynpmc? or maybe as a dynop? 14:29
browsing the documentation is just pain, because there's nearly never one obvious place to look
benabik moritz: Also, ack won't search .pmc files by default. It would return the information from the generated .c file, which is far harder to trace back to something useful.
flussence ack --parrot will :) 14:30
moritz benabik: ah, my ack does search .pmc files by default :-)
masak std: sub foo(:x($y), :z($y)) { $y }; foo 14:31
p6eval std 52f3895: OUTPUT«Potential difficulties:␤ Useless redeclaration of variable $y (see line 1) at /tmp/rCfDT1Tjnh line 1:␤------> sub foo(:x($y), :z(⏏$y)) { $y }; foo␤ok 00:01 111m␤»
benabik flussence: Is --parrot in there by default. I've added it to my .ackrc
s/\./?/
masak nom: sub foo(:x($y), :z($y)) { $y }; say foo(:x(42), :z(5))
p6eval nom 4130f6: OUTPUT«===SORRY!===␤Redeclaration of symbol $y␤at /tmp/XRIGCnS5ej:1␤» 14:32
flussence ack --help gives me "This is version 1.96 of ack.", and I don't have any perl6 stuff in ackrc, so you should be good to go
benabik huh, whadda know
tadzik doesn't Shell::Command have rmtree()? 14:33
Maybe stubbed :
fsergot tadzik: stubbed. :) 14:34
tadzik well volunteered! :)
fsergot I'd like to. :)
tadzik go ahead then :) 14:35
fsergot I work on it :P 14:35
masak fsergot++
fsergot Theres some problems. Parrot hasn't built-in funtions which remove dirs. :(
moritz well, it has. 14:36
the 'rm' method in the 'os' dynpmc
fsergot Right, I found the 'rm' method.
moritz it doesn't work recursively, but you can implement the recursion yourself
flussence or `man 3 ftw`, if you want to cheat :) 14:37
fsergot It removes dirs, but only empty.
cognominal nom: [|] <a b c>
p6eval nom 4130f6: ( no output )
cognominal nom: say [|] <a b c>
p6eval nom 4130f6: OUTPUT«any(any(a, b), c)␤»
moritz fsergot: yes, so you might need to empty it first
fsergot moritz: I thought about it, but I was looking for another way, is there any? 14:38
moritz fsergot: I don't think so. Most operating systems just offer unlink() and rmdir() functions in their APIs, so recursive deletion must be implemented somewhere in the user space 14:39
cognominal nom: say ([|] <a b c>) eq 'a'
p6eval nom 4130f6: OUTPUT«any(any(True, False), False)␤»
moritz nom: say so ([|] <a b c>) eq 'a' 14:39
p6eval nom 4130f6: OUTPUT«True␤»
cognominal hum, I forget how do I collapse a superposition
ha!!
moritz just put it in boolean context
cognominal also [|] <a b c> should probably be any('a', 'b', 'c') , not that it makes any difference in the end. 14:41
fsergot moritz++ , thank You. :)
masak nom: say ([|] <a b c>) eq 'a'
p6eval nom 4130f6: OUTPUT«any(any(True, False), False)␤»
masak this looks wrongish to me. 14:42
benabik nom: say ('a' | 'b' | 'c')
p6eval nom 4130f6: OUTPUT«any(a, b, c)␤»
benabik nom: say (('a' | 'b') | 'c')
p6eval nom 4130f6: OUTPUT«any(any(a, b), c)␤»
masak right.
fsergot nom: say ('a' ^ 'z'; 14:43
p6eval nom 4130f6: OUTPUT«===SORRY!===␤Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 2␤»
fsergot nom: say ('a' ^ 'z');
p6eval nom 4130f6: OUTPUT«one(a, z)␤»
dalek ast: 3128346 | masak++ | S06-macros/macros-d1.t:
[S06-macros/macros-d1.t] now the tenth test works

I keep forgetting that macros receive ASTs of things, not the values of the things.
14:44
kudo/macros2: 161f188 | masak++ | src/Perl6/Actions.pm:
[Perl6::Actions] fixed remaining two macro call types

The recent stuff only worked for calling macros as terms. Now it works for identifiers, terms, and ops.
14:45
fsergot What means 'new__PS'? 14:50
Or where can i learn more about pir and nqp? :)
moritz it calls the 'new' PIR opcode
flussence new = function name, P = pointer, S = string
moritz returning a PMC, taking an String (S) as the only argument 14:51
that's what you use in rakudo to instantiate a parrot PMC
flussence it's hungarian notation :)
moritz it'd make me hungry, if I hadn't just eaten three cookies.
masak of the silly kind.
the hungarian notation, not the cookies. 14:52
fsergot flussence++
moritz++
moritz not really
it's more part of the type system
hungarian notation of the silly kind is what the type system should do, but does not
masak I was referring to www.joelonsoftware.com/articles/Wrong.html -- where a case is presented that "real" Hungarian Notation is actually not that well-known or well-used. 14:55
tl;dr: it's about "kinds", not types. 14:56
moritz yes. And my point was that __PS is not really Hungarian Notation at all 14:57
because the compiler doesn't ignore it
flussence ooh, I didn't know that
benabik The parrot opcodes need to know the register types they're handling. Something which is not always obvious from the results of NQP expressions. 14:59
moritz and there are also multi opcodes 15:00
add__III vs add__NNN vs. add__PPP
benabik Right, which operate based on the type information, which is completely lacking in NQP. So it has to be re-added when dealing with the raw opcodes.
moritz it's strangely consistent, in some ways :-) 15:02
masak moritz: oh. good point. it can't be Hungarian notation if it's used by the compiler, rather than just part of the name. 15:03
what it is is more like wonky syntax for a type system.
moritz aye 15:04
(though I don't find it all that wonky; it's a simply way to have it not conflict with any Perl 6 syntax)
moritz masak: in macros-d1.t, why does macro donner return an Int, but macro blitzen an AST? 15:05
that looks... suspicious, in the very least 15:06
masak checks 15:08
no, that's correct.
moritz why? 15:09
masak because $counter is an Int, whereas $param is an AST.
moritz is the quasi { } around $param necessary at all?
masak that's what I'm testing! 15:10
and no, it wouldn't be a no-op to remove it.
moritz why not?
does quasi { $param } return an AST, that, when evaluated, returns an AST? 15:11
masak in this case, yes.
moritz so macro blitzen($param) { $param }; blitzen('onwards') would return 'onwards'? 15:12
masak right. 15:12
moritz does it work? 15:13
masak all tests pass.
moritz well, that's not in the tests, afaict
masak $ ./perl6 -e 'macro foo($param) { $param }; say foo "OH HAI"'
Segmentation fault
:(
moritz :(
fsergot :(
masak still some kinks to iron out... 15:14
masak runs gdb again
this time the SEGV comes from within our new dynop. 15:15
benabik Does `macro infix:<comet>($r, $l) { quasi { "comet!" } }` never evaluate $r and $l ?
moritz hopes so 15:16
masak gist.github.com/1885496
benabik neat
masak benabik: it never evaluates $r and $l.
dalek ast: 544c9af | moritz++ | S06-macros/macros-d1.t:
macros should be able to return their parameter(s) directly
masak benabik: that's the reason short-circuiting ops like || and && are sometimes described as "macroish" over here.
moritz: thanks. 15:17
moritz masak: you're welcome
masak ah -- starting to see why that one SEGVs. 15:20
moritz missing sanity check?
no outer set up yep, or something? 15:21
masak the ASTs created by quasis do a few extra tricks right now. the ASTs created during the macro call -- don't. 15:22
so the latter kind is probably totally unprepared for the treatment they get when being returned from the macro. 15:23
or something like that.
moritz so maybe the magic should happen at macro application time, not at quasi construction time? 15:24
masak well, macro application time is "too late" for the new magic that happens at quasi AST construction time. 15:25
[Coke] # 02/22/2012 - niecza++ ; pugs (15.18%); rakudo (99.04%) 15:26
"niecza", 20283, 8, 751, 1549, 22591, 23465
"pugs" , 3079, 4, 1724, 16, 4823, 23256
"rakudo", 20090, 28, 604, 1869, 22591, 23475
masak the new magic consists of wiring up a context for it to carry around. that context doesn't really exist anymore at macro application time, which is why we need to carry it with us in the first place.
wow, Pugs at 15! [Coke]++
because Rakudo and Niecza are so close, in a way the Pugs figure is the only interesting one :P 15:27
PerlJam [Coke]: you always ++ the "winner"?
masak seems fitting.
[Coke] I'm sure some of the regex passes don't count. I'm looking for you to make them count. ;)
PerlJam: yes.
;(as of a few minutes ago.)
PerlJam nice
PerlJam just made a 6 character change to some Perl 5 code and got a 700% performance improvement :) 15:28
(now if only I could figure out how to do that for Rakudo ;)
au hopes these 6 chars were not "exit()" :)
masak or "dump()" 15:29
moritz thought 'last if', but that's 7
PerlJam nah, it was to add a field to an index on table creation so that now my queries run way faster
moritz so not really perl :/ 15:30
PerlJam yeah, I guess that's true. But Perl is my interface to the underlying database, so it's kinda perl
(or just suspend disbelief and pretend it's all perl and rejoice in it :-) 15:31
masak whee 15:34
moritz: I think the proper fix is this: just like quasi ASTs have to be incarnated with the surrounding macro context, so param ASTs have to be incarnated with the surrounding mainline context. 15:35
I hadn't thought of this until now, but it seems quite evident now.
moritz well, the context has to be attached at some point anyway 15:36
masak macro params are AST closures going inwards, and quasi ASTs are AST closures going outwards. both kinds need to be incarnated in a context.
moritz: yeah. it's probably because the new code at apply-time does the "fix up context" that this now blows up. it didn't used to.
masak hates the phrase "it didn't used to", but that seems to be the way to say it in English 15:37
PerlJam This is the only primarily english-speaking channel where at any given moment, I will not understand *at all* what people are talking about.
:)
JimmyZ hopes somebody could take a look at github.com/perl6/nqp/pull/29 15:38
moritz JimmyZ: have you tested NativeCall.pm with these changes?
masak PerlJam: I'm glad for once to be on that end of an inscrutable #perl6 conversation :) 15:39
JimmyZ moritz: I have not
moritz JimmyZ: that would make patch application a bit faster 15:40
JimmyZ moritz: will try it later
masak PerlJam: if you're interested, I think you might find gist.github.com/1853560 elucidating. 15:49
PerlJam looks 15:50
PerlJam re-reads the last bit about macros 15:59
cognominal masak, eiro is thinking of a two days Perl 6 class at fpw. He would prefer to show working code than presnetation ex-cathedra. 16:00
what do you think of it?
masak I'm thinking it sounds interesting. 16:01
cognominal I told him that we should make it a numerus clausus and ask people to come with a compiled rakudo. That would save time. 16:02
we could help the weeks before on that channel to get it compiled.
moritz aye 16:03
colomon pmurias: gist.github.com/1884535 is now the latest output ... note that test 11 worked!
moritz mystery quiz: what do infix -, *, ==, <=, <, > and >= have in common in rakudo? (as opposed to +, %, **, div, mod, gcd, lcm, !=, !==, <=>, le, lt, gt, ge, leg)
masak moritz: they can't be redefined? 16:04
or they can be redefined? :)
colomon masak: nope
moritz masak: correct. But why?
colomon wait, what?
since when? 16:05
pmurias colomon: so we need a 32bit perl?
moritz colomon: dunno.
colomon: I'd like to know.
PerlJam colomon: for a while now I think. We were talking about this last week or the week before
moritz I can think of two hypotheses to test: return annotations, presence of natively typed ops
colomon moritz: you certainly could redefine them in alpha and ng
moritz apart from that, I have not the slightlest idea 16:06
JimmyZ how can I run zavolaj/t ?
colomon .... what, what exactly is meant by redefine?
moritz colomon: add a multi in an inner scope, and have it called
colomon moritz: okay, we're on the same page there, then
JimmyZ never mind 16:07
colomon thinks we need a better word than "redefine" for that, but he doesn't have one handy
pmurias: maybe?
colomon pmurias: I don't understand what the tests are testing in any detail. 16:07
masak moritz: I have no idea either. I don't see any pattern whatsoever. 16:10
JimmyZ moritz: all tests pass in zavolaj 16:12
moritz JimmyZ: that's great. Thank you.
JimmyZ moritz: np 16:13
colomon masak, moritz: surely there's just been some mistake? it just doesn't make any sense to be able to redefine + but not - (or vice versa, not sure what the state of things is). 16:14
moritz colomon: yes, and I'm trying to track down that mistake. No luck so far. 16:15
I'v added a debug say() to the routine_def action method. The name of the operator is correctly constructed in both cases 16:16
colomon moritz: you mean you're trying to track down what is causing the problem, or why the code got to be that way in the first place?
moritz colomon: tracking down the problem
TimToady the difference might be a proto sig of |$ vs $a?, $b?
moritz I've triggered dispatch failures. The candidate isn't in the candidate list that's shown in the error message
TimToady: good idea 16:17
...but it doesn't fit the pattern of the failures 16:18
moritz both infix + and - have a ($a?, $b?) proto, but + is fine and - is not 16:18
TimToady could it be implicitly generating some conflicting proto by earlier use? 16:19
it does feel very much like a proto issue to me 16:20
moritz TimToady: unlikely. My demonstration program uses neither + nor - before, and the setting uses both
TimToady I meant used earlier in the setting
moritz ah
used before proto declared
dalek kudo/match-refactor: dd27465 | moritz++ | src/core/Int.pm:
fix signature of an infix:<!=> candidate. No idea if it makes any difference
moritz I could check that
masak moritz++ # investigating this 16:21
TimToady does the proto declarator check that there's not one generated already?
moritz yes
though that test could be buggy in subtle ways in the setting, maybe
TimToady and does it carp or go silent?
moritz the proto generator is silent 16:22
TimToady sure, but what about the other way?
tadzik "Lists are only one-dimensional. Sigh." -- "Whaddya want, APL?" 16:23
:)
tadzik discovered groups.google.com/group/comp.source...89bcb15f22
moritz TimToady: which other way?
moritz confused
colomon moritz: he means explicit proto declaration if there's already been one generated 16:24
moritz ah
TimToady if some semantics are autogenerated, then an explicit proto is seen, do we check for conflict
moving a proto up to the front might be a test
moritz nom: multi a() { }; proto a() { }
p6eval nom 4130f6: OUTPUT«===SORRY!===␤Redeclaration of routine a␤at /tmp/32ts4axtXD:1␤»
JimmyZ nom: proto a() { }; multi a() { }; 16:25
p6eval nom 4130f6: ( no output )
TimToady nom: a(); proto a() { * }; multi a() { }
p6eval nom 4130f6: ( no output )
TimToady might the a() call generate a proto?
cognominal in rakudo, how is it possible to get a stack trace on a warn? 16:30
moritz both infix:<+> and infix:<-> are called before the proto occurs 16:30
nom: CONTROL { default { say $!.message; say ~$!.backtrace } }; 1 + Any 16:31
p6eval nom 4130f6: OUTPUT«Method 'message' not found for invocant of class 'Any'␤ in block <anon> at /tmp/3HshnwmyJp:1␤␤»
moritz nom: CONTROL { default { say .message; say ~.backtrace } }; 1 + Any
p6eval nom 4130f6: OUTPUT«use of uninitialized value of type Any in numeric context␤ in method Numeric at src/gen/CORE.setting:662␤ in sub infix:<+> at src/gen/CORE.setting:2249␤ in block <anon> at /tmp/ixJzDWES8Y:1␤␤»
moritz cognominal: like this
TimToady though won't that also catch returns and such? 16:32
I think you need a better 'when'
moritz yes, but if you do it at the mainline, you won't have that many returns to catch :-)
TimToady hmm, is exit a control exception? 16:33
moritz nom: CONTROL { default { } }; exit; say 'alive'
p6eval nom 4130f6: ( no output )
moritz nom: CONTROL { default {say "caught" } }; exit; say 'alive'
p6eval nom 4130f6: OUTPUT«caught␤»
moritz heh
oh wait. normal behavior 16:34
cognominal expect, I need that in a program. At the shell, don't need that much to know what line is the problem
moritz it doesn't resume
cognominal *except that
moritz cognominal: well, you can add that CONTROL phaser to your program.
TimToady nom: CONTROL { default {say "caught" } }; exit; END { say "goody" }
p6eval nom 4130f6: OUTPUT«caught␤goody␤»
moritz nom: CONTROL { default {say "caught" } }; { exit }; say 'alive' 16:35
p6eval nom 4130f6: OUTPUT«caught␤»
moritz nom: { CONTROL { default {say "caught" } }; exit }; say 'alive'
p6eval nom 4130f6: OUTPUT«caught␤alive␤»
moritz that's what I wanted to demonstrate, actually :-)
cognominal like says TimToady, I don't want to print backtrace for anything but warnings. 16:36
moritz then you need to wait (or contribute) until we have a better mechanism for distinguishing warnings and non-warnings
moritz decommutes 16:37
cognominal in the mean time I recompile rakudo to die instead to warn. 16:38
TimToady wonders how a pragma like 'use warnings :fatal' will install and/or tweak the CONTROL phaser... 16:39
PerlJam How does one get a list of signatures for a multi? 16:43
TimToady phenny: tell moritz Any(Str) doesn't make sense; you want Str(Any) to coerce to string 16:44
phenny TimToady: I'll pass that on when moritz is around.
flussence perl6: multi a() { }; multi a(Int $) { }; say &a.candidates 16:56
p6eval pugs b927740: OUTPUT«*** ␤ Unexpected "Int"␤ expecting "|", ":", "*", parameter name or ")"␤ at /tmp/pZNZIcFB1v line 1, column 24␤»
..rakudo 4130f6, niecza v14-57-gd05a5fe: OUTPUT«sub a() { ... } sub a(Int ) { ... }␤»
TimToady is kinda amazed that rakudo++ and niecza++ came up with identical answers
though I'm not sure I like the space after the Int 16:57
flussence perl6: multi a() { }; multi a(Int $named) { }; say &a.candidates
p6eval rakudo 4130f6: OUTPUT«sub a() { ... } sub a(Int $named) { ... }␤»
..pugs b927740: OUTPUT«*** No such method in class Sub: "&candidates"␤ at /tmp/nR4mQ_qGqc line 1, column 45 - line 2, column 1␤»
..niecza v14-57-gd05a5fe: OUTPUT«Potential difficulties:␤ $named is declared but not used at /tmp/8w88N8mgx8 line 1:␤------> multi a() { }; multi a(Int ⏏$named) { }; say &a.candidates␤␤sub a() { ... } sub a(Int $named) { ... }␤»
flussence perl6: multi a() { }; multi a(Int $named) { }; say &a.candidates # OK not used
p6eval rakudo 4130f6: OUTPUT«sub a() { ... } sub a(Int $named) { ... }␤»
..pugs b927740: OUTPUT«*** No such method in class Sub: "&candidates"␤ at /tmp/wXeMNS9MJd line 1, column 45 - line 2, column 1␤»
..niecza v14-57-gd05a5fe: OUTPUT«Potential difficulties:␤ $named is declared but not used at /tmp/KK21IJ7mdN line 1:␤------> multi a() { }; multi a(Int ⏏$named) { }; say &a.candidates # OK not ␤␤sub a() { ... } sub a(Int $named) { ... }␤»
flussence that trick doesn't work?
TimToady #OK
no space 16:58
flussence whoops
perl6: multi a() { }; multi a(Int $named) { }; say &a.candidates #OK
p6eval rakudo 4130f6, niecza v14-57-gd05a5fe: OUTPUT«sub a() { ... } sub a(Int $named) { ... }␤»
..pugs b927740: OUTPUT«*** No such method in class Sub: "&candidates"␤ at /tmp/qJUJ3N0Zit line 1, column 45 - line 2, column 1␤»
flussence there we go 16:58
(I'm surprised it worked too; last time I tried anything moppy in niecza was when it was still NYI)
TimToady I just don't think it should put the space unless it is going to put a variable 16:59
TimToady practices his micromanagement skills 17:00
masak +1 17:01
masak decommutes 17:02
flussence after some random wandering around, I've decided to blame src/core/Parameter.pm:139 for the trailing space 17:08
flussence it should be moved about 3 lines down, I think 17:09
benabik Shouldn't it output (Int $) ? 17:14
flussence yeah 17:15
TimToady only if there was a $ originally, I'd think
benabik std: sub a(Int, $x) 17:16
p6eval std 52f3895: OUTPUT«===SORRY!===␤Malformed block at /tmp/mSUrljWGvy line 1 (EOF):␤------> sub a(Int, $x)⏏<EOL>␤Parse failed␤FAILED 00:01 110m␤»
flussence is (Int) the same as (Int $) there?
benabik std: sub a(Int, $x) { ... }
p6eval std 52f3895: OUTPUT«Potential difficulties:␤ $x is declared but not used at /tmp/m9Oommq85q line 1:␤------> sub a(Int, ⏏$x) { ... }␤ok 00:01 111m␤»
benabik Bah, std is smarter than I expect sometimes.
flussence > multi a() { }; multi a(Int $) { }; say &a.candidates 17:18
sub a() { ... } sub a(Int) { ... }
TimToady the $ is kind of an extra assertion that the parameter can be bound to a container with anti-flattening characteristics; not sure whether this is meaningful, or might be someday
flussence one down, now I just need to make that say "multi"
flussence oh wait, I think sub is currect there 17:18
I'm confused.
TimToady if the original has a sigil, it needs to show up, especially if it's not $ 17:19
flussence
.oO( what the heck does "currect" mean anyway? )
PerlJam is confused 17:30
moritz it's #phasers time 17:31
phenny moritz: 16:44Z <TimToady> tell moritz Any(Str) doesn't make sense; you want Str(Any) to coerce to string
flussence tl;dr: you can get a list of multi signatures, but it's buggy :)
moritz TimToady: ah right
PerlJam I just tried to build a fresh rakudo and it complains about "NEED_CONTINUATION"
flussence --gen-parrot?
moritz PerlJam: you need to use the parrot release version
PerlJam I've a fresh parrot already
ah
it's too fresh
moritz PerlJam: or merge rakudo's cont_reuse branch 17:32
(locally, that is)
benabik And this is why I wanted to delay that merge until post Rakudo release.
PerlJam that's right ... I remember now.
benabik doesn't like it when master/master doesn't work. It's confusing.
PerlJam benabik: it's not master/master, it's master/nom ;) 17:33
PerlJam benabik: but, you are correct sir! 17:33
benabik PerlJam: See! Confusing! ;-)
flussence #perl6: where everyone's confused
PerlJam confusion is the natural human condition.
TimToady is usually confused about being confused 17:36
PerlJam If you're not confused, that's what you should really start to worry 17:37
gfldex could a kind soul test this on *x? gist.github.com/1886254 17:41
[Coke] is today phasers? 19:33
PerlJam it was
activity was next to nil though
colomon crap, forgot it again 19:35
[Coke] whoops. 19:50
masak forgot #phasers too
PerlJam #phasers might need a re-think on its timing. 19:51
[Coke] tehre's some webs ite where you can suggest a range of times and then let individuals sign up for the ones that work. 19:54
tadzik doodle.com
PerlJam (I think I may have even volunteered to setup a doodle, but forgot about it) 19:55
[Coke] pings au.
jnthn evenin' 20:07
felher o/
[Coke] unpings au 20:09
jnthn: *pounce* 20:10
jnthn uh-oh :)
hi [Coke]
[Coke] nah, I got nothin. Just that niecza is ahead of rakudo and pugs is catching up. 20:14
masak :) 20:15
[Coke] masak: so, is it worth at this point opening issues for pugs. 20:16
?
au wow, I never thought there's still so much gravitational potential in pugs :) [Coke]++
masak [Coke]: sure!
[Coke] Ok. if I find anything obvious that will be a big win, I'll open a ticket for it. 20:17
au, I was going to ping youthe same question. ;)
au whatever you do, you have all my preemptive blessing and/or forgiveness as appropriate :) 20:19
[Coke] au++ # the fact that we can still /run/ pugs after all these years helps.
TimToady pugs was a supernova that produced many of the heavy elements we are now made of :)
[Coke] I'm just trying to avoid learning haskell.
PerlJam [Coke]: bu, but ... you should learn a new programming lanugage each year :)
jnthn [Coke]: Well, need to get the serialization stuff in before I worry too much about hacking on moar features. :) Will be able to do various things thanks to it, though :) 20:20
[Coke] PerlJam: java's on my list for this year. 20:22
(again)
PerlJam
.oO( why ?!? )
20:23
[Coke] PerlJam: because I get a paycheck? 20:24
PerlJam well ... at least that's a good (enough) reason :) 20:25
[Coke] I was just asked if we should do something in perl, so that's good. 20:27
(sadly, I had to say no.)
masak Java isn't so bad. it's a fine language. it has its drawbacks, to be sure. but most languages do. 20:35
PerlJam Java is too wordy. reminds me of cobol sometimes 20:36
jnthn
.oO( lowercase cobol, with objects... )
20:37
au kinda likes Xtend (CoffeeScript for Java) t[Dhese days... 20:38
*these 20:39
benabik I like Scala, but that's less "Java without noise" as "a functional language on the JVM" 20:40
masak I like Java, even though I agree it's wordy. 20:41
I've been productive and created nice things in Java.
writing "lean" code in Java is possible, though trickier than in Perl, say. 20:42
LoRe quickfix! 20:43
dalek ecs: 524d26c | moritz++ | S09-data.pod:
[S09] fix coercion syntax usage, TimToady++
20:47
moritz nqp: my $x := 3; say(:$x) 20:48
p6eval nqp: OUTPUT«Confused at line 1, near "say(:$x)"␤current instr.: 'nqp;HLL;Grammar;panic' pc 23433 (src/stage2/gen/NQPHLL.pir:6734) (src/stage2/gen/NQPHLL.pm:329)␤»
jnthn moritz: NQP don't have that sugar. 20:50
Though I sometimes wish it did...
moritz jnthn: I'm thikning about adding it
jnthn moritz: No objections. 20:51
It's only a little syntax sugar, and zero porting cost. 20:52
moritz std: :$/
p6eval std 52f3895: OUTPUT«===SORRY!===␤Bogus statement at /tmp/9hQjSNyeec line 1:␤------> <BOL>⏏:$/␤Parse failed␤FAILED 00:01 109m␤»
moritz std: :$_ 20:53
p6eval std 52f3895: OUTPUT«ok 00:01 107m␤»
moritz std: :$!
p6eval std 52f3895: OUTPUT«===SORRY!===␤Bogus statement at /tmp/20btJKjk7o line 1:␤------> <BOL>⏏:$!␤Parse failed␤FAILED 00:01 109m␤»
jnthn std: sub foo(:$!) { } 20:54
p6eval std 52f3895: OUTPUT«ok 00:01 109m␤»
jnthn nom: sub foo(:$!) { }
p6eval nom 4130f6: ( no output )
jnthn nom: sub foo(:$!) { say $! }; foo(|{ '!' => 'lol'})
p6eval nom 4130f6: OUTPUT«lol␤»
moritz I think it wouldn't hurt to allow :$/ and :$! in NQP 20:55
jnthn moritz: Only if we allow :$! and :$/ in the parameter lists too... :)
wait, why'd be want to do this? :)
moritz why not? :-) 20:56
jnthn moritz: Is it more work to disallow it? :)
moritz jnthn: seems so 20:57
jnthn ah, jfdi then :)
I dobut anybody will actually use :$!
dalek p: 7b8137f | moritz++ | / (3 files):
implement :$var colonpair syntax

Also adds a single test.
21:28
pmurias colomon: re what the tests are testing it turns out we can link a 64bit shared library with a 64bit executable 21:41
colomon: but we can't with 32bits
colomon: and mono only loads 32bit shared libraries
colomon so... anyone who wants to do it is going to have to build a 32bit shared library of perl? 21:42
pmurias or a 64bit mono 21:45
colomon: on mac os x
colomon: www.perlmonks.org/?node_id=910271 has the command line 21:46
colomon pmurias: that's the perlbrew line? 21:47
pmurias colomon: yes
colomon okay, I'll take a look at doing that ASAP 21:48
colomon is installing perlbrew... 21:52
PerlJam perl6brew? 21:53
colomon PerlJam: I don't think you've written perl6brew yet...
pmurias colomon: i never had a mac, so i can only guess how to fix things them and search on google ;)
colomon pmurias: :) 21:54
pmurias colomon: you can use --notest to install a perl much faster
why do perl programmers use macs? 21:55
tadzik I think programmers in general use macs, because they work well for them
benabik The system perl on OS X is universal. 21:56
(i.e. should be able to be linked to 32 and 64 bit programs)
pmurias tadzik: you have a mac?
colomon benabik: it's entirely possible my default perl is from Macports rather than the system perl 21:57
right, the system perl is 5.10, my perl is 5.12.3 21:58
benabik colomon: That would do it. Depressingly few packaging programs bother with making the things they install universal. Which is a shame because it seems much better than the /lib /lib64 split.
tadzik pmurias: nah
but I've seen plenty enough people doing good job on macs to be suprised :)
PerlJam if I weren't using linux, I'd use a mac. Macs are most unix-like but with a nice UI 21:59
benabik If I weren't on a laptop, I'd use Linux. Hardware support for laptops has always burned me. 22:00
colomon pmurias: on using the mac: It's easily the nicest windowing UI I've ever used, and it's got a *nix shell as powerful as any Linux. There are a few rough edges, sure, but it's still an order of magnitude nicer than any other system I've used. 22:01
pmurias: for instance, Macports leaves something to be desired, for sure, but I've never had better luck with any of the Linux equivalents. 22:04
colomon huh, installed perlbrew but don't seem to have its perl5 directory. 22:06
colomon probqably need init 22:09
[Coke] wishes someone would track down the idiot spamming messages from 2007 and make him stop. 22:18
Received: from mda.wombatsecurity.local (c-24-131-84-205.hsd1.pa.comcast.net. [24.131.84.205]) by mx.google.com with ESMTP id n5si7810013qct.205.2012.02.21.16.10.59; Tue, 21 Feb 2012 16:11:00 -0800 (PST)
fsergot Could somebody take a look: gist.github.com/1887806 22:19
?
:)
tadzik: What do You think about this?
masak interesting. 22:20
you are aware that that's 'rm -r', not 'rmdir', right? :)
[Coke] (and it's not just parrot/perl6, it looks like this idiot is devouring lots of groups emails incorrectly)
tadzik cute
fsergot: does it work? I don't remember if File::Find really is depth-first :) 22:21
[Coke] points at groups.google.com/forum/#!topic/sf...5jSIvppTr4 - same address, even.
fsergot masak: what do You mean? :) 22:22
tadzik: works for me.
tadzik fsergot: for bonus points: find(), as dir(), is lazy. Assigning it to an array loses all advantage laziness gives us 22:22
(I think)
you could probably do this with just one for {}
fsergot tadzik: Can You show me how? I was trying a lot of ways. :) 22:23
tadzik fsergot: I think just for find().foo.foo.foo { unlink $_ }; unlink $path 22:25
fsergot masak: Yes, I'm aware. :)
tadzik: hmm, I must think it over. 22:28
tadzik sure 22:31
fsergot tadzik: find() return a list, right?
returns*
nom: use File::Find; 22:32
p6eval nom 4130f6: OUTPUT«===SORRY!===␤Could not find File::Find in any of: lib, /home/p6eval/.perl6/lib, /home/p6eval/nom-inst2/lib/parrot/4.0.0-devel/languages/perl6/lib, .␤»
benabik star: use File::Find
p6eval star 2012.01: ( no output )
fsergot benabik++ thanks
tadzik fsergot: yes, a lazy one
benabik tadzik: I think the .reverse will cause it to be eager. 22:33
pmurias colomon: any luck with the new perl?
benabik Lazily reversing a list is quite difficult. :-D
colomon pmurias: it just finished building a second ago 22:34
tadzik benabik: oh, true
fsergot So, what to do? :)
tadzik submit a pull request for Shell::Command :) 22:35
don't forget tests
colomon pmurias: oooo, your p5test passes with flying colors
masak remember that you have to fail the rmdir as soon as an unlink fails.
which it might do for a host of reasons.
fsergot masak: of course, this was only a "beta" version :) 22:36
colomon pmurias: how do I test if p5 interop now works? 22:38
TimToady thinks about hyperops applied to directory structures, and the fact that our manycores are still talking to a single disk drive normally 22:40
masak fsergot: yes, of course. just giving you feedback and forward directions ;) 22:41
'night, #perl6
fsergot masak: thanks, I really appreciate this. :)
masak++
good night masak! :)
tadzik g'night masak 22:42
pmurias colomon: make and make perl5 22:46
perl t/run_spectests_p5
fsergot tadzik: Could this be? : gist.github.com/1888091 22:48
tadzik fsergot: I think so, yes 22:52
fsergot So, now it's time for rmdir and then I'll submit a pul request. 22:53
:)
tadzik++
pull* 22:55
fsergot tadzik: Could rmdir use an external module if it'll be in src/core/IO.pm? 23:03
pmurias colomon: or mono run/Niecza.exe examples/term-ansicolor.pl 23:04
pmurias sleep& 23:05
fsergot nn pmurias 23:11
tadzik fsergot: I don't think so 23:12
fsergot: I think it belongs in Shell::Command as rmtree 23:13
fsergot tadzik: Theres no rmtree in yours Shell::Command
tadzik: It's late, I'll come back to this tomorrow. :) 23:16
colomon phenny: tell pmurias "Can't locate Package/Stash.pm" 23:17
phenny colomon: I'll pass that on when pmurias is around.
colomon phenny: tell pmurias Oh, just had to install Package::Stash for my new perlbrew p5. 23:24
phenny colomon: I'll pass that on when pmurias is around.
sorear good * #perl6 23:50