»ö« 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.
00:05 tyatpi left 00:06 fgomez joined
dalek ast: 39bcd72 | jnthn++ | S05-metasyntax/angle-brackets.t:
Correct a precedence fail in a test. Rakudo unfudge.
00:13
kudo/nom: 04b1809 | jnthn++ | src/ (3 files):
Implement <( and )>.
00:15 xinming left
dalek kudo/nom: 8523061 | jnthn++ | docs/ChangeLog:
Couple more ChangeLog entries.
00:17
kudo/nom: 5f9d1ad | jnthn++ | docs/ROADMAP:
Remove a completed item, update some items and add the mark_commit thing.
00:21 xinming joined 00:24 colomon_ joined, colomon left, colomon_ is now known as colomon 00:26 thelazydeveloper left
jnthn 'night, #perl6 00:27
diakopter o/ 00:28
00:29 colomon left 00:34 wooden joined, wooden left, wooden joined 00:37 derrazo joined 00:38 derrazo left
diakopter anyone around who knows git? 00:40
dalek p/add-goto: c98f22b | (Matthew Wilson)++ | src/ (3 files):
initial attempt at labels/goto. limitations: can't goto into/from a block if the block declares lexicals; can't forward goto (will aim at fixing this soon)
00:41
p/add-goto: f0bf33d | diakopter++ | / (2 files):
Merge github.com:perl6/nqp into add-goto
diakopter hunh. why do my commits have different usernames 00:42
00:48 colomon joined, thou left 00:52 fibo left 00:59 spaceships left 01:00 mikec_ joined 01:02 thou joined 01:13 PacoAir left
felher Hey folks. Why was ./lib/ removed from nom's @*INC? 01:25
01:28 Loki7 joined 01:37 jaldhar left 01:43 derrazo joined 01:46 Guest14837 left 01:48 Chillance left 01:50 wolfman2000 joined, carlin_ left 01:54 derrazo_ joined 01:55 thou left 01:56 tokuhirom joined, JimmyZ joined
JimmyZ felher: see 6guts.wordpress.com/2012/05/08/sinc...hackathon/ 01:57
01:57 Guest15969 joined, derrazo left 01:58 spaceships joined
felher JimmyZ++, thanks a lot :) 01:58
and jnthn++ for the blogpost, that i totally missed :) 01:59
*which
02:01 Loki7 left 02:04 araujo left 02:05 Guest15969 left 02:07 Guest15969 joined 02:08 Guest15969 left 02:09 Guest15969 joined, Guest15969 left 02:11 PacoAir joined, PacoAir left 02:13 derrazo_ left 02:14 alim left 02:25 colomon left 02:32 orafu left, orafu joined 02:38 carlin_ joined 02:41 carlin_ is now known as carlin 02:42 leprevost joined 02:45 JimmyZ left 02:49 thou joined
sorear diakopter: I know some git 02:50
03:09 jaldhar joined 03:29 bruges joined 03:35 d4l3k_ joined, dalek left, hugme left 03:37 tadzik left, Juerd left, pmichaud_ left, masak left, dalek joined, ChanServ sets mode: +v dalek, d4l3k_ left, masak joined, Juerd joined 03:38 [Coke] joined, Util left, pmichaud joined, Util joined, tadzik joined 03:40 masak left, dalek left 03:41 pmichaud left, dalek joined, ChanServ sets mode: +v dalek 03:42 isBEKaml left 03:43 Util left, dalek left, Juerd left 03:44 dalek joined, ChanServ sets mode: +v dalek, Util joined, Juerd joined, hugme joined, ChanServ sets mode: +v hugme 03:46 dalek left 03:47 dalek joined, ChanServ sets mode: +v dalek 03:48 lestrrat left, lestrrat joined 03:50 d4l3k_ joined, dalek left 03:52 dalek joined, ChanServ sets mode: +v dalek 03:53 d4l3k_ left, derrazo_ joined, derrazo_ is now known as derrazo, masak joined, pmichaud joined 03:55 dalek left 03:56 dalek joined, ChanServ sets mode: +v dalek 03:58 pmichaud left, dalek left, d4l3k_ joined, pmichaud joined 03:59 d4l3k_ is now known as dalek 04:00 Juerd left 04:01 dalek left, Juerd joined 04:02 dalek joined, ChanServ sets mode: +v dalek 04:03 pmichaud left 04:04 d4l3k_ joined, dalek left, pmichaud joined 04:05 d4l3k_ is now known as dalek 04:06 Juerd left 04:08 Juerd joined, d4l3k_ joined, benabik joined, dalek left 04:09 plutoid joined 04:10 dalek joined, ChanServ sets mode: +v dalek 04:11 d4l3k_ left 04:13 dalek left 04:14 araujo joined, araujo left, araujo joined, dalek joined, ChanServ sets mode: +v dalek 04:16 dalek left, d4l3k_ joined 04:17 derrazo left, d4l3k_ is now known as dalek 04:19 dalek left 04:20 dalek joined, ChanServ sets mode: +v dalek 04:21 masak left 04:23 masak joined, dalek left, dalek joined, ChanServ sets mode: +v dalek 04:24 Util left 04:25 Util joined, dalek left 04:26 dalek joined, ChanServ sets mode: +v dalek 04:29 dalek left, dalek joined, ChanServ sets mode: +v dalek 04:30 masak left 04:31 masak joined 04:32 d4l3k_ joined, dalek left 04:33 Util left 04:34 kaare_ joined, Util joined 04:35 dalek joined, ChanServ sets mode: +v dalek, d4l3k_ left, jaldhar left 04:39 masak left, tadzik left, hugme left, dalek left, PerlJam left, Util left 04:40 tadzik joined, dalek joined, ChanServ sets mode: +v dalek, PerlJam joined 04:41 masak joined, Util joined 04:43 birdwindupbird joined, p6eval joined, ChanServ sets mode: +v p6eval 04:45 hugme joined, ChanServ sets mode: +v hugme 05:04 mikec_ left 05:10 mikec_ joined
moritz \o 05:14
sisar o/
sorear o| 05:15
sisar moritz: on rakudo.org, now that Rakudo development has fully switched to nom, "How to get Rakudo Perl 6" and "How to get Rakudo nom" don't make any sense, right? 05:19
moritz sisar: right
sisar where is the source code for the page, i would like to fix that
*the site
moritz sisar: it's a wordpress installation, nothing in git :( 05:20
sisar: create an account, and I'll ask pmichaud++ to give you suffificent permissions
sisar moritz: oh, ok
moritz sisar: and tell me the account name once you have done it :-) 05:21
sisar moritz: you mean a wordpress.com account ?
moritz sisar: no, a rakudo.org account 05:22
sisar ah
moritz hm, not sure if account creation is public
I'll investigate
05:24 spaceships left
moritz sisar: see /msg 05:26
sisar moritz: a few days back you were considering renaming 'nom' back to 'master'. What happened to it ? 05:27
moritz sisar: I want to clear it with pmichaud first
sisar moritz++ 05:30
i need to get a bit familiar with wordpress first :)
looks kinda easy
moritz sisar: when you are logged in, you can click on 'Pages' on the left 05:32
sisar: I'm not sure, but I guess that's where you'll find a way to change the front page
hm, maybe not 05:33
I'll leave it to you :-)
05:44 mdupont joined
dalek kudo/version: f85e438 | moritz++ | / (4 files):
first shot at Version literals and objects

LTM-fail means that v6-split() is parsed as a version number, not as a sub call :(
05:45
kudo/version: 6c2a8b5 | moritz++ | src/ (3 files):
fix version literal parsing. Add Version.perl
05:50 jaldhar joined
dalek kudo/nom: 85f636b | moritz++ | / (4 files):
first hacky shot at Version and version literals
06:25
moritz that's a squashed merge of the version branch
06:32 HarryS joined 06:35 fgomez left 06:40 icwiener joined
icwiener moritz: Hi. If you say Now fixed in 2012.04.1-93-g128e996", what does that refer to? Is that in Parrot or in Rakudo? I updated today and it does not work, that's why I ask. 06:42
benabik 2012.04 is a rakudo version number, not a Parrot.
icwiener Hmm, ok. What branch is recommended to use then? It seems that commit is neither in master nor in nom? 06:43
benabik It's in nom. 06:44
github.com/rakudo/rakudo/commit/12...163e8ca3c0
icwiener Hmm, let me look locally again.
moritz icwiener: that's a rakudo revision 06:45
icwiener Oh, my./ the 'g' is not part of the commit hash? Learning that cost me almost an hour. :D 06:47
benabik The g is to mark it as a commit hash.
icwiener Thank you both for your help. :)
benabik Commits are hexadecimal, and g's one too far.
icwiener Yep, makes sense somehow. But one has to know. :)
Oh, right. Now I feel stupid. :( 06:48
benabik icwiener: Happens to the best of us.
Well, at least it happens to me, and occasionally I have ego.
06:48 fgomez joined
icwiener :) 06:48
06:49 fgomez left
icwiener When I focus on other things, I miss quite obvious things quite often. 06:49
Now it works. :) 06:59
moritz icwiener: nearly all git tools accept the full string '2012.04.1-93-g128e996' in place of a SHA1 07:02
ie you can do 'git show 2012.04.1-93-g128e996', and it works
icwiener Ah, nice. 07:03
07:10 mdupont left 07:13 Entonian joined 07:14 thelazydeveloper joined
dalek volaj: 8619523 | (Arne Skjærholt)++ | lib/NativeCall.pm6:
Add vim modeline to NativeCall.pm6.
07:16
volaj: e94f45c | (Arne Skjærholt)++ | / (3 files):
Tests and support functions for explicitly managing strings.
volaj: 216d11c | (Arne Skjærholt)++ | lib/NativeCall.pm6:
Pass encoding parameter to CStr representation.
volaj: a4f37b4 | (Arne Skjærholt)++ | lib/NativeCall.pm6:
Make Str parameter of explicitly-manage rw. moritz++
volaj: b356310 | moritz++ | / (3 files):
Merge branch 'cstr'
volaj: 2a2c373 | moritz++ | t/0 (7 files):
include path fixes
volaj: d419ffa | moritz++ | lib/NativeCall.pm6:
adapt to updated trait calling conventions
07:22 alim joined
masak good morning, Tuscon! 07:24
moritz good shark, masak! 07:25
dalek volaj: a78f01d | moritz++ | lib/NativeCall.pm6:
update calling convention of other traits too
07:26
moritz U MAKED ME A NATIFCALL BUT I FIXED IT 4 U!
sorear masak: Tuscon? 07:32
you just took a trip from Sweden to ... Arizona? 07:33
I am thinking you have made a terrible blunder! :D 07:34
sorear imagines masak standing in a small sea of sweat
moritz I don't think masak is in Alberta anymore :-)
sorear why Alberta?
moritz sorear: it's a "Wizard of Oz" reference 07:35
sorear doesn't masak live in Malmö ?
moritz: iirc the original line used Kansas
moritz oh
moritz should update his memes 07:36
07:42 Entonian left, Entonian joined
dalek Iish: b3973e7 | moritz++ | t/ (2 files):
[t] skp all tests if the first connect throws an error
07:45
masak yes, the original line used is Kansas.
"good morning Tuscon" is a song by Jonathan Coulton. 07:46
www.jonathancoulton.com/wiki/Good_M...son/Lyrics
07:49 Entonian left
sorear masak: oh, you aren't actually in the process of sacrificing yourself to the Sun? *phew* 07:51
masak ;) 07:52
07:53 NamelessTee joined 07:56 zhutingting joined
tadzik good mornings 07:58
08:01 noam left 08:02 noam joined
moritz nah, Sun has been bought by Oracle :( 08:05
sorear Oracle does not own the giant thermonuclear furnace in the sky. 08:07
Yet.
masak sorear: www.qwantz.com/index.php?comic=2200 08:11
tadzik heh, every image is the same, only the text changes. I can't help but think what a waste of storage and bandwidth this is :) 08:15
masak I can't believe the guy has written 2200 of those. 08:17
tadzik ...without anyone telling him!
08:17 mdupont joined
tadzik or maybe the server just keeps the background image and generates jpgs automagically, on demand 08:18
I should probably be reading dinosaur comics instead of thinking about this
masak probably. 08:19
sorear but it uses pngs. 08:23
masak as it should. 08:34
jpg is lossy.
and reading pixellated text in it would make the eyes water :/ 08:35
good git commit messages: news.ycombinator.com/item?id=3961358 08:47
08:49 fhelmberger joined 08:52 lestrrat left 08:53 lestrrat joined 08:55 mucker joined
tadzik I think the last line wants to be two lines 08:57
09:08 fhelmberger left 09:10 JimmyZ joined
moritz probably hn markup fail 09:10
tadzik: how do I run modules mass test? 09:11
tadzik moritz: github.com/tadzik/emmentaler#README has instructions 09:13
moritz tadzik: thanks
tadzik DBIish should pass everywhere now, aye?
moritz it should, yes 09:14
tadzik I ponder a thought of stating a policy of 09:15
"please keep master working and stable, and do development in devel-ish branches" for modules
then versioning is easier too; one just bumps version in META.info on branch merges
oh, and since we have a Template::Mojo I could probably write formatter in Perl 6 too :) 09:17
moritz tadzik: I have a small patch that silences a warning in emmentaler. Want to give me a commit bit? 09:19
tadzik moritz: sure
moritz erm, sorry, that should have been "CAN HAZ ..." :-)
tadzik add'd :) 09:20
moritz push'd
dalek mentaler: 5228d87 | moritz++ | smoker:
silence a warning
tadzik hmm, that seems to be a common idiom, panda got that too recently 09:21
moritz flussence: Text-Tabs-Wrap needs a few use lib '.' in some test files 09:25
tadzik that's odd
moritz flussence: CAN HAZ commit bit PULESE?
tadzik ah, I see a reason 09:26
moritz flussence: I can send you a patch too if you prefer that
09:47 alim left 09:52 plutoid left 09:58 localhost left 10:00 icwiener left, localhost joined, spider-mario joined 10:10 mucker left 10:11 thou left 10:23 whiteknight joined, whiteknight is now known as Guest79136 10:24 mdupont left 10:37 sisar left 10:50 JimmyZ left
moritz www.groklaw.net/article.php?story=2...1165908331 on the one hand, I'm fascinated how detailed they go into the dex/dalvik code 10:52
OTOH I don't think a non-technical jury will understand much of it
10:55 alim joined 11:07 mucker joined 11:10 colomon joined
jnthn Afternoon, #perl6 11:19
moritz \o jnthn 11:20
11:24 mdupont joined 11:25 goraki joined
tadzik oh shark jnthn 11:25
jnthn moritz++ # version literals, zavolaj merging, etc :)
r: say 'foo123bar' ~~ / foo <( 123 bar / 11:26
p6eval rakudo 85f636: OUTPUT«=> <123bar>␤␤»
moritz jnthn: sadly I'm a bit stuck with the enum-nonint branch
jnthn r: say 'foo123bar' ~~ / foo <( 123 )> bar /
p6eval rakudo 85f636: OUTPUT«=> <123>␤␤»
jnthn \o/
moritz: OK, I'll be able to take a look at it later today. What's it stuck on?
moritz jnthn: it dies with "Can only use nqp_get_sc_for_object with a SixModelObject", in World.get_ref, called (indirectly) from nqp;Perl6;Actions;term:sym<name> 11:27
while compiling the setting
jnthn Wow :)
moritz I assume that it's while accessing an element of the Order enum
hm, maybe one of the values is not a properl 6model object
jnthn: is there any easy-ish way to test from PIR if something contains a 6model object? 11:28
jnthn That can happen if, for example, you were pass a PAST node instead of an object or something...
moritz: typeof should
Oh...maybe...
r: nqp::say(pir::typeof__SP(42))
p6eval rakudo 85f636: OUTPUT«Int␤»
moritz I thought typeof was transparent to 6model vs. non-6model 11:29
jnthn Yeah, it hadn't used to be. :)
moritz r: nqp::say(pir::typeof__SP(pir::set__PI(42)))
p6eval rakudo 85f636: OUTPUT«Null PMC access in set_integer_native()␤ in block <anon> at /tmp/WJtyUaVlo7:1␤␤»
jnthn moritz: Anything like .WHAT will fail on non-6model immediately though
moritz jnthn: ah, good idea
jnthn: then I at least know a way to attack the problem 11:30
jnthn But anywya, if you suspect what a certain thing, typeof is good. Because if it comes up with, say, Undef or Integer, you know "oh, a Parrot type snuck in"
wtf, that sentence made no sense at all
if you suspect a certain variable is to blame
:)
moritz wait, repr_change_type is in-place, right? 11:31
jnthn Yes.
moritz ok, that simplifies the World code a bit more
jnthn Thus my "clone the value and then change the type of the clone" 11:32
11:32 NamelessTee left
jnthn Since you still need the original one around. 11:32
moritz oh, I forgot to clone
hm
that's not good
with nqp::clone?
11:32 alim left
jnthn No, don't use that on 6model objects 11:32
I was gonna say .clone
BUT we have enums in the setting so that's probably a bad idea 11:33
pir::repr_clone_PP(...) # forget if we have an nqp:: for that yet
moritz no, the nqp::clone is just clone__PP 11:35
jnthn bbiab 11:42
tadzik r: my @a = qw<<< a b c d >>>; say @a.perl 11:50
p6eval rakudo 85f636: OUTPUT«Array.new("a", "b", "c", "d")␤»
tadzik how (where) does rakudo implement quoting with arbitrary number of delimiters?
moritz all the values passed to $*W.create_enum_value are proper sixmodel values 11:51
tadzik: look for quote:sym<qw> in Grammar.pm
tadzik: it probably calls into some obscure quoting method from NQP or HLL::Compiler or so
tadzik true
it just uses quote_EXPR 11:53
moritz is that still some wad of impenetrable PIR code? 11:54
tadzik not anymore, it seems :_)
but the heart of it is quote_delimited, which may be what I need 11:55
dalek blets: 0936234 | (Hayden Stainsby)++ | docs/tablet-2-basic-syntax.txt:
Grammatical corrections and a couple of extra defs
11:58 JimmyZ joined 11:59 NamelessTee joined 12:11 PacoAir joined, isBEKaml joined 12:16 JimmyZ_ joined 12:18 JimmyZ left, JimmyZ_ is now known as JimmyZ
jnthn tadzik: See my patch for < foo bar baz > in regexes last night, which also involved quote_delimited. 12:19
tadzik seems that quote_delimited doesn't help me much. I'm trying to implement arbitrary number of <<'s in formatting codes, and they content can be Pod too, so quote_delimited is not enough 12:20
moritz jnthn: I'm stuck again on origin/enum-nonint. All enum values seem to be fine 6model objects (Int in the case of Order, then promoted to Order), so I don't know where that error message might come from :/
tadzik so I'm trying to use <starter> and <stopper> by hand
jnthn moritz: OK, will build it here while I make some noms :) 12:23
tadzik weird. self.pos() in Grammar.pm gives me Method 'pos' not found for invocant of class 'String'. It seems to work in other methods 12:26
12:27 plobsing left
jnthn moritz: Looking more closely at the stack trace where it crashes... 12:28
moritz: I'm suspsecting it is failing when it tries to do a lookup of the enum, or maybe an enum value.
moritz: It's happening in term:sym<name>, and looks like whatever was installed under that name is the wrong thing.
12:30 plobsing joined
jnthn moritz: Am I missing it, or has the code to install the enum type itself vanished? 12:32
moritz: oh...I see it
$*W.install_package($/, $longname.type_name_parts('enum name', :decl(1)), ($*SCOPE || 'our'), 'enum', $*PACKAGE, $*W.cur_lexpad(), $type_obj);
That comes too early
It needs to come almost at the end, after the other call to make_type_obj 12:33
12:40 Chillance joined 12:50 colomon_ joined, colomon left, colomon_ is now known as colomon, skids left 12:51 skids joined
moritz ok 12:57
right, if I change the order, I can get through the setting 13:03
13:04 rurban left, rurban joined
dalek kudo/enum-nonint: f48c49d | moritz++ | src/Perl6/ (2 files):
install enum after it has been created.

also clone the enum value before downcasting it
13:05
moritz jnthn++
alan.dipert.org/post/153430634/the-...f-progress 13:08
and in p6, you can drop the parens :-)
dalek blets: 36571be | (Herbert Breunung)++ | docs/appendix-g-glossary.txt:
added glossary term symbol
blets: 6b69705 | (Herbert Breunung)++ | docs/tablet-2-basic-syntax.txt:
Merge branch 'master' of github.com:perl6/tablets
jnthn moritz: yay 13:12
moritz: Do the enum tests still pass after these changes, ooc? 13:13
*lol* at the Java in 1996 one from that blog post :) 13:14
tadzik Enterprise Printing Since 1996 ;)
13:15 cognominal joined 13:16 mucker left
isBEKaml moritz: java was the slump in '96? :) 13:16
I can almost see it like a bell curve in terms of number of lines. 13:17
13:35 zhutingting left 13:36 Guest79136 left
moritz jnthn: seems ssome spectests hang. I'm trying to find out which ones 13:39
oh wtf 13:41
t/spec/S02-lexical-conventions/comments.rakudo is the first test that loops
wtih
use of uninitialized value of type Any in string context repeated quite some times
JimmyZ moritz: I'm just curious with this line: "make_type_obj unless $has_base_type", but the make_type_obj definition has a arg 13:43
moritz JimmyZ: good catch, thanks 13:44
JimmyZ: though that line only triggers for empty enums
13:44 goraki left
JimmyZ is just curious how it can be compiled ... 13:45
r: sub f($foo) { say $foo }; f if 0;
p6eval rakudo 85f636: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling 'f' will never work with no arguments (line 1)␤ Expected: :($foo)␤»
moritz JimmyZ: nqp only checks arguments at run time
JimmyZ: it's nqp code
JimmyZ oh
jnthn Additionally, in nqp f is not a call
It's always a term.
f() is a call
moritz oh right 13:46
JimmyZ that explains it...
moritz anyway, I still don't see why S02-lexical-conventions/comments.rakudo could possibly hang
there's no enum declaration in the whole file 13:47
and I don't see any enum used either
jnthn moritz: Does it use e.g. the cmp or <=> operator? 13:48
moritz: Or generally, anything that uses the Order enum...
moritz the test that fails is
oh wait, now it fails much earlier 13:49
oh, ranges loops
jnthn They certainly use things taht rely on the Order enum
Does 1 <=> 2 loop in the repl?
moritz ./perl6 -e 'say +Increase'
use of uninitialized variable $!value of type Any in numeric contextuse of uninitialized value of type Any in string contextuse of uninitialized value of
jnthn aha 13:50
moritz and then loops
jnthn ouch
I'm thinking that $!value ain't being set properly then
It should be set to the original thingy that you later clone and rebless.
moritz ah
I don't do that, I think
jnthn ah :)
moritz I thought I didn't need to, because I reblessed the thing, so the orignal was still there, in some sense 13:51
jnthn moritz: I'm sure it's "still there", but if it's not being installed in $!value...
moritz right
jnthn Anyway, I expect a lot of things will be quite upset if they're missing that.
13:51 zhutingting joined
moritz yes, I noticed :-) 13:51
easy enough to fix too 13:52
(at least I hope :-)
13:58 sisar joined, not_gerd joined
not_gerd moritz: github.com/libtom/libtommath/issues/3 13:58
the current code can lose precision unnecessarily
moritz not_gerd: actually I had an updated version in the nqp repo already 13:59
not_gerd: which I had not posted on that issue tracker, iirc
not_gerd as far as I can tell, the noop-loop is unneessary
I only read the code, not tried it, though ;) 14:00
moritz it had other problems, iirc
src/ops/nqp_bigint.ops in nqp has the code we currently use
not_gerd moritz: reading... 14:01
moritz: still the same problem - it only inspects 2 digits, but it might need to inspect 3 to get the full 53 bits of double precision 14:02
14:03 alim joined
not_gerd my code is missing a call to mp_clamp(), though 14:03
14:08 fgomez joined 14:13 JimmyZ left
not_gerd to be fully generic, we'd actually need to pach parrot's configuration system as well 14:14
flussence oh hai
not_gerd currently, we do not know the precision of FLOATVAL
flussence moritz: I'll give you a commit bit on that
not_gerd s/pach/patch/
14:15 JimmyZ joined
moritz not_gerd: but usually it's just a double 14:17
14:20 tokuhirom left 14:21 tokuhirom joined
moritz flussence: patch pushed 14:22
not_gerd moritz: perhaps Configure.pl should warn if floatval isn't a double? 14:23
moritz maybe
not_gerd take a look at parrot for what not to do: it has configurable intval and opcode_t, but if intval != opcode_t, stuff breaks... 14:24
flussence moritz++
14:27 tokuhirom left 14:29 plobsing left 14:31 noam left 14:48 bjarneh left 15:00 not_gerd left 15:05 birdwindupbird left 15:08 alim left, alim_ joined 15:11 orphu left
[Coke] phenny: ask not_gerd if there's a ticket for the intval/opcode_t bug in parrot 15:20
phenny [Coke]: I'll pass that on when not_gerd is around.
dalek kudo/enum-nonint: f72c306 | moritz++ | src/Perl6/ (2 files):
two enum fixups, jnthn++ JimmyZ++
15:21
moritz ok, now enums work if you explicitly provide the values 15:22
tadzik what do you mean? 15:28
15:29 plobsing joined
tadzik oh, no .succ? 15:29
moritz it does call .succ 15:30
but it complains that it can't call repr_change_type on a non-6model value
tadzik Oh, .succ may change type, aye? 15:33
like, Int -> BigInt 15:34
15:35 fgomez left
moritz thereis no BigInt type 15:35
Int stays Int
Str.succ also returns a Str
r: say Int.succ
p6eval rakudo 85f636: OUTPUT«Parameter '' requires an instance, but a type object was passed␤ in method succ at src/gen/CORE.setting:2666␤ in block <anon> at /tmp/aLauviio9x:1␤␤»
tadzik hmm, so why would it repr_change_type upon .succ? 15:36
moritz if we do an enum A <b c>;, then $cur_value for 'b' is 0, but we want it to be of type A
ie we fudge up type A to inherit from Int 15:37
15:37 plutoid joined
moritz and then downcast the Int 0 to the A 0 15:37
aund it dies with "Can only use repr_change_type on SixModelObjects"
15:38 Enlik joined
moritz even though it pir::typeof__SP($value) says it's an Int 15:38
which looks pretty SigModelObject-ish to me
tadzik aye
moritz on the upside, Str enums work 15:39
$ ./perl6 -e 'enum A (b => "foo", c => "bar"); say b.Str;'
foo
tadzik odd 15:40
moritz and it even works with
./perl6 -e 'enum A (b => 0, "c"); say c.Int;'
1
so it's the default value that is off somehow
my $cur_value := nqp::box_i(-1, $*W.find_symbol(['Int'])); 15:41
r: my $cur_value := nqp::box_i(-1, $*W.find_symbol(['Int'])); say $cur_value
p6eval rakudo 85f636: OUTPUT«Dynamic variable $*W not found␤ in method <anon> at src/gen/CORE.setting:8776␤ in <anon> at src/gen/Metamodel.pm:2260␤ in any find_method_fallback at src/gen/Metamodel.pm:2258␤ in any find_method at src/gen/Metamodel.pm:828␤ in block <anon> at /tmp/FLigbASday:…
moritz r: my $cur_value := BEGIN nqp::box_i(-1, $*W.find_symbol(['Int'])); say $cur_value 15:42
p6eval rakudo 85f636: OUTPUT«(signal SEGV)»
moritz ooh look, a SEGV
r: BEGIN { my $cur_value := nqp::box_i(-1, $*W.find_symbol(['Int'])); say $cur_value }
p6eval rakudo 85f636: OUTPUT«(signal SEGV)»
15:43 Patterner left
moritz r: BEGIN { my $cur_value := nqp::box_i(-1, Int); say $cur_value } 15:44
p6eval rakudo 85f636: OUTPUT«-1␤»
moritz r: BEGIN { my $cur_value := nqp::box_i(-1, Int); say $cur_value.succ } 15:45
p6eval rakudo 85f636: OUTPUT«0␤»
moritz has no clue what's wrong 15:46
15:47 leprevost left 15:51 ranguard left
moritz jnthn: I fear you have to look at that again 15:54
15:59 ranguard joined
jnthn moritz: You're passing NQP code a Perl 6 Array. 16:09
masak salut, #perl6
jnthn In the BEGIN above
Not surprised it fails.
But why the .succ call would fail from Actions...that's odd.
16:12 JimmyZ left
jnthn moritz: If you say($cur_value) after the .succ call, what does it give? 16:15
16:18 snearch joined, snearch left, snearch joined
moritz why should it fail in the BEGIN? 16:19
I've tried to diagnose the non-6model type in repr_change_type 16:20
... and I got a segfault
jnthn $*W.find_symbol(['Int'])
You're writing Perl 6 code. [...] is a Perl 6 Array.
moritz oh
jnthn find_symbol is used to getting an RPA 16:21
16:21 skyheights joined
jnthn But anyway, the call you have in CORE.setting should work out fine 16:21
Though, using the integer constant thing would probably be easier.
We already have a 0 in the SC somewhere probably :)
moritz we need -1 16:22
jnthn oh
moritz because I only call .succ if no value is supplied
jnthn Right
16:22 skyheights left
jnthn In this code path, when does make_type_obj get called? 16:22
I think it's complaining about the $type_obj not being a 6model object, not what comes back from .succ 16:23
Yeah, if the first thing ain't a pair, I think we never call make_type_obj
But we pass $type_obj to create_enum_value 16:24
That seems to be why it fails.
The succ call itself is probably fine.
moritz oh 16:29
16:33 fgomez joined 16:34 tokuhirom joined
moritz currently has a cold, and uses that as an excuse for his sloppy coding 16:37
jnthn awww
get well soon
moritz thanks 16:38
qwq
q
no, not Ronja's fault :-) 16:39
16:40 tokuhirom left 16:41 tokuhirom joined
masak she's trying to quit irssi :) 16:41
moritz no, vim :-)
16:43 fgomez left, ranguard left 16:44 ranguard joined 16:45 tokuhirom left 16:51 ranguard left
masak well, it requires tricky motor skills to do a colon on most keyboard layouts. 16:51
just 'q' in vim will record a macro into some register.
16:53 zhutingting left
moritz actually I was just joking around; it was just me typing into a laggy ssh connection, and the wrong screen window too 16:54
most tests pass again 16:56
I suspect the two failures are due to my branch being out of date
masak moritz: oh, you said '*not* Ronja's fault'. I misread that :) 16:57
dalek kudo/enum-nonint: d2012e2 | moritz++ | src/Perl6/Actions.pm:
fix enums without explicit values
17:00 alim_ left, ranguard joined, alim joined 17:09 plutoid left 17:10 ranguard left, fgomez joined 17:11 ranguard joined 17:17 ranguard left 17:18 mdupont left
spider-mario r: say Order.^methods 17:23
p6eval rakudo 85f636: OUTPUT«enums kv pair perl pick roll Int postcircumfix:<( )> Str Numeric gist <anon> <anon> Int Num Rat FatRat abs Bridge chr succ pred sqrt base floor round ceiling sign conj rand sin asin cos acos tan atan atan2 sec asec cosec acosec cotan acotan sinh asinh cosh acosh ta…
spider-mario where does it get e.g. cos from? 17:24
n: say Order.^methods
p6eval niecza v17-4-ge5b869e: OUTPUT«Unhandled exception: Unable to resolve method methods in class ClassHOW␤ at /tmp/T4MJRS1wu7 line 1 (mainline @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3842 (ANON @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3843 (module-CORE @ 65) ␤ at …
moritz r: say Order.^mro(:all)
p6eval rakudo 85f636: OUTPUT«too many named arguments: 1 passed, 0 used␤ in any mro at src/gen/Metamodel.pm:669␤ in block <anon> at /tmp/IagCum6Bg0:1␤␤»
moritz r: say Order.^mro()
p6eval rakudo 85f636: OUTPUT«Order() Int() Cool() Any() Mu()␤»
moritz spider-mario: from Int
spider-mario oh, ok
moritz spider-mario: or more specificaly from Real, which Int composes
spider-mario oh, I see that orders can be treated as integers. 17:25
my bad.
thanks :)
jnthn .^mro always includes everything.
It's .^parents that stops at Cool
moritz ah right
spider-mario r: say +Increase
p6eval rakudo 85f636: OUTPUT«-1␤»
jnthn Potentially, .^parents(:all) and .^mro may not give the same thing too 17:26
PerlJam did not know about ^mro 17:27
jnthn It's used heavily inside the various meta-objects. 17:29
masak PerlJam: it seems a very central concept in Perl 6's (or at least Rakudo's) MOP.
PerlJam yeah, I always thought it was more implicit than explicit though I think 17:30
Like when you asked for ^parents, you'd get them all in MRO (but obviously that's not true)
moritz jnthn: in ROADMAP, what are the "missing bits of enums"? 17:33
jnthn moritz: Whatever somebody thinks we need in order to have green for enums in Features ;)
dalek kudo/nom: 417d760 | moritz++ | src/Perl6/Actions.pm:
start to make enums less int centric
17:34
kudo/nom: 24a3016 | moritz++ | src/ (3 files):
[enum] defer creation of type object until we know the base type

now setting compilation blows up in term:sym<name> with Can only use nqp_get_sc_for_object with a SixModelObject
kudo/nom: f48c49d | moritz++ | src/Perl6/ (2 files):
install enum after it has been created.

also clone the enum value before downcasting it
kudo/nom: f72c306 | moritz++ | src/Perl6/ (2 files):
two enum fixups, jnthn++ JimmyZ++
kudo/nom: d2012e2 | moritz++ | src/Perl6/Actions.pm:
fix enums without explicit values
kudo/nom: 777259d | moritz++ | src/ (3 files):
Merge remote branch 'origin/enum-nonint' into nom
kudo/nom: e9e7a27 | moritz++ | docs/ (2 files):
update ChangeLog and ROADMAP
17:34 ranguard joined
moritz hey, that was a proper merge 17:34
masak well, maybe 'heuristic' means "there has to be this many commits for me to successfully guess it was a merge"? 17:35
anyway. moritz++
spider-mario yes 17:36
moritz++
jnthn moritz++
17:36 mdupont joined
jnthn This next release keeps getting better and better :) 17:36
spider-mario “6 commits at the same time and ‘merge’ in a commit message ain’t a merge” 17:37
TimToady r: say (1/10000000000).base(3)
p6eval rakudo 85f636: OUTPUT«0.0000000000000000␤»
TimToady that's kinda wrongish still 17:38
masak is there an open RTzi for it?
TimToady yur the xpurt
masak no, I do fire and forget :P 17:39
colomon is base specified on Rats?
TimToady I didn't say you was perfect
colomon is at his parents, may have missed a lot...
spider-mario how is # supposed to be interpreted?
TimToady r: say (1/10000000000).Str(:base(3))
p6eval rakudo 85f636: OUTPUT«0.0000000001␤»
TimToady well, at least that works
masak perfection is overrated anyway.
spider-mario I wrote it somehow accidentally in a rakudo repl and got “Nil”
PerlJam r: say (1/7).base(3) 17:40
p6eval rakudo 85f636: OUTPUT«0.0102120102120102␤»
spider-mario r: say #anything
p6eval rakudo 85f636: OUTPUT«␤»
masak submits rakudobug
PerlJam nice
spider-mario r: say (#anything).perl
p6eval rakudo 85f636: OUTPUT«===SORRY!===␤Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 2␤»
moritz spider-mario: # starts a comment
spider-mario oh, obviously a comment.
TimToady r: say (1/7).Str(:base(3))
p6eval rakudo 85f636: OUTPUT«0.142857␤»
spider-mario how could I forget that. :D
moritz spider-mario: so you produced an empty statement
which returned Nil
masak spider-mario: try #`[anything]
spider-mario I have really no idea how I forgot that 17:41
17:41 ranguard left
masak r: say (#`[nothing]).perl 17:41
p6eval rakudo 85f636: OUTPUT«()␤»
TimToady anyway, Rat.base can trivially just call Str(:base) now
dalek Heuristic branch merge: pushed 19 commits to nqp/toqast by jnthn
colomon PerlJam++
TimToady: no it can't.
dalek p/toqast: 105ff32 | jonathan++ | / (2 files):
Implement immediate blocktype handling; test it.
colomon TimToady: r: say (1/7).Str(:base(3))
[1:40pm] p6eval: rakudo 85f636: OUTPUT«0.142857␤»
Str(:base) just ignores :Base 17:42
TimToady that's already a bit of false precision
hmm, yer write
colomon was pretty sure 7 was not a digit in base 3. ;)
TimToady the conversion process has some inaccuracies :) 17:43
17:43 ranguard joined
dalek ast: 1ec0b65 | moritz++ | S12-enums/non-int.t:
first basic tests for non-integer enums and enums of mixed types
17:44
colomon so, is Num.base($n) supposed to be Num.Str but in base $n?
TimToady or the other way around maybe
colomon errr, I mean Numeric.base($n)
TimToady maybe Str defaults to .base(10)
17:45 spaceships joined
TimToady though as I mentioned the other day, probably want to special case common bases in separate routines for efficiency 17:45
dalek kudo/nom: 6b8c360 | moritz++ | t/spectest.data:
run non-int.t enum tests
TimToady so Str could be base 10, and just leave the base code in .base
moritz +1 17:46
TimToady er, put the :base code I prototyped in as .base I mean
colomon TimToady: either way, I don't think we've gotten the base 10 routines straightened out yet. :)
spider-mario speaking of that, I’m a little surprised that numbers in lojban are implicitly in base 10
TimToady lojban is mainly only logical on the surface issues :)
spider-mario :) 17:47
17:48 wolfman2000 left
spider-mario “forty-two” in lojban is “vo re” 17:48
TimToady colomon: not sure what you're referring to there...
spider-mario which translates to “four two” 17:49
I meant “vore”
colomon TimToady: in terms of implementations. unless there's been great progress in Rakudo while I was looking elsewhere....
spider-mario (there is no space)
moritz in Space there is no space 17:50
colomon r: say 3248902489023489028590809252.02
p6eval rakudo 85f636: OUTPUT«3248902489023489028590809252.02␤»
colomon ooo, nice
TimToady r: say (3248902489023489028590809252 + 1/1728347837928739473)
p6eval rakudo 85f636: OUTPUT«3248902489023489028590809252.00000000000000000058␤»
TimToady r: say (3248902489023489028590809252 + 1/2500000000000) 17:51
p6eval rakudo 85f636: OUTPUT«3248902489023489028590809252.0000000000004␤»
dalek p/toqast: 5d24bc1 | masak++ | / (2 files):
implement compilation of Q operands
masak \o/
TimToady I'd just like to see that niceness extend to .base, and it hasn't quite yet
r: say (3248902489023489028590809252 + 1/2500000000000).base(10) 17:52
p6eval rakudo 85f636: OUTPUT«3248902489023489028590809252.00000000␤»
TimToady to wit
colomon r: say 23940294092304925259023943.2.perl
p6eval rakudo 85f636: OUTPUT«119701470461524626295119716/5␤»
colomon that's still wrong, in two different ways...
TimToady we don't have that yet either
uh, yeah
or maybe 3 is now divisible by 5
you never know in these days of uncertainty 17:53
dalek p/toqast: 2cd5cd6 | jonathan++ | / (2 files):
Add handling of blocktype declaration, and add a basic test for it.
17:54
colomon n: say 23940294092304925259023943.2.perl
p6eval niecza v17-4-ge5b869e: OUTPUT«<119701470461524626295119716/5>␤»
colomon slightly less wrong... 17:55
TimToady actually I misspoke; 3 is divisble by 1/5 :) 17:56
it seems no amount of coffee can make up for senility... 17:57
doesn't stop me from trying though... 17:58
colomon: if you care to take a whack at a better .base, the proto code is in gist.github.com/2648301 17:59
PerlJam r: (1/25000000).base(10) 18:00
p6eval rakudo 85f636: ( no output )
PerlJam r: say (1/25000000).base(10)
p6eval rakudo 85f636: OUTPUT«0.00000004␤»
PerlJam r: say (1/250000000).base(10)
p6eval rakudo 85f636: OUTPUT«0.00000000␤»
18:00 birdwindupbird joined
colomon n: say 10.base(3) 18:01
p6eval niecza v17-4-ge5b869e: OUTPUT«101␤»
TimToady r: gist.github.com/2648301
p6eval rakudo 85f636: OUTPUT«0.00000000DC␤0.000000LA␤-101010.111111111111111111111111111111111111111111111101␤»
TimToady just needs to be turned into a method, is all 18:02
oh, and use log instead of string length, moritz++ suggested 18:03
colomon .... does it handle the exact representation part correctly? I'm not seeing anything in the code for it. Or does the denominator base thing handle it automatically? 18:05
$r.denominator.base($base).chars + 1, I mean.
TimToady yes, but let me put the log version there first
colomon okay
TimToady okay, it's there now 18:07
and seems to produce the same result
yes, if the selected number of digits overshoots, the loop exits when the remainder is 0 18:08
araujo greets around 18:09
TimToady so 1/2.base(10) selects 2 digits, but it stops after generating .5
araujo: o/
araujo hello TimToady :)
colomon araujo: \o
araujo hello colomon o/ 18:10
araujo thinking to get perl6 into (semi)-production code
TimToady colomon: the last 4 lines could also be turned into tests, I suppose
it's a nano-optimization, but 'if $r >= 0.5' could maybe fasterly be written '$r.de * 2 > $r.nu' 18:16
er, >=
er, < actually 18:17
TimToady hopes to think clearly once or twice today...
18:21 shinobicl joined 18:23 mdupont left 18:25 fgomez left 18:35 mikemol left
moritz TimToady: actually I did it as $r * 2 >= 1 in rakudo, because I can't use Rat literals inside the Rational role :-) 18:36
TimToady I guess that is likely to avoid cross multiplying as well
well, unless it converts 1 to 1/1 and cross multiplies 18:37
which it might, since the comparison has to happen in the Rat domain, not the Int domain 18:38
so mine might still be nanofaster
it's not like that test is in the main loop
moritz well, we can actually do infix:«>=>(Rat, Int) if we want
18:38 ranguard left
TimToady there is that 18:39
moritz but currently we don't
18:39 mucker joined, Enlik left
TimToady more effective optimizations will probably be in shifting instead of multiplying (if that's supported more efficiently in libtommath), or possibly conversion to a native rat type that is big enough and then do nothing with Rat overhead 18:40
but I figure "correct first" here
moritz I guess there's lots of potential for micro optimizations in Rat 18:43
TimToady the inability to use a Rat literal in a Rational role makes me think we have not yet solved the problem of allomorphic literals with sufficient generality
or is there some non-reducable self-reference there? 18:44
moritz well
we have basically two choices 18:45
we can compile 0.5 directly to a Rat
TimToady I guess we have to attach the type to the notation somehow
moritz or we can compile it to something that generates a Rat
we've moved from the second to the first option during nom+bs transition
and it was generally a good idea so far 18:46
TimToady $?CLASS('0.5') could conceivably learn how to convert at instantiation time
moritz except that in Rational, Rat isn't even declared yet
TimToady but it's knowing that 0.5 is supposed to do that which is the issue
moritz well, we could always do
my class Rat { ... }
TimToady who said you need to know Rat?
moritz role Rational { # in here, use Rat.new(1, 2) }
moritz 18:47
TimToady $?CLASS('0.5') doesn't commit
moritz self.new(1, 2) would also do 18:48
TimToady $?CLASS is awfully clunky, and isn't quite a compiler constant
moritz isn't it ::?CLASS anyway?
moritz always confuses those
TimToady tends to think they both exist 18:49
I worry that self.new is a bit too OOy for natives, but maybe not 18:50
masak $?LINE isn't quite a compiler constant either.
18:51 ranguard joined
TimToady maybe it should be $=LINE 18:51
since it's file-based
moritz we should think of ?-twigil variables as "not assignable and provided by the compiler"
but it's not doc-based
TimToady sure, it's just the line in the doc :)
moritz gnaa 18:52
TimToady anyway, efficient native generics are challenging to use insofar as we're used to the object carrying the type rather than the object's container, and expressions like self.new also have to carry that type info out-of-band to the native value 18:54
more generally, all native expressions have to know their type statically
moritz TimToady: the fact that I understood that sentence scares me
TimToady well, it's partly that I was trying to write clearly for once... :) 18:55
not really succeeding, but at least trying...
moritz TimToady: is v1.0 ~~ v0.1+ True? 18:58
ie, does the '+' scope to the whole version literal, or just to the last chunk? 18:59
I guess the whole thing
19:01 ranguard left 19:02 ranguard joined
masak aye. 19:03
19:05 thou joined, derrazo joined
TimToady the other thing is spelled ~~ v0.* 19:05
masak r: my $a = v6; say $a
p6eval rakudo 6b8c36: OUTPUT«v6␤»
masak r: my $a = v6; say $a.^name
p6eval rakudo 6b8c36: OUTPUT«Version␤»
19:06 derrazo_ joined
masak r: my $spinal-tap = v11; say "This one goes up to $spinal-tap!" 19:06
p6eval rakudo 6b8c36: OUTPUT«This one goes up to v11!␤»
masak \o/
TimToady is beginning to think P6 should just reserve all the indentifiers that start with a letter. :) 19:07
sorear good * #perl6
19:08 shinobicl left
TimToady o/ 19:08
moritz TimToady: which gist was the one containing your .base code?
or r2s with base
TimToady r: gist.github.com/2648301 19:09
p6eval rakudo 6b8c36: OUTPUT«0.00000000DC␤0.000000LA␤-101010.111111111111111111111111111111111111111111111101␤ABIGRADIXEN.DSWITHZ␤»
19:09 ranguard left
moritz TimToady: tusen takk 19:09
TimToady colomon++ might or might not be working on that
19:09 ranguard joined 19:10 derrazo left
moritz probably in n4a 19:10
r: say 255.base(16) 19:11
p6eval rakudo 6b8c36: OUTPUT«FF␤»
19:15 ranguard left
TimToady deduces that moritz's c or z key is broken 19:17
moritz or maybe the e key :-) 19:18
TimToady no, he typed .base
moritz masak: is github.com/perl6/nqp/commit/5d24bc1d40 basically the backend stuff for quasi splicing? 19:19
19:25 spaceships left, kaare_ left 19:29 sergot joined
sergot hi o/ 19:29
jnthn o/ sergot 19:31
19:33 whiteknight joined
moritz r: say Whatever.new.perl 19:33
p6eval rakudo 6b8c36: OUTPUT«*␤»
19:33 whiteknight is now known as Guest17862
moritz ok, trick question 19:35
does v1.0 stringify to 'v1.0' or to 'v1'?
and is v1.0 eqv v1 true?
TimToady I wouldn't think so 19:37
dalek kudo/nom: f685cb6 | moritz++ | src/core/Rat.pm:
Rat.base by TimToady++
moritz ok, they just compare the same with ~~ and with cmp, right?
TimToady they're more like ranges; there can be inequalities involved
v1.1 ~~ v1 for instance 19:38
and v1.0beta comes before v1.0 comes before v1.0.1, but they're all v1 19:39
moritz waitwaitwait 19:40
v1.0foo comes before v1.0 too? 19:41
sorear how do gamma and delta compare? 19:42
moritz ASCIIbetical, I hope 19:43
what does v1.0 cmp v0.5+ return? 19:49
any(Same, Decrease, Increase) ? 19:50
:-)
dalek ast: 8cca77c | moritz++ | S02-literals/version.t:
basic tests for version literals and Version objects
19:51
moritz sanity checking of those would be very welcome
19:51 sisar left
masak haz a look 19:52
moritz: I love the "(-)" convention. I might steal that for a TDD course or other. 19:55
moritz :-)
masak it's like "and then we test the opposite scenario (for some value of 'opposite')"
19:56 ranguard joined
moritz well, I think of it specifically as testing for "negative" outcome, not "opposite" 19:56
ie "this match failed"
masak moritz: 19:57
ok v1.2 ~~ v1.3+, 'smart-matching and plus (-)';
this looks wrong.
19:57 derrazo_ left
moritz right, that shoulbe nok 19:57
masak right.
also, you're not testing something like v5 ~~ v1.2+ 19:58
'sides that, those tests look verra good.
moritz: might also be interesting to do &infix:<cmp> on some * and + variants. 19:59
dalek ast: 8ee4713 | moritz++ | S02-literals/version.t:
[version.t] fix a test, masak++

also add v5 ~~ v1.2+, masak++ here too
masak to the extent that makes sense...
moritz masak: except that I have no idea what they should return
masak :)
enum Order ( Same => 0, Increase => -1, Decrease => 1, You'reInsane => 1i ); 20:00
moritz but I should add some ~~ tests with *
dalek ast: 29b5ad1 | moritz++ | S02-literals/version.t:
[version.t] wildcards and smart-matching
20:02
masak I think v5 cmp v1+ should give Same.
hm, wait. :)
no, I think we need to step back and define what we mean by such a comparison.
moritz think of cmp as the argument to List.sort
masak nodnod.
I think maybe you shouldn't cmp things with wildcards in them. 20:03
moritz I'd ignore the final + while cmp'ing two Versions
masak they're like intervals, and intervals don't sort naturally.
moritz or maybe make one with a + an epsilon larger
is that (v1, v5+, v5).sort gives you (v1, v5, v5+) 20:04
20:04 ranguard left, snearch left
moritz ETOOMUCHMAGIC 20:04
dalek p/toqast: 47ee5af | jonathan++ | src/QAST/Operations.nqp:
Compile method calls, including name indirection and pay attention to :returns for register return type (probably quite hard to take advantage of in Perl 6, mind).
20:05
p/toqast: 2a41c7d | jonathan++ | t/qast/qast.t:
Tests for callmethod.
diakopter I wish there was a way to control explicitly when a contextual "pops" (as opposed to always at the end of the routine it's declared in) 20:06
masak diakopter: then maybe you should use an explicit array ;)
moritz diakopter: use case?
TimToady comparing versions is like trying to compare regexes
diakopter masak: yeah 20:07
masak diakopter: jnthn is sitting oppose
opposite me.
he says "we're doing this in a few places in Rakudo"
keeping an explicit array, that is.
jnthn @*BLOCK
er, wait, we killed that :) 20:08
20:08 tadzik is now known as StuntmanMike
jnthn It's a normal array though, just $*W has methods that hide it away :) 20:08
masak TimToady: comparing regexes feels like it might be booby-trapped with Entscheidungsproblem *somewhere*. even before you add in actual closures.
StuntmanMike: JUMP! 20:09
moritz well, we do have @*PACKAGES 20:11
which the exporter uses
StuntmanMike masak: I think I fail to make a connection :) 20:12
masak that sounds like a good example.
StuntmanMike: between stuntmen and jumping?
StuntmanMike: dude, if you don't make the connection, you probably need to look for a different job, and quickly!
moritz :-)
StuntmanMike oh :) It's kind of more remote reference
masak .oO( he's more of a remote stuntman ) 20:13
20:14 ranguard joined
colomon TimToady: working in spirit, driving back home in practice (and playing a dance when I get there) 20:15
20:15 colomon left
TimToady
.oO("What!?! You hired me to jump *off* of this building?!?")
20:15
20:22 thou left 20:24 ranguard left
dalek p/toqast: efa345e | jonathan++ | src/QAST/ (2 files):
Make BVal consistent with the various other Val nodes. Also fix compilation of it.
20:24
p/toqast: 0147855 | jonathan++ | t/qast/qast.t:
Test QAST::BVal node.
20:27 to1776 joined
sorear masak: Comparing regexes without closures is decidable. 20:29
masak: In fact, it's PSPACE-complete.
20:30 spaceships joined
masak sorear: oh, ok. 20:30
then my intuition was too pessimistic ;) 20:32
is graph isomorphism PSPACE-complete? 20:33
20:33 spaceships left, spaceships joined
sorear masak: Graph isomorphism is suspected to be easy (in P) 20:34
it's probably not even NP-complete
flussence has an itch to go write a module to Do Stuff With various v-string formats... 20:35
masak sorear: how far down in the Chomsky hierarchy do you have to go before comparing two expressions becomes undecidable?
sorear it may be intermediate (in NP, but neither NP-complete or P; such problems must exist if P != NP, another current candidate is factoring)
masak: comparing context-free languages is undecidable, iirc
masak oh, ok.
so one step is enough.
jnthn I'm guessing the decidability is tied to the restrictions of regular language 20:36
masak aye.
and that's part of why regular languages are desirable, I guess.
sorear there is a rather obvious (but exponential-time) algorithm for comparing regexes
masak they're "small enough".
sorear convert both to DFAs, compute the tensor project, and then check if any node with differing acceptance is reachable using DFS
masak s/project/product/ ? 20:37
sorear yes
masak inneresting.
sorear personally, I find the existance of natural PSPACE-complete problems to be much more suprising than the existance of natural NP-complete problems 20:38
20:39 ranguard joined
masak why? 20:39
TimToady QM is optmized for harder problems :) 20:40
sorear masak: PSPACE seems like it has less useful structure 20:41
masak the things I've learned about QM, even it is not a silver bullet.
we'll probably end up with GPUs in our computers, and that'll be it.
er, QPUs.
sorear QM gives you factoring and better physics simulators, and that seems to be about it
masak yeah. 20:42
will probably be a hit in gaming :P
sorear the lattice QCD people will *love* scalable quantum computing
masak :D 20:43
seems a good fit, yes.
masak .oO( Finally! With Quantum Computing, we can at last do sensible Quantum Mechanics simulations! ) 20:44
sorear model checking, etc
QCD gives the right cross sections for collisions in the LHC but nobody knows if it gives the right ground state energy for the proton 20:45
which is a kind of embarrassing state of affairs
masak sorear: have you seen www.scottaaronson.com/democritus/ ?
heady stuff.
sorear yes
masak suspected that
sorear I have read basically everything under that domain 20:46
including the ~entire blog archive
masak yeah. me too.
I never quite got through that course, but I intend to at some point. it's good.
sorear ok, so I don't need to worry about whether you have a firm grasp on PSPACE :)
masak I need the occasional reminder. these terms still don't come easy to me. 20:47
but yeah. I'm aiming for a firm grip on complexity theory. it seems important.
sorear PSPACE = functions which can be computed in polynomial space, possibly exponential time 20:48
the most important fact about PSPACE is Savitch's theorem
masak looks that up 20:49
20:49 eternaleye joined
masak ah. 20:49
I love how ddg+Wikipedia brings going from ignorance about something to knowing it to about 10 seconds ;)
or O(typing speed * term length + reading speed * introduction length) 20:50
sorear: Savitch's theorem reminds me of some "quadratic speedup" results I hear about sometimes in QC. 20:51
sorear quadraticness is not, IMO, the most salient feature there.
if you have a turing-like machine with 'there exists' quantifiers, you get NP in polynomially many steps 20:52
what Savitch's theorem tells us is that if you are allowed to alternate 'there exists' and 'for all', you get (N)PSPACE
masak ok. 20:53
sorear this is where the entire theory of PSPACE competeness comes from
masak "Although it seems that nondeterminism may produce exponential gains in time, this theorem shows that it has a markedly more limited effect on space requirements." -- this seems to summarize it well.
20:54 to1776 left
sorear this is why many games are PSPACE-complete to play optimally - you are solving problems of the form 'do I have a move such that for all opposing moves I have a move such that ...' 20:54
while 1-player games are usually at most NP-complete
masak hm, yes. 20:56
2-player games seems to naturally result in an EAEAEAEAEA... quantifier structure. 20:57
that's the same as saying we're trying to find the optimal move in a game tree.
TimToady
.oO(speccer vs implementor)
20:58
sorear (oh, and the other reason nobody uses context-sensitive grammars: the 'does string X match grammar G' problem is in P for CFGs but PSPACE-complete for CSGs) 20:59
masak TimToady: that sounds like a game I'd like to try! oh wait. 21:00
sorear: yeah, that sounds... bad.
OTOH, Perl regexes aren't regular any more, so we're outside of P anyways. 21:01
TimToady that probably explains why Perl 5 was such a failure :) 21:02
masak :P
21:02 ranguard left
sorear Perl regexes cheat by having operational semantics. 21:02
They aren't so much grammars as a DSL for writing parsers.
masak looks forward to the day when we have optimized the heck out of Perl 6 grammars
sorear Now, I have an $obligation to attend to, be back in a few hours
masak o/ 21:03
jnthn o/
21:03 ranguard joined 21:12 birdwindupbird left
dalek p/add-goto: bda247f | diakopter++ | src/NQP/ (2 files):
enable forward gotos. can't have unused labels. can't jump into blocks, and can't jump out of blocks that declare their own lexicals.
21:13
21:15 ponbiki joined, ranguard left
masak diakopter++ 21:16
diakopter thanks. it took only 46 questions to jnthn++ to accomplish.... 21:20
dalek p/toqast: 68f99e6 | jonathan++ | src/QAST/Compiler.nqp:
First crack at lexical lookup; needs a little more work on native handling, but hard to test until NQP's LexPad is updated to handle those.
p/toqast: b505a99 | jonathan++ | t/qast/qast.t:
A couple of tests for lexical lookup/binding in an inner block.
jnthn You counted them?!
diakopter well, no 21:21
TimToady another 4600 and nqp will turn in to Perl 6, completing the bootstrap
diakopter just a guess
TimToady *into
jnthn TimToady: Uh. :)
TimToady: We have divergent expectations on NQP ;)
It is, however, getting native types soon :)
Well
I hope QAST lands soon :)
masak r: v6 21:22
p6eval rakudo f685cb: ( no output )
masak r: v6; say "alive"
p6eval rakudo f685cb: OUTPUT«alive␤»
masak clearly, NQP is approaching Perl 6 asymptotically... 21:30
21:30 ponbiki left 21:33 thou joined 21:42 silug joined 21:48 ranguard joined
dalek p/toqast: 8fc6415 | masak++ | t/qast/qast.t:
added more tests for keyed operations
21:55
diakopter jnthn: will qast use POST? 21:56
or anyone
masak think so.
jnthn yeah
masak well, it already does in the toqast branch, if I'm reading things correctly. 21:57
jnthn Pm noted that POST is easy to re-write into NQP since it's tiny.
But it's also Parrot specific, so there's not so much incentive to port it from PIR. 21:58
21:58 mikemol joined 22:02 ponbiki joined
dalek p/toqast: b0705d6 | masak++ | t/qast/qast.t:
added tests for pos operations
22:06
22:09 ranguard left 22:17 ranguard joined
masak I think I'm getting the hang of this QAST thing. 22:26
22:28 smf joined
smf when is perl 6 stable coming? 22:28
masak smf: when people say "perl 6 stable" they mean different things. what do you mean when you say that? 22:29
smf when perl 6 has its 1.0 release, its gold release, its final release, its official release, not its perl 6 v0.99 release., but v1.0, like not 5.9.9 but 6.0.0 22:30
dalek p/toqast: 4924891 | jonathan++ | src/QAST/Compiler.nqp:
Basic implementation of attribute lookup; doesn't use the indexed lookup hints yet.
p/toqast: ef0edcb | jonathan++ | t/qast/qast.t:
Test attribute binding.
smf when perl 6 isnt 6-dev anymore
when perl 6 is official, and 5 is considered -legacy 22:31
masak smf: Perl 6.0.0 will be a release of the Perl 6 specification, not of any particular implementation. it will not make Perl 5 legacy :)
smf oh
but wont there be any official implementation?
masak smf: whether Perl 6 is dev or production still depends on who you are and what requirements you have.
there will be several official implementations.
hopefully. 22:32
smf why several? perl5 just had one, and that was enough
masak yeah, but Perl 5 didn't have a spec.
smf ein volk, ein reich, ein implementation!
oh
masak as soon as you have a spec, anything which fulfills the spec is an official implementation.
jnthn git st
smf okie
masak so it's sort of an open world.
jnthn oops
masak like interfaces and classes :)
smf will anyone want to use perl 6, now that there is Python and Ruby?
masak yes.
know why? 22:33
smf yes
why?
masak because Perl 6 is really, really, nice.
smf oh
masak it's a good language.
you should try it.
smf how come you say Perl 6 is so nice, when everybody says Perl 5 is so ugly
masak there have been some changes.
improvements.
smf do you think Perl 5 is ugly?
masak not really,
more like it contains ugly legacy things.
which you can choose to use or not use. 22:34
smf people say Perl is a read-only language, you can write code but not read
22:34 crab2313 joined
masak people who don't really understand the freedom of choice will always claim that Perl is ugly. 22:34
smf i mean a write-only
masak because they see all the bad things that you *can* do, given the choice.
but that's kinda the point.
smf huh?
masak Perl gives you enough rope to shoot yourself in the foot.
but don't do that. do something awesome instead ;)
the theory being that if you don't have enough rope, you can't really do the awesome things either. 22:35
jnthn afk for a bit
masak c.f. various bondage-and-discipline languages out there.
smf oh
geekosaur perl5 does have a lot of odd syntax in it, though; perl6 is more rational. where perl5 has idiosyncratic syntax, perl6 found a more general, cleaner way to do the same thing. 22:36
22:36 NamelessTee left
smf will Perl 6 run on JVM and CIL/.NET ? 22:36
masak smf: most likely.
smf cool
masak smf: it already runs on .NET
geekosaur niecza already runs on CIL
smf oh sweet
geekosaur / NET
masak n: say "hello from .NET!"
p6eval niecza v17-4-ge5b869e: OUTPUT«hello from .NET!␤»
smf and Python, Ruby , etc can run on Parrot?
masak ideally. 22:37
there's already Python and Ruby implementations on there.
diakopter sort of.
masak I can't speak to their completeness.
or bit-rottedness.
and there doesn't seem to be a big community around them.
but they exist.
22:38 thou left
masak the language interop dream in Parrot seems... oddly absent. I'd like to hear more from Parrot people about that. 22:38
smf why did Parrot was written, when there is already JVM and CIL ?
masak hubris :)
and the opinion that there was still a niche to fill.
smf oh
diakopter some didn't like the source code license of mono and .NET and the JVMs
masak given the goals of Parrot, I would say there is still a niche to fill. but JVM and CLR keep nibbling on that niche, I guess. 22:39
as long as Parrot doesn't bloom out and claim it.
smf whats so good about Parrot? 22:40
diakopter it's debatable
geekosaur Parrot predates the CLR, doesn't it? 22:41
diakopter no
masak 'night, #perl6 22:42
Tene Parrot predates an open-source CLR with any kind of support for dynamic languages.
I believe. 22:43
masak: I believe you're familiar with my experiences with PArrot language interop?
diakopter imho, parrot's big failings are its lack of a JIT and lack of threads. last I heard.
spider-mario parrot had a JIT compiler once 22:45
if I understand correctly, it was of so low quality that it was dropped
diakopter that's my understanding too. 22:46
Tene The primary issue with the jit compiler was that it could only work on very small pieces at a time, due to frequent calls to/from C
as I understand it.
spider-mario I believe it was x86-only, too 22:47
diakopter when I ran some of the benchmarks included with parrot against other VMs, parrot was tens to hundreds of times slower. I don't think it's improved much since then. 22:50
I was surprised the examples were distributed with parrot as examples of speed
sergot 'night o/ 22:53
22:53 sergot left
diakopter Tene: the fact parrot "predated" mono's support for dynamic languages doesn't make parrot good now. 22:55
Tene diakopter: I was responding to "< smf> why did Parrot was written, when there is already JVM and CIL ?"
diakopter it might have made parrot better at the time for those sharing parrot's dream/goals.
oh
sry
Tene np 22:56
diakopter In that case, I guess no one answered "what's so good about parrot"
smf: I'm curious to know the answer to that question too. If you find someone who would like to make arguments for parrot, I'm interested to hear them. 22:57
smf :)
diakopter other than "not not invented here" 22:58
geekosaur I am under the impression that, at the time, Parrot promised something that neither the JVM nor the CLR delivered; and while it isn't necessarily doing any better than either of them now, at this point it would be difficult to retarget Rakudo to something else. 22:59
diakopter efforts to make rakudo/nqp more platform-independent have been proceeding for a long time now, it's difficult work, sure, but people are doing it. 23:00
geekosaur I don't know if the JVM is a suitable target now any more than it was back then, though; it seems to me like it has a strong bias toward the way Sun^WOracle Java works, whereas the CLR is a bit more general 23:01
diakopter notably, the toqast branch of nqp
(re: retargetting rakudo) 23:02
23:06 ponbiki left
diakopter hmm, maybe I'm wrong on toqast being that... 23:16
sorear good * #eprl6 23:19
masak: still here?
23:20 thou joined
TimToady haven't seen a signoff 23:22
oh wait
yes we did 23:23
sorear ah 23:39
23:49 spider-mario left 23:51 lestrrat left, cogno joined
dalek p/toqast: 2d2de4e | jnthn++ | t/qast/qast.t:
Test compilation of attribute lookup also.
23:52
23:53 lestrrat joined, drschumtzenberg left
jnthn OK, sleep time o/ 23:56
23:58 mucker left, mdupont joined