»ö« 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 diakopter on 14 April 2013.
adu lue: I'm assuming europe 00:05
lue that'd be a correct assumption. But still :) 00:06
00:10 jac50 left 00:12 ifimbres joined 00:16 gabriel_ joined 00:26 tgt left 00:30 japhb_ left 00:39 ifimbres left, kbenson left 01:40 xinming left 01:41 FROGGS_ joined 01:44 FROGGS left 01:54 xinming joined 02:05 thou left 02:12 tangentstorm left 02:28 census left 02:29 grondilu joined 02:35 BenGoldberg left
colomon rn: my %hash = a => 10, b => 12; say %hash.perl; %hash = { }; say %hash.perl; 02:36
camelia niecza v24-37-gf9c8fc2: OUTPUT«{"a" => 10, "b" => 12}.hash␤{}.hash␤»
..rakudo 71ea14: OUTPUT«("a" => 10, "b" => 12).hash␤().hash␤»
colomon wot
er, woot
02:41 orafu left, orafu joined 02:44 thou joined 02:58 grondilu left 03:06 adu left, sizz left 03:07 sizz joined
colomon r: say "" X 9 03:08
camelia rakudo 71ea14: OUTPUT« 9␤»
colomon r: say "" xx 9
camelia rakudo 71ea14: OUTPUT« ␤»
colomon r: say ("" xx 9).perl
camelia rakudo 71ea14: OUTPUT«("", "", "", "", "", "", "", "", "").list␤»
colomon r: say ("" X 9).perl
camelia rakudo 71ea14: OUTPUT«(("", 9),).list␤»
03:16 sizz left 03:17 sizz joined 03:20 sizz left 03:22 sizz joined 03:41 sizz left 03:46 sizz joined 03:54 Vlavv_ left 04:14 sizz left 04:20 sizz joined, rindolf joined, thou left 04:24 Psyche^ joined 04:28 Patterner left, Psyche^ is now known as Patterner 04:42 lustlife joined 04:53 rindolf left 04:54 rindolf joined 04:59 drbean left 05:01 drbean joined 05:14 xinming left 05:15 xinming joined 05:36 SamuraiJack joined 05:38 adu joined
adu ok, it's morning in europe 05:41
05:47 rindolf left 05:56 kaare_ joined, rindolf joined 06:12 kaare_ left 06:16 thou joined 06:27 rindolf left 06:28 rindolf joined 06:29 raiph left 06:31 rindolf left, rindolf joined 06:37 araujo left, rindolf left 06:38 rindolf joined 06:49 adu left 07:01 fhelmberger joined 07:26 Chillance joined 07:37 aindilis joined 07:44 fhelmberger left 08:14 domidumont joined 08:27 berekuk joined
masak good morning, #perl6 08:28
08:28 berekuk left
lizmat morning masak! 08:30
rn: my $a="foo"; { let $a= "bar"; say $a; leave }; say $a
camelia niecza v24-37-gf9c8fc2: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'leave' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1443 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37) ␤ at /ho… 08:31
..rakudo 71ea14: OUTPUT«===SORRY!===␤Undeclared routine:␤ leave used at line 1␤␤»
lizmat is this NYI or am I misunderstanding the spec?
rn: my $a="foo"; { let $a= "bar"; say $a; fail }; say $a
camelia niecza v24-37-gf9c8fc2: OUTPUT«===SORRY!===␤␤Undeclared routine:␤ 'fail' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 1443 (die @ 5) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37) ␤ at /hom…
..rakudo 71ea14: OUTPUT«bar␤No exception handler and no message␤␤current instr.: 'throw' pc 358449 (src/gen/CORE.setting.pir:156428) (src/gen/CORE.setting:9557)␤called from Sub 'sink' pc 390631 (src/gen/CORE.setting.pir:168922) (src/gen/CORE.setting:10839)␤called from Sub 'MAIN' pc 381 (s…
lizmat r: my $a="foo"; { let $a= "bar"; say $a; fail }; say $a 08:32
camelia rakudo 71ea14: OUTPUT«bar␤No exception handler and no message␤␤current instr.: 'throw' pc 358449 (src/gen/CORE.setting.pir:156428) (src/gen/CORE.setting:9557)␤called from Sub 'sink' pc 390631 (src/gen/CORE.setting.pir:168922) (src/gen/CORE.setting:10839)␤called from Sub 'MAIN' pc 381 (s…
masak lizmat: "leave" is NYI, and I don't really understand why at this point. probably nobody got to putting it in, simply.
lizmat: you can't fail if you're not in a routine. 08:33
08:33 berekuk joined
lizmat intriguing, it works ok in -e mode :-) 08:33
masak probably shouldn't.
lizmat $ perl6 -e 'my $a="foo"; { let $a= "bar"; say $a; fail }; say $a' 08:34
bar
foo
masak though the error "No exception handler and no message" is kinda weird, too.
timotimo the REPL may catch the exception?
masak that's not the REPL.
that's -e
lizmat: confirmed, works here too.
lizmat could it be that "leave" is NYI because we don't have goto either? 08:35
timotimo oh, right 08:36
masak lizmat: I don't really see the relation. 08:41
lizmat: "leave" is a call stack operation. "goto" is more of an IP operation. 08:42
lizmat IP?
masak at least in its simplest forms.
Instruction Pointer
"leave" is like a "return light".
lizmat I guess the answer to my question is "no" :-) 08:43
08:43 thou left
lizmat I can't seem to find much specced about "let" 08:43
masak and a block is like a "routine light" :)
lizmat: "temp" and "let" are woefully underspec'd.
shachaf They're called leaves because they leave the trees in the fall. Which is why it's called fall. 08:44
lizmat specifically what happens if you "let" a filehandle, then read a line from it and fail from the block
will it seek back to the original position?
if so, what magic will make that happen?
I hadn't realised it until now, but "let" is getting us into STM land, no? 08:45
masak not that I know of. 08:47
'maybe {}' was meant to get us into STM land.
08:48 domidumont left
lizmat "let" is the "restore to previous state" part of STM 08:49
08:49 domidumont joined
lizmat not being interrupted in a block, is another part 08:49
looking at S17, maybe "defer" should just simply be "fail" ? 08:50
masak yeah.
I can see the connection between "let" and "maybe" too.
maybe that's actually all it takes to do optimistic concurrency. 08:51
lizmat shelves these concurrency for now and continues trying to grok S04 08:53
rn: my $a="foo"; { temp undefine $a; say $a }; say $a
camelia niecza v24-37-gf9c8fc2: OUTPUT«(Any)␤(Any)␤»
..rakudo 71ea14: OUTPUT«(Any)␤Cannot assign to a readonly variable or a value␤ in block at /tmp/zOhG_oJm6Q:1␤␤»
lizmat thinks both get it wrong 08:54
I would have expected (Any) foo
08:54 trexy_ joined
lizmat masak: wrt to goto just being in IP operation: it could also involve stack operations if the label is in an OUTER block 08:56
masak yes. 08:58
my point was really that "leave" and "goto" aren't all that similar.
"leave" is more like "return". 08:59
lizmat: I think you're confusing "set the value of $a to what it was previously" and "destruct the object that was in $a".
'temp' does the former. not the latter.
the GC does the latter, in due time. not on anyone's schedule. 09:00
09:00 MrMeek-afk joined 09:04 MrMeek left
lizmat gist.github.com/lizmat/5472425 09:07
I would expect some methods being called on the object if "temp" is done on it, and also when the scope is left 09:08
but that's not specced, let alone implemented
or is it? as it apparently already works on scalars?
masak I never thought of 'temp' as having this kind of semantics. 09:09
maybe it does. I don't know.
ask TimToady.
09:09 SamuraiJack left 09:10 dmol joined
lizmat .invoke TimToady 09:16
seen TimToady
.seen TimToady 09:17
yoleaux I saw TimToady 26 Apr 2013 23:40Z in #perl6: <TimToady> ask jnthn, I suppose
lizmat :-)
masak hehe 09:19
09:19 spider-mario joined, flussence joined
lizmat masak: isn't this a rakudo bug? 09:21
r: my $a="foo"; { temp undefine $a; say $a }; say $a
camelia rakudo 71ea14: OUTPUT«(Any)␤Cannot assign to a readonly variable or a value␤ in block at /tmp/lGIFzmiUSK:1␤␤» 09:22
masak huh. 09:23
I... don't know. I think so.
but I can't internalize what happens there.
where does the "readonly" come from?
lizmat r: my $a="foo"; { temp $a= (Any); say $a }; say $a
camelia rakudo 71ea14: OUTPUT«(Any)␤foo␤»
lizmat seems like "undefine" is maybe doing more than it should 09:24
masak yeah.
masak submits rakudobug
09:41 frdmn left
masak 20 signups for the workshop on Wednesday! \o/ 09:51
09:51 rindolf left
lizmat :-) 09:51
masak it was 13 three days ago when I blogged about it. 09:52
labster hello #perl6
masak labster! \o/
lizmat hello labster!
labster I just got File::Spec integrated into core. Yak is now clean-shaven. 09:53
lizmat nothing like a clean Yak 09:54
it's the equivalent of a bikeshed in the right color 09:55
masak .oO( yakshedding ) 09:56
lizmat alas, afk for most of the day &
masak & 09:58
10:03 tgt joined 10:06 jerome_ left 10:14 frdmn joined 10:21 tgt left 10:22 xinming left 10:23 xinming joined 10:24 tgt joined
nwc10 for my non-representitive not-a-benchmark (but it is the same code): 10:34
nqp-jvm: 1.4725e+02 +/- 7.2e-01 10:35
camelia nqp-jvm: OUTPUT«Cannot unbox a type object␤ in !LITERAL␤ in stopper␤ in <anon>␤ in before␤ in termish␤ in termconj␤ in termalt␤ in termconjseq␤ in termaltseq␤ in nibbler␤ in LANG␤ in quote:sym</ />␤ in !protoregex␤ in quote␤ in value␤ in term:sym<value>␤ in !protoregex␤…
nwc10 nqp-parrot: 2.0425e+03 +/- 1.9e+00 (0.1%)
10:43 PacoAir joined
jnthn afternoon, #perl6 10:43
temp undefine $a # iirc, temp is just a prefix, you're almost certainly going to undefine $a and then temporize it afterwards 10:46
nwc10: I was like "huh, only a little difference", then noticed the +02 vs +03 :)
10:47 tgt left 11:02 tgt joined 11:03 frdmn left, frdmn joined
cognominal writing a presentation, I noticed there are two other ways to write / a | b /, one with a multi rules and the other with a argumentful rule : gist.github.com/cognominal/5472705 11:05
TIMTOWTDI
11:05 jerome_ joined
jnthn < a b > / is anothe way 11:06
Though it desugars to / a | b /.
cognominal Nice :)
But my purpose was to introduce protorules and argumentful rules with the simplest possible example 11:07
11:10 araujo joined, araujo left, araujo joined 11:17 pdurbin joined
cognominal the argumentful form should have been written : token char($char) { $char } ; <char(a)> | <char(b)> 11:18
or 11:19
oops
the argumentful form should have been written : token char($char) { $char } ; <char('a')> | <char('b')>
or
token char($char) { $char } ; <char('a'|'b')> # is that possible? modulo a good enough Perl 6 implementation 11:20
timotimo are they already in rakduo?
cognominal yes, except for the last one. 11:21
timotimo argumentful rules i mean
cool :)
jnthn Tokens/rules can take arguments, but you're in the main language when you're passing them, not regex langauge.
Using that syntax, anyway 11:22
cognominal it shows how well rules are integrated with the language
timotimo so you'd get a junction. will that autothread?
jnthn So I guess you pass a junction... :)
No, it will probably explode. :)
Oh wait
It probably auto-threads
But then the grammar engine gets a junction of cursors back at which point it is probably extremely sad. :) 11:23
cognominal good luck for the other languages stealing them this time
timotimo r: (grammar :: { token char($char) { $char }; rule TOP { char('a' | 'b') }; }).parse("b")
camelia rakudo 71ea14: ( no output )
timotimo r: (grammar :: { token char($char) { $char }; rule TOP { char('a' | 'b') }; }).parse("b").perl.say
camelia rakudo 71ea14: OUTPUT«Match.new(orig => "b", from => 0, to => -3, ast => Any, list => ().list, hash => EnumMap.new())␤»
timotimo r: (grammar :: { token char($char) { $char }; rule TOP { char('a' | 'b') }; }).parse("a").perl.say
camelia rakudo 71ea14: OUTPUT«Match.new(orig => "a", from => 0, to => -3, ast => Any, list => ().list, hash => EnumMap.new())␤»
timotimo well, there's that!
from 0 to -3, eh?
jnthn timotimo: You need <char('a' | 'b')> to make a call :) 11:24
timotimo uh, that's right
r: (grammar :: { token char($char) { $char }; rule TOP { <char('a' | 'b')> }; }).parse("a").perl.say
camelia rakudo 71ea14: OUTPUT«Can not get attribute '$!pos' declared in class 'Cursor' with this object␤ in regex TOP at /tmp/SIUOHFu8ZR:1␤ in method parse at src/gen/CORE.setting:11162␤ in block at /tmp/SIUOHFu8ZR:1␤␤»
11:24 pdurbin left
timotimo "this" object being the junction object that gets passed perhaps? 11:24
jnthn I expect so, yes 11:25
r: (grammar :: { token char($char) { $char }; rule TOP { <char 'a' | 'b'> }; }).parse("a").perl.say 11:26
camelia rakudo 71ea14: OUTPUT«Unmarshallable foreign language value passed for parameter '$char'␤ in regex char at /tmp/h1WhlQcmtB:1␤ in regex TOP at /tmp/h1WhlQcmtB:1␤ in method parse at src/gen/CORE.setting:11162␤ in block at /tmp/h1WhlQcmtB:1␤␤»
jnthn Whoa
lizmat jnthn: temp undefine $x is directly lifted from spec 11:29
cognominal anyway, nothing precludes in theory the grammar engine handling cursors junctions?
lizmat rn: my $a="foo"; { undefine temp $a; say $a }; say $a
camelia rakudo 71ea14, niecza v24-37-gf9c8fc2: OUTPUT«(Any)␤foo␤»
lizmat I guess we need to correct the example in the spec
cognominal this way of meshing so different parts of the language is the proof how well it is thought out. 11:30
11:30 FROGGS[mobile] joined
jnthn lizmat: Oh, hmmm 11:31
FROGGS[mobile] hi there
cognominal hi FROGGS[mobile]
FROGGS[mobile] irclog is still teh borke? 11:32
lizmat looks like it
timotimo is there something like "literal_eval" for perl6 yet, and if not, is there interest in having something like that? (spec'd or panda'd) 11:36
jnthn timotimo: val, maybe?
lizmat val is NYI, afaik 11:37
ah, duh
:-)
timotimo NYI, but specced? neat. i wonder how it can cleverly be implemented. 11:38
iow: without reimplementing much of perl6s grammar
lizmat S02:4461 Allomorphic value semantics (the "val" function)
jnthn I think japhb++ was working on it at some point
timotimo thanks
hm. literal_eval also does data structures like lists, tuples and dicts in python. val only seems to do single simple literals 11:40
or at least only those are discussed in that section
ah, it's described further pu
lizmat funny, is dalek down also? 11:41
I just pushed:
- temp undefine $x; 11:42
+ undefine temp $x;
and haven't seen dalek reporting that yet
FROGGS[mobile] hmmm, dalek was working yesterday when ilogger wasnt 11:43
11:44 dmol left
lizmat afk& 11:47
timotimo oh perl6 11:48
r: my $part = 55; say :100[0, '.', $part, 99]
camelia rakudo 71ea14: OUTPUT«0.5599␤»
timotimo this is amazing.
"Also allowed in strings are [...] maybe a trailing Units type for an implied scaling" - this is not specced out yet? 11:52
cognominal timotimo: where do you read that? 11:53
timotimo perlcabal.org/syn/S02.html#Exponentials 11:54
under the last :2<....> example
be back in 30
cognominal bb in an hour or so 11:55
dalek p: 83fd61b | jnthn++ | src/vm/jvm/ (2 files):
Eliminate two instructions per QAST::WVal.

This passes the values directly to the indy bootstrap method, which we didn't have the infrastructure to do when QAST::WVal stuff was first switched over.
12:13
p: 1cc2d3e | jnthn++ | src/vm/jvm/ (2 files):
Reduce cost of immediate block invocation.
12:14
cognominal "indy bootstrap" :) 12:24
timotimo next up: hipster bootstrap? 12:25
oh, that's what twitter made, no? ;))
jnthn One gets tired of typing invokedynamic eventually :)
jnthn ponders whether $foo."$bar"() tends towards the megamorphic... 12:26
Hm...the action method calling almost certainly is. 12:27
(A megamorphic callsite is a polymorphic one where there's a huge number of potential places we could end up.) 12:28
lizmat wonders where this is going to 12:31
jnthn lizmat: Just pondering the way I handle such call sites on the JVM 12:32
lizmat: When it's $foo.bar() then it's unusual for their to be an insane number of possibilities.
timotimo Seq was removed from the language, correct?
jnthn lizmat: Moreover, you tend to know where you're going by class. 12:33
lizmat jnthn: ack
timotimo: not in the spec yet
timotimo ah, ok
lizmat not sure whether that is a problem of the spec or not
jnthn lizmat: So I can tell the JVM to just stack up some guard clauses there, which makes things a win.
lizmat: However, if you pile up too many of those, you're in bother. 12:34
lizmat right, too many "likely"s to check
timotimo if you care, here's another mention: perlcabal.org/syn/S02.html#Explicit...nstruction - but if the decision to remove Seq is final, one can probably just as easily grep for "Seq."
jnthn lizmat: A callsite with a LOAD of possible destinations, differentiated by name *and* invocant type, is probably going to turn nasty in plenty of common cases. So I think the answer for now is "don't be too clever" :) 12:35
lizmat indeed, plenty of time ahead to put in cleverness
12:35 frd|afk joined
lizmat MIWN is much more important 12:35
timotimo "Man I Wonder Now"? 12:36
lizmat Make It Work Now
:-)
timotimo oh, sure
lizmat a variation on DWIM
masak sounds like "first, make it work"
timotimo it's encouraging to see jnthn make the stuff faster, but it's also pretty nice to see jnthn make rakudo compile on the jvm ;) 12:37
jnthn Well, invocant is kinda at the heart of a lot of things, so there's also part of me wanting to get it wired up through invokedynamic before I go piling Rakudo on top of all of this :) 12:38
12:39 frdmn left
jnthn *invocation 12:39
The other piece of this is that the coroutine handling stuff requires that we have an empty stack besides the arguments at the point of each call.
Which I'd not enforced up until now 12:40
lizmat so, rakudo-jvm is getting more features than rakudo-parrot already?
jnthn lizmat: No...what did I say to make you think so? :)
lizmat "[14:40:04] <jnthn> Which I'd not enforced up until now" 12:41
jnthn lizmat: Yes, this is a code-gen level thing, not a user level thing.
lizmat gotcha 12:42
jnthn I think cs.brown.edu/~sk/Publications/Paper.../paper.pdf is the relevant paper, for anybody who wants the gory details...
lizmat eek :-) 12:44
timotimo puts on his reading gloves 12:45
dalek p: 20547c3 | jnthn++ | src/vm/jvm/ (2 files):
Send indirect calls through invokedynamic.

Not expecting a performance change from this, but it makes code gen a bit simpler/better/uniformer.
13:01
13:07 FROGGS[mobile] left 13:16 SmokeMac_ joined 13:18 SmokeMachine left 13:20 Bzek joined
dalek p: a84eedf | jnthn++ | src/vm/jvm/ (2 files):
Send $foo."$bar"() calls through indy also.

Don't do much optimization here, this just simplifies code-gen and brings it inline with that of normal method calls.
13:46
p: 86c9a7f | jnthn++ | src/vm/jvm/QAST/Compiler.nqp:
Remove now-unused code.
p: 68405c9 | jnthn++ | src/vm/jvm/QAST/Compiler.nqp:
Update and simplify for loop code-gen.

It now desugars the calls through a QAST node, menaing we get rid of the last use of building arg arrays and that such loops should now get better code gen.
13:47
p: eaeda37 | jnthn++ | src/vm/jvm/QAST/Compiler.nqp:
Remove more dead code.
timotimo is .quoteharder an actual thing? 13:51
13:53 woosley1 joined
jnthn Doesn't sound familiar 13:53
timotimo macro quote:<❰ ❱> ($text) { quasi { {{{$text}}}.quoteharder } } — probably just another silly example :) 13:55
13:56 grondilu joined
dalek p: c7c2297 | jnthn++ | src/vm/jvm/ (2 files):
Make atkey and atpos on type objects give null.

This simplifies code-gen for array/hash access.
13:59
jnthn Recent code generation improvements means a full NQP is now around 4.1 MB worth of .class files rather than 5.4 MB. 14:00
masak timotimo: yes, silly example. 14:01
timotimo: it's just a method on whatever's in {{{$text}}} -- probably a Str, from the looks of it, but could be something else, too. 14:02
14:07 sizz left 14:10 gabriel_ left 14:11 sizz joined 14:17 gabriel_ joined 14:18 isBEKaml joined
FROGGS_ jnthn++ # that's cool 14:20
14:21 woosley1 left 14:26 SmokeMac_ left 14:30 SmokeMachine joined, Bzek left 14:33 mtk left 14:41 fhelmberger joined
dalek : f7d0e77 | (Tobias Leich)++ | / (2 files):
make %ENV available when strict is in use
14:44
: 679269b | (Tobias Leich)++ | / (2 files):
making "use integer" an noop for now
14:46 raiph joined
dalek p: e610165 | jnthn++ | src/vm/parrot/ (2 files):
Move dispatcher set/take op into NQP itself.

This will let us do better code-gen with it on the JVM and also ease keeping it per thread.
14:49
14:51 colomon left 14:54 colomon joined, aindilis left 15:07 nyuszika7h joined 15:09 tgt left, tgt joined
dalek kudo/jvm-support: 4da9ebb | jnthn++ | tools/build/Makefile-Parrot.in:
Unbust build on Parrot in this branch.
15:12
kudo/jvm-support: b179337 | jnthn++ | / (6 files):
Dispatcher changes for portability improvements.

Gets rid of the remaining pir:: in the Metamodel code. Also uses a new op made available since the dispatcher code was written to avoid loads of copy arguments around, meaning that deferral becomes cheaper on Rakudo on Parrot also.
15:17 fhelmberger left
timotimo what does deferral refer to in this case? things like protos that do their own dispatching? 15:21
jnthn nextsame and friends 15:24
timotimo neat 15:25
15:36 Bzek joined 15:40 Targen joined 15:41 Bzek left, Bzek joined 16:16 isBEKaml left 16:24 flussence left 16:26 flussence joined
dalek p: 9d9a2af | jnthn++ | src/vm/jvm/ (3 files):
Implement setdispatcher/takedispatcher on JVM.
16:32
p: 3ca71af | jnthn++ | src/vm/jvm/ (2 files):
Add nqp::settypecheckmode for JVM.

Also, start to flesh out istype a little more, though it needs more work to finish it.
kudo/jvm-support: b6b88bf | jnthn++ | src/vm/jvm/Perl6/Ops.nqp:
First cut of nqp::p6bool compilation for JVM.

Actual thing it calls doesn't exist yet, though.
16:33
kudo/jvm-support: 82e9667 | jnthn++ | src/Perl6/Metamodel/ (2 files):
Don't do Parrot interop role except on Parrot.
kudo/jvm-support: eb54676 | jnthn++ | tools/build/Makefile-JVM.in:
Add Perl6::Metamodel to the JVM build.

Usual caveat applies: just 'cus it builds doesn't mean it all works.
nwc10 jnthn++ # steadily pushing the goalposts nearer to Christmas 16:34
16:39 rking left
colomon jnthn++ # maybe getting Rakudo JVM working fast enough to help out my ABC & Processing project 16:45
jnthn Well, next comes BOOTSTRAP which is where the next batch of Hard Stuff starts. 16:47
16:48 rking joined
jnthn And beyond there, we're into the realm of the terrifying: starting to work little by little through getting CORE.setting to build. 16:48
masak \o/
that's the best definition of "terrifying" I've heard in quite a while.
jnthn Time for a break, dinner, etc. bbl 16:51
flussence did those efforts to split the setting up ever go anywhere? 16:52
16:57 clkao left 16:58 clkao joined 16:59 jeffreykegler joined
cognominal ho, I did not notice that jnthn jvm effort moved to rakudo 17:01
17:02 fgomez left
masak will Rakudo #64 be the first Rakudo release to run on the JVM? 17:09
flussence
.oO( we could do some horribly misleading marketing and call it Rakudo64 )
17:13
(in reference to the 90s console wars)
cognominal an the FAQ will be : does it also run on 32bits computers 17:14
where can I find Rakudo32 ?
17:33 fgomez joined 17:37 adu joined
jeffreykegler By the way, what does ".oO(" mean? I've tried looking it up without avail. 17:48
masak jeffreykegler: it's a thought bubble 17:51
like in comics.
colomon jeffreykegler: "I'm thinking"
masak ...therefore I am.
jeffreykegler So it's for something that is an "aside", for one degree or another. 17:52
I was trying to guess on the basis that it's an emoticon, but the emotions expressed were all over the map. 17:53
17:57 kaare_ joined
masak yes, "aside" covers it. 18:02
japhb I saw I got highlighted regarding val(), but have not backlogged yet -- is there still an open question?
raiph
.oO( I opened the question and peered inside )
18:06
18:07 adu left
jnthn japhb: Somebody asked about it and I seemed to recall you were looking at it (or related things) at some point 18:10
japhb jnthn, Yeah, I got about as far as I could without implementing dualvars. And then realized I had to do Parrot-related hacking to make that possible. And then, after a few abortive attempts to concentrate on said task, mysteriously found other things to work on. 18:13
Still bugs me that I didn't manage to close out that task, though. :-(
jnthn japhb: May be a good YAPC::NA hacking task when we can work together on it. 18:15
japhb jnthn, hmmm, good point!
18:20 kaare_ left 18:21 SamuraiJack joined 18:22 census joined 18:23 frd|afk left, fhelmberger joined, frdmn joined 18:27 tgt left 18:40 xilo left
lue hello world o/ 18:45
jnthn hellue o/ 18:46
18:47 xilo joined 18:53 jeffreykegler left
dalek p: 2883303 | jnthn++ | src/vm/jvm/QAST/Compiler.nqp:
Fix a couple of op signatures.
18:54
p: 176fa67 | jnthn++ | src/vm/parrot/ (2 files):
Add NQP op for checking if a capture has nameds.
18:56 snearch joined 19:00 jeffreykegler joined, census left, trexy_ left 19:01 jeffreykegler left 19:04 tgt joined
dalek kudo/jvm-support: a25b65b | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.nqp:
Remove/segregate some Parrotisms in BOOTSTRAP.
19:04
kudo/jvm-support: 26d0a47 | jnthn++ | / (2 files):
Eliminate one more of the pir:: in BOOTSTRAP.
colomon \o/ 19:25
19:39 domidumont left 19:43 dmol joined 19:44 SamuraiJack left 20:00 telex left 20:06 telex joined
cognominal jnthn, nqp/master error messages are wrong on lion. They use backslash and state the wrong stage gist.github.com/cognominal/5474507 20:10
20:11 adu joined
jnthn cognominal: Did you change something? 20:12
cognominal: afaik you'd have to be (a) working on NQP, or (b) hit an error while building NQP to see that. 20:13
It's an artefact of the bootstrap/self-hosting process. 20:14
cognominal yes, that triggers the error but that's not my point
my changes don't affect the build
20:15 fhelmberger left 20:17 berekuk left
jnthn Updating the stage0 is done by taking a copy of the final build output (thus, stage2) and placing it in the stage0 directory. Thus you get (a) paths represented as they were by whoever did the last bootstrap update, and (b) they reference the place the build was done. 20:17
adu jnthn: after I install java7, wanna chat about nqp? 20:18
dalek : 9a693bc | (Tobias Leich)++ | / (2 files):
parse pragma "open", need to set $*OPEN_DEFAULTS or similar
jnthn adu: Can do. Did you get an NQP on JVM build?
adu no, it says I need java7
jnthn autumn: Oh...yes :) 20:19
grr
adu: ^^
cognominal jnthn, thx for explaining the bootstrapping process 20:20
bootstrapping is never pretty. I am happy that jnthn got past that stage with jvm 20:22
20:27 berekuk joined
autumn jnthn: oh...no 20:28
timotimo r: say ("oh"..."no").list.perl
camelia rakudo 71ea14: OUTPUT«("oh", "og", "of", "oe", "od", "oc", "ob", "oa", "nz", "ny", "nx", "nw", "nv", "nu", "nt", "ns", "nr", "nq", "np", "no").list␤»
masak autumn: ;) 20:29
colomon n: say ("oh"..."no").list.perl 20:32
camelia niecza v24-37-gf9c8fc2: OUTPUT«("oh", "og", "of", "oe", "od", "oc", "ob", "oa", "nz", "ny", "nx", "nw", "nv", "nu", "nt", "ns", "nr", "nq", "np", "no").list␤»
20:33 kaare_ joined
lue r: say ("aa"..."zz").pick(2) 20:38
camelia rakudo 71ea14: OUTPUT«tw yp␤»
20:38 berekuk left
adu yey java7 is finally installed 20:39
masak I hear it's really secure and everything. 20:41
20:41 cognominal left 20:42 cognominal joined
geekosaur Just Another Vulnerability Announcement 20:42
adu geekosaur: lol
masak: security is a statement about an organization, it's impossible to make that statement any particular software 20:43
masak surely the software is what contains exploitable bugs, not the organization. 20:45
timotimo the organization can, too. using these bugs is called "social engineering"
adu masak: suppose you had perfect software, and gave out their password on national TV, then the organization is insecure, which has nothing to do with software 20:46
masak I hear what you're saying, but I'm having trouble mapping this back to Java. 20:47
timotimo if your software uses a password for critical stuff, rather than proper cryptographic keys and signatures and/or two-factor auth, then that's not perfect :P
masak surely the repeated exploits of the JVM stack lately haven't been due to some Oracle employee leaking passwords on TV?
saying "it's Oracle that's insecure, not Java -- software can't be insecure" sounds like nonsense to me. 20:48
or at least something highly falsifiable and false. 20:49
lue thinks it's all a case of Sun > Oracle, at least to users' eyes (I wonder if they saw that coming?)
adu masak: I suppose you're right, it's the transitivity I think is false 20:50
software X is secure, software Y is secure, therefore (X+Y) is secure -- I think this is false 20:51
geekosaur thinks java's insecurity (and perception thererof) well predates oracle's involvement
but oracle does have something of a perception of unresponsiveness to security issues, because of their tendency to let known security issues in their database slide 20:52
adu lue oh? are you saying oracle f***ed it up?
geekosaur (which *also* predates their acquiring Sun)
lue I haven't been following Oracle's adventures with Sun products, but from what little I know what they've done certainly wouldn't help matters.
(to be honest I only know of somehow driving the creation of LibreOffice and the dissolution of the Java Community Board or whatever-twas-called) 20:53
adu jnthn: it's on stage2
jnthn: done! 20:54
geekosaur sun owned openoffice (originally staroffice); people assumed oracle would either close source it or kill it off, and got surprised when they gave it to the apache foundation instead
lue 's first comment at :49 was supposed to contain an autopun, and is guessing it didn't get spotted
20:55 berekuk joined
geekosaur did sort of spot it... 20:55
adu lue: "saw"?
labster good postnoon, #perl6
adu lue: I still don't spot it
geekosaur hard to see with the Sun in your eyes...
lue "saw" meaning "I saw words describing it" 20:56
masak it's a bit ironic that the flagship editor for Sun's language is called Eclipse...
adu o hehe
jnthn adu: yay :)
lue autopun: I'd be surprised if Oracle couldn't prophetize backlash from the purchase 20:57
(not a very good autopun, but still...) 20:58
21:08 autumn left 21:12 berekuk left
adu jnthn: so what now? 21:16
jnthn adu: What kinds of things do you wish to work on? 21:17
adu whatever's missing
jnthn adu: "make test" will show up some failures
adu: One issue that I think is at the heart of various failures is 21:18
if you run with something like: -e "sub foo() { "
Instead of the correct error in FAILGOAL you get "Cannot stringify this". The qregex and p5regex tests fail in the same manner, so if that one can be worked out it may win quite a bit :) 21:19
adu what is the correct error? 21:21
"Incorrectly paired operators"?
jnthn nqp: sub foo() { 21:22
camelia nqp: OUTPUT«Unable to parse expression in blockoid; couldn't find final '}' at line 2, near ""␤current instr.: 'panic' pc 14721 (src/stage2/gen/NQPHLL.pir:5232) (src/stage2/gen/NQPHLL.nqp:279)␤»
jnthn That one.
It may just be that NQPRoutine or NQPRegex want a method Str that returns the name of the routine.
nqp: sub foo() { }; say(&foo) 21:23
camelia nqp: OUTPUT«foo␤»
jnthn nqp-jvm: sub foo() { }; say(&foo)
camelia nqp-jvm: OUTPUT«Cannot stringify this␤ in <anon>␤ in print␤ in say␤ in <anon>␤ in <anon>␤ in eval␤ in evalfiles␤ in command_eval␤ in command_line␤ in MAIN␤ in <anon>␤ in <anon>»
jnthn Ah, it may be that :)
adu jnthn: :) thanks
21:25 kaare_ left
masak 'night, #perl6 21:26
labster All right, I finally have a branch with working IO::Path for multiple OSes. 21:31
Only had to add one tiny bit of pir to make it work. 21:34
21:36 sizz left
lue labster: that goes in CORE.setting, right? 21:36
adu jnthn: so I added a Str method to src/core/NQPRoutine.nqp, and recompiled, and I'm still getting "Cannot stringify this", so that's not it 21:37
labster yeah 21:38
adu wait, foo is a Sub, not a Routine
21:39 autumn joined
jnthn adu: They're all NQPRoutine or NQPRegex 21:40
(In NQP)
labster lue: That was why I had to add the pir -- I wanted to get $*OS before it was actually defined in the setting.
lue and there's no equivalent nqp:: op for what you needed? (Just wondering, because any pir:: will be replaced in CORE.setting sooner or later) 21:41
labster well... I just copypasted from terms.pm. 21:42
I suppose I should start helping with the hunt for pir in the core. 21:43
lue Just thought I'd let you know in case you'd like to avoid putting more PIR in CORE.setting :) (but if there is no nqp:: op yet for what you need, then by all means leave the pir:: there) 21:45
21:50 sizz joined 21:51 berekuk joined
adu what's the difference between QAST::Block and QAST::Stmts? 21:53
21:53 berekuk left
adu is one for packages and one for sub/methods? 21:54
21:57 berekuk joined
jnthn QAST::Block implies a lexical scope. 22:00
QAST::Stmts is just a bunch of things to run in order, and evaluates by default to the last thing. 22:01
22:02 berekuk left
adu so Block is like ((lambda)) and Stmts is like (begin) 22:02
22:04 lustlife left 22:06 spider-mario left 22:08 gem_ joined
adu jnthn: where is nqp::print implemented? 22:10
jnthn adu: It's mapped in src/vm/jvm/QAST/Compiler.nqp to a method in Ops.java 22:11
22:11 gem_ left
adu r: class C { sub Str() { "D" } }; say(C.new); 22:13
camelia rakudo 71ea14: OUTPUT«C.new()␤»
adu class C { sub Str() { "D" } }; say(C.new().Str());
jnthn method
adu r: class C { method Str() { "D" } }; say(C.new().Str()); 22:14
camelia rakudo 71ea14: OUTPUT«D␤»
adu nqp-jvm: class C { method Str() { "D" } }; say(C.new().Str());
camelia nqp-jvm: OUTPUT«D␤»
adu hmm
so for some reason obj.st.MethodCache.get("Str") isn't working 22:15
22:21 jdv79 left
jnthn Well, that's just a hash lookup 22:21
Most likely there's nothing there for whatever thing it's doing the lookup on 22:22
If NQPRoutine and NQPRegex both have Str methods, my only other guess is that it's a CodeRef, which is the low-level thing. If so, the right way to get a name out of one of those is to nqp::getcodename it... 22:24
Time to sleep here, I think. 22:25
adu jnthn: thanks for the help
jnthn np, thanks for looking at this :)
22:27 ruoso left, ruoso joined 22:33 tgt left 22:36 snearch left 22:37 tgt joined 22:51 tgt left 23:04 Chillance left
adu jnthn: I fixed it 23:07
23:21 BenGoldberg joined 23:31 Ben_Goldberg joined, berekuk joined 23:34 BenGoldberg left 23:37 frdmn left 23:48 PacoAir left