»ö« 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. |
|||
lue | Added pragmas to that gist. | 00:00 | |
00:00
xenoterracide joined
|
|||
lue plans a blog post surrounding that gist some time. | 00:00 | ||
jnthn | FROGGS: Bug exists in socketops.c too | 00:01 | |
FROGGS | ahh, good that you checked that | 00:02 | |
jnthn | Searching for u.handle->data shows 'em up. | ||
TimToady: Well, we don't know that this is *the* bug, but since it extends the lifetime of standard handles, it correlates well. | 00:03 | ||
FROGGS | it is at least the thing that made me crazy for two or three days now | 00:06 | |
00:06
colomon left
|
|||
jnthn | FROGGS: OK. Do you plan to work on it at some point? | 00:10 | |
Or should I put it on my todo list? | |||
FROGGS | jnthn: ahh, I thought you are fixing it atm... | ||
jnthn | Ah, no... :) | 00:11 | |
I already gave up writing code for the day. :) | |||
FROGGS | I can do that I think... just need to figure out what to do :o) | ||
jnthn | Well, the "easy" fix is to just hold the body structure a level of indirection off... | ||
Then just point to it from the movable thing. | |||
FROGGS | and the "proper" fix? | 00:12 | |
jnthn | Might be to look at exactly why the code is stashing the pointer into the body, and see if there's a better design. | ||
FROGGS | k, I'll do that first | 00:13 | |
jnthn | May turn out that the extra level of indirection is still the best way anyway. | ||
I can't tell without diving deeper into it | |||
00:13
rurban1 joined
|
|||
FROGGS | ahh, it is used to access the body in a callback | 00:13 | |
tty_on_read | |||
jnthn | I guessed that much. It's more whey it needs it :) | 00:15 | |
00:15
masak left
|
|||
jnthn | ...I curd have typed that better... | 00:15 | |
00:15
masak joined
|
|||
TimToady | well, that's just tuffet | 00:16 | |
00:16
raiph left,
Mouq left
00:17
zakharyas joined
|
|||
[Coke] | lue: "numeral values" -> "numeric values" ? | 00:19 | |
lue | [Coke]: got it. | 00:20 | |
00:20
tgt left
00:28
pecastro left,
denis_boyun left
00:29
ingy joined,
pecastro joined
|
|||
FROGGS | jnthn: if that is our bug, then should commenting out the offending lines change its behaviour, no? | 00:30 | |
jnthn | FROGGS: Depends which offenders you mean... | 00:31 | |
FROGGS | all six occurrences of body->u.handle->data = body | ||
00:32
araujo left
|
|||
jnthn | But then anything that relies on it being set will crash I guess... | 00:32 | |
FROGGS | that is what I had expected, but: | 00:33 | |
--vmlibs=dynext/libperl6_ops_moar.so=Rakudo_ops_init src/gen/m-BOOTSTRAP.nqp | |||
Heap corruption detected: pointer 0x2aeba49ae650 to past fromspace | |||
00:33
araujo joined
|
|||
FROGGS | and I reconfigured and built nqp and rakudo | 00:34 | |
00:34
btyler joined
|
|||
jnthn | hm | 00:34 | |
ingy | jnthn: I got a new eye today | 00:35 | |
jnthn | ingy: A...new eye? | 00:36 | |
jnthn needs sleep... | 00:37 | ||
'night | |||
TimToady | o/ | ||
lue | ingy: look at you, you made jnthn think he's crazy! :) | 00:38 | |
ingy | cataract surgery | ||
jnthn: ^ | |||
AND… I just switched to weechat | 00:39 | ||
big day | |||
00:43
Guest76769 left
00:44
ashleydev left,
araujo left
|
|||
lue | .oO(It is surprisingly and unbelievably difficult to find a website that'll print the current NTP time on its page.) |
00:46 | |
00:47
airdisa_ left
|
|||
diakopter | FROGGS: I'm curious how much overhead that heap corruption check creates... ;) | 00:48 | |
(hopefully we can remove it someday) | |||
TimToady | obviously not yet :) | 00:49 | |
lue: if they did that, you'd see how much they're cheating with caching :) | 00:51 | ||
FROGGS | ohh, that is interesting | ||
the exploding object is a MVMStaticFrame | |||
00:51
TimK1 joined
|
|||
TimToady | well, obviously you need to make it dynamic then :P | 00:52 | |
FROGGS | dynamite, even | ||
lue | TimToady: you'd think at least one page would think to display it or something. It's generally hard to see if your ntp stuff is actually running. | 00:57 | |
00:57
xinming left
00:58
xinming joined
01:02
_thou left
01:04
zakharyas left
|
|||
lue | Looking at heredocs, "A null terminating delimiter..." Example of a null-terminating delimiter please? | 01:05 | |
TimToady | a blank line, basically | ||
lue | so q:to//; ? | 01:06 | |
TimToady | r: say q:to//foo | ||
camelia | rakudo-parrot 874e35, rakudo-jvm 874e35: OUTPUT«foo» | ||
lue | r: say q:to//foo | 01:08 | |
camelia | rakudo-jvm 874e35: OUTPUT«===SORRY!=== Error while compiling /tmp/7_WvuwQ8cZEnding delimiter not foundat /tmp/7_WvuwQ8cZ:3------> <BOL>⏏<EOL> expecting any of: whitespace vertical whitespace» | ||
..rakudo-parrot 874e35: OUTPUT«===SORRY!=== Error while compiling /tmp/YJYlPqo7tiEnding delimiter not foundat /tmp/YJYlPqo7ti:3------> <BOL>⏏<EOL> expecting any of: whitespace vertical whitespace» | |||
01:09
hummeleB1 left
|
|||
FROGGS | gnight | 01:10 | |
timotimo | jnthn: it wold have been great if you had mentioned that java code can call back into perl6 code as well | 01:11 | |
i should really get one of these wordpress accounts so i can read all the drafts in the future | 01:12 | ||
01:15
jnap left
01:21
btyler left
01:25
arcterus joined
01:29
_thou joined
01:34
_thou left
01:43
daverce joined
01:49
jnap joined
01:54
jnap left
01:55
btyler joined,
raiph joined
|
|||
raiph | lue: added a comment to your s15 gist | 02:01 | |
s/lue/lue++/ | |||
02:04
jnap joined
02:16
eternaleye left
|
|||
rjbs | Somebody please msg me diakopter's email? | 02:17 | |
got it, thanks | 02:20 | ||
02:20
eternaleye joined
02:22
berekuk joined
02:24
berekuk left
02:25
eternaleye left
02:27
eternaleye joined
02:50
raiph left
02:51
cooper left
|
|||
japhb__ | raydiak: Is your Pray code available anywhere? I don't see it from your github page .... | 02:55 | |
And given that I've got a barely contained addiction to optimizing graphics code, I'd love to have a look at what you have so far. ;-) | 02:56 | ||
raydiak | japhb__: I'm working furiously to make it ready for the public ASAP. I don't want people to start forking and committing until I have it a little more settled (and I don't want to make a fool out of myself because I'm still learning). :) | 02:57 | |
did you see the image I put up today w/rudimentary shadows implemented? | 03:00 | ||
03:03
ggoebel111 joined
03:05
autumn left
03:06
cooper joined,
cooper left,
cooper joined,
autumn joined
03:08
daverce left
|
|||
lue | raiph: my definition of ord and chr (and ords and chrs) is based on what Perl 6 already does, that's not my fault :) . | 03:09 | |
r: say "many letters".ord | |||
camelia | rakudo-parrot 874e35, rakudo-jvm 874e35: OUTPUT«109» | ||
03:12
jnap left
|
|||
japhb__ | raydiak: No, I haven't seen today's image. Link? | 03:12 | |
raydiak | japhb__: as far as optimization goes, I haven't done any to speak of so far, it's pretty much just a transliteration of the math into classes and methods with little thought towards performance yet...so there ought to be plenty of fun to be had in that area | ||
japhb__: cyberuniverses.com/pray/#pray-image-6 | 03:13 | ||
japhb__ | :-) | ||
nice | |||
raydiak | thanks :) the awesome feedback from people is a lot of what has kept the momentum so high on this project | 03:14 | |
japhb__ | raydiak: BTW, if you haven't already read it, I recommend the book Physically Based Rendering (www.pbrt.org/). I only have the first edition, but I really enjoyed it. | 03:15 | |
-Ofun is a really strong part of our culture here. | 03:16 | ||
lue | raiph: could you point me to the part of Unicode that guarantees not clashing with 32-bit signed integers? I'm not aware of it off-hand. | ||
(negative signed integers that is) | |||
japhb__ | Oh, and PBRT is the largest and most well written piece of literate programming I've had the joy of reading. | 03:17 | |
raydiak | japhb__: I noticed the -Ofun...it's quite refreshing (nobody asked me WTF I was doing writing it in the first place). thanks for the pointer to the book, it sounds right up my alley! I've been reading about more advanced stuff like that lately (radiosity, lightmapping, volumetric lighting, etc etc) | 03:19 | |
oops, just saw the time! gotta run! | 03:20 | ||
03:38
arcterus left
03:39
colomon joined
03:47
araujo joined
03:54
ggoebel111 left
04:10
arcterus joined
04:13
jnap joined
04:17
jnap left
|
|||
segomos | thank you guys for not writing a spec like scala's language spec | 04:26 | |
dylanwh | you're a pal and a confidant | 04:34 | |
04:38
xinming left
04:39
xinming joined
|
|||
japhb__ | segomos: What do you mean? | 04:45 | |
TimToady | I think that means "Thank you for not writing a spec." :) | ||
we just make suggestions to the people writing the test suite... | |||
raydiak | japhb__: apologies for my sudden departure; was almost late to pick my g/f up after work...I try not to make her wait in December at night alone in the back parking lot of the mall :P | 04:49 | |
segomos | i mean thank you for the language spec that doesn't read like some comp sci professor wrote it to show new CS students how smart he/she is | 04:51 | |
scala's language spec is painful to read | |||
04:52
preflex_ joined,
ChanServ sets mode: +v preflex_
|
|||
segomos | perl6's ever changing spec is, at the very least, concise | 04:52 | |
04:53
preflex left,
preflex_ is now known as preflex
|
|||
lue | segomos: I could change S05 to talk about terminals, non-terminals, semi-terminals, hyper-terminals, junctionary terminals, and whatever made up fluff I can come up with if you want, for starters :) | 04:56 | |
lue , needless to say, looks for the scala spec | |||
segomos | www.google.com/url?sa=t&rct=j&...5469,d.cGU | ||
sorry - that is a long link | 04:57 | ||
TimToady | usually better to follow the link and then copy it from the location bar | ||
lue | or don't use Google :) | ||
segomos | yea i noticed :) | ||
lue | (yeesh, apparently gtk's document view (evince was it?) updated since I last used it, now it looks *awful*) | 04:58 | |
geekosaur | this is the evolution of gtk/gnome in a nutshell.... | 05:00 | |
lue | geekosaur: I don't mind the UI, it just happens to look like crap in places with Greybird. Luckily I use KDE most of time :) | 05:01 | |
[although whatever update I did apparently broke some settings reading thing. Hopefully a restart that I rarely do will fix it.] | |||
raydiak | wow, I just jumped to a random page in the middle, and the first thing I read is: ""Assume a selection of the form e.x where the type of e conforms to scala.Dynamic. Further assuming the selection is not followed by any function arguments, such an expression can be rewitten under the conditions given in §6.26" | ||
lue should get around to telling GTK to make firefox open pdfs in Okular sometime... | 05:02 | ||
"3.2.10 Existential Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26" Oh no. :) | |||
raydiak hides | |||
lue wonders what Scala means by not being able to support Unicode codepoints > 0xFFFF | 05:04 | ||
TimToady | it means it uses Java strings | ||
lue | Hang on, I need to restart my computer. That settings bug is being unreasonable ☹ | 05:06 | |
05:07
lue left
05:10
lue joined
|
|||
lue | hello again o/ | 05:10 | |
05:12
dwoldrich joined
|
|||
TimToady | sucks to program in Java if you speak Ugaritic... | 05:12 | |
lue | TimToady: there's no way to generate a unique and static number for every possible non-precomposed grapheme, is there? (i.e. the number of possible graphemes is ∞) | 05:15 | |
(unless there's some sort of "5 diacritics per character" limit in Unicode I'm unaware of...) | 05:17 | ||
TimToady | well, Int is arbitrarily big, but we're not trying to encode them in an Int, since that wouldn't fit into a native int | 05:18 | |
and string ops have to be fast most of the time, so native is a necessity | |||
but if our Int arrays turn out to be super fast, we could reconsider | 05:20 | ||
that's a mighty big "if" though | |||
lue | yeah, I was assuming int32 (or int64 if we, say, felt like inventing UTF-64 or something ☺) | 05:21 | |
TimToady | that would really chew up memory fast | ||
32 is bad enough that way | |||
lue | Oh? I see no problems with U+00000047 :) | 05:22 | |
TimToady | that would be a G-string | 05:23 | |
lue | But there's no way to generate a negative number based on the grapheme without eventually running into either a break in the algorithm ("Numbers get too large after 10 combining chars") or just too many possibilities. | ||
At least I don't think. | |||
TimToady | right, that's why we're not doing that | 05:24 | |
lue | So it's essentially just (0x80000000..0xFFFFFFFF).pick per-process then, right? | ||
TimToady | well, I think we're going with per-string tables to avoid DOS attacks | 05:25 | |
though we could have some shared tables in some implementations | 05:26 | ||
lue | oh? So "axCCx88" and "axCCx88b" would have different numbers for axCCx88 (assume axCCx88 is a generic uncomposable grapheme) then? | 05:27 | |
TimToady | if we're dealing with a language that has few precomposed graphemes, for instance | ||
yes, if you get negatives, you have to do the indirection to compare the actual graphemes, unless you happen to be sharing tables | |||
lue | (That throws a wrench in NFG-level chr() and ord(), though those arguably become needless at the NFG level anyway) | ||
TimToady | yah | 05:28 | |
lue | .oO( say chr(ord("☃")); # OUTPUT: ☄ (maybe) ) |
||
TimToady | we probably just have to force people down to the Uni level for chr/ord processing | 05:29 | |
05:29
BenGoldberg left
|
|||
lue | The easiest thing to do in that case would be to force codepoints for chr/ord. ...which you just said. | 05:29 | |
TimToady | or emulate it when used on NFG | ||
though again we wouldn't know whether they want NFC or NFD semantics unless they say | 05:30 | ||
lue | Force codepoints within sub chr/ord() { } is what I meant. | ||
TimToady: if it helps, my provisional idea of an S15 says Perl 6 prefers NFC (step down from NFG) whenever NFG doesn't work: gist.github.com/lue/7761244 | |||
TimToady | but NFC and NFD produce different lists of codepoints, so we either have to assume, or force them to be specific | ||
05:31
btyler left
|
|||
TimToady is biased towards NFC too | 05:31 | ||
lue | (that part is there to take care of say "NFG string" and similar, though) | ||
TimToady | but we might end up with a .nfdords or so | 05:32 | |
of course, if NFD is a Buf[Uint32] that already can behave as a list of ords | 05:33 | ||
r: "abc".encode('utf8')[1].say | 05:34 | ||
camelia | rakudo-parrot 874e35, rakudo-jvm 874e35: OUTPUT«98» | ||
TimToady | much like that | ||
lue | I wouldn't be surprised if we just turn ords and chrs into shorthand to-buf converters or something. | ||
(and from-buf, for chrs) | |||
TimToady | well, I'm not sure a buf will flatten like we want in list context | 05:35 | |
lue | True. | ||
TimToady | but we'll have to feel our way into it as NFG comes online | ||
lue | (I would prefer .ords(:nfd) to .nfdords by the way. Feels righter. Or perhaps .nfd.ords even) | 05:36 | |
TimToady | .oO(dfnords) |
||
lue feels just a bit proud of himself for the NF pragma's spelling, by the way :) | 05:37 | ||
TimToady should read it when his crosses aren't eyeing | |||
lue | Fair enough. | 05:39 | |
05:41
SamuraiJack_ joined
05:42
zakharyas joined
|
|||
lue | .oO(There's a weird intersection between the NF* / buf division of viewpoints and the graphs/codes/units/bytes division of viewpoints, from what I've noticed.) |
05:42 | |
05:47
mberends left
05:55
rurban1 left
06:05
synopsebot left
06:11
kaare_ joined
06:24
synopsebot joined
06:25
darutoko joined,
rurban1 joined
06:29
dwoldrich left,
rurban1 left
06:39
zakharyas left
06:47
w0rm_x joined
|
|||
w0rm_x | Hello. | 06:47 | |
06:49
Rix joined
06:53
kaleem joined
07:26
rurban1 joined
07:30
rurban1 left
07:32
kaare_ left
07:39
denis_boyun joined
|
|||
timotimo | o/ | 07:50 | |
07:51
jnap joined
07:57
jnap left
08:01
Rix left
08:03
arcterus left
08:07
Rix joined
08:09
huf left
|
|||
felher | Ui, already three advents post. Hip Hip Array! moritz++ masak++ jnthn++ | 08:10 | |
FROGGS | TimToady: are you going to write something for the calender? | 08:13 | |
08:18
denis_boyun left
08:22
huf joined
|
|||
moritz | \o morning | 08:29 | |
FROGGS | morning moritz | 08:30 | |
Woodi | morning :) | ||
timotimo | earthings, fellow greetlings! | 08:31 | |
FROGGS | hi Woodi :o) | ||
Woodi | I have long awaiting request for a post or documentation: a pictures of Perl6/nqp/moar internals (usually ractangles :) | 08:32 | |
FROGGS | Woodi: moritz updated an svg a few months ago | ||
moritz | Woodi: you mean like docs/architecture.svg in the rakudo repo? | ||
nwc10 | +--------------+ | ||
| Clever stuff | | |||
+--------------+ | |||
timotimo | there's pictures in jnthns slides about moarvm and friends | ||
nwc10 | there, done. | 08:33 | |
actually, | |||
FROGGS | Woodi: raw.github.com/rakudo/rakudo/nom/d...ecture.svg | ||
nwc10++ | |||
moritz | but, bringing that to an advent calendar post wouldn't hurt | 08:34 | |
nwc10 | actually, I have a better one: | ||
+-------------------------------------------+ | |||
| Just code (mostly Perl 6, so take a look) | | |||
+-------------------------------------------+ | |||
tadzik | it may be helpful to have a kind of data flow diagram, showing how code text goes in and program output gets out | 08:35 | |
how it goes to HLL::Compiler, then Grammar, Actions, backend, and execution in setting's context, or so | |||
FROGGS | tadzik++ # go ahead! | 08:38 | |
I'd like to have that too | |||
moritz | well, with the exception of HLL::Compiler, that's what architecture.svg shows | 08:39 | |
Woodi | I was not aware of this, checking | ||
ee, my browser shows <?xml version="1.0" encoding="UTF-8" standalone="no"?> .......... :) | 08:40 | ||
raydiak | Woodi: save it and view it locally | ||
Woodi | I know :) | 08:41 | |
raydiak | sorry, of course. it's late, I'm not thinking clearly. | 08:42 | |
moritz | raydiak: don't apologize for helping | ||
raydiak | I find "helping" and "condescending" to be a blurry line, wanted to make sure I don't come off on the wrong side of it :) | 08:45 | |
08:45
brrt joined
|
|||
moritz | raydiak: that's a good attitude, right | 08:46 | |
Woodi | I just thinked firefox know about svg format... | ||
tadzik | github probably doesn't send proper content-type for that | 08:47 | |
moritz | raydiak: speaking of good, have you decided on a day to write for the advent calendar? :-) | ||
raydiak | Woodi: github does it on purpose in the HTTP headers so people don't use it to host web content and such | ||
moritz | and, very importantly, so that browsers don't act on active content while having the github cookie set | 08:48 | |
Woodi | they do not want to expand to new teritories ? creating social portal or something ? in 2013 ?? ;) | ||
moritz | that's what the github.io domain is for | 08:49 | |
08:53
hummeleB1 joined
|
|||
raydiak | moritz: indeed, I'm down for day 8...looking forward to researching and writing it; thanks for encouraging me to do it! | 08:54 | |
08:54
lizmat left
|
|||
FROGGS | raydiak++ # \o/ | 08:54 | |
tadzik | nice! | 08:55 | |
Woodi | got Inscape portable. btw. I wondered about Rakudo-windows-portable but later I stop thinking it is good idea. Just share... | ||
FROGGS | errm | 08:56 | |
tadzik: you forgot to pick your days :o) | |||
moritz | raydiak: ah great, I hadn't seen your commit | ||
08:56
lizmat joined
|
|||
moritz | raydiak: are you also writing about your ray tracer? that would be really, really cool | 08:57 | |
tadzik | FROGGS: yeah, I couldn't figure out what to write about | ||
I was embarassingly inactive this last year | |||
FROGGS | Woodi: IIRC parrot is not very portable... but hopefully we get the jvm/moar backends to be portable so we can release a usb-stick version | ||
hmmm | |||
raydiak | moritz: Hah! Never even occurred to me! | 08:58 | |
moritz | making nqp-j and rakudo-j relocatable shouldn't be too hard | ||
raydiak: we're always happy to hear/read about Perl 6 being actually used :-) | |||
Woodi | architecture.svg is general view. I thinked about something more detailed what can help new developers to dig into code... | ||
tadzik | Woodi: do you have a particular need here, like "I'd like to dig into this part, but I don't know how or where?" | 08:59 | |
raydiak | moritz: that was one of my big goals for Pray, a real working p6 app, today...and a flashy one at that, I hope by the time I'm done | 09:01 | |
FROGGS | moritz: and once we have S11 module repositories these are movable too | ||
09:07
grep0r left
09:10
xinming left
09:11
xinming joined
09:12
kivutar joined
|
|||
hoelzro | morning #perl6 | 09:15 | |
FROGGS | hi hoelzro | ||
arnsholt | It should be possible to bundle NQP/Rakudo as a single runnable JAR | 09:16 | |
That'd be pretty cool, actually | |||
09:19
lizmat_ joined,
lizmat left
|
|||
tadzik | aww yiss | 09:19 | |
09:20
ssutch left
09:25
grep0r joined
09:26
w0rm_x left,
baest left
09:27
carlin joined
09:28
rurban1 joined
|
|||
FROGGS | r: say 4 x "." ~ "{" | 09:28 | |
camelia | rakudo-parrot 874e35: OUTPUT«===SORRY!=== Error while compiling /tmp/F9iG2RVvd8Unable to parse expression in double quotes; couldn't find final '"' at /tmp/F9iG2RVvd8:1------> say 4 x "." ~ "{"⏏<EOL> expecting any of: s…» | 09:29 | |
..rakudo-jvm 874e35: OUTPUT«===SORRY!=== Error while compiling /tmp/p76cFcf9qQUnable to parse expression in double quotes; couldn't find final '"' at /tmp/p76cFcf9qQ:1------> say 4 x "." ~ "{"⏏<EOL> expecting any of: stat…» | |||
FROGGS | r: say 4 x "." ~ '{' | ||
camelia | rakudo-jvm 874e35: OUTPUT«Cannot convert string to number: radix point must be followed by one or more valid digits in '.⏏' (indicated by ⏏) in sub infix:<x> at gen/jvm/CORE.setting:1395 in block at /tmp/NWhf5IlxyO:1 in any eval at gen/jvm/stage2/NQPHLL.nqp:1086 …» | ||
..rakudo-parrot 874e35: OUTPUT«Cannot convert string to number: radix point must be followed by one or more valid digits in '.⏏' (indicated by ⏏) in method Int at gen/parrot/CORE.setting:12012 in method Int at gen/parrot/CORE.setting:5447 in sub infix:<x> at gen/parrot…» | |||
FROGGS | r: say "." x 4 ~ '{' | ||
camelia | rakudo-parrot 874e35, rakudo-jvm 874e35: OUTPUT«....{» | ||
FROGGS | k | ||
raydiak | moritz: how's this for an idea? if all goes smoothly and there is still an opening in the schedule when the code is ready, I'll write another advent post, about Pray, which will also be the release announcement | 09:31 | |
09:32
rurban1 left
|
|||
raydiak | I hesitate to advertise it too much before it is "real" in the sense that programmers expect there to be...you know...a program :) | 09:32 | |
arnsholt | Actually, a single runnable JAR should maybe be our build product on JVM anyways | ||
09:34
w0rm_x joined
|
|||
moritz | raydiak: sounds good | 09:34 | |
09:36
dakkar joined
09:38
xinming left
09:40
xinming joined,
SevenWolf left
|
|||
diakopter | whoa; who has access to my email that they can forward it to rjbs??!?! | 09:44 | |
moritz | diakopter: I have access to your email address, but not to your email account :-) | 09:46 | |
diakopter: but I'm not quite sure what you actually want to know | |||
diakopter runs away screaming | |||
sry; being silly. will desist. | 09:47 | ||
09:48
mudler joined
|
|||
timotimo | hoelzro: +1 on persisting on perl6 support on github >_> | 09:48 | |
tadzik | diakopter: how was lpw? | 09:51 | |
09:53
jnap joined
|
|||
hoelzro | it's silly how long it's taken | 09:53 | |
timotimo | yes. | ||
it's like ... hey please click this button for us. | 09:54 | ||
yeah we'd all appreciate it! | |||
hey, how about clicking that button? | |||
you know, the one that does everything for us? it would be a great help! | |||
hoelzro | I've even done the work for them! | ||
timotimo | hey, look, we made the continuous integration happy! | ||
tadzik | clickthatbutton.js | ||
timotimo | obviously we have to find a way to h3x0r github.com into merging that pull request | 09:55 | |
social engineering didn't work so far | |||
tadzik | we can contact the rails exploiter guy ;) | ||
hoelzro | hehe | ||
diakopter | yeah but just think if theyadded every language with >40 users... the list would be way too long | 09:56 | |
moritz | there are 136 members in the 'perl6' team of the 'perl6' organization | 09:57 | |
tadzik | well, the list is way long anyway | 09:58 | |
09:58
jnap left
|
|||
tadzik | I don't know what Augeas, BlitzMax or Bro are, and I didn't even scroll very far | 09:58 | |
moritz | Bro is for brogrammers, no? :-) | 09:59 | |
timotimo | .o( bilbro swaggins ) | ||
tadzik | also, they have 3 different languages related to Parrot | ||
Parrot, PASM, PIR | |||
whatever "Parrot" is | 10:00 | ||
timotimo | anything with the name /usr/bin/parrot | ||
10:01
kaare_ joined
|
|||
diakopter | parrot parrots your parrot | 10:03 | |
timotimo | it's just parroting for the fjords | 10:04 | |
(starring Parrotson Fjord) | 10:05 | ||
FROGGS | >.< | 10:06 | |
10:07
cognominal left,
cognominal joined
10:11
Alina-malina left
10:12
Alina-malina joined
|
|||
timotimo | (also starring AwardBIOS-winning actress Demi Moar) | 10:13 | |
FROGGS | /o\ | 10:15 | |
tadzik | bazinga! | ||
FROGGS | hint: neeeeeeeeonggg | 10:22 | |
tadzik | I wish I could asciify the inhale-laugh | 10:23 | |
FROGGS | seen that episode yesterday evening :o) | 10:24 | |
tadzik | www.youtube.com/watch?v=O12ZNxm7EUs#t=15 | ||
it's like dog sniffing sound | |||
timotimo | hm | 10:28 | |
10:32
rindolf joined
|
|||
jnthn | ohhai o/ | 10:33 | |
FROGGS | jnthn: o/ | ||
masak | ohhai \o | 10:35 | |
FROGGS | jnthn: I've pasted three interesting lines to #moarvm yesterday evening | 10:36 | |
masak | FROGGS: a choo-choo train? | ||
FROGGS | a what? | ||
what have I done wrong now? | 10:37 | ||
masak | <FROGGS> hint: neeeeeeeeonggg | ||
FROGGS | ahh, hehe | ||
masak++ | |||
masak | :) | ||
nwc10 | good UGT, jnthn | 10:38 | |
10:38
baest joined
|
|||
tadzik | I like trains | 10:38 | |
masak | tadzik: in Soviet Russia, trains like you! | ||
tadzik | neeeong | 10:39 | |
masak | w0rm_x: hello! welcome! | 10:41 | |
10:41
fhelmberger joined
10:42
tgt joined
|
|||
mathw | good $whenever-it-is | 10:46 | |
masak | antenoon! | ||
mathw | whatever | ||
masak | good *, mathw | 10:47 | |
mathw | Oh wait I do care, because if it's the afternoon that means it's approaching time for a musical evening of fun | ||
hi masak | 10:48 | ||
masak | I find the "musical evening of fun" to be a much more successful concept than either "musical evening of pain" or "musical evening of duck sauce" | 10:49 | |
mathw | my local .pm group's going to start having tech talks | ||
masak | ooh | ||
mathw | the organiser was worried about interest. So far it looks like almost everyone's volunteered to give one | ||
masak | yay | ||
mathw | not sure if anybody wants to *listen* | ||
but we all like to talk, apparently :) | |||
masak | was gonna say :) | ||
at least there'll be a speaker :) | |||
mathw | and yes, a musical evening of fun is better than a musical evening of pain | 10:50 | |
I had a non-musical evening of pain last night | |||
masak | that's like, the worst combination. | ||
pain *and* no music! | |||
mathw | well, it was aikido | 10:51 | |
10:51
slavik left
|
|||
masak | oh. | 10:51 | |
mathw | so this is sort of expected when you check the week's schedule and it says "Monday: ikkajo and self defence" | ||
it's the latter part that hurts | |||
but I was the only person last night to defeat the chief instructor's "you can't do katate mochi ikkajo osae ichi" game :) | 10:53 | ||
masak can't even say "karate mochi ikkajo osae ichi" :) | 10:54 | ||
mathw | katate | ||
w0rm_x | masak, I recently started to take a look at perl 6 (I never used perl before so I dont know perl 5), specially the syntax. The surprise was that it has couple of things that I wish it existed in a language. But from what I have been reading it isn't ready yet. | ||
mathw | karate is different :) | ||
masak | mathw: see? my point exactly. | ||
mathw: I can't even say it. | |||
:P | |||
w0rm_x: it's not ready for everything, no. | |||
w0rm_x: we're working on it. | 10:55 | ||
mathw | Actually I'm hoping somebody has some wisdom about generating documents for print | ||
10:55
slavik joined
|
|||
mathw | w0rm_x: it might be ready, depending on exactly what you want to do with it. There's a lot it can do, but it might not be able to do it quickly enough for you, for example. | 10:56 | |
masak | w0rm_x: the short story is: it's slow, sometimes unstable, and the documentation story is so-so. | ||
mathw | Or there might not be libraries you need, and you can't write them yourself for whatever reason | ||
masak | w0rm_x: but we like the language, the community is great, there are many examples, and people are really willing to help. | ||
compared to Perl 5's CPAN, we're not very far along on modules. | 10:57 | ||
those that exist can be seen at modules.perl6.org | |||
w0rm_x | masak, slow & unstable; for all the implementations? There are few of them from what I read. | 10:58 | |
masak | w0rm_x: there is one in the lead: Rakudo. | ||
10:59
slavik left
|
|||
masak | w0rm_x: Rakudo currently targets Parrot and the JVM. | 10:59 | |
11:00
slavik joined,
slavik left
|
|||
w0rm_x | masak, does that mean Rakudo has to be re-written in some way to improve speed? | 11:00 | |
masak | w0rm_x: yes and no. there are no big refactors on the horizon. | 11:02 | |
jnthn | Rakudo is in decent shape architecturally, but it needs to be optimized, and to learn how to better optimize Perl 6 code. | ||
masak | w0rm_x: but there is work to be done on optimizing. | ||
what jnthn said. | |||
mathw | It's been more about making things work than making things fast, so far. | ||
w0rm_x | Ah ok. | ||
masak | w0rm_x: the one in second place, Niecza, is no longer in active development. but it has a fair amount of features, and it's decently fast. | 11:03 | |
Niecza runs on the CLR. | |||
w0rm_x | Fair enough. Thanks for the clarifying things. | 11:06 | |
mathw starts wondering about calling Clojure libraries from Rakudo-JVM | 11:08 | ||
probably need some sort of adapter interface to make them look less weird | |||
and macros might be a problem | |||
('might', hah) | |||
arnsholt | Well, we'd be limited to whatever's callable from ordinary Java code | 11:09 | |
Somehow, I doubt macros are part of that =) | 11:10 | ||
11:14
slavik joined
|
|||
mathw | Generally Clojure programmers jump through a few hoops to make anything callable from Java at all | 11:16 | |
Or at least, anything callable without the Java programmers going mad | |||
I'll have to look into it when I've got time. It's not like Rakudo has an entirely happy story about calling Java libraries yet anyway. | 11:17 | ||
11:20
PZt left,
colomon left
11:24
colomon joined
11:31
colomon left
11:35
brrt left
|
|||
timotimo | w0rm_x, ooc what language(s) did you come from? | 11:40 | |
i went straight from python to p6 :) | |||
maybe today i will look into the java calling thing | 11:42 | ||
w0rm_x | timotimo, some of Lisp dialects, Haskell, C/C++. I tried Python before, nothing serious though. | ||
timotimo | i may be able to make methods that have unique arity callable without the wursy^Ht | 11:43 | |
wurst | |||
as a haskeller, can you tell me if the ADT module i built is okay? | 11:48 | ||
jnthn | timotimo: Saussage? :) | 11:49 | |
11:55
slavik left
|
|||
timotimo | yup | 12:03 | |
the java method identifier string sausage | |||
jnthn: except when i first looked at the code i didn't see an obvious method to create the dispatchers or to do a dispatching | 12:06 | ||
12:06
kivutar left
|
|||
timotimo | i guess computeInterop does that | 12:10 | |
and the for loop that iterates over the names.entrySet bails out if it finds duplicates, otherwise creates a short-named method | 12:11 | ||
now all i have to figure out, i guess, is how to make proto/multi methods while inside java code :\ | 12:12 | ||
jnthn | Yeah, github.com/perl6/nqp/blob/master/s....java#L266 is the line that spots the dupe and makes sure we don't get shortname methods... | ||
I don't think you want to do it that way. | |||
timotimo | fair enough. alternatives? | ||
should i create a method that takes a capture and manually dispatches for the arity? | 12:13 | ||
jnthn | I was "just" going to generate a method that does something like that, yeah. | ||
I mean, you just do it with the normal args processing things available in Ops | |||
Trouble is that it's createAdaptor that probably needs to be updated... | 12:14 | ||
As that's where you have chance to generate stuff. | |||
So I guess it needs detecting in there... | |||
timotimo | mhm | ||
arnsholt | And Java dispatches methods statically rather than at run-time. There may be some dragons lying in wait for users there as well | 12:15 | |
12:15
mudler left
|
|||
timotimo | what do i have to search for to find a specification for the name format they use? | 12:17 | |
arnsholt | I can't remember. I found it at some point | ||
It might have been somewhere in the JVM spec | |||
(Not the Java spec, mind, but the JVM one) | 12:18 | ||
timotimo | mhm | ||
dalek | p/indy-args: a7f2425 | jnthn++ | src/vm/jvm/ (4 files): Special-case one object arg case of invocation. Many method invocations where no extra parameters look like this, such as almost all grammar rule invocations. |
||
p/indy-args: 343fb95 | jnthn++ | src/vm/jvm/QAST/Compiler.nqp: Unbust Rakudo after indy arg handling work. |
|||
timotimo | i think i see it | 12:19 | |
jnthn: ooooh, rakudo compiles again with the branch? | |||
jnthn | Yeah | ||
timotimo | cool! | 12:20 | |
i'll measure stage compile timings :) | |||
er, stage parse | |||
since the action methods should be invoked much faster now? | |||
jnthn | No, not actions yet; those are obj,obj | ||
I may special-case that path next. | |||
But I've not really wired up all the goodness yet... | |||
timotimo | oh | ||
hm, ok :( | 12:21 | ||
jnthn | Almost all the grammar rule invocations are improved in this regard, though | ||
So it should help a bit on that front. | |||
12:21
preflex left,
preflex_ joined,
ChanServ sets mode: +v preflex_
12:22
preflex_ is now known as preflex
|
|||
timotimo | so stuff I need to parse looks like '(' [ '['* <[BCDFIJSZ]> | 'L' .*? ';' ] | 12:23 | |
er, with a * at the end | |||
what mechanism should i be using for that in java-space? seems like a very simple finite automaton that feeds a counter would suffice | 12:24 | ||
jnthn | Well, I think you can do it off the normal reflection objects rather than parsing? | ||
timotimo | oh, well that would certainly be nice :) | 12:25 | |
12:25
atroxaper joined
12:26
colomon joined
|
|||
timotimo | i can't find documentation for ClassContext | 12:28 | |
oh | |||
of course not | |||
masak | of course not? | 12:38 | |
12:38
pecastro left
|
|||
timotimo | yeah, it's declared in the same file :) | 12:41 | |
it's not something java offers | |||
jnthn: should i worry about var-args methods? | |||
12:43
tgt left
|
|||
jnthn | Eventually perhaps... | 12:44 | |
timotimo | for now i'll just poison a method name if there's a method with var args with that name i guess | ||
arnsholt | Java varargs are equivalent to a single last argument which is Something[], aren't they? | 12:45 | |
12:45
pecastro joined
|
|||
timotimo | maybe | 12:45 | |
dalek | p/indy-args: 7e17160 | jnthn++ | src/vm/jvm/ (3 files): Also special-case (obj,obj); also very common. |
||
jnthn | arnsholt: yes | ||
12:46
dmol left
12:48
dmol joined,
kivutar joined
|
|||
timotimo | i think i found the right datastructure for the arity stuff | 12:54 | |
masak .oO( an ar-ray ) :P | 12:55 | ||
timotimo | aharr! | ||
nope, in this case a hashmap of hashmaps | |||
though the inner one is a hash from integer to string, so it could just as well be a list. | 12:56 | ||
masak | but I guess it would be sparse? | ||
timotimo | yes | ||
12:56
jnap joined
|
|||
timotimo | but also: i need to differentiate between "i haven't seen a method with this arity yet" and "i have seen more than one method of this arity" | 12:56 | |
12:57
dmol left
|
|||
timotimo | the former is a missing key, the latter is a key that has "null" as its value at the moment | 12:57 | |
jnthn | timotimo: Keep in mind that we want to also do this by type later on too... | ||
hoelzro | anyone going to FOSDEM 2014? | ||
12:57
dmol joined
|
|||
hoelzro | trying to decide whether or not to go | 12:57 | |
jnthn | hoelzro: I'm planning to go | 12:58 | |
timotimo: So good to pick something that'll let us keep the things of different arities around for the future... | |||
timotimo | hm, aye | ||
12:59
dmol left,
dmol joined
13:01
jnap left
|
|||
hoelzro | cool, I can pick your brain ;) | 13:02 | |
lizmat_ | hoelzro: on the Sat we'll have a Perl devroom with probably a lot of Perl 6 talks :-) | 13:03 | |
hoelzro | \o/ | ||
lizmat_ | on both days, we will have a Perl booth also | ||
13:03
lizmat_ is now known as lizmat
13:06
tangentstorm joined
|
|||
timotimo | i suppose a List<String> instead of String will already do the trick | 13:07 | |
13:10
denis_boyun joined
|
|||
timotimo | does java have the [] syntax for hashmaps? | 13:10 | |
jnthn | No | 13:11 | |
timotimo | hm | ||
i suppose the answer to all questions of the kind "does java have $SYNTAX for $THING" is "no" | |||
13:12
rindolf left
13:15
denis_boyun left
|
|||
timotimo | oof. | 13:17 | |
if a HashMap has a .size of 1, how do i get the only value out of it without a thousand lines of code? | |||
i guess .values.toArray(new *magical type here*)[0] would work | 13:18 | ||
13:19
denis_boyun joined
|
|||
jnthn | Isn't there a way to get the list of values? .values() or so? | 13:22 | |
arnsholt | .values().get(0) innit? | 13:23 | |
timotimo | oh | ||
Collection doesn't have .get | 13:24 | ||
arnsholt | Huh. Indeed it doesn't | ||
toArray()[0] is probably it, in that case | 13:25 | ||
timotimo | oh well. | ||
arnsholt | If you know the type of the collection toArray(new TheThingCollected[0]) gets you a typed array | 13:26 | |
timotimo | i have to [0] that? | 13:27 | |
arnsholt | Yeah | 13:28 | |
timotimo | OK, thanks! | ||
arnsholt | It'll just get you an object of the right type, rather than just an Object | ||
timotimo | i'll have a prototype that prints out diagnosis text if it thinks it can generate an arity-unambiguous dispatcher | ||
if there's like 5 arities for a method and only one of them has ambiguous calling possibilities, should i generate a dispatcher for the other 4, or no dispatcher at all? | 13:29 | ||
tangentstorm | any chance we could get camelia to join #learnprogramming? | 13:30 | |
timotimo | you're teaching perl6 in #learnprogramming? :) | ||
tangentstorm | well, there's a guy studying perl... don't know which version. :) | 13:31 | |
moritz | tangentstorm: is that on freenode too? | ||
timotimo | glomp him at once! ;) | ||
tangentstorm | moritz: yeah... it's the irc channel for reddit.com/r/learnprogramming/ | ||
we have a j bot and used to have a haskell bot. | 13:32 | ||
13:32
camelia left
13:33
camelia joined
|
|||
dalek | albot/host07: 2b7d4c6 | moritz++ | freenode.org.conf: join #learnprogramming (for tangentstorm++) |
13:33 | |
moritz | EWRONGBRANCH | ||
dalek | rl6-roast-data: 3a8cbed | coke++ | p (2 files): today (automated commit) |
13:34 | |
albot: aa7a8c9 | moritz++ | freenode.org.conf: join #learnprogramming (for tangentstorm++) |
|||
13:34
ChanServ sets mode: +v camelia
|
|||
jnthn | timotimo: I'd generate it for the other 4...seems more useful :) | 13:35 | |
timotimo: And maybe even throw on the ambig cases saying "use X or Y to be clear which you mean" so people can even copy-paste the descriptors :) | 13:36 | ||
13:36
denis_boyun left
13:39
xenoterracide left
|
|||
tangentstorm | moritz: thank you! :) | 13:40 | |
moritz | tangentstorm: you're welcome | ||
timotimo | jnthn: that would be fantastic | 13:43 | |
13:45
btyler joined
|
|||
timotimo | jnthn: i'll have to generate jvm bytecode for a bunch of ifs and then invokedynamic/invokestatic? | 13:45 | |
jnthn | Sounds about right...I guess invokestatic or invokevirtual as you want to end up in the generated adaptor... | 13:47 | |
timotimo | oh, yes | 13:50 | |
13:50
ajr joined
13:51
ajr is now known as Guest3357,
Guest3357 is now known as ajr_
|
|||
timotimo | src/vm/jvm/runtime/org/perl6/nqp/runtime/BootJavaInterop.java:269: error: generic array creation List<String> matching_descriptors = descriptors_by_arity.values().toArray(new List<String>[0])[0]; | 13:54 | |
hum | |||
lizmat | looking at lue's S15 proposal | 13:57 | |
I can't help but wonder whether we wouldn't need a "pragma" statement in the family of package/class/module | 13:58 | ||
and then only allow "yes" and "no" to call pragma's | |||
in order to avoid confusion between pragma's and "real" modules | |||
so, for "no warnings" there wouldn't be a diff | 13:59 | ||
and instead of "use warnings", one would say "yes warnings" | |||
thereby separating the loading code functionality from tweaking compile time settings | 14:00 | ||
and run time settings | |||
core pragma's wouldn\'t need to be loaded, user defined pragmas would need a 'use' statement once in the outer scope where they're used | 14:01 | ||
TimToady: would that make sense ? | 14:02 | ||
14:02
ajr_ left
|
|||
lizmat | initially, I thought "ok" instead of "yes", but that would wreak havoc on the test-suites | 14:03 | |
so: "ok warniings" if you want warnings enabled, "no warnings" if you don't | |||
14:03
ajr_ joined
14:05
kaleem left
|
|||
timotimo | huh, isn't this supposed to be fixed? Unhandled exception: java.lang.NoSuchMethodError: org.perl6.nqp.runtime.Ops.printfh(Lorg/perl6/nqp/sixmodel/SixModelObject;Ljava/lang/String;Lorg/perl6/nqp/runtime/ThreadContext;)Ljava/lang/String; | 14:05 | |
FROGGS | timotimo: now I've seen that twice in 24 hours on this channel... | 14:06 | |
lizmat | commuting to Amsterdam.PM meeting& | 14:08 | |
14:08
lizmat left
|
|||
moritz | timotimo: I've send you an invitation to the calendar | 14:08 | |
timotimo | an invitation? | ||
jnthn | timotimo: stage0 is still using it I guess... | 14:09 | |
moritz | timotimo: an email with a link where you can get an account as editor | ||
timotimo | oh cool! | ||
moritz | timotimo: so that you can preview and write posts :-) | ||
anybody else want/need one? | |||
timotimo | thanks | ||
oh, i already seem to have an account! | 14:10 | ||
14:11
btyler left
|
|||
moritz | with the same email address? | 14:12 | |
14:13
PacoAir joined
|
|||
timotimo | no, but it doesn't matter :) | 14:14 | |
14:15
rindolf joined
14:16
TimK1 left
14:17
tgt joined
|
|||
timotimo | so... how do i fix my jvmnqp? | 14:21 | |
jnthn | I don't think you should be doing this in nqp at all really... | ||
I'd been planning to put it into the Rakudo JVM interop class | 14:22 | ||
Maybe by overriding something existing, or maybe by adding a method to add this stuff that can be overridden as part of the Rakudo JVM interop subclass. | 14:23 | ||
timotimo | OK, but that still leaves me with the problem that i don't have an nqp-jvm that i can use :) | 14:24 | |
jnthn | huh? | 14:25 | |
timotimo | nqp-jvm doesn't build. it complains about the lack of printfh in the ops | ||
jnthn | Without any changes of yorus? | ||
That probably means it's trying to report an error. | |||
timotimo | that must be it :\ | 14:26 | |
oh, yes, i had some dirt in my working copy! | |||
14:31
kaleem joined,
kaleem left,
rurban1 joined
14:32
kaleem joined
|
|||
timotimo | that was it indeed. | 14:33 | |
14:35
lizmat joined,
jnap joined
14:36
rurban1 left,
sergot joined
|
|||
lizmat | moritz: could you please also send me an invitation for the calendar? | 14:36 | |
it appears colomon++ already did Sets and Bags in the past though | 14:37 | ||
colomon | a lot has changed since then | ||
lizmat | (and yes, I'm not driving myself) | ||
colomon | lizmat++ | ||
moritz | lizmat: sent. | 14:40 | |
lizmat | thanks! | ||
14:43
bluescreen10 joined
|
|||
jnap | thanks for the advent calender stuff, it does help | 14:44 | |
14:44
rindolf left
|
|||
moritz | \o/ and you're welcome | 14:45 | |
jnap | I look forward to the day when I know Perl6 well enough to Port Catalyst ;) | 14:46 | |
14:46
ggoebel111 joined
14:47
kaleem left
|
|||
timotimo | what's the magic incantation to only rebuild the runtime jar thingie? | 14:48 | |
moritz | make nqp-runtime.jar # ? | ||
14:48
btyler joined
|
|||
timotimo | i'll try | 14:49 | |
14:51
btyler_ joined,
cooper left
14:53
fridim__ left
14:54
PacoAir left
14:55
PacoAir joined
|
|||
timotimo | gist.github.com/timo/cbdfdeab27c3af40c0a0 :) | 15:02 | |
jnthn | nice :) | 15:05 | |
timotimo | but it's all inside nqp for the moment | ||
why exactly do you not want it to be in nqp? | |||
because nqp doesn't have multiple dispatch for methods? | 15:06 | ||
FROGGS | it has | ||
otherwise as_mast would not work | |||
timotimo | er | ||
of course :) | |||
FROGGS | :o) | ||
timotimo | but ... only with fixed arity, no? | ||
FROGGS | dunno | ||
moritz | no | 15:07 | |
timotimo | hm, ok | ||
FROGGS | the dispatcher is implemented in nqp, no? | ||
so, there is nothing special in rakudo | |||
timotimo | well, i'll implement the code gen for the arity based dispatch now and after i get it to work, i'll move it over to rakudo if i can | ||
moritz | nqp: class A { proto method a(*@a) {*}; multi method a() { say 42 }; multi method a($x) { say 5 } }; A.a() | ||
camelia | nqp-parrot: OUTPUT«Unable to parse expression in blockoid; couldn't find final '}' at line 2, near "say 42 }; "current instr.: 'panic' pc 16262 (gen/parrot/stage2/NQPHLL.pir:6020) (gen/parrot/stage2/NQPHLL.nqp:426)» | 15:08 | |
..nqp-jvm: OUTPUT«Unable to parse expression in blockoid; couldn't find final '}' at line 2, near "say 42 }; " in panic (gen/jvm/stage2/NQPHLL.nqp:379) in FAILGOAL (gen/jvm/stage2/NQPHLL.nqp:386) in blockoid (gen/jvm/stage2/NQP.nqp:983) in method_def (gen/jvm/stage2/N…» | |||
..nqp-moarvm: OUTPUT«Unable to parse expression in blockoid; couldn't find final '}' at line 2, near "say 42 }; "panic» | |||
moritz | nqp: class A { proto method a(*@a) {*}; multi method a() { say(42) }; multi method a($x) { say(5) } }; A.a() | ||
camelia | nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«42» | ||
moritz | nqp: class A { proto method a(*@a) {*}; multi method a() { say(42) }; multi method a($x) { say(5) } }; A.a(6) | ||
camelia | nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«5» | ||
timotimo | mhm mhm | ||
brrr, it's cold in here | |||
i shouldn't have taken that lemonade from the fridge | |||
FROGGS | I have warm tea :o) | 15:09 | |
timotimo | that's probably warmer than cold lemonade | ||
15:10
btyler left,
btyler_ left
|
|||
FROGGS | earl grey, hot | 15:11 | |
timotimo | :) | ||
jnthn: what must the type signature be for the java-level method i generate? | 15:12 | ||
jnthn | timotimo: Same as the other generated ones I guess... | 15:13 | |
timotimo | yeah, okay, but where do i find them? :P | ||
15:14
cooper joined,
cooper left,
cooper joined
|
|||
jnthn | createAdaptorMethod should give some hints | 15:15 | |
timotimo | OK | ||
15:15
rurban1 joined
|
|||
jnthn | ah, it's in startCallout | 15:15 | |
timotimo | ah, the void, CU, TC, CR, CSD, AOBJ part? | 15:16 | |
jnthn | yeah | ||
timotimo | should i chop off the first part of startCallout into a separate method and re-use that? | 15:17 | |
lizmat is lacking inspiration for an advent post | |||
tadzik | same here | ||
timotimo | lizmat: have you looked at the topic suggestions yet? | ||
lizmat | Sets/Bags have been done | ||
ah, good point | |||
moritz | lizmat: you could look at your commits this year, and ask yourself "is this worth telling about"? | 15:18 | |
like the deprecation trait. People can use that in their own programs, right? | 15:19 | ||
jnthn | lizmat: One on the :k/:kv/:pairs etc might work | ||
lizmat | adverbs on slices | ||
hmmmm | |||
15:20
btyler joined
|
|||
lizmat | I was also thinking "is default" and other variable traits | 15:20 | |
moritz | +1 | ||
FROGGS | or programming design patterns / perl6 best practices | 15:21 | |
like skimming through rosettacode and explain how a how a problem might be solved in perl6 | |||
lizmat | moritz: yes, you can *only* use "is DEPRECATED" in user programs, not in core | 15:22 | |
in core, you have to fake it | |||
FROGGS | I'd like to read something from masak or jnthn about general programming topics fwiw | ||
lizmat | maybe a post about changes in the past year in the spec, combined with "is DEPRECATED" ? | 15:23 | |
moritz | +1 | ||
FROGGS | +1 | ||
dalek | : 7dacd1a | (Elizabeth Mattijsen)++ | misc/perl6advent-2013/schedule: Claim day 5: Spec changes and operational fallout |
15:25 | |
lizmat | driver switch, will be back later& | 15:29 | |
15:29
lizmat left
|
|||
timotimo | jnthn: i'm not sure what op to use to find out more about the capture i got passed. nqp::takecapture or something? | 15:29 | |
oh, actually just captureposelems should be enough! | 15:30 | ||
jnthn | timotimo: Well, do the same arity check op sequence but use the rnage of allowable arities. | ||
timotimo: And then that csd thing (a CallSiteDescriptor) has a numPositionals or so | |||
masak | lizmat: I for one would love to see a post about adverbs on slices. | ||
jnthn | Which should tell you just what you want. | ||
timotimo | great, that's what i needed to know | 15:32 | |
so i'll ALOAD the csd and visitFieldInsn(Opcodes.GETFIELD, TYPE_CSD.getInternalName, "S;") | 15:34 | ||
no, just "S" | |||
er, Ljava.lang.String; | |||
also, "numPositionals" | 15:35 | ||
er, why was i thinking of a string? | |||
I is correct, of course | |||
i'll have to i2l, then dup2 and then use lcmp and then compare the comparison result to lconst_0 using ifeq? | 15:41 | ||
jnthn | timotimo: Well, you don't have to l2i, you can also use an integer constant to compare it to... | ||
uh, i2l I mean | |||
timotimo | oh. i guess. | 15:42 | |
and then i can use if_icmpeq? | |||
jnthn | iirc, yes | ||
timotimo | can i just pass a label there and it'll do the branchbyte thing for me? | ||
jnthn | Yeah, asm does the offset computation | 15:44 | |
timotimo | excellent. i should be able to continue hacking for a bit now | 15:45 | |
at the end i'll have to figure out how to actually make the method i generated available to nqp; do i just have to pass the full name into some magic function that turns it into a CodeRef? | |||
jnthn | timotimo: No, it's done through the CodeRefAnnotation | 15:46 | |
timotimo | oh, so after the visitAnnotation for that, the av.visit("name", ...) creates the coderef for me and i'll just have to look it up somewhere? | 15:47 | |
jnthn | nqp: sub foo(&bar) { bar() }; foo({ say(1) }) | 15:48 | |
camelia | nqp-moarvm, nqp-jvm, nqp-parrot: OUTPUT«1» | ||
jnthn | timotimo: No, it says that when the compilation unit is loaded the coderef should be created... | 15:49 | |
15:49
Suhosin left
15:50
Suhosin joined
|
|||
timotimo | now i'm confused :) | 15:50 | |
jnthn | timotimo: The code that did the existing shortname stuff is what takes the built code-refs and puts them into the methods table. | ||
We don't create code-refs by hand any more. We just annotate that they should be created. | |||
timotimo | oh | 15:51 | |
so, er, what do i have to put into HashMap<String, CodeRef> names for my custom method to be invoked? | |||
15:51
ajr joined
15:52
ajr_ left
|
|||
jnthn | I think you've got the overall process mixed up | 15:52 | |
15:52
ajr is now known as Guest27416,
Guest27416 is now known as ajr_
|
|||
jnthn | createAdaptor produces a Java class that subclasses CompilationUnit, with things in annotated with CodeRefAnnotation | 15:52 | |
That is then loaded, and it's the compilation unit loading that produces the CodeRefs for you | 15:53 | ||
The building of the map comes after that, up in $indy_meth | |||
oops | |||
Up in computeInterop | |||
timotimo | oh, interesting | 15:54 | |
so at that point the coderefs have been created | |||
er, that's bad, though. i've been writing the code to create the dispatcher methods into the computeInterop method | 15:55 | ||
jnthn | adaptorUnit.initializeCompilationUnit(tc); // this is the line that triggers it, iirc | ||
Oh...but I said earlier they needed to go on adaptorUnit? :( | |||
timotimo | sorry, i guess it was too much new stuff at once :( | ||
jnthn | k | ||
But yeah, they really have to go there. | 15:56 | ||
timotimo | i think i can move it easily | ||
jnthn | It makes sense...once you work out what the heck it's doing :) | ||
jnthn didn't write this lot so also had to figure it out in the past :) | |||
timotimo | hehe | ||
you meant it has to go into createAdaptor? | 15:57 | ||
jnthn | yeah | 15:58 | |
for (Method m : target.getMethods()) createAdaptorMethod(cc, m); | |||
That's the thing that makes all the long-name adaptor methods | |||
timotimo | mhm, yeah | ||
jnthn | I think you need to in that loop build your hash of things by short name/arity | ||
timotimo | i'll add createShorthandDispatchers beside it | ||
that's where i do it, yes | |||
jnthn | And then use it for the decidign which things to crate | ||
Yeah, in a createShorthandDispatchers or so. | 15:59 | ||
Or make another pass over target.getMethods() if you want to keep things more isolated | |||
timotimo | that's my current approach | 16:00 | |
i'm still confused. how can i re-use the long-named method if i don't have to create a dispatcher? | 16:03 | ||
maybe the logic for the no-dispatcher-needed stuff should stay where it has been before | |||
jnthn | Yeah, you do now have to distinguish shortname generated things from just installing one thing under a short name | 16:05 | |
But you know that a generated short-name thing will never have a / in it | |||
May be a better way to factor it... | 16:06 | ||
timotimo: Does NQP::Optimizer actually do anything? | 16:07 | ||
timotimo | it descends into regexes ;) | ||
let me have a quick look. | |||
i think it annotates ops that it knows to return integers with that | |||
diakopter | I played Descent | 16:08 | |
timotimo | descent 1? | ||
good choice. | |||
jnthn | Well, the thing that worries me is...it never walks QAST::Stmts and QAST::Stmt nodes... | ||
oh, wait, it does...d'oh :) | |||
mis-read :) | |||
timotimo | did i put an optimizer into the ... ah | ||
jnthn | yeah :) | 16:10 | |
Though, given 1 + 1 doesn't seem to trigger... | |||
Do we ever actually build it? | 16:11 | ||
ah, yes :) | |||
But 1 + 1 remains an add_n... | 16:12 | ||
timotimo | that may explain why the winings were not so extreme :) | 16:13 | |
jnthn: i'm not sure i understand the "generated short-name thing will never have a / in it" piece | 16:15 | ||
16:15
dave1c left
16:17
davecv left
|
|||
jnthn | oh duh, it is working... | 16:17 | |
timotimo | and what is the name supposed to be, ooc? | ||
ah, were you using --target=ast? :)) | 16:18 | ||
jnthn | yes :P | ||
timotimo | :D | ||
i'm glad i'm not the only one who makes that mistake | |||
cc.target.getName is the name of the class, aye? | |||
and then it has a space and the descriptor that holds the parameter list? | 16:19 | ||
i guess the descriptor actually starts with the name of the method | |||
jnthn | nqp: foo() | 16:36 | |
camelia | nqp-moarvm: OUTPUT«No lexical found with name '&foo'frame_name_0» | ||
..nqp-jvm: OUTPUT«java.lang.NullPointerException in (/tmp/EAaWB6qvC0:1) in (gen/jvm/stage2/NQPHLL.nqp:1100) in eval (gen/jvm/stage2/NQPHLL.nqp:1086) in evalfiles (gen/jvm/stage2/NQPHLL.nqp:1292) in command_eval (gen/jvm/stage2/NQPHLL.nqp:1196) in command_line…» | |||
..nqp-parrot: OUTPUT«Could not find sub &foocurrent instr.: '' pc 45 ((file unknown):36899495) (/tmp/dxnVhdrWTz:1)» | |||
16:37
thou joined,
rurban1 left
|
|||
timotimo | oh. now i don't have access to the right method object when i'm at this point :\ | 16:39 | |
is there something like Tuple? | 16:40 | ||
google says no :) | 16:41 | ||
TimToady | well, $(1,2,3) is close | ||
or are we asking about Java? | 16:42 | ||
timotimo | java, yes | ||
TimToady | .oO("I am too soon oldt and too late schmart.") |
16:43 | |
FROGGS .oO( #perl6 - where nothing is off topic unless we don't like you! ) | 16:44 | ||
timotimo | i'm asking about java to make perl6 better :) | ||
also, you like me | |||
TimToady is getting sleepy | |||
FROGGS | true true :o) | ||
TimToady: well, then hibernate like sheldon does :o) | 16:45 | ||
16:51
kaleem joined
|
|||
timotimo | what kind of error should i throw if an ambiguous call is attempted? | 16:51 | |
TimToady | "Was that a duck call?" | ||
timotimo | %) | 16:52 | |
timotimo does some heavy, heavy cargo culting | 16:54 | ||
the NullPointerException is the result | 16:55 | ||
i wish invoking jdb wasn't so had >_> | 17:00 | ||
well, there's a jdb server ... | 17:01 | ||
TimToady | does the Java wurst not provide enough information to simply generate a set of multis? | 17:02 | |
timotimo | jnthn advised against going the multi route | 17:03 | |
TimToady | "argument by authority is the weakest form of argument" --wp | 17:04 | |
timotimo | :) | ||
17:08
denis_boyun joined
17:09
zakharyas joined
|
|||
timotimo | it says Source file not found: BootJavaInterop.java even though i gave it ten different "use" lines | 17:10 | |
17:13
atroxaper left
|
|||
timotimo | i can't kill the java process any more >_< | 17:15 | |
TimToady | because it's already dead? | ||
timotimo | nope. | 17:16 | |
kill -9 helped, though | |||
17:16
lizmat joined
|
|||
TimToady | speaking of which, I tried to write a signal handler using sun.misc.Signal and sun.misc.SignalHandler, but couldn't figure out what to pass to the second argument of .handle | 17:18 | |
timotimo | yay, i can has code | 17:20 | |
diakopter | TimToady: cool. what is .handle | 17:22 | |
TimToady | a method in sun.misc.Signal to set a signal handler | 17:23 | |
timotimo | Step completed: "thread=main", 63E3D8F0624DF5900C1DCFCE51700D18B761D257.qb_4851(), line=16,803 bci=649 ....... >_> | 17:24 | |
diakopter | TimToady: docs.oracle.com/javase/7/docs/platf...jvmti.html | ||
timotimo | that's where the NPE seems to fly | ||
diakopter | TimToady: rotfl especially at the utf8 section | 17:25 | |
timotimo | not helpful :( | 17:26 | |
jnthn: can i drop my code onto you and ask you where the NPE comes from? >_< | |||
TimToady | yes, Java still heavily believes in null-terminated strings and 16-bit Unicode | ||
17:29
rurban1 joined,
w0rm_x left
|
|||
TimToady | well, their UTF-8 does, anyway | 17:29 | |
timotimo | lue: how long until we can preview your advent blog post for tomorrow? | ||
17:30
lizmat left
17:31
kaleem left
17:32
fhelmberger_ joined
17:33
darutoko- joined
17:35
fhelmberger left,
darutoko left
17:36
fhelmberger_ left
17:38
kbenson joined
|
|||
timotimo | yay, i have running code! | 17:39 | |
... what do i test it with? :\ | 17:40 | ||
kbenson | An interesting article on java substrings and memory, which may be of interest to people who write interpreters: twistedoakstudios.com/blog/Post8147...ing-memory | ||
jnthn | timotimo: Find soemthing in the Java class library that just overloads by arity | 17:41 | |
17:42
denis_boyun left
|
|||
timotimo | i'm sprinkling stuff into the jakudo core setting now | 17:42 | |
dalek | p/indy-args: d869316 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/IndyBootstrap.java: Various indy refactors/cleanups. |
17:43 | |
p/indy-args: f3d8cf8 | jnthn++ | src/vm/jvm/ (2 files): Preparations for callstatic support. Used when we know a code object lookup is not going to change its target beneath us. For now, just useful info for JVM. |
|||
p/indy-args: 917927a | jnthn++ | src/NQP/Optimizer.nqp: Tidy up NQP optimizer; do some call => callstatic. |
|||
p/indy-args: 3151ce1 | jnthn++ | src/NQP/ (2 files): Fix call => callstatic optimization. |
|||
p/indy-args: daeee99 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/IndyBootstrap.java: Further indy optimizations for sub calls. |
|||
timotimo | i'll do a spectest while i go out to eat | 17:46 | |
btyler | jnthn++ #nice advent post! learned a few things I hadn't picked up lurking here | 17:48 | |
17:48
Rotwang joined
17:55
ajr_ left
17:57
spider-mario joined
18:01
ssutch joined
18:03
dakkar left
|
|||
moritz | jnthn++ indeed; nice post, nice work | 18:07 | |
18:07
sergot left
18:08
sergot joined,
colomon left
18:09
DarkWolf84 joined
|
|||
DarkWolf84 | hello | 18:09 | |
moritz | hi DarkWolf84 | 18:10 | |
18:11
DarkWolf84 left,
DarkWolf84 joined,
colomon joined
|
|||
DarkWolf84 | hello | 18:11 | |
moritz has a deja-vu | 18:12 | ||
DarkWolf84 | I'm sorry bug in the client | 18:13 | |
18:13
DarkWolf84 left
|
|||
PerlJam wonders if the bug is that the client keeps joining #perl6 or keeps leaving #perl6 | 18:14 | ||
18:14
ajr joined
18:15
ajr is now known as Guest81905,
DarkWolf84 joined,
Guest81905 is now known as ajr_
|
|||
DarkWolf84 | much better | 18:15 | |
timotimo | this food is not a minute too early | 18:16 | |
DarkWolf84 | I'm not sure this is the right place to ask but who owns rosettacode | 18:19 | |
because I was inspired from saying from TimToady about dining philosophers problem | 18:22 | ||
and wrote some in perl5, Coro and AnyEvent | 18:23 | ||
18:23
darutoko- left
|
|||
dalek | p/indy-args: a620659 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/IndyBootstrap.java: Further indy optimization of method calls. Previous attempts to do this used the guardWithTest approach. However, this made performance worse, not better. Now we go for a simpler approach that assumes that despite method calls being polymorphic, in reality the majority are monomorphic. So it optimizes for that case. Thanks to other improvements, there's no loss if we're wrong and fall back to the normal dynamic lookup. |
18:24 | |
jnthn | DarkWolf84: Not sure about who owns it, but iirc it's wiki-like, so if you have a solution to a problem for a language you can add it. | ||
DarkWolf84 | should I ask some permision? | 18:25 | |
PerlJam | DarkWolf84: no. forgiveness >>> permission :) | ||
DarkWolf84 | ok | 18:26 | |
PerlJam | IIRC, mikemol "owns" rosettacode. You could ask him if you need some "authority" | ||
18:26
kst` joined
18:28
SamuraiJack_ left
18:29
kst left
18:31
kivutar left
|
|||
rurban | kbenson: I answered to the java substring problem at twistedoakstudios.com/blog/Post8147...ing-memory | 18:34 | |
timotimo | jnthn, good speed improvements? | ||
masak | DarkWolf84! \o/ | 18:41 | |
DarkWolf84 | hi, masak | ||
kbenson | rurban: interesting. In truth, I didn't look super close at the article. I see stuff that looks interesting to VMs and think "hmm, I know some people working on that..." | 18:45 | |
masak | * FROGGS .oO( #perl6 - where nothing is off topic unless we don't like you! ) | 18:50 | |
to which the obvious retort is "FROGGS, please stay on topic" | |||
:P | |||
FROGGS | :P | 18:51 | |
I won't move! | |||
18:51
lizmat joined
18:54
PZt joined
|
|||
jnthn | timotimo: In some micro-benchmarks for NQP, there's certainly some. I seem to have regressed some spectests. | 19:07 | |
19:11
btyler left
19:12
btyler joined
|
|||
timotimo | 'some microbenchmarks' :/ | 19:13 | |
sounds just likevthe stuff i keep doing :) | 19:14 | ||
DarkWolf84 | rosettacode.org/wiki/Dining_philoso...d_AnyEvent | 19:17 | |
I posted it | 19:18 | ||
ajr_ | DarkWolf84: Just don't abuse the abos. (When anybody's looking.) | ||
19:19
Alina-malina left
|
|||
DarkWolf84 | sorry | 19:20 | |
19:26
kaare_ left
|
|||
masak | ajr_: the... aborigines? o.O | 19:30 | |
ajr_ | I think I have the quote correct. | ||
jnthn | Phew, looks like all my spectest regressions were down to a single thinko. | ||
19:31
Alina-malina joined
19:32
kaare_ joined
|
|||
masak | ajr_: I have no idea what quote that might be. | 19:36 | |
ajr_ | The "Three Bruces". | ||
19:38
denis_boyun joined
|
|||
dalek | p/indy-args: 7805299 | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/IndyBootstrap.java: Fix excessive decontainerization bug. Fixes Rakudo spectest regressions resulting from indy work. |
19:38 | |
masak | oh, ok. | ||
19:43
ajr_ left
|
|||
jnthn | A while back we discussed a bug involving some split/join thing taking gigabytes, but I can't find it now. :( | 19:45 | |
lizmat: Dunno if you remember ^^? | |||
lizmat | yes, I do vividly! | 19:46 | |
moritz | iirc it was split that was very slow, not join | ||
19:47
spider-mario left
19:49
ajr joined
|
|||
jnthn | Well, I'm more looking at the insane memory use...does anybody have the code that triggered it? | 19:49 | |
19:49
ajr is now known as Guest22765,
Guest22765 is now known as ajr_
|
|||
lizmat | (^10000).join(' ').split(' ') ?? | 19:49 | |
lue | hello world o/ | 19:51 | |
moritz | jnthn: say (^20_000).join(',').split(',')[*-1]; | ||
java.lang.OutOfMemoryError: Java heap space | |||
19:53
airdisa joined
|
|||
lue | lizmat: fwiw I've always wondered why pragmas were done with module calling syntax too. | 19:53 | |
timotimo: shouldn't be long now :) | |||
19:56
ajr_ left
19:57
jnap left
20:00
spider-mario joined
|
|||
dalek | kudo/nom: b227e62 | jnthn++ | src/core/ListIter.pm: Allocate more sensibly in ListIter. |
20:01 | |
20:01
telex left
|
|||
jnthn | moritz, lizmat: Now it completes :) | 20:01 | |
lue | Is there supposed to be an error trying q:to/ END/ ? | 20:02 | |
moritz | lue: I don't know if there's supposed to be an error, but it sounds like a dangerous thing to do | 20:03 | |
20:03
jnap joined
|
|||
lue | agreed :) | 20:03 | |
20:04
telex joined
20:06
bluescreen100 joined
20:09
Exodist joined
|
|||
Util | r: my @a = [ 1, 2 ], [ 5, 8 ]; for @a -> [ $OLD, $NEW ] { say $NEW - $OLD } | 20:13 | |
camelia | rakudo-parrot 874e35, rakudo-jvm 874e35: OUTPUT«13» | ||
Util | r: my @a = {OLD=>1,NEW=>2},{OLD=>5,NEW=>8}; for @a -> { :$OLD, :$NEW } { say $NEW - $OLD } | ||
camelia | rakudo-jvm 874e35: OUTPUT«===SORRY!=== Error while compiling /tmp/OueXDh2A2VVariable '$OLD' is not declaredat /tmp/OueXDh2A2V:1------> W=>2},{OLD=>5,NEW=>8}; for @a -> { :$OLD⏏, :$NEW } { say $NEW - $OLD }» | ||
..rakudo-parrot 874e35: OUTPUT«===SORRY!=== Error while compiling /tmp/3ltssp8A1BVariable '$OLD' is not declaredat /tmp/3ltssp8A1B:1------> W=>2},{OLD=>5,NEW=>8}; for @a -> { :$OLD⏏, :$NEW } { say $NEW - $OLD }» | |||
timotimo | watch out for flattening vs non-flattening | ||
Util | What syntax should I have used in the second attempt, to unpack hash values by keyname? | ||
timotimo | i think \(...) | ||
jnthn | Just parens | ||
timotimo | no, wait, that's wrong | ||
yeah, just parens | |||
20:13
ajr_ joined
|
|||
masak | yeah. | 20:14 | |
Util | Doh! | ||
masak | curlies don't work, because they introduce the block. | 20:15 | |
Util | Thanks, all! | ||
timotimo | jnthn: should i be creating a short-named method for the constructor? | 20:17 | |
dalek | p/indy-args: 3d5a834 | jnthn++ | src/vm/ (2 files): Make new callstatic op work on other backends. Just compiles into the same thing as 'call' for the time being. |
||
timotimo | and if so, should it be .new or &.()? | ||
20:17
dmol left
|
|||
jnthn | timotimo: Those today are generated as something that shortens to new if there is just one of them... | 20:18 | |
timotimo | because new might already be taken | ||
oh! | |||
neato :) | |||
jnthn | timotimo: So yeah, we can apply the same approach. | ||
timotimo | so i should be able to get that to work with ... yeah | ||
jnthn | I don't think you can write a method call new in Java. | ||
*called | |||
timotimo | first i want to make sure my stuff isn't actually wrong :) | ||
jnthn | 'cus it's a keyword | ||
20:19
dmol joined
|
|||
moritz | aye, the join + split example now completes, though still takes 14s on my not-too-slow machine | 20:20 | |
compared ot 0.088s on perl 5 :-) | 20:21 | ||
r: say 19 / 0.088 | |||
camelia | rakudo-parrot 874e35, rakudo-jvm 874e35: OUTPUT«215.909091» | ||
jnthn | Yes, at least now it doesn't take infinitely longer. :) | 20:22 | |
timotimo | jnthn: i think i've been creating the same "name" for the CodeRefAnnotations of the same class | 20:25 | |
that's bad, right? why doesn't it asplode violently? | |||
jnthn | If it's the name just used for backtraces, etc then it needn't be unique... | 20:28 | |
timotimo | oh, interesting | 20:31 | |
i'm not actually sure how it even finds the right method, tbh :) | |||
20:33
rurban1 left
|
|||
timotimo | what bytecodes do i need to emit to throw an adhoc exception with a nice string message? | 20:34 | |
or rather, where do i have to look? | |||
jnthn | Hmm...you could just get tc and a string constant on the stack, then make the static call to ExceptionHandling.dieInternal I guess. | 20:35 | |
That's probably easiest way. | |||
Just 3 instructions :) | |||
timotimo | thanks :) | ||
er, i think i may have done it in the wrong order | 20:36 | ||
first the tc, then the string, aye? | |||
oh, do i need to visitInsn(Opcodes.ATHROW) after that? | |||
oh, i know what i'm doing wrong | 20:37 | ||
also, i think i'm not installing the methods anywhere where they can be found by nqp | 20:39 | ||
20:39
rurban1 joined
|
|||
jnthn | timotimo: No, dieInternal throws, iirc | 20:40 | |
timotimo | strange. if i don't ATHROW there, i get an error during the bytecode validation step of ASM | 20:41 | |
if i do, i don't | |||
excuse me for being stupid, but how exactly do i tell nqp "this method i'm building here ... please use it to supply the nqp-level method 'foobar'!"? | |||
jnthn | Oh...yeah...it returns an exception too | ||
You could also pop | 20:42 | ||
Doesn't that just need making sure it has an entry made in the hash computeInterop builds? | |||
timotimo | let me have a look | 20:43 | |
jnthn | I'm pretty sure that's where it needs to go. | ||
And then that hash gets used as the method cache or some such. | |||
timotimo | ah, startCallout used to do that | 20:44 | |
20:45
bluescreen100 left
|
|||
timotimo | it pushes "desc" to that hash, but creates a CodeRef named "callout $classname desc" | 20:45 | |
20:45
bluescreen10 left
|
|||
timotimo | i removed the line that adds the desc to the descriptors because i don't really have a desc equivalent | 20:46 | |
ah, desc is really only a somewhat human readable name | 20:47 | ||
now i get it | |||
20:47
carlin left
|
|||
jnthn | description, I guess... | 20:49 | |
timotimo | i thought it had to be a special format to please the jvm :) | 20:54 | |
20:55
Exodist left
20:59
Exodist joined
|
|||
lue | the advent's publish-when clock runs on UTC I hope? | 21:00 | |
Here's the post to preview! perl6advent.wordpress.com/2013/12/0...9a653aee7c | 21:02 | ||
21:02
lizmat left
|
|||
lue | timotimo: there it is ^^^ :) | 21:03 | |
timotimo | cool, i'll grab my password and read | ||
masak also | 21:04 | ||
21:05
Exodist left
|
|||
timotimo | lue: on my browser and resolution, two of the code blocks scroll a tiny bit horizontally | 21:05 | |
the only thing you can see if you scroll right is whitespace, though | |||
so it's just useless scrollbars | 21:06 | ||
to be honest i prefer the look of the "code" blocks from the previous two posts | |||
lue | timotimo: yeah. I blame the code blocks being a pixel or two too short :) | ||
timotimo | where it doesn't have line numbers to the left | ||
21:07
autumn left
|
|||
masak | lue: s/thrid/third/ | 21:07 | |
lue | got it :) | 21:08 | |
masak | twice. | ||
lue | got two of 'em | ||
21:08
autumn joined
|
|||
masak | lue++ # the post | 21:09 | |
lue | masak: do you think I should change the [code] blocks to <pre> blocks, like timotimo? Cross-post consistency or some other reason? | ||
nwc10 | jnthn: origin/indy-args + Rakudo works on "my" machine | ||
masak | lue: I don't have a vested opinion either way. | ||
lue: I'm tickled pink that you did bring up the BEGIN+heredoc thing. that's really nice. | |||
21:10
Exodist joined
|
|||
lue | I'll go in and make the change for output at least, that seems silly on second thought. | 21:10 | |
masak | lue: you might want to spend a sentence or two on why it's not possible, though. | ||
lue: (it's to do with one-pass parsing) | |||
lue | Yeah, I'll go and add a statement about one pass parsing and how BEGIN blocks mess that up for heredocs. | ||
timotimo | i'd appreciate a more thorough mention of "adverbs" | 21:11 | |
21:11
lizmat joined
|
|||
jnthn | nwc10: NQP, or you build Rakudo too? | 21:11 | |
nwc10: Should both be working, though... | |||
masak | timotimo: oh, I had that thought too. no explanation of :c, for example. | 21:12 | |
nwc10 | Rakudo passes all of its tests when built using NQP on origin/indy... | 21:13 | |
timotimo | jnthn: so did you notice a speedup in the compilation or something? :) | ||
lizmat suddenly realizes she has been responsible for the problem solved by github.com/rakudo/rakudo/commit/b227e6294b | 21:14 | ||
21:14
colomon left
|
|||
lizmat | again, it becomes clear, that premature optimization is evil | 21:14 | |
dalek | kudo-star-daily: 900fa28 | coke++ | log/ (5 files): today (automated commit) |
21:16 | |
timotimo | having to tap up before return to get jdb to do another step is *very* tiring | ||
jnthn | timotimo: Didn't do a huge amount of comparison yet, but numbers seem to be falling a bit :) | ||
nwc10 will try to time the setting compilation "without" and "with" tomorrow | 21:17 | ||
if suitable bits of time present themselves | |||
timotimo | blergh! successive calls to "list" will not reveal more and more code | 21:19 | |
lue | Is it supposed to fail if I do sub stuff { say q:to/END/ } \n <heredoc> ? (i.e. s/BEGIN/sub stuff/ for the broken example) | 21:21 | |
masak | lue: no. | 21:22 | |
lue | That's what I thought. | ||
masak | r: sub stuff { say q:to/END/ }OH HAI WORLDEND | 21:23 | |
jnthn | Yeah, that *should* work... | ||
camelia | rakudo-jvm b227e6: OUTPUT«(timeout)» | ||
..rakudo-parrot b227e6: OUTPUT«===SORRY!=== Error while compiling /tmp/i6PYMUYPnNConfusedat /tmp/i6PYMUYPnN:4------> END⏏<EOL> expecting any of: postfix statement end statement modifier state…» | |||
jnthn | It's BEGIN that won't... | ||
masak | hmmm | ||
p: sub stuff { say q:to/END/ }OH HAI WORLDENDstuff | |||
camelia | rakudo-parrot b227e6: OUTPUT«===SORRY!=== Error while compiling /tmp/bSrjIFhoVFConfusedat /tmp/bSrjIFhoVF:5------> <BOL>⏏stuff expecting any of: postfix statement end statement modifier sta…» | ||
masak | bleh. | 21:24 | |
jnthn | std: sub stuff { say q:to/END/ }OH HAI WORLDENDstuff | ||
camelia | std 3b262af: OUTPUT«ok 00:01 124m» | ||
masak submits rakudobug | |||
jnthn | p: sub stuff { say q:to/END/ };OH HAI WORLDENDstuff | ||
camelia | rakudo-parrot b227e6: OUTPUT«OH HAI WORLD» | ||
jnthn | Looks like some bad interaction between heredocs and the closing curly rule. | ||
masak | double bleh. | ||
jnthn | Well, not really. That golfs it to something smaller/more huntable. | 21:25 | |
lue will assume it works for the sake of argument in his post :) | 21:26 | ||
lizmat decommutes& | 21:27 | ||
21:27
lizmat left
|
|||
masak | p: sub x { say q:to/A/ }Ax | 21:28 | |
camelia | rakudo-parrot b227e6: OUTPUT«===SORRY!=== Error while compiling /tmp/skxXrbOobvConfusedat /tmp/skxXrbOobv:3------> <BOL>⏏x expecting any of: postfix statement end statement modifier stateme…» | ||
masak | p: sub x { say q:to/A/ };Ax | ||
camelia | rakudo-parrot b227e6: OUTPUT«» | ||
masak | jnthn: indeed :) | ||
lue | Updated the post. Now mentions one-pass parsing and explains the :c adverb. | 21:30 | |
masak | lue++ | ||
[Coke] | still have one failur in Testing modules/perl6-lwp-simple... | ||
lue | (I don't think this post is the best place to explain adverbs in general though; I could be wrong however.) | ||
masak | lue: I like the distinction between code and output. | 21:31 | |
lue | .oO(Hmmm... maybe I could explain adverbs on another advent day? ☺) |
||
21:33
colomon joined
|
|||
lue | masak: depending on how you write your Day 9 post, Day 10 might be the perfect place to explain adverbs. | 21:34 | |
21:34
spider-mario left
|
|||
masak | interesting development with the t4 reviews: | 21:35 | |
I just constructed 6 "hard cases" to try the four submissions on. three fail at least two. | |||
the fourth one passes them all. | |||
lue: I'll keep that in mind :) | |||
lue | Should I reserve day 10 for adverbs then? | ||
masak | might as well. | ||
though I suspect they might have been topic'd before. | 21:36 | ||
lue | I covered DateTime a couple years ago, didn't seem to stop moritz :) /me checks the past anyway | ||
Huh, I don't see an adverb post in any of the schedule files (I did see a Hash post in 2011 though ☺) | 21:39 | ||
timotimo | i'm getting "No such method 'insert' for invocant of type 'BOOTJavaObject'", but i'm putting a coderef into the names list with "insert" as the name :\ | ||
ah, the duplication check removes them again %) | 21:40 | ||
masak | lue: I might be wrong :) | 21:41 | |
dalek | : 135dd29 | lue++ | misc/perl6advent-2013/schedule: [advent-2013] Claim Day 10 for adverbs It'll flow nicely from Day 9 I suspect :) . |
21:42 | |
lue | .oO(I hope my working tile for Day 10 isn't too cryptic...) |
21:44 | |
masak | lizmat++ moritz++ raydiak++ # filling The Gap since I last looked | 21:47 | |
I'll take slot 6 if no-one else does... but I'd prefer not to have to. | |||
timotimo | jnthn: my coderefs are turning up null :( | ||
jnthn | :( | 21:51 | |
timotimo | would you like to look at my code? | 21:52 | |
it's not pretty :) | |||
jnthn | Well, given it's Java... :P | ||
I cna glance at it and see if I spot anything. | |||
timotimo | well, it also needs a big refactoring before it can be merged | 21:53 | |
jnthn | Sure; make it work, then make it nice. | ||
dalek | p/jvm_interop_dispatchers: a69295d | (Timo Paulssen)++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/BootJavaInterop.java: oh god the humanity! |
||
lue | masak: I'm thinking of a post exploring things more generic than class, which are oft-forgotten (package, module). I'm just not totally confident I'll learn everything I need to know in time for Day 6 for that. | ||
lue must see timotimo's commit :) | 21:54 | ||
timotimo | my $interop := nqp::jvmbootinterop(); my \StrBuilder := $interop.typeForName('java.lang.StringBuilder'); my $b := StrBuilder.'constructor/new/()V'(); $b.insert(1, 2); | ||
DarkWolf84 | bbfn and happy hacking :) | 21:55 | |
21:56
DarkWolf84 left
|
|||
masak | lue: then please schedule it for a later slot ;) | 21:56 | |
timotimo | what does bbfn mean? | ||
lue | Bye Bye For Now methinks | ||
timotimo | ah, that makes sense | ||
masak | lue: the question I'd like to see addressed is "why would anyone ever use the `package` keyword in Perl 6?" :P | 21:57 | |
lue | me too :) | ||
(In S11) Is =NAME, =AUTHOR, and =VERSION really how you're supposed to set the info in use Foo::bar:auth<foo>:ver<2> ? | 21:58 | ||
21:59
lowpor03 joined
22:03
colomon_ joined
22:05
jnap1 joined
22:06
colomon left,
colomon_ is now known as colomon,
jnap left
|
|||
dalek | kudo/opts: afb0511 | jnthn++ | src/Perl6/Optimizer.nqp: Start trying to use callstatic where possible. |
22:07 | |
kudo/opts: ceb7f13 | jnthn++ | src/Perl6/Optimizer.nqp: Avoid double-walking trees in sink context. Before, we'd walk the tree under the non-void and void branches of the QAST::Want. This prevents the double-work, cutting a good bit off the optimize phase. |
|||
timotimo | good catch :) | 22:10 | |
huh, is that decision with 'soft' really right? | 22:12 | ||
looks weird to me | |||
jnthn | Think so | ||
If we start failing wrap tests we'll know :) | |||
timotimo | either the scopes is 0, or it's 1 and calling .soft gives 0? | ||
well, what do i know :) | 22:13 | ||
jnthn | Well, gives something false-y. | ||
timotimo | right | ||
are you looking at my branch? | |||
jnthn | a soft routine is too mutable to reduce the call to a static... | ||
timotimo | thinking wether or not to go to bed now :) | ||
22:19
kaare_ left
|
|||
jnthn | timotimo: I dont' immediatley see the problem... | 22:19 | |
How does it fail? | 22:20 | ||
timotimo | the error is No such method 'insert' for invocant of type 'BOOTJavaObject', the cause is that SixModelObject cr = adaptorUnit.lookupCodeRef(i) returns null | ||
i pasted a bit of code you can run to get the same error above | 22:22 | ||
22:23
lowpor03 left
|
|||
jnthn | Don't suppose you're missing a call to c.mv.visitEnd(); or something? | 22:24 | |
timotimo | i have a visitEnd directly after the "name" thing | ||
and i end the whole thing with endCallout | 22:25 | ||
jnthn | av.visitEnd(); ? | 22:26 | |
I meant one on the mv you crate | |||
MethodVisitor mv = mc.mv = ... | |||
Do you certainly visitEnd at some point? | |||
On the mv? | 22:27 | ||
timotimo | i think so | 22:28 | |
i give mc to the stopCallout | |||
22:28
daniel-s_ joined
|
|||
timotimo | er endCallout | 22:29 | |
endCallout does c.mv.visitEnd | |||
jnthn | ok | ||
22:33
PacoAir left
22:34
rurban1 left
|
|||
timotimo | i guess i'll have to ... *shudder* jdb that | 22:34 | |
22:40
daniel-s_ left
|
|||
lue | timotimo: you could always use gcj and then gdb :) | 22:40 | |
22:40
kivutar joined
|
|||
timotimo | oh hell no | 22:40 | |
maybe i can attach an IDE to the jdb server, though | |||
22:44
SevenWolf joined
22:45
Khisanth joined
|
|||
timotimo | well, i'll see what i can do tomorrow. | 22:45 | |
jnthn | Yes, sleeping on it may well help :) | 22:46 | |
Looks like quite a bit of progress, even if it's not quite working yet. | 22:47 | ||
timotimo++ | |||
timotimo | i only got the easy parts done ;) | ||
mostly by stealing from other places :D | |||
22:49
mberends joined
|
|||
lue | I can't help but feel this line in S10 is a bit redundant by the time you get to S10: "Since there are no barewords in Perl 6, package names must be predeclared." | 22:51 | |
lue gets the feeling it's been a while since someone looked at S10... | 22:54 | ||
dalek | kudo/opts: 4af34c8 | jnthn++ | src/Perl6/Optimizer.nqp: On JVM, eliminate binder for zero-param code. This in turn means it'll be elligible for the indy optimization that relates to such calls. |
22:56 | |
22:57
BenGoldberg joined
|
|||
jnthn | Teaching tomorrow, so I guess I'll have to stop there with hacking on stuff for today... | 22:57 | |
22:59
Exodist left
|
|||
lue | Is it just me, or does S10 go off on a tangent at one point that doesn't *really* fit with a spec about packages? Or is thinking S10 is about the C<package> keyword too narrow a view? | 23:01 | |
23:02
hummeleB1 left,
Exodist joined
23:07
Rotwang left
|
|||
lue concludes that S10 is useless for learning about packages, due either to brevity or the... suboptimal way it's written. | 23:12 | ||
I just realized: S10 not containing much useful information on how C<package> works is probably due to suffering from "If it's the same as Perl 5, don't mention it" syndrome. | 23:15 | ||
jnthn | 'night, #perl6 | 23:17 | |
lue | ♞ jnthn o/ | 23:21 | |
23:26
BenGoldberg is now known as Ben_Goldberg
23:28
Ben_Goldberg is now known as BenGoldberg
23:31
kivutar left
23:32
dmol left
23:36
fridim__ joined
23:39
btyler left
23:40
Ben_Goldberg joined
23:43
BenGoldberg left
23:45
xinming left,
xinming joined
23:48
lizmat joined
23:52
MikeFair left
23:57
rurban1 joined
|