»ö« 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«a␤b␤c␤»
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«False␤Any␤»
nwc10 r: my @a; @a[2] = "c"; @a[1]=Any; say @a.exists(1); say @a[1].perl
p6eval rakudo b39b6f: OUTPUT«True␤Any␤»
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«True␤Any␤»
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«True␤Any␤»
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«True␤Any␤»
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«False␤Any␤»
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:1␤␤1 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«False␤Any␤2␤False␤Any␤0␤»
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«True␤Mu␤3␤False␤Any␤0␤»
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«0␤2␤4␤6␤8␤»
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 1␤␤Parse 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