»ö« | perl6-projects.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot: perl6: say 3;' | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by moritz_ on 27 June 2009.
hoelzro yes! 00:00
I fixed up Perl6::Compiler so that you can work with an instance now
00:02 pmurias left
hoelzro oh wait, no I didn't =( 00:04
that damn BUILD issue
00:15 the_irrational_1 left 00:18 justatheory left
hoelzro ok, "now" it's fixed =) 00:18
is adding Any to the list of Perl6::Compiler's parents an acceptable solution to the BUILD problem, or do we need to come up with a better way to subclass Parrot classes into Perl6? 00:30
pugs_svn r27740 | lwall++ | [p6-proj] embolden intro text, tighten up writing a bit to fit 00:34
00:36 razzle joined 00:38 razzle is now known as bpetering 00:39 jauaor joined 00:41 jauaor left 00:42 jauaor joined
hoelzro is the Perl6 grammar available as a BNF somewhere? 00:44
dalek ok: 6242550 | (Hinrik Örn Sigurðsson)++ | (3 files):
Add =encoding directives where needed
00:47
ok: 36f0f99 | (Hinrik Örn Sigurðsson)++ | (9 files):
Bump version to 0.17
bpetering hoelzro: i'm no expert, but i doubt it... the spec isn't really "complete" yet, so the grammar, which is being written in Perl 6, isn't finished 00:52
hoelzro bpetering: mkay 00:53
bpetering ... so subsequest conversion to BNF (*if* that's even possible) isn't done
araujo hello all 00:55
araujo wonders if anyone knows a decent and cheap domain registrant here
hoelzro pmichaud: ping 00:58
so the Perl6 evalbot here...how safe is it? 01:03
bpetering svn.pugscode.org/pugs/misc/evalbot/evalbot.pl 01:09
TimToady Perl6 is not really parsable in pure BNF, but if yo uwant to see the current STD grammar that runs here as the std: bot, that is in pugs/src/perl6/STD.pm 01:10
01:10 orafu left 01:11 orafu joined
bpetering TimToady: what do you mean by "not really parsable?" 01:11
TimToady Perl must know which identifiers are types in order to know whether to expect a term or an infix afterwards
std: say 42 01:12
p6eval std 27740: OUTPUT«ok 00:02 36m␤»
TimToady std: Int 42
p6eval std 27740: OUTPUT«===SORRY!===␤Confused (two terms in a row?) at /tmp/Molly3AKJP line 1:␤------> Int ⏏42␤ expecting any of:␤ bracketed infix␤ infix stopper␤ standard stopper␤ statement modifier loop␤ terminator␤FAILED 00:02 36m␤»
hoelzro TimToady: ah, ok
TimToady and some of those types may come via import, so it's not purely a syntactic decision 01:13
also, the STD grammar relies on an operator precedence parser sandwiched in the middle
it makes it easier for the user to extend the grammar without having to worry about left recursion 01:14
but other than that, it's top-down, not bottom-up 01:15
because that gives much better error messages
(in general)
bpetering so: 01:18
ident ~~ type -> infix 01:19
ident ~~ !type -> term
?
TimToady type or other termish-value like pi
or self
bpetering (excuse the notation)
TimToady but basically, some thing expect more arguments, and some don't 01:20
std: 42 42
p6eval std 27740: OUTPUT«===SORRY!===␤Confused (two terms in a row?) at /tmp/vB6EhwhCB6 line 1:␤------> 42 ⏏42␤ expecting any of:␤ bracketed infix␤ infix stopper␤ standard stopper␤ statement modifier loop␤ terminator␤FAILED 00:02 36m␤»
TimToady 42 doesn't expect an argument :)
bpetering so: 1. is that helpful "two terms in a row" errmsg not possible with a bottom-up parser? 01:21
01:23 nbrown joined
TimToady that's not necessarily one of the more helpful messages 01:24
but it's kind of a default
that's about the most confused that the parser can get
01:24 explorer joined
TimToady but it can be much more specific at times 01:24
std: 1,2,3 >>* 4,5,6 01:25
p6eval std 27740: OUTPUT«===SORRY!===␤Missing << or >> at /tmp/OkMpRMJ5fu line 1:␤------> 1,2,3 >>*⏏ 4,5,6␤ expecting infix_circumfix_meta_operator__S_291LtLt_GtGt␤FAILED 00:02 37m␤»
TimToady std: sub foo {
p6eval std 27740: OUTPUT«===SORRY!===␤Unable to parse block; couldn't find final '}' at /tmp/ZS3MPwof3v line 1 (EOF):␤------> sub foo {⏏<EOL>␤FAILED 00:02 36m␤»
01:26 kane____ joined 01:27 kane___ left
bpetering those are helpful... good to say "need this, missing that" etc 01:28
TimToady std: sub ($a?, $b) {} 01:29
p6eval std 27740: OUTPUT«===SORRY!===␤Can't put required parameter after optional parameters at /tmp/7ad6p5osf8 line 1:␤------> sub ($a?, $b⏏) {}␤ expecting any of:␤ constraint␤ parameter␤ trait␤ whitespace␤FAILED 00:02 37m␤»
TimToady std: my $x; $x ?? $x = 42 !! $x = 43; 01:30
p6eval std 27740: OUTPUT«===SORRY!===␤Assignment not allowed within ??!! at /tmp/l8fQORPobg line 1:␤------> my $x; $x ?? $x ⏏= 42 !! $x = 43;␤ expecting any of:␤ bracketed infix␤ infix or meta-infix (with precedence tighter than item assignment)␤ infix
..stopper␤ stand…
TimToady are you getting the colors in those messages in your IRC client? 01:31
bpetering yeah
was just looking at how STD.pm does that, actually 01:32
01:32 M_o_C joined
TimToady they're just ansi colors 01:33
sjohnson how come i can't see them :(
TimToady pulled in from Cursor, which is currently implemented in Perl 5
sjohnson maybe not irc colours, that's why 01:34
TimToady what client are you using?
sjohnson weechat
TimToady you can see some of the colors at irclog.perlgeek.de/perl6/today
though for some reason it's missing the red on the === around SORRY! 01:35
sjohnson oh those are pretty
3colour 4technology
wolverian weechat does not support ansi colours, and I don't see a plugin for the dev version that would add that feature 01:36
oh well.
TimToady hmm, looks like the irc logger only knows about -----> lines
moritz_: ^^^ 01:37
sjohnson wolverian: do you use or know much about weechat? 01:39
i think it is better than irssi by a long shot
do you use it too?
TimToady obviously not better in every respect :)
bpetering :) 01:41
sjohnson the-apps.org/wp-content/uploads/200...eechat.jpg 01:43
well this guy doesnt have his putty utf-8 settings setup properly, but that's the idea 01:44
literal how can you tell? 01:45
I only see characters that fit into ASCII
sjohnson because the lines separating the nickname list and the channel speech
have squares
instead of utf-8 lines
literal oh
sjohnson here's half a screenshot of my irc client through putty 01:46
members.shaw.ca/smujohnson/img/scre...xample.png
the reason it's half, is because i was only trying to illustrate the red box i made with MSPAINT to someone 01:47
( `ー´)
literal now, I wonder why the same Unicode vertical line isn't used next to the nicknames 01:48
as in xchat
sjohnson ugh, i tried xchat a few years back
maybe it's improved
but there were a good handful of things i didn't like too much 01:49
here, i'll take a screenshot for ye of this chat 01:51
i like how weechat behaves like this by default
instead of irssi, which would take me hours to configure to my liking
literal: members.shaw.ca/smujohnson/img/scre...xample.png 01:52
please acknowledge that you have indeed seen said photo 01:55
so i can take it off
( `ー´)
02:04 meppl left
pugs_svn r27741 | kyle++ | [t/spec] fudge the RT #67888 test 02:16
r27742 | kyle++ | [t/spec] Test for RT #67818 02:27
02:35 tann_ joined, tann left 02:44 kane___ joined 02:45 kane____ left
bpetering rakudo: my $c = eval 'say "foo"'; $c(); #!mk_sense probly 02:48
p6eval rakudo 240b98: OUTPUT«foo␤invoke() not implemented in class 'Integer'␤in Main (/tmp/9aEG1d0l7O:2)␤» 02:49
sjohnson rakudo: my $c = eval 'say "foo"'; say $c;
p6eval rakudo 240b98: OUTPUT«foo␤1␤»
sjohnson rakudo: my $c = 'eval("say \"foo\"");'; $c(); 02:50
p6eval rakudo 240b98: OUTPUT«invoke() not implemented in class 'Perl6Str'␤in Main (/tmp/iZYWAkiF2O:2)␤»
bpetering ok, no bug, thanks sjohnson :)
sjohnson rakudo: my $c = 'eval("say \"foo\"");'; {$c()}.(); 02:51
p6eval rakudo 240b98: OUTPUT«invoke() not implemented in class 'Perl6Str'␤in Main (/tmp/OAhBVgzbY9:2)␤»
sjohnson bpetering: :)
hoelzro it's not hooked up to Rakudo just yet, but I'd say it's coming along: hoelzro.net/try-rakudo/ 02:57
thoughts? 02:59
pugs_svn r27743 | kyle++ | [t/spec] more tests of subsets of collections
bpetering hoelzro: before looking, you'll have to think hard about security :) 03:05
hoelzro bpetering: oh, I know
I've thought about it a lot already =)
bpetering care to share? i'm interested but haven't though about it:)
s/.../thought/ 03:06
hoelzro I was thinking of running forked-off interpreters in a chroot environment, with an rlimit for CPU usage set and compiled from a modified Parrot/Rakudo with limited opcodes and objects.
I'd also set up a memory limit
how's that grab ya?
bpetering hoelzro: how do you limit the opcodes and objects? 03:07
hoelzro bpetering: by removing them from Parrot and Rakudo =P
bpetering what if it's possible to patch them back in? 03:08
i.e., when do you stop removing features? :)
hoelzro bpetering: how do you mean?
ah
I figured remove all I/O and OS interaction
that's a start
bpetering keeping STDOUT would be nice :) 03:09
hoelzro the standard file handle opcodes will be implemented as in-memory streams, so their output can be channeled into the CGI's output
bpetering doing "Try Rakudo" might not be too hard, because it's impl on top of rakudo... 03:10
(for some defn of 'too hard' :-)
err, "top of Parrot"
ie, i'd imagine it'd be easier to remove functionality from Parrot than, say, Perl 5 03:11
hoelzro agreed
how's my security model sound, though?
pretty tight, or did I miss something?
bpetering gimme a few minutes ;) 03:12
hoelzro and also, how's the look and feel for the app?
bpetering similar to "Try Ruby" ;)
hoelzro I'm trying to nail that down first
bpetering but that's intentional, no?
hoelzro bpetering: strangely enough, I've never even used Try Ruby =P
I was just thinking "hmm, command line + file-like + upload file...sounds like a job for a tabbed interface" 03:13
bpetering well, TR's not tabbed, but it looks strangely similar
tryruby.hobix.com/
hoelzro damn, I like that flashing cursor. 03:14
ah, I see
clever.
I could definitely take some good hints from that 03:15
bpetering if the source for that's available it might give some hints, but making said source avail is a security nono
hoelzro just the UI stuff
I've some experience with sandboxed apps 03:16
bpetering (somewhat security nono)
hoelzro ex. I like the reset/Ctrl+D for reseting the interpreter
if you open too many braces or something
03:17 jjore left
hoelzro well, that page + my work on the server side stuff = a good start, I think 03:18
bpetering yep
security for this type of thing is usually trickier than would be nice. 03:19
some thoughts:
03:20 donaldh left
bpetering rakudo can do embedded PIR... might want to check how that's implemented, and make sure to remove any relevant functionality in parrot 03:20
03:20 donaldh joined
bpetering in fact, it might be a good idea to remove all "drop to other language" type stuff 03:21
certainly run() et al
hoelzro bpetering: good point about embedded PIR 03:22
it'd be nice to keep 03:23
but maybe I'll remove it first, and then we can decide to add it back later
bpetering don't keep. 03:24
paranoia's the name of this game. :)
parrot opcodes that look removable: enternative, loadlib, load_bytecode, open, runinterp, spawnw 03:30
(modulo what rakudo needs, ofc)
parrot opcodes that could prove tricky: open. do you want to provide 'use Module;' functionality? 03:31
set_addr: this could be nasty if accessible, see the docs:
docs.parrot.org/parrot/latest/html/...l#set_addr 03:32
stuff that could contribute to DoS: sleep, sweep, trace
(turns on various debugging type stuff, not sure but could slow down VM... DoS amplifying) 03:33
03:34 molaf joined
bpetering i'd guess rakudo needs some of the first list of opcodes, so you'd have to remove functionality at at least 2 points - Parrot ops, and somewhere in Rakudo 03:34
hoelzro bpetering: I say throw way 'use' for now 03:35
bpetering (right now I've learnt more about Parrot)
hoelzro: inclined to agree, ppl can download Rakudo if they want to play with modules 03:36
hoelzro for now, it's basics: looping, manipulation of basic objects
what would be cool
is a sort of object inspector on the right hand side of the page
bpetering i think you'd want to show off as many Perl6 features as possible, no?
hoelzro ex. if a user types 'Foo'
it'll print 'Foo' 03:37
bpetering hmm, the frontend for that could be fun :)
hoelzro and a method/attr list (with docs?) would be populated on the right
I can see it now =)
bpetering docs?
that might have to wait :( 03:38
hoelzro if we can fetch the POD associated with a method
bpetering see what u4x can come up with
hoelzro waiting's fine =)
bpetering what's your timeline for this?
ie, how mature will you accept rakudo being before you make it live? 03:39
hoelzro bpetering: as soon as I finish =P 03:40
that way, people can track new features
however, that's a downside of removing Parrot/Rakudo features for this
having to merge in changes =(
bpetering yep.
i'd think ppl interested in new features wouldn't need a "try rakudo" 03:41
hoelzro I guess it'll be acceptable until Parrot impls PDD 18
bpetering: good point
bpetering IMO, a "try rakudo" would be good for a) showcasing Perl6, b) showing it's not vaporware 03:42
hoelzro bpetering: yeah
bpetering and not really anything to do with a particular impl
hoelzro then we should write a Perl6 impl that compiles to Javascript =)
bpetering honestly, i think doing a backend, with all the security, update headaches that entails, would be easier :| 03:43
hoelzro agreed.
although I was contemplating writing a Perl6 impl that compiles to Lua bytecode
but then I came to my senses.
bpetering a JS impl might be an interesting prototype 03:45
isn't there one around somewhere? 03:46
hoelzro I remember hearing about one once
what was it? k6 or something? 03:47
some not-quite-perl6 impl from like 2 years ago
bpetering so how are you going on the backend for this? 03:51
hoelzro bpetering: well, I was thinking of subclassing Perl6::Compiler
then I found out that my $repl = Perl6::Compiler.new; $repl.interactive; didn't work
and neither would it work for subclasses.
so I fixed that.
and...that's where I am
I was thinking of writing a CGI in Perl5 that forks off children in a chroot jail 03:52
maybe using pipes to communicate the user input and receive output?
bpetering it looks like try-ruby does something similar with irb 03:54
hoelzro it'd be nice to preserve definitions between AJAX posts, so maybe I'll store a child PID in session, with some sort of reaper to clean up unused children?
that sounds sketchy though
bpetering i think its more than nice, it's a must 03:55
hoelzro mkay
bpetering a repl that only gives you one line is highly annoying ... :(
hoelzro bpetering: hop on #lua and try luabot =P 03:56
03:56 asciiville left
bpetering that reminds me: look at the source for evalbot 03:56
(shoulda thought of that earlier)
svn.pugscode.org/pugs/misc/evalbot/ 03:57
hoelzro I saw it
bpetering that impls this
ah, ok.
hoelzro but thanks =)
03:59 justatheory joined, molaf left
bpetering if you don't have epilepsy, i found this: redhanded.hobix.com/bits/theHeartOfTryRuby.html 04:03
04:03 justatheory left
hoelzro now I know why's he's called '_why'. 04:03
bpetering hmm :)
04:06 justatheory joined 04:09 Chillance joined
bpetering hoelzro: good work with "Try Rakudo", i think it's a good idea :) 04:22
biab
04:22 alester joined
hoelzro thanks 04:28
also, it was pmichaud's idea =) 04:29
04:31 justatheory left
bpetering (stolen from ruby) 04:37
but pmichaud++ regardless, a stolen idea is still an idea :) 04:38
well, not stolen if not aware 04:43
04:49 fridim_ joined 04:50 mj41_ joined
bpetering (that last bit didn't make any sense, i need sleep, see you all later :) 04:56
hoelzro: i'd like to help if i can. :)
04:56 bpetering left, frew_ joined 05:01 hoelzro left 05:07 lumi_ joined 05:11 FurnaceBoy left 05:15 edpratomo joined 05:18 mj41 left
tann_ std: class C:<cpan:GSP 1.2.4>; 05:20
p6eval std 27743: OUTPUT«ok 00:02 36m␤» 05:21
tann_ rakudo: class C:<cpan:GSP 1.2>;
p6eval rakudo 240b98: ( no output )
05:23 hoelzro joined, frew_ left
tann_ rakudo: no strict; say 'ok' 05:23
p6eval rakudo 240b98: OUTPUT«ok␤»
05:26 jjore joined, hoelzro left 05:27 edpratomo left 05:29 lumi__ left 05:47 hoelzro joined 05:50 hoelzro left 05:52 lumi__ joined 06:04 sri_kraih_ left 06:05 lumi_ left 06:06 payload joined, explorer left, arthur-_ left, cls_bsd left, rhr left, Aisling left, arejay left, nbrown left, eternaleye left, diakopter left, rjh left, xomas_ left, antiphase left, c1sung left, TimToady left, shachaf left 06:32 diakopter joined, Aisling joined, rhr joined, cls_bsd joined, arthur-_ joined, explorer joined, antiphase joined, c1sung joined, rjh joined, xomas_ joined, shachaf joined, eternaleye joined, arejay joined, nbrown joined, TimToady joined, irc.freenode.net sets mode: +oo diakopter TimToady, xomas joined, xomas_ left 06:34 xomas is now known as xomas_ 06:36 kane___ left 06:57 sri_kraih joined 07:20 donaldh left, donaldh joined
jjore So is Perl 6 supposed to be in anything qualifying as unicode or something more specific like utf8? 07:22
07:27 meteorjay left
tann_ rakudo: for 1..9 -> $x, $y { say $x }; # fake :by(2) 07:31
p6eval rakudo 240b98: OUTPUT«1␤3␤5␤7␤StopIteration␤in Main (/tmp/oiTDwLWwkn:2)␤» 07:32
jjore I ask because recently I found from testing 5.10.1-rc0 that there's no GNU diff yet that understands cpansearch.perl.org/src/ADAMK/Parse...le_bom.yml 07:34
07:35 M_o_C left, alester left, john_blue joined
jjore It fills me with doubt that it's a good idea to have unicode source. 07:37
07:37 Chillance left 07:42 john_blue left 07:43 john_blue joined 07:52 Su-Shee joined
Su-Shee good morning, future. ;) 07:52
moritz_ good morning rice dish ;-)
Su-Shee of course. you are awake. 07:53
moritz_: you sleep from 01:00 to 07:00? ;)
moritz_ Su-Shee: uhm, I just got up. 07:55
Su-Shee this makes me feel a little better. ;) 07:56
08:07 cognominal left 08:11 cognominal joined 08:16 kcwu left, kcwu joined
sjohnson hi! 08:16
i'm awake too, don't forget about me
moritz_ good localtime sjohnson ;-) 08:18
sjohnson it's 1:18am here
had a few beers and wine, now i'm at a friend's place.. too drunk to drive home 08:19
oopsies
Su-Shee sjohnson: whenever I go into the channel in the morning: moritz is already there. whenever I go to sleep in the evening: moritz is still there. ;)
moritz_ Su-Shee: my IRC client is open 24/7 - that doesn't really mean that I'm awake. 08:20
Su-Shee moritz_: I actually just count you really saying something. ;) 08:21
sjohnson moritz_: do you use GNU screen technoogy?
technology*
moritz_ sjohnson: yes, screen + irssi
sjohnson moritz_: members.shaw.ca/smujohnson/img/scre...xample.png
i use weechat
sjohnson likes weechat more 08:23
moritz_ looks decent too 08:24
Su-Shee good lord, in how many channels are you chatting?! :) 08:25
sjohnson can you show me a screenshot moritz_ ?
i tried irssi, but it looked like it would take hours for me to set it up the way i like it
moritz_ sjohnson: just a sec... 08:26
sjohnson thanks
moritz_ sjohnson: moritz.faui2k3.org/tmp/irssi.png 08:27
sjohnson thats not too bad
though that's a really small window 08:28
is that all you need to surf the ircs?
Su-Shee mine looks pretty much the same. just different colouring.
moritz_ sjohnson: yes, that's all
sjohnson nice 08:29
Su-Shee sjohnson: irssi is a nice nobrainer-irc client, if you don't need anything fancy and "just working". but: IF you really want to do super fine grained configuration, you can have that too. ;) 08:30
moritz_ right, you can write plugins in Perl. The API is not well documented, but there are tons of examples. 08:31
jjore is currently enjoying erc, an emacs based irc. It's surprisingly nice.
sjohnson i use weechat cause the api is well documented, and supports 5 scripting languages + C 08:32
obviously, i would choose Perl as the language to code in
i am writing a plugin for it in Perl actually, which is kinda neet
jjore Thought I'd like to hear what flavor of unicode perl 6 is supposed to use. Iz it utf8 or just any thing unicode? 08:33
moritz_ jjore: it abstracts away the encoding; a Str is just a Unicode string, without paying attention to the byte representation 08:36
08:36 pmurias joined
moritz_ so supporting a specific encoding (UTF-8, UTF-16LE/BE, ...) is just a matter of adding an encoding and decoding step 08:36
and I'm sure that all the UTF-*s (perhaps except UTF-7) and all major legacy encodings (ISO-8859-*, shift-jis, ...) will be supported too 08:37
08:38 payload left
jjore Oh sorry, I meant, what is the source code supposed to be in? 08:45
moritz_ probably UTF-8, unless specified otherwise
jjore Well... yes, but if it's allowed to be otherwise, that may be a problem because stuff like diff can't handle text like cpansearch.perl.org/src/ADAMK/Parse...le_bom.yml 08:46
and it'd be a pain and forever to not get to use diff. 08:47
moritz_ maybe diff needs to be taught about other file encodings then?
jjore Oh, I'm sure. 08:48
moritz_ anyway, the fact that UTF-8 is the default will probably encourage most people to actually use it
jjore but that seems like it'd be years into the future before it's practical because the updated diff is available enough.
So the answer I was looking for was "Perl 6 is in unicode", not "Perl 6 is in utf8" 08:49
08:49 payload joined
jjore I assume being in unicode implies that all the many funny things like this example UTF-16LE that doesn't pass difftools. 08:50
08:51 payload1 joined, payload left
moritz_ producing a working compiler won't be the only challenge that Perl 6 faces 08:53
08:56 tann joined
pmurias jjore: Perl 6 shouldn't force you to use a sensible encoding 08:56
(OTOH using iso-8859-1 might be serious enough for an warnning ;) 08:57
jjore *shrug* k 08:59
So fwiw, diffutils circa 200[12] is the last prod release, dev continued on into gitland until early 2008 and there's no more commits though alegedly now the git version handles multibyte encodings 09:00
but doesn't handle alias's example. doesn't matter incredibly much right now but could 09:01
moritz_ (Rakudo broke the 12k tests barrier, 12027 passing) 09:02
pmurias it shouldn't be impossible to write a unicode enabled diff in perl6 09:03
09:03 lumi_ joined
jjore Oh, I'm sure its fine. 09:05
09:12 tann_ left 09:18 lumi__ left 09:27 jauaor left 09:45 charsbar joined 09:48 tann left 09:52 payload joined, payload1 left 09:53 zamolxes_ joined, zamolxes left 09:55 Front_slash joined 10:07 charsbar left 10:09 charsbar joined 10:10 cognominal left 10:12 cognominal joined 10:16 wknight8111 joined 10:30 explorer left 10:41 Su-Shee left 10:46 szabgab left 10:58 lumi_ left 11:00 lumi_ joined
jnthn o/ 11:10
moritz_ \o 11:12
-o- 11:14
\o-
|o-
|o/
|o| <-- Christmas
11:20 donaldh left, donaldh joined 11:26 Su-Shee joined
colomon Hi all... I'm still looking at that match variable in range stuff from last night. (RT #67882, pugs r27729) 11:37
11:38 masak joined
masak greetings, adventurers! 11:38
colomon I'm wondering if anyone has a clear notion of what happens to numeric strings passed in to the range operator.
I don't see any tests for it in range.t.
masak colomon: an excellent question!
my guess is that they're treated as strings. 11:39
colomon I tried to write one, but I fear I'm not subtle enough yet.
masak oh, but as a test writer you need to be blunt. not subtle :)
jnthn "treated as strings" feels like the clean answer. 11:40
colomon Yeah, but you need to be subtle to figure out a test case where you can tell the difference.
(That's where I'm not subtle enough.) 11:41
If you do treat them like strings, then my code yesterday was wrong -- because I was expecting the match vars to be treated as numbers -- but still represents a rakudobug (because they weren't treated as strings, either). 11:42
jnthn I guess maybe infix:<..>(Num, Num) makes a numeric range, infix:<..>(Str, Str) makes a string range, and then we could define an infix:<..>(Any $f, Any $t) { infix:<..>(~$f, ~$t) } or something. 11:43
masak rakudo: my $a = "100.00"; ++$a; say $a
p6eval rakudo 240b98: OUTPUT«101.00␤»
masak hm.
rakudo: my $a = "-100.00"; ++$a; say $a 11:44
p6eval rakudo 240b98: OUTPUT«-101.00␤»
masak there's a difference :)
jnthn o_O
masak not that strange, actually.
colomon wait, how does that -100.00 to -101.00 make sense? 11:45
masak :)
masak watches hilarity ensue
colomon jnthn: Is ~$f $f stringified? 11:47
rakudo: my $a = "AABF"; ++$a; say $a 11:49
p6eval rakudo 240b98: OUTPUT«AABG␤»
colomon rakudo: my $a = "100.B"; ++$a; say $a
p6eval rakudo 240b98: OUTPUT«101.B␤»
jnthn colomon: Yes. 11:50
colomon rakudo: my $a = "99.B"; ++$a; say $a
p6eval rakudo 240b98: OUTPUT«100.B␤»
colomon Okay, so maybe my code of yesterday wasn't wrong -- because incrementing a string with a leading number in it is like incrementing the number part of the string only? (Still don't understand the -100.00 case.) 11:51
jnthn colomon: Seems it had a good chance of working, if Rakudo had stringified the match objects at the point of constructing the range, yes. 11:52
I'm not completely sure that's the right answer, but may be the way forward.
masak colomon: actually the '-100.00' case is one of those corner cases where people's expectations will vary depending on the situation. also known as a "you can't win" corner case. :/ 11:54
colomon: vim treats the minus sign as part of the number. I'm often surprised by that when I use ^A and ^X and their effects are reversed. 11:55
especially in cases when the dash before the number was _not_ a minus sign!
colomon I guess what surprises me about that is I don't understand why the '-' is not incremented if it is not part of the number. 11:56
rakudo: my $a ="A99B"; ++$a; say $a
p6eval rakudo 240b98: OUTPUT«A99C␤»
wolverian masak: use the correct dash characters then? :)
moritz_ colomon: only things that look like digits or word characters are incremented by ++ 11:57
rakudo: my $x = '#'; say ++$x
p6eval rakudo 240b98: OUTPUT«#␤»
masak wolverian: if it were only up to me, maybe. but often enough I'm editing other's files.
moritz_ IMHO that would warrant a warning
masak wolverian: vim will do wrong with something like this: 'Chapter 2- - - - - - - - - -76'
wolverian masak: everyone should have a personal bug tracker
ah. 11:58
colomon rakudo: my $x = "-A-A"; $x++; say $x
p6eval rakudo 240b98: OUTPUT«-A-B␤»
masak wolverian: the feature as it stands now makes more sense in programming languages than in ordinary text.
wolverian: but even in comments there might be misunderstandings.
moritz_ rakudo: my $x = 'foo.bar'; say ++$x 11:59
p6eval rakudo 240b98: OUTPUT«fop.bar␤»
colomon rakudo: my $x = "foo-bar"; say ++$x
p6eval rakudo 240b98: OUTPUT«foo-bas␤»
masak rakudo: my $x = 'foo.bar.baz'; say ++$x 12:00
p6eval rakudo 240b98: OUTPUT«fop.bar.baz␤»
masak KyleHa++ # yay, Austria got into the spectests! :D 12:01
12:02 jauaor joined
moritz_ just did a sweep over the Perl 6 wikibook 12:02
I did some of the changes anonymously (forgot to log in), so they need approval
jauaor morning
masak jauaor: oh hai 12:03
jauaor hi masak !
masak really likes Ben Morrow's email to p6l 12:04
jnthn Aj, all good questions. 12:07
jnthn would be curious to know the answers to those too
moritz_ will write a mail with some proposals later 12:09
12:10 meppl joined, sri_kraih left, sri_kraih joined
masak will re-read S04 to see if he's smart enough to guess the answers 12:11
jnthn will just sip idly on his coffee 12:15
12:17 nihiliad left 12:22 M_o_C joined
jauaor trying to find a decent identifier for something like self-> 12:31
masak jauaor: a 'decent identifier'? isn't 'self' itself a decent identifier? 12:32
jauaor masak: mm... it doesn't seem .... hackish to me 12:33
12:33 kimtaro joined
jauaor :P 12:33
i was wondering if such a word could just be replaced by some kind of sigil
masak jauaor: well, instead of self.attribute you can write $.attribute
jauaor mmm 12:34
that sounds good
masak: this is how perl6 does it?
masak jauaor: aye.
jauaor is also writing a small language
i guess nobody will bother if i try this feature too right? :P 12:35
jauaor "borrows" ideas from perl
but nah, $. won't make for it, i already use $ and . for other important things ....... 12:36
though i a looking for some kind of sigil
masak rakudo: class Austria { has $.anthem; submethod BUILD() { $!anthem = $*IN.slurp }; method foo() { say $.anthem } }; Austria.new.foo 12:38
p6eval rakudo 240b98: OUTPUT«Land der Berge, Land am Strome,␤Land der Äcker, Land der Dome,␤Land der Hämmer, zukunftsreich!␤Heimat bist du großer Söhne,␤Volk, begnadet für das Schöne,␤vielgerühmtes Österreich,␤vielgerühmtes Österreich!␤␤Heiß umfehdet, wild umstritten␤liegst dem Erdteil du inmitten,␤einem
..stark…
masak Rakudo++
let's see a newcomer try and explain _that_ trick!
literal o_O
jauaor figuring out 12:39
masak *lol*
jauaor guesses BUILD() is run in instance creation time and slurp is some descriptor taking value from some mystic place? :P 12:41
masak so far, so good. 12:42
jauaor and the $! implies some kind of mutability?
not sure, it just seems at first like that to me
masak the '!' twigil indicates that I'm working directly on the attribute variable. 12:44
and not through some lvalue accessor which might have opinions about my changing the variable.
jauaor oh i see 12:45
so, this is like some 'safer' way of assigning a value to this attribute ?, or is it actually mandatory for in this case for some reason? 12:46
jauaor probably has to read moritz_ tutorials 12:47
masak jauaor: no, I could have done either $! or $. here.
moritz_ $.? 12:48
masak jauaor: personally, I prefer $! because it feels less complicated.
12:48 ruoso joined, tuH_JoNaTAn_Shul joined
masak moritz_: well, the '.' non-twigil. 12:48
jauaor mm
ok, but they are actually different things right? ... just that would have the same effect here? 12:49
12:49 tuH_JoNaTAn_Shul left
masak jauaor: I've seen people argue that it's more OO-ly pure to do $.attr 12:49
jauaor: there are two schools of thought there.
ruoso Hello
masak jauaor: yes, as long as you don't have a funky accessor they amount to the same thing.
jauaor I see
masak jauaor: but $.attr does a method call, and $!attr doesn't.
moritz_ rakudo: class A { has $!a = 5; method a() { $!a * 2 } }; say A.new.a 12:50
jauaor masak: well, as you speak to me, $! seems like more functional than OO
p6eval rakudo 240b98: OUTPUT«10␤»
jauaor to me
masak jauaor: oh! and I was wrong. assigning to $.anthem wouldn't have worked in my code.
ruoso masak, you forgot to mention Faz in your web stack... it's an alternative implementation for Routes based on regexes
masak jauaor: because I didn't make the attribute rw.
jauaor masak: aaaah
ruoso it just needs a syntax sugar on top of it 12:51
jauaor i get it, so there $! indeed works like some kind of mutability operation?
masak ruoso: oh, right. care to add it in a comment? or I can edit the post...
jauaor: no, $!anthem is the actual variable.
jauaor: some people call it 'the storage location'.
moritz_ jauaor: the $!foo thing is really the attribute. $.foo is just a way of accessing it, but by default it's ready-only
jauaor I see I see
moritz_ so it's another abstraction layer
jauaor oh, i see that 12:52
get it
masak jauaor: when you declare $.anthem, you get both the attribute $!anthem, plus a read accessor.
jauaor So $. is like a layer with more sugar on top?
masak (and a write accessor, if you make it rw)
jauaor: yes.
jauaor I get it
:)
masak jauaor: when declaring, it gives you accessor. when in code, it calls them.
jauaor I see 12:53
so, this is the way of getting magically getter/setters ?
masak yes. 12:54
also, as an added bonus: if you have a method foo in your class, you can do $.foo instead of self.foo, and that will work.
ruoso masak, I can add as a comment 12:55
jauaor masak: i see.. nice
masak ruoso: thank you. I do value the Faz effort -- it's exactly the point of Web.pm that people should be able to hook their own things onto it, and Faz makes for a good example of that. 12:56
ruoso basically $!a is resolved at compile time to the slot in the object
jauaor likes what he has seen about OO in perl6
ruoso while $.a is *always* a method call
it's just that in Perl 6 there is no such thing as public attributes
jauaor ruoso: i see .. $!a is like the 'crude fish'
ruoso jauaor, yeah... it's a concrete reference to a known container 12:57
jauaor I se .. I like the notation $!
it really implies very well that to me
ruoso tipically it's called "private"
masak, er... i don't have a use.perl.org account... would you mind adding it to the post? 12:58
jauaor thanks masak , moritz_ , ruoso 12:59
ruoso jauaor, and $.a is the "public" access... but it's simply because "has $.a" is the same as "has $!a; method a is rw { $!a }
masak ruoso: I'll do that. any thoughts on what to write?
jauaor good explanation, i will go through docs better for further info
ruoso masak, just describe it as a regex-based uri-to-action dispatch system 13:00
masak ruoso: ok.
jauaor ruoso: yeah, i can see ... it gives some kind of layer on top
ruoso which supports chained actions
jauaor, the important aspect is that you can't access the data of the object from outside without calling a method 13:01
jauaor, unlike Java, for instance...
masak still doesn't fully grok chained actions
jauaor ruoso: i see, so, you always need your getter
?
ruoso masak, considering /blog/category/perl/post/abc it will invoke, in order, the action to initialize the blog, to find the category and at last to find the post abc in that category 13:02
jauaor, but in Perl 6 you don't need the f**king getAttribute and setAttribute... you simply access the value and the method will be called
jauaor I can see now :) 13:03
that's cool indeed
masak ruoso: yes, I get that part. I guess I haven't written enough web apps to try it out, that's all.
ruoso masak, think of it as "in order to get the post, I first need to get the category" and "in order to get the category, I first need to initialize the blog" 13:04
masak ruoso: yes, I get that part. :)
ruoso and you can re-use the inner actions
that's the most important part
masak but how, for example, is data passed between the actions in the chain?
because that has to be the advantage of it all, that data is passed down to later actions. 13:05
ruoso: there. use.perl.org/~masak/journal/39351 13:07
ruoso masak, that's what you use the stash for 13:08
masak ah, there's that word again.
ruoso and the stash is usually visible from the template in an easy way 13:09
masak ok.
ruoso stash is just a bag of data
masak that description is not helpful at all. :)
everything is just a bag of data. 13:10
ruoso i mean, the stash is the place you store the data that is going to be used in the next steps of the processing 13:11
masak ok.
ruoso i.e. passing the data to the other actions
masak right. sounds like the stash is indeed the answer to my question.
ruoso yes... 13:12
mst has some idea on how to do it without the stash, by using context variables... but I don't quite see how it works
masak nod. 13:13
13:14 rfordinal joined
pugs_svn r27744 | moritz++ | [t/spec] add test descriptions, and unfudge test for Rakudo 13:15
ruoso masak, github.com/ruoso/faz/blob/0456ff1fa...ib/Yarn.pm
masak, if you look at line 131, you'll see the stash in action, where the value was set in lin 83 13:16
masak thank you. that makes it clearer for me. 13:17
dalek kudo: 4c31fb7 | moritz++ | build/PARROT_REVISION:
bump PARROT_REVISION to get better handling of lexical subs
13:18
13:21 tu_MoreNiKo_VaSi joined 13:22 tu_MoreNiKo_VaSi left
dalek ok: b04d463 | (Hinrik Örn Sigurðsson)++ | (2 files):
Add some diagnostics to tests
13:29
ok: 899db73 | (Hinrik Örn Sigurðsson)++ | (9 files):
Bump version to 0.18_01
colomon rakudo: my $x is Int; say $x.WHAT 13:53
p6eval rakudo 240b98: OUTPUT«sh: ./perl6: No such file or directory␤»
colomon Whoops.
moritz_ it's rebuild tiime
colomon Was that the right way of doing that? 13:54
moritz_ my Int $x;
colomon moritz_++
moritz_ '$x is Int' means that you want to replace the container type by Int (which is neither implemented yet, nor does it make sense in the case of Int)
masak std: my $x is Int;
p6eval std 27744: OUTPUT«ok 00:02 37m␤»
colomon Huh. When I try my Int $x; say $x.WHAT using perl6 and -e, i get Malformed declaration. 13:56
probably using -e incorrectly?
moritz_ rakudo: my Int $x; say $x.WHAT
p6eval rakudo 4c31fb: OUTPUT«Int()␤» 13:57
moritz_ colomon: maybe you didn't quote or escape the command line properly?
on unix/linux you need perl6 -e 'my Int $x; say $x.WHAT' # note the ''
colomon ' instead of "
?
moritz_ right 13:58
colomon Ah, yup, that's it.
moritz_ $x is interpolated as an environment variable by the shell inside double quotes
colomon Bad habits left over from the long years of Windows being my primary operating system.
Thanks!
I've been playing around with additional tests in spec/S03-operators/range.t, half-trying to understand what range does and half trying to understand what it should do. 14:08
Not sure if it makes sense to check these into the system -- worried they might be too obvious. Or wrong.
moritz_ colomon: just nopaste them somewhere, so I can take a look 14:10
14:11 szabgab joined, szabgab left
colomon They are variations on the tests KyleHa did yesterday. 14:11
14:12 asciiville joined, kimtaro left
lisppaste3 colomon pasted "Potential range.t tests" at paste.lisp.org/display/84225 14:12
moritz_ colomon: looks rather well... two things you can improve 14:13
1) make sure to mark tests which rakudo doesn't pass with #?rakudo todo 'reason'
colomon all ears
moritz_ 2) is $range, ("1","2","3"), 'range is correct';
should really be
is $range.list, ('1', '2' ... 14:14
(you can abbreviate the list as <1 2 3>, but the important thing is that it's $range.list)
that's it.
colomon Interesting.... I just did that the way KyleHa did. Should I fix those tests as well, or is it a string-specific thing? 14:15
moritz_ it would be great if you could also fix the others
colomon rakudo passes all these tests now -- this was more an attempt to codify what it does now as a test. 14:16
moritz_ great
colomon Okay, I'll check these in in a minute. 14:18
whoops, that's interesting.
14:19 fridim_ left
colomon Switching that last test to your suggestion makes it fail. 14:19
BRB
pmichaud good morning, #perl6 14:22
Su-Shee pmichaud: I read you said something like "rakudo 1.0" and "spring 2010"? :) 14:23
pmichaud Su-Shee: yes, that's corect. :)
*correct.
Su-Shee the easter edition. :) 14:24
pmichaud we're still working out details, but my expectation is that we'll have some sort of major release of Rakudo by then
Su-Shee sees bunnies and pretty flowers in addition to the butterfly...
pmichaud (it's not only my expectation, it's my plan)
Su-Shee pmichaud: this would be so incredibly great I can't even put it in words. :) 14:25
pmichaud my goal for yapc::eu is to work with jnthn++ and others to lay out a detailed plan and timeline for making it happen
Su-Shee pmichaud: very cool. 14:26
I'll gladly hook the german IT press then. 14:29
14:30 john_blue left
colomon moritz_: I see. <1 2 3> is not the same as <1, 2, 3>. 14:35
14:36 hoelzro joined
pmichaud yapceurope2009.org/ye2009/wiki?node=RakudoBOF 14:37
pugs_svn r27745 | colomon++ | Add another range test case around the match operator, and an equivalent test WRT string variables.
masak I think I could contribute by putting together a list of 1.0 blockers in RT :) 14:40
pmurias ruoso: hi
jnthn masak: Taht'd be interesting to see. 14:41
14:42 FurnaceBoy joined
masak how do I sign up for the BOF? 14:42
Su-Shee hm. a perl 6 bootcamp later next summer would be nice then. 14:44
masak huh, seems the right way was to edit the BOF page, and knowing what one's user ID was... 14:45
14:48 hoelzro left 14:50 sri_kraih left
pmurias ruoso: i'm thinking of trying tracing gc, as i can't imagine solving all the wird leaks and memory errors 14:51
15:02 ruoso_ joined
moritz_ colomon++ 15:11
15:11 ruoso left 15:13 hoelzro joined
hudnix rakudo: say <two things>.perl, " ", <onething>.perl 15:14
p6eval rakudo 4c31fb: OUTPUT«["two", "things"] "onething"␤»
masak hudnix: yes, because <> is sugar for () and quoting, and things without a comma aren't lists. 15:15
moritz_ didn't even see a question ;-)
but notice that typical list methods (like .join, .map etc.) will still work on <onething> 15:16
hudnix still, could perhaps cause some confusion
15:16 szabgab joined
moritz_ right 15:17
but it could also cause confusion the other way round
szabgab I might just making noise here but I think the eval_dies_ok of Test.pm is always ok, is that on purpose or am I misunderstanding something ? 15:18
moritz_ rakudo: use Test; plan 1; eval_dies_ok '1', 'something' 15:19
p6eval rakudo 4c31fb: OUTPUT«1..1␤not ok 1 - something␤# Looks like you failed 1 tests of 1␤»
moritz_ szabgab: not always ok... or did you mean something else?
szabgab hmm, strange, maybe I am using the wrong Test.pm ?
moritz_ i'm using the one in the rakudo repo 15:20
15:20 donaldh left
szabgab I thought the same, let me double check it 15:20
15:20 donaldh joined
pmichaud masak: (1.0 blockers) I'm likely to create a page in the github wiki to maintain this. But part of what we have to decide is what will be a blocker and what will not. 15:27
masak pmichaud: aye. 15:28
the first thing that comes to mind is the REPL.
pmichaud The biggest issue I see is figuring out what to call the release. If we call it "1.0", we need to have some way to make it clear that "Rakudo 1.0" is not intended to be "all of Perl 6"
Yes, the REPL is on my list of "must haves"
15:28 KyleHa joined
masak Rakudo currently does not have a 1.0 REPL. 15:28
pmichaud: to be honest, I don't see much need for a '1.0' label for Rakudo in 2010. but you might have some PR argument for it that I haven't seen yet. 15:29
pmichaud masak: I'm writing a post, but here's the argument summary
(1) Many people will not seriously consider Rakudo as something to even experiment with before it has some sort of "major release" 15:30
(2) Many parts of the Perl 6 specification are waiting on implementations to experiment with them before being solid
(3) The primary mechanism for moving implementations forward is writing real programs using them 15:31
masak nod.
KyleHa If I find an open bug in RT that seems not to be a bug any longer, should I resolve it or note it for someone else to resolve, or what?
pmichaud ergo, in order to get resolution on some parts of Perl 6, we need a "major release" of some sort that pre-dates it.
KyleHa: if there's a test for it and it's no longer a bug, resolve the ticket. 15:32
masak pmichaud: that was basically what I thought you'd say.
pmichaud: I'm not opposed to a 1.0 release, and I do hope it'll bring in more app devs.
pmichaud I also think that having a target with some very clear goals will be hugely beneficial.
masak aye, probably. 15:33
pmichaud so it's not so much PR, as I see it as being a necessary step on the path to getting to a full Perl 6 implementation
(yes, it has PR benefits too, as long as we don't screw it up, but the need for more applications is the primary driver) 15:35
masak biggest risk I see is people looking at it, saying "Ten years later, _this_ is what you release?" I love Rakudo, but people on the outside don't always seem as tolerant. 15:36
(but I guess by my reasoning, one should never release any Perl 6 implementation.)
szabgab raludo: use Test; plan 1; class abc { method y() {} }; my $z = abc.new; $z.y; eval_dies_ok('$z.y')
pmichaud yes, that's why I'm not sure I want to call it "1.0" 15:37
szabgab rakudo: use Test; plan 1; class abc { method y() {} }; my $z = abc.new; $z.y; eval_dies_ok('$z.y')
p6eval rakudo 4c31fb: OUTPUT«1..1␤ok 1 - ␤»
pmichaud The real point of the BOF (and these discussions) is not just to plan the technical details, but also to discuss how we can best manage expectations
szabgab moritz_, why is that ok ? 15:38
15:38 wknight8111 left
pmichaud rakudo: use Test; plan 1; class abc { method y() {} }; my $z = abc.new; $z.y; eval('$z.y') 15:38
szabgab and btw if I try the above on the command line with -e it blows up on rakudo from 3 days ago 15:39
p6eval rakudo 4c31fb: OUTPUT«1..1␤# Looks like you planned 1 tests, but ran 0␤»
15:39 buubot left 15:40 buubot joined
szabgab pmichaud, so I don't understand 15:41
pmichaud szabgab: I think I'm agreeing with you.
(testing locally)
oh, oh oh
I know the problem.
This is the same problem as before. When eval_dies_ok runs, $z isn't in scope. 15:42
(we had this discussion on #perl6 about a week or so ago)
szabgab I am always so proud when I find a bug :-)
pmichaud it's not really a bug.
szabgab even if I am not the first one :-)
:-(
pmichaud or if it is, we have to decide that eval_dies_ok somehow runs in the lexical scope of its caller. 15:43
here's what is happening now
szabgab so how can I test that a method call blows up ?
15:43 edpratomo joined, hoelzro left 15:44 masak left
pmichaud rakudo: use Test; plan 1; class abc { method y() {} }; eval_dies_ok('abc.new.y'); 15:44
p6eval rakudo 4c31fb: OUTPUT«1..1␤not ok 1 - ␤# Looks like you failed 1 tests of 1␤»
szabgab yeah, but it is not really natural 15:45
what if I need lots of object prparaton to reach that case when it should blow up ?
pmurias pmichaud: how do you implement in Perl6 an eval_dies_ok that runs in the scope of the caller?
pmichaud well, we'll probably need to decide that "eval_dies_ok" runs in the lexical scope of its caller; (e.g., using "lift"). Rakudo doesn't implement "lift" yet.
szabgab so for now I have a solution, thanks 15:46
pmichaud pmurias: See S04:680
szabgab but I think it is better be able to handle this
pmurias pmichaud: is lift powerfull enough? 15:48
pmichaud pmurias: I think it should be. This sort of thing is what I think lift is designed to solve.
pmurias my $x;lift eval("$x + $y");
pmichaud: eval would need to be specially built to recognise lift 15:49
pmichaud eval already has to recognize the lexical scope of its caller
szabgab pmichaud, and btw have you tried my example on the command line ?
it does not seem to parse it
pmichaud lift simply incorporates the caller's lexical scope into its own
15:49 LionMadeOfLions joined
pmichaud szabgab: how are you entering your example on the command line? Are you using double-quotes? 15:50
pugs_svn r27746 | kyle++ | [t/spec] Test for RT #64668
r27747 | kyle++ | [t/spec] RT #63460 test: let the harness check the error message
pmurias yes, one could view it as mergeing the caller's and outer scope into one
szabgab oh yes, sorry 15:51
pmurias pmichaud: should "lift MY::<$variable_from_caller>" work? 15:52
15:52 szabgab left
pmichaud pmurias: I have no idea... hadn't thought about that much 15:52
moritz_ only if $variable_from_caller is declared as context, probably 15:54
jnthn dies_ok { $z.y }, ...; # fine here too 15:59
(since you're passing the closure...)
ruoso_ pmurias, lift MY::<$variable_from_caller> should work, but that isn't even nevessary... lift $variable_from_caller should work as well 16:01
unless there's a variable by the same name in the current scope 16:02
but... why would you use lift MY when you can just do CALLER::
?
pmurias ruoso_: the point of the example was to determine if lift creates a new hybrid lexical scope or just lift the unknown variables 16:03
ruoso_: do you think it would be sensible if write a simple tracing gc for smop to see how it fits in/works? 16:12
ruoso_ pmurias, lift creates a lexical scope that intercepts the "outer" of the current routine to replace it by caller 16:13
pmurias, the problem with that is that it would not be compatible with p5 16:14
pmurias, the trace gc, I mean
pmurias you mean it will be incompatible with making SV* a SMOP object, or with normal p5 interop? 16:15
ruoso_ both
pugs_svn r27748 | kyle++ | [t/spec] Test for RT #64686 16:16
16:16 nihiliad joined, payload left
ruoso_ because when you send a smop object to a p5 function, it will be unreachable by other smop objects 16:16
and since p5 doesn't implement trace
the value will be destroyed...
pmurias when you REFERENCE a trace object it receives a reference counter 16:17
like $refcount{$obj}++
ruoso_ so you'll need both gc's at the same time 16:18
you'll always refcount
16:18 snearch joined
ruoso_ but you'll also trace them 16:18
pmurias when doing heavy interop yes
ruoso_ yeah... which is the plan... 16:19
which will happen when you use a module from CPAN
pmurias using both gc's at the same time would require extra storage of an int per object 16:25
we could implement the gc at first only as a debugging aid (it would be used to find which unreachable objects have a positive refcount) 16:26
ruoso_ that'd be helpfull, but i'm not sure it's worth the trouble 16:28
pmurias do you think we can manage to manually find all the leaks? 16:29
ruoso_: we might be even able to use one bit of the refcount for marking reachable objects (if a 31 bit refcount is enough) 16:36
16:36 stepnem left 16:43 szabgab joined 16:51 fridim_ joined 16:52 Psyche^ joined 16:57 KyleHa left 16:58 lucs joined 16:59 edpratomo left 17:04 Patterner left, Psyche^ is now known as Patterner 17:06 snearch left 17:14 tann joined, Su-Shee left 17:22 payload joined 17:26 nbrown left 17:28 hoelzro joined
hoelzro pmichaud: ping 17:28
moritz_ hoelzro: in r27733 you introduced Perl6::Compiler into the test suite, but I can't find any mention of that class in the specs. Care to explain? 17:29
hoelzro moritz_: isn't the Perl6::Compiler class the REPL? 17:30
moritz_ hoelzro: it might be in Rakudo, but the spectests are intended to be implementation agnostic
hoelzro ah, my mistake
well, that's the class I got BUILD to break on 17:31
moritz_ (we do add regression tests because other implementations might make the same mistakes)
hoelzro I'm not sure which other classes (if any) break BUILD
moritz_ if it's something Rakudo specific, it should go in t/* somewhere in the rakudo repo 17:32
hoelzro also, the patches I sent in last night would fix the problem for Perl6::Compiler
moritz_: alright
thanks for the tip =)
I'll move that over sometime tonight
moritz_ maybe we need t/02-rakudo/ or so
but that's something we need to discuss with pmichaud
hoelzro ok 17:33
17:34 nbrown joined
moritz_ anyway, thanks for submitting patches and tests; I just don't know enough of these parts of the compiler to review and apply them 17:38
17:38 fridim_ left
hoelzro moritz_: no problem, the more I think about it, the more Rakudo-specific that test feels =P 17:42
ruoso_ pmurias, I think as we move to mildew, less is the chance of new leaks... if smop is made leak-free, mildew will be leak-free as well... we just need more tests in smop to raise the points that mildew is currently causing leaks 17:51
17:56 Whiteknight joined, alester joined 18:13 fridim_ joined 18:18 tomaw- left 18:25 iblechbot joined 18:26 stepnem joined 18:28 jauaor left 18:34 hoelzro left, tomaw_ joined 18:37 cls_bsd left 19:10 hoelzro joined 19:16 hoelzro left 19:20 donaldh left, Front_slash left, donaldh joined
pmurias ruoso_: smop is leak free 19:32
the test suit is leak free
ruoso_ pmurias, so... if mildew has leaks, it's because we are missing tests in smop
we need to get tests that reproduce the situations where the leaks raise... 19:33
19:42 szabgab left 19:43 szabgab joined, dKingston joined 19:47 kane_ joined 20:07 donaldh_ joined 20:10 nbrown left 20:15 szabgab left 20:36 frew_ joined 20:47 szabgab joined 20:55 szabgab left 21:21 frew_ left 21:36 TimToady left 21:41 pmurias left, lumi_ left, shinobi-cl joined 21:42 maja__ joined, diakopter left
shinobi-cl some guy asked me about how to make a program that understands "natural language" 21:43
i told him that perl6 had a "grammar" construct, not really knowing if such construct is appropiate for natural language parsing... 21:44
well, the thing is... it is really appropiate for such a task? he want to do some kind of "expert system" for medical diagnosis, so i'm sure roles would be really useful for him 21:45
but, grammars for natural language? i hope i was right pointing him in the perl6 direction.
21:46 lumi_ joined 21:50 PacoLinux left, explorer joined 21:53 maja_ left, donaldh_ left 22:01 iblechbot left 22:03 shinobi-cl left 22:07 lumi__ joined 22:10 lumi_ left 22:11 fridim_ left 22:12 Ingmar is now known as hacchi 22:13 hacchi is now known as register, register is now known as hacchi 22:17 hacchi is now known as ingmar 22:18 justatheory joined 22:21 ingmar is now known as hacchi 22:23 hacchi is now known as ingmar 22:34 nbrown joined 23:05 M_o_C left 23:08 lumi__ left 23:20 donaldh left, donaldh joined 23:23 tann left 23:31 justatheory left 23:58 shinobi-cl joined