»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
augustus i mean when writing the slangs, you must do it in NQP? 00:00
sorear oo, jsp
lizmat r: my $a=1; say $a; $a=Nil; say $a # should say 1 (Any)
camelia rakudo 516d49: OUTPUT«1␤Nil␤»
FROGGS augustus: I only know that one can do it in nqp, I'm not sure if it is possible or not in rakudo/Perl 6 00:01
lizmat I've fixed src/vm/parrot/guts/container.c to always check for Nil and put the default value instead if Nil was the value to be assigned
A number of spectests fail because of this specced behaviour 00:02
I've listed them at gist.github.com/lizmat/5941715
augustus froggs: I see. I'm not clear on how much it matters. I expect that 95% of the work is just translating the grammars, the actual actions are probably quite simple.
lizmat along with the diff
I will look at the failing tests more deeply tomorrow 00:03
of course, if anybody wants to beat me to it, feel free!
labster I'll try to fix the io tests at the end of that list 00:06
augustus froggs: also, I understand it should be theoretically possible to load an XML schema, have it generate a new grammar, which can then be used, all at compile time, right? 00:07
colomon test finished.
18 mins on the MBP (for JVM spectest) 00:08
FROGGS augustus: should be possible, yes
colomon Is that really 900+ more passing tests than this morning?!?
augustus froggs: is there any documentation about grammars that would help me understand how to dynamically build one, or is that something I kinda have to trial-and-error? 00:09
00:10 BenGoldberg joined
FROGGS augustus: are you familiar with Perl 6 grammars in general? 00:10
augustus froggs: i have read through the synposises (sp?) I guess, but I have not done a serious one yet 00:11
froggs: so generally yes, but not in a detailed way
FROGGS augustus: this is a good start: www.youtube.com/watch?v=oo-gA9Z9SaA 00:12
but I'm not sure what the best way is to build a grammar by a given schema
augustus froggs: ok cool, I will check it out. As a general thing, are the synpsosises still current? i'm having trouble telling what documentation has been superceded
lizmat TimToady: I got a working rakudo that always sets the default on a container when Nil is assigned to it
FROGGS augustus: the synopsis are usually up-to-date, yes... but you cant be sure that everything is implemented what you read there 00:13
lizmat as a side effect, this makes $/ to be (Any), and causes things such as $/.chars to fail, as Any does not have a .chars
e.g. perl6 -e "'abcdefghij'.trans(/<[aeiou]> \w/ => '')" 00:14
No such method 'chars' for invocant of type 'Any'
in method increment_index at src/gen/CORE.setting:5140
in method increment_index at src/gen/CORE.setting:5137
in method next_substitution at src/gen/CORE.setting:5160
in method trans at src/gen/CORE.setting:5202
the code that fails is " $!index = $!next_match + $/.chars;"
augustus froggs: is there any better place for documentation?
lizmat TimToady: I guess this indicates a more general problem with Nil. Perhaps this can be solved by making $/ to be an Iterator by default, just like Nil now is? 00:15
FROGGS augustus: doc.perl6.org/ and the test suite here: github.com/perl6/roast 00:16
lizmat calling it a day now, gnight #perl6! 00:17
colomon \o
FROGGS gnight lizmat
augustus froggs: ohh excellent thank you.
FROGGS augustus: you're welcome
00:17 woolfy1 joined
augustus on a completely unrelated note, I assume that junctions should work with smart-matching right? I was having problems with type checking like Int ~~ [&] @list to verify that everything in a list is an Int etc. The junctions just refused to work with ~~ in any way; but this was Rakudo* from like May 30th. 00:19
00:20 woolfy left
colomon augustus: I don't think you can type check like that. 00:22
all(@list) ~~ Int ought to work, I think
rn: my @list = 1..10; say all(@list) ~~ Int
camelia rakudo 516d49, niecza v24-86-g39ab531: OUTPUT«False␤»
colomon rn: my @list = 1,10; say all(@list) ~~ Int
camelia rakudo 516d49, niecza v24-86-g39ab531: OUTPUT«False␤»
colomon or not
rn: my @list = 1,10; say so all(@list) ~~ Int 00:23
augustus colomon: I think it should work in general
camelia rakudo 516d49, niecza v24-86-g39ab531: OUTPUT«False␤»
lue r: my @a = 1,2,3; my @b = 5,6,7.89; say ?(@a »~~» Int).all; say ?(@b »~~» Int).all;
camelia rakudo 516d49: OUTPUT«True␤False␤»
lue you can also type ? [&] (@a »~~» Int) if you prefer the look of [&] :)
colomon admittedly, my approach of choice would probably be !@list.grep(not Int) (not sure if that is exactly right) 00:24
augustus lue: ok I get hyper-operating the smart match
colomon rn: my @list = 1,10; say so !@list.grep(not Int)
camelia rakudo 516d49, niecza v24-86-g39ab531: OUTPUT«False␤»
colomon rn: my @list = 1,10; say so @list.grep(Int)
camelia rakudo 516d49, niecza v24-86-g39ab531: OUTPUT«True␤»
colomon rn: my @list = 1,10; say @list.grep(Int) 00:25
camelia rakudo 516d49, niecza v24-86-g39ab531: OUTPUT«1 10␤»
colomon rn: my @list = 1,10; say @list.grep(not Int)
camelia rakudo 516d49, niecza v24-86-g39ab531: OUTPUT«1 10␤»
lue (fwiw, I'm kinda surprised (1&2&3) ~~ Int doesn't dwim.)
augustus sorry, I should clarify a little, I'm not looking for a work around, I'm just trying to understand if there's a reason smart matching wouldn't work with junctions, or whether it's a bug (I assume it's a bug)
colomon Actually, I think it might be right 00:26
augustus it's not just type-checking, but any smart matching
but there's no other way to type check than to smart match
colomon I have a very impression that junctions only work on the right hand side of smart matches
s/very/vague/
lue Even if it worked, the smartmatch would return (True, True, True), which you have to turn into an all junction and test for validity anyway.
( which is what I do in the end with ? [&] (stuff) ) 00:27
augustus hmm, wait, why would it be different between == and ~~ ?
I would expect them to behave in an analagous fashion
colomon == is symetrical, ~~ definitely is not 00:28
augustus meaning $a ~~ $b does not imply $b ~~ $a?
00:29 raiph left
colomon absolutely! 00:29
(I mean, absolutely it is not the same)
rn: say 1 ~~ 1..10; say 1..10 ~~ 1
camelia rakudo 516d49, niecza v24-86-g39ab531: OUTPUT«True␤False␤»
augustus well it's not immediately clear why that would be, but ok
colomon because the right hand side is what you are matching 00:30
augustus I would expect symmetry whenever the types of $a and $b are different
colomon no, the right hand side determines how the matching is done. 00:31
augustus but I could understand different behavior when $a and $b have the same type
colomon every class gets to decide / define how it smart matches.
lue I heard about a time when ~~ was symmetrical, and that didn't go too well.
00:31 raiph joined
colomon so for instance, "abc" ~~ /a/ means match the regex against "abc" 00:32
augustus I'm curious then how /a/ ~~ "abc" wouldn't mean the same thing 00:33
sorear /a/ ~~ "abc" stringifies the regex and tests it using * eq "abc"
colomon wrote a line that said that, but it disappeared
sorear smart matching is determined by the type of the right side. regexes execute, strings do eq, numbers do ==
colomon ranges check to see if the left hand side is in the range... 00:34
sorear r: say "22.0" ~~ 22; say 22 ~~ "22.0"; # when 22 is in the right we do a numeric equality check, when "22.0" is on the right we do a string check
camelia rakudo 516d49: OUTPUT«True␤False␤»
augustus hmm, good to know. Seems like a different symbol should have been chosen then to indicate the directionality, and there should be another one that is symmetrical, but that's a discussion for another day I guess 00:36
colomon how would a symmetrical one possibly work? 00:37
sorear A ~~ B is approximately sugar for B.ACCEPTS(A)
(except that ~~ is a topicalizer)
colomon: Badl?
augustus I would expect that the smart match was defined for pairs of types 00:39
colomon augustus: think of how given / when would work with that. 00:40
so "when 1" would be == if we were given another Int
but we were given a type, it's suddenly type matching? 00:41
augustus um, if you say given Int when 1 I would expect it to match
colomon and if you add a new class, you have to define how it matches with every other type? 00:42
augustus well that's pretty much the case already right?
colomon not at all
rn: class MyNewClass { method Str() { "shiny"; }; }; say MyNewClass.new() ~~ "shiny"; 00:44
camelia rakudo 516d49, niecza v24-86-g39ab531: OUTPUT«True␤»
colomon rn: class MyNewClass { method Str() { "shiny"; }; }; say MyNewClass.new() ~~ 10;
camelia rakudo 516d49: OUTPUT«Cannot call 'Numeric'; none of these signatures match:␤:(Mu:U \v: Mu *%_)␤ in method Numeric at src/gen/CORE.setting:884␤ in sub infix:<==> at src/gen/CORE.setting:3315␤ in sub infix:<==> at src/gen/CORE.setting:3313␤ in method ACCEPTS at src/gen/CORE.setting:3…
..niecza v24-86-g39ab531: OUTPUT«Unhandled exception: Cannot use value like MyNewClass as a number␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niecza/lib/CORE.setting line 296 (Any.Numeric @ 6) ␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niecza/lib/CORE.sett…
augustus colomon: if you want to implicitly cast your new class to a String and smart match from there, that's fine, but you've still effectively defined a match with every other type. You just delegated to Str 00:45
colomon smart matching with a string RHS ALWAYS calls eq, which will call .Str under normal conditions 00:46
As you can see above, when I smartmatched with an Int, it didn't work at all, because there is no way to cast my new class to a number 00:47
and the reverse is not defined, either...
rn: class MyNewClass { method Str() { "shiny"; }; }; say "shiny" ~~ MyNewClass.new(); 00:48
camelia rakudo 516d49, niecza v24-86-g39ab531: OUTPUT«False␤»
colomon ah, Any.ACCEPTS calls ===, and that's what MyNewClass gets 00:49
augustus I assume that if you defined method Int then it would work
colomon yes
errr, actually not? 00:50
rn: class MyNewClass { method Int() { 42; }; }; say MyNewClass.new() ~~ 42; 00:51
camelia rakudo 516d49: OUTPUT«Cannot call 'Numeric'; none of these signatures match:␤:(Mu:U \v: Mu *%_)␤ in method Numeric at src/gen/CORE.setting:884␤ in sub infix:<==> at src/gen/CORE.setting:3315␤ in sub infix:<==> at src/gen/CORE.setting:3313␤ in method ACCEPTS at src/gen/CORE.setting:3…
..niecza v24-86-g39ab531: OUTPUT«Unhandled exception: Cannot use value like MyNewClass as a number␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niecza/lib/CORE.setting line 296 (Any.Numeric @ 6) ␤ at <unknown> line 0 (ExitRunloop @ 0) ␤ at /home/p6eval/niecza/lib/CORE.sett…
colomon rn: class MyNewClass { method Numeric() { 42; }; }; say MyNewClass.new() ~~ 42;
camelia rakudo 516d49, niecza v24-86-g39ab531: OUTPUT«True␤»
augustus colomon: thank you for the interesting discussion, but I have to go. hopefully I will see you around again later.
colomon o/
have a good weekend! 00:52
augustus :)
00:52 augustus left
colomon hmmm, I'm still getting sprintf aborting tests? 00:58
01:00 FROGGS_ joined
dalek p: 80e2674 | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/JavaCallinException.java:
Add missed file for interop
01:00
p: 661dd1f | sorear++ | / (2 files):
Start to document interop stuff
sorear I see a couple paths forward at this point: 01:01
1. add as much nice sugar as possible to BootJavaInterop, and let everyone use that. (That isn't much, since BootJavaInterop is necessarily HLL-agnostic and can't use native Perl 6 or NQP types). 01:02
2. add a nice sugary NQPJavaInterop which uses NQP arrays and hashes. Let Perl 6 use that.
3. Go all the way to RakudoJavaInterop, and leave NQP alone.
4. Some combination of the above
01:03 FROGGS left
colomon is there a way to make the other NQP backends interop with Java? 01:04
sorear you mean Parrot? 01:05
colomon or MoarVM 01:06
Just pondering your options 01:07
thinking about leaving NQP alone.
sorear colomon: I think *waves hands vigorously* that interfacing with a JVM from outside is going to look very different from interfacing with one from inside 01:17
colomon makes sense 01:18
have you given any thought to calling into jakudo from the JVM? :) 01:19
sorear we have general callins already
colomon oh, sweet.
sorear although they currently have to be set up by jnqp code
colomon I'm looking forward to the day I can make a Processing app call into my perl6 code. :) 01:21
sorear although it would only be about 10-20 lines of code to do the equivalent of a nqp::loadbytecode, nqp::gethllglobal and then get references to perl 6 functions that way 01:22
which could then be passed to invokeDirect 01:23
colomon sweet! 01:24
02:00 FROGGS__ joined 02:04 FROGGS_ left 02:06 kingbeast left
[Coke] r: say 25364 / 26160 02:07
camelia rakudo 516d49: OUTPUT«0.969572␤»
[Coke] masak++ FROGGS++ jnthn++ sorear++ 02:08
colomon amen
[Coke] r: say 25364 *.97-26160
camelia rakudo 516d49: OUTPUT«-1556.92␤»
[Coke] r: say 26160*.97-25364 #oops 02:09
camelia rakudo 516d49: OUTPUT«11.2␤»
colomon 11 tests to hit 97%? 02:10
[Coke] Yes.
colomon damn that's tempting... 02:13
[Coke] gist.github.com/coke/5879701 - redid the test abort list. 2 new sprintf errors near the bottom 02:17
02:18 PacoAir left
colomon [Coke]: yes, I've been looking at the 5.2g error this evening. 02:18
[Coke] that's 61 tests. 02:19
colomon yeah, I'm not solving it, though. :\ 02:21
my NQP skills are still pretty weak 02:22
and I need to go to bed soon 02:28
Hmph. May have just done it, but my solution is gratuitously stupid. :\ 02:31
02:36 BenGoldberg left 02:37 SamuraiJack joined 02:39 xilo_ left 02:40 xilo_ joined 02:41 xilo_ left 02:42 xilo joined
colomon rn: printf("%e", 10**99) 02:44
camelia niecza v24-86-g39ab531: OUTPUT«1.000000e+099»
..rakudo 516d49: OUTPUT«1.000000e+99»
colomon rn: printf("%e", 10**999)
camelia niecza v24-86-g39ab531: OUTPUT«Infinity»
..rakudo 516d49: OUTPUT«Inf»
colomon hmmm
rn: say log(10**99) 02:45
camelia niecza v24-86-g39ab531: OUTPUT«227.95592420641051␤»
..rakudo 516d49: OUTPUT«227.955924206411␤»
colomon rn: say log(10**99) / log(10)
camelia niecza v24-86-g39ab531: OUTPUT«98.999999999999986␤»
..rakudo 516d49: OUTPUT«99␤»
colomon bedtime
02:47 SamuraiJack left 02:58 colomon left 03:05 preflex left 03:06 preflex joined, ChanServ sets mode: +v preflex 03:27 snoopy left 03:31 Radvendii joined 03:50 benabik left
raiph .tell augustus example of grammar dynamically building grammar: rosettacode.org/wiki/Parse_EBNF#Perl_6 04:01
yoleaux raiph: I'll pass your message to augustus.
04:11 thou left 04:32 ivan``_ is now known as ivan`` 04:33 SamuraiJack joined 04:41 Radvendii left 04:52 _jaldhar joined, jaldhar left 05:09 SamuraiJack left 05:11 araujo left 05:12 SamuraiJack joined 05:18 popl joined, popl left
dalek kudo/nom: 2b3dbfb | sorear++ | src/vm/jvm/ (5 files):
s:g/Ops/RakOps/
05:18
sorear something jnthn and I talked about a couple weeks ago but never actually happened... cuts down on unsightly org.perl6.nqp.runtime.Ops qualification, and stops jdb from getting confused when it sees two Ops.java files 05:19
05:29 SamuraiJack left
JimmyZ \o/ 05:32
Good evening, sorear
sorear hi, JimmyZ 05:40
JimmyZ hello :D 05:41
05:50 kaare__ joined 05:51 kaare__ is now known as kaare_ 05:53 amodell joined 05:54 raiph left 06:06 ztt joined 06:07 amodell left 06:10 _jaldhar left 06:12 dwoldrich joined 06:21 kaare__ joined 06:24 kaare_ left 06:34 pochi_ joined 06:35 nebuchad` joined 06:36 scottp joined, kaare_ joined 06:38 robins joined, moritz_ joined 06:39 pjcj_ joined 06:43 kaare__ left, FROGGS__ left, woolfy1 left 06:46 domidumont joined
dalek p: 85187bc | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/BootJavaInterop.java:
For 6model method usability, have adapter functions always take an invocant, even if ignored
06:48
06:48 konundra left
dalek p: d0fcc5e | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
Remove a pointless and warning cast
06:51
06:52 FROGGS__ joined, woolfy joined 06:53 takesako______ joined 06:56 xiaoyafeng joined 07:01 xiaoyafeng left 07:02 domidumont left 07:03 domidumont joined 07:06 ztt left
dalek p: e1a2ed0 | sorear++ | / (2 files):
Systematize interop sub names and add short forms
07:08
07:10 daniel-s joined 07:17 SamuraiJack joined
dalek p: 2e10baf | sorear++ | / (2 files):
Do a little bit of the dynamic type gen for BootJavaInterop
07:28
07:28 iSlug joined, FROGGS__ is now known as FROGGS
FROGGS morning 07:29
morning sorear :o)
moritz_ good morning 07:30
FROGGS hi moritz_
07:30 moritz_ is now known as moritz
sorear morning FROGGS. 07:30
moritz should name himself a bit more civilized again
sorear ??? 07:31
FROGGS s/_$//
sorear: we are near the point where we fudge things for rakudo-jvm? 07:32
it is sort of hard to track regressions...
I record now my spectest output, run two other spectests (with another sprint-patches, one unmodified), and will read then the diff of the test runs 07:33
sorear FROGGS: the fudger handles the syntax #?rakudo.jvm skip, #?rakudo.parrot skip 07:34
I added that the day we started running spectests
FROGGS maybe I'll add an devtest target to highlight regressions...
sorear if you think fudging is a good idea, go for it
FROGGS yeah, but we dont actually use it right now, so you get a ton of fails, and you dont know if it was your fault 07:35
sorear better todo than skip, since then we know when we've fixed it
we're over 95%, so many fewer fails than when we were 50%ish :)
FROGGS no, I just wanna see what I have broken by an unstaged patch
sorear: I basically want that when running the tests: usev5.files.wordpress.com/2013/07/hack.png 07:36
so you can abort the test run after five minutes if there are some regressions already 07:37
sorear well this is a new one: gist.github.com/sorear/3a0ce2b9d857150b2008 07:43
07:48 dwoldrich left
dalek p: 3a6ec82 | sorear++ | / (4 files):
Streamline use of interop object a bit
07:48
sorear I think I have that roughly as sugary as the BOOT version has any right to be 07:49
(see doc patch in last commit)
there will be a P6JavaInterop subclass that handles stuff like container marshalling, lvalue fields, and overloading 07:50
JimmyZ sorear++, it's nice
07:54 nebuchad` is now known as nebuchadnezzar
sorear oh, and transparent callback marshalling. can't forget that 07:55
sorear thinks we can do $p6interop.type('java.lang.Thread').new( { say "hello, world" }, "HelloThread" ).start() 07:56
you won't be able to do that with the BOOT version because 1. no transparent callback marshalling 2. no multiple dispatch on the new 07:57
FROGGS moritz: I know you are a math-pro, do you think you could get the basics done for sprintf "%e" ? playground would be here: gist.github.com/FROGGS/7a14e5d8843...tf-pl-L222 07:59
sorear www.ampl.com/REFS/rounding.pdf 08:01
FROGGS sorear: is it a problem that I cant read the formulas on page two? R-[ 08:02
but I'll read through it 08:03
sorear FROGGS: technical issues or lack-of-background issues? 08:06
FROGGS ahh, that explains not_gerd's commit comment
sorear: the latter
08:06 mikemol left 08:24 araujo joined, araujo left, araujo joined 08:47 colomon joined
masak good morning, #perl6 08:49
dalek p: 2f317f6 | sorear++ | src/vm/jvm/runtime/org/perl6/nqp/sixmodel/SixModelObject.java:
Move misplaced exists_pos out of the Associative section
08:50
p: 94b4100 | sorear++ | / (2 files):
Add "proxy", a lightweight way to turn coderefs into Java interfaces
sorear o/ masak, colomon 08:51
colomon \o 08:52
masak I'm relieved to see that sprintf in Rakudo survived the night ;) 08:57
FROGGS hi masak, hi colomon
masak: I have a patch here that handles sprintfing floats < 1, but I need to track at least one regression down before I can commit 08:58
(if you wonder why stagestats prints 0 instead of 0.000)
09:01 robins is now known as robinsmidsrod
dalek ecs: 8854a63 | masak++ | S99-glossary.pod:
[S99] add "HPMoR" entry
09:03
masak FROGGS: nice. keep up the good work! 09:04
colomon masak: I played around with adding e and g last night, but gave up on it because I knew I needed to wake up insanely early this morning. (ie now)
FROGGS (masak: I want to trick moritz in hacking %e, but don't tell him)
masak colomon: speaking of which, you're up insanely early this morning! 09:07
FROGGS: ok, it'll just be our little secret, then. 09:08
colomon have to drive (well maybe ride) an hour then catch an early plane.
o/
09:08 colomon left
dalek p: 98e5e6a | sorear++ | examples/CallFromJava.java:
Start on a calling-from-java example for colomon
09:13
sorear grrk. missed him
.tell colomon github.com/perl6/nqp/commit/98e5e6ad10
yoleaux sorear: I'll pass your message to colomon.
sorear .tell colomon Let me know what you'd like to see examples of in there. 09:14
yoleaux sorear: I'll pass your message to colomon.
09:16 vruiz joined
masak #parrot is very useful for getting a quick overview of the rakudo/nqp commits that happened overnight. 09:20
sorear :P
masak it's like #perl6 but minus the discussion.
FROGGS: plural of "synopsis" is "synopses" ;) 09:22
FROGGS k, thanks :o)
vruiz is it time to switch to perl6? 09:23
sorear from?
vruiz from perl5
sorear switch what?
vruiz 5.8
start using perl6 in my work
sorear 5.8? you poor soul, no // 09:24
vruiz i mean, is perl6 a complete perl system to support every day work at enterprises? 09:25
sorear well, uh, sure, no reason not to give it a try
perl6 won't support ALL of my daily work, but then neither will perl5
vruiz what about the lerarning curve? 09:26
masak vruiz: here's the thing: if you're asking that question, then you are probably not ready to switch.
vruiz: but I am, for example. I've been writing Perl 6 for 8 (!) years, and more and more every day.
(well, on average at least)
sorear (!) indeed 09:27
vruiz i see, and then why is it not extended as perl5, it makes me think in something like IPv4 and IPv6, never comes the change
masak vruiz: yeah, that's a good comparison. 09:28
vruiz: in the fullness of time, I think those who see a point in switching will switch.
vruiz: the rest? let them use Perl 5 if they want. we're not here to force anyone.
I see my job as presenting Perl 6 in the best light possible, so that people will at least try it out.
and some percentage of those who try it out will go "this is awesome! why doesn't everyone use this?", and then they will probably switch. 09:29
but in general, you can't make people switch.
it's Open Source, man. :) people use what they want.
09:29 spider-mario joined
vruiz what i really expect to switch is to write code more a like python 09:29
moritz also people switching and code base switching are two very different things 09:30
masak some poor sods are still on perl 4, you know. *shudder*
moritz even when Perl 6 will be much faster and more robust than it is today, it'll make sense for many existing code bases to remain in perl 5
simply because the cost of switching is too high
masak yeah.
sorear bah!
rakudo sets up the compiler in a MAIN sub, so I can't just loadbytecode and getcomp it :(
vruiz i would like to have better OOP support 09:31
moritz Perl 6 offers that, yes
vruiz preferably as simple as python
i've read that to have true OOP requieres rewriting perl from scratch. Is that true? 09:32
moritz do you mean existing perl code? or the Perl language? or the perl compiler? 09:33
vruiz perl code im'lementation
masak vruiz: do you count Moose as "true OO"?
moritz and what exact is "true OOP"?
masak vruiz: if so, then "no". if not, then "probably yes".
sorear Is there any good reason why rakudo:src/Perl6/main.nqp doesn't look like nqp:src/NQP/Compiler.pm ?
masak vruiz: but see stevan's p5mop effort for more information.
vruiz i'd like every thing would be an object 09:34
masak vruiz: that just makes no sense :)
vruiz not just a wrapper clas to simulate it
masak vruiz: your worry that the compiler is taking too long -- is that an object?
vruiz: a sunbeam hitting your keyboard in the morning -- is that an object?
moritz vruiz: autobox.pm exists
vruiz not, for sure, what i love from perl is it speed
masak vruiz: the total combination of all the bits in your computer and everyone else's -- is that an object? 09:35
*everything* can't be an object!
sorear r: say Set(0,1).PARROT
camelia rakudo 2b3dbf: OUTPUT«Cannot coerce object of type Capture to Set. To create a one-element set, pass it to the 'set' function␤ in sub to-set at src/gen/CORE.setting:13617␤ in sub to-set at src/gen/CORE.setting:13610␤ in method postcircumfix:<( )> at src/gen/CORE.setting:13609␤ in bl…
sorear r: say Set([0,1]).PARROT
camelia rakudo 2b3dbf: OUTPUT«Cannot coerce object of type Capture to Set. To create a one-element set, pass it to the 'set' function␤ in sub to-set at src/gen/CORE.setting:13617␤ in sub to-set at src/gen/CORE.setting:13610␤ in method postcircumfix:<( )> at src/gen/CORE.setting:13609␤ in bl…
sorear r: say set(0,1).PARROT
camelia rakudo 2b3dbf: OUTPUT«No such method 'PARROT' for invocant of type 'Set'␤ in block at /tmp/1RZw0oweoW:1␤␤»
sorear r: say PARROT(set(0,1))
camelia rakudo 2b3dbf: OUTPUT«===SORRY!===␤Undeclared name:␤ PARROT used at line 1␤␤»
vruiz think of this: in unix every thing is managed as if it where afile, there are many benefits from this aproach
moritz hasn't seen PARROT in a while 09:36
sorear r: say pir::typeof__sp(set(0,1))
camelia rakudo 2b3dbf: OUTPUT«===SORRY!===␤error:imcc:The opcode 'typeof_p' (typeof<1>) was not found. Check the type and number of the arguments␤ in file '(file unknown)' line 68␤»
moritz vruiz: that simply isn't true
vruiz: file permissions aren't handled as files
users aren't files
masak keypress events aren't files.
moritz lots of things aren't files, and aren't handled as files, in contemporary UNIX implementations
masak (but see Plan 9 for a really good attempt) 09:37
sorear r: say pir::typeof__SP(set(0,1))
camelia rakudo 2b3dbf: OUTPUT«Set␤»
moritz signals
interrupts
system calls
the list goes on 09:38
vruiz ok, nothing is absoultely perfect, but i'd like to have a more friendly OOP programming with perl6
masak vruiz: *ding*! you have it.
vruiz that's why i asked for switch
masak vruiz: your wish has been granted. OOP is more friendly in Perl 6.
09:38 domidumont left
vruiz i'll give it a try 09:39
another item in my whishlist :-)
masak see rakudo.org/how-to-get-rakudo/ 09:40
vruiz ok
would you say that perl6 simplifies language syntax?
from perl5? 09:41
masak in a way.
I know many Perl 5 who would disagree strongly, though.
sorear there's more of it, but there are many fewer special cases
masak maybe put it like this: Perl 6's syntax is "bigger" in some sense. it does more things. 09:42
but it's also "simpler" in some sense.
sorear we've completely eliminated the indirect object ambiguity, for instance
how many times has that bitten you in p5?
masak in particular, there's a really really nice standard grammar for it.
written in Perl 6 itself.
sorear whose idea was it to set up the Perl6::Compiler in a sub main :[ 09:43
sorear wonders if anything will break if this is changed
masak by the way, someone(TM) should perhaps update the rakudo.org/how-to-get-rakudo/ instructions to cover JVM? 09:44
vruiz thanks for your comments
09:44 vruiz left
moritz masak: only when we start to run modules on rakudo-jvm, I'd say 09:45
sorear an installable rakudo-jvm would be a nice touch
and a pony.
masak moritz: fairy nuff.
sorear RTA "thanks for your commits" 09:46
hmm. @*END_PHASERS and @*MODULES... will need to be refactored for embedding 09:48
I could turn those into hllglobals 09:50
looks probably more sensible to ditch the global @*MODULES, deal with the fallout from that, and turn END_PHASERS into a global 09:53
09:53 iSlug left 09:54 SamuraiJack left
sorear .tell jnthn $global_install probably needs to be dealt with in your thread safety pass 09:55
yoleaux sorear: I'll pass your message to jnthn.
10:07 dmol joined 10:22 daniel-s left 10:23 daniel-s joined
dalek kudo/jvm-embeddable: b72d148 | sorear++ | src/ (6 files):
Refactor src/main.nqp stuff to bring us closer to embeddability
10:27
sorear if someone could check that for Parrot regressions, that would be awesome
sleep&
FROGGS I know now how to track regressions properly and easy: 10:44
mkdir .diff && cd .diff && git init && cd ..
export PERL_TEST_HARNESS_DUMP_TAP=.diff # this will put the TAP of every single test file within that dir 10:45
add && commit the test files, patch nqp or rakudo, run tests again, and then do a git diff in that .diff dir
(no need to add a remote to that .diff repo, and no need to push) 10:46
arnsholt FROGGS: Oh, that's very cool! 10:48
FROGGS yeah, better then subclassing TAP::Harness *g* 10:50
arnsholt Indeed
FROGGS it would be nice to see the diff to the last run while running the spectest, but doing a git diff from now and then is okay too
arnsholt I've been playing with the idea of writing a plugin that dumps a JSON representation to file
But your way is definitely the simplest 10:51
11:01 PacoAir joined
jnthn afternoon, #perl6 11:03
yoleaux 09:55Z <sorear> jnthn: $global_install probably needs to be dealt with in your thread safety pass
11:03 kaare_ left
FROGGS hi jnthn 11:06
11:08 FROGGS left
lizmat hi jnthn! 11:09
11:12 FROGGS joined
jnthn So we're close to 97%? Wow! 11:12
FROGGS heh, I enabled turbo boost for my core i5 right now >.< 11:16
why was that off?
tadzik is it off by default?
FROGGS dont think so
tadzik hm
how did you enable it?
FROGGS I guess I turned it off when getting my laptop, my ubuntu was rebooting from time to time which turned out to be a kernel bug/incompatibility 11:17
in the bios
tadzik brb reboot :)
FROGGS :o)
tadzik I don't see an option for it 11:20
but I'm amused by "Enable charing iPod, iPhone or Blackberry when power off"
FROGGS +g 11:21
why? it means it has to power the usb ports, which can be useful when you need it, otherwise it is just bad for your accu
lizmat .tell sorear I'm not seeing any Rakudo regressions 11:24
yoleaux lizmat: I'll pass your message to sorear.
jnthn lizmat: Including in the branch? 11:25
11:41 pmurias joined 11:43 jlaire left 11:49 jlaire joined
pmurias rakudo: sub foo($foo) {$foo := 123;say($foo)};foo(456) 11:50
camelia rakudo 2b3dbf: OUTPUT«===SORRY!===␤Cannot use bind operator with this left-hand side␤at /tmp/9jFKja5BFz:1␤------> sub foo($foo) {$foo := 123⏏;say($foo)};foo(456)␤ expecting any of:␤ postfix␤»
11:52 rindolf joined
FROGGS jnthn: the %f bug you discovered yesterday won't be fixed before late evening, there are some regressions, like t/spec/S02-names-vars/perl.rakudo.jvm test #90 11:58
and now that I know all regressions I can fix'em 11:59
jnthn FROGGS: ok :) 12:01
FROGGS bbl 12:02
12:02 FROGGS left
diakopter . 12:02
dalek kudo-js: c4c51bb | (Pawel Murias)++ | src/QAST/Compiler/JavaScript.nqp:
Assign params directly instead of calling the bind method, fixes a test.
12:10
kudo-js: 26c5f36 | (Pawel Murias)++ | run (2 files):
Read in contexts correctly. Pass 56-role.t at last!
12:14 PacoAir left
jnthn starts to understand a bit more of the sorear++ interop stuff :) 12:15
Now I just need some time to ponder how to get a nice sugar layer in Perl 6 land... :)
JimmyZ :P 12:20
12:22 BenGoldberg joined
pmurias can I have both nqp-jvm and nqp-parrot installed? I want to make sure the test for the metamodel work on both of them ;) 12:23
jnthn pmurias: Yeah, just install them to different places, I guess?
jnthn has an install and install-jvm directory in his Rakudo tree
tadzik I should put rakudobrew somewhere 12:27
although it's now a terrible mixture of bash and perl
12:31 PacoAir joined 12:32 birdwindupbird joined
timotimo can i change a specs document (changing a "with" to a "without", so that the sentence makes sense again) without incrementing the version? perhaps just the last changed bit? 12:41
masak tadzik: put it somewhere early, put it somewhere often.
12:42 ponbiki left 12:47 kaare_ joined 12:52 mstefanko left 12:53 benabik joined 12:54 rindolf left 12:57 mstefanko joined
pmurias jnthn: pastie.org/8118052 - I get an error for make clean;make in rakudo-jvm 12:57
jnthn pmurias: Looks like too old nqp 12:58
pmurias updating it atm
13:01 berekuk left, berekuk joined
timotimo pypy is just removing all the old & busted code for the cli and jvm backends, rakudo is just getting a spiffy new jvm backend ... hmm 13:04
moritz timotimo: just increment the version 13:15
it's not a very significant number
(though if you don't nobody will reaslly complain either) 13:16
13:16 kaare_ left
spider-mario was no * 2013.06 planned? 13:17
13:18 benabik left
moritz independently of whether it was planned or not, none was released 13:18
dalek ast: 1bc6e7e | thundergnat++ | S32-str/sprintf.t:
Add test for multi-byte characters in strings. RT 117547
13:21
13:21 raiph joined
timotimo shouldn't that skip read #?rakudo.parrot skip? 13:23
lizmat jnthn: which branch do you mean? 13:25
13:26 spider-mario left 13:27 Moukeddar joined
jnthn lizmat: The one sorear pushed to just before sleeping 13:27
lizmat: jvm-embeddable
lizmat: If you feel like testing it doesn't break the Parrot build, go ahead. Otherwise, I can do it ;)
13:34 ponbiki joined, ponbiki is now known as Guest27461 13:37 preflex left 13:39 preflex joined, ChanServ sets mode: +v preflex 13:45 cogno joined 13:46 dayangkun joined, dayangkun left 13:50 cogno left, cogno_ joined 13:51 atroxaper joined 17:03 ilogger2 joined, ChanServ sets mode: +v ilogger2 17:11 fridim_ joined
BenGoldberg r: .say for (1..1e4).pick(1) 17:39
camelia rakudo 2b3dbf: OUTPUT«3412␤»
BenGoldberg r: .say for (1..1e5).pick(1)
camelia rakudo 2b3dbf: OUTPUT«(timeout)»
[Coke] daily jvm run up to S02-types... 17:44
17:47 Vlavv joined 18:18 vaelxon joined
sorear good * #perl6 18:22
yoleaux 11:24Z <lizmat> sorear: I'm not seeing any Rakudo regressions
dalek rl6-roast-data: aa0c757 | coke++ | / (5 files):
today (automated commit)
18:23
timotimo good * sorear :)
[Coke] 96.95%
timotimo holy moly! didn't even see commits that would have explained that! (or is that the sprintf-on-jvm thing?)
[Coke] r: say 26160*.97-25364 18:24
camelia rakudo 2b3dbf: OUTPUT«11.2␤»
[Coke] that's most of that last jump, yes
sorear so in other words no change since yesterday? 18:31
BenGoldberg .ping 18:36
yoleaux There is no ping command; nor can this be construed as a response.
BenGoldberg rakudo: 42.say
camelia rakudo 2b3dbf: OUTPUT«42␤»
BenGoldberg rakudo.jvm: 42.say
sorear There is no rakudo.jvm:. 18:37
BenGoldberg Camelia doesn't support rakudo on jvm?
sorear correct.
BenGoldberg pouts 18:38
dalek kudo/nom: b72d148 | sorear++ | src/ (6 files):
Refactor src/main.nqp stuff to bring us closer to embeddability
18:40
[Coke] ok. with 97%, are we ready to start fudging rakudo.jvm in roast? 18:44
I know FROGGS++ is ready...
I think if we fudge anything that isn't aborting, we'll be fine. (or we can fudge those also, and then keep a list of things so fudged)
dalek p: 0ffeec3 | (Tobias Leich)++ | / (2 files):
display + sign for positive decimals when requested
18:46
[Coke] ... and the first file I find is not amenable to fudging. :) 18:53
moritz hopes it's amendable to fixing
18:54 xinming joined 18:55 pecastro joined
sorear ...why is a NullPointerException being thrown with *no stack trace*? 18:56
[Coke] sorear: how can I get at $*ENV from inside java in nqp? 19:02
er, $%ENV 19:03
19:03 raiph joined
[Coke] or should I require $%ENV to be passed in as an argument to nqp::shell? 19:03
sorear [Coke]: probably saner to use System.getenv("WHATEVER") directly 19:04
[Coke] sorear: does setting $%ENV already set System.getenv? 19:05
er, does setting the rakudo variable already set the java env?
(trying to propagate out to child processes) 19:06
sorear [Coke]: no, but it should
oh, that's the exact bug you're trying to fix 19:07
[Coke] ah. looks like processbuilder should be doing this automatically based on the current env. 19:08
so if I make it so that $%ENV{a} = 'b' sets the java env, I win. 19:09
19:10 raiph left
sorear yes 19:10
what syntax is $%ENV, though>? 19:11
[Coke] the wrong one
so the only way I know to call java from nqp at this point is to add opcodes. nqp::setenv(key, value), nqp::delenv(key) ? 19:16
and wire those into ENV's already special FETCH and STORE subs?
sorear that seems the sanest way 19:17
dalek p: 04041f3 | sorear++ | examples/CallFromJava.java:
make examples/CallFromJava.java work with any HLL
19:22
19:22 raiph joined
dalek kudo/nom: bc3f73d | sorear++ | src/ (2 files):
A few more small tweaks to get embedding working
19:22
sorear $ java -cp ../nqp-jvm:../nqp-jvm/3rdparty/asm/asm-4.1.jar:../nqp-jvm/3rdparty/asm/asm-tree-4.1.jar:../nqp-jvm/nqp-runtime.jar:rakudo-runtime.jar:. examples.CallFromJa 19:23
va perl6.jar perl6 'say 2 + 2'
4
FROGGS sorear: how can I check that an argument sprintf gets is a bigint? .REPR gives P6opaque for bigints, and p6str/p6num for strings/nums 19:24
hmmm 19:26
r: say nqp::isbig_I(8720987304587034987502938740592837405987345)
camelia rakudo b72d14: OUTPUT«1␤»
FROGGS r: say nqp::isbig_I(8720987304587034)
camelia rakudo b72d14: OUTPUT«1␤»
FROGGS r: say nqp::isbig_I(87209)
camelia rakudo b72d14: OUTPUT«0␤»
FROGGS that might do it
19:27 xilo joined
[Coke] sorear: ah. you can't set env vars. 19:27
so I pretty much have to get
er, have to get %*ENV accessible to the shell() method
timotimo sorear: would like that example to show how to eval multiple things in a row while keeping data around like the repl would (and i know you're going to make something like that anyway ;) ) 19:31
sorear [Coke]: bleh. probably best to pass %*ENV (or the mirrored BOOTHash which the proxy maintains) as an argument to nqp::shell and copy that into the processbuilder... not forgetting to clear out the old environment first... 19:34
FROGGS: I have a sense that you're asking the wrong question. Suppose you *knew* that an argument was an Int; how would you use that information? 19:35
FROGGS: any test that returns false for 87209 is wrong, because that absolutely is stored as a bigint
[Coke] sorear: need to figure out how deal with getting an RT_OBJ in the shell() method... 19:36
FROGGS sorear: I want to make the decision to use pow_i or pow_I...
sorear timotimo: if you want the repl, use the repl. I'm going in more of a JSP way with this embedding, where the goal is to construct functions/objects in perl6 code and then call them repeatedly... hence the return value from eval...
[Coke] guesses a SixModelObject 19:37
FROGGS sorear: and I would guess that I dont get a small enough number as a bigint
sorear [Coke]: SixModelObject in the java param list
FROGGS: if it's coming from perl 6, "0" will come in as a bigint.
timotimo hm, ok
FROGGS sorear: okay, but it looks like it is working want I want to do... since I use things like pow_i on small bigints 19:39
19:42 xilo left
[Coke] sorear: where do I get the ThreadContext to pass in? 19:43
(to call, say, SixModelObject's at_key_boxed ?
ah, I see. 19:49
19:50 xilo joined
sorear [Coke]: best way is to add it as a last argument to the function and add a :tc flag to the compiler 19:59
20:06 sqirrel joined, grondilu joined 20:14 grondilu left 20:15 colomon joined
colomon o/ 20:15
yoleaux 09:13Z <sorear> colomon: github.com/perl6/nqp/commit/98e5e6ad10
09:14Z <sorear> colomon: Let me know what you'd like to see examples of in there.
[Coke] aye, found an example that did that. Thanks
colomon sorear++ # I'll have to consider what I can use, I had no idea something could be up and running this quickly! 20:16
I've got a simple nqp implemention of %e and %g, trying to merge it with the latest version right now.
ugh, this may take a while 20:18
FROGGS colomon: %e %g? you are talking about sprintf? 20:22
colomon yes
FROGGS \o/
colomon++
colomon merging it with your recent changes is going to take some thought 20:23
as I had refactored things a bit. :)
FROGGS ohh, okay
:/
colomon …. oh, I suppose I could leave %f as you have it and just include my changes.
that would be faster.
FROGGS but I would be interested in your %f too
colomon It should be pretty obvious from the other two, the entire code path will be in %g 20:24
so probably we will need to merge your %f changes into my %g implementation (maybe %e as well), and then move my refactor into your code. Something like that. 20:25
FROGGS hmm, okay
colomon my refactoring definitely needs work, so this will be good all around.
sorear colomon: is it correctly rounded/ 20:29
?
circumfix:<{ }> does a shocking amount of busywork 20:30
{ foo => $bar, baz => $quux } makes about 100 perl6 function calls 20:31
colomon sorear: probably not, if there were issues with the %f implement -- I just expanded that logic to handle %e and %g
20:32 snoopy_ joined 20:34 colomon left
dalek p: 321a8df | (Solomon Foster)++ | t/jvm/06-sprintf.t:
Quick tests for %e, %E, %g, and %G.

There are still many more tests to be written, IMO.
20:35
p: 5b21061 | (Solomon Foster)++ | / (2 files):
Support %e, %E, %g, and %G.

Still needs refactoring, IMO. But since I'm mostly offline this week, I wanted to get this checked in as soon as I had something that worked somewhat, just to prevent duplication of effort.
20:37 colomon joined
colomon okay, my changes have been pushed 20:37
[Coke] here's my WIP on shell-with-env. Fails. Any pointers on what I'm screwing up
gist.github.com/coke/5944808
? 20:38
colomon I'll try to figure out how to work in FROGGS++'s changes.
But I probably won't be back online again today.
FROGGS k, I'll try to handle bigints somehow... 20:39
colomon FROGGS: if you look at the sprintf repo in my github, I've got some of that, but definitely not all
FROGGS ohh cool 20:40
colomon++
colomon There's still a key point missing, I don't know how to tell when sprintf is passed a bigint!
snoopy_ nqp/t/jvm/06-sprintf.t plan needs a tweak...
planning 101 tests, but running 103
colomon snoopy_: you need to pull, I just added 30 tests 20:41
and I think I got the plan right
snoopy_ ok, thanks rerunning.. 20:42
lizmat jnthn: I spectested the branch jvm/embeddable 20:43
colomon sorry to just check things in and run.
lizmat colomon++ nonetheless :-)
20:45 colomon left
sorear I just deleted it :p 20:46
lizmat without digressing I can say it didn't regress 20:47
diakopter egress(0)
sorear [Coke]: --ll-exception will give you a backtrace
20:49 ecocode joined, preflex_ joined, ChanServ sets mode: +v preflex_ 20:50 preflex_ is now known as preflex 20:53 woolfy1 joined
[Coke] weird. if I change the env from <a>='b' to <a>=3, I get no error (but no output) 20:56
... urk. because it was <a>=b, not <a>='b' 20:58
sorear probably the reason you get no output is that there's a try block that eats all exceptions 20:59
adding e.printStackTrace(); to both cases might help 21:00
... I doubt that code will work anyway because %*ENV isn't a VMHashInstance, it's a P6Opaque that wraps a VMHashInstance 21:01
see also this: "To start a process with an explicit set of environment variables, first call Map.clear() before adding environment variables. 21:02
"
21:02 itz joined
[Coke] Yes, I hadn't done that part yet. 21:03
(no output) also, shell generates no output. :P 21:04
sorear 'echo' generates output, though. 21:07
[Coke] sorear: but not through shell.
I'd need to do echo $a > stuff and read stuff.
[Coke] tries to find examples of how to poke into a P6Opaque 21:08
sorear [Coke]: since you used inheritIO, the output from the echo should have gone to the terminal you used to start pelr6 21:09
[Coke] ah, ok. 21:10
[Coke] stares dumbly at the P6Opaque hierarchy. 21:15
dalek kudo/nom: 5023481 | (Elizabeth Mattijsen)++ | src/core/traits.pm:
Sort of implement "is parcel" (basically the same as "is rw" for now)
kudo/nom: 93f30e8 | (Elizabeth Mattijsen)++ | src/core/List.pm:
Mark List.pop and List.shift as "is parcel"
lizmat per S06:563 21:16
sorear [Coke]: take a look at setmethcache 21:19
[Coke] sorear++ 21:23
masak FROGGS++ # further %f hacking 21:30
'night, #perl6 21:34
21:35 lizmat_ joined 21:38 konundra joined 21:41 lizmat_ is now known as lizmat
lizmat r: my sub foo is rw { 42 } # feels this should die at compile time 21:42
camelia rakudo bc3f73: ( no output )
lizmat r: my sub foo is rw { 42 }; foo=1 # is this will never work
camelia rakudo bc3f73: OUTPUT«Cannot modify an immutable value␤ in block at /tmp/Ezd1PkSI_f:1␤␤»
lizmat r: my sub foo is parcel { 42 }; foo=1 # this we can't tell at compile time
camelia rakudo bc3f73: OUTPUT«===SORRY!===␤Cannot call 'trait_mod:<is>'; none of these signatures match:␤:(Mu:U $child, Mu:U $parent)␤:(Mu:U $type, :rw(:$rw)!)␤:(Mu:U $type, :nativesize(:$nativesize)!)␤:(Mu:U $type, :hidden(:$hidden)!)␤:(Mu:U $type, *%fail)␤:(Attribute:D $attr… 21:43
21:50 sqirrel left
dalek ast: 95cab91 | (Elizabeth Mattijsen)++ | S03-binding/nested.t:
Replace tests for "is rw" by more appropriate "is parcel"
22:03
ast: 2f3ef00 | (Elizabeth Mattijsen)++ | S03-binding/subs.t:
Change sub "is rw" to more appropriate "is parcel"

Oddly enough, this file does not seem to be part of roast
22:04 araujo joined
lizmat gnight #perl6! 22:04
labster good night lizmat, good * to the rest of #perl6 22:05
22:05 woolfy1 left
sorear night lizmat! 22:05
o/ labster!
labster \o
22:06 woolfy joined
jnthn back 22:09
sorear \o/ jnthn 22:10
22:10 konundra left 22:12 dmol joined, dmol left 22:26 pecastro left 22:29 pecastro joined 22:32 Ben_Goldberg joined 22:37 ecocode left 22:48 woolfy left 23:02 konundra joined 23:08 Ben_Goldberg left 23:09 nanzu joined 23:33 nanzu left
jnthn sleep & 23:34
23:50 cognominal joined