»ö« 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:12 donri left 00:17 porter235 joined 00:20 Mowah left 00:22 porter235 left 00:27 envi joined
dalek ecza: b5e8bce | sorear++ | lib/Kernel.cs:
Factor Subscription system out of STable
00:31
tpfwiki: (Bill Klobas)++ | www.perlfoundation.org/perl6/index....est_weblog 00:34
tpfwiki: (Bill Klobas)++ | www.perlfoundation.org/perl6/index....est_weblog 00:39
sorear Who is our contact at TPF? Who can delete spam on the wiki? 00:41
00:41 zac314159 joined, zac314159 left
flussence well... 00:42
dalek tpfwiki: (Bill Klobas)++ | www.perlfoundation.org/perl6/index.cgi?1 00:45
tpfwiki: (Bill Klobas)++ | www.perlfoundation.org/perl6/index....est_weblog
flussence I dunno, but it probably needs some automated system...
sorear let's ban "Bill"
flussence yeah, that'd be easier than playing whack-a-mole 00:48
dalek tpfwiki: (Bill Klobas)++ | www.perlfoundation.org/perl6/index.cgi?1 00:50
00:50 colomon left
dalek tpfwiki: (Bill Klobas)++ | www.perlfoundation.org/perl6/index.cgi?1 00:55
tpfwiki: (Bill Klobas)++ | www.perlfoundation.org/perl6/index.cgi?1 01:01
01:03 colomon joined
flussence (or I could just use irssi's regex-ignore to get rid of the wiki messages...) 01:03
sorear or I could disable the tpfwiki plugin in dalek 01:04
done. 01:06
(Bill Klobas) will spam #perl6 no more
flussence yay
sorear mind you, I haven't done anything to quell his wiki abuse
flussence I tried deleting the page a few times, it's obviously not helping so I gave up... 01:07
dalek ecza: 9598dde | sorear++ | / (3 files):
Get Threads.pm6 working again after the backend rewrite
01:08
01:19 am0c^ left 01:23 colomon left, colomon joined
dalek ecza: bd64f65 | sorear++ | lib/Threads.pm6:
Finish monitor API, add ObjectPipe for moritz++
01:25
01:28 colomon_ joined, colomon left, colomon_ is now known as colomon 01:32 silent_h joined
TiMBuS is there a pir:: way to call root_new? 02:00
im sure there is. im just not sure what to pass it 02:01
02:01 noganex joined 02:02 noganex_ left
TiMBuS ['parrot';'Socket'] <- that's a.. an array PMC maybe? i need a pir repl... 02:03
oh, yeah. its a key. 02:09
02:18 porter235 joined 02:22 porter235 left 02:26 colomon left, colomon joined 02:28 leprevost joined 02:29 amiri left 02:31 whiteknight left 02:39 ingyfoo left, ingy joined 02:45 AphelionZ joined 02:53 woosley joined 03:10 AphelionZ left 03:19 thelazydeveloper left 03:31 _jaldhar is now known as jaldhar
sorear TiMBuS: semi-undocumented feature - root_new and co. can take ResizableStringArray 03:55
TiMBuS: in NQP you can just say pir::root_new__pp(<Foo Bar>); it's more involved in Rakudo though
TiMBuS sorear, thanks! 03:56
because Key doesnt let me push_pmc even tho the docs say it can
hmm the more i reimplement Socket::INET the more it feels wrong. 03:59
i dont like throwing everything into the constructor like this..
sorear niecza: use Threads;
p6eval niecza v3-39-gbd64f65: OUTPUT«===SORRY!===␤␤Q:CgOp not allowed in safe mode at /home/p6eval/niecza/lib/Threads.pm6 line 7:␤------> ⏏} }␤␤Q:CgOp not allowed in safe mode at /home/p6eval/niecza/lib/Threads.pm6 line 10:␤------> ⏏}
..}␤␤Q:CgOp not allowe…
sorear hrm 04:00
I wonder if Threads.pm6 should be whitelisted? or maybe all modules? moritz_?
Tene I don't know about safe mode specifically, but IMO the right way for the evalbot to work is in an os-constrained sandbox. 04:01
Then it works the same for all impls, you don't have to worry about choice of what to whitelist or blacklist, etc.
selinux sandbox is a great choice for that, fwiw 04:02
TiMBuS awww niecza gets threads before rakudo? booo
:p 04:03
Tene TiMBuS: I wrote async {}; support for rakudo almost two years ago, but it's been blocked on a parrot bug. 04:05
TiMBuS ah yeah. i remember that bug. something to do with some kind of header object/table not managing itself properly when a thread/hll is spawned? 04:08
i thought someone patched that but it was never added
Tene there were patches submitted to trac, but nobody ever evaluated them. 04:09
trac.parrot.org/parrot/ticket/757 has the gory details
sorear Tene: I get the impression moritz is really paranoid 04:10
Tene There are plans to replace Parrot's threading system with something much nicer (and functional) someday, but it's lower priority than other work right now.
sorear Tene: p6eval code runs in a language sandbox under an unprivileged user in a chroot jail on a dedicated VM 04:11
Tene sorear: 'k
sorear Tene: parrot had real threads once? 04:14
04:15 TheMartianGeek joined
sorear Tene: you know, if you want to do more fun stuff with async and thread syntax, I have a runtime designed to be mostly threadsafe for you *wink wink wink* 04:17
Tene sorear: Parrot's threading system hasn't changed or otherwise been touched since I've been involved in the project. At the time I filed that ticket, I could write programs in PIR that spawned other threads etc. and seemed to work fine as far as I could tell, except when the interpreter cloning bug in that ticket was triggered
04:18 porter235 joined, silent_h left
Tene So, depends on what you mean by "real threads", but they probably still work as long as you don't try to use them after loading anything with a nested namespace. 04:18
TheMartianGeek Is this channel strictly for people who are actually good enough with computers to work on the language itself, or are people who merely use Perl and could offer suggestions or feedback welcome as well? 04:19
sorear TheMartianGeek: everyone is welcome
TheMartianGeek Okay. Good. 04:20
I'm quite interested in the language, but I am still basically a novice.
TimToady we will turn you into an expert unless you are very careful :) 04:21
TheMartianGeek As long as you leave me mostly intact physically and mentally, I'm okay with that. 04:22
TimToady we can promise the physically part, I suspect
sorear What interests you most about the language? 04:23
TimToady one must start out a bit insane to put up with all the stuff that goes by here though
esp the jokes 04:24
sorear++ for saying something useful :)
TheMartianGeek Hm... 04:25
Yeah, good question.
TimToady it's okay if you just think it's cool :)
TheMartianGeek I guess I like the flexibility (even if it seems to fail sometimes...) and the syntax?
Out of the four or five programming languages I've looked into, Perl definitely seemed the "coolest". 04:26
TimToady where does it seem to fail for you?
TheMartianGeek Well, I'll say this: Probably 75% of the problems I've had with Perl have been related to file I/O. 04:27
TimToady ah, Perl 6 IO is still...in a formative stage...
TheMartianGeek Hm.
04:28 gdey joined
TimToady we're trying to make different mistakes than Perl 5 did 04:28
TheMartianGeek I mentioned on the PerlMonks that I thought it was a pity that Perl has no function to write a string bytes to a file at a certain offset.
sorear use POSIX; writev(...) 04:29
or was that pwrite
TimToady that tends to be OSly challenging
sorear The portable way to do it, both in Perl and C, is seek and write
TheMartianGeek I think I ended up using a combination of seek and print.
sorear But you lose thread safeday that way
TimToady and if you mean "insert" at that point, no OS I know of supports that 04:30
TheMartianGeek ^ Oh?
Yeah, I also had to open the file in read/write mode with "+<".
sorear didn't one of the old IBM mainframe systems support inserts? ISAM files?
TimToady well, in text files, I mean
sorear hmm, perldoc POSIX doesn't list pwrite nor writev 04:31
TheMartianGeek I see.
And binary files?
TimToady ISAM was more like a database relation
sorear writev is wrong anyway
TimToady or an on-disk hash
ISAM was trying to be a b-tree sort of thing 04:32
(without really knowing what it was doing) 04:33
TheMartianGeek Interestingly enough, I think in the several months I've been using Perl, I might have processed more binary files than text files.
TimToady oddly, that capability was not added until Perl 3
and then only grudgingly 04:34
in order to make hard things possible, not easy things easy
TheMartianGeek Will Perl 6 still have a switch statement?
TiMBuS it does 04:35
TimToady "still"?
TheMartianGeek I heard something about not using it in 5...
TimToady 5's switch is borrowed from 6
TiMBuS im more concerned about "will"
TimToady though it doesn't work as well
that is, 5 doesn't really have a proper type system, so has to support switch semantics with ad hoc rules 04:36
it falls out much more naturally in 6
but the main difference is you can leave off the parens in 6
:)
TheMartianGeek That's one of my favorite functions in any programming language, so I'd be disappointed if I couldn't use it in 6. 04:37
TimToady 6 had it before 5 did
TheMartianGeek So, switch $var instead of switch($var)?
TimToady ah, not that switch
given/when
it's true that you should avoid 'use Switch;'
now that 5 has given/when
sorear Perl 5's "switch" statement has basically nothing to do with anything in any other language
and it's going away 04:38
oh, wait, switch
I was thinking of select($fh)
nevermind
TheMartianGeek Odd...6's switch statement doesn't even use the "switch" keyword? 04:39
sorear TimToady: What do you consider the most important Perl 5 I/O mistakes to avoid are?
TimToady "switch" is Computerese Gobbldygook; "given" is English
sorear TimToady: What do you mean that Perl 2 didn't support binary files? Didn't Perl 2 run on UNIX where all files are created equal?
TimToady laughs in your general direction 04:40
most Unix utilities of that day couldn't handle data with embedded nulls
and they were chock full of arbitrary limitations like "max line length == 1024" 04:41
sorear Perl 2 used asciz format for PVs?
TimToady PVs are a P5ism
but yes
TheMartianGeek Hm...making the syntax of switch/given a little more flexible might be nice, too... 04:42
TimToady well, P5 IO attached all sorts of information to localizable globals, was the main mistake 04:43
since there weren't really any objects for handles
TheMartianGeek At least twice, I've gotten a "bad switch statement" error and driven myself nuts trying to find it only to realize it was because I put the opening bracket on the next line instead of the same line.
sorear hmm, I guess I need to study 4 some more
TimToady TheMartianGeek: that's because the switch module was a complete hack, not integrated with the compiler 04:44
both 5 and 6's given/when is much cleaner
sorear Switch.pm was a preprocessor
a text macro
TheMartianGeek Well, given gives (no pun intended) me the same error in 5. 04:45
sorear you can put the opening brace for given anywhere yo want
TheMartianGeek Huh.
Maybe I have an outdated version of Perl, then...
TimToady probably 04:46
sorear given is only supported from Perl 5.10 on, and you need to add "use feature 'given';"
or maybe it was "use feature 'switch';"
TimToady or 'use 5.010;'
TheMartianGeek 5.012002...yeah.
TimToady which is much shorter :)
sorear because given steals keywords, and Perl 4/5 are pretty strongly committed to backcompat
TimToady: do you have a short cute name for Perl 1-4? 04:47
TheMartianGeek 5.010 = 5.10?
sorear (I get the impression 1-4 differed from each other much less than 4->5 or 5->6)
TheMartianGeek: yes
TheMartianGeek Hm.
TimToady sorear: yes
TheMartianGeek It says 5.12.2 doesn't support it. 04:48
sorear TheMartianGeek: Perl used decimal floating point for version numbers until 5.6.0; several internal bits still use it
the version before 5.6.0 was 5.005something
you can, if you want, say "use v5.12" 04:49
TheMartianGeek: use feature "switch" works here 04:50
TimToady or "use v6;"
TiMBuS ^
sorear use v6; doesn't work reliably yet :p
TimToady if people would just finish writing the test suite and testing it with implementations, I could finish writing the spec :P 04:51
TheMartianGeek Well, this is weird... 04:54
TiMBuS TimToady, speaking of.. the spec says you can't set private attributes without writing a custom BUILD. is this actually the case?
sorear TiMBuS: I wrote that part of the spec... 04:55
TiMBuS slowly turns his guns 04:56
sorear TiMBuS: the idea is that SomeClass.new(private_attr => 5) shouldn't break encapsulation automatically
TimToady private attributes are not part of the public api
04:56 porter235 left
TheMartianGeek I must be doing something wrong, because it's giving me all kinds of errors that don't show up when I comment out the given statement. 04:56
sorear TheMartianGeek: nopaste? 04:57
TheMartianGeek Actually, is there a good IRC channel for general Perl questions? I don't want to clog the conversation here...
sorear This is normally idle time for here
You aren't hurting at all
There's #perl-help but I've heard bad things about it 04:58
04:58 orafu left, orafu joined
TheMartianGeek Okay. 04:59
TiMBuS would the acceptable use i am looking for be 'has $.foo is ro', sorear?
TheMartianGeek pastebin.com/9Gg3EMEM <-- This is the piece of code that's causing the problems. 05:00
TimToady TiMBuS: attrs are ro by default 05:05
TiMBuS even public ones?
i must have completely forgotten this
TimToady rakudo: class Foo { has $.foo; }; my $foo = Foo.new(:foo(42)); say $foo.perl; $foo.foo = 43; 05:06
p6eval rakudo bfdd78: OUTPUT«Foo.new(foo => 42)␤Cannot modify readonly value␤ in '&infix:<=>' at line 1␤ in main program body at line 22:/tmp/6SNnikyRiX␤»
TiMBuS then all is well 05:07
i guess since ive already started digging my hole i should at least keep going till i hit oil: in BUILD, you specify a named param that you are probably going to modify. im not fully aware of the relation between the named param and the private attribute.. 05:12
is the idea to modify the named param and then pass the changes to callwith()
TimToady not really; you just set all the attributes you know about 05:15
each BUILD is in charge of its own class's infrastructure, and no other class's
superclasses or subclasses have their own BUILD that this class need not concern itself with 05:16
TiMBuS i see, well. that begs my last and most embarrassing question. how do i set self$!foo to $!foo? i cant figure out the syntax 05:20
or should i be using BUILD (:$foo) instead of BUILD (:$!foo) 05:21
wait that still doesnt fix it
05:21 Sarten-X joined
TiMBuS wait yes it does. $!foo = $foo would work just fine. i hate when im not following my own thoughts.. 05:22
05:34 izydor joined 05:40 izydor left, flatwhatson_ left
sorear TheMartianGeek: I hope we didn't scare you away 05:51
TheMartianGeek Heh.
woldrich themartiangeek, #perl is for perl5 help
TheMartianGeek I'm still here, don't worry.
And...okay.
05:52 entel joined
sorear Seriously, just put your problem up on pastebin.com or the like and one of us will probably find it in 15s 05:52
TheMartianGeek Oh, actually, I sort of did: 05:53
[22:00] <TheMartianGeek> pastebin.com/9Gg3EMEM <-- This is the piece of code that's causing the problems.
sorear Oh
woldrich Unknown Paste ID!
sorear I missed it. Sorry.
entel anyone here doing web development with perl6?
TheMartianGeek That's okay.
And the time limit on it seems to have run out...
05:53 izydor joined
woldrich May I suggest codepad.org 05:53
sorear Oy, time-limited paste services are pure evil. 05:54
Also
Where are you?
TheMartianGeek ?
sorear Your time zone puts you in part of the globe with very little land
woldrich themartiangeek, God morgon. 05:55
TheMartianGeek Western Montana.
woldrich crap, I guessed wrong
sorear ...
TimToady little land, but Big Sky :)
TheMartianGeek Actually, I did mention the problem on PerlMonks...should I just link that post?
sorear is IRCing via a computer two time zones east of where he actually is
you are one time zone east of Kentucky. Not one time zone east of California. 05:56
west, west
woldrich How do you know?
sorear woldrich: he pasted something with a timestamp
woldrich hah 05:57
sorear woldrich: if I were less lazy I'd just use ip2location.com though :p
TheMartianGeek So, yeah, it would be 10:57 PM for me now.
TimToady sorear: I use the same server as you, but it reports PST to me
(cuz I told it to)
sorear less ~larry/.bashrc 05:58
TheMartianGeek codepad.org/FOYBhI2x <-- That was the actual code that wouldn't work.
sorear oo, lots of fun stuff 05:59
TheMartianGeek: Is that 6 or 5?
it's not valid either, but for different reasons
if you want it to be valid Perl5, you need when (0) 06:00
the parens are needed
TheMartianGeek Oh.
Yep, that worked.
sorear style nit: $i < @array is much more commonly used than $i <= $#array 06:01
(also, use foreach-type loops whenever possible)
TheMartianGeek Oh. Okay.
TimToady and will continue to work in p6
woldrich you might want to consider using strict and warnings 06:02
TheMartianGeek Yeah, I have both turned on.
sorear oh, so THAT's the correct syntax for TZ 06:03
I kept typing TZ=PST8PDT
TimToady yeah, stoopid ain't it? 06:05
06:06 kaare_ joined
sorear TimToady: What terminal do you use? I've never been able to get t_Co=256 to do anything useful in vim 06:07
What do you use U+31A COMBINING LEFT ANGLE for so much?
TheMartianGeek Is there a Perl function for finding blocks containing only one specific character, with certain parameters? 06:08
sorear What do you mean?
Wow, I had no idea vim did NFG
TheMartianGeek Like, say I want to open a binary file and find all the blocks of data containing only character 0x00, but each block must be at least 0x20 bytes in length, and every 0x10000 characters in the file are checked individually (so a block going from offset 0x1FFF8-0x20007 would not qualify). 06:10
06:10 ssqq joined
TimToady U+031A is useful for marking pitch accent in にほんご. 06:11
06:11 ssqq left
TimToady er, 日本語. 06:11
woldrich sorear, t_Co=256 rarely has any effect. Make sure you're termcap and $TERM env var is correct. 256 colors worked out of the box for me, using urxvt 06:13
your, even
sorear TheMartianGeek: I still don't quite follow. Based on that description it sounds like a file with 1x 0 FFFFx FF should have 0xFF01 blocks, most overlapping 06:14
TimToady I have no idea what t_Co does 06:15
woldrich tells vim how many colors the underlying terminal supports
TheMartianGeek Hm...
TimToady might be a fossil copied from somewhere else 06:16
TheMartianGeek Yeah, as I said, it's kind of hard to explain.
sorear I suppose I should have asked before digging around in ~larry/.vimrc; sorry :/
woldrich can I steal it? 06:17
TimToady if it's world readable, you don't have to apologize :)
sorear When you use (::T $x) in a signature, what exactly does T capture? 06:20
TimToady $x.WHAT, I'd think 06:22
TheMartianGeek Okay, say I have a binary file that contains some random data (no 00s), then fifty 00s, then some more nonzero data, then twenty-eight 00s, then some more random data.
I'd want some way to note that there are two blocks of 00s in there, one 50 bytes long and the other 28 bytes long. 06:23
But if, say, the forty-first character of the 50-byte one was at a boundary, then that would count as a 41-byte block and a 9-byte block. 06:24
sorear I think what you're looking for is $str.comb(/\0 [ <!{ $/.pos %% 0x10000 }> \0 ]*/) 06:26
Or maybe .split(...) 06:27
06:28 xinming_ joined
sorear Actually, are you interested in the 0s, or in the stuff between the 0s? 06:28
TheMartianGeek The 0s. 06:29
sorear niecza: my $str = "axxa"~"aaxx"~"aaaa"~"a"; say $str.comb(/ a [ <!{ $/.pos %% 4 }> a ]* /).perl # using 4 to make the sample shorter 06:30
p6eval niecza v3-39-gbd64f65: OUTPUT«["a", "a", "aa", "aaaa", "a"]␤»
sorear something like that?
TheMartianGeek Hm... 06:31
sorear niecza: my $str = "axxa"~"aaxx"~"aaaa"~"a"; say $str.comb(/ a ** <!{ $/.pos %% 4 }> /).perl # shorter 06:32
p6eval niecza v3-39-gbd64f65: OUTPUT«["a", "a", "aa", "aaaa", "a"]␤»
TheMartianGeek I'd have to look into that. That's a rather confusing-looking statement. 06:34
sorear want it explained?
TheMartianGeek Sure.
sorear %% is the "evenly divisible by" operator 06:35
$/.pos %% 4 is true if the current match position is divisible by 4
that is, if the match position is at a block-of-4 boundary
<!{ $/.pos %% 4 }> is a negated zero-width assertion, which matches anywhere except a block boundary 06:36
X ** Y is used for lists; it expands to 1 or more of X, with Y between each copy
so a ** <...> matches 1 or more (a)s, as long as there are no block boundaries between any of them 06:37
$str.comb($regex) is the opposite of Perl5's split; it returns all matches from the string
(in this case, all sequences of as not spanning a block boundary) 06:38
clear?
(Don't use niecza for this; it doesn't understand binary files yet and will whine loudly at you about malformed UTF-8) 06:39
TheMartianGeek Hm...
And I suppose the 4 would be the length of each block? 06:40
sorear Yes
TheMartianGeek Okay.
What about the size and offset of each block, though?
sorear the first block starts at 0 and has sze 4, the second at 4 and size 4, the third at 8, and so on 06:42
TheMartianGeek No, I mean the size of the smaller blocks within the larger ones.
sorear niecza: my $str = "axxa"~"aaxx"~"aaaa"~"a"; say $str.comb(/ a ** <!{ $/.pos %% 4 }> /, :match).map(sub ($m) { $m.from, $m.to }).perl 06:43
p6eval niecza v3-39-gbd64f65: OUTPUT«[0, 1, 3, 4, 4, 6, 8, 12, 12, 13]␤»
sorear niecza: my $str = "axxa"~"aaxx"~"aaaa"~"a"; say $str.comb(/ a ** <!{ $/.pos %% 4 }> /, :match).map(sub ($m) { [$m.from, $m.to] }).perl 06:44
p6eval niecza v3-39-gbd64f65: OUTPUT«[[0, 1], [3, 4], [4, 6], [8, 12], [12, 13]]␤»
sorear use the :match on comb
TheMartianGeek Like, if the boundaries were 100 bytes apart, one large block might contain a 52-byte smaller block, a 26-byte smaller block, and 22 bytes of unmatched data.
sorear Do you just want the lengths?
TheMartianGeek Lengths and offsets.
sorear niecza: my $str = "axxa"~"aaxx"~"aaaa"~"a"; say $str.comb(/ a ** <!{ $/.pos %% 4 }> /, :match).map(sub ($m) { [$m.from, $m.chars] }).perl
p6eval niecza v3-39-gbd64f65: OUTPUT«[[0, 1], [3, 1], [4, 2], [8, 4], [12, 1]]␤» 06:45
sorear niecza: my $str = "axxa"~"aaxx"~"aaaa"~"a"; say $str.comb(/ a ** <!{ $/.pos %% 4 }> /, :match).map(sub ($m) { [$m.chars, $m.from % 4] }).perl
p6eval niecza v3-39-gbd64f65: OUTPUT«[[1, 0], [1, 3], [2, 0], [4, 0], [1, 0]]␤»
sorear length, offset-within-larger-block
TheMartianGeek I see. 06:46
sorear here's another way to approach the problem:
niecza: my $str = "axxa"~"aaxx"~"aaaa"~"a"; say $str.comb(/. ** 4/).map(sub ($bigblock) { $bigblock.comb(/a*/, :match).map(sub ($m) { [$m.chars, $m.from] }) }).perl 06:47
p6eval niecza v3-39-gbd64f65: OUTPUT«[[1, 0], [0, 1], [0, 2], [1, 3], [2, 0], [0, 2], [0, 3], [4, 0]]␤» 06:48
sorear er, looks like I broke it
oh 06:49
niecza: my $str = "axxa"~"aaxx"~"aaaa"~"a"; say $str.comb(/. ** 4/).map(sub ($bigblock) { [$bigblock.comb(/a+/, :match).map(sub ($m) { [$m.chars, $m.from] })] }).perl
p6eval niecza v3-39-gbd64f65: OUTPUT«[[[1, 0], [1, 3]], [[2, 0]], [[4, 0]]]␤»
sorear this does away with the explicit block boundary checks 06:50
if you have much more than 64k of data, you will not get acceptable performance from any current Perl 6 implementation
and Perl 5 doesn't have an easy way to check block boundaries
hey, TimToady - what does regexing a Buf look like in Perl 6? Can we still use \0 ? 06:51
06:52 porter235 joined
sorear so you should read the data in 64k blocks using sysread, then extract blocks using something like while ($block ~~ m/(\0+)/g) { say "Start $-[0] end $+[0]" } 06:54
=~ 06:55
note: I've never used @- or @+ before I don't know if they work as I think they do
06:56 porter235 left 06:58 justatheory left
TimToady sorear: the intent is that Buf act like a string in all non-Unicodey ways possible 07:00
perhaps to the point of recognizing ASCII 07:02
in any case, I'd expect \0 to work
sorear Under what circumstances may a portable Perl 6 program assume O(1) random access to the contents of Str objects? 07:04
TheMartianGeek Thank you all for the help. 07:08
07:09 TheMartianGeek left 07:11 _twitch joined
TimToady sorear: undef NFG, each graphame is a unit cell, so it depends then on whether your strings are actually implemented as continuous cells or as ropes 07:12
worst case is probably O(log n) for a typical tree-based implementation of string 07:13
or maybe just O(1) for large values of 1 :) 07:14
one tends to pay the price on insertions, not on lookups 07:15
sorear TimToady: so, any Perl 6 implementation requires sublinear access by grapheme index? 07:17
TimToady I think that's probably a reasonable assumption
cdr lists are right out :)
sorear I was actually thinking more in terms of perl 5.6-inspired utf8-nfd byte buffers, with O(N) grapheme access but O(1) byte access 07:18
TimToady Perl 5 is actually agnostic on nfc/nfd 07:19
sorear Or Java/C# native strings, which are utf16-nf(agnostic)
TimToady and gets away with the variable length encoding by caching last location
which is usually pretty close to where you want to get next 07:20
but I think NFG is probably a better approach, assuming we can make it work
NFG is really just NFC plus temporary composition of graphemes without a universal composition 07:22
other than sacrificing rount-tripping of canonicalization (which it shares with NFC), the only other potential problem I see is the possibility of a DOS attack 07:23
*round
but generally, I think I'm in favor of doing most of the work at the program boundaries to make things simpler internally 07:24
there may be some lazy optimizations that avoid NFG canonicalization long enough to keep the original format all the way through, but that's just an optimization to me 07:25
and the potential for errors multiplies when you do that sort of thing
plus such code could be written at the codepoint level instead if it wants to be grapheme agnostic 07:26
sorear what I mostly worry about with NFG is the constant factors that show up in an application like the classic "count word frequencies"
TimToady well, there you really want canonicalization 07:27
and I think that most of the common canonicalization is handled by NFC, until you get into exotic languages 07:28
so your typical "western" NFC text is not going to require much of a constant 07:29
nor, typically, will Chinese or Japanese
07:30 Guest87704 left
TimToady languages without NFC forms of graphemes will take more work, but I suspect the NFG form will be even more appreciated in such languages 07:31
and they can always revert to codepoints if they don't want it
TimToady should probably revert to bed, to combat further jetlag... 07:34
sorear Do you imagine a per-string or per-interpreter "dynamic codepoint pool"?
TimToady originally per-interpreter, but parrot came up with per-string 07:35
can argue it both ways, or various intermediate "zone" interpretations
per-string is safer from DOS, but makes more work
sorear per-interpreter sounds like it would be difficult for the GC 07:37
TimToady nodnod 07:38
sorear especially when using an existing VM like I'm doing
C#-level finalizers are fairly expensive :/
TimToady otoh a given language might just have a fairly permanent set of common compositions that could be factored out 07:39
so a given table might normally last the life of the process anyway, especially if precomputed for a particular langauge 07:40
there are probably several PhD theses in there... :) 07:41
none of which I intend to solve tonight... 07:42
zzz & # thunk
sorear out 07:43
Tene Man, Devel::Declare is not as documented as I'd like.
Nor is the Perl 5 source.
07:53 flatwhatson_ joined 07:57 ymasory left 08:08 donri joined 08:30 masak joined
masak morning, zebras! 08:30
Tene hi masak :)
tadzik oh, so I should wake up too :) 08:32
hello hello
Tene morning tadzik
masak tadzik: goedemorgen :)
tadzik wow, that's my third Dutch word, after "dank je wel" and "smaak" :) 08:34
masak remember, the 'g' letters are pronounced /*phlegm*/ 08:36
tadzik as in pflroedemorgen, or even pflroedemorpflren? 08:38
masak the latter. 08:39
*chhhh*oedemor*chhhh*en
tadzik I can't wait to say this to mberends :]
masak for bonus points, the 'oe' sounds a bit like the 'i' in 'bird'. 08:40
tadzik that's what I thought
masak tadzik++
tadzik brb 08:42
08:52 porter235 joined
masak sorear: ping 08:56
08:57 porter235 left
Tene I wonder if I'll be able to understand this Devel::Declare stuff well enough to write good documentation for it. 09:01
masak mmm.... Devel::Declare... 09:04
I think mst once used that module as part of an argument chain that Modern Perl 5 is a perfectly adequate Perl 6. :) 09:05
Tene If this is what Perl 6 looks like to outsiders, we're doing it wrong. 09:09
masak :)
let's do it abundantly right, then. 09:10
moritz_ good morning 09:11
oooh, large backlog :-)
masak good morniz, moring.
masak is building Mono 09:15
Tene masak: No, don't do that! Please, just let the compiler build it for you. 09:17
masak this explains a lot. why my fingertips are so sore from manipulating raw bits, for example. 09:18
09:20 Mowah joined 09:25 colomon left 09:26 p3n left 09:33 colomon joined
masak it's a lovely day in Vught. my plans for today are (1) release Yapsi, (2) do a bunch of p5 statistics. 09:44
doing --target=FUTURE and --target=SIC to inspect part-way results in Yapsi is really nice. 09:48
09:48 jferrero left
moritz_ is jnthn awake? :-) 09:50
masak nothing indicates that he is. 09:51
10:02 p3n joined 10:04 jferrero joined 10:07 Chillance left 10:10 satyavvd joined
jnthn jnthn is awake! 10:12
10:13 colomon left
TiMBuS ($!peeraddr, $!peerport) = $peeraddr.split(':', 2); # why does this assign a Seq to $!peeraddr :/ 10:14
masak rakudo: my ($a, $b); ($a, $b) = "foo:bar:baz".split(':', 2); say $a; say $b 10:15
p6eval rakudo bfdd78: OUTPUT«foo␤bar:baz␤»
masak worksforme
rakudo: my ($a, $b); ($a, $b) = "foo:bar:baz".split(':', 2); say $a.WHAT; say $b.WHAT
p6eval rakudo bfdd78: OUTPUT«Str()␤Str()␤»
TiMBuS yeah it works there
but, not when you use attributes i guess
masak rakudo: class A { has $!a; has $!b; method foo { ($!a, $!b) = "foo:bar:baz".split(':', 2); say $!a.WHAT; say $!b.WHAT } }; A.new.foo 10:16
p6eval rakudo bfdd78: OUTPUT«Seq()␤Any()␤»
masak submits rakudobug
TiMBuS :/
masak definitely a bug.
TiMBuS++ for finding it.
want to brainstorm a workaround, too? :)
I'm sure there is one.
10:16 satyavvd_ joined
TiMBuS i guess another bug would be regexes in initializers (default values or submethod BUILD) dont populate to $/ 10:17
10:17 satyavvd left
masak rakudo: class A { has $!a; has $!b; method foo { my $seq = "foo:bar:baz".split(':', 2); ($!a, $!b) = |$seq; say $!a.WHAT; say $!b.WHAT } }; A.new.foo 10:17
p6eval rakudo bfdd78: OUTPUT«Seq()␤Any()␤»
masak :/
TiMBuS hmm how about slicing it
masak rakudo: class A { has $!a; has $!b; method foo { my $seq = "foo:bar:baz".split(':', 2); ($!a, $!b) = $seq.list; say $!a.WHAT; say $!b.WHAT } }; A.new.foo 10:18
p6eval rakudo bfdd78: OUTPUT«Seq()␤Any()␤»
masak rakudo: class A { has $!a; has $!b; method foo { my $seq = "foo:bar:baz".split(':', 2); ($!a, $!b) = $seq[0, 1]; say $!a.WHAT; say $!b.WHAT } }; A.new.foo
p6eval rakudo bfdd78: OUTPUT«Seq()␤Any()␤»
masak stubborn...
rakudo: class A { has $!a; has $!b; method foo { my $seq = "foo:bar:baz".split(':', 2); $!a = $seq[0]; $!b = $seq[1]; say $!a.WHAT; say $!b.WHAT } }; A.new.foo
p6eval rakudo bfdd78: OUTPUT«Str()␤Str()␤»
masak ok.
so.
it seems you can't have attributes and list assignment right now. 10:19
TiMBuS :<
10:20 colomon joined 10:23 tom_tsuruhara joined
masak please tell me more about the regexes in initializers. 10:26
do you have a bit of golfed code showcasing the issue?
TiMBuS ok i just tried to golf it down and now it works in the repl 10:29
the same code in a file, however, doesnt work 10:31
10:33 woosley left
masak then please try a small nopaste. 10:35
doing cat $file and then perl6 $file
TiMBuS hmmm gunna have to retract this bug. it seems to be working now? but i doubt i made all of these $res = ($thing ~~ /pat/).Hash.{'name'} setups without a reason 10:39
and its not very old code..
TiMBuS scratches head
10:45 risou joined, colomon left
cognominal github.com/blog/805-git-clone-http...m-tpw-endo # next time I drop the .git, I will not complain to jnthn that I can't clone nqp :) 10:49
10:51 colomon joined 10:53 porter235 joined 10:57 porter235 left 11:16 whiteknight joined 11:28 woosley joined 11:31 MayDaniel joined 11:38 cosimo joined 11:40 cosimo left 11:45 am0c joined, risou_ joined 11:46 risou left 11:48 PacoLinux_ joined 11:59 rgrau joined 12:01 PacoLinux_ left, drbean_ joined 12:03 drbean_ is now known as drbean
masak std: my $a = 42; say "$a [<file>]" 12:05
p6eval std 4608239: OUTPUT«ok 00:01 122m␤»
masak rakudo: my $a = 42; say "$a [<file>]"
p6eval rakudo bfdd78: OUTPUT«===SORRY!===␤Unable to parse infixish, couldn't find final ']' at line 22␤»
masak submits rakudobug
masak reboots because his laptop is inserting silly pauses into everything 12:09
12:09 masak left
colomon loliblogged: justrakudoit.wordpress.com/2011/03/...k-results/ 12:10
12:11 dual left
tadzik they look quite strange 12:11
moritz_ it tells me one thing: I should increase the default line width in SVG::Plot 12:14
colomon++ for benchmarking
hugme: hug everone 12:15
hugme hugs everone
colomon moritz_: just added you to github.com/colomon/Benchmark-Plot in case you have notions for improving the graphs today. I'm going to be very busy, I think. :) 12:16
12:17 dual joined
moritz_ colomon: thanks 12:17
Tene aw, ENOMASAK
12:33 rhr joined 12:34 masak joined
masak as necessary evils go, rebooting is a sordid thing. 12:36
bleh.
this is how I want to approach work with Perl 6: j.mp/bncGYL (via @timoreilly, @newsycombinator) 12:40
12:43 nwc10 joined
Tene I always liked that story. 12:44
12:45 nwc10 left 12:46 PacoLinux_ joined
dalek psi: 14fa691 | tadzik++ | bin/yapsi:
Add a basic REPL
12:47
psi: 5f235c4 | masak++ | bin/yapsi:
[bin/yapsi] slight refactor

Changed sub signature, and the way the prompt looks.
psi: 28889de | masak++ | bin/yapsi:
[bin/yapsi] add that newline before exiting REPL

It's very important. Lots of REPLs forget to add it. Yapsi doesn't. :)
tadzik yay, yapsirepl!
dalek kudo: 4aa68e1 | jnthn++ | src/Perl6/Module/Loader.pm:
Work around Parrot #TT2040. This unbreaks module loading - and thus make spectest - on Win32. Not sure why we end up with unicode strings here and not on other platforms, mind.
12:52
moritz_ jnthn: the "why" is easy to answer: Win32 has an encoding-aware file name API 12:53
jnthn Ah.
moritz_ jnthn: POSIX-based systems don't
jnthn OK
Well, I think it's just a Parrot NYI.
I trac'd it.
12:53 porter235 joined
jnthn So once that gets dealt with, can undo the workaround. 12:53
12:53 cotto left 12:54 cotto joined 12:59 leprevost left
masak phenny: tell mberends lwn.net/Articles/328438/ 12:59
phenny masak: I'll pass that on when mberends is around.
masak (mberends and I were talking afk about the merits of rebasing over merging.) 13:00
13:01 porter235 left
dalek p/lexical-setting: ebf7adc | jonathan++ | / (6 files):
Merge latest changes from mater into lexical-setting.
13:01
13:01 colomon left, colomon joined 13:03 PacoLinux_ left 13:08 leprevost joined 13:09 masak left, pmurias joined
dalek p: d36ca9c | jonathan++ | / (2 files):
Stub in a --setting= command line argument.
13:15
nqp: 93dc13f | jonathan++ | / (3 files):
nqp: Re-work the build and bootstrap process to fit the new role of the setting. Since it'll be the outer lexical scope of programs, it needs to be built like the rest of the various bootstrapped bits, not just sa if it's a module.
13:16 dalek joined, ChanServ sets mode: +v dalek 13:19 PacoLinux_ joined
dalek ecza: 6fe05ff | pmurias++ | / (2 files):
[cl-backend] support &foo and bunch of small hacks
13:21
ecza: d85b4f0 | pmurias++ | cl-backend/backend.lisp:
[cl-backend] take the unit name and mainline sub from the nam file
13:29 masak joined
Tene finally sleeps 13:30
dalek p: 080d583 | moritz++ | build/Makefile.in:
make GNU make happier
masak good night, Tene. dream of tokenization and macros :) 13:31
13:33 PacoLinux_ left, colomon left, colomon_ joined
cognominal why Toulouse for this rakudo release? 13:49
masak because there was much to gain and almost nothing Tolouse...? :P
cognominal good pun 13:50
13:51 MayDaniel left
masak I've been spending the whole weekend with jnthn. 13:51
frettled Tolouse or not Tolouse, that was the question.
cognominal in the way to Albi, we went to Toulouse with jnthn
masak in Soviet Russia, you go Towin. 13:52
cognominal so that's the next release name? 13:53
masak Torock.
13:53 satyavvd_ left
masak oh, you were being serious? :P 13:53
13:54 colomon_ left
masak generally, what happens is that the release manager (whoever it is that month) asks "ok, so what .pm group should we choose this month?" 13:54
and then no-one has any idea for a few hours.
and then the release manager has to choose a name or other.
and that's the most difficult part of our release process. the rest is dead simple. 13:55
cognominal we don't have a .pm group in toulouse :(
masak seems that didn't stop us.
cognominal We got Lyon and Paris, that's it
flussence .pm groups autovivify, apparently
cognominal in a sense, that's what we did with jnthn 13:56
masak you autovivified jnthn?!
jnthn wait, what?
masak ...without telling him? 13:57
jnthn: pro tip: never go to France again.
masak remembers the scene from Pulp Fiction
tadzik Royalle with Cheese?
masak :D
no, not that scene.
cognominal when we were there, we manage to see the Beluga plane in the air : en.wikipedia.org/wiki/Airbus_Beluga 13:58
moritz_ hugme: add tadzik to Math-Model
hugme hugs tadzik. Welcome to Math-Model!
moritz_ tadzik: feel free to merge your pull request if I don't get around to it :-)
tadzik thanks :) 13:59
moritz_ tadzik++ 14:02
14:11 colomon joined
masak lol, we're going for a walk 14:13
14:14 MayDaniel joined 14:19 jeteve joined
jeteve Hi all, I've decided to spend some of my sunday time getting my feet wet with perl6! 14:20
problem is I can't get the emacs perl(6) mode to work 14:21
github.com/jrockway/cperl-mode/tree/perl6-pugs . Downloaded form there
s/form/from/
flussence try this branch? it's a bit newer github.com/jrockway/cperl-mode/tre...erl6-merge 14:23
jeteve doing that right now :) 14:25
14:27 envi left
jeteve It works :) I have to activate it manually, but it doesn't break my indentations anymore 14:28
thans flussence
thanks
flussence no prob
14:30 colomon_ joined, colomon left, colomon_ is now known as colomon 14:44 M_o_C joined 14:51 am0c left 14:56 porter235 joined 14:57 Trashlord left 14:59 woosley left 15:02 Trashlord joined 15:05 porter235 left
masak jeteve: hi! happy you're getting your feet wet. 15:20
if anything comes up, be sure to let us know, and we'll help. 15:21
jeteve Hi masak, sure, thx! 15:22
Anyplace where I could get some reference except the largely incomplete tablets? 15:23
flussence the spec is useful, it's not that easy to follow though
masak the book.
github.com/perl6/book
jeteve Yeah, I'm reading it :) 15:24
masak src/core is nice.
as is the ecosystem.
jeteve yeah I thought about this one :D
I'm using rakudo star 15:25
masak \o/ 15:26
jeteve do'h src/core is written in perl6
masak nice, eh? :) 15:27
jeteve ok, first I learn perl6, then I infer the reference doc from the source
masak it's good for learning how perl6 looks.
jeteve and what is 'pir' is it some low level stuff written in C? 15:28
15:30 M_o_C left
masak it's the low-level code of Parrot, Rakudo's VM. 15:31
jeteve pir::open__PSS for instance, is it a standard parrot component?
masak that's the 'open' routine, with a signature of (P, S) and a return type of S.
P means "object" and S means "string". 15:32
jeteve ok, so parrot exposes some low level functions to any language and in Perl6, it's accessible through the 'pir' module?
masak sort of.
PIR is a language.
and some parts of Rakudo are implemented using PIR.
pmurias jeteve: pir is an assembler that target parrot 15:33
jeteve ok, so when in some Perl6 code there is pir::something, it's like including some parrot assembler inline in the Perl6 code ? 15:35
masak yes.
jeteve :)
masak the pir:: thing looks like a module, but it's really a kind of interdimensional portal to the underlying VM. 15:36
probably these calls will change to use nqp:: as Rakudo starts targeting other VMs. 15:37
jeteve and nqp will do the routing to the correct target 15:38
masak yes, nqp will have a small part that does all the binding to a particular VM. 15:39
and the rest of it will be VM-agnostic.
jeteve cool. Where can I find 'open_PSS' for instance? I'm looking at docs.parrot.org/parrot/latest/html/...o.pod.html but can't find it 15:41
masak goes looking
github.com/parrot/parrot/blob/mast...o.ops#L220 15:43
I was wrong. it's a PMC out, and two strings in.
that makes more sense, actually. 15:44
flussence lemme see if I can guess without looking: that's open(FILE, $filename, $mode)
masak well, more like open($filename, $mode) --> $filehandle, but yes.
flussence (somewhere along the line I inadvertently learned how to read pir...) 15:45
masak this is sugared C, though.
dalek ast: 1833aa5 | (Patrick Abi Salloum)++ | S06-other/main-usage.t:
Tests for RT #71366
jeteve all of this looks really neat
masak oh, and look: 15:46
rakudo: say "Rakudo says 'hi, jeteve!'"
p6eval rakudo 4aa68e: OUTPUT«Rakudo says 'hi, jeteve!'␤» 15:47
masak \o/
jeteve Yeahhh! Rakudo bot :)
masak niecza: say "me too!"
p6eval niecza v3-41-gd85b4f0: OUTPUT«me too!␤»
masak pugs: say "and me!"
p6eval pugs: OUTPUT«and me!␤»
jeteve Thanks all :) I feel a tiny bit less perl6-illiterate now. 15:48
masak hugme: hug jeteve
hugme hugs jeteve
masak :)
jnthn jeteve: The open__PSS thingies are documented in Parrot's ops codumentation
gah
documentation
masak .oO( "code-umentation" )
it's code that you go "um" over.
jnthn My typing is a bit fishy after this beer :P
jeteve codumentation = documentation about code
dalek kudo: bd134ec | patrickas++ | src/core/MAIN.pm:
Fix for RT#71366
15:49
jeteve alright, I'm off plowing through the perl6 book :)
thanks all, spk later!
masak oki
good luck!
jnthn jeteve: have fun :)
15:49 patrickas joined
masak patrickas! \o/ 15:50
patrickas KINGOFZEBRAS! \o/
masak wait... isn't that tadzik? :)
patrickas ok then emperor of zebras?
tadzik am I the king? 15:51
or, The King?
masak apart from the fact that having both a king and an emperor might be problematic... ok, I can be Emperor of Zebras.
I gave a talk containing zebras yesterday :P
patrickas actually the whole zebras mem developed while I was aaway
masak yeah.
patrickas so I was kinda not sure of the hierarchy :-) 15:52
masak: did the talk go well ? is it online somewhere ? 15:53
it's been almost 24 hours already!
masak yes, it went pretty well. not yet.
I'm in Yapsi release mode right now, sorry.
it's fairly easy to put the things up, but I don't want the distraction.
patrickas ok then! all hail the Emperor while he releases Yapsi upon the world! 15:56
masak this release is the greatest yet.
I'm really proud of it.
tadzik and it has a repl! 15:57
masak tadzik++
tadzik and it has subs! masak++
masak \o/
and I have a pretty neat idea for the release announcement :P
pmurias sorear: ping
patrickas whoa! you guys have been buzy! masak++ tadzik++ yapsi++ 15:59
flussence wtf, I just noticed this regex makes no sense at all... $ts_sized_space = eval "rx/.**$tabstop/"; 16:00
and if I change the . to a ' ', it breaks
tadzik hackathon++
masak flussence: p6 regexes are free-form. 16:02
flussence: so you must quote the ' '. are you doing that?
flussence yeah, it shouldn't be a . to begin with though... 16:03
I'm rewriting this sub anyway so hopefully that bit of insanity will disappear...
masak insanity-- 16:04
patrickas jnthn++ 16:06
flussence (I think I just found a way to replace Text::Tabs::unexpand() with 3-4 lines...) 16:07
(well, more like 7-8) 16:08
oh, I completely misunderstood how this works. never mind... 16:15
moritz_ wakes up after about 90 minutes of sleep 16:17
sleep cycles are for beginners, parents seem to be able to do without... have to... :-)
16:17 Patterner left
moritz_ s/cycles/rythm/ 16:17
jnthn By upgrading to parent automobiles? 16:18
s/parent/sleep/
gah, pun fail
moritz_ autosleepiles
flussence sleep-cycling sounds dangerous
tadzik oh, moritz_
there's a typo in Math::RungeKutta's META.info
it's repo-type, not rep-type
16:19 Psyche^ joined, Psyche^ is now known as Patterner
moritz_ fixed. 16:19
tadzik thanks
patrickas moritz_ I think I fixed the MAIN bug so you should be able to close RT#71366 16:22
16:24 icwiener joined
tadzik who wants to test a new module manager? 16:28
flussence o/ ! 16:29
moritz_ patrickas: that's good news! 16:31
flussence (hm, I might as well try it, this tabs thing can wait)
tadzik flussence: let me push a bugfix, and you could clone github.com/tadzik/Pies 16:32
flussence k
tadzik oh, it depends on JSON::Tiny and File::Tools 16:33
which is a tricky part, I should probably add them to a repo
moritz_ I'm fine with bunding JSON::Tiny with whatever module you want 16:34
flussence (btw, does anyone know if there's a more efficient way to split a string into equal-sized bits than "my @chunks = expand($line).split($tab-sized-chunk, :all);" ?)
moritz_ flussence: a loop + substr 16:35
tadzik moritz_: bundling where?
moritz_ tadzik: with your module manager
tadzik moritz_: yeah, that is necessary probably
I wonder what is the Right Way to perform the bootstraping process 16:36
something like App::Fatpacker would be nice, I even started working on that some time ago
moritz_ rakudo: my $s = 'abcdefghijk'; say (1, 3 ...^ * >= $s.length).map({$s.substr($_, 2)}.perl 16:37
p6eval rakudo bd134e: OUTPUT«===SORRY!===␤Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 22␤»
moritz_ rakudo: my $s = 'abcdefghijk'; say (1, 3 ...^ * >= $s.length).map({$s.substr($_, 2)}).perl
p6eval rakudo bd134e: OUTPUT«Method 'length' not found for invocant of class 'Str'␤ in <anon> at line 22:/tmp/862YVjiYVp␤ in 'Block::ACCEPTS' at line 6232:CORE.setting␤ in <anon> at line 896:CORE.setting␤ in 'Any::join' at line 1␤ in 'List::perl' at line 2843:CORE.setting␤ in main program body at
..line 22…
moritz_ rakudo: my $s = 'abcdefghijk'; say (1, 3 ...^ * >= $s.chars).map({$s.substr($_, 2)}).perl
p6eval rakudo bd134e: OUTPUT«("bc", "de", "fg", "hi", "jk")␤»
moritz_ rakudo: my $s = 'abcdefghijkl'; say (1, 3 ...^ * >= $s.chars).map({$s.substr($_, 2)}).perl
p6eval rakudo bd134e: OUTPUT«("bc", "de", "fg", "hi", "jk", "l")␤»
moritz_ flussence: see above
flussence my @chunks = ($expanded.substr($_, $tabstop) for 0, $tabstop ...^ * >= $expanded.chars); # works! 16:39
moritz_++ 16:40
masak rakudo: +sub {}
p6eval rakudo bd134e: OUTPUT«maximum recursion depth exceeded␤ in 'Cool::Numeric' at line 1903:CORE.setting␤ in 'Cool::Numeric' at line 1903:CORE.setting␤ in 'Cool::Num' at line 7532:CORE.setting␤ in 'Cool::Numeric' at line 1903:CORE.setting␤ in 'Cool::Numeric' at line 1903:CORE.setting␤ in
..'Cool::Num' a…
tadzik oh funny
masak submits rakudobug
discovered while thinking about strange situations in Yapsi.
flussence I like it when I can write commit messages like these :) github.com/flussence/Text-Tabs-Wra...it/8ddc0ca 16:51
tadzik cool 16:52
moritz_: got another pull request for ya 16:53
json this time
16:55 wooden joined, wooden left, wooden joined
moritz_ hugme: add tadzik to json 16:56
hugme hugs tadzik. Welcome to json!
tadzik :)
goo.gl/goVt3 16:58
16:58 _twitch left 17:01 porter235 joined, _twitch joined, cibs joined
masak std: my 17:03
p6eval std 4608239: OUTPUT«===SORRY!===␤Malformed my at /tmp/tAGXFpRQSX line 1 (EOF):␤------> my⏏<EOL>␤ expecting scoped declarator␤Parse failed␤FAILED 00:01 118m␤»
jnthn std: oh my; 17:04
p6eval std 4608239: OUTPUT«===SORRY!===␤Malformed my at /tmp/9Avn1y6lEV line 1:␤------> oh my⏏;␤ expecting any of:␤ argument list␤ prefix or term␤ scoped declarator␤Parse failed␤FAILED 00:01 119m␤»
masak std: oh our 17:05
p6eval std 4608239: OUTPUT«===SORRY!===␤Malformed our at /tmp/xyhfFbEVwq line 1 (EOF):␤------> oh our⏏<EOL>␤ expecting scoped declarator␤Parse failed␤FAILED 00:01 119m␤»
tadzik std: oh my $god;
p6eval std 4608239: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'oh' used at line 1␤Check failed␤FAILED 00:01 120m␤»
masak your dollar-god?
tadzik undeclared :)
patrickas std: my My $my;
masak std: class Mammon {}; oh my Mammon
p6eval std 4608239: OUTPUT«===SORRY!===␤In my declaration, typename 'My' must be predeclared (or marked as declarative with :: prefix) at /tmp/WCF_6fQ_ir line 1:␤------> my My⏏ $my;␤Malformed my at /tmp/WCF_6fQ_ir line 1:␤------> my My⏏ $my;␤
..expecti…
std 4608239: OUTPUT«===SORRY!===␤Multiple prefix constraints not yet supported at /tmp/UZmZny9BLL line 1 (EOF):␤------> class Mammon {}; oh my Mammon⏏<EOL>␤Malformed my at /tmp/UZmZny9BLL line 1 (EOF):␤------> class Mammon {}; oh my
..Mammon⏏<EOL>␤…
patrickas std: class My{} ; my My $my; 17:06
p6eval std 4608239: OUTPUT«ok 00:01 119m␤»
masak std: sub sub {}; sub()
p6eval std 4608239: OUTPUT«ok 00:01 118m␤»
masak std: sub sub {}; sub(sub sub { sub() }) 17:07
p6eval std 4608239: OUTPUT«===SORRY!===␤Illegal redeclaration of routine 'sub' (see line 1) at /tmp/fctdoWhI_R line 1:␤------> sub sub {}; sub(sub sub⏏ { sub() })␤Check failed␤FAILED 00:01 119m␤»
masak oh right.
std: sub sub {}; sub({sub sub { sub() }})
p6eval std 4608239: OUTPUT«ok 00:01 119m␤»
masak rakudo: /:::/ 17:08
p6eval rakudo bd134e: OUTPUT«===SORRY!===␤::: not yet implemented at line 22, near "/"␤»
masak :(
rakudo: /<commit>/
p6eval rakudo bd134e: ( no output )
jnthn std: /:::/ 17:09
p6eval std 4608239: OUTPUT«ok 00:01 119m␤»
masak rakudo: /::/
p6eval rakudo bd134e: OUTPUT«===SORRY!===␤:: not yet implemented at line 22, near "/"␤»
17:12 leprevost left 17:13 porter235 left
masak how do you panic from within a grammar rule? 17:14
do you have to get $/.CURSOR ? 17:15
17:15 justatheory joined
jnthn $/.CURSOR.panic(...) 17:16
Or in the grammar itself $c
but it's not c it's the cent
but I cba to work out how to type it
masak hm.
Method 'panic' not found for invocant of class 'Yapsi;Perl6;Grammar' 17:17
both with self.panic and $/.CURSOR.panic
jnthn oh
maybe that's not something we inherit from cursor?
moritz_ if I remember correctly, .panic isn't available to the user
jnthn Yeah, i think it's defined a level lower.
moritz_ unless you explicitly write your own panic
masak how do I cause a grammar to fail? 17:18
jnthn (lower in the inehritance hierarchy)
panic is more like a die than a fail.
so if you want panic style semantics, just die
masak oh, good idea.
[Coke] how wude.
jnthn er, C<die>
:P
masak I got you right the first time, no worries. 17:19
:)
moritz_ masak: singularityhub.com/2011/03/05/costs...se-graphs/ 17:22
masak that's excellent news.
tadzik panda can bootstrap! \o/ 17:23
masak tadzik++ 17:24
moritz_ is disappointed it's not called "zebra" :-)
tadzik hrm
that's a serious thing actually 17:25
masak moritz_: maybe tadzik has a sekkrit project called 'zebra' :)
tadzik but there's another pun. The specification is called Pies, which in Polish is Dog, and the implementation is called Panda, and Panda is the name of my Dog :)
anyway, everything interesting is now pushed, so everyone can try if it works for them 17:26
for it will become the "new neutro" probably
17:28 jeteve left
donri Them graphs are not neatly exponential; they just disproved the whole premis of the singularity theory! 17:28
17:29 leprevost joined 17:31 ntel joined
patrickas by showing it's coming sooner than we think? The end in near! The end here! 17:31
masak std: END { "here" }
p6eval std 4608239: OUTPUT«ok 00:01 119m␤»
masak yup.
TimToady std: END "here"; 17:35
p6eval std 4608239: OUTPUT«ok 00:01 119m␤»
TimToady it's closer than you think
masak :)
sorear good * #perl6 17:36
patrickas o/ sorear
17:36 colomon left 17:37 colomon joined
dalek psi: 73785d9 | masak++ | / (2 files):
[Yapsi] implemented subroutine invocation
17:38
psi: d825429 | masak++ | t/compiler.t:
[t/compiler.t] fixed thinko

Oh, that's why we were doing so well on the errors. Now there's lots of tests to fix.
psi: 6d95f69 | masak++ | / (2 files):
[Yapsi] implemented sub declarations
psi: 745a83a | masak++ | / (2 files):
[Yapsi] enabled call before declaration
sorear masak: pong 17:42
pmurias: pong
oh right, I never got around to doing the 3.02 binary yesterday
masak sorear: I think the reason for my ping might have gone away. 17:43
sorear: I'm building Niecza, though.
17:43 rdesfo joined 17:46 risou joined 17:50 risou_ left, s1n left, s1n joined
sorear jnthn: hi 17:52
jnthn o/ sorear 17:53
TimToady my new laptop disk seems to be working better than the old one...so far...
course, my old one only glitched twice, but in a major way each time
jnthn One glitch is one too many...
TimToady I think it didn't like airplanes
sorear jnthn: if the niecza project produced a separate .dll with the full Perl5-scraped UCD and an implementation of grapheme ropes, how likely would nqpclr use it? 17:54
17:54 patrickas left
TimToady the new one has 4GB of SSD included so it boots up really fast now 17:55
sorear TimToady: suppose I have a string in NFG or equivalent form. What do use bytes or use codes mean?
jnthn sorear: It's not a wheel I'd be inclined to re-invent. 17:56
TimToady it basically means an opaque object unless you tell it how to encode
though I suppose we might supply a default encoding with the declaration 17:57
or a default normalization for the codes case 17:58
might even be specced that way already, don't remmeber
we do want to keep type safety, of course, but automatic conversions are not out of the question if declared 17:59
and certainly the *runtime* types must keep track accurately 18:00
TimToady thinks about ropes that know which substrings can be assumed to be pure NFC for efficiency and which substrings contain indirection via NFG 18:02
pmurias sorear: how is the &say from the setting resolved in -e 'say "hello world" 18:03
TimToady how is -e any different from a normal program?
sorear pmurias: it gets resolved twice, once by STD, once by Niecza 18:04
the STD resolution is responsible for error messages
pmurias how does niecza resolve it?
sorear which do you want to know about?
ok
TimToady std: say;
p6eval std 4608239: OUTPUT«Potential difficulties:␤ Unsupported use of bare 'say'; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument at /tmp/dcQDVnUAkv line 1:␤------> say⏏;␤ok 00:01 117m␤»
TimToady you mean that message?
pmurias the backend part
sorear No, I mean
std: sey "Hello, world"; 18:05
p6eval std 4608239: OUTPUT«===SORRY!===␤Undeclared routine:␤ 'sey' used at line 1␤Check failed␤FAILED 00:01 119m␤»
pmurias what does scopedlex "&say" find it?
sorear pmurias: it gets passed to the backend as something like (subcall "\0000" (fetch (scopedlex &say)) (const (box Str (str "Hello, world")))) 18:06
scopedlex uses the sub outer pointers and lexical lists to resolve that into a location 18:07
CLRBackend.cs line 2557 is the resolution function
pmurias so by following the outer pointers we can find which sub is that lexical defined in 18:11
that happens at compile time?
and at runtime how is the variable fetched? 18:12
sorear yes, yes
at runtime variable references take one of several forms depending on the particular form of the lexical 18:13
pmurias the 'simple' ones 18:14
sorear for &CORE::say, the reference will be something like CORE.L2__26say.Fetch()
a static field reference
that's how 'simple' lexicals work if they are defined in a RUN_ONCE sub
if they're not, then they are resolved to an (uplevel,index) pair 18:15
say it's (2,5)
then the referencing operation, again in C# syntax, is curFrame.outer.outer.lex5
there are only 10 directly accessible lexical slots; if the resolution were (0,13), then it would have to be curFrame.lex[3] 18:16
everything after 10 is spilled to an array
18:16 ymasory joined
sorear TimToady: what's the difference between a Buf8 and a Str with minimum and maximum Unicode levels of "bytes"? 18:17
diakopter "the new one has 4GB of SSD included so it boots up really fast now" !!!!!!!!!!
that's, like, a Windows thing
TimToady sorear: a Buf presents an array interface as well as a string interface 18:19
but our NFG strings are tending more toward a buf view of +/- integers, so some of the old string specage is a bit suspect 18:21
not sure I believe much in multi-level strings these days
18:22 Rotwang joined
pmurias sorear: why is there a fixed number of lexical slots? 18:22
TimToady the NFG abstraction has somewhat superseded the need for opaque StrPos and such
18:23 mahen23 joined
mahen23 perl6 is dead 18:23
TimToady no, it's undead 18:24
mahen23 its an infinite loop
you are not going to finish it
flussence based on what evidence?
mahen23 i am going into my 30s and you still have not completeed it
masak hugme: hug mahen23
hugme hugs mahen23
sorear That is not dead which can eternal lie
masak mahen23: welcome to #perl6.
TimToady mahen23: you will have far more years to use Perl 6 than I will :) 18:25
mahen23 why the warm welcome?
masak mahen23: why the trollish entry? :P
mahen23 cuz i am fed up of waiting :(
TimToady so are we!!!!
masak mahen23: let me tell you something.
mahen23: so am I.
flussence why would we get angry? we have perl6!
sorear pmurias: because the recently used frame cache depends on all frames being the same size
masak mahen23: that's why I'm working on it.
pmurias sorear: what is the recently used frame cache? 18:26
mahen23 it was first talked about in 2000's and now its 10years later
masak mahen23: yes.
TimToady perl6: say "#6 is alive! Not disassemble!"
mahen23 why not just release it and then do bug releases
1.0, .1.1, 1.2
p6eval pugs, rakudo bd134e, niecza v3-41-gd85b4f0: OUTPUT«#6 is alive! Not disassemble!␤» 18:27
masak mahen23: good news. we are releasing it.
mahen23: all the time.
and we are fixing bugs.
mahen23 so what version is it now?
masak I'm sorry you missed all the releases so far.
mahen23: different compilers have different versions.
Rakudo is version 2011.02
Niecza is version v3
mahen23 i thought it will be released under one name: perl6 .... 18:28
masak you thought wrongly.
flussence when will c++ be released?!
tadzik that'll miss the pieng
* point
masak Yapsi is version 2011.02, but I'm working on releasing version 2011.03 right now :)
in fact, I'd say we're really good at releases nowadays. 18:29
mahen23 so there will not be a perl6 release?
masak all three of those compilers do monthly releases.
pmurias mahen23: no
masak mahen23: no, there will not be a Perl 6 release. you said so yourself.
mahen23 i just died, come to my funeral
masak rakudo: die 18:30
p6eval rakudo bd134e: OUTPUT«Died␤␤ in main program body at line 22:/tmp/G7NH8z0Q9L␤»
TimToady at some point we will start versioning test suites though, and the first one will probably be called 6.0.0 18:31
mahen23: isn't it a little early for you to be having a midlife crisis?
masak ooh, versioned test suites. that's probably more important than a versioned spec. 18:32
mahen23 so in order to write a simple hello world script, i need to follow all these steps: rakudo.org/how-to-get-rakudo
not very novice friendly
masak mahen23: if you have a suggestion for making the installation easier, let us know.
TimToady we're targeting early adopters mostly righ tnow
flussence yep, all five of them! assuming you don't use the distro's package manager.
masak easier and more novice-friendly.
mahen23 i am a windows guy 18:33
and windows hate git
TimToady so is jnthn
jnthn git works just for me on Windows for ages.
tadzik mahen23: try.rakudo.org/ if you are really impatient
masak you don't need Git for Rakudo.
jnthn: if it works just for you, it won't work for anyone else... :P
mahen23 yay cool @ tadzik 18:34
jnthn Oh, sorry. I didn't realize I was holding the git on Windows mutex. I'll try to remember to share it a bit :P
18:34 leprevost left
sorear step 1. fetch github.com/downloads/sorear/niecza/niecza-2.zip 18:35
step 2. unpack anywhere
step 3. run "run\Niecza.exe"
I botched something in the v3 release and it wants a version of .NET that doesn't even exist :/
v2 should work for now 18:36
masak sorear++
"Niecza: the compiler with the fewest installation steps"
18:38 mahen23 left
[Coke] \o/ 18:40
masak mahen23: (1) troll, (2) get reasoned replies, (3) get bored
tadzik he won. He got the attention 18:41
shame it didn't turn him to the light side of the force though
masak we won. we hugged someone :)
flussence he lost, he didn't provoke the reaction he wanted :)
18:41 risou left
TimToady doesn't matter whether he won or lost, as long as convergence continues 18:42
masak troo 18:43
I think the main concern of the community is not to get bogged down or distracted by trolls.
TimToady but...we get distracted by *everything* here... 18:45
masak d'oh!
lue hello world! o/ 18:46
diakopter including each other
masak lue: \o 18:47
TimToady gets to go and be distracted playing drums now... &
lue We aren't distracted by trolls. We're distracted by ourselves :)
masak "it is not the spoon that bends." 18:48
tadzik it's the bends that spoons
flussence a perfectly flat spoon is pretty useless though
masak :P
lue I think they're called spatulas.
sorear TimToady: if $language requires tailored grapheme clusters, should Str provide o(N) indexing for them?
19:01 MayDaniel left 19:10 porter235 joined
dalek p/slp: d36a4cd | jonathan++ | / (3 files):
Stub in NQPLexInfo and NQPLexPad, which will eventually give static lexpad support.
19:10
p/slp: 94fc85c | jonathan++ | src/pmc/nqplexinfo.pmc:
Provide a way to set a static value into a lexpad explicitly, and to indicate when all static values are set.
p/slp: 5c2b972 | jonathan++ | src/pmc/nqplexpad.pmc:
Insert static values into a context's registers, thus putting values from the static lex pad in place per invocation.
19:14 IRSeekBot joined 19:15 porter235 left
masak just pushed the Yapsi release announcement. comments and suggestions welcome. 19:16
jdhore1 masak, link?
dalek psi: 0cf3d51 | masak++ | doc/announce/2011.03:
[doc/announce/2011.03] added
19:17
masak there :)
jdhore1 masak, This is brilliant. I see you're channeling Steve Jobs. 19:18
masak :) 19:19
dalek ecza: 5969e9b | pmurias++ | cl-backend/backend.lisp:
[cl-backends] small hacks for running CORE
19:20
ecza: e3f2835 | pmurias++ | cl-backend/backend.lisp:
[cl-backend] handle sub foo(\$foo) {...}
ecza: 1b8146a | pmurias++ | cl-backend/backend.lisp:
[cl-backend] load the setting
ecza: 4aa53ab | pmurias++ | cl-backend/ (2 files):
[cl-backend] hide annoying messages from quicklisp
ecza: 7cc8c06 | pmurias++ | simple-tests/ (2 files):
add missing files to simple-tests
19:27 colomon_ joined, colomon left, colomon_ is now known as colomon 19:28 MayDaniel joined
pmurias niecza: sub foo {my $counter=0; sub {$counter++;$counter}};my $sub = foo();say $sub;say $sub; 19:33
p6eval niecza v3-46-g7cc8c06: OUTPUT«Sub()<instance>␤Sub()<instance>␤»
pmurias niecza: sub foo {my $counter=0; sub {$counter++;$counter}};my $sub = foo();say $sub();say $sub(); 19:34
p6eval niecza v3-46-g7cc8c06: OUTPUT«1␤2␤»
pmurias sorear: how does (uplevel,index) pairs work in this case?
lue prepares to whack masak's milk with a bat, twice
I got an air of *high* British royalty from that announcement :) 19:35
masak lue: wow, that's what I was aiming for.
sorear .u _
phenny U+005F LOW LINE (_)
masak well, not royalty, but formality.
donri lols at the ufo readme, BTW 19:36
masak++
masak heh
sorear pmurias: $counter is assigned index 1 (0 = $_); the reference in the anonymous sub is to (1,1), thus curFrame.outer.lex1
pmurias: the sub {} expression uses MakeSub to create a new sub "clone", with a reference to the correct outer
19:43 jdhore joined
dalek psi: dc43de2 | masak++ | doc/announce/2011.03:
[doc/announce/2011.03] a few changes
19:48
masak is having "Mu" yoghurt for desert o/ 19:53
mberends++
20:09 _twitch left 20:33 imamelia joined 20:34 imamelia is now known as TheMartianGeek, TheMartianGeek left
lue I shall partake in the fine and formal artistry of "nomming". Good day to you, sirs and madams. 20:38
masak curtsies
20:39 GinoMan left
masak at the hackathon in Vught, we've just partaken in "nomming", and we are currently involved in the fine art of "slacking after dinner". 20:39
dalek psi: 3576c66 | masak++ | doc/announce/2011.03:
[doc/announce/2011.03] still more changes
20:40
tadzik my code's compiling
masak \o/
sorear What are you hackathonning on?
masak NP :) 20:41
sorear P=?
tadzik there's a plan to make Rakudo NP-complete. The hard thing is, that's NP-hard
jnthn Pivo
masak sorear: no, just the NP
tadzik No Pivo? /o\ 20:42
masak the /o\ figure is really appropriate there.
it looks like someone with his face in his hands.
tadzik yeah, that was my point 20:45
[Coke] . o O (DUCK!) 20:46
masak [Coke]: indeed. it could also be someone cowering under a bed.
sorear Who is our TPF wiki liaison? 20:50
masak has no idea 20:52
diakopter I think it was the creator/maintainer of the wiki software itself 20:59
the company, I mean 21:00
21:01 fhelmberger left 21:02 IRSeekBot left, fhelmberger joined 21:04 Vlavv_ left, IRSeekBot joined 21:05 Vlavv_ joined, s1n left
diakopter sorear: building latest niecza with mono 2.10.1 crashed with mono saying "gc: too many heap sections" 21:07
masak bacek: ping 21:08
diakopter sorear: (on cygwin) 21:09
sorear noted.
21:09 dwhipp joined
masak haha, I crashed the Parrot GC by playing around with Yapsi :) 21:09
masak goes to tell #parrot 21:10
21:11 porter235 joined
diakopter sorear: (but I told it to `make` again and it seems to be proceeding happily along) 21:11
donri why isn't #parrot on freenode :/
21:11 colomon left, colomon joined
masak donri: historical reasons. 21:11
donri le fail
sorear donri: why SHOULD it be on freenode?
donri ó_ó 21:12
sorear: because i'm on freenode, duh
sorear I'm on freenode, magnet, and gimpnet
flussence probably better for them where they are now, what with all the downtime on freenode lately
donri i irregularly try to idle other networks but it never sticks
i rarely stick in channels either, but most of them are on freenode 21:13
dwhipp I was reading S02:4546 -- the @list.tree method -- looks like it's not implemented.
diakopter sorear: it seems to have finished successfuly
dwhipp Is that part of the spec consistent with current thinking? (should I try implement it?)
donri i tend to randomly /join channels on demand
21:13 izydor left
diakopter sorear: make test succeeded 21:14
sorear dwhipp: it's consistent, but very rarely used
diakopter sorear: is it supposed to auto-compile the setting twice?
sorear dwhipp: if you have @list, .tree will do nothing; .tree is only relevant for certain ephemeral weakly-structured objects
diakopter: no. 21:15
dwhipp rakudo: my @list := 1, 2..3, 4; say @list.tree 21:16
p6eval rakudo bd134e: OUTPUT«Method 'tree' not found for invocant of class 'Parcel'␤ in main program body at line 22:/tmp/e71IjeB3Xy␤»
masak huh. I've totally missed the part about .tree until now.
dalek psi: 40247d2 | masak++ | / (2 files):
[t] cleaned up the tests

For the release. Some are actual fixes, some are commentings-out, but most are fixes to tests that never worked. (do'h!)
diakopter sorear: how would I go about diagnosing why the setting was auto-compiled twice when I ran make test
sorear diakopter: wait, twice, or three times? 21:17
diakopter twice, it seems, every time I run `make test` 21:18
sorear diakopter: when you ran make, there should have been a setting compilation step mono run/Niecza.exe -C CORE
oh, hmm
diakopter where's the cached compiled setting stored
sorear I guess if the recompilation checker is broken on Win32, then test.pl -> (CORE), (Test.pm6 -> CORE again)
dwhipp My reason for wanting it was to write a function that does { (1, 2..Inf, 3).grep: * == 4|5 } in finite time 21:19
donri irc sucks anyway, lets code up some psyc infrastructure in p6
sorear diakopter: obj/CORE.dll and obj/CORE.nam
diakopter: what does mono run/Niecza.exe -v -c test.pl say? (nopaste)
masak dwhipp: what problem is it you're trying to solve that requires you to traverse an infinite supply of values in a finite amount of time? 21:20
diakopter CORE mod-time increased from 1299444347.8756 to 1299444347.8756
masak dwhipp: also, have you considered changing problem? :P
sorear blinks 21:21
diakopter sorear: pastebin.com/raw.php?i=xNuuTWq7
blinks indeed ;) 21:22
dwhipp There are obviously other ways of doing things -- in fact, I already did. But it seemed like I should be able to manipulate infinite (or even long) lists in the natural way
21:23 kaare_ left 21:24 izydor joined
sorear niecza: for 0..53 -> $i { my $base = 1299444347.875; my $next = $base + (1 / (2**$i)); if $next > $base { say $i; last } } 21:25
p6eval niecza v3-46-g7cc8c06: OUTPUT«0␤»
sorear niecza: for 0..53 -> $i { my $base = 1299444347.875; my $next = $base + (1 / (2**$i)); if $next !> $base { say $i; last } } 21:26
p6eval niecza v3-46-g7cc8c06: OUTPUT«23␤»
dalek p/slp: 67337e1 | jonathan++ | src/pmc/nqplexinfo.pmc:
Add visit, which should in theory mean all the state of this PMC gets serialized.
p/slp: 4f4fa4f | jonathan++ | src/pmc/nqplex (2 files):
Add hll and map directives to NQPLexInfo and NQPLexPad PMCs. Now seems things get serialized as wanted.
sorear niecza: my $base = 1299444347.875; my $step = 1 / 2**22; say $base; say $base+$step;
p6eval niecza v3-46-g7cc8c06: OUTPUT«1299444347.875␤1299444347.875␤» 21:27
sorear niecza: my $base = 1299444347.875; my $step = 1 / 2**22; say $base; say $base+$step; say $base == $base+$step
p6eval niecza v3-46-g7cc8c06: OUTPUT«1299444347.875␤1299444347.875␤Bool::False␤»
sorear bad CLR, no cookie
I guess double.ToString() is rounding in a way that changes the value 21:28
the problem doesn't show up on Unix because Unix "only" tracks modification times to the microsecond
21:28 spinclad joined
diakopter oh 21:29
round them both to seconds then
flussence er, depends on the filesystem I think 21:30
diakopter I mean, the resulting numbers
flussence (pretty sure ext4 does nanoseconds...)
masak release announcement now posted to p6l \o/
making a blog post, too.
21:36 porter235 left
sorear diakopter: it's worse than that; it means to-json/from-json fails to round-trip 21:36
diakopter: which seems... awful
diakopter hrm 21:38
sorear: I guess you could compare their stringifications... 21:39
icky overhead 21:40
sorear Utterly neglible though
but, this mechanism is also used for literals 21:41
when you "say 2.1", 2.1 is parsed by the CLR, a Num is plugged into the AST, then gets deparsed into JSON by double.ToString, then back to a double, then back to a string for say 21:42
21:42 hudnix left
tadzik about JSON::Tiny slowness. If we rip off actions and leave just the grammar, parsing projects.json becomes 8 seconds rather than 28 21:43
jnthn tadzik: Oh!
tadzik: That's...very telling.
tadzik I wonder if those are methods, or method calls themeselves 21:44
sorear masak: I think you do a better job of channelling Ada Lovelace than the Queen
masak yes, probably. I was aiming for academia, not royalty. 21:45
21:45 hudnix joined
sorear diakopter: I think the best "quick fix" is a fuzzy match 21:45
masak tadzik: how's the speed with all empty action methods? 21:46
jnthn Good question.
Where's the JSON::tiny repo?
masak that would give us the cost of calling the methods.
jnthn Which one would hope is tiny.
masak aye.
jnthn Foudn it 21:48
None of the action methods look immediately costly
masak blog post is up: strangelyconsistent.org/blog/yapsi-...3-released
21:48 Mowah left 21:49 Maddingu1 joined
masak switches off Yapsi release mode. 21:49
21:49 domidumont1 joined, skangas_ joined 21:50 [particle]1 joined, eternaleye__ joined, ddima joined, perigrin_ joined 21:51 plobsing joined, cottoo joined, ribasushi_ joined, gabiruh_ joined
masak std: $fo#`[I can haz mid-identifier comment?]o 21:51
21:51 cxreg joined
p6eval std 4608239: OUTPUT«===SORRY!===␤Variable $fo is not predeclared at /tmp/14u3jVVNGC line 1:␤------> $fo⏏#`[I can haz mid-identifier comment?]o␤Two terms in a row at /tmp/14u3jVVNGC line 1:␤------> $fo#`[I can haz mid-identifier comment?]⏏o␤ 21:52
..ex…
masak guess not :)
21:52 jasonmay_ joined, ingyfoo joined
sorear masak: comments are parsed in <ws> 21:52
21:52 ntel_ joined, krakan joined
masak oh, right. 21:52
21:52 ascent___ joined
masak I should have known that. 21:52
21:52 shabble joined, shabble left, shabble joined, lopaway left, perigrin left, uniejo left, revdiablo left, cotto left, plobsing_ left, jasonmay left, gabiruh left, Maddingue left, fith left, ascent_ left, krakan_ left, colomon left, wooden left, ingy left, starcoder2 left, uniejo joined, revdiablo joined, ntel left, revdiablo left, revdiablo joined 21:53 skangas_ is now known as skangas, wooden joined, wooden left, wooden joined
dalek psi: 06ef258 | masak++ | lib/Yapsi.pm:
[Yapsi] bumped SIC version

Between releases, the SIC version is always the version number of the upcoming release.
21:53
diakopter sigh. <netsplits>
21:53 fith joined, donri left
sorear for a brief moment there we had 242 users. 21:53
I think that's a high.
diakopter that would be doubles, I'm sure
21:53 tadzik joined, lopaway joined, starcoder2 joined, chitragupt joined 21:54 donri joined 21:55 colomon joined
diakopter sorear: may I assume you're committing that "quick fix" soon? 21:56
dalek ecza: c416de7 | sorear++ | src/NieczaCompiler.pm6:
Use fuzzy matches on times to work around double.ToString() stupidity (diakopter)
21:57
sorear diakopter: I already have, but git push kept failing
21:57 s1n joined 21:58 breinbaas joined
diakopter rebuilds :) 21:59
er
CgOp mod-time increased from 1298445741.64411 to 1298445741.64411 22:00
oh, that's from the downloaded bootstrap
nm
diakopter waits
sorear yow 22:01
no wonder your builds take so long :)
you have to sit through STD and NieczaActions compiling umpteen times 22:02
diakopter right
maybe I could fast forward their modtimes
(I mean, I know I could technically, I mean maybe it'd work) 22:03
ah well, I'll just wait; the last one took only 5 min or so
dalek psi: d9f4e1b | masak++ | t/runtime.t:
[t/runtime.t] added failing tests

For some reason, this doesn't work yet. It dies with the error "Trying to invoke a non-closure", for no reason immediately obvious to me.
sorear what would work would be changing the modtimes for STD.pm6 et al into the past
diakopter there's the heap sections crash/hang again
the heap sections error is actually a windows *popup* Window, of all things 22:04
from mono
with an "OK" button
so then I kill the mono.exe which is acing its core (12% system usage) and run make again 22:05
sorear diakopter: "Too many heap sections: Increase MAXHINCR or ..." ? 22:08
22:08 colomon left
sorear or just "Too many heap sections" ? 22:08
22:08 colomon joined
diakopter it's "gc : Too many heap sections" 22:08
maybe slightly different spacing/capitalization
sorear diakopter: that error message is internal from the --gc=boehm system. If you use make RUN_CLR=mono-sgen, you won't get that exact error 22:09
22:10 MayDaniel left, masak left
izydor ./perl6: error while loading shared libraries: libparrot.so.3.0.0: cannot open shared object file: No such file or directory 22:10
22:10 MayDaniel joined 22:11 masak joined
tadzik rtype not set -- has anyone seen something like this? 22:11
I think it's grammars related 22:12
sorear izydor: Did you relocate Parrot or Rakudo after configuring or building? 22:13
diakopter sorear: that wouldn't be the default for mono 2.10.1 ?
22:13 fisted_ is now known as fisted
sorear diakopter: I thought it would be, but it doesn't seem to be 22:13
diakopter odd
maybe they intend it to be, but it's not (but)? 22:14
sorear looking at the boehm sources, it seems that the maximum heap size is a compile time constant
izydor yes
the entire rakudo * directory
tadzik is "make something" in action methods ought to be the last statement?
jnthn izydor: It's not relocatable.
tadzik: No, need not be. 22:15
izydor ok thank you
22:15 masak left
moritz_ masak++ # hilarious release announcement 22:17
flussence :( I can't seem to get niecza to build today: lib/CLRBackend.cs(3066,26): error CS0165: Use of unassigned local variable `cpsrt'
22:18 dwhipp left 22:20 masak joined
moritz_ flussence: build wworks fine here (with mono 2.10.1) 22:20
diakopter too
moritz_ though there are two regressions in integration/advent2009-day10.t
diakopter sorear: (that fixed it)
sorear flussence: what C# compiler are you using? 22:21
flussence mono, 2.8
2.8.2 to be specific
dalek ecza: cbe9ac1 | sorear++ | lib/CLRBackend.cs:
Fix uninitialized variable error (flussence++)
22:22
sorear oops.
suprised 2.11 didn't catch that.
flussence (that's interesting, the compilation process seems to be multithreaded...) 22:24
tadzik gist.github.com/857788 -- that's where I get these rtype not set error 22:25
I moved make()s to the back, Justin Case, but that didn't change anything :)
moritz_ tadzik: did you try to run with --ll-backtrace ? 22:26
diakopter sorear: actually mono for windows doesn't include a mono-sgen
tadzik moritz_: no, will try
diakopter (but mono --gc=sgen works of course)
masak ugh. compiling Niecza uses up all of my VM's memory.
tadzik wklej.org/id/488226/ -- ll-backtrace 22:27
masak it has 1.5Gb allocated, and mono easily slurps about 1Gb.
flussence yay, niecza can *almost* load Text/Wrap.pm
(minus the first two lines) 22:28
jnthn tadzik: maybve need parens on the PIR calls. 22:29
22:29 Rotwang left
diakopter , now having a working & speedier niecza, can take a look at the TODO 22:29
flussence I've no idea what it's saying when I try it on Text/Tabs.pm though: gist.github.com/857792 22:30
moritz_ flussence: hyper unary is probably for things >>++ or so 22:31
niecza: my ($a, $b) = (1, 2); ($a, $b)>>++; say $a, $b
flussence might be the ».subst in there... 22:32
p6eval niecza v3-48-gcbe9ac1: OUTPUT«Unhandled exception: System.Exception: Unable to find lexical &hyperunary in mainline␤␤Server stack trace: ␤ at Niecza.CLRBackend.NamProcessor.ResolveLex (System.String name, System.Int32& uplevel, Boolean core) [0x00000] in <filename unknown>:0 ␤ at
..Niecza.CLRBackend.NamProcesso…
moritz_ hah!
niecza: say <a b>>>.uc
p6eval niecza v3-48-gcbe9ac1: OUTPUT«Unhandled exception: System.Exception: Unable to find lexical &hyperunary in mainline␤␤Server stack trace: ␤ at Niecza.CLRBackend.NamProcessor.ResolveLex (System.String name, System.Int32& uplevel, Boolean core) [0x00000] in <filename unknown>:0 ␤ at
..Niecza.CLRBackend.NamProcesso…
moritz_ yep, same error
diakopter niecza: say eval '(sub{ say 4; 6 })()' 22:33
p6eval niecza v3-48-gcbe9ac1: OUTPUT«4␤Any()␤»
22:34 ntel_ left
Tene finally awake 22:39
masak Tene! \o/
niecza: say eval 42
p6eval niecza v3-48-gcbe9ac1: OUTPUT«Any()␤» 22:40
masak has Niecza installed now
\o/
sorear niecza: eval "say 42" 22:42
p6eval niecza v3-48-gcbe9ac1: OUTPUT«42␤»
masak eval works, but it doesn't return values?
moritz_ right
niecza: my $x = 3; eval 'say $x'
p6eval niecza v3-48-gcbe9ac1: OUTPUT«Unhandled exception: Variable $x is not predeclared␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (CORE eval @ 0)␤ at /tmp/aayr0PMa8S line 1 (MAIN mainline @ 2)␤ at /home/p6eval/niecza/lib/CORE.setting line 1261 (CORE C524_ANON @ 2)␤ at 22:43
../home/p6eval/niecza/lib/CORE.setting li…
moritz_ and it's fatal on errors
masak which is actually kinda nice :)
moritz_ aye
masak please spec it.
moritz_ I much prefer that to checkign $! myself
sorear it's supposed to return values, but they get changed to Any somewhere, and I haven't gotten around to figuring out why 22:44
niecza: my $*x; eval '$*x = 42'; say $*x 22:45
p6eval niecza v3-48-gcbe9ac1: OUTPUT«42␤»
masak oh, that explains it. returning values seemed like an easy bit.
sorear (I'm suprised that worked) 22:47
masak rakudo: my $*x; eval '$*x = 42'; say $*x 22:48
p6eval rakudo bd134e: OUTPUT«42␤»
masak \o/
pugs: my $*x; eval '$*x = 42'; say $*x
p6eval pugs: OUTPUT«42␤»
masak by the way, I plan on attacking contextuals next in Yapsi. 22:49
besides all the cleanups I realized I need to do :/
the grammar does a lot of unnecessary backtracking. :(
and it's affecting the FUTURE.
sorear How insane would I have to be to implement m:P5/.../ using GGE? 22:50
masak GGE doesn't support m:P5.
flussence so, very
masak but I don't think it's much work to add that.
the insanity would be in getting GGE to work on Niecza, I think. 22:51
sorear I also wonder just how "G" it would be
moritz_ masak: are you aware that P5 has completely different capture numbering rules?
masak though the fact that the test coverage is fairly good might help.
moritz_: yes.
moritz_: pmichaud seems to have thought of that as well :) 22:52
moritz_ alpha: 'abcd' ~~ m:P5/((.)(.))/; say $2
p6eval alpha : OUTPUT«b␤»
masak that is, the numbering takes place in methods particular to the p6 regexes. for p5 regexes, you'd just write different methods.
pmichaud++ 22:53
PGE also does file/path glob matching.
that's the three "languages" it supports. 22:54
dalek p: 2e788f6 | jonathan++ | src/ (7 files):
Move NQP into a HLL of its own. This is a pre-req for being able to HLL-map things for NQP's use, but will also go a long way to resolving NQP/NQP-rx symbol conflicts.
p: eb5f068 | jonathan++ | src/NQP/ (2 files):
Register NQP as just NQP, not NQP-rx.
p: 4c71035 | jonathan++ | t/hll/0 (2 files):
Update a couple of tests to track NQP moving to its own HLL namespace.
p: 3cc2814 | jonathan++ | src/stage0/ (5 files):
Update bootstrap.
22:56 dorlamm joined 22:57 donri left 22:58 izydor left 23:05 tom_tsuruhara left
tadzik yay, json parser's a bit faster now 23:05
masak \o/
tadzik every string method run is like 100 times faster, and there was over 1000 of them when parsing projects.json 23:06
so instead of terrifyingly slow it's only very slow :)
diakopter encounters a .xz file for the first time 23:07
masak tadzik: I could easily see that in a release announcement. :P 23:08
tadzik of R*? :) 23:09
masak "remember last year? well, last year we were ridiculously slow. this year, we're only extremely slow."
moritz_ tadzik: care to push your changes upstream? :-)
tadzik moritz_: done
ohwait
I did something notnice, but I think no one noticed 23:10
masak a push --force?
tadzik shh!
I said no one noticed!
masak A PUSH --FORCE? :)
sorear xz is awesome 23:13
23:22 dorlamm left 23:23 hatsefla1s is now known as hatseflats 23:26 risou joined 23:27 risou_ joined 23:30 risou left 23:32 porter235 joined 23:33 icwiener left 23:34 colomon left 23:35 colomon joined 23:36 risou_ left 23:40 porter235 left 23:41 rdesfo left 23:46 rdesfo joined
diakopter sorear: how do I build a new boot/ such that my recompiles aren't so dern slow 23:55
23:55 MayDaniel left 23:56 fisted_ joined, fisted left, flatwhatson left
diakopter sorear: I mean, it's actually only 1 minute... but that's "slow" :) 23:57
23:57 colomon left
tadzik moritz_: you around? 23:59