Summer of Perl | 6.2.12 released! | paste: sial.org/pbot/perl6 | pugs.blogs.com | pugscode.org | pugs.kwiki.org | www.treehugger.com/files/th_images/paradigm.jpg Set by nothingmuch on 12 July 2006. |
|||
nothingmuch | TimToady++ # very amusing | 00:23 | |
wolverian | the dev.perl.org HTML synopses are kept up to date, right? | 00:27 | |
nothingmuch | wolverian: i think they're autogenerated | ||
80% chance of that being a "yes" | |||
wolverian | thanks. unrelated: what's @@@arr? :-) | 00:28 | |
00:28
scook0 joined
00:41
elmex joined
00:42
pike joined
00:46
xinming joined
|
|||
mdiep | audreyt: do you know if anything is happening with the trypugs idea? I saw that cwest was going to try implementing it | 00:50 | |
audreyt | cwest: commit whatever you have? :) | 00:51 | |
(as in, no) | |||
mdiep | heh, okay | ||
clkao | audreyt: hey. | ||
audreyt | yo clkao | ||
clkao | saw the test pass rate? | 00:52 | |
audreyt | no, havn't backlogged | ||
0.05%? | |||
clkao | almost | ||
should be about 440 now | |||
audreyt | not bad | ||
oh wait | |||
that's actualy 5% not 0.05% | 00:53 | ||
not bad, really, pil2js started much humbler | |||
clkao: saw obra's idea ala typesafety.pm | |||
clkao | it was 200 or so two days ago | ||
yes | |||
need to supress warnings | 00:54 | ||
audreyt | to hijack "sub f (Int $x) {}"? | ||
typesafety.pm had a ref.impl. | |||
clkao | i will leave the syntatic hacks for others ;) | 00:55 | |
obra | audreyt: use warnings triggers a warning on it | ||
at define time | |||
audreyt | really. well optree rewrite can rewrite that away | ||
hm | |||
obra: you still @ home? | |||
obra | yes. | ||
about to come change the AC a bit. it's gotten painfully warm | |||
00:56
ruoso joined
|
|||
wolverian | wow, JS (and this guy)slipwave.info/#%5B%5BCPS%20transfor...Observable is crazy: | 00:58 | |
thanks, irssi. | |||
audreyt | wolverian: yeah, edwardk is amazing | 01:00 | |
01:00
markstos joined
|
|||
wolverian | right, I didn't realise you probably know him already :) | 01:01 | |
ivanfrey | audreyt: can you login to my machine and change your password? | ||
01:02
pike is now known as bcorn
01:03
revision17_ is now known as Revision17
|
|||
wolverian | should if be an expression? | 01:03 | |
2. why are sub declarations expressions now? | 01:04 | ||
01:07
jon__ joined
|
|||
audreyt | ivanfrey: what's the ip? | 01:08 | |
wolverian: if can be made expr with do | |||
?eval do if 1 { 3 } | |||
01:08
evalbot_11479 is now known as evalbot_11492
|
|||
evalbot_11492 | 3 | 01:08 | |
audreyt | ?eval 4 + do if 1 { 3 } | ||
evalbot_11492 | 7 | ||
wolverian | yeah, just wondering which is the right huffmanization | 01:09 | |
audreyt | there is the "or" and ??!! | ||
and "and" | |||
wolverian | or rather, why subs are exprs now but if is not | ||
audreyt | which is already infix forms of if | ||
because perl or/and operates on val not on bool | |||
so is good as expr-form if | |||
as for subs, because we have anonsub | |||
and scoped sub | 01:10 | ||
so unifying two syntaxes makes a bit more sense | |||
wolverian | right | ||
audreyt | also, "sub" and "method" as functions | ||
wolverian | "my sub foo ..." is "my(sub foo..."? | ||
ivanfrey | audreyt: 72.136.69.198 | ||
audreyt | (my &foo ::= sub { ... }) | ||
something like that | |||
wolverian | right | 01:11 | |
audreyt | but yeah, the idea is function declarators are so special | ||
they can occur as expr unambiguously | |||
whilst "if" can occur postfix | |||
and hence can confuse if it's also expr form | 01:12 | ||
print if 3; | |||
wolverian | ouch | ||
audreyt | if we take postfix away then it can be made expr | ||
ivanfrey | audreyt: did your login fail? | ||
audreyt | but that wouldn't be perl would it. | ||
ivanfrey: I don't have an old passwd | 01:13 | ||
wolverian | audreyt, thanks for explaining it | ||
audreyt | wolverian: np :) | ||
so, chromatic called for "easy tasks a newcomer to Pugs can do" | |||
any particular suggestions? | |||
ivanfrey | audreyt: use sudo, I gave you admin privileges | ||
audreyt | ivanfrey: I can't sudo without my passwd, heh | ||
ivanfrey | audreyt: temp | 01:14 | |
audreyt | done. thanks | ||
01:16
bcorn joined
|
|||
TreyHarris | ?eval ( [ 1, 2 ], 3 ) ~~ ( { 1 }, { 1 } ) | 01:18 | |
evalbot_11492 | Bool::False | ||
TreyHarris | was Yuval claiming that that should be true? I can't see why | ||
er, we're on IRC; s/Yuval/nothingmuch/ ;-) | 01:19 | ||
audreyt | no idea either | 01:22 | |
maybe he thinks it should distribute | |||
list of code should be like code takes list | |||
clkao | audreyt: what are you hacking on? | ||
audreyt | clkao: at this moment, food | ||
or rather, prospect of food | 01:23 | ||
clkao: what are bite-sized tasks we can suggest random perl.com readers to join in and hack? | |||
clkao: I thought about "use perl5:Foo" in v6.pm | |||
but that seems a bit steep | |||
clkao | audreyt: go through the tests that are compiled and fix bits? | 01:24 | |
and go through the tests that aren't compiled and fix the parser? | |||
so there's going to be perl.com article? ;) | |||
audreyt | no | 01:26 | |
perl.com newsletter | |||
weekly by chromatic | 01:27 | ||
hm, perl.com is static for 6 weeks now | |||
must be the conferences | |||
clkao giggles | 01:28 | ||
TreyHarris | ?eval given 3 { when Int { say "yes"; Bool::True } } | 01:29 | |
evalbot_11492 | OUTPUT[yes ] Bool::True | ||
audreyt | clkao: so "make smoke-perl5" works now? | 01:30 | |
01:30
imperator joined
|
|||
clkao | audreyt: sure, two tests hang during compiling | 01:31 | |
audreyt: and smoke-server doesn't accept my output | |||
audreyt | write ingo? | ||
clkao | audreyt: want to reorganise the prelude and pugs::internal:: a bit? | ||
maybe split them in different file so we can import incrementally when the syntax are implmemented | 01:32 | ||
audreyt | [email@hidden.address] | ||
that sounds good. add to the hiveminder pugs group? | |||
I think I'd like to hack a public-page | |||
much like rt.perl.org | |||
to export the hiveminder pugs group's up-for-grab and task status to public | |||
clkao | yes | 01:33 | |
obra | cool | ||
first step, get hm tests passing on your workstation ;) | |||
audreyt | doing that right now actually | ||
wow, IO::All. | 01:34 | ||
leo-max | bye | 01:35 | |
01:35
leo-max left
01:40
macroron joined
01:45
arcady joined
01:50
weinig joined
02:06
cfedde joined
02:07
bsb joined
|
|||
clkao | small exercise for bored people: if/elsif/else is not emitted correctly in v6 | 02:09 | |
02:09
Bit-Man joined
02:11
markstos left
|
|||
svnbot6 | r11493 | ajs++ | index, rindex and a fix to what looks like a brain fart when I wrote up time | 02:16 | |
02:22
fglock joined
|
|||
wolverian | is there a public ghc-6.5 on feather? | 02:31 | |
is it ok to build my own if there isn't? :) | |||
audreyt | sure it's ok | 02:40 | |
try to be nice(1) though | |||
wolverian | yeah. what's a nice (cough) value? | ||
(I also installed alex and happy, if anyone needs those) | |||
I assume the default is ok. | 02:42 | ||
audreyt | yup | 02:43 | |
wolverian | maybe I'll get into ghc hacking eventually (as scary as the thought is) | 02:44 | |
or at least figure out ghc api ... | |||
I wonder if it would be possible to run a generic svn repository on feather | 02:48 | ||
audreyt | sure is possible | 02:49 | |
mm, I've a long-overdue ghc hacking ticket to resolve (in the lexer)... | |||
wolverian | DIY right? :) I've never configured svn.. reading on it | 02:50 | |
ivanfrey | audreyt: how often should I run smoke tests and upload them? | 02:51 | |
02:54
fglock joined
|
|||
ivanfrey | What are the bots and their role in this channel. | 03:04 | |
buubot, evalbot_11492, jabbot, lambdabot, perlbot? | 03:06 | ||
wolverian | > let x = "hi" in x ++ " ivanfrey" | 03:08 | |
lambdabot | "hi ivanfrey" | ||
fglock | ivanfrey: evalbot evaluates pugs expressions - 11492 is the svn version | ||
ivanfrey | > let x = "hey" in x ++ " that's cool!" | 03:11 | |
lambdabot | "hey that's cool!" | ||
fglock | oops - there is no installable Sub::Multi in cpan yet | ||
audreyt | yeah it's underscore | ||
clkao: push a non-underscore one out maybe? or make fglock+me comaint too? | |||
(or authorize me to do that :)) | |||
fglock | I counted 22 dependencies installing v6.pm | 03:13 | |
audreyt | there will be more | 03:14 | |
one day we'll depend on the whole CPAN | |||
...or maybe not. :) | |||
ivanfrey | fglock: how do I pass pugs expressions to evalbot_11492? | 03:15 | |
audreyt | ?eval [+] 1..10 | ||
03:15
evalbot_11492 is now known as evalbot_11493
|
|||
evalbot_11493 | 55 | 03:15 | |
fglock | ?eval 1 2 | ||
evalbot_11493 | Error: unexpected "2" expecting comment, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
fglock | cgi-irc doesn't accept plus-sign :) | 03:16 | |
03:17
rashakil left
03:18
rlb3 joined
|
|||
audreyt | yeah, I think it's URL encoding | 03:18 | |
ivanfrey | ?eval ('1' & "2") * (3.0 | "4abcd") | ||
evalbot_11493 | 3.0 | 03:19 | |
fglock | still counting - 25... | ||
audreyt | try using the %2B | ||
notation | |||
type this: | |||
?eval 1 %2B 2 | |||
evalbot_11493 | Error: unexpected "B" expecting "_", fraction, exponent, term postfix, comment, operator, ">>+&<<", ">>+<<<", ">>+><<", ">>xx<<", ">>~&<<", ">>~<<<", ">>~><<", ">>%<<", ">>*<<", ">>/<<", ">>x<<", "\187+&\171", "\187+<\171", "\187+>\171", "\187xx\171", "\187~&\171", "\187~<\171", "\187~>\171", "\187%\171", "\187*\171", "\187/\171", "\187x\171", "+&", "+<", "+>", "xx", "~&", "~<", "~>", "%", "*", "/", "x", postfix conditional, postfix loop, postfix | ||
audreyt | and see if it works? | ||
fglock | 1%2B2 | ||
audreyt | with space | ||
fglock | no :) | ||
1 %2B 2 | |||
audreyt | sigh | ||
:) | |||
(brb) | |||
fglock | 1 + 2 | ||
ivanfrey | ?eval ((2 .. 20) | ('a0' .. 'b9')) / (2 & 4) err 1 ... | 03:21 | |
evalbot_11493 | 4.75 | ||
TreyHarris | ?eval ('1' & "2") * (3.0 | "4abcd") | 03:25 | |
evalbot_11493 | 3.0 | ||
TreyHarris | what the heck? | ||
I would have expected ((3.0 | 4.0) & (6.0 | 8.0)) | 03:27 | ||
fglock | I think the result takes many lines, and evalbot only shows the first line | 03:28 | |
?eval 42 | 43 | |||
evalbot_11493 | 42 | ||
TreyHarris | ?eval any(1, 2) == 2 | 03:30 | |
evalbot_11493 | Bool::False | ||
TreyHarris | hmm. no, I think it's broken | ||
03:31
weinig is now known as weinig|sleep
|
|||
TreyHarris | ?eval ?(all(1, 2, 1) < 3) | 03:32 | |
evalbot_11493 | Bool::True | 03:33 | |
TreyHarris | ?eval ?(all(1, 2, 17) < 3) | ||
evalbot_11493 | Bool::False | ||
TreyHarris | so maybe it's only printing the first component value of any conjunctional value | ||
?eval ?(any(1, 2) == 2) | 03:34 | ||
evalbot_11493 | Bool::True | ||
TreyHarris | yeah, that's what it's doing | ||
?eval ?(any(1, 3) == 2) | 03:35 | ||
evalbot_11493 | Bool::False | ||
TreyHarris | yup. | ||
?eval (any(1, 2) == 2).ref | 03:36 | ||
evalbot_11493 | ::Junction | ||
pasteling | "fglock" at 200.102.126.223 pasted "v6.pm dependencies" (41 lines, 705B) at sial.org/pbot/18371 | 03:37 | |
fglock | & | 03:42 | |
03:42
fglock left
03:48
frederico joined
04:04
diotalevi joined
|
|||
vsoni | seen audreyt | 04:06 | |
jabbot | vsoni: audreyt was seen 46 minutes 49 seconds ago | ||
04:10
wesle1 joined
04:12
arcady joined
|
|||
ivanfrey | What is the ide used for pugs? vi? | 04:13 | |
04:27
buubot joined
04:29
buubot joined
04:45
lumi joined
04:50
fglock joined
04:55
jargonjustin joined
04:56
fglock left
|
|||
mugwump | ivanfrey: currently I think only vim has a syntax mode for perl6 | 05:16 | |
mugwump takes that back | 05:17 | ||
Actually, Steffen Schwigon has also extended cperl-mode to deal with perl6 | 05:18 | ||
(for emacs) | |||
nothingmuch | good night | 05:30 | |
05:37
kane_ joined
05:41
vsoni joined
05:59
merlyn joined
|
|||
wolverian | I.. forgot --prefix from my ghc compile | 06:03 | |
wolverian cries | 06:04 | ||
audreyt | just configure again | ||
the build should be faster | 06:05 | ||
wolverian | doesn't recompile the parts that didn't use the path or something? | ||
audreyt | yeah | 06:06 | |
wolverian | thanks :) | ||
seemed to skip stage1 altogether, yay | 06:09 | ||
hm, no, it did do something there. I think. oh well, time to sleep :) | 06:10 | ||
oh, done. nice | |||
ouch | 06:11 | ||
fails at /home/wolverian/opt/bin/ghc: line 5, looking for /usr/local/lib/ghc-6.5.20060712/ghc-6.5.20060712 | 06:12 | ||
I guess I'll do a make clean, then | |||
audreyt | oy. | 06:13 | |
06:28
vsoni joined
06:42
mauke_ joined
06:49
iblechbot joined
07:02
mauke_ is now known as mauke
07:21
cognominal joined
07:23
drrho joined
07:47
xinming joined
07:48
Steve_p joined
08:23
alexe joined
08:26
tcliou joined
08:35
cognominal joined
08:38
hugues23 joined
08:40
buetow joined
08:50
elmex joined
09:04
revision17_ joined
09:14
alexe left
09:19
paultcochrane joined
11:07
ludan joined
11:20
MikeJS joined
11:27
dolmen joined
11:36
xinming joined
11:55
xinming joined
12:22
bpphillips joined
12:29
nelhage joined
12:41
iblechbot joined,
vel joined
12:49
oozoo joined
12:57
oozoo left
13:02
oozoo joined,
oozoo left
13:03
Jedai joined
13:04
eve_ joined
13:05
eve_ is now known as bridges_,
bridges_ left
13:20
frederico joined
13:21
trampel joined
13:24
oozoo_ joined
13:25
oozoo_ left
14:23
amnesiac joined
14:34
mako132 joined
|
|||
svnbot6 | r11494 | ajs++ | roundrobin description | 14:38 | |
14:39
penk joined,
vel joined
14:48
cjeris joined
14:55
fglock joined
|
|||
ajs | Am I right in saying that C<@a Y @b Y @c> needs to invoke a special infix:Y(Iterator $a, Array @b) form that takes each tuple off of $a and adds an element from @b to it, or is there some magic that turns that into a quasi-listop? | 15:00 | |
Well, I'll check it in and see who screams... ;) | 15:03 | ||
svnbot6 | r11495 | ajs++ | Added cat and the infix form of zip (Unicode and ASCII). For this, I had to arm-wave the mechanics of chained infix zips... I think my call is reasonable, but I would appreciate input | 15:04 | |
fglock | ajs: Y is fixity='infix' and assoc='list', which makes it parse like ',' | ||
ajs | The word fixity occurs only once in the specs... can you explain it to me? | 15:06 | |
And for that matter, how DOES comma work? | |||
fglock | ($a Y $b) is infix position; (Y $a) is prefix; ($a Y) is postfix | ||
comma is a list composer | 15:07 | ||
ajs | gotcha, hence the infix:<Y>(...) | ||
But how does $a Y $b Y $c actually work, signature-wise if it only takes two arguments? | |||
fglock | infix:<Y>( @a, @b, @c, ... ) | 15:08 | |
ajs | Ah... ah... that's not a valid signature. Do you mean infix:<Y>( Container *arrays ), and if so... well, is that valid? I'm happy to change the spec, but I've never seen a slurpy listop before | 15:09 | |
er slurpy infix that is | |||
that's infix:<Y>( Container *@arrays )... lost the @ | 15:10 | ||
fglock | I think it is 'sub zip (*@@arrays) { ... }' | ||
15:11
dolmen joined
|
|||
ajs | Yes, thank you! That's the magic cookie! | 15:11 | |
fglock | S06 - 'Multidimensional argument list binding' | ||
ajs | I had missed the seciton on @@ which clearly states that that's how zip works. | ||
Re-writing Functions.pod section on zip now.... | 15:12 | ||
Oh, that so drastically simplifies things! | 15:13 | ||
svnbot6 | r11496 | ajs++ | fglock++ - told me about *@@ parameters, and the ability to build an infix listop using it. zip is now correctly defined, and all Container functions are simplified | 15:16 | |
15:17
weinig|sleep is now known as weinig
|
|||
svnbot6 | r11497 | ajs++ | Spellcheck pass on Functions | 15:28 | |
15:30
luqui joined,
luqui left
|
|||
ajs | Spellchecking Perl documentation is an interesting sport... it should be in the Olympics. | 15:30 | |
pasteling | "kolibrie" at 66.239.158.2 pasted "questions about regex, token, rule" (19 lines, 487B) at sial.org/pbot/18377 | ||
ajs | kolibrie: comments don't match anything ;-) | 15:31 | |
kolibrie | ajs: :) | 15:32 | |
ajs | Looks like token's "no backtracking" attribute is being scoped down into the sub-rule. | ||
Oh no, wait. that works fine because of the ? | 15:33 | ||
Yeah, that's reasonable. Why would you expect .*? to match more than zero characters when used from inside a token{} | 15:34 | ||
svnbot6 | r11498 | fglock++ | PCR - Pugs::Grammar::Precedence - implemented chain operators | ||
r11498 | fglock++ | PCR - version is now 0.11 | |||
ajs | fglock: sure, just change the parser to make yourself right! ;-) | 15:35 | |
kolibrie | what is confusing (wrong?) is why it makes a difference whether .*? is specified explicitly or as a subrule | ||
15:35
vel joined
|
|||
fglock | ajs: that's what you get for writing your own compiler :) | 15:36 | |
kolibrie | also confusing is why the token and rule match different things on a string with no spaces | 15:37 | |
ajs | "rule schedule { .*? u } # matches nothing" has to be a bug | ||
fglock | this matches whitespace followed by 'u' | 15:38 | |
svnbot6 | r11499 | fglock++ | v6 - depends on PCR 0.11 | ||
r11499 | fglock++ | v6 - parses chain operators (no emitter code yet) | |||
kolibrie | fglock: see my nopaste | 15:39 | |
fglock | kolibrie: I think token passes the :ratchet flag to regex, and this makes .*? to not backtrack, and then it matches nothing | 15:40 | |
.*? matches '', '.', '..', '...' - the first match succeeds | 15:41 | ||
kolibrie | fglock: but why the difference between token and rule? | 15:42 | |
token matches, rule doesn't | |||
fglock | token is faster - use it for better performance, but it can't backtrack | ||
15:42
FurnaceBoy joined
|
|||
kolibrie | I thought both rule and token do not backtrack | 15:43 | |
fglock | yes - rule is the same as token - but spaces are significant - in the rule, '<junk> u' means '<junk><ws>u' | 15:44 | |
'aoeu' doesn't have a space before 'u' | 15:45 | ||
kolibrie | so 'token schedule { .*? u }' and 'rule schedule { .*? u }' should have the same match result | ||
fglock | clkao: my last change must have broken a hundred tests - still missing emitter code... | 15:46 | |
kolibrie: right | |||
oops - no | |||
the token is compiled as /u/, and the rule is compiled as /\su/ | 15:47 | ||
kolibrie | so the whitespace becomes manditory? | 15:48 | |
fglock | tokens are meant for matching single words fast | ||
rules are meant for statements with many words - that's why whitespace is significant | 15:49 | ||
and 'regex' if for everything else :) | |||
ajs | ?! wait, ws is significant in rules? So all of my nifty documentation is wrong. Doh! | ||
lambdabot | Maybe you meant: . v | ||
kolibrie is trying to get the the bottom of why his hackathon yapc_schedule.pl does not seem to work, when he saw it work that night | 15:51 | ||
fglock | also, the whitespace semantics in rules is user-defined | ||
kolibrie | fglock: I was taking advantage of that in yapc_schedule.pl | 15:52 | |
fglock | kolibrie: maybe the lib was fixed :) | ||
lunch & | 15:53 | ||
kolibrie | fglock: so that may explain the token/rule difference, but what about .*? vs <junk>? | 15:54 | |
fglock | clkao: re chain ops - try parsing ' 1 < 2 <= 3' | ||
svnbot6 | r11500 | ajs++ | Some changes to grammars / regexes for various function docs: rules have significant whitespace, so not useful for things like pack and sprintf | 15:55 | |
fglock | kolibrie: it depends on how :ratchet is passed on to subrules - S05 should hold an answer ... | 15:57 | |
15:57
swaroop joined,
fglock left
|
|||
kolibrie will dig | 15:57 | ||
15:59
ruoso joined
|
|||
pmichaud | :ratchet is not passed to subrules | 16:00 | |
kolibrie | pmichaud: good | ||
pmichaud: any ideas why the two 'token' lines in my nopaste match differently? | 16:01 | ||
pmichaud | token schedule { <junk> u } should match 'u' | 16:03 | |
token schedule { .*? u } should match 'aoeu' | |||
kolibrie | why are they different? | 16:04 | |
pmichaud | .*? is explicit eager backtracking | ||
<junk> has no backtracking | |||
kolibrie | <junk> is defined as .*? | ||
pmichaud | but it's a subrule | ||
so, token schedule { <junk> u } is the same as | |||
regex schedule { <junk>: u } | 16:05 | ||
(note the implicit ':' after <junk>) | |||
it's the same as if one had said token schedule { .*?: u } | |||
make sense yet? | 16:06 | ||
kolibrie | no | ||
pmichaud | token implies :ratchet, which means no backtracking once something has succeeded | ||
so, in token schedule { <junk> u } we first make a call to the junk regex | |||
that matches an empty string, because it's .*? | 16:07 | ||
16:07
FurnaceBoy_ joined
|
|||
pmichaud | so, <junk> has now succeeded, and we won't backtrack into it | 16:07 | |
now we try to match a 'u' | |||
that fails (we find 'a'), so we increment the starting position by one and try again | |||
note that we don't go back into the 'junk' rule and try matching 'a' -- that subrule already succeeded | 16:08 | ||
kolibrie | why doesn't it work the same when we specify .*? explicitly? | ||
pmichaud | because .*? explicitly says to backtrack, even though this is a 'token' | ||
i.e., .*? overrides :ratchet | |||
just the same as .*+ overrides :ratchet | 16:09 | ||
kolibrie | I hoped that I could replace any hardcoded text with a subrule | 16:10 | |
pmichaud | (I should probably rephrase: "*?" and "*+" override :ratchet) | ||
if you want backtracking there, you don't want to be using 'token' | 16:11 | ||
kolibrie | what I want, is for yapc_schedule.pl to work | ||
pmichaud | another possibility is token { <junk>**{1}+ u } which is ugly | ||
kolibrie | I want to be able to overwrite <ws> to be .*? | 16:12 | |
16:12
chris2 joined
|
|||
pmichaud | I don't think there's any direct value to that | 16:12 | |
because it will always match a null string in rules | |||
kolibrie | and then make a rule to glue a bunch of regexes together | ||
At the Chicago hackathon it worked | 16:13 | ||
pmichaud | I'd have to see the code again to know exactly what worked | ||
I just know that we don't backtrack into subrules when used inside of token/rule | 16:14 | ||
16:14
merlyn joined
|
|||
kolibrie | pmichaud: svn.openfoundry.org/pugs/examples/r...chedule.pl | 16:15 | |
pmichaud | why not just switch 'token' to be 'regex'? That gets the backtracking you're looking for | 16:16 | |
oh, wait | |||
hmmm | |||
personally, I think I would just do the whole thing with regex | 16:17 | ||
kolibrie | I would like to be able to define what I am interested in and ignore everything else | 16:18 | |
this enables very easy data extraction | |||
or validation of content based on a grammar, yet able to ignore extra stuff | 16:19 | ||
16:20
weinig is now known as weinig|away
|
|||
pmichaud | I just don't know that overriding <ws> as .*? is going to get there | 16:21 | |
oh | |||
how about | |||
kolibrie | it worked on audreyt's laptop at Chicago | ||
pmichaud | instead of rule, use regex {:w <title> [ <talk> ]+ } | ||
kolibrie | but now I can't get it work anywhere | 16:22 | |
pmichaud | (which is what I think we did on Audrey's laptop at Chicago) | ||
TimToady | :w is now :sigspace | ||
pmichaud | right, but PGE still has :w | ||
TimToady | or :s | ||
pmichaud | (I don't think PGE has :sigspace/:s yet) | ||
ah, I'm wrong, PGE has :sigspace | 16:23 | ||
kolibrie | so the :sigspace needs to be inside the braces, not outside? | ||
pmichaud | and :s | ||
I don't know how pugs passes adverbs to regexes yet, so inside is the safe way to go | 16:24 | ||
TimToady: there's a pge ticket in parrot-porters about leading whitespace before internal adverbs -- any thoughts? (more) | |||
TimToady: example: token {:i hello} versus token { :i hello } | 16:25 | ||
TimToady | wouldn't matter for a token. | ||
you mean rule? | |||
pmichaud | okay, rule then :-) | ||
I'm just thinking syntax | |||
TimToady | will, the <?ws> after the :i is case insensitive. :) | 16:26 | |
*well | |||
pmichaud | the question is whether the second example above is a syntax error or no | ||
or, for a slightly different example | |||
TimToady | why should it be? | ||
pmichaud | token { [:i hello] } versus token { [ :i hello ] } | ||
TimToady | as far as I'm concerned, [ foo :i bar ] is legal. | 16:27 | |
pmichaud | no | ||
that ':' is a 'cut' | |||
TimToady | no, :i is a token. | ||
you have to say : i to get cut | |||
pmichaud | (based on previous conversations) | ||
TimToady | brb & | 16:28 | |
pmichaud | I thought we were doing (but hadn't documented yet) [ foo <:i> bar ] | ||
kolibrie | pmichaud: changing to 'regex schedule { :s [ <talk> ]+ }' results in '*** Cannot parse PGE: <schedule>' | 16:30 | |
pmichaud | kolibrie: the :s has to go immediately against the left brace | 16:31 | |
(according to PGE -- currently working out the syntax with TimToady ) | |||
16:31
nova-alpha joined
|
|||
kolibrie | pmichaud: well, no error, but still only matched one 'talk' | 16:32 | |
nova-alpha | hi | ||
pmichaud | well, note that 'token' won't use the :ws rule | ||
sorry, the <?ws> rule | |||
nothingmuch | hi kolibrie | ||
kolibrie | audreyt: do you still have the actual file that worked in Chicago? | ||
nothingmuch: hi | 16:33 | ||
nothingmuch wunders if any(@Larry).pick is going to clarify the === woes we're having, in terms of stating the purpose of === | |||
i think there's much FUD around =:=, === and .id because they are ill understood, not on the technical level, but in terms of purpose | |||
TimToady | nothingmuch: yes, the basic problem is that there are multiple purposes happening here. | 16:34 | |
audreyt | kolibrie: you mean the input? | ||
kolibrie | the grammar | ||
nothingmuch | TimToady: i'll take that as a "yes, soon", so thanks =) | 16:35 | |
TimToady | === will be reserved only for immutably true comparison, while something like eqv will be introduced for 'are these things equivalent currently'. | ||
nothingmuch | okay | ||
TimToady | in addition, eqv (and cmp) will take an optional sig to say how to compare. | ||
audreyt | kolibrie: it is the same one as in examples/rule/ | ||
16:35
buetow joined
|
|||
TimToady | so sort criterion unifies with sigs | 16:35 | |
nothingmuch | so what's the benefit of =:= vs ===? why the distinction? | 16:36 | |
kolibrie | audreyt: does it still work on your laptop, because I can't get it to work anywhere | ||
nothingmuch | immutably true comparison means that even if $x changes when compoared on this dimension they are the same? | ||
audreyt | isn't =:= basically === but with lvalue on both sides? | ||
$x =:= $y # variable($x) === variable($y) | |||
nothingmuch | okay | 16:37 | |
is it useful? | |||
enough to get such a pretty operator? | |||
because === has a 'valueness' to it, that many people are confused about | |||
if === was eqv and =:= was the current === that may resolve things | |||
audreyt | I tend to agree, but it's ergonomics, so I don't have strong feelings one way or another | 16:38 | |
TimToady | I like === to be "mathematically pure" and eqv to be the "dirty" one. | ||
16:38
szbalint joined
|
|||
nothingmuch | oh... hmm... | 16:38 | |
nothingmuch *thinks* | |||
so if we go to the currency object example | |||
=== is the right thing to use? | 16:39 | ||
even if they e.g. have different sources, or something? | |||
kolibrie | pmichaud: changing everything to a regex still only matches one 'talk', and I thought I had a bunch of different types of regex/token/rule in the original | ||
TimToady | mutable objects are never ===. they can be eqv. | ||
nothingmuch | ah | ||
szbalint | Hello. | 16:40 | |
nothingmuch | so === is essentially refaddr() assuming perfect constant folding | ||
and =:= is on the container only? | |||
TimToady | yes | 16:41 | |
nothingmuch tries to come up with a use case | |||
pmichaud | kolibrie: I can't speak too knowledgably about what was working at yapc -- I don't recall that level of detail. I do know that if <ws> is defined as { .*? }, then it won't consume anything when implicitly called from a rule | 16:42 | |
i.e., it'll always match the empty string | |||
nothingmuch | haha: www.treehugger.com/files/2006/07/st...anning.php | ||
kolibrie | pmichaud: that does seem to be what is happening now | 16:43 | |
pmichaud | and, of course, <?ws> isn't called at all from a token or regex unless :sigspace/:s is specified | ||
nothingmuch | TimToady: what is the plausibility of having immutable items that are not constants? | 16:44 | |
like like an immutable concatenation operator | |||
for strings | |||
pmichaud | and I'm not sure that internal :sigspace/:s is implemented in PGE yet (although :words and :w is) | ||
nothingmuch | and immutable lists/tuples/pairs | ||
(think haskell) | |||
i don't think there is a good space to fit this on a language level | |||
but if we have these i would be *very* happy (especially for objects) | 16:45 | ||
since I have been using them in perl 5 and it's just not as fun | |||
(very heavily for 4 of my last projects) | |||
TimToady | that is what the whole "you can pretend these objects are immutable if the ids are ===" is all about. | ||
nothingmuch | it also encourages COW safety | ||
this is not about pretending though | |||
TimToady | from the implementation end it's a pretense. | 16:46 | |
from the language end, no | |||
nothingmuch | oh, i see | ||
does the runtime get to consolidate these when it gets a chance? | |||
audreyt | consolidate? | 16:47 | |
nothingmuch | that is, is it safe to let the === operator move two data objects to the same memory space once it finds them, oppertunistically? | ||
TimToady | I think having the same id is a strong promise of that, probably. | ||
nothingmuch | okay | ||
kolibrie feels his hackathon project trickling through his fingers and away | |||
nothingmuch | my $foo = "foo"; my $bar = "fo"; $bar .= "o"; # are the IDs the same? | 16:48 | |
i mean, on the semantic level | |||
is $foo === $bar | |||
and when either will change, is it the value that's changing or the container that's getting an entirely different value? | |||
TimToady | I think the valueness can also be defined by === directly without being mediated by .id | 16:49 | |
nothingmuch | hmm | ||
TimToady | you can probably ask for the id of a string, but it would probably have to canonicalize it. | ||
nothingmuch | are you saying that since i can say my $x = $bar; $bar .= "o"; # $x unchanged here | ||
then they are the same? | |||
and it's not the value that's being changed? | 16:50 | ||
because otherwise you can't just canonicallize to some bytestring encoded some way, or whatever, it needs to also close over the address space of the mutable region | |||
TimToady | $bar ends up with a different string value in it, presuming you meant ~= | ||
nothingmuch | yes, sorry... old habits die hard | 16:51 | |
16:51
vytautas joined
|
|||
nothingmuch | so basically the immutabilitye is a deep structure only thing | 16:51 | |
TimToady | just as if you say $x += 1 you get a different numeric value. | ||
nothingmuch will summarize to the mailing list | |||
thank you | |||
possible S03 patch pending | |||
gotta solve Moose role meta object protocol issues first | 16:52 | ||
TimToady | patches welcome. I need to trot off to $job. | ||
kolibrie | audreyt: can you help me debug yapc_schedule.pl and get it working again? | ||
nothingmuch | audreyt: btw, you may want to sanity check our roadmap | ||
have fun | |||
audreyt | roadmap? url? | 16:55 | |
kolibrie: if you convert it to a t/rules/ :) | |||
nothingmuch | not quite written yet | ||
see #moose | |||
audreyt only sees files in t/ as bugs... :) | |||
kolibrie | audreyt: if it still works on your laptop, that is great, and I just need to figure out how to get it to work in other places | 16:56 | |
audreyt: if it no longer works there, I have no idea how to get it to do what I want | 16:57 | ||
audreyt | let me check. | 16:58 | |
16:59
lollan joined
|
|||
pmichaud | I suggest: regex speaker { \<small\> (.*?) \</small\> } | 17:00 | |
or, eventually: | |||
regex speaker { \<small\> <( .*? )> \</small\> } | |||
(assuming that the speaker is what appears within a <small>...</small> sequence) | 17:01 | ||
kolibrie | pmichaud: perhaps, but those are little details that I can clean up | ||
audreyt | pmichaud: | 17:02 | |
t/compilers/pge/pge-hs.t | |||
now fails again | |||
pmichaud | checking | ||
audreyt | that's the root cause | ||
kolibrie is glad it's not just him | |||
pmichaud | [pmichaud@orange trunk]$ prove t/compilers/pge/pge-hs.t | ||
t/compilers/pge/pge-hs....ok | |||
All tests successful. | |||
Files=1, Tests=1, 0 wallclock secs ( 0.10 cusr + 0.02 csys = 0.12 CPU) | |||
[pmichaud@orange trunk]$ | |||
(r13279) | 17:03 | ||
audreyt | hm. | ||
17:03
fglock joined
|
|||
audreyt | weird, when I svn up it worke again too | 17:04 | |
...and now it worksforme | 17:05 | ||
but it did break on last night's parrot | |||
pmichaud | fair enough -- I haven't changed anything in pge :-) | ||
audreyt | I know, I've seen the log :) | 17:06 | |
and as long as it works I'd like not to triage :) | |||
leo | audreyt: the HLL related changes went into .pbc, rendering these possibly incompatible | ||
kolibrie | audreyt: so I should svn up and try again? | ||
audreyt | there's been a fair bit of reshuffling that has caused strange error messages lately | ||
leo: gotcha | |||
pmichaud | ah yes, any existing .pbc's may need rebuilding | ||
audreyt | kolibrie: yes, svn up to a fresh parrot | ||
pmichaud does a complete rebuild every morning | |||
audreyt | kolibrie: this is my input set: | ||
leo | if in doubt, make realclean | ||
audreyt | ...seems it pays off to always be in doubt :) | 17:07 | |
perlcabal.org/~audreyt/tmp/monday | |||
kolibrie: try your input set on this "monday" | |||
and convert it to a t/rules/ ? | |||
kolibrie | audreyt: will do | ||
audreyt | danke | ||
17:12
justatheory joined
|
|||
ajs | audreyt: My mail about the S29/API breakup is away. If I'm misrepresenting your request in that, please feel free to comment. | 17:12 | |
audreyt | sure. thanks! | ||
ajs++ | |||
pmichaud | ajs++ | 17:13 | |
(excellent work on S29) | |||
ajs | pmichaud: thanks | 17:14 | |
audreyt | afk, bbiab | 17:16 | |
17:21
hexmode joined
|
|||
kolibrie | audreyt: rebuilt my parrot on feather and ran 'pugs ~/pugs/examples/rules/yapc_schedule.pl monday' but got no match | 17:25 | |
locally I get *** Cannot parse PGE: <schedule> | 17:26 | ||
feather pugs appears to be r11500, local pugs is r11248 | 17:27 | ||
my feather parrot is r13279, local is the same | 17:28 | ||
17:38
xinming joined
17:39
andara joined
|
|||
cognominal | what is the best way to get ghc on the macbook (intel macosx)? | 17:41 | |
svnbot6 | r11501 | fglock++ | v6 - chained operators - (1 < $x <= 3 < $y) | 17:43 | |
r11501 | fglock++ | - doesn't short-circuit yet | |||
ajs | fglock ++ fglock ++ fglock ! | 17:48 | |
Steve_p | Ohhh! Shiney! | 17:52 | |
nnunley | Breaks t/08-test.t for me. | 17:53 | |
fglock | nnunley: checking... | ||
nnunley | fglock: 'plan 1;' is being transformed into 'plan( [ \(1) ], {} ); | 17:54 | |
fglock | nnunley: that's Data::Bind way of passing parameters | 17:55 | |
nnunley | Ahh. | ||
Maybe I have a stale version of Test.pm | |||
17:55
vel joined
|
|||
nothingmuch | clkao: would you like to rsync the rest of the music? | 17:56 | |
nnunley deletes Test.pmc | |||
17:58
gosha joined,
gosha left
17:59
szbalint_ joined
18:01
weinig|away is now known as weinig
18:06
frederico joined
18:08
szbalint_ is now known as szbalint
|
|||
svnbot6 | r11502 | fglock++ | v6 - 'undef' | 18:10 | |
fglock | re Test.pm - it looks like an op-precedence error on '~~' | 18:15 | |
ruoso still fighting his broken environment | 18:17 | ||
fglock | '$a,$b~~$c ' is being parsed '($a,$b)~~$c' | 18:24 | |
svnbot6 | r11503 | ajs++ | Took AnyChar/Uni into account in various places, mostly to overhaul chr/ord. | 18:25 | |
18:27
Revision17 joined
|
|||
svnbot6 | r11504 | ajs++ | Small typo fix in chr/ord | 18:31 | |
18:37
weinig is now known as weinig|bbl
18:39
fglock left
|
|||
ajs | I'm concerned: There's a summary of a discussion (I don't know when or where it happeend) in the === thread between Larry, Audrey and nothingmuch, but it doesn't actually resolve the core problem, which is that @a~~@b is going to act in unpredictable, and almost certainly unexpected ways. Is it really just supposed to be the less obvious version of rand()? | 18:44 | |
nothingmuch | no | 18:45 | |
that's not the core problem ;-) | |||
it's why it's ~~ | |||
it's the underlying mechanism for given/when | |||
and various other stuff | 18:46 | ||
it's actually fairly easy to predict | |||
and a joy to work with with simple patterns on the right side | |||
which is exactly what it was designed for | |||
ajs: have you tried using ~~? | 18:47 | ||
ajs | nothingmuch: There is absolutely no way to predict the behavior of @a~~@b unless you happen to know the contents of @a and @b. Trust me: this will be the single most commonly repreated FAQ in Perl 6: "I used @a~~@b, and my program locked up" | ||
nothingmuch | you need to know the @b | 18:48 | |
just the @b | |||
ajs | nothingmuch: YES! | ||
nothingmuch | and you damn well should know the @b | ||
because it's not a value | |||
it's a pattern | |||
but that's OK | |||
perl has always given you enough rope to hang yourself and your entire team with | |||
Perl 6 just gives you more ;-) | 18:49 | ||
audreyt | it's also the same as in perl5.9. | ||
kolibrie | audreyt: any idea where I should start debugging feather and my local system to get yapc_schedule.pl to work? | 18:51 | |
audreyt | kolibrie: realclean on the newest parrent | 18:52 | |
parrot | |||
rebuild it and make sure no previous parrot install is in sight | |||
and use the "monday" file on the url above | |||
ajs | nothingmuch: Just tell me that you don't expect everyone who's ever written CGI to write: given CGI.params { when @expected_params {...}} and I'll leave it alone... if you do expect that, then I'd suggest fixing ~~ so that run-time dispatch does something far less dynamic. | 18:53 | |
nothingmuch | that's they're problem | ||
ajs | audreyt: Perl 5 doesn't push ~~ as the primary tool for most jobs | ||
nothingmuch | i want ~~ for the smart people | ||
neither does Perl 6 | |||
kolibrie | audreyt: okay | ||
nothingmuch | this is digressing into the "should we make it safe for the newbies" discussion | ||
it's been done before | |||
ajs | nothingmuch: but you have ~~ and all its smarness! When do you possibly want to use all of that smartness recursively on some random list? I honestly cannot think of any case | 18:54 | |
nothingmuch | and the decision by @Larry is pretty clear - "yes, it should be safe for the newbies, as long as it doesn't take anything away from the perlishness or the flexibility" | ||
kolibrie | audreyt: I didn't realclean before, so maybe that is the problem | ||
nothingmuch | i don't | ||
i iwill not pass any random list on the right side | |||
i will either pass it inline | |||
as ~~ [ .... ]; at the very worst | |||
or i will very carefully construct an expression item | |||
and then say ~~ $x; | |||
ajs | again, an example. Just one | ||
nothingmuch | which will be my complex expression | 18:55 | |
i've used it before | |||
you can look in the tests | |||
and some of ext, prolly | |||
others have used it more extensively | |||
it's really saner than you think | |||
ajs | I'll look for a run-time dispatch in the test... sec | ||
18:55
andara joined
|
|||
nothingmuch | why do you call this a runtime dispatch? | 18:55 | |
it's just a subcall | |||
ajs | nothingmuch: Oh... I see. We're not talking about the same thing here. | 18:56 | |
nothingmuch | $x ~~ -> $param { .... } is just like ( -> $param { ... } ).($x) | ||
the "nice" thing is that the right side is polymorphic | |||
if it's a rule, or a sub or a value or a junction or whatever, it all response to the same "does it match" api | |||
ajs | nothingmuch: please stop. Ask a question, let me answer | ||
nothingmuch | you may multitask =) | 18:57 | |
ajs | Any $x ~~ Any $y is run-time dispatched per S03 (go read it). It has no defined behavior, and dispatches based on the contents of the variables. Given that, your statements about "I would know the content" make no sense. If you know what it is, then it's not an Any. If you don't know what it is, then ... well, then you don't. I see no value in this run-time dispatch, but I DO see a great deal of end-user PAIN in finding that Perl did something that it t | 19:00 | |
hought was smart with (potentially) dangerous data | |||
@a~~@b is just a pathological case of this | 19:01 | ||
lambdabot | Unknown command, try @list | ||
ajs | thank you lamdabot ;) | ||
nothingmuch | ajs: i read s03, i wrote the test | 19:02 | |
ajs | I could see this: a typed array (or list that can be coaxed into one at run-time) having such smart behavior | ||
nothingmuch | the left side is safe | ||
the right side is dangerous | |||
that's what it boils down | |||
ajs | Yes | ||
nothingmuch | that's not necessarily bad | 19:03 | |
ajs | But not dangerous at compile-time... all decisions made at compile-time are safe (confusing, maybe, but safe) | ||
nothingmuch | why? | ||
clkao | nothingmuch: yes, music. | ||
nothingmuch | there is no difference between compile time and runtime, conceptually, for multi dispatch | ||
except that you need to annotate/infer types | |||
19:04
ruoso joined
|
|||
clkao | did audreyt hack up somehting to export hiveminder task list? | 19:04 | |
ajs | Why is compile-time safe? Because there is a well defined behavior for ~~ at compile-time. At run-time the behavior of ~~ cannot be known until it happens because $b could be any value. Here's the #1 example of how that will happen: sub foo($a,$b) { return $a ~~ $b } | ||
nothingmuch | i know i know | 19:05 | |
$b could be any value | |||
that's the whole point | |||
clkao: i dunno, maybe | |||
19:05
FurnaceBoy joined
|
|||
clkao | nothingmuch: are you home? | 19:05 | |
nothingmuch | clkao: nope, at stevan's | ||
ajs: i think you are overly concerned about this in theory | 19:06 | ||
in practice it Just Works | |||
and it's ok that $b can be anything | |||
because 99% of the time it will be a constant literal | |||
but the flexibility is there that you can do it with any value whatsoever when you need to do that | |||
audreyt | ajs: how does a [...] find its way into $b? | 19:07 | |
unless you are allowing arbitrary evalution of user code, the programmer has control over $b's values at runtime | |||
I agree it's counterintuitive | |||
but probably not dangerous | |||
ajs | audreyt: in the function I gave as an example above, the author of foo() has no idea what $b is, they are just "matching aginst it". You have to realize that this is exactly what PHP went through and had to back out over the course of 4 versions because of massive problems with data being "too smart" to be secure. | 19:09 | |
nothingmuch | so writing aa foo function like that is bad style | ||
audreyt | ajs: ok. so your counterproposal would be... ? | ||
nothingmuch | but using ~~ in it's intended use cases is still valid | ||
audreyt | distribution with >>===<< instead of >>~~<< ? | ||
nothingmuch | and requires that degree of dynamisim | ||
audreyt | ajs: I still want "[1,2,3] ~~ [1,2,3]" to work | 19:10 | |
19:10
lumi joined
|
|||
ajs | audreyt: As stated in p6l: runtime dispatch of Any~~Any or @~~@ goes to a slightly less powerful op that performs the appropriate hyperoperation or whatever smartly, but not DYNAMICALLY... that's the difference. Just don't execute any code or the like. | 19:11 | |
That was my proposal. | |||
I called it =~=, so @~~@ became @>>=~=<<@ and Any~~Any became Any=~=Any | 19:12 | ||
nothingmuch | then it's not match | ||
audreyt | ajs: ok. I think I grok it, and I think it's a sane proposal | ||
ruoso having a hard time to understand ajs proposal... | |||
ajs | nothingmuch: Yes, it is. It's just not recursive, run-time match. At run-time only the top level is "smart" the rest is "bright" ;) | ||
audreyt | problem is, I think the current behaviour is sane as well :) | ||
nothingmuch | ajs: you do know that rules have embedded code too | 19:13 | |
and that ~~ is how you invoke rules, right? | |||
it's uuseful for cases when you want to provide a function like 'filter that stuff by $x' | |||
and then you let your calling code provide $x | |||
it's not suitable for user input | |||
ruoso | specially when $b is *anything* which can happen to be a rule | ||
nothingmuch | (although it is relatively safe if you follow the code paths, even for that) | ||
audreyt | well, p5 doesn't have this problem | 19:14 | |
as you have to say use re eval | |||
nothingmuch | (because typically you don't deserialize code objects from a CGI param) | ||
audreyt | for embedded closures to run | ||
ajs | If I know that $foo is a rule, and I willfully invoke it, knowing that it has user data, then I bought my own farm. If I invoke $foo and it HAPPENS to run code... bad. | ||
19:14
xinming joined
|
|||
ajs | invoke shoudl be match above | 19:14 | |
19:15
FurnaceBoy_ joined
|
|||
ruoso | ajs, but that's up to the programmer, istn't it? | 19:15 | |
ajs | audreyt: Larry has already talked about the need to protect rules from user data, I think. That one's not so hard. | ||
ruoso: It should be up to the programmer, but it's not if the programmer doesn't know the type of the data, and the dispatch is based on the type. | 19:16 | ||
audreyt | ajs: so it boils down to, if $b has a constraint over it | ||
my Regex $b | |||
then you are fine | |||
my Array of Regex $b | |||
too | |||
ajs | Yed | ||
yes | |||
ruoso | looks to me more like how taint works on perl 5 | 19:17 | |
nothingmuch | ajs: anyway, please start a new thread on p6l | ||
with: | |||
a. why you think ~~ is wrong | |||
b. what you think can fix it | |||
in a clearer way | |||
audreyt | ajs: I think I secretly agrees with you that | ||
my $x | |||
shouldn't be | |||
my Any $x | |||
nothingmuch | because you explained yourself better here than on the mailing list | ||
and the === thread was different | |||
audreyt | but I don't think we get to get that semantics in p6 :) | ||
ruoso | not in a mandatory way... | 19:18 | |
but the programmer *can* do it | |||
audreyt | indeed | ||
ruoso | I think this problem is taintness-related | ||
ajs | ruoso: Only for security purposes | 19:19 | |
nothingmuch | taintness was not yet adressed on p6 space | ||
i raised it several times | |||
ruoso | ~~ should be restricted in a tainted execution | ||
nothingmuch | but was pretty much warnocked | ||
ajs | audreyt, nothingmuch: I will try to start a new thread that is more clear. You've both helped me to see where I was being vauge. | ||
19:19
TimToady joined
|
|||
nothingmuch | ajs: also, discuss with TimToady when he is available | 19:19 | |
he should be able to explain the rationale most clearly | 19:20 | ||
since he is good at it | |||
ajs | Ok | ||
nothingmuch | and he is responsible for that mess ;-) | ||
kolibrie | audreyt: made realclean and rebuilt parrot on feather and locally. I only see filenames with 'parrot' under /home or /usr/share/doc or /var/cache/apt. verified yapc_schedule.pl does not have modifications. feather still doesn't find a match on file monday, and local still gets PGE error | ||
kolibrie thinks that he must be overlooking something | 19:21 | ||
ruoso | nothingmuch, is there something written about taintness in p6 space? | ||
nothingmuch | ruoso: nope | ||
i had an insane mmd based proposal | |||
leo | 21:16 < svnbotl> r13283 | leo++ | trunk: | ||
perlbot | What kind of idiot karmas himself? Your kind of idiot! | ||
leo | 21:16 < svnbotl> : [TODO] Implement .loadlib pragma in IMCC - 4 | ||
21:16 < svnbotl> : * add a note to PBC_COMPAT about such changes | |||
21:16 < svnbotl> : * invalidate .pbc by adding an entry for .loadlib, which I should | |||
nothingmuch | whereby the type system would use uniqueness types | 19:22 | |
leo | 21:16 < svnbotl> : have done already yesterday | ||
21:16 < svnbotl> : Please make realclean ... | |||
21:16 < svnbotl> : (again, sorry, but in hope to prevent such troubles in future) | |||
clkao | hmm, i think fglock broke test.pm compilation | ||
nothingmuch | to prove that items are not tainted | ||
leo | sorry for the longish paste | ||
audreyt | leo: aha. thanks. | ||
ruoso | nothingmuch, if I get it, it is indeed insane | ||
nothingmuch | and items that are tainted will infect others by invoking mmd methods | ||
whenever the values interact (are sent to a single function together) | |||
audreyt | leo: so that's the core of my confusion yesterday | ||
leo: thanks a lot for resolving it :) | 19:23 | ||
leo | yep | ||
nothingmuch | and then another level of mmd calls whenever a value is clearly derived from a tainted one | ||
leo | thanks for hinting me at the very problem | ||
19:23
qu1j0t3 joined
|
|||
audreyt | bbiab | 19:23 | |
ruoso | nothingmuch, like... ~~ for untainted values would dispatch to something different than ~~ for tainted values... | 19:24 | |
is it? | |||
TimToady | we are not going to bifurcate the type system to implement taintedness... | 19:25 | |
nothingmuch | ruoso: that' | ||
s just for the tainting magic | |||
then you would declare policies | |||
that add fatal errors to the tainting magic handlers | |||
the idea was to be able to also partition data | |||
so that you could e.g. tag an item as belonging to some user | 19:26 | ||
as a runtime role | |||
and then that role would leak to any data that touches that item | |||
and if data from two different users is combined that is an error | |||
because it's supposedly private | |||
TimToady | we're modeling it as a role, but it really needs to be managed at a lower level in the vm to be efficient. | ||
ruoso | I'm with TimToady... | ||
nothingmuch | TimToady: will we get extensible forms of taintedness? | 19:27 | |
ruoso | sandbox-like solutions seems more clear and efficient... | ||
TimToady | you can roll your own. won't be in the standard, I think. | ||
all the standard cares about is me/notme | |||
and can be implemented with a single bit in the object | 19:28 | ||
nothingmuch | hmm | ||
ideally i would like to be able to have high performance "infecting" too | |||
even if it's higher overhead than just a bit | |||
TimToady | okay, implement high-performance mixins, but you'll still pay a larger memory penalty | 19:29 | |
19:30
justatheory joined
|
|||
nothingmuch | just the thing that triggers "this is now also of role x because it touched something of role x" | 19:30 | |
role Foo { | |||
meta 'Meta::Role::Infectous'; | |||
} | |||
TimToady | on rule closures, it's not the same situation as P5, because P5 had string interpolation model. | 19:32 | |
we really only have to worry about it if <$tainted> is used. | 19:33 | ||
just as with ~~, somebody has to ask for the closure to be compiled. | 19:34 | ||
and nobody should be compiling a tainted closure | 19:35 | ||
19:35
FurnaceBoy joined
|
|||
ruoso | so... how this applies to foo($a,$b) { $a ~~ $b }, considering $b is a rule with a closure... | 19:35 | |
TimToady | you had to compile that rule somewhere. | ||
kolibrie | does svn.openfoundry.org/pugs/examples/r...chedule.pl work for anyone other than audreyt with input from perlcabal.org/~audreyt/tmp/monday | 19:36 | |
ruoso | *sub foo($a,$b... | ||
TimToady, I see... | |||
as the user cannot directly input a rule object | |||
TimToady | there are no implicit evals anywhere. <$tainted> is as close as you get, I think. | 19:37 | |
ruoso | but $tainted must still be a rule object... shouldn'ti it? | ||
TimToady | and then only if $tainted is a string. | ||
$tainted will be compiled as a rule object if it's a string. | 19:38 | ||
ruoso | oh.. I see.. | ||
TimToady | but we can disallow that for tainted values easily without clobbering everything else. | ||
ruoso | sure... | ||
TimToady | unlike in P5 where / $tainted / could do basically anything. | ||
the whole P5ish rx is a string idea was completely broken. | 19:39 | ||
19:39
FurnaceBoy_ joined
|
|||
TimToady | P6 regexen are just a minilanguage, compiled at compile time just like ordinary code. | 19:39 | |
even the s///ee is now fixed, since the first e comes from closure interpolation: s//{ eval ...}/ | 19:41 | ||
so it's easy to see the eval there. | |||
but the first eval is not really an eval. | |||
it's just compile-time code. | |||
pmichaud | kolibrie: I don't see how the yapc_schedule grammar can work w/o some big changes. I know it "worked" at yapc hackathon, but looking at it now I don't see how | 19:42 | |
ruoso | TimToady++ | 19:44 | |
wolverian | yay, ghc 6.5 built :) now I | 19:46 | |
just have to remember what I needed it for .. | |||
kolibrie | pmichaud: audreyt says it works right now on her laptop | ||
19:46
cognominal joined
19:50
lumi joined
|
|||
TreyHarris | TimToady: I intuited that eqv is the stringish form of === (though it's not listed in S03), but what's leg? | 20:05 | |
nothingmuch | neither === nor eqv have anything to do with strings or numbers | 20:06 | |
they are on natural typoes | |||
TreyHarris | ah. well what's leg? | 20:07 | |
wolverian | less or greater :) | 20:09 | |
(less equal greater? I have no idea) | |||
nothingmuch | where was 'leg' mentioned? | 20:11 | |
merlyn | less than, equal, greater than? :) | ||
nothingmuch | oh, i see now | 20:12 | |
damn mail server | |||
clkao | what's the status of mad? | 20:30 | |
svnbot6 | r11505 | Sage++ | The new module-based definition of the P5AST, to help clean up the code by modularizing translate.hs | ||
20:33
bpphillips left
|
|||
svnbot6 | r11506 | Sage++ | The new module-based yaml AST parser, to help clean up the code by modularizing translate.hs | 20:33 | |
r11507 | Sage++ | The new main file for translate, to help clean up the code by modularizing translate.hs. Links with ASTDefinition, ASTParser, and ASTUtil. | |||
r11508 | Sage++ | The new main file for translate, to help clean up the code by modularizing translate.hs. Links with ASTDefinition, ASTParser, and ASTUtil. My personal copy. | |||
r11509 | Sage++ | The new module for (more or less) general purpose utility functions, to help clean up the code by modularizing translate.hs. | 20:36 | ||
r11510 | Sage++ | This file now depreciated, everything moved to modules. Use ASTTranslate and other module instead. | |||
r11511 | Sage++ | This file now depreciated, everything moved to modules. Use ASTTranslate and other modules instead. | |||
wolverian | o.o | ||
svnbot6 | r11512 | Sage++ | Updating with info on the new modular setup. | 20:42 | |
cjeris | ?eval [ [ 1, 2 ], 3 ] >>+<< [ 4, [ 5, 6 ] ] | 20:56 | |
20:56
evalbot_11493 is now known as evalbot_11512
|
|||
evalbot_11512 | (6.0, 5.0) | 20:56 | |
20:56
andara left
|
|||
cjeris | hm, I don't understand. S03 says this should be [[5, 6], [8, 9]] | 20:59 | |
clkao | anyone familiar with yapp? | 21:07 | |
there seems to be precedence issue | |||
audreyt | cjeris: >><< does not yet distribute, it's a bug | 21:08 | |
cjeris: check to see if we have a test yet | |||
or write a test? | |||
(do you have a commit bit?) | 21:09 | ||
cjeris | no test in operators/hyper.t as of 6.2.12. I can't get HEAD to build on my windows box | ||
no | |||
audreyt | ok. your win32? | ||
er | |||
ok. your email addr? | |||
cjeris | yup. i have a paste with the error. | ||
pasteling | "cjeris" at 140.247.124.140 pasted "novice question: pugs build fails at pugs-fps-0.7 on Windows (no Cygwin)" (100 lines, 4.2K) at sial.org/pbot/18381 | ||
cjeris | pm'd | 21:10 | |
audreyt | cjeris: ok. can you confirm this workaround works: | ||
look at gcc-lib inside your c:\ghc\ | |||
and copy it recursively into c:\src\pugs\ | |||
so that C:\src\pugs\gcc-lib\ld.exe would exist | |||
commit bit sent. please add yourself to AUTHORS | 21:11 | ||
cjeris | ok, test coming up. thank you! | ||
audreyt | thank _you_! :) | ||
cjeris++ | |||
cjeris | build still fails, revised output coming up: | 21:13 | |
pasteling | "cjeris" at 140.247.124.140 pasted "build failure after cp -r C:/ghc/ghc-6.4.2/gcc-lib C:/src/pugs/gcc-lib" (37 lines, 1.7K) at sial.org/pbot/18382 | 21:14 | |
clkao | audreyt: did you hack up a hiveminder task export? | 21:17 | |
audreyt | clkao: I hacked up new Jifty::DBI::Schema | 21:18 | |
clkao | mmm | ||
audreyt | cjeris: ok, will look into it | ||
clkao | i need someone to help me with parse::yapp craziness | ||
Yaakov | Hello, audreyt. | 21:19 | |
audreyt | hello. | 21:20 | |
21:20
DaGo joined
|
|||
Yaakov | You aren't on any of my other channels, and I don't pay a lot of attention here, so I hadn't said hello in a while. | 21:20 | |
clkao | audreyt: i forgot, was the plan to check if there's sig available to decide if we want to do data::base-style callconv? | 21:21 | |
it's a bit annoying. did we come up with something clever? | |||
pasteling | "pmichaud" at 24.1.26.255 pasted "updated yapc_schedule.pl" (20 lines, 344B) at sial.org/pbot/18383 | ||
pmichaud | kolibrie: that version of yapc_schedule seems to work for me | ||
(see paste) | 21:22 | ||
audreyt | clkao: no, not any more clever. extract typesafety.pm seems sanest | 21:23 | |
the sig-detecting part | |||
clkao | typesafety made my eyes hurts last night | ||
so in brief, how does it do compile time checking? | |||
audreyt | it uses peephole optimizer | ||
to do on the fly optree rewriting | |||
when a sub decl is made | 21:24 | ||
it performs a "constant" folding over it | |||
clkao | hmm, but we can't do that in (current) emitter | ||
audreyt | we can use helper | ||
clkao | ie - deciding what callconv to do | ||
ingy | hola | 21:27 | |
21:31
theorbtwo joined
21:32
larsen joined
21:42
oozoo joined,
oozoo left
|
|||
nothingmuch | w00t! | 21:49 | |
nothingmuch has an exit row seat | |||
obra | :) | 21:51 | |
when do you fly? | |||
21:53
weinig|bbl is now known as weinig
|
|||
svnbot6 | r11513 | clkao++ | Fix PCR Yapp precedence emit. | 22:03 | |
22:24
justathe1ry joined
22:32
justathe1ry joined
22:36
cmarcelo joined
22:41
cjeris left
|
|||
cmarcelo | audreyt: ping? | 22:41 | |
22:41
avar joined
|
|||
svnbot6 | r11514 | cmarcelo++ | * Judy.Map et al: new freeze functions (used to test RBR, the bio software which | 22:45 | |
r11514 | cmarcelo++ | make heavy use on Maps). New function for update: alter2, uses a function from | |||
r11514 | cmarcelo++ | Maybe old value to Maybe new value. Alter2 calls delete_ and insert_ as needed, | |||
r11514 | cmarcelo++ | the basic update happens in lookup_ (which allows updates). | |||
22:47
buetow joined
|
|||
svnbot6 | r11515 | clkao++ | Ignore arg_bind when there's no arg at all. | 22:48 | |
r11516 | clkao++ | Don't emit empty callconv when there's no param. | 22:51 | ||
r11516 | clkao++ | Support not(). | |||
22:52
Daveman joined,
Teratogen joined
22:57
lollan joined
|
|||
audreyt | cmarcelo: pong! | 22:58 | |
cmarcelo: sorry, we seem to be missing each other a lot | |||
cmarcelo | audreyt: hey! it was my fault, i was mostly absent because of university end of semester, but it's all finished now (even Physics) =) | 23:04 | |
do you have some minutes to "sync" now or is not a good time? | 23:05 | ||
wolverian | so, uh, what requires ghc 6.5? I completely forgot what I built it for .. | 23:06 | |
svnbot6 | r11517 | clkao++ | $?FILE => __FILE__ | 23:16 | |
r11518 | clkao++ | Simple (extra) interpolation inside double quoted strings. | |||
audreyt | cmarcelo: perhaps not now; can you write up something and mail me instead? | ||
cmarcelo | fine | ||
vsoni | audreyt: hi | 23:25 | |
audreyt | vsoni: hi. | ||
vsoni | audreyt: Your exception patch is out....Chip should apply it soon | ||
vsoni: provided it looks good | 23:26 | ||
audreyt | yay. | 23:27 | |
url? | |||
vsoni | rt.perl.org/rt3/Ticket/Display.html?id=39715 | 23:28 | |
lambdabot | Title: "#39715: [TODO] IMCC errors should throw Parrot exceptions" | ||
vsoni | audreyt: There are two new Parrot API functions Parrot_compile_string and Parrot_compile_file | 23:29 | |
audreyt: you can call those instead of imcc_compile | 23:30 | ||
audreyt | eggcellent! | ||
once it's applied I'll test with Pugs.Embed.Parrot | |||
clkao | people love eggs these days, weird | ||
audreyt | and retire the horrible hack | ||
clkao | audreyt: 02/3-output almost passing | ||
audreyt | clkao: woot | ||
23:31
justathe1ry is now known as justatheory
|
|||
vsoni | audreyt: That would make Pugs cleaner | 23:31 | |
audreyt | not to mention far less segfaults. | 23:32 | |
the only showstopper is that parrot is not installable | |||
if that's fixed, then we can take out the "please don't embed parrot" warning | |||
vsoni | audreyt: Yep....Now i need to start think about PIRC ---> Perrcy | 23:33 | |
:) | |||
audreyt: What are good alternatives to YACC/lex in C | 23:37 | ||
wolverian | Juerd, feather's vim has a serious bug (bugs.debian.org/cgi-bin/bugreport.c...ug=373696) can I update it, or could you do it? | 23:38 | |
lambdabot | Title: "#373696 - vim: Default $VIMRUNTIME set incorrectly - Debian Bug report logs" | ||
ivanfrey | audreyt: Should I build parrot and then build pugs with PUGS_EMBED="perl5 parrot" and PARROT_PATH="path of my built parrot tree" ? | 23:39 | |
wolverian | hm. actually, I get the same error, but the path seems to be correct. weird | ||
oh, there's a local vim | 23:40 | ||
audreyt | vsoni: Lemon, surely? | ||
ivanfrey: well yes, but emb parrot is currently flaky | |||
svnbot6 | r11519 | clkao++ | Workaround a case that a segfault case where a bound $a assigned to | ||
r11519 | clkao++ | $tmp, which then gets into data::bind. The incoming $tmp has | |||
r11519 | clkao++ | SVt_PVMG, but no MAGIC attached. | |||
wolverian | which doesn't work either | ||
audreyt | vsoni: it's reentrant threadsafe | 23:41 | |
highly recommended | |||
vsoni | audreyt: is it free? | ||
audreyt | if you are stuck with C, that is | ||
www.hwaci.com/sw/lemon/ | |||
lambdabot | Title: "The LEMON Parser Generator" | ||
audreyt | vsoni: it is SQLite | ||
public domain | |||
as free as possible. | |||
ivanfrey | audreyt: leave emb parrot out for now, but continue building and running smoke tests? | ||
audreyt | ivanfrey: sure, that sounds doable | 23:42 | |
bbiab... & |