»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
diakopter | well, my involvement started yesterday when I insulted rurban on twitter, in reply to his grandiose claims about Parrot's GC/threads | 00:00 | |
00:01
benabik left
|
|||
swarley | This picture feels relevant. media.tumblr.com/tumblr_m81j9veVbr1r856dg.gif | 00:03 | |
lue | [Coke]: was your "general community note" referring to the discussion here last night (≈20hrs ago, istr), or some discussion on #parrot at another time? | 00:04 | |
diakopter | my words on #parrot recently | ||
sorear | lue: ongoing discussion in #parrot | ||
[Coke] | swarley: ... | 00:05 | |
lue | ah. /me considers joining #parrot | ||
diakopter | [Coke]: but to answer your question, my point in join #parrot today was to rebut rurban's claim that I was without a clue and not knowledgeable | ||
japhb_ | lue, probably easier to just irc log it: irclog.perlgeek.de/parrot/2013-02-08 | 00:06 | |
flussence just finished reading that and... Wat. | |||
sorear | ok. everyone, please say "you're wrong" when you want to say "you're clueless" | ||
the latter is a personal attack and it *always* makes things worse | 00:07 | ||
lue | japhb_: already have it open :) I liked the discussion between moritz and others at around 21:30 | ||
*nod* | 00:08 | ||
japhb_ | sorear, Even "you're wrong" is usually too strong. | ||
"I disagree" would be about as far as I would go most of the time. | |||
sorear | !seen doy | 00:09 | |
seen doy | |||
[Coke] | ENOALOHA. | ||
we need to fire up an aloha instance on feather if we want it back. | |||
I declare a bounty of five USD if it gets done in the next week. | 00:10 | ||
sorear | looks from the logs like doy didn't leave for a specific public reason | ||
lue | fwiw, S17 is still marked as a DRAFT, which likely doesn't help. | 00:11 | |
diakopter | sorear: you're right; I shouldn't have flamebaited rurban on twitter. I lost my patience with his noise, and I shouldn't have. | 00:15 | |
00:16
jeffreykegler joined
00:21
swarley-freenode is now known as swarles
|
|||
swarles | To be fair, and I'm not supporting anyone's actions here but, he was a little annoying with regards to making sure you knew how good the GC and threads were, based on today's IRC log alone | 00:22 | |
diakopter | pmichaud: I wasn't claiming there was no relationship soured. I merely stated that I didn't see it. Please point it out if it's there | 00:23 | |
00:23
swarley left,
swarles is now known as swarley
|
|||
flussence | lue: bleh, I hope that gets changed. I'd rather have s:g/async/bg/ :) | 00:23 | |
[Coke] | diakopter: conversation grumpiness followed by rurban leaving the channel with no resolution of technical issues. That counts as a negative in my book. | 00:24 | |
lue | Can anyone quickly tell me|point me to why rurban seems to have been so frustrated with Parrot lately? I'm only curious. | ||
flussence | he found something O(fun) to work on instead (p2)? | 00:25 | |
lue | Ah. I thought something in|about parrot caused him to leave and start p2. | 00:26 | |
diakopter | well, he's said several times the invocation system is very inefficient | 00:27 | |
jnthn | phenny: tell arnsholt So, what I thought were two examples of the same issue were actually not. I fixed one of them. I still need to deal with the other one (which has broken the Rakudo build). I'm too tired now, but anyway, back to square 1 on finding it... :( | 00:29 | |
phenny | jnthn: I'll pass that on when arnsholt is around. | ||
swarley | Making progress with the organization of nqp-go. I have a basic implementation of *Spec, STable, and SixModelObject, recommendations on where to move from here? | 00:35 | |
jnthn | swarley: Attack the bootstrap :) | ||
swarley | Oh lord, alright I suppose that had to come eventually | ||
jnthn | Unfortunately that means also taking on calling convetion stuff I guess... | 00:36 | |
uh, convection | |||
...gah! convention! | |||
swarley | With what regard? | ||
00:36
stevan__ joined
|
|||
swarley | Like, referencing a method added to an object via an STable? | 00:36 | |
jnthn | The bootstrap involves building KnowHOW, the core meta-object. | ||
Yes, but you need to decide how parameters will be handled. | 00:37 | ||
00:38
stevan_ left
|
|||
swarley | Oh, I suppose I'll need to look up the rules of perl6's method/sub parameter signatures to make that decision | 00:39 | |
I'll probably do it with a positive arity means that they are literal arguments, and a negative one means it needs to be further examined | 00:41 | ||
skids | .oO("Calling convection"... is that how parameters rise up through thunky inversion layers?) |
00:42 | |
swarley | be right back | 00:43 | |
00:45
xilo_ left
|
|||
TimToady | nr: my $lines = +qx[tput lines]; my $cols = +qx[tput cols]; say "$lines $cols"; | 00:45 | |
p6eval | rakudo 4fb07b: OUTPUT«qx, qqx is disallowed in restricted setting in sub restricted at src/RESTRICTED.setting:2 in sub QX at src/RESTRICTED.setting:9 in block at /tmp/I8VWfgnDpC:1» | ||
..niecza v24-20-g93138cc: OUTPUT«Unhandled exception: rungather may not be used in safe mode at /home/p6eval/niecza/lib/CORE.setting line 0 (rungather @ 0)  at /tmp/hns2SOI9td line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4227 (ANON @ 3)  at /home/p6eval/niec… | |||
TimToady | how come, when I run that program, it reports 24x80 rather than the actual dimensions of my terminal? | ||
masak | TimToady: no idea. works locally. | ||
no wait. | 00:46 | ||
24 80 | |||
flussence | 35×116 on mine... | ||
masak | here too. | ||
flussence: did you run tput directly? | |||
(like I did first) | |||
flussence | I copy-pasted that line into the repl | ||
skids | LINES and COLUMNS are not exported by shell | ||
masak | on the repl it works. | 00:47 | |
just not with -e | |||
flussence | oh, yeah. 24 80 here | ||
masak submits rakudobug | |||
flussence | I'm betting it's libreadline doing something on its own to get the numbers | ||
which then causes them to be defined for tput | |||
TimToady wonders if something's closing STDIN | 00:48 | ||
skids | it works if you export LINES; export COLUMNS even if you resize after doing so. | ||
jnthn | sleep & | 00:49 | |
TimToady | skids: um, that's not going to help after you've started the program | ||
00:50
benabik joined
|
|||
TimToady | turns out niecza closes STDIN on qx[] (or attaches to /dev/null), but that doesn't explain rakudo's behavior | 00:50 | |
if I replace tput with cat, rakudo lets me type in a number, and it comes back out | 00:51 | ||
masak | 'night, #perl6 | 00:52 | |
skids | TimToady: just observing that, is all. | 00:53 | |
japhb_ | o/ masak | ||
Sleep well. | |||
TimToady | if I do qx[echo $LINES] it comes out 0 | 00:54 | |
but most of the rest of the environment seems to be there | |||
weird | 00:55 | ||
I think I'd better parse stty -a for now instead | 00:56 | ||
well, that works with rakudo, if not niecza | 00:58 | ||
niecza seems intent upon not making /dev/tty to qx[] | 00:59 | ||
*available to | |||
flussence | the bash manpage says it updates $LINES/$COLUMNS on a sigwinch, but even if I try "qx[kill -WINCH $$; ..." it doesn't give a useful answer. very confused. | 01:00 | |
sorear | probably only happens for interactive shells | 01:01 | |
ingy | *yawn* | ||
TimToady | from a Unix point of view it's kind of antisocial to lose track of STDIN, just because STDOUT is redirected to a pipe... | 01:02 | |
01:12
thou left
01:15
jerome left
01:16
pmurias left
01:21
cognominal joined
01:27
jerome joined
01:34
arlinius joined
01:37
PacoAir left,
xilo_ joined
01:43
japhb_ left
|
|||
swarley | Alright, I have valid STable, BoolificationSpec, StorageSpec, ContainerSpec, InvocationSpec, and SixModelObject declarations :) | 01:44 | |
diakopter | swarley: are you publishing the code somewhere? | 01:45 | |
swarley | I will be in just a moment | ||
I'm just adding a comment to this file first | |||
diakopter; github.com/swarley/nqp-go/ | 01:52 | ||
there is only one subdir with files to it in src/ so I doubt you'll spend more than 5 minutes browsing the code | |||
Probably only 200 lines of code if that, but i'm still trying to figure out how to engineer this in to be honest | 01:53 | ||
01:58
xilo_ left
02:11
FROGGS_ joined
02:14
FROGGS left
02:35
Chillance left
02:36
erkan left
02:41
arlinius left
03:08
arlinius joined
03:14
Targen joined
03:24
cognominal left
03:27
rking joined
03:28
arlinius left
03:33
cognominal joined
|
|||
swarley | .u ⮀ | 03:36 | |
phenny | U+2B80 (No name found) | ||
U+0020 SPACE ( ) | |||
03:55
arlinius joined
04:03
cognominal left
04:04
aindilis joined
04:07
cognominal joined
04:08
Targen left
04:09
cognominal left
04:23
alec__ left
04:28
kshannon left
04:29
kshannon joined
04:31
happydude joined
04:32
happydude left
04:36
alec__ joined
04:59
preflex_ joined
05:00
preflex left
05:01
preflex_ is now known as preflex
05:07
vaelxon joined
05:16
jeffreykegler left
05:21
xinming left
05:23
xinming joined
|
|||
swarley | I want the sound from this website to play every time I get a segfault from my program | 05:44 | |
I mean, I have yet to get one, but still nooooooooooooooo.com/ | |||
05:57
thou joined
07:08
dayangkun joined
07:15
domidumont joined
07:19
kaare_ joined
07:23
domidumont left
09:11
am0c joined
09:17
thou left
09:45
Psyche^ joined
09:49
Patterner left,
Psyche^ is now known as Patterner
09:54
stevan__ left
09:55
rindolf joined
09:57
wk joined
|
|||
moritz | jnthn++ # "calling convection" in the backlog | 10:03 | |
:-) | |||
10:08
am0c left
|
|||
dalek | p: afaf87d | jnthn++ | src/ops/nqp.ops: Corret nested SC write barrier enable/disable. Unbusts the Rakudo build on latest NQP. |
10:20 | |
10:58
spider-mario joined
|
|||
masak | afty. | 11:04 | |
masak hugs everyone, just in case | 11:05 | ||
nwc10 | what long arms you have | ||
masak | they're special-made for the purpose. | 11:06 | |
11:37
SamuraiJack joined
11:45
not_gerd joined
|
|||
not_gerd | jnthn: see github.com/perl6/nqp/issues/74 for some more information on my NQP failures on latest Parrot | 11:46 | |
the backtrace printer now segfaults, apparently because some constants table is borked | |||
dalek | p: 978dc43 | jnthn++ | src/ (3 files): Prepare for eliminating clone callback prop use. |
11:58 | |
p: 1b41b41 | jnthn++ | src/pmc/sixmodelobject.pmc: Add a check to avoid a possible segfault. |
|||
p: f7eb701 | jnthn++ | src/NQP/World.pm: Eliminate use of properties for clone callback. Still a reference in the setting, but that can go away with a bootstrap update. |
|||
jnthn | not_gerd: That sounds...extremely borked indeed... | 11:59 | |
not_gerd | oO( this is not the constant you're looking for ) | 12:05 | |
do moritz and tadzik build on 32-bit systems as well? | 12:08 | ||
if so, using a 32-bit toolchain might be the way to reproduce the failure.... | |||
jnthn | not_gerd: I'm guessing you're on 32-bit lso? | 12:14 | |
*also | |||
not_gerd | jnthn: correct | ||
12:15
PacoAir joined
|
|||
dalek | p-jvm-prep: 1ff0365 | jnthn++ | src/org/perl6/nqp/sixmodel/SerializationReader.java: Fix position-o in deserialize. |
12:16 | |
p-jvm-prep: e5838cb | jnthn++ | nqp-src/NQPCORE.setting: Adpot latest clone callback updates. |
|||
p-jvm-prep: a1696e0 | jnthn++ | t/nqp/55-multi-method.t: We now pass 55-multi-method.t. |
|||
jnthn | not_gerd: Oddness. I find it hard to think what could break 32-bit but not 64-bit in that commit... | ||
not_gerd | perhaps re-shuffling some code exposed some long-standing issue | 12:17 | |
got github.com/perl6/nqp/issues/64 ever resolved? | |||
jnthn | I think that one did, yes. | 12:18 | |
It looks familiar at least. | |||
not_gerd | I might try finding out what't the latest Parrot revision that can host NQP master | 12:19 | |
perhaps that'smore instructive | |||
jnthn | Maybe or maybe not. It's certainly not clear to me what's going on. :( | ||
I will try and get hold of a 32-bit build to try and recreate it. | 12:20 | ||
12:33
wk_ joined
12:37
wk left
|
|||
tadzik | not_gerd: I build on 64bit | 12:43 | |
not_gerd | tadzik: so that's not the deciding factor :( | 12:52 | |
13:01
SamuraiJack_ joined,
SamuraiJack left
|
|||
nwc10 | Are NQP's arrays resizable AND lazy? Or (just) Perl 6's? | 13:02 | |
colomon | .union | 13:05 | |
nwc10 | All tests successful. | 13:06 | |
Files=23, Tests=274, 35 wallclock secs ( 0.10 usr 0.20 sys + 24.56 cusr 7.44 csys = 32.30 CPU) | |||
Result: PASS | |||
jnthn | nwc10: No laziness in nqp | ||
nwc10 | that's on x86 Linux, with everything origin/master | ||
jnthn: ah OK. In which case, if lazyness can be "faked up" at Perl 6 level, presumably so can sparseness if desired? | 13:07 | ||
jnthn | nwc10: Rakudo's make test, I guess? | ||
nwc10 | ie, doesn't make sense to have to do it as NQP ops | ||
yes, Rakudo make test | |||
jnthn | Yeah | ||
not_gerd | ls | 13:16 | |
not_gerd fails to make any headway in tracking down the error | 13:19 | ||
anyway, have a nice weekend | |||
13:19
not_gerd left
|
|||
nwc10 | so what is the problem that crops up on (some) 32 bit platforms? | 13:21 | |
13:29
jerome left
13:30
aleveres joined
|
|||
jnthn | nwc10: Not sure so far... | 13:35 | |
13:37
SamuraiJack_ left
13:59
SamuraiJack_ joined
14:06
erkan joined,
erkan left,
erkan joined
14:09
aleveres_ joined,
aleveres left,
aleveres_ is now known as aleveres
14:18
zby_home_ joined
|
|||
dalek | p: 7133fa1 | jnthn++ | src/ (4 files): Preparations for positional/associative delegate. This work will eliminate some of the v-table use that is in the way of certain bits of porting work, but should also provide some other wins. |
14:19 | |
p: 7ec2668 | jnthn++ | src/6model/knowhow_bootstrapper.c: Get KnowHOW bootstrap using REPR compose protocol. |
|||
p: 9c09d92 | jnthn++ | t/nqp/60-bigint.t: Fix a test that used KnowHOW incorrectly. |
|||
p: 9ad9e37 | jnthn++ | t/serialization/02-types.t: Fix another bad use of KnowHOW. |
|||
p: e93ea46 | jnthn++ | src/ops/nqp.ops: Fix an op that failed to compose a package. The op overall needs to go away as it's something of a hack, but easier to just fix it up for now. |
|||
p: e387b52 | jnthn++ | src/6model/reprs/P6opaque.c: Finish removal of pre-REPR-compose code. |
|||
kudo/nom: b39b6f2 | jnthn++ | src/Perl6/Metamodel/ (2 files): Make sure we call compose_repr early enough. Should always call it before the first intantiation. |
|||
14:53
mjwhitta joined
14:56
mjwhitta left
15:01
awwaiid left
15:02
pjcj left
|
|||
colomon | rn: sub a(*@hashes) { say @hashes.perl; }; a(set(<a b c>), set(<d e f>)); | 15:06 | |
p6eval | rakudo 4fb07b: OUTPUT«Array.new("a", "b", "c", "d", "e", "f")» | ||
..niecza v24-20-g93138cc: OUTPUT«(set("a", "b", "c"), set("d", "e", "f")).list» | |||
15:06
pjcj joined
15:08
Chillance joined,
awwaiid joined
|
|||
jnthn wonders which of those is right | 15:09 | ||
jnthn guesses sets probably shouldn't flatten... | |||
rn: my @a = set(<a b c>); say @a.perl | 15:10 | ||
p6eval | niecza v24-20-g93138cc: OUTPUT«[set("a", "b", "c")].list» | ||
..rakudo 4fb07b: OUTPUT«Array.new("a", "b", "c")» | |||
jnthn | rn: for set(<a b c>) { .say } | 15:13 | |
p6eval | niecza v24-20-g93138cc: OUTPUT«set(a, b, c)» | ||
..rakudo 4fb07b: OUTPUT«abc» | |||
jnthn | If I give Rakudo the niecza semantics on the assignment/slurpy case, it will also get the "it's an item in a for loop" semantics. | 15:14 | |
Guess that's OK. | |||
15:19
SunilJoshi joined
|
|||
colomon | what would a hash do? (instead of a set.) | 15:21 | |
jnthn | rn: my %h = a => 1, b => 2; my @a = %h; say @a.perl | 15:22 | |
p6eval | rakudo b39b6f: OUTPUT«Array.new("a" => 1, "b" => 2)» | 15:23 | |
..niecza v24-20-g93138cc: OUTPUT«["a" => 1, "b" => 2].list» | |||
jnthn | It flattens. | ||
That's why set does also. | |||
I guess, anyway. | |||
So it would be making it different to hash. | |||
colomon | yeah. | 15:25 | |
huh. | |||
dalek | p: 723aae4 | jnthn++ | src/6model/ (3 files): P6opaque adding list/hash delegation to P6opaque. |
15:26 | |
p: 030ba9b | jnthn++ | src/ (4 files): s/Indexing/Positional/ in REPR funcs. Makes it more consistent with Perl 6 terminology and the naming on the JVM. |
|||
colomon | jnthn: I guess leave it for now. | ||
jnthn | wow, I fail it at writing commit messages... | ||
colomon: Yeah, it's probably one for TimToady++ to weigh in on. Other @other :) | |||
colomon | TimToady++ | 15:29 | |
dalek | p: 5795fdf | jnthn++ | src/6model/ (3 files): Toss a bunch of (thankfully unused) mis-design. |
15:35 | |
nwc10 | jnthn++ # 3 files changed, 43 deletions(-) | 15:37 | |
deleted code is the best code | |||
15:40
SunilJoshi left
|
|||
tadzik | :) | 15:45 | |
it's certainly bug free | |||
jnthn | ...unles something depended on it :) | 15:48 | |
jnthn just deleted some more things and is now building stuff to make sure it's as dead code as he thinks it is. | |||
[Coke] | jnthn++ | 15:49 | |
tadzik | what do you think about Rakudo joining play-perl.org/? | 15:51 | |
It looks like the new Cool Thing :) | 15:52 | ||
tl;dr: you open quests and people complete them for karma | |||
like GCI, but no money | |||
15:53
aleveres left
|
|||
jnthn | tadzik: If it's a way to potentially attract contributors, it seems reasonable. | 15:58 | |
15:58
uvtc joined
|
|||
nwc10 is rather confused. I'm trying to work out *where* in NQP the actual code is that implements delete on array. | 15:59 | ||
dalek | p: 90e12d2 | jnthn++ | src/ (3 files): Toss some unused v-table handler usages. |
||
p: 7676c23 | jnthn++ | src/6model/ (3 files): Fill out positional REPR funcs more reasonably. |
|||
nwc10 | to try to delete it. to see what breaks. | ||
nwc10 | 3 files changed, 18 deletions(-) | ||
tadzik | nwc10: what do you mean by "delete on array?" nqp::deletepos? | 16:00 | |
nwc10 | yes. but I cant' work out where that is | ||
tadzik | that's mapped directly to Parrot's delete_keyed_int opcode | ||
jnthn | nwc10: Well, we use the ResizablePMCArray from Parrot, so that's where the actual implementation is. But there's also what tadzik mentioned...that's in QAST::Operations. | ||
Right, mapping in src/QAST/Operations.pm or so | |||
tadzik | nwc10: src/stage2/QAST.nqp 1898:QAST::Operations.add_core_pirop_mapping('deletepos', 'delete', '0Qi', :inlinable(1)); | ||
nwc10 | aha. ack wasn't searchignt hat | 16:01 | |
tadzik | yeah, it's ack -a for nqp I think | ||
16:13
benabik left
16:14
benabik joined
|
|||
tadzik | jnthn: should nqp-jvm-prep fail to build now? | 16:22 | |
jnthn | tadzik: No, though it may require bleeding edge NQP | 16:24 | |
tadzik | nqp --target=pir --setting=NULL --stable-sc --output=NQPCOREJVM.setting.pir nqp-src/NQPCORE.setting | ||
Can not bind attribute '$!clone_callback' declared in class 'NQPRoutine' with this object | |||
and nqp is up-to-date | |||
16:28
SunilJoshi joined
|
|||
swarley | So, what is ack? | 16:29 | |
Never mind, I found it | 16:31 | ||
debian's plain package for ack is a kanji converter. So I was a bit confused | |||
benabik suggests `echo "--type-set=perl6=.pl6,.pm6,.p6n--type-set=nqp=.nqp" > ~/.ackrc | 16:35 | ||
16:39
FROGGS_ is now known as FROGGS
|
|||
FROGGS | good {{{enter your time of day here}}} folks | 16:42 | |
jnthn | tadzik: Odd. I can't get it to do that here. | ||
nwc10 | is there a way to run individual spectests directly. I tried the obvious and I get: | 16:45 | |
$ ./perl6 t/spec/S16-filehandles/filestat.t | |||
===SORRY!=== | |||
Could not find Test in any of: /home/nick/Perl/rakudo/install/lib/parrot/4.10.0-devel/languages/perl6/site/lib, /home/nick/Perl/rakudo/install/lib/parrot/4.10.0-devel/languages/perl6/vendor/lib, /home/nick/Perl/rakudo/install/lib/parrot/4.10.0-devel/languages/perl6/lib, /home/nick/.perl6/2013.01-110-gb39b6f2/lib | |||
jnthn | -Ilib | 16:46 | |
nwc10 | ta | ||
FROGGS | nwc10: /usr/bin/perl t/harness --fudge --keep-exit-code --icu=1 t/spec/S05-metasyntax/litvar.t --verbosity=1 | 16:47 | |
in the rakudo dir | |||
thats what I do | |||
jnthn | That's a lot of typing ;) | ||
FROGGS | no, just slash and page up :o) | 16:48 | |
jnthn | :) | ||
swarley | what shell does everyone use? | ||
tadzik | well, I use zsh | 16:49 | |
FROGGS | bash | ||
nwc10 | bash, but I should investigate zsh | ||
swarley | I use zsh | ||
I've yet to find a csh'er | |||
tadzik | try #cobol ;) | 16:50 | |
swarley | oh boy, I'd rather not | ||
jnthn | .oO( I didn't think *that's* what the "c" was for :P ) |
||
tadzik | or, I think BSDs still use that as a default shell | ||
swarley | I would look at cobol, if it wasn't for the header of the file | ||
tadzik | or it's named tcsh now | ||
swarley | also c in csh is C shell | ||
csh | 16:51 | ||
C Shell, a shell (command interpreter) with C-like syntax | |||
FROGGS | tadzik: I think my openbsd ( a year^old) has csh, yes | ||
swarley | I giggled when I learned about adventure shell | 16:54 | |
nadvsh.sourceforge.net/ | |||
alright then. I suppose I should get to work on making the base SMObject struct | 16:56 | ||
17:04
SamuraiJack_ left,
SamuraiJack_ joined
17:05
pmurias joined,
SamuraiJack_ left
|
|||
pmurias | nwc10: my .ackrc for nqp pastie.org/6104432 | 17:05 | |
17:05
SamuraiJack_ joined
17:07
domidumont joined
|
|||
[Coke] gives a shot at creating a stripped down parrot. | 17:10 | ||
17:10
SamuraiJack__ joined
|
|||
[Coke] | ... this is going to be slooow. :| | 17:10 | |
17:11
SamuraiJack_ left
|
|||
swarley | lol. | 17:11 | |
timotimo | you're removing the beautiful plumage? | 17:12 | |
tadzik | [Coke]++ | 17:14 | |
17:17
rindolf left
17:32
pjcj left
17:37
Targen joined
|
|||
japhb is making good progress on collecting the raw info to start producing the module gap analysis | 17:40 | ||
I could use some input into the lists "Dog food we already eat" + "Dog food we should be eating" | 17:41 | ||
tadzik | module gap analysis? | ||
17:42
domidumont left,
domidumont joined
|
|||
japhb | tadzik, I'm going through various different ways to view "Modules we should have in Star-or-the-equivalent to cover most starting needs" | 17:43 | |
tadzik | japhb: we need proper async IO" | ||
japhb | And then figuring out what we've already got covered, and what is still needed. | ||
tadzik | a libuv binding, or so | ||
_sri++ is probably the right person to be consulted about this | 17:44 | ||
japhb | tadzik, async IO is a feature, not a module. :-) But I'm actually *also* creating a list of features most wanted by module authors, so that request will go there. :-) | ||
tadzik | for example, we still write our IRC bots in Perl 5. We shouldn't have to, but the efforts so far fail because of no proper async IO | ||
japhb | Already consulted _sri, he was the first one I asked about features we need before he can do major porting. | ||
tadzik | japhb: I'm sure it can be implemented as a modle | ||
in fact, I'll be implementing it now if it wasn't for the upcoming vacation :) | 17:46 | ||
japhb | tadzik, you're implementing async file IO as a module? Or you're implementing a libuv binding? | ||
tadzik, Also, I'd already had irc bots on the "Dog food we should be eating" list. Specifically, I had dalek, phenny, and aloha. Any others to add? | 17:48 | ||
moritz, what is ilbot written in? | |||
pmurias | perl6 | ||
*perl5 | |||
japhb | *chuckle* | ||
tadzik | japhb: I'm not yes :P | 17:49 | |
*yet | |||
japhb | heh | ||
tadzik | but it's on the endless "after exams" list | ||
japhb | No one can type today. :-) | ||
tadzik | and after exams is now | ||
japhb | tadzik, I intend to have a nice big pile of -Ofun available for you or anyone else soon. You won't be short of fun tasks for a very long time. ;-) | 17:50 | |
tadzik | japhb: do you know the Most Wanted Module List? | ||
it may need some revising | |||
skids | japhb: put me in for uint* as "features wanted" | ||
tadzik | shopping& | 17:51 | |
japhb | tadzik, yep, that's one of the sources I'm working from. | ||
skids, you mean sized natives? | |||
skids | specifically unsigned but yes. | ||
japhb | Or specifically sized *unsigned* natives | ||
OK | |||
arnsholt, did you implement unsigned as well, or just signed? | |||
uvtc | [Coke]: re. stripped-down Parrot. I like the fast start-up I get with the current Rakudo⌁Parrot. | 17:52 | |
dalek | p: c4a988a | jnthn++ | src/ (2 files): First pass at getting positional_delegate working. |
17:53 | |
p: 6afcc54 | jnthn++ | src/NQP/Actions.pm: Fix thinkos. |
|||
p: 6ad0c64 | jnthn++ | src/stage0/ (9 files): Update bootstrap. |
|||
p: 51c43bf | jnthn++ | src/ (3 files): Switch some things over to positional_delegate. |
|||
p: 27c96a9 | jnthn++ | src/QAST/Compiler.nqp: Make VarWithFallback handle type-obj indexing. |
|||
japhb | OK, I think I've got all the above comments pulled into my working docs | ||
More input very much welcomed! | |||
17:53
autark joined
|
|||
uvtc | japhb: My guess is that R* would be an answer to "What is the batteries-included distribution of Perl 6?" | 17:54 | |
FROGGS | uvtc: right | 17:55 | |
japhb | uvtc, exactly | ||
pmurias | japhb: in QAST is to legal to declare the same variable twice? | ||
err jnthn | |||
japhb | Right now it's a few batteries short of a full pack. :-) | ||
uvtc | "Python has batteries included!!". Ok, so does Perl 6 --- see R*. | 17:56 | |
jnthn | pmurias: No | ||
uvtc | " | ||
jnthn | pmurias: However, I dunno how hard it looks for it | ||
skids | japhb: I've had to do horrible things to work around the diamond crony role NYI, but that might be RT'd IIRC. | ||
jnthn | pmurias: (At the QAST::Compiler level.) | ||
skids: It's RT'd. | 17:57 | ||
17:57
uvtc left
|
|||
japhb | skids: Wait, what? That was a little too compressed for me to read right off. | 17:57 | |
skids | It's when you inherit A and B which both do C -- the methods and attribs in C conflict. | 17:58 | |
jnthn | Inherit or compose? | ||
dalek | p: d3431b6 | jnthn++ | src/stage0/ (9 files): Update bootstrap. |
17:59 | |
p: c123e22 | jnthn++ | src/core/NQPMu.pm: Eliminate another Parrot v-table use. |
|||
japhb | skids, ah "diamond role composition NYI", is that what you meant? | ||
jnthn++ # Much kicking of NQP butt. | 18:00 | ||
swarley | I can't wait to see a parrot free nqp :) | 18:01 | |
skids | japhb: yes. | ||
swarley | well, a less parrot plagued nqp | ||
japhb | skids, OK, got it. :-) | 18:02 | |
nwc10 | OK, Rakudo needs existspos, but not deletepos | ||
japhb | Besides the IRC bots, what other dog food should we be eating? | ||
nwc10 | japhb: I'd suggest (at least) make install | ||
japhb | nwc10, ooh, good one | 18:03 | |
nwc10 | and as much of the build system as possible | ||
ie, the aim of the build system should be to get a working perl6 up, and then use it to build as much as possible | |||
(in my opinion) | |||
jnthn | japhb: tools/contributors.pl and perhaps some other things in this directory could be dogfooeded | 18:04 | |
japhb | jnthn, OK, good | 18:05 | |
nwc10, I agree. | |||
nwc10 | this does potentially make cross-compiling a bit more difficult, but worry about that a *lot* later. | ||
arnsholt | Can always keep the Perl 5 versions under a new name as well | 18:06 | |
phenny | arnsholt: 00:28Z <jnthn> tell arnsholt So, what I thought were two examples of the same issue were actually not. I fixed one of them. I still need to deal with the other one (which has broken the Rakudo build). I'm too tired now, but anyway, back to square 1 on finding it... :( | ||
japhb | nwc10, The funny thing is that we already *have* the cross-compiling problem. | ||
nwc10 | python 2.7 has batteries included. Which is great, until you want some fresh ones, but you also want to keep using Django | ||
FROGGS | swarley: I dont really care if the VM is parrot or JVM or something else, rakduo is good enough for my needs | ||
nwc10 | I think I messed up the bootstrap. I don't think that Rakudo needs existspos either. Trying to fix things to verify this | 18:07 | |
swarley | I'm not really concerned with the end product, I'm fine with it using Parrot. I just would like to see the code not relying on parrot | ||
18:07
tokomer joined
18:09
benabik left
|
|||
jnthn | arnsholt: I fixed the other one this morning :) | 18:10 | |
nwc10 | jnthn: my hunch is that the entire code and tests for exists and delete on arrays can be removed from NQP without affecting Rakudo, its tests, or the spectests | ||
skids envisions a product so complex that it's easier to cross-compile stage1 and then build an emulator of the target system rather than a native stage1. :-) | |||
jnthn | nwc10: nqp::existspos is certainly used in the Rakudo setting | 18:11 | |
nwc10: Seems deletepos ain't | 18:12 | ||
nwc10 | ah OK. then I'm wrong on my earlier thought | ||
swarley | Go interfaces are making this sixModel very interesting to code. | ||
nwc10 | OK, deletepos can go right away... | ||
(will redo that one) | |||
pmurias | and the reason deletepos is not used is that Array.delete is implemented incorrectly | ||
18:12
benabik joined
|
|||
nwc10 | but if deletepos isn't used, then I think that that means that it should be possible to recode existspos in terms of the array size | 18:12 | |
OK. :-( | 18:13 | ||
jnthn | nwc10: Yes, I expect so. | ||
nwc10 | me-- # not using git to save the state of my intermediate work | ||
hopefully emacs undo can save me | |||
jnthn | pmurias: Even if that's the case, we probably don't need a deletepos | ||
pmurias | do we want to keep the Perl 5 "sparse" semantics? | 18:14 | |
jnthn | It's a degenerate case of splice. | ||
nwc10 | I feel that it belongs in Rakudo, not in NQP | ||
skids back to shoveling knee-high snow. | |||
nwc10 | no. We don't want the Perl 5 *broken* sparse semantics | ||
jnthn | Are those teh semantics Perl 5 has deprecated anyway? | ||
pmurias | yes | ||
nwc10 | can I mumble on that one please :-) | ||
jnthn wonders if we want an Array.delete method. | 18:15 | ||
nwc10 | possibly not. | ||
arnsholt | jnthn: Yeah, I spotted the commit in the scrollback. Good stuff | ||
nwc10 | is it fair/easy/legit to offer a SparseArray which is a subclass of Array? | ||
tadzik | jnthn: could you take a look at github.com/jnthn/nqp-jvm-prep/pull/15? | ||
the existing existspos is rong | 18:16 | ||
jnthn | tadzik: ah, indeed | 18:17 | |
dalek | p-jvm-prep: 1d9f6b4 | tadzik++ | / (2 files): Make existspos respect the start marker |
||
p-jvm-prep: 602f9dc | jonathan++ | / (2 files): Merge pull request #15 from tadzik/existspos-bugfix Make existspos respect the start marker |
|||
jnthn | Hunger strikes! Shop, dinner... & | ||
nwc10 apologises if he's working here to delete code that people lovingly crafted in the past few days. | |||
pmurias | nwc10: shouldn't a SparseArray actually use sparse storage? | ||
nwc10 | yes. | 18:18 | |
well, I guess yes. | |||
tadzik | nwc10: I'm glad it'll be gone :) | ||
nwc10 | you can fake it on non-sparse storage, I guess. | ||
pmurias | having sparse semantic and a non-sparse storage might be confusing | ||
tadzik | I didn't like it from the start | ||
arnsholt | Well, once you have working sparse semantics you can refactor the guts to use sparse storage as well =) | 18:20 | |
18:20
SamuraiJack__ left
|
|||
arnsholt | Make it run, make it right, make it fast =) | 18:20 | |
nwc10 | "fast" might be a lot easier if you can use native arrays and not add a layer on top to fake sparseness | 18:21 | |
but, if there is already a layer on top... | 18:22 | ||
arnsholt | But if you need optimised underlying storage to make it truly blazingly fast, we can always make a custom REPR for it | 18:23 | |
pmurias | jnthn: the $?PACKAGE only seems to have a default value in the symtable | 18:24 | |
jnthn: ah, it's a compile_time_value | 18:29 | ||
18:37
pjcj joined
18:38
marloshouse left
18:39
SunilJoshi left
18:41
marloshouse joined
|
|||
pmurias | jnthn: do we want to somehow annotate it on QAST::Var or should I extract it from the symtable? | 18:47 | |
TimToady | r: sub clear { print state $ = qx[clear] } | 19:02 | |
p6eval | rakudo b39b6f: OUTPUT«===SORRY!===Error while compiling block : Error while compiling op call: Error while compiling block : Error while compiling block clear: Error while compiling op p6typecheckrv: Error while compiling op lexotic: Error while compiling op p6decontrv: Error while com… | ||
TimToady | rakudobug | 19:03 | |
19:05
jeffreykegler joined
|
|||
swarley | Just finished implementing Object (the equivalent of nqp-jvm's SixModelObject), now to figure out what I should do now | 19:12 | |
pmurias | swarley: think how will you compile method calls, function calls, variables, number addition etc. | 19:13 | |
swarley | I think that number addition will actually be easy if I can make an interface that would force me to implement a number class that can do all of the things that perl6 numbers/integers are supposed to be able to do | 19:15 | |
19:15
awwaiid left
|
|||
swarley | Since in go you can make an interface an argument type, and you can pass anything that implements all of the methods described in the interface | 19:15 | |
19:16
awwaiid joined
19:17
jerome joined
|
|||
dalek | kudo-js: 6a3a4fb | (Paweł Murias)++ | / (2 files): Pass qast_variable.t |
19:21 | |
japhb | WIP: github.com/japhb/perl6-most-wanted | 19:26 | |
time to take a keyboard break, I think. :-) | 19:27 | ||
dalek | kudo-js: 23ebf1c | (Paweł Murias)++ | src/QAST/Compiler/JavaScript.nqp: Declare javascript variables we store lexicals in. |
19:29 | |
pmurias | TimToady: can we get rid of Array.delete? | 19:30 | |
19:31
snearch joined
19:32
snearch left
|
|||
pmurias | TimToady: and Array.exists? as that seems to be a port of deprecated Perl 5 semantics | 19:32 | |
swarley | one thing that I'm afraid of is that Go doesn't yet support dynamic loading.. | 19:33 | |
Actually, it supports dynamic loading of C code | 19:34 | ||
but not Go code | |||
19:35
GlitchMr left
19:36
japhb left
19:37
japhb joined
|
|||
jnthn | pmurias: What node were you expecting to have its compile_time_value? Typcially though, they're resolved through the symbol table. | 19:38 | |
19:39
GlitchMr joined
|
|||
jnthn | r: sub clear { print state $ = qx[clear] } | 19:39 | |
p6eval | rakudo b39b6f: OUTPUT«===SORRY!===Error while compiling block : Error while compiling op call: Error while compiling block : Error while compiling block clear: Error while compiling op p6typecheckrv: Error while compiling op lexotic: Error while compiling op p6decontrv: Error while com… | ||
jnthn | r: sub clear { print state $x = qx[clear] } | ||
p6eval | rakudo b39b6f: ( no output ) | ||
pmurias | QAST::Var but I'm taking the value from the symtable now | 19:42 | |
dalek | kudo-js: 7d66efa | (Paweł Murias)++ | runtime.js: fake box_n, unbox_n |
19:48 | |
kudo-js: e3c8b1d | (Paweł Murias)++ | src/QAST/Compiler/JavaScript.nqp: remove use of nqp.undef |
|||
nwc10 | jnthn: OK, if one wants to punt "exists" on an array up from NQP into Rakudo, one needs to have a way to flag a slot as "non-existent" | 19:49 | |
as best I can tell right now this is done in Parrot with PMC_IS_NULL, and in Java with null | |||
19:49
snearch joined
|
|||
nwc10 | ie, exists_pos tests that. | 19:49 | |
and there's no way to (re)set it from NQP let alone Rakudo | 19:50 | ||
rn: my @a; @a[2] = "c"; say @a.exists(1); say @a[1].perl | |||
p6eval | niecza v24-20-g93138cc: OUTPUT«Unhandled exception: Unable to resolve method exists in type Array at /tmp/AVCfak51ry line 1 (mainline @ 5)  at /home/p6eval/niecza/lib/CORE.setting line 4227 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4228 (module-CORE @ 580)  at /ho… | ||
..rakudo b39b6f: OUTPUT«FalseAny» | |||
nwc10 | r: my @a; @a[2] = "c"; @a[1]=Any; say @a.exists(1); say @a[1].perl | ||
p6eval | rakudo b39b6f: OUTPUT«TrueAny» | ||
19:52
snearch left
|
|||
nwc10 | also, is this an off-by-one on delete? | 19:52 | |
jnthn | nwc10: We can easily nqp::bindpos an nqp::null there I guess | ||
19:52
snearch joined
|
|||
nwc10 | r: my @a; @a[2] = "c"; @a[1]=Any; say @a.exists(1); say @a[1].perl | 19:52 | |
p6eval | rakudo b39b6f: OUTPUT«TrueAny» | ||
pmurias | can't we just remove Array.delete and Array.exists? | ||
jnthn | pmurias: I am trying to work out what they're actually for :) | 19:53 | |
Like, actual use cases | |||
pmurias | the seem to be copied over from Perl 5 | ||
* they | |||
nwc10 | OK, here goes: | 19:54 | |
jnthn | My intuitive guess woulda been that .delete is basically splicing out the element in question and exists is about elems. | ||
nwc10 | r: my @a; @a[2] = "c"; @a[1]=Any; say @a.exists(1); say @a[1].perl; # no deleting | 19:55 | |
p6eval | rakudo b39b6f: OUTPUT«TrueAny» | ||
19:55
snearch left
|
|||
nwc10 | r: my @a; @a[2] = "c"; @a[1]=Any; @a.delete(1); say @a.exists(1); say @a[1].perl; # deleting at 1 | 19:55 | |
p6eval | rakudo b39b6f: OUTPUT«TrueAny» | ||
nwc10 | my @a; @a[2] = "c"; @a[1]=Any; @a.delete(2); say @a.exists(1); say @a[1].perl; # deleting at 2 | ||
r: my @a; @a[2] = "c"; @a[1]=Any; @a.delete(2); say @a.exists(1); say @a[1].perl; # deleting at 2 | 19:56 | ||
p6eval | rakudo b39b6f: OUTPUT«FalseAny» | ||
19:56
snearch joined
|
|||
jnthn | r: my @a = 1,2,3; @a.delete(1); say @a | 19:56 | |
nwc10 | so, delete at 2, and element 1 goes away | ||
p6eval | rakudo b39b6f: OUTPUT«use of uninitialized value of type Any in string context in block at /tmp/oOxT2iAxYw:11 3» | ||
pmurias | nwc10: there is already a ticket for that | ||
it looks like a bug | |||
jnthn | OK, I honestly thought delete actually shrunk the array up until now. Shows how much I've used it :/ | ||
19:57
snearch left
|
|||
dalek | kudo/nom: 7ad6e63 | jnthn++ | src/Perl6/Actions.pm: Fix anonymous state variable regression. |
19:57 | |
jnthn | TimToady: ^^ | ||
19:58
snearch joined
|
|||
jnthn | r: my $x = 1; sub foo() { state $ = $x++ }; say foo; say foo; | 19:58 | |
p6eval | rakudo b39b6f: OUTPUT«===SORRY!===Error while compiling block : Error while compiling op call: Error while compiling block : Error while compiling block foo: Error while compiling op p6typecheckrv: Error while compiling op lexotic: Error while compiling op p6decontrv: Error while compi… | ||
jnthn | good, that's a test case... | ||
nwc10 | oh, I see the crazy in Array.delete. :-( | ||
it's, just, well, wrong. | 19:59 | ||
20:00
snearch left
|
|||
TimToady | delete is primarily there for sparse arrays, but if normal arrays can support it, why not? you can save a bit more memory that way | 20:00 | |
20:01
snearch joined
|
|||
dalek | ast: e1540b7 | jnthn++ | S04-declarations/state.t: Test anonymous state variables. |
20:01 | |
jnthn | TimToady: But what's it actually meant to do? | ||
TimToady | generally, poke in a null pointer | ||
jnthn | OK, and .exists(...) checks for in range and non-null? | ||
TimToady | yeah | 20:02 | |
jnthn | OK. | ||
nwc10 | pop needs to be consistent with sparseness | ||
jnthn | r: my @a; @a[1] = 1; say @a[0].exists; | ||
p6eval | rakudo b39b6f: OUTPUT«No such method 'exists' for invocant of type 'Any' in block at /tmp/FLwc_eQDA5:1» | ||
jnthn | r: my @a; @a[1] = 1; say @a[0]:exists; | 20:03 | |
p6eval | rakudo b39b6f: OUTPUT«Any()» | ||
jnthn | r: my @a; @a[1] = 1; say @a.exists(0); | ||
p6eval | rakudo b39b6f: OUTPUT«False» | ||
20:03
snearch left
|
|||
jnthn | r: my @a; @a[1] = 1; say @a.exists(1); | 20:03 | |
p6eval | rakudo b39b6f: OUTPUT«True» | ||
jnthn | nwc10: Example? | ||
nwc10 | I can give you it in perl 5. Let's try perl 6 | ||
r: my @a; @a[2] = "c"; pop @a; say @a.exists(1); say @a[1].perl; say @a.elems; @a.delete(1); say @a.exists(1); say @a[1].perl; say @a.elems; | 20:05 | ||
p6eval | rakudo b39b6f: OUTPUT«FalseAny2FalseAny0» | ||
nwc10 | there. | ||
deleting an element that *does not exist* changes the size of the array | |||
GlitchMr | masak, when the article about first p6cc task will appear? | 20:06 | |
nwc10 doesn't exactly find that behaviour sane. | |||
jnthn | Sounds like that's taking "poke a null in there" too literally... | ||
Anyway, from this I observe that exists is implementable in terms of elems and nqp::isnull(nqp::atpos(...)) | 20:07 | ||
TimToady | isn't that the code that is treating delete like splice anyway? | ||
jnthn | And delete in terms of nqp::elems and bindpos'ing a null | ||
nwc10 | the Rakudo code for delete is strange and wrong. Doesn't seem to be splicing | 20:08 | |
jnthn | TimToady: Given until about 10 mintues ago I thought that was the sane thing for it to do, it wouldn't surprise me... | ||
TimToady | :) | ||
GlitchMr | <nwc10> [20:04:13] deleting an element that *does not exist* changes the size of the array | ||
I've tried doing that in JavaScript. | |||
Until 'say @a.elems;' part, everything was exactly like Rakudo did. | 20:09 | ||
Second 'say @a.elems;', that is. | |||
nwc10 | not sure if this is the same Rakudo bug as already reported: | ||
r: my @a; @a[2] = "c"; @a[1] = Mu; say @a.exists(1); say @a[1].perl; say @a.elems; @a.delete(2); say @a.exists(1); say @a[1].perl; say @a.elems; | |||
p6eval | rakudo b39b6f: OUTPUT«TrueMu3FalseAny0» | ||
nwc10 | in that, the trim loop in Array.delete is using a defined test, not an exists test | ||
jnthn | nwc10: Hm, delete looks...odd. | 20:10 | |
nwc10 | it's wrong. It's not doing the Perl 5 behaviour | ||
20:10
not_gerd joined
|
|||
nwc10 | but if it did do the Perl 5 behaviour | 20:10 | |
it would still be inconsistent with pop's current behaviour | |||
not_gerd | Parrot 'post mortem' by chromatic: www.modernperlbooks.com/mt/2013/02/...arrot.html | ||
GlitchMr | Appears to be a bug in delete. | ||
nwc10 | (just like Perl 5 is inconsistent between pop, delete and exists) | 20:11 | |
pmurias | implementing delete for typed arrays (of integers for example) will be tricky | ||
not_gerd | my own vision: lists.parrot.org/pipermail/parrot-d...07333.html | ||
nwc10 | the implementation sneaks out | ||
GlitchMr | Still, depending on .delete() to work on arrays is just wrong. | ||
jnthn | nwc10: I can see it's wrong from the outside. :) Looking at it makes me wonder why it's the way it is. :) | ||
GlitchMr | I think it was wrong in any programming language. | ||
nwc10 | delete *should* work on sparse arrays | 20:12 | |
GlitchMr | But well, the del behavior in Python is sane. | ||
nwc10 | it's meaningful there | ||
GlitchMr | The delete behavior in Perl 6 appears to be JavaScript behavior. | ||
Which is so wrong. | |||
jnthn | I suspect this isn't one of JavaScripts good parts ;) | ||
GlitchMr | In JavaScript, array is just object with magical .length property. | ||
Or unset() in PHP. | 20:13 | ||
The problem is that in JS or PHP, arrays are just objects. | |||
In Perl 6, arrays are arrays. | |||
I would rather make .delete() illegal, or implement Python behavior. | 20:14 | ||
colomon | TimToady: would it be okay to add a .set method to p6? (Or are we already supposed to have one?) ie instead of set @a you'd be able to say @a.set | ||
GlitchMr | I think the similar argument applies to delete for arrays in Perl 5. | 20:15 | |
TimToady | colomon: sure | ||
GlitchMr | But delete for arrays is already deprecated in Perl 5. | ||
TimToady | GlitchMr: not by me :) | ||
colomon | TimToady: thanks! | 20:16 | |
GlitchMr | Personally I find delete on arrays working like that a mistake. | ||
20:16
rindolf joined
|
|||
GlitchMr | Replacing value with Any is just wrong. | 20:17 | |
Personally, I would rather see @a.delete($x) to work like @a.splice($x, 1) | 20:19 | ||
This is Python behavior. | |||
20:20
snearch joined
|
|||
dalek | ecza: 4c8f264 | (Solomon Foster)++ | lib/CORE.setting: Add Cool.set and Cool.bag. |
20:22 | |
20:23
snearch left,
snearch joined
|
|||
nwc10 | Python behaviour precudes sparse arrays, doesn't it? | 20:24 | |
TimToady | GlitchMr: no, I don't want to huffmanize splicing | ||
GlitchMr | Still, I'm not sure if .delete() working like that makes sense. | 20:25 | |
20:25
snearch left
|
|||
GlitchMr | It makes it feel like it's actually a hash, not an array. | 20:25 | |
TimToady | splicing one element of an array usually mean syou should be using a hash | 20:26 | |
20:26
snearch joined
|
|||
TimToady | if an implementation wants to provide sparse arrays by default for Array, then that's okay, and delete should work as in Perl 5 | 20:27 | |
need to take progeny to SJC, back later & | 20:28 | ||
GlitchMr | Wasn't delete $a[0] syntax added to Perl 5 when pseudo hashes were added? | ||
For consistency? | |||
nwc10 | no, *after* | ||
dalek | kudo-js: a4f211a | (Paweł Murias)++ | / (2 files): Pass qast_arguments.t, implement named optional arguments. |
||
20:28
snearch left
|
|||
nwc10 | problem is that pop doesn't properly emulate sparseness | 20:29 | |
which would be fine for Perl 6, if pop from the "start" said "oh, it's sparse" and shrinks the array properly if popping of the last element exposes a gap | |||
also, the array ought to be properly sparse at both ends | 20:30 | ||
r: my @a; @a[42] = "Perl"; say @a.elems | |||
p6eval | rakudo 7ad6e6: OUTPUT«43» | ||
nwc10 | which it's not. It's only sparse at the high end | ||
GlitchMr | r: my @a; @a[Inf] = "Perl"; | 20:31 | |
p6eval | rakudo 7ad6e6: OUTPUT«Cannot index Array with Inf in method at_pos at src/gen/CORE.setting:6299 in method postcircumfix:<[ ]> at src/gen/CORE.setting:1402 in block at /tmp/oQrSnTxOCi:1» | ||
GlitchMr | r: my @a; @a[9e99] = "Perl"; | ||
p6eval | rakudo 7ad6e6: ( no output ) | ||
GlitchMr | r: my @a; @a[9e99] = "Perl"; say +@a | ||
p6eval | rakudo 7ad6e6: OUTPUT«1» | ||
GlitchMr | Is it array? | ||
nwc10 | good point. it's also not sparse in that sense either. | ||
it's pretty much exactly like how perl 5 does it. real allocation | 20:32 | ||
GlitchMr | Looks more like hash, except only accepting positive integers. | ||
nwc10 | but an out of band way to say "this slot was never allocated to" | ||
GlitchMr | r: my @a; @a[9e99] = "Perl"; say @a.perl; | ||
p6eval | rakudo 7ad6e6: OUTPUT«Array.new("Perl")» | ||
GlitchMr | huh? | 20:33 | |
r: my @a; @a[9e99] = "Perl"; say @a[0]; | |||
p6eval | rakudo 7ad6e6: OUTPUT«Perl» | ||
GlitchMr | HUH? | ||
r: my @a; @a[999999999999999999999999999999999999999999999999999] = "Perl"; say @a[0]; | |||
p6eval | rakudo 7ad6e6: OUTPUT«ResizablePMCArray: index out of bounds! in block at src/gen/CORE.setting:6309 in block at /tmp/bVst6Idbkn:1» | ||
colomon | n: my @a; @a[999999999999999999999999999999999999999999999999999] = "Perl"; say @a[0]; | 20:35 | |
jnthn | Given arrays in Rakudo aren't spare, that would have been a lot of memory if it had worked ;) | ||
p6eval | niecza v24-20-g93138cc: OUTPUT«Unhandled exception: Writing to readonly scalar at /tmp/60Jm2iJi6e line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4227 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 4228 (module-CORE @ 580)  at /home/p6eval/niecza/li… | ||
jnthn | *aprse | ||
colomon | does seem like they both give a weird error, though. | ||
jnthn | I suspect it overflows somewhere along the line. | ||
GlitchMr | r: my @a = 4; @a[1.0] = 2; @a[2e0] = 3; say @a.perl | ||
p6eval | rakudo 7ad6e6: OUTPUT«Array.new(4, 2, 3)» | ||
GlitchMr | r: my @a = 4; @a[1.0] = 2; @a[1e0] = 3; say @a.perl | ||
p6eval | rakudo 7ad6e6: OUTPUT«Array.new(4, 3)» | ||
GlitchMr | huh? | 20:36 | |
So why 9e99 == 0? | |||
20:36
domidumont left
|
|||
jnthn | r: say 9e99 | 20:36 | |
p6eval | rakudo 7ad6e6: OUTPUT«9e+99» | ||
jnthn | bah | ||
GlitchMr | I'm talking about 'my @a; @a[9e99] = "Perl"; say @a[0];' | ||
nwc10 | what integer does 9e99 get coerced to? | ||
GlitchMr | 9e99 is Num | ||
jnthn | Yes, and you have to turn it into an integer at some point. | 20:37 | |
GlitchMr | > 9e99.Int | ||
8999999999999999948859130765266355329578537025198862586562510896759102769772101980841694466750283776 | |||
jnthn | r: 9e99.INT.say | ||
p6eval | rakudo 7ad6e6: OUTPUT«No such method 'INT' for invocant of type 'Num' in block at /tmp/W0V2TW9abC:1» | ||
jnthn | r: 9e99.Int.say | ||
p6eval | rakudo 7ad6e6: OUTPUT«8999999999999999948859130765266355329578537025198862586562510896759102769772101980841694466750283776» | ||
jnthn | I...am pretty sure that isn't going to work out without a very special array implementation. :) | ||
GlitchMr | r: my int $i = 9e99.Int; say $i; | ||
p6eval | rakudo 7ad6e6: OUTPUT«0» | ||
GlitchMr | Huh? | 20:38 | |
geekosaur | too big to fit | ||
GlitchMr | r: my @a; @a[9e99.Int + 1] = "Perl"; say @a.perl; | ||
p6eval | rakudo 7ad6e6: OUTPUT«Array.new(Any, "Perl")» | ||
GlitchMr | That would make sense | ||
So, yeah... 9e99 == 0 | |||
arnsholt | r: say max(3,5) | 20:39 | |
p6eval | rakudo 7ad6e6: OUTPUT«5» | ||
geekosaur | 0 is probably better than random-wrapped-value | ||
GlitchMr | If 9e99 is converted to native integer. | ||
> 8999999999999999948859130765266355329578537025198862586562510896759102769772101980841694466750283776 / 256 ** 32 | |||
77725516995850001186816 | |||
So it's divisible by 256 ** 32 | 20:40 | ||
To be exact, 256 ** 35 | |||
colomon | r: say 9e99.int | 20:41 | |
p6eval | rakudo 7ad6e6: OUTPUT«No such method 'int' for invocant of type 'Num' in block at /tmp/vuHTglvj3F:1» | ||
20:41
tadzik left
|
|||
swarley | Why not just convert it to a constant like Infinity or something? | 20:44 | |
Since it's not an accurate computation anyway. | 20:45 | ||
arnsholt | *sigh* It annoys me that Ubuntu doesn't install perldoc and friends along with Perl | ||
nwc10 | they'd probably try not to install perl, but they made the fatal mistake of picking Debian as their upstream :-) | ||
20:46
snearch joined
20:48
snearch left
20:49
snearch joined
|
|||
swarley | [37] pry(main)> 9e99 - 8e99 | 20:49 | |
=> 1.0000000000000002e+99 | |||
heh, I was pretty sure that ruby handled those numbers as Bignums instead of floats to keep precision... I guess not | 20:50 | ||
colomon | swarley: 8999999999999999948859130765266355329578537025198862586562510896759102769772101980841694466750283776 is a perfectly fine Int in p6. Problem is it's not a fine int. But then neither is Inf. | 20:51 | |
20:51
snearch left
|
|||
colomon | sanely speaking, I would think it should throw an array bounds error or something. | 20:51 | |
20:52
snearch joined
|
|||
swarley | I'm Just saying, if it's not 9 with 99 zeros behind it, it's not correct as far as the math goes so if you're relying on it to do calculations you may find it amiss. So I think that maybe a warning would be warranted | 20:52 | |
colomon | disagree. | ||
that's the way floating point numbers always work. | 20:53 | ||
swarley | I'm not saying its a perl6 specific thing | ||
I know it happens in most languages | |||
if not all | |||
rindolf | Hi all. | ||
GlitchMr | What do you want? | ||
> 9 * 10 ** 99 | |||
9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | |||
colomon | no, I'm saying in p6, 9e99 is a very specific request to make a floating point number approximately equal to 9 * 10**99 | 20:54 | |
nr: say 9 * 10**99 | |||
20:54
snearch left
|
|||
p6eval | rakudo 7ad6e6, niecza v24-20-g93138cc: OUTPUT«9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000» | 20:54 | |
swarley | ah. | ||
GlitchMr | nr: say 3.14 * 10**99 | ||
swarley | Alright, then disregard my previous thoughts | ||
p6eval | niecza v24-20-g93138cc: OUTPUT«3.14E+99» | ||
..rakudo 7ad6e6: OUTPUT«3140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000» | |||
GlitchMr | nr: say 3.14 * 10**-99 | ||
p6eval | rakudo 7ad6e6: OUTPUT«3.14e-99» | ||
..niecza v24-20-g93138cc: OUTPUT«3.1400000000000335E-99» | |||
20:54
snearch joined
|
|||
colomon | rn: say (10**-99).WHAT | 20:55 | |
p6eval | rakudo 7ad6e6, niecza v24-20-g93138cc: OUTPUT«Num()» | ||
20:56
snearch left
21:00
rindolf left
21:01
not_gerd left
21:03
rindolf joined
|
|||
colomon | rn: (1..100).grep(*.is-prime) | 21:06 | |
p6eval | rakudo 7ad6e6, niecza v24-21-g4c8f264: ( no output ) | ||
colomon | rn: say (1..100).grep(*.is-prime) | ||
p6eval | rakudo 7ad6e6, niecza v24-21-g4c8f264: OUTPUT«2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97» | ||
colomon | on my computer that doesn't work under Rakudo for some reason. | 21:07 | |
arnsholt | r: say "empty string is false" if not "" | ||
p6eval | rakudo 7ad6e6: OUTPUT«empty string is false» | ||
swarley | Where does nqp-jvm outline it's calling convention? if it does at all. I'm not quite sure as to the anatomy of the project. | 21:08 | |
A directory would suffice, but a file name would be splendid | 21:09 | ||
jnthn | swarley: See CallSiteDescriptor.java, and in Ops.java look over arg, result, return and param related ops | 21:11 | |
dalek | kudo/nom: d76f9b2 | (Solomon Foster)++ | src/core/Cool.pm: Add Cool.set and Cool.bag. |
||
21:11
bluescreen10 joined
|
|||
swarley | Thank you very much, jnthn | 21:13 | |
21:13
snearch joined
21:15
snearch left
21:16
snearch joined,
stevan_ joined
21:18
snearch left
21:19
jeffreykegler left
21:26
tokomer left
21:27
zby_home_ left
21:29
jeffreykegler joined
21:37
swarley| joined
21:44
rindolf left
21:47
jeffreykegler left
|
|||
arnsholt | jnthn++ # Grammar::Tracer | 21:51 | |
colomon | indeed, jnthn++ # Grammar::Tracer helped me out again this week. | 22:02 | |
timotimo | i wish it could be used to trace rakudos internal parsing process, though :( | ||
arnsholt | Hehe. That'd be super-mega-awesome, yeah | 22:03 | |
I'm in user-space though, so I can trace my stuff | |||
dalek | p: bf54542 | jnthn++ | src/6model/ (2 files): Add associative REPR API. |
||
p: 08684cd | jnthn++ | src/ (5 files): Refactor elems. |
|||
p: 4436142 | jnthn++ | src/ (2 files): Implement associative_delegate. |
|||
p: 02e8737 | jnthn++ | src/core/NQPCapture.pm: Switch NQPCapture to use associative_delegate. |
|||
p: 8654841 | jnthn++ | src/QAST/ (2 files): Switch QAST over to associative_delegate. |
|||
kudo/nom: a3869a0 | jnthn++ | / (2 files): Update to build on latest NQP. REPR API additions force a fresh sixmodelobject.h, so also needed to do an NQP_REVISION bump. |
22:10 | ||
p-jvm-prep: bc0b78c | jnthn++ | src/org/perl6/nqp/sixmodel/SerializationReader.java: Bump serialization version recognized. |
22:13 | ||
p-jvm-prep: b410c24 | jnthn++ | nqp-src/nqp-mo.pm: Get NQPAttribute additions. |
|||
p-jvm-prep: 4204e07 | jnthn++ | nqp-src/NQPCORE.setting: Add NQPCapture to the setting. |
|||
jnthn | timotimo: There --rxtrace switch to Rakudo, though it maybe ain't the most reliable thing... | ||
timotimo | ooooh | 22:14 | |
jnthn | Nor is it pretty and colorful | ||
oh hmm | |||
Seems it gets lost at language switch or so. | 22:15 | ||
22:17
kaare_ left
|
|||
pmurias | jnthn: ping | 22:18 | |
the while op takes it 1..* params as the body? | 22:19 | ||
jnthn | pmurias: No | ||
pmurias: The first param is the body as such | |||
Well, given the zeroeth is the condition :) | |||
The extra one is the "increment" or whatever | 22:20 | ||
Consider | |||
r: loop (my $i = 0; $i < 10; $i++) { next if $i % 2; say $i } | |||
p6eval | rakudo d76f9b: OUTPUT«02468» | ||
jnthn | We need to always do the $i++ even if we next. | ||
The extra child would contain the $i++ here | |||
So that it ends up outside of the region covered by the next handler. | 22:21 | ||
(redo also...) | |||
pmurias | aha | 22:22 | |
22:23
PacoAir left,
PacoAir joined
|
|||
pmurias | jnthn: repeat_while also takes that? | 22:25 | |
or only while? | |||
jnthn | pmurias: All of them take it | 22:26 | |
pmurias: On the Parrot and JVM implementations all 4 forms are generated the same way. | |||
They have a lot in common. | |||
pmurias | in the js implementation too | 22:27 | |
jnthn | :) | ||
pmurias | but is it possible to write Perl 6 which compiles to a 3 argument variant of something different from a while? | 22:29 | |
22:29
erkan left
|
|||
arnsholt | r: my constant x = 3; say x | 22:30 | |
p6eval | rakudo d76f9b: OUTPUT«3» | ||
jnthn | pmurias: Not that I can think of, off hand. | 22:32 | |
Hmm...the nqp-jvm Makefile got improved and now it's too clever for me to edit. | |||
jnthn tries to figure out how his simple addition creates a circular dependency | 22:33 | ||
pmurias | should perl6 have repeat loop? | ||
perl6: repeat {say 1} loop (;0;) | 22:35 | ||
p6eval | niecza v24-21-g4c8f264: OUTPUT«===SORRY!===Strange text after block (missing comma, semicolon, comment marker?) at /tmp/ZNrjhVGaw8 line 1:------> repeat {say 1}⏏ loop (;0;)Undeclared routine: 'repeat' used at line 1Parse failed»… | ||
..rakudo d76f9b: OUTPUT«===SORRY!===Missing "while" or "until"at /tmp/TXtN4nMke2:1------> repeat {say 1} ⏏loop (;0;) expecting any of: postfix infix or meta-infix infix stopper statement end statement modi… | |||
masak | evenin', #perl6 | 22:36 | |
swarley | llol what is up with the eject button symbol there? | 22:39 | |
22:39
not_gerd joined
|
|||
jnthn | swarley: It tells you where teh parser ejected | 22:39 | |
swarley | Ah alright | ||
jnthn | o/ masak | ||
not_gerd | <-- the guy who made the Makefile unusable | ||
jnthn | not_gerd: I think I figured out what I misunderstood :) | 22:40 | |
arnsholt | Is there an accepted idiom/way to create a top-level module that gathers up symbols from subordinate packages and re-exports them to the end user? | 22:41 | |
jnthn | Mostly, I trust others to know better than me when it comes to makefiles | ||
arnsholt | I've become rather too adept at writing (GNU) Makefiles. I think it scares my colleagues at times =D | 22:42 | |
swarley | I write weird makefiles | ||
not_gerd | arnsholt: same here | 22:43 | |
then jnthn had to spoil my fun by using nmake | |||
arnsholt | Hehe | 22:45 | |
jnthn | I seem to have figured it out | ||
22:50
pupoque joined
|
|||
arnsholt | Wow, it's almost as if ZMQ has gone out of its way to be unfriendly to interface with from HLLs | 22:51 | |
timotimo | :( | 22:54 | |
arnsholt | Just a 'sec | 22:56 | |
You'll be happy nonetheless =) | |||
timotimo: github.com/arnsholt/Net-ZMQ | 22:58 | ||
It's a start =) | |||
timotimo | wait, what, it's already done? | ||
how are you so fast? | 22:59 | ||
arnsholt | Well, there's lots more to be done | ||
This was the easy bit | |||
But bedtime now I'm afraid. More hacking tomorrow I hope =) | |||
jnthn | arnsholt++ | 23:00 | |
Sleep well :) | |||
23:01
pupoque left
|
|||
timotimo | good night! | 23:02 | |
dalek | p-jvm-prep: 1c90873 | jnthn++ | / (2 files): Add a mostly-uncommented QASTNodes. The commented out bits fail to compile, but it seems there are only really two main reasons for that. This library is used by the QRegex library, though mostly for its declarations rather than functionality, so the commented out bits don't block progress to work on regex stuff. |
||
FROGGS | arnsholt: sleep well you must | 23:07 | |
23:08
spider-mario left
|
|||
FROGGS | is "[a|b]" an Regex( :rxtype<altseq> ) ? | 23:12 | |
pmurias | jnthn: do you think it would be possible to compile the regex NQP codes to non-regex nqp codes? | 23:13 | |
jnthn | FROGGS: In Perl 6 regex that's a seq | ||
pmurias | so we could have an implementation independent rule engine? and how much speed would that cost? | ||
FROGGS | k, thanks | ||
pmurias | s/nqp codes/QAST nodes | ||
FROGGS | jnthn: in nqp too? | 23:14 | |
jnthn | It may take a little effort to get the control flow to work. | ||
FROGGS: Yes, sorry, I was unclear; I meant the Perl 6 regex syntax. | |||
FROGGS: After saying it I also realized that [a|b] would be a weird charclass in P5 regex so it almost certainly wasn't what you meant :) | 23:15 | ||
FROGGS: Anyway, | is seq, || is altseq. | |||
FROGGS | ahh cool, understand | ||
jnthn | pmurias: I think control flow aside it's probably possible. | 23:16 | |
pmurias: Especially after a few more bits of cleanup. | |||
pmurias: It's hard to guess at the speed impact. | |||
You can encode native types nicely enough in QAST so that bit ain't so bad. | 23:17 | ||
FROGGS: To clarify if you're wondering, | invokes the LTMer, || just tries things one after the other. | 23:18 | ||
FROGGS | right | 23:20 | |
jnthn | pmurias: For JVM I think I'll just go straight down to bytecode, but I don't think what you're suggesting is crazy at first blush :) | 23:21 | |
dalek | rl6-most-wanted: 7e2175c | (Geoffrey Broadwell)++ | README.md: Add link-heavy summary at top of main README, and improve some of the remaining text |
23:23 | |
pmurias had basic grammars working before the serialization refactor so it's a matter of unbitrotting and expanding ;) | |||
(on js) | |||
dalek | kudo-js: 3e714f7 | (Paweł Murias)++ | runtime.js: Convert arguments to numeric ops. |
23:24 | |
kudo-js: 643f944 | (Paweł Murias)++ | runtime.js: Fix conversion of numers to integers. |
|||
kudo-js: 158e1a6 | (Paweł Murias)++ | / (2 files): Implement parts of qast_core.t |
|||
kudo-js: 298575b | (Paweł Murias)++ | / (3 files): Pass qast_core.t |
|||
rl6-most-wanted: 90eb9cd | (Geoffrey Broadwell)++ | README.md: Make it easier to see that first two links are separate in top level README |
23:25 | ||
23:25
PacoAir left
23:28
uvtc joined
|
|||
uvtc | Just a bit curious about the history here: it seems that, at some point, Parrot was considered to be probably the primary-ish platform for Perl 6 (though, I'm guessing it was assumed there would be others). If that's the case, what were the circumstances around it becoming a general-purpose VM (rather than the Rakudo VM)? Was it something that just gradually happened? | 23:33 | |
pmurias | is was supposed to be a common VM for dynamic languages | 23:34 | |
uvtc | If this is all just water under the bridge, I won't push for any sort of answer. But it strikes me as odd that Parrot would become *not* the primary VM for Rakudo, and I was curious about the circumstances surrounding the decision (if there was one). | ||
pmurias | isn't Parrot older than Rakudo? | 23:35 | |
timotimo | arnsholt: you made the code but no tests? :o | ||
uvtc | I don't know the history here. | ||
colomon | Parrot being a general purpose VM has been a goal for about a decade. | 23:36 | |
timotimo | i thought that was totally unaccaptable in perl land | ||
jnthn | The idea that Parrot would be a VM for multiple languages pre-dates Rakudo for sure. | ||
timotimo: I think arnsholt++ is just getting started so far ;-) | |||
pmurias | the name refers to a joke about merging perl and python | 23:37 | |
uvtc | Did Parrot pre-date the throwing of the mug and Perl 6? | ||
colomon | timotimo: Perl-land demands tests, but doesn't particularly care whether they are written first, last, or in-between. | ||
uvtc: no | |||
uvtc | pmurias: Yes, I remember that joke. | 23:38 | |
jnthn | OK, sleep time here...'night all o/ | ||
uvtc | pmurias: the faux book cover too. | ||
colomon | \o | ||
swarley| | I'm more curious as to when parrot-rakudo relations began to become strained | 23:40 | |
not_gerd | swarley|: did you read chromatic's latest blog posting? | 23:41 | |
he details the Perl6-on-Parrot story as he remembers it | |||
uvtc | I'm guessing that there was some balance of priorities (be a general-purpose VM (x%) and be Rakudo's VM (y%). I'm curious if those percentages changed due to some decision, or if it was a gradual thing. | ||
dalek | rl6-most-wanted: c3468c9 | (Geoffrey Broadwell)++ | data-sources/README-sources.md: Linkify data-sources README |
23:43 | |
skids | .oO(Strange the sense of accomplishment one gets from moving lots of stuff that will melt in a few weeks 8 feet sideways) |
23:44 | |
colomon | swarley: things were definitely somewhat strained at YAPC::NA 2011. | 23:45 | |
swarley| | Hm | ||
uvtc | skids: because it's fairly light, you get the feeling you're moving huge amounts of *stuff*! Grrr! | 23:46 | |
Ok. Right. Perl 6 was being discussed/planned, and Parrot 0.1.1 was released, it's docs/intro.pod saying: | 23:49 | ||
"Perl 6 plans to separate out the design of the compiler and the interpreter. This is why we've come up with a subproject, which we've called Parrot, which has a certain, limited amount of independence from Perl 6. Parrot is destined to be the Perl 6 Virtual Machine, the software CPU on which we will run Perl 6 bytecode. We're working on Parrot before we work on the Perl 6 compiler because it's much easier to write a compiler once you've got a t | |||
arget to compile to!" | |||
I don't know when 0.1.1 was released... | 23:50 | ||
So, at that early point it seemed to be wholly committed to Perl 6. | |||
Ok, 0.2.3 seems to be the last version where that text was in the intro doc. The goals seem to have changed as of v0.3.0. | 23:57 | ||
I'm curious what happened between Parrot 0.2.3 and 0.3.0. | |||
23:59
lue left
|