»ö« 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:02 daemon left, daemon joined 00:04 domidumont1 joined 00:05 domidumont left 00:10 ab5tract left 00:15 cryptographrix joined 00:18 Chillance left 00:23 thou left 00:35 wamba left 00:37 wamba joined 00:41 jedai joined 00:51 f00li5h[HIREME] is now known as f00li5h 00:54 cryptographrix left 00:57 wamba left, wamba joined, soh_cah_toa joined 00:58 wamba left 01:00 tokuhir__ left, tokuhir__ joined, wamba joined 01:01 cryptographrix joined, noganex_ joined 01:05 tokuhir__ left, noganex left, AndroUser2 joined, cryptographrix left 01:08 wamba left 01:10 AndroUser2 left 01:11 cryptographrix joined 01:16 aloha left, LaVolta joined
LaVolta perl6: /test/.WHAT.say; say /test/.isa(Cool); 01:17
p6eval rakudo 922500: OUTPUT«Regex()␤1␤»
..pugs: OUTPUT«Regex␤*** No such subroutine: "&Cool"␤ at /tmp/CPn9GCA02k line 1, column 33-37␤»
..niecza v8-3-g838bc38: OUTPUT«Unhandled exception: Unable to resolve method say in class Regex␤ at /tmp/y8hlM_THe3 line 1 (MAIN mainline @ 1) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1933 (CORE C906_ANON @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 1934 (CORE module-CORE …
LaVolta When did things change? Regex is now Cool … :) 01:18
01:24 crk joined 01:26 aloha joined 01:28 lichtkind left
crk rakudo: say 3; 01:28
p6eval rakudo 922500: OUTPUT«3␤»
crk perl6: sub infix:<foo> ($a, $b) is tighter(&infix:<+>) is assoc('left') {} 01:30
p6eval rakudo 922500: OUTPUT«===SORRY!===␤Unexpected named parameter 'tighter' passed␤»
..pugs: ( no output )
..niecza v8-3-g838bc38: OUTPUT«Potential difficulties:␤ $a is declared but not used at /tmp/4UkKb0boH5 line 1:␤------> sub infix:<foo> (⏏$a, $b) is tighter(&infix:<+>) is assoc(␤ $b is declared but not used at /tmp/4UkKb0boH5 line 1:␤------> sub infix:<foo> ($a, …
01:40 cryptographrix left
TimToady LaVolta: Regex is not supposed to be Cool 01:47
LaVolta TimToady: so that was an accident?
TimToady well, depends on how you define accident, but kinda 01:48
LaVolta :-P
01:48 cryptographrix joined
TimToady Cool is intended to fill in for the type conversions of P5 01:49
so it's really about numerics and strings
01:49 whiteknight left
TimToady but there was some misunderstanding that most of the builtin types should be Cool at one point 01:49
but there's no reason a Regex should automatically convert to a number or a string 01:51
even if regexes think they're strings in P5
LaVolta So, in Perl5 we just use Strs, Nums interchangably, after introduced type system, it is needed to have a super class for all the base types? am I right? 01:52
TimToady Cool is the base class for numbers and strings in P6 now, yes
01:53 donri left
TimToady and we have default methods there that can interconvert in the way a P5 programmer might expect 01:53
_sri is perl6 really "solid enough" now?
LaVolta ah…sorry, "after introducing the type system", grammar error.
TimToady perl6: say (1 ~ '2') / 3 01:54
p6eval pugs, rakudo 922500, niecza v8-3-g838bc38: OUTPUT«4␤»
TimToady that goes through Cool in both directions
_sri twitter.com/#!/perlbuzz/status/963...0428631040 # this could backfire
LaVolta Cool! :)
now i think I get it: regex can't do what other subclass of Cool can do, so it's not Cool then. 01:56
TimToady _sri: you worry too much 01:58
_sri TimToady: you worry too little ;) 01:59
TimToady I don't think so :)
nom & 02:01
02:06 AndroUser2 joined, cryptographrix left 02:11 soh_cah_toa left
sorear _sri: I think that that statement is valid, if you're careful not to interpret it too broadly 02:27
Perl 6 is solid enough that if you start thinking about how to port modules, you won't be wasting time
emphasis on "start" and "thinking"
_sri sounds like you're promising me a pony :) 02:28
sorear TimToady: do you know where I can procure copies of soto 2008+ ? 02:29
_sri but that reminds me… are non-blocking sockets finally in? 02:31
02:35 jaldhar joined 02:42 woosley joined
dalek ast: c7c1e2f | Coke++ | S0 (8 files):
nom fudging
02:50
kudo/nom: 5bfd327 | Coke++ | t/spectest.data:
track more test error status, reclaim some files.
02:52
sorear wants a ponie
03:00 soh_cah_toa joined 03:04 woosley left 03:05 woosley joined
[Coke] Files=294, Tests=8383 03:10
(nom) 03:11
03:11 woosley left 03:15 woosley joined 03:16 woosley left 03:19 kaare_ joined 03:23 Su-Shee_ joined 03:26 Su-Shee left 04:11 birdwindupbird joined 04:19 AndroUser2 left 04:27 satyavvd joined 04:35 masak joined
masak morning, #perl6 04:35
_sri: promising (and delivering) a pony has been the purpose all along. 04:36
LaVolta oh hai, masak
masak I'd add that "that promise is now coming true", but that was true for Pugs as well. the difference is one of scale.
today's effort is broader, deeper, and will likely result in a faster implementation. 04:37
er. one that runs faster, that is. Pugs was written at an unusually high pace.
04:40 crk left
masak _sri: and no: non-blocking sockets are not finally in (in Rakudo). 04:41
seems the set of people who really want it and the set of people who can be bothered to patch Rakudo are disjunct. :/ 04:42
04:43 molaf joined 04:56 kjeldahl left
masak commutes 04:59
04:59 masak left 05:13 LaVolta left 05:20 koban joined 05:22 Su-Shee_ is now known as Su-Shee 05:26 soh_cah_toa left 05:29 woosley1 joined 05:40 molaf left 05:41 r joined, r left 05:53 beekor joined 06:04 mberends left 06:07 wtw joined 06:13 mkramer joined
jnthn morning, #perl6 06:18
nom: prompt "huh?" 06:28
p6eval nom: OUTPUT«Could not find sub &prompt␤current instr.: '_block1002' pc 75 ((file unknown):61425851) (/tmp/KhiaUwNzE4:1)␤»
jnthn commute & 06:34
dalek kudo/nom: 6383a6d | jonathan++ | src/core/IO.pm:
Implement &prompt.
06:35
06:36 daniel-s joined 06:40 araujo left, TiMBuS left, daniel-s_ joined, daniel-s left 06:44 daniel-s_ left, daniel-s__ joined 06:45 cognominal_ left, thou joined, cognominal_ joined 06:47 localhost joined
dalek atures: 56d4d99 | larry++ | features.json:
yet more codes
06:48
06:49 _daniel-s__ joined, daniel-s__ left 06:51 localhost left 06:53 localhost joined, lue left, _daniel-s__ left, _daniel-s__ joined 06:55 localhost left 06:58 daniel-s joined, _daniel-s__ left 07:02 daniel-s left, daniel-s joined 07:07 daniel-s_ joined, daniel-s left, Mowah joined 07:11 daniel-s__ joined, daniel-s_ left 07:14 mj41_nb joined 07:15 daniel-s__ left, daniel-s__ joined
moritz nom has lots of non-zero exit statusses in the spectest run 07:16
5 in my latest run
erm, 4
2x status 1, 2x status 11
07:16 TiMBuS joined 07:19 thou left 07:20 daniel-s__ left, _daniel-s__ joined, EguoWang joined 07:22 EguoWang left 07:24 daniel-s joined, jaldhar left, _daniel-s__ left 07:29 daniel-s_ joined, daniel-s left 07:33 daniel-s_ left 07:35 daniel-s__ joined 07:39 daniel-s__ left, daniel-s__ joined 07:44 daniel-s__ left, daniel-s__ joined, Jackneill joined, Jackneill left, Jackneill joined 07:48 daniel-s__ left, daniel-s__ joined 07:52 daniel-s__ left 07:53 daniel-s__ joined 07:57 daniel-s__ left, _daniel-s__ joined 08:01 _daniel-s__ left, _daniel-s__ joined 08:06 daniel-s joined, _daniel-s__ left
moritz nom: say (0 xor Int xor 'plugh') 08:09
p6eval nom: OUTPUT«Method 'gist' not found for invocant of class 'Undef'␤current instr.: 'say' pc 488108 (src/gen/CORE.setting.pir:124069) (src/gen/CORE.setting:3753)␤»
moritz nom: say so (0 xor Int xor 'plugh')
p6eval nom: OUTPUT«Segmentation fault␤»
moritz that's what makes t/spec/S03-operators/short-circuit.t segfault for me
08:10 daniel-s left
moritz nom: say so Int 08:10
p6eval nom: OUTPUT«Bool::True␤»
moritz wtf?
08:10 daniel-s joined
moritz nom: say so Str 08:11
p6eval nom: OUTPUT«Segmentation fault␤»
jnthn ouch 08:12
moritz I understand why it doesn't work correctly
not sure it should segfault though
perl6: say Str.succ 08:13
p6eval pugs: OUTPUT«*** No such method in class Str: "&succ"␤ at /tmp/cFetl8H6gA line 1, column 5 - line 2, column 1␤»
..niecza v8-3-g838bc38: OUTPUT«WTF␤»
..rakudo 922500: OUTPUT«Sts()␤»
moritz adds Str:D: to basically all methods in Str 08:14
jnthn yeah, it's getting a junk string PMC somehow
oh..
08:14 daniel-s left 08:15 daniel-s joined
jnthn I think that P6opaque's box/unbox ops don't check for type objectness. 08:16
d'oh
08:19 daniel-s_ joined, daniel-s left
moritz nom: say nqp::unbox_s(Str) 08:21
p6eval nom: OUTPUT«Method 'gist' not found for invocant of class 'String'␤current instr.: 'say' pc 488108 (src/gen/CORE.setting.pir:124069) (src/gen/CORE.setting:3753)␤»
moritz nom: say nqp::unbox_i(Int)
p6eval nom: OUTPUT«Method 'gist' not found for invocant of class 'Integer'␤current instr.: 'say' pc 488108 (src/gen/CORE.setting.pir:124069) (src/gen/CORE.setting:3753)␤»
jnthn yeah, that should be an error. 08:22
as in, before that.
moritz right
jnthn nom: pir::say(nqp::unbox_i(Int))
p6eval nom: OUTPUT«145␤»
jnthn nom: pir::say(nqp::unbox_i(Int))
p6eval nom: OUTPUT«145␤»
jnthn random junk
moritz: If you want to fix, P6opaque.c and see the attribute access code, which does the check.
moritz nom: pir::say(nqp::unbox_i(Str))
p6eval nom: OUTPUT«This type cannot unbox to a native integer␤current instr.: '_block1002' pc 69 ((file unknown):10612371) (/tmp/Qn9jejHy3j:1)␤»
jnthn can't right now 08:23
08:23 daniel-s_ left, daniel-s_ joined 08:26 dakkar joined 08:28 daniel-s_ left, daniel-s_ joined 08:32 daniel-s__ joined 08:33 daniel-s_ left, cognominal_ left, cognominal_ joined 08:34 araujo joined
moritz maybe Ill get to it in half an hour 08:35
08:36 daniel-s__ left, daxim joined 08:37 daniel-s__ joined 08:41 _daniel-s__ joined, daniel-s__ left 08:45 daniel-s joined 08:46 _daniel-s__ left 08:50 daniel-s left, daniel-s joined 08:54 daniel-s left, daniel-s_ joined 08:58 daniel-s_ left 08:59 daniel-s__ joined 09:03 daniel-s__ left
jnthn interviewing & 09:03
09:03 daniel-s__ joined 09:07 daniel-s__ left, _daniel-s__ joined 09:11 espadrine` joined 09:12 daniel-s joined
espadrine` Hello, is there an issue with try.rakudo.org/? I don't want to file a bug report if this is a mere uptime issue of some kind. 09:12
09:12 _daniel-s__ left
flussence it's a known problem, we haven't really figured out why it breaks like that though 09:13
espadrine` Ah, ok. 09:14
09:16 daniel-s left, daniel-s joined 09:21 daniel-s_ joined, daniel-s left 09:23 wamba joined
dalek kudo/nom: 09c8fab | moritz++ | src/core/ (3 files):
add :D constraints to invocants of Str/Int/Num methods
09:24
09:25 daniel-s_ left, daniel-s_ joined 09:26 dual left
moritz ah, I think I see how I have to change P6opaque 09:26
I first thought I had to touch the actual ops 09:27
but they are not specific to a repr
so it really must be the repr
09:29 daniel-s__ joined 09:30 daniel-s_ left 09:33 timbunce joined 09:34 daniel-s__ left, daniel-s__ joined 09:38 _daniel-s__ joined 09:39 daniel-s__ left 09:43 daniel-s joined, _daniel-s__ left, mls joined
mls moritz: I think you just have to test instance->spill in the get/set functions 09:44
i.e just like in the get_attribute functions 09:46
09:47 daniel-s left, daniel-s joined
moritz mls: yes, that's what I've figured out too :-) 09:47
mls: I have a local patch, will test rakudo on top of it before I commit
mls btw, wasn't there some discussion to make :D default? 09:49
moritz yes, there was
and I'm still very sure that it's required for sanity 09:50
but there's ongoing discussion about the naming
09:51 woosley1 left, daniel-s_ joined 09:52 daniel-s left 09:54 wamba left
moritz $ ./perl6 -e 'nqp::unbox_s(Str)' 09:54
Cannot unbox type object to a native string
\o/
dalek p: f68aa56 | moritz++ | src/6model/reprs/P6opaque.c:
[P6opaque] guard against unboxing type object, a common-ish cause for segfaults in rakudo/nom
09:55
09:55 wamba joined
mls moritz: maybe you should also add this to the box functions, just in case 09:56
09:56 daniel-s_ left, daniel-s__ joined
moritz mls: I thought so too first... but for boxing I already have a native str/int/num, so it can't be a type object 09:56
you can't pass a PMC to a function expecting an INTVAL, the C compiler complains 09:57
09:59 ab5tract joined, awoodland joined 10:00 _daniel-s__ joined, daniel-s__ left 10:05 daniel-s joined, _daniel-s__ left 10:09 daniel-s left, daniel-s_ joined 10:12 daxim left 10:13 daniel-s__ joined 10:14 daniel-s_ left 10:18 daniel-s__ left, _daniel-s__ joined
mls seems like set_int et al is only called in perl6.ops right after instance_of, so it seems to be safe. Still, defensive programming is IMHO a good thing... 10:19
moritz point is that the compiler toolchain pretty effectively deals with native-vs-pmc decisions 10:21
so any code generated via PCT (and that includes pir:: calls from nqp and rakudo) never tries to box a PMC
10:22 hanekomu joined
mls I don't see what the compiler has to do with this. I just have to write a bad op that doesn't call instance_of to create an object from the type 10:22
but yes, currently it isn't possible to call set_int on a type if you just write nqp/perl6 10:23
As I said, "just in case". I.e., like an assertion. 10:25
moritz yes, assertion would be good
10:25 MayDaniel joined
moritz the 6model philsophy is so far that C code and the compiler must know what they are doing 10:26
and only user-level errors are caught
which is decent for efficiency, but sucks in the case of writing C code interfacing 6model
assertions seem to be the right approach, since they can just be #define'd out 10:27
I get a lot of spectest failures with that newest patch 10:28
nom: say 1 == Int 10:30
p6eval nom: OUTPUT«Bool::False␤»
moritz nom: say 0 == Int
p6eval nom: OUTPUT«Bool::False␤»
10:31 pernatiy left
moritz lots of :D's missing all over the setting 10:33
10:33 daxim joined
mls make it default ;-) 10:33
moritz :D 10:34
mls You could return 0 / '' instead of throwing an exception 10:36
10:36 hanekomu left 10:37 hanekomu joined
moritz my approach is to add :D to the Int/Num/Str operators that unbox 10:38
and then we have more general (Any, Any) operators that coerce to .Numeric
and then redispatch
those can handle with one of the operands being a type object 10:39
nom: say 1 xor 0
p6eval nom: OUTPUT«1␤»
10:39 _daniel-s__ left
moritz nom: say 1 ?^ 0 10:40
p6eval nom: OUTPUT«Bool::True␤»
moritz nom: say 1 !^ 0
p6eval nom: OUTPUT«Cannot negate ^ because it is not iffy enough at line 1, near " 0"␤current instr.: 'nqp;HLL;Grammar;panic' pc 23611 (src/stage2/gen/NQPHLL.pir:6348) (src/stage2/gen/NQPHLL.pm:329)␤»
moritz spectests and goes to lunch. With some luck I'll be able to push when I get back :-) 10:45
10:53 Jackneill left 10:54 skangas joined 11:05 Jackneill joined 11:13 jaldhar joined 11:35 Jackneill left 11:36 Jackneill joined, Jackneill left, Jackneill joined 11:44 daniel-s joined, pernatiy joined
espadrine` What is "nom"? Is it some rakudo fork, or a nightly build? 11:44
11:45 satyavvd left
eiro espadrine`, nom is a branch with a complete rewrite of metaobject system 11:46
espadrine` eiro: do we need this rewrite for performance reasons?
11:48 daniel-s_ joined, daniel-s left
eiro espadrine`, i don't know the reasons of nom but the results are speed improvement and lot of simplifcations (as i heard) 11:49
(i'm just a "early adopter", not a perl6 hacker) 11:50
11:50 Jackneill left 11:51 Jackneill joined, Jackneill left, Jackneill joined
kboga espadrine`: here are some pointers to read about nom: pmthium.com/2011/02/08/new-nqp-repo...do-branch/ 6guts.wordpress.com/2011/06/28/anot...om-update/ www.jnthn.net/articles.shtml 11:52
11:53 daniel-s__ joined, daniel-s_ left
espadrine` kboga: thanks! 11:53
kboga espadrine`: np =) 11:54
moritz nom: say so (("foo" ~~ *) ~~ Bool) 11:55
p6eval nom: OUTPUT«Bool()␤»
11:57 daniel-s__ left, _daniel-s__ joined
kboga oh right almost forgot, hello perl6! 11:58
moritz \o kboga 11:59
11:59 [particle] left
moritz that output is another case of a forgotten :D 12:00
12:00 [particle] joined 12:02 daniel-s joined, _daniel-s__ left
moritz rakudo: say Bool.Bool 12:02
p6eval rakudo 922500: OUTPUT«Bool::False␤»
moritz nom: say Bool.Bool
p6eval nom: OUTPUT«Bool()␤»
kboga We should never forget to :D 12:04
moritz should do a complete review of methods in the setting 12:05
kboga Why so serious? Lets put a :D on that method.
moritz nom: say Any.elems
p6eval nom: OUTPUT«1␤»
moritz nom: say Any.hash 12:06
p6eval nom: OUTPUT«Odd number of elements found where hash expected␤current instr.: 'die' pc 465604 (src/gen/CORE.setting.pir:110729) (src/gen/CORE.setting:245)␤»
12:06 daniel-s_ joined, daniel-s left 12:07 antonio_ joined, antonio_ is now known as odoacre 12:11 daniel-s__ joined, daniel-s_ left 12:12 mikehh left 12:15 _daniel-s__ joined, daniel-s__ left 12:17 hanekomu left 12:18 hanekomu joined 12:19 _daniel-s__ left, _daniel-s__ joined 12:20 MayDaniel left 12:21 masak joined
masak oh hai 12:21
reading through RC entries. very enjoyable.
kboga hi masak
masak I notice rosettacode.org/wiki/Parametric_pol...ism#Perl_6 makes use of the fact that Rakudo's .perl erroneously includes private attrs. 12:22
maybe that should be fixed. :)
laterz.
12:22 masak left 12:24 _daniel-s__ left, daniel-s joined
kboga I guess I'll be a git and ask if anyone would be interested in reviewing my pull request: github.com/rakudo/rakudo/pull/29 12:27
dalek kudo/nom: c2307d4 | moritz++ | / (8 files):
routines that unbox to native types or access attributes need :D in their signature.

Also bump NQP_REVISION to get error checking when unboxing type objects
12:28 daniel-s left, daniel-s joined
kboga I think having these global vars will allow us to uncover many more LHF's from the spectests. 12:28
moritz kboga: again it would be nice to have a pull request without interfering commits 12:30
kboga: I generally recommend to make feature branches for pull requests, and don't do synchronization merges into these branches 12:31
kboga hmm ic
moritz I like the patches themselves 12:32
12:33 daniel-s_ joined, daniel-s left
kboga ok, what would be the best way to accomplish that starting from what there is now? 12:33
moritz git checkout -b special-vars rakudo/nom 12:34
git merge nom
12:34 dual joined
moritz git rebase -i rakudo/nom # and filter out all the merge commits 12:34
git push origin special-vars 12:35
kboga ok, thanks for your help moritz, I’ll try that (and should read a git book someday) =)
12:37 daniel-s_ left, daniel-s_ joined 12:39 cryptographrix joined
moritz oh, I think I accidentally added a syntax error in the last commit 12:41
12:42 daniel-s_ left, daniel-s__ joined
moritz fix forthcoming after spectest 12:42
kboga ye in Enum.pm so it seems
moritz a mis-placed colon 12:43
takadonet morning all
kboga hi takadonet 12:44
takadonet kboga: how are you sir?
dalek kudo/nom: c087c52 | moritz++ | src/core/ (4 files):
fix syntax error in previous commit, moritz--
12:45
12:46 AndroUser2 joined, _daniel-s__ joined, AndroUser2 left, daniel-s__ left 12:47 AndroUser2 joined
kboga good, but I'm not a sir :) 12:48
12:48 cryptographrix left
moritz kboga: btw if you want a commit bit for rakudo, you'd need to fill out a "contributor license agreement" (see www.perlfoundation.org/contributor_..._agreement ) and send it to the Perl Foundation 12:50
12:50 daniel-s joined, _daniel-s__ left
moritz (and approval from the developers, but I don't see a problem with that) 12:51
kboga ok, moritz++ again for the help with git, now to find out how to send a pull request on this
12:51 AndroUser2 left 12:52 wamba left
moritz kboga: I think you have to select the branch on the github website, and then click 'pull request' 12:52
kboga: but I can also merge without a pull request :-)
kboga there, pull request issued. 12:53
that is indeed much cleaner 12:54
12:54 MayDaniel joined, MayDaniel left, MayDaniel joined
moritz kboga: thanks again for your patches and the effort to clean up the pull request 12:54
12:55 daniel-s left, daniel-s joined
dalek kudo/nom: f3d1b8f | kboga++ | src/core/terms.pm:
Implemented @*INC.
12:55
kudo/nom: 496ec52 | kboga++ | src/core/terms.pm:
Implement $*PID.
kudo/nom: 2708593 | kboga++ | src/core/terms.pm:
Implement $*VM and clean up @*INC.
kudo/nom: eba4254 | kboga++ | src/core/terms.pm:
Implement $*OS and $*OSVER.

Note: they get their info from $*VM<config> instead of the sysinfo dynop like master.
kudo/nom: fde5bfd | kboga++ | src/core/terms.pm:
Implement $*EXECUTABLE_NAME.
kudo/nom: 241faa2 | moritz++ | src/core/terms.pm:
Merge pull request #30 from kboga/special-vars

Special vars
12:58 MayDaniel left 12:59 daniel-s left, daniel-s joined 13:00 bluescreen10 joined 13:03 cognominal_ left, cognominal_ joined 13:05 Holy_Cow joined, Holy_Cow left
moritz just had the first two 100% clean spectest runs on nom for ages 13:09
tadzik you mean, unfudged? :P 13:10
hello zebras
tadzik is, hopefully, fixing his laptop today
moritz clean = all tests passing, no non-zero exist status
tadzik no more turning-on russian roulette
I think I had that yesterday or so, but is seems nondeterministic sometimes
moritz: got a few .WHY moments? 13:11
moritz I think I figured out that most segfaults were related to unboxing type objects
adding a lot of :D's helped
tadzik: yes
tadzik :D
moritz oh, assigning-refs.t still occasionally wants 34740112 arguments 13:12
tadzik so, now I have a dynvar $*DECLARATOR attached to the declarator block #=. Then in the class declaration I add its content to class.WHY.docs, that works
but that would also work for things like: #= bla bla\nsomething_unrelated()\n\n\n...\nclass foo {}
so I'm thinking if it wouldn't be better to attach a <declarator_block> before <sym> in package_def<class> 13:13
that would work for post-declarations only, but that's what we wanted for #=, isn't it?
what do you think?
moritz a bit confused 13:14
tadzik for now it's a bit randomish: the last parsed declarator block is used, and there's no easy way to "turn it off" after something unrelated
did you see the demo yesterday or so?
moritz yes
tadzik okay. Now, every #= block sets the dynvar, and every class declaration reads the dynvar and uses it to document a class 13:15
so, a last parsed declarator is used
moritz how about switching that around?
have each class (and maybe routine) set its own $*ATTACHABLE or so
tadzik I think whether it'd be better to have declarators more strictly attached to a class? So, <declarator> 'class' <block>
so every declaration has its own, optional declarator block, which is used there and only there 13:16
moritz and a #= block looks up $*ATTACHABLE, calls .WHY.add_docs or whatever
and warns if no $*ATTACHABLE is found
tadzik the the class/routine/whatever has to appear before the declarator, no? 13:17
moritz with that factoring, the #= would have to be inside the class
tadzik yes 13:18
moritz which would suck for attributes
tadzik which brings us back to the question of where to allow declarator blocks
for me, the most sane place, at least for now, to make it work, is just before the 'class' keyword
see Grammar.pm:1007 and neighbours 13:19
moritz in which branch? nom? 13:20
tadzik I'd then stick a <declarator_block> or so just before <sym>. Yes, nom
moritz I think that's flawed
first, I think that #= should always be parsed by exactly one rule, and a #= in a wrong place (but where comments are allowed) should not be a syntax error 13:21
tadzik that's correct 13:22
moritz I'd rather have a rather high-level rule reset $*DECLARATOR, and warn if it's not empty
tadzik hmm 13:23
moritz then allowing #= blocks on other entities (for example routines) would be a simple matter of consuming $*DECLARATOR in their grammar rules
tadzik sane
moritz maybe you should wait for one of our parsing gurus (any <TimToady pmichaud sorear jnthn>) to confirm that 13:24
it's more of a feeling really 13:25
13:26 kfo joined
[Coke] moritz: if you fix the short circuit issue, I'm afraid I just fudged a bunch of tests there you'll have to undfudge. 13:26
tadzik I'll wait for commentaries then :) 13:27
13:27 Alias joined, wamba joined
moritz [Coke]: autounfudge.pl is already running 13:27
[Coke] does autounfudge try to de-skip tests? 13:28
moritz yes
[Coke] that's got to be painful.
moritz it... takes up some CPU
jnthn back
[Coke] so, unskip test a, rerun, boom, reskip, go to next text...
moritz for each file, it first runs the test normally
jnthn And with a bigger screen. yay :) 13:29
moritz it assumes that the skips are not interdependent
so it just tries to remove each skip separately
so for a file with $n skip lines, it does $n+1 runs
[Coke] moritz: woof.
moritz fortunately some of the skips cause compilation errors, so they are early exists
the nice thing is that it write a .patch file for you 13:30
so you can review it, and delte hunks from it which you don't like
13:31 kfo_ joined, kfo left
tadzik jnthn: could you take a look at the #= discussion above? 13:31
jnthn Sure, when I've made a cup of tea and stopped drooling over my new 22 inches. :) 13:33
tadzik oooo
jnthn This is gonna be better for my back :)
13:34 Mowah left 13:35 koban left
flussence 22"... widescreen? 13:35
jnthn flussence: yes :)
Up from 19" non-widescreen
Plus this one is somewhat crisper. :) 13:36
moritz would love a 22" 4:3 monitor :-)
tadzik or 3:4 :>
flussence would accept a 19"... as long as it's at least 150dpi
13:37 benabik joined
PerlJam still waits for the high resolution glasses that cover as large or as small a part of vision as wanted. :-) 13:39
13:39 kfo_ left 13:40 drbean left
PerlJam that would be the ultimate monitor. A heads-up display for your computer. 13:40
moritz perl6: say 2 ** 16
p6eval pugs, rakudo 922500, niecza v8-3-g838bc38: OUTPUT«65536␤»
moritz it's nice to see them agree sometimes :-) 13:41
13:47 kfo joined 13:57 jaldhar left
dalek ast: bf4624e | moritz++ | S (7 files):
nom unfudges
13:58
14:02 risou_awy is now known as risou
espadrine` moritz: Does rakudo have bignums now? (In reference to dalek's commit message.) 14:04
[Coke] is tempted to buy a small tv for his office (instead of a large monitor) and use that. 14:05
[Coke] wonders how many of you younguns remember when you actually had to plug your computer INTO your tv. the analog kind.
benabik still fondly remembers his C64
moritz espadrine`: no 14:06
espadrine`: it upgrades to floating-point numbers on overflow, which is good enough to make that one test passing 14:07
[Coke] benabik++ 14:08
espadrine` moritz: fair enough. 36893488147419103232 converts to floats too, doesn't it? 14:09
moritz nom: say 36893488147419103232.WHAT
p6eval nom: OUTPUT«Int()␤»
moritz huh
nom: say 36893488147419103232
p6eval nom: OUTPUT«-9223372036854775808␤»
moritz no, it just overflows :-)
benabik [Coke]: I even remember 300 baud modems. :-D Although acoustic couplers are still before my time.
espadrine` ah, ok :D
benabik (Although we had one in the house.)
[Coke] benabik: you must be my age. 14:14
PerlJam you guys are *old* ;)
[Coke] we didn't have an acoustic coupler, but my parents were not geeks. (I'm a first gen geek) 14:15
benabik [Coke]: My dad worked for Commodore, so while I remember it, its from my _youth_.
[Coke] whoa.
jealous.
espadrine` perl6: say 2 ** 65 == 36893488147419103232
p6eval niecza v8-3-g838bc38: OUTPUT«Bool::True␤»
..pugs: OUTPUT«1␤»
..rakudo 922500: OUTPUT«Bool::False␤»
PerlJam benabik: what did he do?
benabik PerlJam: Tech support, basically.
[Coke] does wonder if there's a call for something like an Atari 400 with a Perl6 cartridge.
[Coke] finds it hard to entice his children to draw ascii snoopys when they can play portal 2. ;) 14:16
PerlJam There's an old Amiga sitting in boxes down the hall from me .. I wonder if anyone would want to make Perl 6 run on it. :) 14:17
(Is "old Amiga" redundant? ;)
[Coke] my Amiga 500 is in a friend's attic, I think. 14:18
benabik I keep hearing things about Amiga… I think there's a newish OS for them. 14:19
flussence has a full set of RISC OS 3 programming reference manuals at home... but no hardware to go with them :( 14:21
PerlJam flussence: clearly you should write a virtual machine for them ;) 14:22
daxim benabik, the spiritual successors are the pegasos hardware and morphos operating system en.wikipedia.org/wiki/Pegasos 14:23
benabik daxim: Interesting, but what I was thinking of was that AmigaOS 4.1 has been updated as recently as April 2010 14:24
PerlJam I wonder why they named it "amiga"? Perhaps they thought it was the only girl friend a geek could have? ;) 14:25
14:29 Trashlord left, Trashlord joined
benabik PerlJam: According to Wikipedia: "The name Amiga was chosen by the developers specifically from the Spanish word for a female friend, and it comes Apple and Atari alphabetically." 14:29
*comes before
PerlJam "yes, this little box of electronics is female. and she's your friend. you want to hang out with your female friend." 14:31
flussence sounds familiar... bugzilla.mozilla.org/show_bug.cgi?id=661075 14:33
moritz nom: my $x = 3; say "$x".WHAT
p6eval nom: OUTPUT«Int()␤»
jnthn hm. 14:34
That's probably not quite what was intended.
moritz that bug was also present in perl 1 and rakudo/master
(but fixed in both)
jnthn Though with all the talk of <1 2 3> actually producing a list of integers I think I could almost argue that it's OK :P
moritz it's almost ok, yes 14:35
to the degree that both Str ~~ Cool and Int ~~ Cool
jnthn Yeah
Suspect it's too surprising though.
benabik Especially with multis.
Although someone writing foo("$x") should probably use foo(~$x) instead, they shouldn't be penalized for it. 14:36
jnthn Yeah
moritz github.com/rakudo/rakudo/commit/fe...51bdddd1ec
jnthn heh
set__SP won't work in nom world. 14:37
moritz nqp: my $x := 1; say("$x".WHAT)
p6eval nqp: OUTPUT«Can only use get_what on a SixModelObject␤current instr.: '_block1000' pc 48 ((file unknown):44) (/tmp/wE8OJJ7iWy:1)␤»
moritz nqp: my $x := 1; say(pir::typeof("$x"))
p6eval nqp: OUTPUT«Integer␤»
jnthn Need to make an explicit call to ~ I guess
Or .Stringy
(prefix:<~> that is...) 14:38
moritz it might lead to bootstrap issues
because .Stringy and prefix:<~> are defined rather late in the setting
might as well try it...
jnthn Well, only if we do that kinda stuff while compiling the setting. 14:39
But yeah, it's possible.
Lots of bootstrapping fun in CORE.setting.
jnthn has no idea if enums work in there yet.
nom: enum Foo <Bar Baz>; say Foo::Bar; say Baz;
p6eval nom: OUTPUT«Foo::Bar␤Foo::Baz␤»
jnthn nom: enum Foo <Bar Baz>; say Foo::Bar.value; say Baz.value; 14:40
p6eval nom: OUTPUT«0␤1␤»
jnthn nom: enum Foo <Bar Baz>; say Foo.enums
p6eval nom: OUTPUT«("Bar" => 0, "Baz" => 1).hash␤»
14:41 molaf joined
moritz nom: enum Foo <Bar Baz>; say Bar.Int 14:42
p6eval nom: OUTPUT«Foo::Bar␤»
moritz nom: enum Foo <Bar Baz>; say Bar + 2
p6eval nom: OUTPUT«2␤»
moritz nom: enum Foo <Bar Baz>; say Bar ~~ Int
p6eval nom: OUTPUT«Bool::True␤»
moritz while arguable correct, I'd suggest returning 0 instead of Bar from Bar.Int
jnthn moritz: src/core/Enumeration.pm - add a method Int to NumericEnumeration should do it. 14:44
note that
nom: enum Foo <Bar Baz>; say Bar.Numeric
p6eval nom: OUTPUT«0␤»
benabik .Int != .Numeric.Int? 14:45
nom: enum Foo <Bar Baz>; say Bar.Numeric.Int; say Bar.Int
p6eval nom: OUTPUT«0␤Foo::Bar␤»
moritz nom: enum Foo <Bar Baz>; say Bar.Int == Bar.Numerc.Int 14:46
p6eval nom: OUTPUT«Method 'Numerc' not found for invocant of class 'Foo'␤current instr.: '_block1002' pc 95 ((file unknown):79281107) (/tmp/maWjIDrimO:1)␤»
moritz nom: enum Foo <Bar Baz>; say Bar.Int == Bar.Numeric.Int
p6eval nom: OUTPUT«Bool::True␤»
moritz they are == equal
jnthn Note that an Int based enum just does whatever Int does for methods, unless you say otherwise.
And Int.Int returns self.
moritz nom: enum Foo <Bar Baz>; say Bar.value 14:47
p6eval nom: OUTPUT«0␤»
14:47 pjcj left, benabik left
jnthn Mapping .Int to .value.Int probably works fine. 14:47
moritz that's my plan :-)
jnthn note that
nom: enum Foo is export <Bar Baz>; # should work too 14:48
p6eval nom: OUTPUT«No applicable candidates found to dispatch to for 'trait_mod:<is>'. Available candidates are:␤:(Mu $child, Mu $parent)␤:(Attribute $attr, Any $rw)␤:(Routine $r, Any $rw)␤:(Parameter $param, Any $rw)␤:(Parameter $param, Any $copy)␤:(Routine $r, Any $export)␤␤current instr.: '…
jnthn Ah
nom: class Foo is export { }
p6eval nom: OUTPUT«No applicable candidates found to dispatch to for 'trait_mod:<is>'. Available candidates are:␤:(Mu $child, Mu $parent)␤:(Attribute $attr, Any $rw)␤:(Routine $r, Any $rw)␤:(Parameter $param, Any $rw)␤:(Parameter $param, Any $copy)␤:(Routine $r, Any $export)␤␤current instr.: '…
jnthn Oh, just not done type exporting multi candidate generally yet.
Fairy nuff.
Anyway, it applies traits.
nom: role Fooey { }; enum Foo does Fooey <Bar Baz>; say Foo ~~ Fooey 14:49
p6eval nom: OUTPUT«Bool::True␤»
14:49 pjcj joined
moritz woah 14:49
jnthn Which the master implementation didn't. :)
The spec explicitly says that's allowable :)
14:50 JimmyZ joined
dalek ast: 71ee6c9 | moritz++ | S12-enums/basic.t:
refudge S12-enums/basic.t for rakudo
14:56
moritz nom: my $e = enum <a b c>
p6eval nom: OUTPUT«Could not find sub &ANON_ENUM␤current instr.: '_block1002' pc 99 ((file unknown):178) (/tmp/LCywFHDQYm:1)␤»
moritz that part of the implementation seems bogus 14:57
even if &ANON_ENUM was implemented, it still misses the part where the keys are added 14:58
14:59 thou joined
dalek kudo/nom: 7cc1567 | moritz++ | t/spectest.data:
3 more passing test files
15:07
kudo/nom: c22bfbd | moritz++ | src/core/Enumeration.pm:
make $enumValue.Int less awkward
pmichaud good morning, #perl6 15:09
moritz good am, pm 15:10
kboga hi, pm 15:13
pmichaud kboga++ # excellent patches 15:16
kboga: there's a small problem with commit # 2708593 15:17
+ config => pir::perl6ize_type__PP( 23
+ nqp::atpos(pir::getinterp, pir::const::IGLOBALS_CONFIG_HASH))
grrrr, silly github cut/paste
config => pir::perl6ize_type__PP( 15:18
nqp::atpos(pir::getinterp, pir::const::IGLOBALS_CONFIG_HASH))
that turns the config hash into a valid nom EnumMap type, but it doesn't perl6ize the values
i.e., the hash itself still contains Parrot objects
jnthn o/ pmichaud
pmichaud jnthn: o/ 15:19
kboga oh, ic.
JimmyZ wonder what's the difference between 'self.value' and '$!value'
pmichaud JimmyZ: the first is a method call
15:19 daniel-s left
moritz nom: class A { has $!value = 5; method value() { 42 }; method decide() { say $!value, self.value } }; A.new.decide 15:20
p6eval nom: OUTPUT«542␤»
jnthn pmichaud: Regex day still? :)
pmichaud jnthn: yes, but need to finish making the 2011.07 star release first
JimmyZ nom: class A { has $.value = 5; method decide() { say $!value, self.value } }; A.new.decide 15:22
p6eval nom: OUTPUT«55␤»
jnthn pmichaud: OK. I'm about for the evening and will be pretty free. :)
15:23 hanekomu left
moritz nom: class A { has $.value = 5; method decide() { say $!value, self.value } }; class B is A { method value() { 2 * callsame() } }; say B.new.decide 15:23
p6eval nom: OUTPUT«510␤Bool::True␤»
moritz nom: class A { has $.value = 5; method decide() { say $!value, self.value } }; class B is A { method value() { 2 * callsame() } }; B.new.decide
p6eval nom: OUTPUT«510␤»
15:23 ron__ joined
kboga pmichaud: so to perl6ize the values, something similar to what is done with %*ENV has to be done? 15:25
pmichaud I think so, yes. 15:26
ron__ coke and benabik - noticed the chatter about old commodore computers and since no one brought it up I thought I'd mention that they and the C64 are back at www.commodoreusa.net/
moritz maybe write a function perl6ize_hash or so
pmichaud not sure it needs a separate function 15:27
also, the Env hash and Config hash are subtly different in several respects, so not sure that one function would be able to handle both easily 15:28
kboga nom: say $*VM<config><osname>.WHAT
p6eval nom: OUTPUT«Str()␤»
moritz loks right-ish
pmichaud nom: say nqp::atkey(%*VM<config>, 'osname').WHAT
JimmyZ nom: say $*VM<config><osname>; say $*VM<config><osver>;
p6eval nom: OUTPUT«Method 'at_key' not found for invocant of class 'Failure'␤current instr.: 'postcircumfix:<{ }>' pc 510376 (src/gen/CORE.setting.pir:0) (src/gen/CORE.setting:625)␤» 15:29
nom: OUTPUT«linux␤Any()␤»
15:29 wamba left
pmichaud looks wrongish 15:29
jnthn nom: say nqp::atkey($*VM<config>, 'osname').WHAT
p6eval nom: OUTPUT«get_pmc_keyed_str() not implemented in class 'Hash'␤current instr.: '_block1002' pc 104 ((file unknown):68264786) (/tmp/lTNcwJ_a0K:1)␤»
pmichaud oh, wait.
moritz aren't int/str/num also marshalled automagically? 15:30
jnthn pmichaud: Note that method call return values get perl6ized.
pmichaud: .at_key is a method call
So it "works" :)
pmichaud jnthn: right, that was going to be my next point
the problem is that we can't be certain all accesses will go through .at_key
jnthn Yeah
pmichaud and I'd prefer not to perl6ize on every access 15:31
jnthn yeah, same 15:32
pmichaud otoh, access to the config hash is rare enough that perhaps perl6ize on access isn't a big issue. (more)
kboga oh, i see now.
pmichaud so, to me, it depends on how strict we want to be about not letting Parrot objects into the Rakudo ecosystem, versus the startup cost of establishing %*VM 15:33
(although perhaps it could be made lazy somehow)
15:33 Tanktalus left
moritz isn't it lazy already? :-) 15:33
pmichaud moritz: nope, happens every time the core setting is loaded. :) 15:34
jnthn Well, in the Awesome Future we can do the work in a BEGIN block in the setting and have it magically serialized. :) 15:35
pmichaud huh?
%*VM is runtime values
jnthn ...what, I thought Parrot's config was fixed at compile time? 15:36
JimmyZ I think it's compile time
pmichaud what about bytecode produced by one Parrot and run by another?
jnthn Hm, true. 15:37
pmichaud or is that not even possible anymore?
jnthn Dunno
I mostly prefer to see bytecode as cache these days.
15:37 ron__ left
JimmyZ parrot doesn't know runtime OS, iirc 15:37
jnthn Thing is that you end up linking against the setting. 15:38
And thus you link against a certain version of the setting.
pmichaud beyond that, I suspect that other VM's might have dynamic information in their config
even if Parrot doesn't.
moritz nom: say %*ENV<HOME>
jnthn True.
p6eval nom: OUTPUT«/home/p6eval␤»
15:41 soh_cah_toa joined 15:45 mberends joined
mberends good *, 6folk! Been working offline on 6model/c :-) 15:46
takadonet mberends: sweet
15:46 mj41_nb left
JimmyZ 6model on C ? 15:47
jnthn mberends: nice :)
mberends: How goes it?
mberends yes, a bit like 6model/java. It's a long haul, don't hold your breath for results yet. 15:48
15:48 soh_cah_toa left
mberends it goes well, I have conceptually sorted out memory management and am now working on threads 15:48
JimmyZ threads? that's a great feature 15:49
15:50 birdwindupbird left
mberends all the work so far has been on bottom-up foundations, and the challenge is to ensure that it works on most of the popular C platforms. 15:51
jnthn Awesome.
eiro a documentation about binding C/C++ libs in perl6 ?
mberends I'm testing it on Linux/gcc, Win32/msvc and Win32/Mingw
eiro i think it's more parrot centric ? 15:52
mberends eiro: yes. github.com/jnthn/zavolaj
any C library you write yourself, you can bind. Other libs, ymmv :-/ 15:53
eiro thanks
15:54 JimmyZ left
eiro mberends, i see you're the author: i know where to ask if i need help :) 15:59
16:00 odoacre left, thou left 16:01 soh_cah_toa joined
mberends eiro: jnthn++ is of course the author of the foundation, I wrote most of the tests and examples, which I therefore recommend ;-) 16:01
pmichaud gist.github.com/1111820 # draft announcement for 2011.07 star release, comments welcome (especially on the first few paragraphs, which describe the upcoming plan)
16:03 ab5tract left
pmichaud actually, look at pmichaud.com/sandbox/2011.07 instead, so that you can see the latest updates as they're made :) 16:03
moritz +1
pmichaud: should I create a new "Using Perl 6" .pdf?
colomon pmichaud: * 10%-30% improvement in compile and execution speed
* Improved compile and execution speeof 10%-30%
16:04 jjore left
moritz pmichaud: I think I have some markup fixes 16:04
16:04 jjore_ joined
pmichaud moritz: that would be awesome 16:04
colomon I know it's good news, but I don't think it needs to be said twice in a row. :)
pmichaud colomon: yes, I forgot to delete the old bullet after rewording. thanks.
eiro oh! it's a wrapper on FFI :)
jnthn For nom we should sya it like, 10 times :P
pmichaud reload with a couple of fixes 16:05
eiro jnthn++ mberends++ perl6dev++ : it looks simple to use!
jnthn pmichaud: Maybe worth defining nom
("New Object Model") 16:06
:)
16:06 cognominal_ left, cognominal_ joined
pmichaud jnthn: added 16:06
moritz pmichaud: moritz.faui2k3.org/tmp/UsingPerl6.a4.pdf 16:07
jnthn "will have some backward-incompatibility"
Sounds a bit off
moritz also with s/a4/letter/
16:07 jerome left
jnthn "will not be backward compatible in some areas" maybe 16:07
16:08 s1n left
pmichaud changed to " but also 16:08
will not be 100% backwards-compatible due to"
sjn pmichaud: "Improved compile and execution speeof 10%-30%" 16:09
also, some capitalization inconsistencies :) 16:10
16:11 mls left
moritz -> commute 16:12
mberends .«nom 16:13
dalek kudo/nom: 00ad1de | moritz++ | src/core/Hash.pm:
implement basic Hash.delete
kudo/nom: 6eabc3a | moritz++ | src/core/Str.pm:
remove workaround, now that we have Hash.delete
pmichaud moritz: there should be a nqp::deletekey 16:14
(instead of pir::delete) 16:15
s/should be/is/
sjn: updated
16:16 donri joined 16:17 Holy_Cow joined
sjn pmichaud: new url? 16:17
pmichaud www.pmichaud.com/sandbox/2011.07 16:18
16:20 Holy_Cow left 16:21 MayDaniel joined 16:22 bluescreen10 left 16:25 mj41_nb joined 16:27 MayDaniel left 16:28 envi left
colomon moritz: S03-smartmatch/array-array.rakudo aborted 36 test(s) -- are you seeing this one? 16:29
16:30 soh_cah_toa left
colomon oh, ugh, ran through when I ran it alone. :( 16:35
pmichaud colomon: I've had that happen on a couple of tests too. 16:36
I wonder if the "sometimes fails under 'make'" effects we've seen in Parrot tests are coming through in Rakudo tests now. :(
colomon wandering seg fault?
I'm also seeing "non-zero exit status" errors on things that appear to work otherwise. 16:37
TimToady pmichaud: I wonder if it would be worth mentioning the features matrix 16:38
pmichaud TimToady: oooh, good thought
it definitely deserves a post of its own on rakudo.org
but makes sense for the announcement to mention it also
one difficulty is that I expect the column labels will have to change soon 16:39
because "Rakudo master" will soon no longer be "Rakudo master"
jnthn colomon: I get loads of non-zero exit statuses here. Always have. 16:40
pmichaud perhaps "Rakudo master" should really say "Rakudo 2011.07"
colomon jnthn: me too, which is why I usually use tools/test_summary.pl (which seems to ignore them) instead of make spectest. I was just hoping things had changed, what with nom, moritz++'s clean spectest run, and all. 16:41
pmichaud I can either refer to the current master branch as "Rakudo ng" or as "Rakudo 2011.07". Opinions? 16:42
jnthn ng makes more sense to me...
TimToady we use 2011.7 form on RC usually
jnthn Though hm
It's not "next generation" any more
It's more lg :)
TimToady ng == No Good :) 16:43
pmichaud I'm leaning towards 2011.07, myself.
jnthn :P
pmichaud ng is Good. nom is Better.
(still working on "Best")
TimToady because it doesn't implement NFG :)
16:43 soh_cah_toa joined
jnthn Once nom is ubiquitous, multiple Rakudo columns are probably redundant. 16:43
Particularly when nom does a superset of the things master does.
Which is probably not far off. 16:44
pmichaud yes, I expect that 2011.07 will disappear soonish
moritz colomon: array-array.rakudo works here - is your test failure reproducible?
pmichaud probably not before 2011.10, but shortly thereafter
jnthn pmichaud: OK, then I'm not so opinionated about the label :)
colomon moritz: not with my first couple of tries at reproducing it. :(
moritz colomon: there are still intermittent segfaults in nom, it seems 16:45
16:45 pernatiy left
dalek atures: 7cff54f | pmichaud++ | features.json:
Rename "Rakudo/master" as "Rakudo 2011.07".
16:45
jnthn TimToady: Guess NFG will need attacking in the not too distant future. 16:46
pmichaud jnthn: I've been thinking we can do a little of that in nom
jnthn I'm probably willing to look at that, though not in the next couple of months.
moritz colomon: yesterday I golfed a segfault in assign.t for jnthn++ - I hope he can track it down eventually
jnthn pmichaud: Oh?
moritz: From my initial look in the debugger, I think the fix you did in NQP this morning may have helped. 16:47
pmichaud jnthn: yes, I need to look at the details more. but it helps a bunch that the new regex engine is less dependent on Parrot's STRING implementation
16:47 rdesfo joined
dalek atures: 66ab05f | larry++ | features.json:
add NFG entry
16:47
moritz jnthn: then I need to find a new segfault for you 16:48
pmichaud qregex tends to think of "strings" as arrays of integers instead of chars
jnthn moritz: :P
pmichaud: That sounds closer to what NFG wants. :)
moritz: Did you bump NQP_REVISION?
moritz jnthn: yes
jnthn moritz: Building latest and checking. 16:49
Seems my @other-task are sufficiently done for today :)
pmichaud afk, lunch 16:51
dalek ar: 39f0b00 | pmichaud++ | skel/docs/UsingPerl6-draft.pdf:
Update UsingPerl6-draft.pdf .
ar: c060cfc | pmichaud++ | skel/docs/announce/2011.07:
Add draft 2011.07 announcement.
ar: f504bbf | pmichaud++ | Makefile:
Initial Makefile updates for 2011.07 release.
16:51 soh_cah_toa left 16:52 awoodland left 16:53 dakkar left 16:56 soh_cah_toa joined
PerlJam prepares for a storm 16:57
16:57 wtw left
pmichaud PerlJam: yeah, hope Don's visit isn't too violent :) 16:58
[Coke] storms for a... I got nothing.
pmichaud PerlJam: any chance you could angle it a bit more northward? ;-) 16:59
PerlJam to houston? :)
pmichaud well, so that it reaches Plano.
I don't mind if it's a curving trajectory.
PerlJam If it swings too far north I don't think we'll get enough rain in our watershed. 17:00
pmichaud In fact, when the storm hits Friday night, go outside and blow in a northeasterly direction. That might be enough to turn it towards us. :-)
or set a bunch of fans to point to the northeast :)
PerlJam I still think its ridiculous that the campus is closing today 17:01
pmichaud are there classes going on?
PerlJam yes.
pmichaud hmmm
canceling classes probably makes sense. what time does campus close today?
PerlJam 5pm like normal. Won't be open tomorrow 17:02
pmichaud oh, I think that's reasonable.
17:02 stephanepayrard_ joined
pmichaud so really the campus is just closed tomorrow 17:02
PerlJam yeah, except we're supposed to follow the hurricane preparedness stuff, so it's virtually closed today (people aren't going to be able to get a lot of work done while moving equipment around) 17:03
pmichaud if nothing else, it's a good drill.
PerlJam that's what I keep telling myself
pmichaud nice to be able to go through it and (1) have it actually mean something and (2) without actually being a hurricane (yet) 17:04
PerlJam pmichaud: *and* this time I'm more in the adminisphere than ever before so my total involvement it to tell other people "make it so" and to only move my own machine.
17:05 thou joined
[Coke] is nom going to make it easier to split up the setting? 17:05
17:05 cognominal_ left
[Coke] (and or is there anything I can do to help on that? it's soooo slow. :( 17:05
pmichaud [Coke]: perhaps... but I'm not sure that splitting up the setting is on our radar.
it should be tons faster when I finish the new regex stuff (eta... today unless I get distracted)
[Coke] oh, I can happily wait until today. ;) 17:06
pmichaud well, it may be tomorrow at the rate things are going here.
[Coke] NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ok.
PerlJam Doesn't nom include serialization stuff? That should help with splitting the setting.
pmichaud the primary issue is getting the lexical scope correct
jnthn moritz: Hm. That example yesterday that segv'd no longer does. 17:07
Splitting the setting would just be hiding the real problem.
Plus a bunch of effort.
I'm not really sure how to sanely go about it.
pmichaud jnthn: could it be done via a bunch of 'use' statements with precompiled .pbcs? 17:08
17:08 embed joined
pmichaud anyway, the setting is 5K lines long.... we definitely need to get ourselves to a point where compiling a 5k-line script isn't painful. 17:09
if we can't do that... well, there's little point in much of this. :)
[Coke] right, just trying to find a local minimum of pain in the meantime. 17:10
pmichaud we'll see what the regex engine improvements hand us.
PerlJam just use niecza ;>
[Coke] something that might help is docs on how to prototype something outside of the setting.
but after the regex stuff hits. ;)
pmichaud prototyping stuff outside of setting is much easier if 'augment' works :)
17:11 wamba joined
pmichaud if you're just creating a new class or function, prototyping outside of setting is trivial. 17:11
PerlJam pmichaud: what are the regex improvements?
all speed hacks like ltm?
pmichaud PerlJam: well, qregex is a lot better about avoiding creation of gcables and probably reduces method calls by 75%
[Coke] misread that as "where are..." like PerlJam was getting antsy.
qriky! 17:12
pmichaud so, I'm expecting 75% fewer method calls, and 80% fewer gcables. Might be even more.
jnthn That's gotta help.
PerlJam [Coke]: I'm infinitely patient with rakudo right now as I have nothing that depends on it nor any expectations of cool new features :)
pmichaud then, we'll also have LTM via parallel NFA which hopefully means we'll be able to prune a lot of the false parse paths much earlier 17:13
so, I'm expecting at least a 2x-3x parsing improvement. It wouldn't surprise me if we get 10x. 17:14
[Coke] if it's 10x I'll buy you a six pack. ;) 17:16
pmichaud well, at the 10x level I think we start to run into the PAST generation as the bottleneck instead of pure parsing 17:17
but yes, 10x would be awesome.
17:17 masak joined
masak oh hai, #perl6 17:17
pmichaud really afk lunch this time... bbiah 17:18
[Coke] S04-exception-handlers/catch.t seems to chew up a LOT of memory on nom. up to 6.3G resident now.
(almost no cpu, but memory keeps ^^) 17:20
jnthn o/ masak
[Coke]: CATCH is kinda busted still
[Coke] k. I just always trip on that when doing my "are things still failing as I think they are" updates. 17:22
no worries.
17:23 Chillance joined
moritz [Coke]: I recommend ulimit 17:24
17:25 embed left
PerlJam ulimit++ 17:28
moritz jnthn: fwiw the segfaulting snipped I golfed down yesterday still segfaults for me today
17:28 bluescreen10 joined
jnthn aww 17:31
moritz: Not here with latest. Hm. 17:32
moritz: It is gist.github.com/1109277 that you're referring to? 17:33
(just checking :_))
moritz yes 17:37
jnthn OK. I'll try it now and then and hope it reappears. 17:38
17:39 [particle] left
moritz nom: my @p; { my $x; @p = $x ^^= 42, 43; $x ^^= 15; } 17:40
p6eval nom: OUTPUT«Segmentation fault␤»
moritz jnthn: shorter, and reliable here too
nom: my $x; $x ^^= 42; $x ^^= 15 17:45
p6eval nom: OUTPUT«Segmentation fault␤»
moritz even shorter
17:45 espadrine joined
moritz nom: my $x; $x ^^= 42; pir::say($x) $x ^^= 15 17:46
p6eval nom: OUTPUT«Confused at line 1, near "pir::say($"␤current instr.: 'nqp;HLL;Grammar;panic' pc 23611 (src/stage2/gen/NQPHLL.pir:6348) (src/stage2/gen/NQPHLL.pm:329)␤»
moritz nom: my $x; $x ^^= 42; pir::say($x); $x ^^= 15
p6eval nom: OUTPUT«42␤Segmentation fault␤»
[Coke] moritz: which ulimit flag to use? -m doesn't seem to have an effect.
moritz [Coke]: -v (virtual) 17:47
17:47 rdesfo left, risou is now known as risou_awy
[Coke] hurm. -m seems to restrict -v also. perhaps I have an order of magnitude problem. 17:49
virtual memory (kbytes, -v) 1000000 17:50
that's a gig or close enough, still going out in the weeds.
ah well.
moritz a gig ulimit -v works well here 17:51
nom: say log10(1000000)
p6eval nom: OUTPUT«6␤»
17:51 [particle] joined 17:52 jan333 joined
jan333 perl6: say 3; 17:55
p6eval pugs, rakudo 922500, niecza v8-3-g838bc38: OUTPUT«3␤»
masak Pugs, Rakudo and Niecza greet you :)
17:57 jan333 left 17:58 impious joined
jnthn moritz: Thanks, segv here too 17:59
18:01 Kivutarrr joined
[Coke] nom: my @foo = 1,2; say @foo Z @foo; 18:02
p6eval nom: OUTPUT«1 1 2 2␤»
[Coke] nom: my @foo = 1,2; @foo = @foo Z @foo; @foo.perl.say 18:03
p6eval nom: OUTPUT«splice() not implemented in class 'Mu'␤current instr.: '_block14081' pc 537584 (src/gen/CORE.setting.pir:146678) (src/gen/CORE.setting:2614)␤»
masak nice!
18:03 soh_cah_toa left
masak nom: my @foo = 1, 2; @foo = @foo Z @foo; say "alive" 18:03
p6eval nom: OUTPUT«splice() not implemented in class 'Mu'␤current instr.: '_block14081' pc 537584 (src/gen/CORE.setting.pir:146678) (src/gen/CORE.setting:2614)␤»
masak thought so 18:04
18:05 KyleHa joined
jnthn splice? 18:05
18:05 soh_cah_toa joined
masak jnthn: it's used for cutting and pasting arrays. see 'perldoc -f splice'. 18:05
:P
see? *this* is what it would be like to have an infobot on the channel. all the time. :) 18:06
jnthn masak: Yeah, I wondered where it was used, but guess Z uses it :P
masak jnthn: that's a safe bet. notice that it only occurs in conjunction with infix:<=>, though. 18:07
18:07 Kivutarrr left
jnthn Yeah, that made me curious too 18:07
18:08 benabik joined 18:09 kboga left
jnthn nom: enum Foo <Bar Baz>; say Baz.Numeric; say +Baz 18:09
p6eval nom: OUTPUT«1␤Foo::Baz␤»
jnthn huh...prefix:<+> doesn't call Numeric?
ah 18:11
multi prefix:<+>(Numeric \$a) { $a }
KyleHa In Perl 5, prefix:<+> does not numify.
masak I do not like all these new backslashes in core code signatures :/
jnthn That's probably optimalish but OTOH Baz ~~ Numeric
masak KyleHa: in Perl 6, it does.
jnthn: why does Baz ~~ Numeric? 18:12
18:12 mj41_nb left
jnthn masak: Because it's an Int really 18:12
masak thought it was an Enum
jnthn (yes, spec says so) 18:13
No.
Spec doesn't say that.
masak ok.
then, if there are things that are Ints really but can still be further numified, maybe the prefix:<+> need to be changed. :)
jnthn Guess we could add a candidate for NumericEnumeration too but I fear it'd be a tied dispatch with Numeric. 18:14
masak nod
PerlJam KyleHa: moving between perl 6 and perl 5, prefix:<+> nummification is the thing that most trips me up
(I keep expecting it to work, but it doesn't) 18:15
masak PerlJam: interesting. I don't have that at all. not one bit. for me, it's various parentheses and sigil variance. 18:16
benabik PerlJam: In P5 it can be spelled -+-
flussence that's... argh.
benabik PerlJam: Or 0+
masak or - - I guess 18:17
KyleHa I usually spell it 0+
jnthn nom: say 1 <=> 2 18:18
p6eval nom: OUTPUT«-1␤»
PerlJam masak: I've adequately compartmentalized those things that I know when to use (or not to use) them. But for some reason I'm always using +@foo in perl5
though ... I guess the required parens on given/when always trip me up too 18:19
masak PerlJam: I've compartmentalized those things too. it's just when I'm tired or inattentive that they show up again. 18:20
KyleHa I'm nearly always tired or inattentive. 18:21
masak PerlJam: for me it's parens on if, for, while (etc), the strange rules with print() and print (), and the seemingly necessary parens around something like (subcall())[$index]
around 'subcall()', that is.
PerlJam you're just more of a Perl 6 programmer than I am. 18:22
18:22 jferrero left
PerlJam I still think primarily in Perl 5 terms, so all of those things seem "natural" 18:22
masak the former two categories trip me up when I don't think about it.
the last on trips me up because "hey, this oughta work", but then it doesn't :) 18:23
why can't I do subcall()[$index] ? please, tell me.
even $array[$i1][$i2] works in Perl 5. 18:24
PerlJam because lists are second-class citizens in Perl 5 18:26
masak o.O
sjohnson (=゚ω゚=) 18:30
[Coke] nom: o.O 18:31
p6eval nom: OUTPUT«Could not find sub &o␤current instr.: '_block1002' pc 70 ((file unknown):21937811) (/tmp/RoG2K8mjLS:1)␤»
18:32 Kivutarrr joined
moritz masak: parsing issue 18:34
masak well, yeah. 18:35
moritz (subcall)[1] works
masak as I said.
(modulo the () after 'subcall')
subcall[1] doesn't work.
18:38 mls joined
mls The STORE method of Hash.pm contains: "for $x.list { self.STORE_AT_KEY(.key.Str, lvaue) }" 18:39
lvaue doesn't seem correct, should that be .value?
masak yeah. 18:40
lvaue is a call to a non-existent subroutine.
pmichaud back from lunch
18:41 tokuhir__ joined
dalek kudo/nom: 56e2229 | jonathan++ | src/core/traits.pm:
Make $x is readonly work on parameters.
18:41
kudo/nom: 49ede3c | jonathan++ | src/binder/multidispatch.c:
Missing decontainerize in junctional argument check in the multi-dispatcher. Gets us further with the junction tests.
kudo/nom: 1aa1163 | jonathan++ | src/core/Numeric.pm:
Remove an optimization that busts +SomeEnumValue.
mls Oddly enough, fixing the type also fixes the assigning-refs.t wants 34740112 arguments bug 18:43
s/type/typo
tadzik has fixed his laptop o/
I'll never laugh about duct tape again
masak good. duck tape is serious business. :)
duct*
mls because there's no longer an exception thrown in the try {} block 18:44
moritz duck typing tape
mls I still have no clue why the exception breaks things, though 18:45
dalek kudo/nom: b420e0d | moritz++ | src/core/Hash.pm:
fix typo in Hash.pm, mls++
18:47
moritz ok, as a result I get a test failure in assigning-ref.rakudo 18:51
but since it's similar to two other already fudged tests, I'm happy to fudge it out
dalek ast: 0b33da3 | moritz++ | S02-builtin_data_types/assigning-refs.t:
rakudo fudge in assigning-refs.t
18:52
18:53 mls left
jnthn mls++ :) 18:53
KyleHa How do I test whether every element in @unique_sorted is in @unsorted_stuff ? I thought @unsorted_stuff ~~ all(@unique_sorted), but it turns up false when I want true. 18:59
moritz all(@unsorted_stuff) ~~ all(@unique_sorted) 19:00
iirc
KyleHa It seems no. I guess I'll do it the hard way. 19:01
masak moritz: no, that would test all against all.
would only be true if they were two arrays of just the same elem. 19:02
flussence KyleHa: by defining an infix:<⊂>? :)
masak it is defined.
well, kinda.
19:02 simcop2387 left
masak (<) is. 19:02
in core/Set.pm
moritz right, all(@a) ~~ any(@b)
masak right.
flussence rakudo: multi sub infix:<⊂>(@a, @b) { all(@a) ~~ any(@b) }; say 2..5 ⊂ 1..40 19:04
p6eval rakudo 922500: OUTPUT«No applicable candidates found to dispatch to for 'infix:<⊂>'. Available candidates are:␤:(@a, @b)␤␤ in main program body at line 22:/tmp/Yj91p0hO73␤»
KyleHa I think @unsorted_stuff.sort.uniq ~~ @sorted_unique 19:05
flussence oh right, I need @-thingies there.
19:05 birdwindupbird joined
flussence rakudo: multi sub infix:<⊂>(@a, @b) { all(@a) ~~ any(@b) }; my @a = 2..5; my @b = 1..40; say @a ⊂ @b 19:05
p6eval rakudo 922500: OUTPUT«Bool::False␤»
masak rakudo: multi sub infix:<⊂>(@a, @b) { all(@a) ~~ any(@b) }; say (2..5).list ⊂ (1..40).list
p6eval rakudo 922500: OUTPUT«Bool::False␤»
19:06 simcop2387 joined
masak I would expect Bool::True there. 19:06
flussence me too
rakudo: multi sub infix:<⊂>(@a, @b) { all(@a) ~~ any(@b) }; my @a = <2 3 4 5>; my @b = <1 2 3 4 5 6>; say @a ⊂ @b
p6eval rakudo 922500: OUTPUT«Bool::False␤»
flussence huh.
rakudo: multi sub infix:<⊂>(@a, @b) { all(@a) ~~ any(@b) }; my @a = <2 3 4 5>; my @b = <1 2 3 4 5 6>; say all(@a) ~~ any(@b) 19:07
p6eval rakudo 922500: OUTPUT«Bool::False␤»
flussence rakudo: say all(1, 2) ~~ any(1, 2, 3) 19:08
p6eval rakudo 922500: OUTPUT«Bool::False␤»
flussence rakudo: say all(1, 2) ~~ any(1, 2, 3, 1|2)
p6eval rakudo 922500: OUTPUT«Bool::False␤»
flussence rakudo: say all([1, 2] ~~ any(1, 2, 3))
p6eval rakudo 922500: OUTPUT«all(Bool::True)␤» 19:09
flussence rakudo: say all([1, 2, 10] ~~ any(1, 2, 3))
p6eval rakudo 922500: OUTPUT«all(Bool::True)␤»
dalek ast: 13af15f | moritz++ | S02-literals/quoting.t:
fudge quoting.t for rakudo
19:09 lichtkind joined
moritz wow, t/spec/S02-literals/pairs.t is totally busted 19:11
flussence rakudo: say none(any([1, 2, 10]) !~ any(1, 2, 3))
p6eval rakudo 922500: OUTPUT«===SORRY!===␤Unsupported use of !~ to do negated pattern matching; in Perl 6 please use !~~ at line 22, near "any(1, 2, "␤»
flussence
.oO( hm, I think this needs a different approach. )
19:12
masak rakudo: say all(1) ~~ any(1) 19:14
p6eval rakudo 922500: OUTPUT«Bool::True␤»
masak rakudo: say all(1) ~~ any(1, 2)
p6eval rakudo 922500: OUTPUT«Bool::True␤»
jnthn moritz: busted?
masak rakudo: say all(1, 2) ~~ any(1, 2)
p6eval rakudo 922500: OUTPUT«Bool::False␤»
jnthn moritz: Regressed, or we never passed it?
moritz jnthn: the first ~20 tests assume you can pass positionals by name 19:15
jnthn ah
hm
May have to shuffle some operators around in the setting
(Ones that want enum Order) 19:16
masak ah. all(1, 2) ~~ any(1, 2) doesn't work, because it's parsed as 1&2 ~~ 1 || 1&2 ~~ 2, not 1 ~~ 1|2 && 2 ~~ 1|2
rakudo: say not none(1, 2) ~~ any(1, 2, 3)
p6eval rakudo 922500: OUTPUT«Bool::False␤»
masak dang :) 19:17
jnthn Numeric.pm is too early to use an enum in the setting, it seems.
The joys of bootstrapping.
Guess this tells us Bool's change of becoming an enum very soon.
masak rakudo: say [and] ($_ ~~ any(1..40) for 2..5) 19:18
p6eval rakudo 922500: OUTPUT«Bool::True␤»
masak \o/
jnthn suspects it can't be one. enums are too complex for something so low level.
masak isn't Bool already an enum in Niecza?
jnthn masak: Dunno. 19:19
niecza: BEGIN { say "ok" }; blah$%59fna93!!!syntax error 19:20
p6eval niecza v8-3-g838bc38: OUTPUT«===SORRY!===␤␤Confused at /tmp/ILn7_cEe6q line 1:␤------> BEGIN { say "ok" }; blah⏏$%59fna93!!!syntax error␤␤Undeclared routine:␤ 'blah' used at line 1␤␤Parse failed␤␤»
jnthn nom: BEGIN { say "ok" }; blah$%59fna93!!!syntax error
p6eval nom: OUTPUT«ok␤Confused at line 1, near "blah$%59fn"␤current instr.: 'nqp;HLL;Grammar;panic' pc 23611 (src/stage2/gen/NQPHLL.pir:6348) (src/stage2/gen/NQPHLL.pm:329)␤»
jnthn Yeah, Niecza doesn't (yet) seem to have to deal with begin time in the same way nom does. 19:21
We could get away with more in master by not doing so also.
masak jnthn: does what you said earlier imply that Bool::True ~~ Int ? :/
jnthn masak: Only if Bool is an enum, which is something that more people than just me are not convinced of. 19:22
masak: And even then it could define a different base type.
masak S12:1959: our enum Bool does Boolean <False True>;
not sure what that implies about Int-ness. 19:23
19:23 daxim left
jnthn That'd imply Int-ness. 19:23
masak hm.
jnthn look for 19:24
Fri ~~ Int # True, because derived from Int
It's fine that enum elements are their base type.
It's maybe not fine that Bool ~~ Int though.
But it's maybe also not fine that implementors have their hands tied so much about how they implement something so primitive as booleans.
19:25 cryptographrix joined
masak I wouldn't know -- I haven't tried implementing Bool as an enum. 19:25
moritz would it turn to not have Bool an enum, but provide all the methods that enums have?
19:25 cryptographrix left
moritz s/turn/hurt/ 19:25
masak not if you ask me. 19:26
jnthn moritz: If done late enough, the enum-ish roles could also be included.
oh heh
That'd be a backdoor way to do it :)
masak sure, why not?
jnthn Well, maybe there's a sane way to chop this one up with the circularity saw. It just lookes painful.
masak: It'd not have EnumHOW as its HOW then I guess... 19:27
oh
moritz nom: say (package => 1).key
p6eval nom: OUTPUT«Malformed $*PKGDECL at line 1, near "=> 1).key"␤current instr.: 'nqp;HLL;Grammar;panic' pc 23611 (src/stage2/gen/NQPHLL.pir:6348) (src/stage2/gen/NQPHLL.pm:329)␤»
jnthn no, we can'd do that.
masak awww
jnthn Because we have to instantaite bool
*Bool
masak right.
jnthn Before we'd get to add the roles
Which contain attributes.
masak jnthn: if you could *show* that this is somehow impossible...
jnthn masak: Impossible may be a little strong. Painful may be easier. :) 19:28
masak: I can just see it being painful for every implementor, that's all.
And I'm not sure what users win from Bool being an enum.
pmichaud I don't think that Bool ~~ Int 19:31
sorear fwiw, niecza doesn't have anything like an 'EnumHOW'
in niecza, enums are desugared to classes almost immediately
pmichaud many years ago, TimToady++ once said on the mailing list that Bool was more like a bit1
or int1
masak pmichaud: int1, the 0 or -1 one? :P
pmichaud masak: yes. :-) 19:32
masak pmichaud: that'd screw up ++ and -- :)
jnthn Note that int1 ~~ Int.
pmichaud well, Bool.succ and Bool.pred are specially defined anyway
masak heh :)
sorear -1 to non-transitive ~~
jnthn nom: say int ~~ Int
p6eval nom: OUTPUT«Bool::False␤»
jnthn huh.
masak sorear: agreed.
jnthn nom: say int.isa(Int) 19:33
p6eval nom: OUTPUT«No method cache and no find_method method in meta-object␤current instr.: '_block1002' pc 77 ((file unknown):523) (/tmp/YnvTELM2qh:1)␤»
jnthn Oh.
pmichaud in some ways, Bool ~~ Int implies some level of surprise.
sub xyz(Int $x) { ... }; say xyz(Bool::True);
dalek kudo/nom: 19c000b | moritz++ | t/spectest.data:
run two more test files
jnthn pmichaud: Yeah, I don't like that either.
pmichaud thus far I think I'm firmly in the camp of "Bool is not an enum" 19:34
what are the reasons for having it be an enum, ooc?
sorear I'm not firmly in any camp, but I like having the enum tools
Bool("True") is awesome 19:35
19:37 cryptographrix joined 19:38 Tedd1 joined
flussence rakudo: my @a = a => 1, b => 2; say @a.perl; say @a.hash.perl; say @a.perl; 19:38
p6eval rakudo 922500: OUTPUT«["a" => 1, "b" => 2]␤{"a" => 1, "b" => 2}␤[]␤»
flussence ^
19:38 birdwindupbird left
flussence @a.hash is eating @a... 19:39
pmichaud nom: my @a = a => 1, b => 2; say @a.perl; say @a.hash.perl; say @a.perl;
p6eval nom: OUTPUT«Array.new("a" => 1, "b" => 2)␤("a" => 1, "b" => 2).hash␤Array.new()␤»
masak I'm firmly in the "Bool is an enum". because it has all the characteristics of one. 19:40
sorear masak: the issue at stake is "Bool ~~ Int"
masak yes, I see that. I raised that issue.
pmichaud well, and some circularity sawing.
sorear pm likes strong typing and wants to make 1 + (3 > 2) die
pmichaud not at all 19:41
there can still be a Bool.Numeric
masak sure.
pmichaud what I said above doesn't say anything about 1 + (3 > 2) dying
masak sorear likes hyperbole and wants to put words in people's mouths :P 19:42
pmichaud I've noticed. :)
19:42 bluescreen10 left
pmichaud in fact, I snapped a photo of it this last weekend while in philadelphia 19:42
masak a photo of a hyperbole? :D
pmichaud picapicasaweb.google.com/lh/photo/uPbe...directlink 19:43
er
picasaweb.google.com/lh/photo/uPbe...directlink
masak :) 19:44
19:46 kaare_ left
masak submits the @a.hash eats @a bug above 19:46
19:47 nebuchadnezzar left
moritz nom: my @a = <bacon bacon>; @a.hash; say @a 19:47
p6eval nom: OUTPUT«␤» 19:48
moritz anti-double-bacon bug!
pmichaud fix coming
jnthn If only tadzik had done both... :)
19:48 maja joined
pmichaud wonders when we get to the double-bacon-lol-cheezburger bug. 19:49
masak any day now.
and then we can cool off with a hot snowman-comet bug. 19:50
19:50 maja left
sorear is stunned by this accusation 19:51
masak sorear: sometimes it's hard to know how seriously you take things, or mean things.
partly due to the textual format, of course. partly because we haven't met AFK. 19:52
tadzik oh :) 19:53
flussence rakudo: my @a = [1,2,3], 1..3; say @a.perl 19:54
p6eval rakudo 922500: OUTPUT«[[1, 2, 3], 1, 2, 3]␤»
flussence how do I write that so +@a == 2?
pmichaud > my @a = a => 1, b => 2; say @a.perl; say @a.hash.perl; say @a.perl
Array.new("a" => 1, "b" => 2)
("a" => 1, "b" => 2).hash
Array.new("a" => 1, "b" => 2)
flussence yay 19:55
masak rakudo: my @a = [1, 2, 3], [1..3]; say +@a
p6eval rakudo 922500: OUTPUT«2␤»
flussence oh, that makes sense :)
moritz rakudo: my @a = [1, 2, 3], my $ = 1..3; say @a[1].WHAT
p6eval rakudo 922500: OUTPUT«Cannot modify readonly value␤ in '&infix:<=>' at line 1:src/metamodel/RoleToInstanceApplier.nqp␤ in main program body at line 1:src/metamodel/RoleToInstanceApplier.nqp␤»
moritz rakudo: my @a = [1, 2, 3], my $ = (1..3); say @a[1].WHAT
p6eval rakudo 922500: OUTPUT«Cannot modify readonly value␤ in '&infix:<=>' at line 1:src/metamodel/RoleToInstanceApplier.nqp␤ in main program body at line 1:src/metamodel/RoleToInstanceApplier.nqp␤»
19:56 shinobicl joined
moritz nom: my @a = [1, 2, 3], my $ = (1..3); say @a[1].WHAT 19:56
p6eval nom: OUTPUT«Int()␤»
moritz nom: my @a = [1, 2, 3], my $ = (1..3); say @a.perl
p6eval nom: OUTPUT«Array.new(1, 2)␤»
moritz wtf?
nom: my @a = [1, 2, 3], (my $ = (1..3)); say @a.perl 19:57
p6eval nom: OUTPUT«Array.new([1, 2, 3], 1..3)␤»
pmichaud precedence, likely.
moritz right
that's what I wanted to do
nom: my @a = [1, 2, 3], (my $ = (1..3)); say @a[1].WHAT
p6eval nom: OUTPUT«Range()␤»
moritz that way you can preserve the ranginess
19:57 bluescreen10 joined
pmichaud nom: my @a = [1,2,3], $(1..3); say @a[1].WHAT 19:57
p6eval nom: OUTPUT«Range()␤»
pmichaud easier.
moritz nom: my @a = [1, 2, 3], (my $ = (1..3)); say eval(@a.perl).perl 19:58
19:58 shinobicl_ joined
p6eval nom: OUTPUT«Array.new([1, 2, 3], 1, 2, 3)␤» 19:58
moritz bug?
shinobicl_ i just installed rakudo from git. but when i run perl6 from other place than $HOME/rakudo, it gives the error : PARROT VM: Could not load bytecode Could not load oplib `perl6_ops'
moritz shinobicl_: did you 'make install'?
tadzik did you 'make install'?
shinobicl_ i have $HOME/rakudo in my $PATH
moritz nom: say (my @a = (1..3).item).perl 19:59
p6eval nom: OUTPUT«Array.new(1..3)␤»
masak shinobicl_: did you 'make install'?
shinobicl_ oops.. that fixes it, sorry... and thanks :)
tadzik ok, since there's a crowd...
19:59 nebuchadnezzar joined
pmichaud moritz: yes, looks like some sort of bug. 20:00
tadzik so, any further comments on irclog.perlgeek.de/perl6/2011-07-28#i_4180407 maybe?
20:00 shinobicl left
tadzik (up to 13:27) 20:00
dalek kudo/nom: 118befb | pmichaud++ | src/core/Hash.pm:
Make sure that Hash.STORE doesn't consume the thing it's storing.
20:02
20:06 AndroUser2 joined
masak tadzik: I can't extract much from that discussion, sadly. would it be too much to ask for a gist with a clear example or two, highlighting the issue(s)? 20:08
20:09 cryptographrix left
tadzik sure 20:09
yesterday's demo: wklej.org/id/567822/ 20:10
more detailed one coming...
jnthn iiuc, it's about how #= gets associated with the thing it's documenting.
masak yes, I got that bit.
I also understood that it's tricker than I'd thus far assumed :) 20:11
20:11 AndroUser2 left
jnthn has had it in the back of his mind and didn't come up with a clean answer yet. 20:11
Mostly becuase
#= blah blah awesomeness
class Beer {
}
Is another way to do
class Beer {
#= blah blah awesomeness
}
Or something
masak hm.
jnthn Or certainly it's true that 20:12
#= oh lol
20:12 pernatiy joined
jnthn has $!clown; 20:12
20:12 araujo left
jnthn is possible as well as 20:12
has $!clown; #= oh lol
pmichaud I thought we had discussed the possibility of having specialized markers to indicate whether the comment was for the declaration before or the declaration after
masak would it help if we spec'd the splitting-up of those two into two different "twigils" right away?
pmichaud: right.
jnthn masak: Yes
masak we certainly concluded that that would be better. 20:13
jnthn #< document that thingy
#\/ document that thingy
:)
masak :P
tadzik gist.github.com/1112434
masak thought it was #^ and #=, but isn't sure
TimToady #> and #< would be symmetrical
pmichaud I'd prefer #> and #<, myself, reserving #= for something else possibly (maybe the dwimmy version when we figure it out) 20:14
TimToady though maybe it'd have to be #v and #<
masak would #< really work? 20:15
what with #< ... >, I mean.
TimToady #`<>
masak oh right.
good call :)
TimToady but it could be confusing
pmichaud #=< and #=> are available 20:16
masak waitwait.
TimToady #∥ and #=
masak before we have this discussion, *again*... :)
pmichaud #=+ and #=- too :)
masak can't we just look at the last time?
we did bikeshed quite thoroughly back then.
pmichaud masak: I'm just waiting for you to locate + post the link
masak oh!
:)
masak locates
TimToady sneaks off to work on his talk again
pmichaud until then, we can fill empty space with more bikeshedding and brainstorming :) 20:17
masak TimToady: good luck! hope to hear a reprise at YAPC::EU! :)
pmichaud (and others): irclog.perlgeek.de/perl6/2010-06-18#i_2453678 20:18
pmichaud nom: say "./perl6".IO.x
p6eval nom: OUTPUT«Bool::True␤»
masak it's nice to have a word-based brain when searching logs :)
20:18 araujo joined
pmichaud looks like previous bikeshedding settled on #| (after) and #= (before) 20:21
i.e., #| documents the next decl, #= documents the previous one 20:22
nom: say "./perl6".IO.d
p6eval nom: OUTPUT«Bool::False␤»
pmichaud nom: say "./perl6".IO ~~ :d
p6eval nom: OUTPUT«Bool::False␤»
pmichaud nom: say "./perl6".IO ~~ :x
p6eval nom: OUTPUT«Bool::True␤»
jnthn nom: say "./".IO.d
p6eval nom: OUTPUT«Bool::True␤»
sorear That is what I remember of the discussion too.
jnthn nom: say "/".IO.d
p6eval nom: OUTPUT«Bool::True␤»
jnthn nom: say "/doesn't-exist".IO.d
p6eval nom: OUTPUT«stat failed: No such file or directory␤current instr.: 'd' pc 558756 (src/gen/CORE.setting.pir:155599) (src/gen/CORE.setting:3854)␤»
pmichaud nom: say "/doesn't-exist".IO.e 20:23
p6eval nom: OUTPUT«Bool::False␤»
pmichaud nom: say "/doesn't-exist".IO.f
p6eval nom: OUTPUT«stat failed: No such file or directory␤current instr.: 'f' pc 558862 (src/gen/CORE.setting.pir:155643) (src/gen/CORE.setting:3862)␤»
pmichaud nom: say "/doesn't-exist".IO.w 20:24
p6eval nom: OUTPUT«Bool::False␤»
pmichaud nom: say "/doesn't-exist".IO.r
p6eval nom: OUTPUT«Bool::False␤»
pmichaud nom: say "/doesn't-exist".IO.s
p6eval nom: OUTPUT«stat failed: No such file or directory␤current instr.: 's' pc 559065 (src/gen/CORE.setting.pir:155699) (src/gen/CORE.setting:3876)␤»
pmichaud (fixing) 20:25
20:31 Vlavv` joined 20:32 uvtc joined 20:33 Vlavv_ left
uvtc Anyone know if there's videos available for any Perl 6 -related OSCON talks? 20:33
pmichaud uvtc: no, I don't know. in the past I don't think any of OSCON's Perl 6 talks have made it to public video 20:34
uvtc On the main oscon page, I clicked on the gray "VIDEOS" link/area at the bottom of the streaming video, and there are some listed. Did not see Damian's there though. 20:35
Thanks for the info, pmichaud. 20:36
Do you know if Larry's SOTO will be available?
sorear TimToady, uvtc wants to know if the SOTO will be available online 20:38
uvtc Wait a sec. Is this the first SOTO in a while? The ones listed at www.perlfoundation.org/perl6/index...._oniononly go until 2007... 20:41
pmichaud there have been soto's every year since 2007
they haven't always been transcribed
uvtc Ah.
pmichaud and the perlfouncation.org page is likely out of date 20:42
[Coke] sighs.
20:42 molaf left
uvtc TimToady: excited about this year's SOTO, but I'm not at OSCON. Hoping it's made available online. 20:44
TimToady dunno, last few years have been more in the category of live demos 20:45
[Coke] STII:: the wrath oscooooooooon.
flussence so, er, I went and wrote «⊂ ⊃ ⊄ ⊅ ⊆ ⊇ ⊈ ⊉» infixes: github.com/flussence/Mathematical-Operators
masak 'night, #perl6ers. 20:46
20:46 shinobicl_ left
flussence o/ 20:46
20:46 masak left
moritz \o 20:46
tadzik flussence: is it already in the ecosystem? 20:47
uvtc TimToady: Thanks. If I don't see it anywhere, will ask around for a summary of it.
jnthn pmichaud: ping
flussence tadzik: I only uploaded it just now so no :)
tadzik very nice :)
20:50 dorlamm joined, Jackneill left
dalek ast: 1395cad | moritz++ | S02-literals/pairs.t:
rewrite pairs.t to conform to current spec
20:51
pmichaud jnthn: pong
(nfa/qregex is going to have to be tomorrow... too many house distractions here today) 20:52
jnthn pmichaud: Seems return 1,2,3; does not yet work - known? 20:53
pmichaud aha! we can solve the debt ceiling by finding a couple of coins in the couches! nymag.com/daily/intel/2011/07/trill...alkin.html 20:54
jnthn pmichaud: Just ran into it after fixing the other reason recurse.t fails.
pmichaud jnthn: in nom?
jnthn pmichaud: aye
pmichaud nom: sub f() { return 1,2,3; }; say f().WHAT 20:55
p6eval nom: OUTPUT«Rebuild in progress␤»
pmichaud nom: sub f() { 1,2,3; }; say f().WHAT
p6eval nom: OUTPUT«Rebuild in progress␤»
pmichaud grr
looking.
jnthn has one in progress too :)
pmichaud yeah, it's a bug in &return 20:56
moritz speaking of bugs...
pmichaud fixing.
jnthn pmichaud: thanks :)
moritz nom: say 42 &[+] 24
p6eval nom: OUTPUT«Rebuild in progress␤»
moritz locally that say all(42, 24)
jnthn rakudo: say 42 &[+] 24
p6eval rakudo 922500: OUTPUT«all(42, 24)␤» 20:57
jnthn ah, not a regression
Just a mis-parse.
pmichaud parse bug
jnthn Yeah, I can see what it's doing.
Not sure if we actually have the stuff to parse &[+] in the grammar though.
moritz doesn't see it 20:58
jnthn Does it always mean infix:<+>?
jnthn has some weird memories of it being fluffier.
moritz if it parses & as an infix, and the [+] as term after it, shouldn't the 24 be TTIAR?
jnthn: I think it's "only the arity-2 candidates of infix:+" or so 20:59
jnthn [+] is being parsed as the reduction operator
pmichaud the [+] is being par.... what jnthn++ said
jnthn And 24 as an argument to that.
moritz ah
jnthn moritz: Only the arity two ones? Whoa. :)
jnthn wonders how to best implement that. 21:00
moritz jnthn: don't take my word for it
dalek ast: 7761c24 | moritz++ | S (2 files):
some nom fudges
21:04
atures: e271948 | larry++ | features.json:
code for multi methods
21:05 dorlamm left
jnthn feels like he returned from vacation but his brane is still somehow on it 21:06
[Coke] jnthn: I think that's how my brain feels all the time now. :P 21:08
jnthn :P
uvtc [Coke]: I find that some vigorous exercise tends to wake my brain up. Trouble is convincing it that the exercise is a good idea. 21:09
dalek kudo/nom: 29058a9 | jonathan++ | src/Perl6/Actions.pm:
&?ROUTINE
kudo/nom: 1c335ac | jonathan++ | src/core/Routine.pm:
Support Routine.assuming as well as master did (some day we may want to do some magic with generating an updated signature and some such, but that's teh tricky).
kudo/nom: 5161c8b | jonathan++ | t/spectest.data:
Two more passing test files.
uvtc When one pushes to github, and dalek tells irc about it, how does it determine which name to use? For example, 21:14
jnthn's github username seems to be jnthn, and his real name is there too, but dalek calls him jonathan (see above). 21:15
tadzik parrot/CREDITS
[Coke] there's a CREDITs file somewhere. 21:16
tadzik++
uvtc Ah, thanks, tadzik. 21:18
21:20 bluescreen10 left 21:23 timbunce left 21:26 [Coke] left, uvtc left 21:27 [Coke] joined
pmichaud the return fix is going to take a bit 21:39
jnthn pmichaud: I glanced at it and thought "hmm, how to efficiently do this" 21:40
pmichaud yeah
jnthn oh
Isn't there a way to get the arguments parcel... 21:41
pmichaud there's a way to get the arguments RPA, yes.
but if it's a single element, you need to unpack it
jnthn ah
pmichaud and if it's zero elements, it needs to be nil
*Nil
jnthn ah, non-trivial. 21:42
pmichaud and I'm looking for a way to do that without copy+paste the code each time, and without incuring an extra function call overhead each time.
jnthn dynop :P
pmichaud yeah, I'm considering that option too.
jnthn (Getting the arguments RPA already is one anyway...)
pmichaud oh, that's true.
would probably want to pass Nil as an operand 21:43
rather than try to look it up
(Nil isn't bootstrapped at the moment, iirc.)
dalek atures: f0652f5 | pmichaud++ | features.json:
Nom has filetest methods.
21:45
21:45 impious left
jnthn Yeah, as an operand is fine. 21:46
dalek ast: 498ffb2 | jonathan++ | S06-routine-modifiers/scoped-named-subs.t:
Bring a test up to latest spec on our names.
21:47 Patterner left
dalek kudo/nom: b0a7bcd | jonathan++ | t/spectest.data:
One more passing test file.
21:48
kudo/nom: d9d0d00 | pmichaud++ | src/core/IO.pm:
Fix filetest operators for non-existent files.
21:48 Psyche^ joined, Psyche^ is now known as Patterner
dalek ast: 02418cf | jonathan++ | S06-multi/syntax.t:
Correct a test that relied on the old Int ~~ Num semantics.
21:51
jnthn std: Multi
p6eval std 516268a: OUTPUT«ok 00:01 118m␤»
21:53 KyleHa left 21:55 Vlavv_ joined 21:58 Vlavv` left 22:01 Kivutarrr left
dalek ast: 340e9d4 | jonathan++ | S06-multi/syntax.t:
A fudge for nom.
22:02
22:03 drbean joined 22:05 shinobicl joined
dalek kudo/nom: c2794a4 | jonathan++ | src/core/Routine.pm:
Routine.candidates
22:05
kudo/nom: 333a91f | jonathan++ | t/spectest.data:
Run S06-multi/syntax.t.
jnthn nom: say NaN ~~ NaN 22:08
p6eval nom: OUTPUT«Bool::False␤»
jnthn perl6: say NaN ~~ NaN
p6eval rakudo 922500: OUTPUT«Bool::True␤»
..pugs: OUTPUT«1␤»
..niecza v8-3-g838bc38: OUTPUT«Bool::False␤»
22:10 shinobicl left
dalek ast: 7d3cc6e | jonathan++ | S06-multi/type-based.t:
A couple of spec updates to S06-multi/syntax.t.
22:12
22:16 shinobicl joined 22:22 kboga joined
shinobicl rakudo: class Thing { has Str $.data is rw = 'no data'; method assign(Str $newdata) {$.data = $newdata}; }; my $T = Thing.new; $T.assign("stuff"); if ($T.data eq 'no data') { say "You have no data yet" } else { say "Your data is $T.data" }; 22:23
p6eval rakudo 922500: OUTPUT«Your data is Thing()<0x427e438>.data␤»
shinobicl rakudo: class Thing { has Str $.data is rw = 'no data'; method assign(Str $newdata) {$.data = $newdata}; }; my $T = Thing.new; if ($T.data eq 'no data') { say "You have no data yet" } else { say "Your data is $T.data" }; 22:24
p6eval rakudo 922500: OUTPUT«You have no data yet␤»
shinobicl how is that i can evaluate $T.data in the 'if' but can't show it as "say $T.data"? 22:25
flussence rakudo: class Thing { has Str $.data is rw = 'no data'; method assign(Str $newdata) {$.data = $newdata}; }; my $T = Thing.new; $T.assign("stuff"); if ($T.data eq 'no data') { say "You have no data yet" } else { say "Your data is {$T.data}" };
p6eval rakudo 922500: OUTPUT«Your data is stuff␤»
dalek ast: 666e44c | jonathan++ | S12-methods/defer-call.t:
Update defer-call.t to match latest proto/multi semantics.
22:26
ast: 266464f | jonathan++ | S12-methods/defer-next.t:
Update defer-next.t to match latest proto/multi semantics.
shinobicl rakudo: class Thing { has Str $.data is rw = 'no data'; method assign(Str $newdata) {$.data = $newdata}; }; my $T = Thing.new; if ($T.data eq 'no data') { say "You have no data yet" } else { say "Your data is " ~ $T.data };
p6eval rakudo 922500: OUTPUT«You have no data yet␤»
shinobicl thanks flussence :) 22:27
dalek kudo/nom: 764d2f9 | jonathan++ | src/core/traits.pm:
A couple more trait handlers (though nothing yet answers them).
22:40
kudo/nom: 075104d | jonathan++ | t/spectest.data:
Two more passing test files.
22:41 jferrero joined
dalek kudo/nom: 9246ce6 | jonathan++ | src/Perl6/Metamodel/BOOTSTRAP.pm:
Add logic to attribute meta-object so it may be explicitly marked readonly, and able to default itself to rw if it wasn't marked readonly.
22:50
kudo/nom: 0ca6dad | jonathan++ | src/Perl6/Metamodel/ (2 files):
Implement rw handling for types in AttributeContainer role; also factor attribute composition into that role to take a little more bulk out of ClassHOW.
kudo/nom: caf5d1a | jonathan++ | t/spectest.data:
Run S12-class/rw.t.
23:11 shinobicl left
lichtkind thou: cheers 23:21
thou hola 23:23
jnthn eek, I just tried to declare a struct element in C with the "has" keyword... :/ 23:26
23:27 thou left 23:29 orafu left 23:30 orafu joined 23:36 impious joined 23:43 wamba left
kboga :) 23:45
wow the argv go a long way from perl6.c 23:47
dalek kudo/nom: b05b391 | jonathan++ | LHF.markdown:
Update LHF; remove a dupe entry...nice as minmax op would be, it only needs to be listed once. :-)
23:48
kudo/nom: 5d31774 | jonathan++ | src/ (3 files):
Allow state declarator and pass along a flag to the lexpad when something is state scoped.
kudo/nom: 24c07b6 | jonathan++ | src/Perl6/Grammar.pm:
Re-enable state scope declarator, in preparation for restoring state var functionality.
kudo/nom: 2d89f4a | jonathan++ | src/Perl6/Actions.pm:
Need action method for state scope declarator also.
sorear kboga: perl6.c is a generated file 23:49
23:51 whiteknight joined
kboga still, it passes the argv to parrot somehow no? 23:51
nom: say nqp::p6box_s(nqp::atpos(nqp::atpos(pir::getinterp, pir::const::IGLOBALS_ARGV_LIST), 0)); # $*PROGRAM_NAME, but pir isn't allowed here right? 23:53
p6eval nom: OUTPUT«Rebuild in progress␤»
kboga that’s a way to get the $*PROGRAM_NAME but master does it differently 23:55
say @*ARGS
nom: say @*ARGS
p6eval nom: OUTPUT«Rebuild in progress␤»
kboga rakudo: say @*ARGS
p6eval rakudo 922500: OUTPUT«␤»
kboga right, interactive mode =/ 23:56
rakudo: say $*PROGRAM_NAME; # 'interactive' ?
p6eval rakudo 922500: OUTPUT«/tmp/dGhcSuttZH␤»
sorear kboga: please explain what you are trying to accomplish 23:58
perl6.c is generated by parrot's pbc_to_exe
perl6 X Y Z == parrot perl6.pbc X Y Z
the main command line parsing is done by HLL/Compiler.pir in the NQP repo