6.2.11 released! | pugs.blogs.com | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | < audreyt> my fingers juxpatosed Set by nothingmuch on 24 February 2006. |
|||
ayrnieu | ?eval sub hanoi (Int $n, Str $start, Str $end, Str $extra) { if ($n == 1) { say "move disk #1 from $start to $end." } else { hanoi($n-1, $start, $extra, $end); say "move disk #$n from $start to $end."; hanoi($n-1, $extra, $end, $start) } }; hanoi(3, 'a', 'c', 'b') | 00:03 | |
oh, evalbot did not survive. | 00:05 | ||
putter | :( | ||
someone with feather access needs to kick it | 00:06 | ||
(maybe) | |||
ayrnieu | anyway, that hanoi() refuses to accept the natural perl5ian invocation of hanoi(3, <a c b>); how can I call it with a list as the second argument? | ||
I'm on feather, now, but I don't know how to kick it... | |||
putter doesnt either | |||
re hanoi, *@a makes it into a list. | 00:07 | ||
ayrnieu | *<a b c> ? | ||
putter | think so | 00:08 | |
yes. | 00:09 | ||
ayrnieu | I guess pugs hasn't implemented this yet, then. | 00:10 | |
yes, I'd expected that to work last night, reading S06 | |||
putter | ./pugs -we 'sub f(*@a){say join(",",@a)} f(*<a b c>)' => a,b,c | 00:13 | |
works | |||
no? | |||
ayrnieu | um, isn't the point of the * in *<a b c> that you don't need a slurpy param? You could've just passed <a b c>, there. | 00:14 | |
fglock_ | in a rule capture, a variable like $a ;= (.*?) is later referred as $(a) ? | 00:15 | |
s/;=/:=/ | |||
ayrnieu | sub f(Str $a, Str $b) { say "$a$b" }; f(*<a b>) # error | ||
ayrnieu & food | 00:17 | ||
TimToady | fglock: no, $a would have to be something in the outer lexical scope. | ||
And $(a) would be a syntax error unless a is a function. But $() is not specced to take any argument yet. | 00:18 | ||
putter | ayrnieu: oooh. yes, that looks like a bug. sorry. | 00:19 | |
./pugs -we 'sub f($a,$b,$c){say join(",",$a,$b,$c)} f(*<a b c>)' | |||
*** No such method in class Any: "&f" | |||
fglock_ | TimToady: can I get things from inside $()? like $(){thing} | ||
putter | fglock_: $<a> := ... { $<a> } | 00:20 | |
$2 := ... | |||
TimToady | Only if $() happens to be an object that supports the deref role you're trying to use. | 00:21 | |
By default $() is just a string. | |||
00:22
kisu joined
|
|||
fglock_ | TimToady: so I'd better return explicit fields, like { return { a => $<a> ,} } | 00:24 | |
TimToady: (I'm using hashes to build the ast) | 00:25 | ||
TimToady: in this case, $() will be a hash reference, right? | 00:26 | ||
TimToady | yep | 00:27 | |
fglock_ | and I access it with $()<a> ? | ||
TimToady | yep**2 | ||
fglock_ | cool - thanks! | ||
pasteling | "putter" at 66.30.119.55 pasted "addition to Prelude.pm which _isnt_ going to be applied at the moment. issues mentioned." (136 lines, 4.6K) at sial.org/pbot/16156 | 00:35 | |
putter | oh, the addition is just the AnyChar tree and Math::Basic of S29. | 00:38 | |
00:46
jisom joined
00:49
Cryptic_K joined
|
|||
putter | hmm. ok, I can move Prim.hs's require and use off into Pugs::Internals, with require/use macro's defined in Prelude.pm calling them, and some other minor changes to enable the precomp caching to be written in p6. But... none of this will help pugs find it's prelude... which is the current critical path... | 00:57 | |
anyone familiar with windows? can, unlike linux, programs actually find themselves? | 01:01 | ||
FurnaceBoy_ | yes they can | 01:06 | |
FurnaceBoy_ shudders to think he knew that | |||
using calls like GetModuleFileName() | 01:07 | ||
szbalint | Hm, anyone could explain how ^ff and ff^ is different from ff? | 01:09 | |
jisom | it's possible on freebsd, but you have to mount /proc first | ||
perl -e 'print readlink "/proc/$$/file", "\n";' gives me /usr/local/bin/perl | 01:10 | ||
azuroth | something to do with open and closed ranges? | ||
putter | FurnaceBoy_: thanks | ||
FurnaceBoy_ | $ perl -e 'print readlink "/proc/$$/exe", "\n";' | 01:11 | |
/usr/bin/perl5.8.7 | |||
works on Linux, btw | |||
putter | jisom: thanks | ||
FurnaceBoy_ | note 'file' -> 'exe' :| | ||
jisom | but with freebsd, proc isn't mounted by default | ||
mauke | my linux has /proc/self/exe | ||
szbalint | ah nm, found it. | ||
jisom | and freebsd's /proc is different than linux's, although linux's can be mounted with the linux emulation layer.... | 01:12 | |
well freebsd also has /proc/curproc/file | |||
FurnaceBoy_ | $ perl -e 'print readlink "/proc/self/exe", "\n";' | 01:13 | |
/usr/bin/perl5.8.7 | |||
:-)) | |||
mauke | -le is shorter than , "\n"; | 01:14 | |
putter | szbalint: what was the answer? (I didn't even know p5 _had_ a flip-flop operator... wow) | 01:15 | |
which side to start off on? | 01:16 | ||
01:17
justatheory joined
|
|||
szbalint | "The ff operator may take a caret on either end to exclude either the beginning or ending." | 01:17 | |
not really verbose but its from S03 | |||
01:19
Cryptic_K joined
|
|||
jisom gasps | 01:19 | ||
building ghc didn't crash the computer! | |||
putter | oh, i see (reading man perlop, it's an operator on ranges... wow, again) | 01:20 | |
:) | |||
should try cmucl :) | |||
szbalint | yeah, .. is not only range and ff is the flip-flop | ||
*now | |||
putter | Ok, how about this. src/perl6/Prelude.pm should become Pugs::Prelude.pm/yml, with pugs.hs retaining just enough brains to search @*INC for for it's prelude, and the prelude containing the rest of the fancy caching stuff. | 01:23 | |
An alternative would be to install Prelude.pm and .yml ... someplace. wonder what make install does now... looking... | 01:24 | ||
fglock_ | what is the name of the variable captured by /<word>/? $/<word> ? does $<word> work? | 01:35 | |
putter | what you said; yes; work as in pge? (S05/Subrule captures) | 01:38 | |
jisom | in pge the match object allows you to get a complicated nested structure containing the things.....and although I haven't delved into it, the dumper does print the "<word>"... | 01:39 | |
fglock_ | thanks. I've got a lot of places to change | 01:40 | |
putter | fglock_: works in pge, both with $m and $/ ./pugs -e 'my $m = "a" ~~ /<ident>/; say $/<ident>' | ||
jisom | how the pge output fits in with all the perl6 matching, I don't know..... | 01:41 | |
fglock_ | jisom: the rule lib returns a Match object, which Perl 6 knows how to use | 01:43 | |
jisom | I mean how the program written in perl6 fits in..... | 01:44 | |
putter | there is also :keepall, which I like so much I've made it the default a couple of times. :) though actually, a variant that _always_ uses array of occurances, even if there is only one. it is silly to have to encode ("now on _this_ kind of node, there are two exprs, so $<expr> is an array, but on this other kind of node, with only one, its the expr itself. blech. double blech. insane. | ||
jisom | once parrot gets directory handling support, I'll probably add it to my pgegrep program and release it...-r's kind of important to me :) | 01:45 | |
fglock_ | jisom: sorry, I don't understand what you asked | 01:47 | |
jisom | me either | ||
fglock_ | :) | 01:48 | |
01:50
pdcawley joined
|
|||
putter | can anyone remind me how to get IO a from EvalT (ContT Val (ReaderT Env SIO)) Val ? :/ | 01:52 | |
obra | 01:54 | ||
azuroth | return? :-p | ||
01:58
kanru joined
02:01
aufrank joined
|
|||
aufrank | good evening all! | 02:02 | |
02:07
pdcawley joined
02:21
hcarty joined
02:23
fglock_ left
02:25
hcarty left
02:28
beppu joined
02:29
jisom joined
|
|||
jisom | how long should it take to compile Pugs.AST.Internals | 02:30 | |
beppu | jisom, My box only 256MB of RAM and it took forever. In fact I ^C out of it after a few hours, because I figured I'd try again when I got more RAM for my box. | 02:34 | |
jisom | hmmm....I think it has 96 megs | ||
I had to add swap space just to compile ghc.... | 02:35 | ||
right now it's at 109 megs of ram for ghc, so the swap seems to be slowing it down | |||
maybe that computer has 128, I can't recall | 02:36 | ||
ayrnieu | This is probably an unwise computer to work with pugs on. | ||
beppu | pugs is a hungry beast | ||
jisom | all the more reason for me to prefer parrot | ||
azuroth | maybe you should get feather access? | ||
jisom | feather? | 02:37 | |
ayrnieu | jisom - feather.perl6.nl | ||
azuroth | feather.perl6.nl - ssh access for building pugs and parrot and stuff | 02:38 | |
jisom | I don't have a single problem with parrot | ||
ayrnieu | But yes, I'll be happy when pugs bootstraps itself away from haskell. I'll then be able to run it under OpenBSD/macppc. | ||
well, when perl6 does. | |||
jisom - parrot doesn't rely on GHC. | 02:39 | ||
jisom | well all we need is a perl6 compiler that targets parrot | ||
I know, I use parrot often.... | |||
pir's a good language :) | |||
azuroth | actually, anyone use feather? svk seems to be acting funny for me. | ||
ayrnieu | yes, that is a goal. In the meantime, you might ask for a feather account if you want to work with pugs on other than your 128M RAM machine. | 02:40 | |
azuroth - yes. Have you read the SVK-on-Feather document? | |||
azuroth | I... possibly have not. | ||
*googles* | |||
jisom | "It will be a simple server, with an Intel main board, a Pentium 4 2.4 GHz CPU, 1024 MB of RAM and 80 GB of mirrored (raid1) diskspace." - that's not simple!!! | 02:41 | |
ayrnieu | that's not complex, either. | 02:42 | |
azuroth | I did have svk set up for parrot a while ago, but it isn't working. does your svk complain about prototype mismatches? | ||
ayrnieu | it has 2G RAM now, I think. | ||
jisom | I use svn | ||
never used svk | |||
ayrnieu | azuroth is asking me, jisom. | ||
jisom | oh | ||
ayrnieu | azuroth - yes, on feather, and I don't know why they occur, but I haven't seen any problems from them. | 02:43 | |
azuroth | svk's used on feather so each user doesn't have to get the same revisions over the network | ||
02:44
mako132_ joined
|
|||
szbalint | hm where did the svn bot go | 02:45 | |
ayrnieu | szbalint - freenode as a whole exploded a little while ago. evalbot is also a casaulty. | ||
er, weird, svk on feather is giving me files that I'm not getting on my home machine. | |||
t/operators/beer.t as a new file | 02:46 | ||
I guess svn.openfoundry.org/pugs is a bit behind. | |||
szbalint | possible | 02:48 | |
but beer.t doesn't exist anymore | |||
I just deleted it ;) | |||
So don't expect it to appear. | |||
ayrnieu | ah, there it goes. | 02:49 | |
szbalint | btw, shouldn't the bots be able to handle connection loss to the server? | 02:50 | |
jisom | bots have no brains | 02:52 | |
szbalint | they are p6 bots, right? | 02:58 | |
ayrnieu | they are. | 02:59 | |
by which I mean: yes, evalbot is. I don't know about the other. | |||
szbalint | ah | 03:05 | |
it appears that a recent commit might have broken evalbot | |||
03:06
pdcawley joined
|
|||
ayrnieu | how does $#a translate to perl6? Is @a-1 now the most natural way? | 03:08 | |
azuroth | @a.last ? | 03:09 | |
ayrnieu | last() is something else. | 03:11 | |
azuroth | oh. I thought last was .elems(-1 | ||
ayrnieu | @a.last seems to parse to the flow-control operator. | 03:12 | |
azuroth | ahh, .end | ||
ayrnieu | ah, thanks. | ||
azuroth | what's the flow control operator? | 03:13 | |
szbalint | it seems audreyt's pugs instance is broken and thus the loop wanting to resurrect svnbot and evalbot just dies | 03:15 | |
ayrnieu | hah, for(0..Inf) {} doesn't quite do what I want. | ||
azuroth - for (0..10) { last if $_ > 5; say } | 03:16 | ||
azuroth | ohh, right | ||
ayrnieu | S04 refers to them as 'loop modifiers'. | ||
03:17
kisu joined
|
|||
szbalint | hm, isn't for (0..Inf) supposed to be lazy? | 03:20 | |
jisom | why not just add a "forever {}" | 03:22 | |
azuroth | jisom: so that, say, map {$^x * $^x} (0..Inf) works too | 03:24 | |
03:26
shric joined
03:36
pdcawley joined
|
|||
TimToady | jisom: on top of which, a forever loop is spelled "loop {}". | 03:58 | |
jisom | ok | 03:59 | |
part of me's getting used to pir which doesn't have any conventional looping....sort of.... | 04:00 | ||
azuroth | what are you doing in pir, btw? | 04:01 | |
jisom | programming for fun, what else? | ||
azuroth | writing a compiler? :-) | ||
jisom | well that'd be nice but not likely :) | 04:02 | |
04:02
aufrank joined
|
|||
azuroth | I'm pretty sure PGE's usable as a yacc substitute | 04:03 | |
jisom | yeah, PGE's got a lot done...it's not optimized for speed yet, but it'll get the job done | 04:04 | |
I've contemplated porting at least parts of osascript to parrot....but that's mostly it.... | |||
azuroth | osascript? | 04:05 | |
jisom | right now I wish I could improve a part of the macro reading in parrot's lexer so my HLL macro's will be more usable and make programming in pir actually look high level | ||
azuroth | hmm, interesting | ||
jisom | generic apple script | ||
the problem with the lexer as is, is that a comma is always a parameter delimiter even when you don't want it to be | 04:06 | ||
it doesn't eliminate their use but it makes it harder | 04:07 | ||
PIR actually supports something like this: | |||
.Foreach(def, array, | |||
print def | |||
print "\n" | |||
) | |||
azuroth | hmm. that'd be interesting | 04:08 | |
jisom | but for the code block, it can't have any commas, a big problem, especially for nesting macros | 04:09 | |
azuroth | or maybe you could just add {} quoting? | ||
jisom | but, everyone was rather surprised when I sent it to p6i about it, it's probably technically not supposed to work | ||
well that's my hope but that doesn't mean I'll get it working | 04:10 | ||
I'm not familiar with working with flex | 04:13 | ||
04:14
Fleebailey33 joined
04:16
amnesiac joined
04:17
FurnaceBoy joined
|
|||
azuroth | do macros need parens? | 04:20 | |
jisom | yes | ||
I know how to add support I just don't know how to do it with lex | 04:21 | ||
the preprocessing is only a text preprocessor(and not really "pre" because it's done at the same time as compiling), so it's very simple really | 04:22 | ||
at least as far as I know | |||
azuroth | hmm, yeah. it looks like you need paras, except if it takes no args | 04:23 | |
jisom | but at present, a comma in a comment will still count as a delimiter to the preprocessor | 04:24 | |
FurnaceBoy | heh | ||
do you have a ',' operator versus ',' arg sep ambiguity? | |||
FurnaceBoy knows lex | 04:25 | ||
jisom | using code blocks in this fashion wasn't intended, though, but in a way, it's light weight enough to allow heavyweight stuff | ||
azuroth | compilers/imcc/imcc.l:read_params .. looks like an easy fix? | ||
FurnaceBoy | oh, in a comment... | ||
jisom | yeah | ||
that's the place I was working in | |||
azuroth | looks like fun. good luck :D | 04:30 | |
jisom | guessing didn't work :( | 04:31 | |
azuroth | heheh, I was just looking at it. I didn't try - I'm not a huge lex user. I can't even see where the ( and ) tokens are defined | 04:35 | |
jisom | lines 723, and 794 | 04:36 | |
735 is there the comma's defined | |||
azuroth | hmm, I can see comma | 04:37 | |
jisom | with regard to macros, the parenthesis and comma are hard coded in as in "c == ','" | 04:38 | |
04:38
pdcawley joined
|
|||
jisom | my line numbers are off | 04:39 | |
forgot about local modifications :-\ | |||
) and , are set in read_params | |||
azuroth | ah, ok. I figured lex would need to know that the ( and ) etc were tokens, so it wouldn't error on them | 04:40 | |
jisom | not for macros | ||
macro's sort of jump out of lex | |||
04:40
Fleebailey33 left
|
|||
azuroth | ahh, ok. so yylex just gets it from the file or whatever? nifty | 04:41 | |
jisom | in one ear, out the other... | 04:42 | |
:) | |||
I'm a mac user, I like "it just works" | |||
azuroth | c = yylex(&val, interp) // just gets a char from stdin, does no lexing? | ||
jisom | yeah | 04:43 | |
at least not yet | |||
azuroth | what about read_params "if (YYSTATE == heredoc2)" | ||
jisom | no heredocs in macros | 04:44 | |
azuroth | but how does it get yystate if we're not lexing? | ||
confusing | 04:45 | ||
jisom | as I understand it, it's lexing, but then when it finds a macro it jumps to the macro reading functions... | ||
but no lexing is done _while_ the macros are being read | |||
azuroth | .foo ( ... ) # so when parsing ..., the last token is still .foo? | 04:46 | |
jisom | I have no idea whatsoever | ||
04:48
pjmm joined
|
|||
putter | ?eval 3 | 04:49 | |
azuroth | hmm, I think it does lex. so _could_ just define a token, \{<toks>\} which equates to toks or something? | 04:56 | |
probably not so hot, though | 04:57 | ||
jisom | tokens aren't parsed while reading macro parameters, only text.....at least I think so | ||
also consider that it can't be too "heavy weight" | |||
azuroth | .foo({!}) gives a tokenising error,.. hmm, there must be a better way to prove it | 05:00 | |
05:00
pdcawley joined
|
|||
azuroth | well, .foo("blah, b") would be two args if it wasn't tokenising, right/ | 05:01 | |
jisom | before or after macro processing? | ||
yeah | |||
azuroth | I'm pretty sure it's inside the macro processing | ||
the yylex function returns the next token from the input file | |||
jisom | next token? hmmm.....I was thinking it was the next character..... | 05:02 | |
jisom doesn't know lex | |||
azuroth | well, it returns an int which is the next token's type | ||
however, special tokens which are just a char are returned as their character - so you can use them easily | 05:03 | ||
jisom | ok | ||
that would explain some of my debugging problems... | 05:05 | ||
azuroth | so you need to add two more tokens, { and }.. then just when you see a {, keep getting tokens until you see the matching }. or you could make a block macro, but that might conflict with other stuff? | 05:07 | |
jisom | braces have no special meaning in pir, brackets either | 05:08 | |
FurnaceBoy | how is your grammar defined? I usually use bison (yacc)... | ||
jisom | yacc | ||
imcc uses a lex/yacc combo | |||
but all macro stuff is in lex | 05:09 | ||
FurnaceBoy | well, that implies that macros are not made of tokens. | ||
which sounds like the difficulty here. | |||
i.e. they're strings inserted into the pre-lex input? | |||
I've never implemented that kind of macro processing, but it would seem fairly straightforward. | 05:10 | ||
in fact, a macro in that sense would work just like a HEREDOC | 05:11 | ||
05:11
eric256_ joined
|
|||
jisom | essentially, yes... | 05:12 | |
FurnaceBoy | so, sorry, just briefly, what's the problem you have right now? | ||
jisom | essentially, how to use a comma inside a parameter instead of as a delimiter | 05:13 | |
FurnaceBoy | can you paste an example? | ||
jisom | .Foreach(letter, array, | ||
print letter | |||
print "\n" | |||
set $I0, 4 | |||
) | |||
FurnaceBoy | I've resolved that kind of ambiguity in a yacc grammar before (function calls versus ',' operators), but your situation is a little different I think | ||
jisom | the comma after $I0 is treated as a delimiter | 05:14 | |
FurnaceBoy | ah. | ||
okay, but how do you trigger and stop macro body slurping? | |||
jisom | using braces to act essentially as apostrophes would resolve it in part.... | ||
the ) at the end | |||
FurnaceBoy | but when is it supposed to start? first line after '(' ? | 05:15 | |
jisom | I think parenthesis will trigger the problem just as comma's do, albeit slightly different | ||
FurnaceBoy | the way you specify it risks ambiguity | ||
jisom | parameters are from after the ( to before the ) | ||
FurnaceBoy | imagine the case with no parametersr | ||
- | |||
r | |||
jisom | just () | ||
FurnaceBoy | right, | ||
but you need to look ahead PAST parameters before slurping the body | 05:16 | ||
the question is, how far must you look ahead | |||
right now, it appears you might need to read all the way to ')' | |||
jisom | I'm not following you | ||
eric256_ | can i interject with a stupid question...does anyone have a link to directions on downloading the svn of pugs? /me is slow tonight | 05:17 | |
FurnaceBoy | I don't quite follow 'a comma inside a parameter' ... what do you mean by that? | ||
azuroth | eric256_: maybe search.cpan.org/dist/Perl6-Pugs/lib...s/hack.pod | ||
05:18
Nouk joined
|
|||
azuroth | .foo(1, {1,2,3} ) | 05:18 | |
jisom | in the example I pasted, the comma after $I0 isn't wanted to my a macro parameter delimiter but the preprocessor will treat it as one | ||
*to be a | |||
FurnaceBoy | oups | ||
eric256_ hits forhead and thinks it is probably time to sleep. thanks azuroth | |||
FurnaceBoy | sorry I misunderstood the above then. ignore my ramblings. I'll resync. :) | ||
azuroth | :-) | ||
jisom | ok | ||
this is really more parrot than pugs but oh well | 05:19 | ||
FurnaceBoy | ah | 05:20 | |
okay, I wasn't as far off as I thought. | |||
it really gets back to my question, I think, which is when you stop looking for parameters and slurp the macro body? | 05:21 | ||
the way it is defined, it's ambiguous I think | |||
once your 'sub lexer' switches to macro-body mode, everything is fine until it hits a ')' , right? | 05:22 | ||
parens in the body can be handled by counting nests | |||
jisom | what we're talking about now is when calling a macro, the ambiguity you're thinking about is allotted for with the "need_id" which state that it needs to be an identifier, which is used for defining macros | ||
FurnaceBoy | ah. | 05:23 | |
okay so I was confused. | |||
jisom | defining a macro is linebased... .macro foo(bar, baz)\n...\n.endm | ||
azuroth | hmm. I'm still confused :-) | 05:24 | |
FurnaceBoy | and calling it is per your example (set) ? | ||
jisom | .macro foo(a, b) | 05:25 | |
.a += .b | |||
.endm | |||
.sub main :main | |||
.foo($I0, $I1) | |||
.end | |||
simple "expected" usage | |||
05:25
pdcawley joined
|
|||
FurnaceBoy | ah okay. all of what I've said is irrelevant. :) | 05:26 | |
jisom | examples are helpful :) | ||
FurnaceBoy | and you want to actually pass a literal comma in/as a parameter | ||
jisom | yes | ||
FurnaceBoy | that should only be a matter of a quoting mechanism, as azuroth hinted at | 05:27 | |
jisom | for when you're using code as a parameter | ||
FurnaceBoy | quoting or bracketing | ||
jisom | exactly | ||
FurnaceBoy | that logic can be added to the sub-lexer that slurps each param | ||
or a new sub-lexer, if it's too dumb | |||
azuroth | for easiness, could start with just quoting with ( and ) - I'm trying to find where ( and ) are actually defined as tokens, but not having much luck | ||
FurnaceBoy | let me just clarify, parameters are bits of text, not token streams, right? | 05:28 | |
jisom | I don't think it needs to be that bright, if it finds a '{', call a sub to parse until the '}', if another { is found, recursively call itself... | ||
azuroth | token streams | ||
jisom | azuroth, do they have to? | ||
putter | ?eval say 3 | ||
FurnaceBoy | okay, well it seems to me that you must already have some kind of token for string -- i.e., a string containing comma | ||
ayrnieu | stil no evalbot. | ||
azuroth | have to be? no, but they are at the moment, and it's much easier for { "blah}" | 05:29 | |
FurnaceBoy | when you pass code, are you passing strings, or tokens? | ||
if tokens, then you are going to need a { } block delimiter exactly as azuroth suggested | |||
azuroth | FurnaceBoy: I think read_params gets the tokens and concatenates them, or something... | 05:30 | |
err. concatenates them into a string | |||
FurnaceBoy | this turns out to be rather similar to the case I know about, which is f(a,b) versus f((a,b),c) | ||
putter | well, ~20min of my life spent discovering -e $stem~".yml" gets parsed as (-e $stem)~".yml". :( | ||
azuroth | that doesn't feel right | 05:31 | |
jisom | that's why I like pir......explicit precedence | ||
azuroth | heheheh | 05:32 | |
ayrnieu | -e "$stem.yml" | ||
azuroth | are you by any chance a lisp user, jisom? | ||
ayrnieu | either a lisp or a forth programmer may appreciate that. | ||
jisom | no, neither am I a forth user | ||
but I'd choose forth over lisp when it comes to basic syntax | 05:33 | ||
pir's more like assembly | |||
FurnaceBoy | explicit precedence still can't do anything with f(a,b,c) if you mean f( (a,b) , c ) | 05:35 | |
it's inherently ambiguous because you're overloading ',' :-) | |||
jisom | actually in pir, you can | ||
FurnaceBoy | in one case it's an operator, in the other it's lexing sugar | ||
jisom | because you can't autovivify and array like that | ||
FurnaceBoy | okay | ||
azuroth | it's kinda like an array ctor in both cases, though | ||
jisom | rather annoying because sprintf wants an array, even if it's only one term you're wanting to "sprintf" | ||
FurnaceBoy | yeah, as an assembly fan, I noticed your .macro/.endm with approval ;-)) | 05:36 | |
jisom | months of assembly... | ||
pir rather | |||
05:36
pdcawley joined
|
|||
FurnaceBoy | yes, it is in dynamic languages, but I was thinking of more C-like stuff. | 05:36 | |
jisom | some friendly hll constructs | ||
FurnaceBoy | azuroth, you know mathematica? | 05:37 | |
azuroth | no, I don't believe I do | ||
ayrnieu | oh, "@foo" interpretation has gone away again? | ||
05:37
pdcawley joined
|
|||
ayrnieu | ("{@foo}", right.) | 05:38 | |
FurnaceBoy | I wrote a lex/yacc assembler once, jisom, but I never implemented macros. telegraphics.com.au/svn/dpa/trunk | 05:39 | |
jisom | and currently macros are done as it's processing instead of before processing..... | 05:40 | |
I could just write a preprocessor in perl.... | 05:41 | ||
azuroth | /info | ||
err | |||
gaal | putter: 03:20 < putter> Ok, how about this .* the prelude containing the rest of the fancy caching stuff. | ||
that's exactly the idea | |||
eric256_ wonders what .* meant in that context | 05:44 | ||
05:44
pjmm left
|
|||
gaal | eric256_: I didn't want to quote the whole thing. :) | 05:44 | |
and: hello! long time no elk. | |||
eric256_ | ohhh. that makes alot more since | ||
life gets busy and virtual things take the hit first ;) | 05:45 | ||
05:45
pdcawley_ joined
|
|||
eric256_ | attempting to compile pugs on win32 for the first time in probably 5 months. lol. as usual its beating my CPU to death with a stick | 05:46 | |
jisom | I'm trying to do it on freebsd for the first time....needs more swap space | ||
gaal | y'all should make sure what's mentioned in config.yml fits your systems | 05:47 | |
putter | gaal!!!!! | ||
aufrank | does anyone here build pugs on OSX? | 05:48 | |
putter | gaal: ping? putter says very very hopefully... | ||
05:48
K joined
|
|||
gaal | pong :) | 05:48 | |
sup? | |||
putter: I hope Complex::i isn't intended to be exported by default. :-P | 05:49 | ||
putter | gaal: is there some way to compile an arbitrary file to the .yml form? | 05:50 | |
lol # i | |||
gaal | putter: sure! ./pugs -CParse-YAML Arbitrary.pm > Arbitrary.yml | 05:51 | |
or recommended: ... | gzip -c Arbitrary.yml.gz | |||
putter | applying that treatment to Test.pm results in non-happiness. perhaps I'm doing it wrong. trying by hand... | 05:52 | |
gaal | define non-happiness | 05:53 | |
eric256_ | are use and require just going to cache modules by default? or are there still unresolved issues with that | ||
gaal | eric256_: the plan is to cache by default, yes | 05:54 | |
putter | ./pugs -CParse-YAML blib6/lib/Test.pm > blib6/lib/Test.pm.yml and the yml gets loaded, but no 0..1 appears. | ||
gaal | urp? no, that *creates* the yaml bytecode, not loads it | ||
putter | ./pugs -CParse-YAML blib6/lib/Test.pm > blib6/lib/Test.pm.yml; ./pugs -Iblib6/lib -e 'use Test;' | ||
gaal | ah | 05:55 | |
putter builds an unmodified pugs to make sure he didnt break it... | |||
gaal | ./pugs -Iblib6/lib -e 'use Test; plan 42' | ||
./pugs -Iblib6/lib -e 'use Test; plan 42; pass "moose"' | |||
putter | It works for you, after .yml'ing? | 05:56 | |
gaal | exportation was broken but I think audrey fixed it | ||
try Test::plan 42; Test::pass | |||
I'm starting up my colinux, se | |||
c | |||
what doesn't work for you now? (while my pugs builds...) | 05:57 | ||
putter | ah, ./pugs -Iblib6/lib -e 'use Test; Test::plan 42; Test::pass' has output. 1..42 ok 1 | ||
./pugs -Iblib6/lib -e 'use Test;' doesn't have output. ;) | 05:58 | ||
eric256_ | how do you know its the compiled one though? (just curious) | ||
putter | if a .yml file exists. does if the .pm is used. | ||
change in behavior depending on existence of .yml file? | 05:59 | ||
eric256_ | so if the yml file is present and broken it will through an error instead of using the .pm? | ||
gaal | putter: then call Test::plan() | ||
eric256_: I think we disabled the error in the general case now, though it's still comment in the code | |||
because the user experience should not depend on precompilation being presennt | 06:00 | ||
putter | to recap, ./pugs -Iblib6/lib -e 'use Test;' has normal output only in the absence of a .yml. ./pugs -Iblib6/lib -e 'use Test; Test::plan 42; Test::pass' works with both. | ||
06:00
Aankhen`` joined
|
|||
gaal | but to answer your other question.. strace :) | 06:00 | |
putter: okay, that means that the exporter still needs work. | |||
putter | a pugs I haven't messed with has the same behavior. | 06:03 | |
gaal | hmmm, this may need the Pad refactoring audrey was talking about to fix | ||
eric256_ | so is the prelude now compiled to yml instead of haskell like before? i thought i read that somewhere, but my machine just took quite a while at the generating precompiled prelude step | ||
gaal | eric256_: there's a good summary on the blog | 06:04 | |
it's much faster to build than the previous approach | |||
putter: I'm still trying to reassemble my understanding of why export only kinda works | 06:06 | ||
eric256_ | yea i read the blog, and i just reread...it doesn't say if the default make behavior is to precompile to haskell or the yaml though. | 06:07 | |
aufrank | when I synced the design docs today I got a bunch of updates, but they hadn't been sent to p6l... is the commit-poster turned off now? | ||
(synced from svn.perl.org, that is) | 06:09 | ||
gaal | eric256_: -CPugs, the old way, is no longer in active use. (But curiously, the YAML work prompted it to be imroved too!) | ||
eric256_ | okay so make with prelude set to be precompiled results in it being compiled to yml.. should make development of prelude.pm much faster if you can turn around and compile it that easily.../me wonders if compile is the wrong owrk. either way nice work ;) | 06:10 | |
putter | gaal: np. it's 1am for me, so end of day. I'm going to check in my changes because 1- it's been months since I broke the build, so I must not be trying hard enough, and 2- it might not - the test for attempting to create a .yml upon use() is the .pm being writable, which blib6/lib tends not to be. the t/ I've tried (just a few) work. | 06:12 | |
gaal | eric256_: actually, the config.yml directive is ignored now: we always precompile Prelude.pm because it's turned cheap :) | ||
putter: lol | |||
I'd better start getting to $work, myself | 06:13 | ||
06:15
pdcawley joined
|
|||
putter | gaal: thank you very much for your help. you assistance was just in the nick of "I'm going nuts" time. :) | 06:19 | |
gaal | go to bed instead, I hear it's much nicer there :) | 06:21 | |
gaal takes off for $work & | 06:22 | ||
jisom | but sleep deprivation can cause a pleasant euphoria | ||
putter | As a side note, I observe that mv'ing src/perl6/Prelude.pm to blib6/lib/Pugs/Prelude.pm, and, err, mutter, mumble, hacking the .hs to insert "use Pugs::Prelude.pm;" in the first line of every file mumble, seems to leave ./pugs at least passing at least some tests. | 06:23 | |
gaal: :) | |||
06:23
Draconit joined
|
|||
putter | gaal: thanks again. | 06:23 | |
eric256_ | any ideas what " Pattern match failure in do expression at" means? | 06:24 | |
gaal | eric256_: I'm not here any more, but nopaste? | ||
putter: np :) | |||
putter | looks like svnbot6 is awol. patch 9275 in. | ||
eric256_ | i'm not even sure what to nopaste. lol | ||
gaal | whatever comes after that "at" | 06:25 | |
azuroth | something like ([], e) <- blah when blah isn't ([],e)? | ||
pasteling | "eric256" at 24.8.74.230 pasted "wierd error" (7 lines, 230B) at sial.org/pbot/16159 | ||
eric256_ stares at azuroth. lol | 06:26 | ||
06:26
Kattana joined
|
|||
azuroth | err, never mind | 06:26 | |
pasteling | "eric256" at 24.8.74.230 pasted "whole script in case someone is interested" (56 lines, 1.3K) at sial.org/pbot/16160 | ||
putter | good night folks. have fun. & | 06:28 | |
azuroth | night! | ||
eric256_ | night | ||
hmm. it looks like it is calling the + operatore based on the class instead of the returned type of the methods being used. | 06:29 | ||
azuroth | like, based on static type, not dynamic..? | 06:30 | |
eric256_ | well.. $a.toBase() + $b.toBase() failes with that error. but if i dump them into variables and add the variables it works fine | 06:31 | |
gaal | is your Prim:99 the case in op1 "id"? that should never fail a patmatch, it has a _ case | ||
but for real, I ain't here & | |||
eric256_ | yes thats where it is, its a fresh copy just svn'ed an hour ago.. | 06:32 | |
06:34
pdcawley joined
|
|||
azuroth | what's with the * in "multi sub *infix:<+>", by the way? I don't recall seeing it before | 06:35 | |
eric256_ | thats from way back. thats why i'm revisiting the script. lots of new things fixed and implemented since it was first written | ||
azuroth | ahh | 06:36 | |
eric256_ | oddly...removing it causes the same error even with the enw temp variable. | ||
06:38
putter joined
|
|||
putter | two quick comments | 06:38 | |
azuroth | yeah? | 06:39 | |
putter | i started a refactoring of.... fribble... Prim/Eval.hs, but decided it was mission creep for the evening. | ||
2- if anyone wants some easy p6 hacking, see the top of TASKS. Math::Basic / Num gets a zoo of round_foos. sanctioned, at least for the moment, by @larry[0]. night & | 06:40 | ||
06:42
handon is now known as vborja
|
|||
eric256_ | was that last statment by putter english? lol | 06:43 | |
ayrnieu | yes. | 06:45 | |
FurnaceBoy | it kinda lapsed into shell at the end there. | ||
eric256_ | ummm sprintf can't be found and as doesn't work...is my copy borked somehow? | ||
ayrnieu | eric - talking about parrot? | ||
eric256_ | pugs | ||
ayrnieu | what can't find sprintf, and how doesn't 'as' work? | 06:46 | |
eric256_ | No compatible subroutine found: "&sprintf" same with 'as' | ||
ayrnieu | eric - well, I have a sprintf here, so that may indeed be borkage. I don't know about an 'as'. | 06:47 | |
revdiablo | ?eval 1.as("%03d") | ||
Wither evalbot? | |||
ayrnieu | revdiablo - went away when all of Freenode did. | ||
eric256_ | in eval i can't get either to work...most be something else going on here | 06:48 | |
ayrnieu | but oh, OK. That's an interesting method. | ||
eric - must be. I see them. | |||
eric - please show us the exact code you try to use these in. | |||
06:48
justatheory joined
|
|||
eric256_ decides its time for sleep anyway...guess i'll play with it in the morning. | 06:49 | ||
revdiablo | ayrnieu: It makes some things a lot easier than working it into sprintf() | ||
pasteling | "eric256" at 24.8.74.230 pasted "yet more strange occurences" (6 lines, 229B) at sial.org/pbot/16161 | ||
06:50
FurnaceBoy_ joined
|
|||
eric256_ | i think prelude might not be loading at all.../me is going to stick around till the recompile is done. whats another 20 minutes | 06:50 | |
do i need to nmake install these days? could that be the trouble? | 06:51 | ||
06:51
FurnaceBoy_ left
06:52
drbean joined
|
|||
ayrnieu | no, I don't need to make install. | 06:52 | |
and yeah, those work just fine here. | 06:53 | ||
eric256_ | lol | 06:54 | |
06:55
justatheory joined
|
|||
eric256_ | i so did that to myself...way back when i was hacking prelude i had env vars set to load from special places...removed that and it looks okay now | 06:55 | |
nite | 06:58 | ||
07:02
pdcawley joined
07:08
pdcawley joined
07:27
samhain1138 joined
07:30
mtve joined
07:31
nothingmuch joined
07:48
KingDiamond joined
|
|||
azuroth | /users | 07:50 | |
err | |||
buu | ?eval if 1 { 1; } | ||
azuroth | no evalbot :-( | ||
buu | sigh | ||
azuroth | wonder when audrey's going to spring to the rescue | 07:51 | |
audreyt | ...like, now | 07:52 | |
obra | hey audreyt | ||
azuroth | gee. you really are the IRC hive | ||
ayrnieu | IRC hive? | 07:53 | |
azuroth | all information going through IRC has to go through her, first | 07:54 | |
ayrnieu | er, OK. | 07:55 | |
jisom | sounds more like a bottleneck than a hive.... | ||
ayrnieu | (1 xx Inf)[Inf] # hee | 07:56 | |
nothingmuch | moosen | ||
ayrnieu | What does that do? It takes the infinityth element from an infinite list of 1s. It works just fine in pugs. | ||
azuroth | niftylicious. | 07:57 | |
jisom | how does pugs handle 1/Inf? | 07:58 | |
nothingmuch | did you guys see the new smolder thing | ||
jisom: like haskell does | |||
ayrnieu | my @a = 1 xx Inf; @a[Inf] # handled less gracefully, however. | ||
nothingmuch | ? | ||
xx is non lazy | 07:59 | ||
ayrnieu | nothingmuch - pugs is happy enough with: my @a = 1 xx Inf; 5 # displaying 5, only becoming upset with @a[Inf] later on. | 08:00 | |
nothingmuch - how do you know that xx is non-lazy? | 08:01 | ||
audreyt | jisom: IRC is a klein bottle, not a gross one, so it has no bottlenecks | 08:05 | |
gaal | hey audreyt, all | ||
how was GPW? | 08:06 | ||
08:07
stennie joined
|
|||
nothingmuch | arcady: mine isn't =/ | 08:07 | |
audreyt | gaal: it was fun -- mainly the hallway track with nicholas and andk | ||
nothingmuch | oh wait, it is, sorry | ||
but not with just my @a = xx Inf; | |||
and I know why now | |||
because it's .perl'ing it | |||
=( | |||
audreyt | putter's r9275 broke everything, including Net::IRC | ||
nothingmuch | that putter | 08:08 | |
we should take away his commit bit | |||
he never does anything useful anyway | |||
audreyt smacks nothingmuch for hate speech | |||
nothingmuch | =) | ||
ayrnieu: my @a = 1 xx Inf; @a[5] | 08:09 | ||
does that work? | |||
ayrnieu | nothingmuch - nope. | ||
nothingmuch - (my @a = 1 xx Inf) just sits around like a brain, I suppose: safe until an immune system discovers it. | 08:10 | ||
gaal | (hallway tracks)++ | ||
they make one tres serene | |||
nothingmuch | andreas koenig? | ||
gaal | [OT] unix.rulez.org/~calver/pictures/curves.jpg | 08:11 | |
audreyt | nothingmuch: yeah | ||
nothingmuch | sourceforge.net/project/screenshots..._id=161136 | ||
audreyt | hm, weird, it may not be putter after all -- as r9274 doesn't work either | ||
audreyt triages | |||
nothingmuch | that damn putter, confusing us all the time about his revs | 08:12 | |
wee should take away his commit bit, so that we know who really did it next time | |||
gaal++ # cute link | |||
08:24
Nouk joined
08:32
feng joined
|
|||
gaal | a few notes on 9275 | 08:36 | |
(sorry, can't fix myself now) | |||
* bool::true/false prolly better than 1/0, though this is very minor | |||
* use file_sep instead of '/' | |||
* look for the gzipped version, too | 08:37 | ||
* Pugs::Internals::compile_file_to_yml may as well look for some gzipper. | |||
* Pugs.Prim.Eval's opRequire can probably stop doing the search path thing now that the Prelude version takes care of this | 08:38 | ||
* putter++ | 08:39 | ||
that's all for now :) | |||
08:41
iblechbot joined
|
|||
audreyt tries using "make profiled ; ./pugs +RTS -xc -RTS" to get a stack trace of this mysterious error | 08:41 | ||
gaal | oh, and another note on 9275: Pugs::Internals::emit_yaml should also be fixed, and we need to find a way to avoid parsing the file twice (once for precompilation and once for the curent &use) | 08:55 | |
08:58
KingDiamond joined,
ghenry joined
09:13
svnbot6 joined
09:19
premshree_ joined
09:20
evalbot_9275 joined
|
|||
audreyt | summon evalbot | 09:20 | |
?eval 'woot' | |||
evalbot_9275 | "woot" | ||
09:21
beppu joined,
K joined
|
|||
audreyt | fg | 09:21 | |
oops :) | |||
integral | umm, I thought Data.FastPackedString had builtin gzipping? | ||
audreyt | it had builtin zlib bindings | 09:22 | |
but if you are on win32, there'd be no zlib to bind | 09:23 | ||
ayrnieu | ?eval (sub ($a, $b) { $a ~ $b })('a', 'b') | ||
evalbot_9275 | "ab" | ||
ayrnieu | ?eval (sub ($a, $b) { $a ~ $b })(*<a b>) | ||
evalbot_9275 | Error: Undeclared variable: "$b" | ||
integral | ah. stupid os | ||
audreyt | hm, the buildfail turns out to be a simple | 09:24 | |
sub infix:<ā > {} 1 | |||
which triggers Prelude.last: empty list | |||
only that particular unicode "not equal to" char triggers this | |||
weird. | |||
09:33
handon joined
09:34
nothingm1ch joined,
handon is now known as vborja
09:40
marmic joined,
iblechbot joined
09:42
wilx joined
|
|||
svnbot6 | r9276 | audreyt++ | * Pugs.Parser.Operator: Fix the misparse of "not equals" | 09:59 | |
r9276 | audreyt++ | in Set.pm that triggered parsefail for all IRC bots; | |||
r9276 | audreyt++ | decodeUTF8 should be executed before words. | |||
10:03
nothingmuch joined
10:23
KingDiamond joined
10:30
chris2 joined
10:44
premshree_ joined
10:46
GeJ joined
10:50
pmurias joined
|
|||
pmurias | hi all | 10:51 | |
nothingmuch | hi ho | 10:53 | |
svnbot6 | r9277 | pmurias++ | * a dispatch hash is used for emitting nodes | ||
r9277 | pmurias++ | * moved emit to iterator_engine_emit.pl | |||
pmurias | putter: were did you get the wheather in Alaska from? It needs to be updated :) | 10:54 | |
10:57
KingDiamond joined
11:09
larsen joined
|
|||
nothingmuch | aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa | 11:12 | |
i'd like to be able to write high performance database apps in Perl 6 | |||
ayrnieu | nothingmuch - OK. | 11:13 | |
nothingmuch | C++ is getting on my nerves | ||
so much language tax | |||
ayrnieu | and from a Perler, this is extremely harsh criticism. | 11:14 | |
nothingmuch | well, it's more than language tax | 11:15 | |
the issue is: | 11:16 | ||
we have to work with a subpar language, with subpar tools | |||
(slow turnaround, difficult to test, no reflection....) | |||
the mundane tasks are hard and annoying | |||
but they could be easy | |||
the problem is that they have to be in C++ | |||
not because they are performance critical | |||
but because other parts are | |||
and the overhead of making this a two language project is even higher | 11:17 | ||
for example: | |||
code to deal with socket pooling | |||
high level resource allocation | |||
(i.e., delete a "connection" thingy) | |||
all these things are about 10x as complicated as they need to be | |||
to the point that we don't even have the resources to really optimize the life out of the performance critical code: we're bogged down with dumber bugs | 11:18 | ||
integral | haskell seems to manage evrything C++ can though | 11:20 | |
nothingmuch | integral: i'm not sure haskell is the right thing for here | 11:22 | |
there is tons of tight loops on string ops | |||
fudge this, binpack that, store in this structure | |||
tons of aio | |||
integral | the trick is to use arrays, not strings. especially the unboxed arrays | ||
beppu | unboxed? | 11:23 | |
integral | I suppose that's the thing, haskell replaces C++ nasties, with having to know all the different options for making your data structures | ||
nothingmuch | beppu: with no pointers and stuff | ||
integral | beppu: just the value, not a pointer to a closure returning the value | ||
nothingmuch | what i'm complaining about is not that yucky code though | ||
frankly, C++ is the right tool for that part | |||
at least IMO | |||
it's easier to train people for it | |||
it's easier to find new people to work on it | |||
but the non core core core stuff | 11:24 | ||
integral | I've never understood why people found using malloc/free and debugging it to be easy :-/ | ||
nothingmuch | which doesn't have to work efficiently on an 8 cpu monster, fudging 2TB of data in reasonable time | ||
that part doesn't have to be in this messy stuff | |||
integral: it's simply a delay mechanism | 11:25 | ||
the education of industry recruits is based on the conclusions that were made 20-30 years ago | |||
java is a direct answer to the problems of the 1980s | |||
i don't think it's a relevant language today | 11:26 | ||
it's solid, sure | |||
beppu | It's not very expressive, though. | ||
(java, that is) | |||
nothingmuch | but there's no real reason to use that instead of e.g. C# which is much more relevant today | ||
(and probably also won't be) | |||
integral | people don't like expressive when it makes them think rather than just pounding code continuously | ||
nothingmuch | aye | ||
=( | 11:27 | ||
lumi | Java is definitely conductive to pounding code continuously | ||
nothingmuch | the problem is that pounding code continuously is considered a good thing in the industry | ||
because you get the same output for less $$$/hour/employee | |||
that's why outsourcing is popular | |||
people don't realize that the communication breakdown that is a result of outsourcing is costing them triple, quadruple, etc | 11:28 | ||
even without paying attention to any technical differences between the quality of the code | |||
pmurias | there's not point in useing java for personal projects thought | 11:36 | |
nothingmuch | pmurias: the problem with java is: | 11:37 | |
a. it's very easy to get programmers | 11:38 | ||
b. it's very easy to enforce boilerplate level "code quality standards" | |||
this leads to it's popularity | |||
which means that it'll be tought more, and more books will be bought | |||
hence even more programmers | |||
pmurias | what does bolieplate level "code quality" mean? | 11:39 | |
nothingmuch | enforcing stuff that is supposed to cause good quality code | 11:41 | |
but is really nothing | |||
the issue is that you cannot force good design out of a bad designer | 11:42 | ||
and the java approach is that given enough restriction | |||
(e.g. you have to always handle exceptions... most people just rethrow them) | |||
(need one thread per IO stream) | |||
... given enough restriction bad design will not happen | 11:43 | ||
pmurias | I tried to code a project once in java, I even bought Thinking in Java... rewrote the project in JavaScript in the end :( | 11:45 | |
nothingmuch | how come? | 11:46 | |
cognominal | nothingmuch: managers are interested in minimizing risks. so they prefer language that guarantee a maximin (meaning a guaranteed quality for any programmer). | 11:47 | |
nothingmuch | cognominal: my conjecture is that this quality is just the quality of the boilerplate | 11:48 | |
and note the real code | |||
cognominal | excellence is for marketting, not for manager. | ||
pmurias | i was allowed to choose my own language in that case | ||
I tried doing it in Jython,Java and JavaScript | 11:49 | ||
nothingmuch | pmurias: did you have to use JVM or something? | ||
cognominal | I am learning javascript, It is pretty nice one you know were to find good examples and libraries | 11:50 | |
nothingmuch | . o O ( Rhino compiles JS to JVM, right? ) | ||
cognominal | e4x seems nice and DOM sucks | ||
nothingmuch | cognominal: javascript's bad reputation should really be attributed to DOM and it's browser implementations | ||
pmurias | i needed it to run in the browser | ||
nothingmuch | what's e4x? | ||
cognominal | its a way to inline xml. | ||
nothingmuch | ah | ||
pmurias | the worst think about js is the .clone method | ||
nothingmuch | pmurias: why? | ||
pmurias | it always gets in the way when using for (x in a) {...} | 11:51 | |
cognominal | too bad that you can't maniplate the DOM tru it with firefox. | ||
11:51
stevan joined
|
|||
cognominal | e4x doc says that implementation could do that... | 11:51 | |
nothingmuch | pmurias: please explain | ||
pmurias | in firefox .clone is a method of every object,it's *not* inherited | 11:52 | |
for iterates over all atribiutes of an object | |||
objects are used like hashes sometimes | |||
in perl terms it means every hash get a 'clone' key by default,meaning you have to check for it in every while ($k,$v = each %hash) {...{ | 11:53 | ||
s/{$/}/ | 11:54 | ||
cognominal | do you mean that the problem is that methods are part of the hash? | ||
I don't get the problem about clone | |||
pmurias | only the clone one others, are inherited from prototype | 11:55 | |
and for doesn't iterate over the prototype | |||
cognominal | iterators suks in js. iterating over an array is such a pain. And the DOM defines a iterating method with a different name for every object :( | 11:56 | |
pmurias | cognominal: how do yo iterate over an array | 11:57 | |
? | |||
s/yo/you/ | |||
the C or for (x in y) way? | |||
cognominal | for (var i in array) { whatever( array[i] ); } | ||
i is the indices not the value :( | |||
pmurias | you don't get clone | 11:58 | |
? | |||
cognominal | I was not talking about clone anymore. | ||
but may be I miss something important. | |||
pmurias | i always get "clone" as on of the indices :( | 11:59 | |
maybe it's firefox specific | |||
cognominal | even for genuine arrays? | ||
pmurias | for Object's for sure if I remember correctly for Arrays also | 12:00 | |
svnbot6 | r9278 | audreyt++ | * "make upload-smoke" now uploads smoke. | ||
pmurias | what browser do you use for development? | 12:01 | |
ayrnieu | ?eval my @a = <1 2 3 4 5 6>; say @a[^@a.end] | ||
12:01
evalbot_9275 is now known as evalbot_9277
|
|||
evalbot_9277 | OUTPUT[12345 ] bool::true | 12:01 | |
ayrnieu | wait, what? | ||
cognominal | pmurias: not for genuine arrays | ||
var a = [ 1,2,3]; for ( var i in a) { print(i) } | 12:02 | ||
0 | |||
1 | |||
2 | |||
...using the javascript shell in firefox. | |||
but I agree that there is a problem. objet and arrays looks too much alike | 12:03 | ||
ayrnieu | well, @a[0..@a] is what I mean, but I why don't @a[^@a] or @a[^+@a] work? | ||
cognominal | ayrnieu: what is the meaning of the prefix ^ ? | 12:05 | |
pmurias | cognominal: you have lifted the curse, .clone has perished! | ||
maybe it was the firefox upgrade | |||
... | |||
12:05
bsb joined
|
|||
cognominal | pmurias: I use firefox 1.5 | 12:06 | |
ayrnieu | cognominal - ^$n <=> 0..($n-1) | ||
?eval say for ^5 | 12:07 | ||
12:07
evalbot_9277 is now known as evalbot_9278
|
|||
evalbot_9278 | OUTPUT[ ] undef | 12:07 | |
pmurias | lets let the nightmare rest, I care only for compablity with the Evil Browser and the latest firefox | ||
ayrnieu | ?eval print for ^5 | ||
evalbot_9278 | OUTPUT[] undef | ||
ayrnieu | somehow, this is an error... | 12:08 | |
?eval for ^5 { say $_ } | |||
evalbot_9278 | OUTPUT[0 1 2 3 4 ] undef | ||
ayrnieu | pmurias - not Opera? | ||
pmurias | it's closed source | ||
ayrnieu | unlike EB? | 12:09 | |
also, Opera is hip and stylish. | |||
And they are doing something that Netscape considered post-IE impossible: they are making money off their web-browser. (Although not anymore their desktop version.) | 12:10 | ||
pmurias | ayrnieu: if Opera people contact me with a path I'll fix the incompabilty | ||
anyway it was not in the project requirements | 12:11 | ||
i was allowed no ignore Opera unless serious complaints are heard (it's a family business) - see www.yourcargo.org | 12:13 | ||
it's a havily DOMmed site, and Opera is a lot diffrent in that area | 12:14 | ||
with firefox one is allowed to most of the IE extension | 12:15 | ||
s | |||
cognominal | pmurias: I am no sure if my browser ask for english, but I get polish by default on your site | 12:17 | |
12:17
rindolf joined
|
|||
rindolf | kane_: here? | 12:17 | |
cognominal | and being redirecte to :8080 is weird | ||
pmurias | you can change it using the menu, the default will be changed to deutch soon anyway? | 12:18 | |
cognominal | being French, I prefer English to Deutch :) | ||
ayrnieu | being redirected to :8080 isn't /weird/, just sort of unnecessary with firewall technology. | 12:19 | |
12:19
premshree_ joined
|
|||
pmurias | the guy responsible for our internet access didn't know how to redirect it my box without using it | 12:20 | |
French language will be supported in the next version | 12:21 | ||
cognominal | :) | 12:22 | |
nothingmuch | 12:25 | ||
moosen | |||
pmurias | ? | ||
lypanov | hey nothingmuch | ||
ayrnieu | in OpenBSD PF, such a redirection is one line: rdr on $indev from any to any port 80 -> $webip port 8080 | ||
nothingmuch | hiya lypanov | ||
rindolf | lypanov: hi | ||
Hi nothingmuch | |||
nothingmuch | Ara4n: in IO::All... | ||
;-) | |||
lypanov | heya rindolf! | ||
nothingmuch | hola rindolf | 12:26 | |
rindolf | I'm looking for kane_ | ||
nothingmuch | seen kane? | 12:27 | |
seen kane_? | |||
seen kane_xs? | |||
oh wait, no jabbot | |||
anyway, those are his 3 nicks | |||
pmurias | ayrnieu: thanks, does it take the fact that a different page resides on :80 (different domain) | ||
in mind | |||
nothingmuch | i'm not sure about _xs in terms of underscoring and whatnot | ||
rindolf | nothingmuch: /wii kane_ says he's been idle for 13:10:22 hours. | ||
nothingmuch | sounds like he went to bed slightly late for .nl time | 12:28 | |
anyway, you can also ask purl on irc.perl.org | |||
12:38
cognominal joined
12:41
pdcawley joined
12:45
kisu joined
12:48
premshree_ joined
12:50
bsb joined
12:51
larsen joined
13:06
bsb joined
13:17
pjcj joined
13:18
wilx joined
13:24
rindolf joined
13:31
avar joined
|
|||
azuroth | /wii arderydd | 13:32 | |
err | |||
what's /wii? | |||
I see | 13:33 | ||
ayrnieu | BitchX-speak , or something-speak, for the one true command of /whois $foo $foo -- for clients with silly wrappers for /whois, for silly people who want to easily /whois multiple people at a time. | 13:34 | |
azuroth | very strange | ||
ayrnieu | indeed. I have never once -- not even once -- desperately wanted to /whois multiple people at a time. | 13:35 | |
and demanding last-active from servers is also not very frequent. | 13:36 | ||
13:43
feng123 joined
14:05
whiteg_ joined
14:07
elmex joined
14:27
beppu joined
14:38
justatheory joined
14:44
justatheory joined
14:51
putter joined
|
|||
putter | gaal: thanks for the code review. appreciated. | 14:55 | |
nothingmuch: re C++ project, have you considered Lua? while officially a ansi-c project (the last time I checked, but a while ago), folks periodically do a c++ mod, which is apparently only a couple of lines. at which point you have a higher level language to do the things you describe. lua's main point is to do this, living embedded, so it does it well. | 14:58 | ||
14:59
nothingmuch joined
|
|||
putter | www.lua.org/about.html lua-users.org/wiki/ | 14:59 | |
nothingmuch: colabti.de/irclogger/irclogger_log/...l=570#l898 | |||
audreyt: any thoughts on moving src/perl6/Prelude.pm to ext/ and thus blib6/lib/Pugs/Prelude.pm ? | 15:05 | ||
15:06
lisppaste3 joined
|
|||
nothingmuch | putter: i doubt i can make my bosses switch, but that's still interesting =) | 15:08 | |
rindolf | kane_: here? | 15:09 | |
putter | that's the thing, it isnt a switch, just a nice C++ library providing an api which lets you do a variety of things much more efficiently than having to code it all yourself. | 15:10 | |
;) | |||
nothingmuch | putter: it is a switch, because we have a crap load of stuff for our own | ||
abstractions over AIO, threading, mutexes, strings, buffers, memory management | 15:11 | ||
putter | (maybe the social dynamics would work better if it was called liblua?:) | ||
nothingmuch | like any good inhouse ball of mud ;-) | ||
putter | lol | ||
nothingmuch | i forgot what mit license is | ||
putter | my fuzzy recollection of looking at the code is that it was nicely done | 15:12 | |
15:12
lisppaste3 joined
|
|||
nothingmuch | anyway, the license looks very usable | 15:12 | |
15:12
Nouk joined
|
|||
nothingmuch | i'll have a deeper look | 15:12 | |
but i'm skeptical that we'll use it | |||
putter | mit is bsd like ( en.wikipedia.org/wiki/MIT_License ) aka X11. vis bsd, includes "dont say you're mit/whoever" :), and doesnt include bsd's "advertising" requirement. | 15:14 | |
s/includes "dont/adds "dont/ | 15:15 | ||
audreyt: wow, that was quite the odd buildfail trigger ;) | 15:22 | ||
nothingmuch | aye | 15:24 | |
putter | hmm... and while 9275 managed to avoid breaking the ./pugs build, pil2js is not happy. | ||
so no-one ever got around to implementing -M ? is there something like it tucked away in File::mumble somewhere? | 15:26 | ||
putter wants to compare age of .yml and .pm | 15:27 | ||
15:29
aufrank joined
|
|||
aufrank | hello all! | 15:29 | |
is anyone working on the rounding routines? | 15:30 | ||
(listed in TASKS) | |||
nothingmuch | aufrank: not that I know of | 15:31 | |
aufrank | ok, well, dibs :) | ||
putter | :) | ||
nothingmuch | you can rely on int to truncate the floats, if you're going to implement stuff | 15:32 | |
the article mentioned is IMHO overkill to consider, but still pretty nice | |||
aufrank | I had been doing floor(abs($x)) | ||
to truncate floats | |||
but int is cleaner | |||
putter | there's actually a Num::truncate :) | ||
nothingmuch | round is int( $x + 0.5 ), floor is int( $x ) if float down, but I guess we want to zero | 15:33 | |
hehe | |||
yeeeeeeeeechhhhhhhhhhh | |||
aufrank | ?? | 15:34 | |
nothingmuch | my sister is having a piano concert, with all her teacher's other students | ||
putter | sneeze? | ||
nothingmuch | (rehersal now) | ||
putter | ouch | ||
nothingmuch | and she also volunteered to back up a beginner synth student | ||
aufrank | double ouch | ||
nothingmuch | who is playing a HORRID adaptation of a kleiderman "composition" | ||
kleiderman is horrible enough on piano | |||
buut when you add a cheap "strings" sound, with a pop beat background to the mess... | 15:35 | ||
aufrank | question: what's the right way to keep track of a state variable within a method? | 15:36 | |
nothingmuch | what do you mean by 'state'? | ||
instance data? | |||
aufrank | round_alternate says round towards even one time, round towards odd the next | ||
nothingmuch | oh | ||
you can use 'state' | |||
aufrank | so I want a bool saying which to do | ||
nothingmuch | it's like static in C | ||
sub foo { | |||
state $x = 1; # only assigns 1 the first time | |||
aufrank | excellent | ||
nothingmuch | say $x++; | ||
} | |||
?eval sub foo { state $x = 1; say $x++ }; foo(); foo(); foo(); | 15:37 | ||
evalbot_9278 | OUTPUT[1 2 3 ] bool::true | ||
nothingmuch | (let's see if it works) | ||
;-) | |||
aufrank | w00t! | ||
nothingmuch | aaaaaaaaaaaaaaaaaaaaaaaaaaah | 15:38 | |
this is really hurting y head | |||
nothingmuch goes to watch BSG somewhere quiet | |||
aufrank | itunes? | ||
nothingmuch | bittorrent | ||
aufrank | I see | ||
putter | gaal: re opRequire searching - it's still needed to find the prelude. but yeah, the p6 code could take over %*INC handling and call something simpler. | ||
nothingmuch | even if i wanted to buy them i can't, apple won't accept my money | 15:39 | |
plus the resolution is prolly crummy if it's optimized for iTunes | 15:40 | ||
aufrank | yeah, the resolution does stink | ||
Juerd | Volunteer wanted for fixing http-ssl access to feather... | ||
rindolf | Is gaal speaking now? | 15:41 | |
nothingmuch | wow, the rehhersal was over quickly | ||
rindolf: haven't seen him all day | |||
Juerd: yeah right ;-) | |||
Juerd | nothingmuch: Really. | ||
putter | does ghc have System.Posix on windows? | ||
nothingmuch | Juerd: i mean, no chance of getting me to volunteer | 15:42 | |
putter: nope = | |||
=( | |||
putter | :( | ||
nothingmuch | aye, it gave gaal a hell of a time WRT trying to add some kind of read support to pugs several months ago | ||
putter | the curse of Gates. sigh. | 15:46 | |
aufrank | my rounding code is getting spaghetti-y | ||
putter | you know, that "y" looks kind of like a fork. | 15:47 | |
aufrank | mmm... spaghetti | ||
rindolf | nothingmuch: then why is putter addressing him? | ||
15:47
whiteg_ is now known as whiteg
|
|||
aufrank needs to do actual work | 15:50 | ||
I guess I'll commit the rounding stuff later | |||
enjoy your days, all | 15:51 | ||
nothingmuch | sorry, back | 15:54 | |
rindolf: because he can backlog | |||
putter | aufrank: ok. thanks for the round tuits. :) | 15:55 | |
nothingmuch | rindolf: also, there is the possibility that putter will forget what he wanted to say, but that someone else would remember | 15:56 | |
lastly, it could be that putter is insane | 15:57 | ||
and actually thinks that gaal *is* here | |||
putter | does pugs/p6 have something which returns the stdout contents, like `cmd args`, but has system()'s system($separate,$argu,$ments) ? | 16:01 | |
and what is this? not even one groan? how many times in the history of the universe will there be a setup to pun about _round_ tuits. sigh. | 16:02 | ||
integral | it's a pipe perl5's readpipe doesn't act like system | ||
Juerd | audreyt: Please do not ever, for whatever reason, disable system wide services on feather and replace them with different services, without explicit approval | ||
audreyt: Several people actually use https, and don't expect ssh on that port. | 16:03 | ||
audreyt: If in case of an emergency you really have to do this, do restore it afterwards, and please notify me by mail... | 16:04 | ||
putter | integral: err, objective is p6 code which says my $m = `%?CONFIG<perl5path> -e 'print join("\n",map{-M}@ARGV,"")'`; while... but maybe that's good enough. | 16:05 | |
integral | yeah, I was just hinting at that since perl5 has a function form of ``, perl6 could have too, and it could be fixed to have the same features as system() | 16:06 | |
putter | ahhhhhh :) | ||
integral | putter: we don't have a multi-arg open? | ||
it's not *too* much more code to use a popen | |||
ayrnieu | q:w:x/this looks like a string, but it is actually a list, and it doesn't use a shell :D/ | 16:07 | |
putter | yeah. sigh. the yak is getting bigger. | ||
ayrnieu: :) | |||
16:08
justatheory joined
16:09
justatheory joined
|
|||
ayrnieu | qwwx(as before, but "this is one argument") | 16:10 | |
integral | ugh, why have a quotation/word minilanguage in q, rather than just using a normal perl list? | 16:11 | |
ayrnieu | why say what I just said instead of ('as', 'before', 'but', "this is one argument") NO IDEA. | 16:12 | |
ayrnieu inserts ? as appropriate. | |||
integral | no, I mean: (<as before but>, "this is one argument") | ||
soon you'll suggest: qqwwx(as before, but "this is one argument", { $obj.do_stuff }) | |||
ayrnieu | that helps for my specific example. | 16:13 | |
putter | integral: because the problem domain you care about has a couple of extra dimensions? (like non?interpolating) | 16:14 | |
ayrnieu | anyway, the quotation minilanguage is already there. | 16:17 | |
integral | I was more worried about adding "" into the qw part of the minilang | 16:18 | |
ayrnieu | you mean, qww? | ||
integral | and inside a qw as opposed to a qqw how does "" vs. '' behave | ||
ayrnieu | that is also already there. | ||
integral | err, sure, if that's what we're calling it | ||
oh, it is? ugh. | |||
ayrnieu | that is what S02 calls it. | ||
also, you've noticed <> vs <<>> , yes? | |||
integral | I see lots of useful stuff is spec'ed then. | ||
yep | |||
that's qw vs. qqw | 16:19 | ||
putter | "all you need". 'oh, and this'. <and this kind of nice>. <<and then there's this>>. and unicode, and... why refactor into a dsl - sanity. ;) | ||
ayrnieu | expressivity is hard. No, wait, it's easy :-) | ||
16:19
amnesiac joined
16:21
srcmaster joined
16:22
ajs_home joined
|
|||
ayrnieu | oh, I love the podstream stuff. | 16:28 | |
xerox | which ones? | 16:34 | |
16:35
srcmaster is now known as uszr`
|
|||
ayrnieu | %POD<anything> , and @=COMMENT | 16:35 | |
16:39
vborja joined,
avar joined
|
|||
putter | how do you do `cmd` in p6? | 16:49 | |
ayrnieu | q:x// | 16:50 | |
It doesn't seem that pugs has that, yet. | 16:51 | ||
nor :ww | |||
nor other things. But nevermind. | 16:52 | ||
putter | (the yak grins, rolls over and crushes putter) | ||
nnunley | You are in a maze of yaks, all needing to be shaved. | 16:53 | |
16:54
uszr` is now known as srcway
|
|||
putter | :) www.vendian.org/mncharity/dir2/cs_maze/ I do so like that Russell quote. | 16:56 | |
szbalint | mroning. | 17:01 | |
*morning | |||
avar | ayrnieu: wouldn't that be qq:x// ? | 17:05 | |
rindolf | kane_: here? | 17:06 | |
avar | or does q mean something different now? | ||
putter | fyi, qx/cmd/ is currently spelled {my $p = Pipe::open($cmd); my $ret = slurp($p); $p.close; $ret;} | 17:15 | |
take that, yak! :) | 17:16 | ||
17:16
eric256_ joined
17:18
wilx joined
|
|||
Khisanth | putter: I am sure it's shivering | 17:21 | |
putter | lol :) | 17:22 | |
it has dreadlocks. all it did was trim the edges a bit. | 17:23 | ||
svnbot6 | r9279 | eric256++ | Converted to postfix operators instead of the ` glue operator. I think now ` and `` could be aliased to feet and inches. | ||
putter | lol | ||
eric256_ | i shoulda put the file name in the message. hmmm | ||
putter | or we could tweak svnbot6 to include the file list if it is short. | 17:24 | |
eric256_ | i can now do 5m + 6f in my units.p6 example ;) /me forgot how cool perl6 is going to be | 17:25 | |
putter | oo, neat :) | ||
(well, the 5m part anyway. "feet"... sigh) | 17:26 | ||
eric256_ | i'm trying to figure out.. is there a ft not .. what you don't like feet? | ||
ayrnieu | avar - wouldn't what be? q:x// and qq:x// are similar, yes. | ||
putter , metric bigot | |||
avar | but `` in perl 5 is not equivalent to q:x// in perl 6 but qq:x// | ||
because `` interpolates | 17:27 | ||
I like that `` doesn't exist anymore | |||
eric256_ | i'm trying to figure out how to make a set of english units, and a set of meteric units that each convert using there own base, and then some conversion between the too.. hmm | ||
ayrnieu | avar - ah, I wasn't even thinking of perl5's ``, just the basic functionality. | ||
putter | what dimensions are you planning? LTM...? L**2? | ||
avar | actually isn't p5 `` == p6 qq:x`` ? | 17:28 | |
if one wanted to be really pedantic;) | |||
eric256_ | putter?? | ||
ayrnieu | avar - yes... you already said so. | ||
avar | ayrnieu: no, I didn't | ||
putter | length, length-squared, length-cubed, mass, time, etc | ||
ayrnieu | avar - oh, you just mean the delimiter? | ||
avar | yeah | 17:29 | |
since qq:x/./configure/ wouldn't do the same thing as `./configure` | |||
eric256_ | putter: i'm more just loooking for new things to try in perl6 and less trying to make a complete units suite | ||
ayrnieu | avar - this is too pedantic for me. | ||
putter | ok. :) i'm just looking forward to the toys. | 17:30 | |
eric256_: why have each convert using their own base? | 17:32 | ||
eric256_ | tp maintain accuracy and as a challenge ;) | 17:33 | |
putter | :) | ||
eric256_ | if i want to go from feet to inches, i don't want to have to go through a base of meters, and if i want to go from km to m i don't want to go through feet as a base, so both systems realy want to use there own base if you want to avoid rounding errors building up | ||
putter | If Prelude ends up as a new Pugs::Prelude today, it wont have anything to do with perfectly good p6 code repeatedly breaking when moved into src/perl6/Prelude.pm. Like prefix:. And regex. It wont. Really. | 17:35 | |
eric256_ | lol | ||
any ideas how i was getting that no match in do expression error last night? | 17:36 | ||
putter | i wasn't really clear on the error you saw. note that audreyt fixed a parser error which was breaking the bots, so maybe it works now? | 17:37 | |
eric256_ | i'll remake and see | 17:38 | |
rindolf | kane_: here? | 17:40 | |
17:40
larsen joined
|
|||
putter | eric256_: could you make the various units types, and conversion be a multi, and then just special case the few(?) convertions for which you have an exact multiplier? | 17:49 | |
eric256_ | thats what i was thinking. leverage multis to provide special cases. like between unit sets, and then have a general multi that converts toBase, does math, and then reconverts fromBase to the desired units | 17:51 | |
i'll need to make a conversion method, then use that in the operator (+,-,divide) so that the math operators don't all need special overrides too. ;) | 17:52 | ||
17:53
rantanplan_ joined
17:56
ruz_ joined
|
|||
putter | ah, right. interesting... | 17:57 | |
17:58
KingDiamond joined
|
|||
gaal | putter: we can certainly hardcode searchpath for Prelude, since we don't search @*INC for that anyway. | 18:00 | |
brb | 18:02 | ||
putter | hi gaal. | 18:05 | |
18:06
Bill_n1vux joined
|
|||
gaal | yo! | 18:07 | |
putter | It seems src/perl6/Prelude.pm has several roles. It's trusted code (un/safe) (yes? or the whole safe/unsafe thing generally usable and cumulative?). It's stuff which gets hardwired into pugs as a fallback (hmm, why?). It's general prelude stuff. I think that's it? | 18:08 | |
gaal | putter: Prelude.pm has special privs in that it can define `is builtin` | 18:10 | |
putter is unclear how the prelude doesnt end up compiled into every file and such, so it may also have a role there? | |||
18:10
bsb joined
|
|||
gaal | the P6 source of src/perl6/Prelude.pm is inlined into the pugs exe | 18:10 | |
putter | what exactly is 'is builtin'? | ||
what is the objective of the inlining? | 18:11 | ||
gaal | *if* precomp prelude isn't found (and we should determine where it should be looked for), then the source version is used as a (slow) fallback | ||
putter | why? so a crippled pugs can be used standalone? | 18:12 | |
gaal | throw an exe somewhere, it should still somewhat work, yes. | ||
gaal looks to refresh his memory about `is builtin` | |||
putter: if inlining the yml.gz weren't awkward to do, I'd be all for doing it. | 18:13 | ||
putter | so what would the Right Thing inline-wise look like? a list of module names (Math::Basic, etc) which should get the inline treatment? | ||
Carp. etc | 18:14 | ||
gaal | putter: I'd say everything in a Prelude directory. | ||
rindolf | Hi gaal | ||
gaal | hello rindolf | ||
rindolf | gaal: what's up? How was the Pizza yesterday? | 18:15 | |
putter | so the whole p6 prelude file/module layout gets structured around pugs | ||
rindolf | perlbot: karma gaal | ||
perlbot | Karma for gaal: 83 | ||
putter | 's opinion-of-the-day about what should be in the fallback set? | 18:16 | |
rindolf | You do have an infobot - perlbot | ||
putter | !! | ||
gaal | putter: in the pugs backend, the only meaining I see for `is builtin` now is in Parser.hs 349 | ||
putter | looking... | ||
gaal | it's just the name of the symbol to be installed | ||
fully qualified or not | |||
rindolf: it was good | 18:17 | ||
putter: what's the !! for? | |||
putter: other backends may assign it more meaning though | |||
I do remember that there's the "don't use `return`" limitation, not because of the Pugs backend. | 18:18 | ||
putter | :) so Prelude.pm says "dont use '*', use 'is builtin'". and Parser.hs only uses 'is builtin' to add '*'. lol | ||
ah, right. | |||
gaal | putter: heh, I don't have a clear view of why that's that way. | ||
now re: fallback set.. | 18:19 | ||
this is exactly what Prelude means | |||
"The standard library available to ALL Perl 6 programs" | |||
18:19
ruz_ joined
|
|||
gaal | it's part of the spec. Presumably S29, or something similar. | 18:19 | |
rindolf | gaal: good. | 18:20 | |
gaal | Possibly PugsDesignDeer^H^H^Hoc 29, whatever | ||
one of my selling points about the getopt library is that whoever does it really well may get it into the Prelude, if only so that pugs itself can use it for its own cmdline processing. Then, really everyone will use it. :-) | 18:21 | ||
putter | ok. say we dont want Prelude.pm to be enormous. and wish to keep the modules which-also-happen-to-be-in-prelude in the normal perly directory tree. how could they be sucked in at build time to create the inline thing? is inlining contagous? could src//Prelude.pm just be a bunch of use()es? or do all the files need to be catted together somehow? | 18:24 | |
gaal | putter: there is a hack to cat them (but it broke with the precomp stuff) | 18:25 | |
but... | |||
why worry about this right now | |||
? | |||
putter | putter ponders | 18:26 | |
Bill_n1vux often putters while pondering, unless wondering while I wander | 18:27 | ||
gaal | putter: let's distinguish between | ||
a. standard libraries that are availble for 'use' | |||
b. preluded libraries that are magically available even without 'use' | |||
putter | sidebar: a file A.pm use()es B.pm. A gets ymled. B changes in some way which would affect A's parse. ... someone hand deletes A.yml? | 18:28 | |
gaal | If you want to work on (a), ext/ is probably cool | ||
whether (b) is a single file or not is not THAT important | |||
of course it's better if we make it so that it doesn't need to be one, but it isn't critical | 18:29 | ||
putter | Bill_n1vux: had awesome time at a startup, where most of the floor was unrented, unwalled. beautify for pacing while thinking | ||
gaal | since as far as pugs loading is concerned, it is one unit | ||
Bill_n1vux | putter: when spring returns, I hope to do that more ... my cube is on a wharf, perfect for circumambulation. | 18:30 | |
putter | right. ok, what are our objectives / forcing factors. pugs cant find the prelude when run outside it's builddir. various p6 stuff currently breaks when placed in Prelude.pm. any other immediate objectives? | 18:31 | |
avar | what does ./method_name do? | ||
gaal | I knew about problem #1, but not of #2 | ||
avar | ..in a class | ||
gaal | #1 is trivial to fix in terms of coding, but it's a spec issue | ||
avar: the same as self.method | 18:32 | ||
avar: only I think it's not official this week | |||
avar doesn't like it | |||
./ by anology with the shell? | |||
gaal | avar: there was a mile long thread about it. please don't revive it :-) | ||
18:33
Nouk joined
|
|||
putter | I guess I creeped into #1 because one obvious approach would be to use the normal @INC mechanism with the "current" new task/system of doing auto yml precomp caching. | 18:33 | |
avar | gaal: on p6l? | 18:34 | |
called what? | |||
gaal | putter: no, general caching is important but just an optimization (hey, p5 doesn't have it). prelude is mission critical | ||
avar | (./ is a lousy search term) | ||
putter | #2 I just hit (again), finding I couldn't do prefix:<-M> in Prelude.pm, and my regexs all start failing. | ||
gaal | avar: yeah, sorry, don't remember. I wonder if I can sort threads by total message per thread, it'd be one of the top ten in the past year :-) | 18:35 | |
putter: oh! do you know why? | |||
putter | Ok, so there are a cluster of 3 things - an immediate problem/bug (pugs cant find prelude); a new precomp capability being built; and prelude development about to kick off again, resulting substantial change/growth. | 18:36 | |
s/are a cluster/is a cluster/ | |||
gaal | putter: if you feel pcp not being found is a downer for you let's make a makeshift | 18:37 | |
putter | re why?, no idea. | ||
gaal | it's really easy to change later. (really it is:) | ||
18:37
netprogrammer joined
|
|||
gaal | or better: | 18:37 | |
let's throw some ideas for where it should be, and decide now. | 18:38 | ||
gaal looks at pugs -V | |||
sitelib? | 18:39 | ||
putter | I think I was hoping we could get directly to "pugs can find itself" + "there is a single precomp mechanism used for everything" + "precomp, or its unreliable presence, ceases to be an obstacle to prelude development". | ||
where _what_ should be?? | 18:40 | ||
gaal | putter: since prelude isn't loaded like a regular module, it can't be handled with the regular cache | ||
putter: precomp prelude. | |||
putter | why isnt it loaded like a regular module? | ||
gaal | putter: it gets stuffed into the env before everything else | 18:41 | |
see Run.hs.. sec | |||
line 177 | |||
heh, the comment there is no longer true, fixing | |||
putter | so there are two concepts there, "stuffed into the env" and "before everything else". seen Run. didn't quite understand why it was implementing stuff also appearing in Prim/Eval. | 18:42 | |
gaal | the point is that prepareEnv wants to give an env that has Prelude functions in it. | ||
what stuff, `require` and `use`? | |||
putter | right. so, for example, I briefly had a non-functional-non-typechecking version of prepare which... I think it called parse and then grabbed the global env? with the oops of I should have run rather than parse maybe? | 18:43 | |
18:43
netprogrammer left
|
|||
gaal | that's a recent addition: because the cache manager can be written either in haskell or in perl 6, and it was my idea|fault|belief that writing the cache manager in perl would be more whipuptible | 18:43 | |
putter has to learn to not start high-latency notes with yes/no/right/etc. | |||
gaal | putter: wanna skype? | 18:44 | |
putter | lack capability :( | ||
gaal | okay I'll try summarizing then: | 18:45 | |
1. every "reasonable" Perl environment "deserves" the functions in the Prelude. | |||
putter | :) | ||
gaal | 2. We want precompilation, for performance | 18:46 | |
nothingmuch | ... and semantics | ||
gaal | 3. We have to implement precompilation somewhere -- we have teh haskell fu, but maybe doing it in Perl is nicer | ||
putter adds "and semantics" to the list of things to get back to after gaal finishes his list | |||
gaal | ehhh, @point<3> ~~ s/precompilation/cache manager/ | 18:47 | |
so, if #3 obtains, we have a seeming bootstraping problem since you want Prelude to always be available | |||
that's why it's obvious to me that it's fine to hardcode the search for the prelude | 18:48 | ||
putter | it seems the list so far doesnt include the whole inlining thing. | ||
gaal | OTOH, the cache manager *will* need to be chummy with the internals, since it has to so something like intercept `use`, see that a cached version of a module isn't available yet, get it parsed, emit the precomp, and excercise whatever internals API to merge envs back to the current running program | 18:50 | |
so it may be simpler to write in Prim.Eval despite my original ideas. | |||
I'm not sold on either way, really | |||
putter | In the _absence_ of inlining, the obvious thing would be Pugs::Prelude.pm in @INC, with .ymling normal, but perhaps restricted, and pugs .hs with just enough smarts to find and load it. | ||
gaal | as for inlining: | ||
we must have it. :) | 18:51 | ||
I feel pretty strongly about this, really. I want pugs-the-exe to be useful. | |||
putter | I don't disagree. my point is... | 18:52 | |
all the objectives are not ending up on the table at the same time, and we're not being clear about which of them introduce which design contraints, which are driving our design of all. at least in my poor brain, its still all an opaque ball of mud at this point. ;) | 18:53 | ||
gaal | okay let's see how to unblock you | 18:54 | |
is searching for precomp prelude in @*INC good enough? | 18:55 | ||
I get the niggling feeling that no, you need to detect if you're running in a build tree | 18:56 | ||
putter | can we please use different vocabulary for the yml'ing and the inline'ing. | ||
gaal | but I've been known to have bogus niggles | ||
putter | rather than both being precomp. | ||
gaal | er no, the inlined version is not precompiled | ||
putter | precomp == .yml'ized? | 18:57 | |
gaal | it's real source p6 code that's a constant haskell function returning a string | ||
yes | |||
if it were possible to inline a precompiled version, we woulnd't need this discussion :) | |||
putter | so the inline prelude gets compiled into pugs. err, what is pugs not finding when run from random places? | 18:58 | |
gaal | the ymlized version of Prelude.pm | ||
putter | when pugs is run from random places, it cant find the ymlized Prelude.pm, and falls back to a slower, compiled in inline Prelude.pm. | 18:59 | |
yes? | |||
gaal | yes | ||
the confusing teminology was that "compiled in inline Prelude.pm" was p6 source | |||
you know what | 19:00 | ||
let's make it simple | |||
putter | when a user use()s Foo, pugs will search for a ymlized Foo.pm. why isnt the search for ymlized Prelude.pm using the same mechanism? | ||
19:00
Shachaf joined
|
|||
gaal | yeah | 19:00 | |
let's just do that. | |||
it's a different code path, but sure | 19:01 | ||
Run.hs:243 has the comment "XXX: search path" | 19:02 | ||
19:03
FurnaceBoy joined
|
|||
gaal | and this should not be named PreludePC.yml; changing that to Prelude.yml[.gz]? will reduce bogosity | 19:03 | |
I'll change it so it goes in blib6/lib and that's it. | 19:04 | ||
putter | Yeah. I briefly had a hack which just ++'ed "use Pugs::Prelude;" to the string in each call to prepareEnv/tabularasa. thus using the Prim/Eval search path / loading code. this with an empty src/perl6/Prelude.pm. for the short time I played with it, it at least pretended to work... | ||
gaal | okay. fixing this now then. | 19:06 | |
Juerd | Though shalt not have hacks without comments :P | ||
putter | that's not right, I'm confused. everywhere in Pugs.pm, where prepareEnv/etc is used, eg | 19:07 | |
for parseProgram, I slapped on the new leading use(). | |||
Juerd | You'll eventually get used to the confusion thing. | ||
putter | if only it didnt keep growing... | 19:08 | |
Juerd | I've been confused ever since autrijus asked me to test one of the first editions of Pugs... | ||
putter | :) | ||
but that obviously broke inlining. pugs would fail if it didnt find the prelude. | 19:09 | ||
gaal | putter: only thing I don't understand is why Pugs::Prelude? | 19:10 | |
(ie and not Prelude) | |||
putter | thinking pil2js etc would like to share stuff if possible. | 19:11 | |
gaal | point. | 19:12 | |
brb # need some dinner | |||
putter | ok. note re blib6/lib (neat idea), that | ||
pugs cant currently find blib6/lib without -Iblib6/lib. so pugs is still slow unless you tell it where to find its universe. | 19:13 | ||
indeed, unless blib6/lib gets added to @INC, ./pugs in builddir would use the inline unless told -Iblib6/lib. | 19:14 | ||
so it would be slower. no sure what to do about that. | |||
hey, config has it's build path. if cwd == path, ... | 19:15 | ||
or not | |||
gaal | putter: but that's actually correct: unless your pugs is installed, you need to either PER6LIB or the equivalent -I anyway, for Test.pm etc | 19:18 | |
putter wonders "if ymled files become important to pugs, but pure .yml is too big and .yml.z is really needed, for some value of .z, shouldn't pugs have built-in .z support, just like it has builtin .yml support...?" | 19:19 | ||
gaal | so, I'm actually reusing the search function from Prim.Eval, which is good | ||
putter, indeed | |||
and it's a problem | 19:20 | ||
integral | has anyone though of versioning of pugs wrt .yml files? eg. when to regenerate them, or store them in versioned directories | ||
gaal | because from-z is easy (MissingH, bsb++) | ||
but to-z you may need to hack via p5 | |||
integral: nothingmuch has a good design | |||
integral | yay! I just hadn't heard it mentioned :) | ||
gaal | though it doesn't actually cover any policy for managing cache sizes for different versions | 19:21 | |
Juerd | putter: Ehh... Pugs has many requirements; one more is no issue, I think. | 19:22 | |
gaal | I think we get to worry about that later :) | ||
putter | lol :) | ||
gaal | Juerd: in fact pugs has very few requirements | ||
Juerd | Oh. | ||
gaal | Juerd: Perl 5.6.1, unancient EU::MM, GHC. | 19:23 | |
Juerd | Then still I think adding one isn't an issue, but for other reasons :) | ||
gaal | If you want smokes, there's some more, but that's really optional. | ||
Juerd | Ah | ||
19:24
Khisanth joined
|
|||
gaal | Juerd: on some platform which you don't like, zlib may not be trivial to install | 19:24 | |
so there's the option of bundling | |||
Juerd | I hate that platform. | ||
gaal | zlib isn't very large, nor encumbered by an annoying license, but still, bundling is kinda annoying | 19:25 | |
Juerd: we're still going to support it though. :) | |||
Juerd | Why? :) | ||
putter | :) use Test.pm; baseline (from .pm), 20sec. yml'ize and load, 14sec. load existing yml, 4sec. pugs -e 'say 3' for floor, 2sec. :) nice job gaal etal. | ||
gaal | I'm not going to answer that. :) | ||
Juerd | Linux can run as an application on that platform | ||
gaal | Juerd: no way you're getting me into this discussion now :) | 19:26 | |
Juerd | Really? | ||
Could we schedule it for later then? | 19:27 | ||
gaal | Juerd: sure, but you have to buy me a beer. | ||
Juerd | gaal: Okay :) | 19:28 | |
gaal | putter: yay! :) et al did include some other people... | ||
integral | we could be really cool and write a gz impl in p6 :-P | 19:29 | |
gaal | integral: don't think I didn't consider that :) | ||
but it has to be, like, fast | |||
Juerd | integral: re system and ``, isn't a flag for system() better? | ||
integral waves his hands around a bit, and mentions parrot | 19:30 | ||
Juerd: to make system into ``? | |||
Juerd | integral: parse error | ||
gaal waves back and mentions MissingH | |||
integral | Juerd: a flag for system() that makes system into ``? | ||
Juerd | integral: Yes. | 19:31 | |
integral | I don't really like that because I see `` as more a wrapper around a open F, "foo|" than around what system does | 19:32 | |
Juerd | I see both as wrapping around open. | ||
integral | Juerd: ugh? system wrapping around open?! | ||
Juerd | Sure? | ||
19:33
FurnaceBoy_ joined
|
|||
integral | maybe I'm just thinking too unixy, but open implies some use of a filehandle, and in this case a pipe(), and so something wrapping open, and then throwing away my defining characteristic of open? | 19:33 | |
rindolf | kane_: here? | ||
Juerd | integral: It's both fork+exec, anyway... | 19:34 | |
integral | Juerd: hmm, I don't actually see how to write system() in terms in open() in pure p6 | 19:35 | |
Juerd | Neither do I. | 19:36 | |
Regardless, that's the way I've been seeing system :) | |||
And I see open as a wrapper around fork+exec+pipe | |||
19:37
mako132_ joined
|
|||
svnbot6 | r9280 | putter++ | Prelude.pm: use/require: Check that .pm.yml is more recent than .pm. And some code cleanup (gaal++). | 19:37 | |
r9280 | putter++ | Prelude.pm: created prefix_M, to get file modification time. Calling it prefix:<-M> doesnt work in Prelude.pm. :( Calls an external perl5. :( Under unix, it would be better to use ghc's Sys.Posix.Files.modificationTime. See Compat.hs, and op0 "time" in Prim.hs. But it doesnt work on windows. | |||
integral | hmm, if a FileHandle does Array, and open returns a FileHandle, @lines = `foo` === @lines = open "-|", "foo" | ||
nothingmuch | so, i'm going to write my CV and I want some advice | 19:42 | |
since i've never done anything of the sort | |||
rindolf | nothingmuch: shoot | ||
nothingmuch | what actually goes in there? | ||
i know: | |||
short bio | |||
what I learned | 19:43 | ||
what i've been paid to do | |||
what else? | |||
rindolf | nothingmuch: open source projects | ||
integral | don't make it too long | ||
nothingmuch | ofcourse | ||
rindolf | nothingmuch: fields of expertise | ||
nothingmuch | integral: so brain dumping everything I can do well is not a good idea? | ||
rindolf | nothingmuch: you can look at mine: www.shlomifish.org/me/resumes/ | ||
nothingmuch tries to relearn latex | 19:44 | ||
integral | nothingmuch: depends, if you have a lot of stuff, I'd target it towards the specific job you want | ||
nothingmuch | integral: aha... | ||
makes sense, i gues | |||
s | |||
putter | where did the name "blib6/lib" come from? | 19:47 | |
rindolf | nothingmuch: shouldn't you use HTML for your resumƩ? | ||
19:47
Arathorn joined
|
|||
nothingmuch | rindolf: latex -> pdf == prints well | 19:47 | |
i can dumb it down to pod, too | |||
integral | putter: perl5 uses blib/lib | ||
nothingmuch | or i can make it htmlish | ||
rindolf | nothingmuch: you can convert HTML to LaTeX. | 19:48 | |
nothingmuch | i know | ||
rindolf | nothingmuch: you can also convert HTML to Word. | ||
nothingmuch | but that direction doesn't work well | ||
word is an editing format, not a presentation format.... and i hate editing in it | |||
i can export from anything to word nowadays | |||
integral | rindolf: just turn the DVI into pngs and paste those into words | ||
s/s$// | |||
Juerd | Why Word? Use Word Perfect | 19:49 | |
It's better. Actually, it's perfect. | |||
hence the name! | |||
nothingmuch | what is it? | ||
rindolf | Juerd: because the whole world and his mother uses Word and sometimes expects documents in this format. | ||
nothingmuch: Word Perfect? | |||
nothingmuch | yes | ||
rindolf | nothingmuch: it's a word processor. | ||
nothingmuch | that much i couldn't have guessed on my own ;-) | 19:50 | |
gaal | nothingmuch: use whatever formatting tool you want. always make a cover letter for the specific place you're applying to. always try to send your resume in via a person who isn't from HR. | ||
putter | integral: ah, thanks. didnt see it in the random p5 dir I had at hand, but was confused, and think it's unbuilt. | ||
Juerd | rindolf: If someone wants me to use Word, even after I explain the issue with that, I don't want to work for them. | ||
nothingmuch | gaal: makes sense | ||
rindolf | Juerd: you can use OOo to save as word. | ||
integral | putter: yeah. the build process assembles all the files to install into blib, and make install simply copies things from blib | ||
gaal | re: short or long, it depends on the culture. for .il 1-2 pages is good. | 19:51 | |
Juerd | rindolf: There are many good reasons to refuse to do so. | ||
integral | and don't put anything important in small print on page 2 | ||
gaal | there are excellent resources for this stuff online | ||
Juerd | rindolf: And in fact, most of the time in practice, PDF suffices. | ||
rindolf | Juerd: "Reality, to be conquered, must be obeyed" | ||
Juerd | rindolf: Reality must be changed if it's wrong. | 19:52 | |
19:52
sapper joined
|
|||
gaal | the best tip I can give is be ready to customize per application. | 19:52 | |
Juerd | rindolf: I am in the position to say no, and use it. | ||
rindolf | Juerd: "Reality, to be changed, must be obeyed" | ||
19:52
luqui joined
|
|||
Juerd | rindolf: Reality isn't Word, you know. | 19:52 | |
gaal | yo luqui! | ||
19:52
luqui left
|
|||
gaal | oy, luqui :( | 19:53 | |
Juerd | rindolf: Reality is that they may expect this, but never because it's *needed*. | ||
putter | lol | ||
gaal goes back to hacking | |||
rindolf | Juerd: Reality isn't Word, but Word is reality. | ||
Juerd | I have sent out several CDs with OpenOffice.org, and people like that. | ||
They can install OOo and edit my document, if they must edit it, and that way, the layout and contents aren't fucked up at each revision. | |||
eric256_ | is there a meta method to get the name of the class of an object? | 19:54 | |
Juerd | I cannot install their Word crap as easily, because it'd cost be a big bag of cash to get Microsoft Office, the required Microsoft Windows, and the time to install all of that. | ||
rindolf | Juerd: resumes are meant to be read, not change. | ||
Juerd | rindolf: Right, so PDF suffices. | ||
rindolf | Juerd: assuming the intended recipient can grok PDF. | ||
Juerd | If they must have a resume in Word's .DOC, then perhaps they'll never have real geeks working for them. | 19:55 | |
rindolf | I'm sending my resume as HTML. | ||
Juerd | rindolf: They can. | ||
rindolf | Albeit someone requested a document in word format because he couldn't open the HTML one. Maybe the XML declaration (<? ... ?>) caused him trouble. | 19:56 | |
eric256_ | or maybe he tried opening it in word | ||
lol | |||
integral | rindolf: HTML doesn't have an XML declaration. | ||
nothingmuch | luqui? is that really you? | 19:57 | |
rindolf | integral: I meant XHTML. | ||
nothingmuch | oh crap, just a shadow | ||
integral prefers HTML 4.01 or lower still | |||
rindolf | integral: HTML 1.0 | 19:58 | |
Bill_n1vux | One of the Word *.DOC formats is actually RTF with a preamble. Safe and portable. | 19:59 | |
20:00
vel joined
|
|||
rindolf | I like DocBook/XML for serious documentation. | 20:00 | |
I wrote some stories and essays in DocBook/XML. | 20:01 | ||
integral | the toolchains aren't very solid for that though IMHO | ||
eric256_ | if i have classes that are derived from other classes.. i.e. distance is unit; if i multi sub *infix:<+> for a combination of 2 units, and a combination of a types distance, shouldn't the distance one be called when used with objects of type distance even though they are of type unit as well? /me hopes that made since | ||
rindolf | Too bad DocBook/XML has poor Bi-directionality support. | ||
putter | how does one get the pugs' C-level argv[0]? ie, the path of the pugs executable. (not %?CONFIG<pugspath>, which is just where it thinks it should eventually be installed.) | 20:02 | |
FurnaceBoy_ | <Bill_n1vux>One of the Word *.DOC formats is actually RTF with a preamble. Safe and portable. | 20:03 | |
why not just use rtf then? | |||
gaal | putter: $*PROGRAM_NAME ? | ||
oh, not p5 $0, p5 FindBin. | 20:04 | ||
dunno, sorry. | |||
Juerd | eric256_: Always, the most specific type should be preferred in mmd. | 20:06 | |
putter | np. ah well. I was enamored of the idea that pugs could check it argv[0], and if it was different than %?CONFIG<pugspath>, it would basically know it was being run out of its development dir, and could automagically push devdir/blib6/lib onto its @INC... make life easier. | ||
Juerd | eric256_: It can be first-defined in a static language, but we don't have the luxury of such laziness. | ||
gaal | putter: I don't want to send you off on a wild moose chase, but I seem to remember there was some sort of compatibility thing with argv[0] | 20:07 | |
putter | there are all sorts of nasty hairy fanged compatibility things with argv[0] :) | 20:08 | |
sigh. oh well. | 20:09 | ||
eric256_ | juerd: pugs doesn't seem to be behaving that way, gtg for now, but i'll see if i can't narrow it down to a good test case later | 20:10 | |
rindolf | gaal: I see you're editing wiki.osdc.org.il | 20:12 | |
gaal: are you subscribed to its RSS feed? | |||
Juerd | eric256_: By the way - welcome back | ||
putter | Ok, so use/require are doing .yml stuff. gaal's working on making the ymlized (that keeps sounding like carmelized and making me hungry) Prelude.pm. which will keep its existing inline mechanism. then, using the new wizzy ymlized Prelude, putter will dump all sorts of new cruft into Prelude.pm, rendering the inline version unusable due to enormous startup latency. sounds like a plan. | 20:13 | |
gaal | putter: the inlined version shouldn't ever be needed anyway. except once every build. | 20:15 | |
rindolf: no. | |||
rindolf | gaal: OK. | 20:16 | |
20:17
blm_ joined
|
|||
gaal ponders a "pugs --emit-precompiled-prelude" option | 20:17 | ||
putter | gaal: why is it needed once per build? | ||
gaal | putter: because presumably you need Prelude to run pugs -CParse-YAML Prelude.pm | 20:18 | |
actually | |||
if that's not the case... | |||
you've just shaved off some time in the build! :) | |||
(because of BYPASS_PRELUDE or whatevr it's called) | |||
putter | :) | 20:20 | |
gaal | .oO( or do we already bypass the prelude so that the preluded env doesn't get in the way of the one being compiled+emitted? I'm not sure ) |
20:21 | |
putter | re --emit-precompiled-prelude, if precompiled == yml, please no. ;) | ||
putter goes back to read that .oO again.. for the third time... ;) | 20:22 | ||
20:28
jisom joined
|
|||
putter | "Hey, Juerd", putter wispers, "what parts of the pugs Big Picture have _you_ heard of?". | 20:30 | |
Juerd | putter: Referring to what? :) | 20:32 | |
putter | gaal is making ymlized Prelude.pm work. That will permit lots of random p6 to be dumped there (apropos writing all the p6 parts of p6), and permit Prim.hs stuff to be either reimplemented in p6, or at least renamed to Pugs::Internals::mumble (for p6 in p6, and for minimized-Prim for PIL^N). let's see... | 20:33 | |
Juerd: trying to assemble a picture of status. STATUS even ;) | 20:34 | ||
rindolf | gaal: what is the Takahashi style of presentation? | 20:35 | |
Juerd | putter: The big picture is to do everything :) | ||
rindolf: Get a life and visit some social events ;) | |||
putter | stevan is... thinking about efficient p6 objects on p5??? thinking other object-y thoughts??? | ||
Juerd | My battery will die soon | 20:36 | |
Good night everyone | |||
Or s/night/{ localtime }/ | |||
integral | hmm, the dates in STATUS still mostly read 2005 :-( | ||
night Juerd ! | |||
putter | the status of the p6 oo model is... in limbo awaiting the forcing factor of p5 or piln implementation??? | ||
good night Juerd & | |||
err, s/&/*wave*/ | 20:37 | ||
on regexes and parsing... it looks like fglock could use help dumping Lexer/Parser.hs to p6 rules (giving us both a (nondynamic) p6 rules grammar for p6, and giving his iteration_engine a chance to attempt parsing of p6 code). | 20:40 | ||
rindolf | gaal: that's OK, found it by a Google search. It's not on wikipedia yet. | 20:41 | |
gaal | found what? oh, sorry, missed your previous question | ||
wolverian | takahashi method is on wikipedia | 20:42 | |
rindolf | kane_: here? | ||
gaal | rindolf: just send him an email? | 20:43 | |
rindolf | gaal: I'd like to talk to him in real time. | 20:44 | |
putter | bbiab | ||
20:56
uszr` joined
20:57
mako132_ joined
|
|||
gaal | what's the converse of basename? | 20:58 | |
er, that is, $pathname =~ s,(.*)/,, only not bogus | |||
$pathname =~ s,(.*)/,$1, | |||
argh. | 20:59 | ||
$pathname =~ s,(.*)/.*,$1, | |||
only still not bogus :) | |||
File::Basename::dirname, thanks :) | 21:00 | ||
21:01
samhain1138 joined
|
|||
avar | gaal: np | 21:04 | |
21:06
penk joined
21:08
ghenry joined
|
|||
putter | :) | 21:09 | |
azuroth | put put putter | 21:10 | |
21:11
sapper joined,
SamB joined
|
|||
gaal | fixed. putter++ | 21:15 | |
svnbot6 | r9281 | gaal++ | * Rationalize search of precompiled Prelude: now via @*INC. putter++ | 21:16 | |
r9281 | gaal++ | * Generate it in blib6/lib/Prelude.pm.yml, not src/Pugs/PreludePC.yml | |||
r9281 | gaal++ | * Fix two stray "/" to file_sep | |||
r9281 | gaal++ | * TODO: gzip portably (see comment in util/build_pugs.pl) | |||
r9280 | putter++ | Prelude.pm: use/require: Check that .pm.yml is more recent than .pm. And some code cleanup (gaal++). | |||
r9280 | putter++ | Prelude.pm: created prefix_M, to get file modification time. Calling it prefix:<-M> doesnt work in Prelude.pm. :( Calls an external perl5. :( Under unix, it would be better to use ghc's Sys.Posix.Files.modificationTime. See Compat.hs, and op0 "time" in Prim.hs. But it doesnt work on windows. | |||
putter | woot! | ||
and svnbot is having flashbacks again ;) | 21:17 | ||
gaal | so, everyone gets fast prelude as long as they set @*INC properly, just as they would for (say) Test.pm | 21:18 | |
this also solves the installation question, I suppose. | |||
putter | right. I still wish there was a way to finesse that (as I usually dont so set, and always find it a bit annoying)... | ||
gaal | you don't what? | ||
putter | re installation, right, and who get's to be the first guinne pig :) | 21:19 | |
gaal | not I, I get to sleep now I think | ||
putter | -Iblib6/lib | ||
good night gaal++. thanks for the fun new fish. | |||
gaal | I thought the new fish was ready a week ago.. I suppose it's the little things that count | 21:20 | |
putter | oh, hmm, | 21:21 | |
it's an incrementally emergent fish ? | 21:22 | ||
gaal | putter: before I go to bed, there was one quesiton for you.. was the concern about separate files just good coding practice / convenience or did you have a plan for reusable prelude somehow? | ||
putter | works! yay. | ||
gaal | wheeee | ||
putter | hmmm | 21:23 | |
a blurry combination of the two? | |||
21:23
Bill_n1vux left
|
|||
gaal | #2 implies you had an inkling of a plan :)( | 21:23 | |
putter | I like the model of alternate backends being | 21:24 | |
almost entirely p6-based, with just a few subs/methods overwritten. | |||
but whether that's one file or many, doesnt really matter for now. | |||
I think it was just me groping my way blindly through design space. | 21:25 | ||
21:25
FurnaceBoy_ is now known as FurnaceBoy
|
|||
azuroth | FurnaceBoy, FurnaceBoy, fur fur fur fur FurnaceBoy | 21:26 | |
gaal hands out fluffy, toe-protecting socks for all gropers | |||
putter | thanks! ooo, blood absorbant too - great :) | ||
FurnaceBoy greets azuroth similarly | |||
azuroth | :D | 21:27 | |
putter | if we had a working p6 parser on p5 (hmm, maybe we do re i_e), i'd be trying to pour code into it. | ||
starting with a prelude | |||
FurnaceBoy | why not an Accord? | ||
FurnaceBoy ducks. the coffee's working. :) | |||
putter | or now that parse-yaml demonstrably works, perhaps we could do a p5 backend for that. yaml on p5 isnt broken anymore, yes? | 21:28 | |
gaal | putter: use YAML::Syck and it's even very fast :) | 21:29 | |
putter | :) | ||
I guess this is one of those "you're in a room with many doors" situation. there's | 21:30 | ||
gaal | what's a p5 backend for parse-yaml though? | 21:32 | |
putter | expand Prelude.pm, p5 backend for Parse-YAML, Lexer/Parser.hs -> rules, pure p5 regexp-hook extendability, iterator_engine, (pause) | ||
gaal | my turn to gropw | ||
e | |||
putter | p5 implementation of p6 which starts from the parse-yaml rather than known-to-be-insufficient(persistantly) pilX. | 21:33 | |
stevan | pilX is dead,.. long live pilX | ||
putter | lol | ||
hi stevan :) | |||
stevan | heya putter | ||
gaal | yo stevan | ||
stevan | howdy gaal | 21:34 | |
putter | Prelude.pm is in blib6/lib, and yml-ized! :) | ||
stevan | eak! I am so behind on pugs these days | ||
gaal | putter: parse-yaml is just a way to serialize ASTs (and globs) | ||
stevan | this week though, I will hopefully be able to jump back in | ||
putter | right. yaml->p5 objects(?) ast =>p5-based-compiler=> p6 ast? =>p5emitter=> something stevan helps write:) | 21:35 | |
stevan | putter, gaal: so where is the state of the spike these days? | 21:36 | |
gaal | putter: ah, so that lets you proceed w/o needing to write a parser yet | 21:37 | |
putter | which is just PIL-Run, but for the ast's and the p5-based-compiler part.. | ||
gaal | I think I see | ||
putter | yes | ||
21:37
Limbic_Region joined
|
|||
putter | and hopefully get more people involved, it being p5 and all. not sure if I completely buy that argument though. | 21:37 | |
gaal | putter: okay, experimnet with 'pugs -CParse-YAML -e 'if 42 { say "moose" }' | ||
currently the output of parse-yaml is a 2-tuple | 21:38 | ||
(glob, ast) | |||
but do note that we plan on adding some metadata, because we want this to be an extensible bytecode format | |||
azuroth blasts off. bye all | 21:40 | ||
gaal | okay, i'd really better sleep now. good night :) | ||
putter | yes. eep, I notice the absence of a version number :) "Church of the version number - principle and only teaching - all protocols shalt have a version number" | ||
21:40
DesreveR joined
|
|||
putter | good night gaal | 21:40 | |
'twas fun | 21:41 | ||
stevan: re spike, | |||
gaal | putter: if you can thing of other things that need putting there, please tell | ||
also how to generate version nubmers :) | |||
zzZ& | |||
putter | will do :) | ||
oh, that's version numbers in the protocol-version-number sense. sortof doesnt matter how they get done, as long as they are there as a hook. | 21:42 | ||
s/in the/as in the/ | 21:43 | ||
so the dump format can evolve | |||
re spike, fglock has been making progress - see misc/pX/Common/iterator...prelude | 21:44 | ||
I futzed around a bit, and have a partially cleaned up version of the regex part of the spike, but got bogged down in operator precedence parser land. | 21:45 | ||
stevan | yeah I have seen all fglocks commits, and his announcement on p6a | 21:46 | |
putter | wandered off and played with some of perl5's hooks to intercept regexp creation/use, which together with source filters and the rest, might just barely be sufficient to pull off p6-like regexs, transparently, on p5-writen-by-humans. but not quite I think. | 21:47 | |
jisom | why not just use PGE for p6 regexes? | ||
stevan | jisom: because that requires hooking into Parrot, putter is talking about a p5 engine | 21:48 | |
jisom | ok... | ||
putter | there hasn't been much interest in the spike, so with the "spike" pressure gone, and fglock puttering along and even getting some assistance from folks, my spike-focus has largely been absent. :( | ||
21:48
mauke_ joined
|
|||
stevan | putter: well this week audreyt is going to be hangin with leo, and working out the Parrot objectspace | 21:49 | |
I told them I would try to be around | |||
putter | oh, nifty | ||
stevan | maybe you can divert your focus and work with me on PIR hell :) | ||
putter | if we can get objects disambiguated a bit, that would be great | 21:50 | |
stevan | *cough* I mean PIR funland | ||
putter: I have some thoughts coming out of Class::MOP about how to clean some of the fuzzier bits of the metamodel | |||
putter | yeah, funland. been there, done that, just so not going to happen. | ||
stevan | mostly they center around a more fully realized set of attribute and method objects | ||
LOL | 21:51 | ||
putter | is Array a class? yes, of course. is a role too? are all classes roles too? putter looks confused. | 21:52 | |
s/is a role/is it a role/ | |||
stevan | oh no,.. not that again :P | ||
putter | magically given a working p6 from the future, I'm still not at the point where I could sit down and write a p6 implementation. | 21:53 | |
which kind of sucks, because the way I want to write a p5 implementation, is to sit down and write a p6 one, and fill in the missing bits. | |||
stevan | you want to implement p5 in p6 :P | 21:56 | |
Limbic_Region | oh - in case anyone is interested - running the most basic p6 code in Pugs now takes 10 seconds on my Win32 build | ||
jisom | go for a challenge, implement parrot in p6 and get p6 running on p5 and if ponie gets finished you can get p5 running on parrot | ||
putter | after pilrun's "oh, that's *cute*", my thoughts go more towards "oh, what new ways can I think of to abuse the symbol table and to reduce p5 opcode counts so I can do p6 on close to bare p5/xs metal, and waste my life in premature optimization", than to "oo, objects, let's abstract, and work for correctness, even though there is no spec". | 21:57 | |
ok, I'm getting grumpy. :) time for some sugar-water. | |||
FurnaceBoy | what attractive alternatives !! | ||
putter | re implement p5 in p6, oh, meant p6 implemented in p5. | ||
Limbic_Region: did you say -Iblib6/lib ? | 21:58 | ||
jisom | yeah, I know....but....nm | ||
Limbic_Region | putter - no, but should I? | 21:59 | |
putter | Limbic_Region: the compiled version of the Prelude.pm is now in blib6/lib, and looked for in @INC. if it's not found, you get the slow fallback (the same one you were earlier getting by running pugs outside of the builddir) | 22:00 | |
near term at least, the fallback (compiled into pugs itself) is going to get nothing but slower. | |||
svnbot6 | r9282 | pmurias++ | less awkward way of declearing nodes | 22:01 | |
22:01
uszr_ joined
|
|||
Limbic_Region | putter - I wasn't running pugs outside the builddir | 22:01 | |
ever | |||
putter | ah, i'm confused, some were, and seeing slowness. now you get to too. | 22:02 | |
Limbic_Region | ok - so what is a full snippet of what I should try from the command line | ||
assuming I am in the directory I built pugs | |||
putter | ./pugs -Iblib6/lib whatever | ||
Limbic_Region | Win32 - slashes go the other way | ||
putter | :) | 22:03 | |
jisom | MacOS 9 and below, no slashes at all | ||
Limbic_Region | pugs: -blib\lib: openFile: does not exist (No such file or directory) | ||
errr | |||
putter | ;) | ||
Limbic_Region | that's a strange error | ||
but that's what happens | 22:04 | ||
putter | you forgot the -I ? | ||
Limbic_Region | no | ||
.\pugs -lblib\lib balls.p6 | |||
and fwiw - it is now twice as slow as it was yesterday | |||
putter | do you ever run test files directly? how do you point at Test.pm? | 22:05 | |
Limbic_Region | interesting | ||
Limbic_Region hasn't run the test suite in some time because of how S-L-O-W it is | |||
but | |||
putter | re twice, should be more than that if you're seen the fallback | ||
Limbic_Region | .\pugs -l blib\lib balls.p6 | ||
pugs: blib\lib: openFile: permission denied (Permission denied) | 22:06 | ||
new error | |||
just put a space between -l and blib | |||
LeTo | Limbic_Region: 'I' captiatl I | ||
and blib6/lib '6' | |||
putter | LeTo++ | ||
Limbic_Region | pugs: -Lblib\lib: openFile: does not exist (No such file or directory) | 22:07 | |
LeTo | *I* | ||
putter | no, "I" as in India, and blib6 as in this is p6. | ||
Limbic_Region | huh include | ||
not lib | |||
heh | |||
let me try this again | 22:08 | ||
ok - no errors, still taking circa 10 seconds | |||
LeTo is running svnbot for parrot with: pugs -Iblib6/lib ../svnbot.p6 | |||
... | |||
it just works ;) | 22:09 | ||
Limbic_Region | ok | ||
10 seconds without the blib6\lib | |||
and 5 seconds with | |||
putter | Limbic_Region: so you have a recent snapshot, you did make (the precompiled prelude gets done at build time), and... | ||
LeTo | and it's starting slow - definitely yes | ||
Limbic_Region | putter - I always do nmake realclean; svn up; perl Makefile.PL; nmake | 22:10 | |
putter | ls -l blib6/lib/Pugs says? | ||
LeTo | I'm running it on feather with the publically available pugs (however that is built) | ||
Limbic_Region | you mean dir | ||
There is no Pugs directory under blib6\lib | 22:11 | ||
putter | oh, I guess it's ls -l blib6/lib/Prelude.pm.yml | ||
Limbic_Region | there is however a blib\lib\pugs (no 6) | ||
1,324,514 bytes built at 4:53PM localtime today | 22:12 | ||
putter | oh, fribble. one sec. | ||
no, never mind. hmm | 22:13 | ||
could you time -e 'say 3' and -e 'use Test;' ? | |||
Limbic_Region | so as I said with -Iblib6\lib it takes 5 seconds (same as yesterday) and without it takes circa 10 | 22:14 | |
yep | |||
putter | ah, ok. so modulo needing -I , you are back to normal. yes? | ||
so now the payoff. | |||
Limbic_Region | compiling test | ||
that blew up | 22:15 | ||
I can nopaste the error if you want | |||
well - for some definition of normal | |||
putter | if you make blib6/lib/Test.pm writable, you will get a precompiled Test.pm.yml created for you. | ||
Limbic_Region | it had been only around 1 second not too long ago | ||
it is writeable | |||
this is a winbugs box | |||
unless you specifically change it to read-only or change the acls for permissions - it is writeable | 22:16 | ||
putter | re 1 sec, hmm, dont know what's up with that. | ||
Limbic_Region | ooh wait | ||
that's weird | |||
it isn't writeable | |||
putter | blib6 is the directory tree set up for install to copy from. | 22:17 | |
22:17
Steve_p joined
|
|||
Limbic_Region | right - but by default files created on Win32 are not read-only | 22:17 | |
ok putter - it blew up again - different error | |||
putter | until nothingmuch gets to it, right now the caching is extremely dumb. if the .pm file is writable, create a .pm.yml when it is use()d. | 22:18 | |
Limbic_Region | ok - well I just did a global change of read-only status | 22:19 | |
neato | |||
that made things extremely fast | |||
as in about 2 seconds now | |||
putter | :) | 22:20 | |
Limbic_Region | I did it on the entire Pugs build directory | ||
making stuff read-only out of the repository violates the principal of least suprise IMO | 22:21 | ||
putter | (making things writable in /usr/local/ allows violating a lot more than that ;) | 22:22 | |
oh, windows, I keep forgetting. single-user os. | |||
;) | |||
Limbic_Region | putter - not at all | ||
on a *nix box the system/user should have a sane umask | 22:23 | ||
and for those files that need to have the umask overridden the install process should specifically set them | |||
and on Windows a similar thing can be done | |||
putter | my understanding is perl uses a two step install process so you can run perl without having to install, using the blib assembled from all the assorted sources in the build. | 22:26 | |
avar | putter: of course, just like nearly any other program | 22:27 | |
Limbic_Region | I won't pretend to understand any of the build process - cause I don't | 22:28 | |
but when I download stuff - I do not expect it to change file permissions indiscrimanently (regardless of OS) | |||
Limbic_Region starts a fresh build with everything globally writeable | 22:29 | ||
putter | LR: err, build as in make? which will create blib6 with aforementioned non-writableness? | 22:31 | |
Limbic_Region | putter - yes, wanting to verify what files get changed | ||
since I didn't do a good job the first time at trying to isolate the whackiness | 22:32 | ||
putter | ah | 22:33 | |
22:33
handon joined,
handon is now known as vborja
|
|||
Limbic_Region | putter - my real goal is to find just the necessary files needed to make things run fast | 22:35 | |
putter | :) | ||
Limbic_Region | and < 2 seconds is pretty fast considering it was 5-10 before | ||
putter | precompiling Test has a similar impact on it | 22:36 | |
Limbic_Region | on the test suite | 22:37 | |
which I don't run | |||
putter | precompiling and loading is actually faster than just a straight load of the .pm . | ||
ah | |||
Limbic_Region | oh, and fwiw unless the global change fixed something else - I am getting failures compiling Test.pm | ||
putter | stevan: ping? | 22:38 | |
sigh. before last night too? | |||
actually, even if I punt, the next question anyone pursuing it will have is "could you paste the error message(s)"... so... ;) | 22:39 | ||
22:41
nothingmuch joined
|
|||
putter | stevan: sorry I got distracted. I'd be interested in hearing what you are going to be up to, and discussing what to do next. | 22:41 | |
nothingmuch: ? | 22:42 | ||
nothingmuch: so, the precompiling hook is in... have fun :) | |||
ok, I'm wiped. dinner & | 22:45 | ||
22:47
nothingmuch joined
|
|||
putter | gaal: just in case it was audreyt who fixed it and not you, note that pugs -e 'use Test;' now works. | 22:58 | |
nothingmuch: ping? | |||
(re now works, though note Limbic_Region's reports of difficulties on Win32 above) | |||
Limbic_Region | which I am going to try and isolate | 23:00 | |
AFAIK, pugs -e "use Test;" does not work on Win32 | |||
Limbic_Region is almost done with a clean build to investigate | 23:01 | ||
nothingmuch | putter: pong | ||
putter | hi nothingmuch. the use/require precomp hook is in, so I think I'm clear. feel free to bash it about any way you like. | 23:04 | |
nothingmuch | putter: okay | ||
self.punt(*@all); | |||
putter | :) | ||
nothingmuch | i need to switch jobs first | ||
i realized that I'm unhappy | |||
putter | back. was wondering why your starting a job search was making me think of burned chicken. then realized. still edible. | 23:06 | |
Limbic_Region | ok - for pugs -e "use Test;" to work on MY win32 build, I need to make blib6\lib\Test.pm writeable and use pugs -Iblib6\lib -e "use Test;" | ||
23:07
blm_ is now known as blm
|
|||
putter | do you have a feel for how long it will take you? ie, is it "have offers, choose one, go"? or "trying to find water in an unfamiliar desert"? | 23:07 | |
Limbic_Region | I assume it works after that - it is yelling that I don't have a parrot in the path though I do | 23:08 | |
putter | Limbic_Region: the writablity is _required_? | ||
that would mean the precomp Test.pm is working, but the normal load-from-.pm of Test.pm is not. | |||
Limbic_Region | erm well, let me try just pugs -Iblib6\lib -e "use Test;" without Test.pm being writeable | 23:10 | |
IIRC that blows up but let me be sure | |||
nothingmuch | putter: err, i need to finish my CV | 23:11 | |
i get job offers all the time | |||
2-3 monthly | |||
Limbic_Region | even weirder | ||
that works with no errors at all | |||
nothingmuch | i'll send out my CV to all the job posts I can find in 30 mins | ||
and all my friends | |||
23:11
dduncan joined
|
|||
nothingmuch | and we'll see what I can dish out | 23:11 | |
but this is short term | |||
so i guess it's more difficult | 23:12 | ||
Limbic_Region | *shrug* - I am not going to debug | ||
nothingmuch | (2-3 months tops, at least as far as I know right now) | ||
Limbic_Region | I am just going to make everything writeable and be happy that it is once again fast | ||
23:20
planrantan joined,
m joined
23:23
Gothmog__ joined
23:25
Gothmog__ is now known as Gothmog_
|
|||
putter | Limbic_Region: aside from making it non-writable, you would need to delete the .yml. the writability is only currently affecting the decision of whether to create the .yml, not whether to use it if it is already there. | 23:25 | |
nothingmuch: hmm, how about a two step process? first send it to your friends, get feedback, tweak, and then world? | 23:27 | ||
nothingmuch | putter: ofcourse | ||
of course | |||
this is a "by the end of the week" plan | |||
putter | I also note that a targeted resume, with cover letter specific to the job description, at least in the US, seems to usually be at least an order of magnitude more effective than a broadcast thing. | 23:28 | |
ah, good plan | 23:29 | ||
(of course, it's several orders of magnitude easier to broadcast than to tailor, so depending on your objectives...:) | |||
nothingmuch | I'm relying on word of mouth as a catalyzer here, because much more people know me and can reccomend me than I know of jobs | 23:30 | |
putter | a most excellent approach | ||
nothingmuch | but i guess I can ask them to tell me about things, instead of pass my cv on | ||
so that I can prepare something more directed | |||
putter | ah, that would be good too. if only so you can follow up on things you think sound interesting, rather than risk getting lost in the pile on someone's desk. | 23:31 | |
nothingmuch | yes | ||
anyway | |||
i need two things which are hard to get: | |||
interesting work | |||
part time | |||
especially their combination | 23:32 | ||
hence my fussing over this resume thing ;-)_ | |||
but now i need to sleep | |||
putter | good night. :) | ||
23:37
FurnaceBoy_ joined
23:39
Cryptic_K joined,
uszr_ is now known as kucukoscar
23:45
lisppaste3 joined
23:51
clkao joined
23:56
justatheory joined
|