»ö« 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.
Carolyn hhhhhhhhh 01:49
hola
quien
DrEeevil sorear_: re: makefiles, try bootstrap with MAKEOPTS="-j4", it reliably fails 03:00
sorear_: and the bootstrap is "dirty" because it writes to the live filesystem (which some build environments penalize with termination), I workarounded it by copying the installed niecza files into the boot/ directory
(and patching out that silly autofetcher) 03:01
bonus: I was able to test bootstrapping different versions with different versions, it is quite resilient and just works
sevvie Hey everyone. I downloaded Rakudo Star 2012.07, wanting to give rakudo another try. On a Macbook. Everything looked fine until what looks like the first time it calls gcc, at which point it throws two errors: unrecognized command line option '-Wno-long-double', and '-Wenum-compare'. 03:05
(calls gcc as compared to clang) 03:06
benabik sevvie: Do you have the latest version of Xcode and the command line tools?
sevvie I do.
benabik Hm. 03:07
DrEeevil sevvie: gcc -v claims what version?
sevvie gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)
benabik has the same
benabik wonders what Parrot version * uses...
DrEeevil haha 03:08
benabik Uses 4.6.0
DrEeevil sevvie: that is pretty much ancient stuff no one uses anymore ... and I guess updating is impossible 03:08
benabik DrEeevil: That is the most current Apple toolchain. :-P 03:09
DrEeevil benabik: I see no contradiction there
benabik hugme: hug DrEeevil
hugme hugs DrEeevil
DrEeevil o_O 03:10
benabik Hm. The hints haven't changed since 4.6.0
benabik downloads and tries to build. 03:13
Huh. It uses clang for me. 03:14
sevvie It uses clang up to a point, for me.
benabik And generates PILES of warnings. O.o
sevvie I gotta run for a bit, but I read backlog.
benabik sevvie: I'll keep trying and see if I see the same thing. Might be that Parrot is defaulting to clang but something else is trying to use gcc.
benabik hopes star won't overwrite my existing toolchain... 03:18
Oh good, it creates an install directory... 03:20
benabik hasn't tried star before. 03:21
benabik Okay, `perl Configure.pl --gen-parrot` has finished without error... 03:24
sevvie Weird. Wonder why mine doesn't like compiling. 04:17
masak morning, #perl6 05:20
I've decided not to rush macros-d2 into today's release.
if I'd had today completely free for Perl 6 activities, I'd get it merged easily.
but I have to teach today. so, next release. 05:21
&
moritz good morning 05:34
tadzik good moritz morning 07:08
pmichaud good morning, #perl6 07:11
arnsholt FROGGS: I'm off to work now, but if you wanna discuss the Zavolaj/CStruct stuff I'll be back online in about half an hour 07:31
hoelzro morgen
Timbus [Coke], yes (slightly delayed response) 07:41
FROGGS hi arnsholt: dont much to discuss right now I guess, but I let you know 07:42
Timbus [Coke], I've been wondering how to do it. Since my library is socket based (as in, class sockets not IO sockets) it doesn't go well with the normal callback-based event stuff. I think I need to wrap my run() method into a callback and wait for the user to call MuEvent::run
Timbus can you pass a method as a reference in perl 6 or do you need to wrap it in a closure like perl 5's sub {$obj.method()} 07:51
pmichaud Timbus: one can do *.method() or { $obj.method } 07:56
the first is equivalent to -> $obj { $obj.method }
Timbus ah, yes but i was wondering if you could simply pass the method around, like C#'s delegates i guess
without needing to keep the object around (in this case in a closure) 07:57
my $meth = &$obj.method; $meth(); #equivalent to $obj.method();? 07:58
hoelzro Timbus: iirc, method objects are "unbound" 07:59
Timbus a closure works fine, I'm just wondering if it's the perl 6 'way' 07:59
dalek p: dd9cb19 | pmichaud++ | / (2 files):
Update NQP release_guide, create "make release" target in Makefile.
08:02
arnsholt FROGGS: I'd be interested in a quick outline of what features you're missing 08:14
arnsholt I do try to do some stuff with Zavolaj, but I end up spending most of my time hacking on Zavolaj itself, so feedback on what people actually -need- is good =) 08:15
moritz ncurses gives you access to some variables (for example for getting the window size) -- is that supported in zavolaj somehow? 08:16
arnsholt Nope =/
It's one of the things I've been pondering
Getting it to work probably wouldn't be too hard, but I'm not entirely sure what the best way to expose it to the user is 08:17
Should probably have a chat with jnthn about it
FROGGS I need to get the right values out of a struct like { Uint8 x; Uint8 y; }, right now I get bot x and y inside the same Int
I cant tell it that the ints are just one byte
So having a struct that is like { Uint8; Uint16; Sint16; char; ... } is even worse to split apart if it gets to you in a single int 08:18
FROGGS when reading your type_map { int8 => char }, one could think that he actually gets a 1-byte-thingy 08:19
arnsholt Yeah, sized members in structs (and arrays of sized stuff) is in the pipeline 08:20
FROGGS ya, looks like the problem is in CStruct.h around line 204 08:21
sorry, CStruct.c
arnsholt The Uint/Sint distinction is likely to be annoying as well, but I haven't really discussed that with jnthn yet
FROGGS I dont care at the end if my perl var is actually an int8 or Int or whatever, the numeric value must be right
arnsholt Actually, the problem is a bit trickier 08:22
arnsholt get_attribute_ref returns a pointer to the value we're reading, and it's the caller's responsibility to interpret that pointer correctly 08:23
FROGGS one problem that comes to my mind is that you dont really know how much bytes the compiler spent for types when building the lib
arnsholt Which means that I'll have to update the calling convention of get_attribute_ref, update all implementors of the interface and all callers of it 08:24
FROGGS ya, basically the caller has to know what he will get
arnsholt I'm sort of in the middle of that
FROGGS ohh, okay
arnsholt Unfortunately I've an article deadline coming up, so it'll probably be a few weeks at least before I get it done 08:25
FROGGS that not a problem, I dont wanna release the SDL module for perl6 tomorrow ;o) 08:27
arnsholt Well, that's a relief =)
FROGGS its more some kind of proof of concept right now
to get into perl6 a bit, since I installed it like two days ago 08:28
arnsholt But for now, you'll have to deal with this stuff manually similarly to the version struct
FROGGS I've got a question about that
why is actually something in $!version?
arnsholt You mean how we get the info from the C struct via $!version? 08:29
FROGGS ya, is it just because I told it that there is an int value at the first place? 08:30
arnsholt Yeah, pretty much 08:30
FROGGS so its all about the order?
arnsholt The order of declaration of the has clauses matters, just like in C, really
FROGGS k
arnsholt From that we can calculate the allocation strategy for the corresponding C struct and peek into it correctly 08:31
FROGGS hmmm
arnsholt Pointer members are a bit more complicated, since those will be associated with a Perl 6 object as well as a pointer in C
FROGGS what if the struct has a member like char[42]? how could I tell it that there's a something of size 42? 08:32
arnsholt For those we have a parallel storage for the Perl object pointers and some logic to make sure the Perl object has the same pointer as the C struct
That's another thing we don't support yet either =/
Only struct { int *array; }
(And it's not entirely obvious how to expose it as Perl) 08:33
moritz int @array[42] 08:34
once we implement that :-)
arnsholt Except that syntax is kind of taken already
FROGGS ya 08:35
arnsholt Since has CArray[int] $!arr means int *arr
FROGGS I could imagine passing a custom class like char42 as a type, with a common getter that gives you the size in bytes 08:37
arnsholt But for the most part you can hack around the lack of flattened arrays 08:38
Just embed 42 ints in a row =)
FROGGS ohh what the 08:39
ya, at least it would work ;o)
moritz :-)
jnthn_ morning o/ 08:41
phenny jnthn_: 29 May 11:40Z <daxim> tell jnthn_ rakudo-switched-over-to-qregex =~ s|Ementaler|Emmentaler|
dnocaster Anyone know where I could find a link to a transcript (or video) of the State of the Onion 12 (2008) & 13 (2009) talks, if such exist? 08:41
moritz if google doesn't find them, I guess they don't exist 08:49
dnocaster ty moritz.. did spend an hour looking.. placeholders only 08:50
FROGGS maybe ask the organizers? thats pretty much the last chance you got 08:51
dnocaster what happens if I give a little love shout out to everyone out there (not as a means to an end), but for love's sake.. any takers? Does it irritate anyone? If so, sorry. Peace. 08:52
moritz hugme: hug dnocaster 08:53
hugme hugs dnocaster
kresike hello all you happy perl6 people 08:53
FROGGS hi
dnocaster :) Okay.. world feels okay.. bfn and ty 08:55
FROGGS bfn? 08:58
arnsholt Bye for now, I guess 09:01
FROGGS ya, google told that too after my mobile broadband went to work again.... thanks anyway 09:02
FROGGS its weird somehow sitting in the train and everybody around is talking in german (comming right back from yapc) 09:04
sorear DrEeevil: I see no reason to support building debian packages of niecza, since they will be useless for non-root users due to how stupid the module compilation cache is 09:05
sorear DrEeevil: niecza wants to be installed in a directory named "run" with a user-writable directory "../obj" 09:06
DrEeevil: someday (possibly next week after I get Bailador running unmodified) I'll make it use $HOME/.niecza/module-cache or something like that 09:07
dalek kudo/nom: c7f6492 | moritz++ | src/core/ (2 files):
improve X::Numeric::Real error messge
09:17
c: ea92fc5 | moritz++ | lib/X/Numeric/Real.pod:
X::Numeric::Real
dalek c: e5e4199 | moritz++ | lib/X/Phaser/PrePost.pod:
X::Phaser::PrePost
09:22
dalek ecs: 2774606 | moritz++ | S32-setting-library/Exception.pod:
[S32::Exception] better error message for X::Numeric::Real

also fix a typo
09:24
dalek c: 6347804 | moritz++ | lib/X/Package/Stubbed.pod:
X::Package::Stubbed
09:28
dalek ecza: 6b0956d | sorear++ | src/ (3 files):
First horrible implementation of use lib

It doesn't scope right and it also doesn't work with the precompiler so it cannot be used in modules. Also it propagates into modules, which may or may not be a feature.
10:06
moritz has started to read arxiv.org/pdf/math/9404236v1.pdf and likes it so far 10:11
dalek p: b1a3a46 | jonathan++ | / (4 files):
Copy P6Regex to get a P5Regex. Start making a few of the basic changes needed, looking to STD_P5 for inspiration.
10:19
p: c5d768b | jonathan++ | t/p5regex/ (2 files):
Add test harness for p5regex support and copy over rx_basic, which is simple enough to be valid p5 and p6. Passes.
jnthn r: 'ab' ~~ /a :: b/ 10:22
p6eval rakudo c7f649: OUTPUT«===SORRY!===␤:: not yet implemented at line 2, near " b/"␤»
moritz jnthn: I hope you are aware that there are many :P5 regex tests in roast? 10:27
(and in perl 5, of course :-)
jnthn moritz: yes, but going around that build cycle will be tedious, so I'm going to build a small suite based on some of the ones in spectest in nqp. 10:28
moritz sure 10:29
just want to make sure you don't conjure them out of thin air, which would take way more time 10:30
dalek ecza: 92255f0 | sorear++ | / (2 files):
Add callframe(N) call form
10:58
ecza: 79d1139 | sorear++ | src/NieczaPathSearch.pm6:
Actually print the search path when lookup fails
sorear rn: rx/<- [!*'()\-._~A..Za..z0..9]>+/ 10:59
p6eval rakudo c7f649: ( no output )
..niecza v19-31-g94c69fe: OUTPUT«===SORRY!===␤␤Unrecognized regex metacharacter < (must be quoted to match literally) at /tmp/NEr7LuE7ol line 1:␤------> rx/<⏏- [!*'()\-._~A..Za..z0..9]>+/␤␤Unhandled exception: Unable to resolve method ast in type Any␤ …
sorear std: rx/<- [!*'()\-._~A..Za..z0..9]>+/
p6eval std 235f71b: OUTPUT«ok 00:00 42m␤»
sorear rn: <- []> 11:02
p6eval rakudo c7f649, niecza v19-34-g79d1139: ( no output )
sorear rn: rx/<- []>/ 11:03
p6eval niecza v19-34-g79d1139: OUTPUT«===SORRY!===␤␤Unrecognized regex metacharacter < (must be quoted to match literally) at /tmp/YB7zpUDVd3 line 1:␤------> rx/<⏏- []>/␤␤Unhandled exception: Unable to resolve method ast in type Any␤ at /home/p6eval/niecza…
..rakudo c7f649: OUTPUT«===SORRY!===␤Error while compiling block : Error while compiling op call: Error while compiling block : Error while compiling block : StopIteration␤»
sorear rn: "(y)" ~~ / '(' ~ ')' 'x' / 11:05
p6eval rakudo c7f649, niecza v19-34-g79d1139: ( no output )
dalek p: 2d8b6e8 | jonathan++ | src/QRegex/P5Regex/ (2 files):
Start getting various of the p5metachar bits in place, and eliminate a few bits that will be unrequired.
11:10
p: d6e3ed6 | jonathan++ | t/p5regex/01-p5regex.t:
Look in the correct places for tests.
p: 47a7bb4 | jonathan++ | src/QRegex/P5Regex/ (2 files):
Get p5quantifier largely in place and working.
p: e2b7dbe | jonathan++ | t/p5regex/ (2 files):
Add some quantifier tests.
jnthn a {*} / 11:16
rx: / a {*} /
r: / a {*} /
p6eval rakudo c7f649: ( no output )
dalek ecza: 1666bb5 | sorear++ | src/ (2 files):
Fix broken parsing of signs in character classes
11:22
p: 71ec9af | jonathan++ | src/QRegex/P5Regex/ (2 files):
Remove a few pieces we won't need in P5regex.
11:23
JimmyZ wonders what's the goal of P5Regex, 12:06
phenny JimmyZ: 19 Aug 15:16Z <sorear> tell JimmyZ Seems problematic insofar as mono 2.x lacks an interpreter and is extremely architecture-dependent in AOT mode (might even be ARM only)
moritz JimmyZ: m:P5/.../ 12:07
JimmyZ I thought for the new rakudo roadmap about perl 5 12:08
moritz JimmyZ: don't you see the relation? 12:09
it allows people to write some kind of p5 code (here, regexes) in perl 6
dalek kudo/nom: befe7ca | moritz++ | src/core/Exception.pm:
make message of X::Inheritance::Unsupported less confusing
JimmyZ I saw m:P5/.../ 12:10
colomon nr: say 'ccdd' ~~ /<-[ab]+[cd]>+/ 12:13
p6eval rakudo c7f649: OUTPUT«「ccdd」␤␤»
..niecza v19-35-g1666bb5: OUTPUT«Match()␤»
colomon sorear: your latest patch broke that one, I think. 12:14
sorear colomon: working as designed (!?). STD.pm6 parses unary - as looser than everything else 13:12
colomon sorear: so the test and rakudo are both wrong?
sorear phenny: tell TimToady see colomon 06:12 and 05:13 PDT, I think we are looking at a stdbug
phenny sorear: I'll pass that on when TimToady is around.
sorear colomon: possibly. if it's breaking real-world code I'll do $something_else 13:13
until TimToady_ gets back to us
moritz you mean it's actually parsed as <- ( [ab]+[cd] )> (with invented syntax)?
sorear yes 13:14
sorear n: say 'ccdd' ~~ /<(-[ab])+[cd]>+/ 13:19
p6eval niecza v19-35-g1666bb5: OUTPUT«===SORRY!===␤␤Unrecognized regex metacharacter - (must be quoted to match literally) at /tmp/T1ztWYc8dW line 1:␤------> say 'ccdd' ~~ /<(-⏏[ab])+[cd]>+/␤␤Unable to parse regex; couldn't find final '/' at /tmp/T1ztWYc8dW…
sorear n: say 'ccdd' ~~ /< (-[ab])+[cd]>+/
p6eval niecza v19-35-g1666bb5: OUTPUT«Match()␤»
dalek ecza: c5422a5 | sorear++ | src/ (2 files):
Revert "Fix broken parsing of signs in character classes"

May be a STDbug, breaks colomon's code. This reverts commit 1666bb507ada5d922a5cc8aa3d964d0e4a39a825.
13:21
ecza: 0567c61 | sorear++ | src/STD.pm6:
quickfix for space after sign
colomon sorear: oh, sorry, that wasn't a real-world bug of mine, that's from roast. I still run spectest every time I see you've pushed a patch. :) 13:22
sorear colomon++ 13:22
roast is sufficiently real world for me 13:23
moritz chuckles
dalek kudo/p5rx: 1431c3e | jonathan++ | src/Perl6/ (2 files):
Wire the :P5 adverb up to use P5Regex. Doesnm't support much yet, but makes it accessible from Rakudo. A simple check of it worked.
13:40
jnthn Will merge after the release.
And of course, still plenty of work to do in the NQP repo on the P5Regex grammar/actions.
nemesys 'nine' around somewhere on freenode? 13:45
sorear no clue
does it have to be freenode? 13:46
he's in irc.perl.org:#parrot _right now_
nemesys found him, thx
moritz r: enum A <Ax Ay>; class B is A { } 13:56
p6eval rakudo befe7c: OUTPUT«===SORRY!===␤A does not support inheritance, so B cannot inherit from it␤at /tmp/zR1qDUyM1m:1␤»
dalek c: b4b1564 | moritz++ | lib/X/Inheritance/Unsupported.pod:
X::Inheritance::Unsupported
13:59
moritz r: has sub foo() { } 14:00
p6eval rakudo befe7c: OUTPUT«===SORRY!===␤Cannot use 'has' with sub declaration␤at /tmp/8GTfQzuI4p:1␤»
JimmyZ moritz: s/«// 14:03
[Coke] r: has pi; 14:03
p6eval rakudo befe7c: OUTPUT«===SORRY!===␤Malformed has␤at /tmp/5QMsYy9J9M:1␤»
dalek c: 5abd340 | moritz++ | lib/X/Declaration/Scope.pod:
X::Declaration::Scope
14:05
c: b20ac1f | moritz++ | lib/X/Inheritance/Unsupported.pod:
typo, JimmyZ++
sirrobert is there a method like $attribute.get_value that works for private attributes? 14:28
jnthn all attributes are private 14:29
Thus $attribute.get_value will work for has $!x, yes
sirrobert hmm ok... well, how can I get this to work:
r: class A { has $!id; method gist () { my $str; for self.^attributes -> $attr { $str ~= $attr.name.substr(2)~': '~$attr.get_value(self); }; return $str; } }; my $a = A.new(id => "foo"); say $a; 14:30
p6eval rakudo befe7c: OUTPUT«use of uninitialized value of type Any in string context in method gist at /tmp/J_AekoPFzO:1␤␤id: ␤»
sirrobert the return of get_value() there is always null for $!foo and correct for $.foo
diakopter jnthn!
sirrobert (if $.foo is defined in the class, I mean) 14:31
jnthn o/ diakopter
jnthn sirrobert: Remember that the default constructor doesn't initialize private attributes. 14:32
sirrobert ohh... 14:32
jnthn So the problem is that yo're never putting anything in $!id
sirrobert I don't think I knew that =) thanks
diakopter that has surprised me both times I learned it 14:33
jnthn I suspect if you fix that, the introspection works fine :)
sirrobert cool, I appreciate it.
diakopter it just seems to me if the caller has the power to *create* an object, what's wrong with letting it initialize its private data 14:34
"because the attributes are private" holds no water with me 14:35
PerlJam why not?
PerlJam The fact that they are private means that they are an implementation detail that is anot and should not be part of the user-visible interface 14:36
s/anot/not/
diakopter sure, after the object is created
PerlJam no, there is not temporal component here.
jnthn it's a refactoring thing 14:37
It's good if all the things that relate to a "has $!foo" are contained within the class
Thus you can do as you wish with it without having to care about the class consumers, provided you retain expected behavior. 14:38
moritz also if the user supplies an object at construction time, there's not much sense it making it private
[Coke] I suspect actual private attributes are going to be a big mindset change for some fivers. 14:39
moritz because the user already has access to the object. Why not make it available through an accessor?
diakopter and non-fivers like me
[Coke] diakopter: what language are you used to that lets you poke at private attributes from outside the class
sirrobert what language did you come from most recently, diakopter?
[Coke] ?
heh.
moritz javascript? :-) 14:40
sirrobert (also, does Perl 6 have a concept of "protected") 14:40
GlitchMr Perl 5
diakopter any language where you can explicitly set a private member in a constructor
dalek p: 3c6c7ea | jonathan++ | src/QRegex/P5Regex/ (2 files):
First cut of Perl 5 style character classes.
p: 3413cee | jonathan++ | t/p5regex/ (2 files):
Run some basic tests for Perl 5 character classes.
sirrobert hearts javascript.
GlitchMr Python 14:41
PHP
Java
diakopter C#
jnthn diakopter: You can explicitly set it in the BUILD submethod.
It's just that the default things won't do that. 14:42
GlitchMr GetField() in C# ;)
sirrobert jnthn++
nuba sirrobert: you can also U+2764 unicode, then you get ❤
diakopter ok. in that case, it's confusing that the default things will do that on non-private stuff
GlitchMr In Java you can use Reflection
sirrobert nuba: thanks =)
GlitchMr In PHP you can convert object to array and access internals
sirrobert not sure how to enter that in my terminal (or irssi)... gooooogling 14:43
GlitchMr $class = new SimpleClass; $classvars = (array)$class; echo $classvars["\0SimpleClass\0answer"];
Yes, null
JimmyZ PHP has a Reflection class ;)
moritz fwiw you can use introspection in p6 too to get private attributes
diakopter [Coke]: that's kindof rude. I'm sorry for not using your terminology properly
sirrobert 14:44
ha
GlitchMr php > var_dump($class->{"\0SimpleClass\0answer"});
nuba screen's copy and paste works too: ❤
GlitchMr PHP Fatal error: Cannot access property started with '\0' in php shell code on line 1
\0 is hax
But well, that's PHP, so this is expected
sirrobert nuba: yeah, but my computer's broken... it doesn't let my copy/paste between power cycles ;) 14:45
[Coke] diakopter: I have no idea what you're apologizing for.
GlitchMr Also, Ruby with .send
[Coke] ... or if you're suggesting I should.
GlitchMr Or simply extending class ;)
sirrobert [Coke]: I think he's responding to the tone he inferred from your question about his prior language (and the subsequent 'heh.')
diakopter sirrobert: I wrote a lot of Perl 5 [that generates C] last week, a ton of NQP the several weeks before that, a bunch of C the weeks before that, a bunch of Java at $dayjob before that, a ton of JavaScript before that, a decent amount of C# before that, and I don't remember more than 6 months ago. A lot of Perl 5 I seem to recall 14:47
sirrobert diakopter: cool =)
moritz diversity++ 14:47
sirrobert it's great to have a well-rounded background
masak morning, #perl6 14:48
colomon \o
sirrobert hi masak 14:49
jnthn o/ masak
diakopter it was a rhetorical question meant to demean, not one actually seeking information
PerlJam diakopter: I didn't take it that way. I thought he was seeking a point of commonality.
diakopter because it strongly implied that no language lets you do that by the definition of private
jnthn What're the Perl 5 translations of what Perl 5 calls \b and \B? 14:50
er, s:1st/5/6/
diakopter (and therefore I wouldn't be able to answer the question, because there wouldn't be a language I was coming from that met that criterion)
masak jnthn: <|w> and... something?
moritz jnthn: \b comes out as >>|<< :-)
ie left or right word boundary
jnthn aha
masak moritz: yes, but <|w> means that too. 14:51
moritz correct
jnthn thanks
moritz I forgot that, even though I think I implemented it :-)
moritz r: say '...foo' ~~ /<|w>./ 14:51
p6eval rakudo befe7c: OUTPUT«「f」␤␤»
[Coke] diakopter: it was not a rhetorical question. it was an actual question because I assumed you were coming from perl5. the heh was because someone else asked the exact same question when I did. 14:52
diakopter I didn't see the heh :)
jnthn masak, moritz: thanks
GlitchMr Just wondering. Can I write this more cleanly?
([+] @val) / @val
moritz yes 14:53
diakopter [Coke]: ok, I guess I didn't know there were non-private privates in Perl 5... are there?
moritz mean(@val), if you define &mean first
diakopter: if you do inside-out objects, yes :-)
but perl 5 does not supply a default constructor
so if you can initialize private attributes via a ->new() call is left to the class 14:54
diakopter like every other language
GlitchMr I guess that mean() isn't builtin or method
[Coke] diakopter: there's really nothing private in perl5 if you have the source. as opposed to, say, Java.
moritz GlitchMr: that's why I wrote "if you define &mean first"
diakopter [Coke]: I thought that was my point when I wrote above that you implying there was no valid answer to the question 14:55
sirrobert r: say {a=><a b c>}<a>.WHAT;
p6eval rakudo befe7c: OUTPUT«Parcel()␤»
diakopter (that Perl 5 doesn't have privates)
sirrobert Why would I want a Parcel instead of an Array ?
(in general)
moritz sirrobert: parcels are cheaper 14:56
diakopter ok, I'm sorry for feeling attacked; I'll get over it.
sirrobert moritz: ok 14:57
PerlJam diakopter: If you feel like you're being attacked on #perl6 ... YOU'RE WRONG! ;-)
sirrobert moritz: in JSON::Tiny, does it seem reasonable to you to render Parcels as JSON arrays? 14:58
moritz sirrobert: yes 14:58
sirrobert moritz want me to implement and do a pull request or add an issue?
diakopter PerlJam: you're right; I shouldn't be touchy. :( 14:59
moritz sirrobert: might be a one-word fix, lemme try
masak from docs/release_guide.pod: "Rakudo will generally issue its own development release two days after the Parrot release." -- Parrot released one day late this month. does that mean Rakudo release is tomorrow?
jnthn masak: shouldn't 15:00
moritz I'd say we stick to Thursday, unless our release manager sees a good reason to dealay
jnthn masak: I think tadzik++ will cut tonight or so
moritz especially since we don't depend on the new parrot (I think)
PerlJam diakopter: A way to look at it is that humans have public parts (arms, legs, etc.) that you can decorate at "construction" time, but you really, really shouldn't initialize the contents of the human's stomach without cutting them open first (or using the stomach's public interface: the mouth)
sirrobert moritz: thanks. Also, is there a reasonable rendering of a Pair? I thought maybe a single {a:1} object. 15:01
moritz: (those are the two literals I keep bumping into)
tadzik I'm here
I'll make the release today evenings probably
diakopter PerlJam: yeah, I just don't see why the mouth can't be a constructor
tadzik has had a nice Frankfurt on Foot trip today 15:02
moritz sirrobert: not sure about Pair. Since there's no exact equivalence, I'm inclined to leave it out
sirrobert moritz: fair enough
moritz could just as well be { "key": "a", "value": 3 }
sirrobert hmmm nod 15:03
is there any concept of perl5-style "references" in p6? 15:04
moritz sirrobert: fix for Parcel pushed
sirrobert moritz++: thanks
moritz sirrobert: perl6advent.wordpress.com/2011/12/...nces-gone/ 15:05
sirrobert heh
moritz I try to make an art form out of answering FAQs with blog posts :-)
sirrobert I don't know art... but I know what I like =) 15:06
sirrobert actually I do know art ;) 15:06
moritz thinking more about the question, it seems that scalar containers most closely resemble pointers/references 15:07
sirrobert yeah, that's what I was gleaning...
moritz binding another scalar container to them is like assignment to a pointer 15:08
sirrobert or sort of like macros to things
(for a very non-technical use of "macro")
moritz and assigning a value into the container is like assigning to the pointee
sirrobert ahh, yeah
that makes sense of my experience of it
(and is a C bad-touch) 15:09
moritz but that doesn't put much room for the 'bind a value directly into a container' thing that youc an do in p6
sirrobert yeah
moritz and that you can call a method on the container, and it actually works ont he contained value
sirrobert I like that
[Coke] ugh, doing regexes in java is so painful. :( 15:11
tadzik hugs [Coke] 15:12
moritz have you \\\ed today? :-)
[Coke] I was not implying there was no valid answer to the question.
jnthn At least C# provides an @"..." construct so you can write regexes sanely. 15:12
geekosaur mmm, leaning toothpicks 15:13
[Coke] I find the interface to s/// bizarre.
moritz I didn't mean to answer any question, just that languages without regex literals generally require a ridculous amount of backslashes 15:15
[Coke] need a perl6-on-JVM interface for the regexes only.
huh. timezone shift somewhere, as feather is now running my cron job taht I didn't expect for another 45m.
... or is that job leftover from a day ago? hurm... 15:16
sirrobert so, I updated JSON::Tiny but now my script says: Missing or wrong version of dependency '/home/sirrobert/.perl6/_git/rakudo-star-2012.07/install/lib/parrot/4.6.0/languages/perl6/lib/JSON/Tiny.pm'
I updated with panda install JSON::Tiny 15:17
(which worked fine)
I didn't specify a version anywhere...
FROGGS is it okay that its a .pm and not a .pm6 ? 15:19
[Coke] yes.
sirrobert I believe so
jnthn std: m/a{2}/
p6eval std 235f71b: OUTPUT«===SORRY!===␤Unsupported use of {2} as general quantifier; in Perl 6 please use X**2 at /tmp/y1rqYtkVTN line 1:␤------> m/a{2}⏏/␤Check failed␤FAILED 00:00 41m␤»
sirrobert I have use v6; and am using the perl6 interpreter
jnthn std: m:p5/a{2}/ 15:20
p6eval std 235f71b: OUTPUT«===SORRY!===␤Unrecognized adverb :p5(1) at /tmp/99oRWdfxKz line 1:␤------> m⏏:p5/a{2}/␤Unsupported use of {2} as general quantifier; in Perl 6 please use X**2 at /tmp/99oRWdfxKz line 1:␤------> m:p5/a{2}⏏/␤Check…
jnthn std: m:P5/a{2}/
p6eval std 235f71b: OUTPUT«ok 00:00 47m␤»
jnthn std: m:P5/a]/
p6eval std 235f71b: OUTPUT«ok 00:00 47m␤»
[Coke] weird. I had a lot of old tests running for rakudo that were hung. results from the last few days might be screwy. 15:21
jnthn std: m:P5/a]b/ 15:25
p6eval std 235f71b: OUTPUT«ok 00:00 47m␤»
geekosaur I don't think std knows more than very basic parsing for m:p5 regexes? 15:27
masak ?eval "a]b" =~ /a]b/
$ perl -Mstrict -wE 'say "a]b" =~ /a]b/' 15:28
1
jnthn geekosaur: Yeah, but it gets that right and looking at the grammar I can't see how on earth it does so 15:32
eval "a]b" =~ /a]b/
buubot_backup jnthn: 1
jnthn eval "a)b" =~ /a)b/
buubot_backup jnthn: ERROR: Unmatched ) in regex; marked by <-- HERE in m/a) <-- HERE b/ at (eval 20) line 1.
jnthn aha
good
masak phew :) 15:33
masak .oO( all magical characters are magical, but some are more magical than others )
jnthn ;) 15:34
jnthn eval "adc" =~ /a[^]b]c/ 15:35
buubot_backup jnthn: 1
jnthn wtbh!
diakopter heh 15:36
jnthn eval "adc" =~ /a[^b]]c/
buubot_backup jnthn: No output.
jnthn eval "]" =~ /a[]]c/
buubot_backup jnthn: No output.
jnthn eval "]" =~ /a[]]/
buubot_backup jnthn: No output.
jnthn eval "a]" =~ /a[]]/
buubot_backup jnthn: 1 15:37
jnthn eval "a]" =~ /a[b]]/
buubot_backup jnthn: No output.
jnthn eval "ab" =~ /a[]b/ 15:37
buubot_backup jnthn: ERROR: Unmatched [ in regex; marked by <-- HERE in m/a[ <-- HERE ]b/ at (eval 20) line 1.
masak :D
eval "ab" =~ /a[]b]/
buubot_backup masak: 1
masak toys with concepts like "far too DWIM" and "overdwimmery" 15:38
sirrobert I just rebuilt rakudo star and when I run panda (or make) I get "Missing or wrong version of dependency 'src/gen/BOOTSTRAP.pm'" 15:41
any tips on resolution?
ufo seems to work 15:42
masak sirrobert: did you make install? 15:43
jnthn masak: far too fun to parse :P
sirrobert I did, but I just realized I didn't wipe out the modules dir
doing that now
sirrobert ok, that seems to have fixed it 15:44
I had some modules that required ... something else =) 15:45
FROGGS masak: I'm here btw too (if you dont wanna email) 16:12
masak FROGGS: oh hai :) 16:14
FROGGS hi
masak sees FROGGS' latest email
masak FROGGS: ah, I suspected you wanted to do lots of sub declarations. 16:15
FROGGS: first off, that's unhygienic.
FROGGS why that?
masak because you want to influence how the mainline context looks, not the macro context.
note that I'm using "unhygienic" in a very detached sense. 16:16
pmichaud masak! \o/
masak I don't mean that it's wrong.
clearly, it's what you want to do here.
second, you can't just put unquotes anywhere. they have to be in term position.
so "I believe and hope" are adequate descriptions of the wishful thinking involved.
(this may change if TimToady gets his proposal through with a more general unquote model) 16:17
FROGGS ya I'm actually not sure how to do it right
but I still don't get the idea about your first sentence 16:18
masak the one about hygiene?
FROGGS one reason for using macros to me is doing things simpler and faster 16:19
and that is what I wanna achieve
masak yes.
your use case is totally legit.
mind if I throw it up as a gist so we can all discuss it?
moritz r: constant name = 'foo'; sub ::(name) () { say 42 }; foo() 16:20
p6eval rakudo befe7c: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&foo' called (line 1)␤»
moritz r: constant name = 'foo'; sub ::(name) () { say 42 }; say ::MY.keys
p6eval rakudo befe7c: OUTPUT«0␤»
masak r: constant name = 'foo'; sub ::(name) () { say 42 }; eval 'foo' 16:21
p6eval rakudo befe7c: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&foo' called (line 1)␤»
masak moritz: I think an RT ticket went in that said that the sub gets the wrong name or something.
moritz r: constant name = 'foo'; sub ::(name) () { say 42 }; say ::(name)() 16:22
p6eval rakudo befe7c: OUTPUT«Symbol 'foo' not found␤ in method <anon> at src/gen/CORE.setting:9761␤ in <anon> at src/gen/Metamodel.pm:2304␤ in any find_method_fallback at src/gen/Metamodel.pm:2302␤ in any find_method at src/gen/Metamodel.pm:843␤ in <anon> at src/gen/BOOTSTRAP.pm:824␤ in …
FROGGS did I missed something during reconnect? 16:26
masak <masak> mind if I throw it up as a gist so we can all discuss it?
moritz FROGGS: irclog.perlgeek.de/perl6/today can tell, in general
masak (your use case)
FROGGS great
k, I've got the gist 16:27
masak gist.github.com/3438222
FROGGS ya
masak it would be nice to make this work.
with AST macros, I mean.
I don't think it's too much to ask.
FROGGS so, when do I have to use these { {{{ }}} } things? 16:27
masak when you're building program code dynamically. 16:28
FROGGS If the content of that var should be put in, right? 16:28
masak right.
FROGGS cool
moritz but it won't work that way
masak but you seem to be assuming the content of those variables are strings.
FROGGS hmm?
masak they're not. not on my shift, anyway.
they're ASTs.
FROGGS okay 16:29
moritz FROGGS: the problem is the sub name
you can't put any expression in the place of a sub name
just like you can't write
FROGGS you mean the part at line 13? $method?
masak FROGGS: you seem to be consistently using { {{{ }}} }. it should be just {{{ }}}
moritz sub "foo" ~ $bar () { }
masak fixes in the gist
moritz so, for now we don't have a mechanism for replacing arbitrary parts of syntax with {{{ }}} 16:30
FROGGS hmmm
I'm just trying to do what I usually would do in C 16:31
masak right.
moritz the difference is that in C you create a string that represents the program code
with AST macros you don't go through the string layer
(which makes them much safer to compose) 16:32
masak pugs: macro _code($name) { "sub $name \{ say 'OH HAI' }" }; _code('foo'); foo
p6eval pugs: OUTPUT«OH HAI␤»
masak FROGGS: Pugs has string macros :)
FROGGS okay 16:33
hmmm, not ideal if it wont work at the end ;o)
masak FROGGS: believe me, I do take your use case seriously.
FROGGS ya, I believe you 16:34
masak but I'd like for it to work (1) with ASTs, and (2) with the unhygiene being explicitly specified.
FROGGS k
masak those are just my preferences, of course. :) I happen to like hygienic AST macros. 16:35
if anyone wants to work on unhygienic AST macros or textual macros, that's fine by me.
FROGGS you need to show me exactly what you mean at some point
masak as someone on the conf pointed out, the combination of D2-level macros and the nqp:: namespace for AST introspection is potentially very interesting. 16:36
I was hoping to explore that a bit this weekend.
FROGGS brb 16:38
dalek p: 6902f1d | jonathan++ | / (3 files):
Handle funkiness in Perl 5 character class parsing, and add some tests to cover it.
16:42
p: 8eb6810 | jonathan++ | src/QRegex/P5Regex/ (2 files):
Get various backslash sequences in place.
p: 564768b | jonathan++ | t/p5regex/ (2 files):
Various meta-chars tests.
p: 2b0173e | jonathan++ | t/p5regex/rx_metachars:
Tests for \w, \W, \d and \D.
jnthn airport & 16:47
sirrobert I don't quite get the syntax for overloading the <> operator via a role... 16:48
multi method postfix:'<>' (Str $str) { ... }
that seemed to have a parse error
masak std: multi method postfix:<< <> >>(Str $str) { ... } 16:49
p6eval std 235f71b: OUTPUT«Potential difficulties:␤ 'method' declaration outside of class at /tmp/PfQ5DIk2qE line 1:␤------> multi method postfix:<< <> >>(Str $str) ⏏{ ... }␤ $str is declared but not used at /tmp/PfQ5DIk2qE line 1:␤------> multi method postfix:<< <> >…
sirrobert ah
masak std: class A { multi method postfix:<< <> >>(Str $str) { ... } }
p6eval std 235f71b: OUTPUT«Potential difficulties:␤ $str is declared but not used at /tmp/MwqTgE0Aax line 1:␤------> s A { multi method postfix:<< <> >>(Str ⏏$str) { ... } }␤ok 00:00 43m␤»
masak std: class A { multi method postfix:<< <> >>(Str $str) { $str } }
p6eval std 235f71b: OUTPUT«ok 00:00 43m␤»
masak \o/
sirrobert heh thanks
FROGGS back 16:50
moritz you probably want method postcirumfix:«< >»() though
there is no postfix <>
sirrobert so I saw =) 16:51
postcircumfix
I just realized that heh
masak though you also probably might not want to override postcirumfix:«< >»() 16:53
masak as it is syntactic sugar for postcirumfix:<{ }>() 16:53
sirrobert why?
ohh 16:54
yeah, it actually wouldn't let me do <> without {}
so I just did {} and <> worked
masak \o/ 16:55
actually, you most probably want .at_key
timotimo so postfix:<> would actually be like $pretty_object<> or something? 16:56
moritz yes
r: sub postfix:<>($a) { say $a }; 42<>
p6eval rakudo befe7c: OUTPUT«===SORRY!===␤Unsupported use of <>; in Perl 6 please use lines() to read input, ('') to represent a null string or () to represent an empty list␤at /tmp/8rTvvfwAt1:1␤»
timotimo heh.
sirrobert I hit that earlier =) 16:57
moritz also it would probably stil lose against the empty postcircumfix
hm, not sure actually
timotimo r: sub postfix:{}($a) { say "$a bracey brace" }; 42{}
p6eval rakudo befe7c: OUTPUT«(timeout)»
timotimo whoops?
moritz r: sub postfix:<{}>($a) { say "$a bracey brace" }; 42{} 16:58
p6eval rakudo befe7c: OUTPUT«42 bracey brace␤»
timotimo interesting. how did i trigger a loop there?
moritz timotimo: it created a zero-width match, which was then quantified in the grammar 16:58
timotimo aaaah
moritz timotimo: so it matched the empty postfix all over again
timotimo of course.
moritz wouldn't that be a cute way to write a debugger? 16:59
write an empty-string postfix
that automatigacally gets inserted everywhere :-)
timotimo heh heh
masak submits rakudobug
sirrobert wow, that would be great
masak shouldn't be allowed to write empty postfixes, methinks
timotimo why not on a semicolon?
sirrobert heh
timotimo: recursion problem?
timotimo only if you use semicolons in your implementation of the ; operator :3 17:00
sirrobert heh
timotimo i bet there's tricks to circumvent semicolons if one is super careful 17:01
sirrobert I've only found one case in javascript where semicolons are needed
(outside of for loops, that is)
timotimo perl6 should have incircumfix. 17:07
timotimo as in "foo" ><( "yoink" )°> "bar", the fish incircumfix operator 17:07
masak that's just a regular infix, like infix:<?? !!> 17:08
timotimo ?? !! isn't a regular infix, though. or is it? 17:09
the last time i checked it was special-cased in the grammar
timotimo r: sub infix:['><>( )°>']($a, $b, $c) { say "behind fish: $a"; say "in fish: $b"; say "in front of fish: $c"; }; "foo" ><( "bar" )°> "baz"; 17:11
p6eval rakudo befe7c: OUTPUT«Not enough positional parameters passed; got 2 but expected 3␤ in sub infix:<> at /tmp/iwJoJQiM0Z:1␤ in block at /tmp/iwJoJQiM0Z:1␤␤»
timotimo whoops, typo'd
r: sub infix:['><( )°>']($a, $b, $c) { say "behind fish: $a"; say "in fish: $b"; say "in front of fish: $c"; }; "foo" ><( "bar" )°> "baz";
p6eval rakudo befe7c: OUTPUT«Not enough positional parameters passed; got 2 but expected 3␤ in sub infix:<> at /tmp/PyjImSWlB0:1␤ in block at /tmp/PyjImSWlB0:1␤␤»
benabik It would need to have an is parsed, I think.
timotimo does that already work?
benabik I dunno. 17:12
timotimo r: sub infix:['>( )°∃']($a, $b, $c) { say "behind fish: $a"; say "in fish: $b"; say "in front of fish: $c"; }; "foo" >( "bar" )°∃ "baz"; 17:13
p6eval rakudo befe7c: OUTPUT«===SORRY!===␤Preceding context expects a term, but found infix instead␤at /tmp/LwB3kVLcQB:1␤»
moritz rakudo doesn't understand infix:[...] 17:15
masak timotimo: I don't remember infix:<?? !!> being that special-cased.
moritz just infix:«...» and <...>
timotimo oh, OK 17:17
r: sub infix:«>( )°∃»($a, $b, $c) { say "behind fish: $a"; say "in fish: $b"; say "in front of fish: $c"; }; "foo" >( "bar" )°∃ "baz";
p6eval rakudo befe7c: OUTPUT«===SORRY!===␤Confused␤at /tmp/4Z7khZ6cIj:1␤»
timotimo r: sub infix:<^-) (-^>($a, $b, $c) { say "$a | $b | $c" }; 100 ^-) "foo" (-^ 200; 17:20
p6eval rakudo befe7c: OUTPUT«===SORRY!===␤Preceding context expects a term, but found infix - instead␤at /tmp/qHIdzDkkR0:1␤»
timotimo not *really* sure where i went wrong there :|
masak neither
dalek osystem: 9831204 | (Sir Robert Burbridge)++ | META.list:
added Masquerade
17:24
masak o/~ "Masquerade! Paper faces on parade... Masquerade! Hide your face, so the world will never find you!" o/~ 17:25
sirrobert heh
benabik ?? !! does seem to have a custom token in Rakudo's grammar.
github.com/rakudo/rakudo/blob/nom/...r.pm#L2667
masak sirrobert: interesting module. sirrobert++ 17:26
sirrobert benabik: well, it's custom, but not uniqely accounted for as a type
masak: thanks =)
benabik sirrobert: Right, it's infix, but it parses differently than other infix 17:27
To create a new similar operator you'd also need a custom parse rule.
Which is NYI
timotimo thank you for digging it out. it's exactly what i meant
sirrobert don't you need a custom parse rule for all of them? 17:28
they're just simple for the others...
sirrobert (not that I'm an expert on how to read the tokenization code) 17:28
benabik I'm not sure the technical details of how Rakudo does it, but it basically creates a token for any infix:<foo> sub. 17:29
sirrobert inside the infix token definition is a grammatical interpreter 17:30
the others have it too, they just only need <sym> to grab an already-defined symbol
of course, I don't get the <O(...)> bit, so what do I know =) 17:31
sirrobert is speaking boldly from ignorance
masak the <O(...)> bit is just a method call, no? 17:32
sirrobert I believe ;)
moritz yes 17:36
moritz and it "just" parses an expression with precedence not looser than the argument to pass to it 17:36
masak then it can't be that tricky. :) method calls can usually be understood.
moritz s/to/you/ 17:37
*how* it does that is a different matter, not so easy to understand, IMHO
masak aye. 17:39
masak discovers a wonderfully strangely consistent line in "Into the Woods": "better take the moment present as a present for the moment" 17:40
timotimo (°∃ is a great string for a prefix operator that does nothing except pass the argument to say. it's the parrot operator :D 17:41
moritz I'm skimming through STD's method EXPR 17:43
moritz and the key seems to be not to read &reduce on the first pass :-) 17:43
the loop starting at line 4644 is where it starts to get interesting
moritz the actual parsing starts with my @t = $here.$termish 17:44
which basically calls the <termish> rule
which parses <prefix>*<term> [<postfix> | <postcircumfix>]* or so
then it twiddles the prefixes and postfixes according to their relative precedence 17:45
moritz and then loop after that parses infixish 17:46
which is infix or meta operators that can act as infixes
moritz TimToady_: what's an example for $infix<fake> ? 17:48
tadzik oh hai
moritz lol it's tadzik!
tadzik lol! \o/
tadzik I'm holding a knife and I'm going to cut a release 17:48
moritz wield your sledgescalpel!
tadzik and then maybe enjoy the one last glass of apfelwine 17:49
or maybe last \d+ glass
moritz perl5.git.perl.org/perl.git/blobdif...rlfunc.pod 17:54
tadzik do we want to target the new Parrot release? 17:58
we're on 4.4.0
moritz if there's no reason to bump the parrot version, we don't bump the parrot version
tadzik ok, that's mu understanding as well
moritz that makes it easier for packagers to do their thing 17:59
tadzik oh noes, nqp doesn't build :( 18:10
can anyone check on a fresh working tree? I get Missing or wrong version of dependency 'src/stage2/QRegex.nqp'
moritz tries 18:11
tadzik same after git clean -fdx :\ 18:16
moritz built fine here 18:19
tadzik huh
after realclean and friends, on HEAD?
moritz after git clean -xdf, on nqp/master 18:19
moritz on parrot RELEASE_4_4_0 18:24
tadzik ok, something's seriously wrong on my box. Now it doesn't build with "make: nqp: Command not found" 18:26
moritz does 'git status' indicate any missing files?
tadzik nope
I'll try --gen-parrot
that may take some time on this hotel wifi 18:27
moritz if you don't have a replacement machine, I could chime in and do the release
[Coke] chime or chip? 18:28
tadzik it's somewhere between 32 and 180 kBps
moritz I don't know, I don't speak English. I could do the release :-)
[Coke] mmhehehehe. 18:29
tadzik I'll go and send a postcard and see if it gets any better in my absence :)
[Coke] tries to get (?:(?i)(?:[+-]?)(?:(?=[.]?[0123456789])(?:[0123456789]*)(?:(?:[.])(?:[0123456789]{0,}))?)) to work in java.
moritz is that a generated regex?
[Coke] from Regexp::Common, aye.
tadzik . o O ( java.util.org.cpan.regexp.common ) 18:30
[Coke] holy rusted metal, it worked as is. 18:33
moritz probably because it doesn't contain a backslash :-) 18:42
[Coke] leaves a comment in the source thanking Regexp::Common! 18:44
masak Regexp::Common++ 18:46
masak tadzik: how's le release coming along? 19:17
leont Want to try out rakudo without having to compile stuff, but Ubuntu ships a fairly old version (2011.07) :-/ 19:23
sirrobert What's a good way to comment/ignore a large chunk of code temporarily (large = a few dozen lines)/ 19:24
?
masak leont: the future isn't evenly distributed :/
masak sirrobert: =comment ? 19:24
benabik What's the p6 block comment? I seem to recall something like #`{ }
Ooh, POD comments too. 19:25
sirrobert masak: ahh, cool
benabik: hmmm didn't know about #'{}
thanks
leont Am I correct when I say that 􏿽xABis_prime(any(9,10,11))􏿽xBB should equal 􏿽xABany(is_prime(9), is_prime(10), is_prime(11))􏿽xBB? 19:26
sirrobert butterfly tricks: is there a succinct way to check whether two arrays have the same values, regardless of order?
benabik It's #`{} (Backtick, not apostrophe.) And it appears to let you use any and any number of brackets... Although I'm reading from spec not from implementation. :-D
masak sirrobert: huh, sorry. it's '=begin comment' and then '=end comment', of course. 19:27
sirrobert masak: cool
masak sirrobert: @a.sort >>===<< @b.sort
sirrobert whoa 19:28
benabik You should be able to use =for comment if you want to comment out an entire chunk of code separated by newlines from the rest.
masak leont: yes.
sirrobert: theoretically, @a.Bag === @b.Bag should also work at some point. 19:29
sirrobert where can I read about >>===<< ?
masak sirrobert: doc.perl6.org/language/operators#in...0%3D%3D%3D 19:30
sirrobert great, thanks
masak oh, there's a docbug there.
masak fixes
dalek c: cfcc2b9 | (Carl Mäsak)++ | lib/operators.pod:
[operators.pod] fix copy-paste-o
19:32
sirrobert r: {a => 1, b => 2} >>===<< {a=>1, b=>3} 19:34
p6eval rakudo befe7c: ( no output )
sirrobert r: say {a => 1, b => 2} >>===<< {a=>1, b=>3}
p6eval rakudo befe7c: OUTPUT«("a" => Bool::True, "b" => Bool::False).hash␤»
sirrobert cool
key-by-key
masak nice. 19:35
moritz masak++ 19:37
# doc fix
moritz it just seems that you (or soembody else) pushed an outdated branch again 19:38
masak should contribute much more, but is too distracted all the time :/
tadzik *pat pat* I know the feeling
masak moritz: I edited through the github website.
moritz masak: then it wasn't you :-)
masak gee, I hope not. 19:39
that would be horribly weird. :P
tadzik a clone running wild!
okay, I'm totally unable to build nqp today :(
anyone with a spare tuit to run it today? Sorry for failing
moritz I can do it 19:40
tadzik awesome, thanks moritz++
moritz tadzik: if you want to help, you could start to prepare a release announcement
masak pats tadzik back :)
tadzik okay
moritz that's pretty much independent of the other tasks
masak .oO( we should have separate release announcement managers ) :P
dalek kudo/nom: 2d5ec92 | moritz++ | tools/update-tai-utc.pl:
[tools] automatically assume correct path to src/core/tai-utc.pm
19:42
sirrobert r: 1 ~~ any(3,2) 19:43
p6eval rakudo befe7c: ( no output )
sirrobert r: say 1 ~~ any(3,2)
p6eval rakudo befe7c: OUTPUT«False␤»
sirrobert r: say False ~~ any(True, False);
p6eval rakudo befe7c: OUTPUT«True␤»
sirrobert r: say False ~~ any(True, True);
p6eval rakudo befe7c: OUTPUT«True␤»
sirrobert ack
moritz ~~ True always returns True
so that you can write 19:44
$something ~~ {code}
pmichaud std: sub postfix:{}($a) { say 'whatever' }; # checking
sirrobert ok
moritz and if that code returns True, the match succeeds
p6eval std 235f71b: OUTPUT«===SORRY!===␤Null operator is not allowed at /tmp/ZcZeCltvH7 line 1:␤------> sub postfix:{}⏏($a) { say 'whatever' }; # checking␤ expecting horizontal whitespace␤Parse failed␤FAILED 00:00 40m␤»
pmichaud a-ha
sirrobert how do I find out if anything in a list is false
?
in particular:
r: ({a => 1, b => 2} >>===<< {a=>1, b=>3}).values
p6eval rakudo befe7c: ( no output )
sirrobert r: say ({a => 1, b => 2} >>===<< {a=>1, b=>3}).values
p6eval rakudo befe7c: OUTPUT«True False␤»
moritz nr: say so first *.not, (1, 2, 0, 5) 19:45
p6eval rakudo befe7c, niecza v19-37-g0567c61: OUTPUT«False␤»
moritz erm, wait
nr: say so grep *.not, (1, 2, 0, 5)
p6eval rakudo befe7c, niecza v19-37-g0567c61: OUTPUT«True␤» 19:45
moritz nr: say so grep *.not, (1, 2, 4, 5)
p6eval rakudo befe7c, niecza v19-37-g0567c61: OUTPUT«False␤»
sirrobert I've never used "so" before ...
hmm
moritz boolean context
masak sirrobert: 'so' is like '?'
except it's a listop.
moritz nr: say not all (1, 2, 4, 5)
p6eval rakudo befe7c, niecza v19-37-g0567c61: OUTPUT«False␤»
colomon nr: say grep *.not, (1, 2, 4, 5)
p6eval rakudo befe7c, niecza v19-37-g0567c61: OUTPUT«␤» 19:46
moritz masak: it's actually looser prec than listop
masak: it's loose unary
nr: say none(1, 2, 3, 0)
p6eval rakudo befe7c, niecza v19-37-g0567c61: OUTPUT«none(1, 2, 3, 0)␤»
moritz nr: say so none(1, 2, 3, 0)
p6eval rakudo befe7c, niecza v19-37-g0567c61: OUTPUT«False␤»
moritz nr: say so none(1, 2, 3, 5)
p6eval rakudo befe7c, niecza v19-37-g0567c61: OUTPUT«False␤»
moritz erm, stays with 'not all'
sirrobert I don't see an entry for "so" on doc.perl6.org
pmichaud say ?! any(1, 2, 3, 0)
r: say ?! any(1, 2, 3, 0) 19:47
p6eval rakudo befe7c: OUTPUT«False␤»
moritz sirrobert:
doc.perl6.org/so
tadzik what's tclc?
moritz the anchor link might not work yet
sirrobert huh... I didn't see it in the index
tadzik I seem to have missed something interestin g;)
sirrobert oh
ok
pmichaud r: say ?^ any(1, 2, 3, 0) 19:48
masak tadzik: 'titlecase lowercase'
p6eval rakudo befe7c: OUTPUT«False␤»
tadzik oh
moritz sirrobert: I don't add operators to the index yet
sirrobert ok =)
[Coke] moritz: doc.perl6.org/!!
pmichaud r: say ?^ 0 19:48
p6eval rakudo befe7c: OUTPUT«True␤» 19:48
pmichaud hrm
moritz sirrobert: and doc.perl6.org isn't complete yet, but I do my best :-)
masak tadzik: it's so Unicode-adapted that I don't really understand it. :)
pmichaud I wonder if ?^ should autothread
we don't have any autothreading booleans
moritz why would we want autothreading booleans? 19:49
pmichaud so that I can ask "are any of the elements of this list False" :-)
moritz pmichaud: you can ask that with 'not all'
pmichaud and use a junction to do it
r: say not all(1,2,3,4)
p6eval rakudo befe7c: OUTPUT«False␤»
pmichaud r: say not all(1,2,3,0) 19:50
p6eval rakudo befe7c: OUTPUT«True␤»
sirrobert ok, "so" is what I used to mean by "!!"
pmichaud yeah, okay, mebbo.
*maybe
sirrobert "!!" as a prefix, I mean.
pmichaud still seems like perhaps ?^, ?|, and ?& should perhaps autothread
moritz the only thing we can't easily ask is "is exactly one of those False?" 19:51
because we don't have a negation of the one() junction
pmichaud yeah, autothreading over ?^ would enable that, I think.
sirrobert moritz: huh
moritz pmichaud: but it would break the rule that every boolean context collapses the junction 19:52
tadzik heh, tools/contributors.pl lists "niecza" as one of the contributors :)
moritz tadzik: somebody ++'ed it in a commit message
tadzik ah, so that's how it works :)
moritz that, and the github user names 19:53
pmichaud r: say 0 eqv False 19:54
p6eval rakudo befe7c: OUTPUT«False␤»
pmichaud oh well.
dalek p: 656abc9 | moritz++ | VERSION:
bump VERSION to 2012.08
kudo/nom: fc01818 | tadzik++ | docs/announce/2012.08:
Add a first sketch of a new release guide
19:56
pmichaud ...a new release guide?
moritz announcement, not guide 19:57
tadzik oh well, it's hot here :)
announcement of course
pmichaud yeah, I was wondering if "announcement" was what was meant. :)
tadzik++ moritz++
...did I remember to push my changes for the nqp release guide, ooc?
moritz you did, yes
pmichaud okay, good.
moritz the nqp tarball is already on github
the test for it is still running on my machine, but I don't expect any fallout from it 19:58
pmichaud I worked on that earlier today but was also involved in other conversations at the time
tadzik looking through the new anno... relea... announcement will be gladly welcome :)
pmichaud looks
any issues with the nqp release guide, ooc?
moritz it requires a reconfigure before it works :-)
(my Makefile was too old) 19:59
pmichaud that's because I added the "make release" target. :)
moritz I know
pmichaud nooooooooo! 19:59
pmichaud reads the announcement
dalek kudo/nom: d2472a9 | moritz++ | tools/build/NQP_REVISION:
bump NQP revision to 2012.08
moritz pmichaud: what's wrong? 20:00
pmichaud what an absolutely delicious irony/coincidence it is that after the Frankfurt YAPC had "Perl 5" on the t-shirts, the Frankfurt release ends up being #55 :-P
moritz :-)
pmichaud looks like we just can't get a "6" here at all no matter what happens. 20:01
moritz pmichaud: should we name it Perl instead?
after the town of Perl (Mosel)
pmichaud I doubt there's a Perl.pm group. But perhaps we should start one :-P
moritz we autovivified one :-)
pmichaud I think Frankfurt is appropriate for this month's release. 20:02
#56 can be Perl.pm if we want to do that. Or #65 :-P
moritz should deprecation notices only go into the star announcements, or also into the compiler release announcements? 20:02
heh :-)
pmichaud I'd like them to go in both places, if it's not too much trouble. 20:03
moritz it's just a copy&paste from docs/deprecations
pmichaud then both.
pmichaud Announcement says "June 2012" for some reason. 20:03
moritz and "July" :-) 20:04
I'll fix both
along with the deprecations
pmichaud I'm planning to do this month's star release on sun or mon 20:05
moritz ++pmichaud
dalek kudo/nom: eb13935 | moritz++ | docs/announce/2012.08:
[announce] fix month, add deprecations from docs/deprecations
pmichaud it might be tue depending on what is happening at mtmh
I already have a long list of tasks from prs and yapceu; I'm hoping I can whittle some of them down during mtmh. 20:06
moritz experience tells that tasks lists only grow at such conferences :-)
pmichaud indeed... but we do also manage to accomplish some stuff in the process. :) 20:07
like a debugger
and p5-regexes
and new nqp release notes
moritz everybody happy with rakudo's announcement now?
aye
pmichaud git pull's
"europe" needs a tc. 20:08
moritz which is just a single bit flip in this case :-) 20:08
dalek kudo/nom: cf22052 | moritz++ | VERSION:
[release] bump VERSION
kudo/nom: 6d97606 | moritz++ | docs/announce/2012.08:
[announce] spelling, pmichaud++
sirrobert ok, one more... can I AND a bunch bools stored in a list? like (False, True, True).&& 20:09
tadzik eb13935 seems to show that we also forgot s/June/July last month :)
sirrobert AND/OR/ whatever
masak moritz: isn't it always a single bit flip when upper-casing ASCII?
moritz masak: it is
pmichaud ...Larry Wall contributed to this release? I mean, more so than he usually does, as in a commit or something?
PerlJam YAPC::EU is the only yearly gathering of Perl hackers in Europe?
moritz pmichaud: he proposed the format change for Match.gist on IRC 20:10
pmichaud: and we generally count stuff like that as contributions
pmichaud moritz: works for me
moritz (ie when soembody was ++'ed in a commit message9
PerlJam: technically it's the only one advertized as international 20:11
pmichaud I wonder if the announcement should say that the release is code named after Frankfurt.pm, the group that hosted the ...
leont PerlJam: it's surely the biggest. German Perl Workshop and London Perl Workshop are also fairly big though
pmichaud instead of "after the city"
moritz pmichaud: that would be the usual wording, yes
pmichaud: feel free to change
EEKS 20:12
make: nqp: Command not found
now I've got that too :(
moritz seems to be in the new step that jnthn added today 20:13
dalek kudo/nom: 09c46a6 | pmichaud++ | docs/announce/2012.08:
More announcement updates; Frankfurt am Mein -> Frankfurt.pm .
20:14
sirrobert moritz: [&&] (True, True, False, True)
shows if just one is false
pmichaud not all of the people attending yapceu are (or consider themselves) Perl hackers
sirrobert well, 1+
moritz dammit, I have to update the nqp release and tag 20:15
pmichaud say so one (3, 4, 0, 1).>>not
r: say so one (3, 4, 0, 1).>>not
p6eval rakudo befe7c: OUTPUT«===SORRY!===␤Confused␤at /tmp/OkSD4MM5ms:1␤»
pmichaud r: say so one (3, 4, 0, 1)>>.not
p6eval rakudo befe7c: OUTPUT«True␤»
pmichaud r: say so one (3, 4, 0, 0)>>.not
p6eval rakudo befe7c: OUTPUT«False␤»
pmichaud r: say so one (3, 4, 1, 1)>>.not 20:16
p6eval rakudo befe7c: OUTPUT«False␤»
pmichaud we have a winner :-)
sirrobert ahh, cooool
moritz that's cheating!
sirrobert what is >> ?
moritz postfix hyper
call the method on each element
sirrobert ohhhhh super cool
pmichaud r: say so one !<<(3, 4, 1, 1) 20:17
p6eval rakudo befe7c: OUTPUT«False␤»
sirrobert ohh >>===<< is doing that on the infix ===
pmichaud r: say so one !<<(3, 4, 0, 1)
p6eval rakudo befe7c: OUTPUT«True␤»
sirrobert infix hyper
pmichaud Is that "less cheating"?
sirrobert (cheatery)
moritz nah, it still modifies the list before making a junction
sirrobert =)
pmichaud why is that cheating? ;-) 20:18
moritz pmichaud: the right answer is "CHEATING IS TECHNIQUE!" :-)
pmichaud I think it's "cheating" only because I posted it first :-P
pmichaud continues reviewing announcement 20:19
moritz nqp tag 2012.08 deleted 20:20
dalek kudo/nom: 0ab48ba | pmichaud++ | docs/announce/2012.08:
Another update to the yapceu/release name section.
moritz the problem is that $(NQP_EXE) doesn't have the leading ./ on linux 20:21
that's no problem on windows where jnthn++ tested it, because . is in %PATH%
but on linux it invokes whatever nqp binary is in path, if any
pmichaud moritz: is this in nqp or rakudo?
moritz pmichaud: nqp 20:22
pmichaud checking.
moritz the fix I'm currently trying is to build the p5regex thingy with stage0 rather than nqp
because I can copy&paste the commands inside Makefile.in
instead of doing something OS-specific, which will surely break on other OSses
pmichaud seems to me that p5regex ought to build the same as p6regex 20:25
moritz pmichaud: it doesn't need all the bootstrappy bits
pmichaud building with stage0 is almost certainly wrong, though.
dalek p: c7bed44 | moritz++ | tools/build/Makefile.in:
unbreak the build on non-windows
moritz pmichaud: uhm, why?
pmichaud it'll have the wrong serialization context 20:26
moritz oh crap
so, it needs to build with stage 1?
pmichaud should be built with stage2
looking
it should be built with the nqp that is being installed, same as almost anything else
moritz pmichaud: then I'll leave it to you to fix the Makefile.in 20:27
pmichaud I *did* warn jnthn++ about committing any changes that would break the build for today's Star release. :-| 20:28
moritz s/Star/Rakudo/
pmichaud yes, *Rakudo release
moritz but still
pmichaud jnthn-- # no karma for you!
pmichaud looks at Makefile 20:29
tadzik oh, so that's why it didn't work for me :)
moritz tadzik: and I know why it didn't break for me
tadzik: because I ran 'make test', and not 'make
'
tadzik: and 'make test' doesn't build the P5regex stuff
tadzik huh, odd
aa, there we go 20:30
pmichaud did we need p5regex tests 20:30
pmichaud s/did// 20:30
moritz so the simplest "fix" is not to build the p5regex thing at all
since we don't use it in current rakudo
pmichaud: we have them, they just aren't run as part of 'make test' yet
pmichaud I'm fine with not building p5regex at all for the release.
you're correct that we aren't using it yet. 20:31
dalek p: c9db812 | moritz++ | tools/build/Makefile.in:
Revert "unbreak the build on non-windows"

This reverts commit c7bed445880938ea914ce0b4e964e3c66261a1f9. It was wrong because building p5regex with stage0 involves the wrong serialization context.
20:32
p: fff3eb8 | moritz++ | tools/build/Makefile.in:
stop building the p5 regex bits

rakudo does not use them yet, and that step breaks the build on non-windows we will figure out a proper fix after the rakudo release.
pmichaud moritz++ 20:33
moritz waits for the NQP build to finish
masak is reminded of how much he enjoys running non-windows 20:36
tadzik :> 20:37
*cough*panda*cough*
moritz nqp 2012.08 re-uploaded and re-tagged
moritz.faui2k3.org/tmp/rakudo-2012.08.tar.gz # that'll be the release unless we discover more problems with it 20:38
moritz building it now 20:39
on the fastest of my machines
'cause, you know, I want to go to bed soon :-)
pmichaud yeah, bed seems like a good idea to me also. 20:48
masak aye. 20:53
sirrobert is there a table of special vars like "name of the current file" ? 21:06
tadzik doc.perl6.org/language/variables may suit you 21:07
PerlJam sirrobert: there's also S28
sirrobert thanks, both
moritz I think I blatantly copied S28 for the doc.perl6.org page :-) 21:14
masak blatancy++ 21:16
dalek kudo/nom: 9429d1c | moritz++ | docs/release_guide.pod:
update release guide with current release
21:18
moritz release cut, feel free to break NQP and nom again :-)
masak moritz++
tadzik moritz++ # release saver
moritz tadzik++ # release starter 21:19
tadzik :)
masak tadzik++ moritz++ # release 21:22
moritz did anybody receive the announcement on perl6-compiler? 21:25
moritz my MUA briefly showed me an unread email, and then it vanished 21:25
tadzik moritz: I did
moritz \o/
tadzik guess it's time for an obligatory memeface
moritz tarball uploaded, tags pushed, mail sent, wiki page updated. Time for me to sleep 21:26
tadzik ragefac.es/40 :)
moritz not quite :-) 21:27
ah, mail recieved too 21:28
really sleep&
masak 'night, moritz. dream of faces entirely without rage. 21:29
PerlJam even better would be happy, smiling faces 21:30
tadzik fun fact: rakudo built faster for me on windows than it does on linux 21:31
140 vs 150 seconds on parse stage
tadzik masak: oh noes 21:33
tadzik we forgot to do a Little Animal Farm Lightning Talk :( 21:33
masak tadzik: I didn't so much forget it as deprioritize it. 21:42
tadzik: maybe people will forgive us for doing it next YAPC::Europe ;)
(and then we have plenty of time to develop actual strategies, too)
cosimo snarkyboojum: ping, did you see moritz's pull request on MIME::Base64? 21:46
phenny cosimo: 22 Aug 15:19Z <[Coke]> tell cosimo that I'm blocking on Issue #15 for LWP::Simple.
cosimo [Coke]: I'm just looking at it now 21:47
ronaldxs is not in here? 21:48
guys, how do I regenerate a Makefile to build a p6 module nowadays? :-) 21:49
(sorry for the lame question, but it changes so many times...)
timotimo i think "ufo"?
cosimo still ufo then?
good
timotimo or was that absorbed into panda?
cosimo what about neutro? 21:50
I believe neutro came after panda
you see? :)
masak neutro came after proto but before panda. 21:51
'ufo' is for developers to generate Makefiles. 'panda' is for module users to generate Makefiles.
cosimo why are there two different Makefiles? 21:52
masak you mean, why is there one on the developer's computer and one on the module user's computer? 21:54
cosimo masak: why two different tools 21:57
masak I dunno. when I wrote 'ufo', 'panda' didn't exist. I needed something to auto-generate Makefiles for my projects. they were never meant to be committed to a git repo or installed or anything. 21:58
I just wanted to solve the problem of module build order, nothing more.
[Coke] wonders how he got his name on this month's release.
ah, testythings. 21:59
tadzik aw. Net::IRC::Bot on MuEvent seems to be too slow to empty the socket buffer on time
or that's my explanation at least :) 22:00
[Coke] tadzik++ for hacking on that!
tadzik ohhhh, works
cosimo [Coke]: not sure what I can do to unblock you, but this branch github.com/cosimo/perl6-lwp-simple...xs-rewrite looks like the next master
seriously? already midnight? :-| 22:01
tadzik aw, I can't poll() on stdin :( 22:02
tadzik huh, that's funny 22:05
r: my $a = $*IN but IO::Socket; $a.poll(1, 0.01)
p6eval rakudo befe7c: OUTPUT«Could not find symbol '&Socket'␤ in method <anon> at src/gen/CORE.setting:9761␤ in <anon> at src/gen/Metamodel.pm:2304␤ in any find_method_fallback at src/gen/Metamodel.pm:2302␤ in any find_method at src/gen/Metamodel.pm:843␤ in <anon> at src/gen/BOOTSTRAP.pm:…
tadzik damnit, safe mode
cosimo anyone successfully used sqlite with rakudo?
tadzik yes
I wrote a blog-ish engine using it
cosimo ok, pointers? 22:06
tadzik cosimo: github.com/tadzik/zblog/blob/maste...%BAblog.pl
cosimo tadzik: cool, thanks 22:07
now I need to only port ORlite to Perl 6 :)
tadzik \o/
cosimo no, actually Net::OpenSSH too
tadzik ah, here we go tricky 22:08
cosimo ORlite is quite magic too, but yeah, with OpenSSH all bets are off :)
colomon How hard can Net::OpenSSH be to port? 22:09
tadzik I wanted to write Net::Twitter-ish thing some time ago
turned out that I have to also write Net::Oauth, and then I could't write Crypto::SHA1 :P
maybe should've tried pure-perl
this way I could maybe learn how SHA1 works
colomon tadzik++ 22:10
masak 'night, #perl6 22:17
tadzik good knight masak 22:18
tadzik damn you, $*IN 22:24
r: $*IN.WHAT.say
p6eval rakudo befe7c: OUTPUT«IO()␤»
tadzik and what does .poll() say? Method 'poll' not found for invocant of class 'FileHandle' 22:25
ragefac.es/403
isn't FIleHandle even a Parrot object? :F
tadzik ok, it's just me breaking things :) 22:26
jeffreykegler How would I contribute suggested changes to S05? Github pull requests? 22:34
I am talking about clarifying passages, etc. Nothing major.
tadzik pull requests are fine, I think 22:35
jeffreykegler tadzik: which repository? 22:40
tadzik jeffreykegler: perl6/specs
jeffreykegler tadzik: Thanks!!!
jnthn got home safely from YAPC :) 22:42
tadzik hehe, portscanning causes .recv to throw an exception :) 22:47
That probably kills HTTP::Easy and thus Bailador as well...
tadzik yes :) 22:48
leont poll is not all that portable (in particular not to Windows). Anything really scalable is even less portable :-| 22:50
tadzik that doesn't matter, our poll() sucks horribly anyway :) 22:52
Parrot only gives as .poll() on one socket at a time
which forces MuEvent to be... suboptimal
leont Ouch 22:54
tadzik yes
github.com/tadzik/MuEvent/blob/mas...ent.pm#L65 :) 22:55
tadzik oh my gosh. Net::IRC::Bot.new returns an Array :F 23:01
tadzik or not. I'm being slowthinking again 23:04
tadzik spams the channel with his BS, apparently
diakopter botspeak? 23:05
tadzik exactly
tadzikbot hello, I'm speaking through tadzik's keyboard 23:08
tadzik :ping
tadzikbot tadzik: pong
see? I don't block on either .recv() on freenode and neither on tadzik's keyboard import 23:09
tell me I'm a smart bot
leont You can use nativecall to get around the poll issue, I guess. Parrot's handing of anything related to events just keeps being disappointing, given that event handling was one of the things it was supposed to be good at
jnthn tadzikbot: You'd be smarter if you could spell input correctly :P
tadzikbot hey, it's late, even if that's not that hot already 23:10
diakopter :ping
tadzikbot diakopter: pong
diakopter :ping
tadzikbot diakopter: pong
diakopter :ping
tadzikbot diakopter: pong
tadzik so, it has come to this. Net::IRC::Bot on MuEvent :)
diakopter :pingg 23:11
:ping
: ping
:pin g 23:12
tadzikbot diakopter: haha, keep trying to trick me :)
diakopter :
ping
tadzikbot part of my AI includes a line: "return unless $ev.what.chomp eq ':ping';"
tadzik :exit 23:13
tadzik ok, I 23:13
tadzik 'll commit this pile of code and get some sleep now :) 23:13
tadzik stuff pushed to github.com/tadzik/Net--IRC for anyone's amusement 23:20
diakopter bwahaha. 23:20