»ö« | 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 terminatorFAILED 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 terminatorFAILED 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_GtGtFAILED 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 whitespaceFAILED 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«fooinvoke() 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«foo1» | ||
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«1357StopIterationin 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 umstrittenliegst 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..1not 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..1ok 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..1not 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
|